mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-03-04 18:38:37 +00:00

Immediate branch targets aren't commonly used, but if they are we should make sure they can actually be encoded. This means they must be divisible by 2 when targeting Thumb mode, and by 4 when targeting ARM mode. Also do a little naming cleanup while I was changing everything around anyway. llvm-svn: 275116
23 lines
742 B
ArmAsm
23 lines
742 B
ArmAsm
@ RUN: not llvm-mc -triple=thumbv7-apple-darwin < %s 2>&1 | FileCheck %s
|
|
|
|
@------------------------------------------------------------------------------
|
|
@ Branch targets destined for ARM mode must == 0 (mod 4), otherwise (mod 2).
|
|
@------------------------------------------------------------------------------
|
|
|
|
b #1
|
|
bl #1
|
|
cbnz r2, #1
|
|
beq #1
|
|
blx #2
|
|
|
|
@ CHECK: error: branch target out of range
|
|
@ CHECK: b #1
|
|
@ CHECK: error: invalid operand for instruction
|
|
@ CHECK: bl #1
|
|
@ CHECK: error: invalid operand for instruction
|
|
@ CHECK: cbnz r2, #1
|
|
@ CHECK: error: branch target out of range
|
|
@ CHECK: beq #1
|
|
@ CHECK: error: invalid operand for instruction
|
|
@ CHECK: blx #2
|