91 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			ArmAsm
		
	
	
	
			
		
		
	
	
			91 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			ArmAsm
		
	
	
	
| // RUN: llvm-mc -triple i386-apple-darwin10 %s 2>&1 | FileCheck %s
 | |
| 
 | |
| .macro abc a b:vararg
 | |
| .globl "\a, \b"
 | |
| .endm
 | |
| 
 | |
| // CHECK: .globl "zed0, zed1, zed2"
 | |
| abc zed0, zed1, zed2
 | |
| 
 | |
| .purgem abc
 | |
| 
 | |
| .macro ifcc arg:vararg
 | |
| .if cc
 | |
|             \arg
 | |
| .endif
 | |
| .endm
 | |
| 
 | |
| .macro ifcc2 arg0 arg1:vararg
 | |
| .if cc
 | |
|             movl \arg0, \arg1
 | |
| .endif
 | |
| .endm
 | |
| 
 | |
| .macro ifcc3 arg0, arg1:vararg
 | |
| .if cc
 | |
|             movl \arg0, \arg1
 | |
| .endif
 | |
| .endm
 | |
| 
 | |
| .macro ifcc4 arg0, arg1:vararg
 | |
| .if cc
 | |
|             movl \arg1, \arg0
 | |
| .endif
 | |
| .endm
 | |
| 
 | |
| .text
 | |
| 
 | |
| // CHECK: movl %esp, %ebp
 | |
| // CHECK: subl $0, %esp
 | |
| // CHECK: movl %eax, %ebx
 | |
| // CHECK: movl %ecx, %ebx
 | |
| // CHECK: movl %ecx, %eax
 | |
| // CHECK: movl %eax, %ecx
 | |
| // CHECK: movl %ecx, %eax
 | |
| // CHECK: movl %eax, %ecx
 | |
| .set cc,1
 | |
|   ifcc  movl    %esp, %ebp
 | |
|         subl $0, %esp
 | |
| 
 | |
|   ifcc2 %eax, %ebx
 | |
|   ifcc2 %ecx, %ebx
 | |
|   ifcc3 %ecx, %eax
 | |
|   ifcc3 %eax, %ecx
 | |
|   ifcc4 %eax, %ecx  ## test
 | |
|   ifcc4 %ecx, %eax ## test
 | |
| 
 | |
| // CHECK-NOT: movl
 | |
| // CHECK: subl $1, %esp
 | |
| .set cc,0
 | |
|   ifcc  movl,    %esp, %ebp
 | |
|         subl $1, %esp
 | |
| 
 | |
| .macro abc arg:vararg=nop
 | |
|   \arg
 | |
| .endm
 | |
| 
 | |
| .macro abcd arg0=%eax, arg1:vararg=%ebx
 | |
|   movl \arg0, \arg1
 | |
| .endm
 | |
| 
 | |
| .text
 | |
| 
 | |
| // CHECK: nop
 | |
|   abc
 | |
| // CHECK: movl %eax, %ebx
 | |
|   abcd ,
 | |
| 
 | |
| .macro .make_macro start, end, name, body:vararg
 | |
| \start \name
 | |
| \body
 | |
| \end
 | |
| .endmacro
 | |
| 
 | |
| .make_macro .macro,.endmacro,.mybyte,.byte $0, $2, $1
 | |
| 
 | |
| .data
 | |
| // CHECK: .byte 10
 | |
| // CHECK: .byte 12
 | |
| // CHECK: .byte 11
 | |
| .mybyte 10,11,12
 |