6808 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 i8 @atomicrmw_xchg_i8_monotonic(ptr %a, i8 %b) nounwind {6; CSKY-LABEL: atomicrmw_xchg_i8_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: movi16 a2, 011; CSKY-NEXT: jsri32 [.LCPI0_0]12; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload13; CSKY-NEXT: addi16 sp, sp, 414; CSKY-NEXT: rts1615; CSKY-NEXT: .p2align 116; CSKY-NEXT: # %bb.1:17; CSKY-NEXT: .p2align 218; CSKY-NEXT: .LCPI0_0:19; CSKY-NEXT: .long __atomic_exchange_120 %1 = atomicrmw xchg ptr %a, i8 %b monotonic21 ret i8 %122}23 24define i8 @atomicrmw_xchg_i8_acquire(ptr %a, i8 %b) nounwind {25; CSKY-LABEL: atomicrmw_xchg_i8_acquire:26; CSKY: # %bb.0:27; CSKY-NEXT: subi16 sp, sp, 428; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill29; CSKY-NEXT: movi16 a2, 230; CSKY-NEXT: jsri32 [.LCPI1_0]31; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload32; CSKY-NEXT: addi16 sp, sp, 433; CSKY-NEXT: rts1634; CSKY-NEXT: .p2align 135; CSKY-NEXT: # %bb.1:36; CSKY-NEXT: .p2align 237; CSKY-NEXT: .LCPI1_0:38; CSKY-NEXT: .long __atomic_exchange_139 %1 = atomicrmw xchg ptr %a, i8 %b acquire40 ret i8 %141}42 43define i8 @atomicrmw_xchg_i8_release(ptr %a, i8 %b) nounwind {44; CSKY-LABEL: atomicrmw_xchg_i8_release:45; CSKY: # %bb.0:46; CSKY-NEXT: subi16 sp, sp, 447; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill48; CSKY-NEXT: movi16 a2, 349; CSKY-NEXT: jsri32 [.LCPI2_0]50; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload51; CSKY-NEXT: addi16 sp, sp, 452; CSKY-NEXT: rts1653; CSKY-NEXT: .p2align 154; CSKY-NEXT: # %bb.1:55; CSKY-NEXT: .p2align 256; CSKY-NEXT: .LCPI2_0:57; CSKY-NEXT: .long __atomic_exchange_158 %1 = atomicrmw xchg ptr %a, i8 %b release59 ret i8 %160}61 62define i8 @atomicrmw_xchg_i8_acq_rel(ptr %a, i8 %b) nounwind {63; CSKY-LABEL: atomicrmw_xchg_i8_acq_rel:64; CSKY: # %bb.0:65; CSKY-NEXT: subi16 sp, sp, 466; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill67; CSKY-NEXT: movi16 a2, 468; CSKY-NEXT: jsri32 [.LCPI3_0]69; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload70; CSKY-NEXT: addi16 sp, sp, 471; CSKY-NEXT: rts1672; CSKY-NEXT: .p2align 173; CSKY-NEXT: # %bb.1:74; CSKY-NEXT: .p2align 275; CSKY-NEXT: .LCPI3_0:76; CSKY-NEXT: .long __atomic_exchange_177 %1 = atomicrmw xchg ptr %a, i8 %b acq_rel78 ret i8 %179}80 81define i8 @atomicrmw_xchg_i8_seq_cst(ptr %a, i8 %b) nounwind {82; CSKY-LABEL: atomicrmw_xchg_i8_seq_cst:83; CSKY: # %bb.0:84; CSKY-NEXT: subi16 sp, sp, 485; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill86; CSKY-NEXT: movi16 a2, 587; CSKY-NEXT: jsri32 [.LCPI4_0]88; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload89; CSKY-NEXT: addi16 sp, sp, 490; CSKY-NEXT: rts1691; CSKY-NEXT: .p2align 192; CSKY-NEXT: # %bb.1:93; CSKY-NEXT: .p2align 294; CSKY-NEXT: .LCPI4_0:95; CSKY-NEXT: .long __atomic_exchange_196 %1 = atomicrmw xchg ptr %a, i8 %b seq_cst97 ret i8 %198}99 100define i8 @atomicrmw_add_i8_monotonic(ptr %a, i8 %b) nounwind {101; CSKY-LABEL: atomicrmw_add_i8_monotonic:102; CSKY: # %bb.0:103; CSKY-NEXT: subi16 sp, sp, 4104; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill105; CSKY-NEXT: movi16 a2, 0106; CSKY-NEXT: jsri32 [.LCPI5_0]107; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload108; CSKY-NEXT: addi16 sp, sp, 4109; CSKY-NEXT: rts16110; CSKY-NEXT: .p2align 1111; CSKY-NEXT: # %bb.1:112; CSKY-NEXT: .p2align 2113; CSKY-NEXT: .LCPI5_0:114; CSKY-NEXT: .long __atomic_fetch_add_1115 %1 = atomicrmw add ptr %a, i8 %b monotonic116 ret i8 %1117}118 119define i8 @atomicrmw_add_i8_acquire(ptr %a, i8 %b) nounwind {120; CSKY-LABEL: atomicrmw_add_i8_acquire:121; CSKY: # %bb.0:122; CSKY-NEXT: subi16 sp, sp, 4123; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill124; CSKY-NEXT: movi16 a2, 2125; CSKY-NEXT: jsri32 [.LCPI6_0]126; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload127; CSKY-NEXT: addi16 sp, sp, 4128; CSKY-NEXT: rts16129; CSKY-NEXT: .p2align 1130; CSKY-NEXT: # %bb.1:131; CSKY-NEXT: .p2align 2132; CSKY-NEXT: .LCPI6_0:133; CSKY-NEXT: .long __atomic_fetch_add_1134 %1 = atomicrmw add ptr %a, i8 %b acquire135 ret i8 %1136}137 138define i8 @atomicrmw_add_i8_release(ptr %a, i8 %b) nounwind {139; CSKY-LABEL: atomicrmw_add_i8_release:140; CSKY: # %bb.0:141; CSKY-NEXT: subi16 sp, sp, 4142; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill143; CSKY-NEXT: movi16 a2, 3144; CSKY-NEXT: jsri32 [.LCPI7_0]145; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload146; CSKY-NEXT: addi16 sp, sp, 4147; CSKY-NEXT: rts16148; CSKY-NEXT: .p2align 1149; CSKY-NEXT: # %bb.1:150; CSKY-NEXT: .p2align 2151; CSKY-NEXT: .LCPI7_0:152; CSKY-NEXT: .long __atomic_fetch_add_1153 %1 = atomicrmw add ptr %a, i8 %b release154 ret i8 %1155}156 157define i8 @atomicrmw_add_i8_acq_rel(ptr %a, i8 %b) nounwind {158; CSKY-LABEL: atomicrmw_add_i8_acq_rel:159; CSKY: # %bb.0:160; CSKY-NEXT: subi16 sp, sp, 4161; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill162; CSKY-NEXT: movi16 a2, 4163; CSKY-NEXT: jsri32 [.LCPI8_0]164; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload165; CSKY-NEXT: addi16 sp, sp, 4166; CSKY-NEXT: rts16167; CSKY-NEXT: .p2align 1168; CSKY-NEXT: # %bb.1:169; CSKY-NEXT: .p2align 2170; CSKY-NEXT: .LCPI8_0:171; CSKY-NEXT: .long __atomic_fetch_add_1172 %1 = atomicrmw add ptr %a, i8 %b acq_rel173 ret i8 %1174}175 176define i8 @atomicrmw_add_i8_seq_cst(ptr %a, i8 %b) nounwind {177; CSKY-LABEL: atomicrmw_add_i8_seq_cst:178; CSKY: # %bb.0:179; CSKY-NEXT: subi16 sp, sp, 4180; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill181; CSKY-NEXT: movi16 a2, 5182; CSKY-NEXT: jsri32 [.LCPI9_0]183; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload184; CSKY-NEXT: addi16 sp, sp, 4185; CSKY-NEXT: rts16186; CSKY-NEXT: .p2align 1187; CSKY-NEXT: # %bb.1:188; CSKY-NEXT: .p2align 2189; CSKY-NEXT: .LCPI9_0:190; CSKY-NEXT: .long __atomic_fetch_add_1191 %1 = atomicrmw add ptr %a, i8 %b seq_cst192 ret i8 %1193}194 195define i8 @atomicrmw_sub_i8_monotonic(ptr %a, i8 %b) nounwind {196; CSKY-LABEL: atomicrmw_sub_i8_monotonic:197; CSKY: # %bb.0:198; CSKY-NEXT: subi16 sp, sp, 4199; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill200; CSKY-NEXT: movi16 a2, 0201; CSKY-NEXT: jsri32 [.LCPI10_0]202; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload203; CSKY-NEXT: addi16 sp, sp, 4204; CSKY-NEXT: rts16205; CSKY-NEXT: .p2align 1206; CSKY-NEXT: # %bb.1:207; CSKY-NEXT: .p2align 2208; CSKY-NEXT: .LCPI10_0:209; CSKY-NEXT: .long __atomic_fetch_sub_1210 %1 = atomicrmw sub ptr %a, i8 %b monotonic211 ret i8 %1212}213 214define i8 @atomicrmw_sub_i8_acquire(ptr %a, i8 %b) nounwind {215; CSKY-LABEL: atomicrmw_sub_i8_acquire:216; CSKY: # %bb.0:217; CSKY-NEXT: subi16 sp, sp, 4218; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill219; CSKY-NEXT: movi16 a2, 2220; CSKY-NEXT: jsri32 [.LCPI11_0]221; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload222; CSKY-NEXT: addi16 sp, sp, 4223; CSKY-NEXT: rts16224; CSKY-NEXT: .p2align 1225; CSKY-NEXT: # %bb.1:226; CSKY-NEXT: .p2align 2227; CSKY-NEXT: .LCPI11_0:228; CSKY-NEXT: .long __atomic_fetch_sub_1229 %1 = atomicrmw sub ptr %a, i8 %b acquire230 ret i8 %1231}232 233define i8 @atomicrmw_sub_i8_release(ptr %a, i8 %b) nounwind {234; CSKY-LABEL: atomicrmw_sub_i8_release:235; CSKY: # %bb.0:236; CSKY-NEXT: subi16 sp, sp, 4237; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill238; CSKY-NEXT: movi16 a2, 3239; CSKY-NEXT: jsri32 [.LCPI12_0]240; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload241; CSKY-NEXT: addi16 sp, sp, 4242; CSKY-NEXT: rts16243; CSKY-NEXT: .p2align 1244; CSKY-NEXT: # %bb.1:245; CSKY-NEXT: .p2align 2246; CSKY-NEXT: .LCPI12_0:247; CSKY-NEXT: .long __atomic_fetch_sub_1248 %1 = atomicrmw sub ptr %a, i8 %b release249 ret i8 %1250}251 252define i8 @atomicrmw_sub_i8_acq_rel(ptr %a, i8 %b) nounwind {253; CSKY-LABEL: atomicrmw_sub_i8_acq_rel:254; CSKY: # %bb.0:255; CSKY-NEXT: subi16 sp, sp, 4256; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill257; CSKY-NEXT: movi16 a2, 4258; CSKY-NEXT: jsri32 [.LCPI13_0]259; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload260; CSKY-NEXT: addi16 sp, sp, 4261; CSKY-NEXT: rts16262; CSKY-NEXT: .p2align 1263; CSKY-NEXT: # %bb.1:264; CSKY-NEXT: .p2align 2265; CSKY-NEXT: .LCPI13_0:266; CSKY-NEXT: .long __atomic_fetch_sub_1267 %1 = atomicrmw sub ptr %a, i8 %b acq_rel268 ret i8 %1269}270 271define i8 @atomicrmw_sub_i8_seq_cst(ptr %a, i8 %b) nounwind {272; CSKY-LABEL: atomicrmw_sub_i8_seq_cst:273; CSKY: # %bb.0:274; CSKY-NEXT: subi16 sp, sp, 4275; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill276; CSKY-NEXT: movi16 a2, 5277; CSKY-NEXT: jsri32 [.LCPI14_0]278; 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: .LCPI14_0:285; CSKY-NEXT: .long __atomic_fetch_sub_1286 %1 = atomicrmw sub ptr %a, i8 %b seq_cst287 ret i8 %1288}289 290define i8 @atomicrmw_and_i8_monotonic(ptr %a, i8 %b) nounwind {291; CSKY-LABEL: atomicrmw_and_i8_monotonic:292; CSKY: # %bb.0:293; CSKY-NEXT: subi16 sp, sp, 4294; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill295; CSKY-NEXT: movi16 a2, 0296; CSKY-NEXT: jsri32 [.LCPI15_0]297; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload298; CSKY-NEXT: addi16 sp, sp, 4299; CSKY-NEXT: rts16300; CSKY-NEXT: .p2align 1301; CSKY-NEXT: # %bb.1:302; CSKY-NEXT: .p2align 2303; CSKY-NEXT: .LCPI15_0:304; CSKY-NEXT: .long __atomic_fetch_and_1305 %1 = atomicrmw and ptr %a, i8 %b monotonic306 ret i8 %1307}308 309define i8 @atomicrmw_and_i8_acquire(ptr %a, i8 %b) nounwind {310; CSKY-LABEL: atomicrmw_and_i8_acquire:311; CSKY: # %bb.0:312; CSKY-NEXT: subi16 sp, sp, 4313; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill314; CSKY-NEXT: movi16 a2, 2315; CSKY-NEXT: jsri32 [.LCPI16_0]316; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload317; CSKY-NEXT: addi16 sp, sp, 4318; CSKY-NEXT: rts16319; CSKY-NEXT: .p2align 1320; CSKY-NEXT: # %bb.1:321; CSKY-NEXT: .p2align 2322; CSKY-NEXT: .LCPI16_0:323; CSKY-NEXT: .long __atomic_fetch_and_1324 %1 = atomicrmw and ptr %a, i8 %b acquire325 ret i8 %1326}327 328define i8 @atomicrmw_and_i8_release(ptr %a, i8 %b) nounwind {329; CSKY-LABEL: atomicrmw_and_i8_release:330; CSKY: # %bb.0:331; CSKY-NEXT: subi16 sp, sp, 4332; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill333; CSKY-NEXT: movi16 a2, 3334; CSKY-NEXT: jsri32 [.LCPI17_0]335; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload336; CSKY-NEXT: addi16 sp, sp, 4337; CSKY-NEXT: rts16338; CSKY-NEXT: .p2align 1339; CSKY-NEXT: # %bb.1:340; CSKY-NEXT: .p2align 2341; CSKY-NEXT: .LCPI17_0:342; CSKY-NEXT: .long __atomic_fetch_and_1343 %1 = atomicrmw and ptr %a, i8 %b release344 ret i8 %1345}346 347define i8 @atomicrmw_and_i8_acq_rel(ptr %a, i8 %b) nounwind {348; CSKY-LABEL: atomicrmw_and_i8_acq_rel:349; CSKY: # %bb.0:350; CSKY-NEXT: subi16 sp, sp, 4351; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill352; CSKY-NEXT: movi16 a2, 4353; CSKY-NEXT: jsri32 [.LCPI18_0]354; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload355; CSKY-NEXT: addi16 sp, sp, 4356; CSKY-NEXT: rts16357; CSKY-NEXT: .p2align 1358; CSKY-NEXT: # %bb.1:359; CSKY-NEXT: .p2align 2360; CSKY-NEXT: .LCPI18_0:361; CSKY-NEXT: .long __atomic_fetch_and_1362 %1 = atomicrmw and ptr %a, i8 %b acq_rel363 ret i8 %1364}365 366define i8 @atomicrmw_and_i8_seq_cst(ptr %a, i8 %b) nounwind {367; CSKY-LABEL: atomicrmw_and_i8_seq_cst:368; CSKY: # %bb.0:369; CSKY-NEXT: subi16 sp, sp, 4370; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill371; CSKY-NEXT: movi16 a2, 5372; CSKY-NEXT: jsri32 [.LCPI19_0]373; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload374; CSKY-NEXT: addi16 sp, sp, 4375; CSKY-NEXT: rts16376; CSKY-NEXT: .p2align 1377; CSKY-NEXT: # %bb.1:378; CSKY-NEXT: .p2align 2379; CSKY-NEXT: .LCPI19_0:380; CSKY-NEXT: .long __atomic_fetch_and_1381 %1 = atomicrmw and ptr %a, i8 %b seq_cst382 ret i8 %1383}384 385define i8 @atomicrmw_nand_i8_monotonic(ptr %a, i8 %b) nounwind {386; CSKY-LABEL: atomicrmw_nand_i8_monotonic:387; CSKY: # %bb.0:388; CSKY-NEXT: subi16 sp, sp, 4389; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill390; CSKY-NEXT: movi16 a2, 0391; CSKY-NEXT: jsri32 [.LCPI20_0]392; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload393; CSKY-NEXT: addi16 sp, sp, 4394; CSKY-NEXT: rts16395; CSKY-NEXT: .p2align 1396; CSKY-NEXT: # %bb.1:397; CSKY-NEXT: .p2align 2398; CSKY-NEXT: .LCPI20_0:399; CSKY-NEXT: .long __atomic_fetch_nand_1400 %1 = atomicrmw nand ptr %a, i8 %b monotonic401 ret i8 %1402}403 404define i8 @atomicrmw_nand_i8_acquire(ptr %a, i8 %b) nounwind {405; CSKY-LABEL: atomicrmw_nand_i8_acquire:406; CSKY: # %bb.0:407; CSKY-NEXT: subi16 sp, sp, 4408; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill409; CSKY-NEXT: movi16 a2, 2410; CSKY-NEXT: jsri32 [.LCPI21_0]411; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload412; CSKY-NEXT: addi16 sp, sp, 4413; CSKY-NEXT: rts16414; CSKY-NEXT: .p2align 1415; CSKY-NEXT: # %bb.1:416; CSKY-NEXT: .p2align 2417; CSKY-NEXT: .LCPI21_0:418; CSKY-NEXT: .long __atomic_fetch_nand_1419 %1 = atomicrmw nand ptr %a, i8 %b acquire420 ret i8 %1421}422 423define i8 @atomicrmw_nand_i8_release(ptr %a, i8 %b) nounwind {424; CSKY-LABEL: atomicrmw_nand_i8_release:425; CSKY: # %bb.0:426; CSKY-NEXT: subi16 sp, sp, 4427; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill428; CSKY-NEXT: movi16 a2, 3429; CSKY-NEXT: jsri32 [.LCPI22_0]430; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload431; CSKY-NEXT: addi16 sp, sp, 4432; CSKY-NEXT: rts16433; CSKY-NEXT: .p2align 1434; CSKY-NEXT: # %bb.1:435; CSKY-NEXT: .p2align 2436; CSKY-NEXT: .LCPI22_0:437; CSKY-NEXT: .long __atomic_fetch_nand_1438 %1 = atomicrmw nand ptr %a, i8 %b release439 ret i8 %1440}441 442define i8 @atomicrmw_nand_i8_acq_rel(ptr %a, i8 %b) nounwind {443; CSKY-LABEL: atomicrmw_nand_i8_acq_rel:444; CSKY: # %bb.0:445; CSKY-NEXT: subi16 sp, sp, 4446; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill447; CSKY-NEXT: movi16 a2, 4448; CSKY-NEXT: jsri32 [.LCPI23_0]449; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload450; CSKY-NEXT: addi16 sp, sp, 4451; CSKY-NEXT: rts16452; CSKY-NEXT: .p2align 1453; CSKY-NEXT: # %bb.1:454; CSKY-NEXT: .p2align 2455; CSKY-NEXT: .LCPI23_0:456; CSKY-NEXT: .long __atomic_fetch_nand_1457 %1 = atomicrmw nand ptr %a, i8 %b acq_rel458 ret i8 %1459}460 461define i8 @atomicrmw_nand_i8_seq_cst(ptr %a, i8 %b) nounwind {462; CSKY-LABEL: atomicrmw_nand_i8_seq_cst:463; CSKY: # %bb.0:464; CSKY-NEXT: subi16 sp, sp, 4465; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill466; CSKY-NEXT: movi16 a2, 5467; CSKY-NEXT: jsri32 [.LCPI24_0]468; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload469; CSKY-NEXT: addi16 sp, sp, 4470; CSKY-NEXT: rts16471; CSKY-NEXT: .p2align 1472; CSKY-NEXT: # %bb.1:473; CSKY-NEXT: .p2align 2474; CSKY-NEXT: .LCPI24_0:475; CSKY-NEXT: .long __atomic_fetch_nand_1476 %1 = atomicrmw nand ptr %a, i8 %b seq_cst477 ret i8 %1478}479 480define i8 @atomicrmw_or_i8_monotonic(ptr %a, i8 %b) nounwind {481; CSKY-LABEL: atomicrmw_or_i8_monotonic:482; CSKY: # %bb.0:483; CSKY-NEXT: subi16 sp, sp, 4484; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill485; CSKY-NEXT: movi16 a2, 0486; CSKY-NEXT: jsri32 [.LCPI25_0]487; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload488; CSKY-NEXT: addi16 sp, sp, 4489; CSKY-NEXT: rts16490; CSKY-NEXT: .p2align 1491; CSKY-NEXT: # %bb.1:492; CSKY-NEXT: .p2align 2493; CSKY-NEXT: .LCPI25_0:494; CSKY-NEXT: .long __atomic_fetch_or_1495 %1 = atomicrmw or ptr %a, i8 %b monotonic496 ret i8 %1497}498 499define i8 @atomicrmw_or_i8_acquire(ptr %a, i8 %b) nounwind {500; CSKY-LABEL: atomicrmw_or_i8_acquire:501; CSKY: # %bb.0:502; CSKY-NEXT: subi16 sp, sp, 4503; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill504; CSKY-NEXT: movi16 a2, 2505; CSKY-NEXT: jsri32 [.LCPI26_0]506; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload507; CSKY-NEXT: addi16 sp, sp, 4508; CSKY-NEXT: rts16509; CSKY-NEXT: .p2align 1510; CSKY-NEXT: # %bb.1:511; CSKY-NEXT: .p2align 2512; CSKY-NEXT: .LCPI26_0:513; CSKY-NEXT: .long __atomic_fetch_or_1514 %1 = atomicrmw or ptr %a, i8 %b acquire515 ret i8 %1516}517 518define i8 @atomicrmw_or_i8_release(ptr %a, i8 %b) nounwind {519; CSKY-LABEL: atomicrmw_or_i8_release:520; CSKY: # %bb.0:521; CSKY-NEXT: subi16 sp, sp, 4522; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill523; CSKY-NEXT: movi16 a2, 3524; CSKY-NEXT: jsri32 [.LCPI27_0]525; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload526; CSKY-NEXT: addi16 sp, sp, 4527; CSKY-NEXT: rts16528; CSKY-NEXT: .p2align 1529; CSKY-NEXT: # %bb.1:530; CSKY-NEXT: .p2align 2531; CSKY-NEXT: .LCPI27_0:532; CSKY-NEXT: .long __atomic_fetch_or_1533 %1 = atomicrmw or ptr %a, i8 %b release534 ret i8 %1535}536 537define i8 @atomicrmw_or_i8_acq_rel(ptr %a, i8 %b) nounwind {538; CSKY-LABEL: atomicrmw_or_i8_acq_rel:539; CSKY: # %bb.0:540; CSKY-NEXT: subi16 sp, sp, 4541; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill542; CSKY-NEXT: movi16 a2, 4543; CSKY-NEXT: jsri32 [.LCPI28_0]544; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload545; CSKY-NEXT: addi16 sp, sp, 4546; CSKY-NEXT: rts16547; CSKY-NEXT: .p2align 1548; CSKY-NEXT: # %bb.1:549; CSKY-NEXT: .p2align 2550; CSKY-NEXT: .LCPI28_0:551; CSKY-NEXT: .long __atomic_fetch_or_1552 %1 = atomicrmw or ptr %a, i8 %b acq_rel553 ret i8 %1554}555 556define i8 @atomicrmw_or_i8_seq_cst(ptr %a, i8 %b) nounwind {557; CSKY-LABEL: atomicrmw_or_i8_seq_cst:558; CSKY: # %bb.0:559; CSKY-NEXT: subi16 sp, sp, 4560; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill561; CSKY-NEXT: movi16 a2, 5562; CSKY-NEXT: jsri32 [.LCPI29_0]563; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload564; CSKY-NEXT: addi16 sp, sp, 4565; CSKY-NEXT: rts16566; CSKY-NEXT: .p2align 1567; CSKY-NEXT: # %bb.1:568; CSKY-NEXT: .p2align 2569; CSKY-NEXT: .LCPI29_0:570; CSKY-NEXT: .long __atomic_fetch_or_1571 %1 = atomicrmw or ptr %a, i8 %b seq_cst572 ret i8 %1573}574 575define i8 @atomicrmw_xor_i8_monotonic(ptr %a, i8 %b) nounwind {576; CSKY-LABEL: atomicrmw_xor_i8_monotonic:577; CSKY: # %bb.0:578; CSKY-NEXT: subi16 sp, sp, 4579; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill580; CSKY-NEXT: movi16 a2, 0581; CSKY-NEXT: jsri32 [.LCPI30_0]582; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload583; CSKY-NEXT: addi16 sp, sp, 4584; CSKY-NEXT: rts16585; CSKY-NEXT: .p2align 1586; CSKY-NEXT: # %bb.1:587; CSKY-NEXT: .p2align 2588; CSKY-NEXT: .LCPI30_0:589; CSKY-NEXT: .long __atomic_fetch_xor_1590 %1 = atomicrmw xor ptr %a, i8 %b monotonic591 ret i8 %1592}593 594define i8 @atomicrmw_xor_i8_acquire(ptr %a, i8 %b) nounwind {595; CSKY-LABEL: atomicrmw_xor_i8_acquire:596; CSKY: # %bb.0:597; CSKY-NEXT: subi16 sp, sp, 4598; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill599; CSKY-NEXT: movi16 a2, 2600; CSKY-NEXT: jsri32 [.LCPI31_0]601; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload602; CSKY-NEXT: addi16 sp, sp, 4603; CSKY-NEXT: rts16604; CSKY-NEXT: .p2align 1605; CSKY-NEXT: # %bb.1:606; CSKY-NEXT: .p2align 2607; CSKY-NEXT: .LCPI31_0:608; CSKY-NEXT: .long __atomic_fetch_xor_1609 %1 = atomicrmw xor ptr %a, i8 %b acquire610 ret i8 %1611}612 613define i8 @atomicrmw_xor_i8_release(ptr %a, i8 %b) nounwind {614; CSKY-LABEL: atomicrmw_xor_i8_release:615; CSKY: # %bb.0:616; CSKY-NEXT: subi16 sp, sp, 4617; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill618; CSKY-NEXT: movi16 a2, 3619; CSKY-NEXT: jsri32 [.LCPI32_0]620; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload621; CSKY-NEXT: addi16 sp, sp, 4622; CSKY-NEXT: rts16623; CSKY-NEXT: .p2align 1624; CSKY-NEXT: # %bb.1:625; CSKY-NEXT: .p2align 2626; CSKY-NEXT: .LCPI32_0:627; CSKY-NEXT: .long __atomic_fetch_xor_1628 %1 = atomicrmw xor ptr %a, i8 %b release629 ret i8 %1630}631 632define i8 @atomicrmw_xor_i8_acq_rel(ptr %a, i8 %b) nounwind {633; CSKY-LABEL: atomicrmw_xor_i8_acq_rel:634; CSKY: # %bb.0:635; CSKY-NEXT: subi16 sp, sp, 4636; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill637; CSKY-NEXT: movi16 a2, 4638; CSKY-NEXT: jsri32 [.LCPI33_0]639; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload640; CSKY-NEXT: addi16 sp, sp, 4641; CSKY-NEXT: rts16642; CSKY-NEXT: .p2align 1643; CSKY-NEXT: # %bb.1:644; CSKY-NEXT: .p2align 2645; CSKY-NEXT: .LCPI33_0:646; CSKY-NEXT: .long __atomic_fetch_xor_1647 %1 = atomicrmw xor ptr %a, i8 %b acq_rel648 ret i8 %1649}650 651define i8 @atomicrmw_xor_i8_seq_cst(ptr %a, i8 %b) nounwind {652; CSKY-LABEL: atomicrmw_xor_i8_seq_cst:653; CSKY: # %bb.0:654; CSKY-NEXT: subi16 sp, sp, 4655; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill656; CSKY-NEXT: movi16 a2, 5657; CSKY-NEXT: jsri32 [.LCPI34_0]658; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload659; CSKY-NEXT: addi16 sp, sp, 4660; CSKY-NEXT: rts16661; CSKY-NEXT: .p2align 1662; CSKY-NEXT: # %bb.1:663; CSKY-NEXT: .p2align 2664; CSKY-NEXT: .LCPI34_0:665; CSKY-NEXT: .long __atomic_fetch_xor_1666 %1 = atomicrmw xor ptr %a, i8 %b seq_cst667 ret i8 %1668}669 670define i8 @atomicrmw_max_i8_monotonic(ptr %a, i8 %b) nounwind {671; CSKY-LABEL: atomicrmw_max_i8_monotonic:672; CSKY: # %bb.0:673; CSKY-NEXT: subi16 sp, sp, 20674; CSKY-NEXT: st16.w l3, (sp, 16) # 4-byte Folded Spill675; CSKY-NEXT: st16.w l2, (sp, 12) # 4-byte Folded Spill676; CSKY-NEXT: st16.w l1, (sp, 8) # 4-byte Folded Spill677; CSKY-NEXT: st16.w l0, (sp, 4) # 4-byte Folded Spill678; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill679; CSKY-NEXT: subi16 sp, sp, 8680; CSKY-NEXT: mov16 l0, a1681; CSKY-NEXT: mov16 l1, a0682; CSKY-NEXT: ld16.b a0, (a0, 0)683; CSKY-NEXT: sextb16 l2, a1684; CSKY-NEXT: movi16 l3, 0685; CSKY-NEXT: .LBB35_1: # %atomicrmw.start686; CSKY-NEXT: # =>This Inner Loop Header: Depth=1687; CSKY-NEXT: sextb16 a1, a0688; CSKY-NEXT: cmplt16 l2, a1689; CSKY-NEXT: mov16 a2, l0690; CSKY-NEXT: movt32 a2, a0691; CSKY-NEXT: st32.b a0, (sp, 7)692; CSKY-NEXT: st16.w l3, (sp, 0)693; CSKY-NEXT: mov16 a0, l1694; CSKY-NEXT: addi32 a1, sp, 7695; CSKY-NEXT: movi16 a3, 0696; CSKY-NEXT: jsri32 [.LCPI35_0]697; CSKY-NEXT: mov16 a1, a0698; CSKY-NEXT: ld32.b a0, (sp, 7)699; CSKY-NEXT: bez32 a1, .LBB35_1700; CSKY-NEXT: # %bb.2: # %atomicrmw.end701; CSKY-NEXT: addi16 sp, sp, 8702; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload703; CSKY-NEXT: ld16.w l0, (sp, 4) # 4-byte Folded Reload704; CSKY-NEXT: ld16.w l1, (sp, 8) # 4-byte Folded Reload705; CSKY-NEXT: ld16.w l2, (sp, 12) # 4-byte Folded Reload706; CSKY-NEXT: ld16.w l3, (sp, 16) # 4-byte Folded Reload707; CSKY-NEXT: addi16 sp, sp, 20708; CSKY-NEXT: rts16709; CSKY-NEXT: .p2align 1710; CSKY-NEXT: # %bb.3:711; CSKY-NEXT: .p2align 2712; CSKY-NEXT: .LCPI35_0:713; CSKY-NEXT: .long __atomic_compare_exchange_1714 %1 = atomicrmw max ptr %a, i8 %b monotonic715 ret i8 %1716}717 718define i8 @atomicrmw_max_i8_acquire(ptr %a, i8 %b) nounwind {719; CSKY-LABEL: atomicrmw_max_i8_acquire:720; CSKY: # %bb.0:721; CSKY-NEXT: subi16 sp, sp, 20722; CSKY-NEXT: st16.w l3, (sp, 16) # 4-byte Folded Spill723; CSKY-NEXT: st16.w l2, (sp, 12) # 4-byte Folded Spill724; CSKY-NEXT: st16.w l1, (sp, 8) # 4-byte Folded Spill725; CSKY-NEXT: st16.w l0, (sp, 4) # 4-byte Folded Spill726; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill727; CSKY-NEXT: subi16 sp, sp, 8728; CSKY-NEXT: mov16 l0, a1729; CSKY-NEXT: mov16 l1, a0730; CSKY-NEXT: ld16.b a0, (a0, 0)731; CSKY-NEXT: sextb16 l2, a1732; CSKY-NEXT: movi16 l3, 2733; CSKY-NEXT: .LBB36_1: # %atomicrmw.start734; CSKY-NEXT: # =>This Inner Loop Header: Depth=1735; CSKY-NEXT: sextb16 a1, a0736; CSKY-NEXT: cmplt16 l2, a1737; CSKY-NEXT: mov16 a2, l0738; CSKY-NEXT: movt32 a2, a0739; CSKY-NEXT: st32.b a0, (sp, 7)740; CSKY-NEXT: st16.w l3, (sp, 0)741; CSKY-NEXT: mov16 a0, l1742; CSKY-NEXT: addi32 a1, sp, 7743; CSKY-NEXT: movi16 a3, 2744; CSKY-NEXT: jsri32 [.LCPI36_0]745; CSKY-NEXT: mov16 a1, a0746; CSKY-NEXT: ld32.b a0, (sp, 7)747; CSKY-NEXT: bez32 a1, .LBB36_1748; CSKY-NEXT: # %bb.2: # %atomicrmw.end749; CSKY-NEXT: addi16 sp, sp, 8750; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload751; CSKY-NEXT: ld16.w l0, (sp, 4) # 4-byte Folded Reload752; CSKY-NEXT: ld16.w l1, (sp, 8) # 4-byte Folded Reload753; CSKY-NEXT: ld16.w l2, (sp, 12) # 4-byte Folded Reload754; CSKY-NEXT: ld16.w l3, (sp, 16) # 4-byte Folded Reload755; CSKY-NEXT: addi16 sp, sp, 20756; CSKY-NEXT: rts16757; CSKY-NEXT: .p2align 1758; CSKY-NEXT: # %bb.3:759; CSKY-NEXT: .p2align 2760; CSKY-NEXT: .LCPI36_0:761; CSKY-NEXT: .long __atomic_compare_exchange_1762 %1 = atomicrmw max ptr %a, i8 %b acquire763 ret i8 %1764}765 766define i8 @atomicrmw_max_i8_release(ptr %a, i8 %b) nounwind {767; CSKY-LABEL: atomicrmw_max_i8_release:768; CSKY: # %bb.0:769; CSKY-NEXT: subi16 sp, sp, 20770; CSKY-NEXT: st16.w l3, (sp, 16) # 4-byte Folded Spill771; CSKY-NEXT: st16.w l2, (sp, 12) # 4-byte Folded Spill772; CSKY-NEXT: st16.w l1, (sp, 8) # 4-byte Folded Spill773; CSKY-NEXT: st16.w l0, (sp, 4) # 4-byte Folded Spill774; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill775; CSKY-NEXT: subi16 sp, sp, 8776; CSKY-NEXT: mov16 l0, a1777; CSKY-NEXT: mov16 l1, a0778; CSKY-NEXT: ld16.b a0, (a0, 0)779; CSKY-NEXT: sextb16 l2, a1780; CSKY-NEXT: movi16 l3, 0781; CSKY-NEXT: .LBB37_1: # %atomicrmw.start782; CSKY-NEXT: # =>This Inner Loop Header: Depth=1783; CSKY-NEXT: sextb16 a1, a0784; CSKY-NEXT: cmplt16 l2, a1785; CSKY-NEXT: mov16 a2, l0786; CSKY-NEXT: movt32 a2, a0787; CSKY-NEXT: st32.b a0, (sp, 7)788; CSKY-NEXT: st16.w l3, (sp, 0)789; CSKY-NEXT: mov16 a0, l1790; CSKY-NEXT: addi32 a1, sp, 7791; CSKY-NEXT: movi16 a3, 3792; CSKY-NEXT: jsri32 [.LCPI37_0]793; CSKY-NEXT: mov16 a1, a0794; CSKY-NEXT: ld32.b a0, (sp, 7)795; CSKY-NEXT: bez32 a1, .LBB37_1796; CSKY-NEXT: # %bb.2: # %atomicrmw.end797; CSKY-NEXT: addi16 sp, sp, 8798; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload799; CSKY-NEXT: ld16.w l0, (sp, 4) # 4-byte Folded Reload800; CSKY-NEXT: ld16.w l1, (sp, 8) # 4-byte Folded Reload801; CSKY-NEXT: ld16.w l2, (sp, 12) # 4-byte Folded Reload802; CSKY-NEXT: ld16.w l3, (sp, 16) # 4-byte Folded Reload803; CSKY-NEXT: addi16 sp, sp, 20804; CSKY-NEXT: rts16805; CSKY-NEXT: .p2align 1806; CSKY-NEXT: # %bb.3:807; CSKY-NEXT: .p2align 2808; CSKY-NEXT: .LCPI37_0:809; CSKY-NEXT: .long __atomic_compare_exchange_1810 %1 = atomicrmw max ptr %a, i8 %b release811 ret i8 %1812}813 814define i8 @atomicrmw_max_i8_acq_rel(ptr %a, i8 %b) nounwind {815; CSKY-LABEL: atomicrmw_max_i8_acq_rel:816; CSKY: # %bb.0:817; CSKY-NEXT: subi16 sp, sp, 20818; CSKY-NEXT: st16.w l3, (sp, 16) # 4-byte Folded Spill819; CSKY-NEXT: st16.w l2, (sp, 12) # 4-byte Folded Spill820; CSKY-NEXT: st16.w l1, (sp, 8) # 4-byte Folded Spill821; CSKY-NEXT: st16.w l0, (sp, 4) # 4-byte Folded Spill822; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill823; CSKY-NEXT: subi16 sp, sp, 8824; CSKY-NEXT: mov16 l0, a1825; CSKY-NEXT: mov16 l1, a0826; CSKY-NEXT: ld16.b a0, (a0, 0)827; CSKY-NEXT: sextb16 l2, a1828; CSKY-NEXT: movi16 l3, 2829; CSKY-NEXT: .LBB38_1: # %atomicrmw.start830; CSKY-NEXT: # =>This Inner Loop Header: Depth=1831; CSKY-NEXT: sextb16 a1, a0832; CSKY-NEXT: cmplt16 l2, a1833; CSKY-NEXT: mov16 a2, l0834; CSKY-NEXT: movt32 a2, a0835; CSKY-NEXT: st32.b a0, (sp, 7)836; CSKY-NEXT: st16.w l3, (sp, 0)837; CSKY-NEXT: mov16 a0, l1838; CSKY-NEXT: addi32 a1, sp, 7839; CSKY-NEXT: movi16 a3, 4840; CSKY-NEXT: jsri32 [.LCPI38_0]841; CSKY-NEXT: mov16 a1, a0842; CSKY-NEXT: ld32.b a0, (sp, 7)843; CSKY-NEXT: bez32 a1, .LBB38_1844; CSKY-NEXT: # %bb.2: # %atomicrmw.end845; CSKY-NEXT: addi16 sp, sp, 8846; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload847; CSKY-NEXT: ld16.w l0, (sp, 4) # 4-byte Folded Reload848; CSKY-NEXT: ld16.w l1, (sp, 8) # 4-byte Folded Reload849; CSKY-NEXT: ld16.w l2, (sp, 12) # 4-byte Folded Reload850; CSKY-NEXT: ld16.w l3, (sp, 16) # 4-byte Folded Reload851; CSKY-NEXT: addi16 sp, sp, 20852; CSKY-NEXT: rts16853; CSKY-NEXT: .p2align 1854; CSKY-NEXT: # %bb.3:855; CSKY-NEXT: .p2align 2856; CSKY-NEXT: .LCPI38_0:857; CSKY-NEXT: .long __atomic_compare_exchange_1858 %1 = atomicrmw max ptr %a, i8 %b acq_rel859 ret i8 %1860}861 862define i8 @atomicrmw_max_i8_seq_cst(ptr %a, i8 %b) nounwind {863; CSKY-LABEL: atomicrmw_max_i8_seq_cst:864; CSKY: # %bb.0:865; CSKY-NEXT: subi16 sp, sp, 20866; CSKY-NEXT: st16.w l3, (sp, 16) # 4-byte Folded Spill867; CSKY-NEXT: st16.w l2, (sp, 12) # 4-byte Folded Spill868; CSKY-NEXT: st16.w l1, (sp, 8) # 4-byte Folded Spill869; CSKY-NEXT: st16.w l0, (sp, 4) # 4-byte Folded Spill870; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill871; CSKY-NEXT: subi16 sp, sp, 8872; CSKY-NEXT: mov16 l0, a1873; CSKY-NEXT: mov16 l1, a0874; CSKY-NEXT: ld16.b a0, (a0, 0)875; CSKY-NEXT: sextb16 l2, a1876; CSKY-NEXT: movi16 l3, 5877; CSKY-NEXT: .LBB39_1: # %atomicrmw.start878; CSKY-NEXT: # =>This Inner Loop Header: Depth=1879; CSKY-NEXT: sextb16 a1, a0880; CSKY-NEXT: cmplt16 l2, a1881; CSKY-NEXT: mov16 a2, l0882; CSKY-NEXT: movt32 a2, a0883; CSKY-NEXT: st32.b a0, (sp, 7)884; CSKY-NEXT: st16.w l3, (sp, 0)885; CSKY-NEXT: mov16 a0, l1886; CSKY-NEXT: addi32 a1, sp, 7887; CSKY-NEXT: movi16 a3, 5888; CSKY-NEXT: jsri32 [.LCPI39_0]889; CSKY-NEXT: mov16 a1, a0890; CSKY-NEXT: ld32.b a0, (sp, 7)891; CSKY-NEXT: bez32 a1, .LBB39_1892; CSKY-NEXT: # %bb.2: # %atomicrmw.end893; CSKY-NEXT: addi16 sp, sp, 8894; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload895; CSKY-NEXT: ld16.w l0, (sp, 4) # 4-byte Folded Reload896; CSKY-NEXT: ld16.w l1, (sp, 8) # 4-byte Folded Reload897; CSKY-NEXT: ld16.w l2, (sp, 12) # 4-byte Folded Reload898; CSKY-NEXT: ld16.w l3, (sp, 16) # 4-byte Folded Reload899; CSKY-NEXT: addi16 sp, sp, 20900; CSKY-NEXT: rts16901; CSKY-NEXT: .p2align 1902; CSKY-NEXT: # %bb.3:903; CSKY-NEXT: .p2align 2904; CSKY-NEXT: .LCPI39_0:905; CSKY-NEXT: .long __atomic_compare_exchange_1906 %1 = atomicrmw max ptr %a, i8 %b seq_cst907 ret i8 %1908}909 910define i8 @atomicrmw_min_i8_monotonic(ptr %a, i8 %b) nounwind {911; CSKY-LABEL: atomicrmw_min_i8_monotonic:912; CSKY: # %bb.0:913; CSKY-NEXT: subi16 sp, sp, 20914; CSKY-NEXT: st16.w l3, (sp, 16) # 4-byte Folded Spill915; CSKY-NEXT: st16.w l2, (sp, 12) # 4-byte Folded Spill916; CSKY-NEXT: st16.w l1, (sp, 8) # 4-byte Folded Spill917; CSKY-NEXT: st16.w l0, (sp, 4) # 4-byte Folded Spill918; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill919; CSKY-NEXT: subi16 sp, sp, 8920; CSKY-NEXT: mov16 l0, a1921; CSKY-NEXT: mov16 l1, a0922; CSKY-NEXT: ld16.b a0, (a0, 0)923; CSKY-NEXT: sextb16 l2, a1924; CSKY-NEXT: movi16 l3, 0925; CSKY-NEXT: .LBB40_1: # %atomicrmw.start926; CSKY-NEXT: # =>This Inner Loop Header: Depth=1927; CSKY-NEXT: sextb16 a1, a0928; CSKY-NEXT: cmplt16 l2, a1929; CSKY-NEXT: mov16 a2, l0930; CSKY-NEXT: movf32 a2, a0931; CSKY-NEXT: st32.b a0, (sp, 7)932; CSKY-NEXT: st16.w l3, (sp, 0)933; CSKY-NEXT: mov16 a0, l1934; CSKY-NEXT: addi32 a1, sp, 7935; CSKY-NEXT: movi16 a3, 0936; CSKY-NEXT: jsri32 [.LCPI40_0]937; CSKY-NEXT: mov16 a1, a0938; CSKY-NEXT: ld32.b a0, (sp, 7)939; CSKY-NEXT: bez32 a1, .LBB40_1940; CSKY-NEXT: # %bb.2: # %atomicrmw.end941; CSKY-NEXT: addi16 sp, sp, 8942; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload943; CSKY-NEXT: ld16.w l0, (sp, 4) # 4-byte Folded Reload944; CSKY-NEXT: ld16.w l1, (sp, 8) # 4-byte Folded Reload945; CSKY-NEXT: ld16.w l2, (sp, 12) # 4-byte Folded Reload946; CSKY-NEXT: ld16.w l3, (sp, 16) # 4-byte Folded Reload947; CSKY-NEXT: addi16 sp, sp, 20948; CSKY-NEXT: rts16949; CSKY-NEXT: .p2align 1950; CSKY-NEXT: # %bb.3:951; CSKY-NEXT: .p2align 2952; CSKY-NEXT: .LCPI40_0:953; CSKY-NEXT: .long __atomic_compare_exchange_1954 %1 = atomicrmw min ptr %a, i8 %b monotonic955 ret i8 %1956}957 958define i8 @atomicrmw_min_i8_acquire(ptr %a, i8 %b) nounwind {959; CSKY-LABEL: atomicrmw_min_i8_acquire:960; CSKY: # %bb.0:961; CSKY-NEXT: subi16 sp, sp, 20962; CSKY-NEXT: st16.w l3, (sp, 16) # 4-byte Folded Spill963; CSKY-NEXT: st16.w l2, (sp, 12) # 4-byte Folded Spill964; CSKY-NEXT: st16.w l1, (sp, 8) # 4-byte Folded Spill965; CSKY-NEXT: st16.w l0, (sp, 4) # 4-byte Folded Spill966; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill967; CSKY-NEXT: subi16 sp, sp, 8968; CSKY-NEXT: mov16 l0, a1969; CSKY-NEXT: mov16 l1, a0970; CSKY-NEXT: ld16.b a0, (a0, 0)971; CSKY-NEXT: sextb16 l2, a1972; CSKY-NEXT: movi16 l3, 2973; CSKY-NEXT: .LBB41_1: # %atomicrmw.start974; CSKY-NEXT: # =>This Inner Loop Header: Depth=1975; CSKY-NEXT: sextb16 a1, a0976; CSKY-NEXT: cmplt16 l2, a1977; CSKY-NEXT: mov16 a2, l0978; CSKY-NEXT: movf32 a2, a0979; CSKY-NEXT: st32.b a0, (sp, 7)980; CSKY-NEXT: st16.w l3, (sp, 0)981; CSKY-NEXT: mov16 a0, l1982; CSKY-NEXT: addi32 a1, sp, 7983; CSKY-NEXT: movi16 a3, 2984; CSKY-NEXT: jsri32 [.LCPI41_0]985; CSKY-NEXT: mov16 a1, a0986; CSKY-NEXT: ld32.b a0, (sp, 7)987; CSKY-NEXT: bez32 a1, .LBB41_1988; CSKY-NEXT: # %bb.2: # %atomicrmw.end989; CSKY-NEXT: addi16 sp, sp, 8990; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload991; CSKY-NEXT: ld16.w l0, (sp, 4) # 4-byte Folded Reload992; CSKY-NEXT: ld16.w l1, (sp, 8) # 4-byte Folded Reload993; CSKY-NEXT: ld16.w l2, (sp, 12) # 4-byte Folded Reload994; CSKY-NEXT: ld16.w l3, (sp, 16) # 4-byte Folded Reload995; CSKY-NEXT: addi16 sp, sp, 20996; CSKY-NEXT: rts16997; CSKY-NEXT: .p2align 1998; CSKY-NEXT: # %bb.3:999; CSKY-NEXT: .p2align 21000; CSKY-NEXT: .LCPI41_0:1001; CSKY-NEXT: .long __atomic_compare_exchange_11002 %1 = atomicrmw min ptr %a, i8 %b acquire1003 ret i8 %11004}1005 1006define i8 @atomicrmw_min_i8_release(ptr %a, i8 %b) nounwind {1007; CSKY-LABEL: atomicrmw_min_i8_release:1008; CSKY: # %bb.0:1009; CSKY-NEXT: subi16 sp, sp, 201010; CSKY-NEXT: st16.w l3, (sp, 16) # 4-byte Folded Spill1011; CSKY-NEXT: st16.w l2, (sp, 12) # 4-byte Folded Spill1012; CSKY-NEXT: st16.w l1, (sp, 8) # 4-byte Folded Spill1013; CSKY-NEXT: st16.w l0, (sp, 4) # 4-byte Folded Spill1014; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill1015; CSKY-NEXT: subi16 sp, sp, 81016; CSKY-NEXT: mov16 l0, a11017; CSKY-NEXT: mov16 l1, a01018; CSKY-NEXT: ld16.b a0, (a0, 0)1019; CSKY-NEXT: sextb16 l2, a11020; CSKY-NEXT: movi16 l3, 01021; CSKY-NEXT: .LBB42_1: # %atomicrmw.start1022; CSKY-NEXT: # =>This Inner Loop Header: Depth=11023; CSKY-NEXT: sextb16 a1, a01024; CSKY-NEXT: cmplt16 l2, a11025; CSKY-NEXT: mov16 a2, l01026; CSKY-NEXT: movf32 a2, a01027; CSKY-NEXT: st32.b a0, (sp, 7)1028; CSKY-NEXT: st16.w l3, (sp, 0)1029; CSKY-NEXT: mov16 a0, l11030; CSKY-NEXT: addi32 a1, sp, 71031; CSKY-NEXT: movi16 a3, 31032; CSKY-NEXT: jsri32 [.LCPI42_0]1033; CSKY-NEXT: mov16 a1, a01034; CSKY-NEXT: ld32.b a0, (sp, 7)1035; CSKY-NEXT: bez32 a1, .LBB42_11036; CSKY-NEXT: # %bb.2: # %atomicrmw.end1037; CSKY-NEXT: addi16 sp, sp, 81038; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload1039; CSKY-NEXT: ld16.w l0, (sp, 4) # 4-byte Folded Reload1040; CSKY-NEXT: ld16.w l1, (sp, 8) # 4-byte Folded Reload1041; CSKY-NEXT: ld16.w l2, (sp, 12) # 4-byte Folded Reload1042; CSKY-NEXT: ld16.w l3, (sp, 16) # 4-byte Folded Reload1043; CSKY-NEXT: addi16 sp, sp, 201044; CSKY-NEXT: rts161045; CSKY-NEXT: .p2align 11046; CSKY-NEXT: # %bb.3:1047; CSKY-NEXT: .p2align 21048; CSKY-NEXT: .LCPI42_0:1049; CSKY-NEXT: .long __atomic_compare_exchange_11050 %1 = atomicrmw min ptr %a, i8 %b release1051 ret i8 %11052}1053 1054define i8 @atomicrmw_min_i8_acq_rel(ptr %a, i8 %b) nounwind {1055; CSKY-LABEL: atomicrmw_min_i8_acq_rel:1056; CSKY: # %bb.0:1057; CSKY-NEXT: subi16 sp, sp, 201058; CSKY-NEXT: st16.w l3, (sp, 16) # 4-byte Folded Spill1059; CSKY-NEXT: st16.w l2, (sp, 12) # 4-byte Folded Spill1060; CSKY-NEXT: st16.w l1, (sp, 8) # 4-byte Folded Spill1061; CSKY-NEXT: st16.w l0, (sp, 4) # 4-byte Folded Spill1062; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill1063; CSKY-NEXT: subi16 sp, sp, 81064; CSKY-NEXT: mov16 l0, a11065; CSKY-NEXT: mov16 l1, a01066; CSKY-NEXT: ld16.b a0, (a0, 0)1067; CSKY-NEXT: sextb16 l2, a11068; CSKY-NEXT: movi16 l3, 21069; CSKY-NEXT: .LBB43_1: # %atomicrmw.start1070; CSKY-NEXT: # =>This Inner Loop Header: Depth=11071; CSKY-NEXT: sextb16 a1, a01072; CSKY-NEXT: cmplt16 l2, a11073; CSKY-NEXT: mov16 a2, l01074; CSKY-NEXT: movf32 a2, a01075; CSKY-NEXT: st32.b a0, (sp, 7)1076; CSKY-NEXT: st16.w l3, (sp, 0)1077; CSKY-NEXT: mov16 a0, l11078; CSKY-NEXT: addi32 a1, sp, 71079; CSKY-NEXT: movi16 a3, 41080; CSKY-NEXT: jsri32 [.LCPI43_0]1081; CSKY-NEXT: mov16 a1, a01082; CSKY-NEXT: ld32.b a0, (sp, 7)1083; CSKY-NEXT: bez32 a1, .LBB43_11084; CSKY-NEXT: # %bb.2: # %atomicrmw.end1085; CSKY-NEXT: addi16 sp, sp, 81086; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload1087; CSKY-NEXT: ld16.w l0, (sp, 4) # 4-byte Folded Reload1088; CSKY-NEXT: ld16.w l1, (sp, 8) # 4-byte Folded Reload1089; CSKY-NEXT: ld16.w l2, (sp, 12) # 4-byte Folded Reload1090; CSKY-NEXT: ld16.w l3, (sp, 16) # 4-byte Folded Reload1091; CSKY-NEXT: addi16 sp, sp, 201092; CSKY-NEXT: rts161093; CSKY-NEXT: .p2align 11094; CSKY-NEXT: # %bb.3:1095; CSKY-NEXT: .p2align 21096; CSKY-NEXT: .LCPI43_0:1097; CSKY-NEXT: .long __atomic_compare_exchange_11098 %1 = atomicrmw min ptr %a, i8 %b acq_rel1099 ret i8 %11100}1101 1102define i8 @atomicrmw_min_i8_seq_cst(ptr %a, i8 %b) nounwind {1103; CSKY-LABEL: atomicrmw_min_i8_seq_cst:1104; CSKY: # %bb.0:1105; CSKY-NEXT: subi16 sp, sp, 201106; CSKY-NEXT: st16.w l3, (sp, 16) # 4-byte Folded Spill1107; CSKY-NEXT: st16.w l2, (sp, 12) # 4-byte Folded Spill1108; CSKY-NEXT: st16.w l1, (sp, 8) # 4-byte Folded Spill1109; CSKY-NEXT: st16.w l0, (sp, 4) # 4-byte Folded Spill1110; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill1111; CSKY-NEXT: subi16 sp, sp, 81112; CSKY-NEXT: mov16 l0, a11113; CSKY-NEXT: mov16 l1, a01114; CSKY-NEXT: ld16.b a0, (a0, 0)1115; CSKY-NEXT: sextb16 l2, a11116; CSKY-NEXT: movi16 l3, 51117; CSKY-NEXT: .LBB44_1: # %atomicrmw.start1118; CSKY-NEXT: # =>This Inner Loop Header: Depth=11119; CSKY-NEXT: sextb16 a1, a01120; CSKY-NEXT: cmplt16 l2, a11121; CSKY-NEXT: mov16 a2, l01122; CSKY-NEXT: movf32 a2, a01123; CSKY-NEXT: st32.b a0, (sp, 7)1124; CSKY-NEXT: st16.w l3, (sp, 0)1125; CSKY-NEXT: mov16 a0, l11126; CSKY-NEXT: addi32 a1, sp, 71127; CSKY-NEXT: movi16 a3, 51128; CSKY-NEXT: jsri32 [.LCPI44_0]1129; CSKY-NEXT: mov16 a1, a01130; CSKY-NEXT: ld32.b a0, (sp, 7)1131; CSKY-NEXT: bez32 a1, .LBB44_11132; CSKY-NEXT: # %bb.2: # %atomicrmw.end1133; CSKY-NEXT: addi16 sp, sp, 81134; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload1135; CSKY-NEXT: ld16.w l0, (sp, 4) # 4-byte Folded Reload1136; CSKY-NEXT: ld16.w l1, (sp, 8) # 4-byte Folded Reload1137; CSKY-NEXT: ld16.w l2, (sp, 12) # 4-byte Folded Reload1138; CSKY-NEXT: ld16.w l3, (sp, 16) # 4-byte Folded Reload1139; CSKY-NEXT: addi16 sp, sp, 201140; CSKY-NEXT: rts161141; CSKY-NEXT: .p2align 11142; CSKY-NEXT: # %bb.3:1143; CSKY-NEXT: .p2align 21144; CSKY-NEXT: .LCPI44_0:1145; CSKY-NEXT: .long __atomic_compare_exchange_11146 %1 = atomicrmw min ptr %a, i8 %b seq_cst1147 ret i8 %11148}1149 1150define i8 @atomicrmw_umax_i8_monotonic(ptr %a, i8 %b) nounwind {1151; CSKY-LABEL: atomicrmw_umax_i8_monotonic:1152; CSKY: # %bb.0:1153; CSKY-NEXT: subi16 sp, sp, 201154; CSKY-NEXT: st16.w l3, (sp, 16) # 4-byte Folded Spill1155; CSKY-NEXT: st16.w l2, (sp, 12) # 4-byte Folded Spill1156; CSKY-NEXT: st16.w l1, (sp, 8) # 4-byte Folded Spill1157; CSKY-NEXT: st16.w l0, (sp, 4) # 4-byte Folded Spill1158; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill1159; CSKY-NEXT: subi16 sp, sp, 81160; CSKY-NEXT: mov16 l0, a11161; CSKY-NEXT: mov16 l1, a01162; CSKY-NEXT: ld16.b a0, (a0, 0)1163; CSKY-NEXT: zextb16 l2, a11164; CSKY-NEXT: movi16 l3, 01165; CSKY-NEXT: .LBB45_1: # %atomicrmw.start1166; CSKY-NEXT: # =>This Inner Loop Header: Depth=11167; CSKY-NEXT: zextb16 a1, a01168; CSKY-NEXT: cmphs16 l2, a11169; CSKY-NEXT: mov16 a2, l01170; CSKY-NEXT: movf32 a2, a01171; CSKY-NEXT: st32.b a0, (sp, 7)1172; CSKY-NEXT: st16.w l3, (sp, 0)1173; CSKY-NEXT: mov16 a0, l11174; CSKY-NEXT: addi32 a1, sp, 71175; CSKY-NEXT: movi16 a3, 01176; CSKY-NEXT: jsri32 [.LCPI45_0]1177; CSKY-NEXT: mov16 a1, a01178; CSKY-NEXT: ld32.b a0, (sp, 7)1179; CSKY-NEXT: bez32 a1, .LBB45_11180; CSKY-NEXT: # %bb.2: # %atomicrmw.end1181; CSKY-NEXT: addi16 sp, sp, 81182; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload1183; CSKY-NEXT: ld16.w l0, (sp, 4) # 4-byte Folded Reload1184; CSKY-NEXT: ld16.w l1, (sp, 8) # 4-byte Folded Reload1185; CSKY-NEXT: ld16.w l2, (sp, 12) # 4-byte Folded Reload1186; CSKY-NEXT: ld16.w l3, (sp, 16) # 4-byte Folded Reload1187; CSKY-NEXT: addi16 sp, sp, 201188; CSKY-NEXT: rts161189; CSKY-NEXT: .p2align 11190; CSKY-NEXT: # %bb.3:1191; CSKY-NEXT: .p2align 21192; CSKY-NEXT: .LCPI45_0:1193; CSKY-NEXT: .long __atomic_compare_exchange_11194 %1 = atomicrmw umax ptr %a, i8 %b monotonic1195 ret i8 %11196}1197 1198define i8 @atomicrmw_umax_i8_acquire(ptr %a, i8 %b) nounwind {1199; CSKY-LABEL: atomicrmw_umax_i8_acquire:1200; CSKY: # %bb.0:1201; CSKY-NEXT: subi16 sp, sp, 201202; CSKY-NEXT: st16.w l3, (sp, 16) # 4-byte Folded Spill1203; CSKY-NEXT: st16.w l2, (sp, 12) # 4-byte Folded Spill1204; CSKY-NEXT: st16.w l1, (sp, 8) # 4-byte Folded Spill1205; CSKY-NEXT: st16.w l0, (sp, 4) # 4-byte Folded Spill1206; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill1207; CSKY-NEXT: subi16 sp, sp, 81208; CSKY-NEXT: mov16 l0, a11209; CSKY-NEXT: mov16 l1, a01210; CSKY-NEXT: ld16.b a0, (a0, 0)1211; CSKY-NEXT: zextb16 l2, a11212; CSKY-NEXT: movi16 l3, 21213; CSKY-NEXT: .LBB46_1: # %atomicrmw.start1214; CSKY-NEXT: # =>This Inner Loop Header: Depth=11215; CSKY-NEXT: zextb16 a1, a01216; CSKY-NEXT: cmphs16 l2, a11217; CSKY-NEXT: mov16 a2, l01218; CSKY-NEXT: movf32 a2, a01219; CSKY-NEXT: st32.b a0, (sp, 7)1220; CSKY-NEXT: st16.w l3, (sp, 0)1221; CSKY-NEXT: mov16 a0, l11222; CSKY-NEXT: addi32 a1, sp, 71223; CSKY-NEXT: movi16 a3, 21224; CSKY-NEXT: jsri32 [.LCPI46_0]1225; CSKY-NEXT: mov16 a1, a01226; CSKY-NEXT: ld32.b a0, (sp, 7)1227; CSKY-NEXT: bez32 a1, .LBB46_11228; CSKY-NEXT: # %bb.2: # %atomicrmw.end1229; CSKY-NEXT: addi16 sp, sp, 81230; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload1231; CSKY-NEXT: ld16.w l0, (sp, 4) # 4-byte Folded Reload1232; CSKY-NEXT: ld16.w l1, (sp, 8) # 4-byte Folded Reload1233; CSKY-NEXT: ld16.w l2, (sp, 12) # 4-byte Folded Reload1234; CSKY-NEXT: ld16.w l3, (sp, 16) # 4-byte Folded Reload1235; CSKY-NEXT: addi16 sp, sp, 201236; CSKY-NEXT: rts161237; CSKY-NEXT: .p2align 11238; CSKY-NEXT: # %bb.3:1239; CSKY-NEXT: .p2align 21240; CSKY-NEXT: .LCPI46_0:1241; CSKY-NEXT: .long __atomic_compare_exchange_11242 %1 = atomicrmw umax ptr %a, i8 %b acquire1243 ret i8 %11244}1245 1246define i8 @atomicrmw_umax_i8_release(ptr %a, i8 %b) nounwind {1247; CSKY-LABEL: atomicrmw_umax_i8_release:1248; CSKY: # %bb.0:1249; CSKY-NEXT: subi16 sp, sp, 201250; CSKY-NEXT: st16.w l3, (sp, 16) # 4-byte Folded Spill1251; CSKY-NEXT: st16.w l2, (sp, 12) # 4-byte Folded Spill1252; CSKY-NEXT: st16.w l1, (sp, 8) # 4-byte Folded Spill1253; CSKY-NEXT: st16.w l0, (sp, 4) # 4-byte Folded Spill1254; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill1255; CSKY-NEXT: subi16 sp, sp, 81256; CSKY-NEXT: mov16 l0, a11257; CSKY-NEXT: mov16 l1, a01258; CSKY-NEXT: ld16.b a0, (a0, 0)1259; CSKY-NEXT: zextb16 l2, a11260; CSKY-NEXT: movi16 l3, 01261; CSKY-NEXT: .LBB47_1: # %atomicrmw.start1262; CSKY-NEXT: # =>This Inner Loop Header: Depth=11263; CSKY-NEXT: zextb16 a1, a01264; CSKY-NEXT: cmphs16 l2, a11265; CSKY-NEXT: mov16 a2, l01266; CSKY-NEXT: movf32 a2, a01267; CSKY-NEXT: st32.b a0, (sp, 7)1268; CSKY-NEXT: st16.w l3, (sp, 0)1269; CSKY-NEXT: mov16 a0, l11270; CSKY-NEXT: addi32 a1, sp, 71271; CSKY-NEXT: movi16 a3, 31272; CSKY-NEXT: jsri32 [.LCPI47_0]1273; CSKY-NEXT: mov16 a1, a01274; CSKY-NEXT: ld32.b a0, (sp, 7)1275; CSKY-NEXT: bez32 a1, .LBB47_11276; CSKY-NEXT: # %bb.2: # %atomicrmw.end1277; CSKY-NEXT: addi16 sp, sp, 81278; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload1279; CSKY-NEXT: ld16.w l0, (sp, 4) # 4-byte Folded Reload1280; CSKY-NEXT: ld16.w l1, (sp, 8) # 4-byte Folded Reload1281; CSKY-NEXT: ld16.w l2, (sp, 12) # 4-byte Folded Reload1282; CSKY-NEXT: ld16.w l3, (sp, 16) # 4-byte Folded Reload1283; CSKY-NEXT: addi16 sp, sp, 201284; CSKY-NEXT: rts161285; CSKY-NEXT: .p2align 11286; CSKY-NEXT: # %bb.3:1287; CSKY-NEXT: .p2align 21288; CSKY-NEXT: .LCPI47_0:1289; CSKY-NEXT: .long __atomic_compare_exchange_11290 %1 = atomicrmw umax ptr %a, i8 %b release1291 ret i8 %11292}1293 1294define i8 @atomicrmw_umax_i8_acq_rel(ptr %a, i8 %b) nounwind {1295; CSKY-LABEL: atomicrmw_umax_i8_acq_rel:1296; CSKY: # %bb.0:1297; CSKY-NEXT: subi16 sp, sp, 201298; CSKY-NEXT: st16.w l3, (sp, 16) # 4-byte Folded Spill1299; CSKY-NEXT: st16.w l2, (sp, 12) # 4-byte Folded Spill1300; CSKY-NEXT: st16.w l1, (sp, 8) # 4-byte Folded Spill1301; CSKY-NEXT: st16.w l0, (sp, 4) # 4-byte Folded Spill1302; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill1303; CSKY-NEXT: subi16 sp, sp, 81304; CSKY-NEXT: mov16 l0, a11305; CSKY-NEXT: mov16 l1, a01306; CSKY-NEXT: ld16.b a0, (a0, 0)1307; CSKY-NEXT: zextb16 l2, a11308; CSKY-NEXT: movi16 l3, 21309; CSKY-NEXT: .LBB48_1: # %atomicrmw.start1310; CSKY-NEXT: # =>This Inner Loop Header: Depth=11311; CSKY-NEXT: zextb16 a1, a01312; CSKY-NEXT: cmphs16 l2, a11313; CSKY-NEXT: mov16 a2, l01314; CSKY-NEXT: movf32 a2, a01315; CSKY-NEXT: st32.b a0, (sp, 7)1316; CSKY-NEXT: st16.w l3, (sp, 0)1317; CSKY-NEXT: mov16 a0, l11318; CSKY-NEXT: addi32 a1, sp, 71319; CSKY-NEXT: movi16 a3, 41320; CSKY-NEXT: jsri32 [.LCPI48_0]1321; CSKY-NEXT: mov16 a1, a01322; CSKY-NEXT: ld32.b a0, (sp, 7)1323; CSKY-NEXT: bez32 a1, .LBB48_11324; CSKY-NEXT: # %bb.2: # %atomicrmw.end1325; CSKY-NEXT: addi16 sp, sp, 81326; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload1327; CSKY-NEXT: ld16.w l0, (sp, 4) # 4-byte Folded Reload1328; CSKY-NEXT: ld16.w l1, (sp, 8) # 4-byte Folded Reload1329; CSKY-NEXT: ld16.w l2, (sp, 12) # 4-byte Folded Reload1330; CSKY-NEXT: ld16.w l3, (sp, 16) # 4-byte Folded Reload1331; CSKY-NEXT: addi16 sp, sp, 201332; CSKY-NEXT: rts161333; CSKY-NEXT: .p2align 11334; CSKY-NEXT: # %bb.3:1335; CSKY-NEXT: .p2align 21336; CSKY-NEXT: .LCPI48_0:1337; CSKY-NEXT: .long __atomic_compare_exchange_11338 %1 = atomicrmw umax ptr %a, i8 %b acq_rel1339 ret i8 %11340}1341 1342define i8 @atomicrmw_umax_i8_seq_cst(ptr %a, i8 %b) nounwind {1343; CSKY-LABEL: atomicrmw_umax_i8_seq_cst:1344; CSKY: # %bb.0:1345; CSKY-NEXT: subi16 sp, sp, 201346; CSKY-NEXT: st16.w l3, (sp, 16) # 4-byte Folded Spill1347; CSKY-NEXT: st16.w l2, (sp, 12) # 4-byte Folded Spill1348; CSKY-NEXT: st16.w l1, (sp, 8) # 4-byte Folded Spill1349; CSKY-NEXT: st16.w l0, (sp, 4) # 4-byte Folded Spill1350; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill1351; CSKY-NEXT: subi16 sp, sp, 81352; CSKY-NEXT: mov16 l0, a11353; CSKY-NEXT: mov16 l1, a01354; CSKY-NEXT: ld16.b a0, (a0, 0)1355; CSKY-NEXT: zextb16 l2, a11356; CSKY-NEXT: movi16 l3, 51357; CSKY-NEXT: .LBB49_1: # %atomicrmw.start1358; CSKY-NEXT: # =>This Inner Loop Header: Depth=11359; CSKY-NEXT: zextb16 a1, a01360; CSKY-NEXT: cmphs16 l2, a11361; CSKY-NEXT: mov16 a2, l01362; CSKY-NEXT: movf32 a2, a01363; CSKY-NEXT: st32.b a0, (sp, 7)1364; CSKY-NEXT: st16.w l3, (sp, 0)1365; CSKY-NEXT: mov16 a0, l11366; CSKY-NEXT: addi32 a1, sp, 71367; CSKY-NEXT: movi16 a3, 51368; CSKY-NEXT: jsri32 [.LCPI49_0]1369; CSKY-NEXT: mov16 a1, a01370; CSKY-NEXT: ld32.b a0, (sp, 7)1371; CSKY-NEXT: bez32 a1, .LBB49_11372; CSKY-NEXT: # %bb.2: # %atomicrmw.end1373; CSKY-NEXT: addi16 sp, sp, 81374; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload1375; CSKY-NEXT: ld16.w l0, (sp, 4) # 4-byte Folded Reload1376; CSKY-NEXT: ld16.w l1, (sp, 8) # 4-byte Folded Reload1377; CSKY-NEXT: ld16.w l2, (sp, 12) # 4-byte Folded Reload1378; CSKY-NEXT: ld16.w l3, (sp, 16) # 4-byte Folded Reload1379; CSKY-NEXT: addi16 sp, sp, 201380; CSKY-NEXT: rts161381; CSKY-NEXT: .p2align 11382; CSKY-NEXT: # %bb.3:1383; CSKY-NEXT: .p2align 21384; CSKY-NEXT: .LCPI49_0:1385; CSKY-NEXT: .long __atomic_compare_exchange_11386 %1 = atomicrmw umax ptr %a, i8 %b seq_cst1387 ret i8 %11388}1389 1390define i8 @atomicrmw_umin_i8_monotonic(ptr %a, i8 %b) nounwind {1391; CSKY-LABEL: atomicrmw_umin_i8_monotonic:1392; CSKY: # %bb.0:1393; CSKY-NEXT: subi16 sp, sp, 201394; CSKY-NEXT: st16.w l3, (sp, 16) # 4-byte Folded Spill1395; CSKY-NEXT: st16.w l2, (sp, 12) # 4-byte Folded Spill1396; CSKY-NEXT: st16.w l1, (sp, 8) # 4-byte Folded Spill1397; CSKY-NEXT: st16.w l0, (sp, 4) # 4-byte Folded Spill1398; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill1399; CSKY-NEXT: subi16 sp, sp, 81400; CSKY-NEXT: mov16 l0, a11401; CSKY-NEXT: mov16 l1, a01402; CSKY-NEXT: ld16.b a0, (a0, 0)1403; CSKY-NEXT: zextb16 l2, a11404; CSKY-NEXT: movi16 l3, 01405; CSKY-NEXT: .LBB50_1: # %atomicrmw.start1406; CSKY-NEXT: # =>This Inner Loop Header: Depth=11407; CSKY-NEXT: zextb16 a1, a01408; CSKY-NEXT: cmphs16 l2, a11409; CSKY-NEXT: mov16 a2, l01410; CSKY-NEXT: movt32 a2, a01411; CSKY-NEXT: st32.b a0, (sp, 7)1412; CSKY-NEXT: st16.w l3, (sp, 0)1413; CSKY-NEXT: mov16 a0, l11414; CSKY-NEXT: addi32 a1, sp, 71415; CSKY-NEXT: movi16 a3, 01416; CSKY-NEXT: jsri32 [.LCPI50_0]1417; CSKY-NEXT: mov16 a1, a01418; CSKY-NEXT: ld32.b a0, (sp, 7)1419; CSKY-NEXT: bez32 a1, .LBB50_11420; CSKY-NEXT: # %bb.2: # %atomicrmw.end1421; CSKY-NEXT: addi16 sp, sp, 81422; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload1423; CSKY-NEXT: ld16.w l0, (sp, 4) # 4-byte Folded Reload1424; CSKY-NEXT: ld16.w l1, (sp, 8) # 4-byte Folded Reload1425; CSKY-NEXT: ld16.w l2, (sp, 12) # 4-byte Folded Reload1426; CSKY-NEXT: ld16.w l3, (sp, 16) # 4-byte Folded Reload1427; CSKY-NEXT: addi16 sp, sp, 201428; CSKY-NEXT: rts161429; CSKY-NEXT: .p2align 11430; CSKY-NEXT: # %bb.3:1431; CSKY-NEXT: .p2align 21432; CSKY-NEXT: .LCPI50_0:1433; CSKY-NEXT: .long __atomic_compare_exchange_11434 %1 = atomicrmw umin ptr %a, i8 %b monotonic1435 ret i8 %11436}1437 1438define i8 @atomicrmw_umin_i8_acquire(ptr %a, i8 %b) nounwind {1439; CSKY-LABEL: atomicrmw_umin_i8_acquire:1440; CSKY: # %bb.0:1441; CSKY-NEXT: subi16 sp, sp, 201442; CSKY-NEXT: st16.w l3, (sp, 16) # 4-byte Folded Spill1443; CSKY-NEXT: st16.w l2, (sp, 12) # 4-byte Folded Spill1444; CSKY-NEXT: st16.w l1, (sp, 8) # 4-byte Folded Spill1445; CSKY-NEXT: st16.w l0, (sp, 4) # 4-byte Folded Spill1446; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill1447; CSKY-NEXT: subi16 sp, sp, 81448; CSKY-NEXT: mov16 l0, a11449; CSKY-NEXT: mov16 l1, a01450; CSKY-NEXT: ld16.b a0, (a0, 0)1451; CSKY-NEXT: zextb16 l2, a11452; CSKY-NEXT: movi16 l3, 21453; CSKY-NEXT: .LBB51_1: # %atomicrmw.start1454; CSKY-NEXT: # =>This Inner Loop Header: Depth=11455; CSKY-NEXT: zextb16 a1, a01456; CSKY-NEXT: cmphs16 l2, a11457; CSKY-NEXT: mov16 a2, l01458; CSKY-NEXT: movt32 a2, a01459; CSKY-NEXT: st32.b a0, (sp, 7)1460; CSKY-NEXT: st16.w l3, (sp, 0)1461; CSKY-NEXT: mov16 a0, l11462; CSKY-NEXT: addi32 a1, sp, 71463; CSKY-NEXT: movi16 a3, 21464; CSKY-NEXT: jsri32 [.LCPI51_0]1465; CSKY-NEXT: mov16 a1, a01466; CSKY-NEXT: ld32.b a0, (sp, 7)1467; CSKY-NEXT: bez32 a1, .LBB51_11468; CSKY-NEXT: # %bb.2: # %atomicrmw.end1469; CSKY-NEXT: addi16 sp, sp, 81470; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload1471; CSKY-NEXT: ld16.w l0, (sp, 4) # 4-byte Folded Reload1472; CSKY-NEXT: ld16.w l1, (sp, 8) # 4-byte Folded Reload1473; CSKY-NEXT: ld16.w l2, (sp, 12) # 4-byte Folded Reload1474; CSKY-NEXT: ld16.w l3, (sp, 16) # 4-byte Folded Reload1475; CSKY-NEXT: addi16 sp, sp, 201476; CSKY-NEXT: rts161477; CSKY-NEXT: .p2align 11478; CSKY-NEXT: # %bb.3:1479; CSKY-NEXT: .p2align 21480; CSKY-NEXT: .LCPI51_0:1481; CSKY-NEXT: .long __atomic_compare_exchange_11482 %1 = atomicrmw umin ptr %a, i8 %b acquire1483 ret i8 %11484}1485 1486define i8 @atomicrmw_umin_i8_release(ptr %a, i8 %b) nounwind {1487; CSKY-LABEL: atomicrmw_umin_i8_release:1488; CSKY: # %bb.0:1489; CSKY-NEXT: subi16 sp, sp, 201490; CSKY-NEXT: st16.w l3, (sp, 16) # 4-byte Folded Spill1491; CSKY-NEXT: st16.w l2, (sp, 12) # 4-byte Folded Spill1492; CSKY-NEXT: st16.w l1, (sp, 8) # 4-byte Folded Spill1493; CSKY-NEXT: st16.w l0, (sp, 4) # 4-byte Folded Spill1494; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill1495; CSKY-NEXT: subi16 sp, sp, 81496; CSKY-NEXT: mov16 l0, a11497; CSKY-NEXT: mov16 l1, a01498; CSKY-NEXT: ld16.b a0, (a0, 0)1499; CSKY-NEXT: zextb16 l2, a11500; CSKY-NEXT: movi16 l3, 01501; CSKY-NEXT: .LBB52_1: # %atomicrmw.start1502; CSKY-NEXT: # =>This Inner Loop Header: Depth=11503; CSKY-NEXT: zextb16 a1, a01504; CSKY-NEXT: cmphs16 l2, a11505; CSKY-NEXT: mov16 a2, l01506; CSKY-NEXT: movt32 a2, a01507; CSKY-NEXT: st32.b a0, (sp, 7)1508; CSKY-NEXT: st16.w l3, (sp, 0)1509; CSKY-NEXT: mov16 a0, l11510; CSKY-NEXT: addi32 a1, sp, 71511; CSKY-NEXT: movi16 a3, 31512; CSKY-NEXT: jsri32 [.LCPI52_0]1513; CSKY-NEXT: mov16 a1, a01514; CSKY-NEXT: ld32.b a0, (sp, 7)1515; CSKY-NEXT: bez32 a1, .LBB52_11516; CSKY-NEXT: # %bb.2: # %atomicrmw.end1517; CSKY-NEXT: addi16 sp, sp, 81518; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload1519; CSKY-NEXT: ld16.w l0, (sp, 4) # 4-byte Folded Reload1520; CSKY-NEXT: ld16.w l1, (sp, 8) # 4-byte Folded Reload1521; CSKY-NEXT: ld16.w l2, (sp, 12) # 4-byte Folded Reload1522; CSKY-NEXT: ld16.w l3, (sp, 16) # 4-byte Folded Reload1523; CSKY-NEXT: addi16 sp, sp, 201524; CSKY-NEXT: rts161525; CSKY-NEXT: .p2align 11526; CSKY-NEXT: # %bb.3:1527; CSKY-NEXT: .p2align 21528; CSKY-NEXT: .LCPI52_0:1529; CSKY-NEXT: .long __atomic_compare_exchange_11530 %1 = atomicrmw umin ptr %a, i8 %b release1531 ret i8 %11532}1533 1534define i8 @atomicrmw_umin_i8_acq_rel(ptr %a, i8 %b) nounwind {1535; CSKY-LABEL: atomicrmw_umin_i8_acq_rel:1536; CSKY: # %bb.0:1537; CSKY-NEXT: subi16 sp, sp, 201538; CSKY-NEXT: st16.w l3, (sp, 16) # 4-byte Folded Spill1539; CSKY-NEXT: st16.w l2, (sp, 12) # 4-byte Folded Spill1540; CSKY-NEXT: st16.w l1, (sp, 8) # 4-byte Folded Spill1541; CSKY-NEXT: st16.w l0, (sp, 4) # 4-byte Folded Spill1542; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill1543; CSKY-NEXT: subi16 sp, sp, 81544; CSKY-NEXT: mov16 l0, a11545; CSKY-NEXT: mov16 l1, a01546; CSKY-NEXT: ld16.b a0, (a0, 0)1547; CSKY-NEXT: zextb16 l2, a11548; CSKY-NEXT: movi16 l3, 21549; CSKY-NEXT: .LBB53_1: # %atomicrmw.start1550; CSKY-NEXT: # =>This Inner Loop Header: Depth=11551; CSKY-NEXT: zextb16 a1, a01552; CSKY-NEXT: cmphs16 l2, a11553; CSKY-NEXT: mov16 a2, l01554; CSKY-NEXT: movt32 a2, a01555; CSKY-NEXT: st32.b a0, (sp, 7)1556; CSKY-NEXT: st16.w l3, (sp, 0)1557; CSKY-NEXT: mov16 a0, l11558; CSKY-NEXT: addi32 a1, sp, 71559; CSKY-NEXT: movi16 a3, 41560; CSKY-NEXT: jsri32 [.LCPI53_0]1561; CSKY-NEXT: mov16 a1, a01562; CSKY-NEXT: ld32.b a0, (sp, 7)1563; CSKY-NEXT: bez32 a1, .LBB53_11564; CSKY-NEXT: # %bb.2: # %atomicrmw.end1565; CSKY-NEXT: addi16 sp, sp, 81566; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload1567; CSKY-NEXT: ld16.w l0, (sp, 4) # 4-byte Folded Reload1568; CSKY-NEXT: ld16.w l1, (sp, 8) # 4-byte Folded Reload1569; CSKY-NEXT: ld16.w l2, (sp, 12) # 4-byte Folded Reload1570; CSKY-NEXT: ld16.w l3, (sp, 16) # 4-byte Folded Reload1571; CSKY-NEXT: addi16 sp, sp, 201572; CSKY-NEXT: rts161573; CSKY-NEXT: .p2align 11574; CSKY-NEXT: # %bb.3:1575; CSKY-NEXT: .p2align 21576; CSKY-NEXT: .LCPI53_0:1577; CSKY-NEXT: .long __atomic_compare_exchange_11578 %1 = atomicrmw umin ptr %a, i8 %b acq_rel1579 ret i8 %11580}1581 1582define i8 @atomicrmw_umin_i8_seq_cst(ptr %a, i8 %b) nounwind {1583; CSKY-LABEL: atomicrmw_umin_i8_seq_cst:1584; CSKY: # %bb.0:1585; CSKY-NEXT: subi16 sp, sp, 201586; CSKY-NEXT: st16.w l3, (sp, 16) # 4-byte Folded Spill1587; CSKY-NEXT: st16.w l2, (sp, 12) # 4-byte Folded Spill1588; CSKY-NEXT: st16.w l1, (sp, 8) # 4-byte Folded Spill1589; CSKY-NEXT: st16.w l0, (sp, 4) # 4-byte Folded Spill1590; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill1591; CSKY-NEXT: subi16 sp, sp, 81592; CSKY-NEXT: mov16 l0, a11593; CSKY-NEXT: mov16 l1, a01594; CSKY-NEXT: ld16.b a0, (a0, 0)1595; CSKY-NEXT: zextb16 l2, a11596; CSKY-NEXT: movi16 l3, 51597; CSKY-NEXT: .LBB54_1: # %atomicrmw.start1598; CSKY-NEXT: # =>This Inner Loop Header: Depth=11599; CSKY-NEXT: zextb16 a1, a01600; CSKY-NEXT: cmphs16 l2, a11601; CSKY-NEXT: mov16 a2, l01602; CSKY-NEXT: movt32 a2, a01603; CSKY-NEXT: st32.b a0, (sp, 7)1604; CSKY-NEXT: st16.w l3, (sp, 0)1605; CSKY-NEXT: mov16 a0, l11606; CSKY-NEXT: addi32 a1, sp, 71607; CSKY-NEXT: movi16 a3, 51608; CSKY-NEXT: jsri32 [.LCPI54_0]1609; CSKY-NEXT: mov16 a1, a01610; CSKY-NEXT: ld32.b a0, (sp, 7)1611; CSKY-NEXT: bez32 a1, .LBB54_11612; CSKY-NEXT: # %bb.2: # %atomicrmw.end1613; CSKY-NEXT: addi16 sp, sp, 81614; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload1615; CSKY-NEXT: ld16.w l0, (sp, 4) # 4-byte Folded Reload1616; CSKY-NEXT: ld16.w l1, (sp, 8) # 4-byte Folded Reload1617; CSKY-NEXT: ld16.w l2, (sp, 12) # 4-byte Folded Reload1618; CSKY-NEXT: ld16.w l3, (sp, 16) # 4-byte Folded Reload1619; CSKY-NEXT: addi16 sp, sp, 201620; CSKY-NEXT: rts161621; CSKY-NEXT: .p2align 11622; CSKY-NEXT: # %bb.3:1623; CSKY-NEXT: .p2align 21624; CSKY-NEXT: .LCPI54_0:1625; CSKY-NEXT: .long __atomic_compare_exchange_11626 %1 = atomicrmw umin ptr %a, i8 %b seq_cst1627 ret i8 %11628}1629 1630define i16 @atomicrmw_xchg_i16_monotonic(ptr %a, i16 %b) nounwind {1631; CSKY-LABEL: atomicrmw_xchg_i16_monotonic:1632; CSKY: # %bb.0:1633; CSKY-NEXT: subi16 sp, sp, 41634; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill1635; CSKY-NEXT: movi16 a2, 01636; CSKY-NEXT: jsri32 [.LCPI55_0]1637; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload1638; CSKY-NEXT: addi16 sp, sp, 41639; CSKY-NEXT: rts161640; CSKY-NEXT: .p2align 11641; CSKY-NEXT: # %bb.1:1642; CSKY-NEXT: .p2align 21643; CSKY-NEXT: .LCPI55_0:1644; CSKY-NEXT: .long __atomic_exchange_21645 %1 = atomicrmw xchg ptr %a, i16 %b monotonic1646 ret i16 %11647}1648 1649define i16 @atomicrmw_xchg_i16_acquire(ptr %a, i16 %b) nounwind {1650; CSKY-LABEL: atomicrmw_xchg_i16_acquire:1651; CSKY: # %bb.0:1652; CSKY-NEXT: subi16 sp, sp, 41653; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill1654; CSKY-NEXT: movi16 a2, 21655; CSKY-NEXT: jsri32 [.LCPI56_0]1656; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload1657; CSKY-NEXT: addi16 sp, sp, 41658; CSKY-NEXT: rts161659; CSKY-NEXT: .p2align 11660; CSKY-NEXT: # %bb.1:1661; CSKY-NEXT: .p2align 21662; CSKY-NEXT: .LCPI56_0:1663; CSKY-NEXT: .long __atomic_exchange_21664 %1 = atomicrmw xchg ptr %a, i16 %b acquire1665 ret i16 %11666}1667 1668define i16 @atomicrmw_xchg_i16_release(ptr %a, i16 %b) nounwind {1669; CSKY-LABEL: atomicrmw_xchg_i16_release:1670; CSKY: # %bb.0:1671; CSKY-NEXT: subi16 sp, sp, 41672; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill1673; CSKY-NEXT: movi16 a2, 31674; CSKY-NEXT: jsri32 [.LCPI57_0]1675; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload1676; CSKY-NEXT: addi16 sp, sp, 41677; CSKY-NEXT: rts161678; CSKY-NEXT: .p2align 11679; CSKY-NEXT: # %bb.1:1680; CSKY-NEXT: .p2align 21681; CSKY-NEXT: .LCPI57_0:1682; CSKY-NEXT: .long __atomic_exchange_21683 %1 = atomicrmw xchg ptr %a, i16 %b release1684 ret i16 %11685}1686 1687define i16 @atomicrmw_xchg_i16_acq_rel(ptr %a, i16 %b) nounwind {1688; CSKY-LABEL: atomicrmw_xchg_i16_acq_rel:1689; CSKY: # %bb.0:1690; CSKY-NEXT: subi16 sp, sp, 41691; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill1692; CSKY-NEXT: movi16 a2, 41693; CSKY-NEXT: jsri32 [.LCPI58_0]1694; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload1695; CSKY-NEXT: addi16 sp, sp, 41696; CSKY-NEXT: rts161697; CSKY-NEXT: .p2align 11698; CSKY-NEXT: # %bb.1:1699; CSKY-NEXT: .p2align 21700; CSKY-NEXT: .LCPI58_0:1701; CSKY-NEXT: .long __atomic_exchange_21702 %1 = atomicrmw xchg ptr %a, i16 %b acq_rel1703 ret i16 %11704}1705 1706define i16 @atomicrmw_xchg_i16_seq_cst(ptr %a, i16 %b) nounwind {1707; CSKY-LABEL: atomicrmw_xchg_i16_seq_cst:1708; CSKY: # %bb.0:1709; CSKY-NEXT: subi16 sp, sp, 41710; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill1711; CSKY-NEXT: movi16 a2, 51712; CSKY-NEXT: jsri32 [.LCPI59_0]1713; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload1714; CSKY-NEXT: addi16 sp, sp, 41715; CSKY-NEXT: rts161716; CSKY-NEXT: .p2align 11717; CSKY-NEXT: # %bb.1:1718; CSKY-NEXT: .p2align 21719; CSKY-NEXT: .LCPI59_0:1720; CSKY-NEXT: .long __atomic_exchange_21721 %1 = atomicrmw xchg ptr %a, i16 %b seq_cst1722 ret i16 %11723}1724 1725define i16 @atomicrmw_add_i16_monotonic(ptr %a, i16 %b) nounwind {1726; CSKY-LABEL: atomicrmw_add_i16_monotonic:1727; CSKY: # %bb.0:1728; CSKY-NEXT: subi16 sp, sp, 41729; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill1730; CSKY-NEXT: movi16 a2, 01731; CSKY-NEXT: jsri32 [.LCPI60_0]1732; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload1733; CSKY-NEXT: addi16 sp, sp, 41734; CSKY-NEXT: rts161735; CSKY-NEXT: .p2align 11736; CSKY-NEXT: # %bb.1:1737; CSKY-NEXT: .p2align 21738; CSKY-NEXT: .LCPI60_0:1739; CSKY-NEXT: .long __atomic_fetch_add_21740 %1 = atomicrmw add ptr %a, i16 %b monotonic1741 ret i16 %11742}1743 1744define i16 @atomicrmw_add_i16_acquire(ptr %a, i16 %b) nounwind {1745; CSKY-LABEL: atomicrmw_add_i16_acquire:1746; CSKY: # %bb.0:1747; CSKY-NEXT: subi16 sp, sp, 41748; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill1749; CSKY-NEXT: movi16 a2, 21750; CSKY-NEXT: jsri32 [.LCPI61_0]1751; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload1752; CSKY-NEXT: addi16 sp, sp, 41753; CSKY-NEXT: rts161754; CSKY-NEXT: .p2align 11755; CSKY-NEXT: # %bb.1:1756; CSKY-NEXT: .p2align 21757; CSKY-NEXT: .LCPI61_0:1758; CSKY-NEXT: .long __atomic_fetch_add_21759 %1 = atomicrmw add ptr %a, i16 %b acquire1760 ret i16 %11761}1762 1763define i16 @atomicrmw_add_i16_release(ptr %a, i16 %b) nounwind {1764; CSKY-LABEL: atomicrmw_add_i16_release:1765; CSKY: # %bb.0:1766; CSKY-NEXT: subi16 sp, sp, 41767; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill1768; CSKY-NEXT: movi16 a2, 31769; CSKY-NEXT: jsri32 [.LCPI62_0]1770; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload1771; CSKY-NEXT: addi16 sp, sp, 41772; CSKY-NEXT: rts161773; CSKY-NEXT: .p2align 11774; CSKY-NEXT: # %bb.1:1775; CSKY-NEXT: .p2align 21776; CSKY-NEXT: .LCPI62_0:1777; CSKY-NEXT: .long __atomic_fetch_add_21778 %1 = atomicrmw add ptr %a, i16 %b release1779 ret i16 %11780}1781 1782define i16 @atomicrmw_add_i16_acq_rel(ptr %a, i16 %b) nounwind {1783; CSKY-LABEL: atomicrmw_add_i16_acq_rel:1784; CSKY: # %bb.0:1785; CSKY-NEXT: subi16 sp, sp, 41786; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill1787; CSKY-NEXT: movi16 a2, 41788; CSKY-NEXT: jsri32 [.LCPI63_0]1789; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload1790; CSKY-NEXT: addi16 sp, sp, 41791; CSKY-NEXT: rts161792; CSKY-NEXT: .p2align 11793; CSKY-NEXT: # %bb.1:1794; CSKY-NEXT: .p2align 21795; CSKY-NEXT: .LCPI63_0:1796; CSKY-NEXT: .long __atomic_fetch_add_21797 %1 = atomicrmw add ptr %a, i16 %b acq_rel1798 ret i16 %11799}1800 1801define i16 @atomicrmw_add_i16_seq_cst(ptr %a, i16 %b) nounwind {1802; CSKY-LABEL: atomicrmw_add_i16_seq_cst:1803; CSKY: # %bb.0:1804; CSKY-NEXT: subi16 sp, sp, 41805; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill1806; CSKY-NEXT: movi16 a2, 51807; CSKY-NEXT: jsri32 [.LCPI64_0]1808; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload1809; CSKY-NEXT: addi16 sp, sp, 41810; CSKY-NEXT: rts161811; CSKY-NEXT: .p2align 11812; CSKY-NEXT: # %bb.1:1813; CSKY-NEXT: .p2align 21814; CSKY-NEXT: .LCPI64_0:1815; CSKY-NEXT: .long __atomic_fetch_add_21816 %1 = atomicrmw add ptr %a, i16 %b seq_cst1817 ret i16 %11818}1819 1820define i16 @atomicrmw_sub_i16_monotonic(ptr %a, i16 %b) nounwind {1821; CSKY-LABEL: atomicrmw_sub_i16_monotonic:1822; CSKY: # %bb.0:1823; CSKY-NEXT: subi16 sp, sp, 41824; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill1825; CSKY-NEXT: movi16 a2, 01826; CSKY-NEXT: jsri32 [.LCPI65_0]1827; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload1828; CSKY-NEXT: addi16 sp, sp, 41829; CSKY-NEXT: rts161830; CSKY-NEXT: .p2align 11831; CSKY-NEXT: # %bb.1:1832; CSKY-NEXT: .p2align 21833; CSKY-NEXT: .LCPI65_0:1834; CSKY-NEXT: .long __atomic_fetch_sub_21835 %1 = atomicrmw sub ptr %a, i16 %b monotonic1836 ret i16 %11837}1838 1839define i16 @atomicrmw_sub_i16_acquire(ptr %a, i16 %b) nounwind {1840; CSKY-LABEL: atomicrmw_sub_i16_acquire:1841; CSKY: # %bb.0:1842; CSKY-NEXT: subi16 sp, sp, 41843; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill1844; CSKY-NEXT: movi16 a2, 21845; CSKY-NEXT: jsri32 [.LCPI66_0]1846; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload1847; CSKY-NEXT: addi16 sp, sp, 41848; CSKY-NEXT: rts161849; CSKY-NEXT: .p2align 11850; CSKY-NEXT: # %bb.1:1851; CSKY-NEXT: .p2align 21852; CSKY-NEXT: .LCPI66_0:1853; CSKY-NEXT: .long __atomic_fetch_sub_21854 %1 = atomicrmw sub ptr %a, i16 %b acquire1855 ret i16 %11856}1857 1858define i16 @atomicrmw_sub_i16_release(ptr %a, i16 %b) nounwind {1859; CSKY-LABEL: atomicrmw_sub_i16_release:1860; CSKY: # %bb.0:1861; CSKY-NEXT: subi16 sp, sp, 41862; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill1863; CSKY-NEXT: movi16 a2, 31864; CSKY-NEXT: jsri32 [.LCPI67_0]1865; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload1866; CSKY-NEXT: addi16 sp, sp, 41867; CSKY-NEXT: rts161868; CSKY-NEXT: .p2align 11869; CSKY-NEXT: # %bb.1:1870; CSKY-NEXT: .p2align 21871; CSKY-NEXT: .LCPI67_0:1872; CSKY-NEXT: .long __atomic_fetch_sub_21873 %1 = atomicrmw sub ptr %a, i16 %b release1874 ret i16 %11875}1876 1877define i16 @atomicrmw_sub_i16_acq_rel(ptr %a, i16 %b) nounwind {1878; CSKY-LABEL: atomicrmw_sub_i16_acq_rel:1879; CSKY: # %bb.0:1880; CSKY-NEXT: subi16 sp, sp, 41881; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill1882; CSKY-NEXT: movi16 a2, 41883; CSKY-NEXT: jsri32 [.LCPI68_0]1884; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload1885; CSKY-NEXT: addi16 sp, sp, 41886; CSKY-NEXT: rts161887; CSKY-NEXT: .p2align 11888; CSKY-NEXT: # %bb.1:1889; CSKY-NEXT: .p2align 21890; CSKY-NEXT: .LCPI68_0:1891; CSKY-NEXT: .long __atomic_fetch_sub_21892 %1 = atomicrmw sub ptr %a, i16 %b acq_rel1893 ret i16 %11894}1895 1896define i16 @atomicrmw_sub_i16_seq_cst(ptr %a, i16 %b) nounwind {1897; CSKY-LABEL: atomicrmw_sub_i16_seq_cst:1898; CSKY: # %bb.0:1899; CSKY-NEXT: subi16 sp, sp, 41900; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill1901; CSKY-NEXT: movi16 a2, 51902; CSKY-NEXT: jsri32 [.LCPI69_0]1903; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload1904; CSKY-NEXT: addi16 sp, sp, 41905; CSKY-NEXT: rts161906; CSKY-NEXT: .p2align 11907; CSKY-NEXT: # %bb.1:1908; CSKY-NEXT: .p2align 21909; CSKY-NEXT: .LCPI69_0:1910; CSKY-NEXT: .long __atomic_fetch_sub_21911 %1 = atomicrmw sub ptr %a, i16 %b seq_cst1912 ret i16 %11913}1914 1915define i16 @atomicrmw_and_i16_monotonic(ptr %a, i16 %b) nounwind {1916; CSKY-LABEL: atomicrmw_and_i16_monotonic:1917; CSKY: # %bb.0:1918; CSKY-NEXT: subi16 sp, sp, 41919; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill1920; CSKY-NEXT: movi16 a2, 01921; CSKY-NEXT: jsri32 [.LCPI70_0]1922; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload1923; CSKY-NEXT: addi16 sp, sp, 41924; CSKY-NEXT: rts161925; CSKY-NEXT: .p2align 11926; CSKY-NEXT: # %bb.1:1927; CSKY-NEXT: .p2align 21928; CSKY-NEXT: .LCPI70_0:1929; CSKY-NEXT: .long __atomic_fetch_and_21930 %1 = atomicrmw and ptr %a, i16 %b monotonic1931 ret i16 %11932}1933 1934define i16 @atomicrmw_and_i16_acquire(ptr %a, i16 %b) nounwind {1935; CSKY-LABEL: atomicrmw_and_i16_acquire:1936; CSKY: # %bb.0:1937; CSKY-NEXT: subi16 sp, sp, 41938; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill1939; CSKY-NEXT: movi16 a2, 21940; CSKY-NEXT: jsri32 [.LCPI71_0]1941; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload1942; CSKY-NEXT: addi16 sp, sp, 41943; CSKY-NEXT: rts161944; CSKY-NEXT: .p2align 11945; CSKY-NEXT: # %bb.1:1946; CSKY-NEXT: .p2align 21947; CSKY-NEXT: .LCPI71_0:1948; CSKY-NEXT: .long __atomic_fetch_and_21949 %1 = atomicrmw and ptr %a, i16 %b acquire1950 ret i16 %11951}1952 1953define i16 @atomicrmw_and_i16_release(ptr %a, i16 %b) nounwind {1954; CSKY-LABEL: atomicrmw_and_i16_release:1955; CSKY: # %bb.0:1956; CSKY-NEXT: subi16 sp, sp, 41957; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill1958; CSKY-NEXT: movi16 a2, 31959; CSKY-NEXT: jsri32 [.LCPI72_0]1960; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload1961; CSKY-NEXT: addi16 sp, sp, 41962; CSKY-NEXT: rts161963; CSKY-NEXT: .p2align 11964; CSKY-NEXT: # %bb.1:1965; CSKY-NEXT: .p2align 21966; CSKY-NEXT: .LCPI72_0:1967; CSKY-NEXT: .long __atomic_fetch_and_21968 %1 = atomicrmw and ptr %a, i16 %b release1969 ret i16 %11970}1971 1972define i16 @atomicrmw_and_i16_acq_rel(ptr %a, i16 %b) nounwind {1973; CSKY-LABEL: atomicrmw_and_i16_acq_rel:1974; CSKY: # %bb.0:1975; CSKY-NEXT: subi16 sp, sp, 41976; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill1977; CSKY-NEXT: movi16 a2, 41978; CSKY-NEXT: jsri32 [.LCPI73_0]1979; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload1980; CSKY-NEXT: addi16 sp, sp, 41981; CSKY-NEXT: rts161982; CSKY-NEXT: .p2align 11983; CSKY-NEXT: # %bb.1:1984; CSKY-NEXT: .p2align 21985; CSKY-NEXT: .LCPI73_0:1986; CSKY-NEXT: .long __atomic_fetch_and_21987 %1 = atomicrmw and ptr %a, i16 %b acq_rel1988 ret i16 %11989}1990 1991define i16 @atomicrmw_and_i16_seq_cst(ptr %a, i16 %b) nounwind {1992; CSKY-LABEL: atomicrmw_and_i16_seq_cst:1993; CSKY: # %bb.0:1994; CSKY-NEXT: subi16 sp, sp, 41995; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill1996; CSKY-NEXT: movi16 a2, 51997; CSKY-NEXT: jsri32 [.LCPI74_0]1998; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload1999; CSKY-NEXT: addi16 sp, sp, 42000; CSKY-NEXT: rts162001; CSKY-NEXT: .p2align 12002; CSKY-NEXT: # %bb.1:2003; CSKY-NEXT: .p2align 22004; CSKY-NEXT: .LCPI74_0:2005; CSKY-NEXT: .long __atomic_fetch_and_22006 %1 = atomicrmw and ptr %a, i16 %b seq_cst2007 ret i16 %12008}2009 2010define i16 @atomicrmw_nand_i16_monotonic(ptr %a, i16 %b) nounwind {2011; CSKY-LABEL: atomicrmw_nand_i16_monotonic:2012; CSKY: # %bb.0:2013; CSKY-NEXT: subi16 sp, sp, 42014; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill2015; CSKY-NEXT: movi16 a2, 02016; CSKY-NEXT: jsri32 [.LCPI75_0]2017; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload2018; CSKY-NEXT: addi16 sp, sp, 42019; CSKY-NEXT: rts162020; CSKY-NEXT: .p2align 12021; CSKY-NEXT: # %bb.1:2022; CSKY-NEXT: .p2align 22023; CSKY-NEXT: .LCPI75_0:2024; CSKY-NEXT: .long __atomic_fetch_nand_22025 %1 = atomicrmw nand ptr %a, i16 %b monotonic2026 ret i16 %12027}2028 2029define i16 @atomicrmw_nand_i16_acquire(ptr %a, i16 %b) nounwind {2030; CSKY-LABEL: atomicrmw_nand_i16_acquire:2031; CSKY: # %bb.0:2032; CSKY-NEXT: subi16 sp, sp, 42033; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill2034; CSKY-NEXT: movi16 a2, 22035; CSKY-NEXT: jsri32 [.LCPI76_0]2036; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload2037; CSKY-NEXT: addi16 sp, sp, 42038; CSKY-NEXT: rts162039; CSKY-NEXT: .p2align 12040; CSKY-NEXT: # %bb.1:2041; CSKY-NEXT: .p2align 22042; CSKY-NEXT: .LCPI76_0:2043; CSKY-NEXT: .long __atomic_fetch_nand_22044 %1 = atomicrmw nand ptr %a, i16 %b acquire2045 ret i16 %12046}2047 2048define i16 @atomicrmw_nand_i16_release(ptr %a, i16 %b) nounwind {2049; CSKY-LABEL: atomicrmw_nand_i16_release:2050; CSKY: # %bb.0:2051; CSKY-NEXT: subi16 sp, sp, 42052; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill2053; CSKY-NEXT: movi16 a2, 32054; CSKY-NEXT: jsri32 [.LCPI77_0]2055; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload2056; CSKY-NEXT: addi16 sp, sp, 42057; CSKY-NEXT: rts162058; CSKY-NEXT: .p2align 12059; CSKY-NEXT: # %bb.1:2060; CSKY-NEXT: .p2align 22061; CSKY-NEXT: .LCPI77_0:2062; CSKY-NEXT: .long __atomic_fetch_nand_22063 %1 = atomicrmw nand ptr %a, i16 %b release2064 ret i16 %12065}2066 2067define i16 @atomicrmw_nand_i16_acq_rel(ptr %a, i16 %b) nounwind {2068; CSKY-LABEL: atomicrmw_nand_i16_acq_rel:2069; CSKY: # %bb.0:2070; CSKY-NEXT: subi16 sp, sp, 42071; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill2072; CSKY-NEXT: movi16 a2, 42073; CSKY-NEXT: jsri32 [.LCPI78_0]2074; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload2075; CSKY-NEXT: addi16 sp, sp, 42076; CSKY-NEXT: rts162077; CSKY-NEXT: .p2align 12078; CSKY-NEXT: # %bb.1:2079; CSKY-NEXT: .p2align 22080; CSKY-NEXT: .LCPI78_0:2081; CSKY-NEXT: .long __atomic_fetch_nand_22082 %1 = atomicrmw nand ptr %a, i16 %b acq_rel2083 ret i16 %12084}2085 2086define i16 @atomicrmw_nand_i16_seq_cst(ptr %a, i16 %b) nounwind {2087; CSKY-LABEL: atomicrmw_nand_i16_seq_cst:2088; CSKY: # %bb.0:2089; CSKY-NEXT: subi16 sp, sp, 42090; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill2091; CSKY-NEXT: movi16 a2, 52092; CSKY-NEXT: jsri32 [.LCPI79_0]2093; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload2094; CSKY-NEXT: addi16 sp, sp, 42095; CSKY-NEXT: rts162096; CSKY-NEXT: .p2align 12097; CSKY-NEXT: # %bb.1:2098; CSKY-NEXT: .p2align 22099; CSKY-NEXT: .LCPI79_0:2100; CSKY-NEXT: .long __atomic_fetch_nand_22101 %1 = atomicrmw nand ptr %a, i16 %b seq_cst2102 ret i16 %12103}2104 2105define i16 @atomicrmw_or_i16_monotonic(ptr %a, i16 %b) nounwind {2106; CSKY-LABEL: atomicrmw_or_i16_monotonic:2107; CSKY: # %bb.0:2108; CSKY-NEXT: subi16 sp, sp, 42109; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill2110; CSKY-NEXT: movi16 a2, 02111; CSKY-NEXT: jsri32 [.LCPI80_0]2112; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload2113; CSKY-NEXT: addi16 sp, sp, 42114; CSKY-NEXT: rts162115; CSKY-NEXT: .p2align 12116; CSKY-NEXT: # %bb.1:2117; CSKY-NEXT: .p2align 22118; CSKY-NEXT: .LCPI80_0:2119; CSKY-NEXT: .long __atomic_fetch_or_22120 %1 = atomicrmw or ptr %a, i16 %b monotonic2121 ret i16 %12122}2123 2124define i16 @atomicrmw_or_i16_acquire(ptr %a, i16 %b) nounwind {2125; CSKY-LABEL: atomicrmw_or_i16_acquire:2126; CSKY: # %bb.0:2127; CSKY-NEXT: subi16 sp, sp, 42128; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill2129; CSKY-NEXT: movi16 a2, 22130; CSKY-NEXT: jsri32 [.LCPI81_0]2131; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload2132; CSKY-NEXT: addi16 sp, sp, 42133; CSKY-NEXT: rts162134; CSKY-NEXT: .p2align 12135; CSKY-NEXT: # %bb.1:2136; CSKY-NEXT: .p2align 22137; CSKY-NEXT: .LCPI81_0:2138; CSKY-NEXT: .long __atomic_fetch_or_22139 %1 = atomicrmw or ptr %a, i16 %b acquire2140 ret i16 %12141}2142 2143define i16 @atomicrmw_or_i16_release(ptr %a, i16 %b) nounwind {2144; CSKY-LABEL: atomicrmw_or_i16_release:2145; CSKY: # %bb.0:2146; CSKY-NEXT: subi16 sp, sp, 42147; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill2148; CSKY-NEXT: movi16 a2, 32149; CSKY-NEXT: jsri32 [.LCPI82_0]2150; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload2151; CSKY-NEXT: addi16 sp, sp, 42152; CSKY-NEXT: rts162153; CSKY-NEXT: .p2align 12154; CSKY-NEXT: # %bb.1:2155; CSKY-NEXT: .p2align 22156; CSKY-NEXT: .LCPI82_0:2157; CSKY-NEXT: .long __atomic_fetch_or_22158 %1 = atomicrmw or ptr %a, i16 %b release2159 ret i16 %12160}2161 2162define i16 @atomicrmw_or_i16_acq_rel(ptr %a, i16 %b) nounwind {2163; CSKY-LABEL: atomicrmw_or_i16_acq_rel:2164; CSKY: # %bb.0:2165; CSKY-NEXT: subi16 sp, sp, 42166; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill2167; CSKY-NEXT: movi16 a2, 42168; CSKY-NEXT: jsri32 [.LCPI83_0]2169; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload2170; CSKY-NEXT: addi16 sp, sp, 42171; CSKY-NEXT: rts162172; CSKY-NEXT: .p2align 12173; CSKY-NEXT: # %bb.1:2174; CSKY-NEXT: .p2align 22175; CSKY-NEXT: .LCPI83_0:2176; CSKY-NEXT: .long __atomic_fetch_or_22177 %1 = atomicrmw or ptr %a, i16 %b acq_rel2178 ret i16 %12179}2180 2181define i16 @atomicrmw_or_i16_seq_cst(ptr %a, i16 %b) nounwind {2182; CSKY-LABEL: atomicrmw_or_i16_seq_cst:2183; CSKY: # %bb.0:2184; CSKY-NEXT: subi16 sp, sp, 42185; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill2186; CSKY-NEXT: movi16 a2, 52187; CSKY-NEXT: jsri32 [.LCPI84_0]2188; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload2189; CSKY-NEXT: addi16 sp, sp, 42190; CSKY-NEXT: rts162191; CSKY-NEXT: .p2align 12192; CSKY-NEXT: # %bb.1:2193; CSKY-NEXT: .p2align 22194; CSKY-NEXT: .LCPI84_0:2195; CSKY-NEXT: .long __atomic_fetch_or_22196 %1 = atomicrmw or ptr %a, i16 %b seq_cst2197 ret i16 %12198}2199 2200define i16 @atomicrmw_xor_i16_monotonic(ptr %a, i16 %b) nounwind {2201; CSKY-LABEL: atomicrmw_xor_i16_monotonic:2202; CSKY: # %bb.0:2203; CSKY-NEXT: subi16 sp, sp, 42204; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill2205; CSKY-NEXT: movi16 a2, 02206; CSKY-NEXT: jsri32 [.LCPI85_0]2207; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload2208; CSKY-NEXT: addi16 sp, sp, 42209; CSKY-NEXT: rts162210; CSKY-NEXT: .p2align 12211; CSKY-NEXT: # %bb.1:2212; CSKY-NEXT: .p2align 22213; CSKY-NEXT: .LCPI85_0:2214; CSKY-NEXT: .long __atomic_fetch_xor_22215 %1 = atomicrmw xor ptr %a, i16 %b monotonic2216 ret i16 %12217}2218 2219define i16 @atomicrmw_xor_i16_acquire(ptr %a, i16 %b) nounwind {2220; CSKY-LABEL: atomicrmw_xor_i16_acquire:2221; CSKY: # %bb.0:2222; CSKY-NEXT: subi16 sp, sp, 42223; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill2224; CSKY-NEXT: movi16 a2, 22225; CSKY-NEXT: jsri32 [.LCPI86_0]2226; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload2227; CSKY-NEXT: addi16 sp, sp, 42228; CSKY-NEXT: rts162229; CSKY-NEXT: .p2align 12230; CSKY-NEXT: # %bb.1:2231; CSKY-NEXT: .p2align 22232; CSKY-NEXT: .LCPI86_0:2233; CSKY-NEXT: .long __atomic_fetch_xor_22234 %1 = atomicrmw xor ptr %a, i16 %b acquire2235 ret i16 %12236}2237 2238define i16 @atomicrmw_xor_i16_release(ptr %a, i16 %b) nounwind {2239; CSKY-LABEL: atomicrmw_xor_i16_release:2240; CSKY: # %bb.0:2241; CSKY-NEXT: subi16 sp, sp, 42242; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill2243; CSKY-NEXT: movi16 a2, 32244; CSKY-NEXT: jsri32 [.LCPI87_0]2245; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload2246; CSKY-NEXT: addi16 sp, sp, 42247; CSKY-NEXT: rts162248; CSKY-NEXT: .p2align 12249; CSKY-NEXT: # %bb.1:2250; CSKY-NEXT: .p2align 22251; CSKY-NEXT: .LCPI87_0:2252; CSKY-NEXT: .long __atomic_fetch_xor_22253 %1 = atomicrmw xor ptr %a, i16 %b release2254 ret i16 %12255}2256 2257define i16 @atomicrmw_xor_i16_acq_rel(ptr %a, i16 %b) nounwind {2258; CSKY-LABEL: atomicrmw_xor_i16_acq_rel:2259; CSKY: # %bb.0:2260; CSKY-NEXT: subi16 sp, sp, 42261; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill2262; CSKY-NEXT: movi16 a2, 42263; CSKY-NEXT: jsri32 [.LCPI88_0]2264; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload2265; CSKY-NEXT: addi16 sp, sp, 42266; CSKY-NEXT: rts162267; CSKY-NEXT: .p2align 12268; CSKY-NEXT: # %bb.1:2269; CSKY-NEXT: .p2align 22270; CSKY-NEXT: .LCPI88_0:2271; CSKY-NEXT: .long __atomic_fetch_xor_22272 %1 = atomicrmw xor ptr %a, i16 %b acq_rel2273 ret i16 %12274}2275 2276define i16 @atomicrmw_xor_i16_seq_cst(ptr %a, i16 %b) nounwind {2277; CSKY-LABEL: atomicrmw_xor_i16_seq_cst:2278; CSKY: # %bb.0:2279; CSKY-NEXT: subi16 sp, sp, 42280; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill2281; CSKY-NEXT: movi16 a2, 52282; CSKY-NEXT: jsri32 [.LCPI89_0]2283; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload2284; CSKY-NEXT: addi16 sp, sp, 42285; CSKY-NEXT: rts162286; CSKY-NEXT: .p2align 12287; CSKY-NEXT: # %bb.1:2288; CSKY-NEXT: .p2align 22289; CSKY-NEXT: .LCPI89_0:2290; CSKY-NEXT: .long __atomic_fetch_xor_22291 %1 = atomicrmw xor ptr %a, i16 %b seq_cst2292 ret i16 %12293}2294 2295define i16 @atomicrmw_max_i16_monotonic(ptr %a, i16 %b) nounwind {2296; CSKY-LABEL: atomicrmw_max_i16_monotonic:2297; CSKY: # %bb.0:2298; CSKY-NEXT: subi16 sp, sp, 202299; CSKY-NEXT: st16.w l3, (sp, 16) # 4-byte Folded Spill2300; CSKY-NEXT: st16.w l2, (sp, 12) # 4-byte Folded Spill2301; CSKY-NEXT: st16.w l1, (sp, 8) # 4-byte Folded Spill2302; CSKY-NEXT: st16.w l0, (sp, 4) # 4-byte Folded Spill2303; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill2304; CSKY-NEXT: subi16 sp, sp, 82305; CSKY-NEXT: mov16 l0, a12306; CSKY-NEXT: mov16 l1, a02307; CSKY-NEXT: ld16.h a0, (a0, 0)2308; CSKY-NEXT: sexth16 l2, a12309; CSKY-NEXT: movi16 l3, 02310; CSKY-NEXT: .LBB90_1: # %atomicrmw.start2311; CSKY-NEXT: # =>This Inner Loop Header: Depth=12312; CSKY-NEXT: sexth16 a1, a02313; CSKY-NEXT: cmplt16 l2, a12314; CSKY-NEXT: mov16 a2, l02315; CSKY-NEXT: movt32 a2, a02316; CSKY-NEXT: st32.h a0, (sp, 6)2317; CSKY-NEXT: st16.w l3, (sp, 0)2318; CSKY-NEXT: mov16 a0, l12319; CSKY-NEXT: addi32 a1, sp, 62320; CSKY-NEXT: movi16 a3, 02321; CSKY-NEXT: jsri32 [.LCPI90_0]2322; CSKY-NEXT: mov16 a1, a02323; CSKY-NEXT: ld32.h a0, (sp, 6)2324; CSKY-NEXT: bez32 a1, .LBB90_12325; CSKY-NEXT: # %bb.2: # %atomicrmw.end2326; CSKY-NEXT: addi16 sp, sp, 82327; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload2328; CSKY-NEXT: ld16.w l0, (sp, 4) # 4-byte Folded Reload2329; CSKY-NEXT: ld16.w l1, (sp, 8) # 4-byte Folded Reload2330; CSKY-NEXT: ld16.w l2, (sp, 12) # 4-byte Folded Reload2331; CSKY-NEXT: ld16.w l3, (sp, 16) # 4-byte Folded Reload2332; CSKY-NEXT: addi16 sp, sp, 202333; CSKY-NEXT: rts162334; CSKY-NEXT: .p2align 12335; CSKY-NEXT: # %bb.3:2336; CSKY-NEXT: .p2align 22337; CSKY-NEXT: .LCPI90_0:2338; CSKY-NEXT: .long __atomic_compare_exchange_22339 %1 = atomicrmw max ptr %a, i16 %b monotonic2340 ret i16 %12341}2342 2343define i16 @atomicrmw_max_i16_acquire(ptr %a, i16 %b) nounwind {2344; CSKY-LABEL: atomicrmw_max_i16_acquire:2345; CSKY: # %bb.0:2346; CSKY-NEXT: subi16 sp, sp, 202347; CSKY-NEXT: st16.w l3, (sp, 16) # 4-byte Folded Spill2348; CSKY-NEXT: st16.w l2, (sp, 12) # 4-byte Folded Spill2349; CSKY-NEXT: st16.w l1, (sp, 8) # 4-byte Folded Spill2350; CSKY-NEXT: st16.w l0, (sp, 4) # 4-byte Folded Spill2351; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill2352; CSKY-NEXT: subi16 sp, sp, 82353; CSKY-NEXT: mov16 l0, a12354; CSKY-NEXT: mov16 l1, a02355; CSKY-NEXT: ld16.h a0, (a0, 0)2356; CSKY-NEXT: sexth16 l2, a12357; CSKY-NEXT: movi16 l3, 22358; CSKY-NEXT: .LBB91_1: # %atomicrmw.start2359; CSKY-NEXT: # =>This Inner Loop Header: Depth=12360; CSKY-NEXT: sexth16 a1, a02361; CSKY-NEXT: cmplt16 l2, a12362; CSKY-NEXT: mov16 a2, l02363; CSKY-NEXT: movt32 a2, a02364; CSKY-NEXT: st32.h a0, (sp, 6)2365; CSKY-NEXT: st16.w l3, (sp, 0)2366; CSKY-NEXT: mov16 a0, l12367; CSKY-NEXT: addi32 a1, sp, 62368; CSKY-NEXT: movi16 a3, 22369; CSKY-NEXT: jsri32 [.LCPI91_0]2370; CSKY-NEXT: mov16 a1, a02371; CSKY-NEXT: ld32.h a0, (sp, 6)2372; CSKY-NEXT: bez32 a1, .LBB91_12373; CSKY-NEXT: # %bb.2: # %atomicrmw.end2374; CSKY-NEXT: addi16 sp, sp, 82375; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload2376; CSKY-NEXT: ld16.w l0, (sp, 4) # 4-byte Folded Reload2377; CSKY-NEXT: ld16.w l1, (sp, 8) # 4-byte Folded Reload2378; CSKY-NEXT: ld16.w l2, (sp, 12) # 4-byte Folded Reload2379; CSKY-NEXT: ld16.w l3, (sp, 16) # 4-byte Folded Reload2380; CSKY-NEXT: addi16 sp, sp, 202381; CSKY-NEXT: rts162382; CSKY-NEXT: .p2align 12383; CSKY-NEXT: # %bb.3:2384; CSKY-NEXT: .p2align 22385; CSKY-NEXT: .LCPI91_0:2386; CSKY-NEXT: .long __atomic_compare_exchange_22387 %1 = atomicrmw max ptr %a, i16 %b acquire2388 ret i16 %12389}2390 2391define i16 @atomicrmw_max_i16_release(ptr %a, i16 %b) nounwind {2392; CSKY-LABEL: atomicrmw_max_i16_release:2393; CSKY: # %bb.0:2394; CSKY-NEXT: subi16 sp, sp, 202395; CSKY-NEXT: st16.w l3, (sp, 16) # 4-byte Folded Spill2396; CSKY-NEXT: st16.w l2, (sp, 12) # 4-byte Folded Spill2397; CSKY-NEXT: st16.w l1, (sp, 8) # 4-byte Folded Spill2398; CSKY-NEXT: st16.w l0, (sp, 4) # 4-byte Folded Spill2399; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill2400; CSKY-NEXT: subi16 sp, sp, 82401; CSKY-NEXT: mov16 l0, a12402; CSKY-NEXT: mov16 l1, a02403; CSKY-NEXT: ld16.h a0, (a0, 0)2404; CSKY-NEXT: sexth16 l2, a12405; CSKY-NEXT: movi16 l3, 02406; CSKY-NEXT: .LBB92_1: # %atomicrmw.start2407; CSKY-NEXT: # =>This Inner Loop Header: Depth=12408; CSKY-NEXT: sexth16 a1, a02409; CSKY-NEXT: cmplt16 l2, a12410; CSKY-NEXT: mov16 a2, l02411; CSKY-NEXT: movt32 a2, a02412; CSKY-NEXT: st32.h a0, (sp, 6)2413; CSKY-NEXT: st16.w l3, (sp, 0)2414; CSKY-NEXT: mov16 a0, l12415; CSKY-NEXT: addi32 a1, sp, 62416; CSKY-NEXT: movi16 a3, 32417; CSKY-NEXT: jsri32 [.LCPI92_0]2418; CSKY-NEXT: mov16 a1, a02419; CSKY-NEXT: ld32.h a0, (sp, 6)2420; CSKY-NEXT: bez32 a1, .LBB92_12421; CSKY-NEXT: # %bb.2: # %atomicrmw.end2422; CSKY-NEXT: addi16 sp, sp, 82423; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload2424; CSKY-NEXT: ld16.w l0, (sp, 4) # 4-byte Folded Reload2425; CSKY-NEXT: ld16.w l1, (sp, 8) # 4-byte Folded Reload2426; CSKY-NEXT: ld16.w l2, (sp, 12) # 4-byte Folded Reload2427; CSKY-NEXT: ld16.w l3, (sp, 16) # 4-byte Folded Reload2428; CSKY-NEXT: addi16 sp, sp, 202429; CSKY-NEXT: rts162430; CSKY-NEXT: .p2align 12431; CSKY-NEXT: # %bb.3:2432; CSKY-NEXT: .p2align 22433; CSKY-NEXT: .LCPI92_0:2434; CSKY-NEXT: .long __atomic_compare_exchange_22435 %1 = atomicrmw max ptr %a, i16 %b release2436 ret i16 %12437}2438 2439define i16 @atomicrmw_max_i16_acq_rel(ptr %a, i16 %b) nounwind {2440; CSKY-LABEL: atomicrmw_max_i16_acq_rel:2441; CSKY: # %bb.0:2442; CSKY-NEXT: subi16 sp, sp, 202443; CSKY-NEXT: st16.w l3, (sp, 16) # 4-byte Folded Spill2444; CSKY-NEXT: st16.w l2, (sp, 12) # 4-byte Folded Spill2445; CSKY-NEXT: st16.w l1, (sp, 8) # 4-byte Folded Spill2446; CSKY-NEXT: st16.w l0, (sp, 4) # 4-byte Folded Spill2447; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill2448; CSKY-NEXT: subi16 sp, sp, 82449; CSKY-NEXT: mov16 l0, a12450; CSKY-NEXT: mov16 l1, a02451; CSKY-NEXT: ld16.h a0, (a0, 0)2452; CSKY-NEXT: sexth16 l2, a12453; CSKY-NEXT: movi16 l3, 22454; CSKY-NEXT: .LBB93_1: # %atomicrmw.start2455; CSKY-NEXT: # =>This Inner Loop Header: Depth=12456; CSKY-NEXT: sexth16 a1, a02457; CSKY-NEXT: cmplt16 l2, a12458; CSKY-NEXT: mov16 a2, l02459; CSKY-NEXT: movt32 a2, a02460; CSKY-NEXT: st32.h a0, (sp, 6)2461; CSKY-NEXT: st16.w l3, (sp, 0)2462; CSKY-NEXT: mov16 a0, l12463; CSKY-NEXT: addi32 a1, sp, 62464; CSKY-NEXT: movi16 a3, 42465; CSKY-NEXT: jsri32 [.LCPI93_0]2466; CSKY-NEXT: mov16 a1, a02467; CSKY-NEXT: ld32.h a0, (sp, 6)2468; CSKY-NEXT: bez32 a1, .LBB93_12469; CSKY-NEXT: # %bb.2: # %atomicrmw.end2470; CSKY-NEXT: addi16 sp, sp, 82471; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload2472; CSKY-NEXT: ld16.w l0, (sp, 4) # 4-byte Folded Reload2473; CSKY-NEXT: ld16.w l1, (sp, 8) # 4-byte Folded Reload2474; CSKY-NEXT: ld16.w l2, (sp, 12) # 4-byte Folded Reload2475; CSKY-NEXT: ld16.w l3, (sp, 16) # 4-byte Folded Reload2476; CSKY-NEXT: addi16 sp, sp, 202477; CSKY-NEXT: rts162478; CSKY-NEXT: .p2align 12479; CSKY-NEXT: # %bb.3:2480; CSKY-NEXT: .p2align 22481; CSKY-NEXT: .LCPI93_0:2482; CSKY-NEXT: .long __atomic_compare_exchange_22483 %1 = atomicrmw max ptr %a, i16 %b acq_rel2484 ret i16 %12485}2486 2487define i16 @atomicrmw_max_i16_seq_cst(ptr %a, i16 %b) nounwind {2488; CSKY-LABEL: atomicrmw_max_i16_seq_cst:2489; CSKY: # %bb.0:2490; CSKY-NEXT: subi16 sp, sp, 202491; CSKY-NEXT: st16.w l3, (sp, 16) # 4-byte Folded Spill2492; CSKY-NEXT: st16.w l2, (sp, 12) # 4-byte Folded Spill2493; CSKY-NEXT: st16.w l1, (sp, 8) # 4-byte Folded Spill2494; CSKY-NEXT: st16.w l0, (sp, 4) # 4-byte Folded Spill2495; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill2496; CSKY-NEXT: subi16 sp, sp, 82497; CSKY-NEXT: mov16 l0, a12498; CSKY-NEXT: mov16 l1, a02499; CSKY-NEXT: ld16.h a0, (a0, 0)2500; CSKY-NEXT: sexth16 l2, a12501; CSKY-NEXT: movi16 l3, 52502; CSKY-NEXT: .LBB94_1: # %atomicrmw.start2503; CSKY-NEXT: # =>This Inner Loop Header: Depth=12504; CSKY-NEXT: sexth16 a1, a02505; CSKY-NEXT: cmplt16 l2, a12506; CSKY-NEXT: mov16 a2, l02507; CSKY-NEXT: movt32 a2, a02508; CSKY-NEXT: st32.h a0, (sp, 6)2509; CSKY-NEXT: st16.w l3, (sp, 0)2510; CSKY-NEXT: mov16 a0, l12511; CSKY-NEXT: addi32 a1, sp, 62512; CSKY-NEXT: movi16 a3, 52513; CSKY-NEXT: jsri32 [.LCPI94_0]2514; CSKY-NEXT: mov16 a1, a02515; CSKY-NEXT: ld32.h a0, (sp, 6)2516; CSKY-NEXT: bez32 a1, .LBB94_12517; CSKY-NEXT: # %bb.2: # %atomicrmw.end2518; CSKY-NEXT: addi16 sp, sp, 82519; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload2520; CSKY-NEXT: ld16.w l0, (sp, 4) # 4-byte Folded Reload2521; CSKY-NEXT: ld16.w l1, (sp, 8) # 4-byte Folded Reload2522; CSKY-NEXT: ld16.w l2, (sp, 12) # 4-byte Folded Reload2523; CSKY-NEXT: ld16.w l3, (sp, 16) # 4-byte Folded Reload2524; CSKY-NEXT: addi16 sp, sp, 202525; CSKY-NEXT: rts162526; CSKY-NEXT: .p2align 12527; CSKY-NEXT: # %bb.3:2528; CSKY-NEXT: .p2align 22529; CSKY-NEXT: .LCPI94_0:2530; CSKY-NEXT: .long __atomic_compare_exchange_22531 %1 = atomicrmw max ptr %a, i16 %b seq_cst2532 ret i16 %12533}2534 2535define i16 @atomicrmw_min_i16_monotonic(ptr %a, i16 %b) nounwind {2536; CSKY-LABEL: atomicrmw_min_i16_monotonic:2537; CSKY: # %bb.0:2538; CSKY-NEXT: subi16 sp, sp, 202539; CSKY-NEXT: st16.w l3, (sp, 16) # 4-byte Folded Spill2540; CSKY-NEXT: st16.w l2, (sp, 12) # 4-byte Folded Spill2541; CSKY-NEXT: st16.w l1, (sp, 8) # 4-byte Folded Spill2542; CSKY-NEXT: st16.w l0, (sp, 4) # 4-byte Folded Spill2543; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill2544; CSKY-NEXT: subi16 sp, sp, 82545; CSKY-NEXT: mov16 l0, a12546; CSKY-NEXT: mov16 l1, a02547; CSKY-NEXT: ld16.h a0, (a0, 0)2548; CSKY-NEXT: sexth16 l2, a12549; CSKY-NEXT: movi16 l3, 02550; CSKY-NEXT: .LBB95_1: # %atomicrmw.start2551; CSKY-NEXT: # =>This Inner Loop Header: Depth=12552; CSKY-NEXT: sexth16 a1, a02553; CSKY-NEXT: cmplt16 l2, a12554; CSKY-NEXT: mov16 a2, l02555; CSKY-NEXT: movf32 a2, a02556; CSKY-NEXT: st32.h a0, (sp, 6)2557; CSKY-NEXT: st16.w l3, (sp, 0)2558; CSKY-NEXT: mov16 a0, l12559; CSKY-NEXT: addi32 a1, sp, 62560; CSKY-NEXT: movi16 a3, 02561; CSKY-NEXT: jsri32 [.LCPI95_0]2562; CSKY-NEXT: mov16 a1, a02563; CSKY-NEXT: ld32.h a0, (sp, 6)2564; CSKY-NEXT: bez32 a1, .LBB95_12565; CSKY-NEXT: # %bb.2: # %atomicrmw.end2566; CSKY-NEXT: addi16 sp, sp, 82567; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload2568; CSKY-NEXT: ld16.w l0, (sp, 4) # 4-byte Folded Reload2569; CSKY-NEXT: ld16.w l1, (sp, 8) # 4-byte Folded Reload2570; CSKY-NEXT: ld16.w l2, (sp, 12) # 4-byte Folded Reload2571; CSKY-NEXT: ld16.w l3, (sp, 16) # 4-byte Folded Reload2572; CSKY-NEXT: addi16 sp, sp, 202573; CSKY-NEXT: rts162574; CSKY-NEXT: .p2align 12575; CSKY-NEXT: # %bb.3:2576; CSKY-NEXT: .p2align 22577; CSKY-NEXT: .LCPI95_0:2578; CSKY-NEXT: .long __atomic_compare_exchange_22579 %1 = atomicrmw min ptr %a, i16 %b monotonic2580 ret i16 %12581}2582 2583define i16 @atomicrmw_min_i16_acquire(ptr %a, i16 %b) nounwind {2584; CSKY-LABEL: atomicrmw_min_i16_acquire:2585; CSKY: # %bb.0:2586; CSKY-NEXT: subi16 sp, sp, 202587; CSKY-NEXT: st16.w l3, (sp, 16) # 4-byte Folded Spill2588; CSKY-NEXT: st16.w l2, (sp, 12) # 4-byte Folded Spill2589; CSKY-NEXT: st16.w l1, (sp, 8) # 4-byte Folded Spill2590; CSKY-NEXT: st16.w l0, (sp, 4) # 4-byte Folded Spill2591; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill2592; CSKY-NEXT: subi16 sp, sp, 82593; CSKY-NEXT: mov16 l0, a12594; CSKY-NEXT: mov16 l1, a02595; CSKY-NEXT: ld16.h a0, (a0, 0)2596; CSKY-NEXT: sexth16 l2, a12597; CSKY-NEXT: movi16 l3, 22598; CSKY-NEXT: .LBB96_1: # %atomicrmw.start2599; CSKY-NEXT: # =>This Inner Loop Header: Depth=12600; CSKY-NEXT: sexth16 a1, a02601; CSKY-NEXT: cmplt16 l2, a12602; CSKY-NEXT: mov16 a2, l02603; CSKY-NEXT: movf32 a2, a02604; CSKY-NEXT: st32.h a0, (sp, 6)2605; CSKY-NEXT: st16.w l3, (sp, 0)2606; CSKY-NEXT: mov16 a0, l12607; CSKY-NEXT: addi32 a1, sp, 62608; CSKY-NEXT: movi16 a3, 22609; CSKY-NEXT: jsri32 [.LCPI96_0]2610; CSKY-NEXT: mov16 a1, a02611; CSKY-NEXT: ld32.h a0, (sp, 6)2612; CSKY-NEXT: bez32 a1, .LBB96_12613; CSKY-NEXT: # %bb.2: # %atomicrmw.end2614; CSKY-NEXT: addi16 sp, sp, 82615; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload2616; CSKY-NEXT: ld16.w l0, (sp, 4) # 4-byte Folded Reload2617; CSKY-NEXT: ld16.w l1, (sp, 8) # 4-byte Folded Reload2618; CSKY-NEXT: ld16.w l2, (sp, 12) # 4-byte Folded Reload2619; CSKY-NEXT: ld16.w l3, (sp, 16) # 4-byte Folded Reload2620; CSKY-NEXT: addi16 sp, sp, 202621; CSKY-NEXT: rts162622; CSKY-NEXT: .p2align 12623; CSKY-NEXT: # %bb.3:2624; CSKY-NEXT: .p2align 22625; CSKY-NEXT: .LCPI96_0:2626; CSKY-NEXT: .long __atomic_compare_exchange_22627 %1 = atomicrmw min ptr %a, i16 %b acquire2628 ret i16 %12629}2630 2631define i16 @atomicrmw_min_i16_release(ptr %a, i16 %b) nounwind {2632; CSKY-LABEL: atomicrmw_min_i16_release:2633; CSKY: # %bb.0:2634; CSKY-NEXT: subi16 sp, sp, 202635; CSKY-NEXT: st16.w l3, (sp, 16) # 4-byte Folded Spill2636; CSKY-NEXT: st16.w l2, (sp, 12) # 4-byte Folded Spill2637; CSKY-NEXT: st16.w l1, (sp, 8) # 4-byte Folded Spill2638; CSKY-NEXT: st16.w l0, (sp, 4) # 4-byte Folded Spill2639; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill2640; CSKY-NEXT: subi16 sp, sp, 82641; CSKY-NEXT: mov16 l0, a12642; CSKY-NEXT: mov16 l1, a02643; CSKY-NEXT: ld16.h a0, (a0, 0)2644; CSKY-NEXT: sexth16 l2, a12645; CSKY-NEXT: movi16 l3, 02646; CSKY-NEXT: .LBB97_1: # %atomicrmw.start2647; CSKY-NEXT: # =>This Inner Loop Header: Depth=12648; CSKY-NEXT: sexth16 a1, a02649; CSKY-NEXT: cmplt16 l2, a12650; CSKY-NEXT: mov16 a2, l02651; CSKY-NEXT: movf32 a2, a02652; CSKY-NEXT: st32.h a0, (sp, 6)2653; CSKY-NEXT: st16.w l3, (sp, 0)2654; CSKY-NEXT: mov16 a0, l12655; CSKY-NEXT: addi32 a1, sp, 62656; CSKY-NEXT: movi16 a3, 32657; CSKY-NEXT: jsri32 [.LCPI97_0]2658; CSKY-NEXT: mov16 a1, a02659; CSKY-NEXT: ld32.h a0, (sp, 6)2660; CSKY-NEXT: bez32 a1, .LBB97_12661; CSKY-NEXT: # %bb.2: # %atomicrmw.end2662; CSKY-NEXT: addi16 sp, sp, 82663; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload2664; CSKY-NEXT: ld16.w l0, (sp, 4) # 4-byte Folded Reload2665; CSKY-NEXT: ld16.w l1, (sp, 8) # 4-byte Folded Reload2666; CSKY-NEXT: ld16.w l2, (sp, 12) # 4-byte Folded Reload2667; CSKY-NEXT: ld16.w l3, (sp, 16) # 4-byte Folded Reload2668; CSKY-NEXT: addi16 sp, sp, 202669; CSKY-NEXT: rts162670; CSKY-NEXT: .p2align 12671; CSKY-NEXT: # %bb.3:2672; CSKY-NEXT: .p2align 22673; CSKY-NEXT: .LCPI97_0:2674; CSKY-NEXT: .long __atomic_compare_exchange_22675 %1 = atomicrmw min ptr %a, i16 %b release2676 ret i16 %12677}2678 2679define i16 @atomicrmw_min_i16_acq_rel(ptr %a, i16 %b) nounwind {2680; CSKY-LABEL: atomicrmw_min_i16_acq_rel:2681; CSKY: # %bb.0:2682; CSKY-NEXT: subi16 sp, sp, 202683; CSKY-NEXT: st16.w l3, (sp, 16) # 4-byte Folded Spill2684; CSKY-NEXT: st16.w l2, (sp, 12) # 4-byte Folded Spill2685; CSKY-NEXT: st16.w l1, (sp, 8) # 4-byte Folded Spill2686; CSKY-NEXT: st16.w l0, (sp, 4) # 4-byte Folded Spill2687; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill2688; CSKY-NEXT: subi16 sp, sp, 82689; CSKY-NEXT: mov16 l0, a12690; CSKY-NEXT: mov16 l1, a02691; CSKY-NEXT: ld16.h a0, (a0, 0)2692; CSKY-NEXT: sexth16 l2, a12693; CSKY-NEXT: movi16 l3, 22694; CSKY-NEXT: .LBB98_1: # %atomicrmw.start2695; CSKY-NEXT: # =>This Inner Loop Header: Depth=12696; CSKY-NEXT: sexth16 a1, a02697; CSKY-NEXT: cmplt16 l2, a12698; CSKY-NEXT: mov16 a2, l02699; CSKY-NEXT: movf32 a2, a02700; CSKY-NEXT: st32.h a0, (sp, 6)2701; CSKY-NEXT: st16.w l3, (sp, 0)2702; CSKY-NEXT: mov16 a0, l12703; CSKY-NEXT: addi32 a1, sp, 62704; CSKY-NEXT: movi16 a3, 42705; CSKY-NEXT: jsri32 [.LCPI98_0]2706; CSKY-NEXT: mov16 a1, a02707; CSKY-NEXT: ld32.h a0, (sp, 6)2708; CSKY-NEXT: bez32 a1, .LBB98_12709; CSKY-NEXT: # %bb.2: # %atomicrmw.end2710; CSKY-NEXT: addi16 sp, sp, 82711; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload2712; CSKY-NEXT: ld16.w l0, (sp, 4) # 4-byte Folded Reload2713; CSKY-NEXT: ld16.w l1, (sp, 8) # 4-byte Folded Reload2714; CSKY-NEXT: ld16.w l2, (sp, 12) # 4-byte Folded Reload2715; CSKY-NEXT: ld16.w l3, (sp, 16) # 4-byte Folded Reload2716; CSKY-NEXT: addi16 sp, sp, 202717; CSKY-NEXT: rts162718; CSKY-NEXT: .p2align 12719; CSKY-NEXT: # %bb.3:2720; CSKY-NEXT: .p2align 22721; CSKY-NEXT: .LCPI98_0:2722; CSKY-NEXT: .long __atomic_compare_exchange_22723 %1 = atomicrmw min ptr %a, i16 %b acq_rel2724 ret i16 %12725}2726 2727define i16 @atomicrmw_min_i16_seq_cst(ptr %a, i16 %b) nounwind {2728; CSKY-LABEL: atomicrmw_min_i16_seq_cst:2729; CSKY: # %bb.0:2730; CSKY-NEXT: subi16 sp, sp, 202731; CSKY-NEXT: st16.w l3, (sp, 16) # 4-byte Folded Spill2732; CSKY-NEXT: st16.w l2, (sp, 12) # 4-byte Folded Spill2733; CSKY-NEXT: st16.w l1, (sp, 8) # 4-byte Folded Spill2734; CSKY-NEXT: st16.w l0, (sp, 4) # 4-byte Folded Spill2735; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill2736; CSKY-NEXT: subi16 sp, sp, 82737; CSKY-NEXT: mov16 l0, a12738; CSKY-NEXT: mov16 l1, a02739; CSKY-NEXT: ld16.h a0, (a0, 0)2740; CSKY-NEXT: sexth16 l2, a12741; CSKY-NEXT: movi16 l3, 52742; CSKY-NEXT: .LBB99_1: # %atomicrmw.start2743; CSKY-NEXT: # =>This Inner Loop Header: Depth=12744; CSKY-NEXT: sexth16 a1, a02745; CSKY-NEXT: cmplt16 l2, a12746; CSKY-NEXT: mov16 a2, l02747; CSKY-NEXT: movf32 a2, a02748; CSKY-NEXT: st32.h a0, (sp, 6)2749; CSKY-NEXT: st16.w l3, (sp, 0)2750; CSKY-NEXT: mov16 a0, l12751; CSKY-NEXT: addi32 a1, sp, 62752; CSKY-NEXT: movi16 a3, 52753; CSKY-NEXT: jsri32 [.LCPI99_0]2754; CSKY-NEXT: mov16 a1, a02755; CSKY-NEXT: ld32.h a0, (sp, 6)2756; CSKY-NEXT: bez32 a1, .LBB99_12757; CSKY-NEXT: # %bb.2: # %atomicrmw.end2758; CSKY-NEXT: addi16 sp, sp, 82759; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload2760; CSKY-NEXT: ld16.w l0, (sp, 4) # 4-byte Folded Reload2761; CSKY-NEXT: ld16.w l1, (sp, 8) # 4-byte Folded Reload2762; CSKY-NEXT: ld16.w l2, (sp, 12) # 4-byte Folded Reload2763; CSKY-NEXT: ld16.w l3, (sp, 16) # 4-byte Folded Reload2764; CSKY-NEXT: addi16 sp, sp, 202765; CSKY-NEXT: rts162766; CSKY-NEXT: .p2align 12767; CSKY-NEXT: # %bb.3:2768; CSKY-NEXT: .p2align 22769; CSKY-NEXT: .LCPI99_0:2770; CSKY-NEXT: .long __atomic_compare_exchange_22771 %1 = atomicrmw min ptr %a, i16 %b seq_cst2772 ret i16 %12773}2774 2775define i16 @atomicrmw_umax_i16_monotonic(ptr %a, i16 %b) nounwind {2776; CSKY-LABEL: atomicrmw_umax_i16_monotonic:2777; CSKY: # %bb.0:2778; CSKY-NEXT: subi16 sp, sp, 202779; CSKY-NEXT: st16.w l3, (sp, 16) # 4-byte Folded Spill2780; CSKY-NEXT: st16.w l2, (sp, 12) # 4-byte Folded Spill2781; CSKY-NEXT: st16.w l1, (sp, 8) # 4-byte Folded Spill2782; CSKY-NEXT: st16.w l0, (sp, 4) # 4-byte Folded Spill2783; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill2784; CSKY-NEXT: subi16 sp, sp, 82785; CSKY-NEXT: mov16 l0, a12786; CSKY-NEXT: mov16 l1, a02787; CSKY-NEXT: ld16.h a0, (a0, 0)2788; CSKY-NEXT: zexth16 l2, a12789; CSKY-NEXT: movi16 l3, 02790; CSKY-NEXT: .LBB100_1: # %atomicrmw.start2791; CSKY-NEXT: # =>This Inner Loop Header: Depth=12792; CSKY-NEXT: zexth16 a1, a02793; CSKY-NEXT: cmphs16 l2, a12794; CSKY-NEXT: mov16 a2, l02795; CSKY-NEXT: movf32 a2, a02796; CSKY-NEXT: st32.h a0, (sp, 6)2797; CSKY-NEXT: st16.w l3, (sp, 0)2798; CSKY-NEXT: mov16 a0, l12799; CSKY-NEXT: addi32 a1, sp, 62800; CSKY-NEXT: movi16 a3, 02801; CSKY-NEXT: jsri32 [.LCPI100_0]2802; CSKY-NEXT: mov16 a1, a02803; CSKY-NEXT: ld32.h a0, (sp, 6)2804; CSKY-NEXT: bez32 a1, .LBB100_12805; CSKY-NEXT: # %bb.2: # %atomicrmw.end2806; CSKY-NEXT: addi16 sp, sp, 82807; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload2808; CSKY-NEXT: ld16.w l0, (sp, 4) # 4-byte Folded Reload2809; CSKY-NEXT: ld16.w l1, (sp, 8) # 4-byte Folded Reload2810; CSKY-NEXT: ld16.w l2, (sp, 12) # 4-byte Folded Reload2811; CSKY-NEXT: ld16.w l3, (sp, 16) # 4-byte Folded Reload2812; CSKY-NEXT: addi16 sp, sp, 202813; CSKY-NEXT: rts162814; CSKY-NEXT: .p2align 12815; CSKY-NEXT: # %bb.3:2816; CSKY-NEXT: .p2align 22817; CSKY-NEXT: .LCPI100_0:2818; CSKY-NEXT: .long __atomic_compare_exchange_22819 %1 = atomicrmw umax ptr %a, i16 %b monotonic2820 ret i16 %12821}2822 2823define i16 @atomicrmw_umax_i16_acquire(ptr %a, i16 %b) nounwind {2824; CSKY-LABEL: atomicrmw_umax_i16_acquire:2825; CSKY: # %bb.0:2826; CSKY-NEXT: subi16 sp, sp, 202827; CSKY-NEXT: st16.w l3, (sp, 16) # 4-byte Folded Spill2828; CSKY-NEXT: st16.w l2, (sp, 12) # 4-byte Folded Spill2829; CSKY-NEXT: st16.w l1, (sp, 8) # 4-byte Folded Spill2830; CSKY-NEXT: st16.w l0, (sp, 4) # 4-byte Folded Spill2831; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill2832; CSKY-NEXT: subi16 sp, sp, 82833; CSKY-NEXT: mov16 l0, a12834; CSKY-NEXT: mov16 l1, a02835; CSKY-NEXT: ld16.h a0, (a0, 0)2836; CSKY-NEXT: zexth16 l2, a12837; CSKY-NEXT: movi16 l3, 22838; CSKY-NEXT: .LBB101_1: # %atomicrmw.start2839; CSKY-NEXT: # =>This Inner Loop Header: Depth=12840; CSKY-NEXT: zexth16 a1, a02841; CSKY-NEXT: cmphs16 l2, a12842; CSKY-NEXT: mov16 a2, l02843; CSKY-NEXT: movf32 a2, a02844; CSKY-NEXT: st32.h a0, (sp, 6)2845; CSKY-NEXT: st16.w l3, (sp, 0)2846; CSKY-NEXT: mov16 a0, l12847; CSKY-NEXT: addi32 a1, sp, 62848; CSKY-NEXT: movi16 a3, 22849; CSKY-NEXT: jsri32 [.LCPI101_0]2850; CSKY-NEXT: mov16 a1, a02851; CSKY-NEXT: ld32.h a0, (sp, 6)2852; CSKY-NEXT: bez32 a1, .LBB101_12853; CSKY-NEXT: # %bb.2: # %atomicrmw.end2854; CSKY-NEXT: addi16 sp, sp, 82855; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload2856; CSKY-NEXT: ld16.w l0, (sp, 4) # 4-byte Folded Reload2857; CSKY-NEXT: ld16.w l1, (sp, 8) # 4-byte Folded Reload2858; CSKY-NEXT: ld16.w l2, (sp, 12) # 4-byte Folded Reload2859; CSKY-NEXT: ld16.w l3, (sp, 16) # 4-byte Folded Reload2860; CSKY-NEXT: addi16 sp, sp, 202861; CSKY-NEXT: rts162862; CSKY-NEXT: .p2align 12863; CSKY-NEXT: # %bb.3:2864; CSKY-NEXT: .p2align 22865; CSKY-NEXT: .LCPI101_0:2866; CSKY-NEXT: .long __atomic_compare_exchange_22867 %1 = atomicrmw umax ptr %a, i16 %b acquire2868 ret i16 %12869}2870 2871define i16 @atomicrmw_umax_i16_release(ptr %a, i16 %b) nounwind {2872; CSKY-LABEL: atomicrmw_umax_i16_release:2873; CSKY: # %bb.0:2874; CSKY-NEXT: subi16 sp, sp, 202875; CSKY-NEXT: st16.w l3, (sp, 16) # 4-byte Folded Spill2876; CSKY-NEXT: st16.w l2, (sp, 12) # 4-byte Folded Spill2877; CSKY-NEXT: st16.w l1, (sp, 8) # 4-byte Folded Spill2878; CSKY-NEXT: st16.w l0, (sp, 4) # 4-byte Folded Spill2879; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill2880; CSKY-NEXT: subi16 sp, sp, 82881; CSKY-NEXT: mov16 l0, a12882; CSKY-NEXT: mov16 l1, a02883; CSKY-NEXT: ld16.h a0, (a0, 0)2884; CSKY-NEXT: zexth16 l2, a12885; CSKY-NEXT: movi16 l3, 02886; CSKY-NEXT: .LBB102_1: # %atomicrmw.start2887; CSKY-NEXT: # =>This Inner Loop Header: Depth=12888; CSKY-NEXT: zexth16 a1, a02889; CSKY-NEXT: cmphs16 l2, a12890; CSKY-NEXT: mov16 a2, l02891; CSKY-NEXT: movf32 a2, a02892; CSKY-NEXT: st32.h a0, (sp, 6)2893; CSKY-NEXT: st16.w l3, (sp, 0)2894; CSKY-NEXT: mov16 a0, l12895; CSKY-NEXT: addi32 a1, sp, 62896; CSKY-NEXT: movi16 a3, 32897; CSKY-NEXT: jsri32 [.LCPI102_0]2898; CSKY-NEXT: mov16 a1, a02899; CSKY-NEXT: ld32.h a0, (sp, 6)2900; CSKY-NEXT: bez32 a1, .LBB102_12901; CSKY-NEXT: # %bb.2: # %atomicrmw.end2902; CSKY-NEXT: addi16 sp, sp, 82903; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload2904; CSKY-NEXT: ld16.w l0, (sp, 4) # 4-byte Folded Reload2905; CSKY-NEXT: ld16.w l1, (sp, 8) # 4-byte Folded Reload2906; CSKY-NEXT: ld16.w l2, (sp, 12) # 4-byte Folded Reload2907; CSKY-NEXT: ld16.w l3, (sp, 16) # 4-byte Folded Reload2908; CSKY-NEXT: addi16 sp, sp, 202909; CSKY-NEXT: rts162910; CSKY-NEXT: .p2align 12911; CSKY-NEXT: # %bb.3:2912; CSKY-NEXT: .p2align 22913; CSKY-NEXT: .LCPI102_0:2914; CSKY-NEXT: .long __atomic_compare_exchange_22915 %1 = atomicrmw umax ptr %a, i16 %b release2916 ret i16 %12917}2918 2919define i16 @atomicrmw_umax_i16_acq_rel(ptr %a, i16 %b) nounwind {2920; CSKY-LABEL: atomicrmw_umax_i16_acq_rel:2921; CSKY: # %bb.0:2922; CSKY-NEXT: subi16 sp, sp, 202923; CSKY-NEXT: st16.w l3, (sp, 16) # 4-byte Folded Spill2924; CSKY-NEXT: st16.w l2, (sp, 12) # 4-byte Folded Spill2925; CSKY-NEXT: st16.w l1, (sp, 8) # 4-byte Folded Spill2926; CSKY-NEXT: st16.w l0, (sp, 4) # 4-byte Folded Spill2927; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill2928; CSKY-NEXT: subi16 sp, sp, 82929; CSKY-NEXT: mov16 l0, a12930; CSKY-NEXT: mov16 l1, a02931; CSKY-NEXT: ld16.h a0, (a0, 0)2932; CSKY-NEXT: zexth16 l2, a12933; CSKY-NEXT: movi16 l3, 22934; CSKY-NEXT: .LBB103_1: # %atomicrmw.start2935; CSKY-NEXT: # =>This Inner Loop Header: Depth=12936; CSKY-NEXT: zexth16 a1, a02937; CSKY-NEXT: cmphs16 l2, a12938; CSKY-NEXT: mov16 a2, l02939; CSKY-NEXT: movf32 a2, a02940; CSKY-NEXT: st32.h a0, (sp, 6)2941; CSKY-NEXT: st16.w l3, (sp, 0)2942; CSKY-NEXT: mov16 a0, l12943; CSKY-NEXT: addi32 a1, sp, 62944; CSKY-NEXT: movi16 a3, 42945; CSKY-NEXT: jsri32 [.LCPI103_0]2946; CSKY-NEXT: mov16 a1, a02947; CSKY-NEXT: ld32.h a0, (sp, 6)2948; CSKY-NEXT: bez32 a1, .LBB103_12949; CSKY-NEXT: # %bb.2: # %atomicrmw.end2950; CSKY-NEXT: addi16 sp, sp, 82951; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload2952; CSKY-NEXT: ld16.w l0, (sp, 4) # 4-byte Folded Reload2953; CSKY-NEXT: ld16.w l1, (sp, 8) # 4-byte Folded Reload2954; CSKY-NEXT: ld16.w l2, (sp, 12) # 4-byte Folded Reload2955; CSKY-NEXT: ld16.w l3, (sp, 16) # 4-byte Folded Reload2956; CSKY-NEXT: addi16 sp, sp, 202957; CSKY-NEXT: rts162958; CSKY-NEXT: .p2align 12959; CSKY-NEXT: # %bb.3:2960; CSKY-NEXT: .p2align 22961; CSKY-NEXT: .LCPI103_0:2962; CSKY-NEXT: .long __atomic_compare_exchange_22963 %1 = atomicrmw umax ptr %a, i16 %b acq_rel2964 ret i16 %12965}2966 2967define i16 @atomicrmw_umax_i16_seq_cst(ptr %a, i16 %b) nounwind {2968; CSKY-LABEL: atomicrmw_umax_i16_seq_cst:2969; CSKY: # %bb.0:2970; CSKY-NEXT: subi16 sp, sp, 202971; CSKY-NEXT: st16.w l3, (sp, 16) # 4-byte Folded Spill2972; CSKY-NEXT: st16.w l2, (sp, 12) # 4-byte Folded Spill2973; CSKY-NEXT: st16.w l1, (sp, 8) # 4-byte Folded Spill2974; CSKY-NEXT: st16.w l0, (sp, 4) # 4-byte Folded Spill2975; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill2976; CSKY-NEXT: subi16 sp, sp, 82977; CSKY-NEXT: mov16 l0, a12978; CSKY-NEXT: mov16 l1, a02979; CSKY-NEXT: ld16.h a0, (a0, 0)2980; CSKY-NEXT: zexth16 l2, a12981; CSKY-NEXT: movi16 l3, 52982; CSKY-NEXT: .LBB104_1: # %atomicrmw.start2983; CSKY-NEXT: # =>This Inner Loop Header: Depth=12984; CSKY-NEXT: zexth16 a1, a02985; CSKY-NEXT: cmphs16 l2, a12986; CSKY-NEXT: mov16 a2, l02987; CSKY-NEXT: movf32 a2, a02988; CSKY-NEXT: st32.h a0, (sp, 6)2989; CSKY-NEXT: st16.w l3, (sp, 0)2990; CSKY-NEXT: mov16 a0, l12991; CSKY-NEXT: addi32 a1, sp, 62992; CSKY-NEXT: movi16 a3, 52993; CSKY-NEXT: jsri32 [.LCPI104_0]2994; CSKY-NEXT: mov16 a1, a02995; CSKY-NEXT: ld32.h a0, (sp, 6)2996; CSKY-NEXT: bez32 a1, .LBB104_12997; CSKY-NEXT: # %bb.2: # %atomicrmw.end2998; CSKY-NEXT: addi16 sp, sp, 82999; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload3000; CSKY-NEXT: ld16.w l0, (sp, 4) # 4-byte Folded Reload3001; CSKY-NEXT: ld16.w l1, (sp, 8) # 4-byte Folded Reload3002; CSKY-NEXT: ld16.w l2, (sp, 12) # 4-byte Folded Reload3003; CSKY-NEXT: ld16.w l3, (sp, 16) # 4-byte Folded Reload3004; CSKY-NEXT: addi16 sp, sp, 203005; CSKY-NEXT: rts163006; CSKY-NEXT: .p2align 13007; CSKY-NEXT: # %bb.3:3008; CSKY-NEXT: .p2align 23009; CSKY-NEXT: .LCPI104_0:3010; CSKY-NEXT: .long __atomic_compare_exchange_23011 %1 = atomicrmw umax ptr %a, i16 %b seq_cst3012 ret i16 %13013}3014 3015define i16 @atomicrmw_umin_i16_monotonic(ptr %a, i16 %b) nounwind {3016; CSKY-LABEL: atomicrmw_umin_i16_monotonic:3017; CSKY: # %bb.0:3018; CSKY-NEXT: subi16 sp, sp, 203019; CSKY-NEXT: st16.w l3, (sp, 16) # 4-byte Folded Spill3020; CSKY-NEXT: st16.w l2, (sp, 12) # 4-byte Folded Spill3021; CSKY-NEXT: st16.w l1, (sp, 8) # 4-byte Folded Spill3022; CSKY-NEXT: st16.w l0, (sp, 4) # 4-byte Folded Spill3023; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill3024; CSKY-NEXT: subi16 sp, sp, 83025; CSKY-NEXT: mov16 l0, a13026; CSKY-NEXT: mov16 l1, a03027; CSKY-NEXT: ld16.h a0, (a0, 0)3028; CSKY-NEXT: zexth16 l2, a13029; CSKY-NEXT: movi16 l3, 03030; CSKY-NEXT: .LBB105_1: # %atomicrmw.start3031; CSKY-NEXT: # =>This Inner Loop Header: Depth=13032; CSKY-NEXT: zexth16 a1, a03033; CSKY-NEXT: cmphs16 l2, a13034; CSKY-NEXT: mov16 a2, l03035; CSKY-NEXT: movt32 a2, a03036; CSKY-NEXT: st32.h a0, (sp, 6)3037; CSKY-NEXT: st16.w l3, (sp, 0)3038; CSKY-NEXT: mov16 a0, l13039; CSKY-NEXT: addi32 a1, sp, 63040; CSKY-NEXT: movi16 a3, 03041; CSKY-NEXT: jsri32 [.LCPI105_0]3042; CSKY-NEXT: mov16 a1, a03043; CSKY-NEXT: ld32.h a0, (sp, 6)3044; CSKY-NEXT: bez32 a1, .LBB105_13045; CSKY-NEXT: # %bb.2: # %atomicrmw.end3046; CSKY-NEXT: addi16 sp, sp, 83047; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload3048; CSKY-NEXT: ld16.w l0, (sp, 4) # 4-byte Folded Reload3049; CSKY-NEXT: ld16.w l1, (sp, 8) # 4-byte Folded Reload3050; CSKY-NEXT: ld16.w l2, (sp, 12) # 4-byte Folded Reload3051; CSKY-NEXT: ld16.w l3, (sp, 16) # 4-byte Folded Reload3052; CSKY-NEXT: addi16 sp, sp, 203053; CSKY-NEXT: rts163054; CSKY-NEXT: .p2align 13055; CSKY-NEXT: # %bb.3:3056; CSKY-NEXT: .p2align 23057; CSKY-NEXT: .LCPI105_0:3058; CSKY-NEXT: .long __atomic_compare_exchange_23059 %1 = atomicrmw umin ptr %a, i16 %b monotonic3060 ret i16 %13061}3062 3063define i16 @atomicrmw_umin_i16_acquire(ptr %a, i16 %b) nounwind {3064; CSKY-LABEL: atomicrmw_umin_i16_acquire:3065; CSKY: # %bb.0:3066; CSKY-NEXT: subi16 sp, sp, 203067; CSKY-NEXT: st16.w l3, (sp, 16) # 4-byte Folded Spill3068; CSKY-NEXT: st16.w l2, (sp, 12) # 4-byte Folded Spill3069; CSKY-NEXT: st16.w l1, (sp, 8) # 4-byte Folded Spill3070; CSKY-NEXT: st16.w l0, (sp, 4) # 4-byte Folded Spill3071; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill3072; CSKY-NEXT: subi16 sp, sp, 83073; CSKY-NEXT: mov16 l0, a13074; CSKY-NEXT: mov16 l1, a03075; CSKY-NEXT: ld16.h a0, (a0, 0)3076; CSKY-NEXT: zexth16 l2, a13077; CSKY-NEXT: movi16 l3, 23078; CSKY-NEXT: .LBB106_1: # %atomicrmw.start3079; CSKY-NEXT: # =>This Inner Loop Header: Depth=13080; CSKY-NEXT: zexth16 a1, a03081; CSKY-NEXT: cmphs16 l2, a13082; CSKY-NEXT: mov16 a2, l03083; CSKY-NEXT: movt32 a2, a03084; CSKY-NEXT: st32.h a0, (sp, 6)3085; CSKY-NEXT: st16.w l3, (sp, 0)3086; CSKY-NEXT: mov16 a0, l13087; CSKY-NEXT: addi32 a1, sp, 63088; CSKY-NEXT: movi16 a3, 23089; CSKY-NEXT: jsri32 [.LCPI106_0]3090; CSKY-NEXT: mov16 a1, a03091; CSKY-NEXT: ld32.h a0, (sp, 6)3092; CSKY-NEXT: bez32 a1, .LBB106_13093; CSKY-NEXT: # %bb.2: # %atomicrmw.end3094; CSKY-NEXT: addi16 sp, sp, 83095; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload3096; CSKY-NEXT: ld16.w l0, (sp, 4) # 4-byte Folded Reload3097; CSKY-NEXT: ld16.w l1, (sp, 8) # 4-byte Folded Reload3098; CSKY-NEXT: ld16.w l2, (sp, 12) # 4-byte Folded Reload3099; CSKY-NEXT: ld16.w l3, (sp, 16) # 4-byte Folded Reload3100; CSKY-NEXT: addi16 sp, sp, 203101; CSKY-NEXT: rts163102; CSKY-NEXT: .p2align 13103; CSKY-NEXT: # %bb.3:3104; CSKY-NEXT: .p2align 23105; CSKY-NEXT: .LCPI106_0:3106; CSKY-NEXT: .long __atomic_compare_exchange_23107 %1 = atomicrmw umin ptr %a, i16 %b acquire3108 ret i16 %13109}3110 3111define i16 @atomicrmw_umin_i16_release(ptr %a, i16 %b) nounwind {3112; CSKY-LABEL: atomicrmw_umin_i16_release:3113; CSKY: # %bb.0:3114; CSKY-NEXT: subi16 sp, sp, 203115; CSKY-NEXT: st16.w l3, (sp, 16) # 4-byte Folded Spill3116; CSKY-NEXT: st16.w l2, (sp, 12) # 4-byte Folded Spill3117; CSKY-NEXT: st16.w l1, (sp, 8) # 4-byte Folded Spill3118; CSKY-NEXT: st16.w l0, (sp, 4) # 4-byte Folded Spill3119; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill3120; CSKY-NEXT: subi16 sp, sp, 83121; CSKY-NEXT: mov16 l0, a13122; CSKY-NEXT: mov16 l1, a03123; CSKY-NEXT: ld16.h a0, (a0, 0)3124; CSKY-NEXT: zexth16 l2, a13125; CSKY-NEXT: movi16 l3, 03126; CSKY-NEXT: .LBB107_1: # %atomicrmw.start3127; CSKY-NEXT: # =>This Inner Loop Header: Depth=13128; CSKY-NEXT: zexth16 a1, a03129; CSKY-NEXT: cmphs16 l2, a13130; CSKY-NEXT: mov16 a2, l03131; CSKY-NEXT: movt32 a2, a03132; CSKY-NEXT: st32.h a0, (sp, 6)3133; CSKY-NEXT: st16.w l3, (sp, 0)3134; CSKY-NEXT: mov16 a0, l13135; CSKY-NEXT: addi32 a1, sp, 63136; CSKY-NEXT: movi16 a3, 33137; CSKY-NEXT: jsri32 [.LCPI107_0]3138; CSKY-NEXT: mov16 a1, a03139; CSKY-NEXT: ld32.h a0, (sp, 6)3140; CSKY-NEXT: bez32 a1, .LBB107_13141; CSKY-NEXT: # %bb.2: # %atomicrmw.end3142; CSKY-NEXT: addi16 sp, sp, 83143; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload3144; CSKY-NEXT: ld16.w l0, (sp, 4) # 4-byte Folded Reload3145; CSKY-NEXT: ld16.w l1, (sp, 8) # 4-byte Folded Reload3146; CSKY-NEXT: ld16.w l2, (sp, 12) # 4-byte Folded Reload3147; CSKY-NEXT: ld16.w l3, (sp, 16) # 4-byte Folded Reload3148; CSKY-NEXT: addi16 sp, sp, 203149; CSKY-NEXT: rts163150; CSKY-NEXT: .p2align 13151; CSKY-NEXT: # %bb.3:3152; CSKY-NEXT: .p2align 23153; CSKY-NEXT: .LCPI107_0:3154; CSKY-NEXT: .long __atomic_compare_exchange_23155 %1 = atomicrmw umin ptr %a, i16 %b release3156 ret i16 %13157}3158 3159define i16 @atomicrmw_umin_i16_acq_rel(ptr %a, i16 %b) nounwind {3160; CSKY-LABEL: atomicrmw_umin_i16_acq_rel:3161; CSKY: # %bb.0:3162; CSKY-NEXT: subi16 sp, sp, 203163; CSKY-NEXT: st16.w l3, (sp, 16) # 4-byte Folded Spill3164; CSKY-NEXT: st16.w l2, (sp, 12) # 4-byte Folded Spill3165; CSKY-NEXT: st16.w l1, (sp, 8) # 4-byte Folded Spill3166; CSKY-NEXT: st16.w l0, (sp, 4) # 4-byte Folded Spill3167; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill3168; CSKY-NEXT: subi16 sp, sp, 83169; CSKY-NEXT: mov16 l0, a13170; CSKY-NEXT: mov16 l1, a03171; CSKY-NEXT: ld16.h a0, (a0, 0)3172; CSKY-NEXT: zexth16 l2, a13173; CSKY-NEXT: movi16 l3, 23174; CSKY-NEXT: .LBB108_1: # %atomicrmw.start3175; CSKY-NEXT: # =>This Inner Loop Header: Depth=13176; CSKY-NEXT: zexth16 a1, a03177; CSKY-NEXT: cmphs16 l2, a13178; CSKY-NEXT: mov16 a2, l03179; CSKY-NEXT: movt32 a2, a03180; CSKY-NEXT: st32.h a0, (sp, 6)3181; CSKY-NEXT: st16.w l3, (sp, 0)3182; CSKY-NEXT: mov16 a0, l13183; CSKY-NEXT: addi32 a1, sp, 63184; CSKY-NEXT: movi16 a3, 43185; CSKY-NEXT: jsri32 [.LCPI108_0]3186; CSKY-NEXT: mov16 a1, a03187; CSKY-NEXT: ld32.h a0, (sp, 6)3188; CSKY-NEXT: bez32 a1, .LBB108_13189; CSKY-NEXT: # %bb.2: # %atomicrmw.end3190; CSKY-NEXT: addi16 sp, sp, 83191; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload3192; CSKY-NEXT: ld16.w l0, (sp, 4) # 4-byte Folded Reload3193; CSKY-NEXT: ld16.w l1, (sp, 8) # 4-byte Folded Reload3194; CSKY-NEXT: ld16.w l2, (sp, 12) # 4-byte Folded Reload3195; CSKY-NEXT: ld16.w l3, (sp, 16) # 4-byte Folded Reload3196; CSKY-NEXT: addi16 sp, sp, 203197; CSKY-NEXT: rts163198; CSKY-NEXT: .p2align 13199; CSKY-NEXT: # %bb.3:3200; CSKY-NEXT: .p2align 23201; CSKY-NEXT: .LCPI108_0:3202; CSKY-NEXT: .long __atomic_compare_exchange_23203 %1 = atomicrmw umin ptr %a, i16 %b acq_rel3204 ret i16 %13205}3206 3207define i16 @atomicrmw_umin_i16_seq_cst(ptr %a, i16 %b) nounwind {3208; CSKY-LABEL: atomicrmw_umin_i16_seq_cst:3209; CSKY: # %bb.0:3210; CSKY-NEXT: subi16 sp, sp, 203211; CSKY-NEXT: st16.w l3, (sp, 16) # 4-byte Folded Spill3212; CSKY-NEXT: st16.w l2, (sp, 12) # 4-byte Folded Spill3213; CSKY-NEXT: st16.w l1, (sp, 8) # 4-byte Folded Spill3214; CSKY-NEXT: st16.w l0, (sp, 4) # 4-byte Folded Spill3215; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill3216; CSKY-NEXT: subi16 sp, sp, 83217; CSKY-NEXT: mov16 l0, a13218; CSKY-NEXT: mov16 l1, a03219; CSKY-NEXT: ld16.h a0, (a0, 0)3220; CSKY-NEXT: zexth16 l2, a13221; CSKY-NEXT: movi16 l3, 53222; CSKY-NEXT: .LBB109_1: # %atomicrmw.start3223; CSKY-NEXT: # =>This Inner Loop Header: Depth=13224; CSKY-NEXT: zexth16 a1, a03225; CSKY-NEXT: cmphs16 l2, a13226; CSKY-NEXT: mov16 a2, l03227; CSKY-NEXT: movt32 a2, a03228; CSKY-NEXT: st32.h a0, (sp, 6)3229; CSKY-NEXT: st16.w l3, (sp, 0)3230; CSKY-NEXT: mov16 a0, l13231; CSKY-NEXT: addi32 a1, sp, 63232; CSKY-NEXT: movi16 a3, 53233; CSKY-NEXT: jsri32 [.LCPI109_0]3234; CSKY-NEXT: mov16 a1, a03235; CSKY-NEXT: ld32.h a0, (sp, 6)3236; CSKY-NEXT: bez32 a1, .LBB109_13237; CSKY-NEXT: # %bb.2: # %atomicrmw.end3238; CSKY-NEXT: addi16 sp, sp, 83239; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload3240; CSKY-NEXT: ld16.w l0, (sp, 4) # 4-byte Folded Reload3241; CSKY-NEXT: ld16.w l1, (sp, 8) # 4-byte Folded Reload3242; CSKY-NEXT: ld16.w l2, (sp, 12) # 4-byte Folded Reload3243; CSKY-NEXT: ld16.w l3, (sp, 16) # 4-byte Folded Reload3244; CSKY-NEXT: addi16 sp, sp, 203245; CSKY-NEXT: rts163246; CSKY-NEXT: .p2align 13247; CSKY-NEXT: # %bb.3:3248; CSKY-NEXT: .p2align 23249; CSKY-NEXT: .LCPI109_0:3250; CSKY-NEXT: .long __atomic_compare_exchange_23251 %1 = atomicrmw umin ptr %a, i16 %b seq_cst3252 ret i16 %13253}3254 3255define i32 @atomicrmw_xchg_i32_monotonic(ptr %a, i32 %b) nounwind {3256; CSKY-LABEL: atomicrmw_xchg_i32_monotonic:3257; CSKY: # %bb.0:3258; CSKY-NEXT: subi16 sp, sp, 43259; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill3260; CSKY-NEXT: movi16 a2, 03261; CSKY-NEXT: jsri32 [.LCPI110_0]3262; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload3263; CSKY-NEXT: addi16 sp, sp, 43264; CSKY-NEXT: rts163265; CSKY-NEXT: .p2align 13266; CSKY-NEXT: # %bb.1:3267; CSKY-NEXT: .p2align 23268; CSKY-NEXT: .LCPI110_0:3269; CSKY-NEXT: .long __atomic_exchange_43270 %1 = atomicrmw xchg ptr %a, i32 %b monotonic3271 ret i32 %13272}3273 3274define i32 @atomicrmw_xchg_i32_acquire(ptr %a, i32 %b) nounwind {3275; CSKY-LABEL: atomicrmw_xchg_i32_acquire:3276; CSKY: # %bb.0:3277; CSKY-NEXT: subi16 sp, sp, 43278; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill3279; CSKY-NEXT: movi16 a2, 23280; CSKY-NEXT: jsri32 [.LCPI111_0]3281; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload3282; CSKY-NEXT: addi16 sp, sp, 43283; CSKY-NEXT: rts163284; CSKY-NEXT: .p2align 13285; CSKY-NEXT: # %bb.1:3286; CSKY-NEXT: .p2align 23287; CSKY-NEXT: .LCPI111_0:3288; CSKY-NEXT: .long __atomic_exchange_43289 %1 = atomicrmw xchg ptr %a, i32 %b acquire3290 ret i32 %13291}3292 3293define i32 @atomicrmw_xchg_i32_release(ptr %a, i32 %b) nounwind {3294; CSKY-LABEL: atomicrmw_xchg_i32_release:3295; CSKY: # %bb.0:3296; CSKY-NEXT: subi16 sp, sp, 43297; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill3298; CSKY-NEXT: movi16 a2, 33299; CSKY-NEXT: jsri32 [.LCPI112_0]3300; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload3301; CSKY-NEXT: addi16 sp, sp, 43302; CSKY-NEXT: rts163303; CSKY-NEXT: .p2align 13304; CSKY-NEXT: # %bb.1:3305; CSKY-NEXT: .p2align 23306; CSKY-NEXT: .LCPI112_0:3307; CSKY-NEXT: .long __atomic_exchange_43308 %1 = atomicrmw xchg ptr %a, i32 %b release3309 ret i32 %13310}3311 3312define i32 @atomicrmw_xchg_i32_acq_rel(ptr %a, i32 %b) nounwind {3313; CSKY-LABEL: atomicrmw_xchg_i32_acq_rel:3314; CSKY: # %bb.0:3315; CSKY-NEXT: subi16 sp, sp, 43316; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill3317; CSKY-NEXT: movi16 a2, 43318; CSKY-NEXT: jsri32 [.LCPI113_0]3319; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload3320; CSKY-NEXT: addi16 sp, sp, 43321; CSKY-NEXT: rts163322; CSKY-NEXT: .p2align 13323; CSKY-NEXT: # %bb.1:3324; CSKY-NEXT: .p2align 23325; CSKY-NEXT: .LCPI113_0:3326; CSKY-NEXT: .long __atomic_exchange_43327 %1 = atomicrmw xchg ptr %a, i32 %b acq_rel3328 ret i32 %13329}3330 3331define i32 @atomicrmw_xchg_i32_seq_cst(ptr %a, i32 %b) nounwind {3332; CSKY-LABEL: atomicrmw_xchg_i32_seq_cst:3333; CSKY: # %bb.0:3334; CSKY-NEXT: subi16 sp, sp, 43335; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill3336; CSKY-NEXT: movi16 a2, 53337; CSKY-NEXT: jsri32 [.LCPI114_0]3338; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload3339; CSKY-NEXT: addi16 sp, sp, 43340; CSKY-NEXT: rts163341; CSKY-NEXT: .p2align 13342; CSKY-NEXT: # %bb.1:3343; CSKY-NEXT: .p2align 23344; CSKY-NEXT: .LCPI114_0:3345; CSKY-NEXT: .long __atomic_exchange_43346 %1 = atomicrmw xchg ptr %a, i32 %b seq_cst3347 ret i32 %13348}3349 3350define i32 @atomicrmw_add_i32_monotonic(ptr %a, i32 %b) nounwind {3351; CSKY-LABEL: atomicrmw_add_i32_monotonic:3352; CSKY: # %bb.0:3353; CSKY-NEXT: subi16 sp, sp, 43354; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill3355; CSKY-NEXT: movi16 a2, 03356; CSKY-NEXT: jsri32 [.LCPI115_0]3357; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload3358; CSKY-NEXT: addi16 sp, sp, 43359; CSKY-NEXT: rts163360; CSKY-NEXT: .p2align 13361; CSKY-NEXT: # %bb.1:3362; CSKY-NEXT: .p2align 23363; CSKY-NEXT: .LCPI115_0:3364; CSKY-NEXT: .long __atomic_fetch_add_43365 %1 = atomicrmw add ptr %a, i32 %b monotonic3366 ret i32 %13367}3368 3369define i32 @atomicrmw_add_i32_acquire(ptr %a, i32 %b) nounwind {3370; CSKY-LABEL: atomicrmw_add_i32_acquire:3371; CSKY: # %bb.0:3372; CSKY-NEXT: subi16 sp, sp, 43373; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill3374; CSKY-NEXT: movi16 a2, 23375; CSKY-NEXT: jsri32 [.LCPI116_0]3376; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload3377; CSKY-NEXT: addi16 sp, sp, 43378; CSKY-NEXT: rts163379; CSKY-NEXT: .p2align 13380; CSKY-NEXT: # %bb.1:3381; CSKY-NEXT: .p2align 23382; CSKY-NEXT: .LCPI116_0:3383; CSKY-NEXT: .long __atomic_fetch_add_43384 %1 = atomicrmw add ptr %a, i32 %b acquire3385 ret i32 %13386}3387 3388define i32 @atomicrmw_add_i32_release(ptr %a, i32 %b) nounwind {3389; CSKY-LABEL: atomicrmw_add_i32_release:3390; CSKY: # %bb.0:3391; CSKY-NEXT: subi16 sp, sp, 43392; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill3393; CSKY-NEXT: movi16 a2, 33394; CSKY-NEXT: jsri32 [.LCPI117_0]3395; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload3396; CSKY-NEXT: addi16 sp, sp, 43397; CSKY-NEXT: rts163398; CSKY-NEXT: .p2align 13399; CSKY-NEXT: # %bb.1:3400; CSKY-NEXT: .p2align 23401; CSKY-NEXT: .LCPI117_0:3402; CSKY-NEXT: .long __atomic_fetch_add_43403 %1 = atomicrmw add ptr %a, i32 %b release3404 ret i32 %13405}3406 3407define i32 @atomicrmw_add_i32_acq_rel(ptr %a, i32 %b) nounwind {3408; CSKY-LABEL: atomicrmw_add_i32_acq_rel:3409; CSKY: # %bb.0:3410; CSKY-NEXT: subi16 sp, sp, 43411; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill3412; CSKY-NEXT: movi16 a2, 43413; CSKY-NEXT: jsri32 [.LCPI118_0]3414; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload3415; CSKY-NEXT: addi16 sp, sp, 43416; CSKY-NEXT: rts163417; CSKY-NEXT: .p2align 13418; CSKY-NEXT: # %bb.1:3419; CSKY-NEXT: .p2align 23420; CSKY-NEXT: .LCPI118_0:3421; CSKY-NEXT: .long __atomic_fetch_add_43422 %1 = atomicrmw add ptr %a, i32 %b acq_rel3423 ret i32 %13424}3425 3426define i32 @atomicrmw_add_i32_seq_cst(ptr %a, i32 %b) nounwind {3427; CSKY-LABEL: atomicrmw_add_i32_seq_cst:3428; CSKY: # %bb.0:3429; CSKY-NEXT: subi16 sp, sp, 43430; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill3431; CSKY-NEXT: movi16 a2, 53432; CSKY-NEXT: jsri32 [.LCPI119_0]3433; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload3434; CSKY-NEXT: addi16 sp, sp, 43435; CSKY-NEXT: rts163436; CSKY-NEXT: .p2align 13437; CSKY-NEXT: # %bb.1:3438; CSKY-NEXT: .p2align 23439; CSKY-NEXT: .LCPI119_0:3440; CSKY-NEXT: .long __atomic_fetch_add_43441 %1 = atomicrmw add ptr %a, i32 %b seq_cst3442 ret i32 %13443}3444 3445define i32 @atomicrmw_sub_i32_monotonic(ptr %a, i32 %b) nounwind {3446; CSKY-LABEL: atomicrmw_sub_i32_monotonic:3447; CSKY: # %bb.0:3448; CSKY-NEXT: subi16 sp, sp, 43449; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill3450; CSKY-NEXT: movi16 a2, 03451; CSKY-NEXT: jsri32 [.LCPI120_0]3452; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload3453; CSKY-NEXT: addi16 sp, sp, 43454; CSKY-NEXT: rts163455; CSKY-NEXT: .p2align 13456; CSKY-NEXT: # %bb.1:3457; CSKY-NEXT: .p2align 23458; CSKY-NEXT: .LCPI120_0:3459; CSKY-NEXT: .long __atomic_fetch_sub_43460 %1 = atomicrmw sub ptr %a, i32 %b monotonic3461 ret i32 %13462}3463 3464define i32 @atomicrmw_sub_i32_acquire(ptr %a, i32 %b) nounwind {3465; CSKY-LABEL: atomicrmw_sub_i32_acquire:3466; CSKY: # %bb.0:3467; CSKY-NEXT: subi16 sp, sp, 43468; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill3469; CSKY-NEXT: movi16 a2, 23470; CSKY-NEXT: jsri32 [.LCPI121_0]3471; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload3472; CSKY-NEXT: addi16 sp, sp, 43473; CSKY-NEXT: rts163474; CSKY-NEXT: .p2align 13475; CSKY-NEXT: # %bb.1:3476; CSKY-NEXT: .p2align 23477; CSKY-NEXT: .LCPI121_0:3478; CSKY-NEXT: .long __atomic_fetch_sub_43479 %1 = atomicrmw sub ptr %a, i32 %b acquire3480 ret i32 %13481}3482 3483define i32 @atomicrmw_sub_i32_release(ptr %a, i32 %b) nounwind {3484; CSKY-LABEL: atomicrmw_sub_i32_release:3485; CSKY: # %bb.0:3486; CSKY-NEXT: subi16 sp, sp, 43487; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill3488; CSKY-NEXT: movi16 a2, 33489; CSKY-NEXT: jsri32 [.LCPI122_0]3490; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload3491; CSKY-NEXT: addi16 sp, sp, 43492; CSKY-NEXT: rts163493; CSKY-NEXT: .p2align 13494; CSKY-NEXT: # %bb.1:3495; CSKY-NEXT: .p2align 23496; CSKY-NEXT: .LCPI122_0:3497; CSKY-NEXT: .long __atomic_fetch_sub_43498 %1 = atomicrmw sub ptr %a, i32 %b release3499 ret i32 %13500}3501 3502define i32 @atomicrmw_sub_i32_acq_rel(ptr %a, i32 %b) nounwind {3503; CSKY-LABEL: atomicrmw_sub_i32_acq_rel:3504; CSKY: # %bb.0:3505; CSKY-NEXT: subi16 sp, sp, 43506; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill3507; CSKY-NEXT: movi16 a2, 43508; CSKY-NEXT: jsri32 [.LCPI123_0]3509; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload3510; CSKY-NEXT: addi16 sp, sp, 43511; CSKY-NEXT: rts163512; CSKY-NEXT: .p2align 13513; CSKY-NEXT: # %bb.1:3514; CSKY-NEXT: .p2align 23515; CSKY-NEXT: .LCPI123_0:3516; CSKY-NEXT: .long __atomic_fetch_sub_43517 %1 = atomicrmw sub ptr %a, i32 %b acq_rel3518 ret i32 %13519}3520 3521define i32 @atomicrmw_sub_i32_seq_cst(ptr %a, i32 %b) nounwind {3522; CSKY-LABEL: atomicrmw_sub_i32_seq_cst:3523; CSKY: # %bb.0:3524; CSKY-NEXT: subi16 sp, sp, 43525; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill3526; CSKY-NEXT: movi16 a2, 53527; CSKY-NEXT: jsri32 [.LCPI124_0]3528; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload3529; CSKY-NEXT: addi16 sp, sp, 43530; CSKY-NEXT: rts163531; CSKY-NEXT: .p2align 13532; CSKY-NEXT: # %bb.1:3533; CSKY-NEXT: .p2align 23534; CSKY-NEXT: .LCPI124_0:3535; CSKY-NEXT: .long __atomic_fetch_sub_43536 %1 = atomicrmw sub ptr %a, i32 %b seq_cst3537 ret i32 %13538}3539 3540define i32 @atomicrmw_and_i32_monotonic(ptr %a, i32 %b) nounwind {3541; CSKY-LABEL: atomicrmw_and_i32_monotonic:3542; CSKY: # %bb.0:3543; CSKY-NEXT: subi16 sp, sp, 43544; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill3545; CSKY-NEXT: movi16 a2, 03546; CSKY-NEXT: jsri32 [.LCPI125_0]3547; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload3548; CSKY-NEXT: addi16 sp, sp, 43549; CSKY-NEXT: rts163550; CSKY-NEXT: .p2align 13551; CSKY-NEXT: # %bb.1:3552; CSKY-NEXT: .p2align 23553; CSKY-NEXT: .LCPI125_0:3554; CSKY-NEXT: .long __atomic_fetch_and_43555 %1 = atomicrmw and ptr %a, i32 %b monotonic3556 ret i32 %13557}3558 3559define i32 @atomicrmw_and_i32_acquire(ptr %a, i32 %b) nounwind {3560; CSKY-LABEL: atomicrmw_and_i32_acquire:3561; CSKY: # %bb.0:3562; CSKY-NEXT: subi16 sp, sp, 43563; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill3564; CSKY-NEXT: movi16 a2, 23565; CSKY-NEXT: jsri32 [.LCPI126_0]3566; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload3567; CSKY-NEXT: addi16 sp, sp, 43568; CSKY-NEXT: rts163569; CSKY-NEXT: .p2align 13570; CSKY-NEXT: # %bb.1:3571; CSKY-NEXT: .p2align 23572; CSKY-NEXT: .LCPI126_0:3573; CSKY-NEXT: .long __atomic_fetch_and_43574 %1 = atomicrmw and ptr %a, i32 %b acquire3575 ret i32 %13576}3577 3578define i32 @atomicrmw_and_i32_release(ptr %a, i32 %b) nounwind {3579; CSKY-LABEL: atomicrmw_and_i32_release:3580; CSKY: # %bb.0:3581; CSKY-NEXT: subi16 sp, sp, 43582; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill3583; CSKY-NEXT: movi16 a2, 33584; CSKY-NEXT: jsri32 [.LCPI127_0]3585; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload3586; CSKY-NEXT: addi16 sp, sp, 43587; CSKY-NEXT: rts163588; CSKY-NEXT: .p2align 13589; CSKY-NEXT: # %bb.1:3590; CSKY-NEXT: .p2align 23591; CSKY-NEXT: .LCPI127_0:3592; CSKY-NEXT: .long __atomic_fetch_and_43593 %1 = atomicrmw and ptr %a, i32 %b release3594 ret i32 %13595}3596 3597define i32 @atomicrmw_and_i32_acq_rel(ptr %a, i32 %b) nounwind {3598; CSKY-LABEL: atomicrmw_and_i32_acq_rel:3599; CSKY: # %bb.0:3600; CSKY-NEXT: subi16 sp, sp, 43601; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill3602; CSKY-NEXT: movi16 a2, 43603; CSKY-NEXT: jsri32 [.LCPI128_0]3604; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload3605; CSKY-NEXT: addi16 sp, sp, 43606; CSKY-NEXT: rts163607; CSKY-NEXT: .p2align 13608; CSKY-NEXT: # %bb.1:3609; CSKY-NEXT: .p2align 23610; CSKY-NEXT: .LCPI128_0:3611; CSKY-NEXT: .long __atomic_fetch_and_43612 %1 = atomicrmw and ptr %a, i32 %b acq_rel3613 ret i32 %13614}3615 3616define i32 @atomicrmw_and_i32_seq_cst(ptr %a, i32 %b) nounwind {3617; CSKY-LABEL: atomicrmw_and_i32_seq_cst:3618; CSKY: # %bb.0:3619; CSKY-NEXT: subi16 sp, sp, 43620; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill3621; CSKY-NEXT: movi16 a2, 53622; CSKY-NEXT: jsri32 [.LCPI129_0]3623; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload3624; CSKY-NEXT: addi16 sp, sp, 43625; CSKY-NEXT: rts163626; CSKY-NEXT: .p2align 13627; CSKY-NEXT: # %bb.1:3628; CSKY-NEXT: .p2align 23629; CSKY-NEXT: .LCPI129_0:3630; CSKY-NEXT: .long __atomic_fetch_and_43631 %1 = atomicrmw and ptr %a, i32 %b seq_cst3632 ret i32 %13633}3634 3635define i32 @atomicrmw_nand_i32_monotonic(ptr %a, i32 %b) nounwind {3636; CSKY-LABEL: atomicrmw_nand_i32_monotonic:3637; CSKY: # %bb.0:3638; CSKY-NEXT: subi16 sp, sp, 43639; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill3640; CSKY-NEXT: movi16 a2, 03641; CSKY-NEXT: jsri32 [.LCPI130_0]3642; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload3643; CSKY-NEXT: addi16 sp, sp, 43644; CSKY-NEXT: rts163645; CSKY-NEXT: .p2align 13646; CSKY-NEXT: # %bb.1:3647; CSKY-NEXT: .p2align 23648; CSKY-NEXT: .LCPI130_0:3649; CSKY-NEXT: .long __atomic_fetch_nand_43650 %1 = atomicrmw nand ptr %a, i32 %b monotonic3651 ret i32 %13652}3653 3654define i32 @atomicrmw_nand_i32_acquire(ptr %a, i32 %b) nounwind {3655; CSKY-LABEL: atomicrmw_nand_i32_acquire:3656; CSKY: # %bb.0:3657; CSKY-NEXT: subi16 sp, sp, 43658; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill3659; CSKY-NEXT: movi16 a2, 23660; CSKY-NEXT: jsri32 [.LCPI131_0]3661; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload3662; CSKY-NEXT: addi16 sp, sp, 43663; CSKY-NEXT: rts163664; CSKY-NEXT: .p2align 13665; CSKY-NEXT: # %bb.1:3666; CSKY-NEXT: .p2align 23667; CSKY-NEXT: .LCPI131_0:3668; CSKY-NEXT: .long __atomic_fetch_nand_43669 %1 = atomicrmw nand ptr %a, i32 %b acquire3670 ret i32 %13671}3672 3673define i32 @atomicrmw_nand_i32_release(ptr %a, i32 %b) nounwind {3674; CSKY-LABEL: atomicrmw_nand_i32_release:3675; CSKY: # %bb.0:3676; CSKY-NEXT: subi16 sp, sp, 43677; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill3678; CSKY-NEXT: movi16 a2, 33679; CSKY-NEXT: jsri32 [.LCPI132_0]3680; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload3681; CSKY-NEXT: addi16 sp, sp, 43682; CSKY-NEXT: rts163683; CSKY-NEXT: .p2align 13684; CSKY-NEXT: # %bb.1:3685; CSKY-NEXT: .p2align 23686; CSKY-NEXT: .LCPI132_0:3687; CSKY-NEXT: .long __atomic_fetch_nand_43688 %1 = atomicrmw nand ptr %a, i32 %b release3689 ret i32 %13690}3691 3692define i32 @atomicrmw_nand_i32_acq_rel(ptr %a, i32 %b) nounwind {3693; CSKY-LABEL: atomicrmw_nand_i32_acq_rel:3694; CSKY: # %bb.0:3695; CSKY-NEXT: subi16 sp, sp, 43696; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill3697; CSKY-NEXT: movi16 a2, 43698; CSKY-NEXT: jsri32 [.LCPI133_0]3699; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload3700; CSKY-NEXT: addi16 sp, sp, 43701; CSKY-NEXT: rts163702; CSKY-NEXT: .p2align 13703; CSKY-NEXT: # %bb.1:3704; CSKY-NEXT: .p2align 23705; CSKY-NEXT: .LCPI133_0:3706; CSKY-NEXT: .long __atomic_fetch_nand_43707 %1 = atomicrmw nand ptr %a, i32 %b acq_rel3708 ret i32 %13709}3710 3711define i32 @atomicrmw_nand_i32_seq_cst(ptr %a, i32 %b) nounwind {3712; CSKY-LABEL: atomicrmw_nand_i32_seq_cst:3713; CSKY: # %bb.0:3714; CSKY-NEXT: subi16 sp, sp, 43715; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill3716; CSKY-NEXT: movi16 a2, 53717; CSKY-NEXT: jsri32 [.LCPI134_0]3718; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload3719; CSKY-NEXT: addi16 sp, sp, 43720; CSKY-NEXT: rts163721; CSKY-NEXT: .p2align 13722; CSKY-NEXT: # %bb.1:3723; CSKY-NEXT: .p2align 23724; CSKY-NEXT: .LCPI134_0:3725; CSKY-NEXT: .long __atomic_fetch_nand_43726 %1 = atomicrmw nand ptr %a, i32 %b seq_cst3727 ret i32 %13728}3729 3730define i32 @atomicrmw_or_i32_monotonic(ptr %a, i32 %b) nounwind {3731; CSKY-LABEL: atomicrmw_or_i32_monotonic:3732; CSKY: # %bb.0:3733; CSKY-NEXT: subi16 sp, sp, 43734; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill3735; CSKY-NEXT: movi16 a2, 03736; CSKY-NEXT: jsri32 [.LCPI135_0]3737; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload3738; CSKY-NEXT: addi16 sp, sp, 43739; CSKY-NEXT: rts163740; CSKY-NEXT: .p2align 13741; CSKY-NEXT: # %bb.1:3742; CSKY-NEXT: .p2align 23743; CSKY-NEXT: .LCPI135_0:3744; CSKY-NEXT: .long __atomic_fetch_or_43745 %1 = atomicrmw or ptr %a, i32 %b monotonic3746 ret i32 %13747}3748 3749define i32 @atomicrmw_or_i32_acquire(ptr %a, i32 %b) nounwind {3750; CSKY-LABEL: atomicrmw_or_i32_acquire:3751; CSKY: # %bb.0:3752; CSKY-NEXT: subi16 sp, sp, 43753; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill3754; CSKY-NEXT: movi16 a2, 23755; CSKY-NEXT: jsri32 [.LCPI136_0]3756; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload3757; CSKY-NEXT: addi16 sp, sp, 43758; CSKY-NEXT: rts163759; CSKY-NEXT: .p2align 13760; CSKY-NEXT: # %bb.1:3761; CSKY-NEXT: .p2align 23762; CSKY-NEXT: .LCPI136_0:3763; CSKY-NEXT: .long __atomic_fetch_or_43764 %1 = atomicrmw or ptr %a, i32 %b acquire3765 ret i32 %13766}3767 3768define i32 @atomicrmw_or_i32_release(ptr %a, i32 %b) nounwind {3769; CSKY-LABEL: atomicrmw_or_i32_release:3770; CSKY: # %bb.0:3771; CSKY-NEXT: subi16 sp, sp, 43772; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill3773; CSKY-NEXT: movi16 a2, 33774; CSKY-NEXT: jsri32 [.LCPI137_0]3775; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload3776; CSKY-NEXT: addi16 sp, sp, 43777; CSKY-NEXT: rts163778; CSKY-NEXT: .p2align 13779; CSKY-NEXT: # %bb.1:3780; CSKY-NEXT: .p2align 23781; CSKY-NEXT: .LCPI137_0:3782; CSKY-NEXT: .long __atomic_fetch_or_43783 %1 = atomicrmw or ptr %a, i32 %b release3784 ret i32 %13785}3786 3787define i32 @atomicrmw_or_i32_acq_rel(ptr %a, i32 %b) nounwind {3788; CSKY-LABEL: atomicrmw_or_i32_acq_rel:3789; CSKY: # %bb.0:3790; CSKY-NEXT: subi16 sp, sp, 43791; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill3792; CSKY-NEXT: movi16 a2, 43793; CSKY-NEXT: jsri32 [.LCPI138_0]3794; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload3795; CSKY-NEXT: addi16 sp, sp, 43796; CSKY-NEXT: rts163797; CSKY-NEXT: .p2align 13798; CSKY-NEXT: # %bb.1:3799; CSKY-NEXT: .p2align 23800; CSKY-NEXT: .LCPI138_0:3801; CSKY-NEXT: .long __atomic_fetch_or_43802 %1 = atomicrmw or ptr %a, i32 %b acq_rel3803 ret i32 %13804}3805 3806define i32 @atomicrmw_or_i32_seq_cst(ptr %a, i32 %b) nounwind {3807; CSKY-LABEL: atomicrmw_or_i32_seq_cst:3808; CSKY: # %bb.0:3809; CSKY-NEXT: subi16 sp, sp, 43810; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill3811; CSKY-NEXT: movi16 a2, 53812; CSKY-NEXT: jsri32 [.LCPI139_0]3813; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload3814; CSKY-NEXT: addi16 sp, sp, 43815; CSKY-NEXT: rts163816; CSKY-NEXT: .p2align 13817; CSKY-NEXT: # %bb.1:3818; CSKY-NEXT: .p2align 23819; CSKY-NEXT: .LCPI139_0:3820; CSKY-NEXT: .long __atomic_fetch_or_43821 %1 = atomicrmw or ptr %a, i32 %b seq_cst3822 ret i32 %13823}3824 3825define i32 @atomicrmw_xor_i32_monotonic(ptr %a, i32 %b) nounwind {3826; CSKY-LABEL: atomicrmw_xor_i32_monotonic:3827; CSKY: # %bb.0:3828; CSKY-NEXT: subi16 sp, sp, 43829; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill3830; CSKY-NEXT: movi16 a2, 03831; CSKY-NEXT: jsri32 [.LCPI140_0]3832; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload3833; CSKY-NEXT: addi16 sp, sp, 43834; CSKY-NEXT: rts163835; CSKY-NEXT: .p2align 13836; CSKY-NEXT: # %bb.1:3837; CSKY-NEXT: .p2align 23838; CSKY-NEXT: .LCPI140_0:3839; CSKY-NEXT: .long __atomic_fetch_xor_43840 %1 = atomicrmw xor ptr %a, i32 %b monotonic3841 ret i32 %13842}3843 3844define i32 @atomicrmw_xor_i32_acquire(ptr %a, i32 %b) nounwind {3845; CSKY-LABEL: atomicrmw_xor_i32_acquire:3846; CSKY: # %bb.0:3847; CSKY-NEXT: subi16 sp, sp, 43848; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill3849; CSKY-NEXT: movi16 a2, 23850; CSKY-NEXT: jsri32 [.LCPI141_0]3851; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload3852; CSKY-NEXT: addi16 sp, sp, 43853; CSKY-NEXT: rts163854; CSKY-NEXT: .p2align 13855; CSKY-NEXT: # %bb.1:3856; CSKY-NEXT: .p2align 23857; CSKY-NEXT: .LCPI141_0:3858; CSKY-NEXT: .long __atomic_fetch_xor_43859 %1 = atomicrmw xor ptr %a, i32 %b acquire3860 ret i32 %13861}3862 3863define i32 @atomicrmw_xor_i32_release(ptr %a, i32 %b) nounwind {3864; CSKY-LABEL: atomicrmw_xor_i32_release:3865; CSKY: # %bb.0:3866; CSKY-NEXT: subi16 sp, sp, 43867; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill3868; CSKY-NEXT: movi16 a2, 33869; CSKY-NEXT: jsri32 [.LCPI142_0]3870; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload3871; CSKY-NEXT: addi16 sp, sp, 43872; CSKY-NEXT: rts163873; CSKY-NEXT: .p2align 13874; CSKY-NEXT: # %bb.1:3875; CSKY-NEXT: .p2align 23876; CSKY-NEXT: .LCPI142_0:3877; CSKY-NEXT: .long __atomic_fetch_xor_43878 %1 = atomicrmw xor ptr %a, i32 %b release3879 ret i32 %13880}3881 3882define i32 @atomicrmw_xor_i32_acq_rel(ptr %a, i32 %b) nounwind {3883; CSKY-LABEL: atomicrmw_xor_i32_acq_rel:3884; CSKY: # %bb.0:3885; CSKY-NEXT: subi16 sp, sp, 43886; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill3887; CSKY-NEXT: movi16 a2, 43888; CSKY-NEXT: jsri32 [.LCPI143_0]3889; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload3890; CSKY-NEXT: addi16 sp, sp, 43891; CSKY-NEXT: rts163892; CSKY-NEXT: .p2align 13893; CSKY-NEXT: # %bb.1:3894; CSKY-NEXT: .p2align 23895; CSKY-NEXT: .LCPI143_0:3896; CSKY-NEXT: .long __atomic_fetch_xor_43897 %1 = atomicrmw xor ptr %a, i32 %b acq_rel3898 ret i32 %13899}3900 3901define i32 @atomicrmw_xor_i32_seq_cst(ptr %a, i32 %b) nounwind {3902; CSKY-LABEL: atomicrmw_xor_i32_seq_cst:3903; CSKY: # %bb.0:3904; CSKY-NEXT: subi16 sp, sp, 43905; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill3906; CSKY-NEXT: movi16 a2, 53907; CSKY-NEXT: jsri32 [.LCPI144_0]3908; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload3909; CSKY-NEXT: addi16 sp, sp, 43910; CSKY-NEXT: rts163911; CSKY-NEXT: .p2align 13912; CSKY-NEXT: # %bb.1:3913; CSKY-NEXT: .p2align 23914; CSKY-NEXT: .LCPI144_0:3915; CSKY-NEXT: .long __atomic_fetch_xor_43916 %1 = atomicrmw xor ptr %a, i32 %b seq_cst3917 ret i32 %13918}3919 3920define i32 @atomicrmw_max_i32_monotonic(ptr %a, i32 %b) nounwind {3921; CSKY-LABEL: atomicrmw_max_i32_monotonic:3922; CSKY: # %bb.0:3923; CSKY-NEXT: subi16 sp, sp, 163924; CSKY-NEXT: st16.w l2, (sp, 12) # 4-byte Folded Spill3925; CSKY-NEXT: st16.w l1, (sp, 8) # 4-byte Folded Spill3926; CSKY-NEXT: st16.w l0, (sp, 4) # 4-byte Folded Spill3927; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill3928; CSKY-NEXT: subi16 sp, sp, 83929; CSKY-NEXT: mov16 l0, a13930; CSKY-NEXT: mov16 l1, a03931; CSKY-NEXT: ld16.w a0, (a0, 0)3932; CSKY-NEXT: movi16 l2, 03933; CSKY-NEXT: .LBB145_1: # %atomicrmw.start3934; CSKY-NEXT: # =>This Inner Loop Header: Depth=13935; CSKY-NEXT: cmplt16 l0, a03936; CSKY-NEXT: mov16 a2, l03937; CSKY-NEXT: movt32 a2, a03938; CSKY-NEXT: st16.w a0, (sp, 4)3939; CSKY-NEXT: st16.w l2, (sp, 0)3940; CSKY-NEXT: mov16 a0, l13941; CSKY-NEXT: addi16 a1, sp, 43942; CSKY-NEXT: movi16 a3, 03943; CSKY-NEXT: jsri32 [.LCPI145_0]3944; CSKY-NEXT: mov16 a1, a03945; CSKY-NEXT: ld16.w a0, (sp, 4)3946; CSKY-NEXT: bez32 a1, .LBB145_13947; CSKY-NEXT: # %bb.2: # %atomicrmw.end3948; CSKY-NEXT: addi16 sp, sp, 83949; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload3950; CSKY-NEXT: ld16.w l0, (sp, 4) # 4-byte Folded Reload3951; CSKY-NEXT: ld16.w l1, (sp, 8) # 4-byte Folded Reload3952; CSKY-NEXT: ld16.w l2, (sp, 12) # 4-byte Folded Reload3953; CSKY-NEXT: addi16 sp, sp, 163954; CSKY-NEXT: rts163955; CSKY-NEXT: .p2align 13956; CSKY-NEXT: # %bb.3:3957; CSKY-NEXT: .p2align 23958; CSKY-NEXT: .LCPI145_0:3959; CSKY-NEXT: .long __atomic_compare_exchange_43960 %1 = atomicrmw max ptr %a, i32 %b monotonic3961 ret i32 %13962}3963 3964define i32 @atomicrmw_max_i32_acquire(ptr %a, i32 %b) nounwind {3965; CSKY-LABEL: atomicrmw_max_i32_acquire:3966; CSKY: # %bb.0:3967; CSKY-NEXT: subi16 sp, sp, 163968; CSKY-NEXT: st16.w l2, (sp, 12) # 4-byte Folded Spill3969; CSKY-NEXT: st16.w l1, (sp, 8) # 4-byte Folded Spill3970; CSKY-NEXT: st16.w l0, (sp, 4) # 4-byte Folded Spill3971; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill3972; CSKY-NEXT: subi16 sp, sp, 83973; CSKY-NEXT: mov16 l0, a13974; CSKY-NEXT: mov16 l1, a03975; CSKY-NEXT: ld16.w a0, (a0, 0)3976; CSKY-NEXT: movi16 l2, 23977; CSKY-NEXT: .LBB146_1: # %atomicrmw.start3978; CSKY-NEXT: # =>This Inner Loop Header: Depth=13979; CSKY-NEXT: cmplt16 l0, a03980; CSKY-NEXT: mov16 a2, l03981; CSKY-NEXT: movt32 a2, a03982; CSKY-NEXT: st16.w a0, (sp, 4)3983; CSKY-NEXT: st16.w l2, (sp, 0)3984; CSKY-NEXT: mov16 a0, l13985; CSKY-NEXT: addi16 a1, sp, 43986; CSKY-NEXT: movi16 a3, 23987; CSKY-NEXT: jsri32 [.LCPI146_0]3988; CSKY-NEXT: mov16 a1, a03989; CSKY-NEXT: ld16.w a0, (sp, 4)3990; CSKY-NEXT: bez32 a1, .LBB146_13991; CSKY-NEXT: # %bb.2: # %atomicrmw.end3992; CSKY-NEXT: addi16 sp, sp, 83993; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload3994; CSKY-NEXT: ld16.w l0, (sp, 4) # 4-byte Folded Reload3995; CSKY-NEXT: ld16.w l1, (sp, 8) # 4-byte Folded Reload3996; CSKY-NEXT: ld16.w l2, (sp, 12) # 4-byte Folded Reload3997; CSKY-NEXT: addi16 sp, sp, 163998; CSKY-NEXT: rts163999; CSKY-NEXT: .p2align 14000; CSKY-NEXT: # %bb.3:4001; CSKY-NEXT: .p2align 24002; CSKY-NEXT: .LCPI146_0:4003; CSKY-NEXT: .long __atomic_compare_exchange_44004 %1 = atomicrmw max ptr %a, i32 %b acquire4005 ret i32 %14006}4007 4008define i32 @atomicrmw_max_i32_release(ptr %a, i32 %b) nounwind {4009; CSKY-LABEL: atomicrmw_max_i32_release:4010; CSKY: # %bb.0:4011; CSKY-NEXT: subi16 sp, sp, 164012; CSKY-NEXT: st16.w l2, (sp, 12) # 4-byte Folded Spill4013; CSKY-NEXT: st16.w l1, (sp, 8) # 4-byte Folded Spill4014; CSKY-NEXT: st16.w l0, (sp, 4) # 4-byte Folded Spill4015; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill4016; CSKY-NEXT: subi16 sp, sp, 84017; CSKY-NEXT: mov16 l0, a14018; CSKY-NEXT: mov16 l1, a04019; CSKY-NEXT: ld16.w a0, (a0, 0)4020; CSKY-NEXT: movi16 l2, 04021; CSKY-NEXT: .LBB147_1: # %atomicrmw.start4022; CSKY-NEXT: # =>This Inner Loop Header: Depth=14023; CSKY-NEXT: cmplt16 l0, a04024; CSKY-NEXT: mov16 a2, l04025; CSKY-NEXT: movt32 a2, a04026; CSKY-NEXT: st16.w a0, (sp, 4)4027; CSKY-NEXT: st16.w l2, (sp, 0)4028; CSKY-NEXT: mov16 a0, l14029; CSKY-NEXT: addi16 a1, sp, 44030; CSKY-NEXT: movi16 a3, 34031; CSKY-NEXT: jsri32 [.LCPI147_0]4032; CSKY-NEXT: mov16 a1, a04033; CSKY-NEXT: ld16.w a0, (sp, 4)4034; CSKY-NEXT: bez32 a1, .LBB147_14035; CSKY-NEXT: # %bb.2: # %atomicrmw.end4036; CSKY-NEXT: addi16 sp, sp, 84037; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload4038; CSKY-NEXT: ld16.w l0, (sp, 4) # 4-byte Folded Reload4039; CSKY-NEXT: ld16.w l1, (sp, 8) # 4-byte Folded Reload4040; CSKY-NEXT: ld16.w l2, (sp, 12) # 4-byte Folded Reload4041; CSKY-NEXT: addi16 sp, sp, 164042; CSKY-NEXT: rts164043; CSKY-NEXT: .p2align 14044; CSKY-NEXT: # %bb.3:4045; CSKY-NEXT: .p2align 24046; CSKY-NEXT: .LCPI147_0:4047; CSKY-NEXT: .long __atomic_compare_exchange_44048 %1 = atomicrmw max ptr %a, i32 %b release4049 ret i32 %14050}4051 4052define i32 @atomicrmw_max_i32_acq_rel(ptr %a, i32 %b) nounwind {4053; CSKY-LABEL: atomicrmw_max_i32_acq_rel:4054; CSKY: # %bb.0:4055; CSKY-NEXT: subi16 sp, sp, 164056; CSKY-NEXT: st16.w l2, (sp, 12) # 4-byte Folded Spill4057; CSKY-NEXT: st16.w l1, (sp, 8) # 4-byte Folded Spill4058; CSKY-NEXT: st16.w l0, (sp, 4) # 4-byte Folded Spill4059; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill4060; CSKY-NEXT: subi16 sp, sp, 84061; CSKY-NEXT: mov16 l0, a14062; CSKY-NEXT: mov16 l1, a04063; CSKY-NEXT: ld16.w a0, (a0, 0)4064; CSKY-NEXT: movi16 l2, 24065; CSKY-NEXT: .LBB148_1: # %atomicrmw.start4066; CSKY-NEXT: # =>This Inner Loop Header: Depth=14067; CSKY-NEXT: cmplt16 l0, a04068; CSKY-NEXT: mov16 a2, l04069; CSKY-NEXT: movt32 a2, a04070; CSKY-NEXT: st16.w a0, (sp, 4)4071; CSKY-NEXT: st16.w l2, (sp, 0)4072; CSKY-NEXT: mov16 a0, l14073; CSKY-NEXT: addi16 a1, sp, 44074; CSKY-NEXT: movi16 a3, 44075; CSKY-NEXT: jsri32 [.LCPI148_0]4076; CSKY-NEXT: mov16 a1, a04077; CSKY-NEXT: ld16.w a0, (sp, 4)4078; CSKY-NEXT: bez32 a1, .LBB148_14079; CSKY-NEXT: # %bb.2: # %atomicrmw.end4080; CSKY-NEXT: addi16 sp, sp, 84081; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload4082; CSKY-NEXT: ld16.w l0, (sp, 4) # 4-byte Folded Reload4083; CSKY-NEXT: ld16.w l1, (sp, 8) # 4-byte Folded Reload4084; CSKY-NEXT: ld16.w l2, (sp, 12) # 4-byte Folded Reload4085; CSKY-NEXT: addi16 sp, sp, 164086; CSKY-NEXT: rts164087; CSKY-NEXT: .p2align 14088; CSKY-NEXT: # %bb.3:4089; CSKY-NEXT: .p2align 24090; CSKY-NEXT: .LCPI148_0:4091; CSKY-NEXT: .long __atomic_compare_exchange_44092 %1 = atomicrmw max ptr %a, i32 %b acq_rel4093 ret i32 %14094}4095 4096define i32 @atomicrmw_max_i32_seq_cst(ptr %a, i32 %b) nounwind {4097; CSKY-LABEL: atomicrmw_max_i32_seq_cst:4098; CSKY: # %bb.0:4099; CSKY-NEXT: subi16 sp, sp, 164100; CSKY-NEXT: st16.w l2, (sp, 12) # 4-byte Folded Spill4101; CSKY-NEXT: st16.w l1, (sp, 8) # 4-byte Folded Spill4102; CSKY-NEXT: st16.w l0, (sp, 4) # 4-byte Folded Spill4103; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill4104; CSKY-NEXT: subi16 sp, sp, 84105; CSKY-NEXT: mov16 l0, a14106; CSKY-NEXT: mov16 l1, a04107; CSKY-NEXT: ld16.w a0, (a0, 0)4108; CSKY-NEXT: movi16 l2, 54109; CSKY-NEXT: .LBB149_1: # %atomicrmw.start4110; CSKY-NEXT: # =>This Inner Loop Header: Depth=14111; CSKY-NEXT: cmplt16 l0, a04112; CSKY-NEXT: mov16 a2, l04113; CSKY-NEXT: movt32 a2, a04114; CSKY-NEXT: st16.w a0, (sp, 4)4115; CSKY-NEXT: st16.w l2, (sp, 0)4116; CSKY-NEXT: mov16 a0, l14117; CSKY-NEXT: addi16 a1, sp, 44118; CSKY-NEXT: movi16 a3, 54119; CSKY-NEXT: jsri32 [.LCPI149_0]4120; CSKY-NEXT: mov16 a1, a04121; CSKY-NEXT: ld16.w a0, (sp, 4)4122; CSKY-NEXT: bez32 a1, .LBB149_14123; CSKY-NEXT: # %bb.2: # %atomicrmw.end4124; CSKY-NEXT: addi16 sp, sp, 84125; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload4126; CSKY-NEXT: ld16.w l0, (sp, 4) # 4-byte Folded Reload4127; CSKY-NEXT: ld16.w l1, (sp, 8) # 4-byte Folded Reload4128; CSKY-NEXT: ld16.w l2, (sp, 12) # 4-byte Folded Reload4129; CSKY-NEXT: addi16 sp, sp, 164130; CSKY-NEXT: rts164131; CSKY-NEXT: .p2align 14132; CSKY-NEXT: # %bb.3:4133; CSKY-NEXT: .p2align 24134; CSKY-NEXT: .LCPI149_0:4135; CSKY-NEXT: .long __atomic_compare_exchange_44136 %1 = atomicrmw max ptr %a, i32 %b seq_cst4137 ret i32 %14138}4139 4140define i32 @atomicrmw_min_i32_monotonic(ptr %a, i32 %b) nounwind {4141; CSKY-LABEL: atomicrmw_min_i32_monotonic:4142; CSKY: # %bb.0:4143; CSKY-NEXT: subi16 sp, sp, 164144; CSKY-NEXT: st16.w l2, (sp, 12) # 4-byte Folded Spill4145; CSKY-NEXT: st16.w l1, (sp, 8) # 4-byte Folded Spill4146; CSKY-NEXT: st16.w l0, (sp, 4) # 4-byte Folded Spill4147; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill4148; CSKY-NEXT: subi16 sp, sp, 84149; CSKY-NEXT: mov16 l0, a14150; CSKY-NEXT: mov16 l1, a04151; CSKY-NEXT: ld16.w a0, (a0, 0)4152; CSKY-NEXT: movi16 l2, 04153; CSKY-NEXT: .LBB150_1: # %atomicrmw.start4154; CSKY-NEXT: # =>This Inner Loop Header: Depth=14155; CSKY-NEXT: cmplt16 l0, a04156; CSKY-NEXT: mov16 a2, l04157; CSKY-NEXT: movf32 a2, a04158; CSKY-NEXT: st16.w a0, (sp, 4)4159; CSKY-NEXT: st16.w l2, (sp, 0)4160; CSKY-NEXT: mov16 a0, l14161; CSKY-NEXT: addi16 a1, sp, 44162; CSKY-NEXT: movi16 a3, 04163; CSKY-NEXT: jsri32 [.LCPI150_0]4164; CSKY-NEXT: mov16 a1, a04165; CSKY-NEXT: ld16.w a0, (sp, 4)4166; CSKY-NEXT: bez32 a1, .LBB150_14167; CSKY-NEXT: # %bb.2: # %atomicrmw.end4168; CSKY-NEXT: addi16 sp, sp, 84169; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload4170; CSKY-NEXT: ld16.w l0, (sp, 4) # 4-byte Folded Reload4171; CSKY-NEXT: ld16.w l1, (sp, 8) # 4-byte Folded Reload4172; CSKY-NEXT: ld16.w l2, (sp, 12) # 4-byte Folded Reload4173; CSKY-NEXT: addi16 sp, sp, 164174; CSKY-NEXT: rts164175; CSKY-NEXT: .p2align 14176; CSKY-NEXT: # %bb.3:4177; CSKY-NEXT: .p2align 24178; CSKY-NEXT: .LCPI150_0:4179; CSKY-NEXT: .long __atomic_compare_exchange_44180 %1 = atomicrmw min ptr %a, i32 %b monotonic4181 ret i32 %14182}4183 4184define i32 @atomicrmw_min_i32_acquire(ptr %a, i32 %b) nounwind {4185; CSKY-LABEL: atomicrmw_min_i32_acquire:4186; CSKY: # %bb.0:4187; CSKY-NEXT: subi16 sp, sp, 164188; CSKY-NEXT: st16.w l2, (sp, 12) # 4-byte Folded Spill4189; CSKY-NEXT: st16.w l1, (sp, 8) # 4-byte Folded Spill4190; CSKY-NEXT: st16.w l0, (sp, 4) # 4-byte Folded Spill4191; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill4192; CSKY-NEXT: subi16 sp, sp, 84193; CSKY-NEXT: mov16 l0, a14194; CSKY-NEXT: mov16 l1, a04195; CSKY-NEXT: ld16.w a0, (a0, 0)4196; CSKY-NEXT: movi16 l2, 24197; CSKY-NEXT: .LBB151_1: # %atomicrmw.start4198; CSKY-NEXT: # =>This Inner Loop Header: Depth=14199; CSKY-NEXT: cmplt16 l0, a04200; CSKY-NEXT: mov16 a2, l04201; CSKY-NEXT: movf32 a2, a04202; CSKY-NEXT: st16.w a0, (sp, 4)4203; CSKY-NEXT: st16.w l2, (sp, 0)4204; CSKY-NEXT: mov16 a0, l14205; CSKY-NEXT: addi16 a1, sp, 44206; CSKY-NEXT: movi16 a3, 24207; CSKY-NEXT: jsri32 [.LCPI151_0]4208; CSKY-NEXT: mov16 a1, a04209; CSKY-NEXT: ld16.w a0, (sp, 4)4210; CSKY-NEXT: bez32 a1, .LBB151_14211; CSKY-NEXT: # %bb.2: # %atomicrmw.end4212; CSKY-NEXT: addi16 sp, sp, 84213; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload4214; CSKY-NEXT: ld16.w l0, (sp, 4) # 4-byte Folded Reload4215; CSKY-NEXT: ld16.w l1, (sp, 8) # 4-byte Folded Reload4216; CSKY-NEXT: ld16.w l2, (sp, 12) # 4-byte Folded Reload4217; CSKY-NEXT: addi16 sp, sp, 164218; CSKY-NEXT: rts164219; CSKY-NEXT: .p2align 14220; CSKY-NEXT: # %bb.3:4221; CSKY-NEXT: .p2align 24222; CSKY-NEXT: .LCPI151_0:4223; CSKY-NEXT: .long __atomic_compare_exchange_44224 %1 = atomicrmw min ptr %a, i32 %b acquire4225 ret i32 %14226}4227 4228define i32 @atomicrmw_min_i32_release(ptr %a, i32 %b) nounwind {4229; CSKY-LABEL: atomicrmw_min_i32_release:4230; CSKY: # %bb.0:4231; CSKY-NEXT: subi16 sp, sp, 164232; CSKY-NEXT: st16.w l2, (sp, 12) # 4-byte Folded Spill4233; CSKY-NEXT: st16.w l1, (sp, 8) # 4-byte Folded Spill4234; CSKY-NEXT: st16.w l0, (sp, 4) # 4-byte Folded Spill4235; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill4236; CSKY-NEXT: subi16 sp, sp, 84237; CSKY-NEXT: mov16 l0, a14238; CSKY-NEXT: mov16 l1, a04239; CSKY-NEXT: ld16.w a0, (a0, 0)4240; CSKY-NEXT: movi16 l2, 04241; CSKY-NEXT: .LBB152_1: # %atomicrmw.start4242; CSKY-NEXT: # =>This Inner Loop Header: Depth=14243; CSKY-NEXT: cmplt16 l0, a04244; CSKY-NEXT: mov16 a2, l04245; CSKY-NEXT: movf32 a2, a04246; CSKY-NEXT: st16.w a0, (sp, 4)4247; CSKY-NEXT: st16.w l2, (sp, 0)4248; CSKY-NEXT: mov16 a0, l14249; CSKY-NEXT: addi16 a1, sp, 44250; CSKY-NEXT: movi16 a3, 34251; CSKY-NEXT: jsri32 [.LCPI152_0]4252; CSKY-NEXT: mov16 a1, a04253; CSKY-NEXT: ld16.w a0, (sp, 4)4254; CSKY-NEXT: bez32 a1, .LBB152_14255; CSKY-NEXT: # %bb.2: # %atomicrmw.end4256; CSKY-NEXT: addi16 sp, sp, 84257; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload4258; CSKY-NEXT: ld16.w l0, (sp, 4) # 4-byte Folded Reload4259; CSKY-NEXT: ld16.w l1, (sp, 8) # 4-byte Folded Reload4260; CSKY-NEXT: ld16.w l2, (sp, 12) # 4-byte Folded Reload4261; CSKY-NEXT: addi16 sp, sp, 164262; CSKY-NEXT: rts164263; CSKY-NEXT: .p2align 14264; CSKY-NEXT: # %bb.3:4265; CSKY-NEXT: .p2align 24266; CSKY-NEXT: .LCPI152_0:4267; CSKY-NEXT: .long __atomic_compare_exchange_44268 %1 = atomicrmw min ptr %a, i32 %b release4269 ret i32 %14270}4271 4272define i32 @atomicrmw_min_i32_acq_rel(ptr %a, i32 %b) nounwind {4273; CSKY-LABEL: atomicrmw_min_i32_acq_rel:4274; CSKY: # %bb.0:4275; CSKY-NEXT: subi16 sp, sp, 164276; CSKY-NEXT: st16.w l2, (sp, 12) # 4-byte Folded Spill4277; CSKY-NEXT: st16.w l1, (sp, 8) # 4-byte Folded Spill4278; CSKY-NEXT: st16.w l0, (sp, 4) # 4-byte Folded Spill4279; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill4280; CSKY-NEXT: subi16 sp, sp, 84281; CSKY-NEXT: mov16 l0, a14282; CSKY-NEXT: mov16 l1, a04283; CSKY-NEXT: ld16.w a0, (a0, 0)4284; CSKY-NEXT: movi16 l2, 24285; CSKY-NEXT: .LBB153_1: # %atomicrmw.start4286; CSKY-NEXT: # =>This Inner Loop Header: Depth=14287; CSKY-NEXT: cmplt16 l0, a04288; CSKY-NEXT: mov16 a2, l04289; CSKY-NEXT: movf32 a2, a04290; CSKY-NEXT: st16.w a0, (sp, 4)4291; CSKY-NEXT: st16.w l2, (sp, 0)4292; CSKY-NEXT: mov16 a0, l14293; CSKY-NEXT: addi16 a1, sp, 44294; CSKY-NEXT: movi16 a3, 44295; CSKY-NEXT: jsri32 [.LCPI153_0]4296; CSKY-NEXT: mov16 a1, a04297; CSKY-NEXT: ld16.w a0, (sp, 4)4298; CSKY-NEXT: bez32 a1, .LBB153_14299; CSKY-NEXT: # %bb.2: # %atomicrmw.end4300; CSKY-NEXT: addi16 sp, sp, 84301; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload4302; CSKY-NEXT: ld16.w l0, (sp, 4) # 4-byte Folded Reload4303; CSKY-NEXT: ld16.w l1, (sp, 8) # 4-byte Folded Reload4304; CSKY-NEXT: ld16.w l2, (sp, 12) # 4-byte Folded Reload4305; CSKY-NEXT: addi16 sp, sp, 164306; CSKY-NEXT: rts164307; CSKY-NEXT: .p2align 14308; CSKY-NEXT: # %bb.3:4309; CSKY-NEXT: .p2align 24310; CSKY-NEXT: .LCPI153_0:4311; CSKY-NEXT: .long __atomic_compare_exchange_44312 %1 = atomicrmw min ptr %a, i32 %b acq_rel4313 ret i32 %14314}4315 4316define i32 @atomicrmw_min_i32_seq_cst(ptr %a, i32 %b) nounwind {4317; CSKY-LABEL: atomicrmw_min_i32_seq_cst:4318; CSKY: # %bb.0:4319; CSKY-NEXT: subi16 sp, sp, 164320; CSKY-NEXT: st16.w l2, (sp, 12) # 4-byte Folded Spill4321; CSKY-NEXT: st16.w l1, (sp, 8) # 4-byte Folded Spill4322; CSKY-NEXT: st16.w l0, (sp, 4) # 4-byte Folded Spill4323; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill4324; CSKY-NEXT: subi16 sp, sp, 84325; CSKY-NEXT: mov16 l0, a14326; CSKY-NEXT: mov16 l1, a04327; CSKY-NEXT: ld16.w a0, (a0, 0)4328; CSKY-NEXT: movi16 l2, 54329; CSKY-NEXT: .LBB154_1: # %atomicrmw.start4330; CSKY-NEXT: # =>This Inner Loop Header: Depth=14331; CSKY-NEXT: cmplt16 l0, a04332; CSKY-NEXT: mov16 a2, l04333; CSKY-NEXT: movf32 a2, a04334; CSKY-NEXT: st16.w a0, (sp, 4)4335; CSKY-NEXT: st16.w l2, (sp, 0)4336; CSKY-NEXT: mov16 a0, l14337; CSKY-NEXT: addi16 a1, sp, 44338; CSKY-NEXT: movi16 a3, 54339; CSKY-NEXT: jsri32 [.LCPI154_0]4340; CSKY-NEXT: mov16 a1, a04341; CSKY-NEXT: ld16.w a0, (sp, 4)4342; CSKY-NEXT: bez32 a1, .LBB154_14343; CSKY-NEXT: # %bb.2: # %atomicrmw.end4344; CSKY-NEXT: addi16 sp, sp, 84345; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload4346; CSKY-NEXT: ld16.w l0, (sp, 4) # 4-byte Folded Reload4347; CSKY-NEXT: ld16.w l1, (sp, 8) # 4-byte Folded Reload4348; CSKY-NEXT: ld16.w l2, (sp, 12) # 4-byte Folded Reload4349; CSKY-NEXT: addi16 sp, sp, 164350; CSKY-NEXT: rts164351; CSKY-NEXT: .p2align 14352; CSKY-NEXT: # %bb.3:4353; CSKY-NEXT: .p2align 24354; CSKY-NEXT: .LCPI154_0:4355; CSKY-NEXT: .long __atomic_compare_exchange_44356 %1 = atomicrmw min ptr %a, i32 %b seq_cst4357 ret i32 %14358}4359 4360define i32 @atomicrmw_umax_i32_monotonic(ptr %a, i32 %b) nounwind {4361; CSKY-LABEL: atomicrmw_umax_i32_monotonic:4362; CSKY: # %bb.0:4363; CSKY-NEXT: subi16 sp, sp, 164364; CSKY-NEXT: st16.w l2, (sp, 12) # 4-byte Folded Spill4365; CSKY-NEXT: st16.w l1, (sp, 8) # 4-byte Folded Spill4366; CSKY-NEXT: st16.w l0, (sp, 4) # 4-byte Folded Spill4367; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill4368; CSKY-NEXT: subi16 sp, sp, 84369; CSKY-NEXT: mov16 l0, a14370; CSKY-NEXT: mov16 l1, a04371; CSKY-NEXT: ld16.w a0, (a0, 0)4372; CSKY-NEXT: movi16 l2, 04373; CSKY-NEXT: .LBB155_1: # %atomicrmw.start4374; CSKY-NEXT: # =>This Inner Loop Header: Depth=14375; CSKY-NEXT: cmphs16 l0, a04376; CSKY-NEXT: mov16 a2, l04377; CSKY-NEXT: movf32 a2, a04378; CSKY-NEXT: st16.w a0, (sp, 4)4379; CSKY-NEXT: st16.w l2, (sp, 0)4380; CSKY-NEXT: mov16 a0, l14381; CSKY-NEXT: addi16 a1, sp, 44382; CSKY-NEXT: movi16 a3, 04383; CSKY-NEXT: jsri32 [.LCPI155_0]4384; CSKY-NEXT: mov16 a1, a04385; CSKY-NEXT: ld16.w a0, (sp, 4)4386; CSKY-NEXT: bez32 a1, .LBB155_14387; CSKY-NEXT: # %bb.2: # %atomicrmw.end4388; CSKY-NEXT: addi16 sp, sp, 84389; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload4390; CSKY-NEXT: ld16.w l0, (sp, 4) # 4-byte Folded Reload4391; CSKY-NEXT: ld16.w l1, (sp, 8) # 4-byte Folded Reload4392; CSKY-NEXT: ld16.w l2, (sp, 12) # 4-byte Folded Reload4393; CSKY-NEXT: addi16 sp, sp, 164394; CSKY-NEXT: rts164395; CSKY-NEXT: .p2align 14396; CSKY-NEXT: # %bb.3:4397; CSKY-NEXT: .p2align 24398; CSKY-NEXT: .LCPI155_0:4399; CSKY-NEXT: .long __atomic_compare_exchange_44400 %1 = atomicrmw umax ptr %a, i32 %b monotonic4401 ret i32 %14402}4403 4404define i32 @atomicrmw_umax_i32_acquire(ptr %a, i32 %b) nounwind {4405; CSKY-LABEL: atomicrmw_umax_i32_acquire:4406; CSKY: # %bb.0:4407; CSKY-NEXT: subi16 sp, sp, 164408; CSKY-NEXT: st16.w l2, (sp, 12) # 4-byte Folded Spill4409; CSKY-NEXT: st16.w l1, (sp, 8) # 4-byte Folded Spill4410; CSKY-NEXT: st16.w l0, (sp, 4) # 4-byte Folded Spill4411; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill4412; CSKY-NEXT: subi16 sp, sp, 84413; CSKY-NEXT: mov16 l0, a14414; CSKY-NEXT: mov16 l1, a04415; CSKY-NEXT: ld16.w a0, (a0, 0)4416; CSKY-NEXT: movi16 l2, 24417; CSKY-NEXT: .LBB156_1: # %atomicrmw.start4418; CSKY-NEXT: # =>This Inner Loop Header: Depth=14419; CSKY-NEXT: cmphs16 l0, a04420; CSKY-NEXT: mov16 a2, l04421; CSKY-NEXT: movf32 a2, a04422; CSKY-NEXT: st16.w a0, (sp, 4)4423; CSKY-NEXT: st16.w l2, (sp, 0)4424; CSKY-NEXT: mov16 a0, l14425; CSKY-NEXT: addi16 a1, sp, 44426; CSKY-NEXT: movi16 a3, 24427; CSKY-NEXT: jsri32 [.LCPI156_0]4428; CSKY-NEXT: mov16 a1, a04429; CSKY-NEXT: ld16.w a0, (sp, 4)4430; CSKY-NEXT: bez32 a1, .LBB156_14431; CSKY-NEXT: # %bb.2: # %atomicrmw.end4432; CSKY-NEXT: addi16 sp, sp, 84433; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload4434; CSKY-NEXT: ld16.w l0, (sp, 4) # 4-byte Folded Reload4435; CSKY-NEXT: ld16.w l1, (sp, 8) # 4-byte Folded Reload4436; CSKY-NEXT: ld16.w l2, (sp, 12) # 4-byte Folded Reload4437; CSKY-NEXT: addi16 sp, sp, 164438; CSKY-NEXT: rts164439; CSKY-NEXT: .p2align 14440; CSKY-NEXT: # %bb.3:4441; CSKY-NEXT: .p2align 24442; CSKY-NEXT: .LCPI156_0:4443; CSKY-NEXT: .long __atomic_compare_exchange_44444 %1 = atomicrmw umax ptr %a, i32 %b acquire4445 ret i32 %14446}4447 4448define i32 @atomicrmw_umax_i32_release(ptr %a, i32 %b) nounwind {4449; CSKY-LABEL: atomicrmw_umax_i32_release:4450; CSKY: # %bb.0:4451; CSKY-NEXT: subi16 sp, sp, 164452; CSKY-NEXT: st16.w l2, (sp, 12) # 4-byte Folded Spill4453; CSKY-NEXT: st16.w l1, (sp, 8) # 4-byte Folded Spill4454; CSKY-NEXT: st16.w l0, (sp, 4) # 4-byte Folded Spill4455; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill4456; CSKY-NEXT: subi16 sp, sp, 84457; CSKY-NEXT: mov16 l0, a14458; CSKY-NEXT: mov16 l1, a04459; CSKY-NEXT: ld16.w a0, (a0, 0)4460; CSKY-NEXT: movi16 l2, 04461; CSKY-NEXT: .LBB157_1: # %atomicrmw.start4462; CSKY-NEXT: # =>This Inner Loop Header: Depth=14463; CSKY-NEXT: cmphs16 l0, a04464; CSKY-NEXT: mov16 a2, l04465; CSKY-NEXT: movf32 a2, a04466; CSKY-NEXT: st16.w a0, (sp, 4)4467; CSKY-NEXT: st16.w l2, (sp, 0)4468; CSKY-NEXT: mov16 a0, l14469; CSKY-NEXT: addi16 a1, sp, 44470; CSKY-NEXT: movi16 a3, 34471; CSKY-NEXT: jsri32 [.LCPI157_0]4472; CSKY-NEXT: mov16 a1, a04473; CSKY-NEXT: ld16.w a0, (sp, 4)4474; CSKY-NEXT: bez32 a1, .LBB157_14475; CSKY-NEXT: # %bb.2: # %atomicrmw.end4476; CSKY-NEXT: addi16 sp, sp, 84477; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload4478; CSKY-NEXT: ld16.w l0, (sp, 4) # 4-byte Folded Reload4479; CSKY-NEXT: ld16.w l1, (sp, 8) # 4-byte Folded Reload4480; CSKY-NEXT: ld16.w l2, (sp, 12) # 4-byte Folded Reload4481; CSKY-NEXT: addi16 sp, sp, 164482; CSKY-NEXT: rts164483; CSKY-NEXT: .p2align 14484; CSKY-NEXT: # %bb.3:4485; CSKY-NEXT: .p2align 24486; CSKY-NEXT: .LCPI157_0:4487; CSKY-NEXT: .long __atomic_compare_exchange_44488 %1 = atomicrmw umax ptr %a, i32 %b release4489 ret i32 %14490}4491 4492define i32 @atomicrmw_umax_i32_acq_rel(ptr %a, i32 %b) nounwind {4493; CSKY-LABEL: atomicrmw_umax_i32_acq_rel:4494; CSKY: # %bb.0:4495; CSKY-NEXT: subi16 sp, sp, 164496; CSKY-NEXT: st16.w l2, (sp, 12) # 4-byte Folded Spill4497; CSKY-NEXT: st16.w l1, (sp, 8) # 4-byte Folded Spill4498; CSKY-NEXT: st16.w l0, (sp, 4) # 4-byte Folded Spill4499; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill4500; CSKY-NEXT: subi16 sp, sp, 84501; CSKY-NEXT: mov16 l0, a14502; CSKY-NEXT: mov16 l1, a04503; CSKY-NEXT: ld16.w a0, (a0, 0)4504; CSKY-NEXT: movi16 l2, 24505; CSKY-NEXT: .LBB158_1: # %atomicrmw.start4506; CSKY-NEXT: # =>This Inner Loop Header: Depth=14507; CSKY-NEXT: cmphs16 l0, a04508; CSKY-NEXT: mov16 a2, l04509; CSKY-NEXT: movf32 a2, a04510; CSKY-NEXT: st16.w a0, (sp, 4)4511; CSKY-NEXT: st16.w l2, (sp, 0)4512; CSKY-NEXT: mov16 a0, l14513; CSKY-NEXT: addi16 a1, sp, 44514; CSKY-NEXT: movi16 a3, 44515; CSKY-NEXT: jsri32 [.LCPI158_0]4516; CSKY-NEXT: mov16 a1, a04517; CSKY-NEXT: ld16.w a0, (sp, 4)4518; CSKY-NEXT: bez32 a1, .LBB158_14519; CSKY-NEXT: # %bb.2: # %atomicrmw.end4520; CSKY-NEXT: addi16 sp, sp, 84521; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload4522; CSKY-NEXT: ld16.w l0, (sp, 4) # 4-byte Folded Reload4523; CSKY-NEXT: ld16.w l1, (sp, 8) # 4-byte Folded Reload4524; CSKY-NEXT: ld16.w l2, (sp, 12) # 4-byte Folded Reload4525; CSKY-NEXT: addi16 sp, sp, 164526; CSKY-NEXT: rts164527; CSKY-NEXT: .p2align 14528; CSKY-NEXT: # %bb.3:4529; CSKY-NEXT: .p2align 24530; CSKY-NEXT: .LCPI158_0:4531; CSKY-NEXT: .long __atomic_compare_exchange_44532 %1 = atomicrmw umax ptr %a, i32 %b acq_rel4533 ret i32 %14534}4535 4536define i32 @atomicrmw_umax_i32_seq_cst(ptr %a, i32 %b) nounwind {4537; CSKY-LABEL: atomicrmw_umax_i32_seq_cst:4538; CSKY: # %bb.0:4539; CSKY-NEXT: subi16 sp, sp, 164540; CSKY-NEXT: st16.w l2, (sp, 12) # 4-byte Folded Spill4541; CSKY-NEXT: st16.w l1, (sp, 8) # 4-byte Folded Spill4542; CSKY-NEXT: st16.w l0, (sp, 4) # 4-byte Folded Spill4543; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill4544; CSKY-NEXT: subi16 sp, sp, 84545; CSKY-NEXT: mov16 l0, a14546; CSKY-NEXT: mov16 l1, a04547; CSKY-NEXT: ld16.w a0, (a0, 0)4548; CSKY-NEXT: movi16 l2, 54549; CSKY-NEXT: .LBB159_1: # %atomicrmw.start4550; CSKY-NEXT: # =>This Inner Loop Header: Depth=14551; CSKY-NEXT: cmphs16 l0, a04552; CSKY-NEXT: mov16 a2, l04553; CSKY-NEXT: movf32 a2, a04554; CSKY-NEXT: st16.w a0, (sp, 4)4555; CSKY-NEXT: st16.w l2, (sp, 0)4556; CSKY-NEXT: mov16 a0, l14557; CSKY-NEXT: addi16 a1, sp, 44558; CSKY-NEXT: movi16 a3, 54559; CSKY-NEXT: jsri32 [.LCPI159_0]4560; CSKY-NEXT: mov16 a1, a04561; CSKY-NEXT: ld16.w a0, (sp, 4)4562; CSKY-NEXT: bez32 a1, .LBB159_14563; CSKY-NEXT: # %bb.2: # %atomicrmw.end4564; CSKY-NEXT: addi16 sp, sp, 84565; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload4566; CSKY-NEXT: ld16.w l0, (sp, 4) # 4-byte Folded Reload4567; CSKY-NEXT: ld16.w l1, (sp, 8) # 4-byte Folded Reload4568; CSKY-NEXT: ld16.w l2, (sp, 12) # 4-byte Folded Reload4569; CSKY-NEXT: addi16 sp, sp, 164570; CSKY-NEXT: rts164571; CSKY-NEXT: .p2align 14572; CSKY-NEXT: # %bb.3:4573; CSKY-NEXT: .p2align 24574; CSKY-NEXT: .LCPI159_0:4575; CSKY-NEXT: .long __atomic_compare_exchange_44576 %1 = atomicrmw umax ptr %a, i32 %b seq_cst4577 ret i32 %14578}4579 4580define i32 @atomicrmw_umin_i32_monotonic(ptr %a, i32 %b) nounwind {4581; CSKY-LABEL: atomicrmw_umin_i32_monotonic:4582; CSKY: # %bb.0:4583; CSKY-NEXT: subi16 sp, sp, 164584; CSKY-NEXT: st16.w l2, (sp, 12) # 4-byte Folded Spill4585; CSKY-NEXT: st16.w l1, (sp, 8) # 4-byte Folded Spill4586; CSKY-NEXT: st16.w l0, (sp, 4) # 4-byte Folded Spill4587; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill4588; CSKY-NEXT: subi16 sp, sp, 84589; CSKY-NEXT: mov16 l0, a14590; CSKY-NEXT: mov16 l1, a04591; CSKY-NEXT: ld16.w a0, (a0, 0)4592; CSKY-NEXT: movi16 l2, 04593; CSKY-NEXT: .LBB160_1: # %atomicrmw.start4594; CSKY-NEXT: # =>This Inner Loop Header: Depth=14595; CSKY-NEXT: cmphs16 l0, a04596; CSKY-NEXT: mov16 a2, l04597; CSKY-NEXT: movt32 a2, a04598; CSKY-NEXT: st16.w a0, (sp, 4)4599; CSKY-NEXT: st16.w l2, (sp, 0)4600; CSKY-NEXT: mov16 a0, l14601; CSKY-NEXT: addi16 a1, sp, 44602; CSKY-NEXT: movi16 a3, 04603; CSKY-NEXT: jsri32 [.LCPI160_0]4604; CSKY-NEXT: mov16 a1, a04605; CSKY-NEXT: ld16.w a0, (sp, 4)4606; CSKY-NEXT: bez32 a1, .LBB160_14607; CSKY-NEXT: # %bb.2: # %atomicrmw.end4608; CSKY-NEXT: addi16 sp, sp, 84609; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload4610; CSKY-NEXT: ld16.w l0, (sp, 4) # 4-byte Folded Reload4611; CSKY-NEXT: ld16.w l1, (sp, 8) # 4-byte Folded Reload4612; CSKY-NEXT: ld16.w l2, (sp, 12) # 4-byte Folded Reload4613; CSKY-NEXT: addi16 sp, sp, 164614; CSKY-NEXT: rts164615; CSKY-NEXT: .p2align 14616; CSKY-NEXT: # %bb.3:4617; CSKY-NEXT: .p2align 24618; CSKY-NEXT: .LCPI160_0:4619; CSKY-NEXT: .long __atomic_compare_exchange_44620 %1 = atomicrmw umin ptr %a, i32 %b monotonic4621 ret i32 %14622}4623 4624define i32 @atomicrmw_umin_i32_acquire(ptr %a, i32 %b) nounwind {4625; CSKY-LABEL: atomicrmw_umin_i32_acquire:4626; CSKY: # %bb.0:4627; CSKY-NEXT: subi16 sp, sp, 164628; CSKY-NEXT: st16.w l2, (sp, 12) # 4-byte Folded Spill4629; CSKY-NEXT: st16.w l1, (sp, 8) # 4-byte Folded Spill4630; CSKY-NEXT: st16.w l0, (sp, 4) # 4-byte Folded Spill4631; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill4632; CSKY-NEXT: subi16 sp, sp, 84633; CSKY-NEXT: mov16 l0, a14634; CSKY-NEXT: mov16 l1, a04635; CSKY-NEXT: ld16.w a0, (a0, 0)4636; CSKY-NEXT: movi16 l2, 24637; CSKY-NEXT: .LBB161_1: # %atomicrmw.start4638; CSKY-NEXT: # =>This Inner Loop Header: Depth=14639; CSKY-NEXT: cmphs16 l0, a04640; CSKY-NEXT: mov16 a2, l04641; CSKY-NEXT: movt32 a2, a04642; CSKY-NEXT: st16.w a0, (sp, 4)4643; CSKY-NEXT: st16.w l2, (sp, 0)4644; CSKY-NEXT: mov16 a0, l14645; CSKY-NEXT: addi16 a1, sp, 44646; CSKY-NEXT: movi16 a3, 24647; CSKY-NEXT: jsri32 [.LCPI161_0]4648; CSKY-NEXT: mov16 a1, a04649; CSKY-NEXT: ld16.w a0, (sp, 4)4650; CSKY-NEXT: bez32 a1, .LBB161_14651; CSKY-NEXT: # %bb.2: # %atomicrmw.end4652; CSKY-NEXT: addi16 sp, sp, 84653; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload4654; CSKY-NEXT: ld16.w l0, (sp, 4) # 4-byte Folded Reload4655; CSKY-NEXT: ld16.w l1, (sp, 8) # 4-byte Folded Reload4656; CSKY-NEXT: ld16.w l2, (sp, 12) # 4-byte Folded Reload4657; CSKY-NEXT: addi16 sp, sp, 164658; CSKY-NEXT: rts164659; CSKY-NEXT: .p2align 14660; CSKY-NEXT: # %bb.3:4661; CSKY-NEXT: .p2align 24662; CSKY-NEXT: .LCPI161_0:4663; CSKY-NEXT: .long __atomic_compare_exchange_44664 %1 = atomicrmw umin ptr %a, i32 %b acquire4665 ret i32 %14666}4667 4668define i32 @atomicrmw_umin_i32_release(ptr %a, i32 %b) nounwind {4669; CSKY-LABEL: atomicrmw_umin_i32_release:4670; CSKY: # %bb.0:4671; CSKY-NEXT: subi16 sp, sp, 164672; CSKY-NEXT: st16.w l2, (sp, 12) # 4-byte Folded Spill4673; CSKY-NEXT: st16.w l1, (sp, 8) # 4-byte Folded Spill4674; CSKY-NEXT: st16.w l0, (sp, 4) # 4-byte Folded Spill4675; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill4676; CSKY-NEXT: subi16 sp, sp, 84677; CSKY-NEXT: mov16 l0, a14678; CSKY-NEXT: mov16 l1, a04679; CSKY-NEXT: ld16.w a0, (a0, 0)4680; CSKY-NEXT: movi16 l2, 04681; CSKY-NEXT: .LBB162_1: # %atomicrmw.start4682; CSKY-NEXT: # =>This Inner Loop Header: Depth=14683; CSKY-NEXT: cmphs16 l0, a04684; CSKY-NEXT: mov16 a2, l04685; CSKY-NEXT: movt32 a2, a04686; CSKY-NEXT: st16.w a0, (sp, 4)4687; CSKY-NEXT: st16.w l2, (sp, 0)4688; CSKY-NEXT: mov16 a0, l14689; CSKY-NEXT: addi16 a1, sp, 44690; CSKY-NEXT: movi16 a3, 34691; CSKY-NEXT: jsri32 [.LCPI162_0]4692; CSKY-NEXT: mov16 a1, a04693; CSKY-NEXT: ld16.w a0, (sp, 4)4694; CSKY-NEXT: bez32 a1, .LBB162_14695; CSKY-NEXT: # %bb.2: # %atomicrmw.end4696; CSKY-NEXT: addi16 sp, sp, 84697; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload4698; CSKY-NEXT: ld16.w l0, (sp, 4) # 4-byte Folded Reload4699; CSKY-NEXT: ld16.w l1, (sp, 8) # 4-byte Folded Reload4700; CSKY-NEXT: ld16.w l2, (sp, 12) # 4-byte Folded Reload4701; CSKY-NEXT: addi16 sp, sp, 164702; CSKY-NEXT: rts164703; CSKY-NEXT: .p2align 14704; CSKY-NEXT: # %bb.3:4705; CSKY-NEXT: .p2align 24706; CSKY-NEXT: .LCPI162_0:4707; CSKY-NEXT: .long __atomic_compare_exchange_44708 %1 = atomicrmw umin ptr %a, i32 %b release4709 ret i32 %14710}4711 4712define i32 @atomicrmw_umin_i32_acq_rel(ptr %a, i32 %b) nounwind {4713; CSKY-LABEL: atomicrmw_umin_i32_acq_rel:4714; CSKY: # %bb.0:4715; CSKY-NEXT: subi16 sp, sp, 164716; CSKY-NEXT: st16.w l2, (sp, 12) # 4-byte Folded Spill4717; CSKY-NEXT: st16.w l1, (sp, 8) # 4-byte Folded Spill4718; CSKY-NEXT: st16.w l0, (sp, 4) # 4-byte Folded Spill4719; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill4720; CSKY-NEXT: subi16 sp, sp, 84721; CSKY-NEXT: mov16 l0, a14722; CSKY-NEXT: mov16 l1, a04723; CSKY-NEXT: ld16.w a0, (a0, 0)4724; CSKY-NEXT: movi16 l2, 24725; CSKY-NEXT: .LBB163_1: # %atomicrmw.start4726; CSKY-NEXT: # =>This Inner Loop Header: Depth=14727; CSKY-NEXT: cmphs16 l0, a04728; CSKY-NEXT: mov16 a2, l04729; CSKY-NEXT: movt32 a2, a04730; CSKY-NEXT: st16.w a0, (sp, 4)4731; CSKY-NEXT: st16.w l2, (sp, 0)4732; CSKY-NEXT: mov16 a0, l14733; CSKY-NEXT: addi16 a1, sp, 44734; CSKY-NEXT: movi16 a3, 44735; CSKY-NEXT: jsri32 [.LCPI163_0]4736; CSKY-NEXT: mov16 a1, a04737; CSKY-NEXT: ld16.w a0, (sp, 4)4738; CSKY-NEXT: bez32 a1, .LBB163_14739; CSKY-NEXT: # %bb.2: # %atomicrmw.end4740; CSKY-NEXT: addi16 sp, sp, 84741; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload4742; CSKY-NEXT: ld16.w l0, (sp, 4) # 4-byte Folded Reload4743; CSKY-NEXT: ld16.w l1, (sp, 8) # 4-byte Folded Reload4744; CSKY-NEXT: ld16.w l2, (sp, 12) # 4-byte Folded Reload4745; CSKY-NEXT: addi16 sp, sp, 164746; CSKY-NEXT: rts164747; CSKY-NEXT: .p2align 14748; CSKY-NEXT: # %bb.3:4749; CSKY-NEXT: .p2align 24750; CSKY-NEXT: .LCPI163_0:4751; CSKY-NEXT: .long __atomic_compare_exchange_44752 %1 = atomicrmw umin ptr %a, i32 %b acq_rel4753 ret i32 %14754}4755 4756define i32 @atomicrmw_umin_i32_seq_cst(ptr %a, i32 %b) nounwind {4757; CSKY-LABEL: atomicrmw_umin_i32_seq_cst:4758; CSKY: # %bb.0:4759; CSKY-NEXT: subi16 sp, sp, 164760; CSKY-NEXT: st16.w l2, (sp, 12) # 4-byte Folded Spill4761; CSKY-NEXT: st16.w l1, (sp, 8) # 4-byte Folded Spill4762; CSKY-NEXT: st16.w l0, (sp, 4) # 4-byte Folded Spill4763; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill4764; CSKY-NEXT: subi16 sp, sp, 84765; CSKY-NEXT: mov16 l0, a14766; CSKY-NEXT: mov16 l1, a04767; CSKY-NEXT: ld16.w a0, (a0, 0)4768; CSKY-NEXT: movi16 l2, 54769; CSKY-NEXT: .LBB164_1: # %atomicrmw.start4770; CSKY-NEXT: # =>This Inner Loop Header: Depth=14771; CSKY-NEXT: cmphs16 l0, a04772; CSKY-NEXT: mov16 a2, l04773; CSKY-NEXT: movt32 a2, a04774; CSKY-NEXT: st16.w a0, (sp, 4)4775; CSKY-NEXT: st16.w l2, (sp, 0)4776; CSKY-NEXT: mov16 a0, l14777; CSKY-NEXT: addi16 a1, sp, 44778; CSKY-NEXT: movi16 a3, 54779; CSKY-NEXT: jsri32 [.LCPI164_0]4780; CSKY-NEXT: mov16 a1, a04781; CSKY-NEXT: ld16.w a0, (sp, 4)4782; CSKY-NEXT: bez32 a1, .LBB164_14783; CSKY-NEXT: # %bb.2: # %atomicrmw.end4784; CSKY-NEXT: addi16 sp, sp, 84785; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload4786; CSKY-NEXT: ld16.w l0, (sp, 4) # 4-byte Folded Reload4787; CSKY-NEXT: ld16.w l1, (sp, 8) # 4-byte Folded Reload4788; CSKY-NEXT: ld16.w l2, (sp, 12) # 4-byte Folded Reload4789; CSKY-NEXT: addi16 sp, sp, 164790; CSKY-NEXT: rts164791; CSKY-NEXT: .p2align 14792; CSKY-NEXT: # %bb.3:4793; CSKY-NEXT: .p2align 24794; CSKY-NEXT: .LCPI164_0:4795; CSKY-NEXT: .long __atomic_compare_exchange_44796 %1 = atomicrmw umin ptr %a, i32 %b seq_cst4797 ret i32 %14798}4799 4800define i64 @atomicrmw_xchg_i64_monotonic(ptr %a, i64 %b) nounwind {4801; CSKY-LABEL: atomicrmw_xchg_i64_monotonic:4802; CSKY: # %bb.0:4803; CSKY-NEXT: subi16 sp, sp, 44804; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill4805; CSKY-NEXT: movi16 a3, 04806; CSKY-NEXT: jsri32 [.LCPI165_0]4807; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload4808; CSKY-NEXT: addi16 sp, sp, 44809; CSKY-NEXT: rts164810; CSKY-NEXT: .p2align 14811; CSKY-NEXT: # %bb.1:4812; CSKY-NEXT: .p2align 24813; CSKY-NEXT: .LCPI165_0:4814; CSKY-NEXT: .long __atomic_exchange_84815 %1 = atomicrmw xchg ptr %a, i64 %b monotonic4816 ret i64 %14817}4818 4819define i64 @atomicrmw_xchg_i64_acquire(ptr %a, i64 %b) nounwind {4820; CSKY-LABEL: atomicrmw_xchg_i64_acquire:4821; CSKY: # %bb.0:4822; CSKY-NEXT: subi16 sp, sp, 44823; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill4824; CSKY-NEXT: movi16 a3, 24825; CSKY-NEXT: jsri32 [.LCPI166_0]4826; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload4827; CSKY-NEXT: addi16 sp, sp, 44828; CSKY-NEXT: rts164829; CSKY-NEXT: .p2align 14830; CSKY-NEXT: # %bb.1:4831; CSKY-NEXT: .p2align 24832; CSKY-NEXT: .LCPI166_0:4833; CSKY-NEXT: .long __atomic_exchange_84834 %1 = atomicrmw xchg ptr %a, i64 %b acquire4835 ret i64 %14836}4837 4838define i64 @atomicrmw_xchg_i64_release(ptr %a, i64 %b) nounwind {4839; CSKY-LABEL: atomicrmw_xchg_i64_release:4840; CSKY: # %bb.0:4841; CSKY-NEXT: subi16 sp, sp, 44842; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill4843; CSKY-NEXT: movi16 a3, 34844; CSKY-NEXT: jsri32 [.LCPI167_0]4845; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload4846; CSKY-NEXT: addi16 sp, sp, 44847; CSKY-NEXT: rts164848; CSKY-NEXT: .p2align 14849; CSKY-NEXT: # %bb.1:4850; CSKY-NEXT: .p2align 24851; CSKY-NEXT: .LCPI167_0:4852; CSKY-NEXT: .long __atomic_exchange_84853 %1 = atomicrmw xchg ptr %a, i64 %b release4854 ret i64 %14855}4856 4857define i64 @atomicrmw_xchg_i64_acq_rel(ptr %a, i64 %b) nounwind {4858; CSKY-LABEL: atomicrmw_xchg_i64_acq_rel:4859; CSKY: # %bb.0:4860; CSKY-NEXT: subi16 sp, sp, 44861; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill4862; CSKY-NEXT: movi16 a3, 44863; CSKY-NEXT: jsri32 [.LCPI168_0]4864; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload4865; CSKY-NEXT: addi16 sp, sp, 44866; CSKY-NEXT: rts164867; CSKY-NEXT: .p2align 14868; CSKY-NEXT: # %bb.1:4869; CSKY-NEXT: .p2align 24870; CSKY-NEXT: .LCPI168_0:4871; CSKY-NEXT: .long __atomic_exchange_84872 %1 = atomicrmw xchg ptr %a, i64 %b acq_rel4873 ret i64 %14874}4875 4876define i64 @atomicrmw_xchg_i64_seq_cst(ptr %a, i64 %b) nounwind {4877; CSKY-LABEL: atomicrmw_xchg_i64_seq_cst:4878; CSKY: # %bb.0:4879; CSKY-NEXT: subi16 sp, sp, 44880; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill4881; CSKY-NEXT: movi16 a3, 54882; CSKY-NEXT: jsri32 [.LCPI169_0]4883; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload4884; CSKY-NEXT: addi16 sp, sp, 44885; CSKY-NEXT: rts164886; CSKY-NEXT: .p2align 14887; CSKY-NEXT: # %bb.1:4888; CSKY-NEXT: .p2align 24889; CSKY-NEXT: .LCPI169_0:4890; CSKY-NEXT: .long __atomic_exchange_84891 %1 = atomicrmw xchg ptr %a, i64 %b seq_cst4892 ret i64 %14893}4894 4895define i64 @atomicrmw_add_i64_monotonic(ptr %a, i64 %b) nounwind {4896; CSKY-LABEL: atomicrmw_add_i64_monotonic:4897; CSKY: # %bb.0:4898; CSKY-NEXT: subi16 sp, sp, 44899; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill4900; CSKY-NEXT: movi16 a3, 04901; CSKY-NEXT: jsri32 [.LCPI170_0]4902; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload4903; CSKY-NEXT: addi16 sp, sp, 44904; CSKY-NEXT: rts164905; CSKY-NEXT: .p2align 14906; CSKY-NEXT: # %bb.1:4907; CSKY-NEXT: .p2align 24908; CSKY-NEXT: .LCPI170_0:4909; CSKY-NEXT: .long __atomic_fetch_add_84910 %1 = atomicrmw add ptr %a, i64 %b monotonic4911 ret i64 %14912}4913 4914define i64 @atomicrmw_add_i64_acquire(ptr %a, i64 %b) nounwind {4915; CSKY-LABEL: atomicrmw_add_i64_acquire:4916; CSKY: # %bb.0:4917; CSKY-NEXT: subi16 sp, sp, 44918; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill4919; CSKY-NEXT: movi16 a3, 24920; CSKY-NEXT: jsri32 [.LCPI171_0]4921; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload4922; CSKY-NEXT: addi16 sp, sp, 44923; CSKY-NEXT: rts164924; CSKY-NEXT: .p2align 14925; CSKY-NEXT: # %bb.1:4926; CSKY-NEXT: .p2align 24927; CSKY-NEXT: .LCPI171_0:4928; CSKY-NEXT: .long __atomic_fetch_add_84929 %1 = atomicrmw add ptr %a, i64 %b acquire4930 ret i64 %14931}4932 4933define i64 @atomicrmw_add_i64_release(ptr %a, i64 %b) nounwind {4934; CSKY-LABEL: atomicrmw_add_i64_release:4935; CSKY: # %bb.0:4936; CSKY-NEXT: subi16 sp, sp, 44937; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill4938; CSKY-NEXT: movi16 a3, 34939; CSKY-NEXT: jsri32 [.LCPI172_0]4940; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload4941; CSKY-NEXT: addi16 sp, sp, 44942; CSKY-NEXT: rts164943; CSKY-NEXT: .p2align 14944; CSKY-NEXT: # %bb.1:4945; CSKY-NEXT: .p2align 24946; CSKY-NEXT: .LCPI172_0:4947; CSKY-NEXT: .long __atomic_fetch_add_84948 %1 = atomicrmw add ptr %a, i64 %b release4949 ret i64 %14950}4951 4952define i64 @atomicrmw_add_i64_acq_rel(ptr %a, i64 %b) nounwind {4953; CSKY-LABEL: atomicrmw_add_i64_acq_rel:4954; CSKY: # %bb.0:4955; CSKY-NEXT: subi16 sp, sp, 44956; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill4957; CSKY-NEXT: movi16 a3, 44958; CSKY-NEXT: jsri32 [.LCPI173_0]4959; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload4960; CSKY-NEXT: addi16 sp, sp, 44961; CSKY-NEXT: rts164962; CSKY-NEXT: .p2align 14963; CSKY-NEXT: # %bb.1:4964; CSKY-NEXT: .p2align 24965; CSKY-NEXT: .LCPI173_0:4966; CSKY-NEXT: .long __atomic_fetch_add_84967 %1 = atomicrmw add ptr %a, i64 %b acq_rel4968 ret i64 %14969}4970 4971define i64 @atomicrmw_add_i64_seq_cst(ptr %a, i64 %b) nounwind {4972; CSKY-LABEL: atomicrmw_add_i64_seq_cst:4973; CSKY: # %bb.0:4974; CSKY-NEXT: subi16 sp, sp, 44975; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill4976; CSKY-NEXT: movi16 a3, 54977; CSKY-NEXT: jsri32 [.LCPI174_0]4978; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload4979; CSKY-NEXT: addi16 sp, sp, 44980; CSKY-NEXT: rts164981; CSKY-NEXT: .p2align 14982; CSKY-NEXT: # %bb.1:4983; CSKY-NEXT: .p2align 24984; CSKY-NEXT: .LCPI174_0:4985; CSKY-NEXT: .long __atomic_fetch_add_84986 %1 = atomicrmw add ptr %a, i64 %b seq_cst4987 ret i64 %14988}4989 4990define i64 @atomicrmw_sub_i64_monotonic(ptr %a, i64 %b) nounwind {4991; CSKY-LABEL: atomicrmw_sub_i64_monotonic:4992; CSKY: # %bb.0:4993; CSKY-NEXT: subi16 sp, sp, 44994; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill4995; CSKY-NEXT: movi16 a3, 04996; CSKY-NEXT: jsri32 [.LCPI175_0]4997; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload4998; CSKY-NEXT: addi16 sp, sp, 44999; CSKY-NEXT: rts165000; CSKY-NEXT: .p2align 15001; CSKY-NEXT: # %bb.1:5002; CSKY-NEXT: .p2align 25003; CSKY-NEXT: .LCPI175_0:5004; CSKY-NEXT: .long __atomic_fetch_sub_85005 %1 = atomicrmw sub ptr %a, i64 %b monotonic5006 ret i64 %15007}5008 5009define i64 @atomicrmw_sub_i64_acquire(ptr %a, i64 %b) nounwind {5010; CSKY-LABEL: atomicrmw_sub_i64_acquire:5011; CSKY: # %bb.0:5012; CSKY-NEXT: subi16 sp, sp, 45013; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill5014; CSKY-NEXT: movi16 a3, 25015; CSKY-NEXT: jsri32 [.LCPI176_0]5016; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload5017; CSKY-NEXT: addi16 sp, sp, 45018; CSKY-NEXT: rts165019; CSKY-NEXT: .p2align 15020; CSKY-NEXT: # %bb.1:5021; CSKY-NEXT: .p2align 25022; CSKY-NEXT: .LCPI176_0:5023; CSKY-NEXT: .long __atomic_fetch_sub_85024 %1 = atomicrmw sub ptr %a, i64 %b acquire5025 ret i64 %15026}5027 5028define i64 @atomicrmw_sub_i64_release(ptr %a, i64 %b) nounwind {5029; CSKY-LABEL: atomicrmw_sub_i64_release:5030; CSKY: # %bb.0:5031; CSKY-NEXT: subi16 sp, sp, 45032; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill5033; CSKY-NEXT: movi16 a3, 35034; CSKY-NEXT: jsri32 [.LCPI177_0]5035; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload5036; CSKY-NEXT: addi16 sp, sp, 45037; CSKY-NEXT: rts165038; CSKY-NEXT: .p2align 15039; CSKY-NEXT: # %bb.1:5040; CSKY-NEXT: .p2align 25041; CSKY-NEXT: .LCPI177_0:5042; CSKY-NEXT: .long __atomic_fetch_sub_85043 %1 = atomicrmw sub ptr %a, i64 %b release5044 ret i64 %15045}5046 5047define i64 @atomicrmw_sub_i64_acq_rel(ptr %a, i64 %b) nounwind {5048; CSKY-LABEL: atomicrmw_sub_i64_acq_rel:5049; CSKY: # %bb.0:5050; CSKY-NEXT: subi16 sp, sp, 45051; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill5052; CSKY-NEXT: movi16 a3, 45053; CSKY-NEXT: jsri32 [.LCPI178_0]5054; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload5055; CSKY-NEXT: addi16 sp, sp, 45056; CSKY-NEXT: rts165057; CSKY-NEXT: .p2align 15058; CSKY-NEXT: # %bb.1:5059; CSKY-NEXT: .p2align 25060; CSKY-NEXT: .LCPI178_0:5061; CSKY-NEXT: .long __atomic_fetch_sub_85062 %1 = atomicrmw sub ptr %a, i64 %b acq_rel5063 ret i64 %15064}5065 5066define i64 @atomicrmw_sub_i64_seq_cst(ptr %a, i64 %b) nounwind {5067; CSKY-LABEL: atomicrmw_sub_i64_seq_cst:5068; CSKY: # %bb.0:5069; CSKY-NEXT: subi16 sp, sp, 45070; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill5071; CSKY-NEXT: movi16 a3, 55072; CSKY-NEXT: jsri32 [.LCPI179_0]5073; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload5074; CSKY-NEXT: addi16 sp, sp, 45075; CSKY-NEXT: rts165076; CSKY-NEXT: .p2align 15077; CSKY-NEXT: # %bb.1:5078; CSKY-NEXT: .p2align 25079; CSKY-NEXT: .LCPI179_0:5080; CSKY-NEXT: .long __atomic_fetch_sub_85081 %1 = atomicrmw sub ptr %a, i64 %b seq_cst5082 ret i64 %15083}5084 5085define i64 @atomicrmw_and_i64_monotonic(ptr %a, i64 %b) nounwind {5086; CSKY-LABEL: atomicrmw_and_i64_monotonic:5087; CSKY: # %bb.0:5088; CSKY-NEXT: subi16 sp, sp, 45089; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill5090; CSKY-NEXT: movi16 a3, 05091; CSKY-NEXT: jsri32 [.LCPI180_0]5092; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload5093; CSKY-NEXT: addi16 sp, sp, 45094; CSKY-NEXT: rts165095; CSKY-NEXT: .p2align 15096; CSKY-NEXT: # %bb.1:5097; CSKY-NEXT: .p2align 25098; CSKY-NEXT: .LCPI180_0:5099; CSKY-NEXT: .long __atomic_fetch_and_85100 %1 = atomicrmw and ptr %a, i64 %b monotonic5101 ret i64 %15102}5103 5104define i64 @atomicrmw_and_i64_acquire(ptr %a, i64 %b) nounwind {5105; CSKY-LABEL: atomicrmw_and_i64_acquire:5106; CSKY: # %bb.0:5107; CSKY-NEXT: subi16 sp, sp, 45108; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill5109; CSKY-NEXT: movi16 a3, 25110; CSKY-NEXT: jsri32 [.LCPI181_0]5111; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload5112; CSKY-NEXT: addi16 sp, sp, 45113; CSKY-NEXT: rts165114; CSKY-NEXT: .p2align 15115; CSKY-NEXT: # %bb.1:5116; CSKY-NEXT: .p2align 25117; CSKY-NEXT: .LCPI181_0:5118; CSKY-NEXT: .long __atomic_fetch_and_85119 %1 = atomicrmw and ptr %a, i64 %b acquire5120 ret i64 %15121}5122 5123define i64 @atomicrmw_and_i64_release(ptr %a, i64 %b) nounwind {5124; CSKY-LABEL: atomicrmw_and_i64_release:5125; CSKY: # %bb.0:5126; CSKY-NEXT: subi16 sp, sp, 45127; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill5128; CSKY-NEXT: movi16 a3, 35129; CSKY-NEXT: jsri32 [.LCPI182_0]5130; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload5131; CSKY-NEXT: addi16 sp, sp, 45132; CSKY-NEXT: rts165133; CSKY-NEXT: .p2align 15134; CSKY-NEXT: # %bb.1:5135; CSKY-NEXT: .p2align 25136; CSKY-NEXT: .LCPI182_0:5137; CSKY-NEXT: .long __atomic_fetch_and_85138 %1 = atomicrmw and ptr %a, i64 %b release5139 ret i64 %15140}5141 5142define i64 @atomicrmw_and_i64_acq_rel(ptr %a, i64 %b) nounwind {5143; CSKY-LABEL: atomicrmw_and_i64_acq_rel:5144; CSKY: # %bb.0:5145; CSKY-NEXT: subi16 sp, sp, 45146; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill5147; CSKY-NEXT: movi16 a3, 45148; CSKY-NEXT: jsri32 [.LCPI183_0]5149; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload5150; CSKY-NEXT: addi16 sp, sp, 45151; CSKY-NEXT: rts165152; CSKY-NEXT: .p2align 15153; CSKY-NEXT: # %bb.1:5154; CSKY-NEXT: .p2align 25155; CSKY-NEXT: .LCPI183_0:5156; CSKY-NEXT: .long __atomic_fetch_and_85157 %1 = atomicrmw and ptr %a, i64 %b acq_rel5158 ret i64 %15159}5160 5161define i64 @atomicrmw_and_i64_seq_cst(ptr %a, i64 %b) nounwind {5162; CSKY-LABEL: atomicrmw_and_i64_seq_cst:5163; CSKY: # %bb.0:5164; CSKY-NEXT: subi16 sp, sp, 45165; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill5166; CSKY-NEXT: movi16 a3, 55167; CSKY-NEXT: jsri32 [.LCPI184_0]5168; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload5169; CSKY-NEXT: addi16 sp, sp, 45170; CSKY-NEXT: rts165171; CSKY-NEXT: .p2align 15172; CSKY-NEXT: # %bb.1:5173; CSKY-NEXT: .p2align 25174; CSKY-NEXT: .LCPI184_0:5175; CSKY-NEXT: .long __atomic_fetch_and_85176 %1 = atomicrmw and ptr %a, i64 %b seq_cst5177 ret i64 %15178}5179 5180define i64 @atomicrmw_nand_i64_monotonic(ptr %a, i64 %b) nounwind {5181; CSKY-LABEL: atomicrmw_nand_i64_monotonic:5182; CSKY: # %bb.0:5183; CSKY-NEXT: subi16 sp, sp, 45184; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill5185; CSKY-NEXT: movi16 a3, 05186; CSKY-NEXT: jsri32 [.LCPI185_0]5187; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload5188; CSKY-NEXT: addi16 sp, sp, 45189; CSKY-NEXT: rts165190; CSKY-NEXT: .p2align 15191; CSKY-NEXT: # %bb.1:5192; CSKY-NEXT: .p2align 25193; CSKY-NEXT: .LCPI185_0:5194; CSKY-NEXT: .long __atomic_fetch_nand_85195 %1 = atomicrmw nand ptr %a, i64 %b monotonic5196 ret i64 %15197}5198 5199define i64 @atomicrmw_nand_i64_acquire(ptr %a, i64 %b) nounwind {5200; CSKY-LABEL: atomicrmw_nand_i64_acquire:5201; CSKY: # %bb.0:5202; CSKY-NEXT: subi16 sp, sp, 45203; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill5204; CSKY-NEXT: movi16 a3, 25205; CSKY-NEXT: jsri32 [.LCPI186_0]5206; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload5207; CSKY-NEXT: addi16 sp, sp, 45208; CSKY-NEXT: rts165209; CSKY-NEXT: .p2align 15210; CSKY-NEXT: # %bb.1:5211; CSKY-NEXT: .p2align 25212; CSKY-NEXT: .LCPI186_0:5213; CSKY-NEXT: .long __atomic_fetch_nand_85214 %1 = atomicrmw nand ptr %a, i64 %b acquire5215 ret i64 %15216}5217 5218define i64 @atomicrmw_nand_i64_release(ptr %a, i64 %b) nounwind {5219; CSKY-LABEL: atomicrmw_nand_i64_release:5220; CSKY: # %bb.0:5221; CSKY-NEXT: subi16 sp, sp, 45222; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill5223; CSKY-NEXT: movi16 a3, 35224; CSKY-NEXT: jsri32 [.LCPI187_0]5225; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload5226; CSKY-NEXT: addi16 sp, sp, 45227; CSKY-NEXT: rts165228; CSKY-NEXT: .p2align 15229; CSKY-NEXT: # %bb.1:5230; CSKY-NEXT: .p2align 25231; CSKY-NEXT: .LCPI187_0:5232; CSKY-NEXT: .long __atomic_fetch_nand_85233 %1 = atomicrmw nand ptr %a, i64 %b release5234 ret i64 %15235}5236 5237define i64 @atomicrmw_nand_i64_acq_rel(ptr %a, i64 %b) nounwind {5238; CSKY-LABEL: atomicrmw_nand_i64_acq_rel:5239; CSKY: # %bb.0:5240; CSKY-NEXT: subi16 sp, sp, 45241; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill5242; CSKY-NEXT: movi16 a3, 45243; CSKY-NEXT: jsri32 [.LCPI188_0]5244; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload5245; CSKY-NEXT: addi16 sp, sp, 45246; CSKY-NEXT: rts165247; CSKY-NEXT: .p2align 15248; CSKY-NEXT: # %bb.1:5249; CSKY-NEXT: .p2align 25250; CSKY-NEXT: .LCPI188_0:5251; CSKY-NEXT: .long __atomic_fetch_nand_85252 %1 = atomicrmw nand ptr %a, i64 %b acq_rel5253 ret i64 %15254}5255 5256define i64 @atomicrmw_nand_i64_seq_cst(ptr %a, i64 %b) nounwind {5257; CSKY-LABEL: atomicrmw_nand_i64_seq_cst:5258; CSKY: # %bb.0:5259; CSKY-NEXT: subi16 sp, sp, 45260; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill5261; CSKY-NEXT: movi16 a3, 55262; CSKY-NEXT: jsri32 [.LCPI189_0]5263; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload5264; CSKY-NEXT: addi16 sp, sp, 45265; CSKY-NEXT: rts165266; CSKY-NEXT: .p2align 15267; CSKY-NEXT: # %bb.1:5268; CSKY-NEXT: .p2align 25269; CSKY-NEXT: .LCPI189_0:5270; CSKY-NEXT: .long __atomic_fetch_nand_85271 %1 = atomicrmw nand ptr %a, i64 %b seq_cst5272 ret i64 %15273}5274 5275define i64 @atomicrmw_or_i64_monotonic(ptr %a, i64 %b) nounwind {5276; CSKY-LABEL: atomicrmw_or_i64_monotonic:5277; CSKY: # %bb.0:5278; CSKY-NEXT: subi16 sp, sp, 45279; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill5280; CSKY-NEXT: movi16 a3, 05281; CSKY-NEXT: jsri32 [.LCPI190_0]5282; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload5283; CSKY-NEXT: addi16 sp, sp, 45284; CSKY-NEXT: rts165285; CSKY-NEXT: .p2align 15286; CSKY-NEXT: # %bb.1:5287; CSKY-NEXT: .p2align 25288; CSKY-NEXT: .LCPI190_0:5289; CSKY-NEXT: .long __atomic_fetch_or_85290 %1 = atomicrmw or ptr %a, i64 %b monotonic5291 ret i64 %15292}5293 5294define i64 @atomicrmw_or_i64_acquire(ptr %a, i64 %b) nounwind {5295; CSKY-LABEL: atomicrmw_or_i64_acquire:5296; CSKY: # %bb.0:5297; CSKY-NEXT: subi16 sp, sp, 45298; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill5299; CSKY-NEXT: movi16 a3, 25300; CSKY-NEXT: jsri32 [.LCPI191_0]5301; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload5302; CSKY-NEXT: addi16 sp, sp, 45303; CSKY-NEXT: rts165304; CSKY-NEXT: .p2align 15305; CSKY-NEXT: # %bb.1:5306; CSKY-NEXT: .p2align 25307; CSKY-NEXT: .LCPI191_0:5308; CSKY-NEXT: .long __atomic_fetch_or_85309 %1 = atomicrmw or ptr %a, i64 %b acquire5310 ret i64 %15311}5312 5313define i64 @atomicrmw_or_i64_release(ptr %a, i64 %b) nounwind {5314; CSKY-LABEL: atomicrmw_or_i64_release:5315; CSKY: # %bb.0:5316; CSKY-NEXT: subi16 sp, sp, 45317; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill5318; CSKY-NEXT: movi16 a3, 35319; CSKY-NEXT: jsri32 [.LCPI192_0]5320; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload5321; CSKY-NEXT: addi16 sp, sp, 45322; CSKY-NEXT: rts165323; CSKY-NEXT: .p2align 15324; CSKY-NEXT: # %bb.1:5325; CSKY-NEXT: .p2align 25326; CSKY-NEXT: .LCPI192_0:5327; CSKY-NEXT: .long __atomic_fetch_or_85328 %1 = atomicrmw or ptr %a, i64 %b release5329 ret i64 %15330}5331 5332define i64 @atomicrmw_or_i64_acq_rel(ptr %a, i64 %b) nounwind {5333; CSKY-LABEL: atomicrmw_or_i64_acq_rel:5334; CSKY: # %bb.0:5335; CSKY-NEXT: subi16 sp, sp, 45336; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill5337; CSKY-NEXT: movi16 a3, 45338; CSKY-NEXT: jsri32 [.LCPI193_0]5339; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload5340; CSKY-NEXT: addi16 sp, sp, 45341; CSKY-NEXT: rts165342; CSKY-NEXT: .p2align 15343; CSKY-NEXT: # %bb.1:5344; CSKY-NEXT: .p2align 25345; CSKY-NEXT: .LCPI193_0:5346; CSKY-NEXT: .long __atomic_fetch_or_85347 %1 = atomicrmw or ptr %a, i64 %b acq_rel5348 ret i64 %15349}5350 5351define i64 @atomicrmw_or_i64_seq_cst(ptr %a, i64 %b) nounwind {5352; CSKY-LABEL: atomicrmw_or_i64_seq_cst:5353; CSKY: # %bb.0:5354; CSKY-NEXT: subi16 sp, sp, 45355; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill5356; CSKY-NEXT: movi16 a3, 55357; CSKY-NEXT: jsri32 [.LCPI194_0]5358; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload5359; CSKY-NEXT: addi16 sp, sp, 45360; CSKY-NEXT: rts165361; CSKY-NEXT: .p2align 15362; CSKY-NEXT: # %bb.1:5363; CSKY-NEXT: .p2align 25364; CSKY-NEXT: .LCPI194_0:5365; CSKY-NEXT: .long __atomic_fetch_or_85366 %1 = atomicrmw or ptr %a, i64 %b seq_cst5367 ret i64 %15368}5369 5370define i64 @atomicrmw_xor_i64_monotonic(ptr %a, i64 %b) nounwind {5371; CSKY-LABEL: atomicrmw_xor_i64_monotonic:5372; CSKY: # %bb.0:5373; CSKY-NEXT: subi16 sp, sp, 45374; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill5375; CSKY-NEXT: movi16 a3, 05376; CSKY-NEXT: jsri32 [.LCPI195_0]5377; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload5378; CSKY-NEXT: addi16 sp, sp, 45379; CSKY-NEXT: rts165380; CSKY-NEXT: .p2align 15381; CSKY-NEXT: # %bb.1:5382; CSKY-NEXT: .p2align 25383; CSKY-NEXT: .LCPI195_0:5384; CSKY-NEXT: .long __atomic_fetch_xor_85385 %1 = atomicrmw xor ptr %a, i64 %b monotonic5386 ret i64 %15387}5388 5389define i64 @atomicrmw_xor_i64_acquire(ptr %a, i64 %b) nounwind {5390; CSKY-LABEL: atomicrmw_xor_i64_acquire:5391; CSKY: # %bb.0:5392; CSKY-NEXT: subi16 sp, sp, 45393; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill5394; CSKY-NEXT: movi16 a3, 25395; CSKY-NEXT: jsri32 [.LCPI196_0]5396; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload5397; CSKY-NEXT: addi16 sp, sp, 45398; CSKY-NEXT: rts165399; CSKY-NEXT: .p2align 15400; CSKY-NEXT: # %bb.1:5401; CSKY-NEXT: .p2align 25402; CSKY-NEXT: .LCPI196_0:5403; CSKY-NEXT: .long __atomic_fetch_xor_85404 %1 = atomicrmw xor ptr %a, i64 %b acquire5405 ret i64 %15406}5407 5408define i64 @atomicrmw_xor_i64_release(ptr %a, i64 %b) nounwind {5409; CSKY-LABEL: atomicrmw_xor_i64_release:5410; CSKY: # %bb.0:5411; CSKY-NEXT: subi16 sp, sp, 45412; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill5413; CSKY-NEXT: movi16 a3, 35414; CSKY-NEXT: jsri32 [.LCPI197_0]5415; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload5416; CSKY-NEXT: addi16 sp, sp, 45417; CSKY-NEXT: rts165418; CSKY-NEXT: .p2align 15419; CSKY-NEXT: # %bb.1:5420; CSKY-NEXT: .p2align 25421; CSKY-NEXT: .LCPI197_0:5422; CSKY-NEXT: .long __atomic_fetch_xor_85423 %1 = atomicrmw xor ptr %a, i64 %b release5424 ret i64 %15425}5426 5427define i64 @atomicrmw_xor_i64_acq_rel(ptr %a, i64 %b) nounwind {5428; CSKY-LABEL: atomicrmw_xor_i64_acq_rel:5429; CSKY: # %bb.0:5430; CSKY-NEXT: subi16 sp, sp, 45431; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill5432; CSKY-NEXT: movi16 a3, 45433; CSKY-NEXT: jsri32 [.LCPI198_0]5434; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload5435; CSKY-NEXT: addi16 sp, sp, 45436; CSKY-NEXT: rts165437; CSKY-NEXT: .p2align 15438; CSKY-NEXT: # %bb.1:5439; CSKY-NEXT: .p2align 25440; CSKY-NEXT: .LCPI198_0:5441; CSKY-NEXT: .long __atomic_fetch_xor_85442 %1 = atomicrmw xor ptr %a, i64 %b acq_rel5443 ret i64 %15444}5445 5446define i64 @atomicrmw_xor_i64_seq_cst(ptr %a, i64 %b) nounwind {5447; CSKY-LABEL: atomicrmw_xor_i64_seq_cst:5448; CSKY: # %bb.0:5449; CSKY-NEXT: subi16 sp, sp, 45450; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill5451; CSKY-NEXT: movi16 a3, 55452; CSKY-NEXT: jsri32 [.LCPI199_0]5453; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload5454; CSKY-NEXT: addi16 sp, sp, 45455; CSKY-NEXT: rts165456; CSKY-NEXT: .p2align 15457; CSKY-NEXT: # %bb.1:5458; CSKY-NEXT: .p2align 25459; CSKY-NEXT: .LCPI199_0:5460; CSKY-NEXT: .long __atomic_fetch_xor_85461 %1 = atomicrmw xor ptr %a, i64 %b seq_cst5462 ret i64 %15463}5464 5465define i64 @atomicrmw_max_i64_monotonic(ptr %a, i64 %b) nounwind {5466; CSKY-LABEL: atomicrmw_max_i64_monotonic:5467; CSKY: # %bb.0:5468; CSKY-NEXT: subi16 sp, sp, 205469; CSKY-NEXT: st16.w l3, (sp, 16) # 4-byte Folded Spill5470; CSKY-NEXT: st16.w l2, (sp, 12) # 4-byte Folded Spill5471; CSKY-NEXT: st16.w l1, (sp, 8) # 4-byte Folded Spill5472; CSKY-NEXT: st16.w l0, (sp, 4) # 4-byte Folded Spill5473; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill5474; CSKY-NEXT: subi16 sp, sp, 285475; CSKY-NEXT: mov16 l0, a25476; CSKY-NEXT: mov16 l1, a15477; CSKY-NEXT: mov16 l2, a05478; CSKY-NEXT: ld16.w a1, (a0, 4)5479; CSKY-NEXT: ld16.w a0, (a0, 0)5480; CSKY-NEXT: movi16 l3, 05481; CSKY-NEXT: .LBB200_1: # %atomicrmw.start5482; CSKY-NEXT: # =>This Inner Loop Header: Depth=15483; CSKY-NEXT: cmplt16 l0, a15484; CSKY-NEXT: mvc32 a25485; CSKY-NEXT: st16.w a2, (sp, 12)5486; CSKY-NEXT: cmpne16 a1, l05487; CSKY-NEXT: mvc32 a25488; CSKY-NEXT: st16.w a2, (sp, 16)5489; CSKY-NEXT: cmphs16 l1, a05490; CSKY-NEXT: mvcv16 a25491; CSKY-NEXT: ld16.w a3, (sp, 12)5492; CSKY-NEXT: btsti16 a3, 05493; CSKY-NEXT: mvc32 a35494; CSKY-NEXT: ld32.w t0, (sp, 16)5495; CSKY-NEXT: btsti32 t0, 05496; CSKY-NEXT: movf32 a3, a25497; CSKY-NEXT: btsti16 a3, 05498; CSKY-NEXT: mov16 a2, l15499; CSKY-NEXT: movt32 a2, a05500; CSKY-NEXT: mov16 a3, l05501; CSKY-NEXT: movt32 a3, a15502; CSKY-NEXT: st16.w a0, (sp, 20)5503; CSKY-NEXT: st16.w a1, (sp, 24)5504; CSKY-NEXT: st16.w l3, (sp, 4)5505; CSKY-NEXT: st16.w l3, (sp, 0)5506; CSKY-NEXT: mov16 a0, l25507; CSKY-NEXT: addi16 a1, sp, 205508; CSKY-NEXT: jsri32 [.LCPI200_0]5509; CSKY-NEXT: mov16 a2, a05510; CSKY-NEXT: ld16.w a1, (sp, 24)5511; CSKY-NEXT: ld16.w a0, (sp, 20)5512; CSKY-NEXT: bez32 a2, .LBB200_15513; CSKY-NEXT: # %bb.2: # %atomicrmw.end5514; CSKY-NEXT: addi16 sp, sp, 285515; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload5516; CSKY-NEXT: ld16.w l0, (sp, 4) # 4-byte Folded Reload5517; CSKY-NEXT: ld16.w l1, (sp, 8) # 4-byte Folded Reload5518; CSKY-NEXT: ld16.w l2, (sp, 12) # 4-byte Folded Reload5519; CSKY-NEXT: ld16.w l3, (sp, 16) # 4-byte Folded Reload5520; CSKY-NEXT: addi16 sp, sp, 205521; CSKY-NEXT: rts165522; CSKY-NEXT: .p2align 15523; CSKY-NEXT: # %bb.3:5524; CSKY-NEXT: .p2align 25525; CSKY-NEXT: .LCPI200_0:5526; CSKY-NEXT: .long __atomic_compare_exchange_85527 %1 = atomicrmw max ptr %a, i64 %b monotonic5528 ret i64 %15529}5530 5531define i64 @atomicrmw_max_i64_acquire(ptr %a, i64 %b) nounwind {5532; CSKY-LABEL: atomicrmw_max_i64_acquire:5533; CSKY: # %bb.0:5534; CSKY-NEXT: subi16 sp, sp, 205535; CSKY-NEXT: st16.w l3, (sp, 16) # 4-byte Folded Spill5536; CSKY-NEXT: st16.w l2, (sp, 12) # 4-byte Folded Spill5537; CSKY-NEXT: st16.w l1, (sp, 8) # 4-byte Folded Spill5538; CSKY-NEXT: st16.w l0, (sp, 4) # 4-byte Folded Spill5539; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill5540; CSKY-NEXT: subi16 sp, sp, 285541; CSKY-NEXT: mov16 l0, a25542; CSKY-NEXT: mov16 l1, a15543; CSKY-NEXT: mov16 l2, a05544; CSKY-NEXT: ld16.w a1, (a0, 4)5545; CSKY-NEXT: ld16.w a0, (a0, 0)5546; CSKY-NEXT: movi16 l3, 25547; CSKY-NEXT: .LBB201_1: # %atomicrmw.start5548; CSKY-NEXT: # =>This Inner Loop Header: Depth=15549; CSKY-NEXT: cmplt16 l0, a15550; CSKY-NEXT: mvc32 a25551; CSKY-NEXT: st16.w a2, (sp, 12)5552; CSKY-NEXT: cmpne16 a1, l05553; CSKY-NEXT: mvc32 a25554; CSKY-NEXT: st16.w a2, (sp, 16)5555; CSKY-NEXT: cmphs16 l1, a05556; CSKY-NEXT: mvcv16 a25557; CSKY-NEXT: ld16.w a3, (sp, 12)5558; CSKY-NEXT: btsti16 a3, 05559; CSKY-NEXT: mvc32 a35560; CSKY-NEXT: ld32.w t0, (sp, 16)5561; CSKY-NEXT: btsti32 t0, 05562; CSKY-NEXT: movf32 a3, a25563; CSKY-NEXT: btsti16 a3, 05564; CSKY-NEXT: mov16 a2, l15565; CSKY-NEXT: movt32 a2, a05566; CSKY-NEXT: mov16 a3, l05567; CSKY-NEXT: movt32 a3, a15568; CSKY-NEXT: st16.w a0, (sp, 20)5569; CSKY-NEXT: st16.w a1, (sp, 24)5570; CSKY-NEXT: st16.w l3, (sp, 4)5571; CSKY-NEXT: st16.w l3, (sp, 0)5572; CSKY-NEXT: mov16 a0, l25573; CSKY-NEXT: addi16 a1, sp, 205574; CSKY-NEXT: jsri32 [.LCPI201_0]5575; CSKY-NEXT: mov16 a2, a05576; CSKY-NEXT: ld16.w a1, (sp, 24)5577; CSKY-NEXT: ld16.w a0, (sp, 20)5578; CSKY-NEXT: bez32 a2, .LBB201_15579; CSKY-NEXT: # %bb.2: # %atomicrmw.end5580; CSKY-NEXT: addi16 sp, sp, 285581; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload5582; CSKY-NEXT: ld16.w l0, (sp, 4) # 4-byte Folded Reload5583; CSKY-NEXT: ld16.w l1, (sp, 8) # 4-byte Folded Reload5584; CSKY-NEXT: ld16.w l2, (sp, 12) # 4-byte Folded Reload5585; CSKY-NEXT: ld16.w l3, (sp, 16) # 4-byte Folded Reload5586; CSKY-NEXT: addi16 sp, sp, 205587; CSKY-NEXT: rts165588; CSKY-NEXT: .p2align 15589; CSKY-NEXT: # %bb.3:5590; CSKY-NEXT: .p2align 25591; CSKY-NEXT: .LCPI201_0:5592; CSKY-NEXT: .long __atomic_compare_exchange_85593 %1 = atomicrmw max ptr %a, i64 %b acquire5594 ret i64 %15595}5596 5597define i64 @atomicrmw_max_i64_release(ptr %a, i64 %b) nounwind {5598; CSKY-LABEL: atomicrmw_max_i64_release:5599; CSKY: # %bb.0:5600; CSKY-NEXT: subi16 sp, sp, 245601; CSKY-NEXT: st16.w l3, (sp, 20) # 4-byte Folded Spill5602; CSKY-NEXT: st16.w l2, (sp, 16) # 4-byte Folded Spill5603; CSKY-NEXT: st16.w l1, (sp, 12) # 4-byte Folded Spill5604; CSKY-NEXT: st16.w l0, (sp, 8) # 4-byte Folded Spill5605; CSKY-NEXT: st32.w lr, (sp, 4) # 4-byte Folded Spill5606; CSKY-NEXT: st32.w l4, (sp, 0) # 4-byte Folded Spill5607; CSKY-NEXT: subi16 sp, sp, 285608; CSKY-NEXT: mov16 l0, a25609; CSKY-NEXT: mov16 l1, a15610; CSKY-NEXT: mov16 l2, a05611; CSKY-NEXT: ld16.w a1, (a0, 4)5612; CSKY-NEXT: ld16.w a0, (a0, 0)5613; CSKY-NEXT: movi16 l3, 05614; CSKY-NEXT: movi32 l4, 35615; CSKY-NEXT: .LBB202_1: # %atomicrmw.start5616; CSKY-NEXT: # =>This Inner Loop Header: Depth=15617; CSKY-NEXT: cmplt16 l0, a15618; CSKY-NEXT: mvc32 a25619; CSKY-NEXT: st16.w a2, (sp, 12)5620; CSKY-NEXT: cmpne16 a1, l05621; CSKY-NEXT: mvc32 a25622; CSKY-NEXT: st16.w a2, (sp, 16)5623; CSKY-NEXT: cmphs16 l1, a05624; CSKY-NEXT: mvcv16 a25625; CSKY-NEXT: ld16.w a3, (sp, 12)5626; CSKY-NEXT: btsti16 a3, 05627; CSKY-NEXT: mvc32 a35628; CSKY-NEXT: ld32.w t0, (sp, 16)5629; CSKY-NEXT: btsti32 t0, 05630; CSKY-NEXT: movf32 a3, a25631; CSKY-NEXT: btsti16 a3, 05632; CSKY-NEXT: mov16 a2, l15633; CSKY-NEXT: movt32 a2, a05634; CSKY-NEXT: mov16 a3, l05635; CSKY-NEXT: movt32 a3, a15636; CSKY-NEXT: st16.w a0, (sp, 20)5637; CSKY-NEXT: st16.w a1, (sp, 24)5638; CSKY-NEXT: st16.w l3, (sp, 4)5639; CSKY-NEXT: st32.w l4, (sp, 0)5640; CSKY-NEXT: mov16 a0, l25641; CSKY-NEXT: addi16 a1, sp, 205642; CSKY-NEXT: jsri32 [.LCPI202_0]5643; CSKY-NEXT: mov16 a2, a05644; CSKY-NEXT: ld16.w a1, (sp, 24)5645; CSKY-NEXT: ld16.w a0, (sp, 20)5646; CSKY-NEXT: bez32 a2, .LBB202_15647; CSKY-NEXT: # %bb.2: # %atomicrmw.end5648; CSKY-NEXT: addi16 sp, sp, 285649; CSKY-NEXT: ld32.w l4, (sp, 0) # 4-byte Folded Reload5650; CSKY-NEXT: ld32.w lr, (sp, 4) # 4-byte Folded Reload5651; CSKY-NEXT: ld16.w l0, (sp, 8) # 4-byte Folded Reload5652; CSKY-NEXT: ld16.w l1, (sp, 12) # 4-byte Folded Reload5653; CSKY-NEXT: ld16.w l2, (sp, 16) # 4-byte Folded Reload5654; CSKY-NEXT: ld16.w l3, (sp, 20) # 4-byte Folded Reload5655; CSKY-NEXT: addi16 sp, sp, 245656; CSKY-NEXT: rts165657; CSKY-NEXT: .p2align 15658; CSKY-NEXT: # %bb.3:5659; CSKY-NEXT: .p2align 25660; CSKY-NEXT: .LCPI202_0:5661; CSKY-NEXT: .long __atomic_compare_exchange_85662 %1 = atomicrmw max ptr %a, i64 %b release5663 ret i64 %15664}5665 5666define i64 @atomicrmw_max_i64_acq_rel(ptr %a, i64 %b) nounwind {5667; CSKY-LABEL: atomicrmw_max_i64_acq_rel:5668; CSKY: # %bb.0:5669; CSKY-NEXT: subi16 sp, sp, 245670; CSKY-NEXT: st16.w l3, (sp, 20) # 4-byte Folded Spill5671; CSKY-NEXT: st16.w l2, (sp, 16) # 4-byte Folded Spill5672; CSKY-NEXT: st16.w l1, (sp, 12) # 4-byte Folded Spill5673; CSKY-NEXT: st16.w l0, (sp, 8) # 4-byte Folded Spill5674; CSKY-NEXT: st32.w lr, (sp, 4) # 4-byte Folded Spill5675; CSKY-NEXT: st32.w l4, (sp, 0) # 4-byte Folded Spill5676; CSKY-NEXT: subi16 sp, sp, 285677; CSKY-NEXT: mov16 l0, a25678; CSKY-NEXT: mov16 l1, a15679; CSKY-NEXT: mov16 l2, a05680; CSKY-NEXT: ld16.w a1, (a0, 4)5681; CSKY-NEXT: ld16.w a0, (a0, 0)5682; CSKY-NEXT: movi16 l3, 25683; CSKY-NEXT: movi32 l4, 45684; CSKY-NEXT: .LBB203_1: # %atomicrmw.start5685; CSKY-NEXT: # =>This Inner Loop Header: Depth=15686; CSKY-NEXT: cmplt16 l0, a15687; CSKY-NEXT: mvc32 a25688; CSKY-NEXT: st16.w a2, (sp, 12)5689; CSKY-NEXT: cmpne16 a1, l05690; CSKY-NEXT: mvc32 a25691; CSKY-NEXT: st16.w a2, (sp, 16)5692; CSKY-NEXT: cmphs16 l1, a05693; CSKY-NEXT: mvcv16 a25694; CSKY-NEXT: ld16.w a3, (sp, 12)5695; CSKY-NEXT: btsti16 a3, 05696; CSKY-NEXT: mvc32 a35697; CSKY-NEXT: ld32.w t0, (sp, 16)5698; CSKY-NEXT: btsti32 t0, 05699; CSKY-NEXT: movf32 a3, a25700; CSKY-NEXT: btsti16 a3, 05701; CSKY-NEXT: mov16 a2, l15702; CSKY-NEXT: movt32 a2, a05703; CSKY-NEXT: mov16 a3, l05704; CSKY-NEXT: movt32 a3, a15705; CSKY-NEXT: st16.w a0, (sp, 20)5706; CSKY-NEXT: st16.w a1, (sp, 24)5707; CSKY-NEXT: st16.w l3, (sp, 4)5708; CSKY-NEXT: st32.w l4, (sp, 0)5709; CSKY-NEXT: mov16 a0, l25710; CSKY-NEXT: addi16 a1, sp, 205711; CSKY-NEXT: jsri32 [.LCPI203_0]5712; CSKY-NEXT: mov16 a2, a05713; CSKY-NEXT: ld16.w a1, (sp, 24)5714; CSKY-NEXT: ld16.w a0, (sp, 20)5715; CSKY-NEXT: bez32 a2, .LBB203_15716; CSKY-NEXT: # %bb.2: # %atomicrmw.end5717; CSKY-NEXT: addi16 sp, sp, 285718; CSKY-NEXT: ld32.w l4, (sp, 0) # 4-byte Folded Reload5719; CSKY-NEXT: ld32.w lr, (sp, 4) # 4-byte Folded Reload5720; CSKY-NEXT: ld16.w l0, (sp, 8) # 4-byte Folded Reload5721; CSKY-NEXT: ld16.w l1, (sp, 12) # 4-byte Folded Reload5722; CSKY-NEXT: ld16.w l2, (sp, 16) # 4-byte Folded Reload5723; CSKY-NEXT: ld16.w l3, (sp, 20) # 4-byte Folded Reload5724; CSKY-NEXT: addi16 sp, sp, 245725; CSKY-NEXT: rts165726; CSKY-NEXT: .p2align 15727; CSKY-NEXT: # %bb.3:5728; CSKY-NEXT: .p2align 25729; CSKY-NEXT: .LCPI203_0:5730; CSKY-NEXT: .long __atomic_compare_exchange_85731 %1 = atomicrmw max ptr %a, i64 %b acq_rel5732 ret i64 %15733}5734 5735define i64 @atomicrmw_max_i64_seq_cst(ptr %a, i64 %b) nounwind {5736; CSKY-LABEL: atomicrmw_max_i64_seq_cst:5737; CSKY: # %bb.0:5738; CSKY-NEXT: subi16 sp, sp, 205739; CSKY-NEXT: st16.w l3, (sp, 16) # 4-byte Folded Spill5740; CSKY-NEXT: st16.w l2, (sp, 12) # 4-byte Folded Spill5741; CSKY-NEXT: st16.w l1, (sp, 8) # 4-byte Folded Spill5742; CSKY-NEXT: st16.w l0, (sp, 4) # 4-byte Folded Spill5743; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill5744; CSKY-NEXT: subi16 sp, sp, 285745; CSKY-NEXT: mov16 l0, a25746; CSKY-NEXT: mov16 l1, a15747; CSKY-NEXT: mov16 l2, a05748; CSKY-NEXT: ld16.w a1, (a0, 4)5749; CSKY-NEXT: ld16.w a0, (a0, 0)5750; CSKY-NEXT: movi16 l3, 55751; CSKY-NEXT: .LBB204_1: # %atomicrmw.start5752; CSKY-NEXT: # =>This Inner Loop Header: Depth=15753; CSKY-NEXT: cmplt16 l0, a15754; CSKY-NEXT: mvc32 a25755; CSKY-NEXT: st16.w a2, (sp, 12)5756; CSKY-NEXT: cmpne16 a1, l05757; CSKY-NEXT: mvc32 a25758; CSKY-NEXT: st16.w a2, (sp, 16)5759; CSKY-NEXT: cmphs16 l1, a05760; CSKY-NEXT: mvcv16 a25761; CSKY-NEXT: ld16.w a3, (sp, 12)5762; CSKY-NEXT: btsti16 a3, 05763; CSKY-NEXT: mvc32 a35764; CSKY-NEXT: ld32.w t0, (sp, 16)5765; CSKY-NEXT: btsti32 t0, 05766; CSKY-NEXT: movf32 a3, a25767; CSKY-NEXT: btsti16 a3, 05768; CSKY-NEXT: mov16 a2, l15769; CSKY-NEXT: movt32 a2, a05770; CSKY-NEXT: mov16 a3, l05771; CSKY-NEXT: movt32 a3, a15772; CSKY-NEXT: st16.w a0, (sp, 20)5773; CSKY-NEXT: st16.w a1, (sp, 24)5774; CSKY-NEXT: st16.w l3, (sp, 4)5775; CSKY-NEXT: st16.w l3, (sp, 0)5776; CSKY-NEXT: mov16 a0, l25777; CSKY-NEXT: addi16 a1, sp, 205778; CSKY-NEXT: jsri32 [.LCPI204_0]5779; CSKY-NEXT: mov16 a2, a05780; CSKY-NEXT: ld16.w a1, (sp, 24)5781; CSKY-NEXT: ld16.w a0, (sp, 20)5782; CSKY-NEXT: bez32 a2, .LBB204_15783; CSKY-NEXT: # %bb.2: # %atomicrmw.end5784; CSKY-NEXT: addi16 sp, sp, 285785; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload5786; CSKY-NEXT: ld16.w l0, (sp, 4) # 4-byte Folded Reload5787; CSKY-NEXT: ld16.w l1, (sp, 8) # 4-byte Folded Reload5788; CSKY-NEXT: ld16.w l2, (sp, 12) # 4-byte Folded Reload5789; CSKY-NEXT: ld16.w l3, (sp, 16) # 4-byte Folded Reload5790; CSKY-NEXT: addi16 sp, sp, 205791; CSKY-NEXT: rts165792; CSKY-NEXT: .p2align 15793; CSKY-NEXT: # %bb.3:5794; CSKY-NEXT: .p2align 25795; CSKY-NEXT: .LCPI204_0:5796; CSKY-NEXT: .long __atomic_compare_exchange_85797 %1 = atomicrmw max ptr %a, i64 %b seq_cst5798 ret i64 %15799}5800 5801define i64 @atomicrmw_min_i64_monotonic(ptr %a, i64 %b) nounwind {5802; CSKY-LABEL: atomicrmw_min_i64_monotonic:5803; CSKY: # %bb.0:5804; CSKY-NEXT: subi16 sp, sp, 205805; CSKY-NEXT: st16.w l3, (sp, 16) # 4-byte Folded Spill5806; CSKY-NEXT: st16.w l2, (sp, 12) # 4-byte Folded Spill5807; CSKY-NEXT: st16.w l1, (sp, 8) # 4-byte Folded Spill5808; CSKY-NEXT: st16.w l0, (sp, 4) # 4-byte Folded Spill5809; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill5810; CSKY-NEXT: subi16 sp, sp, 285811; CSKY-NEXT: mov16 l0, a25812; CSKY-NEXT: mov16 l1, a15813; CSKY-NEXT: mov16 l2, a05814; CSKY-NEXT: ld16.w a1, (a0, 4)5815; CSKY-NEXT: ld16.w a0, (a0, 0)5816; CSKY-NEXT: movi16 l3, 05817; CSKY-NEXT: .LBB205_1: # %atomicrmw.start5818; CSKY-NEXT: # =>This Inner Loop Header: Depth=15819; CSKY-NEXT: cmphs16 l1, a05820; CSKY-NEXT: mvc32 a25821; CSKY-NEXT: st16.w a2, (sp, 12)5822; CSKY-NEXT: cmpne16 a1, l05823; CSKY-NEXT: mvc32 a25824; CSKY-NEXT: st16.w a2, (sp, 16)5825; CSKY-NEXT: cmplt16 l0, a15826; CSKY-NEXT: mvcv16 a25827; CSKY-NEXT: ld16.w a3, (sp, 12)5828; CSKY-NEXT: btsti16 a3, 05829; CSKY-NEXT: mvc32 a35830; CSKY-NEXT: ld32.w t0, (sp, 16)5831; CSKY-NEXT: btsti32 t0, 05832; CSKY-NEXT: movf32 a2, a35833; CSKY-NEXT: btsti16 a2, 05834; CSKY-NEXT: mov16 a2, l15835; CSKY-NEXT: movt32 a2, a05836; CSKY-NEXT: mov16 a3, l05837; CSKY-NEXT: movt32 a3, a15838; CSKY-NEXT: st16.w a0, (sp, 20)5839; CSKY-NEXT: st16.w a1, (sp, 24)5840; CSKY-NEXT: st16.w l3, (sp, 4)5841; CSKY-NEXT: st16.w l3, (sp, 0)5842; CSKY-NEXT: mov16 a0, l25843; CSKY-NEXT: addi16 a1, sp, 205844; CSKY-NEXT: jsri32 [.LCPI205_0]5845; CSKY-NEXT: mov16 a2, a05846; CSKY-NEXT: ld16.w a1, (sp, 24)5847; CSKY-NEXT: ld16.w a0, (sp, 20)5848; CSKY-NEXT: bez32 a2, .LBB205_15849; CSKY-NEXT: # %bb.2: # %atomicrmw.end5850; CSKY-NEXT: addi16 sp, sp, 285851; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload5852; CSKY-NEXT: ld16.w l0, (sp, 4) # 4-byte Folded Reload5853; CSKY-NEXT: ld16.w l1, (sp, 8) # 4-byte Folded Reload5854; CSKY-NEXT: ld16.w l2, (sp, 12) # 4-byte Folded Reload5855; CSKY-NEXT: ld16.w l3, (sp, 16) # 4-byte Folded Reload5856; CSKY-NEXT: addi16 sp, sp, 205857; CSKY-NEXT: rts165858; CSKY-NEXT: .p2align 15859; CSKY-NEXT: # %bb.3:5860; CSKY-NEXT: .p2align 25861; CSKY-NEXT: .LCPI205_0:5862; CSKY-NEXT: .long __atomic_compare_exchange_85863 %1 = atomicrmw min ptr %a, i64 %b monotonic5864 ret i64 %15865}5866 5867define i64 @atomicrmw_min_i64_acquire(ptr %a, i64 %b) nounwind {5868; CSKY-LABEL: atomicrmw_min_i64_acquire:5869; CSKY: # %bb.0:5870; CSKY-NEXT: subi16 sp, sp, 205871; CSKY-NEXT: st16.w l3, (sp, 16) # 4-byte Folded Spill5872; CSKY-NEXT: st16.w l2, (sp, 12) # 4-byte Folded Spill5873; CSKY-NEXT: st16.w l1, (sp, 8) # 4-byte Folded Spill5874; CSKY-NEXT: st16.w l0, (sp, 4) # 4-byte Folded Spill5875; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill5876; CSKY-NEXT: subi16 sp, sp, 285877; CSKY-NEXT: mov16 l0, a25878; CSKY-NEXT: mov16 l1, a15879; CSKY-NEXT: mov16 l2, a05880; CSKY-NEXT: ld16.w a1, (a0, 4)5881; CSKY-NEXT: ld16.w a0, (a0, 0)5882; CSKY-NEXT: movi16 l3, 25883; CSKY-NEXT: .LBB206_1: # %atomicrmw.start5884; CSKY-NEXT: # =>This Inner Loop Header: Depth=15885; CSKY-NEXT: cmphs16 l1, a05886; CSKY-NEXT: mvc32 a25887; CSKY-NEXT: st16.w a2, (sp, 12)5888; CSKY-NEXT: cmpne16 a1, l05889; CSKY-NEXT: mvc32 a25890; CSKY-NEXT: st16.w a2, (sp, 16)5891; CSKY-NEXT: cmplt16 l0, a15892; CSKY-NEXT: mvcv16 a25893; CSKY-NEXT: ld16.w a3, (sp, 12)5894; CSKY-NEXT: btsti16 a3, 05895; CSKY-NEXT: mvc32 a35896; CSKY-NEXT: ld32.w t0, (sp, 16)5897; CSKY-NEXT: btsti32 t0, 05898; CSKY-NEXT: movf32 a2, a35899; CSKY-NEXT: btsti16 a2, 05900; CSKY-NEXT: mov16 a2, l15901; CSKY-NEXT: movt32 a2, a05902; CSKY-NEXT: mov16 a3, l05903; CSKY-NEXT: movt32 a3, a15904; CSKY-NEXT: st16.w a0, (sp, 20)5905; CSKY-NEXT: st16.w a1, (sp, 24)5906; CSKY-NEXT: st16.w l3, (sp, 4)5907; CSKY-NEXT: st16.w l3, (sp, 0)5908; CSKY-NEXT: mov16 a0, l25909; CSKY-NEXT: addi16 a1, sp, 205910; CSKY-NEXT: jsri32 [.LCPI206_0]5911; CSKY-NEXT: mov16 a2, a05912; CSKY-NEXT: ld16.w a1, (sp, 24)5913; CSKY-NEXT: ld16.w a0, (sp, 20)5914; CSKY-NEXT: bez32 a2, .LBB206_15915; CSKY-NEXT: # %bb.2: # %atomicrmw.end5916; CSKY-NEXT: addi16 sp, sp, 285917; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload5918; CSKY-NEXT: ld16.w l0, (sp, 4) # 4-byte Folded Reload5919; CSKY-NEXT: ld16.w l1, (sp, 8) # 4-byte Folded Reload5920; CSKY-NEXT: ld16.w l2, (sp, 12) # 4-byte Folded Reload5921; CSKY-NEXT: ld16.w l3, (sp, 16) # 4-byte Folded Reload5922; CSKY-NEXT: addi16 sp, sp, 205923; CSKY-NEXT: rts165924; CSKY-NEXT: .p2align 15925; CSKY-NEXT: # %bb.3:5926; CSKY-NEXT: .p2align 25927; CSKY-NEXT: .LCPI206_0:5928; CSKY-NEXT: .long __atomic_compare_exchange_85929 %1 = atomicrmw min ptr %a, i64 %b acquire5930 ret i64 %15931}5932 5933define i64 @atomicrmw_min_i64_release(ptr %a, i64 %b) nounwind {5934; CSKY-LABEL: atomicrmw_min_i64_release:5935; CSKY: # %bb.0:5936; CSKY-NEXT: subi16 sp, sp, 245937; CSKY-NEXT: st16.w l3, (sp, 20) # 4-byte Folded Spill5938; CSKY-NEXT: st16.w l2, (sp, 16) # 4-byte Folded Spill5939; CSKY-NEXT: st16.w l1, (sp, 12) # 4-byte Folded Spill5940; CSKY-NEXT: st16.w l0, (sp, 8) # 4-byte Folded Spill5941; CSKY-NEXT: st32.w lr, (sp, 4) # 4-byte Folded Spill5942; CSKY-NEXT: st32.w l4, (sp, 0) # 4-byte Folded Spill5943; CSKY-NEXT: subi16 sp, sp, 285944; CSKY-NEXT: mov16 l0, a25945; CSKY-NEXT: mov16 l1, a15946; CSKY-NEXT: mov16 l2, a05947; CSKY-NEXT: ld16.w a1, (a0, 4)5948; CSKY-NEXT: ld16.w a0, (a0, 0)5949; CSKY-NEXT: movi16 l3, 05950; CSKY-NEXT: movi32 l4, 35951; CSKY-NEXT: .LBB207_1: # %atomicrmw.start5952; CSKY-NEXT: # =>This Inner Loop Header: Depth=15953; CSKY-NEXT: cmphs16 l1, a05954; CSKY-NEXT: mvc32 a25955; CSKY-NEXT: st16.w a2, (sp, 12)5956; CSKY-NEXT: cmpne16 a1, l05957; CSKY-NEXT: mvc32 a25958; CSKY-NEXT: st16.w a2, (sp, 16)5959; CSKY-NEXT: cmplt16 l0, a15960; CSKY-NEXT: mvcv16 a25961; CSKY-NEXT: ld16.w a3, (sp, 12)5962; CSKY-NEXT: btsti16 a3, 05963; CSKY-NEXT: mvc32 a35964; CSKY-NEXT: ld32.w t0, (sp, 16)5965; CSKY-NEXT: btsti32 t0, 05966; CSKY-NEXT: movf32 a2, a35967; CSKY-NEXT: btsti16 a2, 05968; CSKY-NEXT: mov16 a2, l15969; CSKY-NEXT: movt32 a2, a05970; CSKY-NEXT: mov16 a3, l05971; CSKY-NEXT: movt32 a3, a15972; CSKY-NEXT: st16.w a0, (sp, 20)5973; CSKY-NEXT: st16.w a1, (sp, 24)5974; CSKY-NEXT: st16.w l3, (sp, 4)5975; CSKY-NEXT: st32.w l4, (sp, 0)5976; CSKY-NEXT: mov16 a0, l25977; CSKY-NEXT: addi16 a1, sp, 205978; CSKY-NEXT: jsri32 [.LCPI207_0]5979; CSKY-NEXT: mov16 a2, a05980; CSKY-NEXT: ld16.w a1, (sp, 24)5981; CSKY-NEXT: ld16.w a0, (sp, 20)5982; CSKY-NEXT: bez32 a2, .LBB207_15983; CSKY-NEXT: # %bb.2: # %atomicrmw.end5984; CSKY-NEXT: addi16 sp, sp, 285985; CSKY-NEXT: ld32.w l4, (sp, 0) # 4-byte Folded Reload5986; CSKY-NEXT: ld32.w lr, (sp, 4) # 4-byte Folded Reload5987; CSKY-NEXT: ld16.w l0, (sp, 8) # 4-byte Folded Reload5988; CSKY-NEXT: ld16.w l1, (sp, 12) # 4-byte Folded Reload5989; CSKY-NEXT: ld16.w l2, (sp, 16) # 4-byte Folded Reload5990; CSKY-NEXT: ld16.w l3, (sp, 20) # 4-byte Folded Reload5991; CSKY-NEXT: addi16 sp, sp, 245992; CSKY-NEXT: rts165993; CSKY-NEXT: .p2align 15994; CSKY-NEXT: # %bb.3:5995; CSKY-NEXT: .p2align 25996; CSKY-NEXT: .LCPI207_0:5997; CSKY-NEXT: .long __atomic_compare_exchange_85998 %1 = atomicrmw min ptr %a, i64 %b release5999 ret i64 %16000}6001 6002define i64 @atomicrmw_min_i64_acq_rel(ptr %a, i64 %b) nounwind {6003; CSKY-LABEL: atomicrmw_min_i64_acq_rel:6004; CSKY: # %bb.0:6005; CSKY-NEXT: subi16 sp, sp, 246006; CSKY-NEXT: st16.w l3, (sp, 20) # 4-byte Folded Spill6007; CSKY-NEXT: st16.w l2, (sp, 16) # 4-byte Folded Spill6008; CSKY-NEXT: st16.w l1, (sp, 12) # 4-byte Folded Spill6009; CSKY-NEXT: st16.w l0, (sp, 8) # 4-byte Folded Spill6010; CSKY-NEXT: st32.w lr, (sp, 4) # 4-byte Folded Spill6011; CSKY-NEXT: st32.w l4, (sp, 0) # 4-byte Folded Spill6012; CSKY-NEXT: subi16 sp, sp, 286013; CSKY-NEXT: mov16 l0, a26014; CSKY-NEXT: mov16 l1, a16015; CSKY-NEXT: mov16 l2, a06016; CSKY-NEXT: ld16.w a1, (a0, 4)6017; CSKY-NEXT: ld16.w a0, (a0, 0)6018; CSKY-NEXT: movi16 l3, 26019; CSKY-NEXT: movi32 l4, 46020; CSKY-NEXT: .LBB208_1: # %atomicrmw.start6021; CSKY-NEXT: # =>This Inner Loop Header: Depth=16022; CSKY-NEXT: cmphs16 l1, a06023; CSKY-NEXT: mvc32 a26024; CSKY-NEXT: st16.w a2, (sp, 12)6025; CSKY-NEXT: cmpne16 a1, l06026; CSKY-NEXT: mvc32 a26027; CSKY-NEXT: st16.w a2, (sp, 16)6028; CSKY-NEXT: cmplt16 l0, a16029; CSKY-NEXT: mvcv16 a26030; CSKY-NEXT: ld16.w a3, (sp, 12)6031; CSKY-NEXT: btsti16 a3, 06032; CSKY-NEXT: mvc32 a36033; CSKY-NEXT: ld32.w t0, (sp, 16)6034; CSKY-NEXT: btsti32 t0, 06035; CSKY-NEXT: movf32 a2, a36036; CSKY-NEXT: btsti16 a2, 06037; CSKY-NEXT: mov16 a2, l16038; CSKY-NEXT: movt32 a2, a06039; CSKY-NEXT: mov16 a3, l06040; CSKY-NEXT: movt32 a3, a16041; CSKY-NEXT: st16.w a0, (sp, 20)6042; CSKY-NEXT: st16.w a1, (sp, 24)6043; CSKY-NEXT: st16.w l3, (sp, 4)6044; CSKY-NEXT: st32.w l4, (sp, 0)6045; CSKY-NEXT: mov16 a0, l26046; CSKY-NEXT: addi16 a1, sp, 206047; CSKY-NEXT: jsri32 [.LCPI208_0]6048; CSKY-NEXT: mov16 a2, a06049; CSKY-NEXT: ld16.w a1, (sp, 24)6050; CSKY-NEXT: ld16.w a0, (sp, 20)6051; CSKY-NEXT: bez32 a2, .LBB208_16052; CSKY-NEXT: # %bb.2: # %atomicrmw.end6053; CSKY-NEXT: addi16 sp, sp, 286054; CSKY-NEXT: ld32.w l4, (sp, 0) # 4-byte Folded Reload6055; CSKY-NEXT: ld32.w lr, (sp, 4) # 4-byte Folded Reload6056; CSKY-NEXT: ld16.w l0, (sp, 8) # 4-byte Folded Reload6057; CSKY-NEXT: ld16.w l1, (sp, 12) # 4-byte Folded Reload6058; CSKY-NEXT: ld16.w l2, (sp, 16) # 4-byte Folded Reload6059; CSKY-NEXT: ld16.w l3, (sp, 20) # 4-byte Folded Reload6060; CSKY-NEXT: addi16 sp, sp, 246061; CSKY-NEXT: rts166062; CSKY-NEXT: .p2align 16063; CSKY-NEXT: # %bb.3:6064; CSKY-NEXT: .p2align 26065; CSKY-NEXT: .LCPI208_0:6066; CSKY-NEXT: .long __atomic_compare_exchange_86067 %1 = atomicrmw min ptr %a, i64 %b acq_rel6068 ret i64 %16069}6070 6071define i64 @atomicrmw_min_i64_seq_cst(ptr %a, i64 %b) nounwind {6072; CSKY-LABEL: atomicrmw_min_i64_seq_cst:6073; CSKY: # %bb.0:6074; CSKY-NEXT: subi16 sp, sp, 206075; CSKY-NEXT: st16.w l3, (sp, 16) # 4-byte Folded Spill6076; CSKY-NEXT: st16.w l2, (sp, 12) # 4-byte Folded Spill6077; CSKY-NEXT: st16.w l1, (sp, 8) # 4-byte Folded Spill6078; CSKY-NEXT: st16.w l0, (sp, 4) # 4-byte Folded Spill6079; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill6080; CSKY-NEXT: subi16 sp, sp, 286081; CSKY-NEXT: mov16 l0, a26082; CSKY-NEXT: mov16 l1, a16083; CSKY-NEXT: mov16 l2, a06084; CSKY-NEXT: ld16.w a1, (a0, 4)6085; CSKY-NEXT: ld16.w a0, (a0, 0)6086; CSKY-NEXT: movi16 l3, 56087; CSKY-NEXT: .LBB209_1: # %atomicrmw.start6088; CSKY-NEXT: # =>This Inner Loop Header: Depth=16089; CSKY-NEXT: cmphs16 l1, a06090; CSKY-NEXT: mvc32 a26091; CSKY-NEXT: st16.w a2, (sp, 12)6092; CSKY-NEXT: cmpne16 a1, l06093; CSKY-NEXT: mvc32 a26094; CSKY-NEXT: st16.w a2, (sp, 16)6095; CSKY-NEXT: cmplt16 l0, a16096; CSKY-NEXT: mvcv16 a26097; CSKY-NEXT: ld16.w a3, (sp, 12)6098; CSKY-NEXT: btsti16 a3, 06099; CSKY-NEXT: mvc32 a36100; CSKY-NEXT: ld32.w t0, (sp, 16)6101; CSKY-NEXT: btsti32 t0, 06102; CSKY-NEXT: movf32 a2, a36103; CSKY-NEXT: btsti16 a2, 06104; CSKY-NEXT: mov16 a2, l16105; CSKY-NEXT: movt32 a2, a06106; CSKY-NEXT: mov16 a3, l06107; CSKY-NEXT: movt32 a3, a16108; CSKY-NEXT: st16.w a0, (sp, 20)6109; CSKY-NEXT: st16.w a1, (sp, 24)6110; CSKY-NEXT: st16.w l3, (sp, 4)6111; CSKY-NEXT: st16.w l3, (sp, 0)6112; CSKY-NEXT: mov16 a0, l26113; CSKY-NEXT: addi16 a1, sp, 206114; CSKY-NEXT: jsri32 [.LCPI209_0]6115; CSKY-NEXT: mov16 a2, a06116; CSKY-NEXT: ld16.w a1, (sp, 24)6117; CSKY-NEXT: ld16.w a0, (sp, 20)6118; CSKY-NEXT: bez32 a2, .LBB209_16119; CSKY-NEXT: # %bb.2: # %atomicrmw.end6120; CSKY-NEXT: addi16 sp, sp, 286121; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload6122; CSKY-NEXT: ld16.w l0, (sp, 4) # 4-byte Folded Reload6123; CSKY-NEXT: ld16.w l1, (sp, 8) # 4-byte Folded Reload6124; CSKY-NEXT: ld16.w l2, (sp, 12) # 4-byte Folded Reload6125; CSKY-NEXT: ld16.w l3, (sp, 16) # 4-byte Folded Reload6126; CSKY-NEXT: addi16 sp, sp, 206127; CSKY-NEXT: rts166128; CSKY-NEXT: .p2align 16129; CSKY-NEXT: # %bb.3:6130; CSKY-NEXT: .p2align 26131; CSKY-NEXT: .LCPI209_0:6132; CSKY-NEXT: .long __atomic_compare_exchange_86133 %1 = atomicrmw min ptr %a, i64 %b seq_cst6134 ret i64 %16135}6136 6137define i64 @atomicrmw_umax_i64_monotonic(ptr %a, i64 %b) nounwind {6138; CSKY-LABEL: atomicrmw_umax_i64_monotonic:6139; CSKY: # %bb.0:6140; CSKY-NEXT: subi16 sp, sp, 206141; CSKY-NEXT: st16.w l3, (sp, 16) # 4-byte Folded Spill6142; CSKY-NEXT: st16.w l2, (sp, 12) # 4-byte Folded Spill6143; CSKY-NEXT: st16.w l1, (sp, 8) # 4-byte Folded Spill6144; CSKY-NEXT: st16.w l0, (sp, 4) # 4-byte Folded Spill6145; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill6146; CSKY-NEXT: subi16 sp, sp, 246147; CSKY-NEXT: mov16 l0, a26148; CSKY-NEXT: mov16 l1, a16149; CSKY-NEXT: mov16 l2, a06150; CSKY-NEXT: ld16.w a1, (a0, 4)6151; CSKY-NEXT: ld16.w a0, (a0, 0)6152; CSKY-NEXT: movi16 l3, 06153; CSKY-NEXT: .LBB210_1: # %atomicrmw.start6154; CSKY-NEXT: # =>This Inner Loop Header: Depth=16155; CSKY-NEXT: cmpne16 a1, l06156; CSKY-NEXT: mvc32 a26157; CSKY-NEXT: st16.w a2, (sp, 12)6158; CSKY-NEXT: cmphs16 l1, a06159; CSKY-NEXT: mvcv16 a26160; CSKY-NEXT: cmphs16 l0, a16161; CSKY-NEXT: mvcv16 a36162; CSKY-NEXT: ld32.w t0, (sp, 12)6163; CSKY-NEXT: btsti32 t0, 06164; CSKY-NEXT: movf32 a3, a26165; CSKY-NEXT: btsti16 a3, 06166; CSKY-NEXT: mov16 a2, l16167; CSKY-NEXT: movt32 a2, a06168; CSKY-NEXT: mov16 a3, l06169; CSKY-NEXT: movt32 a3, a16170; CSKY-NEXT: st16.w a0, (sp, 16)6171; CSKY-NEXT: st16.w a1, (sp, 20)6172; CSKY-NEXT: st16.w l3, (sp, 4)6173; CSKY-NEXT: st16.w l3, (sp, 0)6174; CSKY-NEXT: mov16 a0, l26175; CSKY-NEXT: addi16 a1, sp, 166176; CSKY-NEXT: jsri32 [.LCPI210_0]6177; CSKY-NEXT: mov16 a2, a06178; CSKY-NEXT: ld16.w a1, (sp, 20)6179; CSKY-NEXT: ld16.w a0, (sp, 16)6180; CSKY-NEXT: bez32 a2, .LBB210_16181; CSKY-NEXT: # %bb.2: # %atomicrmw.end6182; CSKY-NEXT: addi16 sp, sp, 246183; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload6184; CSKY-NEXT: ld16.w l0, (sp, 4) # 4-byte Folded Reload6185; CSKY-NEXT: ld16.w l1, (sp, 8) # 4-byte Folded Reload6186; CSKY-NEXT: ld16.w l2, (sp, 12) # 4-byte Folded Reload6187; CSKY-NEXT: ld16.w l3, (sp, 16) # 4-byte Folded Reload6188; CSKY-NEXT: addi16 sp, sp, 206189; CSKY-NEXT: rts166190; CSKY-NEXT: .p2align 16191; CSKY-NEXT: # %bb.3:6192; CSKY-NEXT: .p2align 26193; CSKY-NEXT: .LCPI210_0:6194; CSKY-NEXT: .long __atomic_compare_exchange_86195 %1 = atomicrmw umax ptr %a, i64 %b monotonic6196 ret i64 %16197}6198 6199define i64 @atomicrmw_umax_i64_acquire(ptr %a, i64 %b) nounwind {6200; CSKY-LABEL: atomicrmw_umax_i64_acquire:6201; CSKY: # %bb.0:6202; CSKY-NEXT: subi16 sp, sp, 206203; CSKY-NEXT: st16.w l3, (sp, 16) # 4-byte Folded Spill6204; CSKY-NEXT: st16.w l2, (sp, 12) # 4-byte Folded Spill6205; CSKY-NEXT: st16.w l1, (sp, 8) # 4-byte Folded Spill6206; CSKY-NEXT: st16.w l0, (sp, 4) # 4-byte Folded Spill6207; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill6208; CSKY-NEXT: subi16 sp, sp, 246209; CSKY-NEXT: mov16 l0, a26210; CSKY-NEXT: mov16 l1, a16211; CSKY-NEXT: mov16 l2, a06212; CSKY-NEXT: ld16.w a1, (a0, 4)6213; CSKY-NEXT: ld16.w a0, (a0, 0)6214; CSKY-NEXT: movi16 l3, 26215; CSKY-NEXT: .LBB211_1: # %atomicrmw.start6216; CSKY-NEXT: # =>This Inner Loop Header: Depth=16217; CSKY-NEXT: cmpne16 a1, l06218; CSKY-NEXT: mvc32 a26219; CSKY-NEXT: st16.w a2, (sp, 12)6220; CSKY-NEXT: cmphs16 l1, a06221; CSKY-NEXT: mvcv16 a26222; CSKY-NEXT: cmphs16 l0, a16223; CSKY-NEXT: mvcv16 a36224; CSKY-NEXT: ld32.w t0, (sp, 12)6225; CSKY-NEXT: btsti32 t0, 06226; CSKY-NEXT: movf32 a3, a26227; CSKY-NEXT: btsti16 a3, 06228; CSKY-NEXT: mov16 a2, l16229; CSKY-NEXT: movt32 a2, a06230; CSKY-NEXT: mov16 a3, l06231; CSKY-NEXT: movt32 a3, a16232; CSKY-NEXT: st16.w a0, (sp, 16)6233; CSKY-NEXT: st16.w a1, (sp, 20)6234; CSKY-NEXT: st16.w l3, (sp, 4)6235; CSKY-NEXT: st16.w l3, (sp, 0)6236; CSKY-NEXT: mov16 a0, l26237; CSKY-NEXT: addi16 a1, sp, 166238; CSKY-NEXT: jsri32 [.LCPI211_0]6239; CSKY-NEXT: mov16 a2, a06240; CSKY-NEXT: ld16.w a1, (sp, 20)6241; CSKY-NEXT: ld16.w a0, (sp, 16)6242; CSKY-NEXT: bez32 a2, .LBB211_16243; CSKY-NEXT: # %bb.2: # %atomicrmw.end6244; CSKY-NEXT: addi16 sp, sp, 246245; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload6246; CSKY-NEXT: ld16.w l0, (sp, 4) # 4-byte Folded Reload6247; CSKY-NEXT: ld16.w l1, (sp, 8) # 4-byte Folded Reload6248; CSKY-NEXT: ld16.w l2, (sp, 12) # 4-byte Folded Reload6249; CSKY-NEXT: ld16.w l3, (sp, 16) # 4-byte Folded Reload6250; CSKY-NEXT: addi16 sp, sp, 206251; CSKY-NEXT: rts166252; CSKY-NEXT: .p2align 16253; CSKY-NEXT: # %bb.3:6254; CSKY-NEXT: .p2align 26255; CSKY-NEXT: .LCPI211_0:6256; CSKY-NEXT: .long __atomic_compare_exchange_86257 %1 = atomicrmw umax ptr %a, i64 %b acquire6258 ret i64 %16259}6260 6261define i64 @atomicrmw_umax_i64_release(ptr %a, i64 %b) nounwind {6262; CSKY-LABEL: atomicrmw_umax_i64_release:6263; CSKY: # %bb.0:6264; CSKY-NEXT: subi16 sp, sp, 246265; CSKY-NEXT: st16.w l3, (sp, 20) # 4-byte Folded Spill6266; CSKY-NEXT: st16.w l2, (sp, 16) # 4-byte Folded Spill6267; CSKY-NEXT: st16.w l1, (sp, 12) # 4-byte Folded Spill6268; CSKY-NEXT: st16.w l0, (sp, 8) # 4-byte Folded Spill6269; CSKY-NEXT: st32.w lr, (sp, 4) # 4-byte Folded Spill6270; CSKY-NEXT: st32.w l4, (sp, 0) # 4-byte Folded Spill6271; CSKY-NEXT: subi16 sp, sp, 246272; CSKY-NEXT: mov16 l0, a26273; CSKY-NEXT: mov16 l1, a16274; CSKY-NEXT: mov16 l2, a06275; CSKY-NEXT: ld16.w a1, (a0, 4)6276; CSKY-NEXT: ld16.w a0, (a0, 0)6277; CSKY-NEXT: movi16 l3, 06278; CSKY-NEXT: movi32 l4, 36279; CSKY-NEXT: .LBB212_1: # %atomicrmw.start6280; CSKY-NEXT: # =>This Inner Loop Header: Depth=16281; CSKY-NEXT: cmpne16 a1, l06282; CSKY-NEXT: mvc32 a26283; CSKY-NEXT: st16.w a2, (sp, 12)6284; CSKY-NEXT: cmphs16 l1, a06285; CSKY-NEXT: mvcv16 a26286; CSKY-NEXT: cmphs16 l0, a16287; CSKY-NEXT: mvcv16 a36288; CSKY-NEXT: ld32.w t0, (sp, 12)6289; CSKY-NEXT: btsti32 t0, 06290; CSKY-NEXT: movf32 a3, a26291; CSKY-NEXT: btsti16 a3, 06292; CSKY-NEXT: mov16 a2, l16293; CSKY-NEXT: movt32 a2, a06294; CSKY-NEXT: mov16 a3, l06295; CSKY-NEXT: movt32 a3, a16296; CSKY-NEXT: st16.w a0, (sp, 16)6297; CSKY-NEXT: st16.w a1, (sp, 20)6298; CSKY-NEXT: st16.w l3, (sp, 4)6299; CSKY-NEXT: st32.w l4, (sp, 0)6300; CSKY-NEXT: mov16 a0, l26301; CSKY-NEXT: addi16 a1, sp, 166302; CSKY-NEXT: jsri32 [.LCPI212_0]6303; CSKY-NEXT: mov16 a2, a06304; CSKY-NEXT: ld16.w a1, (sp, 20)6305; CSKY-NEXT: ld16.w a0, (sp, 16)6306; CSKY-NEXT: bez32 a2, .LBB212_16307; CSKY-NEXT: # %bb.2: # %atomicrmw.end6308; CSKY-NEXT: addi16 sp, sp, 246309; CSKY-NEXT: ld32.w l4, (sp, 0) # 4-byte Folded Reload6310; CSKY-NEXT: ld32.w lr, (sp, 4) # 4-byte Folded Reload6311; CSKY-NEXT: ld16.w l0, (sp, 8) # 4-byte Folded Reload6312; CSKY-NEXT: ld16.w l1, (sp, 12) # 4-byte Folded Reload6313; CSKY-NEXT: ld16.w l2, (sp, 16) # 4-byte Folded Reload6314; CSKY-NEXT: ld16.w l3, (sp, 20) # 4-byte Folded Reload6315; CSKY-NEXT: addi16 sp, sp, 246316; CSKY-NEXT: rts166317; CSKY-NEXT: .p2align 16318; CSKY-NEXT: # %bb.3:6319; CSKY-NEXT: .p2align 26320; CSKY-NEXT: .LCPI212_0:6321; CSKY-NEXT: .long __atomic_compare_exchange_86322 %1 = atomicrmw umax ptr %a, i64 %b release6323 ret i64 %16324}6325 6326define i64 @atomicrmw_umax_i64_acq_rel(ptr %a, i64 %b) nounwind {6327; CSKY-LABEL: atomicrmw_umax_i64_acq_rel:6328; CSKY: # %bb.0:6329; CSKY-NEXT: subi16 sp, sp, 246330; CSKY-NEXT: st16.w l3, (sp, 20) # 4-byte Folded Spill6331; CSKY-NEXT: st16.w l2, (sp, 16) # 4-byte Folded Spill6332; CSKY-NEXT: st16.w l1, (sp, 12) # 4-byte Folded Spill6333; CSKY-NEXT: st16.w l0, (sp, 8) # 4-byte Folded Spill6334; CSKY-NEXT: st32.w lr, (sp, 4) # 4-byte Folded Spill6335; CSKY-NEXT: st32.w l4, (sp, 0) # 4-byte Folded Spill6336; CSKY-NEXT: subi16 sp, sp, 246337; CSKY-NEXT: mov16 l0, a26338; CSKY-NEXT: mov16 l1, a16339; CSKY-NEXT: mov16 l2, a06340; CSKY-NEXT: ld16.w a1, (a0, 4)6341; CSKY-NEXT: ld16.w a0, (a0, 0)6342; CSKY-NEXT: movi16 l3, 26343; CSKY-NEXT: movi32 l4, 46344; CSKY-NEXT: .LBB213_1: # %atomicrmw.start6345; CSKY-NEXT: # =>This Inner Loop Header: Depth=16346; CSKY-NEXT: cmpne16 a1, l06347; CSKY-NEXT: mvc32 a26348; CSKY-NEXT: st16.w a2, (sp, 12)6349; CSKY-NEXT: cmphs16 l1, a06350; CSKY-NEXT: mvcv16 a26351; CSKY-NEXT: cmphs16 l0, a16352; CSKY-NEXT: mvcv16 a36353; CSKY-NEXT: ld32.w t0, (sp, 12)6354; CSKY-NEXT: btsti32 t0, 06355; CSKY-NEXT: movf32 a3, a26356; CSKY-NEXT: btsti16 a3, 06357; CSKY-NEXT: mov16 a2, l16358; CSKY-NEXT: movt32 a2, a06359; CSKY-NEXT: mov16 a3, l06360; CSKY-NEXT: movt32 a3, a16361; CSKY-NEXT: st16.w a0, (sp, 16)6362; CSKY-NEXT: st16.w a1, (sp, 20)6363; CSKY-NEXT: st16.w l3, (sp, 4)6364; CSKY-NEXT: st32.w l4, (sp, 0)6365; CSKY-NEXT: mov16 a0, l26366; CSKY-NEXT: addi16 a1, sp, 166367; CSKY-NEXT: jsri32 [.LCPI213_0]6368; CSKY-NEXT: mov16 a2, a06369; CSKY-NEXT: ld16.w a1, (sp, 20)6370; CSKY-NEXT: ld16.w a0, (sp, 16)6371; CSKY-NEXT: bez32 a2, .LBB213_16372; CSKY-NEXT: # %bb.2: # %atomicrmw.end6373; CSKY-NEXT: addi16 sp, sp, 246374; CSKY-NEXT: ld32.w l4, (sp, 0) # 4-byte Folded Reload6375; CSKY-NEXT: ld32.w lr, (sp, 4) # 4-byte Folded Reload6376; CSKY-NEXT: ld16.w l0, (sp, 8) # 4-byte Folded Reload6377; CSKY-NEXT: ld16.w l1, (sp, 12) # 4-byte Folded Reload6378; CSKY-NEXT: ld16.w l2, (sp, 16) # 4-byte Folded Reload6379; CSKY-NEXT: ld16.w l3, (sp, 20) # 4-byte Folded Reload6380; CSKY-NEXT: addi16 sp, sp, 246381; CSKY-NEXT: rts166382; CSKY-NEXT: .p2align 16383; CSKY-NEXT: # %bb.3:6384; CSKY-NEXT: .p2align 26385; CSKY-NEXT: .LCPI213_0:6386; CSKY-NEXT: .long __atomic_compare_exchange_86387 %1 = atomicrmw umax ptr %a, i64 %b acq_rel6388 ret i64 %16389}6390 6391define i64 @atomicrmw_umax_i64_seq_cst(ptr %a, i64 %b) nounwind {6392; CSKY-LABEL: atomicrmw_umax_i64_seq_cst:6393; CSKY: # %bb.0:6394; CSKY-NEXT: subi16 sp, sp, 206395; CSKY-NEXT: st16.w l3, (sp, 16) # 4-byte Folded Spill6396; CSKY-NEXT: st16.w l2, (sp, 12) # 4-byte Folded Spill6397; CSKY-NEXT: st16.w l1, (sp, 8) # 4-byte Folded Spill6398; CSKY-NEXT: st16.w l0, (sp, 4) # 4-byte Folded Spill6399; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill6400; CSKY-NEXT: subi16 sp, sp, 246401; CSKY-NEXT: mov16 l0, a26402; CSKY-NEXT: mov16 l1, a16403; CSKY-NEXT: mov16 l2, a06404; CSKY-NEXT: ld16.w a1, (a0, 4)6405; CSKY-NEXT: ld16.w a0, (a0, 0)6406; CSKY-NEXT: movi16 l3, 56407; CSKY-NEXT: .LBB214_1: # %atomicrmw.start6408; CSKY-NEXT: # =>This Inner Loop Header: Depth=16409; CSKY-NEXT: cmpne16 a1, l06410; CSKY-NEXT: mvc32 a26411; CSKY-NEXT: st16.w a2, (sp, 12)6412; CSKY-NEXT: cmphs16 l1, a06413; CSKY-NEXT: mvcv16 a26414; CSKY-NEXT: cmphs16 l0, a16415; CSKY-NEXT: mvcv16 a36416; CSKY-NEXT: ld32.w t0, (sp, 12)6417; CSKY-NEXT: btsti32 t0, 06418; CSKY-NEXT: movf32 a3, a26419; CSKY-NEXT: btsti16 a3, 06420; CSKY-NEXT: mov16 a2, l16421; CSKY-NEXT: movt32 a2, a06422; CSKY-NEXT: mov16 a3, l06423; CSKY-NEXT: movt32 a3, a16424; CSKY-NEXT: st16.w a0, (sp, 16)6425; CSKY-NEXT: st16.w a1, (sp, 20)6426; CSKY-NEXT: st16.w l3, (sp, 4)6427; CSKY-NEXT: st16.w l3, (sp, 0)6428; CSKY-NEXT: mov16 a0, l26429; CSKY-NEXT: addi16 a1, sp, 166430; CSKY-NEXT: jsri32 [.LCPI214_0]6431; CSKY-NEXT: mov16 a2, a06432; CSKY-NEXT: ld16.w a1, (sp, 20)6433; CSKY-NEXT: ld16.w a0, (sp, 16)6434; CSKY-NEXT: bez32 a2, .LBB214_16435; CSKY-NEXT: # %bb.2: # %atomicrmw.end6436; CSKY-NEXT: addi16 sp, sp, 246437; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload6438; CSKY-NEXT: ld16.w l0, (sp, 4) # 4-byte Folded Reload6439; CSKY-NEXT: ld16.w l1, (sp, 8) # 4-byte Folded Reload6440; CSKY-NEXT: ld16.w l2, (sp, 12) # 4-byte Folded Reload6441; CSKY-NEXT: ld16.w l3, (sp, 16) # 4-byte Folded Reload6442; CSKY-NEXT: addi16 sp, sp, 206443; CSKY-NEXT: rts166444; CSKY-NEXT: .p2align 16445; CSKY-NEXT: # %bb.3:6446; CSKY-NEXT: .p2align 26447; CSKY-NEXT: .LCPI214_0:6448; CSKY-NEXT: .long __atomic_compare_exchange_86449 %1 = atomicrmw umax ptr %a, i64 %b seq_cst6450 ret i64 %16451}6452 6453define i64 @atomicrmw_umin_i64_monotonic(ptr %a, i64 %b) nounwind {6454; CSKY-LABEL: atomicrmw_umin_i64_monotonic:6455; CSKY: # %bb.0:6456; CSKY-NEXT: subi16 sp, sp, 206457; CSKY-NEXT: st16.w l3, (sp, 16) # 4-byte Folded Spill6458; CSKY-NEXT: st16.w l2, (sp, 12) # 4-byte Folded Spill6459; CSKY-NEXT: st16.w l1, (sp, 8) # 4-byte Folded Spill6460; CSKY-NEXT: st16.w l0, (sp, 4) # 4-byte Folded Spill6461; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill6462; CSKY-NEXT: subi16 sp, sp, 326463; CSKY-NEXT: mov16 l0, a26464; CSKY-NEXT: mov16 l1, a16465; CSKY-NEXT: mov16 l2, a06466; CSKY-NEXT: ld16.w a1, (a0, 4)6467; CSKY-NEXT: ld16.w a0, (a0, 0)6468; CSKY-NEXT: movi16 l3, 06469; CSKY-NEXT: .LBB215_1: # %atomicrmw.start6470; CSKY-NEXT: # =>This Inner Loop Header: Depth=16471; CSKY-NEXT: cmphs16 l1, a06472; CSKY-NEXT: mvc32 a26473; CSKY-NEXT: st16.w a2, (sp, 16)6474; CSKY-NEXT: cmphs16 l0, a16475; CSKY-NEXT: mvc32 a26476; CSKY-NEXT: st16.w a2, (sp, 12)6477; CSKY-NEXT: cmpne16 a1, l06478; CSKY-NEXT: mvc32 a26479; CSKY-NEXT: st16.w a2, (sp, 20)6480; CSKY-NEXT: ld16.w a2, (sp, 16)6481; CSKY-NEXT: btsti16 a2, 06482; CSKY-NEXT: mvc32 a26483; CSKY-NEXT: ld16.w a3, (sp, 12)6484; CSKY-NEXT: btsti16 a3, 06485; CSKY-NEXT: mvc32 a36486; CSKY-NEXT: ld32.w t0, (sp, 20)6487; CSKY-NEXT: btsti32 t0, 06488; CSKY-NEXT: movf32 a3, a26489; CSKY-NEXT: btsti16 a3, 06490; CSKY-NEXT: mov16 a2, l16491; CSKY-NEXT: movt32 a2, a06492; CSKY-NEXT: mov16 a3, l06493; CSKY-NEXT: movt32 a3, a16494; CSKY-NEXT: st16.w a0, (sp, 24)6495; CSKY-NEXT: st16.w a1, (sp, 28)6496; CSKY-NEXT: st16.w l3, (sp, 4)6497; CSKY-NEXT: st16.w l3, (sp, 0)6498; CSKY-NEXT: mov16 a0, l26499; CSKY-NEXT: addi16 a1, sp, 246500; CSKY-NEXT: jsri32 [.LCPI215_0]6501; CSKY-NEXT: mov16 a2, a06502; CSKY-NEXT: ld16.w a1, (sp, 28)6503; CSKY-NEXT: ld16.w a0, (sp, 24)6504; CSKY-NEXT: bez32 a2, .LBB215_16505; CSKY-NEXT: # %bb.2: # %atomicrmw.end6506; CSKY-NEXT: addi16 sp, sp, 326507; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload6508; CSKY-NEXT: ld16.w l0, (sp, 4) # 4-byte Folded Reload6509; CSKY-NEXT: ld16.w l1, (sp, 8) # 4-byte Folded Reload6510; CSKY-NEXT: ld16.w l2, (sp, 12) # 4-byte Folded Reload6511; CSKY-NEXT: ld16.w l3, (sp, 16) # 4-byte Folded Reload6512; CSKY-NEXT: addi16 sp, sp, 206513; CSKY-NEXT: rts166514; CSKY-NEXT: .p2align 16515; CSKY-NEXT: # %bb.3:6516; CSKY-NEXT: .p2align 26517; CSKY-NEXT: .LCPI215_0:6518; CSKY-NEXT: .long __atomic_compare_exchange_86519 %1 = atomicrmw umin ptr %a, i64 %b monotonic6520 ret i64 %16521}6522 6523define i64 @atomicrmw_umin_i64_acquire(ptr %a, i64 %b) nounwind {6524; CSKY-LABEL: atomicrmw_umin_i64_acquire:6525; CSKY: # %bb.0:6526; CSKY-NEXT: subi16 sp, sp, 206527; CSKY-NEXT: st16.w l3, (sp, 16) # 4-byte Folded Spill6528; CSKY-NEXT: st16.w l2, (sp, 12) # 4-byte Folded Spill6529; CSKY-NEXT: st16.w l1, (sp, 8) # 4-byte Folded Spill6530; CSKY-NEXT: st16.w l0, (sp, 4) # 4-byte Folded Spill6531; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill6532; CSKY-NEXT: subi16 sp, sp, 326533; CSKY-NEXT: mov16 l0, a26534; CSKY-NEXT: mov16 l1, a16535; CSKY-NEXT: mov16 l2, a06536; CSKY-NEXT: ld16.w a1, (a0, 4)6537; CSKY-NEXT: ld16.w a0, (a0, 0)6538; CSKY-NEXT: movi16 l3, 26539; CSKY-NEXT: .LBB216_1: # %atomicrmw.start6540; CSKY-NEXT: # =>This Inner Loop Header: Depth=16541; CSKY-NEXT: cmphs16 l1, a06542; CSKY-NEXT: mvc32 a26543; CSKY-NEXT: st16.w a2, (sp, 16)6544; CSKY-NEXT: cmphs16 l0, a16545; CSKY-NEXT: mvc32 a26546; CSKY-NEXT: st16.w a2, (sp, 12)6547; CSKY-NEXT: cmpne16 a1, l06548; CSKY-NEXT: mvc32 a26549; CSKY-NEXT: st16.w a2, (sp, 20)6550; CSKY-NEXT: ld16.w a2, (sp, 16)6551; CSKY-NEXT: btsti16 a2, 06552; CSKY-NEXT: mvc32 a26553; CSKY-NEXT: ld16.w a3, (sp, 12)6554; CSKY-NEXT: btsti16 a3, 06555; CSKY-NEXT: mvc32 a36556; CSKY-NEXT: ld32.w t0, (sp, 20)6557; CSKY-NEXT: btsti32 t0, 06558; CSKY-NEXT: movf32 a3, a26559; CSKY-NEXT: btsti16 a3, 06560; CSKY-NEXT: mov16 a2, l16561; CSKY-NEXT: movt32 a2, a06562; CSKY-NEXT: mov16 a3, l06563; CSKY-NEXT: movt32 a3, a16564; CSKY-NEXT: st16.w a0, (sp, 24)6565; CSKY-NEXT: st16.w a1, (sp, 28)6566; CSKY-NEXT: st16.w l3, (sp, 4)6567; CSKY-NEXT: st16.w l3, (sp, 0)6568; CSKY-NEXT: mov16 a0, l26569; CSKY-NEXT: addi16 a1, sp, 246570; CSKY-NEXT: jsri32 [.LCPI216_0]6571; CSKY-NEXT: mov16 a2, a06572; CSKY-NEXT: ld16.w a1, (sp, 28)6573; CSKY-NEXT: ld16.w a0, (sp, 24)6574; CSKY-NEXT: bez32 a2, .LBB216_16575; CSKY-NEXT: # %bb.2: # %atomicrmw.end6576; CSKY-NEXT: addi16 sp, sp, 326577; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload6578; CSKY-NEXT: ld16.w l0, (sp, 4) # 4-byte Folded Reload6579; CSKY-NEXT: ld16.w l1, (sp, 8) # 4-byte Folded Reload6580; CSKY-NEXT: ld16.w l2, (sp, 12) # 4-byte Folded Reload6581; CSKY-NEXT: ld16.w l3, (sp, 16) # 4-byte Folded Reload6582; CSKY-NEXT: addi16 sp, sp, 206583; CSKY-NEXT: rts166584; CSKY-NEXT: .p2align 16585; CSKY-NEXT: # %bb.3:6586; CSKY-NEXT: .p2align 26587; CSKY-NEXT: .LCPI216_0:6588; CSKY-NEXT: .long __atomic_compare_exchange_86589 %1 = atomicrmw umin ptr %a, i64 %b acquire6590 ret i64 %16591}6592 6593define i64 @atomicrmw_umin_i64_release(ptr %a, i64 %b) nounwind {6594; CSKY-LABEL: atomicrmw_umin_i64_release:6595; CSKY: # %bb.0:6596; CSKY-NEXT: subi16 sp, sp, 246597; CSKY-NEXT: st16.w l3, (sp, 20) # 4-byte Folded Spill6598; CSKY-NEXT: st16.w l2, (sp, 16) # 4-byte Folded Spill6599; CSKY-NEXT: st16.w l1, (sp, 12) # 4-byte Folded Spill6600; CSKY-NEXT: st16.w l0, (sp, 8) # 4-byte Folded Spill6601; CSKY-NEXT: st32.w lr, (sp, 4) # 4-byte Folded Spill6602; CSKY-NEXT: st32.w l4, (sp, 0) # 4-byte Folded Spill6603; CSKY-NEXT: subi16 sp, sp, 326604; CSKY-NEXT: mov16 l0, a26605; CSKY-NEXT: mov16 l1, a16606; CSKY-NEXT: mov16 l2, a06607; CSKY-NEXT: ld16.w a1, (a0, 4)6608; CSKY-NEXT: ld16.w a0, (a0, 0)6609; CSKY-NEXT: movi16 l3, 06610; CSKY-NEXT: movi32 l4, 36611; CSKY-NEXT: .LBB217_1: # %atomicrmw.start6612; CSKY-NEXT: # =>This Inner Loop Header: Depth=16613; CSKY-NEXT: cmphs16 l1, a06614; CSKY-NEXT: mvc32 a26615; CSKY-NEXT: st16.w a2, (sp, 16)6616; CSKY-NEXT: cmphs16 l0, a16617; CSKY-NEXT: mvc32 a26618; CSKY-NEXT: st16.w a2, (sp, 12)6619; CSKY-NEXT: cmpne16 a1, l06620; CSKY-NEXT: mvc32 a26621; CSKY-NEXT: st16.w a2, (sp, 20)6622; CSKY-NEXT: ld16.w a2, (sp, 16)6623; CSKY-NEXT: btsti16 a2, 06624; CSKY-NEXT: mvc32 a26625; CSKY-NEXT: ld16.w a3, (sp, 12)6626; CSKY-NEXT: btsti16 a3, 06627; CSKY-NEXT: mvc32 a36628; CSKY-NEXT: ld32.w t0, (sp, 20)6629; CSKY-NEXT: btsti32 t0, 06630; CSKY-NEXT: movf32 a3, a26631; CSKY-NEXT: btsti16 a3, 06632; CSKY-NEXT: mov16 a2, l16633; CSKY-NEXT: movt32 a2, a06634; CSKY-NEXT: mov16 a3, l06635; CSKY-NEXT: movt32 a3, a16636; CSKY-NEXT: st16.w a0, (sp, 24)6637; CSKY-NEXT: st16.w a1, (sp, 28)6638; CSKY-NEXT: st16.w l3, (sp, 4)6639; CSKY-NEXT: st32.w l4, (sp, 0)6640; CSKY-NEXT: mov16 a0, l26641; CSKY-NEXT: addi16 a1, sp, 246642; CSKY-NEXT: jsri32 [.LCPI217_0]6643; CSKY-NEXT: mov16 a2, a06644; CSKY-NEXT: ld16.w a1, (sp, 28)6645; CSKY-NEXT: ld16.w a0, (sp, 24)6646; CSKY-NEXT: bez32 a2, .LBB217_16647; CSKY-NEXT: # %bb.2: # %atomicrmw.end6648; CSKY-NEXT: addi16 sp, sp, 326649; CSKY-NEXT: ld32.w l4, (sp, 0) # 4-byte Folded Reload6650; CSKY-NEXT: ld32.w lr, (sp, 4) # 4-byte Folded Reload6651; CSKY-NEXT: ld16.w l0, (sp, 8) # 4-byte Folded Reload6652; CSKY-NEXT: ld16.w l1, (sp, 12) # 4-byte Folded Reload6653; CSKY-NEXT: ld16.w l2, (sp, 16) # 4-byte Folded Reload6654; CSKY-NEXT: ld16.w l3, (sp, 20) # 4-byte Folded Reload6655; CSKY-NEXT: addi16 sp, sp, 246656; CSKY-NEXT: rts166657; CSKY-NEXT: .p2align 16658; CSKY-NEXT: # %bb.3:6659; CSKY-NEXT: .p2align 26660; CSKY-NEXT: .LCPI217_0:6661; CSKY-NEXT: .long __atomic_compare_exchange_86662 %1 = atomicrmw umin ptr %a, i64 %b release6663 ret i64 %16664}6665 6666define i64 @atomicrmw_umin_i64_acq_rel(ptr %a, i64 %b) nounwind {6667; CSKY-LABEL: atomicrmw_umin_i64_acq_rel:6668; CSKY: # %bb.0:6669; CSKY-NEXT: subi16 sp, sp, 246670; CSKY-NEXT: st16.w l3, (sp, 20) # 4-byte Folded Spill6671; CSKY-NEXT: st16.w l2, (sp, 16) # 4-byte Folded Spill6672; CSKY-NEXT: st16.w l1, (sp, 12) # 4-byte Folded Spill6673; CSKY-NEXT: st16.w l0, (sp, 8) # 4-byte Folded Spill6674; CSKY-NEXT: st32.w lr, (sp, 4) # 4-byte Folded Spill6675; CSKY-NEXT: st32.w l4, (sp, 0) # 4-byte Folded Spill6676; CSKY-NEXT: subi16 sp, sp, 326677; CSKY-NEXT: mov16 l0, a26678; CSKY-NEXT: mov16 l1, a16679; CSKY-NEXT: mov16 l2, a06680; CSKY-NEXT: ld16.w a1, (a0, 4)6681; CSKY-NEXT: ld16.w a0, (a0, 0)6682; CSKY-NEXT: movi16 l3, 26683; CSKY-NEXT: movi32 l4, 46684; CSKY-NEXT: .LBB218_1: # %atomicrmw.start6685; CSKY-NEXT: # =>This Inner Loop Header: Depth=16686; CSKY-NEXT: cmphs16 l1, a06687; CSKY-NEXT: mvc32 a26688; CSKY-NEXT: st16.w a2, (sp, 16)6689; CSKY-NEXT: cmphs16 l0, a16690; CSKY-NEXT: mvc32 a26691; CSKY-NEXT: st16.w a2, (sp, 12)6692; CSKY-NEXT: cmpne16 a1, l06693; CSKY-NEXT: mvc32 a26694; CSKY-NEXT: st16.w a2, (sp, 20)6695; CSKY-NEXT: ld16.w a2, (sp, 16)6696; CSKY-NEXT: btsti16 a2, 06697; CSKY-NEXT: mvc32 a26698; CSKY-NEXT: ld16.w a3, (sp, 12)6699; CSKY-NEXT: btsti16 a3, 06700; CSKY-NEXT: mvc32 a36701; CSKY-NEXT: ld32.w t0, (sp, 20)6702; CSKY-NEXT: btsti32 t0, 06703; CSKY-NEXT: movf32 a3, a26704; CSKY-NEXT: btsti16 a3, 06705; CSKY-NEXT: mov16 a2, l16706; CSKY-NEXT: movt32 a2, a06707; CSKY-NEXT: mov16 a3, l06708; CSKY-NEXT: movt32 a3, a16709; CSKY-NEXT: st16.w a0, (sp, 24)6710; CSKY-NEXT: st16.w a1, (sp, 28)6711; CSKY-NEXT: st16.w l3, (sp, 4)6712; CSKY-NEXT: st32.w l4, (sp, 0)6713; CSKY-NEXT: mov16 a0, l26714; CSKY-NEXT: addi16 a1, sp, 246715; CSKY-NEXT: jsri32 [.LCPI218_0]6716; CSKY-NEXT: mov16 a2, a06717; CSKY-NEXT: ld16.w a1, (sp, 28)6718; CSKY-NEXT: ld16.w a0, (sp, 24)6719; CSKY-NEXT: bez32 a2, .LBB218_16720; CSKY-NEXT: # %bb.2: # %atomicrmw.end6721; CSKY-NEXT: addi16 sp, sp, 326722; CSKY-NEXT: ld32.w l4, (sp, 0) # 4-byte Folded Reload6723; CSKY-NEXT: ld32.w lr, (sp, 4) # 4-byte Folded Reload6724; CSKY-NEXT: ld16.w l0, (sp, 8) # 4-byte Folded Reload6725; CSKY-NEXT: ld16.w l1, (sp, 12) # 4-byte Folded Reload6726; CSKY-NEXT: ld16.w l2, (sp, 16) # 4-byte Folded Reload6727; CSKY-NEXT: ld16.w l3, (sp, 20) # 4-byte Folded Reload6728; CSKY-NEXT: addi16 sp, sp, 246729; CSKY-NEXT: rts166730; CSKY-NEXT: .p2align 16731; CSKY-NEXT: # %bb.3:6732; CSKY-NEXT: .p2align 26733; CSKY-NEXT: .LCPI218_0:6734; CSKY-NEXT: .long __atomic_compare_exchange_86735 %1 = atomicrmw umin ptr %a, i64 %b acq_rel6736 ret i64 %16737}6738 6739define i64 @atomicrmw_umin_i64_seq_cst(ptr %a, i64 %b) nounwind {6740; CSKY-LABEL: atomicrmw_umin_i64_seq_cst:6741; CSKY: # %bb.0:6742; CSKY-NEXT: subi16 sp, sp, 206743; CSKY-NEXT: st16.w l3, (sp, 16) # 4-byte Folded Spill6744; CSKY-NEXT: st16.w l2, (sp, 12) # 4-byte Folded Spill6745; CSKY-NEXT: st16.w l1, (sp, 8) # 4-byte Folded Spill6746; CSKY-NEXT: st16.w l0, (sp, 4) # 4-byte Folded Spill6747; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill6748; CSKY-NEXT: subi16 sp, sp, 326749; CSKY-NEXT: mov16 l0, a26750; CSKY-NEXT: mov16 l1, a16751; CSKY-NEXT: mov16 l2, a06752; CSKY-NEXT: ld16.w a1, (a0, 4)6753; CSKY-NEXT: ld16.w a0, (a0, 0)6754; CSKY-NEXT: movi16 l3, 56755; CSKY-NEXT: .LBB219_1: # %atomicrmw.start6756; CSKY-NEXT: # =>This Inner Loop Header: Depth=16757; CSKY-NEXT: cmphs16 l1, a06758; CSKY-NEXT: mvc32 a26759; CSKY-NEXT: st16.w a2, (sp, 16)6760; CSKY-NEXT: cmphs16 l0, a16761; CSKY-NEXT: mvc32 a26762; CSKY-NEXT: st16.w a2, (sp, 12)6763; CSKY-NEXT: cmpne16 a1, l06764; CSKY-NEXT: mvc32 a26765; CSKY-NEXT: st16.w a2, (sp, 20)6766; CSKY-NEXT: ld16.w a2, (sp, 16)6767; CSKY-NEXT: btsti16 a2, 06768; CSKY-NEXT: mvc32 a26769; CSKY-NEXT: ld16.w a3, (sp, 12)6770; CSKY-NEXT: btsti16 a3, 06771; CSKY-NEXT: mvc32 a36772; CSKY-NEXT: ld32.w t0, (sp, 20)6773; CSKY-NEXT: btsti32 t0, 06774; CSKY-NEXT: movf32 a3, a26775; CSKY-NEXT: btsti16 a3, 06776; CSKY-NEXT: mov16 a2, l16777; CSKY-NEXT: movt32 a2, a06778; CSKY-NEXT: mov16 a3, l06779; CSKY-NEXT: movt32 a3, a16780; CSKY-NEXT: st16.w a0, (sp, 24)6781; CSKY-NEXT: st16.w a1, (sp, 28)6782; CSKY-NEXT: st16.w l3, (sp, 4)6783; CSKY-NEXT: st16.w l3, (sp, 0)6784; CSKY-NEXT: mov16 a0, l26785; CSKY-NEXT: addi16 a1, sp, 246786; CSKY-NEXT: jsri32 [.LCPI219_0]6787; CSKY-NEXT: mov16 a2, a06788; CSKY-NEXT: ld16.w a1, (sp, 28)6789; CSKY-NEXT: ld16.w a0, (sp, 24)6790; CSKY-NEXT: bez32 a2, .LBB219_16791; CSKY-NEXT: # %bb.2: # %atomicrmw.end6792; CSKY-NEXT: addi16 sp, sp, 326793; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload6794; CSKY-NEXT: ld16.w l0, (sp, 4) # 4-byte Folded Reload6795; CSKY-NEXT: ld16.w l1, (sp, 8) # 4-byte Folded Reload6796; CSKY-NEXT: ld16.w l2, (sp, 12) # 4-byte Folded Reload6797; CSKY-NEXT: ld16.w l3, (sp, 16) # 4-byte Folded Reload6798; CSKY-NEXT: addi16 sp, sp, 206799; CSKY-NEXT: rts166800; CSKY-NEXT: .p2align 16801; CSKY-NEXT: # %bb.3:6802; CSKY-NEXT: .p2align 26803; CSKY-NEXT: .LCPI219_0:6804; CSKY-NEXT: .long __atomic_compare_exchange_86805 %1 = atomicrmw umin ptr %a, i64 %b seq_cst6806 ret i64 %16807}6808