brintos

brintos / llvm-project-archived public Read only

0
0
Text · 57.2 KiB · 320361e Raw
2081 lines · plain
1; RUN: opt < %s -passes='module(sanmd-module)' -sanitizer-metadata-atomics -S | FileCheck %s2 3; Check that atomic memory operations receive PC sections metadata.4 5; CHECK: @__start_sanmd_atomics2 = extern_weak hidden global ptr6; CHECK: @__stop_sanmd_atomics2 = extern_weak hidden global ptr7; CHECK: @__start_sanmd_covered2 = extern_weak hidden global ptr8; CHECK: @__stop_sanmd_covered2 = extern_weak hidden global ptr9 10target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128"11 12define i8 @atomic8_load_unordered(ptr %a) nounwind uwtable {13entry:14  %0 = load atomic i8, ptr %a unordered, align 115  ret i8 %016}17; CHECK-LABEL: atomic8_load_unordered{{.*}}!pcsections !018; CHECK: !pcsections !219 20define i8 @atomic8_load_monotonic(ptr %a) nounwind uwtable {21entry:22  %0 = load atomic i8, ptr %a monotonic, align 123  ret i8 %024}25; CHECK-LABEL: atomic8_load_monotonic{{.*}}!pcsections !026; CHECK: !pcsections !227 28define i8 @atomic8_load_acquire(ptr %a) nounwind uwtable {29entry:30  %0 = load atomic i8, ptr %a acquire, align 131  ret i8 %032}33; CHECK-LABEL: atomic8_load_acquire{{.*}}!pcsections !034; CHECK: !pcsections !235 36define i8 @atomic8_load_seq_cst(ptr %a) nounwind uwtable {37entry:38  %0 = load atomic i8, ptr %a seq_cst, align 139  ret i8 %040}41; CHECK-LABEL: atomic8_load_seq_cst{{.*}}!pcsections !042; CHECK: !pcsections !243 44define void @atomic8_store_unordered(ptr %a) nounwind uwtable {45entry:46  store atomic i8 0, ptr %a unordered, align 147  ret void48}49; CHECK-LABEL: atomic8_store_unordered{{.*}}!pcsections !050; CHECK: !pcsections !251 52define void @atomic8_store_monotonic(ptr %a) nounwind uwtable {53entry:54  store atomic i8 0, ptr %a monotonic, align 155  ret void56}57; CHECK-LABEL: atomic8_store_monotonic{{.*}}!pcsections !058; CHECK: !pcsections !259 60define void @atomic8_store_release(ptr %a) nounwind uwtable {61entry:62  store atomic i8 0, ptr %a release, align 163  ret void64}65; CHECK-LABEL: atomic8_store_release{{.*}}!pcsections !066; CHECK: !pcsections !267 68define void @atomic8_store_seq_cst(ptr %a) nounwind uwtable {69entry:70  store atomic i8 0, ptr %a seq_cst, align 171  ret void72}73; CHECK-LABEL: atomic8_store_seq_cst{{.*}}!pcsections !074; CHECK: !pcsections !275 76define void @atomic8_xchg_monotonic(ptr %a) nounwind uwtable {77entry:78  atomicrmw xchg ptr %a, i8 0 monotonic79  ret void80}81; CHECK-LABEL: atomic8_xchg_monotonic{{.*}}!pcsections !082; CHECK: !pcsections !283 84define void @atomic8_add_monotonic(ptr %a) nounwind uwtable {85entry:86  atomicrmw add ptr %a, i8 0 monotonic87  ret void88}89; CHECK-LABEL: atomic8_add_monotonic{{.*}}!pcsections !090; CHECK: !pcsections !291 92define void @atomic8_sub_monotonic(ptr %a) nounwind uwtable {93entry:94  atomicrmw sub ptr %a, i8 0 monotonic95  ret void96}97; CHECK-LABEL: atomic8_sub_monotonic{{.*}}!pcsections !098; CHECK: !pcsections !299 100define void @atomic8_and_monotonic(ptr %a) nounwind uwtable {101entry:102  atomicrmw and ptr %a, i8 0 monotonic103  ret void104}105; CHECK-LABEL: atomic8_and_monotonic{{.*}}!pcsections !0106; CHECK: !pcsections !2107 108define void @atomic8_or_monotonic(ptr %a) nounwind uwtable {109entry:110  atomicrmw or ptr %a, i8 0 monotonic111  ret void112}113; CHECK-LABEL: atomic8_or_monotonic{{.*}}!pcsections !0114; CHECK: !pcsections !2115 116define void @atomic8_xor_monotonic(ptr %a) nounwind uwtable {117entry:118  atomicrmw xor ptr %a, i8 0 monotonic119  ret void120}121; CHECK-LABEL: atomic8_xor_monotonic{{.*}}!pcsections !0122; CHECK: !pcsections !2123 124define void @atomic8_nand_monotonic(ptr %a) nounwind uwtable {125entry:126  atomicrmw nand ptr %a, i8 0 monotonic127  ret void128}129; CHECK-LABEL: atomic8_nand_monotonic{{.*}}!pcsections !0130; CHECK: !pcsections !2131 132define void @atomic8_xchg_acquire(ptr %a) nounwind uwtable {133entry:134  atomicrmw xchg ptr %a, i8 0 acquire135  ret void136}137; CHECK-LABEL: atomic8_xchg_acquire{{.*}}!pcsections !0138; CHECK: !pcsections !2139 140define void @atomic8_add_acquire(ptr %a) nounwind uwtable {141entry:142  atomicrmw add ptr %a, i8 0 acquire143  ret void144}145; CHECK-LABEL: atomic8_add_acquire{{.*}}!pcsections !0146; CHECK: !pcsections !2147 148define void @atomic8_sub_acquire(ptr %a) nounwind uwtable {149entry:150  atomicrmw sub ptr %a, i8 0 acquire151  ret void152}153; CHECK-LABEL: atomic8_sub_acquire{{.*}}!pcsections !0154; CHECK: !pcsections !2155 156define void @atomic8_and_acquire(ptr %a) nounwind uwtable {157entry:158  atomicrmw and ptr %a, i8 0 acquire159  ret void160}161; CHECK-LABEL: atomic8_and_acquire{{.*}}!pcsections !0162; CHECK: !pcsections !2163 164define void @atomic8_or_acquire(ptr %a) nounwind uwtable {165entry:166  atomicrmw or ptr %a, i8 0 acquire167  ret void168}169; CHECK-LABEL: atomic8_or_acquire{{.*}}!pcsections !0170; CHECK: !pcsections !2171 172define void @atomic8_xor_acquire(ptr %a) nounwind uwtable {173entry:174  atomicrmw xor ptr %a, i8 0 acquire175  ret void176}177; CHECK-LABEL: atomic8_xor_acquire{{.*}}!pcsections !0178; CHECK: !pcsections !2179 180define void @atomic8_nand_acquire(ptr %a) nounwind uwtable {181entry:182  atomicrmw nand ptr %a, i8 0 acquire183  ret void184}185; CHECK-LABEL: atomic8_nand_acquire{{.*}}!pcsections !0186; CHECK: !pcsections !2187 188define void @atomic8_xchg_release(ptr %a) nounwind uwtable {189entry:190  atomicrmw xchg ptr %a, i8 0 release191  ret void192}193; CHECK-LABEL: atomic8_xchg_release{{.*}}!pcsections !0194; CHECK: !pcsections !2195 196define void @atomic8_add_release(ptr %a) nounwind uwtable {197entry:198  atomicrmw add ptr %a, i8 0 release199  ret void200}201; CHECK-LABEL: atomic8_add_release{{.*}}!pcsections !0202; CHECK: !pcsections !2203 204define void @atomic8_sub_release(ptr %a) nounwind uwtable {205entry:206  atomicrmw sub ptr %a, i8 0 release207  ret void208}209; CHECK-LABEL: atomic8_sub_release{{.*}}!pcsections !0210; CHECK: !pcsections !2211 212define void @atomic8_and_release(ptr %a) nounwind uwtable {213entry:214  atomicrmw and ptr %a, i8 0 release215  ret void216}217; CHECK-LABEL: atomic8_and_release{{.*}}!pcsections !0218; CHECK: !pcsections !2219 220define void @atomic8_or_release(ptr %a) nounwind uwtable {221entry:222  atomicrmw or ptr %a, i8 0 release223  ret void224}225; CHECK-LABEL: atomic8_or_release{{.*}}!pcsections !0226; CHECK: !pcsections !2227 228define void @atomic8_xor_release(ptr %a) nounwind uwtable {229entry:230  atomicrmw xor ptr %a, i8 0 release231  ret void232}233; CHECK-LABEL: atomic8_xor_release{{.*}}!pcsections !0234; CHECK: !pcsections !2235 236define void @atomic8_nand_release(ptr %a) nounwind uwtable {237entry:238  atomicrmw nand ptr %a, i8 0 release239  ret void240}241; CHECK-LABEL: atomic8_nand_release{{.*}}!pcsections !0242; CHECK: !pcsections !2243 244define void @atomic8_xchg_acq_rel(ptr %a) nounwind uwtable {245entry:246  atomicrmw xchg ptr %a, i8 0 acq_rel247  ret void248}249; CHECK-LABEL: atomic8_xchg_acq_rel{{.*}}!pcsections !0250; CHECK: !pcsections !2251 252define void @atomic8_add_acq_rel(ptr %a) nounwind uwtable {253entry:254  atomicrmw add ptr %a, i8 0 acq_rel255  ret void256}257; CHECK-LABEL: atomic8_add_acq_rel{{.*}}!pcsections !0258; CHECK: !pcsections !2259 260define void @atomic8_sub_acq_rel(ptr %a) nounwind uwtable {261entry:262  atomicrmw sub ptr %a, i8 0 acq_rel263  ret void264}265; CHECK-LABEL: atomic8_sub_acq_rel{{.*}}!pcsections !0266; CHECK: !pcsections !2267 268define void @atomic8_and_acq_rel(ptr %a) nounwind uwtable {269entry:270  atomicrmw and ptr %a, i8 0 acq_rel271  ret void272}273; CHECK-LABEL: atomic8_and_acq_rel{{.*}}!pcsections !0274; CHECK: !pcsections !2275 276define void @atomic8_or_acq_rel(ptr %a) nounwind uwtable {277entry:278  atomicrmw or ptr %a, i8 0 acq_rel279  ret void280}281; CHECK-LABEL: atomic8_or_acq_rel{{.*}}!pcsections !0282; CHECK: !pcsections !2283 284define void @atomic8_xor_acq_rel(ptr %a) nounwind uwtable {285entry:286  atomicrmw xor ptr %a, i8 0 acq_rel287  ret void288}289; CHECK-LABEL: atomic8_xor_acq_rel{{.*}}!pcsections !0290; CHECK: !pcsections !2291 292define void @atomic8_nand_acq_rel(ptr %a) nounwind uwtable {293entry:294  atomicrmw nand ptr %a, i8 0 acq_rel295  ret void296}297; CHECK-LABEL: atomic8_nand_acq_rel{{.*}}!pcsections !0298; CHECK: !pcsections !2299 300define void @atomic8_xchg_seq_cst(ptr %a) nounwind uwtable {301entry:302  atomicrmw xchg ptr %a, i8 0 seq_cst303  ret void304}305; CHECK-LABEL: atomic8_xchg_seq_cst{{.*}}!pcsections !0306; CHECK: !pcsections !2307 308define void @atomic8_add_seq_cst(ptr %a) nounwind uwtable {309entry:310  atomicrmw add ptr %a, i8 0 seq_cst311  ret void312}313; CHECK-LABEL: atomic8_add_seq_cst{{.*}}!pcsections !0314; CHECK: !pcsections !2315 316define void @atomic8_sub_seq_cst(ptr %a) nounwind uwtable {317entry:318  atomicrmw sub ptr %a, i8 0 seq_cst319  ret void320}321; CHECK-LABEL: atomic8_sub_seq_cst{{.*}}!pcsections !0322; CHECK: !pcsections !2323 324define void @atomic8_and_seq_cst(ptr %a) nounwind uwtable {325entry:326  atomicrmw and ptr %a, i8 0 seq_cst327  ret void328}329; CHECK-LABEL: atomic8_and_seq_cst{{.*}}!pcsections !0330; CHECK: !pcsections !2331 332define void @atomic8_or_seq_cst(ptr %a) nounwind uwtable {333entry:334  atomicrmw or ptr %a, i8 0 seq_cst335  ret void336}337; CHECK-LABEL: atomic8_or_seq_cst{{.*}}!pcsections !0338; CHECK: !pcsections !2339 340define void @atomic8_xor_seq_cst(ptr %a) nounwind uwtable {341entry:342  atomicrmw xor ptr %a, i8 0 seq_cst343  ret void344}345; CHECK-LABEL: atomic8_xor_seq_cst{{.*}}!pcsections !0346; CHECK: !pcsections !2347 348define void @atomic8_nand_seq_cst(ptr %a) nounwind uwtable {349entry:350  atomicrmw nand ptr %a, i8 0 seq_cst351  ret void352}353; CHECK-LABEL: atomic8_nand_seq_cst{{.*}}!pcsections !0354; CHECK: !pcsections !2355 356define void @atomic8_cas_monotonic(ptr %a) nounwind uwtable {357entry:358  cmpxchg ptr %a, i8 0, i8 1 monotonic monotonic359  cmpxchg ptr %a, i8 0, i8 1 monotonic acquire360  cmpxchg ptr %a, i8 0, i8 1 monotonic seq_cst361  ret void362}363; CHECK-LABEL: atomic8_cas_monotonic{{.*}}!pcsections !0364; CHECK: cmpxchg ptr %a, i8 0, i8 1 monotonic monotonic, align 1, !pcsections !2365; CHECK: cmpxchg ptr %a, i8 0, i8 1 monotonic acquire, align 1, !pcsections !2366; CHECK: cmpxchg ptr %a, i8 0, i8 1 monotonic seq_cst, align 1, !pcsections !2367 368define void @atomic8_cas_acquire(ptr %a) nounwind uwtable {369entry:370  cmpxchg ptr %a, i8 0, i8 1 acquire monotonic371  cmpxchg ptr %a, i8 0, i8 1 acquire acquire372  cmpxchg ptr %a, i8 0, i8 1 acquire seq_cst373  ret void374}375; CHECK-LABEL: atomic8_cas_acquire{{.*}}!pcsections !0376; CHECK: cmpxchg ptr %a, i8 0, i8 1 acquire monotonic, align 1, !pcsections !2377; CHECK: cmpxchg ptr %a, i8 0, i8 1 acquire acquire, align 1, !pcsections !2378; CHECK: cmpxchg ptr %a, i8 0, i8 1 acquire seq_cst, align 1, !pcsections !2379 380define void @atomic8_cas_release(ptr %a) nounwind uwtable {381entry:382  cmpxchg ptr %a, i8 0, i8 1 release monotonic383  cmpxchg ptr %a, i8 0, i8 1 release acquire384  cmpxchg ptr %a, i8 0, i8 1 release seq_cst385  ret void386}387; CHECK-LABEL: atomic8_cas_release{{.*}}!pcsections !0388; CHECK: cmpxchg ptr %a, i8 0, i8 1 release monotonic, align 1, !pcsections !2389; CHECK: cmpxchg ptr %a, i8 0, i8 1 release acquire, align 1, !pcsections !2390; CHECK: cmpxchg ptr %a, i8 0, i8 1 release seq_cst, align 1, !pcsections !2391 392define void @atomic8_cas_acq_rel(ptr %a) nounwind uwtable {393entry:394  cmpxchg ptr %a, i8 0, i8 1 acq_rel monotonic395  cmpxchg ptr %a, i8 0, i8 1 acq_rel acquire396  cmpxchg ptr %a, i8 0, i8 1 acq_rel seq_cst397  ret void398}399; CHECK-LABEL: atomic8_cas_acq_rel{{.*}}!pcsections !0400; CHECK: cmpxchg ptr %a, i8 0, i8 1 acq_rel monotonic, align 1, !pcsections !2401; CHECK: cmpxchg ptr %a, i8 0, i8 1 acq_rel acquire, align 1, !pcsections !2402; CHECK: cmpxchg ptr %a, i8 0, i8 1 acq_rel seq_cst, align 1, !pcsections !2403 404define void @atomic8_cas_seq_cst(ptr %a) nounwind uwtable {405entry:406  cmpxchg ptr %a, i8 0, i8 1 seq_cst monotonic407  cmpxchg ptr %a, i8 0, i8 1 seq_cst acquire408  cmpxchg ptr %a, i8 0, i8 1 seq_cst seq_cst409  ret void410}411; CHECK-LABEL: atomic8_cas_seq_cst{{.*}}!pcsections !0412; CHECK: cmpxchg ptr %a, i8 0, i8 1 seq_cst monotonic, align 1, !pcsections !2413; CHECK: cmpxchg ptr %a, i8 0, i8 1 seq_cst acquire, align 1, !pcsections !2414; CHECK: cmpxchg ptr %a, i8 0, i8 1 seq_cst seq_cst, align 1, !pcsections !2415 416define i16 @atomic16_load_unordered(ptr %a) nounwind uwtable {417entry:418  %0 = load atomic i16, ptr %a unordered, align 2419  ret i16 %0420}421; CHECK-LABEL: atomic16_load_unordered{{.*}}!pcsections !0422; CHECK: !pcsections !2423 424define i16 @atomic16_load_monotonic(ptr %a) nounwind uwtable {425entry:426  %0 = load atomic i16, ptr %a monotonic, align 2427  ret i16 %0428}429; CHECK-LABEL: atomic16_load_monotonic{{.*}}!pcsections !0430; CHECK: !pcsections !2431 432define i16 @atomic16_load_acquire(ptr %a) nounwind uwtable {433entry:434  %0 = load atomic i16, ptr %a acquire, align 2435  ret i16 %0436}437; CHECK-LABEL: atomic16_load_acquire{{.*}}!pcsections !0438; CHECK: !pcsections !2439 440define i16 @atomic16_load_seq_cst(ptr %a) nounwind uwtable {441entry:442  %0 = load atomic i16, ptr %a seq_cst, align 2443  ret i16 %0444}445; CHECK-LABEL: atomic16_load_seq_cst{{.*}}!pcsections !0446; CHECK: !pcsections !2447 448define void @atomic16_store_unordered(ptr %a) nounwind uwtable {449entry:450  store atomic i16 0, ptr %a unordered, align 2451  ret void452}453; CHECK-LABEL: atomic16_store_unordered{{.*}}!pcsections !0454; CHECK: !pcsections !2455 456define void @atomic16_store_monotonic(ptr %a) nounwind uwtable {457entry:458  store atomic i16 0, ptr %a monotonic, align 2459  ret void460}461; CHECK-LABEL: atomic16_store_monotonic{{.*}}!pcsections !0462; CHECK: !pcsections !2463 464define void @atomic16_store_release(ptr %a) nounwind uwtable {465entry:466  store atomic i16 0, ptr %a release, align 2467  ret void468}469; CHECK-LABEL: atomic16_store_release{{.*}}!pcsections !0470; CHECK: !pcsections !2471 472define void @atomic16_store_seq_cst(ptr %a) nounwind uwtable {473entry:474  store atomic i16 0, ptr %a seq_cst, align 2475  ret void476}477; CHECK-LABEL: atomic16_store_seq_cst{{.*}}!pcsections !0478; CHECK: !pcsections !2479 480define void @atomic16_xchg_monotonic(ptr %a) nounwind uwtable {481entry:482  atomicrmw xchg ptr %a, i16 0 monotonic483  ret void484}485; CHECK-LABEL: atomic16_xchg_monotonic{{.*}}!pcsections !0486; CHECK: !pcsections !2487 488define void @atomic16_add_monotonic(ptr %a) nounwind uwtable {489entry:490  atomicrmw add ptr %a, i16 0 monotonic491  ret void492}493; CHECK-LABEL: atomic16_add_monotonic{{.*}}!pcsections !0494; CHECK: !pcsections !2495 496define void @atomic16_sub_monotonic(ptr %a) nounwind uwtable {497entry:498  atomicrmw sub ptr %a, i16 0 monotonic499  ret void500}501; CHECK-LABEL: atomic16_sub_monotonic{{.*}}!pcsections !0502; CHECK: !pcsections !2503 504define void @atomic16_and_monotonic(ptr %a) nounwind uwtable {505entry:506  atomicrmw and ptr %a, i16 0 monotonic507  ret void508}509; CHECK-LABEL: atomic16_and_monotonic{{.*}}!pcsections !0510; CHECK: !pcsections !2511 512define void @atomic16_or_monotonic(ptr %a) nounwind uwtable {513entry:514  atomicrmw or ptr %a, i16 0 monotonic515  ret void516}517; CHECK-LABEL: atomic16_or_monotonic{{.*}}!pcsections !0518; CHECK: !pcsections !2519 520define void @atomic16_xor_monotonic(ptr %a) nounwind uwtable {521entry:522  atomicrmw xor ptr %a, i16 0 monotonic523  ret void524}525; CHECK-LABEL: atomic16_xor_monotonic{{.*}}!pcsections !0526; CHECK: !pcsections !2527 528define void @atomic16_nand_monotonic(ptr %a) nounwind uwtable {529entry:530  atomicrmw nand ptr %a, i16 0 monotonic531  ret void532}533; CHECK-LABEL: atomic16_nand_monotonic{{.*}}!pcsections !0534; CHECK: !pcsections !2535 536define void @atomic16_xchg_acquire(ptr %a) nounwind uwtable {537entry:538  atomicrmw xchg ptr %a, i16 0 acquire539  ret void540}541; CHECK-LABEL: atomic16_xchg_acquire{{.*}}!pcsections !0542; CHECK: !pcsections !2543 544define void @atomic16_add_acquire(ptr %a) nounwind uwtable {545entry:546  atomicrmw add ptr %a, i16 0 acquire547  ret void548}549; CHECK-LABEL: atomic16_add_acquire{{.*}}!pcsections !0550; CHECK: !pcsections !2551 552define void @atomic16_sub_acquire(ptr %a) nounwind uwtable {553entry:554  atomicrmw sub ptr %a, i16 0 acquire555  ret void556}557; CHECK-LABEL: atomic16_sub_acquire{{.*}}!pcsections !0558; CHECK: !pcsections !2559 560define void @atomic16_and_acquire(ptr %a) nounwind uwtable {561entry:562  atomicrmw and ptr %a, i16 0 acquire563  ret void564}565; CHECK-LABEL: atomic16_and_acquire{{.*}}!pcsections !0566; CHECK: !pcsections !2567 568define void @atomic16_or_acquire(ptr %a) nounwind uwtable {569entry:570  atomicrmw or ptr %a, i16 0 acquire571  ret void572}573; CHECK-LABEL: atomic16_or_acquire{{.*}}!pcsections !0574; CHECK: !pcsections !2575 576define void @atomic16_xor_acquire(ptr %a) nounwind uwtable {577entry:578  atomicrmw xor ptr %a, i16 0 acquire579  ret void580}581; CHECK-LABEL: atomic16_xor_acquire{{.*}}!pcsections !0582; CHECK: !pcsections !2583 584define void @atomic16_nand_acquire(ptr %a) nounwind uwtable {585entry:586  atomicrmw nand ptr %a, i16 0 acquire587  ret void588}589; CHECK-LABEL: atomic16_nand_acquire{{.*}}!pcsections !0590; CHECK: !pcsections !2591 592define void @atomic16_xchg_release(ptr %a) nounwind uwtable {593entry:594  atomicrmw xchg ptr %a, i16 0 release595  ret void596}597; CHECK-LABEL: atomic16_xchg_release{{.*}}!pcsections !0598; CHECK: !pcsections !2599 600define void @atomic16_add_release(ptr %a) nounwind uwtable {601entry:602  atomicrmw add ptr %a, i16 0 release603  ret void604}605; CHECK-LABEL: atomic16_add_release{{.*}}!pcsections !0606; CHECK: !pcsections !2607 608define void @atomic16_sub_release(ptr %a) nounwind uwtable {609entry:610  atomicrmw sub ptr %a, i16 0 release611  ret void612}613; CHECK-LABEL: atomic16_sub_release{{.*}}!pcsections !0614; CHECK: !pcsections !2615 616define void @atomic16_and_release(ptr %a) nounwind uwtable {617entry:618  atomicrmw and ptr %a, i16 0 release619  ret void620}621; CHECK-LABEL: atomic16_and_release{{.*}}!pcsections !0622; CHECK: !pcsections !2623 624define void @atomic16_or_release(ptr %a) nounwind uwtable {625entry:626  atomicrmw or ptr %a, i16 0 release627  ret void628}629; CHECK-LABEL: atomic16_or_release{{.*}}!pcsections !0630; CHECK: !pcsections !2631 632define void @atomic16_xor_release(ptr %a) nounwind uwtable {633entry:634  atomicrmw xor ptr %a, i16 0 release635  ret void636}637; CHECK-LABEL: atomic16_xor_release{{.*}}!pcsections !0638; CHECK: !pcsections !2639 640define void @atomic16_nand_release(ptr %a) nounwind uwtable {641entry:642  atomicrmw nand ptr %a, i16 0 release643  ret void644}645; CHECK-LABEL: atomic16_nand_release{{.*}}!pcsections !0646; CHECK: !pcsections !2647 648define void @atomic16_xchg_acq_rel(ptr %a) nounwind uwtable {649entry:650  atomicrmw xchg ptr %a, i16 0 acq_rel651  ret void652}653; CHECK-LABEL: atomic16_xchg_acq_rel{{.*}}!pcsections !0654; CHECK: !pcsections !2655 656define void @atomic16_add_acq_rel(ptr %a) nounwind uwtable {657entry:658  atomicrmw add ptr %a, i16 0 acq_rel659  ret void660}661; CHECK-LABEL: atomic16_add_acq_rel{{.*}}!pcsections !0662; CHECK: !pcsections !2663 664define void @atomic16_sub_acq_rel(ptr %a) nounwind uwtable {665entry:666  atomicrmw sub ptr %a, i16 0 acq_rel667  ret void668}669; CHECK-LABEL: atomic16_sub_acq_rel{{.*}}!pcsections !0670; CHECK: !pcsections !2671 672define void @atomic16_and_acq_rel(ptr %a) nounwind uwtable {673entry:674  atomicrmw and ptr %a, i16 0 acq_rel675  ret void676}677; CHECK-LABEL: atomic16_and_acq_rel{{.*}}!pcsections !0678; CHECK: !pcsections !2679 680define void @atomic16_or_acq_rel(ptr %a) nounwind uwtable {681entry:682  atomicrmw or ptr %a, i16 0 acq_rel683  ret void684}685; CHECK-LABEL: atomic16_or_acq_rel{{.*}}!pcsections !0686; CHECK: !pcsections !2687 688define void @atomic16_xor_acq_rel(ptr %a) nounwind uwtable {689entry:690  atomicrmw xor ptr %a, i16 0 acq_rel691  ret void692}693; CHECK-LABEL: atomic16_xor_acq_rel{{.*}}!pcsections !0694; CHECK: !pcsections !2695 696define void @atomic16_nand_acq_rel(ptr %a) nounwind uwtable {697entry:698  atomicrmw nand ptr %a, i16 0 acq_rel699  ret void700}701; CHECK-LABEL: atomic16_nand_acq_rel{{.*}}!pcsections !0702; CHECK: !pcsections !2703 704define void @atomic16_xchg_seq_cst(ptr %a) nounwind uwtable {705entry:706  atomicrmw xchg ptr %a, i16 0 seq_cst707  ret void708}709; CHECK-LABEL: atomic16_xchg_seq_cst{{.*}}!pcsections !0710; CHECK: !pcsections !2711 712define void @atomic16_add_seq_cst(ptr %a) nounwind uwtable {713entry:714  atomicrmw add ptr %a, i16 0 seq_cst715  ret void716}717; CHECK-LABEL: atomic16_add_seq_cst{{.*}}!pcsections !0718; CHECK: !pcsections !2719 720define void @atomic16_sub_seq_cst(ptr %a) nounwind uwtable {721entry:722  atomicrmw sub ptr %a, i16 0 seq_cst723  ret void724}725; CHECK-LABEL: atomic16_sub_seq_cst{{.*}}!pcsections !0726; CHECK: !pcsections !2727 728define void @atomic16_and_seq_cst(ptr %a) nounwind uwtable {729entry:730  atomicrmw and ptr %a, i16 0 seq_cst731  ret void732}733; CHECK-LABEL: atomic16_and_seq_cst{{.*}}!pcsections !0734; CHECK: !pcsections !2735 736define void @atomic16_or_seq_cst(ptr %a) nounwind uwtable {737entry:738  atomicrmw or ptr %a, i16 0 seq_cst739  ret void740}741; CHECK-LABEL: atomic16_or_seq_cst{{.*}}!pcsections !0742; CHECK: !pcsections !2743 744define void @atomic16_xor_seq_cst(ptr %a) nounwind uwtable {745entry:746  atomicrmw xor ptr %a, i16 0 seq_cst747  ret void748}749; CHECK-LABEL: atomic16_xor_seq_cst{{.*}}!pcsections !0750; CHECK: !pcsections !2751 752define void @atomic16_nand_seq_cst(ptr %a) nounwind uwtable {753entry:754  atomicrmw nand ptr %a, i16 0 seq_cst755  ret void756}757; CHECK-LABEL: atomic16_nand_seq_cst{{.*}}!pcsections !0758; CHECK: !pcsections !2759 760define void @atomic16_cas_monotonic(ptr %a) nounwind uwtable {761entry:762  cmpxchg ptr %a, i16 0, i16 1 monotonic monotonic763  cmpxchg ptr %a, i16 0, i16 1 monotonic acquire764  cmpxchg ptr %a, i16 0, i16 1 monotonic seq_cst765  ret void766}767; CHECK-LABEL: atomic16_cas_monotonic{{.*}}!pcsections !0768; CHECK: cmpxchg ptr %a, i16 0, i16 1 monotonic monotonic, align 2, !pcsections !2769; CHECK: cmpxchg ptr %a, i16 0, i16 1 monotonic acquire, align 2, !pcsections !2770; CHECK: cmpxchg ptr %a, i16 0, i16 1 monotonic seq_cst, align 2, !pcsections !2771 772define void @atomic16_cas_acquire(ptr %a) nounwind uwtable {773entry:774  cmpxchg ptr %a, i16 0, i16 1 acquire monotonic775  cmpxchg ptr %a, i16 0, i16 1 acquire acquire776  cmpxchg ptr %a, i16 0, i16 1 acquire seq_cst777  ret void778}779; CHECK-LABEL: atomic16_cas_acquire{{.*}}!pcsections !0780; CHECK: cmpxchg ptr %a, i16 0, i16 1 acquire monotonic, align 2, !pcsections !2781; CHECK: cmpxchg ptr %a, i16 0, i16 1 acquire acquire, align 2, !pcsections !2782; CHECK: cmpxchg ptr %a, i16 0, i16 1 acquire seq_cst, align 2, !pcsections !2783 784define void @atomic16_cas_release(ptr %a) nounwind uwtable {785entry:786  cmpxchg ptr %a, i16 0, i16 1 release monotonic787  cmpxchg ptr %a, i16 0, i16 1 release acquire788  cmpxchg ptr %a, i16 0, i16 1 release seq_cst789  ret void790}791; CHECK-LABEL: atomic16_cas_release{{.*}}!pcsections !0792; CHECK: cmpxchg ptr %a, i16 0, i16 1 release monotonic, align 2, !pcsections !2793; CHECK: cmpxchg ptr %a, i16 0, i16 1 release acquire, align 2, !pcsections !2794; CHECK: cmpxchg ptr %a, i16 0, i16 1 release seq_cst, align 2, !pcsections !2795 796define void @atomic16_cas_acq_rel(ptr %a) nounwind uwtable {797entry:798  cmpxchg ptr %a, i16 0, i16 1 acq_rel monotonic799  cmpxchg ptr %a, i16 0, i16 1 acq_rel acquire800  cmpxchg ptr %a, i16 0, i16 1 acq_rel seq_cst801  ret void802}803; CHECK-LABEL: atomic16_cas_acq_rel{{.*}}!pcsections !0804; CHECK: cmpxchg ptr %a, i16 0, i16 1 acq_rel monotonic, align 2, !pcsections !2805; CHECK: cmpxchg ptr %a, i16 0, i16 1 acq_rel acquire, align 2, !pcsections !2806; CHECK: cmpxchg ptr %a, i16 0, i16 1 acq_rel seq_cst, align 2, !pcsections !2807 808define void @atomic16_cas_seq_cst(ptr %a) nounwind uwtable {809entry:810  cmpxchg ptr %a, i16 0, i16 1 seq_cst monotonic811  cmpxchg ptr %a, i16 0, i16 1 seq_cst acquire812  cmpxchg ptr %a, i16 0, i16 1 seq_cst seq_cst813  ret void814}815; CHECK-LABEL: atomic16_cas_seq_cst{{.*}}!pcsections !0816; CHECK: cmpxchg ptr %a, i16 0, i16 1 seq_cst monotonic, align 2, !pcsections !2817; CHECK: cmpxchg ptr %a, i16 0, i16 1 seq_cst acquire, align 2, !pcsections !2818; CHECK: cmpxchg ptr %a, i16 0, i16 1 seq_cst seq_cst, align 2, !pcsections !2819 820define i32 @atomic32_load_unordered(ptr %a) nounwind uwtable {821entry:822  %0 = load atomic i32, ptr %a unordered, align 4823  ret i32 %0824}825; CHECK-LABEL: atomic32_load_unordered{{.*}}!pcsections !0826; CHECK: !pcsections !2827 828define i32 @atomic32_load_monotonic(ptr %a) nounwind uwtable {829entry:830  %0 = load atomic i32, ptr %a monotonic, align 4831  ret i32 %0832}833; CHECK-LABEL: atomic32_load_monotonic{{.*}}!pcsections !0834; CHECK: !pcsections !2835 836define i32 @atomic32_load_acquire(ptr %a) nounwind uwtable {837entry:838  %0 = load atomic i32, ptr %a acquire, align 4839  ret i32 %0840}841; CHECK-LABEL: atomic32_load_acquire{{.*}}!pcsections !0842; CHECK: !pcsections !2843 844define i32 @atomic32_load_seq_cst(ptr %a) nounwind uwtable {845entry:846  %0 = load atomic i32, ptr %a seq_cst, align 4847  ret i32 %0848}849; CHECK-LABEL: atomic32_load_seq_cst{{.*}}!pcsections !0850; CHECK: !pcsections !2851 852define void @atomic32_store_unordered(ptr %a) nounwind uwtable {853entry:854  store atomic i32 0, ptr %a unordered, align 4855  ret void856}857; CHECK-LABEL: atomic32_store_unordered{{.*}}!pcsections !0858; CHECK: !pcsections !2859 860define void @atomic32_store_monotonic(ptr %a) nounwind uwtable {861entry:862  store atomic i32 0, ptr %a monotonic, align 4863  ret void864}865; CHECK-LABEL: atomic32_store_monotonic{{.*}}!pcsections !0866; CHECK: !pcsections !2867 868define void @atomic32_store_release(ptr %a) nounwind uwtable {869entry:870  store atomic i32 0, ptr %a release, align 4871  ret void872}873; CHECK-LABEL: atomic32_store_release{{.*}}!pcsections !0874; CHECK: !pcsections !2875 876define void @atomic32_store_seq_cst(ptr %a) nounwind uwtable {877entry:878  store atomic i32 0, ptr %a seq_cst, align 4879  ret void880}881; CHECK-LABEL: atomic32_store_seq_cst{{.*}}!pcsections !0882; CHECK: !pcsections !2883 884define void @atomic32_xchg_monotonic(ptr %a) nounwind uwtable {885entry:886  atomicrmw xchg ptr %a, i32 0 monotonic887  ret void888}889; CHECK-LABEL: atomic32_xchg_monotonic{{.*}}!pcsections !0890; CHECK: !pcsections !2891 892define void @atomic32_add_monotonic(ptr %a) nounwind uwtable {893entry:894  atomicrmw add ptr %a, i32 0 monotonic895  ret void896}897; CHECK-LABEL: atomic32_add_monotonic{{.*}}!pcsections !0898; CHECK: !pcsections !2899 900define void @atomic32_sub_monotonic(ptr %a) nounwind uwtable {901entry:902  atomicrmw sub ptr %a, i32 0 monotonic903  ret void904}905; CHECK-LABEL: atomic32_sub_monotonic{{.*}}!pcsections !0906; CHECK: !pcsections !2907 908define void @atomic32_and_monotonic(ptr %a) nounwind uwtable {909entry:910  atomicrmw and ptr %a, i32 0 monotonic911  ret void912}913; CHECK-LABEL: atomic32_and_monotonic{{.*}}!pcsections !0914; CHECK: !pcsections !2915 916define void @atomic32_or_monotonic(ptr %a) nounwind uwtable {917entry:918  atomicrmw or ptr %a, i32 0 monotonic919  ret void920}921; CHECK-LABEL: atomic32_or_monotonic{{.*}}!pcsections !0922; CHECK: !pcsections !2923 924define void @atomic32_xor_monotonic(ptr %a) nounwind uwtable {925entry:926  atomicrmw xor ptr %a, i32 0 monotonic927  ret void928}929; CHECK-LABEL: atomic32_xor_monotonic{{.*}}!pcsections !0930; CHECK: !pcsections !2931 932define void @atomic32_nand_monotonic(ptr %a) nounwind uwtable {933entry:934  atomicrmw nand ptr %a, i32 0 monotonic935  ret void936}937; CHECK-LABEL: atomic32_nand_monotonic{{.*}}!pcsections !0938; CHECK: !pcsections !2939 940define void @atomic32_xchg_acquire(ptr %a) nounwind uwtable {941entry:942  atomicrmw xchg ptr %a, i32 0 acquire943  ret void944}945; CHECK-LABEL: atomic32_xchg_acquire{{.*}}!pcsections !0946; CHECK: !pcsections !2947 948define void @atomic32_add_acquire(ptr %a) nounwind uwtable {949entry:950  atomicrmw add ptr %a, i32 0 acquire951  ret void952}953; CHECK-LABEL: atomic32_add_acquire{{.*}}!pcsections !0954; CHECK: !pcsections !2955 956define void @atomic32_sub_acquire(ptr %a) nounwind uwtable {957entry:958  atomicrmw sub ptr %a, i32 0 acquire959  ret void960}961; CHECK-LABEL: atomic32_sub_acquire{{.*}}!pcsections !0962; CHECK: !pcsections !2963 964define void @atomic32_and_acquire(ptr %a) nounwind uwtable {965entry:966  atomicrmw and ptr %a, i32 0 acquire967  ret void968}969; CHECK-LABEL: atomic32_and_acquire{{.*}}!pcsections !0970; CHECK: !pcsections !2971 972define void @atomic32_or_acquire(ptr %a) nounwind uwtable {973entry:974  atomicrmw or ptr %a, i32 0 acquire975  ret void976}977; CHECK-LABEL: atomic32_or_acquire{{.*}}!pcsections !0978; CHECK: !pcsections !2979 980define void @atomic32_xor_acquire(ptr %a) nounwind uwtable {981entry:982  atomicrmw xor ptr %a, i32 0 acquire983  ret void984}985; CHECK-LABEL: atomic32_xor_acquire{{.*}}!pcsections !0986; CHECK: !pcsections !2987 988define void @atomic32_nand_acquire(ptr %a) nounwind uwtable {989entry:990  atomicrmw nand ptr %a, i32 0 acquire991  ret void992}993; CHECK-LABEL: atomic32_nand_acquire{{.*}}!pcsections !0994; CHECK: !pcsections !2995 996define void @atomic32_xchg_release(ptr %a) nounwind uwtable {997entry:998  atomicrmw xchg ptr %a, i32 0 release999  ret void1000}1001; CHECK-LABEL: atomic32_xchg_release{{.*}}!pcsections !01002; CHECK: !pcsections !21003 1004define void @atomic32_add_release(ptr %a) nounwind uwtable {1005entry:1006  atomicrmw add ptr %a, i32 0 release1007  ret void1008}1009; CHECK-LABEL: atomic32_add_release{{.*}}!pcsections !01010; CHECK: !pcsections !21011 1012define void @atomic32_sub_release(ptr %a) nounwind uwtable {1013entry:1014  atomicrmw sub ptr %a, i32 0 release1015  ret void1016}1017; CHECK-LABEL: atomic32_sub_release{{.*}}!pcsections !01018; CHECK: !pcsections !21019 1020define void @atomic32_and_release(ptr %a) nounwind uwtable {1021entry:1022  atomicrmw and ptr %a, i32 0 release1023  ret void1024}1025; CHECK-LABEL: atomic32_and_release{{.*}}!pcsections !01026; CHECK: !pcsections !21027 1028define void @atomic32_or_release(ptr %a) nounwind uwtable {1029entry:1030  atomicrmw or ptr %a, i32 0 release1031  ret void1032}1033; CHECK-LABEL: atomic32_or_release{{.*}}!pcsections !01034; CHECK: !pcsections !21035 1036define void @atomic32_xor_release(ptr %a) nounwind uwtable {1037entry:1038  atomicrmw xor ptr %a, i32 0 release1039  ret void1040}1041; CHECK-LABEL: atomic32_xor_release{{.*}}!pcsections !01042; CHECK: !pcsections !21043 1044define void @atomic32_nand_release(ptr %a) nounwind uwtable {1045entry:1046  atomicrmw nand ptr %a, i32 0 release1047  ret void1048}1049; CHECK-LABEL: atomic32_nand_release{{.*}}!pcsections !01050; CHECK: !pcsections !21051 1052define void @atomic32_xchg_acq_rel(ptr %a) nounwind uwtable {1053entry:1054  atomicrmw xchg ptr %a, i32 0 acq_rel1055  ret void1056}1057; CHECK-LABEL: atomic32_xchg_acq_rel{{.*}}!pcsections !01058; CHECK: !pcsections !21059 1060define void @atomic32_add_acq_rel(ptr %a) nounwind uwtable {1061entry:1062  atomicrmw add ptr %a, i32 0 acq_rel1063  ret void1064}1065; CHECK-LABEL: atomic32_add_acq_rel{{.*}}!pcsections !01066; CHECK: !pcsections !21067 1068define void @atomic32_sub_acq_rel(ptr %a) nounwind uwtable {1069entry:1070  atomicrmw sub ptr %a, i32 0 acq_rel1071  ret void1072}1073; CHECK-LABEL: atomic32_sub_acq_rel{{.*}}!pcsections !01074; CHECK: !pcsections !21075 1076define void @atomic32_and_acq_rel(ptr %a) nounwind uwtable {1077entry:1078  atomicrmw and ptr %a, i32 0 acq_rel1079  ret void1080}1081; CHECK-LABEL: atomic32_and_acq_rel{{.*}}!pcsections !01082; CHECK: !pcsections !21083 1084define void @atomic32_or_acq_rel(ptr %a) nounwind uwtable {1085entry:1086  atomicrmw or ptr %a, i32 0 acq_rel1087  ret void1088}1089; CHECK-LABEL: atomic32_or_acq_rel{{.*}}!pcsections !01090; CHECK: !pcsections !21091 1092define void @atomic32_xor_acq_rel(ptr %a) nounwind uwtable {1093entry:1094  atomicrmw xor ptr %a, i32 0 acq_rel1095  ret void1096}1097; CHECK-LABEL: atomic32_xor_acq_rel{{.*}}!pcsections !01098; CHECK: !pcsections !21099 1100define void @atomic32_nand_acq_rel(ptr %a) nounwind uwtable {1101entry:1102  atomicrmw nand ptr %a, i32 0 acq_rel1103  ret void1104}1105; CHECK-LABEL: atomic32_nand_acq_rel{{.*}}!pcsections !01106; CHECK: !pcsections !21107 1108define void @atomic32_xchg_seq_cst(ptr %a) nounwind uwtable {1109entry:1110  atomicrmw xchg ptr %a, i32 0 seq_cst1111  ret void1112}1113; CHECK-LABEL: atomic32_xchg_seq_cst{{.*}}!pcsections !01114; CHECK: !pcsections !21115 1116define void @atomic32_add_seq_cst(ptr %a) nounwind uwtable {1117entry:1118  atomicrmw add ptr %a, i32 0 seq_cst1119  ret void1120}1121; CHECK-LABEL: atomic32_add_seq_cst{{.*}}!pcsections !01122; CHECK: !pcsections !21123 1124define void @atomic32_sub_seq_cst(ptr %a) nounwind uwtable {1125entry:1126  atomicrmw sub ptr %a, i32 0 seq_cst1127  ret void1128}1129; CHECK-LABEL: atomic32_sub_seq_cst{{.*}}!pcsections !01130; CHECK: !pcsections !21131 1132define void @atomic32_and_seq_cst(ptr %a) nounwind uwtable {1133entry:1134  atomicrmw and ptr %a, i32 0 seq_cst1135  ret void1136}1137; CHECK-LABEL: atomic32_and_seq_cst{{.*}}!pcsections !01138; CHECK: !pcsections !21139 1140define void @atomic32_or_seq_cst(ptr %a) nounwind uwtable {1141entry:1142  atomicrmw or ptr %a, i32 0 seq_cst1143  ret void1144}1145; CHECK-LABEL: atomic32_or_seq_cst{{.*}}!pcsections !01146; CHECK: !pcsections !21147 1148define void @atomic32_xor_seq_cst(ptr %a) nounwind uwtable {1149entry:1150  atomicrmw xor ptr %a, i32 0 seq_cst1151  ret void1152}1153; CHECK-LABEL: atomic32_xor_seq_cst{{.*}}!pcsections !01154; CHECK: !pcsections !21155 1156define void @atomic32_nand_seq_cst(ptr %a) nounwind uwtable {1157entry:1158  atomicrmw nand ptr %a, i32 0 seq_cst1159  ret void1160}1161; CHECK-LABEL: atomic32_nand_seq_cst{{.*}}!pcsections !01162; CHECK: !pcsections !21163 1164define void @atomic32_cas_monotonic(ptr %a) nounwind uwtable {1165entry:1166  cmpxchg ptr %a, i32 0, i32 1 monotonic monotonic1167  cmpxchg ptr %a, i32 0, i32 1 monotonic acquire1168  cmpxchg ptr %a, i32 0, i32 1 monotonic seq_cst1169  ret void1170}1171; CHECK-LABEL: atomic32_cas_monotonic{{.*}}!pcsections !01172; CHECK: cmpxchg ptr %a, i32 0, i32 1 monotonic monotonic, align 4, !pcsections !21173; CHECK: cmpxchg ptr %a, i32 0, i32 1 monotonic acquire, align 4, !pcsections !21174; CHECK: cmpxchg ptr %a, i32 0, i32 1 monotonic seq_cst, align 4, !pcsections !21175 1176define void @atomic32_cas_acquire(ptr %a) nounwind uwtable {1177entry:1178  cmpxchg ptr %a, i32 0, i32 1 acquire monotonic1179  cmpxchg ptr %a, i32 0, i32 1 acquire acquire1180  cmpxchg ptr %a, i32 0, i32 1 acquire seq_cst1181  ret void1182}1183; CHECK-LABEL: atomic32_cas_acquire{{.*}}!pcsections !01184; CHECK: cmpxchg ptr %a, i32 0, i32 1 acquire monotonic, align 4, !pcsections !21185; CHECK: cmpxchg ptr %a, i32 0, i32 1 acquire acquire, align 4, !pcsections !21186; CHECK: cmpxchg ptr %a, i32 0, i32 1 acquire seq_cst, align 4, !pcsections !21187 1188define void @atomic32_cas_release(ptr %a) nounwind uwtable {1189entry:1190  cmpxchg ptr %a, i32 0, i32 1 release monotonic1191  cmpxchg ptr %a, i32 0, i32 1 release acquire1192  cmpxchg ptr %a, i32 0, i32 1 release seq_cst1193  ret void1194}1195; CHECK-LABEL: atomic32_cas_release{{.*}}!pcsections !01196; CHECK: cmpxchg ptr %a, i32 0, i32 1 release monotonic, align 4, !pcsections !21197; CHECK: cmpxchg ptr %a, i32 0, i32 1 release acquire, align 4, !pcsections !21198; CHECK: cmpxchg ptr %a, i32 0, i32 1 release seq_cst, align 4, !pcsections !21199 1200define void @atomic32_cas_acq_rel(ptr %a) nounwind uwtable {1201entry:1202  cmpxchg ptr %a, i32 0, i32 1 acq_rel monotonic1203  cmpxchg ptr %a, i32 0, i32 1 acq_rel acquire1204  cmpxchg ptr %a, i32 0, i32 1 acq_rel seq_cst1205  ret void1206}1207; CHECK-LABEL: atomic32_cas_acq_rel{{.*}}!pcsections !01208; CHECK: cmpxchg ptr %a, i32 0, i32 1 acq_rel monotonic, align 4, !pcsections !21209; CHECK: cmpxchg ptr %a, i32 0, i32 1 acq_rel acquire, align 4, !pcsections !21210; CHECK: cmpxchg ptr %a, i32 0, i32 1 acq_rel seq_cst, align 4, !pcsections !21211 1212define void @atomic32_cas_seq_cst(ptr %a) nounwind uwtable {1213entry:1214  cmpxchg ptr %a, i32 0, i32 1 seq_cst monotonic1215  cmpxchg ptr %a, i32 0, i32 1 seq_cst acquire1216  cmpxchg ptr %a, i32 0, i32 1 seq_cst seq_cst1217  ret void1218}1219; CHECK-LABEL: atomic32_cas_seq_cst{{.*}}!pcsections !01220; CHECK: cmpxchg ptr %a, i32 0, i32 1 seq_cst monotonic, align 4, !pcsections !21221; CHECK: cmpxchg ptr %a, i32 0, i32 1 seq_cst acquire, align 4, !pcsections !21222; CHECK: cmpxchg ptr %a, i32 0, i32 1 seq_cst seq_cst, align 4, !pcsections !21223 1224define i64 @atomic64_load_unordered(ptr %a) nounwind uwtable {1225entry:1226  %0 = load atomic i64, ptr %a unordered, align 81227  ret i64 %01228}1229; CHECK-LABEL: atomic64_load_unordered{{.*}}!pcsections !01230; CHECK: !pcsections !21231 1232define i64 @atomic64_load_monotonic(ptr %a) nounwind uwtable {1233entry:1234  %0 = load atomic i64, ptr %a monotonic, align 81235  ret i64 %01236}1237; CHECK-LABEL: atomic64_load_monotonic{{.*}}!pcsections !01238; CHECK: !pcsections !21239 1240define i64 @atomic64_load_acquire(ptr %a) nounwind uwtable {1241entry:1242  %0 = load atomic i64, ptr %a acquire, align 81243  ret i64 %01244}1245; CHECK-LABEL: atomic64_load_acquire{{.*}}!pcsections !01246; CHECK: !pcsections !21247 1248define i64 @atomic64_load_seq_cst(ptr %a) nounwind uwtable {1249entry:1250  %0 = load atomic i64, ptr %a seq_cst, align 81251  ret i64 %01252}1253; CHECK-LABEL: atomic64_load_seq_cst{{.*}}!pcsections !01254; CHECK: !pcsections !21255 1256define ptr @atomic64_load_seq_cst_ptr_ty(ptr %a) nounwind uwtable {1257entry:1258  %0 = load atomic ptr, ptr %a seq_cst, align 81259  ret ptr %01260}1261; CHECK-LABEL: atomic64_load_seq_cst{{.*}}!pcsections !01262; CHECK: !pcsections !21263 1264define void @atomic64_store_unordered(ptr %a) nounwind uwtable {1265entry:1266  store atomic i64 0, ptr %a unordered, align 81267  ret void1268}1269; CHECK-LABEL: atomic64_store_unordered{{.*}}!pcsections !01270; CHECK: !pcsections !21271 1272define void @atomic64_store_monotonic(ptr %a) nounwind uwtable {1273entry:1274  store atomic i64 0, ptr %a monotonic, align 81275  ret void1276}1277; CHECK-LABEL: atomic64_store_monotonic{{.*}}!pcsections !01278; CHECK: !pcsections !21279 1280define void @atomic64_store_release(ptr %a) nounwind uwtable {1281entry:1282  store atomic i64 0, ptr %a release, align 81283  ret void1284}1285; CHECK-LABEL: atomic64_store_release{{.*}}!pcsections !01286; CHECK: !pcsections !21287 1288define void @atomic64_store_seq_cst(ptr %a) nounwind uwtable {1289entry:1290  store atomic i64 0, ptr %a seq_cst, align 81291  ret void1292}1293; CHECK-LABEL: atomic64_store_seq_cst{{.*}}!pcsections !01294; CHECK: !pcsections !21295 1296define void @atomic64_store_seq_cst_ptr_ty(ptr %a, ptr %v) nounwind uwtable {1297entry:1298  store atomic ptr %v, ptr %a seq_cst, align 81299  ret void1300}1301; CHECK-LABEL: atomic64_store_seq_cst{{.*}}!pcsections !01302; CHECK: !pcsections !21303 1304define void @atomic64_xchg_monotonic(ptr %a) nounwind uwtable {1305entry:1306  atomicrmw xchg ptr %a, i64 0 monotonic1307  ret void1308}1309; CHECK-LABEL: atomic64_xchg_monotonic{{.*}}!pcsections !01310; CHECK: !pcsections !21311 1312define void @atomic64_add_monotonic(ptr %a) nounwind uwtable {1313entry:1314  atomicrmw add ptr %a, i64 0 monotonic1315  ret void1316}1317; CHECK-LABEL: atomic64_add_monotonic{{.*}}!pcsections !01318; CHECK: !pcsections !21319 1320define void @atomic64_sub_monotonic(ptr %a) nounwind uwtable {1321entry:1322  atomicrmw sub ptr %a, i64 0 monotonic1323  ret void1324}1325; CHECK-LABEL: atomic64_sub_monotonic{{.*}}!pcsections !01326; CHECK: !pcsections !21327 1328define void @atomic64_and_monotonic(ptr %a) nounwind uwtable {1329entry:1330  atomicrmw and ptr %a, i64 0 monotonic1331  ret void1332}1333; CHECK-LABEL: atomic64_and_monotonic{{.*}}!pcsections !01334; CHECK: !pcsections !21335 1336define void @atomic64_or_monotonic(ptr %a) nounwind uwtable {1337entry:1338  atomicrmw or ptr %a, i64 0 monotonic1339  ret void1340}1341; CHECK-LABEL: atomic64_or_monotonic{{.*}}!pcsections !01342; CHECK: !pcsections !21343 1344define void @atomic64_xor_monotonic(ptr %a) nounwind uwtable {1345entry:1346  atomicrmw xor ptr %a, i64 0 monotonic1347  ret void1348}1349; CHECK-LABEL: atomic64_xor_monotonic{{.*}}!pcsections !01350; CHECK: !pcsections !21351 1352define void @atomic64_nand_monotonic(ptr %a) nounwind uwtable {1353entry:1354  atomicrmw nand ptr %a, i64 0 monotonic1355  ret void1356}1357; CHECK-LABEL: atomic64_nand_monotonic{{.*}}!pcsections !01358; CHECK: !pcsections !21359 1360define void @atomic64_xchg_acquire(ptr %a) nounwind uwtable {1361entry:1362  atomicrmw xchg ptr %a, i64 0 acquire1363  ret void1364}1365; CHECK-LABEL: atomic64_xchg_acquire{{.*}}!pcsections !01366; CHECK: !pcsections !21367 1368define void @atomic64_add_acquire(ptr %a) nounwind uwtable {1369entry:1370  atomicrmw add ptr %a, i64 0 acquire1371  ret void1372}1373; CHECK-LABEL: atomic64_add_acquire{{.*}}!pcsections !01374; CHECK: !pcsections !21375 1376define void @atomic64_sub_acquire(ptr %a) nounwind uwtable {1377entry:1378  atomicrmw sub ptr %a, i64 0 acquire1379  ret void1380}1381; CHECK-LABEL: atomic64_sub_acquire{{.*}}!pcsections !01382; CHECK: !pcsections !21383 1384define void @atomic64_and_acquire(ptr %a) nounwind uwtable {1385entry:1386  atomicrmw and ptr %a, i64 0 acquire1387  ret void1388}1389; CHECK-LABEL: atomic64_and_acquire{{.*}}!pcsections !01390; CHECK: !pcsections !21391 1392define void @atomic64_or_acquire(ptr %a) nounwind uwtable {1393entry:1394  atomicrmw or ptr %a, i64 0 acquire1395  ret void1396}1397; CHECK-LABEL: atomic64_or_acquire{{.*}}!pcsections !01398; CHECK: !pcsections !21399 1400define void @atomic64_xor_acquire(ptr %a) nounwind uwtable {1401entry:1402  atomicrmw xor ptr %a, i64 0 acquire1403  ret void1404}1405; CHECK-LABEL: atomic64_xor_acquire{{.*}}!pcsections !01406; CHECK: !pcsections !21407 1408define void @atomic64_nand_acquire(ptr %a) nounwind uwtable {1409entry:1410  atomicrmw nand ptr %a, i64 0 acquire1411  ret void1412}1413; CHECK-LABEL: atomic64_nand_acquire{{.*}}!pcsections !01414; CHECK: !pcsections !21415 1416define void @atomic64_xchg_release(ptr %a) nounwind uwtable {1417entry:1418  atomicrmw xchg ptr %a, i64 0 release1419  ret void1420}1421; CHECK-LABEL: atomic64_xchg_release{{.*}}!pcsections !01422; CHECK: !pcsections !21423 1424define void @atomic64_add_release(ptr %a) nounwind uwtable {1425entry:1426  atomicrmw add ptr %a, i64 0 release1427  ret void1428}1429; CHECK-LABEL: atomic64_add_release{{.*}}!pcsections !01430; CHECK: !pcsections !21431 1432define void @atomic64_sub_release(ptr %a) nounwind uwtable {1433entry:1434  atomicrmw sub ptr %a, i64 0 release1435  ret void1436}1437; CHECK-LABEL: atomic64_sub_release{{.*}}!pcsections !01438; CHECK: !pcsections !21439 1440define void @atomic64_and_release(ptr %a) nounwind uwtable {1441entry:1442  atomicrmw and ptr %a, i64 0 release1443  ret void1444}1445; CHECK-LABEL: atomic64_and_release{{.*}}!pcsections !01446; CHECK: !pcsections !21447 1448define void @atomic64_or_release(ptr %a) nounwind uwtable {1449entry:1450  atomicrmw or ptr %a, i64 0 release1451  ret void1452}1453; CHECK-LABEL: atomic64_or_release{{.*}}!pcsections !01454; CHECK: !pcsections !21455 1456define void @atomic64_xor_release(ptr %a) nounwind uwtable {1457entry:1458  atomicrmw xor ptr %a, i64 0 release1459  ret void1460}1461; CHECK-LABEL: atomic64_xor_release{{.*}}!pcsections !01462; CHECK: !pcsections !21463 1464define void @atomic64_nand_release(ptr %a) nounwind uwtable {1465entry:1466  atomicrmw nand ptr %a, i64 0 release1467  ret void1468}1469; CHECK-LABEL: atomic64_nand_release{{.*}}!pcsections !01470; CHECK: !pcsections !21471 1472define void @atomic64_xchg_acq_rel(ptr %a) nounwind uwtable {1473entry:1474  atomicrmw xchg ptr %a, i64 0 acq_rel1475  ret void1476}1477; CHECK-LABEL: atomic64_xchg_acq_rel{{.*}}!pcsections !01478; CHECK: !pcsections !21479 1480define void @atomic64_add_acq_rel(ptr %a) nounwind uwtable {1481entry:1482  atomicrmw add ptr %a, i64 0 acq_rel1483  ret void1484}1485; CHECK-LABEL: atomic64_add_acq_rel{{.*}}!pcsections !01486; CHECK: !pcsections !21487 1488define void @atomic64_sub_acq_rel(ptr %a) nounwind uwtable {1489entry:1490  atomicrmw sub ptr %a, i64 0 acq_rel1491  ret void1492}1493; CHECK-LABEL: atomic64_sub_acq_rel{{.*}}!pcsections !01494; CHECK: !pcsections !21495 1496define void @atomic64_and_acq_rel(ptr %a) nounwind uwtable {1497entry:1498  atomicrmw and ptr %a, i64 0 acq_rel1499  ret void1500}1501; CHECK-LABEL: atomic64_and_acq_rel{{.*}}!pcsections !01502; CHECK: !pcsections !21503 1504define void @atomic64_or_acq_rel(ptr %a) nounwind uwtable {1505entry:1506  atomicrmw or ptr %a, i64 0 acq_rel1507  ret void1508}1509; CHECK-LABEL: atomic64_or_acq_rel{{.*}}!pcsections !01510; CHECK: !pcsections !21511 1512define void @atomic64_xor_acq_rel(ptr %a) nounwind uwtable {1513entry:1514  atomicrmw xor ptr %a, i64 0 acq_rel1515  ret void1516}1517; CHECK-LABEL: atomic64_xor_acq_rel{{.*}}!pcsections !01518; CHECK: !pcsections !21519 1520define void @atomic64_nand_acq_rel(ptr %a) nounwind uwtable {1521entry:1522  atomicrmw nand ptr %a, i64 0 acq_rel1523  ret void1524}1525; CHECK-LABEL: atomic64_nand_acq_rel{{.*}}!pcsections !01526; CHECK: !pcsections !21527 1528define void @atomic64_xchg_seq_cst(ptr %a) nounwind uwtable {1529entry:1530  atomicrmw xchg ptr %a, i64 0 seq_cst1531  ret void1532}1533; CHECK-LABEL: atomic64_xchg_seq_cst{{.*}}!pcsections !01534; CHECK: !pcsections !21535 1536define void @atomic64_add_seq_cst(ptr %a) nounwind uwtable {1537entry:1538  atomicrmw add ptr %a, i64 0 seq_cst1539  ret void1540}1541; CHECK-LABEL: atomic64_add_seq_cst{{.*}}!pcsections !01542; CHECK: !pcsections !21543 1544define void @atomic64_sub_seq_cst(ptr %a) nounwind uwtable {1545entry:1546  atomicrmw sub ptr %a, i64 0 seq_cst1547  ret void1548}1549; CHECK-LABEL: atomic64_sub_seq_cst{{.*}}!pcsections !01550; CHECK: !pcsections !21551 1552define void @atomic64_and_seq_cst(ptr %a) nounwind uwtable {1553entry:1554  atomicrmw and ptr %a, i64 0 seq_cst1555  ret void1556}1557; CHECK-LABEL: atomic64_and_seq_cst{{.*}}!pcsections !01558; CHECK: !pcsections !21559 1560define void @atomic64_or_seq_cst(ptr %a) nounwind uwtable {1561entry:1562  atomicrmw or ptr %a, i64 0 seq_cst1563  ret void1564}1565; CHECK-LABEL: atomic64_or_seq_cst{{.*}}!pcsections !01566; CHECK: !pcsections !21567 1568define void @atomic64_xor_seq_cst(ptr %a) nounwind uwtable {1569entry:1570  atomicrmw xor ptr %a, i64 0 seq_cst1571  ret void1572}1573; CHECK-LABEL: atomic64_xor_seq_cst{{.*}}!pcsections !01574; CHECK: !pcsections !21575 1576define void @atomic64_nand_seq_cst(ptr %a) nounwind uwtable {1577entry:1578  atomicrmw nand ptr %a, i64 0 seq_cst1579  ret void1580}1581; CHECK-LABEL: atomic64_nand_seq_cst{{.*}}!pcsections !01582; CHECK: !pcsections !21583 1584define void @atomic64_cas_monotonic(ptr %a) nounwind uwtable {1585entry:1586  cmpxchg ptr %a, i64 0, i64 1 monotonic monotonic1587  cmpxchg ptr %a, i64 0, i64 1 monotonic acquire1588  cmpxchg ptr %a, i64 0, i64 1 monotonic seq_cst1589  ret void1590}1591; CHECK-LABEL: atomic64_cas_monotonic{{.*}}!pcsections !01592; CHECK: cmpxchg ptr %a, i64 0, i64 1 monotonic monotonic, align 8, !pcsections !21593; CHECK: cmpxchg ptr %a, i64 0, i64 1 monotonic acquire, align 8, !pcsections !21594; CHECK: cmpxchg ptr %a, i64 0, i64 1 monotonic seq_cst, align 8, !pcsections !21595 1596define void @atomic64_cas_acquire(ptr %a) nounwind uwtable {1597entry:1598  cmpxchg ptr %a, i64 0, i64 1 acquire monotonic1599  cmpxchg ptr %a, i64 0, i64 1 acquire acquire1600  cmpxchg ptr %a, i64 0, i64 1 acquire seq_cst1601  ret void1602}1603; CHECK-LABEL: atomic64_cas_acquire{{.*}}!pcsections !01604; CHECK: cmpxchg ptr %a, i64 0, i64 1 acquire monotonic, align 8, !pcsections !21605; CHECK: cmpxchg ptr %a, i64 0, i64 1 acquire acquire, align 8, !pcsections !21606; CHECK: cmpxchg ptr %a, i64 0, i64 1 acquire seq_cst, align 8, !pcsections !21607 1608define void @atomic64_cas_release(ptr %a) nounwind uwtable {1609entry:1610  cmpxchg ptr %a, i64 0, i64 1 release monotonic1611  cmpxchg ptr %a, i64 0, i64 1 release acquire1612  cmpxchg ptr %a, i64 0, i64 1 release seq_cst1613  ret void1614}1615; CHECK-LABEL: atomic64_cas_release{{.*}}!pcsections !01616; CHECK: cmpxchg ptr %a, i64 0, i64 1 release monotonic, align 8, !pcsections !21617; CHECK: cmpxchg ptr %a, i64 0, i64 1 release acquire, align 8, !pcsections !21618; CHECK: cmpxchg ptr %a, i64 0, i64 1 release seq_cst, align 8, !pcsections !21619 1620define void @atomic64_cas_acq_rel(ptr %a) nounwind uwtable {1621entry:1622  cmpxchg ptr %a, i64 0, i64 1 acq_rel monotonic1623  cmpxchg ptr %a, i64 0, i64 1 acq_rel acquire1624  cmpxchg ptr %a, i64 0, i64 1 acq_rel seq_cst1625  ret void1626}1627; CHECK-LABEL: atomic64_cas_acq_rel{{.*}}!pcsections !01628; CHECK: cmpxchg ptr %a, i64 0, i64 1 acq_rel monotonic, align 8, !pcsections !21629; CHECK: cmpxchg ptr %a, i64 0, i64 1 acq_rel acquire, align 8, !pcsections !21630; CHECK: cmpxchg ptr %a, i64 0, i64 1 acq_rel seq_cst, align 8, !pcsections !21631 1632define void @atomic64_cas_seq_cst(ptr %a) nounwind uwtable {1633entry:1634  cmpxchg ptr %a, i64 0, i64 1 seq_cst monotonic1635  cmpxchg ptr %a, i64 0, i64 1 seq_cst acquire1636  cmpxchg ptr %a, i64 0, i64 1 seq_cst seq_cst1637  ret void1638}1639; CHECK-LABEL: atomic64_cas_seq_cst{{.*}}!pcsections !01640; CHECK: cmpxchg ptr %a, i64 0, i64 1 seq_cst monotonic, align 8, !pcsections !21641; CHECK: cmpxchg ptr %a, i64 0, i64 1 seq_cst acquire, align 8, !pcsections !21642; CHECK: cmpxchg ptr %a, i64 0, i64 1 seq_cst seq_cst, align 8, !pcsections !21643 1644define void @atomic64_cas_seq_cst_ptr_ty(ptr %a, ptr %v1, ptr %v2) nounwind uwtable {1645entry:1646  cmpxchg ptr %a, ptr %v1, ptr %v2 seq_cst seq_cst1647  ret void1648}1649; CHECK-LABEL: atomic64_cas_seq_cst{{.*}}!pcsections !01650; CHECK: !pcsections !21651 1652define i128 @atomic128_load_unordered(ptr %a) nounwind uwtable {1653entry:1654  %0 = load atomic i128, ptr %a unordered, align 161655  ret i128 %01656}1657; CHECK-LABEL: atomic128_load_unordered{{.*}}!pcsections !01658; CHECK: !pcsections !21659 1660define i128 @atomic128_load_monotonic(ptr %a) nounwind uwtable {1661entry:1662  %0 = load atomic i128, ptr %a monotonic, align 161663  ret i128 %01664}1665; CHECK-LABEL: atomic128_load_monotonic{{.*}}!pcsections !01666; CHECK: !pcsections !21667 1668define i128 @atomic128_load_acquire(ptr %a) nounwind uwtable {1669entry:1670  %0 = load atomic i128, ptr %a acquire, align 161671  ret i128 %01672}1673; CHECK-LABEL: atomic128_load_acquire{{.*}}!pcsections !01674; CHECK: !pcsections !21675 1676define i128 @atomic128_load_seq_cst(ptr %a) nounwind uwtable {1677entry:1678  %0 = load atomic i128, ptr %a seq_cst, align 161679  ret i128 %01680}1681; CHECK-LABEL: atomic128_load_seq_cst{{.*}}!pcsections !01682; CHECK: !pcsections !21683 1684define void @atomic128_store_unordered(ptr %a) nounwind uwtable {1685entry:1686  store atomic i128 0, ptr %a unordered, align 161687  ret void1688}1689; CHECK-LABEL: atomic128_store_unordered{{.*}}!pcsections !01690; CHECK: !pcsections !21691 1692define void @atomic128_store_monotonic(ptr %a) nounwind uwtable {1693entry:1694  store atomic i128 0, ptr %a monotonic, align 161695  ret void1696}1697; CHECK-LABEL: atomic128_store_monotonic{{.*}}!pcsections !01698; CHECK: !pcsections !21699 1700define void @atomic128_store_release(ptr %a) nounwind uwtable {1701entry:1702  store atomic i128 0, ptr %a release, align 161703  ret void1704}1705; CHECK-LABEL: atomic128_store_release{{.*}}!pcsections !01706; CHECK: !pcsections !21707 1708define void @atomic128_store_seq_cst(ptr %a) nounwind uwtable {1709entry:1710  store atomic i128 0, ptr %a seq_cst, align 161711  ret void1712}1713; CHECK-LABEL: atomic128_store_seq_cst{{.*}}!pcsections !01714; CHECK: !pcsections !21715 1716define void @atomic128_xchg_monotonic(ptr %a) nounwind uwtable {1717entry:1718  atomicrmw xchg ptr %a, i128 0 monotonic1719  ret void1720}1721; CHECK-LABEL: atomic128_xchg_monotonic{{.*}}!pcsections !01722; CHECK: !pcsections !21723 1724define void @atomic128_add_monotonic(ptr %a) nounwind uwtable {1725entry:1726  atomicrmw add ptr %a, i128 0 monotonic1727  ret void1728}1729; CHECK-LABEL: atomic128_add_monotonic{{.*}}!pcsections !01730; CHECK: !pcsections !21731 1732define void @atomic128_sub_monotonic(ptr %a) nounwind uwtable {1733entry:1734  atomicrmw sub ptr %a, i128 0 monotonic1735  ret void1736}1737; CHECK-LABEL: atomic128_sub_monotonic{{.*}}!pcsections !01738; CHECK: !pcsections !21739 1740define void @atomic128_and_monotonic(ptr %a) nounwind uwtable {1741entry:1742  atomicrmw and ptr %a, i128 0 monotonic1743  ret void1744}1745; CHECK-LABEL: atomic128_and_monotonic{{.*}}!pcsections !01746; CHECK: !pcsections !21747 1748define void @atomic128_or_monotonic(ptr %a) nounwind uwtable {1749entry:1750  atomicrmw or ptr %a, i128 0 monotonic1751  ret void1752}1753; CHECK-LABEL: atomic128_or_monotonic{{.*}}!pcsections !01754; CHECK: !pcsections !21755 1756define void @atomic128_xor_monotonic(ptr %a) nounwind uwtable {1757entry:1758  atomicrmw xor ptr %a, i128 0 monotonic1759  ret void1760}1761; CHECK-LABEL: atomic128_xor_monotonic{{.*}}!pcsections !01762; CHECK: !pcsections !21763 1764define void @atomic128_nand_monotonic(ptr %a) nounwind uwtable {1765entry:1766  atomicrmw nand ptr %a, i128 0 monotonic1767  ret void1768}1769; CHECK-LABEL: atomic128_nand_monotonic{{.*}}!pcsections !01770; CHECK: !pcsections !21771 1772define void @atomic128_xchg_acquire(ptr %a) nounwind uwtable {1773entry:1774  atomicrmw xchg ptr %a, i128 0 acquire1775  ret void1776}1777; CHECK-LABEL: atomic128_xchg_acquire{{.*}}!pcsections !01778; CHECK: !pcsections !21779 1780define void @atomic128_add_acquire(ptr %a) nounwind uwtable {1781entry:1782  atomicrmw add ptr %a, i128 0 acquire1783  ret void1784}1785; CHECK-LABEL: atomic128_add_acquire{{.*}}!pcsections !01786; CHECK: !pcsections !21787 1788define void @atomic128_sub_acquire(ptr %a) nounwind uwtable {1789entry:1790  atomicrmw sub ptr %a, i128 0 acquire1791  ret void1792}1793; CHECK-LABEL: atomic128_sub_acquire{{.*}}!pcsections !01794; CHECK: !pcsections !21795 1796define void @atomic128_and_acquire(ptr %a) nounwind uwtable {1797entry:1798  atomicrmw and ptr %a, i128 0 acquire1799  ret void1800}1801; CHECK-LABEL: atomic128_and_acquire{{.*}}!pcsections !01802; CHECK: !pcsections !21803 1804define void @atomic128_or_acquire(ptr %a) nounwind uwtable {1805entry:1806  atomicrmw or ptr %a, i128 0 acquire1807  ret void1808}1809; CHECK-LABEL: atomic128_or_acquire{{.*}}!pcsections !01810; CHECK: !pcsections !21811 1812define void @atomic128_xor_acquire(ptr %a) nounwind uwtable {1813entry:1814  atomicrmw xor ptr %a, i128 0 acquire1815  ret void1816}1817; CHECK-LABEL: atomic128_xor_acquire{{.*}}!pcsections !01818; CHECK: !pcsections !21819 1820define void @atomic128_nand_acquire(ptr %a) nounwind uwtable {1821entry:1822  atomicrmw nand ptr %a, i128 0 acquire1823  ret void1824}1825; CHECK-LABEL: atomic128_nand_acquire{{.*}}!pcsections !01826; CHECK: !pcsections !21827 1828define void @atomic128_xchg_release(ptr %a) nounwind uwtable {1829entry:1830  atomicrmw xchg ptr %a, i128 0 release1831  ret void1832}1833; CHECK-LABEL: atomic128_xchg_release{{.*}}!pcsections !01834; CHECK: !pcsections !21835 1836define void @atomic128_add_release(ptr %a) nounwind uwtable {1837entry:1838  atomicrmw add ptr %a, i128 0 release1839  ret void1840}1841; CHECK-LABEL: atomic128_add_release{{.*}}!pcsections !01842; CHECK: !pcsections !21843 1844define void @atomic128_sub_release(ptr %a) nounwind uwtable {1845entry:1846  atomicrmw sub ptr %a, i128 0 release1847  ret void1848}1849; CHECK-LABEL: atomic128_sub_release{{.*}}!pcsections !01850; CHECK: !pcsections !21851 1852define void @atomic128_and_release(ptr %a) nounwind uwtable {1853entry:1854  atomicrmw and ptr %a, i128 0 release1855  ret void1856}1857; CHECK-LABEL: atomic128_and_release{{.*}}!pcsections !01858; CHECK: !pcsections !21859 1860define void @atomic128_or_release(ptr %a) nounwind uwtable {1861entry:1862  atomicrmw or ptr %a, i128 0 release1863  ret void1864}1865; CHECK-LABEL: atomic128_or_release{{.*}}!pcsections !01866; CHECK: !pcsections !21867 1868define void @atomic128_xor_release(ptr %a) nounwind uwtable {1869entry:1870  atomicrmw xor ptr %a, i128 0 release1871  ret void1872}1873; CHECK-LABEL: atomic128_xor_release{{.*}}!pcsections !01874; CHECK: !pcsections !21875 1876define void @atomic128_nand_release(ptr %a) nounwind uwtable {1877entry:1878  atomicrmw nand ptr %a, i128 0 release1879  ret void1880}1881; CHECK-LABEL: atomic128_nand_release{{.*}}!pcsections !01882; CHECK: !pcsections !21883 1884define void @atomic128_xchg_acq_rel(ptr %a) nounwind uwtable {1885entry:1886  atomicrmw xchg ptr %a, i128 0 acq_rel1887  ret void1888}1889; CHECK-LABEL: atomic128_xchg_acq_rel{{.*}}!pcsections !01890; CHECK: !pcsections !21891 1892define void @atomic128_add_acq_rel(ptr %a) nounwind uwtable {1893entry:1894  atomicrmw add ptr %a, i128 0 acq_rel1895  ret void1896}1897; CHECK-LABEL: atomic128_add_acq_rel{{.*}}!pcsections !01898; CHECK: !pcsections !21899 1900define void @atomic128_sub_acq_rel(ptr %a) nounwind uwtable {1901entry:1902  atomicrmw sub ptr %a, i128 0 acq_rel1903  ret void1904}1905; CHECK-LABEL: atomic128_sub_acq_rel{{.*}}!pcsections !01906; CHECK: !pcsections !21907 1908define void @atomic128_and_acq_rel(ptr %a) nounwind uwtable {1909entry:1910  atomicrmw and ptr %a, i128 0 acq_rel1911  ret void1912}1913; CHECK-LABEL: atomic128_and_acq_rel{{.*}}!pcsections !01914; CHECK: !pcsections !21915 1916define void @atomic128_or_acq_rel(ptr %a) nounwind uwtable {1917entry:1918  atomicrmw or ptr %a, i128 0 acq_rel1919  ret void1920}1921; CHECK-LABEL: atomic128_or_acq_rel{{.*}}!pcsections !01922; CHECK: !pcsections !21923 1924define void @atomic128_xor_acq_rel(ptr %a) nounwind uwtable {1925entry:1926  atomicrmw xor ptr %a, i128 0 acq_rel1927  ret void1928}1929; CHECK-LABEL: atomic128_xor_acq_rel{{.*}}!pcsections !01930; CHECK: !pcsections !21931 1932define void @atomic128_nand_acq_rel(ptr %a) nounwind uwtable {1933entry:1934  atomicrmw nand ptr %a, i128 0 acq_rel1935  ret void1936}1937; CHECK-LABEL: atomic128_nand_acq_rel{{.*}}!pcsections !01938; CHECK: !pcsections !21939 1940define void @atomic128_xchg_seq_cst(ptr %a) nounwind uwtable {1941entry:1942  atomicrmw xchg ptr %a, i128 0 seq_cst1943  ret void1944}1945; CHECK-LABEL: atomic128_xchg_seq_cst{{.*}}!pcsections !01946; CHECK: !pcsections !21947 1948define void @atomic128_add_seq_cst(ptr %a) nounwind uwtable {1949entry:1950  atomicrmw add ptr %a, i128 0 seq_cst1951  ret void1952}1953; CHECK-LABEL: atomic128_add_seq_cst{{.*}}!pcsections !01954; CHECK: !pcsections !21955 1956define void @atomic128_sub_seq_cst(ptr %a) nounwind uwtable {1957entry:1958  atomicrmw sub ptr %a, i128 0 seq_cst1959  ret void1960}1961; CHECK-LABEL: atomic128_sub_seq_cst{{.*}}!pcsections !01962; CHECK: !pcsections !21963 1964define void @atomic128_and_seq_cst(ptr %a) nounwind uwtable {1965entry:1966  atomicrmw and ptr %a, i128 0 seq_cst1967  ret void1968}1969; CHECK-LABEL: atomic128_and_seq_cst{{.*}}!pcsections !01970; CHECK: !pcsections !21971 1972define void @atomic128_or_seq_cst(ptr %a) nounwind uwtable {1973entry:1974  atomicrmw or ptr %a, i128 0 seq_cst1975  ret void1976}1977; CHECK-LABEL: atomic128_or_seq_cst{{.*}}!pcsections !01978; CHECK: !pcsections !21979 1980define void @atomic128_xor_seq_cst(ptr %a) nounwind uwtable {1981entry:1982  atomicrmw xor ptr %a, i128 0 seq_cst1983  ret void1984}1985; CHECK-LABEL: atomic128_xor_seq_cst{{.*}}!pcsections !01986; CHECK: !pcsections !21987 1988define void @atomic128_nand_seq_cst(ptr %a) nounwind uwtable {1989entry:1990  atomicrmw nand ptr %a, i128 0 seq_cst1991  ret void1992}1993; CHECK-LABEL: atomic128_nand_seq_cst{{.*}}!pcsections !01994; CHECK: !pcsections !21995 1996define void @atomic128_cas_monotonic(ptr %a) nounwind uwtable {1997entry:1998  cmpxchg ptr %a, i128 0, i128 1 monotonic monotonic1999  ret void2000}2001; CHECK-LABEL: atomic128_cas_monotonic{{.*}}!pcsections !02002; CHECK: !pcsections !22003 2004define void @atomic128_cas_acquire(ptr %a) nounwind uwtable {2005entry:2006  cmpxchg ptr %a, i128 0, i128 1 acquire acquire2007  ret void2008}2009; CHECK-LABEL: atomic128_cas_acquire{{.*}}!pcsections !02010; CHECK: !pcsections !22011 2012define void @atomic128_cas_release(ptr %a) nounwind uwtable {2013entry:2014  cmpxchg ptr %a, i128 0, i128 1 release monotonic2015  ret void2016}2017; CHECK-LABEL: atomic128_cas_release{{.*}}!pcsections !02018; CHECK: !pcsections !22019 2020define void @atomic128_cas_acq_rel(ptr %a) nounwind uwtable {2021entry:2022  cmpxchg ptr %a, i128 0, i128 1 acq_rel acquire2023  ret void2024}2025; CHECK-LABEL: atomic128_cas_acq_rel{{.*}}!pcsections !02026; CHECK: !pcsections !22027 2028define void @atomic128_cas_seq_cst(ptr %a) nounwind uwtable {2029entry:2030  cmpxchg ptr %a, i128 0, i128 1 seq_cst seq_cst2031  ret void2032}2033; CHECK-LABEL: atomic128_cas_seq_cst{{.*}}!pcsections !02034; CHECK: !pcsections !22035 2036; Check that callbacks are emitted.2037 2038; CHECK-LABEL: __sanitizer_metadata_atomics2.module_ctor2039; CHECK-DAG: entry:2040; CHECK-NEXT:  [[CMP:%.*]] = icmp ne ptr @__sanitizer_metadata_atomics_add, null2041; CHECK-NEXT:  br i1 [[CMP]], label %callfunc, label %ret2042; CHECK-DAG: callfunc:2043; CHECK-NEXT:  call void @__sanitizer_metadata_atomics_add(i32 2, ptr @__start_sanmd_atomics2, ptr @__stop_sanmd_atomics2)2044; CHECK-NEXT:  br label %ret2045; CHECK-DAG: ret:2046; CHECK-NEXT:  ret void2047 2048; CHECK-LABEL: __sanitizer_metadata_atomics2.module_dtor2049; CHECK-DAG: entry:2050; CHECK-NEXT:  [[CMP:%.*]] = icmp ne ptr @__sanitizer_metadata_atomics_del, null2051; CHECK-NEXT:  br i1 [[CMP]], label %callfunc, label %ret2052; CHECK-DAG: callfunc:2053; CHECK-NEXT:  call void @__sanitizer_metadata_atomics_del(i32 2, ptr @__start_sanmd_atomics2, ptr @__stop_sanmd_atomics2)2054; CHECK-NEXT:  br label %ret2055; CHECK-DAG: ret:2056; CHECK-NEXT:  ret void2057 2058; CHECK-LABEL: __sanitizer_metadata_covered2.module_ctor2059; CHECK-DAG: entry:2060; CHECK-NEXT:  [[CMP:%.*]] = icmp ne ptr @__sanitizer_metadata_covered_add, null2061; CHECK-NEXT:  br i1 [[CMP]], label %callfunc, label %ret2062; CHECK-DAG: callfunc:2063; CHECK-NEXT:  call void @__sanitizer_metadata_covered_add(i32 2, ptr @__start_sanmd_covered2, ptr @__stop_sanmd_covered2)2064; CHECK-NEXT:  br label %ret2065; CHECK-DAG: ret:2066; CHECK-NEXT:  ret void2067 2068; CHECK-LABEL: __sanitizer_metadata_covered2.module_dtor2069; CHECK-DAG: entry:2070; CHECK-NEXT:  [[CMP:%.*]] = icmp ne ptr @__sanitizer_metadata_covered_del, null2071; CHECK-NEXT:  br i1 [[CMP]], label %callfunc, label %ret2072; CHECK-DAG: callfunc:2073; CHECK-NEXT:  call void @__sanitizer_metadata_covered_del(i32 2, ptr @__start_sanmd_covered2, ptr @__stop_sanmd_covered2)2074; CHECK-NEXT:  br label %ret2075; CHECK-DAG: ret:2076; CHECK-NEXT:  ret void2077 2078; CHECK: !0 = !{!"sanmd_covered2!C", !1}2079; CHECK: !1 = !{i64 1}2080; CHECK: !2 = !{!"sanmd_atomics2!C"}2081