brintos

brintos / llvm-project-archived public Read only

0
0
Text · 35.5 KiB · eb7c4d5 Raw
881 lines · plain
1; RUN: llc < %s -mtriple=ve | FileCheck %s2 3;;; Test atomic store for all types and all memory order4;;;5;;; Note:6;;;   We test i1/i8/i16/i32/i64/i128/u8/u16/u32/u64/u128.7;;;   We test relaxed, release, and seq_cst.8;;;   We test an object, a stack object, and a global variable.9 10%"struct.std::__1::atomic" = type { %"struct.std::__1::__atomic_base" }11%"struct.std::__1::__atomic_base" = type { %"struct.std::__1::__cxx_atomic_impl" }12%"struct.std::__1::__cxx_atomic_impl" = type { %"struct.std::__1::__cxx_atomic_base_impl" }13%"struct.std::__1::__cxx_atomic_base_impl" = type { i8 }14%"struct.std::__1::atomic.0" = type { %"struct.std::__1::__atomic_base.1" }15%"struct.std::__1::__atomic_base.1" = type { %"struct.std::__1::__atomic_base.2" }16%"struct.std::__1::__atomic_base.2" = type { %"struct.std::__1::__cxx_atomic_impl.3" }17%"struct.std::__1::__cxx_atomic_impl.3" = type { %"struct.std::__1::__cxx_atomic_base_impl.4" }18%"struct.std::__1::__cxx_atomic_base_impl.4" = type { i8 }19%"struct.std::__1::atomic.5" = type { %"struct.std::__1::__atomic_base.6" }20%"struct.std::__1::__atomic_base.6" = type { %"struct.std::__1::__atomic_base.7" }21%"struct.std::__1::__atomic_base.7" = type { %"struct.std::__1::__cxx_atomic_impl.8" }22%"struct.std::__1::__cxx_atomic_impl.8" = type { %"struct.std::__1::__cxx_atomic_base_impl.9" }23%"struct.std::__1::__cxx_atomic_base_impl.9" = type { i8 }24%"struct.std::__1::atomic.10" = type { %"struct.std::__1::__atomic_base.11" }25%"struct.std::__1::__atomic_base.11" = type { %"struct.std::__1::__atomic_base.12" }26%"struct.std::__1::__atomic_base.12" = type { %"struct.std::__1::__cxx_atomic_impl.13" }27%"struct.std::__1::__cxx_atomic_impl.13" = type { %"struct.std::__1::__cxx_atomic_base_impl.14" }28%"struct.std::__1::__cxx_atomic_base_impl.14" = type { i16 }29%"struct.std::__1::atomic.15" = type { %"struct.std::__1::__atomic_base.16" }30%"struct.std::__1::__atomic_base.16" = type { %"struct.std::__1::__atomic_base.17" }31%"struct.std::__1::__atomic_base.17" = type { %"struct.std::__1::__cxx_atomic_impl.18" }32%"struct.std::__1::__cxx_atomic_impl.18" = type { %"struct.std::__1::__cxx_atomic_base_impl.19" }33%"struct.std::__1::__cxx_atomic_base_impl.19" = type { i16 }34%"struct.std::__1::atomic.20" = type { %"struct.std::__1::__atomic_base.21" }35%"struct.std::__1::__atomic_base.21" = type { %"struct.std::__1::__atomic_base.22" }36%"struct.std::__1::__atomic_base.22" = type { %"struct.std::__1::__cxx_atomic_impl.23" }37%"struct.std::__1::__cxx_atomic_impl.23" = type { %"struct.std::__1::__cxx_atomic_base_impl.24" }38%"struct.std::__1::__cxx_atomic_base_impl.24" = type { i32 }39%"struct.std::__1::atomic.25" = type { %"struct.std::__1::__atomic_base.26" }40%"struct.std::__1::__atomic_base.26" = type { %"struct.std::__1::__atomic_base.27" }41%"struct.std::__1::__atomic_base.27" = type { %"struct.std::__1::__cxx_atomic_impl.28" }42%"struct.std::__1::__cxx_atomic_impl.28" = type { %"struct.std::__1::__cxx_atomic_base_impl.29" }43%"struct.std::__1::__cxx_atomic_base_impl.29" = type { i32 }44%"struct.std::__1::atomic.30" = type { %"struct.std::__1::__atomic_base.31" }45%"struct.std::__1::__atomic_base.31" = type { %"struct.std::__1::__atomic_base.32" }46%"struct.std::__1::__atomic_base.32" = type { %"struct.std::__1::__cxx_atomic_impl.33" }47%"struct.std::__1::__cxx_atomic_impl.33" = type { %"struct.std::__1::__cxx_atomic_base_impl.34" }48%"struct.std::__1::__cxx_atomic_base_impl.34" = type { i64 }49%"struct.std::__1::atomic.35" = type { %"struct.std::__1::__atomic_base.36" }50%"struct.std::__1::__atomic_base.36" = type { %"struct.std::__1::__atomic_base.37" }51%"struct.std::__1::__atomic_base.37" = type { %"struct.std::__1::__cxx_atomic_impl.38" }52%"struct.std::__1::__cxx_atomic_impl.38" = type { %"struct.std::__1::__cxx_atomic_base_impl.39" }53%"struct.std::__1::__cxx_atomic_base_impl.39" = type { i64 }54%"struct.std::__1::atomic.40" = type { %"struct.std::__1::__atomic_base.41" }55%"struct.std::__1::__atomic_base.41" = type { %"struct.std::__1::__atomic_base.42" }56%"struct.std::__1::__atomic_base.42" = type { %"struct.std::__1::__cxx_atomic_impl.43" }57%"struct.std::__1::__cxx_atomic_impl.43" = type { %"struct.std::__1::__cxx_atomic_base_impl.44" }58%"struct.std::__1::__cxx_atomic_base_impl.44" = type { i128 }59%"struct.std::__1::atomic.45" = type { %"struct.std::__1::__atomic_base.46" }60%"struct.std::__1::__atomic_base.46" = type { %"struct.std::__1::__atomic_base.47" }61%"struct.std::__1::__atomic_base.47" = type { %"struct.std::__1::__cxx_atomic_impl.48" }62%"struct.std::__1::__cxx_atomic_impl.48" = type { %"struct.std::__1::__cxx_atomic_base_impl.49" }63%"struct.std::__1::__cxx_atomic_base_impl.49" = type { i128 }64 65@gv_i1 = global %"struct.std::__1::atomic" zeroinitializer, align 466@gv_i8 = global %"struct.std::__1::atomic.0" zeroinitializer, align 467@gv_u8 = global %"struct.std::__1::atomic.5" zeroinitializer, align 468@gv_i16 = global %"struct.std::__1::atomic.10" zeroinitializer, align 469@gv_u16 = global %"struct.std::__1::atomic.15" zeroinitializer, align 470@gv_i32 = global %"struct.std::__1::atomic.20" zeroinitializer, align 471@gv_u32 = global %"struct.std::__1::atomic.25" zeroinitializer, align 472@gv_i64 = global %"struct.std::__1::atomic.30" zeroinitializer, align 873@gv_u64 = global %"struct.std::__1::atomic.35" zeroinitializer, align 874@gv_i128 = global %"struct.std::__1::atomic.40" zeroinitializer, align 1675@gv_u128 = global %"struct.std::__1::atomic.45" zeroinitializer, align 1676 77; Function Attrs: nofree norecurse nounwind mustprogress78define void @_Z23atomic_store_relaxed_i1RNSt3__16atomicIbEEb(ptr nocapture nonnull align 1 dereferenceable(1) %0, i1 zeroext %1) {79; CHECK-LABEL: _Z23atomic_store_relaxed_i1RNSt3__16atomicIbEEb:80; CHECK:       # %bb.0:81; CHECK-NEXT:    st1b %s1, (, %s0)82; CHECK-NEXT:    b.l.t (, %s10)83  %3 = zext i1 %1 to i884  store atomic i8 %3, ptr %0 monotonic, align 185  ret void86}87 88; Function Attrs: nofree norecurse nounwind mustprogress89define void @_Z23atomic_store_relaxed_i8RNSt3__16atomicIcEEc(ptr nocapture nonnull align 1 dereferenceable(1) %0, i8 signext %1) {90; CHECK-LABEL: _Z23atomic_store_relaxed_i8RNSt3__16atomicIcEEc:91; CHECK:       # %bb.0:92; CHECK-NEXT:    st1b %s1, (, %s0)93; CHECK-NEXT:    b.l.t (, %s10)94  store atomic i8 %1, ptr %0 monotonic, align 195  ret void96}97 98; Function Attrs: nofree norecurse nounwind mustprogress99define void @_Z23atomic_store_relaxed_u8RNSt3__16atomicIhEEh(ptr nocapture nonnull align 1 dereferenceable(1) %0, i8 zeroext %1) {100; CHECK-LABEL: _Z23atomic_store_relaxed_u8RNSt3__16atomicIhEEh:101; CHECK:       # %bb.0:102; CHECK-NEXT:    st1b %s1, (, %s0)103; CHECK-NEXT:    b.l.t (, %s10)104  store atomic i8 %1, ptr %0 monotonic, align 1105  ret void106}107 108; Function Attrs: nofree norecurse nounwind mustprogress109define void @_Z24atomic_store_relaxed_i16RNSt3__16atomicIsEEs(ptr nocapture nonnull align 2 dereferenceable(2) %0, i16 signext %1) {110; CHECK-LABEL: _Z24atomic_store_relaxed_i16RNSt3__16atomicIsEEs:111; CHECK:       # %bb.0:112; CHECK-NEXT:    st2b %s1, (, %s0)113; CHECK-NEXT:    b.l.t (, %s10)114  store atomic i16 %1, ptr %0 monotonic, align 2115  ret void116}117 118; Function Attrs: nofree norecurse nounwind mustprogress119define void @_Z24atomic_store_relaxed_u16RNSt3__16atomicItEEt(ptr nocapture nonnull align 2 dereferenceable(2) %0, i16 zeroext %1) {120; CHECK-LABEL: _Z24atomic_store_relaxed_u16RNSt3__16atomicItEEt:121; CHECK:       # %bb.0:122; CHECK-NEXT:    st2b %s1, (, %s0)123; CHECK-NEXT:    b.l.t (, %s10)124  store atomic i16 %1, ptr %0 monotonic, align 2125  ret void126}127 128; Function Attrs: nofree norecurse nounwind mustprogress129define void @_Z24atomic_store_relaxed_i32RNSt3__16atomicIiEEi(ptr nocapture nonnull align 4 dereferenceable(4) %0, i32 signext %1) {130; CHECK-LABEL: _Z24atomic_store_relaxed_i32RNSt3__16atomicIiEEi:131; CHECK:       # %bb.0:132; CHECK-NEXT:    stl %s1, (, %s0)133; CHECK-NEXT:    b.l.t (, %s10)134  store atomic i32 %1, ptr %0 monotonic, align 4135  ret void136}137 138; Function Attrs: nofree norecurse nounwind mustprogress139define void @_Z24atomic_store_relaxed_u32RNSt3__16atomicIjEEj(ptr nocapture nonnull align 4 dereferenceable(4) %0, i32 zeroext %1) {140; CHECK-LABEL: _Z24atomic_store_relaxed_u32RNSt3__16atomicIjEEj:141; CHECK:       # %bb.0:142; CHECK-NEXT:    stl %s1, (, %s0)143; CHECK-NEXT:    b.l.t (, %s10)144  store atomic i32 %1, ptr %0 monotonic, align 4145  ret void146}147 148; Function Attrs: nofree norecurse nounwind mustprogress149define void @_Z24atomic_store_relaxed_i64RNSt3__16atomicIlEEl(ptr nocapture nonnull align 8 dereferenceable(8) %0, i64 %1) {150; CHECK-LABEL: _Z24atomic_store_relaxed_i64RNSt3__16atomicIlEEl:151; CHECK:       # %bb.0:152; CHECK-NEXT:    st %s1, (, %s0)153; CHECK-NEXT:    b.l.t (, %s10)154  store atomic i64 %1, ptr %0 monotonic, align 8155  ret void156}157 158; Function Attrs: nofree norecurse nounwind mustprogress159define void @_Z24atomic_store_relaxed_u64RNSt3__16atomicImEEm(ptr nocapture nonnull align 8 dereferenceable(8) %0, i64 %1) {160; CHECK-LABEL: _Z24atomic_store_relaxed_u64RNSt3__16atomicImEEm:161; CHECK:       # %bb.0:162; CHECK-NEXT:    st %s1, (, %s0)163; CHECK-NEXT:    b.l.t (, %s10)164  store atomic i64 %1, ptr %0 monotonic, align 8165  ret void166}167 168; Function Attrs: nofree nounwind mustprogress169define void @_Z25atomic_store_relaxed_i128RNSt3__16atomicInEEn(ptr nonnull align 16 dereferenceable(16) %0, i128 %1) {170; CHECK-LABEL: _Z25atomic_store_relaxed_i128RNSt3__16atomicInEEn:171; CHECK:       .LBB{{[0-9]+}}_2:172; CHECK-NEXT:    or %s4, 0, %s0173; CHECK-NEXT:    st %s2, 248(, %s11)174; CHECK-NEXT:    st %s1, 240(, %s11)175; CHECK-NEXT:    lea %s0, __atomic_store@lo176; CHECK-NEXT:    and %s0, %s0, (32)0177; CHECK-NEXT:    lea.sl %s12, __atomic_store@hi(, %s0)178; CHECK-NEXT:    lea %s2, 240(, %s11)179; CHECK-NEXT:    or %s0, 16, (0)1180; CHECK-NEXT:    or %s3, 0, (0)1181; CHECK-NEXT:    or %s1, 0, %s4182; CHECK-NEXT:    bsic %s10, (, %s12)183; CHECK-NEXT:    or %s11, 0, %s9184  %3 = alloca i128, align 16185  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %3)186  store i128 %1, ptr %3, align 16, !tbaa !2187  call void @__atomic_store(i64 16, ptr nonnull %0, ptr nonnull %3, i32 signext 0)188  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %3)189  ret void190}191 192; Function Attrs: nofree nounwind mustprogress193define void @_Z25atomic_store_relaxed_u128RNSt3__16atomicIoEEo(ptr nonnull align 16 dereferenceable(16) %0, i128 %1) {194; CHECK-LABEL: _Z25atomic_store_relaxed_u128RNSt3__16atomicIoEEo:195; CHECK:       .LBB{{[0-9]+}}_2:196; CHECK-NEXT:    or %s4, 0, %s0197; CHECK-NEXT:    st %s2, 248(, %s11)198; CHECK-NEXT:    st %s1, 240(, %s11)199; CHECK-NEXT:    lea %s0, __atomic_store@lo200; CHECK-NEXT:    and %s0, %s0, (32)0201; CHECK-NEXT:    lea.sl %s12, __atomic_store@hi(, %s0)202; CHECK-NEXT:    lea %s2, 240(, %s11)203; CHECK-NEXT:    or %s0, 16, (0)1204; CHECK-NEXT:    or %s3, 0, (0)1205; CHECK-NEXT:    or %s1, 0, %s4206; CHECK-NEXT:    bsic %s10, (, %s12)207; CHECK-NEXT:    or %s11, 0, %s9208  %3 = alloca i128, align 16209  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %3)210  store i128 %1, ptr %3, align 16, !tbaa !2211  call void @__atomic_store(i64 16, ptr nonnull %0, ptr nonnull %3, i32 signext 0)212  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %3)213  ret void214}215 216; Function Attrs: nofree norecurse nounwind mustprogress217define void @_Z23atomic_store_release_i1RNSt3__16atomicIbEEb(ptr nocapture nonnull align 1 dereferenceable(1) %0, i1 zeroext %1) {218; CHECK-LABEL: _Z23atomic_store_release_i1RNSt3__16atomicIbEEb:219; CHECK:       # %bb.0:220; CHECK-NEXT:    fencem 1221; CHECK-NEXT:    st1b %s1, (, %s0)222; CHECK-NEXT:    b.l.t (, %s10)223  %3 = zext i1 %1 to i8224  store atomic i8 %3, ptr %0 release, align 1225  ret void226}227 228; Function Attrs: nofree norecurse nounwind mustprogress229define void @_Z23atomic_store_release_i8RNSt3__16atomicIcEEc(ptr nocapture nonnull align 1 dereferenceable(1) %0, i8 signext %1) {230; CHECK-LABEL: _Z23atomic_store_release_i8RNSt3__16atomicIcEEc:231; CHECK:       # %bb.0:232; CHECK-NEXT:    fencem 1233; CHECK-NEXT:    st1b %s1, (, %s0)234; CHECK-NEXT:    b.l.t (, %s10)235  store atomic i8 %1, ptr %0 release, align 1236  ret void237}238 239; Function Attrs: nofree norecurse nounwind mustprogress240define void @_Z23atomic_store_release_u8RNSt3__16atomicIhEEh(ptr nocapture nonnull align 1 dereferenceable(1) %0, i8 zeroext %1) {241; CHECK-LABEL: _Z23atomic_store_release_u8RNSt3__16atomicIhEEh:242; CHECK:       # %bb.0:243; CHECK-NEXT:    fencem 1244; CHECK-NEXT:    st1b %s1, (, %s0)245; CHECK-NEXT:    b.l.t (, %s10)246  store atomic i8 %1, ptr %0 release, align 1247  ret void248}249 250; Function Attrs: nofree norecurse nounwind mustprogress251define void @_Z24atomic_store_release_i16RNSt3__16atomicIsEEs(ptr nocapture nonnull align 2 dereferenceable(2) %0, i16 signext %1) {252; CHECK-LABEL: _Z24atomic_store_release_i16RNSt3__16atomicIsEEs:253; CHECK:       # %bb.0:254; CHECK-NEXT:    fencem 1255; CHECK-NEXT:    st2b %s1, (, %s0)256; CHECK-NEXT:    b.l.t (, %s10)257  store atomic i16 %1, ptr %0 release, align 2258  ret void259}260 261; Function Attrs: nofree norecurse nounwind mustprogress262define void @_Z24atomic_store_release_u16RNSt3__16atomicItEEt(ptr nocapture nonnull align 2 dereferenceable(2) %0, i16 zeroext %1) {263; CHECK-LABEL: _Z24atomic_store_release_u16RNSt3__16atomicItEEt:264; CHECK:       # %bb.0:265; CHECK-NEXT:    fencem 1266; CHECK-NEXT:    st2b %s1, (, %s0)267; CHECK-NEXT:    b.l.t (, %s10)268  store atomic i16 %1, ptr %0 release, align 2269  ret void270}271 272; Function Attrs: nofree norecurse nounwind mustprogress273define void @_Z24atomic_store_release_i32RNSt3__16atomicIiEEi(ptr nocapture nonnull align 4 dereferenceable(4) %0, i32 signext %1) {274; CHECK-LABEL: _Z24atomic_store_release_i32RNSt3__16atomicIiEEi:275; CHECK:       # %bb.0:276; CHECK-NEXT:    fencem 1277; CHECK-NEXT:    stl %s1, (, %s0)278; CHECK-NEXT:    b.l.t (, %s10)279  store atomic i32 %1, ptr %0 release, align 4280  ret void281}282 283; Function Attrs: nofree norecurse nounwind mustprogress284define void @_Z24atomic_store_release_u32RNSt3__16atomicIjEEj(ptr nocapture nonnull align 4 dereferenceable(4) %0, i32 zeroext %1) {285; CHECK-LABEL: _Z24atomic_store_release_u32RNSt3__16atomicIjEEj:286; CHECK:       # %bb.0:287; CHECK-NEXT:    fencem 1288; CHECK-NEXT:    stl %s1, (, %s0)289; CHECK-NEXT:    b.l.t (, %s10)290  store atomic i32 %1, ptr %0 release, align 4291  ret void292}293 294; Function Attrs: nofree norecurse nounwind mustprogress295define void @_Z24atomic_store_release_i64RNSt3__16atomicIlEEl(ptr nocapture nonnull align 8 dereferenceable(8) %0, i64 %1) {296; CHECK-LABEL: _Z24atomic_store_release_i64RNSt3__16atomicIlEEl:297; CHECK:       # %bb.0:298; CHECK-NEXT:    fencem 1299; CHECK-NEXT:    st %s1, (, %s0)300; CHECK-NEXT:    b.l.t (, %s10)301  store atomic i64 %1, ptr %0 release, align 8302  ret void303}304 305; Function Attrs: nofree norecurse nounwind mustprogress306define void @_Z24atomic_store_release_u64RNSt3__16atomicImEEm(ptr nocapture nonnull align 8 dereferenceable(8) %0, i64 %1) {307; CHECK-LABEL: _Z24atomic_store_release_u64RNSt3__16atomicImEEm:308; CHECK:       # %bb.0:309; CHECK-NEXT:    fencem 1310; CHECK-NEXT:    st %s1, (, %s0)311; CHECK-NEXT:    b.l.t (, %s10)312  store atomic i64 %1, ptr %0 release, align 8313  ret void314}315 316; Function Attrs: nofree nounwind mustprogress317define void @_Z25atomic_store_release_i128RNSt3__16atomicInEEn(ptr nonnull align 16 dereferenceable(16) %0, i128 %1) {318; CHECK-LABEL: _Z25atomic_store_release_i128RNSt3__16atomicInEEn:319; CHECK:       .LBB{{[0-9]+}}_2:320; CHECK-NEXT:    or %s4, 0, %s0321; CHECK-NEXT:    st %s2, 248(, %s11)322; CHECK-NEXT:    st %s1, 240(, %s11)323; CHECK-NEXT:    lea %s0, __atomic_store@lo324; CHECK-NEXT:    and %s0, %s0, (32)0325; CHECK-NEXT:    lea.sl %s12, __atomic_store@hi(, %s0)326; CHECK-NEXT:    lea %s2, 240(, %s11)327; CHECK-NEXT:    or %s0, 16, (0)1328; CHECK-NEXT:    or %s3, 3, (0)1329; CHECK-NEXT:    or %s1, 0, %s4330; CHECK-NEXT:    bsic %s10, (, %s12)331; CHECK-NEXT:    or %s11, 0, %s9332  %3 = alloca i128, align 16333  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %3)334  store i128 %1, ptr %3, align 16, !tbaa !2335  call void @__atomic_store(i64 16, ptr nonnull %0, ptr nonnull %3, i32 signext 3)336  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %3)337  ret void338}339 340; Function Attrs: nofree nounwind mustprogress341define void @_Z25atomic_store_release_u128RNSt3__16atomicIoEEo(ptr nonnull align 16 dereferenceable(16) %0, i128 %1) {342; CHECK-LABEL: _Z25atomic_store_release_u128RNSt3__16atomicIoEEo:343; CHECK:       .LBB{{[0-9]+}}_2:344; CHECK-NEXT:    or %s4, 0, %s0345; CHECK-NEXT:    st %s2, 248(, %s11)346; CHECK-NEXT:    st %s1, 240(, %s11)347; CHECK-NEXT:    lea %s0, __atomic_store@lo348; CHECK-NEXT:    and %s0, %s0, (32)0349; CHECK-NEXT:    lea.sl %s12, __atomic_store@hi(, %s0)350; CHECK-NEXT:    lea %s2, 240(, %s11)351; CHECK-NEXT:    or %s0, 16, (0)1352; CHECK-NEXT:    or %s3, 3, (0)1353; CHECK-NEXT:    or %s1, 0, %s4354; CHECK-NEXT:    bsic %s10, (, %s12)355; CHECK-NEXT:    or %s11, 0, %s9356  %3 = alloca i128, align 16357  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %3)358  store i128 %1, ptr %3, align 16, !tbaa !2359  call void @__atomic_store(i64 16, ptr nonnull %0, ptr nonnull %3, i32 signext 3)360  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %3)361  ret void362}363 364; Function Attrs: nofree norecurse nounwind mustprogress365define void @_Z23atomic_store_seq_cst_i1RNSt3__16atomicIbEEb(ptr nocapture nonnull align 1 dereferenceable(1) %0, i1 zeroext %1) {366; CHECK-LABEL: _Z23atomic_store_seq_cst_i1RNSt3__16atomicIbEEb:367; CHECK:       # %bb.0:368; CHECK-NEXT:    fencem 3369; CHECK-NEXT:    st1b %s1, (, %s0)370; CHECK-NEXT:    fencem 3371; CHECK-NEXT:    b.l.t (, %s10)372  %3 = zext i1 %1 to i8373  store atomic i8 %3, ptr %0 seq_cst, align 1374  ret void375}376 377; Function Attrs: nofree norecurse nounwind mustprogress378define void @_Z23atomic_store_seq_cst_i8RNSt3__16atomicIcEEc(ptr nocapture nonnull align 1 dereferenceable(1) %0, i8 signext %1) {379; CHECK-LABEL: _Z23atomic_store_seq_cst_i8RNSt3__16atomicIcEEc:380; CHECK:       # %bb.0:381; CHECK-NEXT:    fencem 3382; CHECK-NEXT:    st1b %s1, (, %s0)383; CHECK-NEXT:    fencem 3384; CHECK-NEXT:    b.l.t (, %s10)385  store atomic i8 %1, ptr %0 seq_cst, align 1386  ret void387}388 389; Function Attrs: nofree norecurse nounwind mustprogress390define void @_Z23atomic_store_seq_cst_u8RNSt3__16atomicIhEEh(ptr nocapture nonnull align 1 dereferenceable(1) %0, i8 zeroext %1) {391; CHECK-LABEL: _Z23atomic_store_seq_cst_u8RNSt3__16atomicIhEEh:392; CHECK:       # %bb.0:393; CHECK-NEXT:    fencem 3394; CHECK-NEXT:    st1b %s1, (, %s0)395; CHECK-NEXT:    fencem 3396; CHECK-NEXT:    b.l.t (, %s10)397  store atomic i8 %1, ptr %0 seq_cst, align 1398  ret void399}400 401; Function Attrs: nofree norecurse nounwind mustprogress402define void @_Z24atomic_store_seq_cst_i16RNSt3__16atomicIsEEs(ptr nocapture nonnull align 2 dereferenceable(2) %0, i16 signext %1) {403; CHECK-LABEL: _Z24atomic_store_seq_cst_i16RNSt3__16atomicIsEEs:404; CHECK:       # %bb.0:405; CHECK-NEXT:    fencem 3406; CHECK-NEXT:    st2b %s1, (, %s0)407; CHECK-NEXT:    fencem 3408; CHECK-NEXT:    b.l.t (, %s10)409  store atomic i16 %1, ptr %0 seq_cst, align 2410  ret void411}412 413; Function Attrs: nofree norecurse nounwind mustprogress414define void @_Z24atomic_store_seq_cst_u16RNSt3__16atomicItEEt(ptr nocapture nonnull align 2 dereferenceable(2) %0, i16 zeroext %1) {415; CHECK-LABEL: _Z24atomic_store_seq_cst_u16RNSt3__16atomicItEEt:416; CHECK:       # %bb.0:417; CHECK-NEXT:    fencem 3418; CHECK-NEXT:    st2b %s1, (, %s0)419; CHECK-NEXT:    fencem 3420; CHECK-NEXT:    b.l.t (, %s10)421  store atomic i16 %1, ptr %0 seq_cst, align 2422  ret void423}424 425; Function Attrs: nofree norecurse nounwind mustprogress426define void @_Z24atomic_store_seq_cst_i32RNSt3__16atomicIiEEi(ptr nocapture nonnull align 4 dereferenceable(4) %0, i32 signext %1) {427; CHECK-LABEL: _Z24atomic_store_seq_cst_i32RNSt3__16atomicIiEEi:428; CHECK:       # %bb.0:429; CHECK-NEXT:    fencem 3430; CHECK-NEXT:    stl %s1, (, %s0)431; CHECK-NEXT:    fencem 3432; CHECK-NEXT:    b.l.t (, %s10)433  store atomic i32 %1, ptr %0 seq_cst, align 4434  ret void435}436 437; Function Attrs: nofree norecurse nounwind mustprogress438define void @_Z24atomic_store_seq_cst_u32RNSt3__16atomicIjEEj(ptr nocapture nonnull align 4 dereferenceable(4) %0, i32 zeroext %1) {439; CHECK-LABEL: _Z24atomic_store_seq_cst_u32RNSt3__16atomicIjEEj:440; CHECK:       # %bb.0:441; CHECK-NEXT:    fencem 3442; CHECK-NEXT:    stl %s1, (, %s0)443; CHECK-NEXT:    fencem 3444; CHECK-NEXT:    b.l.t (, %s10)445  store atomic i32 %1, ptr %0 seq_cst, align 4446  ret void447}448 449; Function Attrs: nofree norecurse nounwind mustprogress450define void @_Z24atomic_store_seq_cst_i64RNSt3__16atomicIlEEl(ptr nocapture nonnull align 8 dereferenceable(8) %0, i64 %1) {451; CHECK-LABEL: _Z24atomic_store_seq_cst_i64RNSt3__16atomicIlEEl:452; CHECK:       # %bb.0:453; CHECK-NEXT:    fencem 3454; CHECK-NEXT:    st %s1, (, %s0)455; CHECK-NEXT:    fencem 3456; CHECK-NEXT:    b.l.t (, %s10)457  store atomic i64 %1, ptr %0 seq_cst, align 8458  ret void459}460 461; Function Attrs: nofree norecurse nounwind mustprogress462define void @_Z24atomic_store_seq_cst_u64RNSt3__16atomicImEEm(ptr nocapture nonnull align 8 dereferenceable(8) %0, i64 %1) {463; CHECK-LABEL: _Z24atomic_store_seq_cst_u64RNSt3__16atomicImEEm:464; CHECK:       # %bb.0:465; CHECK-NEXT:    fencem 3466; CHECK-NEXT:    st %s1, (, %s0)467; CHECK-NEXT:    fencem 3468; CHECK-NEXT:    b.l.t (, %s10)469  store atomic i64 %1, ptr %0 seq_cst, align 8470  ret void471}472 473; Function Attrs: nofree nounwind mustprogress474define void @_Z25atomic_store_seq_cst_i128RNSt3__16atomicInEEn(ptr nonnull align 16 dereferenceable(16) %0, i128 %1) {475; CHECK-LABEL: _Z25atomic_store_seq_cst_i128RNSt3__16atomicInEEn:476; CHECK:       .LBB{{[0-9]+}}_2:477; CHECK-NEXT:    or %s4, 0, %s0478; CHECK-NEXT:    st %s2, 248(, %s11)479; CHECK-NEXT:    st %s1, 240(, %s11)480; CHECK-NEXT:    lea %s0, __atomic_store@lo481; CHECK-NEXT:    and %s0, %s0, (32)0482; CHECK-NEXT:    lea.sl %s12, __atomic_store@hi(, %s0)483; CHECK-NEXT:    lea %s2, 240(, %s11)484; CHECK-NEXT:    or %s0, 16, (0)1485; CHECK-NEXT:    or %s3, 5, (0)1486; CHECK-NEXT:    or %s1, 0, %s4487; CHECK-NEXT:    bsic %s10, (, %s12)488; CHECK-NEXT:    or %s11, 0, %s9489  %3 = alloca i128, align 16490  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %3)491  store i128 %1, ptr %3, align 16, !tbaa !2492  call void @__atomic_store(i64 16, ptr nonnull %0, ptr nonnull %3, i32 signext 5)493  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %3)494  ret void495}496 497; Function Attrs: nofree nounwind mustprogress498define void @_Z25atomic_store_seq_cst_u128RNSt3__16atomicIoEEo(ptr nonnull align 16 dereferenceable(16) %0, i128 %1) {499; CHECK-LABEL: _Z25atomic_store_seq_cst_u128RNSt3__16atomicIoEEo:500; CHECK:       .LBB{{[0-9]+}}_2:501; CHECK-NEXT:    or %s4, 0, %s0502; CHECK-NEXT:    st %s2, 248(, %s11)503; CHECK-NEXT:    st %s1, 240(, %s11)504; CHECK-NEXT:    lea %s0, __atomic_store@lo505; CHECK-NEXT:    and %s0, %s0, (32)0506; CHECK-NEXT:    lea.sl %s12, __atomic_store@hi(, %s0)507; CHECK-NEXT:    lea %s2, 240(, %s11)508; CHECK-NEXT:    or %s0, 16, (0)1509; CHECK-NEXT:    or %s3, 5, (0)1510; CHECK-NEXT:    or %s1, 0, %s4511; CHECK-NEXT:    bsic %s10, (, %s12)512; CHECK-NEXT:    or %s11, 0, %s9513  %3 = alloca i128, align 16514  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %3)515  store i128 %1, ptr %3, align 16, !tbaa !2516  call void @__atomic_store(i64 16, ptr nonnull %0, ptr nonnull %3, i32 signext 5)517  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %3)518  ret void519}520 521; Function Attrs: nofree nounwind mustprogress522define void @_Z26atomic_load_relaxed_stk_i1b(i1 zeroext %0) {523; CHECK-LABEL: _Z26atomic_load_relaxed_stk_i1b:524; CHECK:       .LBB{{[0-9]+}}_2:525; CHECK-NEXT:    st1b %s0, 15(, %s11)526; CHECK-NEXT:    adds.l %s11, 16, %s11527; CHECK-NEXT:    b.l.t (, %s10)528  %2 = alloca i8, align 1529  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %2)530  %3 = zext i1 %0 to i8531  store atomic volatile i8 %3, ptr %2 monotonic, align 1532  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %2)533  ret void534}535 536; Function Attrs: argmemonly nofree nosync nounwind willreturn537declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture)538 539; Function Attrs: argmemonly nofree nosync nounwind willreturn540declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture)541 542; Function Attrs: nofree nounwind mustprogress543define void @_Z26atomic_load_relaxed_stk_i8c(i8 signext %0) {544; CHECK-LABEL: _Z26atomic_load_relaxed_stk_i8c:545; CHECK:       .LBB{{[0-9]+}}_2:546; CHECK-NEXT:    st1b %s0, 15(, %s11)547; CHECK-NEXT:    adds.l %s11, 16, %s11548; CHECK-NEXT:    b.l.t (, %s10)549  %2 = alloca i8, align 1550  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %2)551  store atomic volatile i8 %0, ptr %2 monotonic, align 1552  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %2)553  ret void554}555 556; Function Attrs: nofree nounwind mustprogress557define void @_Z26atomic_load_relaxed_stk_u8h(i8 zeroext %0) {558; CHECK-LABEL: _Z26atomic_load_relaxed_stk_u8h:559; CHECK:       .LBB{{[0-9]+}}_2:560; CHECK-NEXT:    st1b %s0, 15(, %s11)561; CHECK-NEXT:    adds.l %s11, 16, %s11562; CHECK-NEXT:    b.l.t (, %s10)563  %2 = alloca i8, align 1564  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %2)565  store atomic volatile i8 %0, ptr %2 monotonic, align 1566  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %2)567  ret void568}569 570; Function Attrs: nofree nounwind mustprogress571define void @_Z27atomic_load_relaxed_stk_i16s(i16 signext %0) {572; CHECK-LABEL: _Z27atomic_load_relaxed_stk_i16s:573; CHECK:       .LBB{{[0-9]+}}_2:574; CHECK-NEXT:    st2b %s0, 14(, %s11)575; CHECK-NEXT:    adds.l %s11, 16, %s11576; CHECK-NEXT:    b.l.t (, %s10)577  %2 = alloca i16, align 2578  call void @llvm.lifetime.start.p0(i64 2, ptr nonnull %2)579  store atomic volatile i16 %0, ptr %2 monotonic, align 2580  call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %2)581  ret void582}583 584; Function Attrs: nofree nounwind mustprogress585define void @_Z27atomic_load_relaxed_stk_u16t(i16 zeroext %0) {586; CHECK-LABEL: _Z27atomic_load_relaxed_stk_u16t:587; CHECK:       .LBB{{[0-9]+}}_2:588; CHECK-NEXT:    st2b %s0, 14(, %s11)589; CHECK-NEXT:    adds.l %s11, 16, %s11590; CHECK-NEXT:    b.l.t (, %s10)591  %2 = alloca i16, align 2592  call void @llvm.lifetime.start.p0(i64 2, ptr nonnull %2)593  store atomic volatile i16 %0, ptr %2 monotonic, align 2594  call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %2)595  ret void596}597 598; Function Attrs: nofree nounwind mustprogress599define void @_Z27atomic_load_relaxed_stk_i32i(i32 signext %0) {600; CHECK-LABEL: _Z27atomic_load_relaxed_stk_i32i:601; CHECK:       .LBB{{[0-9]+}}_2:602; CHECK-NEXT:    stl %s0, 12(, %s11)603; CHECK-NEXT:    adds.l %s11, 16, %s11604; CHECK-NEXT:    b.l.t (, %s10)605  %2 = alloca i32, align 4606  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %2)607  store atomic volatile i32 %0, ptr %2 monotonic, align 4608  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %2)609  ret void610}611 612; Function Attrs: nofree nounwind mustprogress613define void @_Z27atomic_load_relaxed_stk_u32j(i32 zeroext %0) {614; CHECK-LABEL: _Z27atomic_load_relaxed_stk_u32j:615; CHECK:       .LBB{{[0-9]+}}_2:616; CHECK-NEXT:    stl %s0, 12(, %s11)617; CHECK-NEXT:    adds.l %s11, 16, %s11618; CHECK-NEXT:    b.l.t (, %s10)619  %2 = alloca i32, align 4620  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %2)621  store atomic volatile i32 %0, ptr %2 monotonic, align 4622  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %2)623  ret void624}625 626; Function Attrs: nofree nounwind mustprogress627define void @_Z27atomic_load_relaxed_stk_i64l(i64 %0) {628; CHECK-LABEL: _Z27atomic_load_relaxed_stk_i64l:629; CHECK:       .LBB{{[0-9]+}}_2:630; CHECK-NEXT:    st %s0, 8(, %s11)631; CHECK-NEXT:    adds.l %s11, 16, %s11632; CHECK-NEXT:    b.l.t (, %s10)633  %2 = alloca i64, align 8634  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %2)635  store atomic volatile i64 %0, ptr %2 monotonic, align 8636  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %2)637  ret void638}639 640; Function Attrs: nofree nounwind mustprogress641define void @_Z27atomic_load_relaxed_stk_u64m(i64 %0) {642; CHECK-LABEL: _Z27atomic_load_relaxed_stk_u64m:643; CHECK:       .LBB{{[0-9]+}}_2:644; CHECK-NEXT:    st %s0, 8(, %s11)645; CHECK-NEXT:    adds.l %s11, 16, %s11646; CHECK-NEXT:    b.l.t (, %s10)647  %2 = alloca i64, align 8648  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %2)649  store atomic volatile i64 %0, ptr %2 monotonic, align 8650  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %2)651  ret void652}653 654; Function Attrs: nofree nounwind mustprogress655define void @_Z28atomic_load_relaxed_stk_i128n(i128 %0) {656; CHECK-LABEL: _Z28atomic_load_relaxed_stk_i128n:657; CHECK:       .LBB{{[0-9]+}}_2:658; CHECK-NEXT:    st %s1, 264(, %s11)659; CHECK-NEXT:    st %s0, 256(, %s11)660; CHECK-NEXT:    lea %s0, __atomic_store@lo661; CHECK-NEXT:    and %s0, %s0, (32)0662; CHECK-NEXT:    lea.sl %s12, __atomic_store@hi(, %s0)663; CHECK-NEXT:    lea %s1, 240(, %s11)664; CHECK-NEXT:    lea %s2, 256(, %s11)665; CHECK-NEXT:    or %s0, 16, (0)1666; CHECK-NEXT:    or %s3, 0, (0)1667; CHECK-NEXT:    bsic %s10, (, %s12)668; CHECK-NEXT:    or %s11, 0, %s9669  %2 = alloca i128, align 16670  %3 = alloca %"struct.std::__1::atomic.40", align 16671  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %3)672  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %2)673  store i128 %0, ptr %2, align 16, !tbaa !2674  call void @__atomic_store(i64 16, ptr nonnull %3, ptr nonnull %2, i32 signext 0)675  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %2)676  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %3)677  ret void678}679 680; Function Attrs: nofree nounwind mustprogress681define void @_Z28atomic_load_relaxed_stk_u128o(i128 %0) {682; CHECK-LABEL: _Z28atomic_load_relaxed_stk_u128o:683; CHECK:       .LBB{{[0-9]+}}_2:684; CHECK-NEXT:    st %s1, 264(, %s11)685; CHECK-NEXT:    st %s0, 256(, %s11)686; CHECK-NEXT:    lea %s0, __atomic_store@lo687; CHECK-NEXT:    and %s0, %s0, (32)0688; CHECK-NEXT:    lea.sl %s12, __atomic_store@hi(, %s0)689; CHECK-NEXT:    lea %s1, 240(, %s11)690; CHECK-NEXT:    lea %s2, 256(, %s11)691; CHECK-NEXT:    or %s0, 16, (0)1692; CHECK-NEXT:    or %s3, 0, (0)1693; CHECK-NEXT:    bsic %s10, (, %s12)694; CHECK-NEXT:    or %s11, 0, %s9695  %2 = alloca i128, align 16696  %3 = alloca %"struct.std::__1::atomic.45", align 16697  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %3)698  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %2)699  store i128 %0, ptr %2, align 16, !tbaa !2700  call void @__atomic_store(i64 16, ptr nonnull %3, ptr nonnull %2, i32 signext 0)701  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %2)702  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %3)703  ret void704}705 706; Function Attrs: nofree norecurse nounwind mustprogress707define void @_Z25atomic_load_relaxed_gv_i1b(i1 zeroext %0) {708; CHECK-LABEL: _Z25atomic_load_relaxed_gv_i1b:709; CHECK:       # %bb.0:710; CHECK-NEXT:    lea %s1, gv_i1@lo711; CHECK-NEXT:    and %s1, %s1, (32)0712; CHECK-NEXT:    lea.sl %s1, gv_i1@hi(, %s1)713; CHECK-NEXT:    st1b %s0, (, %s1)714; CHECK-NEXT:    b.l.t (, %s10)715  %2 = zext i1 %0 to i8716  store atomic i8 %2, ptr @gv_i1 monotonic, align 4717  ret void718}719 720; Function Attrs: nofree norecurse nounwind mustprogress721define void @_Z25atomic_load_relaxed_gv_i8c(i8 signext %0) {722; CHECK-LABEL: _Z25atomic_load_relaxed_gv_i8c:723; CHECK:       # %bb.0:724; CHECK-NEXT:    lea %s1, gv_i8@lo725; CHECK-NEXT:    and %s1, %s1, (32)0726; CHECK-NEXT:    lea.sl %s1, gv_i8@hi(, %s1)727; CHECK-NEXT:    st1b %s0, (, %s1)728; CHECK-NEXT:    b.l.t (, %s10)729  store atomic i8 %0, ptr @gv_i8 monotonic, align 4730  ret void731}732 733; Function Attrs: nofree norecurse nounwind mustprogress734define void @_Z25atomic_load_relaxed_gv_u8h(i8 zeroext %0) {735; CHECK-LABEL: _Z25atomic_load_relaxed_gv_u8h:736; CHECK:       # %bb.0:737; CHECK-NEXT:    lea %s1, gv_u8@lo738; CHECK-NEXT:    and %s1, %s1, (32)0739; CHECK-NEXT:    lea.sl %s1, gv_u8@hi(, %s1)740; CHECK-NEXT:    st1b %s0, (, %s1)741; CHECK-NEXT:    b.l.t (, %s10)742  store atomic i8 %0, ptr @gv_u8 monotonic, align 4743  ret void744}745 746; Function Attrs: nofree norecurse nounwind mustprogress747define void @_Z26atomic_load_relaxed_gv_i16s(i16 signext %0) {748; CHECK-LABEL: _Z26atomic_load_relaxed_gv_i16s:749; CHECK:       # %bb.0:750; CHECK-NEXT:    lea %s1, gv_i16@lo751; CHECK-NEXT:    and %s1, %s1, (32)0752; CHECK-NEXT:    lea.sl %s1, gv_i16@hi(, %s1)753; CHECK-NEXT:    st2b %s0, (, %s1)754; CHECK-NEXT:    b.l.t (, %s10)755  store atomic i16 %0, ptr @gv_i16 monotonic, align 4756  ret void757}758 759; Function Attrs: nofree norecurse nounwind mustprogress760define void @_Z26atomic_load_relaxed_gv_u16t(i16 zeroext %0) {761; CHECK-LABEL: _Z26atomic_load_relaxed_gv_u16t:762; CHECK:       # %bb.0:763; CHECK-NEXT:    lea %s1, gv_u16@lo764; CHECK-NEXT:    and %s1, %s1, (32)0765; CHECK-NEXT:    lea.sl %s1, gv_u16@hi(, %s1)766; CHECK-NEXT:    st2b %s0, (, %s1)767; CHECK-NEXT:    b.l.t (, %s10)768  store atomic i16 %0, ptr @gv_u16 monotonic, align 4769  ret void770}771 772; Function Attrs: nofree norecurse nounwind mustprogress773define void @_Z26atomic_load_relaxed_gv_i32i(i32 signext %0) {774; CHECK-LABEL: _Z26atomic_load_relaxed_gv_i32i:775; CHECK:       # %bb.0:776; CHECK-NEXT:    lea %s1, gv_i32@lo777; CHECK-NEXT:    and %s1, %s1, (32)0778; CHECK-NEXT:    lea.sl %s1, gv_i32@hi(, %s1)779; CHECK-NEXT:    stl %s0, (, %s1)780; CHECK-NEXT:    b.l.t (, %s10)781  store atomic i32 %0, ptr @gv_i32 monotonic, align 4782  ret void783}784 785; Function Attrs: nofree norecurse nounwind mustprogress786define void @_Z26atomic_load_relaxed_gv_u32j(i32 zeroext %0) {787; CHECK-LABEL: _Z26atomic_load_relaxed_gv_u32j:788; CHECK:       # %bb.0:789; CHECK-NEXT:    lea %s1, gv_u32@lo790; CHECK-NEXT:    and %s1, %s1, (32)0791; CHECK-NEXT:    lea.sl %s1, gv_u32@hi(, %s1)792; CHECK-NEXT:    stl %s0, (, %s1)793; CHECK-NEXT:    b.l.t (, %s10)794  store atomic i32 %0, ptr @gv_u32 monotonic, align 4795  ret void796}797 798; Function Attrs: nofree norecurse nounwind mustprogress799define void @_Z26atomic_load_relaxed_gv_i64l(i64 %0) {800; CHECK-LABEL: _Z26atomic_load_relaxed_gv_i64l:801; CHECK:       # %bb.0:802; CHECK-NEXT:    lea %s1, gv_i64@lo803; CHECK-NEXT:    and %s1, %s1, (32)0804; CHECK-NEXT:    lea.sl %s1, gv_i64@hi(, %s1)805; CHECK-NEXT:    st %s0, (, %s1)806; CHECK-NEXT:    b.l.t (, %s10)807  store atomic i64 %0, ptr @gv_i64 monotonic, align 8808  ret void809}810 811; Function Attrs: nofree norecurse nounwind mustprogress812define void @_Z26atomic_load_relaxed_gv_u64m(i64 %0) {813; CHECK-LABEL: _Z26atomic_load_relaxed_gv_u64m:814; CHECK:       # %bb.0:815; CHECK-NEXT:    lea %s1, gv_u64@lo816; CHECK-NEXT:    and %s1, %s1, (32)0817; CHECK-NEXT:    lea.sl %s1, gv_u64@hi(, %s1)818; CHECK-NEXT:    st %s0, (, %s1)819; CHECK-NEXT:    b.l.t (, %s10)820  store atomic i64 %0, ptr @gv_u64 monotonic, align 8821  ret void822}823 824; Function Attrs: nofree nounwind mustprogress825define void @_Z27atomic_load_relaxed_gv_i128n(i128 %0) {826; CHECK-LABEL: _Z27atomic_load_relaxed_gv_i128n:827; CHECK:       .LBB{{[0-9]+}}_2:828; CHECK-NEXT:    st %s1, 248(, %s11)829; CHECK-NEXT:    st %s0, 240(, %s11)830; CHECK-NEXT:    lea %s0, __atomic_store@lo831; CHECK-NEXT:    and %s0, %s0, (32)0832; CHECK-NEXT:    lea.sl %s12, __atomic_store@hi(, %s0)833; CHECK-NEXT:    lea %s0, gv_i128@lo834; CHECK-NEXT:    and %s0, %s0, (32)0835; CHECK-NEXT:    lea.sl %s1, gv_i128@hi(, %s0)836; CHECK-NEXT:    lea %s2, 240(, %s11)837; CHECK-NEXT:    or %s0, 16, (0)1838; CHECK-NEXT:    or %s3, 0, (0)1839; CHECK-NEXT:    bsic %s10, (, %s12)840; CHECK-NEXT:    or %s11, 0, %s9841  %2 = alloca i128, align 16842  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %2)843  store i128 %0, ptr %2, align 16, !tbaa !2844  call void @__atomic_store(i64 16, ptr nonnull @gv_i128, ptr nonnull %2, i32 signext 0)845  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %2)846  ret void847}848 849; Function Attrs: nofree nounwind mustprogress850define void @_Z27atomic_load_relaxed_gv_u128o(i128 %0) {851; CHECK-LABEL: _Z27atomic_load_relaxed_gv_u128o:852; CHECK:       .LBB{{[0-9]+}}_2:853; CHECK-NEXT:    st %s1, 248(, %s11)854; CHECK-NEXT:    st %s0, 240(, %s11)855; CHECK-NEXT:    lea %s0, __atomic_store@lo856; CHECK-NEXT:    and %s0, %s0, (32)0857; CHECK-NEXT:    lea.sl %s12, __atomic_store@hi(, %s0)858; CHECK-NEXT:    lea %s0, gv_u128@lo859; CHECK-NEXT:    and %s0, %s0, (32)0860; CHECK-NEXT:    lea.sl %s1, gv_u128@hi(, %s0)861; CHECK-NEXT:    lea %s2, 240(, %s11)862; CHECK-NEXT:    or %s0, 16, (0)1863; CHECK-NEXT:    or %s3, 0, (0)1864; CHECK-NEXT:    bsic %s10, (, %s12)865; CHECK-NEXT:    or %s11, 0, %s9866  %2 = alloca i128, align 16867  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %2)868  store i128 %0, ptr %2, align 16, !tbaa !2869  call void @__atomic_store(i64 16, ptr nonnull @gv_u128, ptr nonnull %2, i32 signext 0)870  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %2)871  ret void872}873 874; Function Attrs: nofree nounwind willreturn875declare void @__atomic_store(i64, ptr, ptr, i32)876 877!2 = !{!3, !3, i64 0}878!3 = !{!"__int128", !4, i64 0}879!4 = !{!"omnipotent char", !5, i64 0}880!5 = !{!"Simple C++ TBAA"}881