brintos

brintos / llvm-project-archived public Read only

0
0
Text · 34.7 KiB · a257a04 Raw
1091 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=csky -verify-machineinstrs -csky-no-aliases -mattr=+2e3 < %s \3; RUN:   | FileCheck -check-prefix=CSKY %s4 5define void @cmpxchg_i8_monotonic_monotonic(ptr %ptr, i8 %cmp, i8 %val) nounwind {6; CSKY-LABEL: cmpxchg_i8_monotonic_monotonic:7; CSKY:       # %bb.0:8; CSKY-NEXT:    subi16 sp, sp, 49; CSKY-NEXT:    st32.w lr, (sp, 0) # 4-byte Folded Spill10; CSKY-NEXT:    subi16 sp, sp, 811; CSKY-NEXT:    st32.b a1, (sp, 7)12; CSKY-NEXT:    movi16 a1, 013; CSKY-NEXT:    st16.w a1, (sp, 0)14; CSKY-NEXT:    addi32 a1, sp, 715; CSKY-NEXT:    movi16 a3, 016; CSKY-NEXT:    jsri32 [.LCPI0_0]17; CSKY-NEXT:    addi16 sp, sp, 818; CSKY-NEXT:    ld32.w lr, (sp, 0) # 4-byte Folded Reload19; CSKY-NEXT:    addi16 sp, sp, 420; CSKY-NEXT:    rts1621; CSKY-NEXT:    .p2align 122; CSKY-NEXT:  # %bb.1:23; CSKY-NEXT:    .p2align 224; CSKY-NEXT:  .LCPI0_0:25; CSKY-NEXT:    .long __atomic_compare_exchange_126;27  %res = cmpxchg ptr %ptr, i8 %cmp, i8 %val monotonic monotonic28  ret void29}30 31define void @cmpxchg_i8_acquire_monotonic(ptr %ptr, i8 %cmp, i8 %val) nounwind {32; CSKY-LABEL: cmpxchg_i8_acquire_monotonic:33; CSKY:       # %bb.0:34; CSKY-NEXT:    subi16 sp, sp, 435; CSKY-NEXT:    st32.w lr, (sp, 0) # 4-byte Folded Spill36; CSKY-NEXT:    subi16 sp, sp, 837; CSKY-NEXT:    st32.b a1, (sp, 7)38; CSKY-NEXT:    movi16 a1, 039; CSKY-NEXT:    st16.w a1, (sp, 0)40; CSKY-NEXT:    addi32 a1, sp, 741; CSKY-NEXT:    movi16 a3, 242; CSKY-NEXT:    jsri32 [.LCPI1_0]43; CSKY-NEXT:    addi16 sp, sp, 844; CSKY-NEXT:    ld32.w lr, (sp, 0) # 4-byte Folded Reload45; CSKY-NEXT:    addi16 sp, sp, 446; CSKY-NEXT:    rts1647; CSKY-NEXT:    .p2align 148; CSKY-NEXT:  # %bb.1:49; CSKY-NEXT:    .p2align 250; CSKY-NEXT:  .LCPI1_0:51; CSKY-NEXT:    .long __atomic_compare_exchange_152;53  %res = cmpxchg ptr %ptr, i8 %cmp, i8 %val acquire monotonic54  ret void55}56 57define void @cmpxchg_i8_acquire_acquire(ptr %ptr, i8 %cmp, i8 %val) nounwind {58; CSKY-LABEL: cmpxchg_i8_acquire_acquire:59; CSKY:       # %bb.0:60; CSKY-NEXT:    subi16 sp, sp, 461; CSKY-NEXT:    st32.w lr, (sp, 0) # 4-byte Folded Spill62; CSKY-NEXT:    subi16 sp, sp, 863; CSKY-NEXT:    st32.b a1, (sp, 7)64; CSKY-NEXT:    movi16 a1, 265; CSKY-NEXT:    st16.w a1, (sp, 0)66; CSKY-NEXT:    addi32 a1, sp, 767; CSKY-NEXT:    movi16 a3, 268; CSKY-NEXT:    jsri32 [.LCPI2_0]69; CSKY-NEXT:    addi16 sp, sp, 870; CSKY-NEXT:    ld32.w lr, (sp, 0) # 4-byte Folded Reload71; CSKY-NEXT:    addi16 sp, sp, 472; CSKY-NEXT:    rts1673; CSKY-NEXT:    .p2align 174; CSKY-NEXT:  # %bb.1:75; CSKY-NEXT:    .p2align 276; CSKY-NEXT:  .LCPI2_0:77; CSKY-NEXT:    .long __atomic_compare_exchange_178;79  %res = cmpxchg ptr %ptr, i8 %cmp, i8 %val acquire acquire80  ret void81}82 83define void @cmpxchg_i8_release_monotonic(ptr %ptr, i8 %cmp, i8 %val) nounwind {84; CSKY-LABEL: cmpxchg_i8_release_monotonic:85; CSKY:       # %bb.0:86; CSKY-NEXT:    subi16 sp, sp, 487; CSKY-NEXT:    st32.w lr, (sp, 0) # 4-byte Folded Spill88; CSKY-NEXT:    subi16 sp, sp, 889; CSKY-NEXT:    st32.b a1, (sp, 7)90; CSKY-NEXT:    movi16 a1, 091; CSKY-NEXT:    st16.w a1, (sp, 0)92; CSKY-NEXT:    addi32 a1, sp, 793; CSKY-NEXT:    movi16 a3, 394; CSKY-NEXT:    jsri32 [.LCPI3_0]95; CSKY-NEXT:    addi16 sp, sp, 896; CSKY-NEXT:    ld32.w lr, (sp, 0) # 4-byte Folded Reload97; CSKY-NEXT:    addi16 sp, sp, 498; CSKY-NEXT:    rts1699; CSKY-NEXT:    .p2align 1100; CSKY-NEXT:  # %bb.1:101; CSKY-NEXT:    .p2align 2102; CSKY-NEXT:  .LCPI3_0:103; CSKY-NEXT:    .long __atomic_compare_exchange_1104;105  %res = cmpxchg ptr %ptr, i8 %cmp, i8 %val release monotonic106  ret void107}108 109define void @cmpxchg_i8_release_acquire(ptr %ptr, i8 %cmp, i8 %val) nounwind {110; CSKY-LABEL: cmpxchg_i8_release_acquire:111; CSKY:       # %bb.0:112; CSKY-NEXT:    subi16 sp, sp, 4113; CSKY-NEXT:    st32.w lr, (sp, 0) # 4-byte Folded Spill114; CSKY-NEXT:    subi16 sp, sp, 8115; CSKY-NEXT:    st32.b a1, (sp, 7)116; CSKY-NEXT:    movi16 a1, 2117; CSKY-NEXT:    st16.w a1, (sp, 0)118; CSKY-NEXT:    addi32 a1, sp, 7119; CSKY-NEXT:    movi16 a3, 3120; CSKY-NEXT:    jsri32 [.LCPI4_0]121; CSKY-NEXT:    addi16 sp, sp, 8122; CSKY-NEXT:    ld32.w lr, (sp, 0) # 4-byte Folded Reload123; CSKY-NEXT:    addi16 sp, sp, 4124; CSKY-NEXT:    rts16125; CSKY-NEXT:    .p2align 1126; CSKY-NEXT:  # %bb.1:127; CSKY-NEXT:    .p2align 2128; CSKY-NEXT:  .LCPI4_0:129; CSKY-NEXT:    .long __atomic_compare_exchange_1130;131  %res = cmpxchg ptr %ptr, i8 %cmp, i8 %val release acquire132  ret void133}134 135define void @cmpxchg_i8_acq_rel_monotonic(ptr %ptr, i8 %cmp, i8 %val) nounwind {136; CSKY-LABEL: cmpxchg_i8_acq_rel_monotonic:137; CSKY:       # %bb.0:138; CSKY-NEXT:    subi16 sp, sp, 4139; CSKY-NEXT:    st32.w lr, (sp, 0) # 4-byte Folded Spill140; CSKY-NEXT:    subi16 sp, sp, 8141; CSKY-NEXT:    st32.b a1, (sp, 7)142; CSKY-NEXT:    movi16 a1, 0143; CSKY-NEXT:    st16.w a1, (sp, 0)144; CSKY-NEXT:    addi32 a1, sp, 7145; CSKY-NEXT:    movi16 a3, 4146; CSKY-NEXT:    jsri32 [.LCPI5_0]147; CSKY-NEXT:    addi16 sp, sp, 8148; CSKY-NEXT:    ld32.w lr, (sp, 0) # 4-byte Folded Reload149; CSKY-NEXT:    addi16 sp, sp, 4150; CSKY-NEXT:    rts16151; CSKY-NEXT:    .p2align 1152; CSKY-NEXT:  # %bb.1:153; CSKY-NEXT:    .p2align 2154; CSKY-NEXT:  .LCPI5_0:155; CSKY-NEXT:    .long __atomic_compare_exchange_1156;157  %res = cmpxchg ptr %ptr, i8 %cmp, i8 %val acq_rel monotonic158  ret void159}160 161define void @cmpxchg_i8_acq_rel_acquire(ptr %ptr, i8 %cmp, i8 %val) nounwind {162; CSKY-LABEL: cmpxchg_i8_acq_rel_acquire:163; CSKY:       # %bb.0:164; CSKY-NEXT:    subi16 sp, sp, 4165; CSKY-NEXT:    st32.w lr, (sp, 0) # 4-byte Folded Spill166; CSKY-NEXT:    subi16 sp, sp, 8167; CSKY-NEXT:    st32.b a1, (sp, 7)168; CSKY-NEXT:    movi16 a1, 2169; CSKY-NEXT:    st16.w a1, (sp, 0)170; CSKY-NEXT:    addi32 a1, sp, 7171; CSKY-NEXT:    movi16 a3, 4172; CSKY-NEXT:    jsri32 [.LCPI6_0]173; CSKY-NEXT:    addi16 sp, sp, 8174; CSKY-NEXT:    ld32.w lr, (sp, 0) # 4-byte Folded Reload175; CSKY-NEXT:    addi16 sp, sp, 4176; CSKY-NEXT:    rts16177; CSKY-NEXT:    .p2align 1178; CSKY-NEXT:  # %bb.1:179; CSKY-NEXT:    .p2align 2180; CSKY-NEXT:  .LCPI6_0:181; CSKY-NEXT:    .long __atomic_compare_exchange_1182;183  %res = cmpxchg ptr %ptr, i8 %cmp, i8 %val acq_rel acquire184  ret void185}186 187define void @cmpxchg_i8_seq_cst_monotonic(ptr %ptr, i8 %cmp, i8 %val) nounwind {188; CSKY-LABEL: cmpxchg_i8_seq_cst_monotonic:189; CSKY:       # %bb.0:190; CSKY-NEXT:    subi16 sp, sp, 4191; CSKY-NEXT:    st32.w lr, (sp, 0) # 4-byte Folded Spill192; CSKY-NEXT:    subi16 sp, sp, 8193; CSKY-NEXT:    st32.b a1, (sp, 7)194; CSKY-NEXT:    movi16 a1, 0195; CSKY-NEXT:    st16.w a1, (sp, 0)196; CSKY-NEXT:    addi32 a1, sp, 7197; CSKY-NEXT:    movi16 a3, 5198; CSKY-NEXT:    jsri32 [.LCPI7_0]199; CSKY-NEXT:    addi16 sp, sp, 8200; CSKY-NEXT:    ld32.w lr, (sp, 0) # 4-byte Folded Reload201; CSKY-NEXT:    addi16 sp, sp, 4202; CSKY-NEXT:    rts16203; CSKY-NEXT:    .p2align 1204; CSKY-NEXT:  # %bb.1:205; CSKY-NEXT:    .p2align 2206; CSKY-NEXT:  .LCPI7_0:207; CSKY-NEXT:    .long __atomic_compare_exchange_1208;209  %res = cmpxchg ptr %ptr, i8 %cmp, i8 %val seq_cst monotonic210  ret void211}212 213define void @cmpxchg_i8_seq_cst_acquire(ptr %ptr, i8 %cmp, i8 %val) nounwind {214; CSKY-LABEL: cmpxchg_i8_seq_cst_acquire:215; CSKY:       # %bb.0:216; CSKY-NEXT:    subi16 sp, sp, 4217; CSKY-NEXT:    st32.w lr, (sp, 0) # 4-byte Folded Spill218; CSKY-NEXT:    subi16 sp, sp, 8219; CSKY-NEXT:    st32.b a1, (sp, 7)220; CSKY-NEXT:    movi16 a1, 2221; CSKY-NEXT:    st16.w a1, (sp, 0)222; CSKY-NEXT:    addi32 a1, sp, 7223; CSKY-NEXT:    movi16 a3, 5224; CSKY-NEXT:    jsri32 [.LCPI8_0]225; CSKY-NEXT:    addi16 sp, sp, 8226; CSKY-NEXT:    ld32.w lr, (sp, 0) # 4-byte Folded Reload227; CSKY-NEXT:    addi16 sp, sp, 4228; CSKY-NEXT:    rts16229; CSKY-NEXT:    .p2align 1230; CSKY-NEXT:  # %bb.1:231; CSKY-NEXT:    .p2align 2232; CSKY-NEXT:  .LCPI8_0:233; CSKY-NEXT:    .long __atomic_compare_exchange_1234;235  %res = cmpxchg ptr %ptr, i8 %cmp, i8 %val seq_cst acquire236  ret void237}238 239define void @cmpxchg_i8_seq_cst_seq_cst(ptr %ptr, i8 %cmp, i8 %val) nounwind {240; CSKY-LABEL: cmpxchg_i8_seq_cst_seq_cst:241; CSKY:       # %bb.0:242; CSKY-NEXT:    subi16 sp, sp, 4243; CSKY-NEXT:    st32.w lr, (sp, 0) # 4-byte Folded Spill244; CSKY-NEXT:    subi16 sp, sp, 8245; CSKY-NEXT:    st32.b a1, (sp, 7)246; CSKY-NEXT:    movi16 a1, 5247; CSKY-NEXT:    st16.w a1, (sp, 0)248; CSKY-NEXT:    addi32 a1, sp, 7249; CSKY-NEXT:    movi16 a3, 5250; CSKY-NEXT:    jsri32 [.LCPI9_0]251; CSKY-NEXT:    addi16 sp, sp, 8252; CSKY-NEXT:    ld32.w lr, (sp, 0) # 4-byte Folded Reload253; CSKY-NEXT:    addi16 sp, sp, 4254; CSKY-NEXT:    rts16255; CSKY-NEXT:    .p2align 1256; CSKY-NEXT:  # %bb.1:257; CSKY-NEXT:    .p2align 2258; CSKY-NEXT:  .LCPI9_0:259; CSKY-NEXT:    .long __atomic_compare_exchange_1260;261  %res = cmpxchg ptr %ptr, i8 %cmp, i8 %val seq_cst seq_cst262  ret void263}264 265define void @cmpxchg_i16_monotonic_monotonic(ptr %ptr, i16 %cmp, i16 %val) nounwind {266; CSKY-LABEL: cmpxchg_i16_monotonic_monotonic:267; CSKY:       # %bb.0:268; CSKY-NEXT:    subi16 sp, sp, 4269; CSKY-NEXT:    st32.w lr, (sp, 0) # 4-byte Folded Spill270; CSKY-NEXT:    subi16 sp, sp, 8271; CSKY-NEXT:    st32.h a1, (sp, 6)272; CSKY-NEXT:    movi16 a1, 0273; CSKY-NEXT:    st16.w a1, (sp, 0)274; CSKY-NEXT:    addi32 a1, sp, 6275; CSKY-NEXT:    movi16 a3, 0276; CSKY-NEXT:    jsri32 [.LCPI10_0]277; CSKY-NEXT:    addi16 sp, sp, 8278; CSKY-NEXT:    ld32.w lr, (sp, 0) # 4-byte Folded Reload279; CSKY-NEXT:    addi16 sp, sp, 4280; CSKY-NEXT:    rts16281; CSKY-NEXT:    .p2align 1282; CSKY-NEXT:  # %bb.1:283; CSKY-NEXT:    .p2align 2284; CSKY-NEXT:  .LCPI10_0:285; CSKY-NEXT:    .long __atomic_compare_exchange_2286;287  %res = cmpxchg ptr %ptr, i16 %cmp, i16 %val monotonic monotonic288  ret void289}290 291define void @cmpxchg_i16_acquire_monotonic(ptr %ptr, i16 %cmp, i16 %val) nounwind {292; CSKY-LABEL: cmpxchg_i16_acquire_monotonic:293; CSKY:       # %bb.0:294; CSKY-NEXT:    subi16 sp, sp, 4295; CSKY-NEXT:    st32.w lr, (sp, 0) # 4-byte Folded Spill296; CSKY-NEXT:    subi16 sp, sp, 8297; CSKY-NEXT:    st32.h a1, (sp, 6)298; CSKY-NEXT:    movi16 a1, 0299; CSKY-NEXT:    st16.w a1, (sp, 0)300; CSKY-NEXT:    addi32 a1, sp, 6301; CSKY-NEXT:    movi16 a3, 2302; CSKY-NEXT:    jsri32 [.LCPI11_0]303; CSKY-NEXT:    addi16 sp, sp, 8304; CSKY-NEXT:    ld32.w lr, (sp, 0) # 4-byte Folded Reload305; CSKY-NEXT:    addi16 sp, sp, 4306; CSKY-NEXT:    rts16307; CSKY-NEXT:    .p2align 1308; CSKY-NEXT:  # %bb.1:309; CSKY-NEXT:    .p2align 2310; CSKY-NEXT:  .LCPI11_0:311; CSKY-NEXT:    .long __atomic_compare_exchange_2312;313  %res = cmpxchg ptr %ptr, i16 %cmp, i16 %val acquire monotonic314  ret void315}316 317define void @cmpxchg_i16_acquire_acquire(ptr %ptr, i16 %cmp, i16 %val) nounwind {318; CSKY-LABEL: cmpxchg_i16_acquire_acquire:319; CSKY:       # %bb.0:320; CSKY-NEXT:    subi16 sp, sp, 4321; CSKY-NEXT:    st32.w lr, (sp, 0) # 4-byte Folded Spill322; CSKY-NEXT:    subi16 sp, sp, 8323; CSKY-NEXT:    st32.h a1, (sp, 6)324; CSKY-NEXT:    movi16 a1, 2325; CSKY-NEXT:    st16.w a1, (sp, 0)326; CSKY-NEXT:    addi32 a1, sp, 6327; CSKY-NEXT:    movi16 a3, 2328; CSKY-NEXT:    jsri32 [.LCPI12_0]329; CSKY-NEXT:    addi16 sp, sp, 8330; CSKY-NEXT:    ld32.w lr, (sp, 0) # 4-byte Folded Reload331; CSKY-NEXT:    addi16 sp, sp, 4332; CSKY-NEXT:    rts16333; CSKY-NEXT:    .p2align 1334; CSKY-NEXT:  # %bb.1:335; CSKY-NEXT:    .p2align 2336; CSKY-NEXT:  .LCPI12_0:337; CSKY-NEXT:    .long __atomic_compare_exchange_2338;339  %res = cmpxchg ptr %ptr, i16 %cmp, i16 %val acquire acquire340  ret void341}342 343define void @cmpxchg_i16_release_monotonic(ptr %ptr, i16 %cmp, i16 %val) nounwind {344; CSKY-LABEL: cmpxchg_i16_release_monotonic:345; CSKY:       # %bb.0:346; CSKY-NEXT:    subi16 sp, sp, 4347; CSKY-NEXT:    st32.w lr, (sp, 0) # 4-byte Folded Spill348; CSKY-NEXT:    subi16 sp, sp, 8349; CSKY-NEXT:    st32.h a1, (sp, 6)350; CSKY-NEXT:    movi16 a1, 0351; CSKY-NEXT:    st16.w a1, (sp, 0)352; CSKY-NEXT:    addi32 a1, sp, 6353; CSKY-NEXT:    movi16 a3, 3354; CSKY-NEXT:    jsri32 [.LCPI13_0]355; CSKY-NEXT:    addi16 sp, sp, 8356; CSKY-NEXT:    ld32.w lr, (sp, 0) # 4-byte Folded Reload357; CSKY-NEXT:    addi16 sp, sp, 4358; CSKY-NEXT:    rts16359; CSKY-NEXT:    .p2align 1360; CSKY-NEXT:  # %bb.1:361; CSKY-NEXT:    .p2align 2362; CSKY-NEXT:  .LCPI13_0:363; CSKY-NEXT:    .long __atomic_compare_exchange_2364;365  %res = cmpxchg ptr %ptr, i16 %cmp, i16 %val release monotonic366  ret void367}368 369define void @cmpxchg_i16_release_acquire(ptr %ptr, i16 %cmp, i16 %val) nounwind {370; CSKY-LABEL: cmpxchg_i16_release_acquire:371; CSKY:       # %bb.0:372; CSKY-NEXT:    subi16 sp, sp, 4373; CSKY-NEXT:    st32.w lr, (sp, 0) # 4-byte Folded Spill374; CSKY-NEXT:    subi16 sp, sp, 8375; CSKY-NEXT:    st32.h a1, (sp, 6)376; CSKY-NEXT:    movi16 a1, 2377; CSKY-NEXT:    st16.w a1, (sp, 0)378; CSKY-NEXT:    addi32 a1, sp, 6379; CSKY-NEXT:    movi16 a3, 3380; CSKY-NEXT:    jsri32 [.LCPI14_0]381; CSKY-NEXT:    addi16 sp, sp, 8382; CSKY-NEXT:    ld32.w lr, (sp, 0) # 4-byte Folded Reload383; CSKY-NEXT:    addi16 sp, sp, 4384; CSKY-NEXT:    rts16385; CSKY-NEXT:    .p2align 1386; CSKY-NEXT:  # %bb.1:387; CSKY-NEXT:    .p2align 2388; CSKY-NEXT:  .LCPI14_0:389; CSKY-NEXT:    .long __atomic_compare_exchange_2390;391  %res = cmpxchg ptr %ptr, i16 %cmp, i16 %val release acquire392  ret void393}394 395define void @cmpxchg_i16_acq_rel_monotonic(ptr %ptr, i16 %cmp, i16 %val) nounwind {396; CSKY-LABEL: cmpxchg_i16_acq_rel_monotonic:397; CSKY:       # %bb.0:398; CSKY-NEXT:    subi16 sp, sp, 4399; CSKY-NEXT:    st32.w lr, (sp, 0) # 4-byte Folded Spill400; CSKY-NEXT:    subi16 sp, sp, 8401; CSKY-NEXT:    st32.h a1, (sp, 6)402; CSKY-NEXT:    movi16 a1, 0403; CSKY-NEXT:    st16.w a1, (sp, 0)404; CSKY-NEXT:    addi32 a1, sp, 6405; CSKY-NEXT:    movi16 a3, 4406; CSKY-NEXT:    jsri32 [.LCPI15_0]407; CSKY-NEXT:    addi16 sp, sp, 8408; CSKY-NEXT:    ld32.w lr, (sp, 0) # 4-byte Folded Reload409; CSKY-NEXT:    addi16 sp, sp, 4410; CSKY-NEXT:    rts16411; CSKY-NEXT:    .p2align 1412; CSKY-NEXT:  # %bb.1:413; CSKY-NEXT:    .p2align 2414; CSKY-NEXT:  .LCPI15_0:415; CSKY-NEXT:    .long __atomic_compare_exchange_2416;417  %res = cmpxchg ptr %ptr, i16 %cmp, i16 %val acq_rel monotonic418  ret void419}420 421define void @cmpxchg_i16_acq_rel_acquire(ptr %ptr, i16 %cmp, i16 %val) nounwind {422; CSKY-LABEL: cmpxchg_i16_acq_rel_acquire:423; CSKY:       # %bb.0:424; CSKY-NEXT:    subi16 sp, sp, 4425; CSKY-NEXT:    st32.w lr, (sp, 0) # 4-byte Folded Spill426; CSKY-NEXT:    subi16 sp, sp, 8427; CSKY-NEXT:    st32.h a1, (sp, 6)428; CSKY-NEXT:    movi16 a1, 2429; CSKY-NEXT:    st16.w a1, (sp, 0)430; CSKY-NEXT:    addi32 a1, sp, 6431; CSKY-NEXT:    movi16 a3, 4432; CSKY-NEXT:    jsri32 [.LCPI16_0]433; CSKY-NEXT:    addi16 sp, sp, 8434; CSKY-NEXT:    ld32.w lr, (sp, 0) # 4-byte Folded Reload435; CSKY-NEXT:    addi16 sp, sp, 4436; CSKY-NEXT:    rts16437; CSKY-NEXT:    .p2align 1438; CSKY-NEXT:  # %bb.1:439; CSKY-NEXT:    .p2align 2440; CSKY-NEXT:  .LCPI16_0:441; CSKY-NEXT:    .long __atomic_compare_exchange_2442;443  %res = cmpxchg ptr %ptr, i16 %cmp, i16 %val acq_rel acquire444  ret void445}446 447define void @cmpxchg_i16_seq_cst_monotonic(ptr %ptr, i16 %cmp, i16 %val) nounwind {448; CSKY-LABEL: cmpxchg_i16_seq_cst_monotonic:449; CSKY:       # %bb.0:450; CSKY-NEXT:    subi16 sp, sp, 4451; CSKY-NEXT:    st32.w lr, (sp, 0) # 4-byte Folded Spill452; CSKY-NEXT:    subi16 sp, sp, 8453; CSKY-NEXT:    st32.h a1, (sp, 6)454; CSKY-NEXT:    movi16 a1, 0455; CSKY-NEXT:    st16.w a1, (sp, 0)456; CSKY-NEXT:    addi32 a1, sp, 6457; CSKY-NEXT:    movi16 a3, 5458; CSKY-NEXT:    jsri32 [.LCPI17_0]459; CSKY-NEXT:    addi16 sp, sp, 8460; CSKY-NEXT:    ld32.w lr, (sp, 0) # 4-byte Folded Reload461; CSKY-NEXT:    addi16 sp, sp, 4462; CSKY-NEXT:    rts16463; CSKY-NEXT:    .p2align 1464; CSKY-NEXT:  # %bb.1:465; CSKY-NEXT:    .p2align 2466; CSKY-NEXT:  .LCPI17_0:467; CSKY-NEXT:    .long __atomic_compare_exchange_2468;469  %res = cmpxchg ptr %ptr, i16 %cmp, i16 %val seq_cst monotonic470  ret void471}472 473define void @cmpxchg_i16_seq_cst_acquire(ptr %ptr, i16 %cmp, i16 %val) nounwind {474; CSKY-LABEL: cmpxchg_i16_seq_cst_acquire:475; CSKY:       # %bb.0:476; CSKY-NEXT:    subi16 sp, sp, 4477; CSKY-NEXT:    st32.w lr, (sp, 0) # 4-byte Folded Spill478; CSKY-NEXT:    subi16 sp, sp, 8479; CSKY-NEXT:    st32.h a1, (sp, 6)480; CSKY-NEXT:    movi16 a1, 2481; CSKY-NEXT:    st16.w a1, (sp, 0)482; CSKY-NEXT:    addi32 a1, sp, 6483; CSKY-NEXT:    movi16 a3, 5484; CSKY-NEXT:    jsri32 [.LCPI18_0]485; CSKY-NEXT:    addi16 sp, sp, 8486; CSKY-NEXT:    ld32.w lr, (sp, 0) # 4-byte Folded Reload487; CSKY-NEXT:    addi16 sp, sp, 4488; CSKY-NEXT:    rts16489; CSKY-NEXT:    .p2align 1490; CSKY-NEXT:  # %bb.1:491; CSKY-NEXT:    .p2align 2492; CSKY-NEXT:  .LCPI18_0:493; CSKY-NEXT:    .long __atomic_compare_exchange_2494;495  %res = cmpxchg ptr %ptr, i16 %cmp, i16 %val seq_cst acquire496  ret void497}498 499define void @cmpxchg_i16_seq_cst_seq_cst(ptr %ptr, i16 %cmp, i16 %val) nounwind {500; CSKY-LABEL: cmpxchg_i16_seq_cst_seq_cst:501; CSKY:       # %bb.0:502; CSKY-NEXT:    subi16 sp, sp, 4503; CSKY-NEXT:    st32.w lr, (sp, 0) # 4-byte Folded Spill504; CSKY-NEXT:    subi16 sp, sp, 8505; CSKY-NEXT:    st32.h a1, (sp, 6)506; CSKY-NEXT:    movi16 a1, 5507; CSKY-NEXT:    st16.w a1, (sp, 0)508; CSKY-NEXT:    addi32 a1, sp, 6509; CSKY-NEXT:    movi16 a3, 5510; CSKY-NEXT:    jsri32 [.LCPI19_0]511; CSKY-NEXT:    addi16 sp, sp, 8512; CSKY-NEXT:    ld32.w lr, (sp, 0) # 4-byte Folded Reload513; CSKY-NEXT:    addi16 sp, sp, 4514; CSKY-NEXT:    rts16515; CSKY-NEXT:    .p2align 1516; CSKY-NEXT:  # %bb.1:517; CSKY-NEXT:    .p2align 2518; CSKY-NEXT:  .LCPI19_0:519; CSKY-NEXT:    .long __atomic_compare_exchange_2520;521  %res = cmpxchg ptr %ptr, i16 %cmp, i16 %val seq_cst seq_cst522  ret void523}524 525define void @cmpxchg_i32_monotonic_monotonic(ptr %ptr, i32 %cmp, i32 %val) nounwind {526; CSKY-LABEL: cmpxchg_i32_monotonic_monotonic:527; CSKY:       # %bb.0:528; CSKY-NEXT:    subi16 sp, sp, 4529; CSKY-NEXT:    st32.w lr, (sp, 0) # 4-byte Folded Spill530; CSKY-NEXT:    subi16 sp, sp, 8531; CSKY-NEXT:    st16.w a1, (sp, 4)532; CSKY-NEXT:    movi16 a1, 0533; CSKY-NEXT:    st16.w a1, (sp, 0)534; CSKY-NEXT:    addi16 a1, sp, 4535; CSKY-NEXT:    movi16 a3, 0536; CSKY-NEXT:    jsri32 [.LCPI20_0]537; CSKY-NEXT:    addi16 sp, sp, 8538; CSKY-NEXT:    ld32.w lr, (sp, 0) # 4-byte Folded Reload539; CSKY-NEXT:    addi16 sp, sp, 4540; CSKY-NEXT:    rts16541; CSKY-NEXT:    .p2align 1542; CSKY-NEXT:  # %bb.1:543; CSKY-NEXT:    .p2align 2544; CSKY-NEXT:  .LCPI20_0:545; CSKY-NEXT:    .long __atomic_compare_exchange_4546;547  %res = cmpxchg ptr %ptr, i32 %cmp, i32 %val monotonic monotonic548  ret void549}550 551define void @cmpxchg_i32_acquire_monotonic(ptr %ptr, i32 %cmp, i32 %val) nounwind {552; CSKY-LABEL: cmpxchg_i32_acquire_monotonic:553; CSKY:       # %bb.0:554; CSKY-NEXT:    subi16 sp, sp, 4555; CSKY-NEXT:    st32.w lr, (sp, 0) # 4-byte Folded Spill556; CSKY-NEXT:    subi16 sp, sp, 8557; CSKY-NEXT:    st16.w a1, (sp, 4)558; CSKY-NEXT:    movi16 a1, 0559; CSKY-NEXT:    st16.w a1, (sp, 0)560; CSKY-NEXT:    addi16 a1, sp, 4561; CSKY-NEXT:    movi16 a3, 2562; CSKY-NEXT:    jsri32 [.LCPI21_0]563; CSKY-NEXT:    addi16 sp, sp, 8564; CSKY-NEXT:    ld32.w lr, (sp, 0) # 4-byte Folded Reload565; CSKY-NEXT:    addi16 sp, sp, 4566; CSKY-NEXT:    rts16567; CSKY-NEXT:    .p2align 1568; CSKY-NEXT:  # %bb.1:569; CSKY-NEXT:    .p2align 2570; CSKY-NEXT:  .LCPI21_0:571; CSKY-NEXT:    .long __atomic_compare_exchange_4572;573  %res = cmpxchg ptr %ptr, i32 %cmp, i32 %val acquire monotonic574  ret void575}576 577define void @cmpxchg_i32_acquire_acquire(ptr %ptr, i32 %cmp, i32 %val) nounwind {578; CSKY-LABEL: cmpxchg_i32_acquire_acquire:579; CSKY:       # %bb.0:580; CSKY-NEXT:    subi16 sp, sp, 4581; CSKY-NEXT:    st32.w lr, (sp, 0) # 4-byte Folded Spill582; CSKY-NEXT:    subi16 sp, sp, 8583; CSKY-NEXT:    st16.w a1, (sp, 4)584; CSKY-NEXT:    movi16 a1, 2585; CSKY-NEXT:    st16.w a1, (sp, 0)586; CSKY-NEXT:    addi16 a1, sp, 4587; CSKY-NEXT:    movi16 a3, 2588; CSKY-NEXT:    jsri32 [.LCPI22_0]589; CSKY-NEXT:    addi16 sp, sp, 8590; CSKY-NEXT:    ld32.w lr, (sp, 0) # 4-byte Folded Reload591; CSKY-NEXT:    addi16 sp, sp, 4592; CSKY-NEXT:    rts16593; CSKY-NEXT:    .p2align 1594; CSKY-NEXT:  # %bb.1:595; CSKY-NEXT:    .p2align 2596; CSKY-NEXT:  .LCPI22_0:597; CSKY-NEXT:    .long __atomic_compare_exchange_4598;599  %res = cmpxchg ptr %ptr, i32 %cmp, i32 %val acquire acquire600  ret void601}602 603define void @cmpxchg_i32_release_monotonic(ptr %ptr, i32 %cmp, i32 %val) nounwind {604; CSKY-LABEL: cmpxchg_i32_release_monotonic:605; CSKY:       # %bb.0:606; CSKY-NEXT:    subi16 sp, sp, 4607; CSKY-NEXT:    st32.w lr, (sp, 0) # 4-byte Folded Spill608; CSKY-NEXT:    subi16 sp, sp, 8609; CSKY-NEXT:    st16.w a1, (sp, 4)610; CSKY-NEXT:    movi16 a1, 0611; CSKY-NEXT:    st16.w a1, (sp, 0)612; CSKY-NEXT:    addi16 a1, sp, 4613; CSKY-NEXT:    movi16 a3, 3614; CSKY-NEXT:    jsri32 [.LCPI23_0]615; CSKY-NEXT:    addi16 sp, sp, 8616; CSKY-NEXT:    ld32.w lr, (sp, 0) # 4-byte Folded Reload617; CSKY-NEXT:    addi16 sp, sp, 4618; CSKY-NEXT:    rts16619; CSKY-NEXT:    .p2align 1620; CSKY-NEXT:  # %bb.1:621; CSKY-NEXT:    .p2align 2622; CSKY-NEXT:  .LCPI23_0:623; CSKY-NEXT:    .long __atomic_compare_exchange_4624;625  %res = cmpxchg ptr %ptr, i32 %cmp, i32 %val release monotonic626  ret void627}628 629define void @cmpxchg_i32_release_acquire(ptr %ptr, i32 %cmp, i32 %val) nounwind {630; CSKY-LABEL: cmpxchg_i32_release_acquire:631; CSKY:       # %bb.0:632; CSKY-NEXT:    subi16 sp, sp, 4633; CSKY-NEXT:    st32.w lr, (sp, 0) # 4-byte Folded Spill634; CSKY-NEXT:    subi16 sp, sp, 8635; CSKY-NEXT:    st16.w a1, (sp, 4)636; CSKY-NEXT:    movi16 a1, 2637; CSKY-NEXT:    st16.w a1, (sp, 0)638; CSKY-NEXT:    addi16 a1, sp, 4639; CSKY-NEXT:    movi16 a3, 3640; CSKY-NEXT:    jsri32 [.LCPI24_0]641; CSKY-NEXT:    addi16 sp, sp, 8642; CSKY-NEXT:    ld32.w lr, (sp, 0) # 4-byte Folded Reload643; CSKY-NEXT:    addi16 sp, sp, 4644; CSKY-NEXT:    rts16645; CSKY-NEXT:    .p2align 1646; CSKY-NEXT:  # %bb.1:647; CSKY-NEXT:    .p2align 2648; CSKY-NEXT:  .LCPI24_0:649; CSKY-NEXT:    .long __atomic_compare_exchange_4650;651  %res = cmpxchg ptr %ptr, i32 %cmp, i32 %val release acquire652  ret void653}654 655define void @cmpxchg_i32_acq_rel_monotonic(ptr %ptr, i32 %cmp, i32 %val) nounwind {656; CSKY-LABEL: cmpxchg_i32_acq_rel_monotonic:657; CSKY:       # %bb.0:658; CSKY-NEXT:    subi16 sp, sp, 4659; CSKY-NEXT:    st32.w lr, (sp, 0) # 4-byte Folded Spill660; CSKY-NEXT:    subi16 sp, sp, 8661; CSKY-NEXT:    st16.w a1, (sp, 4)662; CSKY-NEXT:    movi16 a1, 0663; CSKY-NEXT:    st16.w a1, (sp, 0)664; CSKY-NEXT:    addi16 a1, sp, 4665; CSKY-NEXT:    movi16 a3, 4666; CSKY-NEXT:    jsri32 [.LCPI25_0]667; CSKY-NEXT:    addi16 sp, sp, 8668; CSKY-NEXT:    ld32.w lr, (sp, 0) # 4-byte Folded Reload669; CSKY-NEXT:    addi16 sp, sp, 4670; CSKY-NEXT:    rts16671; CSKY-NEXT:    .p2align 1672; CSKY-NEXT:  # %bb.1:673; CSKY-NEXT:    .p2align 2674; CSKY-NEXT:  .LCPI25_0:675; CSKY-NEXT:    .long __atomic_compare_exchange_4676;677  %res = cmpxchg ptr %ptr, i32 %cmp, i32 %val acq_rel monotonic678  ret void679}680 681define void @cmpxchg_i32_acq_rel_acquire(ptr %ptr, i32 %cmp, i32 %val) nounwind {682; CSKY-LABEL: cmpxchg_i32_acq_rel_acquire:683; CSKY:       # %bb.0:684; CSKY-NEXT:    subi16 sp, sp, 4685; CSKY-NEXT:    st32.w lr, (sp, 0) # 4-byte Folded Spill686; CSKY-NEXT:    subi16 sp, sp, 8687; CSKY-NEXT:    st16.w a1, (sp, 4)688; CSKY-NEXT:    movi16 a1, 2689; CSKY-NEXT:    st16.w a1, (sp, 0)690; CSKY-NEXT:    addi16 a1, sp, 4691; CSKY-NEXT:    movi16 a3, 4692; CSKY-NEXT:    jsri32 [.LCPI26_0]693; CSKY-NEXT:    addi16 sp, sp, 8694; CSKY-NEXT:    ld32.w lr, (sp, 0) # 4-byte Folded Reload695; CSKY-NEXT:    addi16 sp, sp, 4696; CSKY-NEXT:    rts16697; CSKY-NEXT:    .p2align 1698; CSKY-NEXT:  # %bb.1:699; CSKY-NEXT:    .p2align 2700; CSKY-NEXT:  .LCPI26_0:701; CSKY-NEXT:    .long __atomic_compare_exchange_4702;703  %res = cmpxchg ptr %ptr, i32 %cmp, i32 %val acq_rel acquire704  ret void705}706 707define void @cmpxchg_i32_seq_cst_monotonic(ptr %ptr, i32 %cmp, i32 %val) nounwind {708; CSKY-LABEL: cmpxchg_i32_seq_cst_monotonic:709; CSKY:       # %bb.0:710; CSKY-NEXT:    subi16 sp, sp, 4711; CSKY-NEXT:    st32.w lr, (sp, 0) # 4-byte Folded Spill712; CSKY-NEXT:    subi16 sp, sp, 8713; CSKY-NEXT:    st16.w a1, (sp, 4)714; CSKY-NEXT:    movi16 a1, 0715; CSKY-NEXT:    st16.w a1, (sp, 0)716; CSKY-NEXT:    addi16 a1, sp, 4717; CSKY-NEXT:    movi16 a3, 5718; CSKY-NEXT:    jsri32 [.LCPI27_0]719; CSKY-NEXT:    addi16 sp, sp, 8720; CSKY-NEXT:    ld32.w lr, (sp, 0) # 4-byte Folded Reload721; CSKY-NEXT:    addi16 sp, sp, 4722; CSKY-NEXT:    rts16723; CSKY-NEXT:    .p2align 1724; CSKY-NEXT:  # %bb.1:725; CSKY-NEXT:    .p2align 2726; CSKY-NEXT:  .LCPI27_0:727; CSKY-NEXT:    .long __atomic_compare_exchange_4728;729  %res = cmpxchg ptr %ptr, i32 %cmp, i32 %val seq_cst monotonic730  ret void731}732 733define void @cmpxchg_i32_seq_cst_acquire(ptr %ptr, i32 %cmp, i32 %val) nounwind {734; CSKY-LABEL: cmpxchg_i32_seq_cst_acquire:735; CSKY:       # %bb.0:736; CSKY-NEXT:    subi16 sp, sp, 4737; CSKY-NEXT:    st32.w lr, (sp, 0) # 4-byte Folded Spill738; CSKY-NEXT:    subi16 sp, sp, 8739; CSKY-NEXT:    st16.w a1, (sp, 4)740; CSKY-NEXT:    movi16 a1, 2741; CSKY-NEXT:    st16.w a1, (sp, 0)742; CSKY-NEXT:    addi16 a1, sp, 4743; CSKY-NEXT:    movi16 a3, 5744; CSKY-NEXT:    jsri32 [.LCPI28_0]745; CSKY-NEXT:    addi16 sp, sp, 8746; CSKY-NEXT:    ld32.w lr, (sp, 0) # 4-byte Folded Reload747; CSKY-NEXT:    addi16 sp, sp, 4748; CSKY-NEXT:    rts16749; CSKY-NEXT:    .p2align 1750; CSKY-NEXT:  # %bb.1:751; CSKY-NEXT:    .p2align 2752; CSKY-NEXT:  .LCPI28_0:753; CSKY-NEXT:    .long __atomic_compare_exchange_4754;755  %res = cmpxchg ptr %ptr, i32 %cmp, i32 %val seq_cst acquire756  ret void757}758 759define void @cmpxchg_i32_seq_cst_seq_cst(ptr %ptr, i32 %cmp, i32 %val) nounwind {760; CSKY-LABEL: cmpxchg_i32_seq_cst_seq_cst:761; CSKY:       # %bb.0:762; CSKY-NEXT:    subi16 sp, sp, 4763; CSKY-NEXT:    st32.w lr, (sp, 0) # 4-byte Folded Spill764; CSKY-NEXT:    subi16 sp, sp, 8765; CSKY-NEXT:    st16.w a1, (sp, 4)766; CSKY-NEXT:    movi16 a1, 5767; CSKY-NEXT:    st16.w a1, (sp, 0)768; CSKY-NEXT:    addi16 a1, sp, 4769; CSKY-NEXT:    movi16 a3, 5770; CSKY-NEXT:    jsri32 [.LCPI29_0]771; CSKY-NEXT:    addi16 sp, sp, 8772; CSKY-NEXT:    ld32.w lr, (sp, 0) # 4-byte Folded Reload773; CSKY-NEXT:    addi16 sp, sp, 4774; CSKY-NEXT:    rts16775; CSKY-NEXT:    .p2align 1776; CSKY-NEXT:  # %bb.1:777; CSKY-NEXT:    .p2align 2778; CSKY-NEXT:  .LCPI29_0:779; CSKY-NEXT:    .long __atomic_compare_exchange_4780;781  %res = cmpxchg ptr %ptr, i32 %cmp, i32 %val seq_cst seq_cst782  ret void783}784 785define void @cmpxchg_i64_monotonic_monotonic(ptr %ptr, i64 %cmp, i64 %val) nounwind {786; CSKY-LABEL: cmpxchg_i64_monotonic_monotonic:787; CSKY:       # %bb.0:788; CSKY-NEXT:    subi16 sp, sp, 4789; CSKY-NEXT:    st32.w lr, (sp, 0) # 4-byte Folded Spill790; CSKY-NEXT:    subi16 sp, sp, 16791; CSKY-NEXT:    mov16 t0, a3792; CSKY-NEXT:    ld16.w a3, (sp, 20)793; CSKY-NEXT:    st16.w a2, (sp, 12)794; CSKY-NEXT:    st16.w a1, (sp, 8)795; CSKY-NEXT:    movi16 a1, 0796; CSKY-NEXT:    st16.w a1, (sp, 4)797; CSKY-NEXT:    st16.w a1, (sp, 0)798; CSKY-NEXT:    addi16 a1, sp, 8799; CSKY-NEXT:    mov16 a2, t0800; CSKY-NEXT:    jsri32 [.LCPI30_0]801; CSKY-NEXT:    addi16 sp, sp, 16802; CSKY-NEXT:    ld32.w lr, (sp, 0) # 4-byte Folded Reload803; CSKY-NEXT:    addi16 sp, sp, 4804; CSKY-NEXT:    rts16805; CSKY-NEXT:    .p2align 1806; CSKY-NEXT:  # %bb.1:807; CSKY-NEXT:    .p2align 2808; CSKY-NEXT:  .LCPI30_0:809; CSKY-NEXT:    .long __atomic_compare_exchange_8810;811  %res = cmpxchg ptr %ptr, i64 %cmp, i64 %val monotonic monotonic812  ret void813}814 815define void @cmpxchg_i64_acquire_monotonic(ptr %ptr, i64 %cmp, i64 %val) nounwind {816; CSKY-LABEL: cmpxchg_i64_acquire_monotonic:817; CSKY:       # %bb.0:818; CSKY-NEXT:    subi16 sp, sp, 4819; CSKY-NEXT:    st32.w lr, (sp, 0) # 4-byte Folded Spill820; CSKY-NEXT:    subi16 sp, sp, 16821; CSKY-NEXT:    mov16 t0, a3822; CSKY-NEXT:    ld16.w a3, (sp, 20)823; CSKY-NEXT:    st16.w a2, (sp, 12)824; CSKY-NEXT:    st16.w a1, (sp, 8)825; CSKY-NEXT:    movi16 a1, 0826; CSKY-NEXT:    st16.w a1, (sp, 4)827; CSKY-NEXT:    movi16 a1, 2828; CSKY-NEXT:    st16.w a1, (sp, 0)829; CSKY-NEXT:    addi16 a1, sp, 8830; CSKY-NEXT:    mov16 a2, t0831; CSKY-NEXT:    jsri32 [.LCPI31_0]832; CSKY-NEXT:    addi16 sp, sp, 16833; CSKY-NEXT:    ld32.w lr, (sp, 0) # 4-byte Folded Reload834; CSKY-NEXT:    addi16 sp, sp, 4835; CSKY-NEXT:    rts16836; CSKY-NEXT:    .p2align 1837; CSKY-NEXT:  # %bb.1:838; CSKY-NEXT:    .p2align 2839; CSKY-NEXT:  .LCPI31_0:840; CSKY-NEXT:    .long __atomic_compare_exchange_8841;842  %res = cmpxchg ptr %ptr, i64 %cmp, i64 %val acquire monotonic843  ret void844}845 846define void @cmpxchg_i64_acquire_acquire(ptr %ptr, i64 %cmp, i64 %val) nounwind {847; CSKY-LABEL: cmpxchg_i64_acquire_acquire:848; CSKY:       # %bb.0:849; CSKY-NEXT:    subi16 sp, sp, 4850; CSKY-NEXT:    st32.w lr, (sp, 0) # 4-byte Folded Spill851; CSKY-NEXT:    subi16 sp, sp, 16852; CSKY-NEXT:    mov16 t0, a3853; CSKY-NEXT:    ld16.w a3, (sp, 20)854; CSKY-NEXT:    st16.w a2, (sp, 12)855; CSKY-NEXT:    st16.w a1, (sp, 8)856; CSKY-NEXT:    movi16 a1, 2857; CSKY-NEXT:    st16.w a1, (sp, 4)858; CSKY-NEXT:    st16.w a1, (sp, 0)859; CSKY-NEXT:    addi16 a1, sp, 8860; CSKY-NEXT:    mov16 a2, t0861; CSKY-NEXT:    jsri32 [.LCPI32_0]862; CSKY-NEXT:    addi16 sp, sp, 16863; CSKY-NEXT:    ld32.w lr, (sp, 0) # 4-byte Folded Reload864; CSKY-NEXT:    addi16 sp, sp, 4865; CSKY-NEXT:    rts16866; CSKY-NEXT:    .p2align 1867; CSKY-NEXT:  # %bb.1:868; CSKY-NEXT:    .p2align 2869; CSKY-NEXT:  .LCPI32_0:870; CSKY-NEXT:    .long __atomic_compare_exchange_8871;872  %res = cmpxchg ptr %ptr, i64 %cmp, i64 %val acquire acquire873  ret void874}875 876define void @cmpxchg_i64_release_monotonic(ptr %ptr, i64 %cmp, i64 %val) nounwind {877; CSKY-LABEL: cmpxchg_i64_release_monotonic:878; CSKY:       # %bb.0:879; CSKY-NEXT:    subi16 sp, sp, 4880; CSKY-NEXT:    st32.w lr, (sp, 0) # 4-byte Folded Spill881; CSKY-NEXT:    subi16 sp, sp, 16882; CSKY-NEXT:    mov16 t0, a3883; CSKY-NEXT:    ld16.w a3, (sp, 20)884; CSKY-NEXT:    st16.w a2, (sp, 12)885; CSKY-NEXT:    st16.w a1, (sp, 8)886; CSKY-NEXT:    movi16 a1, 0887; CSKY-NEXT:    st16.w a1, (sp, 4)888; CSKY-NEXT:    movi16 a1, 3889; CSKY-NEXT:    st16.w a1, (sp, 0)890; CSKY-NEXT:    addi16 a1, sp, 8891; CSKY-NEXT:    mov16 a2, t0892; CSKY-NEXT:    jsri32 [.LCPI33_0]893; CSKY-NEXT:    addi16 sp, sp, 16894; CSKY-NEXT:    ld32.w lr, (sp, 0) # 4-byte Folded Reload895; CSKY-NEXT:    addi16 sp, sp, 4896; CSKY-NEXT:    rts16897; CSKY-NEXT:    .p2align 1898; CSKY-NEXT:  # %bb.1:899; CSKY-NEXT:    .p2align 2900; CSKY-NEXT:  .LCPI33_0:901; CSKY-NEXT:    .long __atomic_compare_exchange_8902;903  %res = cmpxchg ptr %ptr, i64 %cmp, i64 %val release monotonic904  ret void905}906 907define void @cmpxchg_i64_release_acquire(ptr %ptr, i64 %cmp, i64 %val) nounwind {908; CSKY-LABEL: cmpxchg_i64_release_acquire:909; CSKY:       # %bb.0:910; CSKY-NEXT:    subi16 sp, sp, 4911; CSKY-NEXT:    st32.w lr, (sp, 0) # 4-byte Folded Spill912; CSKY-NEXT:    subi16 sp, sp, 16913; CSKY-NEXT:    mov16 t0, a3914; CSKY-NEXT:    ld16.w a3, (sp, 20)915; CSKY-NEXT:    st16.w a2, (sp, 12)916; CSKY-NEXT:    st16.w a1, (sp, 8)917; CSKY-NEXT:    movi16 a1, 2918; CSKY-NEXT:    st16.w a1, (sp, 4)919; CSKY-NEXT:    movi16 a1, 3920; CSKY-NEXT:    st16.w a1, (sp, 0)921; CSKY-NEXT:    addi16 a1, sp, 8922; CSKY-NEXT:    mov16 a2, t0923; CSKY-NEXT:    jsri32 [.LCPI34_0]924; CSKY-NEXT:    addi16 sp, sp, 16925; CSKY-NEXT:    ld32.w lr, (sp, 0) # 4-byte Folded Reload926; CSKY-NEXT:    addi16 sp, sp, 4927; CSKY-NEXT:    rts16928; CSKY-NEXT:    .p2align 1929; CSKY-NEXT:  # %bb.1:930; CSKY-NEXT:    .p2align 2931; CSKY-NEXT:  .LCPI34_0:932; CSKY-NEXT:    .long __atomic_compare_exchange_8933;934  %res = cmpxchg ptr %ptr, i64 %cmp, i64 %val release acquire935  ret void936}937 938define void @cmpxchg_i64_acq_rel_monotonic(ptr %ptr, i64 %cmp, i64 %val) nounwind {939; CSKY-LABEL: cmpxchg_i64_acq_rel_monotonic:940; CSKY:       # %bb.0:941; CSKY-NEXT:    subi16 sp, sp, 4942; CSKY-NEXT:    st32.w lr, (sp, 0) # 4-byte Folded Spill943; CSKY-NEXT:    subi16 sp, sp, 16944; CSKY-NEXT:    mov16 t0, a3945; CSKY-NEXT:    ld16.w a3, (sp, 20)946; CSKY-NEXT:    st16.w a2, (sp, 12)947; CSKY-NEXT:    st16.w a1, (sp, 8)948; CSKY-NEXT:    movi16 a1, 0949; CSKY-NEXT:    st16.w a1, (sp, 4)950; CSKY-NEXT:    movi16 a1, 4951; CSKY-NEXT:    st16.w a1, (sp, 0)952; CSKY-NEXT:    addi16 a1, sp, 8953; CSKY-NEXT:    mov16 a2, t0954; CSKY-NEXT:    jsri32 [.LCPI35_0]955; CSKY-NEXT:    addi16 sp, sp, 16956; CSKY-NEXT:    ld32.w lr, (sp, 0) # 4-byte Folded Reload957; CSKY-NEXT:    addi16 sp, sp, 4958; CSKY-NEXT:    rts16959; CSKY-NEXT:    .p2align 1960; CSKY-NEXT:  # %bb.1:961; CSKY-NEXT:    .p2align 2962; CSKY-NEXT:  .LCPI35_0:963; CSKY-NEXT:    .long __atomic_compare_exchange_8964;965  %res = cmpxchg ptr %ptr, i64 %cmp, i64 %val acq_rel monotonic966  ret void967}968 969define void @cmpxchg_i64_acq_rel_acquire(ptr %ptr, i64 %cmp, i64 %val) nounwind {970; CSKY-LABEL: cmpxchg_i64_acq_rel_acquire:971; CSKY:       # %bb.0:972; CSKY-NEXT:    subi16 sp, sp, 4973; CSKY-NEXT:    st32.w lr, (sp, 0) # 4-byte Folded Spill974; CSKY-NEXT:    subi16 sp, sp, 16975; CSKY-NEXT:    mov16 t0, a3976; CSKY-NEXT:    ld16.w a3, (sp, 20)977; CSKY-NEXT:    st16.w a2, (sp, 12)978; CSKY-NEXT:    st16.w a1, (sp, 8)979; CSKY-NEXT:    movi16 a1, 2980; CSKY-NEXT:    st16.w a1, (sp, 4)981; CSKY-NEXT:    movi16 a1, 4982; CSKY-NEXT:    st16.w a1, (sp, 0)983; CSKY-NEXT:    addi16 a1, sp, 8984; CSKY-NEXT:    mov16 a2, t0985; CSKY-NEXT:    jsri32 [.LCPI36_0]986; CSKY-NEXT:    addi16 sp, sp, 16987; CSKY-NEXT:    ld32.w lr, (sp, 0) # 4-byte Folded Reload988; CSKY-NEXT:    addi16 sp, sp, 4989; CSKY-NEXT:    rts16990; CSKY-NEXT:    .p2align 1991; CSKY-NEXT:  # %bb.1:992; CSKY-NEXT:    .p2align 2993; CSKY-NEXT:  .LCPI36_0:994; CSKY-NEXT:    .long __atomic_compare_exchange_8995;996  %res = cmpxchg ptr %ptr, i64 %cmp, i64 %val acq_rel acquire997  ret void998}999 1000define void @cmpxchg_i64_seq_cst_monotonic(ptr %ptr, i64 %cmp, i64 %val) nounwind {1001; CSKY-LABEL: cmpxchg_i64_seq_cst_monotonic:1002; CSKY:       # %bb.0:1003; CSKY-NEXT:    subi16 sp, sp, 41004; CSKY-NEXT:    st32.w lr, (sp, 0) # 4-byte Folded Spill1005; CSKY-NEXT:    subi16 sp, sp, 161006; CSKY-NEXT:    mov16 t0, a31007; CSKY-NEXT:    ld16.w a3, (sp, 20)1008; CSKY-NEXT:    st16.w a2, (sp, 12)1009; CSKY-NEXT:    st16.w a1, (sp, 8)1010; CSKY-NEXT:    movi16 a1, 01011; CSKY-NEXT:    st16.w a1, (sp, 4)1012; CSKY-NEXT:    movi16 a1, 51013; CSKY-NEXT:    st16.w a1, (sp, 0)1014; CSKY-NEXT:    addi16 a1, sp, 81015; CSKY-NEXT:    mov16 a2, t01016; CSKY-NEXT:    jsri32 [.LCPI37_0]1017; CSKY-NEXT:    addi16 sp, sp, 161018; CSKY-NEXT:    ld32.w lr, (sp, 0) # 4-byte Folded Reload1019; CSKY-NEXT:    addi16 sp, sp, 41020; CSKY-NEXT:    rts161021; CSKY-NEXT:    .p2align 11022; CSKY-NEXT:  # %bb.1:1023; CSKY-NEXT:    .p2align 21024; CSKY-NEXT:  .LCPI37_0:1025; CSKY-NEXT:    .long __atomic_compare_exchange_81026;1027  %res = cmpxchg ptr %ptr, i64 %cmp, i64 %val seq_cst monotonic1028  ret void1029}1030 1031define void @cmpxchg_i64_seq_cst_acquire(ptr %ptr, i64 %cmp, i64 %val) nounwind {1032; CSKY-LABEL: cmpxchg_i64_seq_cst_acquire:1033; CSKY:       # %bb.0:1034; CSKY-NEXT:    subi16 sp, sp, 41035; CSKY-NEXT:    st32.w lr, (sp, 0) # 4-byte Folded Spill1036; CSKY-NEXT:    subi16 sp, sp, 161037; CSKY-NEXT:    mov16 t0, a31038; CSKY-NEXT:    ld16.w a3, (sp, 20)1039; CSKY-NEXT:    st16.w a2, (sp, 12)1040; CSKY-NEXT:    st16.w a1, (sp, 8)1041; CSKY-NEXT:    movi16 a1, 21042; CSKY-NEXT:    st16.w a1, (sp, 4)1043; CSKY-NEXT:    movi16 a1, 51044; CSKY-NEXT:    st16.w a1, (sp, 0)1045; CSKY-NEXT:    addi16 a1, sp, 81046; CSKY-NEXT:    mov16 a2, t01047; CSKY-NEXT:    jsri32 [.LCPI38_0]1048; CSKY-NEXT:    addi16 sp, sp, 161049; CSKY-NEXT:    ld32.w lr, (sp, 0) # 4-byte Folded Reload1050; CSKY-NEXT:    addi16 sp, sp, 41051; CSKY-NEXT:    rts161052; CSKY-NEXT:    .p2align 11053; CSKY-NEXT:  # %bb.1:1054; CSKY-NEXT:    .p2align 21055; CSKY-NEXT:  .LCPI38_0:1056; CSKY-NEXT:    .long __atomic_compare_exchange_81057;1058  %res = cmpxchg ptr %ptr, i64 %cmp, i64 %val seq_cst acquire1059  ret void1060}1061 1062define void @cmpxchg_i64_seq_cst_seq_cst(ptr %ptr, i64 %cmp, i64 %val) nounwind {1063; CSKY-LABEL: cmpxchg_i64_seq_cst_seq_cst:1064; CSKY:       # %bb.0:1065; CSKY-NEXT:    subi16 sp, sp, 41066; CSKY-NEXT:    st32.w lr, (sp, 0) # 4-byte Folded Spill1067; CSKY-NEXT:    subi16 sp, sp, 161068; CSKY-NEXT:    mov16 t0, a31069; CSKY-NEXT:    ld16.w a3, (sp, 20)1070; CSKY-NEXT:    st16.w a2, (sp, 12)1071; CSKY-NEXT:    st16.w a1, (sp, 8)1072; CSKY-NEXT:    movi16 a1, 51073; CSKY-NEXT:    st16.w a1, (sp, 4)1074; CSKY-NEXT:    st16.w a1, (sp, 0)1075; CSKY-NEXT:    addi16 a1, sp, 81076; CSKY-NEXT:    mov16 a2, t01077; CSKY-NEXT:    jsri32 [.LCPI39_0]1078; CSKY-NEXT:    addi16 sp, sp, 161079; CSKY-NEXT:    ld32.w lr, (sp, 0) # 4-byte Folded Reload1080; CSKY-NEXT:    addi16 sp, sp, 41081; CSKY-NEXT:    rts161082; CSKY-NEXT:    .p2align 11083; CSKY-NEXT:  # %bb.1:1084; CSKY-NEXT:    .p2align 21085; CSKY-NEXT:  .LCPI39_0:1086; CSKY-NEXT:    .long __atomic_compare_exchange_81087;1088  %res = cmpxchg ptr %ptr, i64 %cmp, i64 %val seq_cst seq_cst1089  ret void1090}1091