forked from OSchip/llvm-project
				
			
		
			
				
	
	
		
			58 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			ArmAsm
		
	
	
	
			
		
		
	
	
			58 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			ArmAsm
		
	
	
	
| @ RUN: not llvm-mc -triple=thumbv7m--none-eabi < %s 2>&1 | FileCheck %s
 | |
| 
 | |
| @ These instructions all write to the PC, so are UNPREDICTABLE if they are in
 | |
| @ an IT block, but not the last instruction in the block.
 | |
| 
 | |
|   itttt eq
 | |
|   addeq pc, r0
 | |
| @ CHECK: :[[@LINE-1]]:{{[0-9]+}}: error: instruction must be outside of IT block or the last instruction in an IT block
 | |
|   addeq pc, sp, pc
 | |
| @ CHECK: :[[@LINE-1]]:{{[0-9]+}}: error: instruction must be outside of IT block or the last instruction in an IT block
 | |
|   beq.n #.+0x20
 | |
| @ CHECK: :[[@LINE-1]]:{{[0-9]+}}: error: instruction must be outside of IT block or the last instruction in an IT block
 | |
|   nopeq
 | |
|   itttt eq
 | |
|   beq.w #.+0x20
 | |
| @ CHECK: :[[@LINE-1]]:{{[0-9]+}}: error: instruction must be outside of IT block or the last instruction in an IT block
 | |
|   bleq sym
 | |
| @ CHECK: :[[@LINE-1]]:{{[0-9]+}}: error: instruction must be outside of IT block or the last instruction in an IT block
 | |
|   blxeq r0
 | |
| @ CHECK: :[[@LINE-1]]:{{[0-9]+}}: error: instruction must be outside of IT block or the last instruction in an IT block
 | |
|   nopeq
 | |
|   itttt eq
 | |
|   bxeq r0
 | |
| @ CHECK: :[[@LINE-1]]:{{[0-9]+}}: error: instruction must be outside of IT block or the last instruction in an IT block
 | |
|   ldmeq r0, {r8, pc}
 | |
| @ CHECK: :[[@LINE-1]]:{{[0-9]+}}: error: instruction must be outside of IT block or the last instruction in an IT block
 | |
|   ldmdbeq r0, {r8, pc}
 | |
| @ CHECK: :[[@LINE-1]]:{{[0-9]+}}: error: instruction must be outside of IT block or the last instruction in an IT block
 | |
|   nopeq
 | |
|   itttt eq
 | |
|   ldreq pc, [r0, #4]
 | |
| @ CHECK: :[[@LINE-1]]:{{[0-9]+}}: error: instruction must be outside of IT block or the last instruction in an IT block
 | |
|   ldreq pc, [r0, #-4]
 | |
| @ CHECK: :[[@LINE-1]]:{{[0-9]+}}: error: instruction must be outside of IT block or the last instruction in an IT block
 | |
|   ldreq pc, [pc, #4]
 | |
| @ CHECK: :[[@LINE-1]]:{{[0-9]+}}: error: instruction must be outside of IT block or the last instruction in an IT block
 | |
|   nopeq
 | |
|   itttt eq
 | |
|   ldreq pc, [r0, r1, LSL #1]
 | |
| @ CHECK: :[[@LINE-1]]:{{[0-9]+}}: error: instruction must be outside of IT block or the last instruction in an IT block
 | |
|   moveq pc, r0
 | |
| @ CHECK: :[[@LINE-1]]:{{[0-9]+}}: error: instruction must be outside of IT block or the last instruction in an IT block
 | |
|   popeq {r0, pc}
 | |
| @ CHECK: :[[@LINE-1]]:{{[0-9]+}}: error: instruction must be outside of IT block or the last instruction in an IT block
 | |
|   nopeq
 | |
|   itttt eq
 | |
|   popeq {r8, pc}
 | |
| @ CHECK: :[[@LINE-1]]:{{[0-9]+}}: error: instruction must be outside of IT block or the last instruction in an IT block
 | |
|   popeq {pc}
 | |
| @ CHECK: :[[@LINE-1]]:{{[0-9]+}}: error: instruction must be outside of IT block or the last instruction in an IT block
 | |
|   tbbeq [r0, r1]
 | |
| @ CHECK: :[[@LINE-1]]:{{[0-9]+}}: error: instruction must be outside of IT block or the last instruction in an IT block
 | |
|   nopeq
 | |
|   itt eq
 | |
|   tbheq [r0, r1, LSL #1]
 | |
| @ CHECK: :[[@LINE-1]]:{{[0-9]+}}: error: instruction must be outside of IT block or the last instruction in an IT block
 | |
|   nopeq
 |