1*9880d681SAndroid Build Coastguard Worker@ RUN: llvm-mc -triple thumbv7-windows-itanium -filetype obj -o - %s \ 2*9880d681SAndroid Build Coastguard Worker@ RUN: | llvm-readobj -r - | FileCheck %s -check-prefix CHECK-RELOCATION 3*9880d681SAndroid Build Coastguard Worker 4*9880d681SAndroid Build Coastguard Worker@ RUN: llvm-mc -triple thumbv7-windows-itanium -filetype obj -o - %s \ 5*9880d681SAndroid Build Coastguard Worker@ RUN: | llvm-objdump -d - | FileCheck %s -check-prefix CHECK-ENCODING 6*9880d681SAndroid Build Coastguard Worker 7*9880d681SAndroid Build Coastguard Worker .syntax unified 8*9880d681SAndroid Build Coastguard Worker .text 9*9880d681SAndroid Build Coastguard Worker .thumb 10*9880d681SAndroid Build Coastguard Worker 11*9880d681SAndroid Build Coastguard Worker .global target 12*9880d681SAndroid Build Coastguard Worker 13*9880d681SAndroid Build Coastguard Worker .thumb_func 14*9880d681SAndroid Build Coastguard Workerbranch24t: 15*9880d681SAndroid Build Coastguard Worker b target 16*9880d681SAndroid Build Coastguard Worker 17*9880d681SAndroid Build Coastguard Worker@ CHECK-ENCODING-LABEL: branch24t 18*9880d681SAndroid Build Coastguard Worker@ CHECK-ENCODING-NEXT: b.w #0 19*9880d681SAndroid Build Coastguard Worker 20*9880d681SAndroid Build Coastguard Worker .thumb_func 21*9880d681SAndroid Build Coastguard Workerbranch20t: 22*9880d681SAndroid Build Coastguard Worker bcc target 23*9880d681SAndroid Build Coastguard Worker 24*9880d681SAndroid Build Coastguard Worker@ CHECK-ENCODING-LABEL: branch20t 25*9880d681SAndroid Build Coastguard Worker@ CHECK-ENCODING-NEXT: blo.w #0 26*9880d681SAndroid Build Coastguard Worker 27*9880d681SAndroid Build Coastguard Worker .thumb_func 28*9880d681SAndroid Build Coastguard Workerblx23t: 29*9880d681SAndroid Build Coastguard Worker bl target 30*9880d681SAndroid Build Coastguard Worker 31*9880d681SAndroid Build Coastguard Worker@ CHECK-ENCODING-LABEL: blx23t 32*9880d681SAndroid Build Coastguard Worker@ CHECK-ENCODING-NEXT: bl #0 33*9880d681SAndroid Build Coastguard Worker 34*9880d681SAndroid Build Coastguard Worker .thumb_func 35*9880d681SAndroid Build Coastguard Workermov32t: 36*9880d681SAndroid Build Coastguard Worker movw r0, :lower16:target 37*9880d681SAndroid Build Coastguard Worker movt r0, :upper16:target 38*9880d681SAndroid Build Coastguard Worker blx r0 39*9880d681SAndroid Build Coastguard Worker 40*9880d681SAndroid Build Coastguard Worker@ CHECK-ENCODING-LABEL: mov32t 41*9880d681SAndroid Build Coastguard Worker@ CHECK-ENCODING-NEXT: movw r0, #0 42*9880d681SAndroid Build Coastguard Worker@ CHECK-ENCODING-NEXT: movt r0, #0 43*9880d681SAndroid Build Coastguard Worker@ CHECK-ENCODING-NEXT: blx r0 44*9880d681SAndroid Build Coastguard Worker 45*9880d681SAndroid Build Coastguard Worker .thumb_func 46*9880d681SAndroid Build Coastguard Workeraddr32: 47*9880d681SAndroid Build Coastguard Worker ldr r0, .Laddr32 48*9880d681SAndroid Build Coastguard Worker bx r0 49*9880d681SAndroid Build Coastguard Worker trap 50*9880d681SAndroid Build Coastguard Worker.Laddr32: 51*9880d681SAndroid Build Coastguard Worker .long target 52*9880d681SAndroid Build Coastguard Worker 53*9880d681SAndroid Build Coastguard Worker@ CHECK-ENCODING-LABEL: addr32 54*9880d681SAndroid Build Coastguard Worker@ CHECK-ENCODING-NEXT: ldr r0, [pc, #4] 55*9880d681SAndroid Build Coastguard Worker@ CHECK-ENCODING-NEXT: bx r0 56*9880d681SAndroid Build Coastguard Worker@ CHECK-ENCODING-NEXT: trap 57*9880d681SAndroid Build Coastguard Worker@ CHECK-ENCODING-NEXT: movs r0, r0 58*9880d681SAndroid Build Coastguard Worker@ CHECK-ENCODING-NEXT: movs r0, r0 59*9880d681SAndroid Build Coastguard Worker 60*9880d681SAndroid Build Coastguard Worker .thumb_func 61*9880d681SAndroid Build Coastguard Workeraddr32nb: 62*9880d681SAndroid Build Coastguard Worker ldr r0, .Laddr32nb 63*9880d681SAndroid Build Coastguard Worker bx r0 64*9880d681SAndroid Build Coastguard Worker trap 65*9880d681SAndroid Build Coastguard Worker.Laddr32nb: 66*9880d681SAndroid Build Coastguard Worker .long target(imgrel) 67*9880d681SAndroid Build Coastguard Worker 68*9880d681SAndroid Build Coastguard Worker@ CHECK-ENCODING-LABEL: addr32nb 69*9880d681SAndroid Build Coastguard Worker@ CHECK-ENCODING-NEXT: ldr.w r0, [pc, #4] 70*9880d681SAndroid Build Coastguard Worker@ CHECK-ENCODING-NEXT: bx r0 71*9880d681SAndroid Build Coastguard Worker@ CHECK-ENCODING-NEXT: trap 72*9880d681SAndroid Build Coastguard Worker@ CHECK-ENCODING-NEXT: movs r0, r0 73*9880d681SAndroid Build Coastguard Worker@ CHECK-ENCODING-NEXT: movs r0, r0 74*9880d681SAndroid Build Coastguard Worker 75*9880d681SAndroid Build Coastguard Worker .thumb_func 76*9880d681SAndroid Build Coastguard Workersecrel: 77*9880d681SAndroid Build Coastguard Worker ldr r0, .Lsecrel 78*9880d681SAndroid Build Coastguard Worker bx r0 79*9880d681SAndroid Build Coastguard Worker trap 80*9880d681SAndroid Build Coastguard Worker.Lsecrel: 81*9880d681SAndroid Build Coastguard Worker .long target(secrel32) 82*9880d681SAndroid Build Coastguard Worker 83*9880d681SAndroid Build Coastguard Worker@ CHECK-ENCODING-LABEL: secrel 84*9880d681SAndroid Build Coastguard Worker@ CHECK-ENCODING-NEXT: ldr.w r0, [pc, #4] 85*9880d681SAndroid Build Coastguard Worker@ CHECK-ENCODING-NEXT: bx r0 86*9880d681SAndroid Build Coastguard Worker@ CHECK-ENCODING-NEXT: trap 87*9880d681SAndroid Build Coastguard Worker@ CHECK-ENCODING-NEXT: movs r0, r0 88*9880d681SAndroid Build Coastguard Worker@ CHECK-ENCODING-NEXT: movs r0, r0 89*9880d681SAndroid Build Coastguard Worker 90*9880d681SAndroid Build Coastguard Worker@ CHECK-RELOCATION: Relocations [ 91*9880d681SAndroid Build Coastguard Worker@ CHECK-RELOCATION: Section (1) .text { 92*9880d681SAndroid Build Coastguard Worker@ CHCEK-RELOCATION: 0x0 IMAGE_REL_ARM_BRANCH24T 93*9880d681SAndroid Build Coastguard Worker@ CHECK-RELOCATION: 0x4 IMAGE_REL_ARM_BRANCH20T 94*9880d681SAndroid Build Coastguard Worker@ CHECK-RELOCATION: 0x8 IMAGE_REL_ARM_BLX23T 95*9880d681SAndroid Build Coastguard Worker@ CHECK-RELOCATION: 0xC IMAGE_REL_ARM_MOV32T 96*9880d681SAndroid Build Coastguard Worker@ CHECK-RELOCATION: 0x1C IMAGE_REL_ARM_ADDR32 97*9880d681SAndroid Build Coastguard Worker@ CHECK-RELOCATION: 0x28 IMAGE_REL_ARM_ADDR32NB 98*9880d681SAndroid Build Coastguard Worker@ CHECK-RELOCATION: 0x34 IMAGE_REL_ARM_SECREL 99*9880d681SAndroid Build Coastguard Worker@ CHECK-RELOCATION: } 100*9880d681SAndroid Build Coastguard Worker@ CHECK-RELOCATION: ] 101*9880d681SAndroid Build Coastguard Worker 102