1*9880d681SAndroid Build Coastguard Worker// RUN: llvm-mc -triple=aarch64-none-linux-gnu -show-encoding < %s | FileCheck %s 2*9880d681SAndroid Build Coastguard Worker// RUN: llvm-mc -triple=aarch64-none-linux-gnu -filetype=obj < %s -o - | \ 3*9880d681SAndroid Build Coastguard Worker// RUN: llvm-readobj -r -t | FileCheck --check-prefix=CHECK-ELF %s 4*9880d681SAndroid Build Coastguard Worker 5*9880d681SAndroid Build Coastguard Worker // TLS local-dynamic forms 6*9880d681SAndroid Build Coastguard Worker movz x1, #:dtprel_g2:var 7*9880d681SAndroid Build Coastguard Worker movn x2, #:dtprel_g2:var 8*9880d681SAndroid Build Coastguard Worker movz x3, #:dtprel_g2:var 9*9880d681SAndroid Build Coastguard Worker movn x4, #:dtprel_g2:var 10*9880d681SAndroid Build Coastguard Worker 11*9880d681SAndroid Build Coastguard Worker// CHECK: movz x1, #:dtprel_g2:var // encoding: [0bAAA00001,A,0b110AAAAA,0x92] 12*9880d681SAndroid Build Coastguard Worker// CHECK: // fixup A - offset: 0, value: :dtprel_g2:var, kind: fixup_aarch64_movw 13*9880d681SAndroid Build Coastguard Worker// CHECK: movn x2, #:dtprel_g2:var // encoding: [0bAAA00010,A,0b110AAAAA,0x92] 14*9880d681SAndroid Build Coastguard Worker// CHECK: // fixup A - offset: 0, value: :dtprel_g2:var, kind: fixup_aarch64_movw 15*9880d681SAndroid Build Coastguard Worker// CHECK: movz x3, #:dtprel_g2:var // encoding: [0bAAA00011,A,0b110AAAAA,0x92] 16*9880d681SAndroid Build Coastguard Worker// CHECK: // fixup A - offset: 0, value: :dtprel_g2:var, kind: fixup_aarch64_movw 17*9880d681SAndroid Build Coastguard Worker// CHECK: movn x4, #:dtprel_g2:var // encoding: [0bAAA00100,A,0b110AAAAA,0x92] 18*9880d681SAndroid Build Coastguard Worker// CHECK: // fixup A - offset: 0, value: :dtprel_g2:var, kind: fixup_aarch64_movw 19*9880d681SAndroid Build Coastguard Worker 20*9880d681SAndroid Build Coastguard Worker// CHECK-ELF: Relocations [ 21*9880d681SAndroid Build Coastguard Worker// CHECK-ELF-NEXT: Section {{.*}} .rela.text { 22*9880d681SAndroid Build Coastguard Worker// CHECK-ELF-NEXT: 0x0 R_AARCH64_TLSLD_MOVW_DTPREL_G2 [[VARSYM:[^ ]+]] 23*9880d681SAndroid Build Coastguard Worker// CHECK-ELF-NEXT: 0x4 R_AARCH64_TLSLD_MOVW_DTPREL_G2 [[VARSYM]] 24*9880d681SAndroid Build Coastguard Worker// CHECK-ELF-NEXT: 0x8 R_AARCH64_TLSLD_MOVW_DTPREL_G2 [[VARSYM]] 25*9880d681SAndroid Build Coastguard Worker// CHECK-ELF-NEXT: 0xC R_AARCH64_TLSLD_MOVW_DTPREL_G2 [[VARSYM]] 26*9880d681SAndroid Build Coastguard Worker 27*9880d681SAndroid Build Coastguard Worker 28*9880d681SAndroid Build Coastguard Worker movz x5, #:dtprel_g1:var 29*9880d681SAndroid Build Coastguard Worker movn x6, #:dtprel_g1:var 30*9880d681SAndroid Build Coastguard Worker movz w7, #:dtprel_g1:var 31*9880d681SAndroid Build Coastguard Worker movn w8, #:dtprel_g1:var 32*9880d681SAndroid Build Coastguard Worker 33*9880d681SAndroid Build Coastguard Worker// CHECK: movz x5, #:dtprel_g1:var // encoding: [0bAAA00101,A,0b101AAAAA,0x92] 34*9880d681SAndroid Build Coastguard Worker// CHECK: // fixup A - offset: 0, value: :dtprel_g1:var, kind: fixup_aarch64_movw 35*9880d681SAndroid Build Coastguard Worker// CHECK: movn x6, #:dtprel_g1:var // encoding: [0bAAA00110,A,0b101AAAAA,0x92] 36*9880d681SAndroid Build Coastguard Worker// CHECK: // fixup A - offset: 0, value: :dtprel_g1:var, kind: fixup_aarch64_movw 37*9880d681SAndroid Build Coastguard Worker// CHECK: movz w7, #:dtprel_g1:var // encoding: [0bAAA00111,A,0b101AAAAA,0x12] 38*9880d681SAndroid Build Coastguard Worker// CHECK: // fixup A - offset: 0, value: :dtprel_g1:var, kind: fixup_aarch64_movw 39*9880d681SAndroid Build Coastguard Worker// CHECK: movn w8, #:dtprel_g1:var // encoding: [0bAAA01000,A,0b101AAAAA,0x12] 40*9880d681SAndroid Build Coastguard Worker// CHECK: // fixup A - offset: 0, value: :dtprel_g1:var, kind: fixup_aarch64_movw 41*9880d681SAndroid Build Coastguard Worker 42*9880d681SAndroid Build Coastguard Worker// CHECK-ELF-NEXT: 0x10 R_AARCH64_TLSLD_MOVW_DTPREL_G1 [[VARSYM]] 43*9880d681SAndroid Build Coastguard Worker// CHECK-ELF-NEXT: 0x14 R_AARCH64_TLSLD_MOVW_DTPREL_G1 [[VARSYM]] 44*9880d681SAndroid Build Coastguard Worker// CHECK-ELF-NEXT: 0x18 R_AARCH64_TLSLD_MOVW_DTPREL_G1 [[VARSYM]] 45*9880d681SAndroid Build Coastguard Worker// CHECK-ELF-NEXT: 0x1C R_AARCH64_TLSLD_MOVW_DTPREL_G1 [[VARSYM]] 46*9880d681SAndroid Build Coastguard Worker 47*9880d681SAndroid Build Coastguard Worker 48*9880d681SAndroid Build Coastguard Worker movk x9, #:dtprel_g1_nc:var 49*9880d681SAndroid Build Coastguard Worker movk w10, #:dtprel_g1_nc:var 50*9880d681SAndroid Build Coastguard Worker 51*9880d681SAndroid Build Coastguard Worker// CHECK: movk x9, #:dtprel_g1_nc:var // encoding: [0bAAA01001,A,0b101AAAAA,0xf2] 52*9880d681SAndroid Build Coastguard Worker// CHECK: // fixup A - offset: 0, value: :dtprel_g1_nc:var, kind: fixup_aarch64_movw 53*9880d681SAndroid Build Coastguard Worker// CHECK: movk w10, #:dtprel_g1_nc:var // encoding: [0bAAA01010,A,0b101AAAAA,0x72] 54*9880d681SAndroid Build Coastguard Worker// CHECK: // fixup A - offset: 0, value: :dtprel_g1_nc:var, kind: fixup_aarch64_movw 55*9880d681SAndroid Build Coastguard Worker 56*9880d681SAndroid Build Coastguard Worker// CHECK-ELF-NEXT: 0x20 R_AARCH64_TLSLD_MOVW_DTPREL_G1_NC [[VARSYM]] 57*9880d681SAndroid Build Coastguard Worker// CHECK-ELF-NEXT: 0x24 R_AARCH64_TLSLD_MOVW_DTPREL_G1_NC [[VARSYM]] 58*9880d681SAndroid Build Coastguard Worker 59*9880d681SAndroid Build Coastguard Worker 60*9880d681SAndroid Build Coastguard Worker movz x11, #:dtprel_g0:var 61*9880d681SAndroid Build Coastguard Worker movn x12, #:dtprel_g0:var 62*9880d681SAndroid Build Coastguard Worker movz w13, #:dtprel_g0:var 63*9880d681SAndroid Build Coastguard Worker movn w14, #:dtprel_g0:var 64*9880d681SAndroid Build Coastguard Worker 65*9880d681SAndroid Build Coastguard Worker// CHECK: movz x11, #:dtprel_g0:var // encoding: [0bAAA01011,A,0b100AAAAA,0x92] 66*9880d681SAndroid Build Coastguard Worker// CHECK: // fixup A - offset: 0, value: :dtprel_g0:var, kind: fixup_aarch64_movw 67*9880d681SAndroid Build Coastguard Worker// CHECK: movn x12, #:dtprel_g0:var // encoding: [0bAAA01100,A,0b100AAAAA,0x92] 68*9880d681SAndroid Build Coastguard Worker// CHECK: // fixup A - offset: 0, value: :dtprel_g0:var, kind: fixup_aarch64_movw 69*9880d681SAndroid Build Coastguard Worker// CHECK: movz w13, #:dtprel_g0:var // encoding: [0bAAA01101,A,0b100AAAAA,0x12] 70*9880d681SAndroid Build Coastguard Worker// CHECK: // fixup A - offset: 0, value: :dtprel_g0:var, kind: fixup_aarch64_movw 71*9880d681SAndroid Build Coastguard Worker// CHECK: movn w14, #:dtprel_g0:var // encoding: [0bAAA01110,A,0b100AAAAA,0x12] 72*9880d681SAndroid Build Coastguard Worker// CHECK: // fixup A - offset: 0, value: :dtprel_g0:var, kind: fixup_aarch64_movw 73*9880d681SAndroid Build Coastguard Worker 74*9880d681SAndroid Build Coastguard Worker// CHECK-ELF-NEXT: 0x28 R_AARCH64_TLSLD_MOVW_DTPREL_G0 [[VARSYM]] 75*9880d681SAndroid Build Coastguard Worker// CHECK-ELF-NEXT: 0x2C R_AARCH64_TLSLD_MOVW_DTPREL_G0 [[VARSYM]] 76*9880d681SAndroid Build Coastguard Worker// CHECK-ELF-NEXT: 0x30 R_AARCH64_TLSLD_MOVW_DTPREL_G0 [[VARSYM]] 77*9880d681SAndroid Build Coastguard Worker// CHECK-ELF-NEXT: 0x34 R_AARCH64_TLSLD_MOVW_DTPREL_G0 [[VARSYM]] 78*9880d681SAndroid Build Coastguard Worker 79*9880d681SAndroid Build Coastguard Worker 80*9880d681SAndroid Build Coastguard Worker movk x15, #:dtprel_g0_nc:var 81*9880d681SAndroid Build Coastguard Worker movk w16, #:dtprel_g0_nc:var 82*9880d681SAndroid Build Coastguard Worker 83*9880d681SAndroid Build Coastguard Worker// CHECK: movk x15, #:dtprel_g0_nc:var // encoding: [0bAAA01111,A,0b100AAAAA,0xf2] 84*9880d681SAndroid Build Coastguard Worker// CHECK: // fixup A - offset: 0, value: :dtprel_g0_nc:var, kind: fixup_aarch64_movw 85*9880d681SAndroid Build Coastguard Worker// CHECK: movk w16, #:dtprel_g0_nc:var // encoding: [0bAAA10000,A,0b100AAAAA,0x72] 86*9880d681SAndroid Build Coastguard Worker// CHECK: // fixup A - offset: 0, value: :dtprel_g0_nc:var, kind: fixup_aarch64_movw 87*9880d681SAndroid Build Coastguard Worker 88*9880d681SAndroid Build Coastguard Worker// CHECK-ELF-NEXT: 0x38 R_AARCH64_TLSLD_MOVW_DTPREL_G0_NC [[VARSYM]] 89*9880d681SAndroid Build Coastguard Worker// CHECK-ELF-NEXT: 0x3C R_AARCH64_TLSLD_MOVW_DTPREL_G0_NC [[VARSYM]] 90*9880d681SAndroid Build Coastguard Worker 91*9880d681SAndroid Build Coastguard Worker 92*9880d681SAndroid Build Coastguard Worker add x17, x18, #:dtprel_hi12:var, lsl #12 93*9880d681SAndroid Build Coastguard Worker add w19, w20, #:dtprel_hi12:var, lsl #12 94*9880d681SAndroid Build Coastguard Worker 95*9880d681SAndroid Build Coastguard Worker// CHECK: add x17, x18, :dtprel_hi12:var, lsl #12 // encoding: [0x51,0bAAAAAA10,0b00AAAAAA,0x91] 96*9880d681SAndroid Build Coastguard Worker// CHECK: // fixup A - offset: 0, value: :dtprel_hi12:var, kind: fixup_aarch64_add_imm12 97*9880d681SAndroid Build Coastguard Worker// CHECK: add w19, w20, :dtprel_hi12:var, lsl #12 // encoding: [0x93,0bAAAAAA10,0b00AAAAAA,0x11] 98*9880d681SAndroid Build Coastguard Worker// CHECK: // fixup A - offset: 0, value: :dtprel_hi12:var, kind: fixup_aarch64_add_imm12 99*9880d681SAndroid Build Coastguard Worker 100*9880d681SAndroid Build Coastguard Worker// CHECK-ELF-NEXT: 0x40 R_AARCH64_TLSLD_ADD_DTPREL_HI12 [[VARSYM]] 101*9880d681SAndroid Build Coastguard Worker// CHECK-ELF-NEXT: 0x44 R_AARCH64_TLSLD_ADD_DTPREL_HI12 [[VARSYM]] 102*9880d681SAndroid Build Coastguard Worker 103*9880d681SAndroid Build Coastguard Worker 104*9880d681SAndroid Build Coastguard Worker add x21, x22, #:dtprel_lo12:var 105*9880d681SAndroid Build Coastguard Worker add w23, w24, #:dtprel_lo12:var 106*9880d681SAndroid Build Coastguard Worker 107*9880d681SAndroid Build Coastguard Worker// CHECK: add x21, x22, :dtprel_lo12:var // encoding: [0xd5,0bAAAAAA10,0b00AAAAAA,0x91] 108*9880d681SAndroid Build Coastguard Worker// CHECK: // fixup A - offset: 0, value: :dtprel_lo12:var, kind: fixup_aarch64_add_imm12 109*9880d681SAndroid Build Coastguard Worker// CHECK: add w23, w24, :dtprel_lo12:var // encoding: [0x17,0bAAAAAA11,0b00AAAAAA,0x11] 110*9880d681SAndroid Build Coastguard Worker// CHECK: // fixup A - offset: 0, value: :dtprel_lo12:var, kind: fixup_aarch64_add_imm12 111*9880d681SAndroid Build Coastguard Worker 112*9880d681SAndroid Build Coastguard Worker// CHECK-ELF-NEXT: 0x48 R_AARCH64_TLSLD_ADD_DTPREL_LO12 [[VARSYM]] 113*9880d681SAndroid Build Coastguard Worker// CHECK-ELF-NEXT: 0x4C R_AARCH64_TLSLD_ADD_DTPREL_LO12 [[VARSYM]] 114*9880d681SAndroid Build Coastguard Worker 115*9880d681SAndroid Build Coastguard Worker 116*9880d681SAndroid Build Coastguard Worker add x25, x26, #:dtprel_lo12_nc:var 117*9880d681SAndroid Build Coastguard Worker add w27, w28, #:dtprel_lo12_nc:var 118*9880d681SAndroid Build Coastguard Worker 119*9880d681SAndroid Build Coastguard Worker// CHECK: add x25, x26, :dtprel_lo12_nc:var // encoding: [0x59,0bAAAAAA11,0b00AAAAAA,0x91] 120*9880d681SAndroid Build Coastguard Worker// CHECK: // fixup A - offset: 0, value: :dtprel_lo12_nc:var, kind: fixup_aarch64_add_imm12 121*9880d681SAndroid Build Coastguard Worker// CHECK: add w27, w28, :dtprel_lo12_nc:var // encoding: [0x9b,0bAAAAAA11,0b00AAAAAA,0x11] 122*9880d681SAndroid Build Coastguard Worker// CHECK: // fixup A - offset: 0, value: :dtprel_lo12_nc:var, kind: fixup_aarch64_add_imm12 123*9880d681SAndroid Build Coastguard Worker 124*9880d681SAndroid Build Coastguard Worker// CHECK-ELF-NEXT: 0x50 R_AARCH64_TLSLD_ADD_DTPREL_LO12_NC [[VARSYM]] 125*9880d681SAndroid Build Coastguard Worker// CHECK-ELF-NEXT: 0x54 R_AARCH64_TLSLD_ADD_DTPREL_LO12_NC [[VARSYM]] 126*9880d681SAndroid Build Coastguard Worker 127*9880d681SAndroid Build Coastguard Worker 128*9880d681SAndroid Build Coastguard Worker ldrb w29, [x30, #:dtprel_lo12:var] 129*9880d681SAndroid Build Coastguard Worker ldrsb x29, [x28, #:dtprel_lo12_nc:var] 130*9880d681SAndroid Build Coastguard Worker 131*9880d681SAndroid Build Coastguard Worker// CHECK: ldrb w29, [x30, :dtprel_lo12:var] // encoding: [0xdd,0bAAAAAA11,0b01AAAAAA,0x39] 132*9880d681SAndroid Build Coastguard Worker// CHECK: // fixup A - offset: 0, value: :dtprel_lo12:var, kind: fixup_aarch64_ldst_imm12_scale1 133*9880d681SAndroid Build Coastguard Worker// CHECK: ldrsb x29, [x28, :dtprel_lo12_nc:var] // encoding: [0x9d,0bAAAAAA11,0b10AAAAAA,0x39] 134*9880d681SAndroid Build Coastguard Worker// CHECK: // fixup A - offset: 0, value: :dtprel_lo12_nc:var, kind: fixup_aarch64_ldst_imm12_scale1 135*9880d681SAndroid Build Coastguard Worker 136*9880d681SAndroid Build Coastguard Worker// CHECK-ELF-NEXT: 0x58 R_AARCH64_TLSLD_LDST8_DTPREL_LO12 [[VARSYM]] 137*9880d681SAndroid Build Coastguard Worker// CHECK-ELF-NEXT: 0x5C R_AARCH64_TLSLD_LDST8_DTPREL_LO12_NC [[VARSYM]] 138*9880d681SAndroid Build Coastguard Worker 139*9880d681SAndroid Build Coastguard Worker 140*9880d681SAndroid Build Coastguard Worker strh w27, [x26, #:dtprel_lo12:var] 141*9880d681SAndroid Build Coastguard Worker ldrsh x25, [x24, #:dtprel_lo12_nc:var] 142*9880d681SAndroid Build Coastguard Worker 143*9880d681SAndroid Build Coastguard Worker// CHECK: strh w27, [x26, :dtprel_lo12:var] // encoding: [0x5b,0bAAAAAA11,0b00AAAAAA,0x79] 144*9880d681SAndroid Build Coastguard Worker// CHECK: // fixup A - offset: 0, value: :dtprel_lo12:var, kind: fixup_aarch64_ldst_imm12_scale2 145*9880d681SAndroid Build Coastguard Worker// CHECK: ldrsh x25, [x24, :dtprel_lo12_nc:var] // encoding: [0x19,0bAAAAAA11,0b10AAAAAA,0x79] 146*9880d681SAndroid Build Coastguard Worker// CHECK: // fixup A - offset: 0, value: :dtprel_lo12_nc:var, kind: fixup_aarch64_ldst_imm12_scale2 147*9880d681SAndroid Build Coastguard Worker 148*9880d681SAndroid Build Coastguard Worker// CHECK-ELF-NEXT: 0x60 R_AARCH64_TLSLD_LDST16_DTPREL_LO12 [[VARSYM]] 149*9880d681SAndroid Build Coastguard Worker// CHECK-ELF-NEXT: 0x64 R_AARCH64_TLSLD_LDST16_DTPREL_LO12_NC [[VARSYM]] 150*9880d681SAndroid Build Coastguard Worker 151*9880d681SAndroid Build Coastguard Worker 152*9880d681SAndroid Build Coastguard Worker ldr w23, [x22, #:dtprel_lo12:var] 153*9880d681SAndroid Build Coastguard Worker ldrsw x21, [x20, #:dtprel_lo12_nc:var] 154*9880d681SAndroid Build Coastguard Worker 155*9880d681SAndroid Build Coastguard Worker// CHECK: ldr w23, [x22, :dtprel_lo12:var] // encoding: [0xd7,0bAAAAAA10,0b01AAAAAA,0xb9] 156*9880d681SAndroid Build Coastguard Worker// CHECK: // fixup A - offset: 0, value: :dtprel_lo12:var, kind: fixup_aarch64_ldst_imm12_scale4 157*9880d681SAndroid Build Coastguard Worker// CHECK: ldrsw x21, [x20, :dtprel_lo12_nc:var] // encoding: [0x95,0bAAAAAA10,0b10AAAAAA,0xb9] 158*9880d681SAndroid Build Coastguard Worker// CHECK: // fixup A - offset: 0, value: :dtprel_lo12_nc:var, kind: fixup_aarch64_ldst_imm12_scale4 159*9880d681SAndroid Build Coastguard Worker 160*9880d681SAndroid Build Coastguard Worker// CHECK-ELF-NEXT: 0x68 R_AARCH64_TLSLD_LDST32_DTPREL_LO12 [[VARSYM]] 161*9880d681SAndroid Build Coastguard Worker// CHECK-ELF-NEXT: 0x6C R_AARCH64_TLSLD_LDST32_DTPREL_LO12_NC [[VARSYM]] 162*9880d681SAndroid Build Coastguard Worker 163*9880d681SAndroid Build Coastguard Worker 164*9880d681SAndroid Build Coastguard Worker ldr x19, [x18, #:dtprel_lo12:var] 165*9880d681SAndroid Build Coastguard Worker str x17, [x16, #:dtprel_lo12_nc:var] 166*9880d681SAndroid Build Coastguard Worker 167*9880d681SAndroid Build Coastguard Worker// CHECK: ldr x19, [x18, :dtprel_lo12:var] // encoding: [0x53,0bAAAAAA10,0b01AAAAAA,0xf9] 168*9880d681SAndroid Build Coastguard Worker// CHECK: // fixup A - offset: 0, value: :dtprel_lo12:var, kind: fixup_aarch64_ldst_imm12_scale8 169*9880d681SAndroid Build Coastguard Worker// CHECK: str x17, [x16, :dtprel_lo12_nc:var] // encoding: [0x11,0bAAAAAA10,0b00AAAAAA,0xf9] 170*9880d681SAndroid Build Coastguard Worker// CHECK: // fixup A - offset: 0, value: :dtprel_lo12_nc:var, kind: fixup_aarch64_ldst_imm12_scale8 171*9880d681SAndroid Build Coastguard Worker 172*9880d681SAndroid Build Coastguard Worker// CHECK-ELF-NEXT: 0x70 R_AARCH64_TLSLD_LDST64_DTPREL_LO12 [[VARSYM]] 173*9880d681SAndroid Build Coastguard Worker// CHECK-ELF-NEXT: 0x74 R_AARCH64_TLSLD_LDST64_DTPREL_LO12_NC [[VARSYM]] 174*9880d681SAndroid Build Coastguard Worker 175*9880d681SAndroid Build Coastguard Worker 176*9880d681SAndroid Build Coastguard Worker // TLS initial-exec forms 177*9880d681SAndroid Build Coastguard Worker movz x15, #:gottprel_g1:var 178*9880d681SAndroid Build Coastguard Worker movz w14, #:gottprel_g1:var 179*9880d681SAndroid Build Coastguard Worker 180*9880d681SAndroid Build Coastguard Worker// CHECK: movz x15, #:gottprel_g1:var // encoding: [0bAAA01111,A,0b101AAAAA,0x92] 181*9880d681SAndroid Build Coastguard Worker// CHECK: // fixup A - offset: 0, value: :gottprel_g1:var, kind: fixup_aarch64_movw 182*9880d681SAndroid Build Coastguard Worker// CHECK: movz w14, #:gottprel_g1:var // encoding: [0bAAA01110,A,0b101AAAAA,0x12] 183*9880d681SAndroid Build Coastguard Worker// CHECK: // fixup A - offset: 0, value: :gottprel_g1:var, kind: fixup_aarch64_movw 184*9880d681SAndroid Build Coastguard Worker 185*9880d681SAndroid Build Coastguard Worker// CHECK-ELF-NEXT: 0x78 R_AARCH64_TLSIE_MOVW_GOTTPREL_G1 [[VARSYM]] 186*9880d681SAndroid Build Coastguard Worker// CHECK-ELF-NEXT: 0x7C R_AARCH64_TLSIE_MOVW_GOTTPREL_G1 [[VARSYM]] 187*9880d681SAndroid Build Coastguard Worker 188*9880d681SAndroid Build Coastguard Worker 189*9880d681SAndroid Build Coastguard Worker movk x13, #:gottprel_g0_nc:var 190*9880d681SAndroid Build Coastguard Worker movk w12, #:gottprel_g0_nc:var 191*9880d681SAndroid Build Coastguard Worker 192*9880d681SAndroid Build Coastguard Worker// CHECK: movk x13, #:gottprel_g0_nc:var // encoding: [0bAAA01101,A,0b100AAAAA,0xf2] 193*9880d681SAndroid Build Coastguard Worker// CHECK: // fixup A - offset: 0, value: :gottprel_g0_nc:var, kind: fixup_aarch64_movw 194*9880d681SAndroid Build Coastguard Worker// CHECK: movk w12, #:gottprel_g0_nc:var // encoding: [0bAAA01100,A,0b100AAAAA,0x72] 195*9880d681SAndroid Build Coastguard Worker// CHECK: // fixup A - offset: 0, value: :gottprel_g0_nc:var, kind: fixup_aarch64_movw 196*9880d681SAndroid Build Coastguard Worker 197*9880d681SAndroid Build Coastguard Worker// CHECK-ELF-NEXT: 0x80 R_AARCH64_TLSIE_MOVW_GOTTPREL_G0_NC [[VARSYM]] 198*9880d681SAndroid Build Coastguard Worker// CHECK-ELF-NEXT: 0x84 R_AARCH64_TLSIE_MOVW_GOTTPREL_G0_NC [[VARSYM]] 199*9880d681SAndroid Build Coastguard Worker 200*9880d681SAndroid Build Coastguard Worker 201*9880d681SAndroid Build Coastguard Worker adrp x11, :gottprel:var 202*9880d681SAndroid Build Coastguard Worker ldr x10, [x0, #:gottprel_lo12:var] 203*9880d681SAndroid Build Coastguard Worker ldr x9, :gottprel:var 204*9880d681SAndroid Build Coastguard Worker 205*9880d681SAndroid Build Coastguard Worker// CHECK: adrp x11, :gottprel:var // encoding: [0x0b'A',A,A,0x90'A'] 206*9880d681SAndroid Build Coastguard Worker// CHECK: // fixup A - offset: 0, value: :gottprel:var, kind: fixup_aarch64_pcrel_adrp_imm21 207*9880d681SAndroid Build Coastguard Worker// CHECK: ldr x10, [x0, :gottprel_lo12:var] // encoding: [0x0a,0bAAAAAA00,0b01AAAAAA,0xf9] 208*9880d681SAndroid Build Coastguard Worker// CHECK: // fixup A - offset: 0, value: :gottprel_lo12:var, kind: fixup_aarch64_ldst_imm12_scale8 209*9880d681SAndroid Build Coastguard Worker// CHECK: ldr x9, :gottprel:var // encoding: [0bAAA01001,A,A,0x58] 210*9880d681SAndroid Build Coastguard Worker// CHECK: // fixup A - offset: 0, value: :gottprel:var, kind: fixup_aarch64_ldr_pcrel_imm19 211*9880d681SAndroid Build Coastguard Worker 212*9880d681SAndroid Build Coastguard Worker// CHECK-ELF-NEXT: 0x88 R_AARCH64_TLSIE_ADR_GOTTPREL_PAGE21 [[VARSYM]] 213*9880d681SAndroid Build Coastguard Worker// CHECK-ELF-NEXT: 0x8C R_AARCH64_TLSIE_LD64_GOTTPREL_LO12_NC [[VARSYM]] 214*9880d681SAndroid Build Coastguard Worker// CHECK-ELF-NEXT: 0x90 R_AARCH64_TLSIE_LD_GOTTPREL_PREL19 [[VARSYM]] 215*9880d681SAndroid Build Coastguard Worker 216*9880d681SAndroid Build Coastguard Worker 217*9880d681SAndroid Build Coastguard Worker // TLS local-exec forms 218*9880d681SAndroid Build Coastguard Worker movz x3, #:tprel_g2:var 219*9880d681SAndroid Build Coastguard Worker movn x4, #:tprel_g2:var 220*9880d681SAndroid Build Coastguard Worker 221*9880d681SAndroid Build Coastguard Worker// CHECK: movz x3, #:tprel_g2:var // encoding: [0bAAA00011,A,0b110AAAAA,0x92] 222*9880d681SAndroid Build Coastguard Worker// CHECK: // fixup A - offset: 0, value: :tprel_g2:var, kind: fixup_aarch64_movw 223*9880d681SAndroid Build Coastguard Worker// CHECK: movn x4, #:tprel_g2:var // encoding: [0bAAA00100,A,0b110AAAAA,0x92] 224*9880d681SAndroid Build Coastguard Worker// CHECK: // fixup A - offset: 0, value: :tprel_g2:var, kind: fixup_aarch64_movw 225*9880d681SAndroid Build Coastguard Worker 226*9880d681SAndroid Build Coastguard Worker// CHECK-ELF-NEXT: 0x94 R_AARCH64_TLSLE_MOVW_TPREL_G2 [[VARSYM]] 227*9880d681SAndroid Build Coastguard Worker// CHECK-ELF-NEXT: 0x98 R_AARCH64_TLSLE_MOVW_TPREL_G2 [[VARSYM]] 228*9880d681SAndroid Build Coastguard Worker 229*9880d681SAndroid Build Coastguard Worker 230*9880d681SAndroid Build Coastguard Worker movz x5, #:tprel_g1:var 231*9880d681SAndroid Build Coastguard Worker movn x6, #:tprel_g1:var 232*9880d681SAndroid Build Coastguard Worker movz w7, #:tprel_g1:var 233*9880d681SAndroid Build Coastguard Worker movn w8, #:tprel_g1:var 234*9880d681SAndroid Build Coastguard Worker 235*9880d681SAndroid Build Coastguard Worker// CHECK: movz x5, #:tprel_g1:var // encoding: [0bAAA00101,A,0b101AAAAA,0x92] 236*9880d681SAndroid Build Coastguard Worker// CHECK: // fixup A - offset: 0, value: :tprel_g1:var, kind: fixup_aarch64_movw 237*9880d681SAndroid Build Coastguard Worker// CHECK: movn x6, #:tprel_g1:var // encoding: [0bAAA00110,A,0b101AAAAA,0x92] 238*9880d681SAndroid Build Coastguard Worker// CHECK: // fixup A - offset: 0, value: :tprel_g1:var, kind: fixup_aarch64_movw 239*9880d681SAndroid Build Coastguard Worker// CHECK: movz w7, #:tprel_g1:var // encoding: [0bAAA00111,A,0b101AAAAA,0x12] 240*9880d681SAndroid Build Coastguard Worker// CHECK: // fixup A - offset: 0, value: :tprel_g1:var, kind: fixup_aarch64_movw 241*9880d681SAndroid Build Coastguard Worker// CHECK: movn w8, #:tprel_g1:var // encoding: [0bAAA01000,A,0b101AAAAA,0x12] 242*9880d681SAndroid Build Coastguard Worker// CHECK: // fixup A - offset: 0, value: :tprel_g1:var, kind: fixup_aarch64_movw 243*9880d681SAndroid Build Coastguard Worker 244*9880d681SAndroid Build Coastguard Worker// CHECK-ELF-NEXT: 0x9C R_AARCH64_TLSLE_MOVW_TPREL_G1 [[VARSYM]] 245*9880d681SAndroid Build Coastguard Worker// CHECK-ELF-NEXT: 0xA0 R_AARCH64_TLSLE_MOVW_TPREL_G1 [[VARSYM]] 246*9880d681SAndroid Build Coastguard Worker// CHECK-ELF-NEXT: 0xA4 R_AARCH64_TLSLE_MOVW_TPREL_G1 [[VARSYM]] 247*9880d681SAndroid Build Coastguard Worker// CHECK-ELF-NEXT: 0xA8 R_AARCH64_TLSLE_MOVW_TPREL_G1 [[VARSYM]] 248*9880d681SAndroid Build Coastguard Worker 249*9880d681SAndroid Build Coastguard Worker 250*9880d681SAndroid Build Coastguard Worker movk x9, #:tprel_g1_nc:var 251*9880d681SAndroid Build Coastguard Worker movk w10, #:tprel_g1_nc:var 252*9880d681SAndroid Build Coastguard Worker 253*9880d681SAndroid Build Coastguard Worker// CHECK: movk x9, #:tprel_g1_nc:var // encoding: [0bAAA01001,A,0b101AAAAA,0xf2] 254*9880d681SAndroid Build Coastguard Worker// CHECK: // fixup A - offset: 0, value: :tprel_g1_nc:var, kind: fixup_aarch64_movw 255*9880d681SAndroid Build Coastguard Worker// CHECK: movk w10, #:tprel_g1_nc:var // encoding: [0bAAA01010,A,0b101AAAAA,0x72] 256*9880d681SAndroid Build Coastguard Worker// CHECK: // fixup A - offset: 0, value: :tprel_g1_nc:var, kind: fixup_aarch64_movw 257*9880d681SAndroid Build Coastguard Worker 258*9880d681SAndroid Build Coastguard Worker// CHECK-ELF-NEXT: 0xAC R_AARCH64_TLSLE_MOVW_TPREL_G1_NC [[VARSYM]] 259*9880d681SAndroid Build Coastguard Worker// CHECK-ELF-NEXT: 0xB0 R_AARCH64_TLSLE_MOVW_TPREL_G1_NC [[VARSYM]] 260*9880d681SAndroid Build Coastguard Worker 261*9880d681SAndroid Build Coastguard Worker 262*9880d681SAndroid Build Coastguard Worker movz x11, #:tprel_g0:var 263*9880d681SAndroid Build Coastguard Worker movn x12, #:tprel_g0:var 264*9880d681SAndroid Build Coastguard Worker movz w13, #:tprel_g0:var 265*9880d681SAndroid Build Coastguard Worker movn w14, #:tprel_g0:var 266*9880d681SAndroid Build Coastguard Worker 267*9880d681SAndroid Build Coastguard Worker// CHECK: movz x11, #:tprel_g0:var // encoding: [0bAAA01011,A,0b100AAAAA,0x92] 268*9880d681SAndroid Build Coastguard Worker// CHECK: // fixup A - offset: 0, value: :tprel_g0:var, kind: fixup_aarch64_movw 269*9880d681SAndroid Build Coastguard Worker// CHECK: movn x12, #:tprel_g0:var // encoding: [0bAAA01100,A,0b100AAAAA,0x92] 270*9880d681SAndroid Build Coastguard Worker// CHECK: // fixup A - offset: 0, value: :tprel_g0:var, kind: fixup_aarch64_movw 271*9880d681SAndroid Build Coastguard Worker// CHECK: movz w13, #:tprel_g0:var // encoding: [0bAAA01101,A,0b100AAAAA,0x12] 272*9880d681SAndroid Build Coastguard Worker// CHECK: // fixup A - offset: 0, value: :tprel_g0:var, kind: fixup_aarch64_movw 273*9880d681SAndroid Build Coastguard Worker// CHECK: movn w14, #:tprel_g0:var // encoding: [0bAAA01110,A,0b100AAAAA,0x12] 274*9880d681SAndroid Build Coastguard Worker// CHECK: // fixup A - offset: 0, value: :tprel_g0:var, kind: fixup_aarch64_movw 275*9880d681SAndroid Build Coastguard Worker 276*9880d681SAndroid Build Coastguard Worker// CHECK-ELF-NEXT: 0xB4 R_AARCH64_TLSLE_MOVW_TPREL_G0 [[VARSYM]] 277*9880d681SAndroid Build Coastguard Worker// CHECK-ELF-NEXT: 0xB8 R_AARCH64_TLSLE_MOVW_TPREL_G0 [[VARSYM]] 278*9880d681SAndroid Build Coastguard Worker// CHECK-ELF-NEXT: 0xBC R_AARCH64_TLSLE_MOVW_TPREL_G0 [[VARSYM]] 279*9880d681SAndroid Build Coastguard Worker// CHECK-ELF-NEXT: 0xC0 R_AARCH64_TLSLE_MOVW_TPREL_G0 [[VARSYM]] 280*9880d681SAndroid Build Coastguard Worker 281*9880d681SAndroid Build Coastguard Worker 282*9880d681SAndroid Build Coastguard Worker movk x15, #:tprel_g0_nc:var 283*9880d681SAndroid Build Coastguard Worker movk w16, #:tprel_g0_nc:var 284*9880d681SAndroid Build Coastguard Worker 285*9880d681SAndroid Build Coastguard Worker// CHECK: movk x15, #:tprel_g0_nc:var // encoding: [0bAAA01111,A,0b100AAAAA,0xf2] 286*9880d681SAndroid Build Coastguard Worker// CHECK: // fixup A - offset: 0, value: :tprel_g0_nc:var, kind: fixup_aarch64_movw 287*9880d681SAndroid Build Coastguard Worker// CHECK: movk w16, #:tprel_g0_nc:var // encoding: [0bAAA10000,A,0b100AAAAA,0x72] 288*9880d681SAndroid Build Coastguard Worker// CHECK: // fixup A - offset: 0, value: :tprel_g0_nc:var, kind: fixup_aarch64_movw 289*9880d681SAndroid Build Coastguard Worker 290*9880d681SAndroid Build Coastguard Worker// CHECK-ELF-NEXT: 0xC4 R_AARCH64_TLSLE_MOVW_TPREL_G0_NC [[VARSYM]] 291*9880d681SAndroid Build Coastguard Worker// CHECK-ELF-NEXT: 0xC8 R_AARCH64_TLSLE_MOVW_TPREL_G0_NC [[VARSYM]] 292*9880d681SAndroid Build Coastguard Worker 293*9880d681SAndroid Build Coastguard Worker 294*9880d681SAndroid Build Coastguard Worker add x17, x18, #:tprel_hi12:var, lsl #12 295*9880d681SAndroid Build Coastguard Worker add w19, w20, #:tprel_hi12:var, lsl #12 296*9880d681SAndroid Build Coastguard Worker 297*9880d681SAndroid Build Coastguard Worker// CHECK: add x17, x18, :tprel_hi12:var, lsl #12 // encoding: [0x51,0bAAAAAA10,0b00AAAAAA,0x91] 298*9880d681SAndroid Build Coastguard Worker// CHECK: // fixup A - offset: 0, value: :tprel_hi12:var, kind: fixup_aarch64_add_imm12 299*9880d681SAndroid Build Coastguard Worker// CHECK: add w19, w20, :tprel_hi12:var, lsl #12 // encoding: [0x93,0bAAAAAA10,0b00AAAAAA,0x11] 300*9880d681SAndroid Build Coastguard Worker// CHECK: // fixup A - offset: 0, value: :tprel_hi12:var, kind: fixup_aarch64_add_imm12 301*9880d681SAndroid Build Coastguard Worker 302*9880d681SAndroid Build Coastguard Worker// CHECK-ELF-NEXT: 0xCC R_AARCH64_TLSLE_ADD_TPREL_HI12 [[VARSYM]] 303*9880d681SAndroid Build Coastguard Worker// CHECK-ELF-NEXT: 0xD0 R_AARCH64_TLSLE_ADD_TPREL_HI12 [[VARSYM]] 304*9880d681SAndroid Build Coastguard Worker 305*9880d681SAndroid Build Coastguard Worker 306*9880d681SAndroid Build Coastguard Worker add x21, x22, #:tprel_lo12:var 307*9880d681SAndroid Build Coastguard Worker add w23, w24, #:tprel_lo12:var 308*9880d681SAndroid Build Coastguard Worker 309*9880d681SAndroid Build Coastguard Worker// CHECK: add x21, x22, :tprel_lo12:var // encoding: [0xd5,0bAAAAAA10,0b00AAAAAA,0x91] 310*9880d681SAndroid Build Coastguard Worker// CHECK: // fixup A - offset: 0, value: :tprel_lo12:var, kind: fixup_aarch64_add_imm12 311*9880d681SAndroid Build Coastguard Worker// CHECK: add w23, w24, :tprel_lo12:var // encoding: [0x17,0bAAAAAA11,0b00AAAAAA,0x11] 312*9880d681SAndroid Build Coastguard Worker// CHECK: // fixup A - offset: 0, value: :tprel_lo12:var, kind: fixup_aarch64_add_imm12 313*9880d681SAndroid Build Coastguard Worker 314*9880d681SAndroid Build Coastguard Worker// CHECK-ELF-NEXT: 0xD4 R_AARCH64_TLSLE_ADD_TPREL_LO12 [[VARSYM]] 315*9880d681SAndroid Build Coastguard Worker// CHECK-ELF-NEXT: 0xD8 R_AARCH64_TLSLE_ADD_TPREL_LO12 [[VARSYM]] 316*9880d681SAndroid Build Coastguard Worker 317*9880d681SAndroid Build Coastguard Worker 318*9880d681SAndroid Build Coastguard Worker add x25, x26, #:tprel_lo12_nc:var 319*9880d681SAndroid Build Coastguard Worker add w27, w28, #:tprel_lo12_nc:var 320*9880d681SAndroid Build Coastguard Worker 321*9880d681SAndroid Build Coastguard Worker// CHECK: add x25, x26, :tprel_lo12_nc:var // encoding: [0x59,0bAAAAAA11,0b00AAAAAA,0x91] 322*9880d681SAndroid Build Coastguard Worker// CHECK: // fixup A - offset: 0, value: :tprel_lo12_nc:var, kind: fixup_aarch64_add_imm12 323*9880d681SAndroid Build Coastguard Worker// CHECK: add w27, w28, :tprel_lo12_nc:var // encoding: [0x9b,0bAAAAAA11,0b00AAAAAA,0x11] 324*9880d681SAndroid Build Coastguard Worker// CHECK: // fixup A - offset: 0, value: :tprel_lo12_nc:var, kind: fixup_aarch64_add_imm12 325*9880d681SAndroid Build Coastguard Worker 326*9880d681SAndroid Build Coastguard Worker// CHECK-ELF-NEXT: 0xDC R_AARCH64_TLSLE_ADD_TPREL_LO12_NC [[VARSYM]] 327*9880d681SAndroid Build Coastguard Worker// CHECK-ELF-NEXT: 0xE0 R_AARCH64_TLSLE_ADD_TPREL_LO12_NC [[VARSYM]] 328*9880d681SAndroid Build Coastguard Worker 329*9880d681SAndroid Build Coastguard Worker 330*9880d681SAndroid Build Coastguard Worker ldrb w29, [x30, #:tprel_lo12:var] 331*9880d681SAndroid Build Coastguard Worker ldrsb x29, [x28, #:tprel_lo12_nc:var] 332*9880d681SAndroid Build Coastguard Worker 333*9880d681SAndroid Build Coastguard Worker// CHECK: ldrb w29, [x30, :tprel_lo12:var] // encoding: [0xdd,0bAAAAAA11,0b01AAAAAA,0x39] 334*9880d681SAndroid Build Coastguard Worker// CHECK: // fixup A - offset: 0, value: :tprel_lo12:var, kind: fixup_aarch64_ldst_imm12_scale1 335*9880d681SAndroid Build Coastguard Worker// CHECK: ldrsb x29, [x28, :tprel_lo12_nc:var] // encoding: [0x9d,0bAAAAAA11,0b10AAAAAA,0x39] 336*9880d681SAndroid Build Coastguard Worker// CHECK: // fixup A - offset: 0, value: :tprel_lo12_nc:var, kind: fixup_aarch64_ldst_imm12_scale1 337*9880d681SAndroid Build Coastguard Worker 338*9880d681SAndroid Build Coastguard Worker// CHECK-ELF-NEXT: 0xE4 R_AARCH64_TLSLE_LDST8_TPREL_LO12 [[VARSYM]] 339*9880d681SAndroid Build Coastguard Worker// CHECK-ELF-NEXT: 0xE8 R_AARCH64_TLSLE_LDST8_TPREL_LO12_NC [[VARSYM]] 340*9880d681SAndroid Build Coastguard Worker 341*9880d681SAndroid Build Coastguard Worker 342*9880d681SAndroid Build Coastguard Worker strh w27, [x26, #:tprel_lo12:var] 343*9880d681SAndroid Build Coastguard Worker ldrsh x25, [x24, #:tprel_lo12_nc:var] 344*9880d681SAndroid Build Coastguard Worker 345*9880d681SAndroid Build Coastguard Worker// CHECK: strh w27, [x26, :tprel_lo12:var] // encoding: [0x5b,0bAAAAAA11,0b00AAAAAA,0x79] 346*9880d681SAndroid Build Coastguard Worker// CHECK: // fixup A - offset: 0, value: :tprel_lo12:var, kind: fixup_aarch64_ldst_imm12_scale2 347*9880d681SAndroid Build Coastguard Worker// CHECK: ldrsh x25, [x24, :tprel_lo12_nc:var] // encoding: [0x19,0bAAAAAA11,0b10AAAAAA,0x79] 348*9880d681SAndroid Build Coastguard Worker// CHECK: // fixup A - offset: 0, value: :tprel_lo12_nc:var, kind: fixup_aarch64_ldst_imm12_scale2 349*9880d681SAndroid Build Coastguard Worker 350*9880d681SAndroid Build Coastguard Worker// CHECK-ELF-NEXT: 0xEC R_AARCH64_TLSLE_LDST16_TPREL_LO12 [[VARSYM]] 351*9880d681SAndroid Build Coastguard Worker// CHECK-ELF-NEXT: 0xF0 R_AARCH64_TLSLE_LDST16_TPREL_LO12_NC [[VARSYM]] 352*9880d681SAndroid Build Coastguard Worker 353*9880d681SAndroid Build Coastguard Worker 354*9880d681SAndroid Build Coastguard Worker ldr w23, [x22, #:tprel_lo12:var] 355*9880d681SAndroid Build Coastguard Worker ldrsw x21, [x20, #:tprel_lo12_nc:var] 356*9880d681SAndroid Build Coastguard Worker 357*9880d681SAndroid Build Coastguard Worker// CHECK: ldr w23, [x22, :tprel_lo12:var] // encoding: [0xd7,0bAAAAAA10,0b01AAAAAA,0xb9] 358*9880d681SAndroid Build Coastguard Worker// CHECK: // fixup A - offset: 0, value: :tprel_lo12:var, kind: fixup_aarch64_ldst_imm12_scale4 359*9880d681SAndroid Build Coastguard Worker// CHECK: ldrsw x21, [x20, :tprel_lo12_nc:var] // encoding: [0x95,0bAAAAAA10,0b10AAAAAA,0xb9] 360*9880d681SAndroid Build Coastguard Worker// CHECK: // fixup A - offset: 0, value: :tprel_lo12_nc:var, kind: fixup_aarch64_ldst_imm12_scale4 361*9880d681SAndroid Build Coastguard Worker 362*9880d681SAndroid Build Coastguard Worker// CHECK-ELF-NEXT: 0xF4 R_AARCH64_TLSLE_LDST32_TPREL_LO12 [[VARSYM]] 363*9880d681SAndroid Build Coastguard Worker// CHECK-ELF-NEXT: 0xF8 R_AARCH64_TLSLE_LDST32_TPREL_LO12_NC [[VARSYM]] 364*9880d681SAndroid Build Coastguard Worker 365*9880d681SAndroid Build Coastguard Worker ldr x19, [x18, #:tprel_lo12:var] 366*9880d681SAndroid Build Coastguard Worker str x17, [x16, #:tprel_lo12_nc:var] 367*9880d681SAndroid Build Coastguard Worker 368*9880d681SAndroid Build Coastguard Worker// CHECK: ldr x19, [x18, :tprel_lo12:var] // encoding: [0x53,0bAAAAAA10,0b01AAAAAA,0xf9] 369*9880d681SAndroid Build Coastguard Worker// CHECK: // fixup A - offset: 0, value: :tprel_lo12:var, kind: fixup_aarch64_ldst_imm12_scale8 370*9880d681SAndroid Build Coastguard Worker// CHECK: str x17, [x16, :tprel_lo12_nc:var] // encoding: [0x11,0bAAAAAA10,0b00AAAAAA,0xf9] 371*9880d681SAndroid Build Coastguard Worker// CHECK: // fixup A - offset: 0, value: :tprel_lo12_nc:var, kind: fixup_aarch64_ldst_imm12_scale8 372*9880d681SAndroid Build Coastguard Worker 373*9880d681SAndroid Build Coastguard Worker// CHECK-ELF-NEXT: 0xFC R_AARCH64_TLSLE_LDST64_TPREL_LO12 [[VARSYM]] 374*9880d681SAndroid Build Coastguard Worker// CHECK-ELF-NEXT: 0x100 R_AARCH64_TLSLE_LDST64_TPREL_LO12_NC [[VARSYM]] 375*9880d681SAndroid Build Coastguard Worker 376*9880d681SAndroid Build Coastguard Worker // TLS descriptor forms 377*9880d681SAndroid Build Coastguard Worker adrp x8, :tlsdesc:var 378*9880d681SAndroid Build Coastguard Worker ldr x7, [x6, :tlsdesc_lo12:var] 379*9880d681SAndroid Build Coastguard Worker add x5, x4, #:tlsdesc_lo12:var 380*9880d681SAndroid Build Coastguard Worker .tlsdesccall var 381*9880d681SAndroid Build Coastguard Worker blr x3 382*9880d681SAndroid Build Coastguard Worker 383*9880d681SAndroid Build Coastguard Worker 384*9880d681SAndroid Build Coastguard Worker// CHECK: adrp x8, :tlsdesc:var // encoding: [0x08'A',A,A,0x90'A'] 385*9880d681SAndroid Build Coastguard Worker// CHECK: // fixup A - offset: 0, value: :tlsdesc:var, kind: fixup_aarch64_pcrel_adrp_imm21 386*9880d681SAndroid Build Coastguard Worker// CHECK: ldr x7, [x6, :tlsdesc_lo12:var] // encoding: [0xc7,0bAAAAAA00,0b01AAAAAA,0xf9] 387*9880d681SAndroid Build Coastguard Worker// CHECK: // fixup A - offset: 0, value: :tlsdesc_lo12:var, kind: fixup_aarch64_ldst_imm12_scale8 388*9880d681SAndroid Build Coastguard Worker// CHECK: add x5, x4, :tlsdesc_lo12:var // encoding: [0x85,0bAAAAAA00,0b00AAAAAA,0x91] 389*9880d681SAndroid Build Coastguard Worker// CHECK: // fixup A - offset: 0, value: :tlsdesc_lo12:var, kind: fixup_aarch64_add_imm12 390*9880d681SAndroid Build Coastguard Worker// CHECK: .tlsdesccall var // encoding: [] 391*9880d681SAndroid Build Coastguard Worker// CHECK: // fixup A - offset: 0, value: var, kind: fixup_aarch64_tlsdesc_call 392*9880d681SAndroid Build Coastguard Worker// CHECK: blr x3 // encoding: [0x60,0x00,0x3f,0xd6] 393*9880d681SAndroid Build Coastguard Worker 394*9880d681SAndroid Build Coastguard Worker// CHECK-ELF-NEXT: 0x104 R_AARCH64_TLSDESC_ADR_PAGE21 [[VARSYM]] 395*9880d681SAndroid Build Coastguard Worker// CHECK-ELF-NEXT: 0x108 R_AARCH64_TLSDESC_LD64_LO12_NC [[VARSYM]] 396*9880d681SAndroid Build Coastguard Worker// CHECK-ELF-NEXT: 0x10C R_AARCH64_TLSDESC_ADD_LO12_NC [[VARSYM]] 397*9880d681SAndroid Build Coastguard Worker// CHECK-ELF-NEXT: 0x110 R_AARCH64_TLSDESC_CALL [[VARSYM]] 398*9880d681SAndroid Build Coastguard Worker 399*9880d681SAndroid Build Coastguard Worker 400*9880d681SAndroid Build Coastguard Worker// Make sure symbol 5 has type STT_TLS: 401*9880d681SAndroid Build Coastguard Worker 402*9880d681SAndroid Build Coastguard Worker// CHECK-ELF: Symbols [ 403*9880d681SAndroid Build Coastguard Worker// CHECK-ELF: Symbol { 404*9880d681SAndroid Build Coastguard Worker// CHECK-ELF: Name: var 405*9880d681SAndroid Build Coastguard Worker// CHECK-ELF-NEXT: Value: 406*9880d681SAndroid Build Coastguard Worker// CHECK-ELF-NEXT: Size: 407*9880d681SAndroid Build Coastguard Worker// CHECK-ELF-NEXT: Binding: Global 408*9880d681SAndroid Build Coastguard Worker// CHECK-ELF-NEXT: Type: TLS 409