56 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			ArmAsm
		
	
	
	
			
		
		
	
	
			56 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			ArmAsm
		
	
	
	
@RUN: llvm-mc -triple armv7-unknown-linux-gnueabi %s | FileCheck --check-prefix=CHECK-ARM --check-prefix=CHECK %s
 | 
						|
@RUN: llvm-mc -triple thumbv7-unknown-linux-gnueabi %s | FileCheck --check-prefix=CHECK-THUMB2 --check-prefix=CHECK %s
 | 
						|
 | 
						|
@
 | 
						|
@ Check that ldr to constant pool correctly transfers the condition codes
 | 
						|
@
 | 
						|
@ simple test
 | 
						|
.section a,"ax",%progbits
 | 
						|
@ CHECK-LABEL: f0:
 | 
						|
f0:
 | 
						|
  it eq
 | 
						|
  ldreq r0, =0x10002
 | 
						|
@ CHECK: ldreq r0, .Ltmp[[TMP0:[0-9]+]]
 | 
						|
 | 
						|
@ loading multiple constants
 | 
						|
.section b,"ax",%progbits
 | 
						|
@ CHECK-LABEL: f1:
 | 
						|
f1:
 | 
						|
  ite eq
 | 
						|
  ldreq r0, =0x10003
 | 
						|
@ CHECK: ldreq r0, .Ltmp[[TMP1:[0-9]+]]
 | 
						|
  ldrne r0, =0x10004
 | 
						|
@ CHECK: ldrne r0, .Ltmp[[TMP2:[0-9]+]]
 | 
						|
 | 
						|
@ transformation to mov
 | 
						|
.section c, "ax", %progbits
 | 
						|
@ CHECK-LABEL: f2:
 | 
						|
f2:
 | 
						|
@ Can use the narrow Thumb mov as it does not set flags in an IT block
 | 
						|
  it eq
 | 
						|
  ldreq r1, =0x1
 | 
						|
@ CHECK: moveq r1, #1
 | 
						|
 | 
						|
@ Must use the wide Thumb mov if the constant can't be represented
 | 
						|
  ite eq
 | 
						|
  ldreq r2, = 0x1f000000
 | 
						|
@ CHECK-ARM moveq r2, #520093696
 | 
						|
@ CHECK-THUMB2 moveq.w r2, #520093696
 | 
						|
  ldrne r3, = 0x00001234
 | 
						|
@ CHECK movwne r2, #4660
 | 
						|
 | 
						|
@
 | 
						|
@ Constant Pools
 | 
						|
@
 | 
						|
@ CHECK: .section a,"ax",%progbits
 | 
						|
@ CHECK: .p2align 2
 | 
						|
@ CHECK: .Ltmp[[TMP0]]
 | 
						|
@ CHECK: .long 65538
 | 
						|
 | 
						|
@ CHECK: .section b,"ax",%progbits
 | 
						|
@ CHECK: .p2align 2
 | 
						|
@ CHECK: .Ltmp[[TMP1]]
 | 
						|
@ CHECK: .long 65539
 | 
						|
@ CHECK: .Ltmp[[TMP2]]
 | 
						|
@ CHECK: .long 65540
 |