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