1*4cce1074Sknickish; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py 2*4cce1074Sknickish; RUN: llc %s -o - -mtriple=m68k -mcpu=M68000 --code-model=large | FileCheck %s --check-prefix=NO-ATOMIC 3*4cce1074Sknickish; RUN: llc %s -o - -mtriple=m68k -mcpu=M68010 --code-model=large | FileCheck %s --check-prefix=NO-ATOMIC 4*4cce1074Sknickish; RUN: llc %s -o - -mtriple=m68k -mcpu=M68000 --code-model=large --relocation-model=pic | FileCheck %s --check-prefix=NO-ATOMIC-PIC 5*4cce1074Sknickish; RUN: llc %s -o - -mtriple=m68k -mcpu=M68010 --code-model=large --relocation-model=pic | FileCheck %s --check-prefix=NO-ATOMIC-PIC 6*4cce1074Sknickish; RUN: llc %s -o - -mtriple=m68k -mcpu=M68020 --code-model=large | FileCheck %s --check-prefix=ATOMIC 7*4cce1074Sknickish; RUN: llc %s -o - -mtriple=m68k -mcpu=M68030 --code-model=large | FileCheck %s --check-prefix=ATOMIC 8*4cce1074Sknickish; RUN: llc %s -o - -mtriple=m68k -mcpu=M68040 --code-model=large | FileCheck %s --check-prefix=ATOMIC 9*4cce1074Sknickish; RUN: llc %s -o - -mtriple=m68k -mcpu=M68020 --code-model=large --relocation-model=pic | FileCheck %s --check-prefix=ATOMIC-PIC 10*4cce1074Sknickish; RUN: llc %s -o - -mtriple=m68k -mcpu=M68030 --code-model=large --relocation-model=pic | FileCheck %s --check-prefix=ATOMIC-PIC 11*4cce1074Sknickish; RUN: llc %s -o - -mtriple=m68k -mcpu=M68040 --code-model=large --relocation-model=pic | FileCheck %s --check-prefix=ATOMIC-PIC 12*4cce1074Sknickish 13*4cce1074Sknickishdefine i8 @atomic_load_i8_unordered(ptr %a) nounwind { 14*4cce1074Sknickish; NO-ATOMIC-LABEL: atomic_load_i8_unordered: 15*4cce1074Sknickish; NO-ATOMIC: ; %bb.0: 16*4cce1074Sknickish; NO-ATOMIC-NEXT: move.l (4,%sp), %a0 17*4cce1074Sknickish; NO-ATOMIC-NEXT: move.b (%a0), %d0 18*4cce1074Sknickish; NO-ATOMIC-NEXT: rts 19*4cce1074Sknickish; 20*4cce1074Sknickish; NO-ATOMIC-PIC-LABEL: atomic_load_i8_unordered: 21*4cce1074Sknickish; NO-ATOMIC-PIC: ; %bb.0: 22*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: move.l (4,%sp), %a0 23*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: move.b (%a0), %d0 24*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: rts 25*4cce1074Sknickish; 26*4cce1074Sknickish; ATOMIC-LABEL: atomic_load_i8_unordered: 27*4cce1074Sknickish; ATOMIC: ; %bb.0: 28*4cce1074Sknickish; ATOMIC-NEXT: move.l (4,%sp), %a0 29*4cce1074Sknickish; ATOMIC-NEXT: move.b (%a0), %d0 30*4cce1074Sknickish; ATOMIC-NEXT: rts 31*4cce1074Sknickish; 32*4cce1074Sknickish; ATOMIC-PIC-LABEL: atomic_load_i8_unordered: 33*4cce1074Sknickish; ATOMIC-PIC: ; %bb.0: 34*4cce1074Sknickish; ATOMIC-PIC-NEXT: move.l (4,%sp), %a0 35*4cce1074Sknickish; ATOMIC-PIC-NEXT: move.b (%a0), %d0 36*4cce1074Sknickish; ATOMIC-PIC-NEXT: rts 37*4cce1074Sknickish %1 = load atomic i8, ptr %a unordered, align 1 38*4cce1074Sknickish ret i8 %1 39*4cce1074Sknickish} 40*4cce1074Sknickish 41*4cce1074Sknickishdefine i8 @atomic_load_i8_monotonic(ptr %a) nounwind { 42*4cce1074Sknickish; NO-ATOMIC-LABEL: atomic_load_i8_monotonic: 43*4cce1074Sknickish; NO-ATOMIC: ; %bb.0: 44*4cce1074Sknickish; NO-ATOMIC-NEXT: move.l (4,%sp), %a0 45*4cce1074Sknickish; NO-ATOMIC-NEXT: move.b (%a0), %d0 46*4cce1074Sknickish; NO-ATOMIC-NEXT: rts 47*4cce1074Sknickish; 48*4cce1074Sknickish; NO-ATOMIC-PIC-LABEL: atomic_load_i8_monotonic: 49*4cce1074Sknickish; NO-ATOMIC-PIC: ; %bb.0: 50*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: move.l (4,%sp), %a0 51*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: move.b (%a0), %d0 52*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: rts 53*4cce1074Sknickish; 54*4cce1074Sknickish; ATOMIC-LABEL: atomic_load_i8_monotonic: 55*4cce1074Sknickish; ATOMIC: ; %bb.0: 56*4cce1074Sknickish; ATOMIC-NEXT: move.l (4,%sp), %a0 57*4cce1074Sknickish; ATOMIC-NEXT: move.b (%a0), %d0 58*4cce1074Sknickish; ATOMIC-NEXT: rts 59*4cce1074Sknickish; 60*4cce1074Sknickish; ATOMIC-PIC-LABEL: atomic_load_i8_monotonic: 61*4cce1074Sknickish; ATOMIC-PIC: ; %bb.0: 62*4cce1074Sknickish; ATOMIC-PIC-NEXT: move.l (4,%sp), %a0 63*4cce1074Sknickish; ATOMIC-PIC-NEXT: move.b (%a0), %d0 64*4cce1074Sknickish; ATOMIC-PIC-NEXT: rts 65*4cce1074Sknickish %1 = load atomic i8, ptr %a monotonic, align 1 66*4cce1074Sknickish ret i8 %1 67*4cce1074Sknickish} 68*4cce1074Sknickish 69*4cce1074Sknickishdefine i8 @atomic_load_i8_acquire(ptr %a) nounwind { 70*4cce1074Sknickish; NO-ATOMIC-LABEL: atomic_load_i8_acquire: 71*4cce1074Sknickish; NO-ATOMIC: ; %bb.0: 72*4cce1074Sknickish; NO-ATOMIC-NEXT: move.l (4,%sp), %a0 73*4cce1074Sknickish; NO-ATOMIC-NEXT: move.b (%a0), %d0 74*4cce1074Sknickish; NO-ATOMIC-NEXT: rts 75*4cce1074Sknickish; 76*4cce1074Sknickish; NO-ATOMIC-PIC-LABEL: atomic_load_i8_acquire: 77*4cce1074Sknickish; NO-ATOMIC-PIC: ; %bb.0: 78*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: move.l (4,%sp), %a0 79*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: move.b (%a0), %d0 80*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: rts 81*4cce1074Sknickish; 82*4cce1074Sknickish; ATOMIC-LABEL: atomic_load_i8_acquire: 83*4cce1074Sknickish; ATOMIC: ; %bb.0: 84*4cce1074Sknickish; ATOMIC-NEXT: move.l (4,%sp), %a0 85*4cce1074Sknickish; ATOMIC-NEXT: move.b (%a0), %d0 86*4cce1074Sknickish; ATOMIC-NEXT: rts 87*4cce1074Sknickish; 88*4cce1074Sknickish; ATOMIC-PIC-LABEL: atomic_load_i8_acquire: 89*4cce1074Sknickish; ATOMIC-PIC: ; %bb.0: 90*4cce1074Sknickish; ATOMIC-PIC-NEXT: move.l (4,%sp), %a0 91*4cce1074Sknickish; ATOMIC-PIC-NEXT: move.b (%a0), %d0 92*4cce1074Sknickish; ATOMIC-PIC-NEXT: rts 93*4cce1074Sknickish %1 = load atomic i8, ptr %a acquire, align 1 94*4cce1074Sknickish ret i8 %1 95*4cce1074Sknickish} 96*4cce1074Sknickish 97*4cce1074Sknickishdefine i8 @atomic_load_i8_seq_cst(ptr %a) nounwind { 98*4cce1074Sknickish; NO-ATOMIC-LABEL: atomic_load_i8_seq_cst: 99*4cce1074Sknickish; NO-ATOMIC: ; %bb.0: 100*4cce1074Sknickish; NO-ATOMIC-NEXT: move.l (4,%sp), %a0 101*4cce1074Sknickish; NO-ATOMIC-NEXT: move.b (%a0), %d0 102*4cce1074Sknickish; NO-ATOMIC-NEXT: rts 103*4cce1074Sknickish; 104*4cce1074Sknickish; NO-ATOMIC-PIC-LABEL: atomic_load_i8_seq_cst: 105*4cce1074Sknickish; NO-ATOMIC-PIC: ; %bb.0: 106*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: move.l (4,%sp), %a0 107*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: move.b (%a0), %d0 108*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: rts 109*4cce1074Sknickish; 110*4cce1074Sknickish; ATOMIC-LABEL: atomic_load_i8_seq_cst: 111*4cce1074Sknickish; ATOMIC: ; %bb.0: 112*4cce1074Sknickish; ATOMIC-NEXT: move.l (4,%sp), %a0 113*4cce1074Sknickish; ATOMIC-NEXT: move.b (%a0), %d0 114*4cce1074Sknickish; ATOMIC-NEXT: rts 115*4cce1074Sknickish; 116*4cce1074Sknickish; ATOMIC-PIC-LABEL: atomic_load_i8_seq_cst: 117*4cce1074Sknickish; ATOMIC-PIC: ; %bb.0: 118*4cce1074Sknickish; ATOMIC-PIC-NEXT: move.l (4,%sp), %a0 119*4cce1074Sknickish; ATOMIC-PIC-NEXT: move.b (%a0), %d0 120*4cce1074Sknickish; ATOMIC-PIC-NEXT: rts 121*4cce1074Sknickish %1 = load atomic i8, ptr %a seq_cst, align 1 122*4cce1074Sknickish ret i8 %1 123*4cce1074Sknickish} 124*4cce1074Sknickish 125*4cce1074Sknickishdefine i16 @atomic_load_i16_unordered(ptr %a) nounwind { 126*4cce1074Sknickish; NO-ATOMIC-LABEL: atomic_load_i16_unordered: 127*4cce1074Sknickish; NO-ATOMIC: ; %bb.0: 128*4cce1074Sknickish; NO-ATOMIC-NEXT: move.l (4,%sp), %a0 129*4cce1074Sknickish; NO-ATOMIC-NEXT: move.w (%a0), %d0 130*4cce1074Sknickish; NO-ATOMIC-NEXT: rts 131*4cce1074Sknickish; 132*4cce1074Sknickish; NO-ATOMIC-PIC-LABEL: atomic_load_i16_unordered: 133*4cce1074Sknickish; NO-ATOMIC-PIC: ; %bb.0: 134*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: move.l (4,%sp), %a0 135*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: move.w (%a0), %d0 136*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: rts 137*4cce1074Sknickish; 138*4cce1074Sknickish; ATOMIC-LABEL: atomic_load_i16_unordered: 139*4cce1074Sknickish; ATOMIC: ; %bb.0: 140*4cce1074Sknickish; ATOMIC-NEXT: move.l (4,%sp), %a0 141*4cce1074Sknickish; ATOMIC-NEXT: move.w (%a0), %d0 142*4cce1074Sknickish; ATOMIC-NEXT: rts 143*4cce1074Sknickish; 144*4cce1074Sknickish; ATOMIC-PIC-LABEL: atomic_load_i16_unordered: 145*4cce1074Sknickish; ATOMIC-PIC: ; %bb.0: 146*4cce1074Sknickish; ATOMIC-PIC-NEXT: move.l (4,%sp), %a0 147*4cce1074Sknickish; ATOMIC-PIC-NEXT: move.w (%a0), %d0 148*4cce1074Sknickish; ATOMIC-PIC-NEXT: rts 149*4cce1074Sknickish %1 = load atomic i16, ptr %a unordered, align 2 150*4cce1074Sknickish ret i16 %1 151*4cce1074Sknickish} 152*4cce1074Sknickish 153*4cce1074Sknickishdefine i16 @atomic_load_i16_monotonic(ptr %a) nounwind { 154*4cce1074Sknickish; NO-ATOMIC-LABEL: atomic_load_i16_monotonic: 155*4cce1074Sknickish; NO-ATOMIC: ; %bb.0: 156*4cce1074Sknickish; NO-ATOMIC-NEXT: move.l (4,%sp), %a0 157*4cce1074Sknickish; NO-ATOMIC-NEXT: move.w (%a0), %d0 158*4cce1074Sknickish; NO-ATOMIC-NEXT: rts 159*4cce1074Sknickish; 160*4cce1074Sknickish; NO-ATOMIC-PIC-LABEL: atomic_load_i16_monotonic: 161*4cce1074Sknickish; NO-ATOMIC-PIC: ; %bb.0: 162*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: move.l (4,%sp), %a0 163*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: move.w (%a0), %d0 164*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: rts 165*4cce1074Sknickish; 166*4cce1074Sknickish; ATOMIC-LABEL: atomic_load_i16_monotonic: 167*4cce1074Sknickish; ATOMIC: ; %bb.0: 168*4cce1074Sknickish; ATOMIC-NEXT: move.l (4,%sp), %a0 169*4cce1074Sknickish; ATOMIC-NEXT: move.w (%a0), %d0 170*4cce1074Sknickish; ATOMIC-NEXT: rts 171*4cce1074Sknickish; 172*4cce1074Sknickish; ATOMIC-PIC-LABEL: atomic_load_i16_monotonic: 173*4cce1074Sknickish; ATOMIC-PIC: ; %bb.0: 174*4cce1074Sknickish; ATOMIC-PIC-NEXT: move.l (4,%sp), %a0 175*4cce1074Sknickish; ATOMIC-PIC-NEXT: move.w (%a0), %d0 176*4cce1074Sknickish; ATOMIC-PIC-NEXT: rts 177*4cce1074Sknickish %1 = load atomic i16, ptr %a monotonic, align 2 178*4cce1074Sknickish ret i16 %1 179*4cce1074Sknickish} 180*4cce1074Sknickish 181*4cce1074Sknickishdefine i16 @atomic_load_i16_acquire(ptr %a) nounwind { 182*4cce1074Sknickish; NO-ATOMIC-LABEL: atomic_load_i16_acquire: 183*4cce1074Sknickish; NO-ATOMIC: ; %bb.0: 184*4cce1074Sknickish; NO-ATOMIC-NEXT: move.l (4,%sp), %a0 185*4cce1074Sknickish; NO-ATOMIC-NEXT: move.w (%a0), %d0 186*4cce1074Sknickish; NO-ATOMIC-NEXT: rts 187*4cce1074Sknickish; 188*4cce1074Sknickish; NO-ATOMIC-PIC-LABEL: atomic_load_i16_acquire: 189*4cce1074Sknickish; NO-ATOMIC-PIC: ; %bb.0: 190*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: move.l (4,%sp), %a0 191*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: move.w (%a0), %d0 192*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: rts 193*4cce1074Sknickish; 194*4cce1074Sknickish; ATOMIC-LABEL: atomic_load_i16_acquire: 195*4cce1074Sknickish; ATOMIC: ; %bb.0: 196*4cce1074Sknickish; ATOMIC-NEXT: move.l (4,%sp), %a0 197*4cce1074Sknickish; ATOMIC-NEXT: move.w (%a0), %d0 198*4cce1074Sknickish; ATOMIC-NEXT: rts 199*4cce1074Sknickish; 200*4cce1074Sknickish; ATOMIC-PIC-LABEL: atomic_load_i16_acquire: 201*4cce1074Sknickish; ATOMIC-PIC: ; %bb.0: 202*4cce1074Sknickish; ATOMIC-PIC-NEXT: move.l (4,%sp), %a0 203*4cce1074Sknickish; ATOMIC-PIC-NEXT: move.w (%a0), %d0 204*4cce1074Sknickish; ATOMIC-PIC-NEXT: rts 205*4cce1074Sknickish %1 = load atomic i16, ptr %a acquire, align 2 206*4cce1074Sknickish ret i16 %1 207*4cce1074Sknickish} 208*4cce1074Sknickish 209*4cce1074Sknickishdefine i16 @atomic_load_i16_seq_cst(ptr %a) nounwind { 210*4cce1074Sknickish; NO-ATOMIC-LABEL: atomic_load_i16_seq_cst: 211*4cce1074Sknickish; NO-ATOMIC: ; %bb.0: 212*4cce1074Sknickish; NO-ATOMIC-NEXT: move.l (4,%sp), %a0 213*4cce1074Sknickish; NO-ATOMIC-NEXT: move.w (%a0), %d0 214*4cce1074Sknickish; NO-ATOMIC-NEXT: rts 215*4cce1074Sknickish; 216*4cce1074Sknickish; NO-ATOMIC-PIC-LABEL: atomic_load_i16_seq_cst: 217*4cce1074Sknickish; NO-ATOMIC-PIC: ; %bb.0: 218*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: move.l (4,%sp), %a0 219*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: move.w (%a0), %d0 220*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: rts 221*4cce1074Sknickish; 222*4cce1074Sknickish; ATOMIC-LABEL: atomic_load_i16_seq_cst: 223*4cce1074Sknickish; ATOMIC: ; %bb.0: 224*4cce1074Sknickish; ATOMIC-NEXT: move.l (4,%sp), %a0 225*4cce1074Sknickish; ATOMIC-NEXT: move.w (%a0), %d0 226*4cce1074Sknickish; ATOMIC-NEXT: rts 227*4cce1074Sknickish; 228*4cce1074Sknickish; ATOMIC-PIC-LABEL: atomic_load_i16_seq_cst: 229*4cce1074Sknickish; ATOMIC-PIC: ; %bb.0: 230*4cce1074Sknickish; ATOMIC-PIC-NEXT: move.l (4,%sp), %a0 231*4cce1074Sknickish; ATOMIC-PIC-NEXT: move.w (%a0), %d0 232*4cce1074Sknickish; ATOMIC-PIC-NEXT: rts 233*4cce1074Sknickish %1 = load atomic i16, ptr %a seq_cst, align 2 234*4cce1074Sknickish ret i16 %1 235*4cce1074Sknickish} 236*4cce1074Sknickish 237*4cce1074Sknickishdefine i32 @atomic_load_i32_unordered(ptr %a) nounwind { 238*4cce1074Sknickish; NO-ATOMIC-LABEL: atomic_load_i32_unordered: 239*4cce1074Sknickish; NO-ATOMIC: ; %bb.0: 240*4cce1074Sknickish; NO-ATOMIC-NEXT: move.l (4,%sp), %a0 241*4cce1074Sknickish; NO-ATOMIC-NEXT: move.l (%a0), %d0 242*4cce1074Sknickish; NO-ATOMIC-NEXT: rts 243*4cce1074Sknickish; 244*4cce1074Sknickish; NO-ATOMIC-PIC-LABEL: atomic_load_i32_unordered: 245*4cce1074Sknickish; NO-ATOMIC-PIC: ; %bb.0: 246*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: move.l (4,%sp), %a0 247*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: move.l (%a0), %d0 248*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: rts 249*4cce1074Sknickish; 250*4cce1074Sknickish; ATOMIC-LABEL: atomic_load_i32_unordered: 251*4cce1074Sknickish; ATOMIC: ; %bb.0: 252*4cce1074Sknickish; ATOMIC-NEXT: move.l (4,%sp), %a0 253*4cce1074Sknickish; ATOMIC-NEXT: move.l (%a0), %d0 254*4cce1074Sknickish; ATOMIC-NEXT: rts 255*4cce1074Sknickish; 256*4cce1074Sknickish; ATOMIC-PIC-LABEL: atomic_load_i32_unordered: 257*4cce1074Sknickish; ATOMIC-PIC: ; %bb.0: 258*4cce1074Sknickish; ATOMIC-PIC-NEXT: move.l (4,%sp), %a0 259*4cce1074Sknickish; ATOMIC-PIC-NEXT: move.l (%a0), %d0 260*4cce1074Sknickish; ATOMIC-PIC-NEXT: rts 261*4cce1074Sknickish %1 = load atomic i32, ptr %a unordered, align 4 262*4cce1074Sknickish ret i32 %1 263*4cce1074Sknickish} 264*4cce1074Sknickish 265*4cce1074Sknickishdefine i32 @atomic_load_i32_monotonic(ptr %a) nounwind { 266*4cce1074Sknickish; NO-ATOMIC-LABEL: atomic_load_i32_monotonic: 267*4cce1074Sknickish; NO-ATOMIC: ; %bb.0: 268*4cce1074Sknickish; NO-ATOMIC-NEXT: move.l (4,%sp), %a0 269*4cce1074Sknickish; NO-ATOMIC-NEXT: move.l (%a0), %d0 270*4cce1074Sknickish; NO-ATOMIC-NEXT: rts 271*4cce1074Sknickish; 272*4cce1074Sknickish; NO-ATOMIC-PIC-LABEL: atomic_load_i32_monotonic: 273*4cce1074Sknickish; NO-ATOMIC-PIC: ; %bb.0: 274*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: move.l (4,%sp), %a0 275*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: move.l (%a0), %d0 276*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: rts 277*4cce1074Sknickish; 278*4cce1074Sknickish; ATOMIC-LABEL: atomic_load_i32_monotonic: 279*4cce1074Sknickish; ATOMIC: ; %bb.0: 280*4cce1074Sknickish; ATOMIC-NEXT: move.l (4,%sp), %a0 281*4cce1074Sknickish; ATOMIC-NEXT: move.l (%a0), %d0 282*4cce1074Sknickish; ATOMIC-NEXT: rts 283*4cce1074Sknickish; 284*4cce1074Sknickish; ATOMIC-PIC-LABEL: atomic_load_i32_monotonic: 285*4cce1074Sknickish; ATOMIC-PIC: ; %bb.0: 286*4cce1074Sknickish; ATOMIC-PIC-NEXT: move.l (4,%sp), %a0 287*4cce1074Sknickish; ATOMIC-PIC-NEXT: move.l (%a0), %d0 288*4cce1074Sknickish; ATOMIC-PIC-NEXT: rts 289*4cce1074Sknickish %1 = load atomic i32, ptr %a monotonic, align 4 290*4cce1074Sknickish ret i32 %1 291*4cce1074Sknickish} 292*4cce1074Sknickish 293*4cce1074Sknickishdefine i32 @atomic_load_i32_acquire(ptr %a) nounwind { 294*4cce1074Sknickish; NO-ATOMIC-LABEL: atomic_load_i32_acquire: 295*4cce1074Sknickish; NO-ATOMIC: ; %bb.0: 296*4cce1074Sknickish; NO-ATOMIC-NEXT: move.l (4,%sp), %a0 297*4cce1074Sknickish; NO-ATOMIC-NEXT: move.l (%a0), %d0 298*4cce1074Sknickish; NO-ATOMIC-NEXT: rts 299*4cce1074Sknickish; 300*4cce1074Sknickish; NO-ATOMIC-PIC-LABEL: atomic_load_i32_acquire: 301*4cce1074Sknickish; NO-ATOMIC-PIC: ; %bb.0: 302*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: move.l (4,%sp), %a0 303*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: move.l (%a0), %d0 304*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: rts 305*4cce1074Sknickish; 306*4cce1074Sknickish; ATOMIC-LABEL: atomic_load_i32_acquire: 307*4cce1074Sknickish; ATOMIC: ; %bb.0: 308*4cce1074Sknickish; ATOMIC-NEXT: move.l (4,%sp), %a0 309*4cce1074Sknickish; ATOMIC-NEXT: move.l (%a0), %d0 310*4cce1074Sknickish; ATOMIC-NEXT: rts 311*4cce1074Sknickish; 312*4cce1074Sknickish; ATOMIC-PIC-LABEL: atomic_load_i32_acquire: 313*4cce1074Sknickish; ATOMIC-PIC: ; %bb.0: 314*4cce1074Sknickish; ATOMIC-PIC-NEXT: move.l (4,%sp), %a0 315*4cce1074Sknickish; ATOMIC-PIC-NEXT: move.l (%a0), %d0 316*4cce1074Sknickish; ATOMIC-PIC-NEXT: rts 317*4cce1074Sknickish %1 = load atomic i32, ptr %a acquire, align 4 318*4cce1074Sknickish ret i32 %1 319*4cce1074Sknickish} 320*4cce1074Sknickish 321*4cce1074Sknickishdefine i32 @atomic_load_i32_seq_cst(ptr %a) nounwind { 322*4cce1074Sknickish; NO-ATOMIC-LABEL: atomic_load_i32_seq_cst: 323*4cce1074Sknickish; NO-ATOMIC: ; %bb.0: 324*4cce1074Sknickish; NO-ATOMIC-NEXT: move.l (4,%sp), %a0 325*4cce1074Sknickish; NO-ATOMIC-NEXT: move.l (%a0), %d0 326*4cce1074Sknickish; NO-ATOMIC-NEXT: rts 327*4cce1074Sknickish; 328*4cce1074Sknickish; NO-ATOMIC-PIC-LABEL: atomic_load_i32_seq_cst: 329*4cce1074Sknickish; NO-ATOMIC-PIC: ; %bb.0: 330*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: move.l (4,%sp), %a0 331*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: move.l (%a0), %d0 332*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: rts 333*4cce1074Sknickish; 334*4cce1074Sknickish; ATOMIC-LABEL: atomic_load_i32_seq_cst: 335*4cce1074Sknickish; ATOMIC: ; %bb.0: 336*4cce1074Sknickish; ATOMIC-NEXT: move.l (4,%sp), %a0 337*4cce1074Sknickish; ATOMIC-NEXT: move.l (%a0), %d0 338*4cce1074Sknickish; ATOMIC-NEXT: rts 339*4cce1074Sknickish; 340*4cce1074Sknickish; ATOMIC-PIC-LABEL: atomic_load_i32_seq_cst: 341*4cce1074Sknickish; ATOMIC-PIC: ; %bb.0: 342*4cce1074Sknickish; ATOMIC-PIC-NEXT: move.l (4,%sp), %a0 343*4cce1074Sknickish; ATOMIC-PIC-NEXT: move.l (%a0), %d0 344*4cce1074Sknickish; ATOMIC-PIC-NEXT: rts 345*4cce1074Sknickish %1 = load atomic i32, ptr %a seq_cst, align 4 346*4cce1074Sknickish ret i32 %1 347*4cce1074Sknickish} 348*4cce1074Sknickish 349*4cce1074Sknickishdefine i64 @atomic_load_i64_unordered(ptr %a) nounwind { 350*4cce1074Sknickish; NO-ATOMIC-LABEL: atomic_load_i64_unordered: 351*4cce1074Sknickish; NO-ATOMIC: ; %bb.0: 352*4cce1074Sknickish; NO-ATOMIC-NEXT: suba.l #12, %sp 353*4cce1074Sknickish; NO-ATOMIC-NEXT: move.l #0, (4,%sp) 354*4cce1074Sknickish; NO-ATOMIC-NEXT: move.l (16,%sp), (%sp) 355*4cce1074Sknickish; NO-ATOMIC-NEXT: jsr __atomic_load_8 356*4cce1074Sknickish; NO-ATOMIC-NEXT: adda.l #12, %sp 357*4cce1074Sknickish; NO-ATOMIC-NEXT: rts 358*4cce1074Sknickish; 359*4cce1074Sknickish; NO-ATOMIC-PIC-LABEL: atomic_load_i64_unordered: 360*4cce1074Sknickish; NO-ATOMIC-PIC: ; %bb.0: 361*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: suba.l #12, %sp 362*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: move.l #0, (4,%sp) 363*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: move.l (16,%sp), (%sp) 364*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: jsr (__atomic_load_8@PLT,%pc) 365*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: adda.l #12, %sp 366*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: rts 367*4cce1074Sknickish; 368*4cce1074Sknickish; ATOMIC-LABEL: atomic_load_i64_unordered: 369*4cce1074Sknickish; ATOMIC: ; %bb.0: 370*4cce1074Sknickish; ATOMIC-NEXT: suba.l #12, %sp 371*4cce1074Sknickish; ATOMIC-NEXT: move.l #0, (4,%sp) 372*4cce1074Sknickish; ATOMIC-NEXT: move.l (16,%sp), (%sp) 373*4cce1074Sknickish; ATOMIC-NEXT: jsr __atomic_load_8 374*4cce1074Sknickish; ATOMIC-NEXT: adda.l #12, %sp 375*4cce1074Sknickish; ATOMIC-NEXT: rts 376*4cce1074Sknickish; 377*4cce1074Sknickish; ATOMIC-PIC-LABEL: atomic_load_i64_unordered: 378*4cce1074Sknickish; ATOMIC-PIC: ; %bb.0: 379*4cce1074Sknickish; ATOMIC-PIC-NEXT: suba.l #12, %sp 380*4cce1074Sknickish; ATOMIC-PIC-NEXT: move.l #0, (4,%sp) 381*4cce1074Sknickish; ATOMIC-PIC-NEXT: move.l (16,%sp), (%sp) 382*4cce1074Sknickish; ATOMIC-PIC-NEXT: jsr (__atomic_load_8@PLT,%pc) 383*4cce1074Sknickish; ATOMIC-PIC-NEXT: adda.l #12, %sp 384*4cce1074Sknickish; ATOMIC-PIC-NEXT: rts 385*4cce1074Sknickish %1 = load atomic i64, ptr %a unordered, align 8 386*4cce1074Sknickish ret i64 %1 387*4cce1074Sknickish} 388*4cce1074Sknickish 389*4cce1074Sknickishdefine i64 @atomic_load_i64_monotonic(ptr %a) nounwind { 390*4cce1074Sknickish; NO-ATOMIC-LABEL: atomic_load_i64_monotonic: 391*4cce1074Sknickish; NO-ATOMIC: ; %bb.0: 392*4cce1074Sknickish; NO-ATOMIC-NEXT: suba.l #12, %sp 393*4cce1074Sknickish; NO-ATOMIC-NEXT: move.l #0, (4,%sp) 394*4cce1074Sknickish; NO-ATOMIC-NEXT: move.l (16,%sp), (%sp) 395*4cce1074Sknickish; NO-ATOMIC-NEXT: jsr __atomic_load_8 396*4cce1074Sknickish; NO-ATOMIC-NEXT: adda.l #12, %sp 397*4cce1074Sknickish; NO-ATOMIC-NEXT: rts 398*4cce1074Sknickish; 399*4cce1074Sknickish; NO-ATOMIC-PIC-LABEL: atomic_load_i64_monotonic: 400*4cce1074Sknickish; NO-ATOMIC-PIC: ; %bb.0: 401*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: suba.l #12, %sp 402*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: move.l #0, (4,%sp) 403*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: move.l (16,%sp), (%sp) 404*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: jsr (__atomic_load_8@PLT,%pc) 405*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: adda.l #12, %sp 406*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: rts 407*4cce1074Sknickish; 408*4cce1074Sknickish; ATOMIC-LABEL: atomic_load_i64_monotonic: 409*4cce1074Sknickish; ATOMIC: ; %bb.0: 410*4cce1074Sknickish; ATOMIC-NEXT: suba.l #12, %sp 411*4cce1074Sknickish; ATOMIC-NEXT: move.l #0, (4,%sp) 412*4cce1074Sknickish; ATOMIC-NEXT: move.l (16,%sp), (%sp) 413*4cce1074Sknickish; ATOMIC-NEXT: jsr __atomic_load_8 414*4cce1074Sknickish; ATOMIC-NEXT: adda.l #12, %sp 415*4cce1074Sknickish; ATOMIC-NEXT: rts 416*4cce1074Sknickish; 417*4cce1074Sknickish; ATOMIC-PIC-LABEL: atomic_load_i64_monotonic: 418*4cce1074Sknickish; ATOMIC-PIC: ; %bb.0: 419*4cce1074Sknickish; ATOMIC-PIC-NEXT: suba.l #12, %sp 420*4cce1074Sknickish; ATOMIC-PIC-NEXT: move.l #0, (4,%sp) 421*4cce1074Sknickish; ATOMIC-PIC-NEXT: move.l (16,%sp), (%sp) 422*4cce1074Sknickish; ATOMIC-PIC-NEXT: jsr (__atomic_load_8@PLT,%pc) 423*4cce1074Sknickish; ATOMIC-PIC-NEXT: adda.l #12, %sp 424*4cce1074Sknickish; ATOMIC-PIC-NEXT: rts 425*4cce1074Sknickish %1 = load atomic i64, ptr %a monotonic, align 8 426*4cce1074Sknickish ret i64 %1 427*4cce1074Sknickish} 428*4cce1074Sknickish 429*4cce1074Sknickishdefine i64 @atomic_load_i64_acquire(ptr %a) nounwind { 430*4cce1074Sknickish; NO-ATOMIC-LABEL: atomic_load_i64_acquire: 431*4cce1074Sknickish; NO-ATOMIC: ; %bb.0: 432*4cce1074Sknickish; NO-ATOMIC-NEXT: suba.l #12, %sp 433*4cce1074Sknickish; NO-ATOMIC-NEXT: move.l #2, (4,%sp) 434*4cce1074Sknickish; NO-ATOMIC-NEXT: move.l (16,%sp), (%sp) 435*4cce1074Sknickish; NO-ATOMIC-NEXT: jsr __atomic_load_8 436*4cce1074Sknickish; NO-ATOMIC-NEXT: adda.l #12, %sp 437*4cce1074Sknickish; NO-ATOMIC-NEXT: rts 438*4cce1074Sknickish; 439*4cce1074Sknickish; NO-ATOMIC-PIC-LABEL: atomic_load_i64_acquire: 440*4cce1074Sknickish; NO-ATOMIC-PIC: ; %bb.0: 441*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: suba.l #12, %sp 442*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: move.l #2, (4,%sp) 443*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: move.l (16,%sp), (%sp) 444*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: jsr (__atomic_load_8@PLT,%pc) 445*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: adda.l #12, %sp 446*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: rts 447*4cce1074Sknickish; 448*4cce1074Sknickish; ATOMIC-LABEL: atomic_load_i64_acquire: 449*4cce1074Sknickish; ATOMIC: ; %bb.0: 450*4cce1074Sknickish; ATOMIC-NEXT: suba.l #12, %sp 451*4cce1074Sknickish; ATOMIC-NEXT: move.l #2, (4,%sp) 452*4cce1074Sknickish; ATOMIC-NEXT: move.l (16,%sp), (%sp) 453*4cce1074Sknickish; ATOMIC-NEXT: jsr __atomic_load_8 454*4cce1074Sknickish; ATOMIC-NEXT: adda.l #12, %sp 455*4cce1074Sknickish; ATOMIC-NEXT: rts 456*4cce1074Sknickish; 457*4cce1074Sknickish; ATOMIC-PIC-LABEL: atomic_load_i64_acquire: 458*4cce1074Sknickish; ATOMIC-PIC: ; %bb.0: 459*4cce1074Sknickish; ATOMIC-PIC-NEXT: suba.l #12, %sp 460*4cce1074Sknickish; ATOMIC-PIC-NEXT: move.l #2, (4,%sp) 461*4cce1074Sknickish; ATOMIC-PIC-NEXT: move.l (16,%sp), (%sp) 462*4cce1074Sknickish; ATOMIC-PIC-NEXT: jsr (__atomic_load_8@PLT,%pc) 463*4cce1074Sknickish; ATOMIC-PIC-NEXT: adda.l #12, %sp 464*4cce1074Sknickish; ATOMIC-PIC-NEXT: rts 465*4cce1074Sknickish %1 = load atomic i64, ptr %a acquire, align 8 466*4cce1074Sknickish ret i64 %1 467*4cce1074Sknickish} 468*4cce1074Sknickish 469*4cce1074Sknickishdefine i64 @atomic_load_i64_seq_cst(ptr %a) nounwind { 470*4cce1074Sknickish; NO-ATOMIC-LABEL: atomic_load_i64_seq_cst: 471*4cce1074Sknickish; NO-ATOMIC: ; %bb.0: 472*4cce1074Sknickish; NO-ATOMIC-NEXT: suba.l #12, %sp 473*4cce1074Sknickish; NO-ATOMIC-NEXT: move.l #5, (4,%sp) 474*4cce1074Sknickish; NO-ATOMIC-NEXT: move.l (16,%sp), (%sp) 475*4cce1074Sknickish; NO-ATOMIC-NEXT: jsr __atomic_load_8 476*4cce1074Sknickish; NO-ATOMIC-NEXT: adda.l #12, %sp 477*4cce1074Sknickish; NO-ATOMIC-NEXT: rts 478*4cce1074Sknickish; 479*4cce1074Sknickish; NO-ATOMIC-PIC-LABEL: atomic_load_i64_seq_cst: 480*4cce1074Sknickish; NO-ATOMIC-PIC: ; %bb.0: 481*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: suba.l #12, %sp 482*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: move.l #5, (4,%sp) 483*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: move.l (16,%sp), (%sp) 484*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: jsr (__atomic_load_8@PLT,%pc) 485*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: adda.l #12, %sp 486*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: rts 487*4cce1074Sknickish; 488*4cce1074Sknickish; ATOMIC-LABEL: atomic_load_i64_seq_cst: 489*4cce1074Sknickish; ATOMIC: ; %bb.0: 490*4cce1074Sknickish; ATOMIC-NEXT: suba.l #12, %sp 491*4cce1074Sknickish; ATOMIC-NEXT: move.l #5, (4,%sp) 492*4cce1074Sknickish; ATOMIC-NEXT: move.l (16,%sp), (%sp) 493*4cce1074Sknickish; ATOMIC-NEXT: jsr __atomic_load_8 494*4cce1074Sknickish; ATOMIC-NEXT: adda.l #12, %sp 495*4cce1074Sknickish; ATOMIC-NEXT: rts 496*4cce1074Sknickish; 497*4cce1074Sknickish; ATOMIC-PIC-LABEL: atomic_load_i64_seq_cst: 498*4cce1074Sknickish; ATOMIC-PIC: ; %bb.0: 499*4cce1074Sknickish; ATOMIC-PIC-NEXT: suba.l #12, %sp 500*4cce1074Sknickish; ATOMIC-PIC-NEXT: move.l #5, (4,%sp) 501*4cce1074Sknickish; ATOMIC-PIC-NEXT: move.l (16,%sp), (%sp) 502*4cce1074Sknickish; ATOMIC-PIC-NEXT: jsr (__atomic_load_8@PLT,%pc) 503*4cce1074Sknickish; ATOMIC-PIC-NEXT: adda.l #12, %sp 504*4cce1074Sknickish; ATOMIC-PIC-NEXT: rts 505*4cce1074Sknickish %1 = load atomic i64, ptr %a seq_cst, align 8 506*4cce1074Sknickish ret i64 %1 507*4cce1074Sknickish} 508*4cce1074Sknickish 509*4cce1074Sknickishdefine void @atomic_store_i8_unordered(ptr %a, i8 %val) nounwind { 510*4cce1074Sknickish; NO-ATOMIC-LABEL: atomic_store_i8_unordered: 511*4cce1074Sknickish; NO-ATOMIC: ; %bb.0: 512*4cce1074Sknickish; NO-ATOMIC-NEXT: move.b (11,%sp), %d0 513*4cce1074Sknickish; NO-ATOMIC-NEXT: move.l (4,%sp), %a0 514*4cce1074Sknickish; NO-ATOMIC-NEXT: move.b %d0, (%a0) 515*4cce1074Sknickish; NO-ATOMIC-NEXT: rts 516*4cce1074Sknickish; 517*4cce1074Sknickish; NO-ATOMIC-PIC-LABEL: atomic_store_i8_unordered: 518*4cce1074Sknickish; NO-ATOMIC-PIC: ; %bb.0: 519*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: move.b (11,%sp), %d0 520*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: move.l (4,%sp), %a0 521*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: move.b %d0, (%a0) 522*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: rts 523*4cce1074Sknickish; 524*4cce1074Sknickish; ATOMIC-LABEL: atomic_store_i8_unordered: 525*4cce1074Sknickish; ATOMIC: ; %bb.0: 526*4cce1074Sknickish; ATOMIC-NEXT: move.b (11,%sp), %d0 527*4cce1074Sknickish; ATOMIC-NEXT: move.l (4,%sp), %a0 528*4cce1074Sknickish; ATOMIC-NEXT: move.b %d0, (%a0) 529*4cce1074Sknickish; ATOMIC-NEXT: rts 530*4cce1074Sknickish; 531*4cce1074Sknickish; ATOMIC-PIC-LABEL: atomic_store_i8_unordered: 532*4cce1074Sknickish; ATOMIC-PIC: ; %bb.0: 533*4cce1074Sknickish; ATOMIC-PIC-NEXT: move.b (11,%sp), %d0 534*4cce1074Sknickish; ATOMIC-PIC-NEXT: move.l (4,%sp), %a0 535*4cce1074Sknickish; ATOMIC-PIC-NEXT: move.b %d0, (%a0) 536*4cce1074Sknickish; ATOMIC-PIC-NEXT: rts 537*4cce1074Sknickish store atomic i8 %val, ptr %a unordered, align 1 538*4cce1074Sknickish ret void 539*4cce1074Sknickish} 540*4cce1074Sknickish 541*4cce1074Sknickishdefine void @atomic_store_i8_monotonic(ptr %a, i8 %val) nounwind { 542*4cce1074Sknickish; NO-ATOMIC-LABEL: atomic_store_i8_monotonic: 543*4cce1074Sknickish; NO-ATOMIC: ; %bb.0: 544*4cce1074Sknickish; NO-ATOMIC-NEXT: move.b (11,%sp), %d0 545*4cce1074Sknickish; NO-ATOMIC-NEXT: move.l (4,%sp), %a0 546*4cce1074Sknickish; NO-ATOMIC-NEXT: move.b %d0, (%a0) 547*4cce1074Sknickish; NO-ATOMIC-NEXT: rts 548*4cce1074Sknickish; 549*4cce1074Sknickish; NO-ATOMIC-PIC-LABEL: atomic_store_i8_monotonic: 550*4cce1074Sknickish; NO-ATOMIC-PIC: ; %bb.0: 551*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: move.b (11,%sp), %d0 552*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: move.l (4,%sp), %a0 553*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: move.b %d0, (%a0) 554*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: rts 555*4cce1074Sknickish; 556*4cce1074Sknickish; ATOMIC-LABEL: atomic_store_i8_monotonic: 557*4cce1074Sknickish; ATOMIC: ; %bb.0: 558*4cce1074Sknickish; ATOMIC-NEXT: move.b (11,%sp), %d0 559*4cce1074Sknickish; ATOMIC-NEXT: move.l (4,%sp), %a0 560*4cce1074Sknickish; ATOMIC-NEXT: move.b %d0, (%a0) 561*4cce1074Sknickish; ATOMIC-NEXT: rts 562*4cce1074Sknickish; 563*4cce1074Sknickish; ATOMIC-PIC-LABEL: atomic_store_i8_monotonic: 564*4cce1074Sknickish; ATOMIC-PIC: ; %bb.0: 565*4cce1074Sknickish; ATOMIC-PIC-NEXT: move.b (11,%sp), %d0 566*4cce1074Sknickish; ATOMIC-PIC-NEXT: move.l (4,%sp), %a0 567*4cce1074Sknickish; ATOMIC-PIC-NEXT: move.b %d0, (%a0) 568*4cce1074Sknickish; ATOMIC-PIC-NEXT: rts 569*4cce1074Sknickish store atomic i8 %val, ptr %a monotonic, align 1 570*4cce1074Sknickish ret void 571*4cce1074Sknickish} 572*4cce1074Sknickish 573*4cce1074Sknickishdefine void @atomic_store_i8_release(ptr %a, i8 %val) nounwind { 574*4cce1074Sknickish; NO-ATOMIC-LABEL: atomic_store_i8_release: 575*4cce1074Sknickish; NO-ATOMIC: ; %bb.0: 576*4cce1074Sknickish; NO-ATOMIC-NEXT: move.b (11,%sp), %d0 577*4cce1074Sknickish; NO-ATOMIC-NEXT: move.l (4,%sp), %a0 578*4cce1074Sknickish; NO-ATOMIC-NEXT: move.b %d0, (%a0) 579*4cce1074Sknickish; NO-ATOMIC-NEXT: rts 580*4cce1074Sknickish; 581*4cce1074Sknickish; NO-ATOMIC-PIC-LABEL: atomic_store_i8_release: 582*4cce1074Sknickish; NO-ATOMIC-PIC: ; %bb.0: 583*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: move.b (11,%sp), %d0 584*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: move.l (4,%sp), %a0 585*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: move.b %d0, (%a0) 586*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: rts 587*4cce1074Sknickish; 588*4cce1074Sknickish; ATOMIC-LABEL: atomic_store_i8_release: 589*4cce1074Sknickish; ATOMIC: ; %bb.0: 590*4cce1074Sknickish; ATOMIC-NEXT: move.b (11,%sp), %d0 591*4cce1074Sknickish; ATOMIC-NEXT: move.l (4,%sp), %a0 592*4cce1074Sknickish; ATOMIC-NEXT: move.b %d0, (%a0) 593*4cce1074Sknickish; ATOMIC-NEXT: rts 594*4cce1074Sknickish; 595*4cce1074Sknickish; ATOMIC-PIC-LABEL: atomic_store_i8_release: 596*4cce1074Sknickish; ATOMIC-PIC: ; %bb.0: 597*4cce1074Sknickish; ATOMIC-PIC-NEXT: move.b (11,%sp), %d0 598*4cce1074Sknickish; ATOMIC-PIC-NEXT: move.l (4,%sp), %a0 599*4cce1074Sknickish; ATOMIC-PIC-NEXT: move.b %d0, (%a0) 600*4cce1074Sknickish; ATOMIC-PIC-NEXT: rts 601*4cce1074Sknickish store atomic i8 %val, ptr %a release, align 1 602*4cce1074Sknickish ret void 603*4cce1074Sknickish} 604*4cce1074Sknickish 605*4cce1074Sknickishdefine void @atomic_store_i8_seq_cst(ptr %a, i8 %val) nounwind { 606*4cce1074Sknickish; NO-ATOMIC-LABEL: atomic_store_i8_seq_cst: 607*4cce1074Sknickish; NO-ATOMIC: ; %bb.0: 608*4cce1074Sknickish; NO-ATOMIC-NEXT: move.b (11,%sp), %d0 609*4cce1074Sknickish; NO-ATOMIC-NEXT: move.l (4,%sp), %a0 610*4cce1074Sknickish; NO-ATOMIC-NEXT: move.b %d0, (%a0) 611*4cce1074Sknickish; NO-ATOMIC-NEXT: rts 612*4cce1074Sknickish; 613*4cce1074Sknickish; NO-ATOMIC-PIC-LABEL: atomic_store_i8_seq_cst: 614*4cce1074Sknickish; NO-ATOMIC-PIC: ; %bb.0: 615*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: move.b (11,%sp), %d0 616*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: move.l (4,%sp), %a0 617*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: move.b %d0, (%a0) 618*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: rts 619*4cce1074Sknickish; 620*4cce1074Sknickish; ATOMIC-LABEL: atomic_store_i8_seq_cst: 621*4cce1074Sknickish; ATOMIC: ; %bb.0: 622*4cce1074Sknickish; ATOMIC-NEXT: move.b (11,%sp), %d0 623*4cce1074Sknickish; ATOMIC-NEXT: move.l (4,%sp), %a0 624*4cce1074Sknickish; ATOMIC-NEXT: move.b %d0, (%a0) 625*4cce1074Sknickish; ATOMIC-NEXT: rts 626*4cce1074Sknickish; 627*4cce1074Sknickish; ATOMIC-PIC-LABEL: atomic_store_i8_seq_cst: 628*4cce1074Sknickish; ATOMIC-PIC: ; %bb.0: 629*4cce1074Sknickish; ATOMIC-PIC-NEXT: move.b (11,%sp), %d0 630*4cce1074Sknickish; ATOMIC-PIC-NEXT: move.l (4,%sp), %a0 631*4cce1074Sknickish; ATOMIC-PIC-NEXT: move.b %d0, (%a0) 632*4cce1074Sknickish; ATOMIC-PIC-NEXT: rts 633*4cce1074Sknickish store atomic i8 %val, ptr %a seq_cst, align 1 634*4cce1074Sknickish ret void 635*4cce1074Sknickish} 636*4cce1074Sknickish 637*4cce1074Sknickishdefine void @atomic_store_i16_unordered(ptr %a, i16 %val) nounwind { 638*4cce1074Sknickish; NO-ATOMIC-LABEL: atomic_store_i16_unordered: 639*4cce1074Sknickish; NO-ATOMIC: ; %bb.0: 640*4cce1074Sknickish; NO-ATOMIC-NEXT: move.w (10,%sp), %d0 641*4cce1074Sknickish; NO-ATOMIC-NEXT: move.l (4,%sp), %a0 642*4cce1074Sknickish; NO-ATOMIC-NEXT: move.w %d0, (%a0) 643*4cce1074Sknickish; NO-ATOMIC-NEXT: rts 644*4cce1074Sknickish; 645*4cce1074Sknickish; NO-ATOMIC-PIC-LABEL: atomic_store_i16_unordered: 646*4cce1074Sknickish; NO-ATOMIC-PIC: ; %bb.0: 647*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: move.w (10,%sp), %d0 648*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: move.l (4,%sp), %a0 649*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: move.w %d0, (%a0) 650*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: rts 651*4cce1074Sknickish; 652*4cce1074Sknickish; ATOMIC-LABEL: atomic_store_i16_unordered: 653*4cce1074Sknickish; ATOMIC: ; %bb.0: 654*4cce1074Sknickish; ATOMIC-NEXT: move.w (10,%sp), %d0 655*4cce1074Sknickish; ATOMIC-NEXT: move.l (4,%sp), %a0 656*4cce1074Sknickish; ATOMIC-NEXT: move.w %d0, (%a0) 657*4cce1074Sknickish; ATOMIC-NEXT: rts 658*4cce1074Sknickish; 659*4cce1074Sknickish; ATOMIC-PIC-LABEL: atomic_store_i16_unordered: 660*4cce1074Sknickish; ATOMIC-PIC: ; %bb.0: 661*4cce1074Sknickish; ATOMIC-PIC-NEXT: move.w (10,%sp), %d0 662*4cce1074Sknickish; ATOMIC-PIC-NEXT: move.l (4,%sp), %a0 663*4cce1074Sknickish; ATOMIC-PIC-NEXT: move.w %d0, (%a0) 664*4cce1074Sknickish; ATOMIC-PIC-NEXT: rts 665*4cce1074Sknickish store atomic i16 %val, ptr %a unordered, align 2 666*4cce1074Sknickish ret void 667*4cce1074Sknickish} 668*4cce1074Sknickish 669*4cce1074Sknickishdefine void @atomic_store_i16_monotonic(ptr %a, i16 %val) nounwind { 670*4cce1074Sknickish; NO-ATOMIC-LABEL: atomic_store_i16_monotonic: 671*4cce1074Sknickish; NO-ATOMIC: ; %bb.0: 672*4cce1074Sknickish; NO-ATOMIC-NEXT: move.w (10,%sp), %d0 673*4cce1074Sknickish; NO-ATOMIC-NEXT: move.l (4,%sp), %a0 674*4cce1074Sknickish; NO-ATOMIC-NEXT: move.w %d0, (%a0) 675*4cce1074Sknickish; NO-ATOMIC-NEXT: rts 676*4cce1074Sknickish; 677*4cce1074Sknickish; NO-ATOMIC-PIC-LABEL: atomic_store_i16_monotonic: 678*4cce1074Sknickish; NO-ATOMIC-PIC: ; %bb.0: 679*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: move.w (10,%sp), %d0 680*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: move.l (4,%sp), %a0 681*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: move.w %d0, (%a0) 682*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: rts 683*4cce1074Sknickish; 684*4cce1074Sknickish; ATOMIC-LABEL: atomic_store_i16_monotonic: 685*4cce1074Sknickish; ATOMIC: ; %bb.0: 686*4cce1074Sknickish; ATOMIC-NEXT: move.w (10,%sp), %d0 687*4cce1074Sknickish; ATOMIC-NEXT: move.l (4,%sp), %a0 688*4cce1074Sknickish; ATOMIC-NEXT: move.w %d0, (%a0) 689*4cce1074Sknickish; ATOMIC-NEXT: rts 690*4cce1074Sknickish; 691*4cce1074Sknickish; ATOMIC-PIC-LABEL: atomic_store_i16_monotonic: 692*4cce1074Sknickish; ATOMIC-PIC: ; %bb.0: 693*4cce1074Sknickish; ATOMIC-PIC-NEXT: move.w (10,%sp), %d0 694*4cce1074Sknickish; ATOMIC-PIC-NEXT: move.l (4,%sp), %a0 695*4cce1074Sknickish; ATOMIC-PIC-NEXT: move.w %d0, (%a0) 696*4cce1074Sknickish; ATOMIC-PIC-NEXT: rts 697*4cce1074Sknickish store atomic i16 %val, ptr %a monotonic, align 2 698*4cce1074Sknickish ret void 699*4cce1074Sknickish} 700*4cce1074Sknickish 701*4cce1074Sknickishdefine void @atomic_store_i16_release(ptr %a, i16 %val) nounwind { 702*4cce1074Sknickish; NO-ATOMIC-LABEL: atomic_store_i16_release: 703*4cce1074Sknickish; NO-ATOMIC: ; %bb.0: 704*4cce1074Sknickish; NO-ATOMIC-NEXT: move.w (10,%sp), %d0 705*4cce1074Sknickish; NO-ATOMIC-NEXT: move.l (4,%sp), %a0 706*4cce1074Sknickish; NO-ATOMIC-NEXT: move.w %d0, (%a0) 707*4cce1074Sknickish; NO-ATOMIC-NEXT: rts 708*4cce1074Sknickish; 709*4cce1074Sknickish; NO-ATOMIC-PIC-LABEL: atomic_store_i16_release: 710*4cce1074Sknickish; NO-ATOMIC-PIC: ; %bb.0: 711*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: move.w (10,%sp), %d0 712*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: move.l (4,%sp), %a0 713*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: move.w %d0, (%a0) 714*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: rts 715*4cce1074Sknickish; 716*4cce1074Sknickish; ATOMIC-LABEL: atomic_store_i16_release: 717*4cce1074Sknickish; ATOMIC: ; %bb.0: 718*4cce1074Sknickish; ATOMIC-NEXT: move.w (10,%sp), %d0 719*4cce1074Sknickish; ATOMIC-NEXT: move.l (4,%sp), %a0 720*4cce1074Sknickish; ATOMIC-NEXT: move.w %d0, (%a0) 721*4cce1074Sknickish; ATOMIC-NEXT: rts 722*4cce1074Sknickish; 723*4cce1074Sknickish; ATOMIC-PIC-LABEL: atomic_store_i16_release: 724*4cce1074Sknickish; ATOMIC-PIC: ; %bb.0: 725*4cce1074Sknickish; ATOMIC-PIC-NEXT: move.w (10,%sp), %d0 726*4cce1074Sknickish; ATOMIC-PIC-NEXT: move.l (4,%sp), %a0 727*4cce1074Sknickish; ATOMIC-PIC-NEXT: move.w %d0, (%a0) 728*4cce1074Sknickish; ATOMIC-PIC-NEXT: rts 729*4cce1074Sknickish store atomic i16 %val, ptr %a release, align 2 730*4cce1074Sknickish ret void 731*4cce1074Sknickish} 732*4cce1074Sknickish 733*4cce1074Sknickishdefine void @atomic_store_i16_seq_cst(ptr %a, i16 %val) nounwind { 734*4cce1074Sknickish; NO-ATOMIC-LABEL: atomic_store_i16_seq_cst: 735*4cce1074Sknickish; NO-ATOMIC: ; %bb.0: 736*4cce1074Sknickish; NO-ATOMIC-NEXT: move.w (10,%sp), %d0 737*4cce1074Sknickish; NO-ATOMIC-NEXT: move.l (4,%sp), %a0 738*4cce1074Sknickish; NO-ATOMIC-NEXT: move.w %d0, (%a0) 739*4cce1074Sknickish; NO-ATOMIC-NEXT: rts 740*4cce1074Sknickish; 741*4cce1074Sknickish; NO-ATOMIC-PIC-LABEL: atomic_store_i16_seq_cst: 742*4cce1074Sknickish; NO-ATOMIC-PIC: ; %bb.0: 743*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: move.w (10,%sp), %d0 744*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: move.l (4,%sp), %a0 745*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: move.w %d0, (%a0) 746*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: rts 747*4cce1074Sknickish; 748*4cce1074Sknickish; ATOMIC-LABEL: atomic_store_i16_seq_cst: 749*4cce1074Sknickish; ATOMIC: ; %bb.0: 750*4cce1074Sknickish; ATOMIC-NEXT: move.w (10,%sp), %d0 751*4cce1074Sknickish; ATOMIC-NEXT: move.l (4,%sp), %a0 752*4cce1074Sknickish; ATOMIC-NEXT: move.w %d0, (%a0) 753*4cce1074Sknickish; ATOMIC-NEXT: rts 754*4cce1074Sknickish; 755*4cce1074Sknickish; ATOMIC-PIC-LABEL: atomic_store_i16_seq_cst: 756*4cce1074Sknickish; ATOMIC-PIC: ; %bb.0: 757*4cce1074Sknickish; ATOMIC-PIC-NEXT: move.w (10,%sp), %d0 758*4cce1074Sknickish; ATOMIC-PIC-NEXT: move.l (4,%sp), %a0 759*4cce1074Sknickish; ATOMIC-PIC-NEXT: move.w %d0, (%a0) 760*4cce1074Sknickish; ATOMIC-PIC-NEXT: rts 761*4cce1074Sknickish store atomic i16 %val, ptr %a seq_cst, align 2 762*4cce1074Sknickish ret void 763*4cce1074Sknickish} 764*4cce1074Sknickish 765*4cce1074Sknickishdefine void @atomic_store_i32_unordered(ptr %a, i32 %val) nounwind { 766*4cce1074Sknickish; NO-ATOMIC-LABEL: atomic_store_i32_unordered: 767*4cce1074Sknickish; NO-ATOMIC: ; %bb.0: 768*4cce1074Sknickish; NO-ATOMIC-NEXT: move.l (8,%sp), %d0 769*4cce1074Sknickish; NO-ATOMIC-NEXT: move.l (4,%sp), %a0 770*4cce1074Sknickish; NO-ATOMIC-NEXT: move.l %d0, (%a0) 771*4cce1074Sknickish; NO-ATOMIC-NEXT: rts 772*4cce1074Sknickish; 773*4cce1074Sknickish; NO-ATOMIC-PIC-LABEL: atomic_store_i32_unordered: 774*4cce1074Sknickish; NO-ATOMIC-PIC: ; %bb.0: 775*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: move.l (8,%sp), %d0 776*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: move.l (4,%sp), %a0 777*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: move.l %d0, (%a0) 778*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: rts 779*4cce1074Sknickish; 780*4cce1074Sknickish; ATOMIC-LABEL: atomic_store_i32_unordered: 781*4cce1074Sknickish; ATOMIC: ; %bb.0: 782*4cce1074Sknickish; ATOMIC-NEXT: move.l (8,%sp), %d0 783*4cce1074Sknickish; ATOMIC-NEXT: move.l (4,%sp), %a0 784*4cce1074Sknickish; ATOMIC-NEXT: move.l %d0, (%a0) 785*4cce1074Sknickish; ATOMIC-NEXT: rts 786*4cce1074Sknickish; 787*4cce1074Sknickish; ATOMIC-PIC-LABEL: atomic_store_i32_unordered: 788*4cce1074Sknickish; ATOMIC-PIC: ; %bb.0: 789*4cce1074Sknickish; ATOMIC-PIC-NEXT: move.l (8,%sp), %d0 790*4cce1074Sknickish; ATOMIC-PIC-NEXT: move.l (4,%sp), %a0 791*4cce1074Sknickish; ATOMIC-PIC-NEXT: move.l %d0, (%a0) 792*4cce1074Sknickish; ATOMIC-PIC-NEXT: rts 793*4cce1074Sknickish store atomic i32 %val, ptr %a unordered, align 4 794*4cce1074Sknickish ret void 795*4cce1074Sknickish} 796*4cce1074Sknickish 797*4cce1074Sknickishdefine void @atomic_store_i32_monotonic(ptr %a, i32 %val) nounwind { 798*4cce1074Sknickish; NO-ATOMIC-LABEL: atomic_store_i32_monotonic: 799*4cce1074Sknickish; NO-ATOMIC: ; %bb.0: 800*4cce1074Sknickish; NO-ATOMIC-NEXT: move.l (8,%sp), %d0 801*4cce1074Sknickish; NO-ATOMIC-NEXT: move.l (4,%sp), %a0 802*4cce1074Sknickish; NO-ATOMIC-NEXT: move.l %d0, (%a0) 803*4cce1074Sknickish; NO-ATOMIC-NEXT: rts 804*4cce1074Sknickish; 805*4cce1074Sknickish; NO-ATOMIC-PIC-LABEL: atomic_store_i32_monotonic: 806*4cce1074Sknickish; NO-ATOMIC-PIC: ; %bb.0: 807*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: move.l (8,%sp), %d0 808*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: move.l (4,%sp), %a0 809*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: move.l %d0, (%a0) 810*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: rts 811*4cce1074Sknickish; 812*4cce1074Sknickish; ATOMIC-LABEL: atomic_store_i32_monotonic: 813*4cce1074Sknickish; ATOMIC: ; %bb.0: 814*4cce1074Sknickish; ATOMIC-NEXT: move.l (8,%sp), %d0 815*4cce1074Sknickish; ATOMIC-NEXT: move.l (4,%sp), %a0 816*4cce1074Sknickish; ATOMIC-NEXT: move.l %d0, (%a0) 817*4cce1074Sknickish; ATOMIC-NEXT: rts 818*4cce1074Sknickish; 819*4cce1074Sknickish; ATOMIC-PIC-LABEL: atomic_store_i32_monotonic: 820*4cce1074Sknickish; ATOMIC-PIC: ; %bb.0: 821*4cce1074Sknickish; ATOMIC-PIC-NEXT: move.l (8,%sp), %d0 822*4cce1074Sknickish; ATOMIC-PIC-NEXT: move.l (4,%sp), %a0 823*4cce1074Sknickish; ATOMIC-PIC-NEXT: move.l %d0, (%a0) 824*4cce1074Sknickish; ATOMIC-PIC-NEXT: rts 825*4cce1074Sknickish store atomic i32 %val, ptr %a monotonic, align 4 826*4cce1074Sknickish ret void 827*4cce1074Sknickish} 828*4cce1074Sknickish 829*4cce1074Sknickishdefine void @atomic_store_i32_release(ptr %a, i32 %val) nounwind { 830*4cce1074Sknickish; NO-ATOMIC-LABEL: atomic_store_i32_release: 831*4cce1074Sknickish; NO-ATOMIC: ; %bb.0: 832*4cce1074Sknickish; NO-ATOMIC-NEXT: move.l (8,%sp), %d0 833*4cce1074Sknickish; NO-ATOMIC-NEXT: move.l (4,%sp), %a0 834*4cce1074Sknickish; NO-ATOMIC-NEXT: move.l %d0, (%a0) 835*4cce1074Sknickish; NO-ATOMIC-NEXT: rts 836*4cce1074Sknickish; 837*4cce1074Sknickish; NO-ATOMIC-PIC-LABEL: atomic_store_i32_release: 838*4cce1074Sknickish; NO-ATOMIC-PIC: ; %bb.0: 839*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: move.l (8,%sp), %d0 840*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: move.l (4,%sp), %a0 841*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: move.l %d0, (%a0) 842*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: rts 843*4cce1074Sknickish; 844*4cce1074Sknickish; ATOMIC-LABEL: atomic_store_i32_release: 845*4cce1074Sknickish; ATOMIC: ; %bb.0: 846*4cce1074Sknickish; ATOMIC-NEXT: move.l (8,%sp), %d0 847*4cce1074Sknickish; ATOMIC-NEXT: move.l (4,%sp), %a0 848*4cce1074Sknickish; ATOMIC-NEXT: move.l %d0, (%a0) 849*4cce1074Sknickish; ATOMIC-NEXT: rts 850*4cce1074Sknickish; 851*4cce1074Sknickish; ATOMIC-PIC-LABEL: atomic_store_i32_release: 852*4cce1074Sknickish; ATOMIC-PIC: ; %bb.0: 853*4cce1074Sknickish; ATOMIC-PIC-NEXT: move.l (8,%sp), %d0 854*4cce1074Sknickish; ATOMIC-PIC-NEXT: move.l (4,%sp), %a0 855*4cce1074Sknickish; ATOMIC-PIC-NEXT: move.l %d0, (%a0) 856*4cce1074Sknickish; ATOMIC-PIC-NEXT: rts 857*4cce1074Sknickish store atomic i32 %val, ptr %a release, align 4 858*4cce1074Sknickish ret void 859*4cce1074Sknickish} 860*4cce1074Sknickish 861*4cce1074Sknickishdefine void @atomic_store_i32_seq_cst(ptr %a, i32 %val) nounwind { 862*4cce1074Sknickish; NO-ATOMIC-LABEL: atomic_store_i32_seq_cst: 863*4cce1074Sknickish; NO-ATOMIC: ; %bb.0: 864*4cce1074Sknickish; NO-ATOMIC-NEXT: move.l (8,%sp), %d0 865*4cce1074Sknickish; NO-ATOMIC-NEXT: move.l (4,%sp), %a0 866*4cce1074Sknickish; NO-ATOMIC-NEXT: move.l %d0, (%a0) 867*4cce1074Sknickish; NO-ATOMIC-NEXT: rts 868*4cce1074Sknickish; 869*4cce1074Sknickish; NO-ATOMIC-PIC-LABEL: atomic_store_i32_seq_cst: 870*4cce1074Sknickish; NO-ATOMIC-PIC: ; %bb.0: 871*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: move.l (8,%sp), %d0 872*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: move.l (4,%sp), %a0 873*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: move.l %d0, (%a0) 874*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: rts 875*4cce1074Sknickish; 876*4cce1074Sknickish; ATOMIC-LABEL: atomic_store_i32_seq_cst: 877*4cce1074Sknickish; ATOMIC: ; %bb.0: 878*4cce1074Sknickish; ATOMIC-NEXT: move.l (8,%sp), %d0 879*4cce1074Sknickish; ATOMIC-NEXT: move.l (4,%sp), %a0 880*4cce1074Sknickish; ATOMIC-NEXT: move.l %d0, (%a0) 881*4cce1074Sknickish; ATOMIC-NEXT: rts 882*4cce1074Sknickish; 883*4cce1074Sknickish; ATOMIC-PIC-LABEL: atomic_store_i32_seq_cst: 884*4cce1074Sknickish; ATOMIC-PIC: ; %bb.0: 885*4cce1074Sknickish; ATOMIC-PIC-NEXT: move.l (8,%sp), %d0 886*4cce1074Sknickish; ATOMIC-PIC-NEXT: move.l (4,%sp), %a0 887*4cce1074Sknickish; ATOMIC-PIC-NEXT: move.l %d0, (%a0) 888*4cce1074Sknickish; ATOMIC-PIC-NEXT: rts 889*4cce1074Sknickish store atomic i32 %val, ptr %a seq_cst, align 4 890*4cce1074Sknickish ret void 891*4cce1074Sknickish} 892*4cce1074Sknickish 893*4cce1074Sknickishdefine void @atomic_store_i64_unordered(ptr %a, i64 %val) nounwind { 894*4cce1074Sknickish; NO-ATOMIC-LABEL: atomic_store_i64_unordered: 895*4cce1074Sknickish; NO-ATOMIC: ; %bb.0: 896*4cce1074Sknickish; NO-ATOMIC-NEXT: suba.l #20, %sp 897*4cce1074Sknickish; NO-ATOMIC-NEXT: move.l #0, (12,%sp) 898*4cce1074Sknickish; NO-ATOMIC-NEXT: move.l (32,%sp), (8,%sp) 899*4cce1074Sknickish; NO-ATOMIC-NEXT: move.l (28,%sp), (4,%sp) 900*4cce1074Sknickish; NO-ATOMIC-NEXT: move.l (24,%sp), (%sp) 901*4cce1074Sknickish; NO-ATOMIC-NEXT: jsr __atomic_store_8 902*4cce1074Sknickish; NO-ATOMIC-NEXT: adda.l #20, %sp 903*4cce1074Sknickish; NO-ATOMIC-NEXT: rts 904*4cce1074Sknickish; 905*4cce1074Sknickish; NO-ATOMIC-PIC-LABEL: atomic_store_i64_unordered: 906*4cce1074Sknickish; NO-ATOMIC-PIC: ; %bb.0: 907*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: suba.l #20, %sp 908*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: move.l #0, (12,%sp) 909*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: move.l (32,%sp), (8,%sp) 910*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: move.l (28,%sp), (4,%sp) 911*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: move.l (24,%sp), (%sp) 912*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: jsr (__atomic_store_8@PLT,%pc) 913*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: adda.l #20, %sp 914*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: rts 915*4cce1074Sknickish; 916*4cce1074Sknickish; ATOMIC-LABEL: atomic_store_i64_unordered: 917*4cce1074Sknickish; ATOMIC: ; %bb.0: 918*4cce1074Sknickish; ATOMIC-NEXT: suba.l #20, %sp 919*4cce1074Sknickish; ATOMIC-NEXT: move.l #0, (12,%sp) 920*4cce1074Sknickish; ATOMIC-NEXT: move.l (32,%sp), (8,%sp) 921*4cce1074Sknickish; ATOMIC-NEXT: move.l (28,%sp), (4,%sp) 922*4cce1074Sknickish; ATOMIC-NEXT: move.l (24,%sp), (%sp) 923*4cce1074Sknickish; ATOMIC-NEXT: jsr __atomic_store_8 924*4cce1074Sknickish; ATOMIC-NEXT: adda.l #20, %sp 925*4cce1074Sknickish; ATOMIC-NEXT: rts 926*4cce1074Sknickish; 927*4cce1074Sknickish; ATOMIC-PIC-LABEL: atomic_store_i64_unordered: 928*4cce1074Sknickish; ATOMIC-PIC: ; %bb.0: 929*4cce1074Sknickish; ATOMIC-PIC-NEXT: suba.l #20, %sp 930*4cce1074Sknickish; ATOMIC-PIC-NEXT: move.l #0, (12,%sp) 931*4cce1074Sknickish; ATOMIC-PIC-NEXT: move.l (32,%sp), (8,%sp) 932*4cce1074Sknickish; ATOMIC-PIC-NEXT: move.l (28,%sp), (4,%sp) 933*4cce1074Sknickish; ATOMIC-PIC-NEXT: move.l (24,%sp), (%sp) 934*4cce1074Sknickish; ATOMIC-PIC-NEXT: jsr (__atomic_store_8@PLT,%pc) 935*4cce1074Sknickish; ATOMIC-PIC-NEXT: adda.l #20, %sp 936*4cce1074Sknickish; ATOMIC-PIC-NEXT: rts 937*4cce1074Sknickish store atomic i64 %val, ptr %a unordered, align 8 938*4cce1074Sknickish ret void 939*4cce1074Sknickish} 940*4cce1074Sknickish 941*4cce1074Sknickishdefine void @atomic_store_i64_monotonic(ptr %a, i64 %val) nounwind { 942*4cce1074Sknickish; NO-ATOMIC-LABEL: atomic_store_i64_monotonic: 943*4cce1074Sknickish; NO-ATOMIC: ; %bb.0: 944*4cce1074Sknickish; NO-ATOMIC-NEXT: suba.l #20, %sp 945*4cce1074Sknickish; NO-ATOMIC-NEXT: move.l #0, (12,%sp) 946*4cce1074Sknickish; NO-ATOMIC-NEXT: move.l (32,%sp), (8,%sp) 947*4cce1074Sknickish; NO-ATOMIC-NEXT: move.l (28,%sp), (4,%sp) 948*4cce1074Sknickish; NO-ATOMIC-NEXT: move.l (24,%sp), (%sp) 949*4cce1074Sknickish; NO-ATOMIC-NEXT: jsr __atomic_store_8 950*4cce1074Sknickish; NO-ATOMIC-NEXT: adda.l #20, %sp 951*4cce1074Sknickish; NO-ATOMIC-NEXT: rts 952*4cce1074Sknickish; 953*4cce1074Sknickish; NO-ATOMIC-PIC-LABEL: atomic_store_i64_monotonic: 954*4cce1074Sknickish; NO-ATOMIC-PIC: ; %bb.0: 955*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: suba.l #20, %sp 956*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: move.l #0, (12,%sp) 957*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: move.l (32,%sp), (8,%sp) 958*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: move.l (28,%sp), (4,%sp) 959*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: move.l (24,%sp), (%sp) 960*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: jsr (__atomic_store_8@PLT,%pc) 961*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: adda.l #20, %sp 962*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: rts 963*4cce1074Sknickish; 964*4cce1074Sknickish; ATOMIC-LABEL: atomic_store_i64_monotonic: 965*4cce1074Sknickish; ATOMIC: ; %bb.0: 966*4cce1074Sknickish; ATOMIC-NEXT: suba.l #20, %sp 967*4cce1074Sknickish; ATOMIC-NEXT: move.l #0, (12,%sp) 968*4cce1074Sknickish; ATOMIC-NEXT: move.l (32,%sp), (8,%sp) 969*4cce1074Sknickish; ATOMIC-NEXT: move.l (28,%sp), (4,%sp) 970*4cce1074Sknickish; ATOMIC-NEXT: move.l (24,%sp), (%sp) 971*4cce1074Sknickish; ATOMIC-NEXT: jsr __atomic_store_8 972*4cce1074Sknickish; ATOMIC-NEXT: adda.l #20, %sp 973*4cce1074Sknickish; ATOMIC-NEXT: rts 974*4cce1074Sknickish; 975*4cce1074Sknickish; ATOMIC-PIC-LABEL: atomic_store_i64_monotonic: 976*4cce1074Sknickish; ATOMIC-PIC: ; %bb.0: 977*4cce1074Sknickish; ATOMIC-PIC-NEXT: suba.l #20, %sp 978*4cce1074Sknickish; ATOMIC-PIC-NEXT: move.l #0, (12,%sp) 979*4cce1074Sknickish; ATOMIC-PIC-NEXT: move.l (32,%sp), (8,%sp) 980*4cce1074Sknickish; ATOMIC-PIC-NEXT: move.l (28,%sp), (4,%sp) 981*4cce1074Sknickish; ATOMIC-PIC-NEXT: move.l (24,%sp), (%sp) 982*4cce1074Sknickish; ATOMIC-PIC-NEXT: jsr (__atomic_store_8@PLT,%pc) 983*4cce1074Sknickish; ATOMIC-PIC-NEXT: adda.l #20, %sp 984*4cce1074Sknickish; ATOMIC-PIC-NEXT: rts 985*4cce1074Sknickish store atomic i64 %val, ptr %a monotonic, align 8 986*4cce1074Sknickish ret void 987*4cce1074Sknickish} 988*4cce1074Sknickish 989*4cce1074Sknickishdefine void @atomic_store_i64_release(ptr %a, i64 %val) nounwind { 990*4cce1074Sknickish; NO-ATOMIC-LABEL: atomic_store_i64_release: 991*4cce1074Sknickish; NO-ATOMIC: ; %bb.0: 992*4cce1074Sknickish; NO-ATOMIC-NEXT: suba.l #20, %sp 993*4cce1074Sknickish; NO-ATOMIC-NEXT: move.l #3, (12,%sp) 994*4cce1074Sknickish; NO-ATOMIC-NEXT: move.l (32,%sp), (8,%sp) 995*4cce1074Sknickish; NO-ATOMIC-NEXT: move.l (28,%sp), (4,%sp) 996*4cce1074Sknickish; NO-ATOMIC-NEXT: move.l (24,%sp), (%sp) 997*4cce1074Sknickish; NO-ATOMIC-NEXT: jsr __atomic_store_8 998*4cce1074Sknickish; NO-ATOMIC-NEXT: adda.l #20, %sp 999*4cce1074Sknickish; NO-ATOMIC-NEXT: rts 1000*4cce1074Sknickish; 1001*4cce1074Sknickish; NO-ATOMIC-PIC-LABEL: atomic_store_i64_release: 1002*4cce1074Sknickish; NO-ATOMIC-PIC: ; %bb.0: 1003*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: suba.l #20, %sp 1004*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: move.l #3, (12,%sp) 1005*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: move.l (32,%sp), (8,%sp) 1006*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: move.l (28,%sp), (4,%sp) 1007*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: move.l (24,%sp), (%sp) 1008*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: jsr (__atomic_store_8@PLT,%pc) 1009*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: adda.l #20, %sp 1010*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: rts 1011*4cce1074Sknickish; 1012*4cce1074Sknickish; ATOMIC-LABEL: atomic_store_i64_release: 1013*4cce1074Sknickish; ATOMIC: ; %bb.0: 1014*4cce1074Sknickish; ATOMIC-NEXT: suba.l #20, %sp 1015*4cce1074Sknickish; ATOMIC-NEXT: move.l #3, (12,%sp) 1016*4cce1074Sknickish; ATOMIC-NEXT: move.l (32,%sp), (8,%sp) 1017*4cce1074Sknickish; ATOMIC-NEXT: move.l (28,%sp), (4,%sp) 1018*4cce1074Sknickish; ATOMIC-NEXT: move.l (24,%sp), (%sp) 1019*4cce1074Sknickish; ATOMIC-NEXT: jsr __atomic_store_8 1020*4cce1074Sknickish; ATOMIC-NEXT: adda.l #20, %sp 1021*4cce1074Sknickish; ATOMIC-NEXT: rts 1022*4cce1074Sknickish; 1023*4cce1074Sknickish; ATOMIC-PIC-LABEL: atomic_store_i64_release: 1024*4cce1074Sknickish; ATOMIC-PIC: ; %bb.0: 1025*4cce1074Sknickish; ATOMIC-PIC-NEXT: suba.l #20, %sp 1026*4cce1074Sknickish; ATOMIC-PIC-NEXT: move.l #3, (12,%sp) 1027*4cce1074Sknickish; ATOMIC-PIC-NEXT: move.l (32,%sp), (8,%sp) 1028*4cce1074Sknickish; ATOMIC-PIC-NEXT: move.l (28,%sp), (4,%sp) 1029*4cce1074Sknickish; ATOMIC-PIC-NEXT: move.l (24,%sp), (%sp) 1030*4cce1074Sknickish; ATOMIC-PIC-NEXT: jsr (__atomic_store_8@PLT,%pc) 1031*4cce1074Sknickish; ATOMIC-PIC-NEXT: adda.l #20, %sp 1032*4cce1074Sknickish; ATOMIC-PIC-NEXT: rts 1033*4cce1074Sknickish store atomic i64 %val, ptr %a release, align 8 1034*4cce1074Sknickish ret void 1035*4cce1074Sknickish} 1036*4cce1074Sknickish 1037*4cce1074Sknickishdefine void @atomic_store_i64_seq_cst(ptr %a, i64 %val) nounwind { 1038*4cce1074Sknickish; NO-ATOMIC-LABEL: atomic_store_i64_seq_cst: 1039*4cce1074Sknickish; NO-ATOMIC: ; %bb.0: 1040*4cce1074Sknickish; NO-ATOMIC-NEXT: suba.l #20, %sp 1041*4cce1074Sknickish; NO-ATOMIC-NEXT: move.l #5, (12,%sp) 1042*4cce1074Sknickish; NO-ATOMIC-NEXT: move.l (32,%sp), (8,%sp) 1043*4cce1074Sknickish; NO-ATOMIC-NEXT: move.l (28,%sp), (4,%sp) 1044*4cce1074Sknickish; NO-ATOMIC-NEXT: move.l (24,%sp), (%sp) 1045*4cce1074Sknickish; NO-ATOMIC-NEXT: jsr __atomic_store_8 1046*4cce1074Sknickish; NO-ATOMIC-NEXT: adda.l #20, %sp 1047*4cce1074Sknickish; NO-ATOMIC-NEXT: rts 1048*4cce1074Sknickish; 1049*4cce1074Sknickish; NO-ATOMIC-PIC-LABEL: atomic_store_i64_seq_cst: 1050*4cce1074Sknickish; NO-ATOMIC-PIC: ; %bb.0: 1051*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: suba.l #20, %sp 1052*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: move.l #5, (12,%sp) 1053*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: move.l (32,%sp), (8,%sp) 1054*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: move.l (28,%sp), (4,%sp) 1055*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: move.l (24,%sp), (%sp) 1056*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: jsr (__atomic_store_8@PLT,%pc) 1057*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: adda.l #20, %sp 1058*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: rts 1059*4cce1074Sknickish; 1060*4cce1074Sknickish; ATOMIC-LABEL: atomic_store_i64_seq_cst: 1061*4cce1074Sknickish; ATOMIC: ; %bb.0: 1062*4cce1074Sknickish; ATOMIC-NEXT: suba.l #20, %sp 1063*4cce1074Sknickish; ATOMIC-NEXT: move.l #5, (12,%sp) 1064*4cce1074Sknickish; ATOMIC-NEXT: move.l (32,%sp), (8,%sp) 1065*4cce1074Sknickish; ATOMIC-NEXT: move.l (28,%sp), (4,%sp) 1066*4cce1074Sknickish; ATOMIC-NEXT: move.l (24,%sp), (%sp) 1067*4cce1074Sknickish; ATOMIC-NEXT: jsr __atomic_store_8 1068*4cce1074Sknickish; ATOMIC-NEXT: adda.l #20, %sp 1069*4cce1074Sknickish; ATOMIC-NEXT: rts 1070*4cce1074Sknickish; 1071*4cce1074Sknickish; ATOMIC-PIC-LABEL: atomic_store_i64_seq_cst: 1072*4cce1074Sknickish; ATOMIC-PIC: ; %bb.0: 1073*4cce1074Sknickish; ATOMIC-PIC-NEXT: suba.l #20, %sp 1074*4cce1074Sknickish; ATOMIC-PIC-NEXT: move.l #5, (12,%sp) 1075*4cce1074Sknickish; ATOMIC-PIC-NEXT: move.l (32,%sp), (8,%sp) 1076*4cce1074Sknickish; ATOMIC-PIC-NEXT: move.l (28,%sp), (4,%sp) 1077*4cce1074Sknickish; ATOMIC-PIC-NEXT: move.l (24,%sp), (%sp) 1078*4cce1074Sknickish; ATOMIC-PIC-NEXT: jsr (__atomic_store_8@PLT,%pc) 1079*4cce1074Sknickish; ATOMIC-PIC-NEXT: adda.l #20, %sp 1080*4cce1074Sknickish; ATOMIC-PIC-NEXT: rts 1081*4cce1074Sknickish store atomic i64 %val, ptr %a seq_cst, align 8 1082*4cce1074Sknickish ret void 1083*4cce1074Sknickish} 1084*4cce1074Sknickish 1085*4cce1074Sknickishdefine void @store_arid(ptr nonnull align 4 %a) { 1086*4cce1074Sknickish; NO-ATOMIC-LABEL: store_arid: 1087*4cce1074Sknickish; NO-ATOMIC: .cfi_startproc 1088*4cce1074Sknickish; NO-ATOMIC-NEXT: ; %bb.0: ; %start 1089*4cce1074Sknickish; NO-ATOMIC-NEXT: moveq #1, %d0 1090*4cce1074Sknickish; NO-ATOMIC-NEXT: move.l (4,%sp), %a0 1091*4cce1074Sknickish; NO-ATOMIC-NEXT: move.l %d0, (32,%a0) 1092*4cce1074Sknickish; NO-ATOMIC-NEXT: rts 1093*4cce1074Sknickish; 1094*4cce1074Sknickish; NO-ATOMIC-PIC-LABEL: store_arid: 1095*4cce1074Sknickish; NO-ATOMIC-PIC: .cfi_startproc 1096*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: ; %bb.0: ; %start 1097*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: moveq #1, %d0 1098*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: move.l (4,%sp), %a0 1099*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: move.l %d0, (32,%a0) 1100*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: rts 1101*4cce1074Sknickish; 1102*4cce1074Sknickish; ATOMIC-LABEL: store_arid: 1103*4cce1074Sknickish; ATOMIC: .cfi_startproc 1104*4cce1074Sknickish; ATOMIC-NEXT: ; %bb.0: ; %start 1105*4cce1074Sknickish; ATOMIC-NEXT: moveq #1, %d0 1106*4cce1074Sknickish; ATOMIC-NEXT: move.l (4,%sp), %a0 1107*4cce1074Sknickish; ATOMIC-NEXT: move.l %d0, (32,%a0) 1108*4cce1074Sknickish; ATOMIC-NEXT: rts 1109*4cce1074Sknickish; 1110*4cce1074Sknickish; ATOMIC-PIC-LABEL: store_arid: 1111*4cce1074Sknickish; ATOMIC-PIC: .cfi_startproc 1112*4cce1074Sknickish; ATOMIC-PIC-NEXT: ; %bb.0: ; %start 1113*4cce1074Sknickish; ATOMIC-PIC-NEXT: moveq #1, %d0 1114*4cce1074Sknickish; ATOMIC-PIC-NEXT: move.l (4,%sp), %a0 1115*4cce1074Sknickish; ATOMIC-PIC-NEXT: move.l %d0, (32,%a0) 1116*4cce1074Sknickish; ATOMIC-PIC-NEXT: rts 1117*4cce1074Sknickishstart: 1118*4cce1074Sknickish %1 = getelementptr inbounds i32, ptr %a, i32 8 1119*4cce1074Sknickish store atomic i32 1, ptr %1 seq_cst, align 4 1120*4cce1074Sknickish br label %exit 1121*4cce1074Sknickish 1122*4cce1074Sknickishexit: ; preds = %start 1123*4cce1074Sknickish ret void 1124*4cce1074Sknickish} 1125*4cce1074Sknickish 1126*4cce1074Sknickishdefine i32 @load_arid(ptr nonnull align 4 %a) { 1127*4cce1074Sknickish; NO-ATOMIC-LABEL: load_arid: 1128*4cce1074Sknickish; NO-ATOMIC: .cfi_startproc 1129*4cce1074Sknickish; NO-ATOMIC-NEXT: ; %bb.0: ; %start 1130*4cce1074Sknickish; NO-ATOMIC-NEXT: move.l (4,%sp), %a0 1131*4cce1074Sknickish; NO-ATOMIC-NEXT: move.l (32,%a0), %d0 1132*4cce1074Sknickish; NO-ATOMIC-NEXT: rts 1133*4cce1074Sknickish; 1134*4cce1074Sknickish; NO-ATOMIC-PIC-LABEL: load_arid: 1135*4cce1074Sknickish; NO-ATOMIC-PIC: .cfi_startproc 1136*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: ; %bb.0: ; %start 1137*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: move.l (4,%sp), %a0 1138*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: move.l (32,%a0), %d0 1139*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT: rts 1140*4cce1074Sknickish; 1141*4cce1074Sknickish; ATOMIC-LABEL: load_arid: 1142*4cce1074Sknickish; ATOMIC: .cfi_startproc 1143*4cce1074Sknickish; ATOMIC-NEXT: ; %bb.0: ; %start 1144*4cce1074Sknickish; ATOMIC-NEXT: move.l (4,%sp), %a0 1145*4cce1074Sknickish; ATOMIC-NEXT: move.l (32,%a0), %d0 1146*4cce1074Sknickish; ATOMIC-NEXT: rts 1147*4cce1074Sknickish; 1148*4cce1074Sknickish; ATOMIC-PIC-LABEL: load_arid: 1149*4cce1074Sknickish; ATOMIC-PIC: .cfi_startproc 1150*4cce1074Sknickish; ATOMIC-PIC-NEXT: ; %bb.0: ; %start 1151*4cce1074Sknickish; ATOMIC-PIC-NEXT: move.l (4,%sp), %a0 1152*4cce1074Sknickish; ATOMIC-PIC-NEXT: move.l (32,%a0), %d0 1153*4cce1074Sknickish; ATOMIC-PIC-NEXT: rts 1154*4cce1074Sknickishstart: 1155*4cce1074Sknickish %1 = getelementptr inbounds i32, ptr %a, i32 8 1156*4cce1074Sknickish %2 = load atomic i32, ptr %1 seq_cst, align 4 1157*4cce1074Sknickish br label %exit 1158*4cce1074Sknickish 1159*4cce1074Sknickishexit: ; preds = %start 1160*4cce1074Sknickish ret i32 %2 1161*4cce1074Sknickish} 1162