194 lines
		
	
	
		
			6.8 KiB
		
	
	
	
		
			ArmAsm
		
	
	
	
			
		
		
	
	
			194 lines
		
	
	
		
			6.8 KiB
		
	
	
	
		
			ArmAsm
		
	
	
	
| # RUN: llvm-mc -triple armv7 %s -show-encoding | FileCheck %s
 | |
| # RUN: not llvm-mc -triple armv7 %s -show-encoding -mattr=+no-neg-immediates 2>&1 | FileCheck %s -check-prefix=CHECK-DISABLED
 | |
| 
 | |
| .arm
 | |
| 
 | |
| 	ADC r0, r1, #0xFFFFFF00
 | |
| # CHECK: sbc r0, r1, #255
 | |
| # CHECK-DISABLED: note: instruction requires: NegativeImmediates
 | |
| # CHECK-DISABLED: ADC
 | |
| 	ADC r0, r1, #0xFFFFFE03
 | |
| # CHECK: sbc r0, r1, #508
 | |
| # CHECK-DISABLED: note: instruction requires: NegativeImmediates
 | |
| # CHECK-DISABLED: ADC
 | |
| 	ADD r0, r1, #0xFFFFFF01
 | |
| # CHECK: sub r0, r1, #255
 | |
| # CHECK-DISABLED: note: instruction requires: NegativeImmediates
 | |
| # CHECK-DISABLED: ADD
 | |
| 	AND r0, r1, #0xFFFFFF00
 | |
| # CHECK: bic r0, r1, #255
 | |
| # CHECK-DISABLED: note: instruction requires: NegativeImmediates
 | |
| # CHECK-DISABLED: AND
 | |
| 	BIC r0, r1, #0xFFFFFF00
 | |
| # CHECK: and r0, r1, #255
 | |
| # CHECK-DISABLED: note: instruction requires: NegativeImmediates
 | |
| # CHECK-DISABLED: BIC
 | |
| 	CMP r0, #0xFFFFFF01
 | |
| # CHECK: cmn r0, #255
 | |
| # CHECK-DISABLED: note: instruction requires: NegativeImmediates
 | |
| # CHECK-DISABLED: CMP
 | |
| 	CMN r0, #0xFFFFFF01
 | |
| # CHECK: cmp r0, #255
 | |
| # CHECK-DISABLED: note: instruction requires: NegativeImmediates
 | |
| # CHECK-DISABLED: CMN
 | |
| 	MOV r0, #0xFFFFFF00
 | |
| # CHECK: mvn r0, #255
 | |
| # CHECK-DISABLED: note: instruction requires: NegativeImmediates
 | |
| # CHECK-DISABLED: MOV
 | |
| 	MVN r0, #0xFFFFFF00
 | |
| # CHECK: mov r0, #255
 | |
| # CHECK-DISABLED: note: instruction requires: NegativeImmediates
 | |
| # CHECK-DISABLED: MVN
 | |
| 	SBC r0, r1, #0xFFFFFF00
 | |
| # CHECK: adc r0, r1, #255
 | |
| # CHECK-DISABLED: note: instruction requires: NegativeImmediates
 | |
| # CHECK-DISABLED: SBC
 | |
| 	SUB r0, r1, #0xFFFFFF01
 | |
| # CHECK: add r0, r1, #255
 | |
| # CHECK-DISABLED: note: instruction requires: NegativeImmediates
 | |
| # CHECK-DISABLED: SUB
 | |
| 
 | |
| .thumb
 | |
| 
 | |
| 	ADD r0, r1, #0xFFFFFF00
 | |
| # CHECK: sub.w r0, r1, #256
 | |
| # CHECK-DISABLED: note: instruction requires: NegativeImmediates
 | |
| # CHECK-DISABLED: ADD
 | |
| 	ADDS r0, r1, #0xFFFFFF00
 | |
| # CHECK: subs.w r0, r1, #256
 | |
| # CHECK-DISABLED: note: instruction requires: NegativeImmediates
 | |
| # CHECK-DISABLED: ADDS
 | |
| 	ADDS.W r0, r1, #0xFFFFFF00
 | |
| # CHECK: subs.w r0, r1, #256
 | |
| # CHECK-DISABLED: note: instruction requires: NegativeImmediates
 | |
| # CHECK-DISABLED: ADDS.W
 | |
| 	ADC r0, r1, #0xFFFFFF00
 | |
| # CHECK: sbc r0, r1, #255
 | |
