brintos

brintos / llvm-project-archived public Read only

0
0
Text · 19.9 KiB · c00a1fa Raw
655 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc %s -o - -mtriple=m68k -mcpu=M68000 | FileCheck %s --check-prefix=NO-ATOMIC3; RUN: llc %s -o - -mtriple=m68k -mcpu=M68010 | FileCheck %s --check-prefix=NO-ATOMIC4; RUN: llc %s -o - -mtriple=m68k -mcpu=M68020 | FileCheck %s --check-prefix=ATOMIC5; RUN: llc %s -o - -mtriple=m68k -mcpu=M68030 | FileCheck %s --check-prefix=ATOMIC6; RUN: llc %s -o - -mtriple=m68k -mcpu=M68040 | FileCheck %s --check-prefix=ATOMIC7 8define i8 @atomic_load_i8_unordered(ptr %a) nounwind {9; NO-ATOMIC-LABEL: atomic_load_i8_unordered:10; NO-ATOMIC:       ; %bb.0:11; NO-ATOMIC-NEXT:    move.l (4,%sp), %a012; NO-ATOMIC-NEXT:    move.b (%a0), %d013; NO-ATOMIC-NEXT:    rts14;15; ATOMIC-LABEL: atomic_load_i8_unordered:16; ATOMIC:       ; %bb.0:17; ATOMIC-NEXT:    move.l (4,%sp), %a018; ATOMIC-NEXT:    move.b (%a0), %d019; ATOMIC-NEXT:    rts20  %1 = load atomic i8, ptr %a unordered, align 121  ret i8 %122}23 24define i8 @atomic_load_i8_monotonic(ptr %a) nounwind {25; NO-ATOMIC-LABEL: atomic_load_i8_monotonic:26; NO-ATOMIC:       ; %bb.0:27; NO-ATOMIC-NEXT:    move.l (4,%sp), %a028; NO-ATOMIC-NEXT:    move.b (%a0), %d029; NO-ATOMIC-NEXT:    rts30;31; ATOMIC-LABEL: atomic_load_i8_monotonic:32; ATOMIC:       ; %bb.0:33; ATOMIC-NEXT:    move.l (4,%sp), %a034; ATOMIC-NEXT:    move.b (%a0), %d035; ATOMIC-NEXT:    rts36  %1 = load atomic i8, ptr %a monotonic, align 137  ret i8 %138}39 40define i8 @atomic_load_i8_acquire(ptr %a) nounwind {41; NO-ATOMIC-LABEL: atomic_load_i8_acquire:42; NO-ATOMIC:       ; %bb.0:43; NO-ATOMIC-NEXT:    move.l (4,%sp), %a044; NO-ATOMIC-NEXT:    move.b (%a0), %d045; NO-ATOMIC-NEXT:    rts46;47; ATOMIC-LABEL: atomic_load_i8_acquire:48; ATOMIC:       ; %bb.0:49; ATOMIC-NEXT:    move.l (4,%sp), %a050; ATOMIC-NEXT:    move.b (%a0), %d051; ATOMIC-NEXT:    rts52  %1 = load atomic i8, ptr %a acquire, align 153  ret i8 %154}55 56define i8 @atomic_load_i8_seq_cst(ptr %a) nounwind {57; NO-ATOMIC-LABEL: atomic_load_i8_seq_cst:58; NO-ATOMIC:       ; %bb.0:59; NO-ATOMIC-NEXT:    move.l (4,%sp), %a060; NO-ATOMIC-NEXT:    move.b (%a0), %d061; NO-ATOMIC-NEXT:    rts62;63; ATOMIC-LABEL: atomic_load_i8_seq_cst:64; ATOMIC:       ; %bb.0:65; ATOMIC-NEXT:    move.l (4,%sp), %a066; ATOMIC-NEXT:    move.b (%a0), %d067; ATOMIC-NEXT:    rts68  %1 = load atomic i8, ptr %a seq_cst, align 169  ret i8 %170}71 72define i16 @atomic_load_i16_unordered(ptr %a) nounwind {73; NO-ATOMIC-LABEL: atomic_load_i16_unordered:74; NO-ATOMIC:       ; %bb.0:75; NO-ATOMIC-NEXT:    move.l (4,%sp), %a076; NO-ATOMIC-NEXT:    move.w (%a0), %d077; NO-ATOMIC-NEXT:    rts78;79; ATOMIC-LABEL: atomic_load_i16_unordered:80; ATOMIC:       ; %bb.0:81; ATOMIC-NEXT:    move.l (4,%sp), %a082; ATOMIC-NEXT:    move.w (%a0), %d083; ATOMIC-NEXT:    rts84  %1 = load atomic i16, ptr %a unordered, align 285  ret i16 %186}87 88define i16 @atomic_load_i16_monotonic(ptr %a) nounwind {89; NO-ATOMIC-LABEL: atomic_load_i16_monotonic:90; NO-ATOMIC:       ; %bb.0:91; NO-ATOMIC-NEXT:    move.l (4,%sp), %a092; NO-ATOMIC-NEXT:    move.w (%a0), %d093; NO-ATOMIC-NEXT:    rts94;95; ATOMIC-LABEL: atomic_load_i16_monotonic:96; ATOMIC:       ; %bb.0:97; ATOMIC-NEXT:    move.l (4,%sp), %a098; ATOMIC-NEXT:    move.w (%a0), %d099; ATOMIC-NEXT:    rts100  %1 = load atomic i16, ptr %a monotonic, align 2101  ret i16 %1102}103 104define i16 @atomic_load_i16_acquire(ptr %a) nounwind {105; NO-ATOMIC-LABEL: atomic_load_i16_acquire:106; NO-ATOMIC:       ; %bb.0:107; NO-ATOMIC-NEXT:    move.l (4,%sp), %a0108; NO-ATOMIC-NEXT:    move.w (%a0), %d0109; NO-ATOMIC-NEXT:    rts110;111; ATOMIC-LABEL: atomic_load_i16_acquire:112; ATOMIC:       ; %bb.0:113; ATOMIC-NEXT:    move.l (4,%sp), %a0114; ATOMIC-NEXT:    move.w (%a0), %d0115; ATOMIC-NEXT:    rts116  %1 = load atomic i16, ptr %a acquire, align 2117  ret i16 %1118}119 120define i16 @atomic_load_i16_seq_cst(ptr %a) nounwind {121; NO-ATOMIC-LABEL: atomic_load_i16_seq_cst:122; NO-ATOMIC:       ; %bb.0:123; NO-ATOMIC-NEXT:    move.l (4,%sp), %a0124; NO-ATOMIC-NEXT:    move.w (%a0), %d0125; NO-ATOMIC-NEXT:    rts126;127; ATOMIC-LABEL: atomic_load_i16_seq_cst:128; ATOMIC:       ; %bb.0:129; ATOMIC-NEXT:    move.l (4,%sp), %a0130; ATOMIC-NEXT:    move.w (%a0), %d0131; ATOMIC-NEXT:    rts132  %1 = load atomic i16, ptr %a seq_cst, align 2133  ret i16 %1134}135 136define i32 @atomic_load_i32_unordered(ptr %a) nounwind {137; NO-ATOMIC-LABEL: atomic_load_i32_unordered:138; NO-ATOMIC:       ; %bb.0:139; NO-ATOMIC-NEXT:    move.l (4,%sp), %a0140; NO-ATOMIC-NEXT:    move.l (%a0), %d0141; NO-ATOMIC-NEXT:    rts142;143; ATOMIC-LABEL: atomic_load_i32_unordered:144; ATOMIC:       ; %bb.0:145; ATOMIC-NEXT:    move.l (4,%sp), %a0146; ATOMIC-NEXT:    move.l (%a0), %d0147; ATOMIC-NEXT:    rts148  %1 = load atomic i32, ptr %a unordered, align 4149  ret i32 %1150}151 152define i32 @atomic_load_i32_monotonic(ptr %a) nounwind {153; NO-ATOMIC-LABEL: atomic_load_i32_monotonic:154; NO-ATOMIC:       ; %bb.0:155; NO-ATOMIC-NEXT:    move.l (4,%sp), %a0156; NO-ATOMIC-NEXT:    move.l (%a0), %d0157; NO-ATOMIC-NEXT:    rts158;159; ATOMIC-LABEL: atomic_load_i32_monotonic:160; ATOMIC:       ; %bb.0:161; ATOMIC-NEXT:    move.l (4,%sp), %a0162; ATOMIC-NEXT:    move.l (%a0), %d0163; ATOMIC-NEXT:    rts164  %1 = load atomic i32, ptr %a monotonic, align 4165  ret i32 %1166}167 168define i32 @atomic_load_i32_acquire(ptr %a) nounwind {169; NO-ATOMIC-LABEL: atomic_load_i32_acquire:170; NO-ATOMIC:       ; %bb.0:171; NO-ATOMIC-NEXT:    move.l (4,%sp), %a0172; NO-ATOMIC-NEXT:    move.l (%a0), %d0173; NO-ATOMIC-NEXT:    rts174;175; ATOMIC-LABEL: atomic_load_i32_acquire:176; ATOMIC:       ; %bb.0:177; ATOMIC-NEXT:    move.l (4,%sp), %a0178; ATOMIC-NEXT:    move.l (%a0), %d0179; ATOMIC-NEXT:    rts180  %1 = load atomic i32, ptr %a acquire, align 4181  ret i32 %1182}183 184define i32 @atomic_load_i32_seq_cst(ptr %a) nounwind {185; NO-ATOMIC-LABEL: atomic_load_i32_seq_cst:186; NO-ATOMIC:       ; %bb.0:187; NO-ATOMIC-NEXT:    move.l (4,%sp), %a0188; NO-ATOMIC-NEXT:    move.l (%a0), %d0189; NO-ATOMIC-NEXT:    rts190;191; ATOMIC-LABEL: atomic_load_i32_seq_cst:192; ATOMIC:       ; %bb.0:193; ATOMIC-NEXT:    move.l (4,%sp), %a0194; ATOMIC-NEXT:    move.l (%a0), %d0195; ATOMIC-NEXT:    rts196  %1 = load atomic i32, ptr %a seq_cst, align 4197  ret i32 %1198}199 200define i64 @atomic_load_i64_unordered(ptr %a) nounwind {201; NO-ATOMIC-LABEL: atomic_load_i64_unordered:202; NO-ATOMIC:       ; %bb.0:203; NO-ATOMIC-NEXT:    suba.l #12, %sp204; NO-ATOMIC-NEXT:    move.l #0, (4,%sp)205; NO-ATOMIC-NEXT:    move.l (16,%sp), (%sp)206; NO-ATOMIC-NEXT:    jsr __atomic_load_8207; NO-ATOMIC-NEXT:    adda.l #12, %sp208; NO-ATOMIC-NEXT:    rts209;210; ATOMIC-LABEL: atomic_load_i64_unordered:211; ATOMIC:       ; %bb.0:212; ATOMIC-NEXT:    suba.l #12, %sp213; ATOMIC-NEXT:    move.l #0, (4,%sp)214; ATOMIC-NEXT:    move.l (16,%sp), (%sp)215; ATOMIC-NEXT:    jsr __atomic_load_8216; ATOMIC-NEXT:    adda.l #12, %sp217; ATOMIC-NEXT:    rts218  %1 = load atomic i64, ptr %a unordered, align 8219  ret i64 %1220}221 222define i64 @atomic_load_i64_monotonic(ptr %a) nounwind {223; NO-ATOMIC-LABEL: atomic_load_i64_monotonic:224; NO-ATOMIC:       ; %bb.0:225; NO-ATOMIC-NEXT:    suba.l #12, %sp226; NO-ATOMIC-NEXT:    move.l #0, (4,%sp)227; NO-ATOMIC-NEXT:    move.l (16,%sp), (%sp)228; NO-ATOMIC-NEXT:    jsr __atomic_load_8229; NO-ATOMIC-NEXT:    adda.l #12, %sp230; NO-ATOMIC-NEXT:    rts231;232; ATOMIC-LABEL: atomic_load_i64_monotonic:233; ATOMIC:       ; %bb.0:234; ATOMIC-NEXT:    suba.l #12, %sp235; ATOMIC-NEXT:    move.l #0, (4,%sp)236; ATOMIC-NEXT:    move.l (16,%sp), (%sp)237; ATOMIC-NEXT:    jsr __atomic_load_8238; ATOMIC-NEXT:    adda.l #12, %sp239; ATOMIC-NEXT:    rts240  %1 = load atomic i64, ptr %a monotonic, align 8241  ret i64 %1242}243 244define i64 @atomic_load_i64_acquire(ptr %a) nounwind {245; NO-ATOMIC-LABEL: atomic_load_i64_acquire:246; NO-ATOMIC:       ; %bb.0:247; NO-ATOMIC-NEXT:    suba.l #12, %sp248; NO-ATOMIC-NEXT:    move.l #2, (4,%sp)249; NO-ATOMIC-NEXT:    move.l (16,%sp), (%sp)250; NO-ATOMIC-NEXT:    jsr __atomic_load_8251; NO-ATOMIC-NEXT:    adda.l #12, %sp252; NO-ATOMIC-NEXT:    rts253;254; ATOMIC-LABEL: atomic_load_i64_acquire:255; ATOMIC:       ; %bb.0:256; ATOMIC-NEXT:    suba.l #12, %sp257; ATOMIC-NEXT:    move.l #2, (4,%sp)258; ATOMIC-NEXT:    move.l (16,%sp), (%sp)259; ATOMIC-NEXT:    jsr __atomic_load_8260; ATOMIC-NEXT:    adda.l #12, %sp261; ATOMIC-NEXT:    rts262  %1 = load atomic i64, ptr %a acquire, align 8263  ret i64 %1264}265 266define i64 @atomic_load_i64_seq_cst(ptr %a) nounwind {267; NO-ATOMIC-LABEL: atomic_load_i64_seq_cst:268; NO-ATOMIC:       ; %bb.0:269; NO-ATOMIC-NEXT:    suba.l #12, %sp270; NO-ATOMIC-NEXT:    move.l #5, (4,%sp)271; NO-ATOMIC-NEXT:    move.l (16,%sp), (%sp)272; NO-ATOMIC-NEXT:    jsr __atomic_load_8273; NO-ATOMIC-NEXT:    adda.l #12, %sp274; NO-ATOMIC-NEXT:    rts275;276; ATOMIC-LABEL: atomic_load_i64_seq_cst:277; ATOMIC:       ; %bb.0:278; ATOMIC-NEXT:    suba.l #12, %sp279; ATOMIC-NEXT:    move.l #5, (4,%sp)280; ATOMIC-NEXT:    move.l (16,%sp), (%sp)281; ATOMIC-NEXT:    jsr __atomic_load_8282; ATOMIC-NEXT:    adda.l #12, %sp283; ATOMIC-NEXT:    rts284  %1 = load atomic i64, ptr %a seq_cst, align 8285  ret i64 %1286}287 288define void @atomic_store_i8_unordered(ptr %a, i8 %val) nounwind {289; NO-ATOMIC-LABEL: atomic_store_i8_unordered:290; NO-ATOMIC:       ; %bb.0:291; NO-ATOMIC-NEXT:    move.b (11,%sp), %d0292; NO-ATOMIC-NEXT:    move.l (4,%sp), %a0293; NO-ATOMIC-NEXT:    move.b %d0, (%a0)294; NO-ATOMIC-NEXT:    rts295;296; ATOMIC-LABEL: atomic_store_i8_unordered:297; ATOMIC:       ; %bb.0:298; ATOMIC-NEXT:    move.b (11,%sp), %d0299; ATOMIC-NEXT:    move.l (4,%sp), %a0300; ATOMIC-NEXT:    move.b %d0, (%a0)301; ATOMIC-NEXT:    rts302  store atomic i8 %val, ptr %a unordered, align 1303  ret void304}305 306define void @atomic_store_i8_monotonic(ptr %a, i8 %val) nounwind {307; NO-ATOMIC-LABEL: atomic_store_i8_monotonic:308; NO-ATOMIC:       ; %bb.0:309; NO-ATOMIC-NEXT:    move.b (11,%sp), %d0310; NO-ATOMIC-NEXT:    move.l (4,%sp), %a0311; NO-ATOMIC-NEXT:    move.b %d0, (%a0)312; NO-ATOMIC-NEXT:    rts313;314; ATOMIC-LABEL: atomic_store_i8_monotonic:315; ATOMIC:       ; %bb.0:316; ATOMIC-NEXT:    move.b (11,%sp), %d0317; ATOMIC-NEXT:    move.l (4,%sp), %a0318; ATOMIC-NEXT:    move.b %d0, (%a0)319; ATOMIC-NEXT:    rts320  store atomic i8 %val, ptr %a monotonic, align 1321  ret void322}323 324define void @atomic_store_i8_release(ptr %a, i8 %val) nounwind {325; NO-ATOMIC-LABEL: atomic_store_i8_release:326; NO-ATOMIC:       ; %bb.0:327; NO-ATOMIC-NEXT:    move.b (11,%sp), %d0328; NO-ATOMIC-NEXT:    move.l (4,%sp), %a0329; NO-ATOMIC-NEXT:    move.b %d0, (%a0)330; NO-ATOMIC-NEXT:    rts331;332; ATOMIC-LABEL: atomic_store_i8_release:333; ATOMIC:       ; %bb.0:334; ATOMIC-NEXT:    move.b (11,%sp), %d0335; ATOMIC-NEXT:    move.l (4,%sp), %a0336; ATOMIC-NEXT:    move.b %d0, (%a0)337; ATOMIC-NEXT:    rts338  store atomic i8 %val, ptr %a release, align 1339  ret void340}341 342define void @atomic_store_i8_seq_cst(ptr %a, i8 %val) nounwind {343; NO-ATOMIC-LABEL: atomic_store_i8_seq_cst:344; NO-ATOMIC:       ; %bb.0:345; NO-ATOMIC-NEXT:    move.b (11,%sp), %d0346; NO-ATOMIC-NEXT:    move.l (4,%sp), %a0347; NO-ATOMIC-NEXT:    move.b %d0, (%a0)348; NO-ATOMIC-NEXT:    rts349;350; ATOMIC-LABEL: atomic_store_i8_seq_cst:351; ATOMIC:       ; %bb.0:352; ATOMIC-NEXT:    move.b (11,%sp), %d0353; ATOMIC-NEXT:    move.l (4,%sp), %a0354; ATOMIC-NEXT:    move.b %d0, (%a0)355; ATOMIC-NEXT:    rts356  store atomic i8 %val, ptr %a seq_cst, align 1357  ret void358}359 360define void @atomic_store_i16_unordered(ptr %a, i16 %val) nounwind {361; NO-ATOMIC-LABEL: atomic_store_i16_unordered:362; NO-ATOMIC:       ; %bb.0:363; NO-ATOMIC-NEXT:    move.w (10,%sp), %d0364; NO-ATOMIC-NEXT:    move.l (4,%sp), %a0365; NO-ATOMIC-NEXT:    move.w %d0, (%a0)366; NO-ATOMIC-NEXT:    rts367;368; ATOMIC-LABEL: atomic_store_i16_unordered:369; ATOMIC:       ; %bb.0:370; ATOMIC-NEXT:    move.w (10,%sp), %d0371; ATOMIC-NEXT:    move.l (4,%sp), %a0372; ATOMIC-NEXT:    move.w %d0, (%a0)373; ATOMIC-NEXT:    rts374  store atomic i16 %val, ptr %a unordered, align 2375  ret void376}377 378define void @atomic_store_i16_monotonic(ptr %a, i16 %val) nounwind {379; NO-ATOMIC-LABEL: atomic_store_i16_monotonic:380; NO-ATOMIC:       ; %bb.0:381; NO-ATOMIC-NEXT:    move.w (10,%sp), %d0382; NO-ATOMIC-NEXT:    move.l (4,%sp), %a0383; NO-ATOMIC-NEXT:    move.w %d0, (%a0)384; NO-ATOMIC-NEXT:    rts385;386; ATOMIC-LABEL: atomic_store_i16_monotonic:387; ATOMIC:       ; %bb.0:388; ATOMIC-NEXT:    move.w (10,%sp), %d0389; ATOMIC-NEXT:    move.l (4,%sp), %a0390; ATOMIC-NEXT:    move.w %d0, (%a0)391; ATOMIC-NEXT:    rts392  store atomic i16 %val, ptr %a monotonic, align 2393  ret void394}395 396define void @atomic_store_i16_release(ptr %a, i16 %val) nounwind {397; NO-ATOMIC-LABEL: atomic_store_i16_release:398; NO-ATOMIC:       ; %bb.0:399; NO-ATOMIC-NEXT:    move.w (10,%sp), %d0400; NO-ATOMIC-NEXT:    move.l (4,%sp), %a0401; NO-ATOMIC-NEXT:    move.w %d0, (%a0)402; NO-ATOMIC-NEXT:    rts403;404; ATOMIC-LABEL: atomic_store_i16_release:405; ATOMIC:       ; %bb.0:406; ATOMIC-NEXT:    move.w (10,%sp), %d0407; ATOMIC-NEXT:    move.l (4,%sp), %a0408; ATOMIC-NEXT:    move.w %d0, (%a0)409; ATOMIC-NEXT:    rts410  store atomic i16 %val, ptr %a release, align 2411  ret void412}413 414define void @atomic_store_i16_seq_cst(ptr %a, i16 %val) nounwind {415; NO-ATOMIC-LABEL: atomic_store_i16_seq_cst:416; NO-ATOMIC:       ; %bb.0:417; NO-ATOMIC-NEXT:    move.w (10,%sp), %d0418; NO-ATOMIC-NEXT:    move.l (4,%sp), %a0419; NO-ATOMIC-NEXT:    move.w %d0, (%a0)420; NO-ATOMIC-NEXT:    rts421;422; ATOMIC-LABEL: atomic_store_i16_seq_cst:423; ATOMIC:       ; %bb.0:424; ATOMIC-NEXT:    move.w (10,%sp), %d0425; ATOMIC-NEXT:    move.l (4,%sp), %a0426; ATOMIC-NEXT:    move.w %d0, (%a0)427; ATOMIC-NEXT:    rts428  store atomic i16 %val, ptr %a seq_cst, align 2429  ret void430}431 432define void @atomic_store_i32_unordered(ptr %a, i32 %val) nounwind {433; NO-ATOMIC-LABEL: atomic_store_i32_unordered:434; NO-ATOMIC:       ; %bb.0:435; NO-ATOMIC-NEXT:    move.l (8,%sp), %d0436; NO-ATOMIC-NEXT:    move.l (4,%sp), %a0437; NO-ATOMIC-NEXT:    move.l %d0, (%a0)438; NO-ATOMIC-NEXT:    rts439;440; ATOMIC-LABEL: atomic_store_i32_unordered:441; ATOMIC:       ; %bb.0:442; ATOMIC-NEXT:    move.l (8,%sp), %d0443; ATOMIC-NEXT:    move.l (4,%sp), %a0444; ATOMIC-NEXT:    move.l %d0, (%a0)445; ATOMIC-NEXT:    rts446  store atomic i32 %val, ptr %a unordered, align 4447  ret void448}449 450define void @atomic_store_i32_monotonic(ptr %a, i32 %val) nounwind {451; NO-ATOMIC-LABEL: atomic_store_i32_monotonic:452; NO-ATOMIC:       ; %bb.0:453; NO-ATOMIC-NEXT:    move.l (8,%sp), %d0454; NO-ATOMIC-NEXT:    move.l (4,%sp), %a0455; NO-ATOMIC-NEXT:    move.l %d0, (%a0)456; NO-ATOMIC-NEXT:    rts457;458; ATOMIC-LABEL: atomic_store_i32_monotonic:459; ATOMIC:       ; %bb.0:460; ATOMIC-NEXT:    move.l (8,%sp), %d0461; ATOMIC-NEXT:    move.l (4,%sp), %a0462; ATOMIC-NEXT:    move.l %d0, (%a0)463; ATOMIC-NEXT:    rts464  store atomic i32 %val, ptr %a monotonic, align 4465  ret void466}467 468define void @atomic_store_i32_release(ptr %a, i32 %val) nounwind {469; NO-ATOMIC-LABEL: atomic_store_i32_release:470; NO-ATOMIC:       ; %bb.0:471; NO-ATOMIC-NEXT:    move.l (8,%sp), %d0472; NO-ATOMIC-NEXT:    move.l (4,%sp), %a0473; NO-ATOMIC-NEXT:    move.l %d0, (%a0)474; NO-ATOMIC-NEXT:    rts475;476; ATOMIC-LABEL: atomic_store_i32_release:477; ATOMIC:       ; %bb.0:478; ATOMIC-NEXT:    move.l (8,%sp), %d0479; ATOMIC-NEXT:    move.l (4,%sp), %a0480; ATOMIC-NEXT:    move.l %d0, (%a0)481; ATOMIC-NEXT:    rts482  store atomic i32 %val, ptr %a release, align 4483  ret void484}485 486define void @atomic_store_i32_seq_cst(ptr %a, i32 %val) nounwind {487; NO-ATOMIC-LABEL: atomic_store_i32_seq_cst:488; NO-ATOMIC:       ; %bb.0:489; NO-ATOMIC-NEXT:    move.l (8,%sp), %d0490; NO-ATOMIC-NEXT:    move.l (4,%sp), %a0491; NO-ATOMIC-NEXT:    move.l %d0, (%a0)492; NO-ATOMIC-NEXT:    rts493;494; ATOMIC-LABEL: atomic_store_i32_seq_cst:495; ATOMIC:       ; %bb.0:496; ATOMIC-NEXT:    move.l (8,%sp), %d0497; ATOMIC-NEXT:    move.l (4,%sp), %a0498; ATOMIC-NEXT:    move.l %d0, (%a0)499; ATOMIC-NEXT:    rts500  store atomic i32 %val, ptr %a seq_cst, align 4501  ret void502}503 504define void @atomic_store_i64_unordered(ptr %a, i64 %val) nounwind {505; NO-ATOMIC-LABEL: atomic_store_i64_unordered:506; NO-ATOMIC:       ; %bb.0:507; NO-ATOMIC-NEXT:    suba.l #20, %sp508; NO-ATOMIC-NEXT:    move.l #0, (12,%sp)509; NO-ATOMIC-NEXT:    move.l (32,%sp), (8,%sp)510; NO-ATOMIC-NEXT:    move.l (28,%sp), (4,%sp)511; NO-ATOMIC-NEXT:    move.l (24,%sp), (%sp)512; NO-ATOMIC-NEXT:    jsr __atomic_store_8513; NO-ATOMIC-NEXT:    adda.l #20, %sp514; NO-ATOMIC-NEXT:    rts515;516; ATOMIC-LABEL: atomic_store_i64_unordered:517; ATOMIC:       ; %bb.0:518; ATOMIC-NEXT:    suba.l #20, %sp519; ATOMIC-NEXT:    move.l #0, (12,%sp)520; ATOMIC-NEXT:    move.l (32,%sp), (8,%sp)521; ATOMIC-NEXT:    move.l (28,%sp), (4,%sp)522; ATOMIC-NEXT:    move.l (24,%sp), (%sp)523; ATOMIC-NEXT:    jsr __atomic_store_8524; ATOMIC-NEXT:    adda.l #20, %sp525; ATOMIC-NEXT:    rts526  store atomic i64 %val, ptr %a unordered, align 8527  ret void528}529 530define void @atomic_store_i64_monotonic(ptr %a, i64 %val) nounwind {531; NO-ATOMIC-LABEL: atomic_store_i64_monotonic:532; NO-ATOMIC:       ; %bb.0:533; NO-ATOMIC-NEXT:    suba.l #20, %sp534; NO-ATOMIC-NEXT:    move.l #0, (12,%sp)535; NO-ATOMIC-NEXT:    move.l (32,%sp), (8,%sp)536; NO-ATOMIC-NEXT:    move.l (28,%sp), (4,%sp)537; NO-ATOMIC-NEXT:    move.l (24,%sp), (%sp)538; NO-ATOMIC-NEXT:    jsr __atomic_store_8539; NO-ATOMIC-NEXT:    adda.l #20, %sp540; NO-ATOMIC-NEXT:    rts541;542; ATOMIC-LABEL: atomic_store_i64_monotonic:543; ATOMIC:       ; %bb.0:544; ATOMIC-NEXT:    suba.l #20, %sp545; ATOMIC-NEXT:    move.l #0, (12,%sp)546; ATOMIC-NEXT:    move.l (32,%sp), (8,%sp)547; ATOMIC-NEXT:    move.l (28,%sp), (4,%sp)548; ATOMIC-NEXT:    move.l (24,%sp), (%sp)549; ATOMIC-NEXT:    jsr __atomic_store_8550; ATOMIC-NEXT:    adda.l #20, %sp551; ATOMIC-NEXT:    rts552  store atomic i64 %val, ptr %a monotonic, align 8553  ret void554}555 556define void @atomic_store_i64_release(ptr %a, i64 %val) nounwind {557; NO-ATOMIC-LABEL: atomic_store_i64_release:558; NO-ATOMIC:       ; %bb.0:559; NO-ATOMIC-NEXT:    suba.l #20, %sp560; NO-ATOMIC-NEXT:    move.l #3, (12,%sp)561; NO-ATOMIC-NEXT:    move.l (32,%sp), (8,%sp)562; NO-ATOMIC-NEXT:    move.l (28,%sp), (4,%sp)563; NO-ATOMIC-NEXT:    move.l (24,%sp), (%sp)564; NO-ATOMIC-NEXT:    jsr __atomic_store_8565; NO-ATOMIC-NEXT:    adda.l #20, %sp566; NO-ATOMIC-NEXT:    rts567;568; ATOMIC-LABEL: atomic_store_i64_release:569; ATOMIC:       ; %bb.0:570; ATOMIC-NEXT:    suba.l #20, %sp571; ATOMIC-NEXT:    move.l #3, (12,%sp)572; ATOMIC-NEXT:    move.l (32,%sp), (8,%sp)573; ATOMIC-NEXT:    move.l (28,%sp), (4,%sp)574; ATOMIC-NEXT:    move.l (24,%sp), (%sp)575; ATOMIC-NEXT:    jsr __atomic_store_8576; ATOMIC-NEXT:    adda.l #20, %sp577; ATOMIC-NEXT:    rts578  store atomic i64 %val, ptr %a release, align 8579  ret void580}581 582define void @atomic_store_i64_seq_cst(ptr %a, i64 %val) nounwind {583; NO-ATOMIC-LABEL: atomic_store_i64_seq_cst:584; NO-ATOMIC:       ; %bb.0:585; NO-ATOMIC-NEXT:    suba.l #20, %sp586; NO-ATOMIC-NEXT:    move.l #5, (12,%sp)587; NO-ATOMIC-NEXT:    move.l (32,%sp), (8,%sp)588; NO-ATOMIC-NEXT:    move.l (28,%sp), (4,%sp)589; NO-ATOMIC-NEXT:    move.l (24,%sp), (%sp)590; NO-ATOMIC-NEXT:    jsr __atomic_store_8591; NO-ATOMIC-NEXT:    adda.l #20, %sp592; NO-ATOMIC-NEXT:    rts593;594; ATOMIC-LABEL: atomic_store_i64_seq_cst:595; ATOMIC:       ; %bb.0:596; ATOMIC-NEXT:    suba.l #20, %sp597; ATOMIC-NEXT:    move.l #5, (12,%sp)598; ATOMIC-NEXT:    move.l (32,%sp), (8,%sp)599; ATOMIC-NEXT:    move.l (28,%sp), (4,%sp)600; ATOMIC-NEXT:    move.l (24,%sp), (%sp)601; ATOMIC-NEXT:    jsr __atomic_store_8602; ATOMIC-NEXT:    adda.l #20, %sp603; ATOMIC-NEXT:    rts604  store atomic i64 %val, ptr %a seq_cst, align 8605  ret void606}607 608define void @store_arid(ptr nonnull align 4 %a) {609; NO-ATOMIC-LABEL: store_arid:610; NO-ATOMIC:         .cfi_startproc611; NO-ATOMIC-NEXT:  ; %bb.0: ; %start612; NO-ATOMIC-NEXT:    moveq #1, %d0613; NO-ATOMIC-NEXT:    move.l (4,%sp), %a0614; NO-ATOMIC-NEXT:    move.l %d0, (32,%a0)615; NO-ATOMIC-NEXT:    rts616;617; ATOMIC-LABEL: store_arid:618; ATOMIC:         .cfi_startproc619; ATOMIC-NEXT:  ; %bb.0: ; %start620; ATOMIC-NEXT:    moveq #1, %d0621; ATOMIC-NEXT:    move.l (4,%sp), %a0622; ATOMIC-NEXT:    move.l %d0, (32,%a0)623; ATOMIC-NEXT:    rts624start:625  %1 = getelementptr inbounds i32, ptr %a, i32 8626  store atomic i32 1, ptr %1 seq_cst, align 4627  br label %exit628 629exit:                                              ; preds = %start630  ret void631}632 633define i32 @load_arid(ptr nonnull align 4 %a) {634; NO-ATOMIC-LABEL: load_arid:635; NO-ATOMIC:         .cfi_startproc636; NO-ATOMIC-NEXT:  ; %bb.0: ; %start637; NO-ATOMIC-NEXT:    move.l (4,%sp), %a0638; NO-ATOMIC-NEXT:    move.l (32,%a0), %d0639; NO-ATOMIC-NEXT:    rts640;641; ATOMIC-LABEL: load_arid:642; ATOMIC:         .cfi_startproc643; ATOMIC-NEXT:  ; %bb.0: ; %start644; ATOMIC-NEXT:    move.l (4,%sp), %a0645; ATOMIC-NEXT:    move.l (32,%a0), %d0646; ATOMIC-NEXT:    rts647start:648  %1 = getelementptr inbounds i32, ptr %a, i32 8649  %2 = load atomic i32, ptr %1 seq_cst, align 4650  br label %exit651 652exit:                                              ; preds = %start653  ret i32 %2654}655