llvm-project/llvm/test/MC/ARM/arm-branches.s

50 lines
2.0 KiB
ArmAsm

@ RUN: llvm-mc -triple=armv7-apple-darwin -show-encoding < %s | FileCheck %s
@------------------------------------------------------------------------------
@ Branch targets destined for ARM mode must == 0 (mod 4), otherwise (mod 2).
@------------------------------------------------------------------------------
b #4
bl #4
beq #4
blx #2
@ CHECK: b #4 @ encoding: [0x01,0x00,0x00,0xea]
@ CHECK: bl #4 @ encoding: [0x01,0x00,0x00,0xeb]
@ CHECK: beq #4 @ encoding: [0x01,0x00,0x00,0x0a]
@ CHECK: blx #2 @ encoding: [0x00,0x00,0x00,0xfb]
@------------------------------------------------------------------------------
@ Leading '$' on branch targets must not be dropped if part of symbol names
@------------------------------------------------------------------------------
.global $foo
.global $4
b $foo
bl $foo
beq $foo
blx $foo
b $foo + 4
bl $4
beq $4 + 4
@ CHECK: b ($foo) @ encoding: [A,A,A,0xea]
@ CHECK: bl ($foo) @ encoding: [A,A,A,0xeb]
@ CHECK: beq ($foo) @ encoding: [A,A,A,0x0a]
@ CHECK: blx ($foo) @ encoding: [A,A,A,0xfa]
@ CHECK: b #($foo)+4 @ encoding: [A,A,A,0xea]
@ CHECK: bl ($4) @ encoding: [A,A,A,0xeb]
@ CHECK: beq #($4)+4 @ encoding: [A,A,A,0x0a]
@------------------------------------------------------------------------------
@ Leading '$' should be allowed to introduce an expression
@------------------------------------------------------------------------------
.global bar
b $ 4
bl $ bar + 4
blx $ bar
@ CHECK: b #4 @ encoding: [0x01,0x00,0x00,0xea]
@ CHECK: bl #bar+4 @ encoding: [A,A,A,0xeb]
@ CHECK: blx bar @ encoding: [A,A,A,0xfa]