| # CHECK-DISABLED: note: instruction requires: NegativeImmediates
 | |
| # CHECK-DISABLED: ADC
 | |
| 	ADC r0, r1, #0xFFFF00FF
 | |
| # CHECK: sbc r0, r1, #65280
 | |
| # CHECK-DISABLED: note: instruction requires: NegativeImmediates
 | |
| # CHECK-DISABLED: ADC
 | |
| 	ADC r0, r1, #0xFFFEFFFE
 | |
| # CHECK: sbc r0, r1, #65537 @ encoding: [0x61,0xf1,0x01,0x10]
 | |
| # CHECK-DISABLED: note: instruction requires: NegativeImmediates
 | |
| # CHECK-DISABLED: ADC
 | |
| 	ADC r0, r1, #0xFEFFFEFF
 | |
| # CHECK: sbc r0, r1, #16777472 @ encoding: [0x61,0xf1,0x01,0x20]
 | |
| # CHECK-DISABLED: note: instruction requires: NegativeImmediates
 | |
| # CHECK-DISABLED: ADC
 | |
| 	ADD.W r0, r0, #0xFFFFFF01
 | |
| # CHECK: sub.w r0, r0, #255
 | |
| # CHECK-DISABLED: note: instruction requires: NegativeImmediates
 | |
| # CHECK-DISABLED: ADD.W
 | |
| 	ADD.W r0, r0, #0xFF01FF02
 | |
| # CHECK: sub.w r0, r0, #16646398 @ encoding: [0xa0,0xf1,0xfe,0x10]
 | |
| # CHECK-DISABLED: note: instruction requires: NegativeImmediates
 | |
| # CHECK-DISABLED: ADD.W
 | |
| 	ADDW r0, r1, #0xFFFFFF01
 | |
| # CHECK: subw r0, r1, #255 @ encoding: [0xa1,0xf2,0xff,0x00]
 | |
| # CHECK-DISABLED: note: instruction requires: NegativeImmediates
 | |
| # CHECK-DISABLED: ADDW
 | |
| 	ADD.W r0, r1, #0xFFFFFF01
 | |
| # CHECK: sub.w r0, r1, #255 @ encoding: [0xa1,0xf1,0xff,0x00]
 | |
| # CHECK-DISABLED: note: instruction requires: NegativeImmediates
 | |
| # CHECK-DISABLED: ADD.W
 | |
| 	AND r0, r1, #0xFFFFFF00
 | |
| # CHECK-DISABLED: note: instruction requires: NegativeImmediates
 | |
| # CHECK-DISABLED: AND
 | |
| # CHECK: bic r0, r1, #255
 | |
| 	AND r0, r1, #0xFEFFFEFF
 | |
| # CHECK: bic r0, r1, #16777472 @ encoding: [0x21,0xf0,0x01,0x20]
 | |
| # CHECK-DISABLED: note: instruction requires: NegativeImmediates
 | |
| # CHECK-DISABLED: AND
 | |
| 	AND.W r0, r1, #0xFFFFFF00
 | |
| # CHECK: bic r0, r1, #255
 | |
| # CHECK-DISABLED: note: instruction requires: NegativeImmediates
 | |
| # CHECK-DISABLED: AND.W
 | |
| 	ANDS r0, r1, #0xFFFFFF00
 | |
| # CHECK: bics r0, r1, #255
 | |
| # CHECK-DISABLED: note: instruction requires: NegativeImmediates
 | |
| # CHECK-DISABLED: ANDS
 | |
| 	BIC r0, r1, #0xFFFFFF00
 | |
| # CHECK: and r0, r1, #255
 | |
| # CHECK-DISABLED: note: instruction requires: NegativeImmediates
 | |
| # CHECK-DISABLED: BIC
 | |
| 	BIC.W r0, r1, #0xFFFFFF00
 | |
| # CHECK: and r0, r1, #255
 | |
| # CHECK-DISABLED: note: instruction requires: NegativeImmediates
 | |
| # CHECK-DISABLED: BIC.W
 | |
| 	BICS r0, r1, #0xFFFFFF00
 | |
| # CHECK: ands r0, r1, #255
 | |
| # CHECK-DISABLED: note: instruction requires: NegativeImmediates
 | |
| # CHECK-DISABLED: BICS
 | |
| 	BICS.W r0, r1, #0xFFFFFF00
 | |
| # CHECK: ands r0, r1, #255
 | |
| # CHECK-DISABLED: note: instruction requires: NegativeImmediates
 | |
