1162 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc %s -o - -mtriple=m68k -mcpu=M68000 --code-model=large | FileCheck %s --check-prefix=NO-ATOMIC3; RUN: llc %s -o - -mtriple=m68k -mcpu=M68010 --code-model=large | FileCheck %s --check-prefix=NO-ATOMIC4; RUN: llc %s -o - -mtriple=m68k -mcpu=M68000 --code-model=large --relocation-model=pic | FileCheck %s --check-prefix=NO-ATOMIC-PIC5; RUN: llc %s -o - -mtriple=m68k -mcpu=M68010 --code-model=large --relocation-model=pic | FileCheck %s --check-prefix=NO-ATOMIC-PIC6; RUN: llc %s -o - -mtriple=m68k -mcpu=M68020 --code-model=large | FileCheck %s --check-prefix=ATOMIC7; RUN: llc %s -o - -mtriple=m68k -mcpu=M68030 --code-model=large | FileCheck %s --check-prefix=ATOMIC8; RUN: llc %s -o - -mtriple=m68k -mcpu=M68040 --code-model=large | FileCheck %s --check-prefix=ATOMIC9; RUN: llc %s -o - -mtriple=m68k -mcpu=M68020 --code-model=large --relocation-model=pic | FileCheck %s --check-prefix=ATOMIC-PIC10; RUN: llc %s -o - -mtriple=m68k -mcpu=M68030 --code-model=large --relocation-model=pic | FileCheck %s --check-prefix=ATOMIC-PIC11; RUN: llc %s -o - -mtriple=m68k -mcpu=M68040 --code-model=large --relocation-model=pic | FileCheck %s --check-prefix=ATOMIC-PIC12 13define i8 @atomic_load_i8_unordered(ptr %a) nounwind {14; NO-ATOMIC-LABEL: atomic_load_i8_unordered:15; NO-ATOMIC: ; %bb.0:16; NO-ATOMIC-NEXT: move.l (4,%sp), %a017; NO-ATOMIC-NEXT: move.b (%a0), %d018; NO-ATOMIC-NEXT: rts19;20; NO-ATOMIC-PIC-LABEL: atomic_load_i8_unordered:21; NO-ATOMIC-PIC: ; %bb.0:22; NO-ATOMIC-PIC-NEXT: move.l (4,%sp), %a023; NO-ATOMIC-PIC-NEXT: move.b (%a0), %d024; NO-ATOMIC-PIC-NEXT: rts25;26; ATOMIC-LABEL: atomic_load_i8_unordered:27; ATOMIC: ; %bb.0:28; ATOMIC-NEXT: move.l (4,%sp), %a029; ATOMIC-NEXT: move.b (%a0), %d030; ATOMIC-NEXT: rts31;32; ATOMIC-PIC-LABEL: atomic_load_i8_unordered:33; ATOMIC-PIC: ; %bb.0:34; ATOMIC-PIC-NEXT: move.l (4,%sp), %a035; ATOMIC-PIC-NEXT: move.b (%a0), %d036; ATOMIC-PIC-NEXT: rts37 %1 = load atomic i8, ptr %a unordered, align 138 ret i8 %139}40 41define i8 @atomic_load_i8_monotonic(ptr %a) nounwind {42; NO-ATOMIC-LABEL: atomic_load_i8_monotonic:43; NO-ATOMIC: ; %bb.0:44; NO-ATOMIC-NEXT: move.l (4,%sp), %a045; NO-ATOMIC-NEXT: move.b (%a0), %d046; NO-ATOMIC-NEXT: rts47;48; NO-ATOMIC-PIC-LABEL: atomic_load_i8_monotonic:49; NO-ATOMIC-PIC: ; %bb.0:50; NO-ATOMIC-PIC-NEXT: move.l (4,%sp), %a051; NO-ATOMIC-PIC-NEXT: move.b (%a0), %d052; NO-ATOMIC-PIC-NEXT: rts53;54; ATOMIC-LABEL: atomic_load_i8_monotonic:55; ATOMIC: ; %bb.0:56; ATOMIC-NEXT: move.l (4,%sp), %a057; ATOMIC-NEXT: move.b (%a0), %d058; ATOMIC-NEXT: rts59;60; ATOMIC-PIC-LABEL: atomic_load_i8_monotonic:61; ATOMIC-PIC: ; %bb.0:62; ATOMIC-PIC-NEXT: move.l (4,%sp), %a063; ATOMIC-PIC-NEXT: move.b (%a0), %d064; ATOMIC-PIC-NEXT: rts65 %1 = load atomic i8, ptr %a monotonic, align 166 ret i8 %167}68 69define i8 @atomic_load_i8_acquire(ptr %a) nounwind {70; NO-ATOMIC-LABEL: atomic_load_i8_acquire:71; NO-ATOMIC: ; %bb.0:72; NO-ATOMIC-NEXT: move.l (4,%sp), %a073; NO-ATOMIC-NEXT: move.b (%a0), %d074; NO-ATOMIC-NEXT: rts75;76; NO-ATOMIC-PIC-LABEL: atomic_load_i8_acquire:77; NO-ATOMIC-PIC: ; %bb.0:78; NO-ATOMIC-PIC-NEXT: move.l (4,%sp), %a079; NO-ATOMIC-PIC-NEXT: move.b (%a0), %d080; NO-ATOMIC-PIC-NEXT: rts81;82; ATOMIC-LABEL: atomic_load_i8_acquire:83; ATOMIC: ; %bb.0:84; ATOMIC-NEXT: move.l (4,%sp), %a085; ATOMIC-NEXT: move.b (%a0), %d086; ATOMIC-NEXT: rts87;88; ATOMIC-PIC-LABEL: atomic_load_i8_acquire:89; ATOMIC-PIC: ; %bb.0:90; ATOMIC-PIC-NEXT: move.l (4,%sp), %a091; ATOMIC-PIC-NEXT: move.b (%a0), %d092; ATOMIC-PIC-NEXT: rts93 %1 = load atomic i8, ptr %a acquire, align 194 ret i8 %195}96 97define i8 @atomic_load_i8_seq_cst(ptr %a) nounwind {98; NO-ATOMIC-LABEL: atomic_load_i8_seq_cst:99; NO-ATOMIC: ; %bb.0:100; NO-ATOMIC-NEXT: move.l (4,%sp), %a0101; NO-ATOMIC-NEXT: move.b (%a0), %d0102; NO-ATOMIC-NEXT: rts103;104; NO-ATOMIC-PIC-LABEL: atomic_load_i8_seq_cst:105; NO-ATOMIC-PIC: ; %bb.0:106; NO-ATOMIC-PIC-NEXT: move.l (4,%sp), %a0107; NO-ATOMIC-PIC-NEXT: move.b (%a0), %d0108; NO-ATOMIC-PIC-NEXT: rts109;110; ATOMIC-LABEL: atomic_load_i8_seq_cst:111; ATOMIC: ; %bb.0:112; ATOMIC-NEXT: move.l (4,%sp), %a0113; ATOMIC-NEXT: move.b (%a0), %d0114; ATOMIC-NEXT: rts115;116; ATOMIC-PIC-LABEL: atomic_load_i8_seq_cst:117; ATOMIC-PIC: ; %bb.0:118; ATOMIC-PIC-NEXT: move.l (4,%sp), %a0119; ATOMIC-PIC-NEXT: move.b (%a0), %d0120; ATOMIC-PIC-NEXT: rts121 %1 = load atomic i8, ptr %a seq_cst, align 1122 ret i8 %1123}124 125define i16 @atomic_load_i16_unordered(ptr %a) nounwind {126; NO-ATOMIC-LABEL: atomic_load_i16_unordered:127; NO-ATOMIC: ; %bb.0:128; NO-ATOMIC-NEXT: move.l (4,%sp), %a0129; NO-ATOMIC-NEXT: move.w (%a0), %d0130; NO-ATOMIC-NEXT: rts131;132; NO-ATOMIC-PIC-LABEL: atomic_load_i16_unordered:133; NO-ATOMIC-PIC: ; %bb.0:134; NO-ATOMIC-PIC-NEXT: move.l (4,%sp), %a0135; NO-ATOMIC-PIC-NEXT: move.w (%a0), %d0136; NO-ATOMIC-PIC-NEXT: rts137;138; ATOMIC-LABEL: atomic_load_i16_unordered:139; ATOMIC: ; %bb.0:140; ATOMIC-NEXT: move.l (4,%sp), %a0141; ATOMIC-NEXT: move.w (%a0), %d0142; ATOMIC-NEXT: rts143;144; ATOMIC-PIC-LABEL: atomic_load_i16_unordered:145; ATOMIC-PIC: ; %bb.0:146; ATOMIC-PIC-NEXT: move.l (4,%sp), %a0147; ATOMIC-PIC-NEXT: move.w (%a0), %d0148; ATOMIC-PIC-NEXT: rts149 %1 = load atomic i16, ptr %a unordered, align 2150 ret i16 %1151}152 153define i16 @atomic_load_i16_monotonic(ptr %a) nounwind {154; NO-ATOMIC-LABEL: atomic_load_i16_monotonic:155; NO-ATOMIC: ; %bb.0:156; NO-ATOMIC-NEXT: move.l (4,%sp), %a0157; NO-ATOMIC-NEXT: move.w (%a0), %d0158; NO-ATOMIC-NEXT: rts159;160; NO-ATOMIC-PIC-LABEL: atomic_load_i16_monotonic:161; NO-ATOMIC-PIC: ; %bb.0:162; NO-ATOMIC-PIC-NEXT: move.l (4,%sp), %a0163; NO-ATOMIC-PIC-NEXT: move.w (%a0), %d0164; NO-ATOMIC-PIC-NEXT: rts165;166; ATOMIC-LABEL: atomic_load_i16_monotonic:167; ATOMIC: ; %bb.0:168; ATOMIC-NEXT: move.l (4,%sp), %a0169; ATOMIC-NEXT: move.w (%a0), %d0170; ATOMIC-NEXT: rts171;172; ATOMIC-PIC-LABEL: atomic_load_i16_monotonic:173; ATOMIC-PIC: ; %bb.0:174; ATOMIC-PIC-NEXT: move.l (4,%sp), %a0175; ATOMIC-PIC-NEXT: move.w (%a0), %d0176; ATOMIC-PIC-NEXT: rts177 %1 = load atomic i16, ptr %a monotonic, align 2178 ret i16 %1179}180 181define i16 @atomic_load_i16_acquire(ptr %a) nounwind {182; NO-ATOMIC-LABEL: atomic_load_i16_acquire:183; NO-ATOMIC: ; %bb.0:184; NO-ATOMIC-NEXT: move.l (4,%sp), %a0185; NO-ATOMIC-NEXT: move.w (%a0), %d0186; NO-ATOMIC-NEXT: rts187;188; NO-ATOMIC-PIC-LABEL: atomic_load_i16_acquire:189; NO-ATOMIC-PIC: ; %bb.0:190; NO-ATOMIC-PIC-NEXT: move.l (4,%sp), %a0191; NO-ATOMIC-PIC-NEXT: move.w (%a0), %d0192; NO-ATOMIC-PIC-NEXT: rts193;194; ATOMIC-LABEL: atomic_load_i16_acquire:195; ATOMIC: ; %bb.0:196; ATOMIC-NEXT: move.l (4,%sp), %a0197; ATOMIC-NEXT: move.w (%a0), %d0198; ATOMIC-NEXT: rts199;200; ATOMIC-PIC-LABEL: atomic_load_i16_acquire:201; ATOMIC-PIC: ; %bb.0:202; ATOMIC-PIC-NEXT: move.l (4,%sp), %a0203; ATOMIC-PIC-NEXT: move.w (%a0), %d0204; ATOMIC-PIC-NEXT: rts205 %1 = load atomic i16, ptr %a acquire, align 2206 ret i16 %1207}208 209define i16 @atomic_load_i16_seq_cst(ptr %a) nounwind {210; NO-ATOMIC-LABEL: atomic_load_i16_seq_cst:211; NO-ATOMIC: ; %bb.0:212; NO-ATOMIC-NEXT: move.l (4,%sp), %a0213; NO-ATOMIC-NEXT: move.w (%a0), %d0214; NO-ATOMIC-NEXT: rts215;216; NO-ATOMIC-PIC-LABEL: atomic_load_i16_seq_cst:217; NO-ATOMIC-PIC: ; %bb.0:218; NO-ATOMIC-PIC-NEXT: move.l (4,%sp), %a0219; NO-ATOMIC-PIC-NEXT: move.w (%a0), %d0220; NO-ATOMIC-PIC-NEXT: rts221;222; ATOMIC-LABEL: atomic_load_i16_seq_cst:223; ATOMIC: ; %bb.0:224; ATOMIC-NEXT: move.l (4,%sp), %a0225; ATOMIC-NEXT: move.w (%a0), %d0226; ATOMIC-NEXT: rts227;228; ATOMIC-PIC-LABEL: atomic_load_i16_seq_cst:229; ATOMIC-PIC: ; %bb.0:230; ATOMIC-PIC-NEXT: move.l (4,%sp), %a0231; ATOMIC-PIC-NEXT: move.w (%a0), %d0232; ATOMIC-PIC-NEXT: rts233 %1 = load atomic i16, ptr %a seq_cst, align 2234 ret i16 %1235}236 237define i32 @atomic_load_i32_unordered(ptr %a) nounwind {238; NO-ATOMIC-LABEL: atomic_load_i32_unordered:239; NO-ATOMIC: ; %bb.0:240; NO-ATOMIC-NEXT: move.l (4,%sp), %a0241; NO-ATOMIC-NEXT: move.l (%a0), %d0242; NO-ATOMIC-NEXT: rts243;244; NO-ATOMIC-PIC-LABEL: atomic_load_i32_unordered:245; NO-ATOMIC-PIC: ; %bb.0:246; NO-ATOMIC-PIC-NEXT: move.l (4,%sp), %a0247; NO-ATOMIC-PIC-NEXT: move.l (%a0), %d0248; NO-ATOMIC-PIC-NEXT: rts249;250; ATOMIC-LABEL: atomic_load_i32_unordered:251; ATOMIC: ; %bb.0:252; ATOMIC-NEXT: move.l (4,%sp), %a0253; ATOMIC-NEXT: move.l (%a0), %d0254; ATOMIC-NEXT: rts255;256; ATOMIC-PIC-LABEL: atomic_load_i32_unordered:257; ATOMIC-PIC: ; %bb.0:258; ATOMIC-PIC-NEXT: move.l (4,%sp), %a0259; ATOMIC-PIC-NEXT: move.l (%a0), %d0260; ATOMIC-PIC-NEXT: rts261 %1 = load atomic i32, ptr %a unordered, align 4262 ret i32 %1263}264 265define i32 @atomic_load_i32_monotonic(ptr %a) nounwind {266; NO-ATOMIC-LABEL: atomic_load_i32_monotonic:267; NO-ATOMIC: ; %bb.0:268; NO-ATOMIC-NEXT: move.l (4,%sp), %a0269; NO-ATOMIC-NEXT: move.l (%a0), %d0270; NO-ATOMIC-NEXT: rts271;272; NO-ATOMIC-PIC-LABEL: atomic_load_i32_monotonic:273; NO-ATOMIC-PIC: ; %bb.0:274; NO-ATOMIC-PIC-NEXT: move.l (4,%sp), %a0275; NO-ATOMIC-PIC-NEXT: move.l (%a0), %d0276; NO-ATOMIC-PIC-NEXT: rts277;278; ATOMIC-LABEL: atomic_load_i32_monotonic:279; ATOMIC: ; %bb.0:280; ATOMIC-NEXT: move.l (4,%sp), %a0281; ATOMIC-NEXT: move.l (%a0), %d0282; ATOMIC-NEXT: rts283;284; ATOMIC-PIC-LABEL: atomic_load_i32_monotonic:285; ATOMIC-PIC: ; %bb.0:286; ATOMIC-PIC-NEXT: move.l (4,%sp), %a0287; ATOMIC-PIC-NEXT: move.l (%a0), %d0288; ATOMIC-PIC-NEXT: rts289 %1 = load atomic i32, ptr %a monotonic, align 4290 ret i32 %1291}292 293define i32 @atomic_load_i32_acquire(ptr %a) nounwind {294; NO-ATOMIC-LABEL: atomic_load_i32_acquire:295; NO-ATOMIC: ; %bb.0:296; NO-ATOMIC-NEXT: move.l (4,%sp), %a0297; NO-ATOMIC-NEXT: move.l (%a0), %d0298; NO-ATOMIC-NEXT: rts299;300; NO-ATOMIC-PIC-LABEL: atomic_load_i32_acquire:301; NO-ATOMIC-PIC: ; %bb.0:302; NO-ATOMIC-PIC-NEXT: move.l (4,%sp), %a0303; NO-ATOMIC-PIC-NEXT: move.l (%a0), %d0304; NO-ATOMIC-PIC-NEXT: rts305;306; ATOMIC-LABEL: atomic_load_i32_acquire:307; ATOMIC: ; %bb.0:308; ATOMIC-NEXT: move.l (4,%sp), %a0309; ATOMIC-NEXT: move.l (%a0), %d0310; ATOMIC-NEXT: rts311;312; ATOMIC-PIC-LABEL: atomic_load_i32_acquire:313; ATOMIC-PIC: ; %bb.0:314; ATOMIC-PIC-NEXT: move.l (4,%sp), %a0315; ATOMIC-PIC-NEXT: move.l (%a0), %d0316; ATOMIC-PIC-NEXT: rts317 %1 = load atomic i32, ptr %a acquire, align 4318 ret i32 %1319}320 321define i32 @atomic_load_i32_seq_cst(ptr %a) nounwind {322; NO-ATOMIC-LABEL: atomic_load_i32_seq_cst:323; NO-ATOMIC: ; %bb.0:324; NO-ATOMIC-NEXT: move.l (4,%sp), %a0325; NO-ATOMIC-NEXT: move.l (%a0), %d0326; NO-ATOMIC-NEXT: rts327;328; NO-ATOMIC-PIC-LABEL: atomic_load_i32_seq_cst:329; NO-ATOMIC-PIC: ; %bb.0:330; NO-ATOMIC-PIC-NEXT: move.l (4,%sp), %a0331; NO-ATOMIC-PIC-NEXT: move.l (%a0), %d0332; NO-ATOMIC-PIC-NEXT: rts333;334; ATOMIC-LABEL: atomic_load_i32_seq_cst:335; ATOMIC: ; %bb.0:336; ATOMIC-NEXT: move.l (4,%sp), %a0337; ATOMIC-NEXT: move.l (%a0), %d0338; ATOMIC-NEXT: rts339;340; ATOMIC-PIC-LABEL: atomic_load_i32_seq_cst:341; ATOMIC-PIC: ; %bb.0:342; ATOMIC-PIC-NEXT: move.l (4,%sp), %a0343; ATOMIC-PIC-NEXT: move.l (%a0), %d0344; ATOMIC-PIC-NEXT: rts345 %1 = load atomic i32, ptr %a seq_cst, align 4346 ret i32 %1347}348 349define i64 @atomic_load_i64_unordered(ptr %a) nounwind {350; NO-ATOMIC-LABEL: atomic_load_i64_unordered:351; NO-ATOMIC: ; %bb.0:352; NO-ATOMIC-NEXT: suba.l #12, %sp353; NO-ATOMIC-NEXT: move.l #0, (4,%sp)354; NO-ATOMIC-NEXT: move.l (16,%sp), (%sp)355; NO-ATOMIC-NEXT: jsr __atomic_load_8356; NO-ATOMIC-NEXT: adda.l #12, %sp357; NO-ATOMIC-NEXT: rts358;359; NO-ATOMIC-PIC-LABEL: atomic_load_i64_unordered:360; NO-ATOMIC-PIC: ; %bb.0:361; NO-ATOMIC-PIC-NEXT: suba.l #12, %sp362; NO-ATOMIC-PIC-NEXT: move.l #0, (4,%sp)363; NO-ATOMIC-PIC-NEXT: move.l (16,%sp), (%sp)364; NO-ATOMIC-PIC-NEXT: jsr (__atomic_load_8@PLT,%pc)365; NO-ATOMIC-PIC-NEXT: adda.l #12, %sp366; NO-ATOMIC-PIC-NEXT: rts367;368; ATOMIC-LABEL: atomic_load_i64_unordered:369; ATOMIC: ; %bb.0:370; ATOMIC-NEXT: suba.l #12, %sp371; ATOMIC-NEXT: move.l #0, (4,%sp)372; ATOMIC-NEXT: move.l (16,%sp), (%sp)373; ATOMIC-NEXT: jsr __atomic_load_8374; ATOMIC-NEXT: adda.l #12, %sp375; ATOMIC-NEXT: rts376;377; ATOMIC-PIC-LABEL: atomic_load_i64_unordered:378; ATOMIC-PIC: ; %bb.0:379; ATOMIC-PIC-NEXT: suba.l #12, %sp380; ATOMIC-PIC-NEXT: move.l #0, (4,%sp)381; ATOMIC-PIC-NEXT: move.l (16,%sp), (%sp)382; ATOMIC-PIC-NEXT: jsr (__atomic_load_8@PLT,%pc)383; ATOMIC-PIC-NEXT: adda.l #12, %sp384; ATOMIC-PIC-NEXT: rts385 %1 = load atomic i64, ptr %a unordered, align 8386 ret i64 %1387}388 389define i64 @atomic_load_i64_monotonic(ptr %a) nounwind {390; NO-ATOMIC-LABEL: atomic_load_i64_monotonic:391; NO-ATOMIC: ; %bb.0:392; NO-ATOMIC-NEXT: suba.l #12, %sp393; NO-ATOMIC-NEXT: move.l #0, (4,%sp)394; NO-ATOMIC-NEXT: move.l (16,%sp), (%sp)395; NO-ATOMIC-NEXT: jsr __atomic_load_8396; NO-ATOMIC-NEXT: adda.l #12, %sp397; NO-ATOMIC-NEXT: rts398;399; NO-ATOMIC-PIC-LABEL: atomic_load_i64_monotonic:400; NO-ATOMIC-PIC: ; %bb.0:401; NO-ATOMIC-PIC-NEXT: suba.l #12, %sp402; NO-ATOMIC-PIC-NEXT: move.l #0, (4,%sp)403; NO-ATOMIC-PIC-NEXT: move.l (16,%sp), (%sp)404; NO-ATOMIC-PIC-NEXT: jsr (__atomic_load_8@PLT,%pc)405; NO-ATOMIC-PIC-NEXT: adda.l #12, %sp406; NO-ATOMIC-PIC-NEXT: rts407;408; ATOMIC-LABEL: atomic_load_i64_monotonic:409; ATOMIC: ; %bb.0:410; ATOMIC-NEXT: suba.l #12, %sp411; ATOMIC-NEXT: move.l #0, (4,%sp)412; ATOMIC-NEXT: move.l (16,%sp), (%sp)413; ATOMIC-NEXT: jsr __atomic_load_8414; ATOMIC-NEXT: adda.l #12, %sp415; ATOMIC-NEXT: rts416;417; ATOMIC-PIC-LABEL: atomic_load_i64_monotonic:418; ATOMIC-PIC: ; %bb.0:419; ATOMIC-PIC-NEXT: suba.l #12, %sp420; ATOMIC-PIC-NEXT: move.l #0, (4,%sp)421; ATOMIC-PIC-NEXT: move.l (16,%sp), (%sp)422; ATOMIC-PIC-NEXT: jsr (__atomic_load_8@PLT,%pc)423; ATOMIC-PIC-NEXT: adda.l #12, %sp424; ATOMIC-PIC-NEXT: rts425 %1 = load atomic i64, ptr %a monotonic, align 8426 ret i64 %1427}428 429define i64 @atomic_load_i64_acquire(ptr %a) nounwind {430; NO-ATOMIC-LABEL: atomic_load_i64_acquire:431; NO-ATOMIC: ; %bb.0:432; NO-ATOMIC-NEXT: suba.l #12, %sp433; NO-ATOMIC-NEXT: move.l #2, (4,%sp)434; NO-ATOMIC-NEXT: move.l (16,%sp), (%sp)435; NO-ATOMIC-NEXT: jsr __atomic_load_8436; NO-ATOMIC-NEXT: adda.l #12, %sp437; NO-ATOMIC-NEXT: rts438;439; NO-ATOMIC-PIC-LABEL: atomic_load_i64_acquire:440; NO-ATOMIC-PIC: ; %bb.0:441; NO-ATOMIC-PIC-NEXT: suba.l #12, %sp442; NO-ATOMIC-PIC-NEXT: move.l #2, (4,%sp)443; NO-ATOMIC-PIC-NEXT: move.l (16,%sp), (%sp)444; NO-ATOMIC-PIC-NEXT: jsr (__atomic_load_8@PLT,%pc)445; NO-ATOMIC-PIC-NEXT: adda.l #12, %sp446; NO-ATOMIC-PIC-NEXT: rts447;448; ATOMIC-LABEL: atomic_load_i64_acquire:449; ATOMIC: ; %bb.0:450; ATOMIC-NEXT: suba.l #12, %sp451; ATOMIC-NEXT: move.l #2, (4,%sp)452; ATOMIC-NEXT: move.l (16,%sp), (%sp)453; ATOMIC-NEXT: jsr __atomic_load_8454; ATOMIC-NEXT: adda.l #12, %sp455; ATOMIC-NEXT: rts456;457; ATOMIC-PIC-LABEL: atomic_load_i64_acquire:458; ATOMIC-PIC: ; %bb.0:459; ATOMIC-PIC-NEXT: suba.l #12, %sp460; ATOMIC-PIC-NEXT: move.l #2, (4,%sp)461; ATOMIC-PIC-NEXT: move.l (16,%sp), (%sp)462; ATOMIC-PIC-NEXT: jsr (__atomic_load_8@PLT,%pc)463; ATOMIC-PIC-NEXT: adda.l #12, %sp464; ATOMIC-PIC-NEXT: rts465 %1 = load atomic i64, ptr %a acquire, align 8466 ret i64 %1467}468 469define i64 @atomic_load_i64_seq_cst(ptr %a) nounwind {470; NO-ATOMIC-LABEL: atomic_load_i64_seq_cst:471; NO-ATOMIC: ; %bb.0:472; NO-ATOMIC-NEXT: suba.l #12, %sp473; NO-ATOMIC-NEXT: move.l #5, (4,%sp)474; NO-ATOMIC-NEXT: move.l (16,%sp), (%sp)475; NO-ATOMIC-NEXT: jsr __atomic_load_8476; NO-ATOMIC-NEXT: adda.l #12, %sp477; NO-ATOMIC-NEXT: rts478;479; NO-ATOMIC-PIC-LABEL: atomic_load_i64_seq_cst:480; NO-ATOMIC-PIC: ; %bb.0:481; NO-ATOMIC-PIC-NEXT: suba.l #12, %sp482; NO-ATOMIC-PIC-NEXT: move.l #5, (4,%sp)483; NO-ATOMIC-PIC-NEXT: move.l (16,%sp), (%sp)484; NO-ATOMIC-PIC-NEXT: jsr (__atomic_load_8@PLT,%pc)485; NO-ATOMIC-PIC-NEXT: adda.l #12, %sp486; NO-ATOMIC-PIC-NEXT: rts487;488; ATOMIC-LABEL: atomic_load_i64_seq_cst:489; ATOMIC: ; %bb.0:490; ATOMIC-NEXT: suba.l #12, %sp491; ATOMIC-NEXT: move.l #5, (4,%sp)492; ATOMIC-NEXT: move.l (16,%sp), (%sp)493; ATOMIC-NEXT: jsr __atomic_load_8494; ATOMIC-NEXT: adda.l #12, %sp495; ATOMIC-NEXT: rts496;497; ATOMIC-PIC-LABEL: atomic_load_i64_seq_cst:498; ATOMIC-PIC: ; %bb.0:499; ATOMIC-PIC-NEXT: suba.l #12, %sp500; ATOMIC-PIC-NEXT: move.l #5, (4,%sp)501; ATOMIC-PIC-NEXT: move.l (16,%sp), (%sp)502; ATOMIC-PIC-NEXT: jsr (__atomic_load_8@PLT,%pc)503; ATOMIC-PIC-NEXT: adda.l #12, %sp504; ATOMIC-PIC-NEXT: rts505 %1 = load atomic i64, ptr %a seq_cst, align 8506 ret i64 %1507}508 509define void @atomic_store_i8_unordered(ptr %a, i8 %val) nounwind {510; NO-ATOMIC-LABEL: atomic_store_i8_unordered:511; NO-ATOMIC: ; %bb.0:512; NO-ATOMIC-NEXT: move.b (11,%sp), %d0513; NO-ATOMIC-NEXT: move.l (4,%sp), %a0514; NO-ATOMIC-NEXT: move.b %d0, (%a0)515; NO-ATOMIC-NEXT: rts516;517; NO-ATOMIC-PIC-LABEL: atomic_store_i8_unordered:518; NO-ATOMIC-PIC: ; %bb.0:519; NO-ATOMIC-PIC-NEXT: move.b (11,%sp), %d0520; NO-ATOMIC-PIC-NEXT: move.l (4,%sp), %a0521; NO-ATOMIC-PIC-NEXT: move.b %d0, (%a0)522; NO-ATOMIC-PIC-NEXT: rts523;524; ATOMIC-LABEL: atomic_store_i8_unordered:525; ATOMIC: ; %bb.0:526; ATOMIC-NEXT: move.b (11,%sp), %d0527; ATOMIC-NEXT: move.l (4,%sp), %a0528; ATOMIC-NEXT: move.b %d0, (%a0)529; ATOMIC-NEXT: rts530;531; ATOMIC-PIC-LABEL: atomic_store_i8_unordered:532; ATOMIC-PIC: ; %bb.0:533; ATOMIC-PIC-NEXT: move.b (11,%sp), %d0534; ATOMIC-PIC-NEXT: move.l (4,%sp), %a0535; ATOMIC-PIC-NEXT: move.b %d0, (%a0)536; ATOMIC-PIC-NEXT: rts537 store atomic i8 %val, ptr %a unordered, align 1538 ret void539}540 541define void @atomic_store_i8_monotonic(ptr %a, i8 %val) nounwind {542; NO-ATOMIC-LABEL: atomic_store_i8_monotonic:543; NO-ATOMIC: ; %bb.0:544; NO-ATOMIC-NEXT: move.b (11,%sp), %d0545; NO-ATOMIC-NEXT: move.l (4,%sp), %a0546; NO-ATOMIC-NEXT: move.b %d0, (%a0)547; NO-ATOMIC-NEXT: rts548;549; NO-ATOMIC-PIC-LABEL: atomic_store_i8_monotonic:550; NO-ATOMIC-PIC: ; %bb.0:551; NO-ATOMIC-PIC-NEXT: move.b (11,%sp), %d0552; NO-ATOMIC-PIC-NEXT: move.l (4,%sp), %a0553; NO-ATOMIC-PIC-NEXT: move.b %d0, (%a0)554; NO-ATOMIC-PIC-NEXT: rts555;556; ATOMIC-LABEL: atomic_store_i8_monotonic:557; ATOMIC: ; %bb.0:558; ATOMIC-NEXT: move.b (11,%sp), %d0559; ATOMIC-NEXT: move.l (4,%sp), %a0560; ATOMIC-NEXT: move.b %d0, (%a0)561; ATOMIC-NEXT: rts562;563; ATOMIC-PIC-LABEL: atomic_store_i8_monotonic:564; ATOMIC-PIC: ; %bb.0:565; ATOMIC-PIC-NEXT: move.b (11,%sp), %d0566; ATOMIC-PIC-NEXT: move.l (4,%sp), %a0567; ATOMIC-PIC-NEXT: move.b %d0, (%a0)568; ATOMIC-PIC-NEXT: rts569 store atomic i8 %val, ptr %a monotonic, align 1570 ret void571}572 573define void @atomic_store_i8_release(ptr %a, i8 %val) nounwind {574; NO-ATOMIC-LABEL: atomic_store_i8_release:575; NO-ATOMIC: ; %bb.0:576; NO-ATOMIC-NEXT: move.b (11,%sp), %d0577; NO-ATOMIC-NEXT: move.l (4,%sp), %a0578; NO-ATOMIC-NEXT: move.b %d0, (%a0)579; NO-ATOMIC-NEXT: rts580;581; NO-ATOMIC-PIC-LABEL: atomic_store_i8_release:582; NO-ATOMIC-PIC: ; %bb.0:583; NO-ATOMIC-PIC-NEXT: move.b (11,%sp), %d0584; NO-ATOMIC-PIC-NEXT: move.l (4,%sp), %a0585; NO-ATOMIC-PIC-NEXT: move.b %d0, (%a0)586; NO-ATOMIC-PIC-NEXT: rts587;588; ATOMIC-LABEL: atomic_store_i8_release:589; ATOMIC: ; %bb.0:590; ATOMIC-NEXT: move.b (11,%sp), %d0591; ATOMIC-NEXT: move.l (4,%sp), %a0592; ATOMIC-NEXT: move.b %d0, (%a0)593; ATOMIC-NEXT: rts594;595; ATOMIC-PIC-LABEL: atomic_store_i8_release:596; ATOMIC-PIC: ; %bb.0:597; ATOMIC-PIC-NEXT: move.b (11,%sp), %d0598; ATOMIC-PIC-NEXT: move.l (4,%sp), %a0599; ATOMIC-PIC-NEXT: move.b %d0, (%a0)600; ATOMIC-PIC-NEXT: rts601 store atomic i8 %val, ptr %a release, align 1602 ret void603}604 605define void @atomic_store_i8_seq_cst(ptr %a, i8 %val) nounwind {606; NO-ATOMIC-LABEL: atomic_store_i8_seq_cst:607; NO-ATOMIC: ; %bb.0:608; NO-ATOMIC-NEXT: move.b (11,%sp), %d0609; NO-ATOMIC-NEXT: move.l (4,%sp), %a0610; NO-ATOMIC-NEXT: move.b %d0, (%a0)611; NO-ATOMIC-NEXT: rts612;613; NO-ATOMIC-PIC-LABEL: atomic_store_i8_seq_cst:614; NO-ATOMIC-PIC: ; %bb.0:615; NO-ATOMIC-PIC-NEXT: move.b (11,%sp), %d0616; NO-ATOMIC-PIC-NEXT: move.l (4,%sp), %a0617; NO-ATOMIC-PIC-NEXT: move.b %d0, (%a0)618; NO-ATOMIC-PIC-NEXT: rts619;620; ATOMIC-LABEL: atomic_store_i8_seq_cst:621; ATOMIC: ; %bb.0:622; ATOMIC-NEXT: move.b (11,%sp), %d0623; ATOMIC-NEXT: move.l (4,%sp), %a0624; ATOMIC-NEXT: move.b %d0, (%a0)625; ATOMIC-NEXT: rts626;627; ATOMIC-PIC-LABEL: atomic_store_i8_seq_cst:628; ATOMIC-PIC: ; %bb.0:629; ATOMIC-PIC-NEXT: move.b (11,%sp), %d0630; ATOMIC-PIC-NEXT: move.l (4,%sp), %a0631; ATOMIC-PIC-NEXT: move.b %d0, (%a0)632; ATOMIC-PIC-NEXT: rts633 store atomic i8 %val, ptr %a seq_cst, align 1634 ret void635}636 637define void @atomic_store_i16_unordered(ptr %a, i16 %val) nounwind {638; NO-ATOMIC-LABEL: atomic_store_i16_unordered:639; NO-ATOMIC: ; %bb.0:640; NO-ATOMIC-NEXT: move.w (10,%sp), %d0641; NO-ATOMIC-NEXT: move.l (4,%sp), %a0642; NO-ATOMIC-NEXT: move.w %d0, (%a0)643; NO-ATOMIC-NEXT: rts644;645; NO-ATOMIC-PIC-LABEL: atomic_store_i16_unordered:646; NO-ATOMIC-PIC: ; %bb.0:647; NO-ATOMIC-PIC-NEXT: move.w (10,%sp), %d0648; NO-ATOMIC-PIC-NEXT: move.l (4,%sp), %a0649; NO-ATOMIC-PIC-NEXT: move.w %d0, (%a0)650; NO-ATOMIC-PIC-NEXT: rts651;652; ATOMIC-LABEL: atomic_store_i16_unordered:653; ATOMIC: ; %bb.0:654; ATOMIC-NEXT: move.w (10,%sp), %d0655; ATOMIC-NEXT: move.l (4,%sp), %a0656; ATOMIC-NEXT: move.w %d0, (%a0)657; ATOMIC-NEXT: rts658;659; ATOMIC-PIC-LABEL: atomic_store_i16_unordered:660; ATOMIC-PIC: ; %bb.0:661; ATOMIC-PIC-NEXT: move.w (10,%sp), %d0662; ATOMIC-PIC-NEXT: move.l (4,%sp), %a0663; ATOMIC-PIC-NEXT: move.w %d0, (%a0)664; ATOMIC-PIC-NEXT: rts665 store atomic i16 %val, ptr %a unordered, align 2666 ret void667}668 669define void @atomic_store_i16_monotonic(ptr %a, i16 %val) nounwind {670; NO-ATOMIC-LABEL: atomic_store_i16_monotonic:671; NO-ATOMIC: ; %bb.0:672; NO-ATOMIC-NEXT: move.w (10,%sp), %d0673; NO-ATOMIC-NEXT: move.l (4,%sp), %a0674; NO-ATOMIC-NEXT: move.w %d0, (%a0)675; NO-ATOMIC-NEXT: rts676;677; NO-ATOMIC-PIC-LABEL: atomic_store_i16_monotonic:678; NO-ATOMIC-PIC: ; %bb.0:679; NO-ATOMIC-PIC-NEXT: move.w (10,%sp), %d0680; NO-ATOMIC-PIC-NEXT: move.l (4,%sp), %a0681; NO-ATOMIC-PIC-NEXT: move.w %d0, (%a0)682; NO-ATOMIC-PIC-NEXT: rts683;684; ATOMIC-LABEL: atomic_store_i16_monotonic:685; ATOMIC: ; %bb.0:686; ATOMIC-NEXT: move.w (10,%sp), %d0687; ATOMIC-NEXT: move.l (4,%sp), %a0688; ATOMIC-NEXT: move.w %d0, (%a0)689; ATOMIC-NEXT: rts690;691; ATOMIC-PIC-LABEL: atomic_store_i16_monotonic:692; ATOMIC-PIC: ; %bb.0:693; ATOMIC-PIC-NEXT: move.w (10,%sp), %d0694; ATOMIC-PIC-NEXT: move.l (4,%sp), %a0695; ATOMIC-PIC-NEXT: move.w %d0, (%a0)696; ATOMIC-PIC-NEXT: rts697 store atomic i16 %val, ptr %a monotonic, align 2698 ret void699}700 701define void @atomic_store_i16_release(ptr %a, i16 %val) nounwind {702; NO-ATOMIC-LABEL: atomic_store_i16_release:703; NO-ATOMIC: ; %bb.0:704; NO-ATOMIC-NEXT: move.w (10,%sp), %d0705; NO-ATOMIC-NEXT: move.l (4,%sp), %a0706; NO-ATOMIC-NEXT: move.w %d0, (%a0)707; NO-ATOMIC-NEXT: rts708;709; NO-ATOMIC-PIC-LABEL: atomic_store_i16_release:710; NO-ATOMIC-PIC: ; %bb.0:711; NO-ATOMIC-PIC-NEXT: move.w (10,%sp), %d0712; NO-ATOMIC-PIC-NEXT: move.l (4,%sp), %a0713; NO-ATOMIC-PIC-NEXT: move.w %d0, (%a0)714; NO-ATOMIC-PIC-NEXT: rts715;716; ATOMIC-LABEL: atomic_store_i16_release:717; ATOMIC: ; %bb.0:718; ATOMIC-NEXT: move.w (10,%sp), %d0719; ATOMIC-NEXT: move.l (4,%sp), %a0720; ATOMIC-NEXT: move.w %d0, (%a0)721; ATOMIC-NEXT: rts722;723; ATOMIC-PIC-LABEL: atomic_store_i16_release:724; ATOMIC-PIC: ; %bb.0:725; ATOMIC-PIC-NEXT: move.w (10,%sp), %d0726; ATOMIC-PIC-NEXT: move.l (4,%sp), %a0727; ATOMIC-PIC-NEXT: move.w %d0, (%a0)728; ATOMIC-PIC-NEXT: rts729 store atomic i16 %val, ptr %a release, align 2730 ret void731}732 733define void @atomic_store_i16_seq_cst(ptr %a, i16 %val) nounwind {734; NO-ATOMIC-LABEL: atomic_store_i16_seq_cst:735; NO-ATOMIC: ; %bb.0:736; NO-ATOMIC-NEXT: move.w (10,%sp), %d0737; NO-ATOMIC-NEXT: move.l (4,%sp), %a0738; NO-ATOMIC-NEXT: move.w %d0, (%a0)739; NO-ATOMIC-NEXT: rts740;741; NO-ATOMIC-PIC-LABEL: atomic_store_i16_seq_cst:742; NO-ATOMIC-PIC: ; %bb.0:743; NO-ATOMIC-PIC-NEXT: move.w (10,%sp), %d0744; NO-ATOMIC-PIC-NEXT: move.l (4,%sp), %a0745; NO-ATOMIC-PIC-NEXT: move.w %d0, (%a0)746; NO-ATOMIC-PIC-NEXT: rts747;748; ATOMIC-LABEL: atomic_store_i16_seq_cst:749; ATOMIC: ; %bb.0:750; ATOMIC-NEXT: move.w (10,%sp), %d0751; ATOMIC-NEXT: move.l (4,%sp), %a0752; ATOMIC-NEXT: move.w %d0, (%a0)753; ATOMIC-NEXT: rts754;755; ATOMIC-PIC-LABEL: atomic_store_i16_seq_cst:756; ATOMIC-PIC: ; %bb.0:757; ATOMIC-PIC-NEXT: move.w (10,%sp), %d0758; ATOMIC-PIC-NEXT: move.l (4,%sp), %a0759; ATOMIC-PIC-NEXT: move.w %d0, (%a0)760; ATOMIC-PIC-NEXT: rts761 store atomic i16 %val, ptr %a seq_cst, align 2762 ret void763}764 765define void @atomic_store_i32_unordered(ptr %a, i32 %val) nounwind {766; NO-ATOMIC-LABEL: atomic_store_i32_unordered:767; NO-ATOMIC: ; %bb.0:768; NO-ATOMIC-NEXT: move.l (8,%sp), %d0769; NO-ATOMIC-NEXT: move.l (4,%sp), %a0770; NO-ATOMIC-NEXT: move.l %d0, (%a0)771; NO-ATOMIC-NEXT: rts772;773; NO-ATOMIC-PIC-LABEL: atomic_store_i32_unordered:774; NO-ATOMIC-PIC: ; %bb.0:775; NO-ATOMIC-PIC-NEXT: move.l (8,%sp), %d0776; NO-ATOMIC-PIC-NEXT: move.l (4,%sp), %a0777; NO-ATOMIC-PIC-NEXT: move.l %d0, (%a0)778; NO-ATOMIC-PIC-NEXT: rts779;780; ATOMIC-LABEL: atomic_store_i32_unordered:781; ATOMIC: ; %bb.0:782; ATOMIC-NEXT: move.l (8,%sp), %d0783; ATOMIC-NEXT: move.l (4,%sp), %a0784; ATOMIC-NEXT: move.l %d0, (%a0)785; ATOMIC-NEXT: rts786;787; ATOMIC-PIC-LABEL: atomic_store_i32_unordered:788; ATOMIC-PIC: ; %bb.0:789; ATOMIC-PIC-NEXT: move.l (8,%sp), %d0790; ATOMIC-PIC-NEXT: move.l (4,%sp), %a0791; ATOMIC-PIC-NEXT: move.l %d0, (%a0)792; ATOMIC-PIC-NEXT: rts793 store atomic i32 %val, ptr %a unordered, align 4794 ret void795}796 797define void @atomic_store_i32_monotonic(ptr %a, i32 %val) nounwind {798; NO-ATOMIC-LABEL: atomic_store_i32_monotonic:799; NO-ATOMIC: ; %bb.0:800; NO-ATOMIC-NEXT: move.l (8,%sp), %d0801; NO-ATOMIC-NEXT: move.l (4,%sp), %a0802; NO-ATOMIC-NEXT: move.l %d0, (%a0)803; NO-ATOMIC-NEXT: rts804;805; NO-ATOMIC-PIC-LABEL: atomic_store_i32_monotonic:806; NO-ATOMIC-PIC: ; %bb.0:807; NO-ATOMIC-PIC-NEXT: move.l (8,%sp), %d0808; NO-ATOMIC-PIC-NEXT: move.l (4,%sp), %a0809; NO-ATOMIC-PIC-NEXT: move.l %d0, (%a0)810; NO-ATOMIC-PIC-NEXT: rts811;812; ATOMIC-LABEL: atomic_store_i32_monotonic:813; ATOMIC: ; %bb.0:814; ATOMIC-NEXT: move.l (8,%sp), %d0815; ATOMIC-NEXT: move.l (4,%sp), %a0816; ATOMIC-NEXT: move.l %d0, (%a0)817; ATOMIC-NEXT: rts818;819; ATOMIC-PIC-LABEL: atomic_store_i32_monotonic:820; ATOMIC-PIC: ; %bb.0:821; ATOMIC-PIC-NEXT: move.l (8,%sp), %d0822; ATOMIC-PIC-NEXT: move.l (4,%sp), %a0823; ATOMIC-PIC-NEXT: move.l %d0, (%a0)824; ATOMIC-PIC-NEXT: rts825 store atomic i32 %val, ptr %a monotonic, align 4826 ret void827}828 829define void @atomic_store_i32_release(ptr %a, i32 %val) nounwind {830; NO-ATOMIC-LABEL: atomic_store_i32_release:831; NO-ATOMIC: ; %bb.0:832; NO-ATOMIC-NEXT: move.l (8,%sp), %d0833; NO-ATOMIC-NEXT: move.l (4,%sp), %a0834; NO-ATOMIC-NEXT: move.l %d0, (%a0)835; NO-ATOMIC-NEXT: rts836;837; NO-ATOMIC-PIC-LABEL: atomic_store_i32_release:838; NO-ATOMIC-PIC: ; %bb.0:839; NO-ATOMIC-PIC-NEXT: move.l (8,%sp), %d0840; NO-ATOMIC-PIC-NEXT: move.l (4,%sp), %a0841; NO-ATOMIC-PIC-NEXT: move.l %d0, (%a0)842; NO-ATOMIC-PIC-NEXT: rts843;844; ATOMIC-LABEL: atomic_store_i32_release:845; ATOMIC: ; %bb.0:846; ATOMIC-NEXT: move.l (8,%sp), %d0847; ATOMIC-NEXT: move.l (4,%sp), %a0848; ATOMIC-NEXT: move.l %d0, (%a0)849; ATOMIC-NEXT: rts850;851; ATOMIC-PIC-LABEL: atomic_store_i32_release:852; ATOMIC-PIC: ; %bb.0:853; ATOMIC-PIC-NEXT: move.l (8,%sp), %d0854; ATOMIC-PIC-NEXT: move.l (4,%sp), %a0855; ATOMIC-PIC-NEXT: move.l %d0, (%a0)856; ATOMIC-PIC-NEXT: rts857 store atomic i32 %val, ptr %a release, align 4858 ret void859}860 861define void @atomic_store_i32_seq_cst(ptr %a, i32 %val) nounwind {862; NO-ATOMIC-LABEL: atomic_store_i32_seq_cst:863; NO-ATOMIC: ; %bb.0:864; NO-ATOMIC-NEXT: move.l (8,%sp), %d0865; NO-ATOMIC-NEXT: move.l (4,%sp), %a0866; NO-ATOMIC-NEXT: move.l %d0, (%a0)867; NO-ATOMIC-NEXT: rts868;869; NO-ATOMIC-PIC-LABEL: atomic_store_i32_seq_cst:870; NO-ATOMIC-PIC: ; %bb.0:871; NO-ATOMIC-PIC-NEXT: move.l (8,%sp), %d0872; NO-ATOMIC-PIC-NEXT: move.l (4,%sp), %a0873; NO-ATOMIC-PIC-NEXT: move.l %d0, (%a0)874; NO-ATOMIC-PIC-NEXT: rts875;876; ATOMIC-LABEL: atomic_store_i32_seq_cst:877; ATOMIC: ; %bb.0:878; ATOMIC-NEXT: move.l (8,%sp), %d0879; ATOMIC-NEXT: move.l (4,%sp), %a0880; ATOMIC-NEXT: move.l %d0, (%a0)881; ATOMIC-NEXT: rts882;883; ATOMIC-PIC-LABEL: atomic_store_i32_seq_cst:884; ATOMIC-PIC: ; %bb.0:885; ATOMIC-PIC-NEXT: move.l (8,%sp), %d0886; ATOMIC-PIC-NEXT: move.l (4,%sp), %a0887; ATOMIC-PIC-NEXT: move.l %d0, (%a0)888; ATOMIC-PIC-NEXT: rts889 store atomic i32 %val, ptr %a seq_cst, align 4890 ret void891}892 893define void @atomic_store_i64_unordered(ptr %a, i64 %val) nounwind {894; NO-ATOMIC-LABEL: atomic_store_i64_unordered:895; NO-ATOMIC: ; %bb.0:896; NO-ATOMIC-NEXT: suba.l #20, %sp897; NO-ATOMIC-NEXT: move.l #0, (12,%sp)898; NO-ATOMIC-NEXT: move.l (32,%sp), (8,%sp)899; NO-ATOMIC-NEXT: move.l (28,%sp), (4,%sp)900; NO-ATOMIC-NEXT: move.l (24,%sp), (%sp)901; NO-ATOMIC-NEXT: jsr __atomic_store_8902; NO-ATOMIC-NEXT: adda.l #20, %sp903; NO-ATOMIC-NEXT: rts904;905; NO-ATOMIC-PIC-LABEL: atomic_store_i64_unordered:906; NO-ATOMIC-PIC: ; %bb.0:907; NO-ATOMIC-PIC-NEXT: suba.l #20, %sp908; NO-ATOMIC-PIC-NEXT: move.l #0, (12,%sp)909; NO-ATOMIC-PIC-NEXT: move.l (32,%sp), (8,%sp)910; NO-ATOMIC-PIC-NEXT: move.l (28,%sp), (4,%sp)911; NO-ATOMIC-PIC-NEXT: move.l (24,%sp), (%sp)912; NO-ATOMIC-PIC-NEXT: jsr (__atomic_store_8@PLT,%pc)913; NO-ATOMIC-PIC-NEXT: adda.l #20, %sp914; NO-ATOMIC-PIC-NEXT: rts915;916; ATOMIC-LABEL: atomic_store_i64_unordered:917; ATOMIC: ; %bb.0:918; ATOMIC-NEXT: suba.l #20, %sp919; ATOMIC-NEXT: move.l #0, (12,%sp)920; ATOMIC-NEXT: move.l (32,%sp), (8,%sp)921; ATOMIC-NEXT: move.l (28,%sp), (4,%sp)922; ATOMIC-NEXT: move.l (24,%sp), (%sp)923; ATOMIC-NEXT: jsr __atomic_store_8924; ATOMIC-NEXT: adda.l #20, %sp925; ATOMIC-NEXT: rts926;927; ATOMIC-PIC-LABEL: atomic_store_i64_unordered:928; ATOMIC-PIC: ; %bb.0:929; ATOMIC-PIC-NEXT: suba.l #20, %sp930; ATOMIC-PIC-NEXT: move.l #0, (12,%sp)931; ATOMIC-PIC-NEXT: move.l (32,%sp), (8,%sp)932; ATOMIC-PIC-NEXT: move.l (28,%sp), (4,%sp)933; ATOMIC-PIC-NEXT: move.l (24,%sp), (%sp)934; ATOMIC-PIC-NEXT: jsr (__atomic_store_8@PLT,%pc)935; ATOMIC-PIC-NEXT: adda.l #20, %sp936; ATOMIC-PIC-NEXT: rts937 store atomic i64 %val, ptr %a unordered, align 8938 ret void939}940 941define void @atomic_store_i64_monotonic(ptr %a, i64 %val) nounwind {942; NO-ATOMIC-LABEL: atomic_store_i64_monotonic:943; NO-ATOMIC: ; %bb.0:944; NO-ATOMIC-NEXT: suba.l #20, %sp945; NO-ATOMIC-NEXT: move.l #0, (12,%sp)946; NO-ATOMIC-NEXT: move.l (32,%sp), (8,%sp)947; NO-ATOMIC-NEXT: move.l (28,%sp), (4,%sp)948; NO-ATOMIC-NEXT: move.l (24,%sp), (%sp)949; NO-ATOMIC-NEXT: jsr __atomic_store_8950; NO-ATOMIC-NEXT: adda.l #20, %sp951; NO-ATOMIC-NEXT: rts952;953; NO-ATOMIC-PIC-LABEL: atomic_store_i64_monotonic:954; NO-ATOMIC-PIC: ; %bb.0:955; NO-ATOMIC-PIC-NEXT: suba.l #20, %sp956; NO-ATOMIC-PIC-NEXT: move.l #0, (12,%sp)957; NO-ATOMIC-PIC-NEXT: move.l (32,%sp), (8,%sp)958; NO-ATOMIC-PIC-NEXT: move.l (28,%sp), (4,%sp)959; NO-ATOMIC-PIC-NEXT: move.l (24,%sp), (%sp)960; NO-ATOMIC-PIC-NEXT: jsr (__atomic_store_8@PLT,%pc)961; NO-ATOMIC-PIC-NEXT: adda.l #20, %sp962; NO-ATOMIC-PIC-NEXT: rts963;964; ATOMIC-LABEL: atomic_store_i64_monotonic:965; ATOMIC: ; %bb.0:966; ATOMIC-NEXT: suba.l #20, %sp967; ATOMIC-NEXT: move.l #0, (12,%sp)968; ATOMIC-NEXT: move.l (32,%sp), (8,%sp)969; ATOMIC-NEXT: move.l (28,%sp), (4,%sp)970; ATOMIC-NEXT: move.l (24,%sp), (%sp)971; ATOMIC-NEXT: jsr __atomic_store_8972; ATOMIC-NEXT: adda.l #20, %sp973; ATOMIC-NEXT: rts974;975; ATOMIC-PIC-LABEL: atomic_store_i64_monotonic:976; ATOMIC-PIC: ; %bb.0:977; ATOMIC-PIC-NEXT: suba.l #20, %sp978; ATOMIC-PIC-NEXT: move.l #0, (12,%sp)979; ATOMIC-PIC-NEXT: move.l (32,%sp), (8,%sp)980; ATOMIC-PIC-NEXT: move.l (28,%sp), (4,%sp)981; ATOMIC-PIC-NEXT: move.l (24,%sp), (%sp)982; ATOMIC-PIC-NEXT: jsr (__atomic_store_8@PLT,%pc)983; ATOMIC-PIC-NEXT: adda.l #20, %sp984; ATOMIC-PIC-NEXT: rts985 store atomic i64 %val, ptr %a monotonic, align 8986 ret void987}988 989define void @atomic_store_i64_release(ptr %a, i64 %val) nounwind {990; NO-ATOMIC-LABEL: atomic_store_i64_release:991; NO-ATOMIC: ; %bb.0:992; NO-ATOMIC-NEXT: suba.l #20, %sp993; NO-ATOMIC-NEXT: move.l #3, (12,%sp)994; NO-ATOMIC-NEXT: move.l (32,%sp), (8,%sp)995; NO-ATOMIC-NEXT: move.l (28,%sp), (4,%sp)996; NO-ATOMIC-NEXT: move.l (24,%sp), (%sp)997; NO-ATOMIC-NEXT: jsr __atomic_store_8998; NO-ATOMIC-NEXT: adda.l #20, %sp999; NO-ATOMIC-NEXT: rts1000;1001; NO-ATOMIC-PIC-LABEL: atomic_store_i64_release:1002; NO-ATOMIC-PIC: ; %bb.0:1003; NO-ATOMIC-PIC-NEXT: suba.l #20, %sp1004; NO-ATOMIC-PIC-NEXT: move.l #3, (12,%sp)1005; NO-ATOMIC-PIC-NEXT: move.l (32,%sp), (8,%sp)1006; NO-ATOMIC-PIC-NEXT: move.l (28,%sp), (4,%sp)1007; NO-ATOMIC-PIC-NEXT: move.l (24,%sp), (%sp)1008; NO-ATOMIC-PIC-NEXT: jsr (__atomic_store_8@PLT,%pc)1009; NO-ATOMIC-PIC-NEXT: adda.l #20, %sp1010; NO-ATOMIC-PIC-NEXT: rts1011;1012; ATOMIC-LABEL: atomic_store_i64_release:1013; ATOMIC: ; %bb.0:1014; ATOMIC-NEXT: suba.l #20, %sp1015; ATOMIC-NEXT: move.l #3, (12,%sp)1016; ATOMIC-NEXT: move.l (32,%sp), (8,%sp)1017; ATOMIC-NEXT: move.l (28,%sp), (4,%sp)1018; ATOMIC-NEXT: move.l (24,%sp), (%sp)1019; ATOMIC-NEXT: jsr __atomic_store_81020; ATOMIC-NEXT: adda.l #20, %sp1021; ATOMIC-NEXT: rts1022;1023; ATOMIC-PIC-LABEL: atomic_store_i64_release:1024; ATOMIC-PIC: ; %bb.0:1025; ATOMIC-PIC-NEXT: suba.l #20, %sp1026; ATOMIC-PIC-NEXT: move.l #3, (12,%sp)1027; ATOMIC-PIC-NEXT: move.l (32,%sp), (8,%sp)1028; ATOMIC-PIC-NEXT: move.l (28,%sp), (4,%sp)1029; ATOMIC-PIC-NEXT: move.l (24,%sp), (%sp)1030; ATOMIC-PIC-NEXT: jsr (__atomic_store_8@PLT,%pc)1031; ATOMIC-PIC-NEXT: adda.l #20, %sp1032; ATOMIC-PIC-NEXT: rts1033 store atomic i64 %val, ptr %a release, align 81034 ret void1035}1036 1037define void @atomic_store_i64_seq_cst(ptr %a, i64 %val) nounwind {1038; NO-ATOMIC-LABEL: atomic_store_i64_seq_cst:1039; NO-ATOMIC: ; %bb.0:1040; NO-ATOMIC-NEXT: suba.l #20, %sp1041; NO-ATOMIC-NEXT: move.l #5, (12,%sp)1042; NO-ATOMIC-NEXT: move.l (32,%sp), (8,%sp)1043; NO-ATOMIC-NEXT: move.l (28,%sp), (4,%sp)1044; NO-ATOMIC-NEXT: move.l (24,%sp), (%sp)1045; NO-ATOMIC-NEXT: jsr __atomic_store_81046; NO-ATOMIC-NEXT: adda.l #20, %sp1047; NO-ATOMIC-NEXT: rts1048;1049; NO-ATOMIC-PIC-LABEL: atomic_store_i64_seq_cst:1050; NO-ATOMIC-PIC: ; %bb.0:1051; NO-ATOMIC-PIC-NEXT: suba.l #20, %sp1052; NO-ATOMIC-PIC-NEXT: move.l #5, (12,%sp)1053; NO-ATOMIC-PIC-NEXT: move.l (32,%sp), (8,%sp)1054; NO-ATOMIC-PIC-NEXT: move.l (28,%sp), (4,%sp)1055; NO-ATOMIC-PIC-NEXT: move.l (24,%sp), (%sp)1056; NO-ATOMIC-PIC-NEXT: jsr (__atomic_store_8@PLT,%pc)1057; NO-ATOMIC-PIC-NEXT: adda.l #20, %sp1058; NO-ATOMIC-PIC-NEXT: rts1059;1060; ATOMIC-LABEL: atomic_store_i64_seq_cst:1061; ATOMIC: ; %bb.0:1062; ATOMIC-NEXT: suba.l #20, %sp1063; ATOMIC-NEXT: move.l #5, (12,%sp)1064; ATOMIC-NEXT: move.l (32,%sp), (8,%sp)1065; ATOMIC-NEXT: move.l (28,%sp), (4,%sp)1066; ATOMIC-NEXT: move.l (24,%sp), (%sp)1067; ATOMIC-NEXT: jsr __atomic_store_81068; ATOMIC-NEXT: adda.l #20, %sp1069; ATOMIC-NEXT: rts1070;1071; ATOMIC-PIC-LABEL: atomic_store_i64_seq_cst:1072; ATOMIC-PIC: ; %bb.0:1073; ATOMIC-PIC-NEXT: suba.l #20, %sp1074; ATOMIC-PIC-NEXT: move.l #5, (12,%sp)1075; ATOMIC-PIC-NEXT: move.l (32,%sp), (8,%sp)1076; ATOMIC-PIC-NEXT: move.l (28,%sp), (4,%sp)1077; ATOMIC-PIC-NEXT: move.l (24,%sp), (%sp)1078; ATOMIC-PIC-NEXT: jsr (__atomic_store_8@PLT,%pc)1079; ATOMIC-PIC-NEXT: adda.l #20, %sp1080; ATOMIC-PIC-NEXT: rts1081 store atomic i64 %val, ptr %a seq_cst, align 81082 ret void1083}1084 1085define void @store_arid(ptr nonnull align 4 %a) {1086; NO-ATOMIC-LABEL: store_arid:1087; NO-ATOMIC: .cfi_startproc1088; NO-ATOMIC-NEXT: ; %bb.0: ; %start1089; NO-ATOMIC-NEXT: moveq #1, %d01090; NO-ATOMIC-NEXT: move.l (4,%sp), %a01091; NO-ATOMIC-NEXT: move.l %d0, (32,%a0)1092; NO-ATOMIC-NEXT: rts1093;1094; NO-ATOMIC-PIC-LABEL: store_arid:1095; NO-ATOMIC-PIC: .cfi_startproc1096; NO-ATOMIC-PIC-NEXT: ; %bb.0: ; %start1097; NO-ATOMIC-PIC-NEXT: moveq #1, %d01098; NO-ATOMIC-PIC-NEXT: move.l (4,%sp), %a01099; NO-ATOMIC-PIC-NEXT: move.l %d0, (32,%a0)1100; NO-ATOMIC-PIC-NEXT: rts1101;1102; ATOMIC-LABEL: store_arid:1103; ATOMIC: .cfi_startproc1104; ATOMIC-NEXT: ; %bb.0: ; %start1105; ATOMIC-NEXT: moveq #1, %d01106; ATOMIC-NEXT: move.l (4,%sp), %a01107; ATOMIC-NEXT: move.l %d0, (32,%a0)1108; ATOMIC-NEXT: rts1109;1110; ATOMIC-PIC-LABEL: store_arid:1111; ATOMIC-PIC: .cfi_startproc1112; ATOMIC-PIC-NEXT: ; %bb.0: ; %start1113; ATOMIC-PIC-NEXT: moveq #1, %d01114; ATOMIC-PIC-NEXT: move.l (4,%sp), %a01115; ATOMIC-PIC-NEXT: move.l %d0, (32,%a0)1116; ATOMIC-PIC-NEXT: rts1117start:1118 %1 = getelementptr inbounds i32, ptr %a, i32 81119 store atomic i32 1, ptr %1 seq_cst, align 41120 br label %exit1121 1122exit: ; preds = %start1123 ret void1124}1125 1126define i32 @load_arid(ptr nonnull align 4 %a) {1127; NO-ATOMIC-LABEL: load_arid:1128; NO-ATOMIC: .cfi_startproc1129; NO-ATOMIC-NEXT: ; %bb.0: ; %start1130; NO-ATOMIC-NEXT: move.l (4,%sp), %a01131; NO-ATOMIC-NEXT: move.l (32,%a0), %d01132; NO-ATOMIC-NEXT: rts1133;1134; NO-ATOMIC-PIC-LABEL: load_arid:1135; NO-ATOMIC-PIC: .cfi_startproc1136; NO-ATOMIC-PIC-NEXT: ; %bb.0: ; %start1137; NO-ATOMIC-PIC-NEXT: move.l (4,%sp), %a01138; NO-ATOMIC-PIC-NEXT: move.l (32,%a0), %d01139; NO-ATOMIC-PIC-NEXT: rts1140;1141; ATOMIC-LABEL: load_arid:1142; ATOMIC: .cfi_startproc1143; ATOMIC-NEXT: ; %bb.0: ; %start1144; ATOMIC-NEXT: move.l (4,%sp), %a01145; ATOMIC-NEXT: move.l (32,%a0), %d01146; ATOMIC-NEXT: rts1147;1148; ATOMIC-PIC-LABEL: load_arid:1149; ATOMIC-PIC: .cfi_startproc1150; ATOMIC-PIC-NEXT: ; %bb.0: ; %start1151; ATOMIC-PIC-NEXT: move.l (4,%sp), %a01152; ATOMIC-PIC-NEXT: move.l (32,%a0), %d01153; ATOMIC-PIC-NEXT: rts1154start:1155 %1 = getelementptr inbounds i32, ptr %a, i32 81156 %2 = load atomic i32, ptr %1 seq_cst, align 41157 br label %exit1158 1159exit: ; preds = %start1160 ret i32 %21161}1162