aboutsummaryrefslogtreecommitdiff
path: root/test/MC/AsmParser/altmacro_string.s
diff options
context:
space:
mode:
Diffstat (limited to 'test/MC/AsmParser/altmacro_string.s')
-rw-r--r--test/MC/AsmParser/altmacro_string.s73
1 files changed, 73 insertions, 0 deletions
diff --git a/test/MC/AsmParser/altmacro_string.s b/test/MC/AsmParser/altmacro_string.s
new file mode 100644
index 000000000000..70012b2b8523
--- /dev/null
+++ b/test/MC/AsmParser/altmacro_string.s
@@ -0,0 +1,73 @@
+# RUN: llvm-mc -triple i386-linux-gnu %s| FileCheck %s
+
+# This test checks the altmacro string delimiter '<' and '>'.
+
+.altmacro
+
+# Test #1:
+# You can delimit strings with matching angle brackets '<' '>'.
+# If an argument begins with '<' and ends with '>'.
+# The argument is considered as a string.
+
+# CHECK: simpleCheck:
+.macro simple_check_0 name
+ \name:
+ addl $5,%eax
+.endm
+
+simple_check_0 <simpleCheck>
+
+# Test #2:
+# Except adding new string marks '<..>', a regular macro behavior is expected.
+
+# CHECK: simpleCheck0:
+# CHECK: addl $0, %eax
+.macro concat string1 string2 string3
+ \string1\string2\string3:
+ addl $\string3, %eax
+.endm
+
+concat <simple>,<Check>,<0>
+
+# Test #3:
+# The altmacro cannot affect the regular less/greater behavior.
+
+# CHECK: addl $1, %eax
+# CHECK: addl $0, %eax
+
+.macro fun3 arg1 arg2
+ addl $\arg1,%eax
+ addl $\arg2,%eax
+.endm
+
+fun3 5<6 , 5>8
+
+# Test #4:
+# If a comma is present inside an angle brackets,
+# the comma considered as a character and not as a separator.
+# This check checks the ability to split the string to different
+# arguments according to the use of the comma.
+# Fun2 sees the comma as a character.
+# Fun3 sees the comma as a separator.
+
+# CHECK: addl $5, %eax
+# CHECK: addl $6, %eax
+.macro fun2 arg
+ fun3 \arg
+.endm
+
+fun2 <5,6>
+
+# Test #5:
+# If argument begin with '<' and there is no '>' to close it.
+# A regular macro behavior is expected.
+
+# CHECK: addl $4, %eax
+.macro fun4 arg1 arg2
+ .if \arg2\arg1
+ addl $\arg2,%eax
+ .endif
+.endm
+
+fun4 <5,4
+.noaltmacro