| # 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 |