Home | History | Annotate | Download | only in AsmParser
      1 // RUN: llvm-mc -triple i386-apple-darwin10 %s 2>&1 | FileCheck %s
      2 
      3 .macro abc a b:vararg
      4 .globl "\a, \b"
      5 .endm
      6 
      7 // CHECK: .globl "zed0, zed1, zed2"
      8 abc zed0, zed1, zed2
      9 
     10 .purgem abc
     11 
     12 .macro ifcc arg:vararg
     13 .if cc
     14             \arg
     15 .endif
     16 .endm
     17 
     18 .macro ifcc2 arg0 arg1:vararg
     19 .if cc
     20             movl \arg0, \arg1
     21 .endif
     22 .endm
     23 
     24 .macro ifcc3 arg0, arg1:vararg
     25 .if cc
     26             movl \arg0, \arg1
     27 .endif
     28 .endm
     29 
     30 .macro ifcc4 arg0, arg1:vararg
     31 .if cc
     32             movl \arg1, \arg0
     33 .endif
     34 .endm
     35 
     36 .text
     37 
     38 // CHECK: movl %esp, %ebp
     39 // CHECK: subl $0, %esp
     40 // CHECK: movl %eax, %ebx
     41 // CHECK: movl %ecx, %ebx
     42 // CHECK: movl %ecx, %eax
     43 // CHECK: movl %eax, %ecx
     44 // CHECK: movl %ecx, %eax
     45 // CHECK: movl %eax, %ecx
     46 .set cc,1
     47   ifcc  movl    %esp, %ebp
     48         subl $0, %esp
     49 
     50   ifcc2 %eax, %ebx
     51   ifcc2 %ecx, %ebx
     52   ifcc3 %ecx, %eax
     53   ifcc3 %eax, %ecx
     54   ifcc4 %eax, %ecx  ## test
     55   ifcc4 %ecx, %eax ## test
     56 
     57 // CHECK-NOT: movl
     58 // CHECK: subl $1, %esp
     59 .set cc,0
     60   ifcc  movl,    %esp, %ebp
     61         subl $1, %esp
     62 
     63 .macro abc arg:vararg=nop
     64   \arg
     65 .endm
     66 
     67 .macro abcd arg0=%eax, arg1:vararg=%ebx
     68   movl \arg0, \arg1
     69 .endm
     70 
     71 .text
     72 
     73 // CHECK: nop
     74   abc
     75 // CHECK: movl %eax, %ebx
     76   abcd ,
     77 
     78 .macro .make_macro start, end, name, body:vararg
     79 \start \name
     80 \body
     81 \end
     82 .endmacro
     83 
     84 .make_macro .macro,.endmacro,.mybyte,.byte $0, $2, $1
     85 
     86 .data
     87 // CHECK: .byte 10
     88 // CHECK: .byte 12
     89 // CHECK: .byte 11
     90 .mybyte 10,11,12
     91