1*21bea1a2SQiu Chaofan; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 2 2*21bea1a2SQiu Chaofan; RUN: llc -verify-machineinstrs -mcpu=pwr7 -ppc-asm-full-reg-names \ 3*21bea1a2SQiu Chaofan; RUN: -mtriple powerpc64-ibm-aix-xcoff -code-model=large < %s | \ 4*21bea1a2SQiu Chaofan; RUN: FileCheck %s -check-prefix=LARGE64 5*21bea1a2SQiu Chaofan; RUN: llc -verify-machineinstrs -mcpu=pwr7 -ppc-asm-full-reg-names \ 6*21bea1a2SQiu Chaofan; RUN: -mtriple powerpc64-ibm-aix-xcoff -code-model=small < %s | \ 7*21bea1a2SQiu Chaofan; RUN: FileCheck %s -check-prefix=SMALL64 8*21bea1a2SQiu Chaofan; RUN: llc -verify-machineinstrs -mcpu=pwr7 -ppc-asm-full-reg-names \ 9*21bea1a2SQiu Chaofan; RUN: -mtriple powerpc-ibm-aix-xcoff -code-model=large < %s | \ 10*21bea1a2SQiu Chaofan; RUN: FileCheck %s -check-prefix=LARGE32 11*21bea1a2SQiu Chaofan; RUN: llc -verify-machineinstrs -mcpu=pwr7 -ppc-asm-full-reg-names \ 12*21bea1a2SQiu Chaofan; RUN: -mtriple powerpc-ibm-aix-xcoff -code-model=small < %s | \ 13*21bea1a2SQiu Chaofan; RUN: FileCheck %s -check-prefix=SMALL32 14*21bea1a2SQiu Chaofan 15*21bea1a2SQiu Chaofan@global_int_zero = thread_local(initialexec) global i32 0, align 4 16*21bea1a2SQiu Chaofan@global_int_nonzero = thread_local(initialexec) global i32 1, align 4 17*21bea1a2SQiu Chaofan@intern_int_zero = internal thread_local(initialexec) global i32 0, align 4 18*21bea1a2SQiu Chaofan@intern_int_nonzero = internal thread_local(initialexec) global i32 1, align 4 19*21bea1a2SQiu Chaofan 20*21bea1a2SQiu Chaofan@global_long_zero = thread_local(initialexec) global i64 0, align 8 21*21bea1a2SQiu Chaofan@global_long_nonzero = thread_local(initialexec) global i64 1, align 8 22*21bea1a2SQiu Chaofan@intern_long_zero = internal thread_local(initialexec) global i64 0, align 8 23*21bea1a2SQiu Chaofan@intern_long_nonzero = internal thread_local(initialexec) global i64 1, align 8 24*21bea1a2SQiu Chaofan 25*21bea1a2SQiu Chaofan@global_float_zero = thread_local(initialexec) global float 0.000000, align 4 26*21bea1a2SQiu Chaofan@global_float_nonzero = thread_local(initialexec) global float 1.000000, align 4 27*21bea1a2SQiu Chaofan@intern_float_zero = internal thread_local(initialexec) global float 0.000000, align 4 28*21bea1a2SQiu Chaofan@intern_float_nonzero = internal thread_local(initialexec) global float 1.000000, align 4 29*21bea1a2SQiu Chaofan 30*21bea1a2SQiu Chaofan@global_double_zero = thread_local(initialexec) global double 0.000000, align 8 31*21bea1a2SQiu Chaofan@global_double_nonzero = thread_local(initialexec) global double 1.000000, align 8 32*21bea1a2SQiu Chaofan@intern_double_zero = internal thread_local(initialexec) global double 0.000000, align 8 33*21bea1a2SQiu Chaofan@intern_double_nonzero = internal thread_local(initialexec) global double 1.000000, align 8 34*21bea1a2SQiu Chaofan 35*21bea1a2SQiu Chaofandefine void @store_global_int_zero(i32 noundef signext %i) { 36*21bea1a2SQiu Chaofan; LARGE64-LABEL: store_global_int_zero: 37*21bea1a2SQiu Chaofan; LARGE64: # %bb.0: # %entry 38*21bea1a2SQiu Chaofan; LARGE64-NEXT: addis r4, L..C0@u(r2) 39*21bea1a2SQiu Chaofan; LARGE64-NEXT: ld r4, L..C0@l(r4) 40*21bea1a2SQiu Chaofan; LARGE64-NEXT: stwx r3, r13, r4 41*21bea1a2SQiu Chaofan; LARGE64-NEXT: blr 42*21bea1a2SQiu Chaofan; 43*21bea1a2SQiu Chaofan; SMALL64-LABEL: store_global_int_zero: 44*21bea1a2SQiu Chaofan; SMALL64: # %bb.0: # %entry 45*21bea1a2SQiu Chaofan; SMALL64-NEXT: ld r4, L..C0(r2) # target-flags(ppc-tprel) @global_int_zero 46*21bea1a2SQiu Chaofan; SMALL64-NEXT: stwx r3, r13, r4 47*21bea1a2SQiu Chaofan; SMALL64-NEXT: blr 48*21bea1a2SQiu Chaofan; 49*21bea1a2SQiu Chaofan; LARGE32-LABEL: store_global_int_zero: 50*21bea1a2SQiu Chaofan; LARGE32: # %bb.0: # %entry 51*21bea1a2SQiu Chaofan; LARGE32-NEXT: mflr r0 52*21bea1a2SQiu Chaofan; LARGE32-NEXT: stwu r1, -32(r1) 53*21bea1a2SQiu Chaofan; LARGE32-NEXT: stw r0, 40(r1) 54*21bea1a2SQiu Chaofan; LARGE32-NEXT: mr r4, r3 55*21bea1a2SQiu Chaofan; LARGE32-NEXT: addis r3, L..C0@u(r2) 56*21bea1a2SQiu Chaofan; LARGE32-NEXT: lwz r5, L..C0@l(r3) 57*21bea1a2SQiu Chaofan; LARGE32-NEXT: bla .__get_tpointer[PR] 58*21bea1a2SQiu Chaofan; LARGE32-NEXT: stwx r4, r3, r5 59*21bea1a2SQiu Chaofan; LARGE32-NEXT: addi r1, r1, 32 60*21bea1a2SQiu Chaofan; LARGE32-NEXT: lwz r0, 8(r1) 61*21bea1a2SQiu Chaofan; LARGE32-NEXT: mtlr r0 62*21bea1a2SQiu Chaofan; LARGE32-NEXT: blr 63*21bea1a2SQiu Chaofan; 64*21bea1a2SQiu Chaofan; SMALL32-LABEL: store_global_int_zero: 65*21bea1a2SQiu Chaofan; SMALL32: # %bb.0: # %entry 66*21bea1a2SQiu Chaofan; SMALL32-NEXT: mflr r0 67*21bea1a2SQiu Chaofan; SMALL32-NEXT: stwu r1, -32(r1) 68*21bea1a2SQiu Chaofan; SMALL32-NEXT: lwz r5, L..C0(r2) # target-flags(ppc-tprel) @global_int_zero 69*21bea1a2SQiu Chaofan; SMALL32-NEXT: mr r4, r3 70*21bea1a2SQiu Chaofan; SMALL32-NEXT: bla .__get_tpointer[PR] 71*21bea1a2SQiu Chaofan; SMALL32-NEXT: stw r0, 40(r1) 72*21bea1a2SQiu Chaofan; SMALL32-NEXT: stwx r4, r3, r5 73*21bea1a2SQiu Chaofan; SMALL32-NEXT: addi r1, r1, 32 74*21bea1a2SQiu Chaofan; SMALL32-NEXT: lwz r0, 8(r1) 75*21bea1a2SQiu Chaofan; SMALL32-NEXT: mtlr r0 76*21bea1a2SQiu Chaofan; SMALL32-NEXT: blr 77*21bea1a2SQiu Chaofanentry: 78*21bea1a2SQiu Chaofan %addr = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @global_int_zero) 79*21bea1a2SQiu Chaofan store i32 %i, ptr %addr, align 4 80*21bea1a2SQiu Chaofan ret void 81*21bea1a2SQiu Chaofan} 82*21bea1a2SQiu Chaofan 83*21bea1a2SQiu Chaofandefine void @store_global_int_nonzero(i32 noundef signext %i) { 84*21bea1a2SQiu Chaofan; LARGE64-LABEL: store_global_int_nonzero: 85*21bea1a2SQiu Chaofan; LARGE64: # %bb.0: # %entry 86*21bea1a2SQiu Chaofan; LARGE64-NEXT: addis r4, L..C1@u(r2) 87*21bea1a2SQiu Chaofan; LARGE64-NEXT: ld r4, L..C1@l(r4) 88*21bea1a2SQiu Chaofan; LARGE64-NEXT: stwx r3, r13, r4 89*21bea1a2SQiu Chaofan; LARGE64-NEXT: blr 90*21bea1a2SQiu Chaofan; 91*21bea1a2SQiu Chaofan; SMALL64-LABEL: store_global_int_nonzero: 92*21bea1a2SQiu Chaofan; SMALL64: # %bb.0: # %entry 93*21bea1a2SQiu Chaofan; SMALL64-NEXT: ld r4, L..C1(r2) # target-flags(ppc-tprel) @global_int_nonzero 94*21bea1a2SQiu Chaofan; SMALL64-NEXT: stwx r3, r13, r4 95*21bea1a2SQiu Chaofan; SMALL64-NEXT: blr 96*21bea1a2SQiu Chaofan; 97*21bea1a2SQiu Chaofan; LARGE32-LABEL: store_global_int_nonzero: 98*21bea1a2SQiu Chaofan; LARGE32: # %bb.0: # %entry 99*21bea1a2SQiu Chaofan; LARGE32-NEXT: mflr r0 100*21bea1a2SQiu Chaofan; LARGE32-NEXT: stwu r1, -32(r1) 101*21bea1a2SQiu Chaofan; LARGE32-NEXT: stw r0, 40(r1) 102*21bea1a2SQiu Chaofan; LARGE32-NEXT: mr r4, r3 103*21bea1a2SQiu Chaofan; LARGE32-NEXT: addis r3, L..C1@u(r2) 104*21bea1a2SQiu Chaofan; LARGE32-NEXT: lwz r5, L..C1@l(r3) 105*21bea1a2SQiu Chaofan; LARGE32-NEXT: bla .__get_tpointer[PR] 106*21bea1a2SQiu Chaofan; LARGE32-NEXT: stwx r4, r3, r5 107*21bea1a2SQiu Chaofan; LARGE32-NEXT: addi r1, r1, 32 108*21bea1a2SQiu Chaofan; LARGE32-NEXT: lwz r0, 8(r1) 109*21bea1a2SQiu Chaofan; LARGE32-NEXT: mtlr r0 110*21bea1a2SQiu Chaofan; LARGE32-NEXT: blr 111*21bea1a2SQiu Chaofan; 112*21bea1a2SQiu Chaofan; SMALL32-LABEL: store_global_int_nonzero: 113*21bea1a2SQiu Chaofan; SMALL32: # %bb.0: # %entry 114*21bea1a2SQiu Chaofan; SMALL32-NEXT: mflr r0 115*21bea1a2SQiu Chaofan; SMALL32-NEXT: stwu r1, -32(r1) 116*21bea1a2SQiu Chaofan; SMALL32-NEXT: lwz r5, L..C1(r2) # target-flags(ppc-tprel) @global_int_nonzero 117*21bea1a2SQiu Chaofan; SMALL32-NEXT: mr r4, r3 118*21bea1a2SQiu Chaofan; SMALL32-NEXT: bla .__get_tpointer[PR] 119*21bea1a2SQiu Chaofan; SMALL32-NEXT: stw r0, 40(r1) 120*21bea1a2SQiu Chaofan; SMALL32-NEXT: stwx r4, r3, r5 121*21bea1a2SQiu Chaofan; SMALL32-NEXT: addi r1, r1, 32 122*21bea1a2SQiu Chaofan; SMALL32-NEXT: lwz r0, 8(r1) 123*21bea1a2SQiu Chaofan; SMALL32-NEXT: mtlr r0 124*21bea1a2SQiu Chaofan; SMALL32-NEXT: blr 125*21bea1a2SQiu Chaofanentry: 126*21bea1a2SQiu Chaofan %addr = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @global_int_nonzero) 127*21bea1a2SQiu Chaofan store i32 %i, ptr %addr, align 4 128*21bea1a2SQiu Chaofan ret void 129*21bea1a2SQiu Chaofan} 130*21bea1a2SQiu Chaofan 131*21bea1a2SQiu Chaofandefine void @store_intern_int_zero(i32 noundef signext %i) { 132*21bea1a2SQiu Chaofan; LARGE64-LABEL: store_intern_int_zero: 133*21bea1a2SQiu Chaofan; LARGE64: # %bb.0: # %entry 134*21bea1a2SQiu Chaofan; LARGE64-NEXT: addis r4, L..C2@u(r2) 135*21bea1a2SQiu Chaofan; LARGE64-NEXT: ld r4, L..C2@l(r4) 136*21bea1a2SQiu Chaofan; LARGE64-NEXT: stwx r3, r13, r4 137*21bea1a2SQiu Chaofan; LARGE64-NEXT: blr 138*21bea1a2SQiu Chaofan; 139*21bea1a2SQiu Chaofan; SMALL64-LABEL: store_intern_int_zero: 140*21bea1a2SQiu Chaofan; SMALL64: # %bb.0: # %entry 141*21bea1a2SQiu Chaofan; SMALL64-NEXT: ld r4, L..C2(r2) # target-flags(ppc-tprel) @intern_int_zero 142*21bea1a2SQiu Chaofan; SMALL64-NEXT: stwx r3, r13, r4 143*21bea1a2SQiu Chaofan; SMALL64-NEXT: blr 144*21bea1a2SQiu Chaofan; 145*21bea1a2SQiu Chaofan; LARGE32-LABEL: store_intern_int_zero: 146*21bea1a2SQiu Chaofan; LARGE32: # %bb.0: # %entry 147*21bea1a2SQiu Chaofan; LARGE32-NEXT: mflr r0 148*21bea1a2SQiu Chaofan; LARGE32-NEXT: stwu r1, -32(r1) 149*21bea1a2SQiu Chaofan; LARGE32-NEXT: stw r0, 40(r1) 150*21bea1a2SQiu Chaofan; LARGE32-NEXT: mr r4, r3 151*21bea1a2SQiu Chaofan; LARGE32-NEXT: addis r3, L..C2@u(r2) 152*21bea1a2SQiu Chaofan; LARGE32-NEXT: lwz r5, L..C2@l(r3) 153*21bea1a2SQiu Chaofan; LARGE32-NEXT: bla .__get_tpointer[PR] 154*21bea1a2SQiu Chaofan; LARGE32-NEXT: stwx r4, r3, r5 155*21bea1a2SQiu Chaofan; LARGE32-NEXT: addi r1, r1, 32 156*21bea1a2SQiu Chaofan; LARGE32-NEXT: lwz r0, 8(r1) 157*21bea1a2SQiu Chaofan; LARGE32-NEXT: mtlr r0 158*21bea1a2SQiu Chaofan; LARGE32-NEXT: blr 159*21bea1a2SQiu Chaofan; 160*21bea1a2SQiu Chaofan; SMALL32-LABEL: store_intern_int_zero: 161*21bea1a2SQiu Chaofan; SMALL32: # %bb.0: # %entry 162*21bea1a2SQiu Chaofan; SMALL32-NEXT: mflr r0 163*21bea1a2SQiu Chaofan; SMALL32-NEXT: stwu r1, -32(r1) 164*21bea1a2SQiu Chaofan; SMALL32-NEXT: lwz r5, L..C2(r2) # target-flags(ppc-tprel) @intern_int_zero 165*21bea1a2SQiu Chaofan; SMALL32-NEXT: mr r4, r3 166*21bea1a2SQiu Chaofan; SMALL32-NEXT: bla .__get_tpointer[PR] 167*21bea1a2SQiu Chaofan; SMALL32-NEXT: stw r0, 40(r1) 168*21bea1a2SQiu Chaofan; SMALL32-NEXT: stwx r4, r3, r5 169*21bea1a2SQiu Chaofan; SMALL32-NEXT: addi r1, r1, 32 170*21bea1a2SQiu Chaofan; SMALL32-NEXT: lwz r0, 8(r1) 171*21bea1a2SQiu Chaofan; SMALL32-NEXT: mtlr r0 172*21bea1a2SQiu Chaofan; SMALL32-NEXT: blr 173*21bea1a2SQiu Chaofanentry: 174*21bea1a2SQiu Chaofan %addr = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @intern_int_zero) 175*21bea1a2SQiu Chaofan store i32 %i, ptr %addr, align 4 176*21bea1a2SQiu Chaofan ret void 177*21bea1a2SQiu Chaofan} 178*21bea1a2SQiu Chaofan 179*21bea1a2SQiu Chaofandefine void @store_intern_int_nonzero(i32 noundef signext %i) { 180*21bea1a2SQiu Chaofan; LARGE64-LABEL: store_intern_int_nonzero: 181*21bea1a2SQiu Chaofan; LARGE64: # %bb.0: # %entry 182*21bea1a2SQiu Chaofan; LARGE64-NEXT: addis r4, L..C3@u(r2) 183*21bea1a2SQiu Chaofan; LARGE64-NEXT: ld r4, L..C3@l(r4) 184*21bea1a2SQiu Chaofan; LARGE64-NEXT: stwx r3, r13, r4 185*21bea1a2SQiu Chaofan; LARGE64-NEXT: blr 186*21bea1a2SQiu Chaofan; 187*21bea1a2SQiu Chaofan; SMALL64-LABEL: store_intern_int_nonzero: 188*21bea1a2SQiu Chaofan; SMALL64: # %bb.0: # %entry 189*21bea1a2SQiu Chaofan; SMALL64-NEXT: ld r4, L..C3(r2) # target-flags(ppc-tprel) @intern_int_nonzero 190*21bea1a2SQiu Chaofan; SMALL64-NEXT: stwx r3, r13, r4 191*21bea1a2SQiu Chaofan; SMALL64-NEXT: blr 192*21bea1a2SQiu Chaofan; 193*21bea1a2SQiu Chaofan; LARGE32-LABEL: store_intern_int_nonzero: 194*21bea1a2SQiu Chaofan; LARGE32: # %bb.0: # %entry 195*21bea1a2SQiu Chaofan; LARGE32-NEXT: mflr r0 196*21bea1a2SQiu Chaofan; LARGE32-NEXT: stwu r1, -32(r1) 197*21bea1a2SQiu Chaofan; LARGE32-NEXT: stw r0, 40(r1) 198*21bea1a2SQiu Chaofan; LARGE32-NEXT: mr r4, r3 199*21bea1a2SQiu Chaofan; LARGE32-NEXT: addis r3, L..C3@u(r2) 200*21bea1a2SQiu Chaofan; LARGE32-NEXT: lwz r5, L..C3@l(r3) 201*21bea1a2SQiu Chaofan; LARGE32-NEXT: bla .__get_tpointer[PR] 202*21bea1a2SQiu Chaofan; LARGE32-NEXT: stwx r4, r3, r5 203*21bea1a2SQiu Chaofan; LARGE32-NEXT: addi r1, r1, 32 204*21bea1a2SQiu Chaofan; LARGE32-NEXT: lwz r0, 8(r1) 205*21bea1a2SQiu Chaofan; LARGE32-NEXT: mtlr r0 206*21bea1a2SQiu Chaofan; LARGE32-NEXT: blr 207*21bea1a2SQiu Chaofan; 208*21bea1a2SQiu Chaofan; SMALL32-LABEL: store_intern_int_nonzero: 209*21bea1a2SQiu Chaofan; SMALL32: # %bb.0: # %entry 210*21bea1a2SQiu Chaofan; SMALL32-NEXT: mflr r0 211*21bea1a2SQiu Chaofan; SMALL32-NEXT: stwu r1, -32(r1) 212*21bea1a2SQiu Chaofan; SMALL32-NEXT: lwz r5, L..C3(r2) # target-flags(ppc-tprel) @intern_int_nonzero 213*21bea1a2SQiu Chaofan; SMALL32-NEXT: mr r4, r3 214*21bea1a2SQiu Chaofan; SMALL32-NEXT: bla .__get_tpointer[PR] 215*21bea1a2SQiu Chaofan; SMALL32-NEXT: stw r0, 40(r1) 216*21bea1a2SQiu Chaofan; SMALL32-NEXT: stwx r4, r3, r5 217*21bea1a2SQiu Chaofan; SMALL32-NEXT: addi r1, r1, 32 218*21bea1a2SQiu Chaofan; SMALL32-NEXT: lwz r0, 8(r1) 219*21bea1a2SQiu Chaofan; SMALL32-NEXT: mtlr r0 220*21bea1a2SQiu Chaofan; SMALL32-NEXT: blr 221*21bea1a2SQiu Chaofanentry: 222*21bea1a2SQiu Chaofan %addr = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @intern_int_nonzero) 223*21bea1a2SQiu Chaofan store i32 %i, ptr %addr, align 4 224*21bea1a2SQiu Chaofan ret void 225*21bea1a2SQiu Chaofan} 226*21bea1a2SQiu Chaofan 227*21bea1a2SQiu Chaofandefine signext i32 @load_global_int_zero() { 228*21bea1a2SQiu Chaofan; LARGE64-LABEL: load_global_int_zero: 229*21bea1a2SQiu Chaofan; LARGE64: # %bb.0: # %entry 230*21bea1a2SQiu Chaofan; LARGE64-NEXT: addis r3, L..C0@u(r2) 231*21bea1a2SQiu Chaofan; LARGE64-NEXT: ld r3, L..C0@l(r3) 232*21bea1a2SQiu Chaofan; LARGE64-NEXT: lwax r3, r13, r3 233*21bea1a2SQiu Chaofan; LARGE64-NEXT: blr 234*21bea1a2SQiu Chaofan; 235*21bea1a2SQiu Chaofan; SMALL64-LABEL: load_global_int_zero: 236*21bea1a2SQiu Chaofan; SMALL64: # %bb.0: # %entry 237*21bea1a2SQiu Chaofan; SMALL64-NEXT: ld r3, L..C0(r2) # target-flags(ppc-tprel) @global_int_zero 238*21bea1a2SQiu Chaofan; SMALL64-NEXT: lwax r3, r13, r3 239*21bea1a2SQiu Chaofan; SMALL64-NEXT: blr 240*21bea1a2SQiu Chaofan; 241*21bea1a2SQiu Chaofan; LARGE32-LABEL: load_global_int_zero: 242*21bea1a2SQiu Chaofan; LARGE32: # %bb.0: # %entry 243*21bea1a2SQiu Chaofan; LARGE32-NEXT: mflr r0 244*21bea1a2SQiu Chaofan; LARGE32-NEXT: stwu r1, -32(r1) 245*21bea1a2SQiu Chaofan; LARGE32-NEXT: stw r0, 40(r1) 246*21bea1a2SQiu Chaofan; LARGE32-NEXT: addis r3, L..C0@u(r2) 247*21bea1a2SQiu Chaofan; LARGE32-NEXT: lwz r4, L..C0@l(r3) 248*21bea1a2SQiu Chaofan; LARGE32-NEXT: bla .__get_tpointer[PR] 249*21bea1a2SQiu Chaofan; LARGE32-NEXT: lwzx r3, r3, r4 250*21bea1a2SQiu Chaofan; LARGE32-NEXT: addi r1, r1, 32 251*21bea1a2SQiu Chaofan; LARGE32-NEXT: lwz r0, 8(r1) 252*21bea1a2SQiu Chaofan; LARGE32-NEXT: mtlr r0 253*21bea1a2SQiu Chaofan; LARGE32-NEXT: blr 254*21bea1a2SQiu Chaofan; 255*21bea1a2SQiu Chaofan; SMALL32-LABEL: load_global_int_zero: 256*21bea1a2SQiu Chaofan; SMALL32: # %bb.0: # %entry 257*21bea1a2SQiu Chaofan; SMALL32-NEXT: mflr r0 258*21bea1a2SQiu Chaofan; SMALL32-NEXT: stwu r1, -32(r1) 259*21bea1a2SQiu Chaofan; SMALL32-NEXT: lwz r4, L..C0(r2) # target-flags(ppc-tprel) @global_int_zero 260*21bea1a2SQiu Chaofan; SMALL32-NEXT: stw r0, 40(r1) 261*21bea1a2SQiu Chaofan; SMALL32-NEXT: bla .__get_tpointer[PR] 262*21bea1a2SQiu Chaofan; SMALL32-NEXT: lwzx r3, r3, r4 263*21bea1a2SQiu Chaofan; SMALL32-NEXT: addi r1, r1, 32 264*21bea1a2SQiu Chaofan; SMALL32-NEXT: lwz r0, 8(r1) 265*21bea1a2SQiu Chaofan; SMALL32-NEXT: mtlr r0 266*21bea1a2SQiu Chaofan; SMALL32-NEXT: blr 267*21bea1a2SQiu Chaofanentry: 268*21bea1a2SQiu Chaofan %addr = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @global_int_zero) 269*21bea1a2SQiu Chaofan %val = load i32, ptr %addr, align 4 270*21bea1a2SQiu Chaofan ret i32 %val 271*21bea1a2SQiu Chaofan} 272*21bea1a2SQiu Chaofan 273*21bea1a2SQiu Chaofandefine signext i32 @load_global_int_nonzero() { 274*21bea1a2SQiu Chaofan; LARGE64-LABEL: load_global_int_nonzero: 275*21bea1a2SQiu Chaofan; LARGE64: # %bb.0: # %entry 276*21bea1a2SQiu Chaofan; LARGE64-NEXT: addis r3, L..C1@u(r2) 277*21bea1a2SQiu Chaofan; LARGE64-NEXT: ld r3, L..C1@l(r3) 278*21bea1a2SQiu Chaofan; LARGE64-NEXT: lwax r3, r13, r3 279*21bea1a2SQiu Chaofan; LARGE64-NEXT: blr 280*21bea1a2SQiu Chaofan; 281*21bea1a2SQiu Chaofan; SMALL64-LABEL: load_global_int_nonzero: 282*21bea1a2SQiu Chaofan; SMALL64: # %bb.0: # %entry 283*21bea1a2SQiu Chaofan; SMALL64-NEXT: ld r3, L..C1(r2) # target-flags(ppc-tprel) @global_int_nonzero 284*21bea1a2SQiu Chaofan; SMALL64-NEXT: lwax r3, r13, r3 285*21bea1a2SQiu Chaofan; SMALL64-NEXT: blr 286*21bea1a2SQiu Chaofan; 287*21bea1a2SQiu Chaofan; LARGE32-LABEL: load_global_int_nonzero: 288*21bea1a2SQiu Chaofan; LARGE32: # %bb.0: # %entry 289*21bea1a2SQiu Chaofan; LARGE32-NEXT: mflr r0 290*21bea1a2SQiu Chaofan; LARGE32-NEXT: stwu r1, -32(r1) 291*21bea1a2SQiu Chaofan; LARGE32-NEXT: stw r0, 40(r1) 292*21bea1a2SQiu Chaofan; LARGE32-NEXT: addis r3, L..C1@u(r2) 293*21bea1a2SQiu Chaofan; LARGE32-NEXT: lwz r4, L..C1@l(r3) 294*21bea1a2SQiu Chaofan; LARGE32-NEXT: bla .__get_tpointer[PR] 295*21bea1a2SQiu Chaofan; LARGE32-NEXT: lwzx r3, r3, r4 296*21bea1a2SQiu Chaofan; LARGE32-NEXT: addi r1, r1, 32 297*21bea1a2SQiu Chaofan; LARGE32-NEXT: lwz r0, 8(r1) 298*21bea1a2SQiu Chaofan; LARGE32-NEXT: mtlr r0 299*21bea1a2SQiu Chaofan; LARGE32-NEXT: blr 300*21bea1a2SQiu Chaofan; 301*21bea1a2SQiu Chaofan; SMALL32-LABEL: load_global_int_nonzero: 302*21bea1a2SQiu Chaofan; SMALL32: # %bb.0: # %entry 303*21bea1a2SQiu Chaofan; SMALL32-NEXT: mflr r0 304*21bea1a2SQiu Chaofan; SMALL32-NEXT: stwu r1, -32(r1) 305*21bea1a2SQiu Chaofan; SMALL32-NEXT: lwz r4, L..C1(r2) # target-flags(ppc-tprel) @global_int_nonzero 306*21bea1a2SQiu Chaofan; SMALL32-NEXT: stw r0, 40(r1) 307*21bea1a2SQiu Chaofan; SMALL32-NEXT: bla .__get_tpointer[PR] 308*21bea1a2SQiu Chaofan; SMALL32-NEXT: lwzx r3, r3, r4 309*21bea1a2SQiu Chaofan; SMALL32-NEXT: addi r1, r1, 32 310*21bea1a2SQiu Chaofan; SMALL32-NEXT: lwz r0, 8(r1) 311*21bea1a2SQiu Chaofan; SMALL32-NEXT: mtlr r0 312*21bea1a2SQiu Chaofan; SMALL32-NEXT: blr 313*21bea1a2SQiu Chaofanentry: 314*21bea1a2SQiu Chaofan %addr = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @global_int_nonzero) 315*21bea1a2SQiu Chaofan %val = load i32, ptr %addr, align 4 316*21bea1a2SQiu Chaofan ret i32 %val 317*21bea1a2SQiu Chaofan} 318*21bea1a2SQiu Chaofan 319*21bea1a2SQiu Chaofandefine signext i32 @load_intern_int_zero() { 320*21bea1a2SQiu Chaofan; LARGE64-LABEL: load_intern_int_zero: 321*21bea1a2SQiu Chaofan; LARGE64: # %bb.0: # %entry 322*21bea1a2SQiu Chaofan; LARGE64-NEXT: addis r3, L..C2@u(r2) 323*21bea1a2SQiu Chaofan; LARGE64-NEXT: ld r3, L..C2@l(r3) 324*21bea1a2SQiu Chaofan; LARGE64-NEXT: lwax r3, r13, r3 325*21bea1a2SQiu Chaofan; LARGE64-NEXT: blr 326*21bea1a2SQiu Chaofan; 327*21bea1a2SQiu Chaofan; SMALL64-LABEL: load_intern_int_zero: 328*21bea1a2SQiu Chaofan; SMALL64: # %bb.0: # %entry 329*21bea1a2SQiu Chaofan; SMALL64-NEXT: ld r3, L..C2(r2) # target-flags(ppc-tprel) @intern_int_zero 330*21bea1a2SQiu Chaofan; SMALL64-NEXT: lwax r3, r13, r3 331*21bea1a2SQiu Chaofan; SMALL64-NEXT: blr 332*21bea1a2SQiu Chaofan; 333*21bea1a2SQiu Chaofan; LARGE32-LABEL: load_intern_int_zero: 334*21bea1a2SQiu Chaofan; LARGE32: # %bb.0: # %entry 335*21bea1a2SQiu Chaofan; LARGE32-NEXT: mflr r0 336*21bea1a2SQiu Chaofan; LARGE32-NEXT: stwu r1, -32(r1) 337*21bea1a2SQiu Chaofan; LARGE32-NEXT: stw r0, 40(r1) 338*21bea1a2SQiu Chaofan; LARGE32-NEXT: addis r3, L..C2@u(r2) 339*21bea1a2SQiu Chaofan; LARGE32-NEXT: lwz r4, L..C2@l(r3) 340*21bea1a2SQiu Chaofan; LARGE32-NEXT: bla .__get_tpointer[PR] 341*21bea1a2SQiu Chaofan; LARGE32-NEXT: lwzx r3, r3, r4 342*21bea1a2SQiu Chaofan; LARGE32-NEXT: addi r1, r1, 32 343*21bea1a2SQiu Chaofan; LARGE32-NEXT: lwz r0, 8(r1) 344*21bea1a2SQiu Chaofan; LARGE32-NEXT: mtlr r0 345*21bea1a2SQiu Chaofan; LARGE32-NEXT: blr 346*21bea1a2SQiu Chaofan; 347*21bea1a2SQiu Chaofan; SMALL32-LABEL: load_intern_int_zero: 348*21bea1a2SQiu Chaofan; SMALL32: # %bb.0: # %entry 349*21bea1a2SQiu Chaofan; SMALL32-NEXT: mflr r0 350*21bea1a2SQiu Chaofan; SMALL32-NEXT: stwu r1, -32(r1) 351*21bea1a2SQiu Chaofan; SMALL32-NEXT: lwz r4, L..C2(r2) # target-flags(ppc-tprel) @intern_int_zero 352*21bea1a2SQiu Chaofan; SMALL32-NEXT: stw r0, 40(r1) 353*21bea1a2SQiu Chaofan; SMALL32-NEXT: bla .__get_tpointer[PR] 354*21bea1a2SQiu Chaofan; SMALL32-NEXT: lwzx r3, r3, r4 355*21bea1a2SQiu Chaofan; SMALL32-NEXT: addi r1, r1, 32 356*21bea1a2SQiu Chaofan; SMALL32-NEXT: lwz r0, 8(r1) 357*21bea1a2SQiu Chaofan; SMALL32-NEXT: mtlr r0 358*21bea1a2SQiu Chaofan; SMALL32-NEXT: blr 359*21bea1a2SQiu Chaofanentry: 360*21bea1a2SQiu Chaofan %addr = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @intern_int_zero) 361*21bea1a2SQiu Chaofan %val = load i32, ptr %addr, align 4 362*21bea1a2SQiu Chaofan ret i32 %val 363*21bea1a2SQiu Chaofan} 364*21bea1a2SQiu Chaofan 365*21bea1a2SQiu Chaofandefine signext i32 @load_intern_int_nonzero() { 366*21bea1a2SQiu Chaofan; LARGE64-LABEL: load_intern_int_nonzero: 367*21bea1a2SQiu Chaofan; LARGE64: # %bb.0: # %entry 368*21bea1a2SQiu Chaofan; LARGE64-NEXT: addis r3, L..C3@u(r2) 369*21bea1a2SQiu Chaofan; LARGE64-NEXT: ld r3, L..C3@l(r3) 370*21bea1a2SQiu Chaofan; LARGE64-NEXT: lwax r3, r13, r3 371*21bea1a2SQiu Chaofan; LARGE64-NEXT: blr 372*21bea1a2SQiu Chaofan; 373*21bea1a2SQiu Chaofan; SMALL64-LABEL: load_intern_int_nonzero: 374*21bea1a2SQiu Chaofan; SMALL64: # %bb.0: # %entry 375*21bea1a2SQiu Chaofan; SMALL64-NEXT: ld r3, L..C3(r2) # target-flags(ppc-tprel) @intern_int_nonzero 376*21bea1a2SQiu Chaofan; SMALL64-NEXT: lwax r3, r13, r3 377*21bea1a2SQiu Chaofan; SMALL64-NEXT: blr 378*21bea1a2SQiu Chaofan; 379*21bea1a2SQiu Chaofan; LARGE32-LABEL: load_intern_int_nonzero: 380*21bea1a2SQiu Chaofan; LARGE32: # %bb.0: # %entry 381*21bea1a2SQiu Chaofan; LARGE32-NEXT: mflr r0 382*21bea1a2SQiu Chaofan; LARGE32-NEXT: stwu r1, -32(r1) 383*21bea1a2SQiu Chaofan; LARGE32-NEXT: stw r0, 40(r1) 384*21bea1a2SQiu Chaofan; LARGE32-NEXT: addis r3, L..C3@u(r2) 385*21bea1a2SQiu Chaofan; LARGE32-NEXT: lwz r4, L..C3@l(r3) 386*21bea1a2SQiu Chaofan; LARGE32-NEXT: bla .__get_tpointer[PR] 387*21bea1a2SQiu Chaofan; LARGE32-NEXT: lwzx r3, r3, r4 388*21bea1a2SQiu Chaofan; LARGE32-NEXT: addi r1, r1, 32 389*21bea1a2SQiu Chaofan; LARGE32-NEXT: lwz r0, 8(r1) 390*21bea1a2SQiu Chaofan; LARGE32-NEXT: mtlr r0 391*21bea1a2SQiu Chaofan; LARGE32-NEXT: blr 392*21bea1a2SQiu Chaofan; 393*21bea1a2SQiu Chaofan; SMALL32-LABEL: load_intern_int_nonzero: 394*21bea1a2SQiu Chaofan; SMALL32: # %bb.0: # %entry 395*21bea1a2SQiu Chaofan; SMALL32-NEXT: mflr r0 396*21bea1a2SQiu Chaofan; SMALL32-NEXT: stwu r1, -32(r1) 397*21bea1a2SQiu Chaofan; SMALL32-NEXT: lwz r4, L..C3(r2) # target-flags(ppc-tprel) @intern_int_nonzero 398*21bea1a2SQiu Chaofan; SMALL32-NEXT: stw r0, 40(r1) 399*21bea1a2SQiu Chaofan; SMALL32-NEXT: bla .__get_tpointer[PR] 400*21bea1a2SQiu Chaofan; SMALL32-NEXT: lwzx r3, r3, r4 401*21bea1a2SQiu Chaofan; SMALL32-NEXT: addi r1, r1, 32 402*21bea1a2SQiu Chaofan; SMALL32-NEXT: lwz r0, 8(r1) 403*21bea1a2SQiu Chaofan; SMALL32-NEXT: mtlr r0 404*21bea1a2SQiu Chaofan; SMALL32-NEXT: blr 405*21bea1a2SQiu Chaofanentry: 406*21bea1a2SQiu Chaofan %addr = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @intern_int_nonzero) 407*21bea1a2SQiu Chaofan %val = load i32, ptr %addr, align 4 408*21bea1a2SQiu Chaofan ret i32 %val 409*21bea1a2SQiu Chaofan} 410*21bea1a2SQiu Chaofan 411*21bea1a2SQiu Chaofandefine void @store_global_long_zero(i64 noundef %i) { 412*21bea1a2SQiu Chaofan; LARGE64-LABEL: store_global_long_zero: 413*21bea1a2SQiu Chaofan; LARGE64: # %bb.0: # %entry 414*21bea1a2SQiu Chaofan; LARGE64-NEXT: addis r4, L..C4@u(r2) 415*21bea1a2SQiu Chaofan; LARGE64-NEXT: ld r4, L..C4@l(r4) 416*21bea1a2SQiu Chaofan; LARGE64-NEXT: stdx r3, r13, r4 417*21bea1a2SQiu Chaofan; LARGE64-NEXT: blr 418*21bea1a2SQiu Chaofan; 419*21bea1a2SQiu Chaofan; SMALL64-LABEL: store_global_long_zero: 420*21bea1a2SQiu Chaofan; SMALL64: # %bb.0: # %entry 421*21bea1a2SQiu Chaofan; SMALL64-NEXT: ld r4, L..C4(r2) # target-flags(ppc-tprel) @global_long_zero 422*21bea1a2SQiu Chaofan; SMALL64-NEXT: stdx r3, r13, r4 423*21bea1a2SQiu Chaofan; SMALL64-NEXT: blr 424*21bea1a2SQiu Chaofan; 425*21bea1a2SQiu Chaofan; LARGE32-LABEL: store_global_long_zero: 426*21bea1a2SQiu Chaofan; LARGE32: # %bb.0: # %entry 427*21bea1a2SQiu Chaofan; LARGE32-NEXT: mflr r0 428*21bea1a2SQiu Chaofan; LARGE32-NEXT: stwu r1, -32(r1) 429*21bea1a2SQiu Chaofan; LARGE32-NEXT: stw r0, 40(r1) 430*21bea1a2SQiu Chaofan; LARGE32-NEXT: mr r5, r3 431*21bea1a2SQiu Chaofan; LARGE32-NEXT: addis r3, L..C4@u(r2) 432*21bea1a2SQiu Chaofan; LARGE32-NEXT: lwz r6, L..C4@l(r3) 433*21bea1a2SQiu Chaofan; LARGE32-NEXT: bla .__get_tpointer[PR] 434*21bea1a2SQiu Chaofan; LARGE32-NEXT: add r3, r3, r6 435*21bea1a2SQiu Chaofan; LARGE32-NEXT: stw r4, 4(r3) 436*21bea1a2SQiu Chaofan; LARGE32-NEXT: stw r5, 0(r3) 437*21bea1a2SQiu Chaofan; LARGE32-NEXT: addi r1, r1, 32 438*21bea1a2SQiu Chaofan; LARGE32-NEXT: lwz r0, 8(r1) 439*21bea1a2SQiu Chaofan; LARGE32-NEXT: mtlr r0 440*21bea1a2SQiu Chaofan; LARGE32-NEXT: blr 441*21bea1a2SQiu Chaofan; 442*21bea1a2SQiu Chaofan; SMALL32-LABEL: store_global_long_zero: 443*21bea1a2SQiu Chaofan; SMALL32: # %bb.0: # %entry 444*21bea1a2SQiu Chaofan; SMALL32-NEXT: mflr r0 445*21bea1a2SQiu Chaofan; SMALL32-NEXT: stwu r1, -32(r1) 446*21bea1a2SQiu Chaofan; SMALL32-NEXT: lwz r6, L..C4(r2) # target-flags(ppc-tprel) @global_long_zero 447*21bea1a2SQiu Chaofan; SMALL32-NEXT: mr r5, r3 448*21bea1a2SQiu Chaofan; SMALL32-NEXT: bla .__get_tpointer[PR] 449*21bea1a2SQiu Chaofan; SMALL32-NEXT: stw r0, 40(r1) 450*21bea1a2SQiu Chaofan; SMALL32-NEXT: add r3, r3, r6 451*21bea1a2SQiu Chaofan; SMALL32-NEXT: stw r4, 4(r3) 452*21bea1a2SQiu Chaofan; SMALL32-NEXT: stw r5, 0(r3) 453*21bea1a2SQiu Chaofan; SMALL32-NEXT: addi r1, r1, 32 454*21bea1a2SQiu Chaofan; SMALL32-NEXT: lwz r0, 8(r1) 455*21bea1a2SQiu Chaofan; SMALL32-NEXT: mtlr r0 456*21bea1a2SQiu Chaofan; SMALL32-NEXT: blr 457*21bea1a2SQiu Chaofanentry: 458*21bea1a2SQiu Chaofan %addr = tail call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @global_long_zero) 459*21bea1a2SQiu Chaofan store i64 %i, ptr %addr, align 8 460*21bea1a2SQiu Chaofan ret void 461*21bea1a2SQiu Chaofan} 462*21bea1a2SQiu Chaofan 463*21bea1a2SQiu Chaofandefine void @store_global_long_nonzero(i64 noundef %i) { 464*21bea1a2SQiu Chaofan; LARGE64-LABEL: store_global_long_nonzero: 465*21bea1a2SQiu Chaofan; LARGE64: # %bb.0: # %entry 466*21bea1a2SQiu Chaofan; LARGE64-NEXT: addis r4, L..C5@u(r2) 467*21bea1a2SQiu Chaofan; LARGE64-NEXT: ld r4, L..C5@l(r4) 468*21bea1a2SQiu Chaofan; LARGE64-NEXT: stdx r3, r13, r4 469*21bea1a2SQiu Chaofan; LARGE64-NEXT: blr 470*21bea1a2SQiu Chaofan; 471*21bea1a2SQiu Chaofan; SMALL64-LABEL: store_global_long_nonzero: 472*21bea1a2SQiu Chaofan; SMALL64: # %bb.0: # %entry 473*21bea1a2SQiu Chaofan; SMALL64-NEXT: ld r4, L..C5(r2) # target-flags(ppc-tprel) @global_long_nonzero 474*21bea1a2SQiu Chaofan; SMALL64-NEXT: stdx r3, r13, r4 475*21bea1a2SQiu Chaofan; SMALL64-NEXT: blr 476*21bea1a2SQiu Chaofan; 477*21bea1a2SQiu Chaofan; LARGE32-LABEL: store_global_long_nonzero: 478*21bea1a2SQiu Chaofan; LARGE32: # %bb.0: # %entry 479*21bea1a2SQiu Chaofan; LARGE32-NEXT: mflr r0 480*21bea1a2SQiu Chaofan; LARGE32-NEXT: stwu r1, -32(r1) 481*21bea1a2SQiu Chaofan; LARGE32-NEXT: stw r0, 40(r1) 482*21bea1a2SQiu Chaofan; LARGE32-NEXT: mr r5, r3 483*21bea1a2SQiu Chaofan; LARGE32-NEXT: addis r3, L..C5@u(r2) 484*21bea1a2SQiu Chaofan; LARGE32-NEXT: lwz r6, L..C5@l(r3) 485*21bea1a2SQiu Chaofan; LARGE32-NEXT: bla .__get_tpointer[PR] 486*21bea1a2SQiu Chaofan; LARGE32-NEXT: add r3, r3, r6 487*21bea1a2SQiu Chaofan; LARGE32-NEXT: stw r4, 4(r3) 488*21bea1a2SQiu Chaofan; LARGE32-NEXT: stw r5, 0(r3) 489*21bea1a2SQiu Chaofan; LARGE32-NEXT: addi r1, r1, 32 490*21bea1a2SQiu Chaofan; LARGE32-NEXT: lwz r0, 8(r1) 491*21bea1a2SQiu Chaofan; LARGE32-NEXT: mtlr r0 492*21bea1a2SQiu Chaofan; LARGE32-NEXT: blr 493*21bea1a2SQiu Chaofan; 494*21bea1a2SQiu Chaofan; SMALL32-LABEL: store_global_long_nonzero: 495*21bea1a2SQiu Chaofan; SMALL32: # %bb.0: # %entry 496*21bea1a2SQiu Chaofan; SMALL32-NEXT: mflr r0 497*21bea1a2SQiu Chaofan; SMALL32-NEXT: stwu r1, -32(r1) 498*21bea1a2SQiu Chaofan; SMALL32-NEXT: lwz r6, L..C5(r2) # target-flags(ppc-tprel) @global_long_nonzero 499*21bea1a2SQiu Chaofan; SMALL32-NEXT: mr r5, r3 500*21bea1a2SQiu Chaofan; SMALL32-NEXT: bla .__get_tpointer[PR] 501*21bea1a2SQiu Chaofan; SMALL32-NEXT: stw r0, 40(r1) 502*21bea1a2SQiu Chaofan; SMALL32-NEXT: add r3, r3, r6 503*21bea1a2SQiu Chaofan; SMALL32-NEXT: stw r4, 4(r3) 504*21bea1a2SQiu Chaofan; SMALL32-NEXT: stw r5, 0(r3) 505*21bea1a2SQiu Chaofan; SMALL32-NEXT: addi r1, r1, 32 506*21bea1a2SQiu Chaofan; SMALL32-NEXT: lwz r0, 8(r1) 507*21bea1a2SQiu Chaofan; SMALL32-NEXT: mtlr r0 508*21bea1a2SQiu Chaofan; SMALL32-NEXT: blr 509*21bea1a2SQiu Chaofanentry: 510*21bea1a2SQiu Chaofan %addr = tail call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @global_long_nonzero) 511*21bea1a2SQiu Chaofan store i64 %i, ptr %addr, align 8 512*21bea1a2SQiu Chaofan ret void 513*21bea1a2SQiu Chaofan} 514*21bea1a2SQiu Chaofan 515*21bea1a2SQiu Chaofandefine void @store_intern_long_zero(i64 noundef %i) { 516*21bea1a2SQiu Chaofan; LARGE64-LABEL: store_intern_long_zero: 517*21bea1a2SQiu Chaofan; LARGE64: # %bb.0: # %entry 518*21bea1a2SQiu Chaofan; LARGE64-NEXT: addis r4, L..C6@u(r2) 519*21bea1a2SQiu Chaofan; LARGE64-NEXT: ld r4, L..C6@l(r4) 520*21bea1a2SQiu Chaofan; LARGE64-NEXT: stdx r3, r13, r4 521*21bea1a2SQiu Chaofan; LARGE64-NEXT: blr 522*21bea1a2SQiu Chaofan; 523*21bea1a2SQiu Chaofan; SMALL64-LABEL: store_intern_long_zero: 524*21bea1a2SQiu Chaofan; SMALL64: # %bb.0: # %entry 525*21bea1a2SQiu Chaofan; SMALL64-NEXT: ld r4, L..C6(r2) # target-flags(ppc-tprel) @intern_long_zero 526*21bea1a2SQiu Chaofan; SMALL64-NEXT: stdx r3, r13, r4 527*21bea1a2SQiu Chaofan; SMALL64-NEXT: blr 528*21bea1a2SQiu Chaofan; 529*21bea1a2SQiu Chaofan; LARGE32-LABEL: store_intern_long_zero: 530*21bea1a2SQiu Chaofan; LARGE32: # %bb.0: # %entry 531*21bea1a2SQiu Chaofan; LARGE32-NEXT: mflr r0 532*21bea1a2SQiu Chaofan; LARGE32-NEXT: stwu r1, -32(r1) 533*21bea1a2SQiu Chaofan; LARGE32-NEXT: stw r0, 40(r1) 534*21bea1a2SQiu Chaofan; LARGE32-NEXT: mr r5, r3 535*21bea1a2SQiu Chaofan; LARGE32-NEXT: addis r3, L..C6@u(r2) 536*21bea1a2SQiu Chaofan; LARGE32-NEXT: lwz r6, L..C6@l(r3) 537*21bea1a2SQiu Chaofan; LARGE32-NEXT: bla .__get_tpointer[PR] 538*21bea1a2SQiu Chaofan; LARGE32-NEXT: add r3, r3, r6 539*21bea1a2SQiu Chaofan; LARGE32-NEXT: stw r4, 4(r3) 540*21bea1a2SQiu Chaofan; LARGE32-NEXT: stw r5, 0(r3) 541*21bea1a2SQiu Chaofan; LARGE32-NEXT: addi r1, r1, 32 542*21bea1a2SQiu Chaofan; LARGE32-NEXT: lwz r0, 8(r1) 543*21bea1a2SQiu Chaofan; LARGE32-NEXT: mtlr r0 544*21bea1a2SQiu Chaofan; LARGE32-NEXT: blr 545*21bea1a2SQiu Chaofan; 546*21bea1a2SQiu Chaofan; SMALL32-LABEL: store_intern_long_zero: 547*21bea1a2SQiu Chaofan; SMALL32: # %bb.0: # %entry 548*21bea1a2SQiu Chaofan; SMALL32-NEXT: mflr r0 549*21bea1a2SQiu Chaofan; SMALL32-NEXT: stwu r1, -32(r1) 550*21bea1a2SQiu Chaofan; SMALL32-NEXT: lwz r6, L..C6(r2) # target-flags(ppc-tprel) @intern_long_zero 551*21bea1a2SQiu Chaofan; SMALL32-NEXT: mr r5, r3 552*21bea1a2SQiu Chaofan; SMALL32-NEXT: bla .__get_tpointer[PR] 553*21bea1a2SQiu Chaofan; SMALL32-NEXT: stw r0, 40(r1) 554*21bea1a2SQiu Chaofan; SMALL32-NEXT: add r3, r3, r6 555*21bea1a2SQiu Chaofan; SMALL32-NEXT: stw r4, 4(r3) 556*21bea1a2SQiu Chaofan; SMALL32-NEXT: stw r5, 0(r3) 557*21bea1a2SQiu Chaofan; SMALL32-NEXT: addi r1, r1, 32 558*21bea1a2SQiu Chaofan; SMALL32-NEXT: lwz r0, 8(r1) 559*21bea1a2SQiu Chaofan; SMALL32-NEXT: mtlr r0 560*21bea1a2SQiu Chaofan; SMALL32-NEXT: blr 561*21bea1a2SQiu Chaofanentry: 562*21bea1a2SQiu Chaofan %addr = tail call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @intern_long_zero) 563*21bea1a2SQiu Chaofan store i64 %i, ptr %addr, align 8 564*21bea1a2SQiu Chaofan ret void 565*21bea1a2SQiu Chaofan} 566*21bea1a2SQiu Chaofan 567*21bea1a2SQiu Chaofandefine void @store_intern_long_nonzero(i64 noundef %i) { 568*21bea1a2SQiu Chaofan; LARGE64-LABEL: store_intern_long_nonzero: 569*21bea1a2SQiu Chaofan; LARGE64: # %bb.0: # %entry 570*21bea1a2SQiu Chaofan; LARGE64-NEXT: addis r4, L..C7@u(r2) 571*21bea1a2SQiu Chaofan; LARGE64-NEXT: ld r4, L..C7@l(r4) 572*21bea1a2SQiu Chaofan; LARGE64-NEXT: stdx r3, r13, r4 573*21bea1a2SQiu Chaofan; LARGE64-NEXT: blr 574*21bea1a2SQiu Chaofan; 575*21bea1a2SQiu Chaofan; SMALL64-LABEL: store_intern_long_nonzero: 576*21bea1a2SQiu Chaofan; SMALL64: # %bb.0: # %entry 577*21bea1a2SQiu Chaofan; SMALL64-NEXT: ld r4, L..C7(r2) # target-flags(ppc-tprel) @intern_long_nonzero 578*21bea1a2SQiu Chaofan; SMALL64-NEXT: stdx r3, r13, r4 579*21bea1a2SQiu Chaofan; SMALL64-NEXT: blr 580*21bea1a2SQiu Chaofan; 581*21bea1a2SQiu Chaofan; LARGE32-LABEL: store_intern_long_nonzero: 582*21bea1a2SQiu Chaofan; LARGE32: # %bb.0: # %entry 583*21bea1a2SQiu Chaofan; LARGE32-NEXT: mflr r0 584*21bea1a2SQiu Chaofan; LARGE32-NEXT: stwu r1, -32(r1) 585*21bea1a2SQiu Chaofan; LARGE32-NEXT: stw r0, 40(r1) 586*21bea1a2SQiu Chaofan; LARGE32-NEXT: mr r5, r3 587*21bea1a2SQiu Chaofan; LARGE32-NEXT: addis r3, L..C7@u(r2) 588*21bea1a2SQiu Chaofan; LARGE32-NEXT: lwz r6, L..C7@l(r3) 589*21bea1a2SQiu Chaofan; LARGE32-NEXT: bla .__get_tpointer[PR] 590*21bea1a2SQiu Chaofan; LARGE32-NEXT: add r3, r3, r6 591*21bea1a2SQiu Chaofan; LARGE32-NEXT: stw r4, 4(r3) 592*21bea1a2SQiu Chaofan; LARGE32-NEXT: stw r5, 0(r3) 593*21bea1a2SQiu Chaofan; LARGE32-NEXT: addi r1, r1, 32 594*21bea1a2SQiu Chaofan; LARGE32-NEXT: lwz r0, 8(r1) 595*21bea1a2SQiu Chaofan; LARGE32-NEXT: mtlr r0 596*21bea1a2SQiu Chaofan; LARGE32-NEXT: blr 597*21bea1a2SQiu Chaofan; 598*21bea1a2SQiu Chaofan; SMALL32-LABEL: store_intern_long_nonzero: 599*21bea1a2SQiu Chaofan; SMALL32: # %bb.0: # %entry 600*21bea1a2SQiu Chaofan; SMALL32-NEXT: mflr r0 601*21bea1a2SQiu Chaofan; SMALL32-NEXT: stwu r1, -32(r1) 602*21bea1a2SQiu Chaofan; SMALL32-NEXT: lwz r6, L..C7(r2) # target-flags(ppc-tprel) @intern_long_nonzero 603*21bea1a2SQiu Chaofan; SMALL32-NEXT: mr r5, r3 604*21bea1a2SQiu Chaofan; SMALL32-NEXT: bla .__get_tpointer[PR] 605*21bea1a2SQiu Chaofan; SMALL32-NEXT: stw r0, 40(r1) 606*21bea1a2SQiu Chaofan; SMALL32-NEXT: add r3, r3, r6 607*21bea1a2SQiu Chaofan; SMALL32-NEXT: stw r4, 4(r3) 608*21bea1a2SQiu Chaofan; SMALL32-NEXT: stw r5, 0(r3) 609*21bea1a2SQiu Chaofan; SMALL32-NEXT: addi r1, r1, 32 610*21bea1a2SQiu Chaofan; SMALL32-NEXT: lwz r0, 8(r1) 611*21bea1a2SQiu Chaofan; SMALL32-NEXT: mtlr r0 612*21bea1a2SQiu Chaofan; SMALL32-NEXT: blr 613*21bea1a2SQiu Chaofanentry: 614*21bea1a2SQiu Chaofan %addr = tail call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @intern_long_nonzero) 615*21bea1a2SQiu Chaofan store i64 %i, ptr %addr, align 8 616*21bea1a2SQiu Chaofan ret void 617*21bea1a2SQiu Chaofan} 618*21bea1a2SQiu Chaofan 619*21bea1a2SQiu Chaofandefine i64 @load_global_long_zero() { 620*21bea1a2SQiu Chaofan; LARGE64-LABEL: load_global_long_zero: 621*21bea1a2SQiu Chaofan; LARGE64: # %bb.0: # %entry 622*21bea1a2SQiu Chaofan; LARGE64-NEXT: addis r3, L..C4@u(r2) 623*21bea1a2SQiu Chaofan; LARGE64-NEXT: ld r3, L..C4@l(r3) 624*21bea1a2SQiu Chaofan; LARGE64-NEXT: ldx r3, r13, r3 625*21bea1a2SQiu Chaofan; LARGE64-NEXT: blr 626*21bea1a2SQiu Chaofan; 627*21bea1a2SQiu Chaofan; SMALL64-LABEL: load_global_long_zero: 628*21bea1a2SQiu Chaofan; SMALL64: # %bb.0: # %entry 629*21bea1a2SQiu Chaofan; SMALL64-NEXT: ld r3, L..C4(r2) # target-flags(ppc-tprel) @global_long_zero 630*21bea1a2SQiu Chaofan; SMALL64-NEXT: ldx r3, r13, r3 631*21bea1a2SQiu Chaofan; SMALL64-NEXT: blr 632*21bea1a2SQiu Chaofan; 633*21bea1a2SQiu Chaofan; LARGE32-LABEL: load_global_long_zero: 634*21bea1a2SQiu Chaofan; LARGE32: # %bb.0: # %entry 635*21bea1a2SQiu Chaofan; LARGE32-NEXT: mflr r0 636*21bea1a2SQiu Chaofan; LARGE32-NEXT: stwu r1, -32(r1) 637*21bea1a2SQiu Chaofan; LARGE32-NEXT: stw r0, 40(r1) 638*21bea1a2SQiu Chaofan; LARGE32-NEXT: addis r3, L..C4@u(r2) 639*21bea1a2SQiu Chaofan; LARGE32-NEXT: lwz r4, L..C4@l(r3) 640*21bea1a2SQiu Chaofan; LARGE32-NEXT: bla .__get_tpointer[PR] 641*21bea1a2SQiu Chaofan; LARGE32-NEXT: add r4, r3, r4 642*21bea1a2SQiu Chaofan; LARGE32-NEXT: lwz r3, 0(r4) 643*21bea1a2SQiu Chaofan; LARGE32-NEXT: lwz r4, 4(r4) 644*21bea1a2SQiu Chaofan; LARGE32-NEXT: addi r1, r1, 32 645*21bea1a2SQiu Chaofan; LARGE32-NEXT: lwz r0, 8(r1) 646*21bea1a2SQiu Chaofan; LARGE32-NEXT: mtlr r0 647*21bea1a2SQiu Chaofan; LARGE32-NEXT: blr 648*21bea1a2SQiu Chaofan; 649*21bea1a2SQiu Chaofan; SMALL32-LABEL: load_global_long_zero: 650*21bea1a2SQiu Chaofan; SMALL32: # %bb.0: # %entry 651*21bea1a2SQiu Chaofan; SMALL32-NEXT: mflr r0 652*21bea1a2SQiu Chaofan; SMALL32-NEXT: stwu r1, -32(r1) 653*21bea1a2SQiu Chaofan; SMALL32-NEXT: lwz r4, L..C4(r2) # target-flags(ppc-tprel) @global_long_zero 654*21bea1a2SQiu Chaofan; SMALL32-NEXT: bla .__get_tpointer[PR] 655*21bea1a2SQiu Chaofan; SMALL32-NEXT: stw r0, 40(r1) 656*21bea1a2SQiu Chaofan; SMALL32-NEXT: add r4, r3, r4 657*21bea1a2SQiu Chaofan; SMALL32-NEXT: lwz r3, 0(r4) 658*21bea1a2SQiu Chaofan; SMALL32-NEXT: lwz r4, 4(r4) 659*21bea1a2SQiu Chaofan; SMALL32-NEXT: addi r1, r1, 32 660*21bea1a2SQiu Chaofan; SMALL32-NEXT: lwz r0, 8(r1) 661*21bea1a2SQiu Chaofan; SMALL32-NEXT: mtlr r0 662*21bea1a2SQiu Chaofan; SMALL32-NEXT: blr 663*21bea1a2SQiu Chaofanentry: 664*21bea1a2SQiu Chaofan %addr = tail call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @global_long_zero) 665*21bea1a2SQiu Chaofan %val = load i64, ptr %addr, align 8 666*21bea1a2SQiu Chaofan ret i64 %val 667*21bea1a2SQiu Chaofan} 668*21bea1a2SQiu Chaofan 669*21bea1a2SQiu Chaofandefine i64 @load_global_long_nonzero() { 670*21bea1a2SQiu Chaofan; LARGE64-LABEL: load_global_long_nonzero: 671*21bea1a2SQiu Chaofan; LARGE64: # %bb.0: # %entry 672*21bea1a2SQiu Chaofan; LARGE64-NEXT: addis r3, L..C5@u(r2) 673*21bea1a2SQiu Chaofan; LARGE64-NEXT: ld r3, L..C5@l(r3) 674*21bea1a2SQiu Chaofan; LARGE64-NEXT: ldx r3, r13, r3 675*21bea1a2SQiu Chaofan; LARGE64-NEXT: blr 676*21bea1a2SQiu Chaofan; 677*21bea1a2SQiu Chaofan; SMALL64-LABEL: load_global_long_nonzero: 678*21bea1a2SQiu Chaofan; SMALL64: # %bb.0: # %entry 679*21bea1a2SQiu Chaofan; SMALL64-NEXT: ld r3, L..C5(r2) # target-flags(ppc-tprel) @global_long_nonzero 680*21bea1a2SQiu Chaofan; SMALL64-NEXT: ldx r3, r13, r3 681*21bea1a2SQiu Chaofan; SMALL64-NEXT: blr 682*21bea1a2SQiu Chaofan; 683*21bea1a2SQiu Chaofan; LARGE32-LABEL: load_global_long_nonzero: 684*21bea1a2SQiu Chaofan; LARGE32: # %bb.0: # %entry 685*21bea1a2SQiu Chaofan; LARGE32-NEXT: mflr r0 686*21bea1a2SQiu Chaofan; LARGE32-NEXT: stwu r1, -32(r1) 687*21bea1a2SQiu Chaofan; LARGE32-NEXT: stw r0, 40(r1) 688*21bea1a2SQiu Chaofan; LARGE32-NEXT: addis r3, L..C5@u(r2) 689*21bea1a2SQiu Chaofan; LARGE32-NEXT: lwz r4, L..C5@l(r3) 690*21bea1a2SQiu Chaofan; LARGE32-NEXT: bla .__get_tpointer[PR] 691*21bea1a2SQiu Chaofan; LARGE32-NEXT: add r4, r3, r4 692*21bea1a2SQiu Chaofan; LARGE32-NEXT: lwz r3, 0(r4) 693*21bea1a2SQiu Chaofan; LARGE32-NEXT: lwz r4, 4(r4) 694*21bea1a2SQiu Chaofan; LARGE32-NEXT: addi r1, r1, 32 695*21bea1a2SQiu Chaofan; LARGE32-NEXT: lwz r0, 8(r1) 696*21bea1a2SQiu Chaofan; LARGE32-NEXT: mtlr r0 697*21bea1a2SQiu Chaofan; LARGE32-NEXT: blr 698*21bea1a2SQiu Chaofan; 699*21bea1a2SQiu Chaofan; SMALL32-LABEL: load_global_long_nonzero: 700*21bea1a2SQiu Chaofan; SMALL32: # %bb.0: # %entry 701*21bea1a2SQiu Chaofan; SMALL32-NEXT: mflr r0 702*21bea1a2SQiu Chaofan; SMALL32-NEXT: stwu r1, -32(r1) 703*21bea1a2SQiu Chaofan; SMALL32-NEXT: lwz r4, L..C5(r2) # target-flags(ppc-tprel) @global_long_nonzero 704*21bea1a2SQiu Chaofan; SMALL32-NEXT: bla .__get_tpointer[PR] 705*21bea1a2SQiu Chaofan; SMALL32-NEXT: stw r0, 40(r1) 706*21bea1a2SQiu Chaofan; SMALL32-NEXT: add r4, r3, r4 707*21bea1a2SQiu Chaofan; SMALL32-NEXT: lwz r3, 0(r4) 708*21bea1a2SQiu Chaofan; SMALL32-NEXT: lwz r4, 4(r4) 709*21bea1a2SQiu Chaofan; SMALL32-NEXT: addi r1, r1, 32 710*21bea1a2SQiu Chaofan; SMALL32-NEXT: lwz r0, 8(r1) 711*21bea1a2SQiu Chaofan; SMALL32-NEXT: mtlr r0 712*21bea1a2SQiu Chaofan; SMALL32-NEXT: blr 713*21bea1a2SQiu Chaofanentry: 714*21bea1a2SQiu Chaofan %addr = tail call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @global_long_nonzero) 715*21bea1a2SQiu Chaofan %val = load i64, ptr %addr, align 8 716*21bea1a2SQiu Chaofan ret i64 %val 717*21bea1a2SQiu Chaofan} 718*21bea1a2SQiu Chaofan 719*21bea1a2SQiu Chaofandefine i64 @load_intern_long_zero() { 720*21bea1a2SQiu Chaofan; LARGE64-LABEL: load_intern_long_zero: 721*21bea1a2SQiu Chaofan; LARGE64: # %bb.0: # %entry 722*21bea1a2SQiu Chaofan; LARGE64-NEXT: addis r3, L..C6@u(r2) 723*21bea1a2SQiu Chaofan; LARGE64-NEXT: ld r3, L..C6@l(r3) 724*21bea1a2SQiu Chaofan; LARGE64-NEXT: ldx r3, r13, r3 725*21bea1a2SQiu Chaofan; LARGE64-NEXT: blr 726*21bea1a2SQiu Chaofan; 727*21bea1a2SQiu Chaofan; SMALL64-LABEL: load_intern_long_zero: 728*21bea1a2SQiu Chaofan; SMALL64: # %bb.0: # %entry 729*21bea1a2SQiu Chaofan; SMALL64-NEXT: ld r3, L..C6(r2) # target-flags(ppc-tprel) @intern_long_zero 730*21bea1a2SQiu Chaofan; SMALL64-NEXT: ldx r3, r13, r3 731*21bea1a2SQiu Chaofan; SMALL64-NEXT: blr 732*21bea1a2SQiu Chaofan; 733*21bea1a2SQiu Chaofan; LARGE32-LABEL: load_intern_long_zero: 734*21bea1a2SQiu Chaofan; LARGE32: # %bb.0: # %entry 735*21bea1a2SQiu Chaofan; LARGE32-NEXT: mflr r0 736*21bea1a2SQiu Chaofan; LARGE32-NEXT: stwu r1, -32(r1) 737*21bea1a2SQiu Chaofan; LARGE32-NEXT: stw r0, 40(r1) 738*21bea1a2SQiu Chaofan; LARGE32-NEXT: addis r3, L..C6@u(r2) 739*21bea1a2SQiu Chaofan; LARGE32-NEXT: lwz r4, L..C6@l(r3) 740*21bea1a2SQiu Chaofan; LARGE32-NEXT: bla .__get_tpointer[PR] 741*21bea1a2SQiu Chaofan; LARGE32-NEXT: add r4, r3, r4 742*21bea1a2SQiu Chaofan; LARGE32-NEXT: lwz r3, 0(r4) 743*21bea1a2SQiu Chaofan; LARGE32-NEXT: lwz r4, 4(r4) 744*21bea1a2SQiu Chaofan; LARGE32-NEXT: addi r1, r1, 32 745*21bea1a2SQiu Chaofan; LARGE32-NEXT: lwz r0, 8(r1) 746*21bea1a2SQiu Chaofan; LARGE32-NEXT: mtlr r0 747*21bea1a2SQiu Chaofan; LARGE32-NEXT: blr 748*21bea1a2SQiu Chaofan; 749*21bea1a2SQiu Chaofan; SMALL32-LABEL: load_intern_long_zero: 750*21bea1a2SQiu Chaofan; SMALL32: # %bb.0: # %entry 751*21bea1a2SQiu Chaofan; SMALL32-NEXT: mflr r0 752*21bea1a2SQiu Chaofan; SMALL32-NEXT: stwu r1, -32(r1) 753*21bea1a2SQiu Chaofan; SMALL32-NEXT: lwz r4, L..C6(r2) # target-flags(ppc-tprel) @intern_long_zero 754*21bea1a2SQiu Chaofan; SMALL32-NEXT: bla .__get_tpointer[PR] 755*21bea1a2SQiu Chaofan; SMALL32-NEXT: stw r0, 40(r1) 756*21bea1a2SQiu Chaofan; SMALL32-NEXT: add r4, r3, r4 757*21bea1a2SQiu Chaofan; SMALL32-NEXT: lwz r3, 0(r4) 758*21bea1a2SQiu Chaofan; SMALL32-NEXT: lwz r4, 4(r4) 759*21bea1a2SQiu Chaofan; SMALL32-NEXT: addi r1, r1, 32 760*21bea1a2SQiu Chaofan; SMALL32-NEXT: lwz r0, 8(r1) 761*21bea1a2SQiu Chaofan; SMALL32-NEXT: mtlr r0 762*21bea1a2SQiu Chaofan; SMALL32-NEXT: blr 763*21bea1a2SQiu Chaofanentry: 764*21bea1a2SQiu Chaofan %addr = tail call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @intern_long_zero) 765*21bea1a2SQiu Chaofan %val = load i64, ptr %addr, align 8 766*21bea1a2SQiu Chaofan ret i64 %val 767*21bea1a2SQiu Chaofan} 768*21bea1a2SQiu Chaofan 769*21bea1a2SQiu Chaofandefine i64 @load_intern_long_nonzero() { 770*21bea1a2SQiu Chaofan; LARGE64-LABEL: load_intern_long_nonzero: 771*21bea1a2SQiu Chaofan; LARGE64: # %bb.0: # %entry 772*21bea1a2SQiu Chaofan; LARGE64-NEXT: addis r3, L..C7@u(r2) 773*21bea1a2SQiu Chaofan; LARGE64-NEXT: ld r3, L..C7@l(r3) 774*21bea1a2SQiu Chaofan; LARGE64-NEXT: ldx r3, r13, r3 775*21bea1a2SQiu Chaofan; LARGE64-NEXT: blr 776*21bea1a2SQiu Chaofan; 777*21bea1a2SQiu Chaofan; SMALL64-LABEL: load_intern_long_nonzero: 778*21bea1a2SQiu Chaofan; SMALL64: # %bb.0: # %entry 779*21bea1a2SQiu Chaofan; SMALL64-NEXT: ld r3, L..C7(r2) # target-flags(ppc-tprel) @intern_long_nonzero 780*21bea1a2SQiu Chaofan; SMALL64-NEXT: ldx r3, r13, r3 781*21bea1a2SQiu Chaofan; SMALL64-NEXT: blr 782*21bea1a2SQiu Chaofan; 783*21bea1a2SQiu Chaofan; LARGE32-LABEL: load_intern_long_nonzero: 784*21bea1a2SQiu Chaofan; LARGE32: # %bb.0: # %entry 785*21bea1a2SQiu Chaofan; LARGE32-NEXT: mflr r0 786*21bea1a2SQiu Chaofan; LARGE32-NEXT: stwu r1, -32(r1) 787*21bea1a2SQiu Chaofan; LARGE32-NEXT: stw r0, 40(r1) 788*21bea1a2SQiu Chaofan; LARGE32-NEXT: addis r3, L..C7@u(r2) 789*21bea1a2SQiu Chaofan; LARGE32-NEXT: lwz r4, L..C7@l(r3) 790*21bea1a2SQiu Chaofan; LARGE32-NEXT: bla .__get_tpointer[PR] 791*21bea1a2SQiu Chaofan; LARGE32-NEXT: add r4, r3, r4 792*21bea1a2SQiu Chaofan; LARGE32-NEXT: lwz r3, 0(r4) 793*21bea1a2SQiu Chaofan; LARGE32-NEXT: lwz r4, 4(r4) 794*21bea1a2SQiu Chaofan; LARGE32-NEXT: addi r1, r1, 32 795*21bea1a2SQiu Chaofan; LARGE32-NEXT: lwz r0, 8(r1) 796*21bea1a2SQiu Chaofan; LARGE32-NEXT: mtlr r0 797*21bea1a2SQiu Chaofan; LARGE32-NEXT: blr 798*21bea1a2SQiu Chaofan; 799*21bea1a2SQiu Chaofan; SMALL32-LABEL: load_intern_long_nonzero: 800*21bea1a2SQiu Chaofan; SMALL32: # %bb.0: # %entry 801*21bea1a2SQiu Chaofan; SMALL32-NEXT: mflr r0 802*21bea1a2SQiu Chaofan; SMALL32-NEXT: stwu r1, -32(r1) 803*21bea1a2SQiu Chaofan; SMALL32-NEXT: lwz r4, L..C7(r2) # target-flags(ppc-tprel) @intern_long_nonzero 804*21bea1a2SQiu Chaofan; SMALL32-NEXT: bla .__get_tpointer[PR] 805*21bea1a2SQiu Chaofan; SMALL32-NEXT: stw r0, 40(r1) 806*21bea1a2SQiu Chaofan; SMALL32-NEXT: add r4, r3, r4 807*21bea1a2SQiu Chaofan; SMALL32-NEXT: lwz r3, 0(r4) 808*21bea1a2SQiu Chaofan; SMALL32-NEXT: lwz r4, 4(r4) 809*21bea1a2SQiu Chaofan; SMALL32-NEXT: addi r1, r1, 32 810*21bea1a2SQiu Chaofan; SMALL32-NEXT: lwz r0, 8(r1) 811*21bea1a2SQiu Chaofan; SMALL32-NEXT: mtlr r0 812*21bea1a2SQiu Chaofan; SMALL32-NEXT: blr 813*21bea1a2SQiu Chaofanentry: 814*21bea1a2SQiu Chaofan %addr = tail call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @intern_long_nonzero) 815*21bea1a2SQiu Chaofan %val = load i64, ptr %addr, align 8 816*21bea1a2SQiu Chaofan ret i64 %val 817*21bea1a2SQiu Chaofan} 818*21bea1a2SQiu Chaofan 819*21bea1a2SQiu Chaofandefine void @store_global_float_zero(float noundef %i) { 820*21bea1a2SQiu Chaofan; LARGE64-LABEL: store_global_float_zero: 821*21bea1a2SQiu Chaofan; LARGE64: # %bb.0: # %entry 822*21bea1a2SQiu Chaofan; LARGE64-NEXT: addis r3, L..C8@u(r2) 823*21bea1a2SQiu Chaofan; LARGE64-NEXT: ld r3, L..C8@l(r3) 824*21bea1a2SQiu Chaofan; LARGE64-NEXT: stfsx f1, r13, r3 825*21bea1a2SQiu Chaofan; LARGE64-NEXT: blr 826*21bea1a2SQiu Chaofan; 827*21bea1a2SQiu Chaofan; SMALL64-LABEL: store_global_float_zero: 828*21bea1a2SQiu Chaofan; SMALL64: # %bb.0: # %entry 829*21bea1a2SQiu Chaofan; SMALL64-NEXT: ld r3, L..C8(r2) # target-flags(ppc-tprel) @global_float_zero 830*21bea1a2SQiu Chaofan; SMALL64-NEXT: stfsx f1, r13, r3 831*21bea1a2SQiu Chaofan; SMALL64-NEXT: blr 832*21bea1a2SQiu Chaofan; 833*21bea1a2SQiu Chaofan; LARGE32-LABEL: store_global_float_zero: 834*21bea1a2SQiu Chaofan; LARGE32: # %bb.0: # %entry 835*21bea1a2SQiu Chaofan; LARGE32-NEXT: mflr r0 836*21bea1a2SQiu Chaofan; LARGE32-NEXT: stwu r1, -32(r1) 837*21bea1a2SQiu Chaofan; LARGE32-NEXT: stw r0, 40(r1) 838*21bea1a2SQiu Chaofan; LARGE32-NEXT: addis r3, L..C8@u(r2) 839*21bea1a2SQiu Chaofan; LARGE32-NEXT: lwz r4, L..C8@l(r3) 840*21bea1a2SQiu Chaofan; LARGE32-NEXT: bla .__get_tpointer[PR] 841*21bea1a2SQiu Chaofan; LARGE32-NEXT: stfsx f1, r3, r4 842*21bea1a2SQiu Chaofan; LARGE32-NEXT: addi r1, r1, 32 843*21bea1a2SQiu Chaofan; LARGE32-NEXT: lwz r0, 8(r1) 844*21bea1a2SQiu Chaofan; LARGE32-NEXT: mtlr r0 845*21bea1a2SQiu Chaofan; LARGE32-NEXT: blr 846*21bea1a2SQiu Chaofan; 847*21bea1a2SQiu Chaofan; SMALL32-LABEL: store_global_float_zero: 848*21bea1a2SQiu Chaofan; SMALL32: # %bb.0: # %entry 849*21bea1a2SQiu Chaofan; SMALL32-NEXT: mflr r0 850*21bea1a2SQiu Chaofan; SMALL32-NEXT: stwu r1, -32(r1) 851*21bea1a2SQiu Chaofan; SMALL32-NEXT: lwz r4, L..C8(r2) # target-flags(ppc-tprel) @global_float_zero 852*21bea1a2SQiu Chaofan; SMALL32-NEXT: bla .__get_tpointer[PR] 853*21bea1a2SQiu Chaofan; SMALL32-NEXT: stw r0, 40(r1) 854*21bea1a2SQiu Chaofan; SMALL32-NEXT: stfsx f1, r3, r4 855*21bea1a2SQiu Chaofan; SMALL32-NEXT: addi r1, r1, 32 856*21bea1a2SQiu Chaofan; SMALL32-NEXT: lwz r0, 8(r1) 857*21bea1a2SQiu Chaofan; SMALL32-NEXT: mtlr r0 858*21bea1a2SQiu Chaofan; SMALL32-NEXT: blr 859*21bea1a2SQiu Chaofanentry: 860*21bea1a2SQiu Chaofan %addr = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @global_float_zero) 861*21bea1a2SQiu Chaofan store float %i, ptr %addr, align 4 862*21bea1a2SQiu Chaofan ret void 863*21bea1a2SQiu Chaofan} 864*21bea1a2SQiu Chaofan 865*21bea1a2SQiu Chaofandefine void @store_global_float_nonzero(float noundef %i) { 866*21bea1a2SQiu Chaofan; LARGE64-LABEL: store_global_float_nonzero: 867*21bea1a2SQiu Chaofan; LARGE64: # %bb.0: # %entry 868*21bea1a2SQiu Chaofan; LARGE64-NEXT: addis r3, L..C9@u(r2) 869*21bea1a2SQiu Chaofan; LARGE64-NEXT: ld r3, L..C9@l(r3) 870*21bea1a2SQiu Chaofan; LARGE64-NEXT: stfsx f1, r13, r3 871*21bea1a2SQiu Chaofan; LARGE64-NEXT: blr 872*21bea1a2SQiu Chaofan; 873*21bea1a2SQiu Chaofan; SMALL64-LABEL: store_global_float_nonzero: 874*21bea1a2SQiu Chaofan; SMALL64: # %bb.0: # %entry 875*21bea1a2SQiu Chaofan; SMALL64-NEXT: ld r3, L..C9(r2) # target-flags(ppc-tprel) @global_float_nonzero 876*21bea1a2SQiu Chaofan; SMALL64-NEXT: stfsx f1, r13, r3 877*21bea1a2SQiu Chaofan; SMALL64-NEXT: blr 878*21bea1a2SQiu Chaofan; 879*21bea1a2SQiu Chaofan; LARGE32-LABEL: store_global_float_nonzero: 880*21bea1a2SQiu Chaofan; LARGE32: # %bb.0: # %entry 881*21bea1a2SQiu Chaofan; LARGE32-NEXT: mflr r0 882*21bea1a2SQiu Chaofan; LARGE32-NEXT: stwu r1, -32(r1) 883*21bea1a2SQiu Chaofan; LARGE32-NEXT: stw r0, 40(r1) 884*21bea1a2SQiu Chaofan; LARGE32-NEXT: addis r3, L..C9@u(r2) 885*21bea1a2SQiu Chaofan; LARGE32-NEXT: lwz r4, L..C9@l(r3) 886*21bea1a2SQiu Chaofan; LARGE32-NEXT: bla .__get_tpointer[PR] 887*21bea1a2SQiu Chaofan; LARGE32-NEXT: stfsx f1, r3, r4 888*21bea1a2SQiu Chaofan; LARGE32-NEXT: addi r1, r1, 32 889*21bea1a2SQiu Chaofan; LARGE32-NEXT: lwz r0, 8(r1) 890*21bea1a2SQiu Chaofan; LARGE32-NEXT: mtlr r0 891*21bea1a2SQiu Chaofan; LARGE32-NEXT: blr 892*21bea1a2SQiu Chaofan; 893*21bea1a2SQiu Chaofan; SMALL32-LABEL: store_global_float_nonzero: 894*21bea1a2SQiu Chaofan; SMALL32: # %bb.0: # %entry 895*21bea1a2SQiu Chaofan; SMALL32-NEXT: mflr r0 896*21bea1a2SQiu Chaofan; SMALL32-NEXT: stwu r1, -32(r1) 897*21bea1a2SQiu Chaofan; SMALL32-NEXT: lwz r4, L..C9(r2) # target-flags(ppc-tprel) @global_float_nonzero 898*21bea1a2SQiu Chaofan; SMALL32-NEXT: bla .__get_tpointer[PR] 899*21bea1a2SQiu Chaofan; SMALL32-NEXT: stw r0, 40(r1) 900*21bea1a2SQiu Chaofan; SMALL32-NEXT: stfsx f1, r3, r4 901*21bea1a2SQiu Chaofan; SMALL32-NEXT: addi r1, r1, 32 902*21bea1a2SQiu Chaofan; SMALL32-NEXT: lwz r0, 8(r1) 903*21bea1a2SQiu Chaofan; SMALL32-NEXT: mtlr r0 904*21bea1a2SQiu Chaofan; SMALL32-NEXT: blr 905*21bea1a2SQiu Chaofanentry: 906*21bea1a2SQiu Chaofan %addr = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @global_float_nonzero) 907*21bea1a2SQiu Chaofan store float %i, ptr %addr, align 4 908*21bea1a2SQiu Chaofan ret void 909*21bea1a2SQiu Chaofan} 910*21bea1a2SQiu Chaofan 911*21bea1a2SQiu Chaofandefine void @store_intern_float_zero(float noundef %i) { 912*21bea1a2SQiu Chaofan; LARGE64-LABEL: store_intern_float_zero: 913*21bea1a2SQiu Chaofan; LARGE64: # %bb.0: # %entry 914*21bea1a2SQiu Chaofan; LARGE64-NEXT: addis r3, L..C10@u(r2) 915*21bea1a2SQiu Chaofan; LARGE64-NEXT: ld r3, L..C10@l(r3) 916*21bea1a2SQiu Chaofan; LARGE64-NEXT: stfsx f1, r13, r3 917*21bea1a2SQiu Chaofan; LARGE64-NEXT: blr 918*21bea1a2SQiu Chaofan; 919*21bea1a2SQiu Chaofan; SMALL64-LABEL: store_intern_float_zero: 920*21bea1a2SQiu Chaofan; SMALL64: # %bb.0: # %entry 921*21bea1a2SQiu Chaofan; SMALL64-NEXT: ld r3, L..C10(r2) # target-flags(ppc-tprel) @intern_float_zero 922*21bea1a2SQiu Chaofan; SMALL64-NEXT: stfsx f1, r13, r3 923*21bea1a2SQiu Chaofan; SMALL64-NEXT: blr 924*21bea1a2SQiu Chaofan; 925*21bea1a2SQiu Chaofan; LARGE32-LABEL: store_intern_float_zero: 926*21bea1a2SQiu Chaofan; LARGE32: # %bb.0: # %entry 927*21bea1a2SQiu Chaofan; LARGE32-NEXT: mflr r0 928*21bea1a2SQiu Chaofan; LARGE32-NEXT: stwu r1, -32(r1) 929*21bea1a2SQiu Chaofan; LARGE32-NEXT: stw r0, 40(r1) 930*21bea1a2SQiu Chaofan; LARGE32-NEXT: addis r3, L..C10@u(r2) 931*21bea1a2SQiu Chaofan; LARGE32-NEXT: lwz r4, L..C10@l(r3) 932*21bea1a2SQiu Chaofan; LARGE32-NEXT: bla .__get_tpointer[PR] 933*21bea1a2SQiu Chaofan; LARGE32-NEXT: stfsx f1, r3, r4 934*21bea1a2SQiu Chaofan; LARGE32-NEXT: addi r1, r1, 32 935*21bea1a2SQiu Chaofan; LARGE32-NEXT: lwz r0, 8(r1) 936*21bea1a2SQiu Chaofan; LARGE32-NEXT: mtlr r0 937*21bea1a2SQiu Chaofan; LARGE32-NEXT: blr 938*21bea1a2SQiu Chaofan; 939*21bea1a2SQiu Chaofan; SMALL32-LABEL: store_intern_float_zero: 940*21bea1a2SQiu Chaofan; SMALL32: # %bb.0: # %entry 941*21bea1a2SQiu Chaofan; SMALL32-NEXT: mflr r0 942*21bea1a2SQiu Chaofan; SMALL32-NEXT: stwu r1, -32(r1) 943*21bea1a2SQiu Chaofan; SMALL32-NEXT: lwz r4, L..C10(r2) # target-flags(ppc-tprel) @intern_float_zero 944*21bea1a2SQiu Chaofan; SMALL32-NEXT: bla .__get_tpointer[PR] 945*21bea1a2SQiu Chaofan; SMALL32-NEXT: stw r0, 40(r1) 946*21bea1a2SQiu Chaofan; SMALL32-NEXT: stfsx f1, r3, r4 947*21bea1a2SQiu Chaofan; SMALL32-NEXT: addi r1, r1, 32 948*21bea1a2SQiu Chaofan; SMALL32-NEXT: lwz r0, 8(r1) 949*21bea1a2SQiu Chaofan; SMALL32-NEXT: mtlr r0 950*21bea1a2SQiu Chaofan; SMALL32-NEXT: blr 951*21bea1a2SQiu Chaofanentry: 952*21bea1a2SQiu Chaofan %addr = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @intern_float_zero) 953*21bea1a2SQiu Chaofan store float %i, ptr %addr, align 4 954*21bea1a2SQiu Chaofan ret void 955*21bea1a2SQiu Chaofan} 956*21bea1a2SQiu Chaofan 957*21bea1a2SQiu Chaofandefine void @store_intern_float_nonzero(float noundef %i) { 958*21bea1a2SQiu Chaofan; LARGE64-LABEL: store_intern_float_nonzero: 959*21bea1a2SQiu Chaofan; LARGE64: # %bb.0: # %entry 960*21bea1a2SQiu Chaofan; LARGE64-NEXT: addis r3, L..C11@u(r2) 961*21bea1a2SQiu Chaofan; LARGE64-NEXT: ld r3, L..C11@l(r3) 962*21bea1a2SQiu Chaofan; LARGE64-NEXT: stfsx f1, r13, r3 963*21bea1a2SQiu Chaofan; LARGE64-NEXT: blr 964*21bea1a2SQiu Chaofan; 965*21bea1a2SQiu Chaofan; SMALL64-LABEL: store_intern_float_nonzero: 966*21bea1a2SQiu Chaofan; SMALL64: # %bb.0: # %entry 967*21bea1a2SQiu Chaofan; SMALL64-NEXT: ld r3, L..C11(r2) # target-flags(ppc-tprel) @intern_float_nonzero 968*21bea1a2SQiu Chaofan; SMALL64-NEXT: stfsx f1, r13, r3 969*21bea1a2SQiu Chaofan; SMALL64-NEXT: blr 970*21bea1a2SQiu Chaofan; 971*21bea1a2SQiu Chaofan; LARGE32-LABEL: store_intern_float_nonzero: 972*21bea1a2SQiu Chaofan; LARGE32: # %bb.0: # %entry 973*21bea1a2SQiu Chaofan; LARGE32-NEXT: mflr r0 974*21bea1a2SQiu Chaofan; LARGE32-NEXT: stwu r1, -32(r1) 975*21bea1a2SQiu Chaofan; LARGE32-NEXT: stw r0, 40(r1) 976*21bea1a2SQiu Chaofan; LARGE32-NEXT: addis r3, L..C11@u(r2) 977*21bea1a2SQiu Chaofan; LARGE32-NEXT: lwz r4, L..C11@l(r3) 978*21bea1a2SQiu Chaofan; LARGE32-NEXT: bla .__get_tpointer[PR] 979*21bea1a2SQiu Chaofan; LARGE32-NEXT: stfsx f1, r3, r4 980*21bea1a2SQiu Chaofan; LARGE32-NEXT: addi r1, r1, 32 981*21bea1a2SQiu Chaofan; LARGE32-NEXT: lwz r0, 8(r1) 982*21bea1a2SQiu Chaofan; LARGE32-NEXT: mtlr r0 983*21bea1a2SQiu Chaofan; LARGE32-NEXT: blr 984*21bea1a2SQiu Chaofan; 985*21bea1a2SQiu Chaofan; SMALL32-LABEL: store_intern_float_nonzero: 986*21bea1a2SQiu Chaofan; SMALL32: # %bb.0: # %entry 987*21bea1a2SQiu Chaofan; SMALL32-NEXT: mflr r0 988*21bea1a2SQiu Chaofan; SMALL32-NEXT: stwu r1, -32(r1) 989*21bea1a2SQiu Chaofan; SMALL32-NEXT: lwz r4, L..C11(r2) # target-flags(ppc-tprel) @intern_float_nonzero 990*21bea1a2SQiu Chaofan; SMALL32-NEXT: bla .__get_tpointer[PR] 991*21bea1a2SQiu Chaofan; SMALL32-NEXT: stw r0, 40(r1) 992*21bea1a2SQiu Chaofan; SMALL32-NEXT: stfsx f1, r3, r4 993*21bea1a2SQiu Chaofan; SMALL32-NEXT: addi r1, r1, 32 994*21bea1a2SQiu Chaofan; SMALL32-NEXT: lwz r0, 8(r1) 995*21bea1a2SQiu Chaofan; SMALL32-NEXT: mtlr r0 996*21bea1a2SQiu Chaofan; SMALL32-NEXT: blr 997*21bea1a2SQiu Chaofanentry: 998*21bea1a2SQiu Chaofan %addr = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @intern_float_nonzero) 999*21bea1a2SQiu Chaofan store float %i, ptr %addr, align 4 1000*21bea1a2SQiu Chaofan ret void 1001*21bea1a2SQiu Chaofan} 1002*21bea1a2SQiu Chaofan 1003*21bea1a2SQiu Chaofandefine float @load_global_float_zero() { 1004*21bea1a2SQiu Chaofan; LARGE64-LABEL: load_global_float_zero: 1005*21bea1a2SQiu Chaofan; LARGE64: # %bb.0: # %entry 1006*21bea1a2SQiu Chaofan; LARGE64-NEXT: addis r3, L..C8@u(r2) 1007*21bea1a2SQiu Chaofan; LARGE64-NEXT: ld r3, L..C8@l(r3) 1008*21bea1a2SQiu Chaofan; LARGE64-NEXT: lfsx f1, r13, r3 1009*21bea1a2SQiu Chaofan; LARGE64-NEXT: blr 1010*21bea1a2SQiu Chaofan; 1011*21bea1a2SQiu Chaofan; SMALL64-LABEL: load_global_float_zero: 1012*21bea1a2SQiu Chaofan; SMALL64: # %bb.0: # %entry 1013*21bea1a2SQiu Chaofan; SMALL64-NEXT: ld r3, L..C8(r2) # target-flags(ppc-tprel) @global_float_zero 1014*21bea1a2SQiu Chaofan; SMALL64-NEXT: lfsx f1, r13, r3 1015*21bea1a2SQiu Chaofan; SMALL64-NEXT: blr 1016*21bea1a2SQiu Chaofan; 1017*21bea1a2SQiu Chaofan; LARGE32-LABEL: load_global_float_zero: 1018*21bea1a2SQiu Chaofan; LARGE32: # %bb.0: # %entry 1019*21bea1a2SQiu Chaofan; LARGE32-NEXT: mflr r0 1020*21bea1a2SQiu Chaofan; LARGE32-NEXT: stwu r1, -32(r1) 1021*21bea1a2SQiu Chaofan; LARGE32-NEXT: stw r0, 40(r1) 1022*21bea1a2SQiu Chaofan; LARGE32-NEXT: addis r3, L..C8@u(r2) 1023*21bea1a2SQiu Chaofan; LARGE32-NEXT: lwz r4, L..C8@l(r3) 1024*21bea1a2SQiu Chaofan; LARGE32-NEXT: bla .__get_tpointer[PR] 1025*21bea1a2SQiu Chaofan; LARGE32-NEXT: lfsx f1, r3, r4 1026*21bea1a2SQiu Chaofan; LARGE32-NEXT: addi r1, r1, 32 1027*21bea1a2SQiu Chaofan; LARGE32-NEXT: lwz r0, 8(r1) 1028*21bea1a2SQiu Chaofan; LARGE32-NEXT: mtlr r0 1029*21bea1a2SQiu Chaofan; LARGE32-NEXT: blr 1030*21bea1a2SQiu Chaofan; 1031*21bea1a2SQiu Chaofan; SMALL32-LABEL: load_global_float_zero: 1032*21bea1a2SQiu Chaofan; SMALL32: # %bb.0: # %entry 1033*21bea1a2SQiu Chaofan; SMALL32-NEXT: mflr r0 1034*21bea1a2SQiu Chaofan; SMALL32-NEXT: stwu r1, -32(r1) 1035*21bea1a2SQiu Chaofan; SMALL32-NEXT: lwz r4, L..C8(r2) # target-flags(ppc-tprel) @global_float_zero 1036*21bea1a2SQiu Chaofan; SMALL32-NEXT: stw r0, 40(r1) 1037*21bea1a2SQiu Chaofan; SMALL32-NEXT: bla .__get_tpointer[PR] 1038*21bea1a2SQiu Chaofan; SMALL32-NEXT: lfsx f1, r3, r4 1039*21bea1a2SQiu Chaofan; SMALL32-NEXT: addi r1, r1, 32 1040*21bea1a2SQiu Chaofan; SMALL32-NEXT: lwz r0, 8(r1) 1041*21bea1a2SQiu Chaofan; SMALL32-NEXT: mtlr r0 1042*21bea1a2SQiu Chaofan; SMALL32-NEXT: blr 1043*21bea1a2SQiu Chaofanentry: 1044*21bea1a2SQiu Chaofan %addr = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @global_float_zero) 1045*21bea1a2SQiu Chaofan %val = load float, ptr %addr, align 4 1046*21bea1a2SQiu Chaofan ret float %val 1047*21bea1a2SQiu Chaofan} 1048*21bea1a2SQiu Chaofan 1049*21bea1a2SQiu Chaofandefine float @load_global_float_nonzero() { 1050*21bea1a2SQiu Chaofan; LARGE64-LABEL: load_global_float_nonzero: 1051*21bea1a2SQiu Chaofan; LARGE64: # %bb.0: # %entry 1052*21bea1a2SQiu Chaofan; LARGE64-NEXT: addis r3, L..C9@u(r2) 1053*21bea1a2SQiu Chaofan; LARGE64-NEXT: ld r3, L..C9@l(r3) 1054*21bea1a2SQiu Chaofan; LARGE64-NEXT: lfsx f1, r13, r3 1055*21bea1a2SQiu Chaofan; LARGE64-NEXT: blr 1056*21bea1a2SQiu Chaofan; 1057*21bea1a2SQiu Chaofan; SMALL64-LABEL: load_global_float_nonzero: 1058*21bea1a2SQiu Chaofan; SMALL64: # %bb.0: # %entry 1059*21bea1a2SQiu Chaofan; SMALL64-NEXT: ld r3, L..C9(r2) # target-flags(ppc-tprel) @global_float_nonzero 1060*21bea1a2SQiu Chaofan; SMALL64-NEXT: lfsx f1, r13, r3 1061*21bea1a2SQiu Chaofan; SMALL64-NEXT: blr 1062*21bea1a2SQiu Chaofan; 1063*21bea1a2SQiu Chaofan; LARGE32-LABEL: load_global_float_nonzero: 1064*21bea1a2SQiu Chaofan; LARGE32: # %bb.0: # %entry 1065*21bea1a2SQiu Chaofan; LARGE32-NEXT: mflr r0 1066*21bea1a2SQiu Chaofan; LARGE32-NEXT: stwu r1, -32(r1) 1067*21bea1a2SQiu Chaofan; LARGE32-NEXT: stw r0, 40(r1) 1068*21bea1a2SQiu Chaofan; LARGE32-NEXT: addis r3, L..C9@u(r2) 1069*21bea1a2SQiu Chaofan; LARGE32-NEXT: lwz r4, L..C9@l(r3) 1070*21bea1a2SQiu Chaofan; LARGE32-NEXT: bla .__get_tpointer[PR] 1071*21bea1a2SQiu Chaofan; LARGE32-NEXT: lfsx f1, r3, r4 1072*21bea1a2SQiu Chaofan; LARGE32-NEXT: addi r1, r1, 32 1073*21bea1a2SQiu Chaofan; LARGE32-NEXT: lwz r0, 8(r1) 1074*21bea1a2SQiu Chaofan; LARGE32-NEXT: mtlr r0 1075*21bea1a2SQiu Chaofan; LARGE32-NEXT: blr 1076*21bea1a2SQiu Chaofan; 1077*21bea1a2SQiu Chaofan; SMALL32-LABEL: load_global_float_nonzero: 1078*21bea1a2SQiu Chaofan; SMALL32: # %bb.0: # %entry 1079*21bea1a2SQiu Chaofan; SMALL32-NEXT: mflr r0 1080*21bea1a2SQiu Chaofan; SMALL32-NEXT: stwu r1, -32(r1) 1081*21bea1a2SQiu Chaofan; SMALL32-NEXT: lwz r4, L..C9(r2) # target-flags(ppc-tprel) @global_float_nonzero 1082*21bea1a2SQiu Chaofan; SMALL32-NEXT: stw r0, 40(r1) 1083*21bea1a2SQiu Chaofan; SMALL32-NEXT: bla .__get_tpointer[PR] 1084*21bea1a2SQiu Chaofan; SMALL32-NEXT: lfsx f1, r3, r4 1085*21bea1a2SQiu Chaofan; SMALL32-NEXT: addi r1, r1, 32 1086*21bea1a2SQiu Chaofan; SMALL32-NEXT: lwz r0, 8(r1) 1087*21bea1a2SQiu Chaofan; SMALL32-NEXT: mtlr r0 1088*21bea1a2SQiu Chaofan; SMALL32-NEXT: blr 1089*21bea1a2SQiu Chaofanentry: 1090*21bea1a2SQiu Chaofan %addr = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @global_float_nonzero) 1091*21bea1a2SQiu Chaofan %val = load float, ptr %addr, align 4 1092*21bea1a2SQiu Chaofan ret float %val 1093*21bea1a2SQiu Chaofan} 1094*21bea1a2SQiu Chaofan 1095*21bea1a2SQiu Chaofandefine float @load_intern_float_zero() { 1096*21bea1a2SQiu Chaofan; LARGE64-LABEL: load_intern_float_zero: 1097*21bea1a2SQiu Chaofan; LARGE64: # %bb.0: # %entry 1098*21bea1a2SQiu Chaofan; LARGE64-NEXT: addis r3, L..C10@u(r2) 1099*21bea1a2SQiu Chaofan; LARGE64-NEXT: ld r3, L..C10@l(r3) 1100*21bea1a2SQiu Chaofan; LARGE64-NEXT: lfsx f1, r13, r3 1101*21bea1a2SQiu Chaofan; LARGE64-NEXT: blr 1102*21bea1a2SQiu Chaofan; 1103*21bea1a2SQiu Chaofan; SMALL64-LABEL: load_intern_float_zero: 1104*21bea1a2SQiu Chaofan; SMALL64: # %bb.0: # %entry 1105*21bea1a2SQiu Chaofan; SMALL64-NEXT: ld r3, L..C10(r2) # target-flags(ppc-tprel) @intern_float_zero 1106*21bea1a2SQiu Chaofan; SMALL64-NEXT: lfsx f1, r13, r3 1107*21bea1a2SQiu Chaofan; SMALL64-NEXT: blr 1108*21bea1a2SQiu Chaofan; 1109*21bea1a2SQiu Chaofan; LARGE32-LABEL: load_intern_float_zero: 1110*21bea1a2SQiu Chaofan; LARGE32: # %bb.0: # %entry 1111*21bea1a2SQiu Chaofan; LARGE32-NEXT: mflr r0 1112*21bea1a2SQiu Chaofan; LARGE32-NEXT: stwu r1, -32(r1) 1113*21bea1a2SQiu Chaofan; LARGE32-NEXT: stw r0, 40(r1) 1114*21bea1a2SQiu Chaofan; LARGE32-NEXT: addis r3, L..C10@u(r2) 1115*21bea1a2SQiu Chaofan; LARGE32-NEXT: lwz r4, L..C10@l(r3) 1116*21bea1a2SQiu Chaofan; LARGE32-NEXT: bla .__get_tpointer[PR] 1117*21bea1a2SQiu Chaofan; LARGE32-NEXT: lfsx f1, r3, r4 1118*21bea1a2SQiu Chaofan; LARGE32-NEXT: addi r1, r1, 32 1119*21bea1a2SQiu Chaofan; LARGE32-NEXT: lwz r0, 8(r1) 1120*21bea1a2SQiu Chaofan; LARGE32-NEXT: mtlr r0 1121*21bea1a2SQiu Chaofan; LARGE32-NEXT: blr 1122*21bea1a2SQiu Chaofan; 1123*21bea1a2SQiu Chaofan; SMALL32-LABEL: load_intern_float_zero: 1124*21bea1a2SQiu Chaofan; SMALL32: # %bb.0: # %entry 1125*21bea1a2SQiu Chaofan; SMALL32-NEXT: mflr r0 1126*21bea1a2SQiu Chaofan; SMALL32-NEXT: stwu r1, -32(r1) 1127*21bea1a2SQiu Chaofan; SMALL32-NEXT: lwz r4, L..C10(r2) # target-flags(ppc-tprel) @intern_float_zero 1128*21bea1a2SQiu Chaofan; SMALL32-NEXT: stw r0, 40(r1) 1129*21bea1a2SQiu Chaofan; SMALL32-NEXT: bla .__get_tpointer[PR] 1130*21bea1a2SQiu Chaofan; SMALL32-NEXT: lfsx f1, r3, r4 1131*21bea1a2SQiu Chaofan; SMALL32-NEXT: addi r1, r1, 32 1132*21bea1a2SQiu Chaofan; SMALL32-NEXT: lwz r0, 8(r1) 1133*21bea1a2SQiu Chaofan; SMALL32-NEXT: mtlr r0 1134*21bea1a2SQiu Chaofan; SMALL32-NEXT: blr 1135*21bea1a2SQiu Chaofanentry: 1136*21bea1a2SQiu Chaofan %addr = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @intern_float_zero) 1137*21bea1a2SQiu Chaofan %val = load float, ptr %addr, align 4 1138*21bea1a2SQiu Chaofan ret float %val 1139*21bea1a2SQiu Chaofan} 1140*21bea1a2SQiu Chaofan 1141*21bea1a2SQiu Chaofandefine float @load_intern_float_nonzero() { 1142*21bea1a2SQiu Chaofan; LARGE64-LABEL: load_intern_float_nonzero: 1143*21bea1a2SQiu Chaofan; LARGE64: # %bb.0: # %entry 1144*21bea1a2SQiu Chaofan; LARGE64-NEXT: addis r3, L..C11@u(r2) 1145*21bea1a2SQiu Chaofan; LARGE64-NEXT: ld r3, L..C11@l(r3) 1146*21bea1a2SQiu Chaofan; LARGE64-NEXT: lfsx f1, r13, r3 1147*21bea1a2SQiu Chaofan; LARGE64-NEXT: blr 1148*21bea1a2SQiu Chaofan; 1149*21bea1a2SQiu Chaofan; SMALL64-LABEL: load_intern_float_nonzero: 1150*21bea1a2SQiu Chaofan; SMALL64: # %bb.0: # %entry 1151*21bea1a2SQiu Chaofan; SMALL64-NEXT: ld r3, L..C11(r2) # target-flags(ppc-tprel) @intern_float_nonzero 1152*21bea1a2SQiu Chaofan; SMALL64-NEXT: lfsx f1, r13, r3 1153*21bea1a2SQiu Chaofan; SMALL64-NEXT: blr 1154*21bea1a2SQiu Chaofan; 1155*21bea1a2SQiu Chaofan; LARGE32-LABEL: load_intern_float_nonzero: 1156*21bea1a2SQiu Chaofan; LARGE32: # %bb.0: # %entry 1157*21bea1a2SQiu Chaofan; LARGE32-NEXT: mflr r0 1158*21bea1a2SQiu Chaofan; LARGE32-NEXT: stwu r1, -32(r1) 1159*21bea1a2SQiu Chaofan; LARGE32-NEXT: stw r0, 40(r1) 1160*21bea1a2SQiu Chaofan; LARGE32-NEXT: addis r3, L..C11@u(r2) 1161*21bea1a2SQiu Chaofan; LARGE32-NEXT: lwz r4, L..C11@l(r3) 1162*21bea1a2SQiu Chaofan; LARGE32-NEXT: bla .__get_tpointer[PR] 1163*21bea1a2SQiu Chaofan; LARGE32-NEXT: lfsx f1, r3, r4 1164*21bea1a2SQiu Chaofan; LARGE32-NEXT: addi r1, r1, 32 1165*21bea1a2SQiu Chaofan; LARGE32-NEXT: lwz r0, 8(r1) 1166*21bea1a2SQiu Chaofan; LARGE32-NEXT: mtlr r0 1167*21bea1a2SQiu Chaofan; LARGE32-NEXT: blr 1168*21bea1a2SQiu Chaofan; 1169*21bea1a2SQiu Chaofan; SMALL32-LABEL: load_intern_float_nonzero: 1170*21bea1a2SQiu Chaofan; SMALL32: # %bb.0: # %entry 1171*21bea1a2SQiu Chaofan; SMALL32-NEXT: mflr r0 1172*21bea1a2SQiu Chaofan; SMALL32-NEXT: stwu r1, -32(r1) 1173*21bea1a2SQiu Chaofan; SMALL32-NEXT: lwz r4, L..C11(r2) # target-flags(ppc-tprel) @intern_float_nonzero 1174*21bea1a2SQiu Chaofan; SMALL32-NEXT: stw r0, 40(r1) 1175*21bea1a2SQiu Chaofan; SMALL32-NEXT: bla .__get_tpointer[PR] 1176*21bea1a2SQiu Chaofan; SMALL32-NEXT: lfsx f1, r3, r4 1177*21bea1a2SQiu Chaofan; SMALL32-NEXT: addi r1, r1, 32 1178*21bea1a2SQiu Chaofan; SMALL32-NEXT: lwz r0, 8(r1) 1179*21bea1a2SQiu Chaofan; SMALL32-NEXT: mtlr r0 1180*21bea1a2SQiu Chaofan; SMALL32-NEXT: blr 1181*21bea1a2SQiu Chaofanentry: 1182*21bea1a2SQiu Chaofan %addr = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @intern_float_nonzero) 1183*21bea1a2SQiu Chaofan %val = load float, ptr %addr, align 4 1184*21bea1a2SQiu Chaofan ret float %val 1185*21bea1a2SQiu Chaofan} 1186*21bea1a2SQiu Chaofan 1187*21bea1a2SQiu Chaofandefine void @store_global_double_zero(double noundef %i) { 1188*21bea1a2SQiu Chaofan; LARGE64-LABEL: store_global_double_zero: 1189*21bea1a2SQiu Chaofan; LARGE64: # %bb.0: # %entry 1190*21bea1a2SQiu Chaofan; LARGE64-NEXT: addis r3, L..C12@u(r2) 1191*21bea1a2SQiu Chaofan; LARGE64-NEXT: ld r3, L..C12@l(r3) 1192*21bea1a2SQiu Chaofan; LARGE64-NEXT: stfdx f1, r13, r3 1193*21bea1a2SQiu Chaofan; LARGE64-NEXT: blr 1194*21bea1a2SQiu Chaofan; 1195*21bea1a2SQiu Chaofan; SMALL64-LABEL: store_global_double_zero: 1196*21bea1a2SQiu Chaofan; SMALL64: # %bb.0: # %entry 1197*21bea1a2SQiu Chaofan; SMALL64-NEXT: ld r3, L..C12(r2) # target-flags(ppc-tprel) @global_double_zero 1198*21bea1a2SQiu Chaofan; SMALL64-NEXT: stfdx f1, r13, r3 1199*21bea1a2SQiu Chaofan; SMALL64-NEXT: blr 1200*21bea1a2SQiu Chaofan; 1201*21bea1a2SQiu Chaofan; LARGE32-LABEL: store_global_double_zero: 1202*21bea1a2SQiu Chaofan; LARGE32: # %bb.0: # %entry 1203*21bea1a2SQiu Chaofan; LARGE32-NEXT: mflr r0 1204*21bea1a2SQiu Chaofan; LARGE32-NEXT: stwu r1, -32(r1) 1205*21bea1a2SQiu Chaofan; LARGE32-NEXT: stw r0, 40(r1) 1206*21bea1a2SQiu Chaofan; LARGE32-NEXT: addis r3, L..C12@u(r2) 1207*21bea1a2SQiu Chaofan; LARGE32-NEXT: lwz r4, L..C12@l(r3) 1208*21bea1a2SQiu Chaofan; LARGE32-NEXT: bla .__get_tpointer[PR] 1209*21bea1a2SQiu Chaofan; LARGE32-NEXT: stfdx f1, r3, r4 1210*21bea1a2SQiu Chaofan; LARGE32-NEXT: addi r1, r1, 32 1211*21bea1a2SQiu Chaofan; LARGE32-NEXT: lwz r0, 8(r1) 1212*21bea1a2SQiu Chaofan; LARGE32-NEXT: mtlr r0 1213*21bea1a2SQiu Chaofan; LARGE32-NEXT: blr 1214*21bea1a2SQiu Chaofan; 1215*21bea1a2SQiu Chaofan; SMALL32-LABEL: store_global_double_zero: 1216*21bea1a2SQiu Chaofan; SMALL32: # %bb.0: # %entry 1217*21bea1a2SQiu Chaofan; SMALL32-NEXT: mflr r0 1218*21bea1a2SQiu Chaofan; SMALL32-NEXT: stwu r1, -32(r1) 1219*21bea1a2SQiu Chaofan; SMALL32-NEXT: lwz r4, L..C12(r2) # target-flags(ppc-tprel) @global_double_zero 1220*21bea1a2SQiu Chaofan; SMALL32-NEXT: bla .__get_tpointer[PR] 1221*21bea1a2SQiu Chaofan; SMALL32-NEXT: stw r0, 40(r1) 1222*21bea1a2SQiu Chaofan; SMALL32-NEXT: stfdx f1, r3, r4 1223*21bea1a2SQiu Chaofan; SMALL32-NEXT: addi r1, r1, 32 1224*21bea1a2SQiu Chaofan; SMALL32-NEXT: lwz r0, 8(r1) 1225*21bea1a2SQiu Chaofan; SMALL32-NEXT: mtlr r0 1226*21bea1a2SQiu Chaofan; SMALL32-NEXT: blr 1227*21bea1a2SQiu Chaofanentry: 1228*21bea1a2SQiu Chaofan %addr = tail call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @global_double_zero) 1229*21bea1a2SQiu Chaofan store double %i, ptr %addr, align 8 1230*21bea1a2SQiu Chaofan ret void 1231*21bea1a2SQiu Chaofan} 1232*21bea1a2SQiu Chaofan 1233*21bea1a2SQiu Chaofandefine void @store_global_double_nonzero(double noundef %i) { 1234*21bea1a2SQiu Chaofan; LARGE64-LABEL: store_global_double_nonzero: 1235*21bea1a2SQiu Chaofan; LARGE64: # %bb.0: # %entry 1236*21bea1a2SQiu Chaofan; LARGE64-NEXT: addis r3, L..C13@u(r2) 1237*21bea1a2SQiu Chaofan; LARGE64-NEXT: ld r3, L..C13@l(r3) 1238*21bea1a2SQiu Chaofan; LARGE64-NEXT: stfdx f1, r13, r3 1239*21bea1a2SQiu Chaofan; LARGE64-NEXT: blr 1240*21bea1a2SQiu Chaofan; 1241*21bea1a2SQiu Chaofan; SMALL64-LABEL: store_global_double_nonzero: 1242*21bea1a2SQiu Chaofan; SMALL64: # %bb.0: # %entry 1243*21bea1a2SQiu Chaofan; SMALL64-NEXT: ld r3, L..C13(r2) # target-flags(ppc-tprel) @global_double_nonzero 1244*21bea1a2SQiu Chaofan; SMALL64-NEXT: stfdx f1, r13, r3 1245*21bea1a2SQiu Chaofan; SMALL64-NEXT: blr 1246*21bea1a2SQiu Chaofan; 1247*21bea1a2SQiu Chaofan; LARGE32-LABEL: store_global_double_nonzero: 1248*21bea1a2SQiu Chaofan; LARGE32: # %bb.0: # %entry 1249*21bea1a2SQiu Chaofan; LARGE32-NEXT: mflr r0 1250*21bea1a2SQiu Chaofan; LARGE32-NEXT: stwu r1, -32(r1) 1251*21bea1a2SQiu Chaofan; LARGE32-NEXT: stw r0, 40(r1) 1252*21bea1a2SQiu Chaofan; LARGE32-NEXT: addis r3, L..C13@u(r2) 1253*21bea1a2SQiu Chaofan; LARGE32-NEXT: lwz r4, L..C13@l(r3) 1254*21bea1a2SQiu Chaofan; LARGE32-NEXT: bla .__get_tpointer[PR] 1255*21bea1a2SQiu Chaofan; LARGE32-NEXT: stfdx f1, r3, r4 1256*21bea1a2SQiu Chaofan; LARGE32-NEXT: addi r1, r1, 32 1257*21bea1a2SQiu Chaofan; LARGE32-NEXT: lwz r0, 8(r1) 1258*21bea1a2SQiu Chaofan; LARGE32-NEXT: mtlr r0 1259*21bea1a2SQiu Chaofan; LARGE32-NEXT: blr 1260*21bea1a2SQiu Chaofan; 1261*21bea1a2SQiu Chaofan; SMALL32-LABEL: store_global_double_nonzero: 1262*21bea1a2SQiu Chaofan; SMALL32: # %bb.0: # %entry 1263*21bea1a2SQiu Chaofan; SMALL32-NEXT: mflr r0 1264*21bea1a2SQiu Chaofan; SMALL32-NEXT: stwu r1, -32(r1) 1265*21bea1a2SQiu Chaofan; SMALL32-NEXT: lwz r4, L..C13(r2) # target-flags(ppc-tprel) @global_double_nonzero 1266*21bea1a2SQiu Chaofan; SMALL32-NEXT: bla .__get_tpointer[PR] 1267*21bea1a2SQiu Chaofan; SMALL32-NEXT: stw r0, 40(r1) 1268*21bea1a2SQiu Chaofan; SMALL32-NEXT: stfdx f1, r3, r4 1269*21bea1a2SQiu Chaofan; SMALL32-NEXT: addi r1, r1, 32 1270*21bea1a2SQiu Chaofan; SMALL32-NEXT: lwz r0, 8(r1) 1271*21bea1a2SQiu Chaofan; SMALL32-NEXT: mtlr r0 1272*21bea1a2SQiu Chaofan; SMALL32-NEXT: blr 1273*21bea1a2SQiu Chaofanentry: 1274*21bea1a2SQiu Chaofan %addr = tail call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @global_double_nonzero) 1275*21bea1a2SQiu Chaofan store double %i, ptr %addr, align 8 1276*21bea1a2SQiu Chaofan ret void 1277*21bea1a2SQiu Chaofan} 1278*21bea1a2SQiu Chaofan 1279*21bea1a2SQiu Chaofandefine void @store_intern_double_zero(double noundef %i) { 1280*21bea1a2SQiu Chaofan; LARGE64-LABEL: store_intern_double_zero: 1281*21bea1a2SQiu Chaofan; LARGE64: # %bb.0: # %entry 1282*21bea1a2SQiu Chaofan; LARGE64-NEXT: addis r3, L..C14@u(r2) 1283*21bea1a2SQiu Chaofan; LARGE64-NEXT: ld r3, L..C14@l(r3) 1284*21bea1a2SQiu Chaofan; LARGE64-NEXT: stfdx f1, r13, r3 1285*21bea1a2SQiu Chaofan; LARGE64-NEXT: blr 1286*21bea1a2SQiu Chaofan; 1287*21bea1a2SQiu Chaofan; SMALL64-LABEL: store_intern_double_zero: 1288*21bea1a2SQiu Chaofan; SMALL64: # %bb.0: # %entry 1289*21bea1a2SQiu Chaofan; SMALL64-NEXT: ld r3, L..C14(r2) # target-flags(ppc-tprel) @intern_double_zero 1290*21bea1a2SQiu Chaofan; SMALL64-NEXT: stfdx f1, r13, r3 1291*21bea1a2SQiu Chaofan; SMALL64-NEXT: blr 1292*21bea1a2SQiu Chaofan; 1293*21bea1a2SQiu Chaofan; LARGE32-LABEL: store_intern_double_zero: 1294*21bea1a2SQiu Chaofan; LARGE32: # %bb.0: # %entry 1295*21bea1a2SQiu Chaofan; LARGE32-NEXT: mflr r0 1296*21bea1a2SQiu Chaofan; LARGE32-NEXT: stwu r1, -32(r1) 1297*21bea1a2SQiu Chaofan; LARGE32-NEXT: stw r0, 40(r1) 1298*21bea1a2SQiu Chaofan; LARGE32-NEXT: addis r3, L..C14@u(r2) 1299*21bea1a2SQiu Chaofan; LARGE32-NEXT: lwz r4, L..C14@l(r3) 1300*21bea1a2SQiu Chaofan; LARGE32-NEXT: bla .__get_tpointer[PR] 1301*21bea1a2SQiu Chaofan; LARGE32-NEXT: stfdx f1, r3, r4 1302*21bea1a2SQiu Chaofan; LARGE32-NEXT: addi r1, r1, 32 1303*21bea1a2SQiu Chaofan; LARGE32-NEXT: lwz r0, 8(r1) 1304*21bea1a2SQiu Chaofan; LARGE32-NEXT: mtlr r0 1305*21bea1a2SQiu Chaofan; LARGE32-NEXT: blr 1306*21bea1a2SQiu Chaofan; 1307*21bea1a2SQiu Chaofan; SMALL32-LABEL: store_intern_double_zero: 1308*21bea1a2SQiu Chaofan; SMALL32: # %bb.0: # %entry 1309*21bea1a2SQiu Chaofan; SMALL32-NEXT: mflr r0 1310*21bea1a2SQiu Chaofan; SMALL32-NEXT: stwu r1, -32(r1) 1311*21bea1a2SQiu Chaofan; SMALL32-NEXT: lwz r4, L..C14(r2) # target-flags(ppc-tprel) @intern_double_zero 1312*21bea1a2SQiu Chaofan; SMALL32-NEXT: bla .__get_tpointer[PR] 1313*21bea1a2SQiu Chaofan; SMALL32-NEXT: stw r0, 40(r1) 1314*21bea1a2SQiu Chaofan; SMALL32-NEXT: stfdx f1, r3, r4 1315*21bea1a2SQiu Chaofan; SMALL32-NEXT: addi r1, r1, 32 1316*21bea1a2SQiu Chaofan; SMALL32-NEXT: lwz r0, 8(r1) 1317*21bea1a2SQiu Chaofan; SMALL32-NEXT: mtlr r0 1318*21bea1a2SQiu Chaofan; SMALL32-NEXT: blr 1319*21bea1a2SQiu Chaofanentry: 1320*21bea1a2SQiu Chaofan %addr = tail call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @intern_double_zero) 1321*21bea1a2SQiu Chaofan store double %i, ptr %addr, align 8 1322*21bea1a2SQiu Chaofan ret void 1323*21bea1a2SQiu Chaofan} 1324*21bea1a2SQiu Chaofan 1325*21bea1a2SQiu Chaofandefine void @store_intern_double_nonzero(double noundef %i) { 1326*21bea1a2SQiu Chaofan; LARGE64-LABEL: store_intern_double_nonzero: 1327*21bea1a2SQiu Chaofan; LARGE64: # %bb.0: # %entry 1328*21bea1a2SQiu Chaofan; LARGE64-NEXT: addis r3, L..C15@u(r2) 1329*21bea1a2SQiu Chaofan; LARGE64-NEXT: ld r3, L..C15@l(r3) 1330*21bea1a2SQiu Chaofan; LARGE64-NEXT: stfdx f1, r13, r3 1331*21bea1a2SQiu Chaofan; LARGE64-NEXT: blr 1332*21bea1a2SQiu Chaofan; 1333*21bea1a2SQiu Chaofan; SMALL64-LABEL: store_intern_double_nonzero: 1334*21bea1a2SQiu Chaofan; SMALL64: # %bb.0: # %entry 1335*21bea1a2SQiu Chaofan; SMALL64-NEXT: ld r3, L..C15(r2) # target-flags(ppc-tprel) @intern_double_nonzero 1336*21bea1a2SQiu Chaofan; SMALL64-NEXT: stfdx f1, r13, r3 1337*21bea1a2SQiu Chaofan; SMALL64-NEXT: blr 1338*21bea1a2SQiu Chaofan; 1339*21bea1a2SQiu Chaofan; LARGE32-LABEL: store_intern_double_nonzero: 1340*21bea1a2SQiu Chaofan; LARGE32: # %bb.0: # %entry 1341*21bea1a2SQiu Chaofan; LARGE32-NEXT: mflr r0 1342*21bea1a2SQiu Chaofan; LARGE32-NEXT: stwu r1, -32(r1) 1343*21bea1a2SQiu Chaofan; LARGE32-NEXT: stw r0, 40(r1) 1344*21bea1a2SQiu Chaofan; LARGE32-NEXT: addis r3, L..C15@u(r2) 1345*21bea1a2SQiu Chaofan; LARGE32-NEXT: lwz r4, L..C15@l(r3) 1346*21bea1a2SQiu Chaofan; LARGE32-NEXT: bla .__get_tpointer[PR] 1347*21bea1a2SQiu Chaofan; LARGE32-NEXT: stfdx f1, r3, r4 1348*21bea1a2SQiu Chaofan; LARGE32-NEXT: addi r1, r1, 32 1349*21bea1a2SQiu Chaofan; LARGE32-NEXT: lwz r0, 8(r1) 1350*21bea1a2SQiu Chaofan; LARGE32-NEXT: mtlr r0 1351*21bea1a2SQiu Chaofan; LARGE32-NEXT: blr 1352*21bea1a2SQiu Chaofan; 1353*21bea1a2SQiu Chaofan; SMALL32-LABEL: store_intern_double_nonzero: 1354*21bea1a2SQiu Chaofan; SMALL32: # %bb.0: # %entry 1355*21bea1a2SQiu Chaofan; SMALL32-NEXT: mflr r0 1356*21bea1a2SQiu Chaofan; SMALL32-NEXT: stwu r1, -32(r1) 1357*21bea1a2SQiu Chaofan; SMALL32-NEXT: lwz r4, L..C15(r2) # target-flags(ppc-tprel) @intern_double_nonzero 1358*21bea1a2SQiu Chaofan; SMALL32-NEXT: bla .__get_tpointer[PR] 1359*21bea1a2SQiu Chaofan; SMALL32-NEXT: stw r0, 40(r1) 1360*21bea1a2SQiu Chaofan; SMALL32-NEXT: stfdx f1, r3, r4 1361*21bea1a2SQiu Chaofan; SMALL32-NEXT: addi r1, r1, 32 1362*21bea1a2SQiu Chaofan; SMALL32-NEXT: lwz r0, 8(r1) 1363*21bea1a2SQiu Chaofan; SMALL32-NEXT: mtlr r0 1364*21bea1a2SQiu Chaofan; SMALL32-NEXT: blr 1365*21bea1a2SQiu Chaofanentry: 1366*21bea1a2SQiu Chaofan %addr = tail call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @intern_double_nonzero) 1367*21bea1a2SQiu Chaofan store double %i, ptr %addr, align 8 1368*21bea1a2SQiu Chaofan ret void 1369*21bea1a2SQiu Chaofan} 1370*21bea1a2SQiu Chaofan 1371*21bea1a2SQiu Chaofandefine double @load_global_double_zero() { 1372*21bea1a2SQiu Chaofan; LARGE64-LABEL: load_global_double_zero: 1373*21bea1a2SQiu Chaofan; LARGE64: # %bb.0: # %entry 1374*21bea1a2SQiu Chaofan; LARGE64-NEXT: addis r3, L..C12@u(r2) 1375*21bea1a2SQiu Chaofan; LARGE64-NEXT: ld r3, L..C12@l(r3) 1376*21bea1a2SQiu Chaofan; LARGE64-NEXT: lfdx f1, r13, r3 1377*21bea1a2SQiu Chaofan; LARGE64-NEXT: blr 1378*21bea1a2SQiu Chaofan; 1379*21bea1a2SQiu Chaofan; SMALL64-LABEL: load_global_double_zero: 1380*21bea1a2SQiu Chaofan; SMALL64: # %bb.0: # %entry 1381*21bea1a2SQiu Chaofan; SMALL64-NEXT: ld r3, L..C12(r2) # target-flags(ppc-tprel) @global_double_zero 1382*21bea1a2SQiu Chaofan; SMALL64-NEXT: lfdx f1, r13, r3 1383*21bea1a2SQiu Chaofan; SMALL64-NEXT: blr 1384*21bea1a2SQiu Chaofan; 1385*21bea1a2SQiu Chaofan; LARGE32-LABEL: load_global_double_zero: 1386*21bea1a2SQiu Chaofan; LARGE32: # %bb.0: # %entry 1387*21bea1a2SQiu Chaofan; LARGE32-NEXT: mflr r0 1388*21bea1a2SQiu Chaofan; LARGE32-NEXT: stwu r1, -32(r1) 1389*21bea1a2SQiu Chaofan; LARGE32-NEXT: stw r0, 40(r1) 1390*21bea1a2SQiu Chaofan; LARGE32-NEXT: addis r3, L..C12@u(r2) 1391*21bea1a2SQiu Chaofan; LARGE32-NEXT: lwz r4, L..C12@l(r3) 1392*21bea1a2SQiu Chaofan; LARGE32-NEXT: bla .__get_tpointer[PR] 1393*21bea1a2SQiu Chaofan; LARGE32-NEXT: lfdx f1, r3, r4 1394*21bea1a2SQiu Chaofan; LARGE32-NEXT: addi r1, r1, 32 1395*21bea1a2SQiu Chaofan; LARGE32-NEXT: lwz r0, 8(r1) 1396*21bea1a2SQiu Chaofan; LARGE32-NEXT: mtlr r0 1397*21bea1a2SQiu Chaofan; LARGE32-NEXT: blr 1398*21bea1a2SQiu Chaofan; 1399*21bea1a2SQiu Chaofan; SMALL32-LABEL: load_global_double_zero: 1400*21bea1a2SQiu Chaofan; SMALL32: # %bb.0: # %entry 1401*21bea1a2SQiu Chaofan; SMALL32-NEXT: mflr r0 1402*21bea1a2SQiu Chaofan; SMALL32-NEXT: stwu r1, -32(r1) 1403*21bea1a2SQiu Chaofan; SMALL32-NEXT: lwz r4, L..C12(r2) # target-flags(ppc-tprel) @global_double_zero 1404*21bea1a2SQiu Chaofan; SMALL32-NEXT: stw r0, 40(r1) 1405*21bea1a2SQiu Chaofan; SMALL32-NEXT: bla .__get_tpointer[PR] 1406*21bea1a2SQiu Chaofan; SMALL32-NEXT: lfdx f1, r3, r4 1407*21bea1a2SQiu Chaofan; SMALL32-NEXT: addi r1, r1, 32 1408*21bea1a2SQiu Chaofan; SMALL32-NEXT: lwz r0, 8(r1) 1409*21bea1a2SQiu Chaofan; SMALL32-NEXT: mtlr r0 1410*21bea1a2SQiu Chaofan; SMALL32-NEXT: blr 1411*21bea1a2SQiu Chaofanentry: 1412*21bea1a2SQiu Chaofan %addr = tail call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @global_double_zero) 1413*21bea1a2SQiu Chaofan %val = load double, ptr %addr, align 8 1414*21bea1a2SQiu Chaofan ret double %val 1415*21bea1a2SQiu Chaofan} 1416*21bea1a2SQiu Chaofan 1417*21bea1a2SQiu Chaofandefine double @load_global_double_nonzero() { 1418*21bea1a2SQiu Chaofan; LARGE64-LABEL: load_global_double_nonzero: 1419*21bea1a2SQiu Chaofan; LARGE64: # %bb.0: # %entry 1420*21bea1a2SQiu Chaofan; LARGE64-NEXT: addis r3, L..C13@u(r2) 1421*21bea1a2SQiu Chaofan; LARGE64-NEXT: ld r3, L..C13@l(r3) 1422*21bea1a2SQiu Chaofan; LARGE64-NEXT: lfdx f1, r13, r3 1423*21bea1a2SQiu Chaofan; LARGE64-NEXT: blr 1424*21bea1a2SQiu Chaofan; 1425*21bea1a2SQiu Chaofan; SMALL64-LABEL: load_global_double_nonzero: 1426*21bea1a2SQiu Chaofan; SMALL64: # %bb.0: # %entry 1427*21bea1a2SQiu Chaofan; SMALL64-NEXT: ld r3, L..C13(r2) # target-flags(ppc-tprel) @global_double_nonzero 1428*21bea1a2SQiu Chaofan; SMALL64-NEXT: lfdx f1, r13, r3 1429*21bea1a2SQiu Chaofan; SMALL64-NEXT: blr 1430*21bea1a2SQiu Chaofan; 1431*21bea1a2SQiu Chaofan; LARGE32-LABEL: load_global_double_nonzero: 1432*21bea1a2SQiu Chaofan; LARGE32: # %bb.0: # %entry 1433*21bea1a2SQiu Chaofan; LARGE32-NEXT: mflr r0 1434*21bea1a2SQiu Chaofan; LARGE32-NEXT: stwu r1, -32(r1) 1435*21bea1a2SQiu Chaofan; LARGE32-NEXT: stw r0, 40(r1) 1436*21bea1a2SQiu Chaofan; LARGE32-NEXT: addis r3, L..C13@u(r2) 1437*21bea1a2SQiu Chaofan; LARGE32-NEXT: lwz r4, L..C13@l(r3) 1438*21bea1a2SQiu Chaofan; LARGE32-NEXT: bla .__get_tpointer[PR] 1439*21bea1a2SQiu Chaofan; LARGE32-NEXT: lfdx f1, r3, r4 1440*21bea1a2SQiu Chaofan; LARGE32-NEXT: addi r1, r1, 32 1441*21bea1a2SQiu Chaofan; LARGE32-NEXT: lwz r0, 8(r1) 1442*21bea1a2SQiu Chaofan; LARGE32-NEXT: mtlr r0 1443*21bea1a2SQiu Chaofan; LARGE32-NEXT: blr 1444*21bea1a2SQiu Chaofan; 1445*21bea1a2SQiu Chaofan; SMALL32-LABEL: load_global_double_nonzero: 1446*21bea1a2SQiu Chaofan; SMALL32: # %bb.0: # %entry 1447*21bea1a2SQiu Chaofan; SMALL32-NEXT: mflr r0 1448*21bea1a2SQiu Chaofan; SMALL32-NEXT: stwu r1, -32(r1) 1449*21bea1a2SQiu Chaofan; SMALL32-NEXT: lwz r4, L..C13(r2) # target-flags(ppc-tprel) @global_double_nonzero 1450*21bea1a2SQiu Chaofan; SMALL32-NEXT: stw r0, 40(r1) 1451*21bea1a2SQiu Chaofan; SMALL32-NEXT: bla .__get_tpointer[PR] 1452*21bea1a2SQiu Chaofan; SMALL32-NEXT: lfdx f1, r3, r4 1453*21bea1a2SQiu Chaofan; SMALL32-NEXT: addi r1, r1, 32 1454*21bea1a2SQiu Chaofan; SMALL32-NEXT: lwz r0, 8(r1) 1455*21bea1a2SQiu Chaofan; SMALL32-NEXT: mtlr r0 1456*21bea1a2SQiu Chaofan; SMALL32-NEXT: blr 1457*21bea1a2SQiu Chaofanentry: 1458*21bea1a2SQiu Chaofan %addr = tail call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @global_double_nonzero) 1459*21bea1a2SQiu Chaofan %val = load double, ptr %addr, align 8 1460*21bea1a2SQiu Chaofan ret double %val 1461*21bea1a2SQiu Chaofan} 1462*21bea1a2SQiu Chaofan 1463*21bea1a2SQiu Chaofandefine double @load_intern_double_zero() { 1464*21bea1a2SQiu Chaofan; LARGE64-LABEL: load_intern_double_zero: 1465*21bea1a2SQiu Chaofan; LARGE64: # %bb.0: # %entry 1466*21bea1a2SQiu Chaofan; LARGE64-NEXT: addis r3, L..C14@u(r2) 1467*21bea1a2SQiu Chaofan; LARGE64-NEXT: ld r3, L..C14@l(r3) 1468*21bea1a2SQiu Chaofan; LARGE64-NEXT: lfdx f1, r13, r3 1469*21bea1a2SQiu Chaofan; LARGE64-NEXT: blr 1470*21bea1a2SQiu Chaofan; 1471*21bea1a2SQiu Chaofan; SMALL64-LABEL: load_intern_double_zero: 1472*21bea1a2SQiu Chaofan; SMALL64: # %bb.0: # %entry 1473*21bea1a2SQiu Chaofan; SMALL64-NEXT: ld r3, L..C14(r2) # target-flags(ppc-tprel) @intern_double_zero 1474*21bea1a2SQiu Chaofan; SMALL64-NEXT: lfdx f1, r13, r3 1475*21bea1a2SQiu Chaofan; SMALL64-NEXT: blr 1476*21bea1a2SQiu Chaofan; 1477*21bea1a2SQiu Chaofan; LARGE32-LABEL: load_intern_double_zero: 1478*21bea1a2SQiu Chaofan; LARGE32: # %bb.0: # %entry 1479*21bea1a2SQiu Chaofan; LARGE32-NEXT: mflr r0 1480*21bea1a2SQiu Chaofan; LARGE32-NEXT: stwu r1, -32(r1) 1481*21bea1a2SQiu Chaofan; LARGE32-NEXT: stw r0, 40(r1) 1482*21bea1a2SQiu Chaofan; LARGE32-NEXT: addis r3, L..C14@u(r2) 1483*21bea1a2SQiu Chaofan; LARGE32-NEXT: lwz r4, L..C14@l(r3) 1484*21bea1a2SQiu Chaofan; LARGE32-NEXT: bla .__get_tpointer[PR] 1485*21bea1a2SQiu Chaofan; LARGE32-NEXT: lfdx f1, r3, r4 1486*21bea1a2SQiu Chaofan; LARGE32-NEXT: addi r1, r1, 32 1487*21bea1a2SQiu Chaofan; LARGE32-NEXT: lwz r0, 8(r1) 1488*21bea1a2SQiu Chaofan; LARGE32-NEXT: mtlr r0 1489*21bea1a2SQiu Chaofan; LARGE32-NEXT: blr 1490*21bea1a2SQiu Chaofan; 1491*21bea1a2SQiu Chaofan; SMALL32-LABEL: load_intern_double_zero: 1492*21bea1a2SQiu Chaofan; SMALL32: # %bb.0: # %entry 1493*21bea1a2SQiu Chaofan; SMALL32-NEXT: mflr r0 1494*21bea1a2SQiu Chaofan; SMALL32-NEXT: stwu r1, -32(r1) 1495*21bea1a2SQiu Chaofan; SMALL32-NEXT: lwz r4, L..C14(r2) # target-flags(ppc-tprel) @intern_double_zero 1496*21bea1a2SQiu Chaofan; SMALL32-NEXT: stw r0, 40(r1) 1497*21bea1a2SQiu Chaofan; SMALL32-NEXT: bla .__get_tpointer[PR] 1498*21bea1a2SQiu Chaofan; SMALL32-NEXT: lfdx f1, r3, r4 1499*21bea1a2SQiu Chaofan; SMALL32-NEXT: addi r1, r1, 32 1500*21bea1a2SQiu Chaofan; SMALL32-NEXT: lwz r0, 8(r1) 1501*21bea1a2SQiu Chaofan; SMALL32-NEXT: mtlr r0 1502*21bea1a2SQiu Chaofan; SMALL32-NEXT: blr 1503*21bea1a2SQiu Chaofanentry: 1504*21bea1a2SQiu Chaofan %addr = tail call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @intern_double_zero) 1505*21bea1a2SQiu Chaofan %val = load double, ptr %addr, align 8 1506*21bea1a2SQiu Chaofan ret double %val 1507*21bea1a2SQiu Chaofan} 1508*21bea1a2SQiu Chaofan 1509*21bea1a2SQiu Chaofandefine double @load_intern_double_nonzero() { 1510*21bea1a2SQiu Chaofan; LARGE64-LABEL: load_intern_double_nonzero: 1511*21bea1a2SQiu Chaofan; LARGE64: # %bb.0: # %entry 1512*21bea1a2SQiu Chaofan; LARGE64-NEXT: addis r3, L..C15@u(r2) 1513*21bea1a2SQiu Chaofan; LARGE64-NEXT: ld r3, L..C15@l(r3) 1514*21bea1a2SQiu Chaofan; LARGE64-NEXT: lfdx f1, r13, r3 1515*21bea1a2SQiu Chaofan; LARGE64-NEXT: blr 1516*21bea1a2SQiu Chaofan; 1517*21bea1a2SQiu Chaofan; SMALL64-LABEL: load_intern_double_nonzero: 1518*21bea1a2SQiu Chaofan; SMALL64: # %bb.0: # %entry 1519*21bea1a2SQiu Chaofan; SMALL64-NEXT: ld r3, L..C15(r2) # target-flags(ppc-tprel) @intern_double_nonzero 1520*21bea1a2SQiu Chaofan; SMALL64-NEXT: lfdx f1, r13, r3 1521*21bea1a2SQiu Chaofan; SMALL64-NEXT: blr 1522*21bea1a2SQiu Chaofan; 1523*21bea1a2SQiu Chaofan; LARGE32-LABEL: load_intern_double_nonzero: 1524*21bea1a2SQiu Chaofan; LARGE32: # %bb.0: # %entry 1525*21bea1a2SQiu Chaofan; LARGE32-NEXT: mflr r0 1526*21bea1a2SQiu Chaofan; LARGE32-NEXT: stwu r1, -32(r1) 1527*21bea1a2SQiu Chaofan; LARGE32-NEXT: stw r0, 40(r1) 1528*21bea1a2SQiu Chaofan; LARGE32-NEXT: addis r3, L..C15@u(r2) 1529*21bea1a2SQiu Chaofan; LARGE32-NEXT: lwz r4, L..C15@l(r3) 1530*21bea1a2SQiu Chaofan; LARGE32-NEXT: bla .__get_tpointer[PR] 1531*21bea1a2SQiu Chaofan; LARGE32-NEXT: lfdx f1, r3, r4 1532*21bea1a2SQiu Chaofan; LARGE32-NEXT: addi r1, r1, 32 1533*21bea1a2SQiu Chaofan; LARGE32-NEXT: lwz r0, 8(r1) 1534*21bea1a2SQiu Chaofan; LARGE32-NEXT: mtlr r0 1535*21bea1a2SQiu Chaofan; LARGE32-NEXT: blr 1536*21bea1a2SQiu Chaofan; 1537*21bea1a2SQiu Chaofan; SMALL32-LABEL: load_intern_double_nonzero: 1538*21bea1a2SQiu Chaofan; SMALL32: # %bb.0: # %entry 1539*21bea1a2SQiu Chaofan; SMALL32-NEXT: mflr r0 1540*21bea1a2SQiu Chaofan; SMALL32-NEXT: stwu r1, -32(r1) 1541*21bea1a2SQiu Chaofan; SMALL32-NEXT: lwz r4, L..C15(r2) # target-flags(ppc-tprel) @intern_double_nonzero 1542*21bea1a2SQiu Chaofan; SMALL32-NEXT: stw r0, 40(r1) 1543*21bea1a2SQiu Chaofan; SMALL32-NEXT: bla .__get_tpointer[PR] 1544*21bea1a2SQiu Chaofan; SMALL32-NEXT: lfdx f1, r3, r4 1545*21bea1a2SQiu Chaofan; SMALL32-NEXT: addi r1, r1, 32 1546*21bea1a2SQiu Chaofan; SMALL32-NEXT: lwz r0, 8(r1) 1547*21bea1a2SQiu Chaofan; SMALL32-NEXT: mtlr r0 1548*21bea1a2SQiu Chaofan; SMALL32-NEXT: blr 1549*21bea1a2SQiu Chaofanentry: 1550*21bea1a2SQiu Chaofan %addr = tail call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @intern_double_nonzero) 1551*21bea1a2SQiu Chaofan %val = load double, ptr %addr, align 8 1552*21bea1a2SQiu Chaofan ret double %val 1553*21bea1a2SQiu Chaofan} 1554*21bea1a2SQiu Chaofan 1555*21bea1a2SQiu Chaofandeclare nonnull ptr @llvm.threadlocal.address.p0(ptr nonnull) 1556*21bea1a2SQiu Chaofan 1557*21bea1a2SQiu Chaofan; Lines below check if the symbols have correct suffix for TLS model, not 1558*21bea1a2SQiu Chaofan; generated by test update script, but kept well after updates. 1559*21bea1a2SQiu Chaofan 1560*21bea1a2SQiu Chaofan; LARGE64: L..C0: 1561*21bea1a2SQiu Chaofan; LARGE64-NEXT: .tc global_int_zero[TE],global_int_zero[TL]@ie 1562*21bea1a2SQiu Chaofan; LARGE64-NEXT: L..C1: 1563*21bea1a2SQiu Chaofan; LARGE64-NEXT: .tc global_int_nonzero[TE],global_int_nonzero[TL]@ie 1564*21bea1a2SQiu Chaofan; LARGE64-NEXT: L..C2: 1565*21bea1a2SQiu Chaofan; LARGE64-NEXT: .tc intern_int_zero[TE],intern_int_zero[UL]@ie 1566*21bea1a2SQiu Chaofan; LARGE64-NEXT: L..C3: 1567*21bea1a2SQiu Chaofan; LARGE64-NEXT: .tc intern_int_nonzero[TE],intern_int_nonzero[TL]@ie 1568*21bea1a2SQiu Chaofan; LARGE64-NEXT: L..C4: 1569*21bea1a2SQiu Chaofan; LARGE64-NEXT: .tc global_long_zero[TE],global_long_zero[TL]@ie 1570*21bea1a2SQiu Chaofan; LARGE64-NEXT: L..C5: 1571*21bea1a2SQiu Chaofan; LARGE64-NEXT: .tc global_long_nonzero[TE],global_long_nonzero[TL]@ie 1572*21bea1a2SQiu Chaofan; LARGE64-NEXT: L..C6: 1573*21bea1a2SQiu Chaofan; LARGE64-NEXT: .tc intern_long_zero[TE],intern_long_zero[UL]@ie 1574*21bea1a2SQiu Chaofan; LARGE64-NEXT: L..C7: 1575*21bea1a2SQiu Chaofan; LARGE64-NEXT: .tc intern_long_nonzero[TE],intern_long_nonzero[TL]@ie 1576*21bea1a2SQiu Chaofan; LARGE64-NEXT: L..C8: 1577*21bea1a2SQiu Chaofan; LARGE64-NEXT: .tc global_float_zero[TE],global_float_zero[TL]@ie 1578*21bea1a2SQiu Chaofan; LARGE64-NEXT: L..C9: 1579*21bea1a2SQiu Chaofan; LARGE64-NEXT: .tc global_float_nonzero[TE],global_float_nonzero[TL]@ie 1580*21bea1a2SQiu Chaofan; LARGE64-NEXT: L..C10: 1581*21bea1a2SQiu Chaofan; LARGE64-NEXT: .tc intern_float_zero[TE],intern_float_zero[UL]@ie 1582*21bea1a2SQiu Chaofan; LARGE64-NEXT: L..C11: 1583*21bea1a2SQiu Chaofan; LARGE64-NEXT: .tc intern_float_nonzero[TE],intern_float_nonzero[TL]@ie 1584*21bea1a2SQiu Chaofan; LARGE64-NEXT: L..C12: 1585*21bea1a2SQiu Chaofan; LARGE64-NEXT: .tc global_double_zero[TE],global_double_zero[TL]@ie 1586*21bea1a2SQiu Chaofan; LARGE64-NEXT: L..C13: 1587*21bea1a2SQiu Chaofan; LARGE64-NEXT: .tc global_double_nonzero[TE],global_double_nonzero[TL]@ie 1588*21bea1a2SQiu Chaofan; LARGE64-NEXT: L..C14: 1589*21bea1a2SQiu Chaofan; LARGE64-NEXT: .tc intern_double_zero[TE],intern_double_zero[UL]@ie 1590*21bea1a2SQiu Chaofan; LARGE64-NEXT: L..C15: 1591*21bea1a2SQiu Chaofan; LARGE64-NEXT: .tc intern_double_nonzero[TE],intern_double_nonzero[TL]@ie 1592*21bea1a2SQiu Chaofan 1593*21bea1a2SQiu Chaofan; SMALL64: L..C0: 1594*21bea1a2SQiu Chaofan; SMALL64-NEXT: .tc global_int_zero[TC],global_int_zero[TL]@ie 1595*21bea1a2SQiu Chaofan; SMALL64-NEXT: L..C1: 1596*21bea1a2SQiu Chaofan; SMALL64-NEXT: .tc global_int_nonzero[TC],global_int_nonzero[TL]@ie 1597*21bea1a2SQiu Chaofan; SMALL64-NEXT: L..C2: 1598*21bea1a2SQiu Chaofan; SMALL64-NEXT: .tc intern_int_zero[TC],intern_int_zero[UL]@ie 1599*21bea1a2SQiu Chaofan; SMALL64-NEXT: L..C3: 1600*21bea1a2SQiu Chaofan; SMALL64-NEXT: .tc intern_int_nonzero[TC],intern_int_nonzero[TL]@ie 1601*21bea1a2SQiu Chaofan; SMALL64-NEXT: L..C4: 1602*21bea1a2SQiu Chaofan; SMALL64-NEXT: .tc global_long_zero[TC],global_long_zero[TL]@ie 1603*21bea1a2SQiu Chaofan; SMALL64-NEXT: L..C5: 1604*21bea1a2SQiu Chaofan; SMALL64-NEXT: .tc global_long_nonzero[TC],global_long_nonzero[TL]@ie 1605*21bea1a2SQiu Chaofan; SMALL64-NEXT: L..C6: 1606*21bea1a2SQiu Chaofan; SMALL64-NEXT: .tc intern_long_zero[TC],intern_long_zero[UL]@ie 1607*21bea1a2SQiu Chaofan; SMALL64-NEXT: L..C7: 1608*21bea1a2SQiu Chaofan; SMALL64-NEXT: .tc intern_long_nonzero[TC],intern_long_nonzero[TL]@ie 1609*21bea1a2SQiu Chaofan; SMALL64-NEXT: L..C8: 1610*21bea1a2SQiu Chaofan; SMALL64-NEXT: .tc global_float_zero[TC],global_float_zero[TL]@ie 1611*21bea1a2SQiu Chaofan; SMALL64-NEXT: L..C9: 1612*21bea1a2SQiu Chaofan; SMALL64-NEXT: .tc global_float_nonzero[TC],global_float_nonzero[TL]@ie 1613*21bea1a2SQiu Chaofan; SMALL64-NEXT: L..C10: 1614*21bea1a2SQiu Chaofan; SMALL64-NEXT: .tc intern_float_zero[TC],intern_float_zero[UL]@ie 1615*21bea1a2SQiu Chaofan; SMALL64-NEXT: L..C11: 1616*21bea1a2SQiu Chaofan; SMALL64-NEXT: .tc intern_float_nonzero[TC],intern_float_nonzero[TL]@ie 1617*21bea1a2SQiu Chaofan; SMALL64-NEXT: L..C12: 1618*21bea1a2SQiu Chaofan; SMALL64-NEXT: .tc global_double_zero[TC],global_double_zero[TL]@ie 1619*21bea1a2SQiu Chaofan; SMALL64-NEXT: L..C13: 1620*21bea1a2SQiu Chaofan; SMALL64-NEXT: .tc global_double_nonzero[TC],global_double_nonzero[TL]@ie 1621*21bea1a2SQiu Chaofan; SMALL64-NEXT: L..C14: 1622*21bea1a2SQiu Chaofan; SMALL64-NEXT: .tc intern_double_zero[TC],intern_double_zero[UL]@ie 1623*21bea1a2SQiu Chaofan; SMALL64-NEXT: L..C15: 1624*21bea1a2SQiu Chaofan; SMALL64-NEXT: .tc intern_double_nonzero[TC],intern_double_nonzero[TL]@ie 1625*21bea1a2SQiu Chaofan 1626*21bea1a2SQiu Chaofan; LARGE32: L..C0: 1627*21bea1a2SQiu Chaofan; LARGE32-NEXT: .tc global_int_zero[TE],global_int_zero[TL]@ie 1628*21bea1a2SQiu Chaofan; LARGE32-NEXT: L..C1: 1629*21bea1a2SQiu Chaofan; LARGE32-NEXT: .tc global_int_nonzero[TE],global_int_nonzero[TL]@ie 1630*21bea1a2SQiu Chaofan; LARGE32-NEXT: L..C2: 1631*21bea1a2SQiu Chaofan; LARGE32-NEXT: .tc intern_int_zero[TE],intern_int_zero[UL]@ie 1632*21bea1a2SQiu Chaofan; LARGE32-NEXT: L..C3: 1633*21bea1a2SQiu Chaofan; LARGE32-NEXT: .tc intern_int_nonzero[TE],intern_int_nonzero[TL]@ie 1634*21bea1a2SQiu Chaofan; LARGE32-NEXT: L..C4: 1635*21bea1a2SQiu Chaofan; LARGE32-NEXT: .tc global_long_zero[TE],global_long_zero[TL]@ie 1636*21bea1a2SQiu Chaofan; LARGE32-NEXT: L..C5: 1637*21bea1a2SQiu Chaofan; LARGE32-NEXT: .tc global_long_nonzero[TE],global_long_nonzero[TL]@ie 1638*21bea1a2SQiu Chaofan; LARGE32-NEXT: L..C6: 1639*21bea1a2SQiu Chaofan; LARGE32-NEXT: .tc intern_long_zero[TE],intern_long_zero[UL]@ie 1640*21bea1a2SQiu Chaofan; LARGE32-NEXT: L..C7: 1641*21bea1a2SQiu Chaofan; LARGE32-NEXT: .tc intern_long_nonzero[TE],intern_long_nonzero[TL]@ie 1642*21bea1a2SQiu Chaofan; LARGE32-NEXT: L..C8: 1643*21bea1a2SQiu Chaofan; LARGE32-NEXT: .tc global_float_zero[TE],global_float_zero[TL]@ie 1644*21bea1a2SQiu Chaofan; LARGE32-NEXT: L..C9: 1645*21bea1a2SQiu Chaofan; LARGE32-NEXT: .tc global_float_nonzero[TE],global_float_nonzero[TL]@ie 1646*21bea1a2SQiu Chaofan; LARGE32-NEXT: L..C10: 1647*21bea1a2SQiu Chaofan; LARGE32-NEXT: .tc intern_float_zero[TE],intern_float_zero[UL]@ie 1648*21bea1a2SQiu Chaofan; LARGE32-NEXT: L..C11: 1649*21bea1a2SQiu Chaofan; LARGE32-NEXT: .tc intern_float_nonzero[TE],intern_float_nonzero[TL]@ie 1650*21bea1a2SQiu Chaofan; LARGE32-NEXT: L..C12: 1651*21bea1a2SQiu Chaofan; LARGE32-NEXT: .tc global_double_zero[TE],global_double_zero[TL]@ie 1652*21bea1a2SQiu Chaofan; LARGE32-NEXT: L..C13: 1653*21bea1a2SQiu Chaofan; LARGE32-NEXT: .tc global_double_nonzero[TE],global_double_nonzero[TL]@ie 1654*21bea1a2SQiu Chaofan; LARGE32-NEXT: L..C14: 1655*21bea1a2SQiu Chaofan; LARGE32-NEXT: .tc intern_double_zero[TE],intern_double_zero[UL]@ie 1656*21bea1a2SQiu Chaofan; LARGE32-NEXT: L..C15: 1657*21bea1a2SQiu Chaofan; LARGE32-NEXT: .tc intern_double_nonzero[TE],intern_double_nonzero[TL]@ie 1658*21bea1a2SQiu Chaofan 1659*21bea1a2SQiu Chaofan; SMALL32: L..C0: 1660*21bea1a2SQiu Chaofan; SMALL32-NEXT: .tc global_int_zero[TC],global_int_zero[TL]@ie 1661*21bea1a2SQiu Chaofan; SMALL32-NEXT: L..C1: 1662*21bea1a2SQiu Chaofan; SMALL32-NEXT: .tc global_int_nonzero[TC],global_int_nonzero[TL]@ie 1663*21bea1a2SQiu Chaofan; SMALL32-NEXT: L..C2: 1664*21bea1a2SQiu Chaofan; SMALL32-NEXT: .tc intern_int_zero[TC],intern_int_zero[UL]@ie 1665*21bea1a2SQiu Chaofan; SMALL32-NEXT: L..C3: 1666*21bea1a2SQiu Chaofan; SMALL32-NEXT: .tc intern_int_nonzero[TC],intern_int_nonzero[TL]@ie 1667*21bea1a2SQiu Chaofan; SMALL32-NEXT: L..C4: 1668*21bea1a2SQiu Chaofan; SMALL32-NEXT: .tc global_long_zero[TC],global_long_zero[TL]@ie 1669*21bea1a2SQiu Chaofan; SMALL32-NEXT: L..C5: 1670*21bea1a2SQiu Chaofan; SMALL32-NEXT: .tc global_long_nonzero[TC],global_long_nonzero[TL]@ie 1671*21bea1a2SQiu Chaofan; SMALL32-NEXT: L..C6: 1672*21bea1a2SQiu Chaofan; SMALL32-NEXT: .tc intern_long_zero[TC],intern_long_zero[UL]@ie 1673*21bea1a2SQiu Chaofan; SMALL32-NEXT: L..C7: 1674*21bea1a2SQiu Chaofan; SMALL32-NEXT: .tc intern_long_nonzero[TC],intern_long_nonzero[TL]@ie 1675*21bea1a2SQiu Chaofan; SMALL32-NEXT: L..C8: 1676*21bea1a2SQiu Chaofan; SMALL32-NEXT: .tc global_float_zero[TC],global_float_zero[TL]@ie 1677*21bea1a2SQiu Chaofan; SMALL32-NEXT: L..C9: 1678*21bea1a2SQiu Chaofan; SMALL32-NEXT: .tc global_float_nonzero[TC],global_float_nonzero[TL]@ie 1679*21bea1a2SQiu Chaofan; SMALL32-NEXT: L..C10: 1680*21bea1a2SQiu Chaofan; SMALL32-NEXT: .tc intern_float_zero[TC],intern_float_zero[UL]@ie 1681*21bea1a2SQiu Chaofan; SMALL32-NEXT: L..C11: 1682*21bea1a2SQiu Chaofan; SMALL32-NEXT: .tc intern_float_nonzero[TC],intern_float_nonzero[TL]@ie 1683*21bea1a2SQiu Chaofan; SMALL32-NEXT: L..C12: 1684*21bea1a2SQiu Chaofan; SMALL32-NEXT: .tc global_double_zero[TC],global_double_zero[TL]@ie 1685*21bea1a2SQiu Chaofan; SMALL32-NEXT: L..C13: 1686*21bea1a2SQiu Chaofan; SMALL32-NEXT: .tc global_double_nonzero[TC],global_double_nonzero[TL]@ie 1687*21bea1a2SQiu Chaofan; SMALL32-NEXT: L..C14: 1688*21bea1a2SQiu Chaofan; SMALL32-NEXT: .tc intern_double_zero[TC],intern_double_zero[UL]@ie 1689*21bea1a2SQiu Chaofan; SMALL32-NEXT: L..C15: 1690*21bea1a2SQiu Chaofan; SMALL32-NEXT: .tc intern_double_nonzero[TC],intern_double_nonzero[TL]@ie 1691