Home | History | Annotate | Download | only in AsmParser
      1 # RUN: llvm-mc -triple i386-linux-gnu  %s| FileCheck %s
      2 
      3 # This test checks the altmacro string delimiter '<' and '>'.
      4 
      5 .altmacro
      6 
      7 # Test #1:
      8 # You can delimit strings with matching angle brackets '<' '>'.
      9 # If an argument begins with '<' and ends with '>'.
     10 # The argument is considered as a string.
     11 
     12 # CHECK: simpleCheck:
     13 .macro simple_check_0 name
     14     \name:
     15    addl $5,%eax
     16 .endm
     17 
     18 simple_check_0 <simpleCheck>
     19 
     20 # Test #2:
     21 # Except adding new string marks '<..>', a regular macro behavior is expected.
     22 
     23 # CHECK:  simpleCheck0:
     24 # CHECK: addl    $0, %eax
     25 .macro concat string1 string2 string3
     26    \string1\string2\string3:
     27         addl $\string3, %eax
     28 .endm
     29 
     30 concat <simple>,<Check>,<0>
     31 
     32 # Test #3:
     33 # The altmacro cannot affect the regular less/greater behavior.
     34 
     35 # CHECK: addl $-1, %eax
     36 # CHECK: addl $0, %eax
     37 
     38 .macro fun3 arg1 arg2
     39    addl $\arg1,%eax
     40    addl $\arg2,%eax
     41 .endm
     42 
     43 fun3 5<6 , 5>8
     44 
     45 # Test #4:
     46 # If a comma is present inside an angle brackets,
     47 # the comma considered as a character and not as a separator.
     48 # This check checks the ability to split the string to different
     49 # arguments according to the use of the comma.
     50 # Fun2 sees the comma as a character.
     51 # Fun3 sees the comma as a separator.
     52 
     53 # CHECK: addl $5, %eax
     54 # CHECK: addl $6, %eax
     55 .macro fun2 arg
     56    fun3 \arg
     57 .endm
     58 
     59 fun2 <5,6>
     60 
     61 # Test #5:
     62 # If argument begin with '<' and there is no '>' to close it.
     63 # A regular macro behavior is expected.
     64 
     65 # CHECK: addl $4, %eax
     66 .macro fun4 arg1 arg2
     67    .if \arg2\arg1
     68    addl $\arg2,%eax
     69    .endif
     70 .endm
     71 
     72 fun4 <5,4
     73 .noaltmacro
     74