1*9880d681SAndroid Build Coastguard Worker// RUN: llvm-mc -triple=arm64-linux-gnu -o - < %s | FileCheck %s 2*9880d681SAndroid Build Coastguard Worker// RUN: llvm-mc -triple=arm64-linux-gnu -filetype=obj < %s | llvm-objdump -triple=arm64-linux-gnu - -r | FileCheck %s --check-prefix=CHECK-OBJ 3*9880d681SAndroid Build Coastguard Worker 4*9880d681SAndroid Build Coastguard Worker add x0, x2, #:lo12:sym 5*9880d681SAndroid Build Coastguard Worker// CHECK: add x0, x2, :lo12:sym 6*9880d681SAndroid Build Coastguard Worker// CHECK-OBJ: 0 R_AARCH64_ADD_ABS_LO12_NC sym 7*9880d681SAndroid Build Coastguard Worker 8*9880d681SAndroid Build Coastguard Worker add x5, x7, #:dtprel_lo12:sym 9*9880d681SAndroid Build Coastguard Worker// CHECK: add x5, x7, :dtprel_lo12:sym 10*9880d681SAndroid Build Coastguard Worker// CHECK-OBJ: 4 R_AARCH64_TLSLD_ADD_DTPREL_LO12 sym 11*9880d681SAndroid Build Coastguard Worker 12*9880d681SAndroid Build Coastguard Worker add x9, x12, #:dtprel_lo12_nc:sym 13*9880d681SAndroid Build Coastguard Worker// CHECK: add x9, x12, :dtprel_lo12_nc:sym 14*9880d681SAndroid Build Coastguard Worker// CHECK-OBJ: 8 R_AARCH64_TLSLD_ADD_DTPREL_LO12_NC sym 15*9880d681SAndroid Build Coastguard Worker 16*9880d681SAndroid Build Coastguard Worker add x20, x30, #:tprel_lo12:sym 17*9880d681SAndroid Build Coastguard Worker// CHECK: add x20, x30, :tprel_lo12:sym 18*9880d681SAndroid Build Coastguard Worker// CHECK-OBJ: c R_AARCH64_TLSLE_ADD_TPREL_LO12 sym 19*9880d681SAndroid Build Coastguard Worker 20*9880d681SAndroid Build Coastguard Worker add x9, x12, #:tprel_lo12_nc:sym 21*9880d681SAndroid Build Coastguard Worker// CHECK: add x9, x12, :tprel_lo12_nc:sym 22*9880d681SAndroid Build Coastguard Worker// CHECK-OBJ: 10 R_AARCH64_TLSLE_ADD_TPREL_LO12_NC sym 23*9880d681SAndroid Build Coastguard Worker 24*9880d681SAndroid Build Coastguard Worker add x5, x0, #:tlsdesc_lo12:sym 25*9880d681SAndroid Build Coastguard Worker// CHECK: add x5, x0, :tlsdesc_lo12:sym 26*9880d681SAndroid Build Coastguard Worker// CHECK-OBJ: 14 R_AARCH64_TLSDESC_ADD_LO12_NC sym 27*9880d681SAndroid Build Coastguard Worker 28*9880d681SAndroid Build Coastguard Worker add x0, x2, #:lo12:sym+8 29*9880d681SAndroid Build Coastguard Worker// CHECK: add x0, x2, :lo12:sym 30*9880d681SAndroid Build Coastguard Worker// CHECK-OBJ: 18 R_AARCH64_ADD_ABS_LO12_NC sym+8 31*9880d681SAndroid Build Coastguard Worker 32*9880d681SAndroid Build Coastguard Worker add x5, x7, #:dtprel_lo12:sym+1 33*9880d681SAndroid Build Coastguard Worker// CHECK: add x5, x7, :dtprel_lo12:sym+1 34*9880d681SAndroid Build Coastguard Worker// CHECK-OBJ: 1c R_AARCH64_TLSLD_ADD_DTPREL_LO12 sym+1 35*9880d681SAndroid Build Coastguard Worker 36*9880d681SAndroid Build Coastguard Worker add x9, x12, #:dtprel_lo12_nc:sym+2 37*9880d681SAndroid Build Coastguard Worker// CHECK: add x9, x12, :dtprel_lo12_nc:sym+2 38*9880d681SAndroid Build Coastguard Worker// CHECK-OBJ:20 R_AARCH64_TLSLD_ADD_DTPREL_LO12_NC sym+2 39*9880d681SAndroid Build Coastguard Worker 40*9880d681SAndroid Build Coastguard Worker add x20, x30, #:tprel_lo12:sym+12 41*9880d681SAndroid Build Coastguard Worker// CHECK: add x20, x30, :tprel_lo12:sym+12 42*9880d681SAndroid Build Coastguard Worker// CHECK-OBJ: 24 R_AARCH64_TLSLE_ADD_TPREL_LO12 sym+12 43*9880d681SAndroid Build Coastguard Worker 44*9880d681SAndroid Build Coastguard Worker add x9, x12, #:tprel_lo12_nc:sym+54 45*9880d681SAndroid Build Coastguard Worker// CHECK: add x9, x12, :tprel_lo12_nc:sym+54 46*9880d681SAndroid Build Coastguard Worker// CHECK-OBJ: 28 R_AARCH64_TLSLE_ADD_TPREL_LO12_NC sym+54 47*9880d681SAndroid Build Coastguard Worker 48*9880d681SAndroid Build Coastguard Worker add x5, x0, #:tlsdesc_lo12:sym+70 49*9880d681SAndroid Build Coastguard Worker// CHECK: add x5, x0, :tlsdesc_lo12:sym+70 50*9880d681SAndroid Build Coastguard Worker// CHECK-OBJ: 2c R_AARCH64_TLSDESC_ADD_LO12_NC sym+70 51*9880d681SAndroid Build Coastguard Worker 52*9880d681SAndroid Build Coastguard Worker .hword sym + 4 - . 53*9880d681SAndroid Build Coastguard Worker// CHECK-OBJ: 30 R_AARCH64_PREL16 sym+4 54*9880d681SAndroid Build Coastguard Worker .word sym - . + 8 55*9880d681SAndroid Build Coastguard Worker// CHECK-OBJ: 32 R_AARCH64_PREL32 sym+8 56*9880d681SAndroid Build Coastguard Worker .xword sym-. 57*9880d681SAndroid Build Coastguard Worker// CHECK-OBJ: 36 R_AARCH64_PREL64 sym{{$}} 58*9880d681SAndroid Build Coastguard Worker 59*9880d681SAndroid Build Coastguard Worker .hword sym 60*9880d681SAndroid Build Coastguard Worker// CHECK-OBJ: 3e R_AARCH64_ABS16 sym 61*9880d681SAndroid Build Coastguard Worker .word sym+1 62*9880d681SAndroid Build Coastguard Worker// CHECK-OBJ: 40 R_AARCH64_ABS32 sym+1 63*9880d681SAndroid Build Coastguard Worker .xword sym+16 64*9880d681SAndroid Build Coastguard Worker// CHECK-OBJ: 44 R_AARCH64_ABS64 sym+16 65*9880d681SAndroid Build Coastguard Worker 66*9880d681SAndroid Build Coastguard Worker adrp x0, sym 67*9880d681SAndroid Build Coastguard Worker// CHECK: adrp x0, sym 68*9880d681SAndroid Build Coastguard Worker// CHECK-OBJ: 4c R_AARCH64_ADR_PREL_PG_HI21 sym 69*9880d681SAndroid Build Coastguard Worker 70*9880d681SAndroid Build Coastguard Worker adrp x15, :got:sym 71*9880d681SAndroid Build Coastguard Worker// CHECK: adrp x15, :got:sym 72*9880d681SAndroid Build Coastguard Worker// CHECK-OBJ: 50 R_AARCH64_ADR_GOT_PAGE sym 73*9880d681SAndroid Build Coastguard Worker 74*9880d681SAndroid Build Coastguard Worker adrp x29, :gottprel:sym 75*9880d681SAndroid Build Coastguard Worker// CHECK: adrp x29, :gottprel:sym 76*9880d681SAndroid Build Coastguard Worker// CHECK-OBJ: 54 R_AARCH64_TLSIE_ADR_GOTTPREL_PAGE21 sym 77*9880d681SAndroid Build Coastguard Worker 78*9880d681SAndroid Build Coastguard Worker adrp x2, :tlsdesc:sym 79*9880d681SAndroid Build Coastguard Worker// CHECK: adrp x2, :tlsdesc:sym 80*9880d681SAndroid Build Coastguard Worker// CHECK-OBJ: 58 R_AARCH64_TLSDESC_ADR_PAGE21 sym 81*9880d681SAndroid Build Coastguard Worker 82*9880d681SAndroid Build Coastguard Worker // LLVM is not competent enough to do this relocation because the 83*9880d681SAndroid Build Coastguard Worker // page boundary could occur anywhere after linking. A relocation 84*9880d681SAndroid Build Coastguard Worker // is needed. 85*9880d681SAndroid Build Coastguard Worker adrp x3, trickQuestion 86*9880d681SAndroid Build Coastguard Worker .global trickQuestion 87*9880d681SAndroid Build Coastguard WorkertrickQuestion: 88*9880d681SAndroid Build Coastguard Worker// CHECK: adrp x3, trickQuestion 89*9880d681SAndroid Build Coastguard Worker// CHECK-OBJ: 5c R_AARCH64_ADR_PREL_PG_HI21 trickQuestion 90*9880d681SAndroid Build Coastguard Worker 91*9880d681SAndroid Build Coastguard Worker ldrb w2, [x3, :lo12:sym] 92*9880d681SAndroid Build Coastguard Worker ldrsb w5, [x7, #:lo12:sym] 93*9880d681SAndroid Build Coastguard Worker ldrsb x11, [x13, :lo12:sym] 94*9880d681SAndroid Build Coastguard Worker ldr b17, [x19, #:lo12:sym] 95*9880d681SAndroid Build Coastguard Worker// CHECK: ldrb w2, [x3, :lo12:sym] 96*9880d681SAndroid Build Coastguard Worker// CHECK: ldrsb w5, [x7, :lo12:sym] 97*9880d681SAndroid Build Coastguard Worker// CHECK: ldrsb x11, [x13, :lo12:sym] 98*9880d681SAndroid Build Coastguard Worker// CHECK: ldr b17, [x19, :lo12:sym] 99*9880d681SAndroid Build Coastguard Worker// CHECK-OBJ: R_AARCH64_LDST8_ABS_LO12_NC sym 100*9880d681SAndroid Build Coastguard Worker// CHECK-OBJ: R_AARCH64_LDST8_ABS_LO12_NC sym 101*9880d681SAndroid Build Coastguard Worker// CHECK-OBJ: R_AARCH64_LDST8_ABS_LO12_NC sym 102*9880d681SAndroid Build Coastguard Worker// CHECK-OBJ: R_AARCH64_LDST8_ABS_LO12_NC sym 103*9880d681SAndroid Build Coastguard Worker 104*9880d681SAndroid Build Coastguard Worker ldrb w23, [x29, #:dtprel_lo12_nc:sym] 105*9880d681SAndroid Build Coastguard Worker ldrsb w23, [x19, #:dtprel_lo12:sym] 106*9880d681SAndroid Build Coastguard Worker ldrsb x17, [x13, :dtprel_lo12_nc:sym] 107*9880d681SAndroid Build Coastguard Worker ldr b11, [x7, #:dtprel_lo12:sym] 108*9880d681SAndroid Build Coastguard Worker// CHECK: ldrb w23, [x29, :dtprel_lo12_nc:sym] 109*9880d681SAndroid Build Coastguard Worker// CHECK: ldrsb w23, [x19, :dtprel_lo12:sym] 110*9880d681SAndroid Build Coastguard Worker// CHECK: ldrsb x17, [x13, :dtprel_lo12_nc:sym] 111*9880d681SAndroid Build Coastguard Worker// CHECK: ldr b11, [x7, :dtprel_lo12:sym] 112*9880d681SAndroid Build Coastguard Worker// CHECK-OBJ: R_AARCH64_TLSLD_LDST8_DTPREL_LO12_NC sym 113*9880d681SAndroid Build Coastguard Worker// CHECK-OBJ: R_AARCH64_TLSLD_LDST8_DTPREL_LO12 sym 114*9880d681SAndroid Build Coastguard Worker// CHECK-OBJ: R_AARCH64_TLSLD_LDST8_DTPREL_LO12_NC sym 115*9880d681SAndroid Build Coastguard Worker// CHECK-OBJ: R_AARCH64_TLSLD_LDST8_DTPREL_LO12 sym 116*9880d681SAndroid Build Coastguard Worker 117*9880d681SAndroid Build Coastguard Worker ldrb w1, [x2, :tprel_lo12:sym] 118*9880d681SAndroid Build Coastguard Worker ldrsb w3, [x4, #:tprel_lo12_nc:sym] 119*9880d681SAndroid Build Coastguard Worker ldrsb x5, [x6, :tprel_lo12:sym] 120*9880d681SAndroid Build Coastguard Worker ldr b7, [x8, #:tprel_lo12_nc:sym] 121*9880d681SAndroid Build Coastguard Worker// CHECK: ldrb w1, [x2, :tprel_lo12:sym] 122*9880d681SAndroid Build Coastguard Worker// CHECK: ldrsb w3, [x4, :tprel_lo12_nc:sym] 123*9880d681SAndroid Build Coastguard Worker// CHECK: ldrsb x5, [x6, :tprel_lo12:sym] 124*9880d681SAndroid Build Coastguard Worker// CHECK: ldr b7, [x8, :tprel_lo12_nc:sym] 125*9880d681SAndroid Build Coastguard Worker// CHECK-OBJ: R_AARCH64_TLSLE_LDST8_TPREL_LO12 sym 126*9880d681SAndroid Build Coastguard Worker// CHECK-OBJ: R_AARCH64_TLSLE_LDST8_TPREL_LO12_NC sym 127*9880d681SAndroid Build Coastguard Worker// CHECK-OBJ: R_AARCH64_TLSLE_LDST8_TPREL_LO12 sym 128*9880d681SAndroid Build Coastguard Worker// CHECK-OBJ: R_AARCH64_TLSLE_LDST8_TPREL_LO12_NC sym 129*9880d681SAndroid Build Coastguard Worker 130*9880d681SAndroid Build Coastguard Worker ldrh w2, [x3, #:lo12:sym] 131*9880d681SAndroid Build Coastguard Worker ldrsh w5, [x7, :lo12:sym] 132*9880d681SAndroid Build Coastguard Worker ldrsh x11, [x13, #:lo12:sym] 133*9880d681SAndroid Build Coastguard Worker ldr h17, [x19, :lo12:sym] 134*9880d681SAndroid Build Coastguard Worker// CHECK: ldrh w2, [x3, :lo12:sym] 135*9880d681SAndroid Build Coastguard Worker// CHECK: ldrsh w5, [x7, :lo12:sym] 136*9880d681SAndroid Build Coastguard Worker// CHECK: ldrsh x11, [x13, :lo12:sym] 137*9880d681SAndroid Build Coastguard Worker// CHECK: ldr h17, [x19, :lo12:sym] 138*9880d681SAndroid Build Coastguard Worker// CHECK-OBJ: R_AARCH64_LDST16_ABS_LO12_NC sym 139*9880d681SAndroid Build Coastguard Worker// CHECK-OBJ: R_AARCH64_LDST16_ABS_LO12_NC sym 140*9880d681SAndroid Build Coastguard Worker// CHECK-OBJ: R_AARCH64_LDST16_ABS_LO12_NC sym 141*9880d681SAndroid Build Coastguard Worker// CHECK-OBJ: R_AARCH64_LDST16_ABS_LO12_NC sym 142*9880d681SAndroid Build Coastguard Worker 143*9880d681SAndroid Build Coastguard Worker ldrh w23, [x29, #:dtprel_lo12_nc:sym] 144*9880d681SAndroid Build Coastguard Worker ldrsh w23, [x19, :dtprel_lo12:sym] 145*9880d681SAndroid Build Coastguard Worker ldrsh x17, [x13, :dtprel_lo12_nc:sym] 146*9880d681SAndroid Build Coastguard Worker ldr h11, [x7, #:dtprel_lo12:sym] 147*9880d681SAndroid Build Coastguard Worker// CHECK: ldrh w23, [x29, :dtprel_lo12_nc:sym] 148*9880d681SAndroid Build Coastguard Worker// CHECK: ldrsh w23, [x19, :dtprel_lo12:sym] 149*9880d681SAndroid Build Coastguard Worker// CHECK: ldrsh x17, [x13, :dtprel_lo12_nc:sym] 150*9880d681SAndroid Build Coastguard Worker// CHECK: ldr h11, [x7, :dtprel_lo12:sym] 151*9880d681SAndroid Build Coastguard Worker// CHECK-OBJ: R_AARCH64_TLSLD_LDST16_DTPREL_LO12_NC sym 152*9880d681SAndroid Build Coastguard Worker// CHECK-OBJ: R_AARCH64_TLSLD_LDST16_DTPREL_LO12 sym 153*9880d681SAndroid Build Coastguard Worker// CHECK-OBJ: R_AARCH64_TLSLD_LDST16_DTPREL_LO12_NC sym 154*9880d681SAndroid Build Coastguard Worker// CHECK-OBJ: R_AARCH64_TLSLD_LDST16_DTPREL_LO12 sym 155*9880d681SAndroid Build Coastguard Worker 156*9880d681SAndroid Build Coastguard Worker ldrh w1, [x2, :tprel_lo12:sym] 157*9880d681SAndroid Build Coastguard Worker ldrsh w3, [x4, #:tprel_lo12_nc:sym] 158*9880d681SAndroid Build Coastguard Worker ldrsh x5, [x6, :tprel_lo12:sym] 159*9880d681SAndroid Build Coastguard Worker ldr h7, [x8, #:tprel_lo12_nc:sym] 160*9880d681SAndroid Build Coastguard Worker// CHECK: ldrh w1, [x2, :tprel_lo12:sym] 161*9880d681SAndroid Build Coastguard Worker// CHECK: ldrsh w3, [x4, :tprel_lo12_nc:sym] 162*9880d681SAndroid Build Coastguard Worker// CHECK: ldrsh x5, [x6, :tprel_lo12:sym] 163*9880d681SAndroid Build Coastguard Worker// CHECK: ldr h7, [x8, :tprel_lo12_nc:sym] 164*9880d681SAndroid Build Coastguard Worker// CHECK-OBJ: R_AARCH64_TLSLE_LDST16_TPREL_LO12 sym 165*9880d681SAndroid Build Coastguard Worker// CHECK-OBJ: R_AARCH64_TLSLE_LDST16_TPREL_LO12_NC sym 166*9880d681SAndroid Build Coastguard Worker// CHECK-OBJ: R_AARCH64_TLSLE_LDST16_TPREL_LO12 sym 167*9880d681SAndroid Build Coastguard Worker// CHECK-OBJ: R_AARCH64_TLSLE_LDST16_TPREL_LO12_NC sym 168*9880d681SAndroid Build Coastguard Worker 169*9880d681SAndroid Build Coastguard Worker ldr w1, [x2, #:lo12:sym] 170*9880d681SAndroid Build Coastguard Worker ldrsw x3, [x4, #:lo12:sym] 171*9880d681SAndroid Build Coastguard Worker ldr s4, [x5, :lo12:sym] 172*9880d681SAndroid Build Coastguard Worker// CHECK: ldr w1, [x2, :lo12:sym] 173*9880d681SAndroid Build Coastguard Worker// CHECK: ldrsw x3, [x4, :lo12:sym] 174*9880d681SAndroid Build Coastguard Worker// CHECK: ldr s4, [x5, :lo12:sym] 175*9880d681SAndroid Build Coastguard Worker// CHECK-OBJ: R_AARCH64_LDST32_ABS_LO12_NC sym 176*9880d681SAndroid Build Coastguard Worker// CHECK-OBJ: R_AARCH64_LDST32_ABS_LO12_NC sym 177*9880d681SAndroid Build Coastguard Worker// CHECK-OBJ: R_AARCH64_LDST32_ABS_LO12_NC sym 178*9880d681SAndroid Build Coastguard Worker 179*9880d681SAndroid Build Coastguard Worker ldr w1, [x2, :dtprel_lo12:sym] 180*9880d681SAndroid Build Coastguard Worker ldrsw x3, [x4, #:dtprel_lo12_nc:sym] 181*9880d681SAndroid Build Coastguard Worker ldr s4, [x5, #:dtprel_lo12_nc:sym] 182*9880d681SAndroid Build Coastguard Worker// CHECK: ldr w1, [x2, :dtprel_lo12:sym] 183*9880d681SAndroid Build Coastguard Worker// CHECK: ldrsw x3, [x4, :dtprel_lo12_nc:sym] 184*9880d681SAndroid Build Coastguard Worker// CHECK: ldr s4, [x5, :dtprel_lo12_nc:sym] 185*9880d681SAndroid Build Coastguard Worker// CHECK-OBJ: R_AARCH64_TLSLD_LDST32_DTPREL_LO12 sym 186*9880d681SAndroid Build Coastguard Worker// CHECK-OBJ: R_AARCH64_TLSLD_LDST32_DTPREL_LO12_NC sym 187*9880d681SAndroid Build Coastguard Worker// CHECK-OBJ: R_AARCH64_TLSLD_LDST32_DTPREL_LO12_NC sym 188*9880d681SAndroid Build Coastguard Worker 189*9880d681SAndroid Build Coastguard Worker 190*9880d681SAndroid Build Coastguard Worker ldr w1, [x2, #:tprel_lo12:sym] 191*9880d681SAndroid Build Coastguard Worker ldrsw x3, [x4, :tprel_lo12_nc:sym] 192*9880d681SAndroid Build Coastguard Worker ldr s4, [x5, :tprel_lo12_nc:sym] 193*9880d681SAndroid Build Coastguard Worker// CHECK: ldr w1, [x2, :tprel_lo12:sym] 194*9880d681SAndroid Build Coastguard Worker// CHECK: ldrsw x3, [x4, :tprel_lo12_nc:sym] 195*9880d681SAndroid Build Coastguard Worker// CHECK: ldr s4, [x5, :tprel_lo12_nc:sym] 196*9880d681SAndroid Build Coastguard Worker// CHECK-OBJ: R_AARCH64_TLSLE_LDST32_TPREL_LO12 sym 197*9880d681SAndroid Build Coastguard Worker// CHECK-OBJ: R_AARCH64_TLSLE_LDST32_TPREL_LO12_NC sym 198*9880d681SAndroid Build Coastguard Worker// CHECK-OBJ: R_AARCH64_TLSLE_LDST32_TPREL_LO12_NC sym 199*9880d681SAndroid Build Coastguard Worker 200*9880d681SAndroid Build Coastguard Worker ldr x28, [x27, :lo12:sym] 201*9880d681SAndroid Build Coastguard Worker ldr d26, [x25, #:lo12:sym] 202*9880d681SAndroid Build Coastguard Worker// CHECK: ldr x28, [x27, :lo12:sym] 203*9880d681SAndroid Build Coastguard Worker// CHECK: ldr d26, [x25, :lo12:sym] 204*9880d681SAndroid Build Coastguard Worker// CHECK-OBJ: R_AARCH64_LDST64_ABS_LO12_NC sym 205*9880d681SAndroid Build Coastguard Worker// CHECK-OBJ: R_AARCH64_LDST64_ABS_LO12_NC sym 206*9880d681SAndroid Build Coastguard Worker 207*9880d681SAndroid Build Coastguard Worker ldr x24, [x23, #:got_lo12:sym] 208*9880d681SAndroid Build Coastguard Worker ldr d22, [x21, :got_lo12:sym] 209*9880d681SAndroid Build Coastguard Worker// CHECK: ldr x24, [x23, :got_lo12:sym] 210*9880d681SAndroid Build Coastguard Worker// CHECK: ldr d22, [x21, :got_lo12:sym] 211*9880d681SAndroid Build Coastguard Worker// CHECK-OBJ: R_AARCH64_LD64_GOT_LO12_NC sym 212*9880d681SAndroid Build Coastguard Worker// CHECK-OBJ: R_AARCH64_LD64_GOT_LO12_NC sym 213*9880d681SAndroid Build Coastguard Worker 214*9880d681SAndroid Build Coastguard Worker ldr x24, [x23, :dtprel_lo12_nc:sym] 215*9880d681SAndroid Build Coastguard Worker ldr d22, [x21, #:dtprel_lo12:sym] 216*9880d681SAndroid Build Coastguard Worker// CHECK: ldr x24, [x23, :dtprel_lo12_nc:sym] 217*9880d681SAndroid Build Coastguard Worker// CHECK: ldr d22, [x21, :dtprel_lo12:sym] 218*9880d681SAndroid Build Coastguard Worker// CHECK-OBJ: R_AARCH64_TLSLD_LDST64_DTPREL_LO12_NC sym 219*9880d681SAndroid Build Coastguard Worker// CHECK-OBJ: R_AARCH64_TLSLD_LDST64_DTPREL_LO12 sym 220*9880d681SAndroid Build Coastguard Worker 221*9880d681SAndroid Build Coastguard Worker ldr x24, [x23, #:tprel_lo12:sym] 222*9880d681SAndroid Build Coastguard Worker ldr d22, [x21, :tprel_lo12_nc:sym] 223*9880d681SAndroid Build Coastguard Worker// CHECK: ldr x24, [x23, :tprel_lo12:sym] 224*9880d681SAndroid Build Coastguard Worker// CHECK: ldr d22, [x21, :tprel_lo12_nc:sym] 225*9880d681SAndroid Build Coastguard Worker// CHECK-OBJ: R_AARCH64_TLSLE_LDST64_TPREL_LO12 sym 226*9880d681SAndroid Build Coastguard Worker// CHECK-OBJ: R_AARCH64_TLSLE_LDST64_TPREL_LO12_NC sym 227*9880d681SAndroid Build Coastguard Worker 228*9880d681SAndroid Build Coastguard Worker ldr x24, [x23, :gottprel_lo12:sym] 229*9880d681SAndroid Build Coastguard Worker ldr d22, [x21, #:gottprel_lo12:sym] 230*9880d681SAndroid Build Coastguard Worker// CHECK: ldr x24, [x23, :gottprel_lo12:sym] 231*9880d681SAndroid Build Coastguard Worker// CHECK: ldr d22, [x21, :gottprel_lo12:sym] 232*9880d681SAndroid Build Coastguard Worker// CHECK-OBJ: R_AARCH64_TLSIE_LD64_GOTTPREL_LO12_NC sym 233*9880d681SAndroid Build Coastguard Worker// CHECK-OBJ: R_AARCH64_TLSIE_LD64_GOTTPREL_LO12_NC sym 234*9880d681SAndroid Build Coastguard Worker 235*9880d681SAndroid Build Coastguard Worker ldr x24, [x23, #:tlsdesc_lo12:sym] 236*9880d681SAndroid Build Coastguard Worker ldr d22, [x21, :tlsdesc_lo12:sym] 237*9880d681SAndroid Build Coastguard Worker// CHECK: ldr x24, [x23, :tlsdesc_lo12:sym] 238*9880d681SAndroid Build Coastguard Worker// CHECK: ldr d22, [x21, :tlsdesc_lo12:sym] 239*9880d681SAndroid Build Coastguard Worker// CHECK-OBJ: R_AARCH64_TLSDESC_LD64_LO12_NC sym 240*9880d681SAndroid Build Coastguard Worker// CHECK-OBJ: R_AARCH64_TLSDESC_LD64_LO12_NC sym 241*9880d681SAndroid Build Coastguard Worker 242*9880d681SAndroid Build Coastguard Worker ldr q20, [x19, #:lo12:sym] 243*9880d681SAndroid Build Coastguard Worker// CHECK: ldr q20, [x19, :lo12:sym] 244*9880d681SAndroid Build Coastguard Worker// CHECK-OBJ: R_AARCH64_LDST128_ABS_LO12_NC sym 245*9880d681SAndroid Build Coastguard Worker 246*9880d681SAndroid Build Coastguard Worker// Since relocated instructions print without a '#', that syntax should 247*9880d681SAndroid Build Coastguard Worker// certainly be accepted when assembling. 248*9880d681SAndroid Build Coastguard Worker add x3, x5, :lo12:imm 249*9880d681SAndroid Build Coastguard Worker// CHECK: add x3, x5, :lo12:imm 250