| # CHECK-DISABLED: BICS.W
 | |
| 	BIC r0, r1, #0xFEFFFEFF
 | |
| # CHECK: and r0, r1, #16777472 @ encoding: [0x01,0xf0,0x01,0x20]
 | |
| # CHECK-DISABLED: note: instruction requires: NegativeImmediates
 | |
| # CHECK-DISABLED: BIC
 | |
| 	ORR r0, r1, #0xFFFFFF00
 | |
| # CHECK-DISABLED: note: instruction requires: NegativeImmediates
 | |
| # CHECK-DISABLED: ORR
 | |
| # CHECK: orn r0, r1, #255
 | |
| 	ORR r0, r1, #0xFEFFFEFF
 | |
| # CHECK: orn r0, r1, #16777472 @ encoding: [0x61,0xf0,0x01,0x20]
 | |
| # CHECK-DISABLED: note: instruction requires: NegativeImmediates
 | |
| # CHECK-DISABLED: ORR
 | |
| 	ORN r0, r1, #0xFFFFFF00
 | |
| # CHECK: orr r0, r1, #255
 | |
| # CHECK-DISABLED: note: instruction requires: NegativeImmediates
 | |
| # CHECK-DISABLED: ORN
 | |
| 	ORN r0, r1, #0xFEFFFEFF
 | |
| # CHECK: orr r0, r1, #16777472 @ encoding: [0x41,0xf0,0x01,0x20]
 | |
| # CHECK-DISABLED: note: instruction requires: NegativeImmediates
 | |
| # CHECK-DISABLED: ORN
 | |
| 	CMP r0, #0xFFFFFF01
 | |
| # CHECK: cmn.w r0, #255
 | |
| # CHECK-DISABLED: note: instruction requires: NegativeImmediates
 | |
| # CHECK-DISABLED: CMP
 | |
| 	CMN r0, #0xFFFFFF01
 | |
| # CHECK: cmp.w r0, #255
 | |
| # CHECK-DISABLED: note: instruction requires: NegativeImmediates
 | |
| # CHECK-DISABLED: CMN
 | |
| 	MOV r0, #0xFFFFFF00
 | |
| # CHECK: mvn r0, #255
 | |
| # CHECK-DISABLED: note: instruction requires: NegativeImmediates
 | |
| # CHECK-DISABLED: MOV
 | |
| 	MVN r0, #0xFFFFFF00
 | |
| # CHECK: mov.w r0, #255
 | |
| # CHECK-DISABLED: note: instruction requires: NegativeImmediates
 | |
| # CHECK-DISABLED: MVN
 | |
| 	SBC r0, r1, #0xFFFFFF00
 | |
| # CHECK: adc r0, r1, #255
 | |
| # CHECK-DISABLED: note: instruction requires: NegativeImmediates
 | |
| # CHECK-DISABLED: SBC
 | |
| 	SUBW r0, r1, #0xFFFFFF01
 | |
| # CHECK: addw r0, r1, #255
 | |
| # CHECK-DISABLED: note: instruction requires: NegativeImmediates
 | |
| # CHECK-DISABLED: SUBW
 | |
| 	SUB.W r0, r1, #0xFFFFFF01
 | |
| # CHECK: add.w r0, r1, #255
 | |
| # CHECK-DISABLED: note: instruction requires: NegativeImmediates
 | |
| # CHECK-DISABLED: SUB.W
 | |
| 	SUB r0, r1, #0xFFFFFF00
 | |
| # CHECK: add.w r0, r1, #256
 | |
| # CHECK-DISABLED: note: instruction requires: NegativeImmediates
 | |
| # CHECK-DISABLED: SUB
 | |
| 	SUBS r0, r1, #0xFFFFFF00
 | |
| # CHECK: adds.w r0, r1, #256
 | |
| # CHECK-DISABLED: note: instruction requires: NegativeImmediates
 | |
| # CHECK-DISABLED: SUBS
 | |
| 	SUBS.W r0, r1, #0xFFFFFF00
 | |
| # CHECK: adds.w r0, r1, #256
 | |
| # CHECK-DISABLED: note: instruction requires: NegativeImmediates
 | |
| # CHECK-DISABLED: SUBS.W
 | |
| 
 | |
| 	ADD r0, r1, #-13
 | |
| # CHECK: sub.w r0, r1, #13
 | |
| # CHECK-DISABLED: note: instruction requires: NegativeImmediates
 | |
| # CHECK-DISABLED: ADD
 |