diff options
Diffstat (limited to 'test/MC/AsmParser/altmacro_string.s')
-rw-r--r-- | test/MC/AsmParser/altmacro_string.s | 73 |
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 |