brintos

brintos / llvm-project-archived public Read only

0
0
Text · 386.2 KiB · 81cb2dd Raw
10299 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 42; RUN: llc -mtriple=xtensa -mattr=+windowed < %s | FileCheck %s --check-prefixes=XTENSA3; RUN: llc -mtriple=xtensa -mattr=+windowed,s32c1i < %s | FileCheck %s --check-prefixes=XTENSA-ATOMIC4 5define i8 @atomicrmw_xchg_i8_monotonic(ptr %a, i8 %b) nounwind {6; XTENSA-LABEL: atomicrmw_xchg_i8_monotonic:7; XTENSA:       # %bb.0:8; XTENSA-NEXT:    entry a1, 329; XTENSA-NEXT:    or a11, a3, a310; XTENSA-NEXT:    or a10, a2, a211; XTENSA-NEXT:    movi a12, 012; XTENSA-NEXT:    l32r a8, .LCPI0_013; XTENSA-NEXT:    callx8 a814; XTENSA-NEXT:    or a2, a10, a1015; XTENSA-NEXT:    retw16;17; XTENSA-ATOMIC-LABEL: atomicrmw_xchg_i8_monotonic:18; XTENSA-ATOMIC:       # %bb.0:19; XTENSA-ATOMIC-NEXT:    entry a1, 3220; XTENSA-ATOMIC-NEXT:    movi a10, 25521; XTENSA-ATOMIC-NEXT:    and a9, a3, a1022; XTENSA-ATOMIC-NEXT:    slli a8, a2, 323; XTENSA-ATOMIC-NEXT:    movi a11, 2424; XTENSA-ATOMIC-NEXT:    and a8, a8, a1125; XTENSA-ATOMIC-NEXT:    ssl a826; XTENSA-ATOMIC-NEXT:    sll a9, a927; XTENSA-ATOMIC-NEXT:    ssl a828; XTENSA-ATOMIC-NEXT:    sll a10, a1029; XTENSA-ATOMIC-NEXT:    movi a11, -130; XTENSA-ATOMIC-NEXT:    xor a10, a10, a1131; XTENSA-ATOMIC-NEXT:    movi a11, -432; XTENSA-ATOMIC-NEXT:    and a11, a2, a1133; XTENSA-ATOMIC-NEXT:    l32i a15, a11, 034; XTENSA-ATOMIC-NEXT:    movi a12, 035; XTENSA-ATOMIC-NEXT:    movi a13, 136; XTENSA-ATOMIC-NEXT:    j .LBB0_237; XTENSA-ATOMIC-NEXT:  .LBB0_1: # %atomicrmw.start38; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB0_2 Depth=139; XTENSA-ATOMIC-NEXT:    or a15, a14, a1440; XTENSA-ATOMIC-NEXT:    beqi a7, 1, .LBB0_441; XTENSA-ATOMIC-NEXT:  .LBB0_2: # %atomicrmw.start42; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=143; XTENSA-ATOMIC-NEXT:    and a14, a15, a1044; XTENSA-ATOMIC-NEXT:    or a14, a14, a945; XTENSA-ATOMIC-NEXT:    wsr a15, scompare146; XTENSA-ATOMIC-NEXT:    s32c1i a14, a11, 047; XTENSA-ATOMIC-NEXT:    or a7, a13, a1348; XTENSA-ATOMIC-NEXT:    beq a14, a15, .LBB0_149; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start50; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB0_2 Depth=151; XTENSA-ATOMIC-NEXT:    or a7, a12, a1252; XTENSA-ATOMIC-NEXT:    j .LBB0_153; XTENSA-ATOMIC-NEXT:  .LBB0_4: # %atomicrmw.end54; XTENSA-ATOMIC-NEXT:    ssr a855; XTENSA-ATOMIC-NEXT:    srl a2, a1456; XTENSA-ATOMIC-NEXT:    retw57  %res = atomicrmw xchg ptr %a, i8 %b monotonic58  ret i8 %res59}60 61define i8 @atomicrmw_xchg_i8_acquire(ptr %a, i8 %b) nounwind {62; XTENSA-LABEL: atomicrmw_xchg_i8_acquire:63; XTENSA:       # %bb.0:64; XTENSA-NEXT:    entry a1, 3265; XTENSA-NEXT:    or a11, a3, a366; XTENSA-NEXT:    or a10, a2, a267; XTENSA-NEXT:    movi a12, 268; XTENSA-NEXT:    l32r a8, .LCPI1_069; XTENSA-NEXT:    callx8 a870; XTENSA-NEXT:    or a2, a10, a1071; XTENSA-NEXT:    retw72;73; XTENSA-ATOMIC-LABEL: atomicrmw_xchg_i8_acquire:74; XTENSA-ATOMIC:       # %bb.0:75; XTENSA-ATOMIC-NEXT:    entry a1, 3276; XTENSA-ATOMIC-NEXT:    movi a10, 25577; XTENSA-ATOMIC-NEXT:    and a9, a3, a1078; XTENSA-ATOMIC-NEXT:    slli a8, a2, 379; XTENSA-ATOMIC-NEXT:    movi a11, 2480; XTENSA-ATOMIC-NEXT:    and a8, a8, a1181; XTENSA-ATOMIC-NEXT:    ssl a882; XTENSA-ATOMIC-NEXT:    sll a9, a983; XTENSA-ATOMIC-NEXT:    ssl a884; XTENSA-ATOMIC-NEXT:    sll a10, a1085; XTENSA-ATOMIC-NEXT:    movi a11, -186; XTENSA-ATOMIC-NEXT:    xor a10, a10, a1187; XTENSA-ATOMIC-NEXT:    movi a11, -488; XTENSA-ATOMIC-NEXT:    and a11, a2, a1189; XTENSA-ATOMIC-NEXT:    l32i a15, a11, 090; XTENSA-ATOMIC-NEXT:    movi a12, 091; XTENSA-ATOMIC-NEXT:    movi a13, 192; XTENSA-ATOMIC-NEXT:    j .LBB1_293; XTENSA-ATOMIC-NEXT:  .LBB1_1: # %atomicrmw.start94; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB1_2 Depth=195; XTENSA-ATOMIC-NEXT:    or a15, a14, a1496; XTENSA-ATOMIC-NEXT:    beqi a7, 1, .LBB1_497; XTENSA-ATOMIC-NEXT:  .LBB1_2: # %atomicrmw.start98; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=199; XTENSA-ATOMIC-NEXT:    and a14, a15, a10100; XTENSA-ATOMIC-NEXT:    or a14, a14, a9101; XTENSA-ATOMIC-NEXT:    wsr a15, scompare1102; XTENSA-ATOMIC-NEXT:    s32c1i a14, a11, 0103; XTENSA-ATOMIC-NEXT:    or a7, a13, a13104; XTENSA-ATOMIC-NEXT:    beq a14, a15, .LBB1_1105; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start106; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB1_2 Depth=1107; XTENSA-ATOMIC-NEXT:    or a7, a12, a12108; XTENSA-ATOMIC-NEXT:    j .LBB1_1109; XTENSA-ATOMIC-NEXT:  .LBB1_4: # %atomicrmw.end110; XTENSA-ATOMIC-NEXT:    ssr a8111; XTENSA-ATOMIC-NEXT:    srl a2, a14112; XTENSA-ATOMIC-NEXT:    memw113; XTENSA-ATOMIC-NEXT:    retw114  %res = atomicrmw xchg ptr %a, i8 %b acquire115  ret i8 %res116}117 118define i8 @atomicrmw_xchg_i8_release(ptr %a, i8 %b) nounwind {119; XTENSA-LABEL: atomicrmw_xchg_i8_release:120; XTENSA:       # %bb.0:121; XTENSA-NEXT:    entry a1, 32122; XTENSA-NEXT:    or a11, a3, a3123; XTENSA-NEXT:    or a10, a2, a2124; XTENSA-NEXT:    movi a12, 3125; XTENSA-NEXT:    l32r a8, .LCPI2_0126; XTENSA-NEXT:    callx8 a8127; XTENSA-NEXT:    or a2, a10, a10128; XTENSA-NEXT:    retw129;130; XTENSA-ATOMIC-LABEL: atomicrmw_xchg_i8_release:131; XTENSA-ATOMIC:       # %bb.0:132; XTENSA-ATOMIC-NEXT:    entry a1, 32133; XTENSA-ATOMIC-NEXT:    movi a10, 255134; XTENSA-ATOMIC-NEXT:    and a9, a3, a10135; XTENSA-ATOMIC-NEXT:    slli a8, a2, 3136; XTENSA-ATOMIC-NEXT:    movi a11, 24137; XTENSA-ATOMIC-NEXT:    and a8, a8, a11138; XTENSA-ATOMIC-NEXT:    ssl a8139; XTENSA-ATOMIC-NEXT:    sll a9, a9140; XTENSA-ATOMIC-NEXT:    ssl a8141; XTENSA-ATOMIC-NEXT:    sll a10, a10142; XTENSA-ATOMIC-NEXT:    movi a11, -1143; XTENSA-ATOMIC-NEXT:    xor a10, a10, a11144; XTENSA-ATOMIC-NEXT:    movi a11, -4145; XTENSA-ATOMIC-NEXT:    and a11, a2, a11146; XTENSA-ATOMIC-NEXT:    memw147; XTENSA-ATOMIC-NEXT:    l32i a15, a11, 0148; XTENSA-ATOMIC-NEXT:    movi a12, 0149; XTENSA-ATOMIC-NEXT:    movi a13, 1150; XTENSA-ATOMIC-NEXT:    j .LBB2_2151; XTENSA-ATOMIC-NEXT:  .LBB2_1: # %atomicrmw.start152; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB2_2 Depth=1153; XTENSA-ATOMIC-NEXT:    or a15, a14, a14154; XTENSA-ATOMIC-NEXT:    beqi a7, 1, .LBB2_4155; XTENSA-ATOMIC-NEXT:  .LBB2_2: # %atomicrmw.start156; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=1157; XTENSA-ATOMIC-NEXT:    and a14, a15, a10158; XTENSA-ATOMIC-NEXT:    or a14, a14, a9159; XTENSA-ATOMIC-NEXT:    wsr a15, scompare1160; XTENSA-ATOMIC-NEXT:    s32c1i a14, a11, 0161; XTENSA-ATOMIC-NEXT:    or a7, a13, a13162; XTENSA-ATOMIC-NEXT:    beq a14, a15, .LBB2_1163; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start164; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB2_2 Depth=1165; XTENSA-ATOMIC-NEXT:    or a7, a12, a12166; XTENSA-ATOMIC-NEXT:    j .LBB2_1167; XTENSA-ATOMIC-NEXT:  .LBB2_4: # %atomicrmw.end168; XTENSA-ATOMIC-NEXT:    ssr a8169; XTENSA-ATOMIC-NEXT:    srl a2, a14170; XTENSA-ATOMIC-NEXT:    retw171  %res = atomicrmw xchg ptr %a, i8 %b release172  ret i8 %res173}174 175define i8 @atomicrmw_xchg_i8_acq_rel(ptr %a, i8 %b) nounwind {176; XTENSA-LABEL: atomicrmw_xchg_i8_acq_rel:177; XTENSA:       # %bb.0:178; XTENSA-NEXT:    entry a1, 32179; XTENSA-NEXT:    or a11, a3, a3180; XTENSA-NEXT:    or a10, a2, a2181; XTENSA-NEXT:    movi a12, 4182; XTENSA-NEXT:    l32r a8, .LCPI3_0183; XTENSA-NEXT:    callx8 a8184; XTENSA-NEXT:    or a2, a10, a10185; XTENSA-NEXT:    retw186;187; XTENSA-ATOMIC-LABEL: atomicrmw_xchg_i8_acq_rel:188; XTENSA-ATOMIC:       # %bb.0:189; XTENSA-ATOMIC-NEXT:    entry a1, 32190; XTENSA-ATOMIC-NEXT:    movi a10, 255191; XTENSA-ATOMIC-NEXT:    and a9, a3, a10192; XTENSA-ATOMIC-NEXT:    slli a8, a2, 3193; XTENSA-ATOMIC-NEXT:    movi a11, 24194; XTENSA-ATOMIC-NEXT:    and a8, a8, a11195; XTENSA-ATOMIC-NEXT:    ssl a8196; XTENSA-ATOMIC-NEXT:    sll a9, a9197; XTENSA-ATOMIC-NEXT:    ssl a8198; XTENSA-ATOMIC-NEXT:    sll a10, a10199; XTENSA-ATOMIC-NEXT:    movi a11, -1200; XTENSA-ATOMIC-NEXT:    xor a10, a10, a11201; XTENSA-ATOMIC-NEXT:    movi a11, -4202; XTENSA-ATOMIC-NEXT:    and a11, a2, a11203; XTENSA-ATOMIC-NEXT:    memw204; XTENSA-ATOMIC-NEXT:    l32i a15, a11, 0205; XTENSA-ATOMIC-NEXT:    movi a12, 0206; XTENSA-ATOMIC-NEXT:    movi a13, 1207; XTENSA-ATOMIC-NEXT:    j .LBB3_2208; XTENSA-ATOMIC-NEXT:  .LBB3_1: # %atomicrmw.start209; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB3_2 Depth=1210; XTENSA-ATOMIC-NEXT:    or a15, a14, a14211; XTENSA-ATOMIC-NEXT:    beqi a7, 1, .LBB3_4212; XTENSA-ATOMIC-NEXT:  .LBB3_2: # %atomicrmw.start213; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=1214; XTENSA-ATOMIC-NEXT:    and a14, a15, a10215; XTENSA-ATOMIC-NEXT:    or a14, a14, a9216; XTENSA-ATOMIC-NEXT:    wsr a15, scompare1217; XTENSA-ATOMIC-NEXT:    s32c1i a14, a11, 0218; XTENSA-ATOMIC-NEXT:    or a7, a13, a13219; XTENSA-ATOMIC-NEXT:    beq a14, a15, .LBB3_1220; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start221; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB3_2 Depth=1222; XTENSA-ATOMIC-NEXT:    or a7, a12, a12223; XTENSA-ATOMIC-NEXT:    j .LBB3_1224; XTENSA-ATOMIC-NEXT:  .LBB3_4: # %atomicrmw.end225; XTENSA-ATOMIC-NEXT:    ssr a8226; XTENSA-ATOMIC-NEXT:    srl a2, a14227; XTENSA-ATOMIC-NEXT:    memw228; XTENSA-ATOMIC-NEXT:    retw229  %res = atomicrmw xchg ptr %a, i8 %b acq_rel230  ret i8 %res231}232 233define i8 @atomicrmw_xchg_i8_seq_cst(ptr %a, i8 %b) nounwind {234; XTENSA-LABEL: atomicrmw_xchg_i8_seq_cst:235; XTENSA:       # %bb.0:236; XTENSA-NEXT:    entry a1, 32237; XTENSA-NEXT:    or a11, a3, a3238; XTENSA-NEXT:    or a10, a2, a2239; XTENSA-NEXT:    movi a12, 5240; XTENSA-NEXT:    l32r a8, .LCPI4_0241; XTENSA-NEXT:    callx8 a8242; XTENSA-NEXT:    or a2, a10, a10243; XTENSA-NEXT:    retw244;245; XTENSA-ATOMIC-LABEL: atomicrmw_xchg_i8_seq_cst:246; XTENSA-ATOMIC:       # %bb.0:247; XTENSA-ATOMIC-NEXT:    entry a1, 32248; XTENSA-ATOMIC-NEXT:    movi a10, 255249; XTENSA-ATOMIC-NEXT:    and a9, a3, a10250; XTENSA-ATOMIC-NEXT:    slli a8, a2, 3251; XTENSA-ATOMIC-NEXT:    movi a11, 24252; XTENSA-ATOMIC-NEXT:    and a8, a8, a11253; XTENSA-ATOMIC-NEXT:    ssl a8254; XTENSA-ATOMIC-NEXT:    sll a9, a9255; XTENSA-ATOMIC-NEXT:    ssl a8256; XTENSA-ATOMIC-NEXT:    sll a10, a10257; XTENSA-ATOMIC-NEXT:    movi a11, -1258; XTENSA-ATOMIC-NEXT:    xor a10, a10, a11259; XTENSA-ATOMIC-NEXT:    movi a11, -4260; XTENSA-ATOMIC-NEXT:    and a11, a2, a11261; XTENSA-ATOMIC-NEXT:    memw262; XTENSA-ATOMIC-NEXT:    l32i a15, a11, 0263; XTENSA-ATOMIC-NEXT:    movi a12, 0264; XTENSA-ATOMIC-NEXT:    movi a13, 1265; XTENSA-ATOMIC-NEXT:    j .LBB4_2266; XTENSA-ATOMIC-NEXT:  .LBB4_1: # %atomicrmw.start267; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB4_2 Depth=1268; XTENSA-ATOMIC-NEXT:    or a15, a14, a14269; XTENSA-ATOMIC-NEXT:    beqi a7, 1, .LBB4_4270; XTENSA-ATOMIC-NEXT:  .LBB4_2: # %atomicrmw.start271; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=1272; XTENSA-ATOMIC-NEXT:    and a14, a15, a10273; XTENSA-ATOMIC-NEXT:    or a14, a14, a9274; XTENSA-ATOMIC-NEXT:    wsr a15, scompare1275; XTENSA-ATOMIC-NEXT:    s32c1i a14, a11, 0276; XTENSA-ATOMIC-NEXT:    or a7, a13, a13277; XTENSA-ATOMIC-NEXT:    beq a14, a15, .LBB4_1278; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start279; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB4_2 Depth=1280; XTENSA-ATOMIC-NEXT:    or a7, a12, a12281; XTENSA-ATOMIC-NEXT:    j .LBB4_1282; XTENSA-ATOMIC-NEXT:  .LBB4_4: # %atomicrmw.end283; XTENSA-ATOMIC-NEXT:    ssr a8284; XTENSA-ATOMIC-NEXT:    srl a2, a14285; XTENSA-ATOMIC-NEXT:    memw286; XTENSA-ATOMIC-NEXT:    retw287  %res = atomicrmw xchg ptr %a, i8 %b seq_cst288  ret i8 %res289}290 291define i8 @atomicrmw_add_i8_monotonic(ptr %a, i8 %b) nounwind {292; XTENSA-LABEL: atomicrmw_add_i8_monotonic:293; XTENSA:       # %bb.0:294; XTENSA-NEXT:    entry a1, 32295; XTENSA-NEXT:    or a11, a3, a3296; XTENSA-NEXT:    or a10, a2, a2297; XTENSA-NEXT:    movi a12, 0298; XTENSA-NEXT:    l32r a8, .LCPI5_0299; XTENSA-NEXT:    callx8 a8300; XTENSA-NEXT:    or a2, a10, a10301; XTENSA-NEXT:    retw302;303; XTENSA-ATOMIC-LABEL: atomicrmw_add_i8_monotonic:304; XTENSA-ATOMIC:       # %bb.0:305; XTENSA-ATOMIC-NEXT:    entry a1, 32306; XTENSA-ATOMIC-NEXT:    movi a10, 255307; XTENSA-ATOMIC-NEXT:    and a9, a3, a10308; XTENSA-ATOMIC-NEXT:    slli a8, a2, 3309; XTENSA-ATOMIC-NEXT:    movi a11, 24310; XTENSA-ATOMIC-NEXT:    and a8, a8, a11311; XTENSA-ATOMIC-NEXT:    ssl a8312; XTENSA-ATOMIC-NEXT:    sll a9, a9313; XTENSA-ATOMIC-NEXT:    ssl a8314; XTENSA-ATOMIC-NEXT:    sll a10, a10315; XTENSA-ATOMIC-NEXT:    movi a11, -1316; XTENSA-ATOMIC-NEXT:    xor a11, a10, a11317; XTENSA-ATOMIC-NEXT:    movi a12, -4318; XTENSA-ATOMIC-NEXT:    and a12, a2, a12319; XTENSA-ATOMIC-NEXT:    l32i a15, a12, 0320; XTENSA-ATOMIC-NEXT:    movi a13, 0321; XTENSA-ATOMIC-NEXT:    movi a14, 1322; XTENSA-ATOMIC-NEXT:    j .LBB5_2323; XTENSA-ATOMIC-NEXT:  .LBB5_1: # %atomicrmw.start324; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB5_2 Depth=1325; XTENSA-ATOMIC-NEXT:    or a15, a7, a7326; XTENSA-ATOMIC-NEXT:    beqi a6, 1, .LBB5_4327; XTENSA-ATOMIC-NEXT:  .LBB5_2: # %atomicrmw.start328; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=1329; XTENSA-ATOMIC-NEXT:    and a7, a15, a11330; XTENSA-ATOMIC-NEXT:    add a6, a15, a9331; XTENSA-ATOMIC-NEXT:    and a6, a6, a10332; XTENSA-ATOMIC-NEXT:    or a7, a7, a6333; XTENSA-ATOMIC-NEXT:    wsr a15, scompare1334; XTENSA-ATOMIC-NEXT:    s32c1i a7, a12, 0335; XTENSA-ATOMIC-NEXT:    or a6, a14, a14336; XTENSA-ATOMIC-NEXT:    beq a7, a15, .LBB5_1337; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start338; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB5_2 Depth=1339; XTENSA-ATOMIC-NEXT:    or a6, a13, a13340; XTENSA-ATOMIC-NEXT:    j .LBB5_1341; XTENSA-ATOMIC-NEXT:  .LBB5_4: # %atomicrmw.end342; XTENSA-ATOMIC-NEXT:    ssr a8343; XTENSA-ATOMIC-NEXT:    srl a2, a7344; XTENSA-ATOMIC-NEXT:    retw345  %res = atomicrmw add ptr %a, i8 %b monotonic346  ret i8 %res347}348 349define i8 @atomicrmw_add_i8_acquire(ptr %a, i8 %b) nounwind {350; XTENSA-LABEL: atomicrmw_add_i8_acquire:351; XTENSA:       # %bb.0:352; XTENSA-NEXT:    entry a1, 32353; XTENSA-NEXT:    or a11, a3, a3354; XTENSA-NEXT:    or a10, a2, a2355; XTENSA-NEXT:    movi a12, 2356; XTENSA-NEXT:    l32r a8, .LCPI6_0357; XTENSA-NEXT:    callx8 a8358; XTENSA-NEXT:    or a2, a10, a10359; XTENSA-NEXT:    retw360;361; XTENSA-ATOMIC-LABEL: atomicrmw_add_i8_acquire:362; XTENSA-ATOMIC:       # %bb.0:363; XTENSA-ATOMIC-NEXT:    entry a1, 32364; XTENSA-ATOMIC-NEXT:    movi a10, 255365; XTENSA-ATOMIC-NEXT:    and a9, a3, a10366; XTENSA-ATOMIC-NEXT:    slli a8, a2, 3367; XTENSA-ATOMIC-NEXT:    movi a11, 24368; XTENSA-ATOMIC-NEXT:    and a8, a8, a11369; XTENSA-ATOMIC-NEXT:    ssl a8370; XTENSA-ATOMIC-NEXT:    sll a9, a9371; XTENSA-ATOMIC-NEXT:    ssl a8372; XTENSA-ATOMIC-NEXT:    sll a10, a10373; XTENSA-ATOMIC-NEXT:    movi a11, -1374; XTENSA-ATOMIC-NEXT:    xor a11, a10, a11375; XTENSA-ATOMIC-NEXT:    movi a12, -4376; XTENSA-ATOMIC-NEXT:    and a12, a2, a12377; XTENSA-ATOMIC-NEXT:    l32i a15, a12, 0378; XTENSA-ATOMIC-NEXT:    movi a13, 0379; XTENSA-ATOMIC-NEXT:    movi a14, 1380; XTENSA-ATOMIC-NEXT:    j .LBB6_2381; XTENSA-ATOMIC-NEXT:  .LBB6_1: # %atomicrmw.start382; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB6_2 Depth=1383; XTENSA-ATOMIC-NEXT:    or a15, a7, a7384; XTENSA-ATOMIC-NEXT:    beqi a6, 1, .LBB6_4385; XTENSA-ATOMIC-NEXT:  .LBB6_2: # %atomicrmw.start386; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=1387; XTENSA-ATOMIC-NEXT:    and a7, a15, a11388; XTENSA-ATOMIC-NEXT:    add a6, a15, a9389; XTENSA-ATOMIC-NEXT:    and a6, a6, a10390; XTENSA-ATOMIC-NEXT:    or a7, a7, a6391; XTENSA-ATOMIC-NEXT:    wsr a15, scompare1392; XTENSA-ATOMIC-NEXT:    s32c1i a7, a12, 0393; XTENSA-ATOMIC-NEXT:    or a6, a14, a14394; XTENSA-ATOMIC-NEXT:    beq a7, a15, .LBB6_1395; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start396; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB6_2 Depth=1397; XTENSA-ATOMIC-NEXT:    or a6, a13, a13398; XTENSA-ATOMIC-NEXT:    j .LBB6_1399; XTENSA-ATOMIC-NEXT:  .LBB6_4: # %atomicrmw.end400; XTENSA-ATOMIC-NEXT:    ssr a8401; XTENSA-ATOMIC-NEXT:    srl a2, a7402; XTENSA-ATOMIC-NEXT:    memw403; XTENSA-ATOMIC-NEXT:    retw404  %res = atomicrmw add ptr %a, i8 %b acquire405  ret i8 %res406}407 408define i8 @atomicrmw_add_i8_release(ptr %a, i8 %b) nounwind {409; XTENSA-LABEL: atomicrmw_add_i8_release:410; XTENSA:       # %bb.0:411; XTENSA-NEXT:    entry a1, 32412; XTENSA-NEXT:    or a11, a3, a3413; XTENSA-NEXT:    or a10, a2, a2414; XTENSA-NEXT:    movi a12, 3415; XTENSA-NEXT:    l32r a8, .LCPI7_0416; XTENSA-NEXT:    callx8 a8417; XTENSA-NEXT:    or a2, a10, a10418; XTENSA-NEXT:    retw419;420; XTENSA-ATOMIC-LABEL: atomicrmw_add_i8_release:421; XTENSA-ATOMIC:       # %bb.0:422; XTENSA-ATOMIC-NEXT:    entry a1, 32423; XTENSA-ATOMIC-NEXT:    movi a10, 255424; XTENSA-ATOMIC-NEXT:    and a9, a3, a10425; XTENSA-ATOMIC-NEXT:    slli a8, a2, 3426; XTENSA-ATOMIC-NEXT:    movi a11, 24427; XTENSA-ATOMIC-NEXT:    and a8, a8, a11428; XTENSA-ATOMIC-NEXT:    ssl a8429; XTENSA-ATOMIC-NEXT:    sll a9, a9430; XTENSA-ATOMIC-NEXT:    ssl a8431; XTENSA-ATOMIC-NEXT:    sll a10, a10432; XTENSA-ATOMIC-NEXT:    movi a11, -1433; XTENSA-ATOMIC-NEXT:    xor a11, a10, a11434; XTENSA-ATOMIC-NEXT:    movi a12, -4435; XTENSA-ATOMIC-NEXT:    and a12, a2, a12436; XTENSA-ATOMIC-NEXT:    memw437; XTENSA-ATOMIC-NEXT:    l32i a15, a12, 0438; XTENSA-ATOMIC-NEXT:    movi a13, 0439; XTENSA-ATOMIC-NEXT:    movi a14, 1440; XTENSA-ATOMIC-NEXT:    j .LBB7_2441; XTENSA-ATOMIC-NEXT:  .LBB7_1: # %atomicrmw.start442; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB7_2 Depth=1443; XTENSA-ATOMIC-NEXT:    or a15, a7, a7444; XTENSA-ATOMIC-NEXT:    beqi a6, 1, .LBB7_4445; XTENSA-ATOMIC-NEXT:  .LBB7_2: # %atomicrmw.start446; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=1447; XTENSA-ATOMIC-NEXT:    and a7, a15, a11448; XTENSA-ATOMIC-NEXT:    add a6, a15, a9449; XTENSA-ATOMIC-NEXT:    and a6, a6, a10450; XTENSA-ATOMIC-NEXT:    or a7, a7, a6451; XTENSA-ATOMIC-NEXT:    wsr a15, scompare1452; XTENSA-ATOMIC-NEXT:    s32c1i a7, a12, 0453; XTENSA-ATOMIC-NEXT:    or a6, a14, a14454; XTENSA-ATOMIC-NEXT:    beq a7, a15, .LBB7_1455; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start456; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB7_2 Depth=1457; XTENSA-ATOMIC-NEXT:    or a6, a13, a13458; XTENSA-ATOMIC-NEXT:    j .LBB7_1459; XTENSA-ATOMIC-NEXT:  .LBB7_4: # %atomicrmw.end460; XTENSA-ATOMIC-NEXT:    ssr a8461; XTENSA-ATOMIC-NEXT:    srl a2, a7462; XTENSA-ATOMIC-NEXT:    retw463  %res = atomicrmw add ptr %a, i8 %b release464  ret i8 %res465}466 467define i8 @atomicrmw_add_i8_acq_rel(ptr %a, i8 %b) nounwind {468; XTENSA-LABEL: atomicrmw_add_i8_acq_rel:469; XTENSA:       # %bb.0:470; XTENSA-NEXT:    entry a1, 32471; XTENSA-NEXT:    or a11, a3, a3472; XTENSA-NEXT:    or a10, a2, a2473; XTENSA-NEXT:    movi a12, 4474; XTENSA-NEXT:    l32r a8, .LCPI8_0475; XTENSA-NEXT:    callx8 a8476; XTENSA-NEXT:    or a2, a10, a10477; XTENSA-NEXT:    retw478;479; XTENSA-ATOMIC-LABEL: atomicrmw_add_i8_acq_rel:480; XTENSA-ATOMIC:       # %bb.0:481; XTENSA-ATOMIC-NEXT:    entry a1, 32482; XTENSA-ATOMIC-NEXT:    movi a10, 255483; XTENSA-ATOMIC-NEXT:    and a9, a3, a10484; XTENSA-ATOMIC-NEXT:    slli a8, a2, 3485; XTENSA-ATOMIC-NEXT:    movi a11, 24486; XTENSA-ATOMIC-NEXT:    and a8, a8, a11487; XTENSA-ATOMIC-NEXT:    ssl a8488; XTENSA-ATOMIC-NEXT:    sll a9, a9489; XTENSA-ATOMIC-NEXT:    ssl a8490; XTENSA-ATOMIC-NEXT:    sll a10, a10491; XTENSA-ATOMIC-NEXT:    movi a11, -1492; XTENSA-ATOMIC-NEXT:    xor a11, a10, a11493; XTENSA-ATOMIC-NEXT:    movi a12, -4494; XTENSA-ATOMIC-NEXT:    and a12, a2, a12495; XTENSA-ATOMIC-NEXT:    memw496; XTENSA-ATOMIC-NEXT:    l32i a15, a12, 0497; XTENSA-ATOMIC-NEXT:    movi a13, 0498; XTENSA-ATOMIC-NEXT:    movi a14, 1499; XTENSA-ATOMIC-NEXT:    j .LBB8_2500; XTENSA-ATOMIC-NEXT:  .LBB8_1: # %atomicrmw.start501; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB8_2 Depth=1502; XTENSA-ATOMIC-NEXT:    or a15, a7, a7503; XTENSA-ATOMIC-NEXT:    beqi a6, 1, .LBB8_4504; XTENSA-ATOMIC-NEXT:  .LBB8_2: # %atomicrmw.start505; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=1506; XTENSA-ATOMIC-NEXT:    and a7, a15, a11507; XTENSA-ATOMIC-NEXT:    add a6, a15, a9508; XTENSA-ATOMIC-NEXT:    and a6, a6, a10509; XTENSA-ATOMIC-NEXT:    or a7, a7, a6510; XTENSA-ATOMIC-NEXT:    wsr a15, scompare1511; XTENSA-ATOMIC-NEXT:    s32c1i a7, a12, 0512; XTENSA-ATOMIC-NEXT:    or a6, a14, a14513; XTENSA-ATOMIC-NEXT:    beq a7, a15, .LBB8_1514; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start515; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB8_2 Depth=1516; XTENSA-ATOMIC-NEXT:    or a6, a13, a13517; XTENSA-ATOMIC-NEXT:    j .LBB8_1518; XTENSA-ATOMIC-NEXT:  .LBB8_4: # %atomicrmw.end519; XTENSA-ATOMIC-NEXT:    ssr a8520; XTENSA-ATOMIC-NEXT:    srl a2, a7521; XTENSA-ATOMIC-NEXT:    memw522; XTENSA-ATOMIC-NEXT:    retw523  %res = atomicrmw add ptr %a, i8 %b acq_rel524  ret i8 %res525}526 527define i8 @atomicrmw_add_i8_seq_cst(ptr %a, i8 %b) nounwind {528; XTENSA-LABEL: atomicrmw_add_i8_seq_cst:529; XTENSA:       # %bb.0:530; XTENSA-NEXT:    entry a1, 32531; XTENSA-NEXT:    or a11, a3, a3532; XTENSA-NEXT:    or a10, a2, a2533; XTENSA-NEXT:    movi a12, 5534; XTENSA-NEXT:    l32r a8, .LCPI9_0535; XTENSA-NEXT:    callx8 a8536; XTENSA-NEXT:    or a2, a10, a10537; XTENSA-NEXT:    retw538;539; XTENSA-ATOMIC-LABEL: atomicrmw_add_i8_seq_cst:540; XTENSA-ATOMIC:       # %bb.0:541; XTENSA-ATOMIC-NEXT:    entry a1, 32542; XTENSA-ATOMIC-NEXT:    movi a10, 255543; XTENSA-ATOMIC-NEXT:    and a9, a3, a10544; XTENSA-ATOMIC-NEXT:    slli a8, a2, 3545; XTENSA-ATOMIC-NEXT:    movi a11, 24546; XTENSA-ATOMIC-NEXT:    and a8, a8, a11547; XTENSA-ATOMIC-NEXT:    ssl a8548; XTENSA-ATOMIC-NEXT:    sll a9, a9549; XTENSA-ATOMIC-NEXT:    ssl a8550; XTENSA-ATOMIC-NEXT:    sll a10, a10551; XTENSA-ATOMIC-NEXT:    movi a11, -1552; XTENSA-ATOMIC-NEXT:    xor a11, a10, a11553; XTENSA-ATOMIC-NEXT:    movi a12, -4554; XTENSA-ATOMIC-NEXT:    and a12, a2, a12555; XTENSA-ATOMIC-NEXT:    memw556; XTENSA-ATOMIC-NEXT:    l32i a15, a12, 0557; XTENSA-ATOMIC-NEXT:    movi a13, 0558; XTENSA-ATOMIC-NEXT:    movi a14, 1559; XTENSA-ATOMIC-NEXT:    j .LBB9_2560; XTENSA-ATOMIC-NEXT:  .LBB9_1: # %atomicrmw.start561; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB9_2 Depth=1562; XTENSA-ATOMIC-NEXT:    or a15, a7, a7563; XTENSA-ATOMIC-NEXT:    beqi a6, 1, .LBB9_4564; XTENSA-ATOMIC-NEXT:  .LBB9_2: # %atomicrmw.start565; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=1566; XTENSA-ATOMIC-NEXT:    and a7, a15, a11567; XTENSA-ATOMIC-NEXT:    add a6, a15, a9568; XTENSA-ATOMIC-NEXT:    and a6, a6, a10569; XTENSA-ATOMIC-NEXT:    or a7, a7, a6570; XTENSA-ATOMIC-NEXT:    wsr a15, scompare1571; XTENSA-ATOMIC-NEXT:    s32c1i a7, a12, 0572; XTENSA-ATOMIC-NEXT:    or a6, a14, a14573; XTENSA-ATOMIC-NEXT:    beq a7, a15, .LBB9_1574; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start575; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB9_2 Depth=1576; XTENSA-ATOMIC-NEXT:    or a6, a13, a13577; XTENSA-ATOMIC-NEXT:    j .LBB9_1578; XTENSA-ATOMIC-NEXT:  .LBB9_4: # %atomicrmw.end579; XTENSA-ATOMIC-NEXT:    ssr a8580; XTENSA-ATOMIC-NEXT:    srl a2, a7581; XTENSA-ATOMIC-NEXT:    memw582; XTENSA-ATOMIC-NEXT:    retw583  %res = atomicrmw add ptr %a, i8 %b seq_cst584  ret i8 %res585}586 587define i8 @atomicrmw_sub_i8_monotonic(ptr %a, i8 %b) nounwind {588; XTENSA-LABEL: atomicrmw_sub_i8_monotonic:589; XTENSA:       # %bb.0:590; XTENSA-NEXT:    entry a1, 32591; XTENSA-NEXT:    or a11, a3, a3592; XTENSA-NEXT:    or a10, a2, a2593; XTENSA-NEXT:    movi a12, 0594; XTENSA-NEXT:    l32r a8, .LCPI10_0595; XTENSA-NEXT:    callx8 a8596; XTENSA-NEXT:    or a2, a10, a10597; XTENSA-NEXT:    retw598;599; XTENSA-ATOMIC-LABEL: atomicrmw_sub_i8_monotonic:600; XTENSA-ATOMIC:       # %bb.0:601; XTENSA-ATOMIC-NEXT:    entry a1, 32602; XTENSA-ATOMIC-NEXT:    movi a10, 255603; XTENSA-ATOMIC-NEXT:    and a9, a3, a10604; XTENSA-ATOMIC-NEXT:    slli a8, a2, 3605; XTENSA-ATOMIC-NEXT:    movi a11, 24606; XTENSA-ATOMIC-NEXT:    and a8, a8, a11607; XTENSA-ATOMIC-NEXT:    ssl a8608; XTENSA-ATOMIC-NEXT:    sll a9, a9609; XTENSA-ATOMIC-NEXT:    ssl a8610; XTENSA-ATOMIC-NEXT:    sll a10, a10611; XTENSA-ATOMIC-NEXT:    movi a11, -1612; XTENSA-ATOMIC-NEXT:    xor a11, a10, a11613; XTENSA-ATOMIC-NEXT:    movi a12, -4614; XTENSA-ATOMIC-NEXT:    and a12, a2, a12615; XTENSA-ATOMIC-NEXT:    l32i a15, a12, 0616; XTENSA-ATOMIC-NEXT:    movi a13, 0617; XTENSA-ATOMIC-NEXT:    movi a14, 1618; XTENSA-ATOMIC-NEXT:    j .LBB10_2619; XTENSA-ATOMIC-NEXT:  .LBB10_1: # %atomicrmw.start620; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB10_2 Depth=1621; XTENSA-ATOMIC-NEXT:    or a15, a7, a7622; XTENSA-ATOMIC-NEXT:    beqi a6, 1, .LBB10_4623; XTENSA-ATOMIC-NEXT:  .LBB10_2: # %atomicrmw.start624; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=1625; XTENSA-ATOMIC-NEXT:    and a7, a15, a11626; XTENSA-ATOMIC-NEXT:    sub a6, a15, a9627; XTENSA-ATOMIC-NEXT:    and a6, a6, a10628; XTENSA-ATOMIC-NEXT:    or a7, a7, a6629; XTENSA-ATOMIC-NEXT:    wsr a15, scompare1630; XTENSA-ATOMIC-NEXT:    s32c1i a7, a12, 0631; XTENSA-ATOMIC-NEXT:    or a6, a14, a14632; XTENSA-ATOMIC-NEXT:    beq a7, a15, .LBB10_1633; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start634; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB10_2 Depth=1635; XTENSA-ATOMIC-NEXT:    or a6, a13, a13636; XTENSA-ATOMIC-NEXT:    j .LBB10_1637; XTENSA-ATOMIC-NEXT:  .LBB10_4: # %atomicrmw.end638; XTENSA-ATOMIC-NEXT:    ssr a8639; XTENSA-ATOMIC-NEXT:    srl a2, a7640; XTENSA-ATOMIC-NEXT:    retw641  %res = atomicrmw sub ptr %a, i8 %b monotonic642  ret i8 %res643}644 645define i8 @atomicrmw_sub_i8_acquire(ptr %a, i8 %b) nounwind {646; XTENSA-LABEL: atomicrmw_sub_i8_acquire:647; XTENSA:       # %bb.0:648; XTENSA-NEXT:    entry a1, 32649; XTENSA-NEXT:    or a11, a3, a3650; XTENSA-NEXT:    or a10, a2, a2651; XTENSA-NEXT:    movi a12, 2652; XTENSA-NEXT:    l32r a8, .LCPI11_0653; XTENSA-NEXT:    callx8 a8654; XTENSA-NEXT:    or a2, a10, a10655; XTENSA-NEXT:    retw656;657; XTENSA-ATOMIC-LABEL: atomicrmw_sub_i8_acquire:658; XTENSA-ATOMIC:       # %bb.0:659; XTENSA-ATOMIC-NEXT:    entry a1, 32660; XTENSA-ATOMIC-NEXT:    movi a10, 255661; XTENSA-ATOMIC-NEXT:    and a9, a3, a10662; XTENSA-ATOMIC-NEXT:    slli a8, a2, 3663; XTENSA-ATOMIC-NEXT:    movi a11, 24664; XTENSA-ATOMIC-NEXT:    and a8, a8, a11665; XTENSA-ATOMIC-NEXT:    ssl a8666; XTENSA-ATOMIC-NEXT:    sll a9, a9667; XTENSA-ATOMIC-NEXT:    ssl a8668; XTENSA-ATOMIC-NEXT:    sll a10, a10669; XTENSA-ATOMIC-NEXT:    movi a11, -1670; XTENSA-ATOMIC-NEXT:    xor a11, a10, a11671; XTENSA-ATOMIC-NEXT:    movi a12, -4672; XTENSA-ATOMIC-NEXT:    and a12, a2, a12673; XTENSA-ATOMIC-NEXT:    l32i a15, a12, 0674; XTENSA-ATOMIC-NEXT:    movi a13, 0675; XTENSA-ATOMIC-NEXT:    movi a14, 1676; XTENSA-ATOMIC-NEXT:    j .LBB11_2677; XTENSA-ATOMIC-NEXT:  .LBB11_1: # %atomicrmw.start678; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB11_2 Depth=1679; XTENSA-ATOMIC-NEXT:    or a15, a7, a7680; XTENSA-ATOMIC-NEXT:    beqi a6, 1, .LBB11_4681; XTENSA-ATOMIC-NEXT:  .LBB11_2: # %atomicrmw.start682; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=1683; XTENSA-ATOMIC-NEXT:    and a7, a15, a11684; XTENSA-ATOMIC-NEXT:    sub a6, a15, a9685; XTENSA-ATOMIC-NEXT:    and a6, a6, a10686; XTENSA-ATOMIC-NEXT:    or a7, a7, a6687; XTENSA-ATOMIC-NEXT:    wsr a15, scompare1688; XTENSA-ATOMIC-NEXT:    s32c1i a7, a12, 0689; XTENSA-ATOMIC-NEXT:    or a6, a14, a14690; XTENSA-ATOMIC-NEXT:    beq a7, a15, .LBB11_1691; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start692; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB11_2 Depth=1693; XTENSA-ATOMIC-NEXT:    or a6, a13, a13694; XTENSA-ATOMIC-NEXT:    j .LBB11_1695; XTENSA-ATOMIC-NEXT:  .LBB11_4: # %atomicrmw.end696; XTENSA-ATOMIC-NEXT:    ssr a8697; XTENSA-ATOMIC-NEXT:    srl a2, a7698; XTENSA-ATOMIC-NEXT:    memw699; XTENSA-ATOMIC-NEXT:    retw700  %res = atomicrmw sub ptr %a, i8 %b acquire701  ret i8 %res702}703 704define i8 @atomicrmw_sub_i8_release(ptr %a, i8 %b) nounwind {705; XTENSA-LABEL: atomicrmw_sub_i8_release:706; XTENSA:       # %bb.0:707; XTENSA-NEXT:    entry a1, 32708; XTENSA-NEXT:    or a11, a3, a3709; XTENSA-NEXT:    or a10, a2, a2710; XTENSA-NEXT:    movi a12, 3711; XTENSA-NEXT:    l32r a8, .LCPI12_0712; XTENSA-NEXT:    callx8 a8713; XTENSA-NEXT:    or a2, a10, a10714; XTENSA-NEXT:    retw715;716; XTENSA-ATOMIC-LABEL: atomicrmw_sub_i8_release:717; XTENSA-ATOMIC:       # %bb.0:718; XTENSA-ATOMIC-NEXT:    entry a1, 32719; XTENSA-ATOMIC-NEXT:    movi a10, 255720; XTENSA-ATOMIC-NEXT:    and a9, a3, a10721; XTENSA-ATOMIC-NEXT:    slli a8, a2, 3722; XTENSA-ATOMIC-NEXT:    movi a11, 24723; XTENSA-ATOMIC-NEXT:    and a8, a8, a11724; XTENSA-ATOMIC-NEXT:    ssl a8725; XTENSA-ATOMIC-NEXT:    sll a9, a9726; XTENSA-ATOMIC-NEXT:    ssl a8727; XTENSA-ATOMIC-NEXT:    sll a10, a10728; XTENSA-ATOMIC-NEXT:    movi a11, -1729; XTENSA-ATOMIC-NEXT:    xor a11, a10, a11730; XTENSA-ATOMIC-NEXT:    movi a12, -4731; XTENSA-ATOMIC-NEXT:    and a12, a2, a12732; XTENSA-ATOMIC-NEXT:    memw733; XTENSA-ATOMIC-NEXT:    l32i a15, a12, 0734; XTENSA-ATOMIC-NEXT:    movi a13, 0735; XTENSA-ATOMIC-NEXT:    movi a14, 1736; XTENSA-ATOMIC-NEXT:    j .LBB12_2737; XTENSA-ATOMIC-NEXT:  .LBB12_1: # %atomicrmw.start738; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB12_2 Depth=1739; XTENSA-ATOMIC-NEXT:    or a15, a7, a7740; XTENSA-ATOMIC-NEXT:    beqi a6, 1, .LBB12_4741; XTENSA-ATOMIC-NEXT:  .LBB12_2: # %atomicrmw.start742; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=1743; XTENSA-ATOMIC-NEXT:    and a7, a15, a11744; XTENSA-ATOMIC-NEXT:    sub a6, a15, a9745; XTENSA-ATOMIC-NEXT:    and a6, a6, a10746; XTENSA-ATOMIC-NEXT:    or a7, a7, a6747; XTENSA-ATOMIC-NEXT:    wsr a15, scompare1748; XTENSA-ATOMIC-NEXT:    s32c1i a7, a12, 0749; XTENSA-ATOMIC-NEXT:    or a6, a14, a14750; XTENSA-ATOMIC-NEXT:    beq a7, a15, .LBB12_1751; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start752; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB12_2 Depth=1753; XTENSA-ATOMIC-NEXT:    or a6, a13, a13754; XTENSA-ATOMIC-NEXT:    j .LBB12_1755; XTENSA-ATOMIC-NEXT:  .LBB12_4: # %atomicrmw.end756; XTENSA-ATOMIC-NEXT:    ssr a8757; XTENSA-ATOMIC-NEXT:    srl a2, a7758; XTENSA-ATOMIC-NEXT:    retw759  %res = atomicrmw sub ptr %a, i8 %b release760  ret i8 %res761}762 763define i8 @atomicrmw_sub_i8_acq_rel(ptr %a, i8 %b) nounwind {764; XTENSA-LABEL: atomicrmw_sub_i8_acq_rel:765; XTENSA:       # %bb.0:766; XTENSA-NEXT:    entry a1, 32767; XTENSA-NEXT:    or a11, a3, a3768; XTENSA-NEXT:    or a10, a2, a2769; XTENSA-NEXT:    movi a12, 4770; XTENSA-NEXT:    l32r a8, .LCPI13_0771; XTENSA-NEXT:    callx8 a8772; XTENSA-NEXT:    or a2, a10, a10773; XTENSA-NEXT:    retw774;775; XTENSA-ATOMIC-LABEL: atomicrmw_sub_i8_acq_rel:776; XTENSA-ATOMIC:       # %bb.0:777; XTENSA-ATOMIC-NEXT:    entry a1, 32778; XTENSA-ATOMIC-NEXT:    movi a10, 255779; XTENSA-ATOMIC-NEXT:    and a9, a3, a10780; XTENSA-ATOMIC-NEXT:    slli a8, a2, 3781; XTENSA-ATOMIC-NEXT:    movi a11, 24782; XTENSA-ATOMIC-NEXT:    and a8, a8, a11783; XTENSA-ATOMIC-NEXT:    ssl a8784; XTENSA-ATOMIC-NEXT:    sll a9, a9785; XTENSA-ATOMIC-NEXT:    ssl a8786; XTENSA-ATOMIC-NEXT:    sll a10, a10787; XTENSA-ATOMIC-NEXT:    movi a11, -1788; XTENSA-ATOMIC-NEXT:    xor a11, a10, a11789; XTENSA-ATOMIC-NEXT:    movi a12, -4790; XTENSA-ATOMIC-NEXT:    and a12, a2, a12791; XTENSA-ATOMIC-NEXT:    memw792; XTENSA-ATOMIC-NEXT:    l32i a15, a12, 0793; XTENSA-ATOMIC-NEXT:    movi a13, 0794; XTENSA-ATOMIC-NEXT:    movi a14, 1795; XTENSA-ATOMIC-NEXT:    j .LBB13_2796; XTENSA-ATOMIC-NEXT:  .LBB13_1: # %atomicrmw.start797; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB13_2 Depth=1798; XTENSA-ATOMIC-NEXT:    or a15, a7, a7799; XTENSA-ATOMIC-NEXT:    beqi a6, 1, .LBB13_4800; XTENSA-ATOMIC-NEXT:  .LBB13_2: # %atomicrmw.start801; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=1802; XTENSA-ATOMIC-NEXT:    and a7, a15, a11803; XTENSA-ATOMIC-NEXT:    sub a6, a15, a9804; XTENSA-ATOMIC-NEXT:    and a6, a6, a10805; XTENSA-ATOMIC-NEXT:    or a7, a7, a6806; XTENSA-ATOMIC-NEXT:    wsr a15, scompare1807; XTENSA-ATOMIC-NEXT:    s32c1i a7, a12, 0808; XTENSA-ATOMIC-NEXT:    or a6, a14, a14809; XTENSA-ATOMIC-NEXT:    beq a7, a15, .LBB13_1810; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start811; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB13_2 Depth=1812; XTENSA-ATOMIC-NEXT:    or a6, a13, a13813; XTENSA-ATOMIC-NEXT:    j .LBB13_1814; XTENSA-ATOMIC-NEXT:  .LBB13_4: # %atomicrmw.end815; XTENSA-ATOMIC-NEXT:    ssr a8816; XTENSA-ATOMIC-NEXT:    srl a2, a7817; XTENSA-ATOMIC-NEXT:    memw818; XTENSA-ATOMIC-NEXT:    retw819  %res = atomicrmw sub ptr %a, i8 %b acq_rel820  ret i8 %res821}822 823define i8 @atomicrmw_sub_i8_seq_cst(ptr %a, i8 %b) nounwind {824; XTENSA-LABEL: atomicrmw_sub_i8_seq_cst:825; XTENSA:       # %bb.0:826; XTENSA-NEXT:    entry a1, 32827; XTENSA-NEXT:    or a11, a3, a3828; XTENSA-NEXT:    or a10, a2, a2829; XTENSA-NEXT:    movi a12, 5830; XTENSA-NEXT:    l32r a8, .LCPI14_0831; XTENSA-NEXT:    callx8 a8832; XTENSA-NEXT:    or a2, a10, a10833; XTENSA-NEXT:    retw834;835; XTENSA-ATOMIC-LABEL: atomicrmw_sub_i8_seq_cst:836; XTENSA-ATOMIC:       # %bb.0:837; XTENSA-ATOMIC-NEXT:    entry a1, 32838; XTENSA-ATOMIC-NEXT:    movi a10, 255839; XTENSA-ATOMIC-NEXT:    and a9, a3, a10840; XTENSA-ATOMIC-NEXT:    slli a8, a2, 3841; XTENSA-ATOMIC-NEXT:    movi a11, 24842; XTENSA-ATOMIC-NEXT:    and a8, a8, a11843; XTENSA-ATOMIC-NEXT:    ssl a8844; XTENSA-ATOMIC-NEXT:    sll a9, a9845; XTENSA-ATOMIC-NEXT:    ssl a8846; XTENSA-ATOMIC-NEXT:    sll a10, a10847; XTENSA-ATOMIC-NEXT:    movi a11, -1848; XTENSA-ATOMIC-NEXT:    xor a11, a10, a11849; XTENSA-ATOMIC-NEXT:    movi a12, -4850; XTENSA-ATOMIC-NEXT:    and a12, a2, a12851; XTENSA-ATOMIC-NEXT:    memw852; XTENSA-ATOMIC-NEXT:    l32i a15, a12, 0853; XTENSA-ATOMIC-NEXT:    movi a13, 0854; XTENSA-ATOMIC-NEXT:    movi a14, 1855; XTENSA-ATOMIC-NEXT:    j .LBB14_2856; XTENSA-ATOMIC-NEXT:  .LBB14_1: # %atomicrmw.start857; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB14_2 Depth=1858; XTENSA-ATOMIC-NEXT:    or a15, a7, a7859; XTENSA-ATOMIC-NEXT:    beqi a6, 1, .LBB14_4860; XTENSA-ATOMIC-NEXT:  .LBB14_2: # %atomicrmw.start861; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=1862; XTENSA-ATOMIC-NEXT:    and a7, a15, a11863; XTENSA-ATOMIC-NEXT:    sub a6, a15, a9864; XTENSA-ATOMIC-NEXT:    and a6, a6, a10865; XTENSA-ATOMIC-NEXT:    or a7, a7, a6866; XTENSA-ATOMIC-NEXT:    wsr a15, scompare1867; XTENSA-ATOMIC-NEXT:    s32c1i a7, a12, 0868; XTENSA-ATOMIC-NEXT:    or a6, a14, a14869; XTENSA-ATOMIC-NEXT:    beq a7, a15, .LBB14_1870; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start871; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB14_2 Depth=1872; XTENSA-ATOMIC-NEXT:    or a6, a13, a13873; XTENSA-ATOMIC-NEXT:    j .LBB14_1874; XTENSA-ATOMIC-NEXT:  .LBB14_4: # %atomicrmw.end875; XTENSA-ATOMIC-NEXT:    ssr a8876; XTENSA-ATOMIC-NEXT:    srl a2, a7877; XTENSA-ATOMIC-NEXT:    memw878; XTENSA-ATOMIC-NEXT:    retw879  %res = atomicrmw sub ptr %a, i8 %b seq_cst880  ret i8 %res881}882 883define i8 @atomicrmw_and_i8_monotonic(ptr %a, i8 %b) nounwind {884; XTENSA-LABEL: atomicrmw_and_i8_monotonic:885; XTENSA:       # %bb.0:886; XTENSA-NEXT:    entry a1, 32887; XTENSA-NEXT:    or a11, a3, a3888; XTENSA-NEXT:    or a10, a2, a2889; XTENSA-NEXT:    movi a12, 0890; XTENSA-NEXT:    l32r a8, .LCPI15_0891; XTENSA-NEXT:    callx8 a8892; XTENSA-NEXT:    or a2, a10, a10893; XTENSA-NEXT:    retw894;895; XTENSA-ATOMIC-LABEL: atomicrmw_and_i8_monotonic:896; XTENSA-ATOMIC:       # %bb.0:897; XTENSA-ATOMIC-NEXT:    entry a1, 32898; XTENSA-ATOMIC-NEXT:    movi a9, 255899; XTENSA-ATOMIC-NEXT:    and a10, a3, a9900; XTENSA-ATOMIC-NEXT:    slli a8, a2, 3901; XTENSA-ATOMIC-NEXT:    movi a11, 24902; XTENSA-ATOMIC-NEXT:    and a8, a8, a11903; XTENSA-ATOMIC-NEXT:    ssl a8904; XTENSA-ATOMIC-NEXT:    sll a10, a10905; XTENSA-ATOMIC-NEXT:    ssl a8906; XTENSA-ATOMIC-NEXT:    sll a9, a9907; XTENSA-ATOMIC-NEXT:    movi a11, -1908; XTENSA-ATOMIC-NEXT:    xor a9, a9, a11909; XTENSA-ATOMIC-NEXT:    or a9, a10, a9910; XTENSA-ATOMIC-NEXT:    movi a10, -4911; XTENSA-ATOMIC-NEXT:    and a10, a2, a10912; XTENSA-ATOMIC-NEXT:    l32i a14, a10, 0913; XTENSA-ATOMIC-NEXT:    movi a11, 0914; XTENSA-ATOMIC-NEXT:    movi a12, 1915; XTENSA-ATOMIC-NEXT:    j .LBB15_2916; XTENSA-ATOMIC-NEXT:  .LBB15_1: # %atomicrmw.start917; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB15_2 Depth=1918; XTENSA-ATOMIC-NEXT:    or a14, a13, a13919; XTENSA-ATOMIC-NEXT:    beqi a15, 1, .LBB15_4920; XTENSA-ATOMIC-NEXT:  .LBB15_2: # %atomicrmw.start921; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=1922; XTENSA-ATOMIC-NEXT:    and a13, a14, a9923; XTENSA-ATOMIC-NEXT:    wsr a14, scompare1924; XTENSA-ATOMIC-NEXT:    s32c1i a13, a10, 0925; XTENSA-ATOMIC-NEXT:    or a15, a12, a12926; XTENSA-ATOMIC-NEXT:    beq a13, a14, .LBB15_1927; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start928; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB15_2 Depth=1929; XTENSA-ATOMIC-NEXT:    or a15, a11, a11930; XTENSA-ATOMIC-NEXT:    j .LBB15_1931; XTENSA-ATOMIC-NEXT:  .LBB15_4: # %atomicrmw.end932; XTENSA-ATOMIC-NEXT:    ssr a8933; XTENSA-ATOMIC-NEXT:    srl a2, a13934; XTENSA-ATOMIC-NEXT:    retw935  %res = atomicrmw and ptr %a, i8 %b monotonic936  ret i8 %res937}938 939define i8 @atomicrmw_and_i8_acquire(ptr %a, i8 %b) nounwind {940; XTENSA-LABEL: atomicrmw_and_i8_acquire:941; XTENSA:       # %bb.0:942; XTENSA-NEXT:    entry a1, 32943; XTENSA-NEXT:    or a11, a3, a3944; XTENSA-NEXT:    or a10, a2, a2945; XTENSA-NEXT:    movi a12, 2946; XTENSA-NEXT:    l32r a8, .LCPI16_0947; XTENSA-NEXT:    callx8 a8948; XTENSA-NEXT:    or a2, a10, a10949; XTENSA-NEXT:    retw950;951; XTENSA-ATOMIC-LABEL: atomicrmw_and_i8_acquire:952; XTENSA-ATOMIC:       # %bb.0:953; XTENSA-ATOMIC-NEXT:    entry a1, 32954; XTENSA-ATOMIC-NEXT:    movi a9, 255955; XTENSA-ATOMIC-NEXT:    and a10, a3, a9956; XTENSA-ATOMIC-NEXT:    slli a8, a2, 3957; XTENSA-ATOMIC-NEXT:    movi a11, 24958; XTENSA-ATOMIC-NEXT:    and a8, a8, a11959; XTENSA-ATOMIC-NEXT:    ssl a8960; XTENSA-ATOMIC-NEXT:    sll a10, a10961; XTENSA-ATOMIC-NEXT:    ssl a8962; XTENSA-ATOMIC-NEXT:    sll a9, a9963; XTENSA-ATOMIC-NEXT:    movi a11, -1964; XTENSA-ATOMIC-NEXT:    xor a9, a9, a11965; XTENSA-ATOMIC-NEXT:    or a9, a10, a9966; XTENSA-ATOMIC-NEXT:    movi a10, -4967; XTENSA-ATOMIC-NEXT:    and a10, a2, a10968; XTENSA-ATOMIC-NEXT:    l32i a14, a10, 0969; XTENSA-ATOMIC-NEXT:    movi a11, 0970; XTENSA-ATOMIC-NEXT:    movi a12, 1971; XTENSA-ATOMIC-NEXT:    j .LBB16_2972; XTENSA-ATOMIC-NEXT:  .LBB16_1: # %atomicrmw.start973; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB16_2 Depth=1974; XTENSA-ATOMIC-NEXT:    or a14, a13, a13975; XTENSA-ATOMIC-NEXT:    beqi a15, 1, .LBB16_4976; XTENSA-ATOMIC-NEXT:  .LBB16_2: # %atomicrmw.start977; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=1978; XTENSA-ATOMIC-NEXT:    and a13, a14, a9979; XTENSA-ATOMIC-NEXT:    wsr a14, scompare1980; XTENSA-ATOMIC-NEXT:    s32c1i a13, a10, 0981; XTENSA-ATOMIC-NEXT:    or a15, a12, a12982; XTENSA-ATOMIC-NEXT:    beq a13, a14, .LBB16_1983; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start984; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB16_2 Depth=1985; XTENSA-ATOMIC-NEXT:    or a15, a11, a11986; XTENSA-ATOMIC-NEXT:    j .LBB16_1987; XTENSA-ATOMIC-NEXT:  .LBB16_4: # %atomicrmw.end988; XTENSA-ATOMIC-NEXT:    ssr a8989; XTENSA-ATOMIC-NEXT:    srl a2, a13990; XTENSA-ATOMIC-NEXT:    memw991; XTENSA-ATOMIC-NEXT:    retw992  %res = atomicrmw and ptr %a, i8 %b acquire993  ret i8 %res994}995 996define i8 @atomicrmw_and_i8_release(ptr %a, i8 %b) nounwind {997; XTENSA-LABEL: atomicrmw_and_i8_release:998; XTENSA:       # %bb.0:999; XTENSA-NEXT:    entry a1, 321000; XTENSA-NEXT:    or a11, a3, a31001; XTENSA-NEXT:    or a10, a2, a21002; XTENSA-NEXT:    movi a12, 31003; XTENSA-NEXT:    l32r a8, .LCPI17_01004; XTENSA-NEXT:    callx8 a81005; XTENSA-NEXT:    or a2, a10, a101006; XTENSA-NEXT:    retw1007;1008; XTENSA-ATOMIC-LABEL: atomicrmw_and_i8_release:1009; XTENSA-ATOMIC:       # %bb.0:1010; XTENSA-ATOMIC-NEXT:    entry a1, 321011; XTENSA-ATOMIC-NEXT:    movi a9, 2551012; XTENSA-ATOMIC-NEXT:    and a10, a3, a91013; XTENSA-ATOMIC-NEXT:    slli a8, a2, 31014; XTENSA-ATOMIC-NEXT:    movi a11, 241015; XTENSA-ATOMIC-NEXT:    and a8, a8, a111016; XTENSA-ATOMIC-NEXT:    ssl a81017; XTENSA-ATOMIC-NEXT:    sll a10, a101018; XTENSA-ATOMIC-NEXT:    ssl a81019; XTENSA-ATOMIC-NEXT:    sll a9, a91020; XTENSA-ATOMIC-NEXT:    movi a11, -11021; XTENSA-ATOMIC-NEXT:    xor a9, a9, a111022; XTENSA-ATOMIC-NEXT:    or a9, a10, a91023; XTENSA-ATOMIC-NEXT:    movi a10, -41024; XTENSA-ATOMIC-NEXT:    and a10, a2, a101025; XTENSA-ATOMIC-NEXT:    memw1026; XTENSA-ATOMIC-NEXT:    l32i a14, a10, 01027; XTENSA-ATOMIC-NEXT:    movi a11, 01028; XTENSA-ATOMIC-NEXT:    movi a12, 11029; XTENSA-ATOMIC-NEXT:    j .LBB17_21030; XTENSA-ATOMIC-NEXT:  .LBB17_1: # %atomicrmw.start1031; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB17_2 Depth=11032; XTENSA-ATOMIC-NEXT:    or a14, a13, a131033; XTENSA-ATOMIC-NEXT:    beqi a15, 1, .LBB17_41034; XTENSA-ATOMIC-NEXT:  .LBB17_2: # %atomicrmw.start1035; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=11036; XTENSA-ATOMIC-NEXT:    and a13, a14, a91037; XTENSA-ATOMIC-NEXT:    wsr a14, scompare11038; XTENSA-ATOMIC-NEXT:    s32c1i a13, a10, 01039; XTENSA-ATOMIC-NEXT:    or a15, a12, a121040; XTENSA-ATOMIC-NEXT:    beq a13, a14, .LBB17_11041; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start1042; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB17_2 Depth=11043; XTENSA-ATOMIC-NEXT:    or a15, a11, a111044; XTENSA-ATOMIC-NEXT:    j .LBB17_11045; XTENSA-ATOMIC-NEXT:  .LBB17_4: # %atomicrmw.end1046; XTENSA-ATOMIC-NEXT:    ssr a81047; XTENSA-ATOMIC-NEXT:    srl a2, a131048; XTENSA-ATOMIC-NEXT:    retw1049  %res = atomicrmw and ptr %a, i8 %b release1050  ret i8 %res1051}1052 1053define i8 @atomicrmw_and_i8_acq_rel(ptr %a, i8 %b) nounwind {1054; XTENSA-LABEL: atomicrmw_and_i8_acq_rel:1055; XTENSA:       # %bb.0:1056; XTENSA-NEXT:    entry a1, 321057; XTENSA-NEXT:    or a11, a3, a31058; XTENSA-NEXT:    or a10, a2, a21059; XTENSA-NEXT:    movi a12, 41060; XTENSA-NEXT:    l32r a8, .LCPI18_01061; XTENSA-NEXT:    callx8 a81062; XTENSA-NEXT:    or a2, a10, a101063; XTENSA-NEXT:    retw1064;1065; XTENSA-ATOMIC-LABEL: atomicrmw_and_i8_acq_rel:1066; XTENSA-ATOMIC:       # %bb.0:1067; XTENSA-ATOMIC-NEXT:    entry a1, 321068; XTENSA-ATOMIC-NEXT:    movi a9, 2551069; XTENSA-ATOMIC-NEXT:    and a10, a3, a91070; XTENSA-ATOMIC-NEXT:    slli a8, a2, 31071; XTENSA-ATOMIC-NEXT:    movi a11, 241072; XTENSA-ATOMIC-NEXT:    and a8, a8, a111073; XTENSA-ATOMIC-NEXT:    ssl a81074; XTENSA-ATOMIC-NEXT:    sll a10, a101075; XTENSA-ATOMIC-NEXT:    ssl a81076; XTENSA-ATOMIC-NEXT:    sll a9, a91077; XTENSA-ATOMIC-NEXT:    movi a11, -11078; XTENSA-ATOMIC-NEXT:    xor a9, a9, a111079; XTENSA-ATOMIC-NEXT:    or a9, a10, a91080; XTENSA-ATOMIC-NEXT:    movi a10, -41081; XTENSA-ATOMIC-NEXT:    and a10, a2, a101082; XTENSA-ATOMIC-NEXT:    memw1083; XTENSA-ATOMIC-NEXT:    l32i a14, a10, 01084; XTENSA-ATOMIC-NEXT:    movi a11, 01085; XTENSA-ATOMIC-NEXT:    movi a12, 11086; XTENSA-ATOMIC-NEXT:    j .LBB18_21087; XTENSA-ATOMIC-NEXT:  .LBB18_1: # %atomicrmw.start1088; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB18_2 Depth=11089; XTENSA-ATOMIC-NEXT:    or a14, a13, a131090; XTENSA-ATOMIC-NEXT:    beqi a15, 1, .LBB18_41091; XTENSA-ATOMIC-NEXT:  .LBB18_2: # %atomicrmw.start1092; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=11093; XTENSA-ATOMIC-NEXT:    and a13, a14, a91094; XTENSA-ATOMIC-NEXT:    wsr a14, scompare11095; XTENSA-ATOMIC-NEXT:    s32c1i a13, a10, 01096; XTENSA-ATOMIC-NEXT:    or a15, a12, a121097; XTENSA-ATOMIC-NEXT:    beq a13, a14, .LBB18_11098; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start1099; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB18_2 Depth=11100; XTENSA-ATOMIC-NEXT:    or a15, a11, a111101; XTENSA-ATOMIC-NEXT:    j .LBB18_11102; XTENSA-ATOMIC-NEXT:  .LBB18_4: # %atomicrmw.end1103; XTENSA-ATOMIC-NEXT:    ssr a81104; XTENSA-ATOMIC-NEXT:    srl a2, a131105; XTENSA-ATOMIC-NEXT:    memw1106; XTENSA-ATOMIC-NEXT:    retw1107  %res = atomicrmw and ptr %a, i8 %b acq_rel1108  ret i8 %res1109}1110 1111define i8 @atomicrmw_and_i8_seq_cst(ptr %a, i8 %b) nounwind {1112; XTENSA-LABEL: atomicrmw_and_i8_seq_cst:1113; XTENSA:       # %bb.0:1114; XTENSA-NEXT:    entry a1, 321115; XTENSA-NEXT:    or a11, a3, a31116; XTENSA-NEXT:    or a10, a2, a21117; XTENSA-NEXT:    movi a12, 51118; XTENSA-NEXT:    l32r a8, .LCPI19_01119; XTENSA-NEXT:    callx8 a81120; XTENSA-NEXT:    or a2, a10, a101121; XTENSA-NEXT:    retw1122;1123; XTENSA-ATOMIC-LABEL: atomicrmw_and_i8_seq_cst:1124; XTENSA-ATOMIC:       # %bb.0:1125; XTENSA-ATOMIC-NEXT:    entry a1, 321126; XTENSA-ATOMIC-NEXT:    movi a9, 2551127; XTENSA-ATOMIC-NEXT:    and a10, a3, a91128; XTENSA-ATOMIC-NEXT:    slli a8, a2, 31129; XTENSA-ATOMIC-NEXT:    movi a11, 241130; XTENSA-ATOMIC-NEXT:    and a8, a8, a111131; XTENSA-ATOMIC-NEXT:    ssl a81132; XTENSA-ATOMIC-NEXT:    sll a10, a101133; XTENSA-ATOMIC-NEXT:    ssl a81134; XTENSA-ATOMIC-NEXT:    sll a9, a91135; XTENSA-ATOMIC-NEXT:    movi a11, -11136; XTENSA-ATOMIC-NEXT:    xor a9, a9, a111137; XTENSA-ATOMIC-NEXT:    or a9, a10, a91138; XTENSA-ATOMIC-NEXT:    movi a10, -41139; XTENSA-ATOMIC-NEXT:    and a10, a2, a101140; XTENSA-ATOMIC-NEXT:    memw1141; XTENSA-ATOMIC-NEXT:    l32i a14, a10, 01142; XTENSA-ATOMIC-NEXT:    movi a11, 01143; XTENSA-ATOMIC-NEXT:    movi a12, 11144; XTENSA-ATOMIC-NEXT:    j .LBB19_21145; XTENSA-ATOMIC-NEXT:  .LBB19_1: # %atomicrmw.start1146; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB19_2 Depth=11147; XTENSA-ATOMIC-NEXT:    or a14, a13, a131148; XTENSA-ATOMIC-NEXT:    beqi a15, 1, .LBB19_41149; XTENSA-ATOMIC-NEXT:  .LBB19_2: # %atomicrmw.start1150; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=11151; XTENSA-ATOMIC-NEXT:    and a13, a14, a91152; XTENSA-ATOMIC-NEXT:    wsr a14, scompare11153; XTENSA-ATOMIC-NEXT:    s32c1i a13, a10, 01154; XTENSA-ATOMIC-NEXT:    or a15, a12, a121155; XTENSA-ATOMIC-NEXT:    beq a13, a14, .LBB19_11156; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start1157; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB19_2 Depth=11158; XTENSA-ATOMIC-NEXT:    or a15, a11, a111159; XTENSA-ATOMIC-NEXT:    j .LBB19_11160; XTENSA-ATOMIC-NEXT:  .LBB19_4: # %atomicrmw.end1161; XTENSA-ATOMIC-NEXT:    ssr a81162; XTENSA-ATOMIC-NEXT:    srl a2, a131163; XTENSA-ATOMIC-NEXT:    memw1164; XTENSA-ATOMIC-NEXT:    retw1165  %res = atomicrmw and ptr %a, i8 %b seq_cst1166  ret i8 %res1167}1168 1169define i8 @atomicrmw_nand_i8_monotonic(ptr %a, i8 %b) nounwind {1170; XTENSA-LABEL: atomicrmw_nand_i8_monotonic:1171; XTENSA:       # %bb.0:1172; XTENSA-NEXT:    entry a1, 321173; XTENSA-NEXT:    or a11, a3, a31174; XTENSA-NEXT:    or a10, a2, a21175; XTENSA-NEXT:    movi a12, 01176; XTENSA-NEXT:    l32r a8, .LCPI20_01177; XTENSA-NEXT:    callx8 a81178; XTENSA-NEXT:    or a2, a10, a101179; XTENSA-NEXT:    retw1180;1181; XTENSA-ATOMIC-LABEL: atomicrmw_nand_i8_monotonic:1182; XTENSA-ATOMIC:       # %bb.0:1183; XTENSA-ATOMIC-NEXT:    entry a1, 321184; XTENSA-ATOMIC-NEXT:    movi a10, 2551185; XTENSA-ATOMIC-NEXT:    and a9, a3, a101186; XTENSA-ATOMIC-NEXT:    slli a8, a2, 31187; XTENSA-ATOMIC-NEXT:    movi a11, 241188; XTENSA-ATOMIC-NEXT:    and a8, a8, a111189; XTENSA-ATOMIC-NEXT:    ssl a81190; XTENSA-ATOMIC-NEXT:    sll a9, a91191; XTENSA-ATOMIC-NEXT:    ssl a81192; XTENSA-ATOMIC-NEXT:    sll a10, a101193; XTENSA-ATOMIC-NEXT:    movi a11, -11194; XTENSA-ATOMIC-NEXT:    xor a12, a10, a111195; XTENSA-ATOMIC-NEXT:    movi a13, -41196; XTENSA-ATOMIC-NEXT:    and a13, a2, a131197; XTENSA-ATOMIC-NEXT:    l32i a7, a13, 01198; XTENSA-ATOMIC-NEXT:    movi a14, 01199; XTENSA-ATOMIC-NEXT:    movi a15, 11200; XTENSA-ATOMIC-NEXT:    j .LBB20_21201; XTENSA-ATOMIC-NEXT:  .LBB20_1: # %atomicrmw.start1202; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB20_2 Depth=11203; XTENSA-ATOMIC-NEXT:    or a7, a6, a61204; XTENSA-ATOMIC-NEXT:    beqi a5, 1, .LBB20_41205; XTENSA-ATOMIC-NEXT:  .LBB20_2: # %atomicrmw.start1206; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=11207; XTENSA-ATOMIC-NEXT:    and a6, a7, a121208; XTENSA-ATOMIC-NEXT:    and a5, a7, a91209; XTENSA-ATOMIC-NEXT:    xor a5, a5, a111210; XTENSA-ATOMIC-NEXT:    and a5, a5, a101211; XTENSA-ATOMIC-NEXT:    or a6, a6, a51212; XTENSA-ATOMIC-NEXT:    wsr a7, scompare11213; XTENSA-ATOMIC-NEXT:    s32c1i a6, a13, 01214; XTENSA-ATOMIC-NEXT:    or a5, a15, a151215; XTENSA-ATOMIC-NEXT:    beq a6, a7, .LBB20_11216; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start1217; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB20_2 Depth=11218; XTENSA-ATOMIC-NEXT:    or a5, a14, a141219; XTENSA-ATOMIC-NEXT:    j .LBB20_11220; XTENSA-ATOMIC-NEXT:  .LBB20_4: # %atomicrmw.end1221; XTENSA-ATOMIC-NEXT:    ssr a81222; XTENSA-ATOMIC-NEXT:    srl a2, a61223; XTENSA-ATOMIC-NEXT:    retw1224  %res = atomicrmw nand ptr %a, i8 %b monotonic1225  ret i8 %res1226}1227 1228define i8 @atomicrmw_nand_i8_acquire(ptr %a, i8 %b) nounwind {1229; XTENSA-LABEL: atomicrmw_nand_i8_acquire:1230; XTENSA:       # %bb.0:1231; XTENSA-NEXT:    entry a1, 321232; XTENSA-NEXT:    or a11, a3, a31233; XTENSA-NEXT:    or a10, a2, a21234; XTENSA-NEXT:    movi a12, 21235; XTENSA-NEXT:    l32r a8, .LCPI21_01236; XTENSA-NEXT:    callx8 a81237; XTENSA-NEXT:    or a2, a10, a101238; XTENSA-NEXT:    retw1239;1240; XTENSA-ATOMIC-LABEL: atomicrmw_nand_i8_acquire:1241; XTENSA-ATOMIC:       # %bb.0:1242; XTENSA-ATOMIC-NEXT:    entry a1, 321243; XTENSA-ATOMIC-NEXT:    movi a10, 2551244; XTENSA-ATOMIC-NEXT:    and a9, a3, a101245; XTENSA-ATOMIC-NEXT:    slli a8, a2, 31246; XTENSA-ATOMIC-NEXT:    movi a11, 241247; XTENSA-ATOMIC-NEXT:    and a8, a8, a111248; XTENSA-ATOMIC-NEXT:    ssl a81249; XTENSA-ATOMIC-NEXT:    sll a9, a91250; XTENSA-ATOMIC-NEXT:    ssl a81251; XTENSA-ATOMIC-NEXT:    sll a10, a101252; XTENSA-ATOMIC-NEXT:    movi a11, -11253; XTENSA-ATOMIC-NEXT:    xor a12, a10, a111254; XTENSA-ATOMIC-NEXT:    movi a13, -41255; XTENSA-ATOMIC-NEXT:    and a13, a2, a131256; XTENSA-ATOMIC-NEXT:    l32i a7, a13, 01257; XTENSA-ATOMIC-NEXT:    movi a14, 01258; XTENSA-ATOMIC-NEXT:    movi a15, 11259; XTENSA-ATOMIC-NEXT:    j .LBB21_21260; XTENSA-ATOMIC-NEXT:  .LBB21_1: # %atomicrmw.start1261; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB21_2 Depth=11262; XTENSA-ATOMIC-NEXT:    or a7, a6, a61263; XTENSA-ATOMIC-NEXT:    beqi a5, 1, .LBB21_41264; XTENSA-ATOMIC-NEXT:  .LBB21_2: # %atomicrmw.start1265; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=11266; XTENSA-ATOMIC-NEXT:    and a6, a7, a121267; XTENSA-ATOMIC-NEXT:    and a5, a7, a91268; XTENSA-ATOMIC-NEXT:    xor a5, a5, a111269; XTENSA-ATOMIC-NEXT:    and a5, a5, a101270; XTENSA-ATOMIC-NEXT:    or a6, a6, a51271; XTENSA-ATOMIC-NEXT:    wsr a7, scompare11272; XTENSA-ATOMIC-NEXT:    s32c1i a6, a13, 01273; XTENSA-ATOMIC-NEXT:    or a5, a15, a151274; XTENSA-ATOMIC-NEXT:    beq a6, a7, .LBB21_11275; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start1276; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB21_2 Depth=11277; XTENSA-ATOMIC-NEXT:    or a5, a14, a141278; XTENSA-ATOMIC-NEXT:    j .LBB21_11279; XTENSA-ATOMIC-NEXT:  .LBB21_4: # %atomicrmw.end1280; XTENSA-ATOMIC-NEXT:    ssr a81281; XTENSA-ATOMIC-NEXT:    srl a2, a61282; XTENSA-ATOMIC-NEXT:    memw1283; XTENSA-ATOMIC-NEXT:    retw1284  %res = atomicrmw nand ptr %a, i8 %b acquire1285  ret i8 %res1286}1287 1288define i8 @atomicrmw_nand_i8_release(ptr %a, i8 %b) nounwind {1289; XTENSA-LABEL: atomicrmw_nand_i8_release:1290; XTENSA:       # %bb.0:1291; XTENSA-NEXT:    entry a1, 321292; XTENSA-NEXT:    or a11, a3, a31293; XTENSA-NEXT:    or a10, a2, a21294; XTENSA-NEXT:    movi a12, 31295; XTENSA-NEXT:    l32r a8, .LCPI22_01296; XTENSA-NEXT:    callx8 a81297; XTENSA-NEXT:    or a2, a10, a101298; XTENSA-NEXT:    retw1299;1300; XTENSA-ATOMIC-LABEL: atomicrmw_nand_i8_release:1301; XTENSA-ATOMIC:       # %bb.0:1302; XTENSA-ATOMIC-NEXT:    entry a1, 321303; XTENSA-ATOMIC-NEXT:    movi a10, 2551304; XTENSA-ATOMIC-NEXT:    and a9, a3, a101305; XTENSA-ATOMIC-NEXT:    slli a8, a2, 31306; XTENSA-ATOMIC-NEXT:    movi a11, 241307; XTENSA-ATOMIC-NEXT:    and a8, a8, a111308; XTENSA-ATOMIC-NEXT:    ssl a81309; XTENSA-ATOMIC-NEXT:    sll a9, a91310; XTENSA-ATOMIC-NEXT:    ssl a81311; XTENSA-ATOMIC-NEXT:    sll a10, a101312; XTENSA-ATOMIC-NEXT:    movi a11, -11313; XTENSA-ATOMIC-NEXT:    xor a12, a10, a111314; XTENSA-ATOMIC-NEXT:    movi a13, -41315; XTENSA-ATOMIC-NEXT:    and a13, a2, a131316; XTENSA-ATOMIC-NEXT:    memw1317; XTENSA-ATOMIC-NEXT:    l32i a7, a13, 01318; XTENSA-ATOMIC-NEXT:    movi a14, 01319; XTENSA-ATOMIC-NEXT:    movi a15, 11320; XTENSA-ATOMIC-NEXT:    j .LBB22_21321; XTENSA-ATOMIC-NEXT:  .LBB22_1: # %atomicrmw.start1322; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB22_2 Depth=11323; XTENSA-ATOMIC-NEXT:    or a7, a6, a61324; XTENSA-ATOMIC-NEXT:    beqi a5, 1, .LBB22_41325; XTENSA-ATOMIC-NEXT:  .LBB22_2: # %atomicrmw.start1326; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=11327; XTENSA-ATOMIC-NEXT:    and a6, a7, a121328; XTENSA-ATOMIC-NEXT:    and a5, a7, a91329; XTENSA-ATOMIC-NEXT:    xor a5, a5, a111330; XTENSA-ATOMIC-NEXT:    and a5, a5, a101331; XTENSA-ATOMIC-NEXT:    or a6, a6, a51332; XTENSA-ATOMIC-NEXT:    wsr a7, scompare11333; XTENSA-ATOMIC-NEXT:    s32c1i a6, a13, 01334; XTENSA-ATOMIC-NEXT:    or a5, a15, a151335; XTENSA-ATOMIC-NEXT:    beq a6, a7, .LBB22_11336; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start1337; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB22_2 Depth=11338; XTENSA-ATOMIC-NEXT:    or a5, a14, a141339; XTENSA-ATOMIC-NEXT:    j .LBB22_11340; XTENSA-ATOMIC-NEXT:  .LBB22_4: # %atomicrmw.end1341; XTENSA-ATOMIC-NEXT:    ssr a81342; XTENSA-ATOMIC-NEXT:    srl a2, a61343; XTENSA-ATOMIC-NEXT:    retw1344  %res = atomicrmw nand ptr %a, i8 %b release1345  ret i8 %res1346}1347 1348define i8 @atomicrmw_nand_i8_acq_rel(ptr %a, i8 %b) nounwind {1349; XTENSA-LABEL: atomicrmw_nand_i8_acq_rel:1350; XTENSA:       # %bb.0:1351; XTENSA-NEXT:    entry a1, 321352; XTENSA-NEXT:    or a11, a3, a31353; XTENSA-NEXT:    or a10, a2, a21354; XTENSA-NEXT:    movi a12, 41355; XTENSA-NEXT:    l32r a8, .LCPI23_01356; XTENSA-NEXT:    callx8 a81357; XTENSA-NEXT:    or a2, a10, a101358; XTENSA-NEXT:    retw1359;1360; XTENSA-ATOMIC-LABEL: atomicrmw_nand_i8_acq_rel:1361; XTENSA-ATOMIC:       # %bb.0:1362; XTENSA-ATOMIC-NEXT:    entry a1, 321363; XTENSA-ATOMIC-NEXT:    movi a10, 2551364; XTENSA-ATOMIC-NEXT:    and a9, a3, a101365; XTENSA-ATOMIC-NEXT:    slli a8, a2, 31366; XTENSA-ATOMIC-NEXT:    movi a11, 241367; XTENSA-ATOMIC-NEXT:    and a8, a8, a111368; XTENSA-ATOMIC-NEXT:    ssl a81369; XTENSA-ATOMIC-NEXT:    sll a9, a91370; XTENSA-ATOMIC-NEXT:    ssl a81371; XTENSA-ATOMIC-NEXT:    sll a10, a101372; XTENSA-ATOMIC-NEXT:    movi a11, -11373; XTENSA-ATOMIC-NEXT:    xor a12, a10, a111374; XTENSA-ATOMIC-NEXT:    movi a13, -41375; XTENSA-ATOMIC-NEXT:    and a13, a2, a131376; XTENSA-ATOMIC-NEXT:    memw1377; XTENSA-ATOMIC-NEXT:    l32i a7, a13, 01378; XTENSA-ATOMIC-NEXT:    movi a14, 01379; XTENSA-ATOMIC-NEXT:    movi a15, 11380; XTENSA-ATOMIC-NEXT:    j .LBB23_21381; XTENSA-ATOMIC-NEXT:  .LBB23_1: # %atomicrmw.start1382; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB23_2 Depth=11383; XTENSA-ATOMIC-NEXT:    or a7, a6, a61384; XTENSA-ATOMIC-NEXT:    beqi a5, 1, .LBB23_41385; XTENSA-ATOMIC-NEXT:  .LBB23_2: # %atomicrmw.start1386; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=11387; XTENSA-ATOMIC-NEXT:    and a6, a7, a121388; XTENSA-ATOMIC-NEXT:    and a5, a7, a91389; XTENSA-ATOMIC-NEXT:    xor a5, a5, a111390; XTENSA-ATOMIC-NEXT:    and a5, a5, a101391; XTENSA-ATOMIC-NEXT:    or a6, a6, a51392; XTENSA-ATOMIC-NEXT:    wsr a7, scompare11393; XTENSA-ATOMIC-NEXT:    s32c1i a6, a13, 01394; XTENSA-ATOMIC-NEXT:    or a5, a15, a151395; XTENSA-ATOMIC-NEXT:    beq a6, a7, .LBB23_11396; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start1397; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB23_2 Depth=11398; XTENSA-ATOMIC-NEXT:    or a5, a14, a141399; XTENSA-ATOMIC-NEXT:    j .LBB23_11400; XTENSA-ATOMIC-NEXT:  .LBB23_4: # %atomicrmw.end1401; XTENSA-ATOMIC-NEXT:    ssr a81402; XTENSA-ATOMIC-NEXT:    srl a2, a61403; XTENSA-ATOMIC-NEXT:    memw1404; XTENSA-ATOMIC-NEXT:    retw1405  %res = atomicrmw nand ptr %a, i8 %b acq_rel1406  ret i8 %res1407}1408 1409define i8 @atomicrmw_nand_i8_seq_cst(ptr %a, i8 %b) nounwind {1410; XTENSA-LABEL: atomicrmw_nand_i8_seq_cst:1411; XTENSA:       # %bb.0:1412; XTENSA-NEXT:    entry a1, 321413; XTENSA-NEXT:    or a11, a3, a31414; XTENSA-NEXT:    or a10, a2, a21415; XTENSA-NEXT:    movi a12, 51416; XTENSA-NEXT:    l32r a8, .LCPI24_01417; XTENSA-NEXT:    callx8 a81418; XTENSA-NEXT:    or a2, a10, a101419; XTENSA-NEXT:    retw1420;1421; XTENSA-ATOMIC-LABEL: atomicrmw_nand_i8_seq_cst:1422; XTENSA-ATOMIC:       # %bb.0:1423; XTENSA-ATOMIC-NEXT:    entry a1, 321424; XTENSA-ATOMIC-NEXT:    movi a10, 2551425; XTENSA-ATOMIC-NEXT:    and a9, a3, a101426; XTENSA-ATOMIC-NEXT:    slli a8, a2, 31427; XTENSA-ATOMIC-NEXT:    movi a11, 241428; XTENSA-ATOMIC-NEXT:    and a8, a8, a111429; XTENSA-ATOMIC-NEXT:    ssl a81430; XTENSA-ATOMIC-NEXT:    sll a9, a91431; XTENSA-ATOMIC-NEXT:    ssl a81432; XTENSA-ATOMIC-NEXT:    sll a10, a101433; XTENSA-ATOMIC-NEXT:    movi a11, -11434; XTENSA-ATOMIC-NEXT:    xor a12, a10, a111435; XTENSA-ATOMIC-NEXT:    movi a13, -41436; XTENSA-ATOMIC-NEXT:    and a13, a2, a131437; XTENSA-ATOMIC-NEXT:    memw1438; XTENSA-ATOMIC-NEXT:    l32i a7, a13, 01439; XTENSA-ATOMIC-NEXT:    movi a14, 01440; XTENSA-ATOMIC-NEXT:    movi a15, 11441; XTENSA-ATOMIC-NEXT:    j .LBB24_21442; XTENSA-ATOMIC-NEXT:  .LBB24_1: # %atomicrmw.start1443; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB24_2 Depth=11444; XTENSA-ATOMIC-NEXT:    or a7, a6, a61445; XTENSA-ATOMIC-NEXT:    beqi a5, 1, .LBB24_41446; XTENSA-ATOMIC-NEXT:  .LBB24_2: # %atomicrmw.start1447; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=11448; XTENSA-ATOMIC-NEXT:    and a6, a7, a121449; XTENSA-ATOMIC-NEXT:    and a5, a7, a91450; XTENSA-ATOMIC-NEXT:    xor a5, a5, a111451; XTENSA-ATOMIC-NEXT:    and a5, a5, a101452; XTENSA-ATOMIC-NEXT:    or a6, a6, a51453; XTENSA-ATOMIC-NEXT:    wsr a7, scompare11454; XTENSA-ATOMIC-NEXT:    s32c1i a6, a13, 01455; XTENSA-ATOMIC-NEXT:    or a5, a15, a151456; XTENSA-ATOMIC-NEXT:    beq a6, a7, .LBB24_11457; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start1458; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB24_2 Depth=11459; XTENSA-ATOMIC-NEXT:    or a5, a14, a141460; XTENSA-ATOMIC-NEXT:    j .LBB24_11461; XTENSA-ATOMIC-NEXT:  .LBB24_4: # %atomicrmw.end1462; XTENSA-ATOMIC-NEXT:    ssr a81463; XTENSA-ATOMIC-NEXT:    srl a2, a61464; XTENSA-ATOMIC-NEXT:    memw1465; XTENSA-ATOMIC-NEXT:    retw1466  %res = atomicrmw nand ptr %a, i8 %b seq_cst1467  ret i8 %res1468}1469 1470define i8 @atomicrmw_or_i8_monotonic(ptr %a, i8 %b) nounwind {1471; XTENSA-LABEL: atomicrmw_or_i8_monotonic:1472; XTENSA:       # %bb.0:1473; XTENSA-NEXT:    entry a1, 321474; XTENSA-NEXT:    or a11, a3, a31475; XTENSA-NEXT:    or a10, a2, a21476; XTENSA-NEXT:    movi a12, 01477; XTENSA-NEXT:    l32r a8, .LCPI25_01478; XTENSA-NEXT:    callx8 a81479; XTENSA-NEXT:    or a2, a10, a101480; XTENSA-NEXT:    retw1481;1482; XTENSA-ATOMIC-LABEL: atomicrmw_or_i8_monotonic:1483; XTENSA-ATOMIC:       # %bb.0:1484; XTENSA-ATOMIC-NEXT:    entry a1, 321485; XTENSA-ATOMIC-NEXT:    movi a8, 2551486; XTENSA-ATOMIC-NEXT:    and a9, a3, a81487; XTENSA-ATOMIC-NEXT:    slli a8, a2, 31488; XTENSA-ATOMIC-NEXT:    movi a10, 241489; XTENSA-ATOMIC-NEXT:    and a8, a8, a101490; XTENSA-ATOMIC-NEXT:    ssl a81491; XTENSA-ATOMIC-NEXT:    sll a9, a91492; XTENSA-ATOMIC-NEXT:    movi a10, -41493; XTENSA-ATOMIC-NEXT:    and a10, a2, a101494; XTENSA-ATOMIC-NEXT:    l32i a14, a10, 01495; XTENSA-ATOMIC-NEXT:    movi a11, 01496; XTENSA-ATOMIC-NEXT:    movi a12, 11497; XTENSA-ATOMIC-NEXT:    j .LBB25_21498; XTENSA-ATOMIC-NEXT:  .LBB25_1: # %atomicrmw.start1499; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB25_2 Depth=11500; XTENSA-ATOMIC-NEXT:    or a14, a13, a131501; XTENSA-ATOMIC-NEXT:    beqi a15, 1, .LBB25_41502; XTENSA-ATOMIC-NEXT:  .LBB25_2: # %atomicrmw.start1503; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=11504; XTENSA-ATOMIC-NEXT:    or a13, a14, a91505; XTENSA-ATOMIC-NEXT:    wsr a14, scompare11506; XTENSA-ATOMIC-NEXT:    s32c1i a13, a10, 01507; XTENSA-ATOMIC-NEXT:    or a15, a12, a121508; XTENSA-ATOMIC-NEXT:    beq a13, a14, .LBB25_11509; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start1510; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB25_2 Depth=11511; XTENSA-ATOMIC-NEXT:    or a15, a11, a111512; XTENSA-ATOMIC-NEXT:    j .LBB25_11513; XTENSA-ATOMIC-NEXT:  .LBB25_4: # %atomicrmw.end1514; XTENSA-ATOMIC-NEXT:    ssr a81515; XTENSA-ATOMIC-NEXT:    srl a2, a131516; XTENSA-ATOMIC-NEXT:    retw1517  %res = atomicrmw or ptr %a, i8 %b monotonic1518  ret i8 %res1519}1520 1521define i8 @atomicrmw_or_i8_acquire(ptr %a, i8 %b) nounwind {1522; XTENSA-LABEL: atomicrmw_or_i8_acquire:1523; XTENSA:       # %bb.0:1524; XTENSA-NEXT:    entry a1, 321525; XTENSA-NEXT:    or a11, a3, a31526; XTENSA-NEXT:    or a10, a2, a21527; XTENSA-NEXT:    movi a12, 21528; XTENSA-NEXT:    l32r a8, .LCPI26_01529; XTENSA-NEXT:    callx8 a81530; XTENSA-NEXT:    or a2, a10, a101531; XTENSA-NEXT:    retw1532;1533; XTENSA-ATOMIC-LABEL: atomicrmw_or_i8_acquire:1534; XTENSA-ATOMIC:       # %bb.0:1535; XTENSA-ATOMIC-NEXT:    entry a1, 321536; XTENSA-ATOMIC-NEXT:    movi a8, 2551537; XTENSA-ATOMIC-NEXT:    and a9, a3, a81538; XTENSA-ATOMIC-NEXT:    slli a8, a2, 31539; XTENSA-ATOMIC-NEXT:    movi a10, 241540; XTENSA-ATOMIC-NEXT:    and a8, a8, a101541; XTENSA-ATOMIC-NEXT:    ssl a81542; XTENSA-ATOMIC-NEXT:    sll a9, a91543; XTENSA-ATOMIC-NEXT:    movi a10, -41544; XTENSA-ATOMIC-NEXT:    and a10, a2, a101545; XTENSA-ATOMIC-NEXT:    l32i a14, a10, 01546; XTENSA-ATOMIC-NEXT:    movi a11, 01547; XTENSA-ATOMIC-NEXT:    movi a12, 11548; XTENSA-ATOMIC-NEXT:    j .LBB26_21549; XTENSA-ATOMIC-NEXT:  .LBB26_1: # %atomicrmw.start1550; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB26_2 Depth=11551; XTENSA-ATOMIC-NEXT:    or a14, a13, a131552; XTENSA-ATOMIC-NEXT:    beqi a15, 1, .LBB26_41553; XTENSA-ATOMIC-NEXT:  .LBB26_2: # %atomicrmw.start1554; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=11555; XTENSA-ATOMIC-NEXT:    or a13, a14, a91556; XTENSA-ATOMIC-NEXT:    wsr a14, scompare11557; XTENSA-ATOMIC-NEXT:    s32c1i a13, a10, 01558; XTENSA-ATOMIC-NEXT:    or a15, a12, a121559; XTENSA-ATOMIC-NEXT:    beq a13, a14, .LBB26_11560; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start1561; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB26_2 Depth=11562; XTENSA-ATOMIC-NEXT:    or a15, a11, a111563; XTENSA-ATOMIC-NEXT:    j .LBB26_11564; XTENSA-ATOMIC-NEXT:  .LBB26_4: # %atomicrmw.end1565; XTENSA-ATOMIC-NEXT:    ssr a81566; XTENSA-ATOMIC-NEXT:    srl a2, a131567; XTENSA-ATOMIC-NEXT:    memw1568; XTENSA-ATOMIC-NEXT:    retw1569  %res = atomicrmw or ptr %a, i8 %b acquire1570  ret i8 %res1571}1572 1573define i8 @atomicrmw_or_i8_release(ptr %a, i8 %b) nounwind {1574; XTENSA-LABEL: atomicrmw_or_i8_release:1575; XTENSA:       # %bb.0:1576; XTENSA-NEXT:    entry a1, 321577; XTENSA-NEXT:    or a11, a3, a31578; XTENSA-NEXT:    or a10, a2, a21579; XTENSA-NEXT:    movi a12, 31580; XTENSA-NEXT:    l32r a8, .LCPI27_01581; XTENSA-NEXT:    callx8 a81582; XTENSA-NEXT:    or a2, a10, a101583; XTENSA-NEXT:    retw1584;1585; XTENSA-ATOMIC-LABEL: atomicrmw_or_i8_release:1586; XTENSA-ATOMIC:       # %bb.0:1587; XTENSA-ATOMIC-NEXT:    entry a1, 321588; XTENSA-ATOMIC-NEXT:    movi a8, 2551589; XTENSA-ATOMIC-NEXT:    and a9, a3, a81590; XTENSA-ATOMIC-NEXT:    slli a8, a2, 31591; XTENSA-ATOMIC-NEXT:    movi a10, 241592; XTENSA-ATOMIC-NEXT:    and a8, a8, a101593; XTENSA-ATOMIC-NEXT:    ssl a81594; XTENSA-ATOMIC-NEXT:    sll a9, a91595; XTENSA-ATOMIC-NEXT:    movi a10, -41596; XTENSA-ATOMIC-NEXT:    and a10, a2, a101597; XTENSA-ATOMIC-NEXT:    memw1598; XTENSA-ATOMIC-NEXT:    l32i a14, a10, 01599; XTENSA-ATOMIC-NEXT:    movi a11, 01600; XTENSA-ATOMIC-NEXT:    movi a12, 11601; XTENSA-ATOMIC-NEXT:    j .LBB27_21602; XTENSA-ATOMIC-NEXT:  .LBB27_1: # %atomicrmw.start1603; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB27_2 Depth=11604; XTENSA-ATOMIC-NEXT:    or a14, a13, a131605; XTENSA-ATOMIC-NEXT:    beqi a15, 1, .LBB27_41606; XTENSA-ATOMIC-NEXT:  .LBB27_2: # %atomicrmw.start1607; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=11608; XTENSA-ATOMIC-NEXT:    or a13, a14, a91609; XTENSA-ATOMIC-NEXT:    wsr a14, scompare11610; XTENSA-ATOMIC-NEXT:    s32c1i a13, a10, 01611; XTENSA-ATOMIC-NEXT:    or a15, a12, a121612; XTENSA-ATOMIC-NEXT:    beq a13, a14, .LBB27_11613; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start1614; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB27_2 Depth=11615; XTENSA-ATOMIC-NEXT:    or a15, a11, a111616; XTENSA-ATOMIC-NEXT:    j .LBB27_11617; XTENSA-ATOMIC-NEXT:  .LBB27_4: # %atomicrmw.end1618; XTENSA-ATOMIC-NEXT:    ssr a81619; XTENSA-ATOMIC-NEXT:    srl a2, a131620; XTENSA-ATOMIC-NEXT:    retw1621  %res = atomicrmw or ptr %a, i8 %b release1622  ret i8 %res1623}1624 1625define i8 @atomicrmw_or_i8_acq_rel(ptr %a, i8 %b) nounwind {1626; XTENSA-LABEL: atomicrmw_or_i8_acq_rel:1627; XTENSA:       # %bb.0:1628; XTENSA-NEXT:    entry a1, 321629; XTENSA-NEXT:    or a11, a3, a31630; XTENSA-NEXT:    or a10, a2, a21631; XTENSA-NEXT:    movi a12, 41632; XTENSA-NEXT:    l32r a8, .LCPI28_01633; XTENSA-NEXT:    callx8 a81634; XTENSA-NEXT:    or a2, a10, a101635; XTENSA-NEXT:    retw1636;1637; XTENSA-ATOMIC-LABEL: atomicrmw_or_i8_acq_rel:1638; XTENSA-ATOMIC:       # %bb.0:1639; XTENSA-ATOMIC-NEXT:    entry a1, 321640; XTENSA-ATOMIC-NEXT:    movi a8, 2551641; XTENSA-ATOMIC-NEXT:    and a9, a3, a81642; XTENSA-ATOMIC-NEXT:    slli a8, a2, 31643; XTENSA-ATOMIC-NEXT:    movi a10, 241644; XTENSA-ATOMIC-NEXT:    and a8, a8, a101645; XTENSA-ATOMIC-NEXT:    ssl a81646; XTENSA-ATOMIC-NEXT:    sll a9, a91647; XTENSA-ATOMIC-NEXT:    movi a10, -41648; XTENSA-ATOMIC-NEXT:    and a10, a2, a101649; XTENSA-ATOMIC-NEXT:    memw1650; XTENSA-ATOMIC-NEXT:    l32i a14, a10, 01651; XTENSA-ATOMIC-NEXT:    movi a11, 01652; XTENSA-ATOMIC-NEXT:    movi a12, 11653; XTENSA-ATOMIC-NEXT:    j .LBB28_21654; XTENSA-ATOMIC-NEXT:  .LBB28_1: # %atomicrmw.start1655; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB28_2 Depth=11656; XTENSA-ATOMIC-NEXT:    or a14, a13, a131657; XTENSA-ATOMIC-NEXT:    beqi a15, 1, .LBB28_41658; XTENSA-ATOMIC-NEXT:  .LBB28_2: # %atomicrmw.start1659; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=11660; XTENSA-ATOMIC-NEXT:    or a13, a14, a91661; XTENSA-ATOMIC-NEXT:    wsr a14, scompare11662; XTENSA-ATOMIC-NEXT:    s32c1i a13, a10, 01663; XTENSA-ATOMIC-NEXT:    or a15, a12, a121664; XTENSA-ATOMIC-NEXT:    beq a13, a14, .LBB28_11665; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start1666; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB28_2 Depth=11667; XTENSA-ATOMIC-NEXT:    or a15, a11, a111668; XTENSA-ATOMIC-NEXT:    j .LBB28_11669; XTENSA-ATOMIC-NEXT:  .LBB28_4: # %atomicrmw.end1670; XTENSA-ATOMIC-NEXT:    ssr a81671; XTENSA-ATOMIC-NEXT:    srl a2, a131672; XTENSA-ATOMIC-NEXT:    memw1673; XTENSA-ATOMIC-NEXT:    retw1674  %res = atomicrmw or ptr %a, i8 %b acq_rel1675  ret i8 %res1676}1677 1678define i8 @atomicrmw_or_i8_seq_cst(ptr %a, i8 %b) nounwind {1679; XTENSA-LABEL: atomicrmw_or_i8_seq_cst:1680; XTENSA:       # %bb.0:1681; XTENSA-NEXT:    entry a1, 321682; XTENSA-NEXT:    or a11, a3, a31683; XTENSA-NEXT:    or a10, a2, a21684; XTENSA-NEXT:    movi a12, 51685; XTENSA-NEXT:    l32r a8, .LCPI29_01686; XTENSA-NEXT:    callx8 a81687; XTENSA-NEXT:    or a2, a10, a101688; XTENSA-NEXT:    retw1689;1690; XTENSA-ATOMIC-LABEL: atomicrmw_or_i8_seq_cst:1691; XTENSA-ATOMIC:       # %bb.0:1692; XTENSA-ATOMIC-NEXT:    entry a1, 321693; XTENSA-ATOMIC-NEXT:    movi a8, 2551694; XTENSA-ATOMIC-NEXT:    and a9, a3, a81695; XTENSA-ATOMIC-NEXT:    slli a8, a2, 31696; XTENSA-ATOMIC-NEXT:    movi a10, 241697; XTENSA-ATOMIC-NEXT:    and a8, a8, a101698; XTENSA-ATOMIC-NEXT:    ssl a81699; XTENSA-ATOMIC-NEXT:    sll a9, a91700; XTENSA-ATOMIC-NEXT:    movi a10, -41701; XTENSA-ATOMIC-NEXT:    and a10, a2, a101702; XTENSA-ATOMIC-NEXT:    memw1703; XTENSA-ATOMIC-NEXT:    l32i a14, a10, 01704; XTENSA-ATOMIC-NEXT:    movi a11, 01705; XTENSA-ATOMIC-NEXT:    movi a12, 11706; XTENSA-ATOMIC-NEXT:    j .LBB29_21707; XTENSA-ATOMIC-NEXT:  .LBB29_1: # %atomicrmw.start1708; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB29_2 Depth=11709; XTENSA-ATOMIC-NEXT:    or a14, a13, a131710; XTENSA-ATOMIC-NEXT:    beqi a15, 1, .LBB29_41711; XTENSA-ATOMIC-NEXT:  .LBB29_2: # %atomicrmw.start1712; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=11713; XTENSA-ATOMIC-NEXT:    or a13, a14, a91714; XTENSA-ATOMIC-NEXT:    wsr a14, scompare11715; XTENSA-ATOMIC-NEXT:    s32c1i a13, a10, 01716; XTENSA-ATOMIC-NEXT:    or a15, a12, a121717; XTENSA-ATOMIC-NEXT:    beq a13, a14, .LBB29_11718; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start1719; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB29_2 Depth=11720; XTENSA-ATOMIC-NEXT:    or a15, a11, a111721; XTENSA-ATOMIC-NEXT:    j .LBB29_11722; XTENSA-ATOMIC-NEXT:  .LBB29_4: # %atomicrmw.end1723; XTENSA-ATOMIC-NEXT:    ssr a81724; XTENSA-ATOMIC-NEXT:    srl a2, a131725; XTENSA-ATOMIC-NEXT:    memw1726; XTENSA-ATOMIC-NEXT:    retw1727  %res = atomicrmw or ptr %a, i8 %b seq_cst1728  ret i8 %res1729}1730 1731define i8 @atomicrmw_xor_i8_monotonic(ptr %a, i8 %b) nounwind {1732; XTENSA-LABEL: atomicrmw_xor_i8_monotonic:1733; XTENSA:       # %bb.0:1734; XTENSA-NEXT:    entry a1, 321735; XTENSA-NEXT:    or a11, a3, a31736; XTENSA-NEXT:    or a10, a2, a21737; XTENSA-NEXT:    movi a12, 01738; XTENSA-NEXT:    l32r a8, .LCPI30_01739; XTENSA-NEXT:    callx8 a81740; XTENSA-NEXT:    or a2, a10, a101741; XTENSA-NEXT:    retw1742;1743; XTENSA-ATOMIC-LABEL: atomicrmw_xor_i8_monotonic:1744; XTENSA-ATOMIC:       # %bb.0:1745; XTENSA-ATOMIC-NEXT:    entry a1, 321746; XTENSA-ATOMIC-NEXT:    movi a8, 2551747; XTENSA-ATOMIC-NEXT:    and a9, a3, a81748; XTENSA-ATOMIC-NEXT:    slli a8, a2, 31749; XTENSA-ATOMIC-NEXT:    movi a10, 241750; XTENSA-ATOMIC-NEXT:    and a8, a8, a101751; XTENSA-ATOMIC-NEXT:    ssl a81752; XTENSA-ATOMIC-NEXT:    sll a9, a91753; XTENSA-ATOMIC-NEXT:    movi a10, -41754; XTENSA-ATOMIC-NEXT:    and a10, a2, a101755; XTENSA-ATOMIC-NEXT:    l32i a14, a10, 01756; XTENSA-ATOMIC-NEXT:    movi a11, 01757; XTENSA-ATOMIC-NEXT:    movi a12, 11758; XTENSA-ATOMIC-NEXT:    j .LBB30_21759; XTENSA-ATOMIC-NEXT:  .LBB30_1: # %atomicrmw.start1760; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB30_2 Depth=11761; XTENSA-ATOMIC-NEXT:    or a14, a13, a131762; XTENSA-ATOMIC-NEXT:    beqi a15, 1, .LBB30_41763; XTENSA-ATOMIC-NEXT:  .LBB30_2: # %atomicrmw.start1764; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=11765; XTENSA-ATOMIC-NEXT:    xor a13, a14, a91766; XTENSA-ATOMIC-NEXT:    wsr a14, scompare11767; XTENSA-ATOMIC-NEXT:    s32c1i a13, a10, 01768; XTENSA-ATOMIC-NEXT:    or a15, a12, a121769; XTENSA-ATOMIC-NEXT:    beq a13, a14, .LBB30_11770; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start1771; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB30_2 Depth=11772; XTENSA-ATOMIC-NEXT:    or a15, a11, a111773; XTENSA-ATOMIC-NEXT:    j .LBB30_11774; XTENSA-ATOMIC-NEXT:  .LBB30_4: # %atomicrmw.end1775; XTENSA-ATOMIC-NEXT:    ssr a81776; XTENSA-ATOMIC-NEXT:    srl a2, a131777; XTENSA-ATOMIC-NEXT:    retw1778  %res = atomicrmw xor ptr %a, i8 %b monotonic1779  ret i8 %res1780}1781 1782define i8 @atomicrmw_xor_i8_acquire(ptr %a, i8 %b) nounwind {1783; XTENSA-LABEL: atomicrmw_xor_i8_acquire:1784; XTENSA:       # %bb.0:1785; XTENSA-NEXT:    entry a1, 321786; XTENSA-NEXT:    or a11, a3, a31787; XTENSA-NEXT:    or a10, a2, a21788; XTENSA-NEXT:    movi a12, 21789; XTENSA-NEXT:    l32r a8, .LCPI31_01790; XTENSA-NEXT:    callx8 a81791; XTENSA-NEXT:    or a2, a10, a101792; XTENSA-NEXT:    retw1793;1794; XTENSA-ATOMIC-LABEL: atomicrmw_xor_i8_acquire:1795; XTENSA-ATOMIC:       # %bb.0:1796; XTENSA-ATOMIC-NEXT:    entry a1, 321797; XTENSA-ATOMIC-NEXT:    movi a8, 2551798; XTENSA-ATOMIC-NEXT:    and a9, a3, a81799; XTENSA-ATOMIC-NEXT:    slli a8, a2, 31800; XTENSA-ATOMIC-NEXT:    movi a10, 241801; XTENSA-ATOMIC-NEXT:    and a8, a8, a101802; XTENSA-ATOMIC-NEXT:    ssl a81803; XTENSA-ATOMIC-NEXT:    sll a9, a91804; XTENSA-ATOMIC-NEXT:    movi a10, -41805; XTENSA-ATOMIC-NEXT:    and a10, a2, a101806; XTENSA-ATOMIC-NEXT:    l32i a14, a10, 01807; XTENSA-ATOMIC-NEXT:    movi a11, 01808; XTENSA-ATOMIC-NEXT:    movi a12, 11809; XTENSA-ATOMIC-NEXT:    j .LBB31_21810; XTENSA-ATOMIC-NEXT:  .LBB31_1: # %atomicrmw.start1811; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB31_2 Depth=11812; XTENSA-ATOMIC-NEXT:    or a14, a13, a131813; XTENSA-ATOMIC-NEXT:    beqi a15, 1, .LBB31_41814; XTENSA-ATOMIC-NEXT:  .LBB31_2: # %atomicrmw.start1815; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=11816; XTENSA-ATOMIC-NEXT:    xor a13, a14, a91817; XTENSA-ATOMIC-NEXT:    wsr a14, scompare11818; XTENSA-ATOMIC-NEXT:    s32c1i a13, a10, 01819; XTENSA-ATOMIC-NEXT:    or a15, a12, a121820; XTENSA-ATOMIC-NEXT:    beq a13, a14, .LBB31_11821; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start1822; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB31_2 Depth=11823; XTENSA-ATOMIC-NEXT:    or a15, a11, a111824; XTENSA-ATOMIC-NEXT:    j .LBB31_11825; XTENSA-ATOMIC-NEXT:  .LBB31_4: # %atomicrmw.end1826; XTENSA-ATOMIC-NEXT:    ssr a81827; XTENSA-ATOMIC-NEXT:    srl a2, a131828; XTENSA-ATOMIC-NEXT:    memw1829; XTENSA-ATOMIC-NEXT:    retw1830  %res = atomicrmw xor ptr %a, i8 %b acquire1831  ret i8 %res1832}1833 1834define i8 @atomicrmw_xor_i8_release(ptr %a, i8 %b) nounwind {1835; XTENSA-LABEL: atomicrmw_xor_i8_release:1836; XTENSA:       # %bb.0:1837; XTENSA-NEXT:    entry a1, 321838; XTENSA-NEXT:    or a11, a3, a31839; XTENSA-NEXT:    or a10, a2, a21840; XTENSA-NEXT:    movi a12, 31841; XTENSA-NEXT:    l32r a8, .LCPI32_01842; XTENSA-NEXT:    callx8 a81843; XTENSA-NEXT:    or a2, a10, a101844; XTENSA-NEXT:    retw1845;1846; XTENSA-ATOMIC-LABEL: atomicrmw_xor_i8_release:1847; XTENSA-ATOMIC:       # %bb.0:1848; XTENSA-ATOMIC-NEXT:    entry a1, 321849; XTENSA-ATOMIC-NEXT:    movi a8, 2551850; XTENSA-ATOMIC-NEXT:    and a9, a3, a81851; XTENSA-ATOMIC-NEXT:    slli a8, a2, 31852; XTENSA-ATOMIC-NEXT:    movi a10, 241853; XTENSA-ATOMIC-NEXT:    and a8, a8, a101854; XTENSA-ATOMIC-NEXT:    ssl a81855; XTENSA-ATOMIC-NEXT:    sll a9, a91856; XTENSA-ATOMIC-NEXT:    movi a10, -41857; XTENSA-ATOMIC-NEXT:    and a10, a2, a101858; XTENSA-ATOMIC-NEXT:    memw1859; XTENSA-ATOMIC-NEXT:    l32i a14, a10, 01860; XTENSA-ATOMIC-NEXT:    movi a11, 01861; XTENSA-ATOMIC-NEXT:    movi a12, 11862; XTENSA-ATOMIC-NEXT:    j .LBB32_21863; XTENSA-ATOMIC-NEXT:  .LBB32_1: # %atomicrmw.start1864; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB32_2 Depth=11865; XTENSA-ATOMIC-NEXT:    or a14, a13, a131866; XTENSA-ATOMIC-NEXT:    beqi a15, 1, .LBB32_41867; XTENSA-ATOMIC-NEXT:  .LBB32_2: # %atomicrmw.start1868; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=11869; XTENSA-ATOMIC-NEXT:    xor a13, a14, a91870; XTENSA-ATOMIC-NEXT:    wsr a14, scompare11871; XTENSA-ATOMIC-NEXT:    s32c1i a13, a10, 01872; XTENSA-ATOMIC-NEXT:    or a15, a12, a121873; XTENSA-ATOMIC-NEXT:    beq a13, a14, .LBB32_11874; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start1875; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB32_2 Depth=11876; XTENSA-ATOMIC-NEXT:    or a15, a11, a111877; XTENSA-ATOMIC-NEXT:    j .LBB32_11878; XTENSA-ATOMIC-NEXT:  .LBB32_4: # %atomicrmw.end1879; XTENSA-ATOMIC-NEXT:    ssr a81880; XTENSA-ATOMIC-NEXT:    srl a2, a131881; XTENSA-ATOMIC-NEXT:    retw1882  %res = atomicrmw xor ptr %a, i8 %b release1883  ret i8 %res1884}1885 1886define i8 @atomicrmw_xor_i8_acq_rel(ptr %a, i8 %b) nounwind {1887; XTENSA-LABEL: atomicrmw_xor_i8_acq_rel:1888; XTENSA:       # %bb.0:1889; XTENSA-NEXT:    entry a1, 321890; XTENSA-NEXT:    or a11, a3, a31891; XTENSA-NEXT:    or a10, a2, a21892; XTENSA-NEXT:    movi a12, 41893; XTENSA-NEXT:    l32r a8, .LCPI33_01894; XTENSA-NEXT:    callx8 a81895; XTENSA-NEXT:    or a2, a10, a101896; XTENSA-NEXT:    retw1897;1898; XTENSA-ATOMIC-LABEL: atomicrmw_xor_i8_acq_rel:1899; XTENSA-ATOMIC:       # %bb.0:1900; XTENSA-ATOMIC-NEXT:    entry a1, 321901; XTENSA-ATOMIC-NEXT:    movi a8, 2551902; XTENSA-ATOMIC-NEXT:    and a9, a3, a81903; XTENSA-ATOMIC-NEXT:    slli a8, a2, 31904; XTENSA-ATOMIC-NEXT:    movi a10, 241905; XTENSA-ATOMIC-NEXT:    and a8, a8, a101906; XTENSA-ATOMIC-NEXT:    ssl a81907; XTENSA-ATOMIC-NEXT:    sll a9, a91908; XTENSA-ATOMIC-NEXT:    movi a10, -41909; XTENSA-ATOMIC-NEXT:    and a10, a2, a101910; XTENSA-ATOMIC-NEXT:    memw1911; XTENSA-ATOMIC-NEXT:    l32i a14, a10, 01912; XTENSA-ATOMIC-NEXT:    movi a11, 01913; XTENSA-ATOMIC-NEXT:    movi a12, 11914; XTENSA-ATOMIC-NEXT:    j .LBB33_21915; XTENSA-ATOMIC-NEXT:  .LBB33_1: # %atomicrmw.start1916; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB33_2 Depth=11917; XTENSA-ATOMIC-NEXT:    or a14, a13, a131918; XTENSA-ATOMIC-NEXT:    beqi a15, 1, .LBB33_41919; XTENSA-ATOMIC-NEXT:  .LBB33_2: # %atomicrmw.start1920; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=11921; XTENSA-ATOMIC-NEXT:    xor a13, a14, a91922; XTENSA-ATOMIC-NEXT:    wsr a14, scompare11923; XTENSA-ATOMIC-NEXT:    s32c1i a13, a10, 01924; XTENSA-ATOMIC-NEXT:    or a15, a12, a121925; XTENSA-ATOMIC-NEXT:    beq a13, a14, .LBB33_11926; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start1927; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB33_2 Depth=11928; XTENSA-ATOMIC-NEXT:    or a15, a11, a111929; XTENSA-ATOMIC-NEXT:    j .LBB33_11930; XTENSA-ATOMIC-NEXT:  .LBB33_4: # %atomicrmw.end1931; XTENSA-ATOMIC-NEXT:    ssr a81932; XTENSA-ATOMIC-NEXT:    srl a2, a131933; XTENSA-ATOMIC-NEXT:    memw1934; XTENSA-ATOMIC-NEXT:    retw1935  %res = atomicrmw xor ptr %a, i8 %b acq_rel1936  ret i8 %res1937}1938 1939define i8 @atomicrmw_xor_i8_seq_cst(ptr %a, i8 %b) nounwind {1940; XTENSA-LABEL: atomicrmw_xor_i8_seq_cst:1941; XTENSA:       # %bb.0:1942; XTENSA-NEXT:    entry a1, 321943; XTENSA-NEXT:    or a11, a3, a31944; XTENSA-NEXT:    or a10, a2, a21945; XTENSA-NEXT:    movi a12, 51946; XTENSA-NEXT:    l32r a8, .LCPI34_01947; XTENSA-NEXT:    callx8 a81948; XTENSA-NEXT:    or a2, a10, a101949; XTENSA-NEXT:    retw1950;1951; XTENSA-ATOMIC-LABEL: atomicrmw_xor_i8_seq_cst:1952; XTENSA-ATOMIC:       # %bb.0:1953; XTENSA-ATOMIC-NEXT:    entry a1, 321954; XTENSA-ATOMIC-NEXT:    movi a8, 2551955; XTENSA-ATOMIC-NEXT:    and a9, a3, a81956; XTENSA-ATOMIC-NEXT:    slli a8, a2, 31957; XTENSA-ATOMIC-NEXT:    movi a10, 241958; XTENSA-ATOMIC-NEXT:    and a8, a8, a101959; XTENSA-ATOMIC-NEXT:    ssl a81960; XTENSA-ATOMIC-NEXT:    sll a9, a91961; XTENSA-ATOMIC-NEXT:    movi a10, -41962; XTENSA-ATOMIC-NEXT:    and a10, a2, a101963; XTENSA-ATOMIC-NEXT:    memw1964; XTENSA-ATOMIC-NEXT:    l32i a14, a10, 01965; XTENSA-ATOMIC-NEXT:    movi a11, 01966; XTENSA-ATOMIC-NEXT:    movi a12, 11967; XTENSA-ATOMIC-NEXT:    j .LBB34_21968; XTENSA-ATOMIC-NEXT:  .LBB34_1: # %atomicrmw.start1969; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB34_2 Depth=11970; XTENSA-ATOMIC-NEXT:    or a14, a13, a131971; XTENSA-ATOMIC-NEXT:    beqi a15, 1, .LBB34_41972; XTENSA-ATOMIC-NEXT:  .LBB34_2: # %atomicrmw.start1973; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=11974; XTENSA-ATOMIC-NEXT:    xor a13, a14, a91975; XTENSA-ATOMIC-NEXT:    wsr a14, scompare11976; XTENSA-ATOMIC-NEXT:    s32c1i a13, a10, 01977; XTENSA-ATOMIC-NEXT:    or a15, a12, a121978; XTENSA-ATOMIC-NEXT:    beq a13, a14, .LBB34_11979; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start1980; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB34_2 Depth=11981; XTENSA-ATOMIC-NEXT:    or a15, a11, a111982; XTENSA-ATOMIC-NEXT:    j .LBB34_11983; XTENSA-ATOMIC-NEXT:  .LBB34_4: # %atomicrmw.end1984; XTENSA-ATOMIC-NEXT:    ssr a81985; XTENSA-ATOMIC-NEXT:    srl a2, a131986; XTENSA-ATOMIC-NEXT:    memw1987; XTENSA-ATOMIC-NEXT:    retw1988  %res = atomicrmw xor ptr %a, i8 %b seq_cst1989  ret i8 %res1990}1991 1992define i8 @atomicrmw_max_i8_monotonic(ptr %a, i8 %b) nounwind {1993; XTENSA-LABEL: atomicrmw_max_i8_monotonic:1994; XTENSA:       # %bb.0:1995; XTENSA-NEXT:    entry a1, 481996; XTENSA-NEXT:    or a6, a2, a21997; XTENSA-NEXT:    l8ui a2, a6, 01998; XTENSA-NEXT:    slli a8, a3, 241999; XTENSA-NEXT:    srai a5, a8, 242000; XTENSA-NEXT:    movi a7, 02001; XTENSA-NEXT:    l32r a4, .LCPI35_02002; XTENSA-NEXT:    j .LBB35_22003; XTENSA-NEXT:  .LBB35_1: # %atomicrmw.start2004; XTENSA-NEXT:    # in Loop: Header=BB35_2 Depth=12005; XTENSA-NEXT:    addi a11, a1, 02006; XTENSA-NEXT:    or a10, a6, a62007; XTENSA-NEXT:    or a13, a7, a72008; XTENSA-NEXT:    or a14, a7, a72009; XTENSA-NEXT:    callx8 a42010; XTENSA-NEXT:    l8ui a2, a1, 02011; XTENSA-NEXT:    bnez a10, .LBB35_42012; XTENSA-NEXT:  .LBB35_2: # %atomicrmw.start2013; XTENSA-NEXT:    # =>This Inner Loop Header: Depth=12014; XTENSA-NEXT:    s8i a2, a1, 02015; XTENSA-NEXT:    slli a8, a2, 242016; XTENSA-NEXT:    srai a8, a8, 242017; XTENSA-NEXT:    or a12, a3, a32018; XTENSA-NEXT:    bge a5, a8, .LBB35_12019; XTENSA-NEXT:  # %bb.3: # %atomicrmw.start2020; XTENSA-NEXT:    # in Loop: Header=BB35_2 Depth=12021; XTENSA-NEXT:    or a12, a2, a22022; XTENSA-NEXT:    j .LBB35_12023; XTENSA-NEXT:  .LBB35_4: # %atomicrmw.end2024; XTENSA-NEXT:    retw2025;2026; XTENSA-ATOMIC-LABEL: atomicrmw_max_i8_monotonic:2027; XTENSA-ATOMIC:       # %bb.0:2028; XTENSA-ATOMIC-NEXT:    entry a1, 322029; XTENSA-ATOMIC-NEXT:    slli a8, a2, 32030; XTENSA-ATOMIC-NEXT:    movi a9, 242031; XTENSA-ATOMIC-NEXT:    and a8, a8, a92032; XTENSA-ATOMIC-NEXT:    movi a9, 2552033; XTENSA-ATOMIC-NEXT:    ssl a82034; XTENSA-ATOMIC-NEXT:    sll a10, a92035; XTENSA-ATOMIC-NEXT:    movi a11, -12036; XTENSA-ATOMIC-NEXT:    xor a10, a10, a112037; XTENSA-ATOMIC-NEXT:    movi a11, -42038; XTENSA-ATOMIC-NEXT:    and a11, a2, a112039; XTENSA-ATOMIC-NEXT:    l32i a15, a11, 02040; XTENSA-ATOMIC-NEXT:    slli a12, a3, 242041; XTENSA-ATOMIC-NEXT:    srai a12, a12, 242042; XTENSA-ATOMIC-NEXT:    movi a13, 02043; XTENSA-ATOMIC-NEXT:    movi a14, 12044; XTENSA-ATOMIC-NEXT:    j .LBB35_22045; XTENSA-ATOMIC-NEXT:  .LBB35_1: # %atomicrmw.start2046; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB35_2 Depth=12047; XTENSA-ATOMIC-NEXT:    or a15, a7, a72048; XTENSA-ATOMIC-NEXT:    beqi a6, 1, .LBB35_62049; XTENSA-ATOMIC-NEXT:  .LBB35_2: # %atomicrmw.start2050; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=12051; XTENSA-ATOMIC-NEXT:    ssr a82052; XTENSA-ATOMIC-NEXT:    srl a7, a152053; XTENSA-ATOMIC-NEXT:    slli a6, a7, 242054; XTENSA-ATOMIC-NEXT:    srai a5, a6, 242055; XTENSA-ATOMIC-NEXT:    or a6, a3, a32056; XTENSA-ATOMIC-NEXT:    bge a12, a5, .LBB35_42057; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start2058; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB35_2 Depth=12059; XTENSA-ATOMIC-NEXT:    or a6, a7, a72060; XTENSA-ATOMIC-NEXT:  .LBB35_4: # %atomicrmw.start2061; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB35_2 Depth=12062; XTENSA-ATOMIC-NEXT:    and a7, a6, a92063; XTENSA-ATOMIC-NEXT:    ssl a82064; XTENSA-ATOMIC-NEXT:    sll a7, a72065; XTENSA-ATOMIC-NEXT:    and a6, a15, a102066; XTENSA-ATOMIC-NEXT:    or a7, a6, a72067; XTENSA-ATOMIC-NEXT:    wsr a15, scompare12068; XTENSA-ATOMIC-NEXT:    s32c1i a7, a11, 02069; XTENSA-ATOMIC-NEXT:    or a6, a14, a142070; XTENSA-ATOMIC-NEXT:    beq a7, a15, .LBB35_12071; XTENSA-ATOMIC-NEXT:  # %bb.5: # %atomicrmw.start2072; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB35_2 Depth=12073; XTENSA-ATOMIC-NEXT:    or a6, a13, a132074; XTENSA-ATOMIC-NEXT:    j .LBB35_12075; XTENSA-ATOMIC-NEXT:  .LBB35_6: # %atomicrmw.end2076; XTENSA-ATOMIC-NEXT:    ssr a82077; XTENSA-ATOMIC-NEXT:    srl a2, a72078; XTENSA-ATOMIC-NEXT:    retw2079  %res = atomicrmw max ptr %a, i8 %b monotonic2080  ret i8 %res2081}2082 2083define i8 @atomicrmw_max_i8_acquire(ptr %a, i8 %b) nounwind {2084; XTENSA-LABEL: atomicrmw_max_i8_acquire:2085; XTENSA:       # %bb.0:2086; XTENSA-NEXT:    entry a1, 482087; XTENSA-NEXT:    or a6, a2, a22088; XTENSA-NEXT:    l8ui a2, a6, 02089; XTENSA-NEXT:    slli a8, a3, 242090; XTENSA-NEXT:    srai a5, a8, 242091; XTENSA-NEXT:    movi a7, 22092; XTENSA-NEXT:    l32r a4, .LCPI36_02093; XTENSA-NEXT:    j .LBB36_22094; XTENSA-NEXT:  .LBB36_1: # %atomicrmw.start2095; XTENSA-NEXT:    # in Loop: Header=BB36_2 Depth=12096; XTENSA-NEXT:    addi a11, a1, 02097; XTENSA-NEXT:    or a10, a6, a62098; XTENSA-NEXT:    or a13, a7, a72099; XTENSA-NEXT:    or a14, a7, a72100; XTENSA-NEXT:    callx8 a42101; XTENSA-NEXT:    l8ui a2, a1, 02102; XTENSA-NEXT:    bnez a10, .LBB36_42103; XTENSA-NEXT:  .LBB36_2: # %atomicrmw.start2104; XTENSA-NEXT:    # =>This Inner Loop Header: Depth=12105; XTENSA-NEXT:    s8i a2, a1, 02106; XTENSA-NEXT:    slli a8, a2, 242107; XTENSA-NEXT:    srai a8, a8, 242108; XTENSA-NEXT:    or a12, a3, a32109; XTENSA-NEXT:    bge a5, a8, .LBB36_12110; XTENSA-NEXT:  # %bb.3: # %atomicrmw.start2111; XTENSA-NEXT:    # in Loop: Header=BB36_2 Depth=12112; XTENSA-NEXT:    or a12, a2, a22113; XTENSA-NEXT:    j .LBB36_12114; XTENSA-NEXT:  .LBB36_4: # %atomicrmw.end2115; XTENSA-NEXT:    retw2116;2117; XTENSA-ATOMIC-LABEL: atomicrmw_max_i8_acquire:2118; XTENSA-ATOMIC:       # %bb.0:2119; XTENSA-ATOMIC-NEXT:    entry a1, 322120; XTENSA-ATOMIC-NEXT:    slli a8, a2, 32121; XTENSA-ATOMIC-NEXT:    movi a9, 242122; XTENSA-ATOMIC-NEXT:    and a8, a8, a92123; XTENSA-ATOMIC-NEXT:    movi a9, 2552124; XTENSA-ATOMIC-NEXT:    ssl a82125; XTENSA-ATOMIC-NEXT:    sll a10, a92126; XTENSA-ATOMIC-NEXT:    movi a11, -12127; XTENSA-ATOMIC-NEXT:    xor a10, a10, a112128; XTENSA-ATOMIC-NEXT:    movi a11, -42129; XTENSA-ATOMIC-NEXT:    and a11, a2, a112130; XTENSA-ATOMIC-NEXT:    l32i a15, a11, 02131; XTENSA-ATOMIC-NEXT:    slli a12, a3, 242132; XTENSA-ATOMIC-NEXT:    srai a12, a12, 242133; XTENSA-ATOMIC-NEXT:    movi a13, 02134; XTENSA-ATOMIC-NEXT:    movi a14, 12135; XTENSA-ATOMIC-NEXT:    j .LBB36_22136; XTENSA-ATOMIC-NEXT:  .LBB36_1: # %atomicrmw.start2137; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB36_2 Depth=12138; XTENSA-ATOMIC-NEXT:    or a15, a7, a72139; XTENSA-ATOMIC-NEXT:    beqi a6, 1, .LBB36_62140; XTENSA-ATOMIC-NEXT:  .LBB36_2: # %atomicrmw.start2141; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=12142; XTENSA-ATOMIC-NEXT:    ssr a82143; XTENSA-ATOMIC-NEXT:    srl a7, a152144; XTENSA-ATOMIC-NEXT:    slli a6, a7, 242145; XTENSA-ATOMIC-NEXT:    srai a5, a6, 242146; XTENSA-ATOMIC-NEXT:    or a6, a3, a32147; XTENSA-ATOMIC-NEXT:    bge a12, a5, .LBB36_42148; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start2149; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB36_2 Depth=12150; XTENSA-ATOMIC-NEXT:    or a6, a7, a72151; XTENSA-ATOMIC-NEXT:  .LBB36_4: # %atomicrmw.start2152; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB36_2 Depth=12153; XTENSA-ATOMIC-NEXT:    and a7, a6, a92154; XTENSA-ATOMIC-NEXT:    ssl a82155; XTENSA-ATOMIC-NEXT:    sll a7, a72156; XTENSA-ATOMIC-NEXT:    and a6, a15, a102157; XTENSA-ATOMIC-NEXT:    or a7, a6, a72158; XTENSA-ATOMIC-NEXT:    wsr a15, scompare12159; XTENSA-ATOMIC-NEXT:    s32c1i a7, a11, 02160; XTENSA-ATOMIC-NEXT:    or a6, a14, a142161; XTENSA-ATOMIC-NEXT:    beq a7, a15, .LBB36_12162; XTENSA-ATOMIC-NEXT:  # %bb.5: # %atomicrmw.start2163; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB36_2 Depth=12164; XTENSA-ATOMIC-NEXT:    or a6, a13, a132165; XTENSA-ATOMIC-NEXT:    j .LBB36_12166; XTENSA-ATOMIC-NEXT:  .LBB36_6: # %atomicrmw.end2167; XTENSA-ATOMIC-NEXT:    ssr a82168; XTENSA-ATOMIC-NEXT:    srl a2, a72169; XTENSA-ATOMIC-NEXT:    memw2170; XTENSA-ATOMIC-NEXT:    retw2171  %res = atomicrmw max ptr %a, i8 %b acquire2172  ret i8 %res2173}2174 2175define i8 @atomicrmw_max_i8_release(ptr %a, i8 %b) nounwind {2176; XTENSA-LABEL: atomicrmw_max_i8_release:2177; XTENSA:       # %bb.0:2178; XTENSA-NEXT:    entry a1, 482179; XTENSA-NEXT:    or a9, a2, a22180; XTENSA-NEXT:    l8ui a2, a9, 02181; XTENSA-NEXT:    s32i a3, a1, 0 # 4-byte Folded Spill2182; XTENSA-NEXT:    slli a8, a3, 242183; XTENSA-NEXT:    or a3, a9, a92184; XTENSA-NEXT:    srai a4, a8, 242185; XTENSA-NEXT:    movi a7, 32186; XTENSA-NEXT:    movi a6, 02187; XTENSA-NEXT:    l32r a5, .LCPI37_02188; XTENSA-NEXT:    j .LBB37_22189; XTENSA-NEXT:  .LBB37_1: # %atomicrmw.start2190; XTENSA-NEXT:    # in Loop: Header=BB37_2 Depth=12191; XTENSA-NEXT:    addi a11, a1, 42192; XTENSA-NEXT:    or a10, a3, a32193; XTENSA-NEXT:    or a13, a7, a72194; XTENSA-NEXT:    or a14, a6, a62195; XTENSA-NEXT:    callx8 a52196; XTENSA-NEXT:    l8ui a2, a1, 42197; XTENSA-NEXT:    bnez a10, .LBB37_42198; XTENSA-NEXT:  .LBB37_2: # %atomicrmw.start2199; XTENSA-NEXT:    # =>This Inner Loop Header: Depth=12200; XTENSA-NEXT:    s8i a2, a1, 42201; XTENSA-NEXT:    slli a8, a2, 242202; XTENSA-NEXT:    srai a8, a8, 242203; XTENSA-NEXT:    l32i a12, a1, 0 # 4-byte Folded Reload2204; XTENSA-NEXT:    bge a4, a8, .LBB37_12205; XTENSA-NEXT:  # %bb.3: # %atomicrmw.start2206; XTENSA-NEXT:    # in Loop: Header=BB37_2 Depth=12207; XTENSA-NEXT:    or a12, a2, a22208; XTENSA-NEXT:    j .LBB37_12209; XTENSA-NEXT:  .LBB37_4: # %atomicrmw.end2210; XTENSA-NEXT:    retw2211;2212; XTENSA-ATOMIC-LABEL: atomicrmw_max_i8_release:2213; XTENSA-ATOMIC:       # %bb.0:2214; XTENSA-ATOMIC-NEXT:    entry a1, 322215; XTENSA-ATOMIC-NEXT:    slli a8, a2, 32216; XTENSA-ATOMIC-NEXT:    movi a9, 242217; XTENSA-ATOMIC-NEXT:    and a8, a8, a92218; XTENSA-ATOMIC-NEXT:    movi a9, 2552219; XTENSA-ATOMIC-NEXT:    ssl a82220; XTENSA-ATOMIC-NEXT:    sll a10, a92221; XTENSA-ATOMIC-NEXT:    movi a11, -12222; XTENSA-ATOMIC-NEXT:    xor a10, a10, a112223; XTENSA-ATOMIC-NEXT:    movi a11, -42224; XTENSA-ATOMIC-NEXT:    and a11, a2, a112225; XTENSA-ATOMIC-NEXT:    memw2226; XTENSA-ATOMIC-NEXT:    l32i a15, a11, 02227; XTENSA-ATOMIC-NEXT:    slli a12, a3, 242228; XTENSA-ATOMIC-NEXT:    srai a12, a12, 242229; XTENSA-ATOMIC-NEXT:    movi a13, 02230; XTENSA-ATOMIC-NEXT:    movi a14, 12231; XTENSA-ATOMIC-NEXT:    j .LBB37_22232; XTENSA-ATOMIC-NEXT:  .LBB37_1: # %atomicrmw.start2233; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB37_2 Depth=12234; XTENSA-ATOMIC-NEXT:    or a15, a7, a72235; XTENSA-ATOMIC-NEXT:    beqi a6, 1, .LBB37_62236; XTENSA-ATOMIC-NEXT:  .LBB37_2: # %atomicrmw.start2237; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=12238; XTENSA-ATOMIC-NEXT:    ssr a82239; XTENSA-ATOMIC-NEXT:    srl a7, a152240; XTENSA-ATOMIC-NEXT:    slli a6, a7, 242241; XTENSA-ATOMIC-NEXT:    srai a5, a6, 242242; XTENSA-ATOMIC-NEXT:    or a6, a3, a32243; XTENSA-ATOMIC-NEXT:    bge a12, a5, .LBB37_42244; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start2245; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB37_2 Depth=12246; XTENSA-ATOMIC-NEXT:    or a6, a7, a72247; XTENSA-ATOMIC-NEXT:  .LBB37_4: # %atomicrmw.start2248; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB37_2 Depth=12249; XTENSA-ATOMIC-NEXT:    and a7, a6, a92250; XTENSA-ATOMIC-NEXT:    ssl a82251; XTENSA-ATOMIC-NEXT:    sll a7, a72252; XTENSA-ATOMIC-NEXT:    and a6, a15, a102253; XTENSA-ATOMIC-NEXT:    or a7, a6, a72254; XTENSA-ATOMIC-NEXT:    wsr a15, scompare12255; XTENSA-ATOMIC-NEXT:    s32c1i a7, a11, 02256; XTENSA-ATOMIC-NEXT:    or a6, a14, a142257; XTENSA-ATOMIC-NEXT:    beq a7, a15, .LBB37_12258; XTENSA-ATOMIC-NEXT:  # %bb.5: # %atomicrmw.start2259; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB37_2 Depth=12260; XTENSA-ATOMIC-NEXT:    or a6, a13, a132261; XTENSA-ATOMIC-NEXT:    j .LBB37_12262; XTENSA-ATOMIC-NEXT:  .LBB37_6: # %atomicrmw.end2263; XTENSA-ATOMIC-NEXT:    ssr a82264; XTENSA-ATOMIC-NEXT:    srl a2, a72265; XTENSA-ATOMIC-NEXT:    retw2266  %res = atomicrmw max ptr %a, i8 %b release2267  ret i8 %res2268}2269 2270define i8 @atomicrmw_max_i8_acq_rel(ptr %a, i8 %b) nounwind {2271; XTENSA-LABEL: atomicrmw_max_i8_acq_rel:2272; XTENSA:       # %bb.0:2273; XTENSA-NEXT:    entry a1, 482274; XTENSA-NEXT:    or a9, a2, a22275; XTENSA-NEXT:    l8ui a2, a9, 02276; XTENSA-NEXT:    s32i a3, a1, 0 # 4-byte Folded Spill2277; XTENSA-NEXT:    slli a8, a3, 242278; XTENSA-NEXT:    or a3, a9, a92279; XTENSA-NEXT:    srai a4, a8, 242280; XTENSA-NEXT:    movi a7, 42281; XTENSA-NEXT:    movi a6, 22282; XTENSA-NEXT:    l32r a5, .LCPI38_02283; XTENSA-NEXT:    j .LBB38_22284; XTENSA-NEXT:  .LBB38_1: # %atomicrmw.start2285; XTENSA-NEXT:    # in Loop: Header=BB38_2 Depth=12286; XTENSA-NEXT:    addi a11, a1, 42287; XTENSA-NEXT:    or a10, a3, a32288; XTENSA-NEXT:    or a13, a7, a72289; XTENSA-NEXT:    or a14, a6, a62290; XTENSA-NEXT:    callx8 a52291; XTENSA-NEXT:    l8ui a2, a1, 42292; XTENSA-NEXT:    bnez a10, .LBB38_42293; XTENSA-NEXT:  .LBB38_2: # %atomicrmw.start2294; XTENSA-NEXT:    # =>This Inner Loop Header: Depth=12295; XTENSA-NEXT:    s8i a2, a1, 42296; XTENSA-NEXT:    slli a8, a2, 242297; XTENSA-NEXT:    srai a8, a8, 242298; XTENSA-NEXT:    l32i a12, a1, 0 # 4-byte Folded Reload2299; XTENSA-NEXT:    bge a4, a8, .LBB38_12300; XTENSA-NEXT:  # %bb.3: # %atomicrmw.start2301; XTENSA-NEXT:    # in Loop: Header=BB38_2 Depth=12302; XTENSA-NEXT:    or a12, a2, a22303; XTENSA-NEXT:    j .LBB38_12304; XTENSA-NEXT:  .LBB38_4: # %atomicrmw.end2305; XTENSA-NEXT:    retw2306;2307; XTENSA-ATOMIC-LABEL: atomicrmw_max_i8_acq_rel:2308; XTENSA-ATOMIC:       # %bb.0:2309; XTENSA-ATOMIC-NEXT:    entry a1, 322310; XTENSA-ATOMIC-NEXT:    slli a8, a2, 32311; XTENSA-ATOMIC-NEXT:    movi a9, 242312; XTENSA-ATOMIC-NEXT:    and a8, a8, a92313; XTENSA-ATOMIC-NEXT:    movi a9, 2552314; XTENSA-ATOMIC-NEXT:    ssl a82315; XTENSA-ATOMIC-NEXT:    sll a10, a92316; XTENSA-ATOMIC-NEXT:    movi a11, -12317; XTENSA-ATOMIC-NEXT:    xor a10, a10, a112318; XTENSA-ATOMIC-NEXT:    movi a11, -42319; XTENSA-ATOMIC-NEXT:    and a11, a2, a112320; XTENSA-ATOMIC-NEXT:    memw2321; XTENSA-ATOMIC-NEXT:    l32i a15, a11, 02322; XTENSA-ATOMIC-NEXT:    slli a12, a3, 242323; XTENSA-ATOMIC-NEXT:    srai a12, a12, 242324; XTENSA-ATOMIC-NEXT:    movi a13, 02325; XTENSA-ATOMIC-NEXT:    movi a14, 12326; XTENSA-ATOMIC-NEXT:    j .LBB38_22327; XTENSA-ATOMIC-NEXT:  .LBB38_1: # %atomicrmw.start2328; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB38_2 Depth=12329; XTENSA-ATOMIC-NEXT:    or a15, a7, a72330; XTENSA-ATOMIC-NEXT:    beqi a6, 1, .LBB38_62331; XTENSA-ATOMIC-NEXT:  .LBB38_2: # %atomicrmw.start2332; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=12333; XTENSA-ATOMIC-NEXT:    ssr a82334; XTENSA-ATOMIC-NEXT:    srl a7, a152335; XTENSA-ATOMIC-NEXT:    slli a6, a7, 242336; XTENSA-ATOMIC-NEXT:    srai a5, a6, 242337; XTENSA-ATOMIC-NEXT:    or a6, a3, a32338; XTENSA-ATOMIC-NEXT:    bge a12, a5, .LBB38_42339; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start2340; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB38_2 Depth=12341; XTENSA-ATOMIC-NEXT:    or a6, a7, a72342; XTENSA-ATOMIC-NEXT:  .LBB38_4: # %atomicrmw.start2343; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB38_2 Depth=12344; XTENSA-ATOMIC-NEXT:    and a7, a6, a92345; XTENSA-ATOMIC-NEXT:    ssl a82346; XTENSA-ATOMIC-NEXT:    sll a7, a72347; XTENSA-ATOMIC-NEXT:    and a6, a15, a102348; XTENSA-ATOMIC-NEXT:    or a7, a6, a72349; XTENSA-ATOMIC-NEXT:    wsr a15, scompare12350; XTENSA-ATOMIC-NEXT:    s32c1i a7, a11, 02351; XTENSA-ATOMIC-NEXT:    or a6, a14, a142352; XTENSA-ATOMIC-NEXT:    beq a7, a15, .LBB38_12353; XTENSA-ATOMIC-NEXT:  # %bb.5: # %atomicrmw.start2354; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB38_2 Depth=12355; XTENSA-ATOMIC-NEXT:    or a6, a13, a132356; XTENSA-ATOMIC-NEXT:    j .LBB38_12357; XTENSA-ATOMIC-NEXT:  .LBB38_6: # %atomicrmw.end2358; XTENSA-ATOMIC-NEXT:    ssr a82359; XTENSA-ATOMIC-NEXT:    srl a2, a72360; XTENSA-ATOMIC-NEXT:    memw2361; XTENSA-ATOMIC-NEXT:    retw2362  %res = atomicrmw max ptr %a, i8 %b acq_rel2363  ret i8 %res2364}2365 2366define i8 @atomicrmw_max_i8_seq_cst(ptr %a, i8 %b) nounwind {2367; XTENSA-LABEL: atomicrmw_max_i8_seq_cst:2368; XTENSA:       # %bb.0:2369; XTENSA-NEXT:    entry a1, 482370; XTENSA-NEXT:    or a6, a2, a22371; XTENSA-NEXT:    l8ui a2, a6, 02372; XTENSA-NEXT:    slli a8, a3, 242373; XTENSA-NEXT:    srai a5, a8, 242374; XTENSA-NEXT:    movi a7, 52375; XTENSA-NEXT:    l32r a4, .LCPI39_02376; XTENSA-NEXT:    j .LBB39_22377; XTENSA-NEXT:  .LBB39_1: # %atomicrmw.start2378; XTENSA-NEXT:    # in Loop: Header=BB39_2 Depth=12379; XTENSA-NEXT:    addi a11, a1, 02380; XTENSA-NEXT:    or a10, a6, a62381; XTENSA-NEXT:    or a13, a7, a72382; XTENSA-NEXT:    or a14, a7, a72383; XTENSA-NEXT:    callx8 a42384; XTENSA-NEXT:    l8ui a2, a1, 02385; XTENSA-NEXT:    bnez a10, .LBB39_42386; XTENSA-NEXT:  .LBB39_2: # %atomicrmw.start2387; XTENSA-NEXT:    # =>This Inner Loop Header: Depth=12388; XTENSA-NEXT:    s8i a2, a1, 02389; XTENSA-NEXT:    slli a8, a2, 242390; XTENSA-NEXT:    srai a8, a8, 242391; XTENSA-NEXT:    or a12, a3, a32392; XTENSA-NEXT:    bge a5, a8, .LBB39_12393; XTENSA-NEXT:  # %bb.3: # %atomicrmw.start2394; XTENSA-NEXT:    # in Loop: Header=BB39_2 Depth=12395; XTENSA-NEXT:    or a12, a2, a22396; XTENSA-NEXT:    j .LBB39_12397; XTENSA-NEXT:  .LBB39_4: # %atomicrmw.end2398; XTENSA-NEXT:    retw2399;2400; XTENSA-ATOMIC-LABEL: atomicrmw_max_i8_seq_cst:2401; XTENSA-ATOMIC:       # %bb.0:2402; XTENSA-ATOMIC-NEXT:    entry a1, 322403; XTENSA-ATOMIC-NEXT:    slli a8, a2, 32404; XTENSA-ATOMIC-NEXT:    movi a9, 242405; XTENSA-ATOMIC-NEXT:    and a8, a8, a92406; XTENSA-ATOMIC-NEXT:    movi a9, 2552407; XTENSA-ATOMIC-NEXT:    ssl a82408; XTENSA-ATOMIC-NEXT:    sll a10, a92409; XTENSA-ATOMIC-NEXT:    movi a11, -12410; XTENSA-ATOMIC-NEXT:    xor a10, a10, a112411; XTENSA-ATOMIC-NEXT:    movi a11, -42412; XTENSA-ATOMIC-NEXT:    and a11, a2, a112413; XTENSA-ATOMIC-NEXT:    memw2414; XTENSA-ATOMIC-NEXT:    l32i a15, a11, 02415; XTENSA-ATOMIC-NEXT:    slli a12, a3, 242416; XTENSA-ATOMIC-NEXT:    srai a12, a12, 242417; XTENSA-ATOMIC-NEXT:    movi a13, 02418; XTENSA-ATOMIC-NEXT:    movi a14, 12419; XTENSA-ATOMIC-NEXT:    j .LBB39_22420; XTENSA-ATOMIC-NEXT:  .LBB39_1: # %atomicrmw.start2421; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB39_2 Depth=12422; XTENSA-ATOMIC-NEXT:    or a15, a7, a72423; XTENSA-ATOMIC-NEXT:    beqi a6, 1, .LBB39_62424; XTENSA-ATOMIC-NEXT:  .LBB39_2: # %atomicrmw.start2425; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=12426; XTENSA-ATOMIC-NEXT:    ssr a82427; XTENSA-ATOMIC-NEXT:    srl a7, a152428; XTENSA-ATOMIC-NEXT:    slli a6, a7, 242429; XTENSA-ATOMIC-NEXT:    srai a5, a6, 242430; XTENSA-ATOMIC-NEXT:    or a6, a3, a32431; XTENSA-ATOMIC-NEXT:    bge a12, a5, .LBB39_42432; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start2433; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB39_2 Depth=12434; XTENSA-ATOMIC-NEXT:    or a6, a7, a72435; XTENSA-ATOMIC-NEXT:  .LBB39_4: # %atomicrmw.start2436; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB39_2 Depth=12437; XTENSA-ATOMIC-NEXT:    and a7, a6, a92438; XTENSA-ATOMIC-NEXT:    ssl a82439; XTENSA-ATOMIC-NEXT:    sll a7, a72440; XTENSA-ATOMIC-NEXT:    and a6, a15, a102441; XTENSA-ATOMIC-NEXT:    or a7, a6, a72442; XTENSA-ATOMIC-NEXT:    wsr a15, scompare12443; XTENSA-ATOMIC-NEXT:    s32c1i a7, a11, 02444; XTENSA-ATOMIC-NEXT:    or a6, a14, a142445; XTENSA-ATOMIC-NEXT:    beq a7, a15, .LBB39_12446; XTENSA-ATOMIC-NEXT:  # %bb.5: # %atomicrmw.start2447; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB39_2 Depth=12448; XTENSA-ATOMIC-NEXT:    or a6, a13, a132449; XTENSA-ATOMIC-NEXT:    j .LBB39_12450; XTENSA-ATOMIC-NEXT:  .LBB39_6: # %atomicrmw.end2451; XTENSA-ATOMIC-NEXT:    ssr a82452; XTENSA-ATOMIC-NEXT:    srl a2, a72453; XTENSA-ATOMIC-NEXT:    memw2454; XTENSA-ATOMIC-NEXT:    retw2455  %res = atomicrmw max ptr %a, i8 %b seq_cst2456  ret i8 %res2457}2458 2459define i8 @atomicrmw_min_i8_monotonic(ptr %a, i8 %b) nounwind {2460; XTENSA-LABEL: atomicrmw_min_i8_monotonic:2461; XTENSA:       # %bb.0:2462; XTENSA-NEXT:    entry a1, 482463; XTENSA-NEXT:    or a6, a2, a22464; XTENSA-NEXT:    l8ui a2, a6, 02465; XTENSA-NEXT:    slli a8, a3, 242466; XTENSA-NEXT:    srai a5, a8, 242467; XTENSA-NEXT:    movi a7, 02468; XTENSA-NEXT:    l32r a4, .LCPI40_02469; XTENSA-NEXT:    j .LBB40_22470; XTENSA-NEXT:  .LBB40_1: # %atomicrmw.start2471; XTENSA-NEXT:    # in Loop: Header=BB40_2 Depth=12472; XTENSA-NEXT:    addi a11, a1, 02473; XTENSA-NEXT:    or a10, a6, a62474; XTENSA-NEXT:    or a13, a7, a72475; XTENSA-NEXT:    or a14, a7, a72476; XTENSA-NEXT:    callx8 a42477; XTENSA-NEXT:    l8ui a2, a1, 02478; XTENSA-NEXT:    bnez a10, .LBB40_42479; XTENSA-NEXT:  .LBB40_2: # %atomicrmw.start2480; XTENSA-NEXT:    # =>This Inner Loop Header: Depth=12481; XTENSA-NEXT:    s8i a2, a1, 02482; XTENSA-NEXT:    slli a8, a2, 242483; XTENSA-NEXT:    srai a8, a8, 242484; XTENSA-NEXT:    or a12, a3, a32485; XTENSA-NEXT:    blt a5, a8, .LBB40_12486; XTENSA-NEXT:  # %bb.3: # %atomicrmw.start2487; XTENSA-NEXT:    # in Loop: Header=BB40_2 Depth=12488; XTENSA-NEXT:    or a12, a2, a22489; XTENSA-NEXT:    j .LBB40_12490; XTENSA-NEXT:  .LBB40_4: # %atomicrmw.end2491; XTENSA-NEXT:    retw2492;2493; XTENSA-ATOMIC-LABEL: atomicrmw_min_i8_monotonic:2494; XTENSA-ATOMIC:       # %bb.0:2495; XTENSA-ATOMIC-NEXT:    entry a1, 322496; XTENSA-ATOMIC-NEXT:    slli a8, a2, 32497; XTENSA-ATOMIC-NEXT:    movi a9, 242498; XTENSA-ATOMIC-NEXT:    and a8, a8, a92499; XTENSA-ATOMIC-NEXT:    movi a9, 2552500; XTENSA-ATOMIC-NEXT:    ssl a82501; XTENSA-ATOMIC-NEXT:    sll a10, a92502; XTENSA-ATOMIC-NEXT:    movi a11, -12503; XTENSA-ATOMIC-NEXT:    xor a10, a10, a112504; XTENSA-ATOMIC-NEXT:    movi a11, -42505; XTENSA-ATOMIC-NEXT:    and a11, a2, a112506; XTENSA-ATOMIC-NEXT:    l32i a15, a11, 02507; XTENSA-ATOMIC-NEXT:    slli a12, a3, 242508; XTENSA-ATOMIC-NEXT:    srai a12, a12, 242509; XTENSA-ATOMIC-NEXT:    movi a13, 02510; XTENSA-ATOMIC-NEXT:    movi a14, 12511; XTENSA-ATOMIC-NEXT:    j .LBB40_22512; XTENSA-ATOMIC-NEXT:  .LBB40_1: # %atomicrmw.start2513; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB40_2 Depth=12514; XTENSA-ATOMIC-NEXT:    or a15, a7, a72515; XTENSA-ATOMIC-NEXT:    beqi a6, 1, .LBB40_62516; XTENSA-ATOMIC-NEXT:  .LBB40_2: # %atomicrmw.start2517; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=12518; XTENSA-ATOMIC-NEXT:    ssr a82519; XTENSA-ATOMIC-NEXT:    srl a7, a152520; XTENSA-ATOMIC-NEXT:    slli a6, a7, 242521; XTENSA-ATOMIC-NEXT:    srai a5, a6, 242522; XTENSA-ATOMIC-NEXT:    or a6, a3, a32523; XTENSA-ATOMIC-NEXT:    blt a12, a5, .LBB40_42524; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start2525; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB40_2 Depth=12526; XTENSA-ATOMIC-NEXT:    or a6, a7, a72527; XTENSA-ATOMIC-NEXT:  .LBB40_4: # %atomicrmw.start2528; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB40_2 Depth=12529; XTENSA-ATOMIC-NEXT:    and a7, a6, a92530; XTENSA-ATOMIC-NEXT:    ssl a82531; XTENSA-ATOMIC-NEXT:    sll a7, a72532; XTENSA-ATOMIC-NEXT:    and a6, a15, a102533; XTENSA-ATOMIC-NEXT:    or a7, a6, a72534; XTENSA-ATOMIC-NEXT:    wsr a15, scompare12535; XTENSA-ATOMIC-NEXT:    s32c1i a7, a11, 02536; XTENSA-ATOMIC-NEXT:    or a6, a14, a142537; XTENSA-ATOMIC-NEXT:    beq a7, a15, .LBB40_12538; XTENSA-ATOMIC-NEXT:  # %bb.5: # %atomicrmw.start2539; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB40_2 Depth=12540; XTENSA-ATOMIC-NEXT:    or a6, a13, a132541; XTENSA-ATOMIC-NEXT:    j .LBB40_12542; XTENSA-ATOMIC-NEXT:  .LBB40_6: # %atomicrmw.end2543; XTENSA-ATOMIC-NEXT:    ssr a82544; XTENSA-ATOMIC-NEXT:    srl a2, a72545; XTENSA-ATOMIC-NEXT:    retw2546  %res = atomicrmw min ptr %a, i8 %b monotonic2547  ret i8 %res2548}2549 2550define i8 @atomicrmw_min_i8_acquire(ptr %a, i8 %b) nounwind {2551; XTENSA-LABEL: atomicrmw_min_i8_acquire:2552; XTENSA:       # %bb.0:2553; XTENSA-NEXT:    entry a1, 482554; XTENSA-NEXT:    or a6, a2, a22555; XTENSA-NEXT:    l8ui a2, a6, 02556; XTENSA-NEXT:    slli a8, a3, 242557; XTENSA-NEXT:    srai a5, a8, 242558; XTENSA-NEXT:    movi a7, 22559; XTENSA-NEXT:    l32r a4, .LCPI41_02560; XTENSA-NEXT:    j .LBB41_22561; XTENSA-NEXT:  .LBB41_1: # %atomicrmw.start2562; XTENSA-NEXT:    # in Loop: Header=BB41_2 Depth=12563; XTENSA-NEXT:    addi a11, a1, 02564; XTENSA-NEXT:    or a10, a6, a62565; XTENSA-NEXT:    or a13, a7, a72566; XTENSA-NEXT:    or a14, a7, a72567; XTENSA-NEXT:    callx8 a42568; XTENSA-NEXT:    l8ui a2, a1, 02569; XTENSA-NEXT:    bnez a10, .LBB41_42570; XTENSA-NEXT:  .LBB41_2: # %atomicrmw.start2571; XTENSA-NEXT:    # =>This Inner Loop Header: Depth=12572; XTENSA-NEXT:    s8i a2, a1, 02573; XTENSA-NEXT:    slli a8, a2, 242574; XTENSA-NEXT:    srai a8, a8, 242575; XTENSA-NEXT:    or a12, a3, a32576; XTENSA-NEXT:    blt a5, a8, .LBB41_12577; XTENSA-NEXT:  # %bb.3: # %atomicrmw.start2578; XTENSA-NEXT:    # in Loop: Header=BB41_2 Depth=12579; XTENSA-NEXT:    or a12, a2, a22580; XTENSA-NEXT:    j .LBB41_12581; XTENSA-NEXT:  .LBB41_4: # %atomicrmw.end2582; XTENSA-NEXT:    retw2583;2584; XTENSA-ATOMIC-LABEL: atomicrmw_min_i8_acquire:2585; XTENSA-ATOMIC:       # %bb.0:2586; XTENSA-ATOMIC-NEXT:    entry a1, 322587; XTENSA-ATOMIC-NEXT:    slli a8, a2, 32588; XTENSA-ATOMIC-NEXT:    movi a9, 242589; XTENSA-ATOMIC-NEXT:    and a8, a8, a92590; XTENSA-ATOMIC-NEXT:    movi a9, 2552591; XTENSA-ATOMIC-NEXT:    ssl a82592; XTENSA-ATOMIC-NEXT:    sll a10, a92593; XTENSA-ATOMIC-NEXT:    movi a11, -12594; XTENSA-ATOMIC-NEXT:    xor a10, a10, a112595; XTENSA-ATOMIC-NEXT:    movi a11, -42596; XTENSA-ATOMIC-NEXT:    and a11, a2, a112597; XTENSA-ATOMIC-NEXT:    l32i a15, a11, 02598; XTENSA-ATOMIC-NEXT:    slli a12, a3, 242599; XTENSA-ATOMIC-NEXT:    srai a12, a12, 242600; XTENSA-ATOMIC-NEXT:    movi a13, 02601; XTENSA-ATOMIC-NEXT:    movi a14, 12602; XTENSA-ATOMIC-NEXT:    j .LBB41_22603; XTENSA-ATOMIC-NEXT:  .LBB41_1: # %atomicrmw.start2604; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB41_2 Depth=12605; XTENSA-ATOMIC-NEXT:    or a15, a7, a72606; XTENSA-ATOMIC-NEXT:    beqi a6, 1, .LBB41_62607; XTENSA-ATOMIC-NEXT:  .LBB41_2: # %atomicrmw.start2608; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=12609; XTENSA-ATOMIC-NEXT:    ssr a82610; XTENSA-ATOMIC-NEXT:    srl a7, a152611; XTENSA-ATOMIC-NEXT:    slli a6, a7, 242612; XTENSA-ATOMIC-NEXT:    srai a5, a6, 242613; XTENSA-ATOMIC-NEXT:    or a6, a3, a32614; XTENSA-ATOMIC-NEXT:    blt a12, a5, .LBB41_42615; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start2616; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB41_2 Depth=12617; XTENSA-ATOMIC-NEXT:    or a6, a7, a72618; XTENSA-ATOMIC-NEXT:  .LBB41_4: # %atomicrmw.start2619; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB41_2 Depth=12620; XTENSA-ATOMIC-NEXT:    and a7, a6, a92621; XTENSA-ATOMIC-NEXT:    ssl a82622; XTENSA-ATOMIC-NEXT:    sll a7, a72623; XTENSA-ATOMIC-NEXT:    and a6, a15, a102624; XTENSA-ATOMIC-NEXT:    or a7, a6, a72625; XTENSA-ATOMIC-NEXT:    wsr a15, scompare12626; XTENSA-ATOMIC-NEXT:    s32c1i a7, a11, 02627; XTENSA-ATOMIC-NEXT:    or a6, a14, a142628; XTENSA-ATOMIC-NEXT:    beq a7, a15, .LBB41_12629; XTENSA-ATOMIC-NEXT:  # %bb.5: # %atomicrmw.start2630; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB41_2 Depth=12631; XTENSA-ATOMIC-NEXT:    or a6, a13, a132632; XTENSA-ATOMIC-NEXT:    j .LBB41_12633; XTENSA-ATOMIC-NEXT:  .LBB41_6: # %atomicrmw.end2634; XTENSA-ATOMIC-NEXT:    ssr a82635; XTENSA-ATOMIC-NEXT:    srl a2, a72636; XTENSA-ATOMIC-NEXT:    memw2637; XTENSA-ATOMIC-NEXT:    retw2638  %res = atomicrmw min ptr %a, i8 %b acquire2639  ret i8 %res2640}2641 2642define i8 @atomicrmw_min_i8_release(ptr %a, i8 %b) nounwind {2643; XTENSA-LABEL: atomicrmw_min_i8_release:2644; XTENSA:       # %bb.0:2645; XTENSA-NEXT:    entry a1, 482646; XTENSA-NEXT:    or a9, a2, a22647; XTENSA-NEXT:    l8ui a2, a9, 02648; XTENSA-NEXT:    s32i a3, a1, 0 # 4-byte Folded Spill2649; XTENSA-NEXT:    slli a8, a3, 242650; XTENSA-NEXT:    or a3, a9, a92651; XTENSA-NEXT:    srai a4, a8, 242652; XTENSA-NEXT:    movi a7, 32653; XTENSA-NEXT:    movi a6, 02654; XTENSA-NEXT:    l32r a5, .LCPI42_02655; XTENSA-NEXT:    j .LBB42_22656; XTENSA-NEXT:  .LBB42_1: # %atomicrmw.start2657; XTENSA-NEXT:    # in Loop: Header=BB42_2 Depth=12658; XTENSA-NEXT:    addi a11, a1, 42659; XTENSA-NEXT:    or a10, a3, a32660; XTENSA-NEXT:    or a13, a7, a72661; XTENSA-NEXT:    or a14, a6, a62662; XTENSA-NEXT:    callx8 a52663; XTENSA-NEXT:    l8ui a2, a1, 42664; XTENSA-NEXT:    bnez a10, .LBB42_42665; XTENSA-NEXT:  .LBB42_2: # %atomicrmw.start2666; XTENSA-NEXT:    # =>This Inner Loop Header: Depth=12667; XTENSA-NEXT:    s8i a2, a1, 42668; XTENSA-NEXT:    slli a8, a2, 242669; XTENSA-NEXT:    srai a8, a8, 242670; XTENSA-NEXT:    l32i a12, a1, 0 # 4-byte Folded Reload2671; XTENSA-NEXT:    blt a4, a8, .LBB42_12672; XTENSA-NEXT:  # %bb.3: # %atomicrmw.start2673; XTENSA-NEXT:    # in Loop: Header=BB42_2 Depth=12674; XTENSA-NEXT:    or a12, a2, a22675; XTENSA-NEXT:    j .LBB42_12676; XTENSA-NEXT:  .LBB42_4: # %atomicrmw.end2677; XTENSA-NEXT:    retw2678;2679; XTENSA-ATOMIC-LABEL: atomicrmw_min_i8_release:2680; XTENSA-ATOMIC:       # %bb.0:2681; XTENSA-ATOMIC-NEXT:    entry a1, 322682; XTENSA-ATOMIC-NEXT:    slli a8, a2, 32683; XTENSA-ATOMIC-NEXT:    movi a9, 242684; XTENSA-ATOMIC-NEXT:    and a8, a8, a92685; XTENSA-ATOMIC-NEXT:    movi a9, 2552686; XTENSA-ATOMIC-NEXT:    ssl a82687; XTENSA-ATOMIC-NEXT:    sll a10, a92688; XTENSA-ATOMIC-NEXT:    movi a11, -12689; XTENSA-ATOMIC-NEXT:    xor a10, a10, a112690; XTENSA-ATOMIC-NEXT:    movi a11, -42691; XTENSA-ATOMIC-NEXT:    and a11, a2, a112692; XTENSA-ATOMIC-NEXT:    memw2693; XTENSA-ATOMIC-NEXT:    l32i a15, a11, 02694; XTENSA-ATOMIC-NEXT:    slli a12, a3, 242695; XTENSA-ATOMIC-NEXT:    srai a12, a12, 242696; XTENSA-ATOMIC-NEXT:    movi a13, 02697; XTENSA-ATOMIC-NEXT:    movi a14, 12698; XTENSA-ATOMIC-NEXT:    j .LBB42_22699; XTENSA-ATOMIC-NEXT:  .LBB42_1: # %atomicrmw.start2700; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB42_2 Depth=12701; XTENSA-ATOMIC-NEXT:    or a15, a7, a72702; XTENSA-ATOMIC-NEXT:    beqi a6, 1, .LBB42_62703; XTENSA-ATOMIC-NEXT:  .LBB42_2: # %atomicrmw.start2704; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=12705; XTENSA-ATOMIC-NEXT:    ssr a82706; XTENSA-ATOMIC-NEXT:    srl a7, a152707; XTENSA-ATOMIC-NEXT:    slli a6, a7, 242708; XTENSA-ATOMIC-NEXT:    srai a5, a6, 242709; XTENSA-ATOMIC-NEXT:    or a6, a3, a32710; XTENSA-ATOMIC-NEXT:    blt a12, a5, .LBB42_42711; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start2712; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB42_2 Depth=12713; XTENSA-ATOMIC-NEXT:    or a6, a7, a72714; XTENSA-ATOMIC-NEXT:  .LBB42_4: # %atomicrmw.start2715; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB42_2 Depth=12716; XTENSA-ATOMIC-NEXT:    and a7, a6, a92717; XTENSA-ATOMIC-NEXT:    ssl a82718; XTENSA-ATOMIC-NEXT:    sll a7, a72719; XTENSA-ATOMIC-NEXT:    and a6, a15, a102720; XTENSA-ATOMIC-NEXT:    or a7, a6, a72721; XTENSA-ATOMIC-NEXT:    wsr a15, scompare12722; XTENSA-ATOMIC-NEXT:    s32c1i a7, a11, 02723; XTENSA-ATOMIC-NEXT:    or a6, a14, a142724; XTENSA-ATOMIC-NEXT:    beq a7, a15, .LBB42_12725; XTENSA-ATOMIC-NEXT:  # %bb.5: # %atomicrmw.start2726; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB42_2 Depth=12727; XTENSA-ATOMIC-NEXT:    or a6, a13, a132728; XTENSA-ATOMIC-NEXT:    j .LBB42_12729; XTENSA-ATOMIC-NEXT:  .LBB42_6: # %atomicrmw.end2730; XTENSA-ATOMIC-NEXT:    ssr a82731; XTENSA-ATOMIC-NEXT:    srl a2, a72732; XTENSA-ATOMIC-NEXT:    retw2733  %res = atomicrmw min ptr %a, i8 %b release2734  ret i8 %res2735}2736 2737define i8 @atomicrmw_min_i8_acq_rel(ptr %a, i8 %b) nounwind {2738; XTENSA-LABEL: atomicrmw_min_i8_acq_rel:2739; XTENSA:       # %bb.0:2740; XTENSA-NEXT:    entry a1, 482741; XTENSA-NEXT:    or a9, a2, a22742; XTENSA-NEXT:    l8ui a2, a9, 02743; XTENSA-NEXT:    s32i a3, a1, 0 # 4-byte Folded Spill2744; XTENSA-NEXT:    slli a8, a3, 242745; XTENSA-NEXT:    or a3, a9, a92746; XTENSA-NEXT:    srai a4, a8, 242747; XTENSA-NEXT:    movi a7, 42748; XTENSA-NEXT:    movi a6, 22749; XTENSA-NEXT:    l32r a5, .LCPI43_02750; XTENSA-NEXT:    j .LBB43_22751; XTENSA-NEXT:  .LBB43_1: # %atomicrmw.start2752; XTENSA-NEXT:    # in Loop: Header=BB43_2 Depth=12753; XTENSA-NEXT:    addi a11, a1, 42754; XTENSA-NEXT:    or a10, a3, a32755; XTENSA-NEXT:    or a13, a7, a72756; XTENSA-NEXT:    or a14, a6, a62757; XTENSA-NEXT:    callx8 a52758; XTENSA-NEXT:    l8ui a2, a1, 42759; XTENSA-NEXT:    bnez a10, .LBB43_42760; XTENSA-NEXT:  .LBB43_2: # %atomicrmw.start2761; XTENSA-NEXT:    # =>This Inner Loop Header: Depth=12762; XTENSA-NEXT:    s8i a2, a1, 42763; XTENSA-NEXT:    slli a8, a2, 242764; XTENSA-NEXT:    srai a8, a8, 242765; XTENSA-NEXT:    l32i a12, a1, 0 # 4-byte Folded Reload2766; XTENSA-NEXT:    blt a4, a8, .LBB43_12767; XTENSA-NEXT:  # %bb.3: # %atomicrmw.start2768; XTENSA-NEXT:    # in Loop: Header=BB43_2 Depth=12769; XTENSA-NEXT:    or a12, a2, a22770; XTENSA-NEXT:    j .LBB43_12771; XTENSA-NEXT:  .LBB43_4: # %atomicrmw.end2772; XTENSA-NEXT:    retw2773;2774; XTENSA-ATOMIC-LABEL: atomicrmw_min_i8_acq_rel:2775; XTENSA-ATOMIC:       # %bb.0:2776; XTENSA-ATOMIC-NEXT:    entry a1, 322777; XTENSA-ATOMIC-NEXT:    slli a8, a2, 32778; XTENSA-ATOMIC-NEXT:    movi a9, 242779; XTENSA-ATOMIC-NEXT:    and a8, a8, a92780; XTENSA-ATOMIC-NEXT:    movi a9, 2552781; XTENSA-ATOMIC-NEXT:    ssl a82782; XTENSA-ATOMIC-NEXT:    sll a10, a92783; XTENSA-ATOMIC-NEXT:    movi a11, -12784; XTENSA-ATOMIC-NEXT:    xor a10, a10, a112785; XTENSA-ATOMIC-NEXT:    movi a11, -42786; XTENSA-ATOMIC-NEXT:    and a11, a2, a112787; XTENSA-ATOMIC-NEXT:    memw2788; XTENSA-ATOMIC-NEXT:    l32i a15, a11, 02789; XTENSA-ATOMIC-NEXT:    slli a12, a3, 242790; XTENSA-ATOMIC-NEXT:    srai a12, a12, 242791; XTENSA-ATOMIC-NEXT:    movi a13, 02792; XTENSA-ATOMIC-NEXT:    movi a14, 12793; XTENSA-ATOMIC-NEXT:    j .LBB43_22794; XTENSA-ATOMIC-NEXT:  .LBB43_1: # %atomicrmw.start2795; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB43_2 Depth=12796; XTENSA-ATOMIC-NEXT:    or a15, a7, a72797; XTENSA-ATOMIC-NEXT:    beqi a6, 1, .LBB43_62798; XTENSA-ATOMIC-NEXT:  .LBB43_2: # %atomicrmw.start2799; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=12800; XTENSA-ATOMIC-NEXT:    ssr a82801; XTENSA-ATOMIC-NEXT:    srl a7, a152802; XTENSA-ATOMIC-NEXT:    slli a6, a7, 242803; XTENSA-ATOMIC-NEXT:    srai a5, a6, 242804; XTENSA-ATOMIC-NEXT:    or a6, a3, a32805; XTENSA-ATOMIC-NEXT:    blt a12, a5, .LBB43_42806; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start2807; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB43_2 Depth=12808; XTENSA-ATOMIC-NEXT:    or a6, a7, a72809; XTENSA-ATOMIC-NEXT:  .LBB43_4: # %atomicrmw.start2810; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB43_2 Depth=12811; XTENSA-ATOMIC-NEXT:    and a7, a6, a92812; XTENSA-ATOMIC-NEXT:    ssl a82813; XTENSA-ATOMIC-NEXT:    sll a7, a72814; XTENSA-ATOMIC-NEXT:    and a6, a15, a102815; XTENSA-ATOMIC-NEXT:    or a7, a6, a72816; XTENSA-ATOMIC-NEXT:    wsr a15, scompare12817; XTENSA-ATOMIC-NEXT:    s32c1i a7, a11, 02818; XTENSA-ATOMIC-NEXT:    or a6, a14, a142819; XTENSA-ATOMIC-NEXT:    beq a7, a15, .LBB43_12820; XTENSA-ATOMIC-NEXT:  # %bb.5: # %atomicrmw.start2821; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB43_2 Depth=12822; XTENSA-ATOMIC-NEXT:    or a6, a13, a132823; XTENSA-ATOMIC-NEXT:    j .LBB43_12824; XTENSA-ATOMIC-NEXT:  .LBB43_6: # %atomicrmw.end2825; XTENSA-ATOMIC-NEXT:    ssr a82826; XTENSA-ATOMIC-NEXT:    srl a2, a72827; XTENSA-ATOMIC-NEXT:    memw2828; XTENSA-ATOMIC-NEXT:    retw2829  %res = atomicrmw min ptr %a, i8 %b acq_rel2830  ret i8 %res2831}2832 2833define i8 @atomicrmw_min_i8_seq_cst(ptr %a, i8 %b) nounwind {2834; XTENSA-LABEL: atomicrmw_min_i8_seq_cst:2835; XTENSA:       # %bb.0:2836; XTENSA-NEXT:    entry a1, 482837; XTENSA-NEXT:    or a6, a2, a22838; XTENSA-NEXT:    l8ui a2, a6, 02839; XTENSA-NEXT:    slli a8, a3, 242840; XTENSA-NEXT:    srai a5, a8, 242841; XTENSA-NEXT:    movi a7, 52842; XTENSA-NEXT:    l32r a4, .LCPI44_02843; XTENSA-NEXT:    j .LBB44_22844; XTENSA-NEXT:  .LBB44_1: # %atomicrmw.start2845; XTENSA-NEXT:    # in Loop: Header=BB44_2 Depth=12846; XTENSA-NEXT:    addi a11, a1, 02847; XTENSA-NEXT:    or a10, a6, a62848; XTENSA-NEXT:    or a13, a7, a72849; XTENSA-NEXT:    or a14, a7, a72850; XTENSA-NEXT:    callx8 a42851; XTENSA-NEXT:    l8ui a2, a1, 02852; XTENSA-NEXT:    bnez a10, .LBB44_42853; XTENSA-NEXT:  .LBB44_2: # %atomicrmw.start2854; XTENSA-NEXT:    # =>This Inner Loop Header: Depth=12855; XTENSA-NEXT:    s8i a2, a1, 02856; XTENSA-NEXT:    slli a8, a2, 242857; XTENSA-NEXT:    srai a8, a8, 242858; XTENSA-NEXT:    or a12, a3, a32859; XTENSA-NEXT:    blt a5, a8, .LBB44_12860; XTENSA-NEXT:  # %bb.3: # %atomicrmw.start2861; XTENSA-NEXT:    # in Loop: Header=BB44_2 Depth=12862; XTENSA-NEXT:    or a12, a2, a22863; XTENSA-NEXT:    j .LBB44_12864; XTENSA-NEXT:  .LBB44_4: # %atomicrmw.end2865; XTENSA-NEXT:    retw2866;2867; XTENSA-ATOMIC-LABEL: atomicrmw_min_i8_seq_cst:2868; XTENSA-ATOMIC:       # %bb.0:2869; XTENSA-ATOMIC-NEXT:    entry a1, 322870; XTENSA-ATOMIC-NEXT:    slli a8, a2, 32871; XTENSA-ATOMIC-NEXT:    movi a9, 242872; XTENSA-ATOMIC-NEXT:    and a8, a8, a92873; XTENSA-ATOMIC-NEXT:    movi a9, 2552874; XTENSA-ATOMIC-NEXT:    ssl a82875; XTENSA-ATOMIC-NEXT:    sll a10, a92876; XTENSA-ATOMIC-NEXT:    movi a11, -12877; XTENSA-ATOMIC-NEXT:    xor a10, a10, a112878; XTENSA-ATOMIC-NEXT:    movi a11, -42879; XTENSA-ATOMIC-NEXT:    and a11, a2, a112880; XTENSA-ATOMIC-NEXT:    memw2881; XTENSA-ATOMIC-NEXT:    l32i a15, a11, 02882; XTENSA-ATOMIC-NEXT:    slli a12, a3, 242883; XTENSA-ATOMIC-NEXT:    srai a12, a12, 242884; XTENSA-ATOMIC-NEXT:    movi a13, 02885; XTENSA-ATOMIC-NEXT:    movi a14, 12886; XTENSA-ATOMIC-NEXT:    j .LBB44_22887; XTENSA-ATOMIC-NEXT:  .LBB44_1: # %atomicrmw.start2888; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB44_2 Depth=12889; XTENSA-ATOMIC-NEXT:    or a15, a7, a72890; XTENSA-ATOMIC-NEXT:    beqi a6, 1, .LBB44_62891; XTENSA-ATOMIC-NEXT:  .LBB44_2: # %atomicrmw.start2892; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=12893; XTENSA-ATOMIC-NEXT:    ssr a82894; XTENSA-ATOMIC-NEXT:    srl a7, a152895; XTENSA-ATOMIC-NEXT:    slli a6, a7, 242896; XTENSA-ATOMIC-NEXT:    srai a5, a6, 242897; XTENSA-ATOMIC-NEXT:    or a6, a3, a32898; XTENSA-ATOMIC-NEXT:    blt a12, a5, .LBB44_42899; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start2900; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB44_2 Depth=12901; XTENSA-ATOMIC-NEXT:    or a6, a7, a72902; XTENSA-ATOMIC-NEXT:  .LBB44_4: # %atomicrmw.start2903; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB44_2 Depth=12904; XTENSA-ATOMIC-NEXT:    and a7, a6, a92905; XTENSA-ATOMIC-NEXT:    ssl a82906; XTENSA-ATOMIC-NEXT:    sll a7, a72907; XTENSA-ATOMIC-NEXT:    and a6, a15, a102908; XTENSA-ATOMIC-NEXT:    or a7, a6, a72909; XTENSA-ATOMIC-NEXT:    wsr a15, scompare12910; XTENSA-ATOMIC-NEXT:    s32c1i a7, a11, 02911; XTENSA-ATOMIC-NEXT:    or a6, a14, a142912; XTENSA-ATOMIC-NEXT:    beq a7, a15, .LBB44_12913; XTENSA-ATOMIC-NEXT:  # %bb.5: # %atomicrmw.start2914; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB44_2 Depth=12915; XTENSA-ATOMIC-NEXT:    or a6, a13, a132916; XTENSA-ATOMIC-NEXT:    j .LBB44_12917; XTENSA-ATOMIC-NEXT:  .LBB44_6: # %atomicrmw.end2918; XTENSA-ATOMIC-NEXT:    ssr a82919; XTENSA-ATOMIC-NEXT:    srl a2, a72920; XTENSA-ATOMIC-NEXT:    memw2921; XTENSA-ATOMIC-NEXT:    retw2922  %res = atomicrmw min ptr %a, i8 %b seq_cst2923  ret i8 %res2924}2925 2926define i8 @atomicrmw_umax_i8_monotonic(ptr %a, i8 %b) nounwind {2927; XTENSA-LABEL: atomicrmw_umax_i8_monotonic:2928; XTENSA:       # %bb.0:2929; XTENSA-NEXT:    entry a1, 482930; XTENSA-NEXT:    or a8, a3, a32931; XTENSA-NEXT:    s32i a2, a1, 0 # 4-byte Folded Spill2932; XTENSA-NEXT:    l8ui a2, a2, 02933; XTENSA-NEXT:    movi a5, 2552934; XTENSA-NEXT:    and a4, a8, a52935; XTENSA-NEXT:    movi a7, 02936; XTENSA-NEXT:    l32r a6, .LCPI45_02937; XTENSA-NEXT:    j .LBB45_22938; XTENSA-NEXT:  .LBB45_1: # %atomicrmw.start2939; XTENSA-NEXT:    # in Loop: Header=BB45_2 Depth=12940; XTENSA-NEXT:    addi a11, a1, 42941; XTENSA-NEXT:    l32i a10, a1, 0 # 4-byte Folded Reload2942; XTENSA-NEXT:    or a13, a7, a72943; XTENSA-NEXT:    or a14, a7, a72944; XTENSA-NEXT:    callx8 a62945; XTENSA-NEXT:    l8ui a2, a1, 42946; XTENSA-NEXT:    bnez a10, .LBB45_42947; XTENSA-NEXT:  .LBB45_2: # %atomicrmw.start2948; XTENSA-NEXT:    # =>This Inner Loop Header: Depth=12949; XTENSA-NEXT:    s8i a2, a1, 42950; XTENSA-NEXT:    and a8, a2, a52951; XTENSA-NEXT:    or a12, a3, a32952; XTENSA-NEXT:    bgeu a4, a8, .LBB45_12953; XTENSA-NEXT:  # %bb.3: # %atomicrmw.start2954; XTENSA-NEXT:    # in Loop: Header=BB45_2 Depth=12955; XTENSA-NEXT:    or a12, a2, a22956; XTENSA-NEXT:    j .LBB45_12957; XTENSA-NEXT:  .LBB45_4: # %atomicrmw.end2958; XTENSA-NEXT:    retw2959;2960; XTENSA-ATOMIC-LABEL: atomicrmw_umax_i8_monotonic:2961; XTENSA-ATOMIC:       # %bb.0:2962; XTENSA-ATOMIC-NEXT:    entry a1, 322963; XTENSA-ATOMIC-NEXT:    slli a8, a2, 32964; XTENSA-ATOMIC-NEXT:    movi a9, 242965; XTENSA-ATOMIC-NEXT:    and a8, a8, a92966; XTENSA-ATOMIC-NEXT:    movi a9, 2552967; XTENSA-ATOMIC-NEXT:    ssl a82968; XTENSA-ATOMIC-NEXT:    sll a10, a92969; XTENSA-ATOMIC-NEXT:    movi a11, -12970; XTENSA-ATOMIC-NEXT:    xor a10, a10, a112971; XTENSA-ATOMIC-NEXT:    movi a11, -42972; XTENSA-ATOMIC-NEXT:    and a11, a2, a112973; XTENSA-ATOMIC-NEXT:    l32i a15, a11, 02974; XTENSA-ATOMIC-NEXT:    and a12, a3, a92975; XTENSA-ATOMIC-NEXT:    movi a13, 02976; XTENSA-ATOMIC-NEXT:    movi a14, 12977; XTENSA-ATOMIC-NEXT:    j .LBB45_22978; XTENSA-ATOMIC-NEXT:  .LBB45_1: # %atomicrmw.start2979; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB45_2 Depth=12980; XTENSA-ATOMIC-NEXT:    or a15, a7, a72981; XTENSA-ATOMIC-NEXT:    beqi a6, 1, .LBB45_62982; XTENSA-ATOMIC-NEXT:  .LBB45_2: # %atomicrmw.start2983; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=12984; XTENSA-ATOMIC-NEXT:    ssr a82985; XTENSA-ATOMIC-NEXT:    srl a7, a152986; XTENSA-ATOMIC-NEXT:    and a5, a7, a92987; XTENSA-ATOMIC-NEXT:    or a6, a3, a32988; XTENSA-ATOMIC-NEXT:    bgeu a12, a5, .LBB45_42989; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start2990; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB45_2 Depth=12991; XTENSA-ATOMIC-NEXT:    or a6, a7, a72992; XTENSA-ATOMIC-NEXT:  .LBB45_4: # %atomicrmw.start2993; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB45_2 Depth=12994; XTENSA-ATOMIC-NEXT:    and a7, a6, a92995; XTENSA-ATOMIC-NEXT:    ssl a82996; XTENSA-ATOMIC-NEXT:    sll a7, a72997; XTENSA-ATOMIC-NEXT:    and a6, a15, a102998; XTENSA-ATOMIC-NEXT:    or a7, a6, a72999; XTENSA-ATOMIC-NEXT:    wsr a15, scompare13000; XTENSA-ATOMIC-NEXT:    s32c1i a7, a11, 03001; XTENSA-ATOMIC-NEXT:    or a6, a14, a143002; XTENSA-ATOMIC-NEXT:    beq a7, a15, .LBB45_13003; XTENSA-ATOMIC-NEXT:  # %bb.5: # %atomicrmw.start3004; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB45_2 Depth=13005; XTENSA-ATOMIC-NEXT:    or a6, a13, a133006; XTENSA-ATOMIC-NEXT:    j .LBB45_13007; XTENSA-ATOMIC-NEXT:  .LBB45_6: # %atomicrmw.end3008; XTENSA-ATOMIC-NEXT:    ssr a83009; XTENSA-ATOMIC-NEXT:    srl a2, a73010; XTENSA-ATOMIC-NEXT:    retw3011  %res = atomicrmw umax ptr %a, i8 %b monotonic3012  ret i8 %res3013}3014 3015define i8 @atomicrmw_umax_i8_acquire(ptr %a, i8 %b) nounwind {3016; XTENSA-LABEL: atomicrmw_umax_i8_acquire:3017; XTENSA:       # %bb.0:3018; XTENSA-NEXT:    entry a1, 483019; XTENSA-NEXT:    or a8, a3, a33020; XTENSA-NEXT:    s32i a2, a1, 0 # 4-byte Folded Spill3021; XTENSA-NEXT:    l8ui a2, a2, 03022; XTENSA-NEXT:    movi a5, 2553023; XTENSA-NEXT:    and a4, a8, a53024; XTENSA-NEXT:    movi a7, 23025; XTENSA-NEXT:    l32r a6, .LCPI46_03026; XTENSA-NEXT:    j .LBB46_23027; XTENSA-NEXT:  .LBB46_1: # %atomicrmw.start3028; XTENSA-NEXT:    # in Loop: Header=BB46_2 Depth=13029; XTENSA-NEXT:    addi a11, a1, 43030; XTENSA-NEXT:    l32i a10, a1, 0 # 4-byte Folded Reload3031; XTENSA-NEXT:    or a13, a7, a73032; XTENSA-NEXT:    or a14, a7, a73033; XTENSA-NEXT:    callx8 a63034; XTENSA-NEXT:    l8ui a2, a1, 43035; XTENSA-NEXT:    bnez a10, .LBB46_43036; XTENSA-NEXT:  .LBB46_2: # %atomicrmw.start3037; XTENSA-NEXT:    # =>This Inner Loop Header: Depth=13038; XTENSA-NEXT:    s8i a2, a1, 43039; XTENSA-NEXT:    and a8, a2, a53040; XTENSA-NEXT:    or a12, a3, a33041; XTENSA-NEXT:    bgeu a4, a8, .LBB46_13042; XTENSA-NEXT:  # %bb.3: # %atomicrmw.start3043; XTENSA-NEXT:    # in Loop: Header=BB46_2 Depth=13044; XTENSA-NEXT:    or a12, a2, a23045; XTENSA-NEXT:    j .LBB46_13046; XTENSA-NEXT:  .LBB46_4: # %atomicrmw.end3047; XTENSA-NEXT:    retw3048;3049; XTENSA-ATOMIC-LABEL: atomicrmw_umax_i8_acquire:3050; XTENSA-ATOMIC:       # %bb.0:3051; XTENSA-ATOMIC-NEXT:    entry a1, 323052; XTENSA-ATOMIC-NEXT:    slli a8, a2, 33053; XTENSA-ATOMIC-NEXT:    movi a9, 243054; XTENSA-ATOMIC-NEXT:    and a8, a8, a93055; XTENSA-ATOMIC-NEXT:    movi a9, 2553056; XTENSA-ATOMIC-NEXT:    ssl a83057; XTENSA-ATOMIC-NEXT:    sll a10, a93058; XTENSA-ATOMIC-NEXT:    movi a11, -13059; XTENSA-ATOMIC-NEXT:    xor a10, a10, a113060; XTENSA-ATOMIC-NEXT:    movi a11, -43061; XTENSA-ATOMIC-NEXT:    and a11, a2, a113062; XTENSA-ATOMIC-NEXT:    l32i a15, a11, 03063; XTENSA-ATOMIC-NEXT:    and a12, a3, a93064; XTENSA-ATOMIC-NEXT:    movi a13, 03065; XTENSA-ATOMIC-NEXT:    movi a14, 13066; XTENSA-ATOMIC-NEXT:    j .LBB46_23067; XTENSA-ATOMIC-NEXT:  .LBB46_1: # %atomicrmw.start3068; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB46_2 Depth=13069; XTENSA-ATOMIC-NEXT:    or a15, a7, a73070; XTENSA-ATOMIC-NEXT:    beqi a6, 1, .LBB46_63071; XTENSA-ATOMIC-NEXT:  .LBB46_2: # %atomicrmw.start3072; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=13073; XTENSA-ATOMIC-NEXT:    ssr a83074; XTENSA-ATOMIC-NEXT:    srl a7, a153075; XTENSA-ATOMIC-NEXT:    and a5, a7, a93076; XTENSA-ATOMIC-NEXT:    or a6, a3, a33077; XTENSA-ATOMIC-NEXT:    bgeu a12, a5, .LBB46_43078; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start3079; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB46_2 Depth=13080; XTENSA-ATOMIC-NEXT:    or a6, a7, a73081; XTENSA-ATOMIC-NEXT:  .LBB46_4: # %atomicrmw.start3082; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB46_2 Depth=13083; XTENSA-ATOMIC-NEXT:    and a7, a6, a93084; XTENSA-ATOMIC-NEXT:    ssl a83085; XTENSA-ATOMIC-NEXT:    sll a7, a73086; XTENSA-ATOMIC-NEXT:    and a6, a15, a103087; XTENSA-ATOMIC-NEXT:    or a7, a6, a73088; XTENSA-ATOMIC-NEXT:    wsr a15, scompare13089; XTENSA-ATOMIC-NEXT:    s32c1i a7, a11, 03090; XTENSA-ATOMIC-NEXT:    or a6, a14, a143091; XTENSA-ATOMIC-NEXT:    beq a7, a15, .LBB46_13092; XTENSA-ATOMIC-NEXT:  # %bb.5: # %atomicrmw.start3093; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB46_2 Depth=13094; XTENSA-ATOMIC-NEXT:    or a6, a13, a133095; XTENSA-ATOMIC-NEXT:    j .LBB46_13096; XTENSA-ATOMIC-NEXT:  .LBB46_6: # %atomicrmw.end3097; XTENSA-ATOMIC-NEXT:    ssr a83098; XTENSA-ATOMIC-NEXT:    srl a2, a73099; XTENSA-ATOMIC-NEXT:    memw3100; XTENSA-ATOMIC-NEXT:    retw3101  %res = atomicrmw umax ptr %a, i8 %b acquire3102  ret i8 %res3103}3104 3105define i8 @atomicrmw_umax_i8_release(ptr %a, i8 %b) nounwind {3106; XTENSA-LABEL: atomicrmw_umax_i8_release:3107; XTENSA:       # %bb.0:3108; XTENSA-NEXT:    entry a1, 483109; XTENSA-NEXT:    s32i a2, a1, 4 # 4-byte Folded Spill3110; XTENSA-NEXT:    l8ui a2, a2, 03111; XTENSA-NEXT:    movi a4, 2553112; XTENSA-NEXT:    or a5, a3, a33113; XTENSA-NEXT:    and a8, a3, a43114; XTENSA-NEXT:    s32i a8, a1, 0 # 4-byte Folded Spill3115; XTENSA-NEXT:    movi a7, 33116; XTENSA-NEXT:    movi a6, 03117; XTENSA-NEXT:    l32r a3, .LCPI47_03118; XTENSA-NEXT:    j .LBB47_23119; XTENSA-NEXT:  .LBB47_1: # %atomicrmw.start3120; XTENSA-NEXT:    # in Loop: Header=BB47_2 Depth=13121; XTENSA-NEXT:    addi a11, a1, 83122; XTENSA-NEXT:    l32i a10, a1, 4 # 4-byte Folded Reload3123; XTENSA-NEXT:    or a13, a7, a73124; XTENSA-NEXT:    or a14, a6, a63125; XTENSA-NEXT:    callx8 a33126; XTENSA-NEXT:    l8ui a2, a1, 83127; XTENSA-NEXT:    bnez a10, .LBB47_43128; XTENSA-NEXT:  .LBB47_2: # %atomicrmw.start3129; XTENSA-NEXT:    # =>This Inner Loop Header: Depth=13130; XTENSA-NEXT:    s8i a2, a1, 83131; XTENSA-NEXT:    and a8, a2, a43132; XTENSA-NEXT:    or a12, a5, a53133; XTENSA-NEXT:    l32i a9, a1, 0 # 4-byte Folded Reload3134; XTENSA-NEXT:    bgeu a9, a8, .LBB47_13135; XTENSA-NEXT:  # %bb.3: # %atomicrmw.start3136; XTENSA-NEXT:    # in Loop: Header=BB47_2 Depth=13137; XTENSA-NEXT:    or a12, a2, a23138; XTENSA-NEXT:    j .LBB47_13139; XTENSA-NEXT:  .LBB47_4: # %atomicrmw.end3140; XTENSA-NEXT:    retw3141;3142; XTENSA-ATOMIC-LABEL: atomicrmw_umax_i8_release:3143; XTENSA-ATOMIC:       # %bb.0:3144; XTENSA-ATOMIC-NEXT:    entry a1, 323145; XTENSA-ATOMIC-NEXT:    slli a8, a2, 33146; XTENSA-ATOMIC-NEXT:    movi a9, 243147; XTENSA-ATOMIC-NEXT:    and a8, a8, a93148; XTENSA-ATOMIC-NEXT:    movi a9, 2553149; XTENSA-ATOMIC-NEXT:    ssl a83150; XTENSA-ATOMIC-NEXT:    sll a10, a93151; XTENSA-ATOMIC-NEXT:    movi a11, -13152; XTENSA-ATOMIC-NEXT:    xor a10, a10, a113153; XTENSA-ATOMIC-NEXT:    movi a11, -43154; XTENSA-ATOMIC-NEXT:    and a11, a2, a113155; XTENSA-ATOMIC-NEXT:    memw3156; XTENSA-ATOMIC-NEXT:    l32i a15, a11, 03157; XTENSA-ATOMIC-NEXT:    and a12, a3, a93158; XTENSA-ATOMIC-NEXT:    movi a13, 03159; XTENSA-ATOMIC-NEXT:    movi a14, 13160; XTENSA-ATOMIC-NEXT:    j .LBB47_23161; XTENSA-ATOMIC-NEXT:  .LBB47_1: # %atomicrmw.start3162; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB47_2 Depth=13163; XTENSA-ATOMIC-NEXT:    or a15, a7, a73164; XTENSA-ATOMIC-NEXT:    beqi a6, 1, .LBB47_63165; XTENSA-ATOMIC-NEXT:  .LBB47_2: # %atomicrmw.start3166; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=13167; XTENSA-ATOMIC-NEXT:    ssr a83168; XTENSA-ATOMIC-NEXT:    srl a7, a153169; XTENSA-ATOMIC-NEXT:    and a5, a7, a93170; XTENSA-ATOMIC-NEXT:    or a6, a3, a33171; XTENSA-ATOMIC-NEXT:    bgeu a12, a5, .LBB47_43172; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start3173; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB47_2 Depth=13174; XTENSA-ATOMIC-NEXT:    or a6, a7, a73175; XTENSA-ATOMIC-NEXT:  .LBB47_4: # %atomicrmw.start3176; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB47_2 Depth=13177; XTENSA-ATOMIC-NEXT:    and a7, a6, a93178; XTENSA-ATOMIC-NEXT:    ssl a83179; XTENSA-ATOMIC-NEXT:    sll a7, a73180; XTENSA-ATOMIC-NEXT:    and a6, a15, a103181; XTENSA-ATOMIC-NEXT:    or a7, a6, a73182; XTENSA-ATOMIC-NEXT:    wsr a15, scompare13183; XTENSA-ATOMIC-NEXT:    s32c1i a7, a11, 03184; XTENSA-ATOMIC-NEXT:    or a6, a14, a143185; XTENSA-ATOMIC-NEXT:    beq a7, a15, .LBB47_13186; XTENSA-ATOMIC-NEXT:  # %bb.5: # %atomicrmw.start3187; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB47_2 Depth=13188; XTENSA-ATOMIC-NEXT:    or a6, a13, a133189; XTENSA-ATOMIC-NEXT:    j .LBB47_13190; XTENSA-ATOMIC-NEXT:  .LBB47_6: # %atomicrmw.end3191; XTENSA-ATOMIC-NEXT:    ssr a83192; XTENSA-ATOMIC-NEXT:    srl a2, a73193; XTENSA-ATOMIC-NEXT:    retw3194  %res = atomicrmw umax ptr %a, i8 %b release3195  ret i8 %res3196}3197 3198define i8 @atomicrmw_umax_i8_acq_rel(ptr %a, i8 %b) nounwind {3199; XTENSA-LABEL: atomicrmw_umax_i8_acq_rel:3200; XTENSA:       # %bb.0:3201; XTENSA-NEXT:    entry a1, 483202; XTENSA-NEXT:    s32i a2, a1, 4 # 4-byte Folded Spill3203; XTENSA-NEXT:    l8ui a2, a2, 03204; XTENSA-NEXT:    movi a4, 2553205; XTENSA-NEXT:    or a5, a3, a33206; XTENSA-NEXT:    and a8, a3, a43207; XTENSA-NEXT:    s32i a8, a1, 0 # 4-byte Folded Spill3208; XTENSA-NEXT:    movi a7, 43209; XTENSA-NEXT:    movi a6, 23210; XTENSA-NEXT:    l32r a3, .LCPI48_03211; XTENSA-NEXT:    j .LBB48_23212; XTENSA-NEXT:  .LBB48_1: # %atomicrmw.start3213; XTENSA-NEXT:    # in Loop: Header=BB48_2 Depth=13214; XTENSA-NEXT:    addi a11, a1, 83215; XTENSA-NEXT:    l32i a10, a1, 4 # 4-byte Folded Reload3216; XTENSA-NEXT:    or a13, a7, a73217; XTENSA-NEXT:    or a14, a6, a63218; XTENSA-NEXT:    callx8 a33219; XTENSA-NEXT:    l8ui a2, a1, 83220; XTENSA-NEXT:    bnez a10, .LBB48_43221; XTENSA-NEXT:  .LBB48_2: # %atomicrmw.start3222; XTENSA-NEXT:    # =>This Inner Loop Header: Depth=13223; XTENSA-NEXT:    s8i a2, a1, 83224; XTENSA-NEXT:    and a8, a2, a43225; XTENSA-NEXT:    or a12, a5, a53226; XTENSA-NEXT:    l32i a9, a1, 0 # 4-byte Folded Reload3227; XTENSA-NEXT:    bgeu a9, a8, .LBB48_13228; XTENSA-NEXT:  # %bb.3: # %atomicrmw.start3229; XTENSA-NEXT:    # in Loop: Header=BB48_2 Depth=13230; XTENSA-NEXT:    or a12, a2, a23231; XTENSA-NEXT:    j .LBB48_13232; XTENSA-NEXT:  .LBB48_4: # %atomicrmw.end3233; XTENSA-NEXT:    retw3234;3235; XTENSA-ATOMIC-LABEL: atomicrmw_umax_i8_acq_rel:3236; XTENSA-ATOMIC:       # %bb.0:3237; XTENSA-ATOMIC-NEXT:    entry a1, 323238; XTENSA-ATOMIC-NEXT:    slli a8, a2, 33239; XTENSA-ATOMIC-NEXT:    movi a9, 243240; XTENSA-ATOMIC-NEXT:    and a8, a8, a93241; XTENSA-ATOMIC-NEXT:    movi a9, 2553242; XTENSA-ATOMIC-NEXT:    ssl a83243; XTENSA-ATOMIC-NEXT:    sll a10, a93244; XTENSA-ATOMIC-NEXT:    movi a11, -13245; XTENSA-ATOMIC-NEXT:    xor a10, a10, a113246; XTENSA-ATOMIC-NEXT:    movi a11, -43247; XTENSA-ATOMIC-NEXT:    and a11, a2, a113248; XTENSA-ATOMIC-NEXT:    memw3249; XTENSA-ATOMIC-NEXT:    l32i a15, a11, 03250; XTENSA-ATOMIC-NEXT:    and a12, a3, a93251; XTENSA-ATOMIC-NEXT:    movi a13, 03252; XTENSA-ATOMIC-NEXT:    movi a14, 13253; XTENSA-ATOMIC-NEXT:    j .LBB48_23254; XTENSA-ATOMIC-NEXT:  .LBB48_1: # %atomicrmw.start3255; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB48_2 Depth=13256; XTENSA-ATOMIC-NEXT:    or a15, a7, a73257; XTENSA-ATOMIC-NEXT:    beqi a6, 1, .LBB48_63258; XTENSA-ATOMIC-NEXT:  .LBB48_2: # %atomicrmw.start3259; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=13260; XTENSA-ATOMIC-NEXT:    ssr a83261; XTENSA-ATOMIC-NEXT:    srl a7, a153262; XTENSA-ATOMIC-NEXT:    and a5, a7, a93263; XTENSA-ATOMIC-NEXT:    or a6, a3, a33264; XTENSA-ATOMIC-NEXT:    bgeu a12, a5, .LBB48_43265; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start3266; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB48_2 Depth=13267; XTENSA-ATOMIC-NEXT:    or a6, a7, a73268; XTENSA-ATOMIC-NEXT:  .LBB48_4: # %atomicrmw.start3269; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB48_2 Depth=13270; XTENSA-ATOMIC-NEXT:    and a7, a6, a93271; XTENSA-ATOMIC-NEXT:    ssl a83272; XTENSA-ATOMIC-NEXT:    sll a7, a73273; XTENSA-ATOMIC-NEXT:    and a6, a15, a103274; XTENSA-ATOMIC-NEXT:    or a7, a6, a73275; XTENSA-ATOMIC-NEXT:    wsr a15, scompare13276; XTENSA-ATOMIC-NEXT:    s32c1i a7, a11, 03277; XTENSA-ATOMIC-NEXT:    or a6, a14, a143278; XTENSA-ATOMIC-NEXT:    beq a7, a15, .LBB48_13279; XTENSA-ATOMIC-NEXT:  # %bb.5: # %atomicrmw.start3280; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB48_2 Depth=13281; XTENSA-ATOMIC-NEXT:    or a6, a13, a133282; XTENSA-ATOMIC-NEXT:    j .LBB48_13283; XTENSA-ATOMIC-NEXT:  .LBB48_6: # %atomicrmw.end3284; XTENSA-ATOMIC-NEXT:    ssr a83285; XTENSA-ATOMIC-NEXT:    srl a2, a73286; XTENSA-ATOMIC-NEXT:    memw3287; XTENSA-ATOMIC-NEXT:    retw3288  %res = atomicrmw umax ptr %a, i8 %b acq_rel3289  ret i8 %res3290}3291 3292define i8 @atomicrmw_umax_i8_seq_cst(ptr %a, i8 %b) nounwind {3293; XTENSA-LABEL: atomicrmw_umax_i8_seq_cst:3294; XTENSA:       # %bb.0:3295; XTENSA-NEXT:    entry a1, 483296; XTENSA-NEXT:    or a8, a3, a33297; XTENSA-NEXT:    s32i a2, a1, 0 # 4-byte Folded Spill3298; XTENSA-NEXT:    l8ui a2, a2, 03299; XTENSA-NEXT:    movi a5, 2553300; XTENSA-NEXT:    and a4, a8, a53301; XTENSA-NEXT:    movi a7, 53302; XTENSA-NEXT:    l32r a6, .LCPI49_03303; XTENSA-NEXT:    j .LBB49_23304; XTENSA-NEXT:  .LBB49_1: # %atomicrmw.start3305; XTENSA-NEXT:    # in Loop: Header=BB49_2 Depth=13306; XTENSA-NEXT:    addi a11, a1, 43307; XTENSA-NEXT:    l32i a10, a1, 0 # 4-byte Folded Reload3308; XTENSA-NEXT:    or a13, a7, a73309; XTENSA-NEXT:    or a14, a7, a73310; XTENSA-NEXT:    callx8 a63311; XTENSA-NEXT:    l8ui a2, a1, 43312; XTENSA-NEXT:    bnez a10, .LBB49_43313; XTENSA-NEXT:  .LBB49_2: # %atomicrmw.start3314; XTENSA-NEXT:    # =>This Inner Loop Header: Depth=13315; XTENSA-NEXT:    s8i a2, a1, 43316; XTENSA-NEXT:    and a8, a2, a53317; XTENSA-NEXT:    or a12, a3, a33318; XTENSA-NEXT:    bgeu a4, a8, .LBB49_13319; XTENSA-NEXT:  # %bb.3: # %atomicrmw.start3320; XTENSA-NEXT:    # in Loop: Header=BB49_2 Depth=13321; XTENSA-NEXT:    or a12, a2, a23322; XTENSA-NEXT:    j .LBB49_13323; XTENSA-NEXT:  .LBB49_4: # %atomicrmw.end3324; XTENSA-NEXT:    retw3325;3326; XTENSA-ATOMIC-LABEL: atomicrmw_umax_i8_seq_cst:3327; XTENSA-ATOMIC:       # %bb.0:3328; XTENSA-ATOMIC-NEXT:    entry a1, 323329; XTENSA-ATOMIC-NEXT:    slli a8, a2, 33330; XTENSA-ATOMIC-NEXT:    movi a9, 243331; XTENSA-ATOMIC-NEXT:    and a8, a8, a93332; XTENSA-ATOMIC-NEXT:    movi a9, 2553333; XTENSA-ATOMIC-NEXT:    ssl a83334; XTENSA-ATOMIC-NEXT:    sll a10, a93335; XTENSA-ATOMIC-NEXT:    movi a11, -13336; XTENSA-ATOMIC-NEXT:    xor a10, a10, a113337; XTENSA-ATOMIC-NEXT:    movi a11, -43338; XTENSA-ATOMIC-NEXT:    and a11, a2, a113339; XTENSA-ATOMIC-NEXT:    memw3340; XTENSA-ATOMIC-NEXT:    l32i a15, a11, 03341; XTENSA-ATOMIC-NEXT:    and a12, a3, a93342; XTENSA-ATOMIC-NEXT:    movi a13, 03343; XTENSA-ATOMIC-NEXT:    movi a14, 13344; XTENSA-ATOMIC-NEXT:    j .LBB49_23345; XTENSA-ATOMIC-NEXT:  .LBB49_1: # %atomicrmw.start3346; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB49_2 Depth=13347; XTENSA-ATOMIC-NEXT:    or a15, a7, a73348; XTENSA-ATOMIC-NEXT:    beqi a6, 1, .LBB49_63349; XTENSA-ATOMIC-NEXT:  .LBB49_2: # %atomicrmw.start3350; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=13351; XTENSA-ATOMIC-NEXT:    ssr a83352; XTENSA-ATOMIC-NEXT:    srl a7, a153353; XTENSA-ATOMIC-NEXT:    and a5, a7, a93354; XTENSA-ATOMIC-NEXT:    or a6, a3, a33355; XTENSA-ATOMIC-NEXT:    bgeu a12, a5, .LBB49_43356; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start3357; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB49_2 Depth=13358; XTENSA-ATOMIC-NEXT:    or a6, a7, a73359; XTENSA-ATOMIC-NEXT:  .LBB49_4: # %atomicrmw.start3360; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB49_2 Depth=13361; XTENSA-ATOMIC-NEXT:    and a7, a6, a93362; XTENSA-ATOMIC-NEXT:    ssl a83363; XTENSA-ATOMIC-NEXT:    sll a7, a73364; XTENSA-ATOMIC-NEXT:    and a6, a15, a103365; XTENSA-ATOMIC-NEXT:    or a7, a6, a73366; XTENSA-ATOMIC-NEXT:    wsr a15, scompare13367; XTENSA-ATOMIC-NEXT:    s32c1i a7, a11, 03368; XTENSA-ATOMIC-NEXT:    or a6, a14, a143369; XTENSA-ATOMIC-NEXT:    beq a7, a15, .LBB49_13370; XTENSA-ATOMIC-NEXT:  # %bb.5: # %atomicrmw.start3371; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB49_2 Depth=13372; XTENSA-ATOMIC-NEXT:    or a6, a13, a133373; XTENSA-ATOMIC-NEXT:    j .LBB49_13374; XTENSA-ATOMIC-NEXT:  .LBB49_6: # %atomicrmw.end3375; XTENSA-ATOMIC-NEXT:    ssr a83376; XTENSA-ATOMIC-NEXT:    srl a2, a73377; XTENSA-ATOMIC-NEXT:    memw3378; XTENSA-ATOMIC-NEXT:    retw3379  %res = atomicrmw umax ptr %a, i8 %b seq_cst3380  ret i8 %res3381}3382 3383define i8 @atomicrmw_umin_i8_monotonic(ptr %a, i8 %b) nounwind {3384; XTENSA-LABEL: atomicrmw_umin_i8_monotonic:3385; XTENSA:       # %bb.0:3386; XTENSA-NEXT:    entry a1, 483387; XTENSA-NEXT:    or a8, a3, a33388; XTENSA-NEXT:    s32i a2, a1, 0 # 4-byte Folded Spill3389; XTENSA-NEXT:    l8ui a2, a2, 03390; XTENSA-NEXT:    movi a5, 2553391; XTENSA-NEXT:    and a4, a8, a53392; XTENSA-NEXT:    movi a7, 03393; XTENSA-NEXT:    l32r a6, .LCPI50_03394; XTENSA-NEXT:    j .LBB50_23395; XTENSA-NEXT:  .LBB50_1: # %atomicrmw.start3396; XTENSA-NEXT:    # in Loop: Header=BB50_2 Depth=13397; XTENSA-NEXT:    addi a11, a1, 43398; XTENSA-NEXT:    l32i a10, a1, 0 # 4-byte Folded Reload3399; XTENSA-NEXT:    or a13, a7, a73400; XTENSA-NEXT:    or a14, a7, a73401; XTENSA-NEXT:    callx8 a63402; XTENSA-NEXT:    l8ui a2, a1, 43403; XTENSA-NEXT:    bnez a10, .LBB50_43404; XTENSA-NEXT:  .LBB50_2: # %atomicrmw.start3405; XTENSA-NEXT:    # =>This Inner Loop Header: Depth=13406; XTENSA-NEXT:    s8i a2, a1, 43407; XTENSA-NEXT:    and a8, a2, a53408; XTENSA-NEXT:    or a12, a3, a33409; XTENSA-NEXT:    bltu a4, a8, .LBB50_13410; XTENSA-NEXT:  # %bb.3: # %atomicrmw.start3411; XTENSA-NEXT:    # in Loop: Header=BB50_2 Depth=13412; XTENSA-NEXT:    or a12, a2, a23413; XTENSA-NEXT:    j .LBB50_13414; XTENSA-NEXT:  .LBB50_4: # %atomicrmw.end3415; XTENSA-NEXT:    retw3416;3417; XTENSA-ATOMIC-LABEL: atomicrmw_umin_i8_monotonic:3418; XTENSA-ATOMIC:       # %bb.0:3419; XTENSA-ATOMIC-NEXT:    entry a1, 323420; XTENSA-ATOMIC-NEXT:    slli a8, a2, 33421; XTENSA-ATOMIC-NEXT:    movi a9, 243422; XTENSA-ATOMIC-NEXT:    and a8, a8, a93423; XTENSA-ATOMIC-NEXT:    movi a9, 2553424; XTENSA-ATOMIC-NEXT:    ssl a83425; XTENSA-ATOMIC-NEXT:    sll a10, a93426; XTENSA-ATOMIC-NEXT:    movi a11, -13427; XTENSA-ATOMIC-NEXT:    xor a10, a10, a113428; XTENSA-ATOMIC-NEXT:    movi a11, -43429; XTENSA-ATOMIC-NEXT:    and a11, a2, a113430; XTENSA-ATOMIC-NEXT:    l32i a15, a11, 03431; XTENSA-ATOMIC-NEXT:    and a12, a3, a93432; XTENSA-ATOMIC-NEXT:    movi a13, 03433; XTENSA-ATOMIC-NEXT:    movi a14, 13434; XTENSA-ATOMIC-NEXT:    j .LBB50_23435; XTENSA-ATOMIC-NEXT:  .LBB50_1: # %atomicrmw.start3436; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB50_2 Depth=13437; XTENSA-ATOMIC-NEXT:    or a15, a7, a73438; XTENSA-ATOMIC-NEXT:    beqi a6, 1, .LBB50_63439; XTENSA-ATOMIC-NEXT:  .LBB50_2: # %atomicrmw.start3440; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=13441; XTENSA-ATOMIC-NEXT:    ssr a83442; XTENSA-ATOMIC-NEXT:    srl a7, a153443; XTENSA-ATOMIC-NEXT:    and a5, a7, a93444; XTENSA-ATOMIC-NEXT:    or a6, a3, a33445; XTENSA-ATOMIC-NEXT:    bltu a12, a5, .LBB50_43446; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start3447; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB50_2 Depth=13448; XTENSA-ATOMIC-NEXT:    or a6, a7, a73449; XTENSA-ATOMIC-NEXT:  .LBB50_4: # %atomicrmw.start3450; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB50_2 Depth=13451; XTENSA-ATOMIC-NEXT:    and a7, a6, a93452; XTENSA-ATOMIC-NEXT:    ssl a83453; XTENSA-ATOMIC-NEXT:    sll a7, a73454; XTENSA-ATOMIC-NEXT:    and a6, a15, a103455; XTENSA-ATOMIC-NEXT:    or a7, a6, a73456; XTENSA-ATOMIC-NEXT:    wsr a15, scompare13457; XTENSA-ATOMIC-NEXT:    s32c1i a7, a11, 03458; XTENSA-ATOMIC-NEXT:    or a6, a14, a143459; XTENSA-ATOMIC-NEXT:    beq a7, a15, .LBB50_13460; XTENSA-ATOMIC-NEXT:  # %bb.5: # %atomicrmw.start3461; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB50_2 Depth=13462; XTENSA-ATOMIC-NEXT:    or a6, a13, a133463; XTENSA-ATOMIC-NEXT:    j .LBB50_13464; XTENSA-ATOMIC-NEXT:  .LBB50_6: # %atomicrmw.end3465; XTENSA-ATOMIC-NEXT:    ssr a83466; XTENSA-ATOMIC-NEXT:    srl a2, a73467; XTENSA-ATOMIC-NEXT:    retw3468  %res = atomicrmw umin ptr %a, i8 %b monotonic3469  ret i8 %res3470}3471 3472define i8 @atomicrmw_umin_i8_acquire(ptr %a, i8 %b) nounwind {3473; XTENSA-LABEL: atomicrmw_umin_i8_acquire:3474; XTENSA:       # %bb.0:3475; XTENSA-NEXT:    entry a1, 483476; XTENSA-NEXT:    or a8, a3, a33477; XTENSA-NEXT:    s32i a2, a1, 0 # 4-byte Folded Spill3478; XTENSA-NEXT:    l8ui a2, a2, 03479; XTENSA-NEXT:    movi a5, 2553480; XTENSA-NEXT:    and a4, a8, a53481; XTENSA-NEXT:    movi a7, 23482; XTENSA-NEXT:    l32r a6, .LCPI51_03483; XTENSA-NEXT:    j .LBB51_23484; XTENSA-NEXT:  .LBB51_1: # %atomicrmw.start3485; XTENSA-NEXT:    # in Loop: Header=BB51_2 Depth=13486; XTENSA-NEXT:    addi a11, a1, 43487; XTENSA-NEXT:    l32i a10, a1, 0 # 4-byte Folded Reload3488; XTENSA-NEXT:    or a13, a7, a73489; XTENSA-NEXT:    or a14, a7, a73490; XTENSA-NEXT:    callx8 a63491; XTENSA-NEXT:    l8ui a2, a1, 43492; XTENSA-NEXT:    bnez a10, .LBB51_43493; XTENSA-NEXT:  .LBB51_2: # %atomicrmw.start3494; XTENSA-NEXT:    # =>This Inner Loop Header: Depth=13495; XTENSA-NEXT:    s8i a2, a1, 43496; XTENSA-NEXT:    and a8, a2, a53497; XTENSA-NEXT:    or a12, a3, a33498; XTENSA-NEXT:    bltu a4, a8, .LBB51_13499; XTENSA-NEXT:  # %bb.3: # %atomicrmw.start3500; XTENSA-NEXT:    # in Loop: Header=BB51_2 Depth=13501; XTENSA-NEXT:    or a12, a2, a23502; XTENSA-NEXT:    j .LBB51_13503; XTENSA-NEXT:  .LBB51_4: # %atomicrmw.end3504; XTENSA-NEXT:    retw3505;3506; XTENSA-ATOMIC-LABEL: atomicrmw_umin_i8_acquire:3507; XTENSA-ATOMIC:       # %bb.0:3508; XTENSA-ATOMIC-NEXT:    entry a1, 323509; XTENSA-ATOMIC-NEXT:    slli a8, a2, 33510; XTENSA-ATOMIC-NEXT:    movi a9, 243511; XTENSA-ATOMIC-NEXT:    and a8, a8, a93512; XTENSA-ATOMIC-NEXT:    movi a9, 2553513; XTENSA-ATOMIC-NEXT:    ssl a83514; XTENSA-ATOMIC-NEXT:    sll a10, a93515; XTENSA-ATOMIC-NEXT:    movi a11, -13516; XTENSA-ATOMIC-NEXT:    xor a10, a10, a113517; XTENSA-ATOMIC-NEXT:    movi a11, -43518; XTENSA-ATOMIC-NEXT:    and a11, a2, a113519; XTENSA-ATOMIC-NEXT:    l32i a15, a11, 03520; XTENSA-ATOMIC-NEXT:    and a12, a3, a93521; XTENSA-ATOMIC-NEXT:    movi a13, 03522; XTENSA-ATOMIC-NEXT:    movi a14, 13523; XTENSA-ATOMIC-NEXT:    j .LBB51_23524; XTENSA-ATOMIC-NEXT:  .LBB51_1: # %atomicrmw.start3525; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB51_2 Depth=13526; XTENSA-ATOMIC-NEXT:    or a15, a7, a73527; XTENSA-ATOMIC-NEXT:    beqi a6, 1, .LBB51_63528; XTENSA-ATOMIC-NEXT:  .LBB51_2: # %atomicrmw.start3529; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=13530; XTENSA-ATOMIC-NEXT:    ssr a83531; XTENSA-ATOMIC-NEXT:    srl a7, a153532; XTENSA-ATOMIC-NEXT:    and a5, a7, a93533; XTENSA-ATOMIC-NEXT:    or a6, a3, a33534; XTENSA-ATOMIC-NEXT:    bltu a12, a5, .LBB51_43535; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start3536; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB51_2 Depth=13537; XTENSA-ATOMIC-NEXT:    or a6, a7, a73538; XTENSA-ATOMIC-NEXT:  .LBB51_4: # %atomicrmw.start3539; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB51_2 Depth=13540; XTENSA-ATOMIC-NEXT:    and a7, a6, a93541; XTENSA-ATOMIC-NEXT:    ssl a83542; XTENSA-ATOMIC-NEXT:    sll a7, a73543; XTENSA-ATOMIC-NEXT:    and a6, a15, a103544; XTENSA-ATOMIC-NEXT:    or a7, a6, a73545; XTENSA-ATOMIC-NEXT:    wsr a15, scompare13546; XTENSA-ATOMIC-NEXT:    s32c1i a7, a11, 03547; XTENSA-ATOMIC-NEXT:    or a6, a14, a143548; XTENSA-ATOMIC-NEXT:    beq a7, a15, .LBB51_13549; XTENSA-ATOMIC-NEXT:  # %bb.5: # %atomicrmw.start3550; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB51_2 Depth=13551; XTENSA-ATOMIC-NEXT:    or a6, a13, a133552; XTENSA-ATOMIC-NEXT:    j .LBB51_13553; XTENSA-ATOMIC-NEXT:  .LBB51_6: # %atomicrmw.end3554; XTENSA-ATOMIC-NEXT:    ssr a83555; XTENSA-ATOMIC-NEXT:    srl a2, a73556; XTENSA-ATOMIC-NEXT:    memw3557; XTENSA-ATOMIC-NEXT:    retw3558  %res = atomicrmw umin ptr %a, i8 %b acquire3559  ret i8 %res3560}3561 3562define i8 @atomicrmw_umin_i8_release(ptr %a, i8 %b) nounwind {3563; XTENSA-LABEL: atomicrmw_umin_i8_release:3564; XTENSA:       # %bb.0:3565; XTENSA-NEXT:    entry a1, 483566; XTENSA-NEXT:    s32i a2, a1, 4 # 4-byte Folded Spill3567; XTENSA-NEXT:    l8ui a2, a2, 03568; XTENSA-NEXT:    movi a4, 2553569; XTENSA-NEXT:    or a5, a3, a33570; XTENSA-NEXT:    and a8, a3, a43571; XTENSA-NEXT:    s32i a8, a1, 0 # 4-byte Folded Spill3572; XTENSA-NEXT:    movi a7, 33573; XTENSA-NEXT:    movi a6, 03574; XTENSA-NEXT:    l32r a3, .LCPI52_03575; XTENSA-NEXT:    j .LBB52_23576; XTENSA-NEXT:  .LBB52_1: # %atomicrmw.start3577; XTENSA-NEXT:    # in Loop: Header=BB52_2 Depth=13578; XTENSA-NEXT:    addi a11, a1, 83579; XTENSA-NEXT:    l32i a10, a1, 4 # 4-byte Folded Reload3580; XTENSA-NEXT:    or a13, a7, a73581; XTENSA-NEXT:    or a14, a6, a63582; XTENSA-NEXT:    callx8 a33583; XTENSA-NEXT:    l8ui a2, a1, 83584; XTENSA-NEXT:    bnez a10, .LBB52_43585; XTENSA-NEXT:  .LBB52_2: # %atomicrmw.start3586; XTENSA-NEXT:    # =>This Inner Loop Header: Depth=13587; XTENSA-NEXT:    s8i a2, a1, 83588; XTENSA-NEXT:    and a8, a2, a43589; XTENSA-NEXT:    or a12, a5, a53590; XTENSA-NEXT:    l32i a9, a1, 0 # 4-byte Folded Reload3591; XTENSA-NEXT:    bltu a9, a8, .LBB52_13592; XTENSA-NEXT:  # %bb.3: # %atomicrmw.start3593; XTENSA-NEXT:    # in Loop: Header=BB52_2 Depth=13594; XTENSA-NEXT:    or a12, a2, a23595; XTENSA-NEXT:    j .LBB52_13596; XTENSA-NEXT:  .LBB52_4: # %atomicrmw.end3597; XTENSA-NEXT:    retw3598;3599; XTENSA-ATOMIC-LABEL: atomicrmw_umin_i8_release:3600; XTENSA-ATOMIC:       # %bb.0:3601; XTENSA-ATOMIC-NEXT:    entry a1, 323602; XTENSA-ATOMIC-NEXT:    slli a8, a2, 33603; XTENSA-ATOMIC-NEXT:    movi a9, 243604; XTENSA-ATOMIC-NEXT:    and a8, a8, a93605; XTENSA-ATOMIC-NEXT:    movi a9, 2553606; XTENSA-ATOMIC-NEXT:    ssl a83607; XTENSA-ATOMIC-NEXT:    sll a10, a93608; XTENSA-ATOMIC-NEXT:    movi a11, -13609; XTENSA-ATOMIC-NEXT:    xor a10, a10, a113610; XTENSA-ATOMIC-NEXT:    movi a11, -43611; XTENSA-ATOMIC-NEXT:    and a11, a2, a113612; XTENSA-ATOMIC-NEXT:    memw3613; XTENSA-ATOMIC-NEXT:    l32i a15, a11, 03614; XTENSA-ATOMIC-NEXT:    and a12, a3, a93615; XTENSA-ATOMIC-NEXT:    movi a13, 03616; XTENSA-ATOMIC-NEXT:    movi a14, 13617; XTENSA-ATOMIC-NEXT:    j .LBB52_23618; XTENSA-ATOMIC-NEXT:  .LBB52_1: # %atomicrmw.start3619; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB52_2 Depth=13620; XTENSA-ATOMIC-NEXT:    or a15, a7, a73621; XTENSA-ATOMIC-NEXT:    beqi a6, 1, .LBB52_63622; XTENSA-ATOMIC-NEXT:  .LBB52_2: # %atomicrmw.start3623; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=13624; XTENSA-ATOMIC-NEXT:    ssr a83625; XTENSA-ATOMIC-NEXT:    srl a7, a153626; XTENSA-ATOMIC-NEXT:    and a5, a7, a93627; XTENSA-ATOMIC-NEXT:    or a6, a3, a33628; XTENSA-ATOMIC-NEXT:    bltu a12, a5, .LBB52_43629; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start3630; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB52_2 Depth=13631; XTENSA-ATOMIC-NEXT:    or a6, a7, a73632; XTENSA-ATOMIC-NEXT:  .LBB52_4: # %atomicrmw.start3633; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB52_2 Depth=13634; XTENSA-ATOMIC-NEXT:    and a7, a6, a93635; XTENSA-ATOMIC-NEXT:    ssl a83636; XTENSA-ATOMIC-NEXT:    sll a7, a73637; XTENSA-ATOMIC-NEXT:    and a6, a15, a103638; XTENSA-ATOMIC-NEXT:    or a7, a6, a73639; XTENSA-ATOMIC-NEXT:    wsr a15, scompare13640; XTENSA-ATOMIC-NEXT:    s32c1i a7, a11, 03641; XTENSA-ATOMIC-NEXT:    or a6, a14, a143642; XTENSA-ATOMIC-NEXT:    beq a7, a15, .LBB52_13643; XTENSA-ATOMIC-NEXT:  # %bb.5: # %atomicrmw.start3644; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB52_2 Depth=13645; XTENSA-ATOMIC-NEXT:    or a6, a13, a133646; XTENSA-ATOMIC-NEXT:    j .LBB52_13647; XTENSA-ATOMIC-NEXT:  .LBB52_6: # %atomicrmw.end3648; XTENSA-ATOMIC-NEXT:    ssr a83649; XTENSA-ATOMIC-NEXT:    srl a2, a73650; XTENSA-ATOMIC-NEXT:    retw3651  %res = atomicrmw umin ptr %a, i8 %b release3652  ret i8 %res3653}3654 3655define i8 @atomicrmw_umin_i8_acq_rel(ptr %a, i8 %b) nounwind {3656; XTENSA-LABEL: atomicrmw_umin_i8_acq_rel:3657; XTENSA:       # %bb.0:3658; XTENSA-NEXT:    entry a1, 483659; XTENSA-NEXT:    s32i a2, a1, 4 # 4-byte Folded Spill3660; XTENSA-NEXT:    l8ui a2, a2, 03661; XTENSA-NEXT:    movi a4, 2553662; XTENSA-NEXT:    or a5, a3, a33663; XTENSA-NEXT:    and a8, a3, a43664; XTENSA-NEXT:    s32i a8, a1, 0 # 4-byte Folded Spill3665; XTENSA-NEXT:    movi a7, 43666; XTENSA-NEXT:    movi a6, 23667; XTENSA-NEXT:    l32r a3, .LCPI53_03668; XTENSA-NEXT:    j .LBB53_23669; XTENSA-NEXT:  .LBB53_1: # %atomicrmw.start3670; XTENSA-NEXT:    # in Loop: Header=BB53_2 Depth=13671; XTENSA-NEXT:    addi a11, a1, 83672; XTENSA-NEXT:    l32i a10, a1, 4 # 4-byte Folded Reload3673; XTENSA-NEXT:    or a13, a7, a73674; XTENSA-NEXT:    or a14, a6, a63675; XTENSA-NEXT:    callx8 a33676; XTENSA-NEXT:    l8ui a2, a1, 83677; XTENSA-NEXT:    bnez a10, .LBB53_43678; XTENSA-NEXT:  .LBB53_2: # %atomicrmw.start3679; XTENSA-NEXT:    # =>This Inner Loop Header: Depth=13680; XTENSA-NEXT:    s8i a2, a1, 83681; XTENSA-NEXT:    and a8, a2, a43682; XTENSA-NEXT:    or a12, a5, a53683; XTENSA-NEXT:    l32i a9, a1, 0 # 4-byte Folded Reload3684; XTENSA-NEXT:    bltu a9, a8, .LBB53_13685; XTENSA-NEXT:  # %bb.3: # %atomicrmw.start3686; XTENSA-NEXT:    # in Loop: Header=BB53_2 Depth=13687; XTENSA-NEXT:    or a12, a2, a23688; XTENSA-NEXT:    j .LBB53_13689; XTENSA-NEXT:  .LBB53_4: # %atomicrmw.end3690; XTENSA-NEXT:    retw3691;3692; XTENSA-ATOMIC-LABEL: atomicrmw_umin_i8_acq_rel:3693; XTENSA-ATOMIC:       # %bb.0:3694; XTENSA-ATOMIC-NEXT:    entry a1, 323695; XTENSA-ATOMIC-NEXT:    slli a8, a2, 33696; XTENSA-ATOMIC-NEXT:    movi a9, 243697; XTENSA-ATOMIC-NEXT:    and a8, a8, a93698; XTENSA-ATOMIC-NEXT:    movi a9, 2553699; XTENSA-ATOMIC-NEXT:    ssl a83700; XTENSA-ATOMIC-NEXT:    sll a10, a93701; XTENSA-ATOMIC-NEXT:    movi a11, -13702; XTENSA-ATOMIC-NEXT:    xor a10, a10, a113703; XTENSA-ATOMIC-NEXT:    movi a11, -43704; XTENSA-ATOMIC-NEXT:    and a11, a2, a113705; XTENSA-ATOMIC-NEXT:    memw3706; XTENSA-ATOMIC-NEXT:    l32i a15, a11, 03707; XTENSA-ATOMIC-NEXT:    and a12, a3, a93708; XTENSA-ATOMIC-NEXT:    movi a13, 03709; XTENSA-ATOMIC-NEXT:    movi a14, 13710; XTENSA-ATOMIC-NEXT:    j .LBB53_23711; XTENSA-ATOMIC-NEXT:  .LBB53_1: # %atomicrmw.start3712; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB53_2 Depth=13713; XTENSA-ATOMIC-NEXT:    or a15, a7, a73714; XTENSA-ATOMIC-NEXT:    beqi a6, 1, .LBB53_63715; XTENSA-ATOMIC-NEXT:  .LBB53_2: # %atomicrmw.start3716; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=13717; XTENSA-ATOMIC-NEXT:    ssr a83718; XTENSA-ATOMIC-NEXT:    srl a7, a153719; XTENSA-ATOMIC-NEXT:    and a5, a7, a93720; XTENSA-ATOMIC-NEXT:    or a6, a3, a33721; XTENSA-ATOMIC-NEXT:    bltu a12, a5, .LBB53_43722; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start3723; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB53_2 Depth=13724; XTENSA-ATOMIC-NEXT:    or a6, a7, a73725; XTENSA-ATOMIC-NEXT:  .LBB53_4: # %atomicrmw.start3726; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB53_2 Depth=13727; XTENSA-ATOMIC-NEXT:    and a7, a6, a93728; XTENSA-ATOMIC-NEXT:    ssl a83729; XTENSA-ATOMIC-NEXT:    sll a7, a73730; XTENSA-ATOMIC-NEXT:    and a6, a15, a103731; XTENSA-ATOMIC-NEXT:    or a7, a6, a73732; XTENSA-ATOMIC-NEXT:    wsr a15, scompare13733; XTENSA-ATOMIC-NEXT:    s32c1i a7, a11, 03734; XTENSA-ATOMIC-NEXT:    or a6, a14, a143735; XTENSA-ATOMIC-NEXT:    beq a7, a15, .LBB53_13736; XTENSA-ATOMIC-NEXT:  # %bb.5: # %atomicrmw.start3737; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB53_2 Depth=13738; XTENSA-ATOMIC-NEXT:    or a6, a13, a133739; XTENSA-ATOMIC-NEXT:    j .LBB53_13740; XTENSA-ATOMIC-NEXT:  .LBB53_6: # %atomicrmw.end3741; XTENSA-ATOMIC-NEXT:    ssr a83742; XTENSA-ATOMIC-NEXT:    srl a2, a73743; XTENSA-ATOMIC-NEXT:    memw3744; XTENSA-ATOMIC-NEXT:    retw3745  %res = atomicrmw umin ptr %a, i8 %b acq_rel3746  ret i8 %res3747}3748 3749define i8 @atomicrmw_umin_i8_seq_cst(ptr %a, i8 %b) nounwind {3750; XTENSA-LABEL: atomicrmw_umin_i8_seq_cst:3751; XTENSA:       # %bb.0:3752; XTENSA-NEXT:    entry a1, 483753; XTENSA-NEXT:    or a8, a3, a33754; XTENSA-NEXT:    s32i a2, a1, 0 # 4-byte Folded Spill3755; XTENSA-NEXT:    l8ui a2, a2, 03756; XTENSA-NEXT:    movi a5, 2553757; XTENSA-NEXT:    and a4, a8, a53758; XTENSA-NEXT:    movi a7, 53759; XTENSA-NEXT:    l32r a6, .LCPI54_03760; XTENSA-NEXT:    j .LBB54_23761; XTENSA-NEXT:  .LBB54_1: # %atomicrmw.start3762; XTENSA-NEXT:    # in Loop: Header=BB54_2 Depth=13763; XTENSA-NEXT:    addi a11, a1, 43764; XTENSA-NEXT:    l32i a10, a1, 0 # 4-byte Folded Reload3765; XTENSA-NEXT:    or a13, a7, a73766; XTENSA-NEXT:    or a14, a7, a73767; XTENSA-NEXT:    callx8 a63768; XTENSA-NEXT:    l8ui a2, a1, 43769; XTENSA-NEXT:    bnez a10, .LBB54_43770; XTENSA-NEXT:  .LBB54_2: # %atomicrmw.start3771; XTENSA-NEXT:    # =>This Inner Loop Header: Depth=13772; XTENSA-NEXT:    s8i a2, a1, 43773; XTENSA-NEXT:    and a8, a2, a53774; XTENSA-NEXT:    or a12, a3, a33775; XTENSA-NEXT:    bltu a4, a8, .LBB54_13776; XTENSA-NEXT:  # %bb.3: # %atomicrmw.start3777; XTENSA-NEXT:    # in Loop: Header=BB54_2 Depth=13778; XTENSA-NEXT:    or a12, a2, a23779; XTENSA-NEXT:    j .LBB54_13780; XTENSA-NEXT:  .LBB54_4: # %atomicrmw.end3781; XTENSA-NEXT:    retw3782;3783; XTENSA-ATOMIC-LABEL: atomicrmw_umin_i8_seq_cst:3784; XTENSA-ATOMIC:       # %bb.0:3785; XTENSA-ATOMIC-NEXT:    entry a1, 323786; XTENSA-ATOMIC-NEXT:    slli a8, a2, 33787; XTENSA-ATOMIC-NEXT:    movi a9, 243788; XTENSA-ATOMIC-NEXT:    and a8, a8, a93789; XTENSA-ATOMIC-NEXT:    movi a9, 2553790; XTENSA-ATOMIC-NEXT:    ssl a83791; XTENSA-ATOMIC-NEXT:    sll a10, a93792; XTENSA-ATOMIC-NEXT:    movi a11, -13793; XTENSA-ATOMIC-NEXT:    xor a10, a10, a113794; XTENSA-ATOMIC-NEXT:    movi a11, -43795; XTENSA-ATOMIC-NEXT:    and a11, a2, a113796; XTENSA-ATOMIC-NEXT:    memw3797; XTENSA-ATOMIC-NEXT:    l32i a15, a11, 03798; XTENSA-ATOMIC-NEXT:    and a12, a3, a93799; XTENSA-ATOMIC-NEXT:    movi a13, 03800; XTENSA-ATOMIC-NEXT:    movi a14, 13801; XTENSA-ATOMIC-NEXT:    j .LBB54_23802; XTENSA-ATOMIC-NEXT:  .LBB54_1: # %atomicrmw.start3803; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB54_2 Depth=13804; XTENSA-ATOMIC-NEXT:    or a15, a7, a73805; XTENSA-ATOMIC-NEXT:    beqi a6, 1, .LBB54_63806; XTENSA-ATOMIC-NEXT:  .LBB54_2: # %atomicrmw.start3807; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=13808; XTENSA-ATOMIC-NEXT:    ssr a83809; XTENSA-ATOMIC-NEXT:    srl a7, a153810; XTENSA-ATOMIC-NEXT:    and a5, a7, a93811; XTENSA-ATOMIC-NEXT:    or a6, a3, a33812; XTENSA-ATOMIC-NEXT:    bltu a12, a5, .LBB54_43813; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start3814; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB54_2 Depth=13815; XTENSA-ATOMIC-NEXT:    or a6, a7, a73816; XTENSA-ATOMIC-NEXT:  .LBB54_4: # %atomicrmw.start3817; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB54_2 Depth=13818; XTENSA-ATOMIC-NEXT:    and a7, a6, a93819; XTENSA-ATOMIC-NEXT:    ssl a83820; XTENSA-ATOMIC-NEXT:    sll a7, a73821; XTENSA-ATOMIC-NEXT:    and a6, a15, a103822; XTENSA-ATOMIC-NEXT:    or a7, a6, a73823; XTENSA-ATOMIC-NEXT:    wsr a15, scompare13824; XTENSA-ATOMIC-NEXT:    s32c1i a7, a11, 03825; XTENSA-ATOMIC-NEXT:    or a6, a14, a143826; XTENSA-ATOMIC-NEXT:    beq a7, a15, .LBB54_13827; XTENSA-ATOMIC-NEXT:  # %bb.5: # %atomicrmw.start3828; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB54_2 Depth=13829; XTENSA-ATOMIC-NEXT:    or a6, a13, a133830; XTENSA-ATOMIC-NEXT:    j .LBB54_13831; XTENSA-ATOMIC-NEXT:  .LBB54_6: # %atomicrmw.end3832; XTENSA-ATOMIC-NEXT:    ssr a83833; XTENSA-ATOMIC-NEXT:    srl a2, a73834; XTENSA-ATOMIC-NEXT:    memw3835; XTENSA-ATOMIC-NEXT:    retw3836  %res = atomicrmw umin ptr %a, i8 %b seq_cst3837  ret i8 %res3838}3839 3840define i16 @atomicrmw_xchg_i16_monotonic(ptr %a, i16 %b) nounwind {3841; XTENSA-LABEL: atomicrmw_xchg_i16_monotonic:3842; XTENSA:       # %bb.0:3843; XTENSA-NEXT:    entry a1, 323844; XTENSA-NEXT:    or a11, a3, a33845; XTENSA-NEXT:    or a10, a2, a23846; XTENSA-NEXT:    movi a12, 03847; XTENSA-NEXT:    l32r a8, .LCPI55_03848; XTENSA-NEXT:    callx8 a83849; XTENSA-NEXT:    or a2, a10, a103850; XTENSA-NEXT:    retw3851;3852; XTENSA-ATOMIC-LABEL: atomicrmw_xchg_i16_monotonic:3853; XTENSA-ATOMIC:       # %bb.0:3854; XTENSA-ATOMIC-NEXT:    entry a1, 323855; XTENSA-ATOMIC-NEXT:    l32r a10, .LCPI55_03856; XTENSA-ATOMIC-NEXT:    and a9, a3, a103857; XTENSA-ATOMIC-NEXT:    slli a8, a2, 33858; XTENSA-ATOMIC-NEXT:    movi a11, 243859; XTENSA-ATOMIC-NEXT:    and a8, a8, a113860; XTENSA-ATOMIC-NEXT:    ssl a83861; XTENSA-ATOMIC-NEXT:    sll a9, a93862; XTENSA-ATOMIC-NEXT:    ssl a83863; XTENSA-ATOMIC-NEXT:    sll a10, a103864; XTENSA-ATOMIC-NEXT:    movi a11, -13865; XTENSA-ATOMIC-NEXT:    xor a10, a10, a113866; XTENSA-ATOMIC-NEXT:    movi a11, -43867; XTENSA-ATOMIC-NEXT:    and a11, a2, a113868; XTENSA-ATOMIC-NEXT:    l32i a15, a11, 03869; XTENSA-ATOMIC-NEXT:    movi a12, 03870; XTENSA-ATOMIC-NEXT:    movi a13, 13871; XTENSA-ATOMIC-NEXT:    j .LBB55_23872; XTENSA-ATOMIC-NEXT:  .LBB55_1: # %atomicrmw.start3873; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB55_2 Depth=13874; XTENSA-ATOMIC-NEXT:    or a15, a14, a143875; XTENSA-ATOMIC-NEXT:    beqi a7, 1, .LBB55_43876; XTENSA-ATOMIC-NEXT:  .LBB55_2: # %atomicrmw.start3877; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=13878; XTENSA-ATOMIC-NEXT:    and a14, a15, a103879; XTENSA-ATOMIC-NEXT:    or a14, a14, a93880; XTENSA-ATOMIC-NEXT:    wsr a15, scompare13881; XTENSA-ATOMIC-NEXT:    s32c1i a14, a11, 03882; XTENSA-ATOMIC-NEXT:    or a7, a13, a133883; XTENSA-ATOMIC-NEXT:    beq a14, a15, .LBB55_13884; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start3885; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB55_2 Depth=13886; XTENSA-ATOMIC-NEXT:    or a7, a12, a123887; XTENSA-ATOMIC-NEXT:    j .LBB55_13888; XTENSA-ATOMIC-NEXT:  .LBB55_4: # %atomicrmw.end3889; XTENSA-ATOMIC-NEXT:    ssr a83890; XTENSA-ATOMIC-NEXT:    srl a2, a143891; XTENSA-ATOMIC-NEXT:    retw3892  %res = atomicrmw xchg ptr %a, i16 %b monotonic3893  ret i16 %res3894}3895 3896define i16 @atomicrmw_xchg_i16_acquire(ptr %a, i16 %b) nounwind {3897; XTENSA-LABEL: atomicrmw_xchg_i16_acquire:3898; XTENSA:       # %bb.0:3899; XTENSA-NEXT:    entry a1, 323900; XTENSA-NEXT:    or a11, a3, a33901; XTENSA-NEXT:    or a10, a2, a23902; XTENSA-NEXT:    movi a12, 23903; XTENSA-NEXT:    l32r a8, .LCPI56_03904; XTENSA-NEXT:    callx8 a83905; XTENSA-NEXT:    or a2, a10, a103906; XTENSA-NEXT:    retw3907;3908; XTENSA-ATOMIC-LABEL: atomicrmw_xchg_i16_acquire:3909; XTENSA-ATOMIC:       # %bb.0:3910; XTENSA-ATOMIC-NEXT:    entry a1, 323911; XTENSA-ATOMIC-NEXT:    l32r a10, .LCPI56_03912; XTENSA-ATOMIC-NEXT:    and a9, a3, a103913; XTENSA-ATOMIC-NEXT:    slli a8, a2, 33914; XTENSA-ATOMIC-NEXT:    movi a11, 243915; XTENSA-ATOMIC-NEXT:    and a8, a8, a113916; XTENSA-ATOMIC-NEXT:    ssl a83917; XTENSA-ATOMIC-NEXT:    sll a9, a93918; XTENSA-ATOMIC-NEXT:    ssl a83919; XTENSA-ATOMIC-NEXT:    sll a10, a103920; XTENSA-ATOMIC-NEXT:    movi a11, -13921; XTENSA-ATOMIC-NEXT:    xor a10, a10, a113922; XTENSA-ATOMIC-NEXT:    movi a11, -43923; XTENSA-ATOMIC-NEXT:    and a11, a2, a113924; XTENSA-ATOMIC-NEXT:    l32i a15, a11, 03925; XTENSA-ATOMIC-NEXT:    movi a12, 03926; XTENSA-ATOMIC-NEXT:    movi a13, 13927; XTENSA-ATOMIC-NEXT:    j .LBB56_23928; XTENSA-ATOMIC-NEXT:  .LBB56_1: # %atomicrmw.start3929; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB56_2 Depth=13930; XTENSA-ATOMIC-NEXT:    or a15, a14, a143931; XTENSA-ATOMIC-NEXT:    beqi a7, 1, .LBB56_43932; XTENSA-ATOMIC-NEXT:  .LBB56_2: # %atomicrmw.start3933; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=13934; XTENSA-ATOMIC-NEXT:    and a14, a15, a103935; XTENSA-ATOMIC-NEXT:    or a14, a14, a93936; XTENSA-ATOMIC-NEXT:    wsr a15, scompare13937; XTENSA-ATOMIC-NEXT:    s32c1i a14, a11, 03938; XTENSA-ATOMIC-NEXT:    or a7, a13, a133939; XTENSA-ATOMIC-NEXT:    beq a14, a15, .LBB56_13940; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start3941; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB56_2 Depth=13942; XTENSA-ATOMIC-NEXT:    or a7, a12, a123943; XTENSA-ATOMIC-NEXT:    j .LBB56_13944; XTENSA-ATOMIC-NEXT:  .LBB56_4: # %atomicrmw.end3945; XTENSA-ATOMIC-NEXT:    ssr a83946; XTENSA-ATOMIC-NEXT:    srl a2, a143947; XTENSA-ATOMIC-NEXT:    memw3948; XTENSA-ATOMIC-NEXT:    retw3949  %res = atomicrmw xchg ptr %a, i16 %b acquire3950  ret i16 %res3951}3952 3953define i16 @atomicrmw_xchg_i16_release(ptr %a, i16 %b) nounwind {3954; XTENSA-LABEL: atomicrmw_xchg_i16_release:3955; XTENSA:       # %bb.0:3956; XTENSA-NEXT:    entry a1, 323957; XTENSA-NEXT:    or a11, a3, a33958; XTENSA-NEXT:    or a10, a2, a23959; XTENSA-NEXT:    movi a12, 33960; XTENSA-NEXT:    l32r a8, .LCPI57_03961; XTENSA-NEXT:    callx8 a83962; XTENSA-NEXT:    or a2, a10, a103963; XTENSA-NEXT:    retw3964;3965; XTENSA-ATOMIC-LABEL: atomicrmw_xchg_i16_release:3966; XTENSA-ATOMIC:       # %bb.0:3967; XTENSA-ATOMIC-NEXT:    entry a1, 323968; XTENSA-ATOMIC-NEXT:    l32r a10, .LCPI57_03969; XTENSA-ATOMIC-NEXT:    and a9, a3, a103970; XTENSA-ATOMIC-NEXT:    slli a8, a2, 33971; XTENSA-ATOMIC-NEXT:    movi a11, 243972; XTENSA-ATOMIC-NEXT:    and a8, a8, a113973; XTENSA-ATOMIC-NEXT:    ssl a83974; XTENSA-ATOMIC-NEXT:    sll a9, a93975; XTENSA-ATOMIC-NEXT:    ssl a83976; XTENSA-ATOMIC-NEXT:    sll a10, a103977; XTENSA-ATOMIC-NEXT:    movi a11, -13978; XTENSA-ATOMIC-NEXT:    xor a10, a10, a113979; XTENSA-ATOMIC-NEXT:    movi a11, -43980; XTENSA-ATOMIC-NEXT:    and a11, a2, a113981; XTENSA-ATOMIC-NEXT:    memw3982; XTENSA-ATOMIC-NEXT:    l32i a15, a11, 03983; XTENSA-ATOMIC-NEXT:    movi a12, 03984; XTENSA-ATOMIC-NEXT:    movi a13, 13985; XTENSA-ATOMIC-NEXT:    j .LBB57_23986; XTENSA-ATOMIC-NEXT:  .LBB57_1: # %atomicrmw.start3987; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB57_2 Depth=13988; XTENSA-ATOMIC-NEXT:    or a15, a14, a143989; XTENSA-ATOMIC-NEXT:    beqi a7, 1, .LBB57_43990; XTENSA-ATOMIC-NEXT:  .LBB57_2: # %atomicrmw.start3991; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=13992; XTENSA-ATOMIC-NEXT:    and a14, a15, a103993; XTENSA-ATOMIC-NEXT:    or a14, a14, a93994; XTENSA-ATOMIC-NEXT:    wsr a15, scompare13995; XTENSA-ATOMIC-NEXT:    s32c1i a14, a11, 03996; XTENSA-ATOMIC-NEXT:    or a7, a13, a133997; XTENSA-ATOMIC-NEXT:    beq a14, a15, .LBB57_13998; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start3999; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB57_2 Depth=14000; XTENSA-ATOMIC-NEXT:    or a7, a12, a124001; XTENSA-ATOMIC-NEXT:    j .LBB57_14002; XTENSA-ATOMIC-NEXT:  .LBB57_4: # %atomicrmw.end4003; XTENSA-ATOMIC-NEXT:    ssr a84004; XTENSA-ATOMIC-NEXT:    srl a2, a144005; XTENSA-ATOMIC-NEXT:    retw4006  %res = atomicrmw xchg ptr %a, i16 %b release4007  ret i16 %res4008}4009 4010define i16 @atomicrmw_xchg_i16_acq_rel(ptr %a, i16 %b) nounwind {4011; XTENSA-LABEL: atomicrmw_xchg_i16_acq_rel:4012; XTENSA:       # %bb.0:4013; XTENSA-NEXT:    entry a1, 324014; XTENSA-NEXT:    or a11, a3, a34015; XTENSA-NEXT:    or a10, a2, a24016; XTENSA-NEXT:    movi a12, 44017; XTENSA-NEXT:    l32r a8, .LCPI58_04018; XTENSA-NEXT:    callx8 a84019; XTENSA-NEXT:    or a2, a10, a104020; XTENSA-NEXT:    retw4021;4022; XTENSA-ATOMIC-LABEL: atomicrmw_xchg_i16_acq_rel:4023; XTENSA-ATOMIC:       # %bb.0:4024; XTENSA-ATOMIC-NEXT:    entry a1, 324025; XTENSA-ATOMIC-NEXT:    l32r a10, .LCPI58_04026; XTENSA-ATOMIC-NEXT:    and a9, a3, a104027; XTENSA-ATOMIC-NEXT:    slli a8, a2, 34028; XTENSA-ATOMIC-NEXT:    movi a11, 244029; XTENSA-ATOMIC-NEXT:    and a8, a8, a114030; XTENSA-ATOMIC-NEXT:    ssl a84031; XTENSA-ATOMIC-NEXT:    sll a9, a94032; XTENSA-ATOMIC-NEXT:    ssl a84033; XTENSA-ATOMIC-NEXT:    sll a10, a104034; XTENSA-ATOMIC-NEXT:    movi a11, -14035; XTENSA-ATOMIC-NEXT:    xor a10, a10, a114036; XTENSA-ATOMIC-NEXT:    movi a11, -44037; XTENSA-ATOMIC-NEXT:    and a11, a2, a114038; XTENSA-ATOMIC-NEXT:    memw4039; XTENSA-ATOMIC-NEXT:    l32i a15, a11, 04040; XTENSA-ATOMIC-NEXT:    movi a12, 04041; XTENSA-ATOMIC-NEXT:    movi a13, 14042; XTENSA-ATOMIC-NEXT:    j .LBB58_24043; XTENSA-ATOMIC-NEXT:  .LBB58_1: # %atomicrmw.start4044; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB58_2 Depth=14045; XTENSA-ATOMIC-NEXT:    or a15, a14, a144046; XTENSA-ATOMIC-NEXT:    beqi a7, 1, .LBB58_44047; XTENSA-ATOMIC-NEXT:  .LBB58_2: # %atomicrmw.start4048; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=14049; XTENSA-ATOMIC-NEXT:    and a14, a15, a104050; XTENSA-ATOMIC-NEXT:    or a14, a14, a94051; XTENSA-ATOMIC-NEXT:    wsr a15, scompare14052; XTENSA-ATOMIC-NEXT:    s32c1i a14, a11, 04053; XTENSA-ATOMIC-NEXT:    or a7, a13, a134054; XTENSA-ATOMIC-NEXT:    beq a14, a15, .LBB58_14055; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start4056; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB58_2 Depth=14057; XTENSA-ATOMIC-NEXT:    or a7, a12, a124058; XTENSA-ATOMIC-NEXT:    j .LBB58_14059; XTENSA-ATOMIC-NEXT:  .LBB58_4: # %atomicrmw.end4060; XTENSA-ATOMIC-NEXT:    ssr a84061; XTENSA-ATOMIC-NEXT:    srl a2, a144062; XTENSA-ATOMIC-NEXT:    memw4063; XTENSA-ATOMIC-NEXT:    retw4064  %res = atomicrmw xchg ptr %a, i16 %b acq_rel4065  ret i16 %res4066}4067 4068define i16 @atomicrmw_xchg_i16_seq_cst(ptr %a, i16 %b) nounwind {4069; XTENSA-LABEL: atomicrmw_xchg_i16_seq_cst:4070; XTENSA:       # %bb.0:4071; XTENSA-NEXT:    entry a1, 324072; XTENSA-NEXT:    or a11, a3, a34073; XTENSA-NEXT:    or a10, a2, a24074; XTENSA-NEXT:    movi a12, 54075; XTENSA-NEXT:    l32r a8, .LCPI59_04076; XTENSA-NEXT:    callx8 a84077; XTENSA-NEXT:    or a2, a10, a104078; XTENSA-NEXT:    retw4079;4080; XTENSA-ATOMIC-LABEL: atomicrmw_xchg_i16_seq_cst:4081; XTENSA-ATOMIC:       # %bb.0:4082; XTENSA-ATOMIC-NEXT:    entry a1, 324083; XTENSA-ATOMIC-NEXT:    l32r a10, .LCPI59_04084; XTENSA-ATOMIC-NEXT:    and a9, a3, a104085; XTENSA-ATOMIC-NEXT:    slli a8, a2, 34086; XTENSA-ATOMIC-NEXT:    movi a11, 244087; XTENSA-ATOMIC-NEXT:    and a8, a8, a114088; XTENSA-ATOMIC-NEXT:    ssl a84089; XTENSA-ATOMIC-NEXT:    sll a9, a94090; XTENSA-ATOMIC-NEXT:    ssl a84091; XTENSA-ATOMIC-NEXT:    sll a10, a104092; XTENSA-ATOMIC-NEXT:    movi a11, -14093; XTENSA-ATOMIC-NEXT:    xor a10, a10, a114094; XTENSA-ATOMIC-NEXT:    movi a11, -44095; XTENSA-ATOMIC-NEXT:    and a11, a2, a114096; XTENSA-ATOMIC-NEXT:    memw4097; XTENSA-ATOMIC-NEXT:    l32i a15, a11, 04098; XTENSA-ATOMIC-NEXT:    movi a12, 04099; XTENSA-ATOMIC-NEXT:    movi a13, 14100; XTENSA-ATOMIC-NEXT:    j .LBB59_24101; XTENSA-ATOMIC-NEXT:  .LBB59_1: # %atomicrmw.start4102; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB59_2 Depth=14103; XTENSA-ATOMIC-NEXT:    or a15, a14, a144104; XTENSA-ATOMIC-NEXT:    beqi a7, 1, .LBB59_44105; XTENSA-ATOMIC-NEXT:  .LBB59_2: # %atomicrmw.start4106; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=14107; XTENSA-ATOMIC-NEXT:    and a14, a15, a104108; XTENSA-ATOMIC-NEXT:    or a14, a14, a94109; XTENSA-ATOMIC-NEXT:    wsr a15, scompare14110; XTENSA-ATOMIC-NEXT:    s32c1i a14, a11, 04111; XTENSA-ATOMIC-NEXT:    or a7, a13, a134112; XTENSA-ATOMIC-NEXT:    beq a14, a15, .LBB59_14113; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start4114; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB59_2 Depth=14115; XTENSA-ATOMIC-NEXT:    or a7, a12, a124116; XTENSA-ATOMIC-NEXT:    j .LBB59_14117; XTENSA-ATOMIC-NEXT:  .LBB59_4: # %atomicrmw.end4118; XTENSA-ATOMIC-NEXT:    ssr a84119; XTENSA-ATOMIC-NEXT:    srl a2, a144120; XTENSA-ATOMIC-NEXT:    memw4121; XTENSA-ATOMIC-NEXT:    retw4122  %res = atomicrmw xchg ptr %a, i16 %b seq_cst4123  ret i16 %res4124}4125 4126define i16 @atomicrmw_add_i16_monotonic(ptr %a, i16 %b) nounwind {4127; XTENSA-LABEL: atomicrmw_add_i16_monotonic:4128; XTENSA:       # %bb.0:4129; XTENSA-NEXT:    entry a1, 324130; XTENSA-NEXT:    or a11, a3, a34131; XTENSA-NEXT:    or a10, a2, a24132; XTENSA-NEXT:    movi a12, 04133; XTENSA-NEXT:    l32r a8, .LCPI60_04134; XTENSA-NEXT:    callx8 a84135; XTENSA-NEXT:    or a2, a10, a104136; XTENSA-NEXT:    retw4137;4138; XTENSA-ATOMIC-LABEL: atomicrmw_add_i16_monotonic:4139; XTENSA-ATOMIC:       # %bb.0:4140; XTENSA-ATOMIC-NEXT:    entry a1, 324141; XTENSA-ATOMIC-NEXT:    l32r a10, .LCPI60_04142; XTENSA-ATOMIC-NEXT:    and a9, a3, a104143; XTENSA-ATOMIC-NEXT:    slli a8, a2, 34144; XTENSA-ATOMIC-NEXT:    movi a11, 244145; XTENSA-ATOMIC-NEXT:    and a8, a8, a114146; XTENSA-ATOMIC-NEXT:    ssl a84147; XTENSA-ATOMIC-NEXT:    sll a9, a94148; XTENSA-ATOMIC-NEXT:    ssl a84149; XTENSA-ATOMIC-NEXT:    sll a10, a104150; XTENSA-ATOMIC-NEXT:    movi a11, -14151; XTENSA-ATOMIC-NEXT:    xor a11, a10, a114152; XTENSA-ATOMIC-NEXT:    movi a12, -44153; XTENSA-ATOMIC-NEXT:    and a12, a2, a124154; XTENSA-ATOMIC-NEXT:    l32i a15, a12, 04155; XTENSA-ATOMIC-NEXT:    movi a13, 04156; XTENSA-ATOMIC-NEXT:    movi a14, 14157; XTENSA-ATOMIC-NEXT:    j .LBB60_24158; XTENSA-ATOMIC-NEXT:  .LBB60_1: # %atomicrmw.start4159; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB60_2 Depth=14160; XTENSA-ATOMIC-NEXT:    or a15, a7, a74161; XTENSA-ATOMIC-NEXT:    beqi a6, 1, .LBB60_44162; XTENSA-ATOMIC-NEXT:  .LBB60_2: # %atomicrmw.start4163; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=14164; XTENSA-ATOMIC-NEXT:    and a7, a15, a114165; XTENSA-ATOMIC-NEXT:    add a6, a15, a94166; XTENSA-ATOMIC-NEXT:    and a6, a6, a104167; XTENSA-ATOMIC-NEXT:    or a7, a7, a64168; XTENSA-ATOMIC-NEXT:    wsr a15, scompare14169; XTENSA-ATOMIC-NEXT:    s32c1i a7, a12, 04170; XTENSA-ATOMIC-NEXT:    or a6, a14, a144171; XTENSA-ATOMIC-NEXT:    beq a7, a15, .LBB60_14172; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start4173; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB60_2 Depth=14174; XTENSA-ATOMIC-NEXT:    or a6, a13, a134175; XTENSA-ATOMIC-NEXT:    j .LBB60_14176; XTENSA-ATOMIC-NEXT:  .LBB60_4: # %atomicrmw.end4177; XTENSA-ATOMIC-NEXT:    ssr a84178; XTENSA-ATOMIC-NEXT:    srl a2, a74179; XTENSA-ATOMIC-NEXT:    retw4180  %res = atomicrmw add ptr %a, i16 %b monotonic4181  ret i16 %res4182}4183 4184define i16 @atomicrmw_add_i16_acquire(ptr %a, i16 %b) nounwind {4185; XTENSA-LABEL: atomicrmw_add_i16_acquire:4186; XTENSA:       # %bb.0:4187; XTENSA-NEXT:    entry a1, 324188; XTENSA-NEXT:    or a11, a3, a34189; XTENSA-NEXT:    or a10, a2, a24190; XTENSA-NEXT:    movi a12, 24191; XTENSA-NEXT:    l32r a8, .LCPI61_04192; XTENSA-NEXT:    callx8 a84193; XTENSA-NEXT:    or a2, a10, a104194; XTENSA-NEXT:    retw4195;4196; XTENSA-ATOMIC-LABEL: atomicrmw_add_i16_acquire:4197; XTENSA-ATOMIC:       # %bb.0:4198; XTENSA-ATOMIC-NEXT:    entry a1, 324199; XTENSA-ATOMIC-NEXT:    l32r a10, .LCPI61_04200; XTENSA-ATOMIC-NEXT:    and a9, a3, a104201; XTENSA-ATOMIC-NEXT:    slli a8, a2, 34202; XTENSA-ATOMIC-NEXT:    movi a11, 244203; XTENSA-ATOMIC-NEXT:    and a8, a8, a114204; XTENSA-ATOMIC-NEXT:    ssl a84205; XTENSA-ATOMIC-NEXT:    sll a9, a94206; XTENSA-ATOMIC-NEXT:    ssl a84207; XTENSA-ATOMIC-NEXT:    sll a10, a104208; XTENSA-ATOMIC-NEXT:    movi a11, -14209; XTENSA-ATOMIC-NEXT:    xor a11, a10, a114210; XTENSA-ATOMIC-NEXT:    movi a12, -44211; XTENSA-ATOMIC-NEXT:    and a12, a2, a124212; XTENSA-ATOMIC-NEXT:    l32i a15, a12, 04213; XTENSA-ATOMIC-NEXT:    movi a13, 04214; XTENSA-ATOMIC-NEXT:    movi a14, 14215; XTENSA-ATOMIC-NEXT:    j .LBB61_24216; XTENSA-ATOMIC-NEXT:  .LBB61_1: # %atomicrmw.start4217; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB61_2 Depth=14218; XTENSA-ATOMIC-NEXT:    or a15, a7, a74219; XTENSA-ATOMIC-NEXT:    beqi a6, 1, .LBB61_44220; XTENSA-ATOMIC-NEXT:  .LBB61_2: # %atomicrmw.start4221; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=14222; XTENSA-ATOMIC-NEXT:    and a7, a15, a114223; XTENSA-ATOMIC-NEXT:    add a6, a15, a94224; XTENSA-ATOMIC-NEXT:    and a6, a6, a104225; XTENSA-ATOMIC-NEXT:    or a7, a7, a64226; XTENSA-ATOMIC-NEXT:    wsr a15, scompare14227; XTENSA-ATOMIC-NEXT:    s32c1i a7, a12, 04228; XTENSA-ATOMIC-NEXT:    or a6, a14, a144229; XTENSA-ATOMIC-NEXT:    beq a7, a15, .LBB61_14230; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start4231; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB61_2 Depth=14232; XTENSA-ATOMIC-NEXT:    or a6, a13, a134233; XTENSA-ATOMIC-NEXT:    j .LBB61_14234; XTENSA-ATOMIC-NEXT:  .LBB61_4: # %atomicrmw.end4235; XTENSA-ATOMIC-NEXT:    ssr a84236; XTENSA-ATOMIC-NEXT:    srl a2, a74237; XTENSA-ATOMIC-NEXT:    memw4238; XTENSA-ATOMIC-NEXT:    retw4239  %res = atomicrmw add ptr %a, i16 %b acquire4240  ret i16 %res4241}4242 4243define i16 @atomicrmw_add_i16_release(ptr %a, i16 %b) nounwind {4244; XTENSA-LABEL: atomicrmw_add_i16_release:4245; XTENSA:       # %bb.0:4246; XTENSA-NEXT:    entry a1, 324247; XTENSA-NEXT:    or a11, a3, a34248; XTENSA-NEXT:    or a10, a2, a24249; XTENSA-NEXT:    movi a12, 34250; XTENSA-NEXT:    l32r a8, .LCPI62_04251; XTENSA-NEXT:    callx8 a84252; XTENSA-NEXT:    or a2, a10, a104253; XTENSA-NEXT:    retw4254;4255; XTENSA-ATOMIC-LABEL: atomicrmw_add_i16_release:4256; XTENSA-ATOMIC:       # %bb.0:4257; XTENSA-ATOMIC-NEXT:    entry a1, 324258; XTENSA-ATOMIC-NEXT:    l32r a10, .LCPI62_04259; XTENSA-ATOMIC-NEXT:    and a9, a3, a104260; XTENSA-ATOMIC-NEXT:    slli a8, a2, 34261; XTENSA-ATOMIC-NEXT:    movi a11, 244262; XTENSA-ATOMIC-NEXT:    and a8, a8, a114263; XTENSA-ATOMIC-NEXT:    ssl a84264; XTENSA-ATOMIC-NEXT:    sll a9, a94265; XTENSA-ATOMIC-NEXT:    ssl a84266; XTENSA-ATOMIC-NEXT:    sll a10, a104267; XTENSA-ATOMIC-NEXT:    movi a11, -14268; XTENSA-ATOMIC-NEXT:    xor a11, a10, a114269; XTENSA-ATOMIC-NEXT:    movi a12, -44270; XTENSA-ATOMIC-NEXT:    and a12, a2, a124271; XTENSA-ATOMIC-NEXT:    memw4272; XTENSA-ATOMIC-NEXT:    l32i a15, a12, 04273; XTENSA-ATOMIC-NEXT:    movi a13, 04274; XTENSA-ATOMIC-NEXT:    movi a14, 14275; XTENSA-ATOMIC-NEXT:    j .LBB62_24276; XTENSA-ATOMIC-NEXT:  .LBB62_1: # %atomicrmw.start4277; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB62_2 Depth=14278; XTENSA-ATOMIC-NEXT:    or a15, a7, a74279; XTENSA-ATOMIC-NEXT:    beqi a6, 1, .LBB62_44280; XTENSA-ATOMIC-NEXT:  .LBB62_2: # %atomicrmw.start4281; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=14282; XTENSA-ATOMIC-NEXT:    and a7, a15, a114283; XTENSA-ATOMIC-NEXT:    add a6, a15, a94284; XTENSA-ATOMIC-NEXT:    and a6, a6, a104285; XTENSA-ATOMIC-NEXT:    or a7, a7, a64286; XTENSA-ATOMIC-NEXT:    wsr a15, scompare14287; XTENSA-ATOMIC-NEXT:    s32c1i a7, a12, 04288; XTENSA-ATOMIC-NEXT:    or a6, a14, a144289; XTENSA-ATOMIC-NEXT:    beq a7, a15, .LBB62_14290; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start4291; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB62_2 Depth=14292; XTENSA-ATOMIC-NEXT:    or a6, a13, a134293; XTENSA-ATOMIC-NEXT:    j .LBB62_14294; XTENSA-ATOMIC-NEXT:  .LBB62_4: # %atomicrmw.end4295; XTENSA-ATOMIC-NEXT:    ssr a84296; XTENSA-ATOMIC-NEXT:    srl a2, a74297; XTENSA-ATOMIC-NEXT:    retw4298  %res = atomicrmw add ptr %a, i16 %b release4299  ret i16 %res4300}4301 4302define i16 @atomicrmw_add_i16_acq_rel(ptr %a, i16 %b) nounwind {4303; XTENSA-LABEL: atomicrmw_add_i16_acq_rel:4304; XTENSA:       # %bb.0:4305; XTENSA-NEXT:    entry a1, 324306; XTENSA-NEXT:    or a11, a3, a34307; XTENSA-NEXT:    or a10, a2, a24308; XTENSA-NEXT:    movi a12, 44309; XTENSA-NEXT:    l32r a8, .LCPI63_04310; XTENSA-NEXT:    callx8 a84311; XTENSA-NEXT:    or a2, a10, a104312; XTENSA-NEXT:    retw4313;4314; XTENSA-ATOMIC-LABEL: atomicrmw_add_i16_acq_rel:4315; XTENSA-ATOMIC:       # %bb.0:4316; XTENSA-ATOMIC-NEXT:    entry a1, 324317; XTENSA-ATOMIC-NEXT:    l32r a10, .LCPI63_04318; XTENSA-ATOMIC-NEXT:    and a9, a3, a104319; XTENSA-ATOMIC-NEXT:    slli a8, a2, 34320; XTENSA-ATOMIC-NEXT:    movi a11, 244321; XTENSA-ATOMIC-NEXT:    and a8, a8, a114322; XTENSA-ATOMIC-NEXT:    ssl a84323; XTENSA-ATOMIC-NEXT:    sll a9, a94324; XTENSA-ATOMIC-NEXT:    ssl a84325; XTENSA-ATOMIC-NEXT:    sll a10, a104326; XTENSA-ATOMIC-NEXT:    movi a11, -14327; XTENSA-ATOMIC-NEXT:    xor a11, a10, a114328; XTENSA-ATOMIC-NEXT:    movi a12, -44329; XTENSA-ATOMIC-NEXT:    and a12, a2, a124330; XTENSA-ATOMIC-NEXT:    memw4331; XTENSA-ATOMIC-NEXT:    l32i a15, a12, 04332; XTENSA-ATOMIC-NEXT:    movi a13, 04333; XTENSA-ATOMIC-NEXT:    movi a14, 14334; XTENSA-ATOMIC-NEXT:    j .LBB63_24335; XTENSA-ATOMIC-NEXT:  .LBB63_1: # %atomicrmw.start4336; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB63_2 Depth=14337; XTENSA-ATOMIC-NEXT:    or a15, a7, a74338; XTENSA-ATOMIC-NEXT:    beqi a6, 1, .LBB63_44339; XTENSA-ATOMIC-NEXT:  .LBB63_2: # %atomicrmw.start4340; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=14341; XTENSA-ATOMIC-NEXT:    and a7, a15, a114342; XTENSA-ATOMIC-NEXT:    add a6, a15, a94343; XTENSA-ATOMIC-NEXT:    and a6, a6, a104344; XTENSA-ATOMIC-NEXT:    or a7, a7, a64345; XTENSA-ATOMIC-NEXT:    wsr a15, scompare14346; XTENSA-ATOMIC-NEXT:    s32c1i a7, a12, 04347; XTENSA-ATOMIC-NEXT:    or a6, a14, a144348; XTENSA-ATOMIC-NEXT:    beq a7, a15, .LBB63_14349; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start4350; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB63_2 Depth=14351; XTENSA-ATOMIC-NEXT:    or a6, a13, a134352; XTENSA-ATOMIC-NEXT:    j .LBB63_14353; XTENSA-ATOMIC-NEXT:  .LBB63_4: # %atomicrmw.end4354; XTENSA-ATOMIC-NEXT:    ssr a84355; XTENSA-ATOMIC-NEXT:    srl a2, a74356; XTENSA-ATOMIC-NEXT:    memw4357; XTENSA-ATOMIC-NEXT:    retw4358  %res = atomicrmw add ptr %a, i16 %b acq_rel4359  ret i16 %res4360}4361 4362define i16 @atomicrmw_add_i16_seq_cst(ptr %a, i16 %b) nounwind {4363; XTENSA-LABEL: atomicrmw_add_i16_seq_cst:4364; XTENSA:       # %bb.0:4365; XTENSA-NEXT:    entry a1, 324366; XTENSA-NEXT:    or a11, a3, a34367; XTENSA-NEXT:    or a10, a2, a24368; XTENSA-NEXT:    movi a12, 54369; XTENSA-NEXT:    l32r a8, .LCPI64_04370; XTENSA-NEXT:    callx8 a84371; XTENSA-NEXT:    or a2, a10, a104372; XTENSA-NEXT:    retw4373;4374; XTENSA-ATOMIC-LABEL: atomicrmw_add_i16_seq_cst:4375; XTENSA-ATOMIC:       # %bb.0:4376; XTENSA-ATOMIC-NEXT:    entry a1, 324377; XTENSA-ATOMIC-NEXT:    l32r a10, .LCPI64_04378; XTENSA-ATOMIC-NEXT:    and a9, a3, a104379; XTENSA-ATOMIC-NEXT:    slli a8, a2, 34380; XTENSA-ATOMIC-NEXT:    movi a11, 244381; XTENSA-ATOMIC-NEXT:    and a8, a8, a114382; XTENSA-ATOMIC-NEXT:    ssl a84383; XTENSA-ATOMIC-NEXT:    sll a9, a94384; XTENSA-ATOMIC-NEXT:    ssl a84385; XTENSA-ATOMIC-NEXT:    sll a10, a104386; XTENSA-ATOMIC-NEXT:    movi a11, -14387; XTENSA-ATOMIC-NEXT:    xor a11, a10, a114388; XTENSA-ATOMIC-NEXT:    movi a12, -44389; XTENSA-ATOMIC-NEXT:    and a12, a2, a124390; XTENSA-ATOMIC-NEXT:    memw4391; XTENSA-ATOMIC-NEXT:    l32i a15, a12, 04392; XTENSA-ATOMIC-NEXT:    movi a13, 04393; XTENSA-ATOMIC-NEXT:    movi a14, 14394; XTENSA-ATOMIC-NEXT:    j .LBB64_24395; XTENSA-ATOMIC-NEXT:  .LBB64_1: # %atomicrmw.start4396; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB64_2 Depth=14397; XTENSA-ATOMIC-NEXT:    or a15, a7, a74398; XTENSA-ATOMIC-NEXT:    beqi a6, 1, .LBB64_44399; XTENSA-ATOMIC-NEXT:  .LBB64_2: # %atomicrmw.start4400; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=14401; XTENSA-ATOMIC-NEXT:    and a7, a15, a114402; XTENSA-ATOMIC-NEXT:    add a6, a15, a94403; XTENSA-ATOMIC-NEXT:    and a6, a6, a104404; XTENSA-ATOMIC-NEXT:    or a7, a7, a64405; XTENSA-ATOMIC-NEXT:    wsr a15, scompare14406; XTENSA-ATOMIC-NEXT:    s32c1i a7, a12, 04407; XTENSA-ATOMIC-NEXT:    or a6, a14, a144408; XTENSA-ATOMIC-NEXT:    beq a7, a15, .LBB64_14409; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start4410; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB64_2 Depth=14411; XTENSA-ATOMIC-NEXT:    or a6, a13, a134412; XTENSA-ATOMIC-NEXT:    j .LBB64_14413; XTENSA-ATOMIC-NEXT:  .LBB64_4: # %atomicrmw.end4414; XTENSA-ATOMIC-NEXT:    ssr a84415; XTENSA-ATOMIC-NEXT:    srl a2, a74416; XTENSA-ATOMIC-NEXT:    memw4417; XTENSA-ATOMIC-NEXT:    retw4418  %res = atomicrmw add ptr %a, i16 %b seq_cst4419  ret i16 %res4420}4421 4422define i16 @atomicrmw_sub_i16_monotonic(ptr %a, i16 %b) nounwind {4423; XTENSA-LABEL: atomicrmw_sub_i16_monotonic:4424; XTENSA:       # %bb.0:4425; XTENSA-NEXT:    entry a1, 324426; XTENSA-NEXT:    or a11, a3, a34427; XTENSA-NEXT:    or a10, a2, a24428; XTENSA-NEXT:    movi a12, 04429; XTENSA-NEXT:    l32r a8, .LCPI65_04430; XTENSA-NEXT:    callx8 a84431; XTENSA-NEXT:    or a2, a10, a104432; XTENSA-NEXT:    retw4433;4434; XTENSA-ATOMIC-LABEL: atomicrmw_sub_i16_monotonic:4435; XTENSA-ATOMIC:       # %bb.0:4436; XTENSA-ATOMIC-NEXT:    entry a1, 324437; XTENSA-ATOMIC-NEXT:    l32r a10, .LCPI65_04438; XTENSA-ATOMIC-NEXT:    and a9, a3, a104439; XTENSA-ATOMIC-NEXT:    slli a8, a2, 34440; XTENSA-ATOMIC-NEXT:    movi a11, 244441; XTENSA-ATOMIC-NEXT:    and a8, a8, a114442; XTENSA-ATOMIC-NEXT:    ssl a84443; XTENSA-ATOMIC-NEXT:    sll a9, a94444; XTENSA-ATOMIC-NEXT:    ssl a84445; XTENSA-ATOMIC-NEXT:    sll a10, a104446; XTENSA-ATOMIC-NEXT:    movi a11, -14447; XTENSA-ATOMIC-NEXT:    xor a11, a10, a114448; XTENSA-ATOMIC-NEXT:    movi a12, -44449; XTENSA-ATOMIC-NEXT:    and a12, a2, a124450; XTENSA-ATOMIC-NEXT:    l32i a15, a12, 04451; XTENSA-ATOMIC-NEXT:    movi a13, 04452; XTENSA-ATOMIC-NEXT:    movi a14, 14453; XTENSA-ATOMIC-NEXT:    j .LBB65_24454; XTENSA-ATOMIC-NEXT:  .LBB65_1: # %atomicrmw.start4455; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB65_2 Depth=14456; XTENSA-ATOMIC-NEXT:    or a15, a7, a74457; XTENSA-ATOMIC-NEXT:    beqi a6, 1, .LBB65_44458; XTENSA-ATOMIC-NEXT:  .LBB65_2: # %atomicrmw.start4459; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=14460; XTENSA-ATOMIC-NEXT:    and a7, a15, a114461; XTENSA-ATOMIC-NEXT:    sub a6, a15, a94462; XTENSA-ATOMIC-NEXT:    and a6, a6, a104463; XTENSA-ATOMIC-NEXT:    or a7, a7, a64464; XTENSA-ATOMIC-NEXT:    wsr a15, scompare14465; XTENSA-ATOMIC-NEXT:    s32c1i a7, a12, 04466; XTENSA-ATOMIC-NEXT:    or a6, a14, a144467; XTENSA-ATOMIC-NEXT:    beq a7, a15, .LBB65_14468; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start4469; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB65_2 Depth=14470; XTENSA-ATOMIC-NEXT:    or a6, a13, a134471; XTENSA-ATOMIC-NEXT:    j .LBB65_14472; XTENSA-ATOMIC-NEXT:  .LBB65_4: # %atomicrmw.end4473; XTENSA-ATOMIC-NEXT:    ssr a84474; XTENSA-ATOMIC-NEXT:    srl a2, a74475; XTENSA-ATOMIC-NEXT:    retw4476  %res = atomicrmw sub ptr %a, i16 %b monotonic4477  ret i16 %res4478}4479 4480define i16 @atomicrmw_sub_i16_acquire(ptr %a, i16 %b) nounwind {4481; XTENSA-LABEL: atomicrmw_sub_i16_acquire:4482; XTENSA:       # %bb.0:4483; XTENSA-NEXT:    entry a1, 324484; XTENSA-NEXT:    or a11, a3, a34485; XTENSA-NEXT:    or a10, a2, a24486; XTENSA-NEXT:    movi a12, 24487; XTENSA-NEXT:    l32r a8, .LCPI66_04488; XTENSA-NEXT:    callx8 a84489; XTENSA-NEXT:    or a2, a10, a104490; XTENSA-NEXT:    retw4491;4492; XTENSA-ATOMIC-LABEL: atomicrmw_sub_i16_acquire:4493; XTENSA-ATOMIC:       # %bb.0:4494; XTENSA-ATOMIC-NEXT:    entry a1, 324495; XTENSA-ATOMIC-NEXT:    l32r a10, .LCPI66_04496; XTENSA-ATOMIC-NEXT:    and a9, a3, a104497; XTENSA-ATOMIC-NEXT:    slli a8, a2, 34498; XTENSA-ATOMIC-NEXT:    movi a11, 244499; XTENSA-ATOMIC-NEXT:    and a8, a8, a114500; XTENSA-ATOMIC-NEXT:    ssl a84501; XTENSA-ATOMIC-NEXT:    sll a9, a94502; XTENSA-ATOMIC-NEXT:    ssl a84503; XTENSA-ATOMIC-NEXT:    sll a10, a104504; XTENSA-ATOMIC-NEXT:    movi a11, -14505; XTENSA-ATOMIC-NEXT:    xor a11, a10, a114506; XTENSA-ATOMIC-NEXT:    movi a12, -44507; XTENSA-ATOMIC-NEXT:    and a12, a2, a124508; XTENSA-ATOMIC-NEXT:    l32i a15, a12, 04509; XTENSA-ATOMIC-NEXT:    movi a13, 04510; XTENSA-ATOMIC-NEXT:    movi a14, 14511; XTENSA-ATOMIC-NEXT:    j .LBB66_24512; XTENSA-ATOMIC-NEXT:  .LBB66_1: # %atomicrmw.start4513; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB66_2 Depth=14514; XTENSA-ATOMIC-NEXT:    or a15, a7, a74515; XTENSA-ATOMIC-NEXT:    beqi a6, 1, .LBB66_44516; XTENSA-ATOMIC-NEXT:  .LBB66_2: # %atomicrmw.start4517; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=14518; XTENSA-ATOMIC-NEXT:    and a7, a15, a114519; XTENSA-ATOMIC-NEXT:    sub a6, a15, a94520; XTENSA-ATOMIC-NEXT:    and a6, a6, a104521; XTENSA-ATOMIC-NEXT:    or a7, a7, a64522; XTENSA-ATOMIC-NEXT:    wsr a15, scompare14523; XTENSA-ATOMIC-NEXT:    s32c1i a7, a12, 04524; XTENSA-ATOMIC-NEXT:    or a6, a14, a144525; XTENSA-ATOMIC-NEXT:    beq a7, a15, .LBB66_14526; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start4527; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB66_2 Depth=14528; XTENSA-ATOMIC-NEXT:    or a6, a13, a134529; XTENSA-ATOMIC-NEXT:    j .LBB66_14530; XTENSA-ATOMIC-NEXT:  .LBB66_4: # %atomicrmw.end4531; XTENSA-ATOMIC-NEXT:    ssr a84532; XTENSA-ATOMIC-NEXT:    srl a2, a74533; XTENSA-ATOMIC-NEXT:    memw4534; XTENSA-ATOMIC-NEXT:    retw4535  %res = atomicrmw sub ptr %a, i16 %b acquire4536  ret i16 %res4537}4538 4539define i16 @atomicrmw_sub_i16_release(ptr %a, i16 %b) nounwind {4540; XTENSA-LABEL: atomicrmw_sub_i16_release:4541; XTENSA:       # %bb.0:4542; XTENSA-NEXT:    entry a1, 324543; XTENSA-NEXT:    or a11, a3, a34544; XTENSA-NEXT:    or a10, a2, a24545; XTENSA-NEXT:    movi a12, 34546; XTENSA-NEXT:    l32r a8, .LCPI67_04547; XTENSA-NEXT:    callx8 a84548; XTENSA-NEXT:    or a2, a10, a104549; XTENSA-NEXT:    retw4550;4551; XTENSA-ATOMIC-LABEL: atomicrmw_sub_i16_release:4552; XTENSA-ATOMIC:       # %bb.0:4553; XTENSA-ATOMIC-NEXT:    entry a1, 324554; XTENSA-ATOMIC-NEXT:    l32r a10, .LCPI67_04555; XTENSA-ATOMIC-NEXT:    and a9, a3, a104556; XTENSA-ATOMIC-NEXT:    slli a8, a2, 34557; XTENSA-ATOMIC-NEXT:    movi a11, 244558; XTENSA-ATOMIC-NEXT:    and a8, a8, a114559; XTENSA-ATOMIC-NEXT:    ssl a84560; XTENSA-ATOMIC-NEXT:    sll a9, a94561; XTENSA-ATOMIC-NEXT:    ssl a84562; XTENSA-ATOMIC-NEXT:    sll a10, a104563; XTENSA-ATOMIC-NEXT:    movi a11, -14564; XTENSA-ATOMIC-NEXT:    xor a11, a10, a114565; XTENSA-ATOMIC-NEXT:    movi a12, -44566; XTENSA-ATOMIC-NEXT:    and a12, a2, a124567; XTENSA-ATOMIC-NEXT:    memw4568; XTENSA-ATOMIC-NEXT:    l32i a15, a12, 04569; XTENSA-ATOMIC-NEXT:    movi a13, 04570; XTENSA-ATOMIC-NEXT:    movi a14, 14571; XTENSA-ATOMIC-NEXT:    j .LBB67_24572; XTENSA-ATOMIC-NEXT:  .LBB67_1: # %atomicrmw.start4573; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB67_2 Depth=14574; XTENSA-ATOMIC-NEXT:    or a15, a7, a74575; XTENSA-ATOMIC-NEXT:    beqi a6, 1, .LBB67_44576; XTENSA-ATOMIC-NEXT:  .LBB67_2: # %atomicrmw.start4577; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=14578; XTENSA-ATOMIC-NEXT:    and a7, a15, a114579; XTENSA-ATOMIC-NEXT:    sub a6, a15, a94580; XTENSA-ATOMIC-NEXT:    and a6, a6, a104581; XTENSA-ATOMIC-NEXT:    or a7, a7, a64582; XTENSA-ATOMIC-NEXT:    wsr a15, scompare14583; XTENSA-ATOMIC-NEXT:    s32c1i a7, a12, 04584; XTENSA-ATOMIC-NEXT:    or a6, a14, a144585; XTENSA-ATOMIC-NEXT:    beq a7, a15, .LBB67_14586; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start4587; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB67_2 Depth=14588; XTENSA-ATOMIC-NEXT:    or a6, a13, a134589; XTENSA-ATOMIC-NEXT:    j .LBB67_14590; XTENSA-ATOMIC-NEXT:  .LBB67_4: # %atomicrmw.end4591; XTENSA-ATOMIC-NEXT:    ssr a84592; XTENSA-ATOMIC-NEXT:    srl a2, a74593; XTENSA-ATOMIC-NEXT:    retw4594  %res = atomicrmw sub ptr %a, i16 %b release4595  ret i16 %res4596}4597 4598define i16 @atomicrmw_sub_i16_acq_rel(ptr %a, i16 %b) nounwind {4599; XTENSA-LABEL: atomicrmw_sub_i16_acq_rel:4600; XTENSA:       # %bb.0:4601; XTENSA-NEXT:    entry a1, 324602; XTENSA-NEXT:    or a11, a3, a34603; XTENSA-NEXT:    or a10, a2, a24604; XTENSA-NEXT:    movi a12, 44605; XTENSA-NEXT:    l32r a8, .LCPI68_04606; XTENSA-NEXT:    callx8 a84607; XTENSA-NEXT:    or a2, a10, a104608; XTENSA-NEXT:    retw4609;4610; XTENSA-ATOMIC-LABEL: atomicrmw_sub_i16_acq_rel:4611; XTENSA-ATOMIC:       # %bb.0:4612; XTENSA-ATOMIC-NEXT:    entry a1, 324613; XTENSA-ATOMIC-NEXT:    l32r a10, .LCPI68_04614; XTENSA-ATOMIC-NEXT:    and a9, a3, a104615; XTENSA-ATOMIC-NEXT:    slli a8, a2, 34616; XTENSA-ATOMIC-NEXT:    movi a11, 244617; XTENSA-ATOMIC-NEXT:    and a8, a8, a114618; XTENSA-ATOMIC-NEXT:    ssl a84619; XTENSA-ATOMIC-NEXT:    sll a9, a94620; XTENSA-ATOMIC-NEXT:    ssl a84621; XTENSA-ATOMIC-NEXT:    sll a10, a104622; XTENSA-ATOMIC-NEXT:    movi a11, -14623; XTENSA-ATOMIC-NEXT:    xor a11, a10, a114624; XTENSA-ATOMIC-NEXT:    movi a12, -44625; XTENSA-ATOMIC-NEXT:    and a12, a2, a124626; XTENSA-ATOMIC-NEXT:    memw4627; XTENSA-ATOMIC-NEXT:    l32i a15, a12, 04628; XTENSA-ATOMIC-NEXT:    movi a13, 04629; XTENSA-ATOMIC-NEXT:    movi a14, 14630; XTENSA-ATOMIC-NEXT:    j .LBB68_24631; XTENSA-ATOMIC-NEXT:  .LBB68_1: # %atomicrmw.start4632; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB68_2 Depth=14633; XTENSA-ATOMIC-NEXT:    or a15, a7, a74634; XTENSA-ATOMIC-NEXT:    beqi a6, 1, .LBB68_44635; XTENSA-ATOMIC-NEXT:  .LBB68_2: # %atomicrmw.start4636; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=14637; XTENSA-ATOMIC-NEXT:    and a7, a15, a114638; XTENSA-ATOMIC-NEXT:    sub a6, a15, a94639; XTENSA-ATOMIC-NEXT:    and a6, a6, a104640; XTENSA-ATOMIC-NEXT:    or a7, a7, a64641; XTENSA-ATOMIC-NEXT:    wsr a15, scompare14642; XTENSA-ATOMIC-NEXT:    s32c1i a7, a12, 04643; XTENSA-ATOMIC-NEXT:    or a6, a14, a144644; XTENSA-ATOMIC-NEXT:    beq a7, a15, .LBB68_14645; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start4646; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB68_2 Depth=14647; XTENSA-ATOMIC-NEXT:    or a6, a13, a134648; XTENSA-ATOMIC-NEXT:    j .LBB68_14649; XTENSA-ATOMIC-NEXT:  .LBB68_4: # %atomicrmw.end4650; XTENSA-ATOMIC-NEXT:    ssr a84651; XTENSA-ATOMIC-NEXT:    srl a2, a74652; XTENSA-ATOMIC-NEXT:    memw4653; XTENSA-ATOMIC-NEXT:    retw4654  %res = atomicrmw sub ptr %a, i16 %b acq_rel4655  ret i16 %res4656}4657 4658define i16 @atomicrmw_sub_i16_seq_cst(ptr %a, i16 %b) nounwind {4659; XTENSA-LABEL: atomicrmw_sub_i16_seq_cst:4660; XTENSA:       # %bb.0:4661; XTENSA-NEXT:    entry a1, 324662; XTENSA-NEXT:    or a11, a3, a34663; XTENSA-NEXT:    or a10, a2, a24664; XTENSA-NEXT:    movi a12, 54665; XTENSA-NEXT:    l32r a8, .LCPI69_04666; XTENSA-NEXT:    callx8 a84667; XTENSA-NEXT:    or a2, a10, a104668; XTENSA-NEXT:    retw4669;4670; XTENSA-ATOMIC-LABEL: atomicrmw_sub_i16_seq_cst:4671; XTENSA-ATOMIC:       # %bb.0:4672; XTENSA-ATOMIC-NEXT:    entry a1, 324673; XTENSA-ATOMIC-NEXT:    l32r a10, .LCPI69_04674; XTENSA-ATOMIC-NEXT:    and a9, a3, a104675; XTENSA-ATOMIC-NEXT:    slli a8, a2, 34676; XTENSA-ATOMIC-NEXT:    movi a11, 244677; XTENSA-ATOMIC-NEXT:    and a8, a8, a114678; XTENSA-ATOMIC-NEXT:    ssl a84679; XTENSA-ATOMIC-NEXT:    sll a9, a94680; XTENSA-ATOMIC-NEXT:    ssl a84681; XTENSA-ATOMIC-NEXT:    sll a10, a104682; XTENSA-ATOMIC-NEXT:    movi a11, -14683; XTENSA-ATOMIC-NEXT:    xor a11, a10, a114684; XTENSA-ATOMIC-NEXT:    movi a12, -44685; XTENSA-ATOMIC-NEXT:    and a12, a2, a124686; XTENSA-ATOMIC-NEXT:    memw4687; XTENSA-ATOMIC-NEXT:    l32i a15, a12, 04688; XTENSA-ATOMIC-NEXT:    movi a13, 04689; XTENSA-ATOMIC-NEXT:    movi a14, 14690; XTENSA-ATOMIC-NEXT:    j .LBB69_24691; XTENSA-ATOMIC-NEXT:  .LBB69_1: # %atomicrmw.start4692; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB69_2 Depth=14693; XTENSA-ATOMIC-NEXT:    or a15, a7, a74694; XTENSA-ATOMIC-NEXT:    beqi a6, 1, .LBB69_44695; XTENSA-ATOMIC-NEXT:  .LBB69_2: # %atomicrmw.start4696; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=14697; XTENSA-ATOMIC-NEXT:    and a7, a15, a114698; XTENSA-ATOMIC-NEXT:    sub a6, a15, a94699; XTENSA-ATOMIC-NEXT:    and a6, a6, a104700; XTENSA-ATOMIC-NEXT:    or a7, a7, a64701; XTENSA-ATOMIC-NEXT:    wsr a15, scompare14702; XTENSA-ATOMIC-NEXT:    s32c1i a7, a12, 04703; XTENSA-ATOMIC-NEXT:    or a6, a14, a144704; XTENSA-ATOMIC-NEXT:    beq a7, a15, .LBB69_14705; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start4706; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB69_2 Depth=14707; XTENSA-ATOMIC-NEXT:    or a6, a13, a134708; XTENSA-ATOMIC-NEXT:    j .LBB69_14709; XTENSA-ATOMIC-NEXT:  .LBB69_4: # %atomicrmw.end4710; XTENSA-ATOMIC-NEXT:    ssr a84711; XTENSA-ATOMIC-NEXT:    srl a2, a74712; XTENSA-ATOMIC-NEXT:    memw4713; XTENSA-ATOMIC-NEXT:    retw4714  %res = atomicrmw sub ptr %a, i16 %b seq_cst4715  ret i16 %res4716}4717 4718define i16 @atomicrmw_and_i16_monotonic(ptr %a, i16 %b) nounwind {4719; XTENSA-LABEL: atomicrmw_and_i16_monotonic:4720; XTENSA:       # %bb.0:4721; XTENSA-NEXT:    entry a1, 324722; XTENSA-NEXT:    or a11, a3, a34723; XTENSA-NEXT:    or a10, a2, a24724; XTENSA-NEXT:    movi a12, 04725; XTENSA-NEXT:    l32r a8, .LCPI70_04726; XTENSA-NEXT:    callx8 a84727; XTENSA-NEXT:    or a2, a10, a104728; XTENSA-NEXT:    retw4729;4730; XTENSA-ATOMIC-LABEL: atomicrmw_and_i16_monotonic:4731; XTENSA-ATOMIC:       # %bb.0:4732; XTENSA-ATOMIC-NEXT:    entry a1, 324733; XTENSA-ATOMIC-NEXT:    l32r a9, .LCPI70_04734; XTENSA-ATOMIC-NEXT:    and a10, a3, a94735; XTENSA-ATOMIC-NEXT:    slli a8, a2, 34736; XTENSA-ATOMIC-NEXT:    movi a11, 244737; XTENSA-ATOMIC-NEXT:    and a8, a8, a114738; XTENSA-ATOMIC-NEXT:    ssl a84739; XTENSA-ATOMIC-NEXT:    sll a10, a104740; XTENSA-ATOMIC-NEXT:    ssl a84741; XTENSA-ATOMIC-NEXT:    sll a9, a94742; XTENSA-ATOMIC-NEXT:    movi a11, -14743; XTENSA-ATOMIC-NEXT:    xor a9, a9, a114744; XTENSA-ATOMIC-NEXT:    or a9, a10, a94745; XTENSA-ATOMIC-NEXT:    movi a10, -44746; XTENSA-ATOMIC-NEXT:    and a10, a2, a104747; XTENSA-ATOMIC-NEXT:    l32i a14, a10, 04748; XTENSA-ATOMIC-NEXT:    movi a11, 04749; XTENSA-ATOMIC-NEXT:    movi a12, 14750; XTENSA-ATOMIC-NEXT:    j .LBB70_24751; XTENSA-ATOMIC-NEXT:  .LBB70_1: # %atomicrmw.start4752; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB70_2 Depth=14753; XTENSA-ATOMIC-NEXT:    or a14, a13, a134754; XTENSA-ATOMIC-NEXT:    beqi a15, 1, .LBB70_44755; XTENSA-ATOMIC-NEXT:  .LBB70_2: # %atomicrmw.start4756; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=14757; XTENSA-ATOMIC-NEXT:    and a13, a14, a94758; XTENSA-ATOMIC-NEXT:    wsr a14, scompare14759; XTENSA-ATOMIC-NEXT:    s32c1i a13, a10, 04760; XTENSA-ATOMIC-NEXT:    or a15, a12, a124761; XTENSA-ATOMIC-NEXT:    beq a13, a14, .LBB70_14762; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start4763; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB70_2 Depth=14764; XTENSA-ATOMIC-NEXT:    or a15, a11, a114765; XTENSA-ATOMIC-NEXT:    j .LBB70_14766; XTENSA-ATOMIC-NEXT:  .LBB70_4: # %atomicrmw.end4767; XTENSA-ATOMIC-NEXT:    ssr a84768; XTENSA-ATOMIC-NEXT:    srl a2, a134769; XTENSA-ATOMIC-NEXT:    retw4770  %res = atomicrmw and ptr %a, i16 %b monotonic4771  ret i16 %res4772}4773 4774define i16 @atomicrmw_and_i16_acquire(ptr %a, i16 %b) nounwind {4775; XTENSA-LABEL: atomicrmw_and_i16_acquire:4776; XTENSA:       # %bb.0:4777; XTENSA-NEXT:    entry a1, 324778; XTENSA-NEXT:    or a11, a3, a34779; XTENSA-NEXT:    or a10, a2, a24780; XTENSA-NEXT:    movi a12, 24781; XTENSA-NEXT:    l32r a8, .LCPI71_04782; XTENSA-NEXT:    callx8 a84783; XTENSA-NEXT:    or a2, a10, a104784; XTENSA-NEXT:    retw4785;4786; XTENSA-ATOMIC-LABEL: atomicrmw_and_i16_acquire:4787; XTENSA-ATOMIC:       # %bb.0:4788; XTENSA-ATOMIC-NEXT:    entry a1, 324789; XTENSA-ATOMIC-NEXT:    l32r a9, .LCPI71_04790; XTENSA-ATOMIC-NEXT:    and a10, a3, a94791; XTENSA-ATOMIC-NEXT:    slli a8, a2, 34792; XTENSA-ATOMIC-NEXT:    movi a11, 244793; XTENSA-ATOMIC-NEXT:    and a8, a8, a114794; XTENSA-ATOMIC-NEXT:    ssl a84795; XTENSA-ATOMIC-NEXT:    sll a10, a104796; XTENSA-ATOMIC-NEXT:    ssl a84797; XTENSA-ATOMIC-NEXT:    sll a9, a94798; XTENSA-ATOMIC-NEXT:    movi a11, -14799; XTENSA-ATOMIC-NEXT:    xor a9, a9, a114800; XTENSA-ATOMIC-NEXT:    or a9, a10, a94801; XTENSA-ATOMIC-NEXT:    movi a10, -44802; XTENSA-ATOMIC-NEXT:    and a10, a2, a104803; XTENSA-ATOMIC-NEXT:    l32i a14, a10, 04804; XTENSA-ATOMIC-NEXT:    movi a11, 04805; XTENSA-ATOMIC-NEXT:    movi a12, 14806; XTENSA-ATOMIC-NEXT:    j .LBB71_24807; XTENSA-ATOMIC-NEXT:  .LBB71_1: # %atomicrmw.start4808; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB71_2 Depth=14809; XTENSA-ATOMIC-NEXT:    or a14, a13, a134810; XTENSA-ATOMIC-NEXT:    beqi a15, 1, .LBB71_44811; XTENSA-ATOMIC-NEXT:  .LBB71_2: # %atomicrmw.start4812; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=14813; XTENSA-ATOMIC-NEXT:    and a13, a14, a94814; XTENSA-ATOMIC-NEXT:    wsr a14, scompare14815; XTENSA-ATOMIC-NEXT:    s32c1i a13, a10, 04816; XTENSA-ATOMIC-NEXT:    or a15, a12, a124817; XTENSA-ATOMIC-NEXT:    beq a13, a14, .LBB71_14818; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start4819; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB71_2 Depth=14820; XTENSA-ATOMIC-NEXT:    or a15, a11, a114821; XTENSA-ATOMIC-NEXT:    j .LBB71_14822; XTENSA-ATOMIC-NEXT:  .LBB71_4: # %atomicrmw.end4823; XTENSA-ATOMIC-NEXT:    ssr a84824; XTENSA-ATOMIC-NEXT:    srl a2, a134825; XTENSA-ATOMIC-NEXT:    memw4826; XTENSA-ATOMIC-NEXT:    retw4827  %res = atomicrmw and ptr %a, i16 %b acquire4828  ret i16 %res4829}4830 4831define i16 @atomicrmw_and_i16_release(ptr %a, i16 %b) nounwind {4832; XTENSA-LABEL: atomicrmw_and_i16_release:4833; XTENSA:       # %bb.0:4834; XTENSA-NEXT:    entry a1, 324835; XTENSA-NEXT:    or a11, a3, a34836; XTENSA-NEXT:    or a10, a2, a24837; XTENSA-NEXT:    movi a12, 34838; XTENSA-NEXT:    l32r a8, .LCPI72_04839; XTENSA-NEXT:    callx8 a84840; XTENSA-NEXT:    or a2, a10, a104841; XTENSA-NEXT:    retw4842;4843; XTENSA-ATOMIC-LABEL: atomicrmw_and_i16_release:4844; XTENSA-ATOMIC:       # %bb.0:4845; XTENSA-ATOMIC-NEXT:    entry a1, 324846; XTENSA-ATOMIC-NEXT:    l32r a9, .LCPI72_04847; XTENSA-ATOMIC-NEXT:    and a10, a3, a94848; XTENSA-ATOMIC-NEXT:    slli a8, a2, 34849; XTENSA-ATOMIC-NEXT:    movi a11, 244850; XTENSA-ATOMIC-NEXT:    and a8, a8, a114851; XTENSA-ATOMIC-NEXT:    ssl a84852; XTENSA-ATOMIC-NEXT:    sll a10, a104853; XTENSA-ATOMIC-NEXT:    ssl a84854; XTENSA-ATOMIC-NEXT:    sll a9, a94855; XTENSA-ATOMIC-NEXT:    movi a11, -14856; XTENSA-ATOMIC-NEXT:    xor a9, a9, a114857; XTENSA-ATOMIC-NEXT:    or a9, a10, a94858; XTENSA-ATOMIC-NEXT:    movi a10, -44859; XTENSA-ATOMIC-NEXT:    and a10, a2, a104860; XTENSA-ATOMIC-NEXT:    memw4861; XTENSA-ATOMIC-NEXT:    l32i a14, a10, 04862; XTENSA-ATOMIC-NEXT:    movi a11, 04863; XTENSA-ATOMIC-NEXT:    movi a12, 14864; XTENSA-ATOMIC-NEXT:    j .LBB72_24865; XTENSA-ATOMIC-NEXT:  .LBB72_1: # %atomicrmw.start4866; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB72_2 Depth=14867; XTENSA-ATOMIC-NEXT:    or a14, a13, a134868; XTENSA-ATOMIC-NEXT:    beqi a15, 1, .LBB72_44869; XTENSA-ATOMIC-NEXT:  .LBB72_2: # %atomicrmw.start4870; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=14871; XTENSA-ATOMIC-NEXT:    and a13, a14, a94872; XTENSA-ATOMIC-NEXT:    wsr a14, scompare14873; XTENSA-ATOMIC-NEXT:    s32c1i a13, a10, 04874; XTENSA-ATOMIC-NEXT:    or a15, a12, a124875; XTENSA-ATOMIC-NEXT:    beq a13, a14, .LBB72_14876; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start4877; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB72_2 Depth=14878; XTENSA-ATOMIC-NEXT:    or a15, a11, a114879; XTENSA-ATOMIC-NEXT:    j .LBB72_14880; XTENSA-ATOMIC-NEXT:  .LBB72_4: # %atomicrmw.end4881; XTENSA-ATOMIC-NEXT:    ssr a84882; XTENSA-ATOMIC-NEXT:    srl a2, a134883; XTENSA-ATOMIC-NEXT:    retw4884  %res = atomicrmw and ptr %a, i16 %b release4885  ret i16 %res4886}4887 4888define i16 @atomicrmw_and_i16_acq_rel(ptr %a, i16 %b) nounwind {4889; XTENSA-LABEL: atomicrmw_and_i16_acq_rel:4890; XTENSA:       # %bb.0:4891; XTENSA-NEXT:    entry a1, 324892; XTENSA-NEXT:    or a11, a3, a34893; XTENSA-NEXT:    or a10, a2, a24894; XTENSA-NEXT:    movi a12, 44895; XTENSA-NEXT:    l32r a8, .LCPI73_04896; XTENSA-NEXT:    callx8 a84897; XTENSA-NEXT:    or a2, a10, a104898; XTENSA-NEXT:    retw4899;4900; XTENSA-ATOMIC-LABEL: atomicrmw_and_i16_acq_rel:4901; XTENSA-ATOMIC:       # %bb.0:4902; XTENSA-ATOMIC-NEXT:    entry a1, 324903; XTENSA-ATOMIC-NEXT:    l32r a9, .LCPI73_04904; XTENSA-ATOMIC-NEXT:    and a10, a3, a94905; XTENSA-ATOMIC-NEXT:    slli a8, a2, 34906; XTENSA-ATOMIC-NEXT:    movi a11, 244907; XTENSA-ATOMIC-NEXT:    and a8, a8, a114908; XTENSA-ATOMIC-NEXT:    ssl a84909; XTENSA-ATOMIC-NEXT:    sll a10, a104910; XTENSA-ATOMIC-NEXT:    ssl a84911; XTENSA-ATOMIC-NEXT:    sll a9, a94912; XTENSA-ATOMIC-NEXT:    movi a11, -14913; XTENSA-ATOMIC-NEXT:    xor a9, a9, a114914; XTENSA-ATOMIC-NEXT:    or a9, a10, a94915; XTENSA-ATOMIC-NEXT:    movi a10, -44916; XTENSA-ATOMIC-NEXT:    and a10, a2, a104917; XTENSA-ATOMIC-NEXT:    memw4918; XTENSA-ATOMIC-NEXT:    l32i a14, a10, 04919; XTENSA-ATOMIC-NEXT:    movi a11, 04920; XTENSA-ATOMIC-NEXT:    movi a12, 14921; XTENSA-ATOMIC-NEXT:    j .LBB73_24922; XTENSA-ATOMIC-NEXT:  .LBB73_1: # %atomicrmw.start4923; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB73_2 Depth=14924; XTENSA-ATOMIC-NEXT:    or a14, a13, a134925; XTENSA-ATOMIC-NEXT:    beqi a15, 1, .LBB73_44926; XTENSA-ATOMIC-NEXT:  .LBB73_2: # %atomicrmw.start4927; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=14928; XTENSA-ATOMIC-NEXT:    and a13, a14, a94929; XTENSA-ATOMIC-NEXT:    wsr a14, scompare14930; XTENSA-ATOMIC-NEXT:    s32c1i a13, a10, 04931; XTENSA-ATOMIC-NEXT:    or a15, a12, a124932; XTENSA-ATOMIC-NEXT:    beq a13, a14, .LBB73_14933; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start4934; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB73_2 Depth=14935; XTENSA-ATOMIC-NEXT:    or a15, a11, a114936; XTENSA-ATOMIC-NEXT:    j .LBB73_14937; XTENSA-ATOMIC-NEXT:  .LBB73_4: # %atomicrmw.end4938; XTENSA-ATOMIC-NEXT:    ssr a84939; XTENSA-ATOMIC-NEXT:    srl a2, a134940; XTENSA-ATOMIC-NEXT:    memw4941; XTENSA-ATOMIC-NEXT:    retw4942  %res = atomicrmw and ptr %a, i16 %b acq_rel4943  ret i16 %res4944}4945 4946define i16 @atomicrmw_and_i16_seq_cst(ptr %a, i16 %b) nounwind {4947; XTENSA-LABEL: atomicrmw_and_i16_seq_cst:4948; XTENSA:       # %bb.0:4949; XTENSA-NEXT:    entry a1, 324950; XTENSA-NEXT:    or a11, a3, a34951; XTENSA-NEXT:    or a10, a2, a24952; XTENSA-NEXT:    movi a12, 54953; XTENSA-NEXT:    l32r a8, .LCPI74_04954; XTENSA-NEXT:    callx8 a84955; XTENSA-NEXT:    or a2, a10, a104956; XTENSA-NEXT:    retw4957;4958; XTENSA-ATOMIC-LABEL: atomicrmw_and_i16_seq_cst:4959; XTENSA-ATOMIC:       # %bb.0:4960; XTENSA-ATOMIC-NEXT:    entry a1, 324961; XTENSA-ATOMIC-NEXT:    l32r a9, .LCPI74_04962; XTENSA-ATOMIC-NEXT:    and a10, a3, a94963; XTENSA-ATOMIC-NEXT:    slli a8, a2, 34964; XTENSA-ATOMIC-NEXT:    movi a11, 244965; XTENSA-ATOMIC-NEXT:    and a8, a8, a114966; XTENSA-ATOMIC-NEXT:    ssl a84967; XTENSA-ATOMIC-NEXT:    sll a10, a104968; XTENSA-ATOMIC-NEXT:    ssl a84969; XTENSA-ATOMIC-NEXT:    sll a9, a94970; XTENSA-ATOMIC-NEXT:    movi a11, -14971; XTENSA-ATOMIC-NEXT:    xor a9, a9, a114972; XTENSA-ATOMIC-NEXT:    or a9, a10, a94973; XTENSA-ATOMIC-NEXT:    movi a10, -44974; XTENSA-ATOMIC-NEXT:    and a10, a2, a104975; XTENSA-ATOMIC-NEXT:    memw4976; XTENSA-ATOMIC-NEXT:    l32i a14, a10, 04977; XTENSA-ATOMIC-NEXT:    movi a11, 04978; XTENSA-ATOMIC-NEXT:    movi a12, 14979; XTENSA-ATOMIC-NEXT:    j .LBB74_24980; XTENSA-ATOMIC-NEXT:  .LBB74_1: # %atomicrmw.start4981; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB74_2 Depth=14982; XTENSA-ATOMIC-NEXT:    or a14, a13, a134983; XTENSA-ATOMIC-NEXT:    beqi a15, 1, .LBB74_44984; XTENSA-ATOMIC-NEXT:  .LBB74_2: # %atomicrmw.start4985; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=14986; XTENSA-ATOMIC-NEXT:    and a13, a14, a94987; XTENSA-ATOMIC-NEXT:    wsr a14, scompare14988; XTENSA-ATOMIC-NEXT:    s32c1i a13, a10, 04989; XTENSA-ATOMIC-NEXT:    or a15, a12, a124990; XTENSA-ATOMIC-NEXT:    beq a13, a14, .LBB74_14991; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start4992; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB74_2 Depth=14993; XTENSA-ATOMIC-NEXT:    or a15, a11, a114994; XTENSA-ATOMIC-NEXT:    j .LBB74_14995; XTENSA-ATOMIC-NEXT:  .LBB74_4: # %atomicrmw.end4996; XTENSA-ATOMIC-NEXT:    ssr a84997; XTENSA-ATOMIC-NEXT:    srl a2, a134998; XTENSA-ATOMIC-NEXT:    memw4999; XTENSA-ATOMIC-NEXT:    retw5000  %res = atomicrmw and ptr %a, i16 %b seq_cst5001  ret i16 %res5002}5003 5004define i16 @atomicrmw_nand_i16_monotonic(ptr %a, i16 %b) nounwind {5005; XTENSA-LABEL: atomicrmw_nand_i16_monotonic:5006; XTENSA:       # %bb.0:5007; XTENSA-NEXT:    entry a1, 325008; XTENSA-NEXT:    or a11, a3, a35009; XTENSA-NEXT:    or a10, a2, a25010; XTENSA-NEXT:    movi a12, 05011; XTENSA-NEXT:    l32r a8, .LCPI75_05012; XTENSA-NEXT:    callx8 a85013; XTENSA-NEXT:    or a2, a10, a105014; XTENSA-NEXT:    retw5015;5016; XTENSA-ATOMIC-LABEL: atomicrmw_nand_i16_monotonic:5017; XTENSA-ATOMIC:       # %bb.0:5018; XTENSA-ATOMIC-NEXT:    entry a1, 325019; XTENSA-ATOMIC-NEXT:    l32r a10, .LCPI75_05020; XTENSA-ATOMIC-NEXT:    and a9, a3, a105021; XTENSA-ATOMIC-NEXT:    slli a8, a2, 35022; XTENSA-ATOMIC-NEXT:    movi a11, 245023; XTENSA-ATOMIC-NEXT:    and a8, a8, a115024; XTENSA-ATOMIC-NEXT:    ssl a85025; XTENSA-ATOMIC-NEXT:    sll a9, a95026; XTENSA-ATOMIC-NEXT:    ssl a85027; XTENSA-ATOMIC-NEXT:    sll a10, a105028; XTENSA-ATOMIC-NEXT:    movi a11, -15029; XTENSA-ATOMIC-NEXT:    xor a12, a10, a115030; XTENSA-ATOMIC-NEXT:    movi a13, -45031; XTENSA-ATOMIC-NEXT:    and a13, a2, a135032; XTENSA-ATOMIC-NEXT:    l32i a7, a13, 05033; XTENSA-ATOMIC-NEXT:    movi a14, 05034; XTENSA-ATOMIC-NEXT:    movi a15, 15035; XTENSA-ATOMIC-NEXT:    j .LBB75_25036; XTENSA-ATOMIC-NEXT:  .LBB75_1: # %atomicrmw.start5037; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB75_2 Depth=15038; XTENSA-ATOMIC-NEXT:    or a7, a6, a65039; XTENSA-ATOMIC-NEXT:    beqi a5, 1, .LBB75_45040; XTENSA-ATOMIC-NEXT:  .LBB75_2: # %atomicrmw.start5041; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=15042; XTENSA-ATOMIC-NEXT:    and a6, a7, a125043; XTENSA-ATOMIC-NEXT:    and a5, a7, a95044; XTENSA-ATOMIC-NEXT:    xor a5, a5, a115045; XTENSA-ATOMIC-NEXT:    and a5, a5, a105046; XTENSA-ATOMIC-NEXT:    or a6, a6, a55047; XTENSA-ATOMIC-NEXT:    wsr a7, scompare15048; XTENSA-ATOMIC-NEXT:    s32c1i a6, a13, 05049; XTENSA-ATOMIC-NEXT:    or a5, a15, a155050; XTENSA-ATOMIC-NEXT:    beq a6, a7, .LBB75_15051; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start5052; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB75_2 Depth=15053; XTENSA-ATOMIC-NEXT:    or a5, a14, a145054; XTENSA-ATOMIC-NEXT:    j .LBB75_15055; XTENSA-ATOMIC-NEXT:  .LBB75_4: # %atomicrmw.end5056; XTENSA-ATOMIC-NEXT:    ssr a85057; XTENSA-ATOMIC-NEXT:    srl a2, a65058; XTENSA-ATOMIC-NEXT:    retw5059  %res = atomicrmw nand ptr %a, i16 %b monotonic5060  ret i16 %res5061}5062 5063define i16 @atomicrmw_nand_i16_acquire(ptr %a, i16 %b) nounwind {5064; XTENSA-LABEL: atomicrmw_nand_i16_acquire:5065; XTENSA:       # %bb.0:5066; XTENSA-NEXT:    entry a1, 325067; XTENSA-NEXT:    or a11, a3, a35068; XTENSA-NEXT:    or a10, a2, a25069; XTENSA-NEXT:    movi a12, 25070; XTENSA-NEXT:    l32r a8, .LCPI76_05071; XTENSA-NEXT:    callx8 a85072; XTENSA-NEXT:    or a2, a10, a105073; XTENSA-NEXT:    retw5074;5075; XTENSA-ATOMIC-LABEL: atomicrmw_nand_i16_acquire:5076; XTENSA-ATOMIC:       # %bb.0:5077; XTENSA-ATOMIC-NEXT:    entry a1, 325078; XTENSA-ATOMIC-NEXT:    l32r a10, .LCPI76_05079; XTENSA-ATOMIC-NEXT:    and a9, a3, a105080; XTENSA-ATOMIC-NEXT:    slli a8, a2, 35081; XTENSA-ATOMIC-NEXT:    movi a11, 245082; XTENSA-ATOMIC-NEXT:    and a8, a8, a115083; XTENSA-ATOMIC-NEXT:    ssl a85084; XTENSA-ATOMIC-NEXT:    sll a9, a95085; XTENSA-ATOMIC-NEXT:    ssl a85086; XTENSA-ATOMIC-NEXT:    sll a10, a105087; XTENSA-ATOMIC-NEXT:    movi a11, -15088; XTENSA-ATOMIC-NEXT:    xor a12, a10, a115089; XTENSA-ATOMIC-NEXT:    movi a13, -45090; XTENSA-ATOMIC-NEXT:    and a13, a2, a135091; XTENSA-ATOMIC-NEXT:    l32i a7, a13, 05092; XTENSA-ATOMIC-NEXT:    movi a14, 05093; XTENSA-ATOMIC-NEXT:    movi a15, 15094; XTENSA-ATOMIC-NEXT:    j .LBB76_25095; XTENSA-ATOMIC-NEXT:  .LBB76_1: # %atomicrmw.start5096; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB76_2 Depth=15097; XTENSA-ATOMIC-NEXT:    or a7, a6, a65098; XTENSA-ATOMIC-NEXT:    beqi a5, 1, .LBB76_45099; XTENSA-ATOMIC-NEXT:  .LBB76_2: # %atomicrmw.start5100; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=15101; XTENSA-ATOMIC-NEXT:    and a6, a7, a125102; XTENSA-ATOMIC-NEXT:    and a5, a7, a95103; XTENSA-ATOMIC-NEXT:    xor a5, a5, a115104; XTENSA-ATOMIC-NEXT:    and a5, a5, a105105; XTENSA-ATOMIC-NEXT:    or a6, a6, a55106; XTENSA-ATOMIC-NEXT:    wsr a7, scompare15107; XTENSA-ATOMIC-NEXT:    s32c1i a6, a13, 05108; XTENSA-ATOMIC-NEXT:    or a5, a15, a155109; XTENSA-ATOMIC-NEXT:    beq a6, a7, .LBB76_15110; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start5111; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB76_2 Depth=15112; XTENSA-ATOMIC-NEXT:    or a5, a14, a145113; XTENSA-ATOMIC-NEXT:    j .LBB76_15114; XTENSA-ATOMIC-NEXT:  .LBB76_4: # %atomicrmw.end5115; XTENSA-ATOMIC-NEXT:    ssr a85116; XTENSA-ATOMIC-NEXT:    srl a2, a65117; XTENSA-ATOMIC-NEXT:    memw5118; XTENSA-ATOMIC-NEXT:    retw5119  %res = atomicrmw nand ptr %a, i16 %b acquire5120  ret i16 %res5121}5122 5123define i16 @atomicrmw_nand_i16_release(ptr %a, i16 %b) nounwind {5124; XTENSA-LABEL: atomicrmw_nand_i16_release:5125; XTENSA:       # %bb.0:5126; XTENSA-NEXT:    entry a1, 325127; XTENSA-NEXT:    or a11, a3, a35128; XTENSA-NEXT:    or a10, a2, a25129; XTENSA-NEXT:    movi a12, 35130; XTENSA-NEXT:    l32r a8, .LCPI77_05131; XTENSA-NEXT:    callx8 a85132; XTENSA-NEXT:    or a2, a10, a105133; XTENSA-NEXT:    retw5134;5135; XTENSA-ATOMIC-LABEL: atomicrmw_nand_i16_release:5136; XTENSA-ATOMIC:       # %bb.0:5137; XTENSA-ATOMIC-NEXT:    entry a1, 325138; XTENSA-ATOMIC-NEXT:    l32r a10, .LCPI77_05139; XTENSA-ATOMIC-NEXT:    and a9, a3, a105140; XTENSA-ATOMIC-NEXT:    slli a8, a2, 35141; XTENSA-ATOMIC-NEXT:    movi a11, 245142; XTENSA-ATOMIC-NEXT:    and a8, a8, a115143; XTENSA-ATOMIC-NEXT:    ssl a85144; XTENSA-ATOMIC-NEXT:    sll a9, a95145; XTENSA-ATOMIC-NEXT:    ssl a85146; XTENSA-ATOMIC-NEXT:    sll a10, a105147; XTENSA-ATOMIC-NEXT:    movi a11, -15148; XTENSA-ATOMIC-NEXT:    xor a12, a10, a115149; XTENSA-ATOMIC-NEXT:    movi a13, -45150; XTENSA-ATOMIC-NEXT:    and a13, a2, a135151; XTENSA-ATOMIC-NEXT:    memw5152; XTENSA-ATOMIC-NEXT:    l32i a7, a13, 05153; XTENSA-ATOMIC-NEXT:    movi a14, 05154; XTENSA-ATOMIC-NEXT:    movi a15, 15155; XTENSA-ATOMIC-NEXT:    j .LBB77_25156; XTENSA-ATOMIC-NEXT:  .LBB77_1: # %atomicrmw.start5157; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB77_2 Depth=15158; XTENSA-ATOMIC-NEXT:    or a7, a6, a65159; XTENSA-ATOMIC-NEXT:    beqi a5, 1, .LBB77_45160; XTENSA-ATOMIC-NEXT:  .LBB77_2: # %atomicrmw.start5161; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=15162; XTENSA-ATOMIC-NEXT:    and a6, a7, a125163; XTENSA-ATOMIC-NEXT:    and a5, a7, a95164; XTENSA-ATOMIC-NEXT:    xor a5, a5, a115165; XTENSA-ATOMIC-NEXT:    and a5, a5, a105166; XTENSA-ATOMIC-NEXT:    or a6, a6, a55167; XTENSA-ATOMIC-NEXT:    wsr a7, scompare15168; XTENSA-ATOMIC-NEXT:    s32c1i a6, a13, 05169; XTENSA-ATOMIC-NEXT:    or a5, a15, a155170; XTENSA-ATOMIC-NEXT:    beq a6, a7, .LBB77_15171; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start5172; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB77_2 Depth=15173; XTENSA-ATOMIC-NEXT:    or a5, a14, a145174; XTENSA-ATOMIC-NEXT:    j .LBB77_15175; XTENSA-ATOMIC-NEXT:  .LBB77_4: # %atomicrmw.end5176; XTENSA-ATOMIC-NEXT:    ssr a85177; XTENSA-ATOMIC-NEXT:    srl a2, a65178; XTENSA-ATOMIC-NEXT:    retw5179  %res = atomicrmw nand ptr %a, i16 %b release5180  ret i16 %res5181}5182 5183define i16 @atomicrmw_nand_i16_acq_rel(ptr %a, i16 %b) nounwind {5184; XTENSA-LABEL: atomicrmw_nand_i16_acq_rel:5185; XTENSA:       # %bb.0:5186; XTENSA-NEXT:    entry a1, 325187; XTENSA-NEXT:    or a11, a3, a35188; XTENSA-NEXT:    or a10, a2, a25189; XTENSA-NEXT:    movi a12, 45190; XTENSA-NEXT:    l32r a8, .LCPI78_05191; XTENSA-NEXT:    callx8 a85192; XTENSA-NEXT:    or a2, a10, a105193; XTENSA-NEXT:    retw5194;5195; XTENSA-ATOMIC-LABEL: atomicrmw_nand_i16_acq_rel:5196; XTENSA-ATOMIC:       # %bb.0:5197; XTENSA-ATOMIC-NEXT:    entry a1, 325198; XTENSA-ATOMIC-NEXT:    l32r a10, .LCPI78_05199; XTENSA-ATOMIC-NEXT:    and a9, a3, a105200; XTENSA-ATOMIC-NEXT:    slli a8, a2, 35201; XTENSA-ATOMIC-NEXT:    movi a11, 245202; XTENSA-ATOMIC-NEXT:    and a8, a8, a115203; XTENSA-ATOMIC-NEXT:    ssl a85204; XTENSA-ATOMIC-NEXT:    sll a9, a95205; XTENSA-ATOMIC-NEXT:    ssl a85206; XTENSA-ATOMIC-NEXT:    sll a10, a105207; XTENSA-ATOMIC-NEXT:    movi a11, -15208; XTENSA-ATOMIC-NEXT:    xor a12, a10, a115209; XTENSA-ATOMIC-NEXT:    movi a13, -45210; XTENSA-ATOMIC-NEXT:    and a13, a2, a135211; XTENSA-ATOMIC-NEXT:    memw5212; XTENSA-ATOMIC-NEXT:    l32i a7, a13, 05213; XTENSA-ATOMIC-NEXT:    movi a14, 05214; XTENSA-ATOMIC-NEXT:    movi a15, 15215; XTENSA-ATOMIC-NEXT:    j .LBB78_25216; XTENSA-ATOMIC-NEXT:  .LBB78_1: # %atomicrmw.start5217; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB78_2 Depth=15218; XTENSA-ATOMIC-NEXT:    or a7, a6, a65219; XTENSA-ATOMIC-NEXT:    beqi a5, 1, .LBB78_45220; XTENSA-ATOMIC-NEXT:  .LBB78_2: # %atomicrmw.start5221; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=15222; XTENSA-ATOMIC-NEXT:    and a6, a7, a125223; XTENSA-ATOMIC-NEXT:    and a5, a7, a95224; XTENSA-ATOMIC-NEXT:    xor a5, a5, a115225; XTENSA-ATOMIC-NEXT:    and a5, a5, a105226; XTENSA-ATOMIC-NEXT:    or a6, a6, a55227; XTENSA-ATOMIC-NEXT:    wsr a7, scompare15228; XTENSA-ATOMIC-NEXT:    s32c1i a6, a13, 05229; XTENSA-ATOMIC-NEXT:    or a5, a15, a155230; XTENSA-ATOMIC-NEXT:    beq a6, a7, .LBB78_15231; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start5232; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB78_2 Depth=15233; XTENSA-ATOMIC-NEXT:    or a5, a14, a145234; XTENSA-ATOMIC-NEXT:    j .LBB78_15235; XTENSA-ATOMIC-NEXT:  .LBB78_4: # %atomicrmw.end5236; XTENSA-ATOMIC-NEXT:    ssr a85237; XTENSA-ATOMIC-NEXT:    srl a2, a65238; XTENSA-ATOMIC-NEXT:    memw5239; XTENSA-ATOMIC-NEXT:    retw5240  %res = atomicrmw nand ptr %a, i16 %b acq_rel5241  ret i16 %res5242}5243 5244define i16 @atomicrmw_nand_i16_seq_cst(ptr %a, i16 %b) nounwind {5245; XTENSA-LABEL: atomicrmw_nand_i16_seq_cst:5246; XTENSA:       # %bb.0:5247; XTENSA-NEXT:    entry a1, 325248; XTENSA-NEXT:    or a11, a3, a35249; XTENSA-NEXT:    or a10, a2, a25250; XTENSA-NEXT:    movi a12, 55251; XTENSA-NEXT:    l32r a8, .LCPI79_05252; XTENSA-NEXT:    callx8 a85253; XTENSA-NEXT:    or a2, a10, a105254; XTENSA-NEXT:    retw5255;5256; XTENSA-ATOMIC-LABEL: atomicrmw_nand_i16_seq_cst:5257; XTENSA-ATOMIC:       # %bb.0:5258; XTENSA-ATOMIC-NEXT:    entry a1, 325259; XTENSA-ATOMIC-NEXT:    l32r a10, .LCPI79_05260; XTENSA-ATOMIC-NEXT:    and a9, a3, a105261; XTENSA-ATOMIC-NEXT:    slli a8, a2, 35262; XTENSA-ATOMIC-NEXT:    movi a11, 245263; XTENSA-ATOMIC-NEXT:    and a8, a8, a115264; XTENSA-ATOMIC-NEXT:    ssl a85265; XTENSA-ATOMIC-NEXT:    sll a9, a95266; XTENSA-ATOMIC-NEXT:    ssl a85267; XTENSA-ATOMIC-NEXT:    sll a10, a105268; XTENSA-ATOMIC-NEXT:    movi a11, -15269; XTENSA-ATOMIC-NEXT:    xor a12, a10, a115270; XTENSA-ATOMIC-NEXT:    movi a13, -45271; XTENSA-ATOMIC-NEXT:    and a13, a2, a135272; XTENSA-ATOMIC-NEXT:    memw5273; XTENSA-ATOMIC-NEXT:    l32i a7, a13, 05274; XTENSA-ATOMIC-NEXT:    movi a14, 05275; XTENSA-ATOMIC-NEXT:    movi a15, 15276; XTENSA-ATOMIC-NEXT:    j .LBB79_25277; XTENSA-ATOMIC-NEXT:  .LBB79_1: # %atomicrmw.start5278; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB79_2 Depth=15279; XTENSA-ATOMIC-NEXT:    or a7, a6, a65280; XTENSA-ATOMIC-NEXT:    beqi a5, 1, .LBB79_45281; XTENSA-ATOMIC-NEXT:  .LBB79_2: # %atomicrmw.start5282; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=15283; XTENSA-ATOMIC-NEXT:    and a6, a7, a125284; XTENSA-ATOMIC-NEXT:    and a5, a7, a95285; XTENSA-ATOMIC-NEXT:    xor a5, a5, a115286; XTENSA-ATOMIC-NEXT:    and a5, a5, a105287; XTENSA-ATOMIC-NEXT:    or a6, a6, a55288; XTENSA-ATOMIC-NEXT:    wsr a7, scompare15289; XTENSA-ATOMIC-NEXT:    s32c1i a6, a13, 05290; XTENSA-ATOMIC-NEXT:    or a5, a15, a155291; XTENSA-ATOMIC-NEXT:    beq a6, a7, .LBB79_15292; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start5293; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB79_2 Depth=15294; XTENSA-ATOMIC-NEXT:    or a5, a14, a145295; XTENSA-ATOMIC-NEXT:    j .LBB79_15296; XTENSA-ATOMIC-NEXT:  .LBB79_4: # %atomicrmw.end5297; XTENSA-ATOMIC-NEXT:    ssr a85298; XTENSA-ATOMIC-NEXT:    srl a2, a65299; XTENSA-ATOMIC-NEXT:    memw5300; XTENSA-ATOMIC-NEXT:    retw5301  %res = atomicrmw nand ptr %a, i16 %b seq_cst5302  ret i16 %res5303}5304 5305define i16 @atomicrmw_or_i16_monotonic(ptr %a, i16 %b) nounwind {5306; XTENSA-LABEL: atomicrmw_or_i16_monotonic:5307; XTENSA:       # %bb.0:5308; XTENSA-NEXT:    entry a1, 325309; XTENSA-NEXT:    or a11, a3, a35310; XTENSA-NEXT:    or a10, a2, a25311; XTENSA-NEXT:    movi a12, 05312; XTENSA-NEXT:    l32r a8, .LCPI80_05313; XTENSA-NEXT:    callx8 a85314; XTENSA-NEXT:    or a2, a10, a105315; XTENSA-NEXT:    retw5316;5317; XTENSA-ATOMIC-LABEL: atomicrmw_or_i16_monotonic:5318; XTENSA-ATOMIC:       # %bb.0:5319; XTENSA-ATOMIC-NEXT:    entry a1, 325320; XTENSA-ATOMIC-NEXT:    l32r a8, .LCPI80_05321; XTENSA-ATOMIC-NEXT:    and a9, a3, a85322; XTENSA-ATOMIC-NEXT:    slli a8, a2, 35323; XTENSA-ATOMIC-NEXT:    movi a10, 245324; XTENSA-ATOMIC-NEXT:    and a8, a8, a105325; XTENSA-ATOMIC-NEXT:    ssl a85326; XTENSA-ATOMIC-NEXT:    sll a9, a95327; XTENSA-ATOMIC-NEXT:    movi a10, -45328; XTENSA-ATOMIC-NEXT:    and a10, a2, a105329; XTENSA-ATOMIC-NEXT:    l32i a14, a10, 05330; XTENSA-ATOMIC-NEXT:    movi a11, 05331; XTENSA-ATOMIC-NEXT:    movi a12, 15332; XTENSA-ATOMIC-NEXT:    j .LBB80_25333; XTENSA-ATOMIC-NEXT:  .LBB80_1: # %atomicrmw.start5334; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB80_2 Depth=15335; XTENSA-ATOMIC-NEXT:    or a14, a13, a135336; XTENSA-ATOMIC-NEXT:    beqi a15, 1, .LBB80_45337; XTENSA-ATOMIC-NEXT:  .LBB80_2: # %atomicrmw.start5338; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=15339; XTENSA-ATOMIC-NEXT:    or a13, a14, a95340; XTENSA-ATOMIC-NEXT:    wsr a14, scompare15341; XTENSA-ATOMIC-NEXT:    s32c1i a13, a10, 05342; XTENSA-ATOMIC-NEXT:    or a15, a12, a125343; XTENSA-ATOMIC-NEXT:    beq a13, a14, .LBB80_15344; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start5345; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB80_2 Depth=15346; XTENSA-ATOMIC-NEXT:    or a15, a11, a115347; XTENSA-ATOMIC-NEXT:    j .LBB80_15348; XTENSA-ATOMIC-NEXT:  .LBB80_4: # %atomicrmw.end5349; XTENSA-ATOMIC-NEXT:    ssr a85350; XTENSA-ATOMIC-NEXT:    srl a2, a135351; XTENSA-ATOMIC-NEXT:    retw5352  %res = atomicrmw or ptr %a, i16 %b monotonic5353  ret i16 %res5354}5355 5356define i16 @atomicrmw_or_i16_acquire(ptr %a, i16 %b) nounwind {5357; XTENSA-LABEL: atomicrmw_or_i16_acquire:5358; XTENSA:       # %bb.0:5359; XTENSA-NEXT:    entry a1, 325360; XTENSA-NEXT:    or a11, a3, a35361; XTENSA-NEXT:    or a10, a2, a25362; XTENSA-NEXT:    movi a12, 25363; XTENSA-NEXT:    l32r a8, .LCPI81_05364; XTENSA-NEXT:    callx8 a85365; XTENSA-NEXT:    or a2, a10, a105366; XTENSA-NEXT:    retw5367;5368; XTENSA-ATOMIC-LABEL: atomicrmw_or_i16_acquire:5369; XTENSA-ATOMIC:       # %bb.0:5370; XTENSA-ATOMIC-NEXT:    entry a1, 325371; XTENSA-ATOMIC-NEXT:    l32r a8, .LCPI81_05372; XTENSA-ATOMIC-NEXT:    and a9, a3, a85373; XTENSA-ATOMIC-NEXT:    slli a8, a2, 35374; XTENSA-ATOMIC-NEXT:    movi a10, 245375; XTENSA-ATOMIC-NEXT:    and a8, a8, a105376; XTENSA-ATOMIC-NEXT:    ssl a85377; XTENSA-ATOMIC-NEXT:    sll a9, a95378; XTENSA-ATOMIC-NEXT:    movi a10, -45379; XTENSA-ATOMIC-NEXT:    and a10, a2, a105380; XTENSA-ATOMIC-NEXT:    l32i a14, a10, 05381; XTENSA-ATOMIC-NEXT:    movi a11, 05382; XTENSA-ATOMIC-NEXT:    movi a12, 15383; XTENSA-ATOMIC-NEXT:    j .LBB81_25384; XTENSA-ATOMIC-NEXT:  .LBB81_1: # %atomicrmw.start5385; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB81_2 Depth=15386; XTENSA-ATOMIC-NEXT:    or a14, a13, a135387; XTENSA-ATOMIC-NEXT:    beqi a15, 1, .LBB81_45388; XTENSA-ATOMIC-NEXT:  .LBB81_2: # %atomicrmw.start5389; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=15390; XTENSA-ATOMIC-NEXT:    or a13, a14, a95391; XTENSA-ATOMIC-NEXT:    wsr a14, scompare15392; XTENSA-ATOMIC-NEXT:    s32c1i a13, a10, 05393; XTENSA-ATOMIC-NEXT:    or a15, a12, a125394; XTENSA-ATOMIC-NEXT:    beq a13, a14, .LBB81_15395; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start5396; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB81_2 Depth=15397; XTENSA-ATOMIC-NEXT:    or a15, a11, a115398; XTENSA-ATOMIC-NEXT:    j .LBB81_15399; XTENSA-ATOMIC-NEXT:  .LBB81_4: # %atomicrmw.end5400; XTENSA-ATOMIC-NEXT:    ssr a85401; XTENSA-ATOMIC-NEXT:    srl a2, a135402; XTENSA-ATOMIC-NEXT:    memw5403; XTENSA-ATOMIC-NEXT:    retw5404  %res = atomicrmw or ptr %a, i16 %b acquire5405  ret i16 %res5406}5407 5408define i16 @atomicrmw_or_i16_release(ptr %a, i16 %b) nounwind {5409; XTENSA-LABEL: atomicrmw_or_i16_release:5410; XTENSA:       # %bb.0:5411; XTENSA-NEXT:    entry a1, 325412; XTENSA-NEXT:    or a11, a3, a35413; XTENSA-NEXT:    or a10, a2, a25414; XTENSA-NEXT:    movi a12, 35415; XTENSA-NEXT:    l32r a8, .LCPI82_05416; XTENSA-NEXT:    callx8 a85417; XTENSA-NEXT:    or a2, a10, a105418; XTENSA-NEXT:    retw5419;5420; XTENSA-ATOMIC-LABEL: atomicrmw_or_i16_release:5421; XTENSA-ATOMIC:       # %bb.0:5422; XTENSA-ATOMIC-NEXT:    entry a1, 325423; XTENSA-ATOMIC-NEXT:    l32r a8, .LCPI82_05424; XTENSA-ATOMIC-NEXT:    and a9, a3, a85425; XTENSA-ATOMIC-NEXT:    slli a8, a2, 35426; XTENSA-ATOMIC-NEXT:    movi a10, 245427; XTENSA-ATOMIC-NEXT:    and a8, a8, a105428; XTENSA-ATOMIC-NEXT:    ssl a85429; XTENSA-ATOMIC-NEXT:    sll a9, a95430; XTENSA-ATOMIC-NEXT:    movi a10, -45431; XTENSA-ATOMIC-NEXT:    and a10, a2, a105432; XTENSA-ATOMIC-NEXT:    memw5433; XTENSA-ATOMIC-NEXT:    l32i a14, a10, 05434; XTENSA-ATOMIC-NEXT:    movi a11, 05435; XTENSA-ATOMIC-NEXT:    movi a12, 15436; XTENSA-ATOMIC-NEXT:    j .LBB82_25437; XTENSA-ATOMIC-NEXT:  .LBB82_1: # %atomicrmw.start5438; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB82_2 Depth=15439; XTENSA-ATOMIC-NEXT:    or a14, a13, a135440; XTENSA-ATOMIC-NEXT:    beqi a15, 1, .LBB82_45441; XTENSA-ATOMIC-NEXT:  .LBB82_2: # %atomicrmw.start5442; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=15443; XTENSA-ATOMIC-NEXT:    or a13, a14, a95444; XTENSA-ATOMIC-NEXT:    wsr a14, scompare15445; XTENSA-ATOMIC-NEXT:    s32c1i a13, a10, 05446; XTENSA-ATOMIC-NEXT:    or a15, a12, a125447; XTENSA-ATOMIC-NEXT:    beq a13, a14, .LBB82_15448; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start5449; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB82_2 Depth=15450; XTENSA-ATOMIC-NEXT:    or a15, a11, a115451; XTENSA-ATOMIC-NEXT:    j .LBB82_15452; XTENSA-ATOMIC-NEXT:  .LBB82_4: # %atomicrmw.end5453; XTENSA-ATOMIC-NEXT:    ssr a85454; XTENSA-ATOMIC-NEXT:    srl a2, a135455; XTENSA-ATOMIC-NEXT:    retw5456  %res = atomicrmw or ptr %a, i16 %b release5457  ret i16 %res5458}5459 5460define i16 @atomicrmw_or_i16_acq_rel(ptr %a, i16 %b) nounwind {5461; XTENSA-LABEL: atomicrmw_or_i16_acq_rel:5462; XTENSA:       # %bb.0:5463; XTENSA-NEXT:    entry a1, 325464; XTENSA-NEXT:    or a11, a3, a35465; XTENSA-NEXT:    or a10, a2, a25466; XTENSA-NEXT:    movi a12, 45467; XTENSA-NEXT:    l32r a8, .LCPI83_05468; XTENSA-NEXT:    callx8 a85469; XTENSA-NEXT:    or a2, a10, a105470; XTENSA-NEXT:    retw5471;5472; XTENSA-ATOMIC-LABEL: atomicrmw_or_i16_acq_rel:5473; XTENSA-ATOMIC:       # %bb.0:5474; XTENSA-ATOMIC-NEXT:    entry a1, 325475; XTENSA-ATOMIC-NEXT:    l32r a8, .LCPI83_05476; XTENSA-ATOMIC-NEXT:    and a9, a3, a85477; XTENSA-ATOMIC-NEXT:    slli a8, a2, 35478; XTENSA-ATOMIC-NEXT:    movi a10, 245479; XTENSA-ATOMIC-NEXT:    and a8, a8, a105480; XTENSA-ATOMIC-NEXT:    ssl a85481; XTENSA-ATOMIC-NEXT:    sll a9, a95482; XTENSA-ATOMIC-NEXT:    movi a10, -45483; XTENSA-ATOMIC-NEXT:    and a10, a2, a105484; XTENSA-ATOMIC-NEXT:    memw5485; XTENSA-ATOMIC-NEXT:    l32i a14, a10, 05486; XTENSA-ATOMIC-NEXT:    movi a11, 05487; XTENSA-ATOMIC-NEXT:    movi a12, 15488; XTENSA-ATOMIC-NEXT:    j .LBB83_25489; XTENSA-ATOMIC-NEXT:  .LBB83_1: # %atomicrmw.start5490; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB83_2 Depth=15491; XTENSA-ATOMIC-NEXT:    or a14, a13, a135492; XTENSA-ATOMIC-NEXT:    beqi a15, 1, .LBB83_45493; XTENSA-ATOMIC-NEXT:  .LBB83_2: # %atomicrmw.start5494; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=15495; XTENSA-ATOMIC-NEXT:    or a13, a14, a95496; XTENSA-ATOMIC-NEXT:    wsr a14, scompare15497; XTENSA-ATOMIC-NEXT:    s32c1i a13, a10, 05498; XTENSA-ATOMIC-NEXT:    or a15, a12, a125499; XTENSA-ATOMIC-NEXT:    beq a13, a14, .LBB83_15500; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start5501; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB83_2 Depth=15502; XTENSA-ATOMIC-NEXT:    or a15, a11, a115503; XTENSA-ATOMIC-NEXT:    j .LBB83_15504; XTENSA-ATOMIC-NEXT:  .LBB83_4: # %atomicrmw.end5505; XTENSA-ATOMIC-NEXT:    ssr a85506; XTENSA-ATOMIC-NEXT:    srl a2, a135507; XTENSA-ATOMIC-NEXT:    memw5508; XTENSA-ATOMIC-NEXT:    retw5509  %res = atomicrmw or ptr %a, i16 %b acq_rel5510  ret i16 %res5511}5512 5513define i16 @atomicrmw_or_i16_seq_cst(ptr %a, i16 %b) nounwind {5514; XTENSA-LABEL: atomicrmw_or_i16_seq_cst:5515; XTENSA:       # %bb.0:5516; XTENSA-NEXT:    entry a1, 325517; XTENSA-NEXT:    or a11, a3, a35518; XTENSA-NEXT:    or a10, a2, a25519; XTENSA-NEXT:    movi a12, 55520; XTENSA-NEXT:    l32r a8, .LCPI84_05521; XTENSA-NEXT:    callx8 a85522; XTENSA-NEXT:    or a2, a10, a105523; XTENSA-NEXT:    retw5524;5525; XTENSA-ATOMIC-LABEL: atomicrmw_or_i16_seq_cst:5526; XTENSA-ATOMIC:       # %bb.0:5527; XTENSA-ATOMIC-NEXT:    entry a1, 325528; XTENSA-ATOMIC-NEXT:    l32r a8, .LCPI84_05529; XTENSA-ATOMIC-NEXT:    and a9, a3, a85530; XTENSA-ATOMIC-NEXT:    slli a8, a2, 35531; XTENSA-ATOMIC-NEXT:    movi a10, 245532; XTENSA-ATOMIC-NEXT:    and a8, a8, a105533; XTENSA-ATOMIC-NEXT:    ssl a85534; XTENSA-ATOMIC-NEXT:    sll a9, a95535; XTENSA-ATOMIC-NEXT:    movi a10, -45536; XTENSA-ATOMIC-NEXT:    and a10, a2, a105537; XTENSA-ATOMIC-NEXT:    memw5538; XTENSA-ATOMIC-NEXT:    l32i a14, a10, 05539; XTENSA-ATOMIC-NEXT:    movi a11, 05540; XTENSA-ATOMIC-NEXT:    movi a12, 15541; XTENSA-ATOMIC-NEXT:    j .LBB84_25542; XTENSA-ATOMIC-NEXT:  .LBB84_1: # %atomicrmw.start5543; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB84_2 Depth=15544; XTENSA-ATOMIC-NEXT:    or a14, a13, a135545; XTENSA-ATOMIC-NEXT:    beqi a15, 1, .LBB84_45546; XTENSA-ATOMIC-NEXT:  .LBB84_2: # %atomicrmw.start5547; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=15548; XTENSA-ATOMIC-NEXT:    or a13, a14, a95549; XTENSA-ATOMIC-NEXT:    wsr a14, scompare15550; XTENSA-ATOMIC-NEXT:    s32c1i a13, a10, 05551; XTENSA-ATOMIC-NEXT:    or a15, a12, a125552; XTENSA-ATOMIC-NEXT:    beq a13, a14, .LBB84_15553; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start5554; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB84_2 Depth=15555; XTENSA-ATOMIC-NEXT:    or a15, a11, a115556; XTENSA-ATOMIC-NEXT:    j .LBB84_15557; XTENSA-ATOMIC-NEXT:  .LBB84_4: # %atomicrmw.end5558; XTENSA-ATOMIC-NEXT:    ssr a85559; XTENSA-ATOMIC-NEXT:    srl a2, a135560; XTENSA-ATOMIC-NEXT:    memw5561; XTENSA-ATOMIC-NEXT:    retw5562  %res = atomicrmw or ptr %a, i16 %b seq_cst5563  ret i16 %res5564}5565 5566define i16 @atomicrmw_xor_i16_monotonic(ptr %a, i16 %b) nounwind {5567; XTENSA-LABEL: atomicrmw_xor_i16_monotonic:5568; XTENSA:       # %bb.0:5569; XTENSA-NEXT:    entry a1, 325570; XTENSA-NEXT:    or a11, a3, a35571; XTENSA-NEXT:    or a10, a2, a25572; XTENSA-NEXT:    movi a12, 05573; XTENSA-NEXT:    l32r a8, .LCPI85_05574; XTENSA-NEXT:    callx8 a85575; XTENSA-NEXT:    or a2, a10, a105576; XTENSA-NEXT:    retw5577;5578; XTENSA-ATOMIC-LABEL: atomicrmw_xor_i16_monotonic:5579; XTENSA-ATOMIC:       # %bb.0:5580; XTENSA-ATOMIC-NEXT:    entry a1, 325581; XTENSA-ATOMIC-NEXT:    l32r a8, .LCPI85_05582; XTENSA-ATOMIC-NEXT:    and a9, a3, a85583; XTENSA-ATOMIC-NEXT:    slli a8, a2, 35584; XTENSA-ATOMIC-NEXT:    movi a10, 245585; XTENSA-ATOMIC-NEXT:    and a8, a8, a105586; XTENSA-ATOMIC-NEXT:    ssl a85587; XTENSA-ATOMIC-NEXT:    sll a9, a95588; XTENSA-ATOMIC-NEXT:    movi a10, -45589; XTENSA-ATOMIC-NEXT:    and a10, a2, a105590; XTENSA-ATOMIC-NEXT:    l32i a14, a10, 05591; XTENSA-ATOMIC-NEXT:    movi a11, 05592; XTENSA-ATOMIC-NEXT:    movi a12, 15593; XTENSA-ATOMIC-NEXT:    j .LBB85_25594; XTENSA-ATOMIC-NEXT:  .LBB85_1: # %atomicrmw.start5595; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB85_2 Depth=15596; XTENSA-ATOMIC-NEXT:    or a14, a13, a135597; XTENSA-ATOMIC-NEXT:    beqi a15, 1, .LBB85_45598; XTENSA-ATOMIC-NEXT:  .LBB85_2: # %atomicrmw.start5599; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=15600; XTENSA-ATOMIC-NEXT:    xor a13, a14, a95601; XTENSA-ATOMIC-NEXT:    wsr a14, scompare15602; XTENSA-ATOMIC-NEXT:    s32c1i a13, a10, 05603; XTENSA-ATOMIC-NEXT:    or a15, a12, a125604; XTENSA-ATOMIC-NEXT:    beq a13, a14, .LBB85_15605; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start5606; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB85_2 Depth=15607; XTENSA-ATOMIC-NEXT:    or a15, a11, a115608; XTENSA-ATOMIC-NEXT:    j .LBB85_15609; XTENSA-ATOMIC-NEXT:  .LBB85_4: # %atomicrmw.end5610; XTENSA-ATOMIC-NEXT:    ssr a85611; XTENSA-ATOMIC-NEXT:    srl a2, a135612; XTENSA-ATOMIC-NEXT:    retw5613  %res = atomicrmw xor ptr %a, i16 %b monotonic5614  ret i16 %res5615}5616 5617define i16 @atomicrmw_xor_i16_acquire(ptr %a, i16 %b) nounwind {5618; XTENSA-LABEL: atomicrmw_xor_i16_acquire:5619; XTENSA:       # %bb.0:5620; XTENSA-NEXT:    entry a1, 325621; XTENSA-NEXT:    or a11, a3, a35622; XTENSA-NEXT:    or a10, a2, a25623; XTENSA-NEXT:    movi a12, 25624; XTENSA-NEXT:    l32r a8, .LCPI86_05625; XTENSA-NEXT:    callx8 a85626; XTENSA-NEXT:    or a2, a10, a105627; XTENSA-NEXT:    retw5628;5629; XTENSA-ATOMIC-LABEL: atomicrmw_xor_i16_acquire:5630; XTENSA-ATOMIC:       # %bb.0:5631; XTENSA-ATOMIC-NEXT:    entry a1, 325632; XTENSA-ATOMIC-NEXT:    l32r a8, .LCPI86_05633; XTENSA-ATOMIC-NEXT:    and a9, a3, a85634; XTENSA-ATOMIC-NEXT:    slli a8, a2, 35635; XTENSA-ATOMIC-NEXT:    movi a10, 245636; XTENSA-ATOMIC-NEXT:    and a8, a8, a105637; XTENSA-ATOMIC-NEXT:    ssl a85638; XTENSA-ATOMIC-NEXT:    sll a9, a95639; XTENSA-ATOMIC-NEXT:    movi a10, -45640; XTENSA-ATOMIC-NEXT:    and a10, a2, a105641; XTENSA-ATOMIC-NEXT:    l32i a14, a10, 05642; XTENSA-ATOMIC-NEXT:    movi a11, 05643; XTENSA-ATOMIC-NEXT:    movi a12, 15644; XTENSA-ATOMIC-NEXT:    j .LBB86_25645; XTENSA-ATOMIC-NEXT:  .LBB86_1: # %atomicrmw.start5646; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB86_2 Depth=15647; XTENSA-ATOMIC-NEXT:    or a14, a13, a135648; XTENSA-ATOMIC-NEXT:    beqi a15, 1, .LBB86_45649; XTENSA-ATOMIC-NEXT:  .LBB86_2: # %atomicrmw.start5650; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=15651; XTENSA-ATOMIC-NEXT:    xor a13, a14, a95652; XTENSA-ATOMIC-NEXT:    wsr a14, scompare15653; XTENSA-ATOMIC-NEXT:    s32c1i a13, a10, 05654; XTENSA-ATOMIC-NEXT:    or a15, a12, a125655; XTENSA-ATOMIC-NEXT:    beq a13, a14, .LBB86_15656; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start5657; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB86_2 Depth=15658; XTENSA-ATOMIC-NEXT:    or a15, a11, a115659; XTENSA-ATOMIC-NEXT:    j .LBB86_15660; XTENSA-ATOMIC-NEXT:  .LBB86_4: # %atomicrmw.end5661; XTENSA-ATOMIC-NEXT:    ssr a85662; XTENSA-ATOMIC-NEXT:    srl a2, a135663; XTENSA-ATOMIC-NEXT:    memw5664; XTENSA-ATOMIC-NEXT:    retw5665  %res = atomicrmw xor ptr %a, i16 %b acquire5666  ret i16 %res5667}5668 5669define i16 @atomicrmw_xor_i16_release(ptr %a, i16 %b) nounwind {5670; XTENSA-LABEL: atomicrmw_xor_i16_release:5671; XTENSA:       # %bb.0:5672; XTENSA-NEXT:    entry a1, 325673; XTENSA-NEXT:    or a11, a3, a35674; XTENSA-NEXT:    or a10, a2, a25675; XTENSA-NEXT:    movi a12, 35676; XTENSA-NEXT:    l32r a8, .LCPI87_05677; XTENSA-NEXT:    callx8 a85678; XTENSA-NEXT:    or a2, a10, a105679; XTENSA-NEXT:    retw5680;5681; XTENSA-ATOMIC-LABEL: atomicrmw_xor_i16_release:5682; XTENSA-ATOMIC:       # %bb.0:5683; XTENSA-ATOMIC-NEXT:    entry a1, 325684; XTENSA-ATOMIC-NEXT:    l32r a8, .LCPI87_05685; XTENSA-ATOMIC-NEXT:    and a9, a3, a85686; XTENSA-ATOMIC-NEXT:    slli a8, a2, 35687; XTENSA-ATOMIC-NEXT:    movi a10, 245688; XTENSA-ATOMIC-NEXT:    and a8, a8, a105689; XTENSA-ATOMIC-NEXT:    ssl a85690; XTENSA-ATOMIC-NEXT:    sll a9, a95691; XTENSA-ATOMIC-NEXT:    movi a10, -45692; XTENSA-ATOMIC-NEXT:    and a10, a2, a105693; XTENSA-ATOMIC-NEXT:    memw5694; XTENSA-ATOMIC-NEXT:    l32i a14, a10, 05695; XTENSA-ATOMIC-NEXT:    movi a11, 05696; XTENSA-ATOMIC-NEXT:    movi a12, 15697; XTENSA-ATOMIC-NEXT:    j .LBB87_25698; XTENSA-ATOMIC-NEXT:  .LBB87_1: # %atomicrmw.start5699; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB87_2 Depth=15700; XTENSA-ATOMIC-NEXT:    or a14, a13, a135701; XTENSA-ATOMIC-NEXT:    beqi a15, 1, .LBB87_45702; XTENSA-ATOMIC-NEXT:  .LBB87_2: # %atomicrmw.start5703; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=15704; XTENSA-ATOMIC-NEXT:    xor a13, a14, a95705; XTENSA-ATOMIC-NEXT:    wsr a14, scompare15706; XTENSA-ATOMIC-NEXT:    s32c1i a13, a10, 05707; XTENSA-ATOMIC-NEXT:    or a15, a12, a125708; XTENSA-ATOMIC-NEXT:    beq a13, a14, .LBB87_15709; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start5710; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB87_2 Depth=15711; XTENSA-ATOMIC-NEXT:    or a15, a11, a115712; XTENSA-ATOMIC-NEXT:    j .LBB87_15713; XTENSA-ATOMIC-NEXT:  .LBB87_4: # %atomicrmw.end5714; XTENSA-ATOMIC-NEXT:    ssr a85715; XTENSA-ATOMIC-NEXT:    srl a2, a135716; XTENSA-ATOMIC-NEXT:    retw5717  %res = atomicrmw xor ptr %a, i16 %b release5718  ret i16 %res5719}5720 5721define i16 @atomicrmw_xor_i16_acq_rel(ptr %a, i16 %b) nounwind {5722; XTENSA-LABEL: atomicrmw_xor_i16_acq_rel:5723; XTENSA:       # %bb.0:5724; XTENSA-NEXT:    entry a1, 325725; XTENSA-NEXT:    or a11, a3, a35726; XTENSA-NEXT:    or a10, a2, a25727; XTENSA-NEXT:    movi a12, 45728; XTENSA-NEXT:    l32r a8, .LCPI88_05729; XTENSA-NEXT:    callx8 a85730; XTENSA-NEXT:    or a2, a10, a105731; XTENSA-NEXT:    retw5732;5733; XTENSA-ATOMIC-LABEL: atomicrmw_xor_i16_acq_rel:5734; XTENSA-ATOMIC:       # %bb.0:5735; XTENSA-ATOMIC-NEXT:    entry a1, 325736; XTENSA-ATOMIC-NEXT:    l32r a8, .LCPI88_05737; XTENSA-ATOMIC-NEXT:    and a9, a3, a85738; XTENSA-ATOMIC-NEXT:    slli a8, a2, 35739; XTENSA-ATOMIC-NEXT:    movi a10, 245740; XTENSA-ATOMIC-NEXT:    and a8, a8, a105741; XTENSA-ATOMIC-NEXT:    ssl a85742; XTENSA-ATOMIC-NEXT:    sll a9, a95743; XTENSA-ATOMIC-NEXT:    movi a10, -45744; XTENSA-ATOMIC-NEXT:    and a10, a2, a105745; XTENSA-ATOMIC-NEXT:    memw5746; XTENSA-ATOMIC-NEXT:    l32i a14, a10, 05747; XTENSA-ATOMIC-NEXT:    movi a11, 05748; XTENSA-ATOMIC-NEXT:    movi a12, 15749; XTENSA-ATOMIC-NEXT:    j .LBB88_25750; XTENSA-ATOMIC-NEXT:  .LBB88_1: # %atomicrmw.start5751; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB88_2 Depth=15752; XTENSA-ATOMIC-NEXT:    or a14, a13, a135753; XTENSA-ATOMIC-NEXT:    beqi a15, 1, .LBB88_45754; XTENSA-ATOMIC-NEXT:  .LBB88_2: # %atomicrmw.start5755; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=15756; XTENSA-ATOMIC-NEXT:    xor a13, a14, a95757; XTENSA-ATOMIC-NEXT:    wsr a14, scompare15758; XTENSA-ATOMIC-NEXT:    s32c1i a13, a10, 05759; XTENSA-ATOMIC-NEXT:    or a15, a12, a125760; XTENSA-ATOMIC-NEXT:    beq a13, a14, .LBB88_15761; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start5762; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB88_2 Depth=15763; XTENSA-ATOMIC-NEXT:    or a15, a11, a115764; XTENSA-ATOMIC-NEXT:    j .LBB88_15765; XTENSA-ATOMIC-NEXT:  .LBB88_4: # %atomicrmw.end5766; XTENSA-ATOMIC-NEXT:    ssr a85767; XTENSA-ATOMIC-NEXT:    srl a2, a135768; XTENSA-ATOMIC-NEXT:    memw5769; XTENSA-ATOMIC-NEXT:    retw5770  %res = atomicrmw xor ptr %a, i16 %b acq_rel5771  ret i16 %res5772}5773 5774define i16 @atomicrmw_xor_i16_seq_cst(ptr %a, i16 %b) nounwind {5775; XTENSA-LABEL: atomicrmw_xor_i16_seq_cst:5776; XTENSA:       # %bb.0:5777; XTENSA-NEXT:    entry a1, 325778; XTENSA-NEXT:    or a11, a3, a35779; XTENSA-NEXT:    or a10, a2, a25780; XTENSA-NEXT:    movi a12, 55781; XTENSA-NEXT:    l32r a8, .LCPI89_05782; XTENSA-NEXT:    callx8 a85783; XTENSA-NEXT:    or a2, a10, a105784; XTENSA-NEXT:    retw5785;5786; XTENSA-ATOMIC-LABEL: atomicrmw_xor_i16_seq_cst:5787; XTENSA-ATOMIC:       # %bb.0:5788; XTENSA-ATOMIC-NEXT:    entry a1, 325789; XTENSA-ATOMIC-NEXT:    l32r a8, .LCPI89_05790; XTENSA-ATOMIC-NEXT:    and a9, a3, a85791; XTENSA-ATOMIC-NEXT:    slli a8, a2, 35792; XTENSA-ATOMIC-NEXT:    movi a10, 245793; XTENSA-ATOMIC-NEXT:    and a8, a8, a105794; XTENSA-ATOMIC-NEXT:    ssl a85795; XTENSA-ATOMIC-NEXT:    sll a9, a95796; XTENSA-ATOMIC-NEXT:    movi a10, -45797; XTENSA-ATOMIC-NEXT:    and a10, a2, a105798; XTENSA-ATOMIC-NEXT:    memw5799; XTENSA-ATOMIC-NEXT:    l32i a14, a10, 05800; XTENSA-ATOMIC-NEXT:    movi a11, 05801; XTENSA-ATOMIC-NEXT:    movi a12, 15802; XTENSA-ATOMIC-NEXT:    j .LBB89_25803; XTENSA-ATOMIC-NEXT:  .LBB89_1: # %atomicrmw.start5804; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB89_2 Depth=15805; XTENSA-ATOMIC-NEXT:    or a14, a13, a135806; XTENSA-ATOMIC-NEXT:    beqi a15, 1, .LBB89_45807; XTENSA-ATOMIC-NEXT:  .LBB89_2: # %atomicrmw.start5808; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=15809; XTENSA-ATOMIC-NEXT:    xor a13, a14, a95810; XTENSA-ATOMIC-NEXT:    wsr a14, scompare15811; XTENSA-ATOMIC-NEXT:    s32c1i a13, a10, 05812; XTENSA-ATOMIC-NEXT:    or a15, a12, a125813; XTENSA-ATOMIC-NEXT:    beq a13, a14, .LBB89_15814; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start5815; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB89_2 Depth=15816; XTENSA-ATOMIC-NEXT:    or a15, a11, a115817; XTENSA-ATOMIC-NEXT:    j .LBB89_15818; XTENSA-ATOMIC-NEXT:  .LBB89_4: # %atomicrmw.end5819; XTENSA-ATOMIC-NEXT:    ssr a85820; XTENSA-ATOMIC-NEXT:    srl a2, a135821; XTENSA-ATOMIC-NEXT:    memw5822; XTENSA-ATOMIC-NEXT:    retw5823  %res = atomicrmw xor ptr %a, i16 %b seq_cst5824  ret i16 %res5825}5826 5827define i16 @atomicrmw_max_i16_monotonic(ptr %a, i16 %b) nounwind {5828; XTENSA-LABEL: atomicrmw_max_i16_monotonic:5829; XTENSA:       # %bb.0:5830; XTENSA-NEXT:    entry a1, 485831; XTENSA-NEXT:    or a6, a2, a25832; XTENSA-NEXT:    l16ui a2, a6, 05833; XTENSA-NEXT:    slli a8, a3, 165834; XTENSA-NEXT:    srai a5, a8, 165835; XTENSA-NEXT:    movi a7, 05836; XTENSA-NEXT:    l32r a4, .LCPI90_05837; XTENSA-NEXT:    j .LBB90_25838; XTENSA-NEXT:  .LBB90_1: # %atomicrmw.start5839; XTENSA-NEXT:    # in Loop: Header=BB90_2 Depth=15840; XTENSA-NEXT:    addi a11, a1, 05841; XTENSA-NEXT:    or a10, a6, a65842; XTENSA-NEXT:    or a13, a7, a75843; XTENSA-NEXT:    or a14, a7, a75844; XTENSA-NEXT:    callx8 a45845; XTENSA-NEXT:    l16ui a2, a1, 05846; XTENSA-NEXT:    bnez a10, .LBB90_45847; XTENSA-NEXT:  .LBB90_2: # %atomicrmw.start5848; XTENSA-NEXT:    # =>This Inner Loop Header: Depth=15849; XTENSA-NEXT:    s16i a2, a1, 05850; XTENSA-NEXT:    slli a8, a2, 165851; XTENSA-NEXT:    srai a8, a8, 165852; XTENSA-NEXT:    or a12, a3, a35853; XTENSA-NEXT:    bge a5, a8, .LBB90_15854; XTENSA-NEXT:  # %bb.3: # %atomicrmw.start5855; XTENSA-NEXT:    # in Loop: Header=BB90_2 Depth=15856; XTENSA-NEXT:    or a12, a2, a25857; XTENSA-NEXT:    j .LBB90_15858; XTENSA-NEXT:  .LBB90_4: # %atomicrmw.end5859; XTENSA-NEXT:    retw5860;5861; XTENSA-ATOMIC-LABEL: atomicrmw_max_i16_monotonic:5862; XTENSA-ATOMIC:       # %bb.0:5863; XTENSA-ATOMIC-NEXT:    entry a1, 325864; XTENSA-ATOMIC-NEXT:    slli a8, a2, 35865; XTENSA-ATOMIC-NEXT:    movi a9, 245866; XTENSA-ATOMIC-NEXT:    and a8, a8, a95867; XTENSA-ATOMIC-NEXT:    l32r a9, .LCPI90_05868; XTENSA-ATOMIC-NEXT:    ssl a85869; XTENSA-ATOMIC-NEXT:    sll a9, a95870; XTENSA-ATOMIC-NEXT:    movi a10, -15871; XTENSA-ATOMIC-NEXT:    xor a9, a9, a105872; XTENSA-ATOMIC-NEXT:    movi a10, -45873; XTENSA-ATOMIC-NEXT:    and a10, a2, a105874; XTENSA-ATOMIC-NEXT:    l32i a14, a10, 05875; XTENSA-ATOMIC-NEXT:    slli a11, a3, 165876; XTENSA-ATOMIC-NEXT:    srai a11, a11, 165877; XTENSA-ATOMIC-NEXT:    movi a12, 05878; XTENSA-ATOMIC-NEXT:    movi a13, 15879; XTENSA-ATOMIC-NEXT:    j .LBB90_25880; XTENSA-ATOMIC-NEXT:  .LBB90_1: # %atomicrmw.start5881; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB90_2 Depth=15882; XTENSA-ATOMIC-NEXT:    or a14, a15, a155883; XTENSA-ATOMIC-NEXT:    beqi a7, 1, .LBB90_65884; XTENSA-ATOMIC-NEXT:  .LBB90_2: # %atomicrmw.start5885; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=15886; XTENSA-ATOMIC-NEXT:    ssr a85887; XTENSA-ATOMIC-NEXT:    srl a15, a145888; XTENSA-ATOMIC-NEXT:    slli a7, a15, 165889; XTENSA-ATOMIC-NEXT:    srai a6, a7, 165890; XTENSA-ATOMIC-NEXT:    or a7, a3, a35891; XTENSA-ATOMIC-NEXT:    bge a11, a6, .LBB90_45892; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start5893; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB90_2 Depth=15894; XTENSA-ATOMIC-NEXT:    or a7, a15, a155895; XTENSA-ATOMIC-NEXT:  .LBB90_4: # %atomicrmw.start5896; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB90_2 Depth=15897; XTENSA-ATOMIC-NEXT:    l32r a15, .LCPI90_05898; XTENSA-ATOMIC-NEXT:    and a15, a7, a155899; XTENSA-ATOMIC-NEXT:    ssl a85900; XTENSA-ATOMIC-NEXT:    sll a15, a155901; XTENSA-ATOMIC-NEXT:    and a7, a14, a95902; XTENSA-ATOMIC-NEXT:    or a15, a7, a155903; XTENSA-ATOMIC-NEXT:    wsr a14, scompare15904; XTENSA-ATOMIC-NEXT:    s32c1i a15, a10, 05905; XTENSA-ATOMIC-NEXT:    or a7, a13, a135906; XTENSA-ATOMIC-NEXT:    beq a15, a14, .LBB90_15907; XTENSA-ATOMIC-NEXT:  # %bb.5: # %atomicrmw.start5908; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB90_2 Depth=15909; XTENSA-ATOMIC-NEXT:    or a7, a12, a125910; XTENSA-ATOMIC-NEXT:    j .LBB90_15911; XTENSA-ATOMIC-NEXT:  .LBB90_6: # %atomicrmw.end5912; XTENSA-ATOMIC-NEXT:    ssr a85913; XTENSA-ATOMIC-NEXT:    srl a2, a155914; XTENSA-ATOMIC-NEXT:    retw5915  %res = atomicrmw max ptr %a, i16 %b monotonic5916  ret i16 %res5917}5918 5919define i16 @atomicrmw_max_i16_acquire(ptr %a, i16 %b) nounwind {5920; XTENSA-LABEL: atomicrmw_max_i16_acquire:5921; XTENSA:       # %bb.0:5922; XTENSA-NEXT:    entry a1, 485923; XTENSA-NEXT:    or a6, a2, a25924; XTENSA-NEXT:    l16ui a2, a6, 05925; XTENSA-NEXT:    slli a8, a3, 165926; XTENSA-NEXT:    srai a5, a8, 165927; XTENSA-NEXT:    movi a7, 25928; XTENSA-NEXT:    l32r a4, .LCPI91_05929; XTENSA-NEXT:    j .LBB91_25930; XTENSA-NEXT:  .LBB91_1: # %atomicrmw.start5931; XTENSA-NEXT:    # in Loop: Header=BB91_2 Depth=15932; XTENSA-NEXT:    addi a11, a1, 05933; XTENSA-NEXT:    or a10, a6, a65934; XTENSA-NEXT:    or a13, a7, a75935; XTENSA-NEXT:    or a14, a7, a75936; XTENSA-NEXT:    callx8 a45937; XTENSA-NEXT:    l16ui a2, a1, 05938; XTENSA-NEXT:    bnez a10, .LBB91_45939; XTENSA-NEXT:  .LBB91_2: # %atomicrmw.start5940; XTENSA-NEXT:    # =>This Inner Loop Header: Depth=15941; XTENSA-NEXT:    s16i a2, a1, 05942; XTENSA-NEXT:    slli a8, a2, 165943; XTENSA-NEXT:    srai a8, a8, 165944; XTENSA-NEXT:    or a12, a3, a35945; XTENSA-NEXT:    bge a5, a8, .LBB91_15946; XTENSA-NEXT:  # %bb.3: # %atomicrmw.start5947; XTENSA-NEXT:    # in Loop: Header=BB91_2 Depth=15948; XTENSA-NEXT:    or a12, a2, a25949; XTENSA-NEXT:    j .LBB91_15950; XTENSA-NEXT:  .LBB91_4: # %atomicrmw.end5951; XTENSA-NEXT:    retw5952;5953; XTENSA-ATOMIC-LABEL: atomicrmw_max_i16_acquire:5954; XTENSA-ATOMIC:       # %bb.0:5955; XTENSA-ATOMIC-NEXT:    entry a1, 325956; XTENSA-ATOMIC-NEXT:    slli a8, a2, 35957; XTENSA-ATOMIC-NEXT:    movi a9, 245958; XTENSA-ATOMIC-NEXT:    and a8, a8, a95959; XTENSA-ATOMIC-NEXT:    l32r a9, .LCPI91_05960; XTENSA-ATOMIC-NEXT:    ssl a85961; XTENSA-ATOMIC-NEXT:    sll a9, a95962; XTENSA-ATOMIC-NEXT:    movi a10, -15963; XTENSA-ATOMIC-NEXT:    xor a9, a9, a105964; XTENSA-ATOMIC-NEXT:    movi a10, -45965; XTENSA-ATOMIC-NEXT:    and a10, a2, a105966; XTENSA-ATOMIC-NEXT:    l32i a14, a10, 05967; XTENSA-ATOMIC-NEXT:    slli a11, a3, 165968; XTENSA-ATOMIC-NEXT:    srai a11, a11, 165969; XTENSA-ATOMIC-NEXT:    movi a12, 05970; XTENSA-ATOMIC-NEXT:    movi a13, 15971; XTENSA-ATOMIC-NEXT:    j .LBB91_25972; XTENSA-ATOMIC-NEXT:  .LBB91_1: # %atomicrmw.start5973; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB91_2 Depth=15974; XTENSA-ATOMIC-NEXT:    or a14, a15, a155975; XTENSA-ATOMIC-NEXT:    beqi a7, 1, .LBB91_65976; XTENSA-ATOMIC-NEXT:  .LBB91_2: # %atomicrmw.start5977; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=15978; XTENSA-ATOMIC-NEXT:    ssr a85979; XTENSA-ATOMIC-NEXT:    srl a15, a145980; XTENSA-ATOMIC-NEXT:    slli a7, a15, 165981; XTENSA-ATOMIC-NEXT:    srai a6, a7, 165982; XTENSA-ATOMIC-NEXT:    or a7, a3, a35983; XTENSA-ATOMIC-NEXT:    bge a11, a6, .LBB91_45984; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start5985; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB91_2 Depth=15986; XTENSA-ATOMIC-NEXT:    or a7, a15, a155987; XTENSA-ATOMIC-NEXT:  .LBB91_4: # %atomicrmw.start5988; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB91_2 Depth=15989; XTENSA-ATOMIC-NEXT:    l32r a15, .LCPI91_05990; XTENSA-ATOMIC-NEXT:    and a15, a7, a155991; XTENSA-ATOMIC-NEXT:    ssl a85992; XTENSA-ATOMIC-NEXT:    sll a15, a155993; XTENSA-ATOMIC-NEXT:    and a7, a14, a95994; XTENSA-ATOMIC-NEXT:    or a15, a7, a155995; XTENSA-ATOMIC-NEXT:    wsr a14, scompare15996; XTENSA-ATOMIC-NEXT:    s32c1i a15, a10, 05997; XTENSA-ATOMIC-NEXT:    or a7, a13, a135998; XTENSA-ATOMIC-NEXT:    beq a15, a14, .LBB91_15999; XTENSA-ATOMIC-NEXT:  # %bb.5: # %atomicrmw.start6000; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB91_2 Depth=16001; XTENSA-ATOMIC-NEXT:    or a7, a12, a126002; XTENSA-ATOMIC-NEXT:    j .LBB91_16003; XTENSA-ATOMIC-NEXT:  .LBB91_6: # %atomicrmw.end6004; XTENSA-ATOMIC-NEXT:    ssr a86005; XTENSA-ATOMIC-NEXT:    srl a2, a156006; XTENSA-ATOMIC-NEXT:    memw6007; XTENSA-ATOMIC-NEXT:    retw6008  %res = atomicrmw max ptr %a, i16 %b acquire6009  ret i16 %res6010}6011 6012define i16 @atomicrmw_max_i16_release(ptr %a, i16 %b) nounwind {6013; XTENSA-LABEL: atomicrmw_max_i16_release:6014; XTENSA:       # %bb.0:6015; XTENSA-NEXT:    entry a1, 486016; XTENSA-NEXT:    or a9, a2, a26017; XTENSA-NEXT:    l16ui a2, a9, 06018; XTENSA-NEXT:    s32i a3, a1, 0 # 4-byte Folded Spill6019; XTENSA-NEXT:    slli a8, a3, 166020; XTENSA-NEXT:    or a3, a9, a96021; XTENSA-NEXT:    srai a4, a8, 166022; XTENSA-NEXT:    movi a7, 36023; XTENSA-NEXT:    movi a6, 06024; XTENSA-NEXT:    l32r a5, .LCPI92_06025; XTENSA-NEXT:    j .LBB92_26026; XTENSA-NEXT:  .LBB92_1: # %atomicrmw.start6027; XTENSA-NEXT:    # in Loop: Header=BB92_2 Depth=16028; XTENSA-NEXT:    addi a11, a1, 46029; XTENSA-NEXT:    or a10, a3, a36030; XTENSA-NEXT:    or a13, a7, a76031; XTENSA-NEXT:    or a14, a6, a66032; XTENSA-NEXT:    callx8 a56033; XTENSA-NEXT:    l16ui a2, a1, 46034; XTENSA-NEXT:    bnez a10, .LBB92_46035; XTENSA-NEXT:  .LBB92_2: # %atomicrmw.start6036; XTENSA-NEXT:    # =>This Inner Loop Header: Depth=16037; XTENSA-NEXT:    s16i a2, a1, 46038; XTENSA-NEXT:    slli a8, a2, 166039; XTENSA-NEXT:    srai a8, a8, 166040; XTENSA-NEXT:    l32i a12, a1, 0 # 4-byte Folded Reload6041; XTENSA-NEXT:    bge a4, a8, .LBB92_16042; XTENSA-NEXT:  # %bb.3: # %atomicrmw.start6043; XTENSA-NEXT:    # in Loop: Header=BB92_2 Depth=16044; XTENSA-NEXT:    or a12, a2, a26045; XTENSA-NEXT:    j .LBB92_16046; XTENSA-NEXT:  .LBB92_4: # %atomicrmw.end6047; XTENSA-NEXT:    retw6048;6049; XTENSA-ATOMIC-LABEL: atomicrmw_max_i16_release:6050; XTENSA-ATOMIC:       # %bb.0:6051; XTENSA-ATOMIC-NEXT:    entry a1, 326052; XTENSA-ATOMIC-NEXT:    slli a8, a2, 36053; XTENSA-ATOMIC-NEXT:    movi a9, 246054; XTENSA-ATOMIC-NEXT:    and a8, a8, a96055; XTENSA-ATOMIC-NEXT:    l32r a9, .LCPI92_06056; XTENSA-ATOMIC-NEXT:    ssl a86057; XTENSA-ATOMIC-NEXT:    sll a9, a96058; XTENSA-ATOMIC-NEXT:    movi a10, -16059; XTENSA-ATOMIC-NEXT:    xor a9, a9, a106060; XTENSA-ATOMIC-NEXT:    movi a10, -46061; XTENSA-ATOMIC-NEXT:    and a10, a2, a106062; XTENSA-ATOMIC-NEXT:    memw6063; XTENSA-ATOMIC-NEXT:    l32i a14, a10, 06064; XTENSA-ATOMIC-NEXT:    slli a11, a3, 166065; XTENSA-ATOMIC-NEXT:    srai a11, a11, 166066; XTENSA-ATOMIC-NEXT:    movi a12, 06067; XTENSA-ATOMIC-NEXT:    movi a13, 16068; XTENSA-ATOMIC-NEXT:    j .LBB92_26069; XTENSA-ATOMIC-NEXT:  .LBB92_1: # %atomicrmw.start6070; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB92_2 Depth=16071; XTENSA-ATOMIC-NEXT:    or a14, a15, a156072; XTENSA-ATOMIC-NEXT:    beqi a7, 1, .LBB92_66073; XTENSA-ATOMIC-NEXT:  .LBB92_2: # %atomicrmw.start6074; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=16075; XTENSA-ATOMIC-NEXT:    ssr a86076; XTENSA-ATOMIC-NEXT:    srl a15, a146077; XTENSA-ATOMIC-NEXT:    slli a7, a15, 166078; XTENSA-ATOMIC-NEXT:    srai a6, a7, 166079; XTENSA-ATOMIC-NEXT:    or a7, a3, a36080; XTENSA-ATOMIC-NEXT:    bge a11, a6, .LBB92_46081; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start6082; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB92_2 Depth=16083; XTENSA-ATOMIC-NEXT:    or a7, a15, a156084; XTENSA-ATOMIC-NEXT:  .LBB92_4: # %atomicrmw.start6085; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB92_2 Depth=16086; XTENSA-ATOMIC-NEXT:    l32r a15, .LCPI92_06087; XTENSA-ATOMIC-NEXT:    and a15, a7, a156088; XTENSA-ATOMIC-NEXT:    ssl a86089; XTENSA-ATOMIC-NEXT:    sll a15, a156090; XTENSA-ATOMIC-NEXT:    and a7, a14, a96091; XTENSA-ATOMIC-NEXT:    or a15, a7, a156092; XTENSA-ATOMIC-NEXT:    wsr a14, scompare16093; XTENSA-ATOMIC-NEXT:    s32c1i a15, a10, 06094; XTENSA-ATOMIC-NEXT:    or a7, a13, a136095; XTENSA-ATOMIC-NEXT:    beq a15, a14, .LBB92_16096; XTENSA-ATOMIC-NEXT:  # %bb.5: # %atomicrmw.start6097; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB92_2 Depth=16098; XTENSA-ATOMIC-NEXT:    or a7, a12, a126099; XTENSA-ATOMIC-NEXT:    j .LBB92_16100; XTENSA-ATOMIC-NEXT:  .LBB92_6: # %atomicrmw.end6101; XTENSA-ATOMIC-NEXT:    ssr a86102; XTENSA-ATOMIC-NEXT:    srl a2, a156103; XTENSA-ATOMIC-NEXT:    retw6104  %res = atomicrmw max ptr %a, i16 %b release6105  ret i16 %res6106}6107 6108define i16 @atomicrmw_max_i16_acq_rel(ptr %a, i16 %b) nounwind {6109; XTENSA-LABEL: atomicrmw_max_i16_acq_rel:6110; XTENSA:       # %bb.0:6111; XTENSA-NEXT:    entry a1, 486112; XTENSA-NEXT:    or a9, a2, a26113; XTENSA-NEXT:    l16ui a2, a9, 06114; XTENSA-NEXT:    s32i a3, a1, 0 # 4-byte Folded Spill6115; XTENSA-NEXT:    slli a8, a3, 166116; XTENSA-NEXT:    or a3, a9, a96117; XTENSA-NEXT:    srai a4, a8, 166118; XTENSA-NEXT:    movi a7, 46119; XTENSA-NEXT:    movi a6, 26120; XTENSA-NEXT:    l32r a5, .LCPI93_06121; XTENSA-NEXT:    j .LBB93_26122; XTENSA-NEXT:  .LBB93_1: # %atomicrmw.start6123; XTENSA-NEXT:    # in Loop: Header=BB93_2 Depth=16124; XTENSA-NEXT:    addi a11, a1, 46125; XTENSA-NEXT:    or a10, a3, a36126; XTENSA-NEXT:    or a13, a7, a76127; XTENSA-NEXT:    or a14, a6, a66128; XTENSA-NEXT:    callx8 a56129; XTENSA-NEXT:    l16ui a2, a1, 46130; XTENSA-NEXT:    bnez a10, .LBB93_46131; XTENSA-NEXT:  .LBB93_2: # %atomicrmw.start6132; XTENSA-NEXT:    # =>This Inner Loop Header: Depth=16133; XTENSA-NEXT:    s16i a2, a1, 46134; XTENSA-NEXT:    slli a8, a2, 166135; XTENSA-NEXT:    srai a8, a8, 166136; XTENSA-NEXT:    l32i a12, a1, 0 # 4-byte Folded Reload6137; XTENSA-NEXT:    bge a4, a8, .LBB93_16138; XTENSA-NEXT:  # %bb.3: # %atomicrmw.start6139; XTENSA-NEXT:    # in Loop: Header=BB93_2 Depth=16140; XTENSA-NEXT:    or a12, a2, a26141; XTENSA-NEXT:    j .LBB93_16142; XTENSA-NEXT:  .LBB93_4: # %atomicrmw.end6143; XTENSA-NEXT:    retw6144;6145; XTENSA-ATOMIC-LABEL: atomicrmw_max_i16_acq_rel:6146; XTENSA-ATOMIC:       # %bb.0:6147; XTENSA-ATOMIC-NEXT:    entry a1, 326148; XTENSA-ATOMIC-NEXT:    slli a8, a2, 36149; XTENSA-ATOMIC-NEXT:    movi a9, 246150; XTENSA-ATOMIC-NEXT:    and a8, a8, a96151; XTENSA-ATOMIC-NEXT:    l32r a9, .LCPI93_06152; XTENSA-ATOMIC-NEXT:    ssl a86153; XTENSA-ATOMIC-NEXT:    sll a9, a96154; XTENSA-ATOMIC-NEXT:    movi a10, -16155; XTENSA-ATOMIC-NEXT:    xor a9, a9, a106156; XTENSA-ATOMIC-NEXT:    movi a10, -46157; XTENSA-ATOMIC-NEXT:    and a10, a2, a106158; XTENSA-ATOMIC-NEXT:    memw6159; XTENSA-ATOMIC-NEXT:    l32i a14, a10, 06160; XTENSA-ATOMIC-NEXT:    slli a11, a3, 166161; XTENSA-ATOMIC-NEXT:    srai a11, a11, 166162; XTENSA-ATOMIC-NEXT:    movi a12, 06163; XTENSA-ATOMIC-NEXT:    movi a13, 16164; XTENSA-ATOMIC-NEXT:    j .LBB93_26165; XTENSA-ATOMIC-NEXT:  .LBB93_1: # %atomicrmw.start6166; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB93_2 Depth=16167; XTENSA-ATOMIC-NEXT:    or a14, a15, a156168; XTENSA-ATOMIC-NEXT:    beqi a7, 1, .LBB93_66169; XTENSA-ATOMIC-NEXT:  .LBB93_2: # %atomicrmw.start6170; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=16171; XTENSA-ATOMIC-NEXT:    ssr a86172; XTENSA-ATOMIC-NEXT:    srl a15, a146173; XTENSA-ATOMIC-NEXT:    slli a7, a15, 166174; XTENSA-ATOMIC-NEXT:    srai a6, a7, 166175; XTENSA-ATOMIC-NEXT:    or a7, a3, a36176; XTENSA-ATOMIC-NEXT:    bge a11, a6, .LBB93_46177; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start6178; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB93_2 Depth=16179; XTENSA-ATOMIC-NEXT:    or a7, a15, a156180; XTENSA-ATOMIC-NEXT:  .LBB93_4: # %atomicrmw.start6181; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB93_2 Depth=16182; XTENSA-ATOMIC-NEXT:    l32r a15, .LCPI93_06183; XTENSA-ATOMIC-NEXT:    and a15, a7, a156184; XTENSA-ATOMIC-NEXT:    ssl a86185; XTENSA-ATOMIC-NEXT:    sll a15, a156186; XTENSA-ATOMIC-NEXT:    and a7, a14, a96187; XTENSA-ATOMIC-NEXT:    or a15, a7, a156188; XTENSA-ATOMIC-NEXT:    wsr a14, scompare16189; XTENSA-ATOMIC-NEXT:    s32c1i a15, a10, 06190; XTENSA-ATOMIC-NEXT:    or a7, a13, a136191; XTENSA-ATOMIC-NEXT:    beq a15, a14, .LBB93_16192; XTENSA-ATOMIC-NEXT:  # %bb.5: # %atomicrmw.start6193; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB93_2 Depth=16194; XTENSA-ATOMIC-NEXT:    or a7, a12, a126195; XTENSA-ATOMIC-NEXT:    j .LBB93_16196; XTENSA-ATOMIC-NEXT:  .LBB93_6: # %atomicrmw.end6197; XTENSA-ATOMIC-NEXT:    ssr a86198; XTENSA-ATOMIC-NEXT:    srl a2, a156199; XTENSA-ATOMIC-NEXT:    memw6200; XTENSA-ATOMIC-NEXT:    retw6201  %res = atomicrmw max ptr %a, i16 %b acq_rel6202  ret i16 %res6203}6204 6205define i16 @atomicrmw_max_i16_seq_cst(ptr %a, i16 %b) nounwind {6206; XTENSA-LABEL: atomicrmw_max_i16_seq_cst:6207; XTENSA:       # %bb.0:6208; XTENSA-NEXT:    entry a1, 486209; XTENSA-NEXT:    or a6, a2, a26210; XTENSA-NEXT:    l16ui a2, a6, 06211; XTENSA-NEXT:    slli a8, a3, 166212; XTENSA-NEXT:    srai a5, a8, 166213; XTENSA-NEXT:    movi a7, 56214; XTENSA-NEXT:    l32r a4, .LCPI94_06215; XTENSA-NEXT:    j .LBB94_26216; XTENSA-NEXT:  .LBB94_1: # %atomicrmw.start6217; XTENSA-NEXT:    # in Loop: Header=BB94_2 Depth=16218; XTENSA-NEXT:    addi a11, a1, 06219; XTENSA-NEXT:    or a10, a6, a66220; XTENSA-NEXT:    or a13, a7, a76221; XTENSA-NEXT:    or a14, a7, a76222; XTENSA-NEXT:    callx8 a46223; XTENSA-NEXT:    l16ui a2, a1, 06224; XTENSA-NEXT:    bnez a10, .LBB94_46225; XTENSA-NEXT:  .LBB94_2: # %atomicrmw.start6226; XTENSA-NEXT:    # =>This Inner Loop Header: Depth=16227; XTENSA-NEXT:    s16i a2, a1, 06228; XTENSA-NEXT:    slli a8, a2, 166229; XTENSA-NEXT:    srai a8, a8, 166230; XTENSA-NEXT:    or a12, a3, a36231; XTENSA-NEXT:    bge a5, a8, .LBB94_16232; XTENSA-NEXT:  # %bb.3: # %atomicrmw.start6233; XTENSA-NEXT:    # in Loop: Header=BB94_2 Depth=16234; XTENSA-NEXT:    or a12, a2, a26235; XTENSA-NEXT:    j .LBB94_16236; XTENSA-NEXT:  .LBB94_4: # %atomicrmw.end6237; XTENSA-NEXT:    retw6238;6239; XTENSA-ATOMIC-LABEL: atomicrmw_max_i16_seq_cst:6240; XTENSA-ATOMIC:       # %bb.0:6241; XTENSA-ATOMIC-NEXT:    entry a1, 326242; XTENSA-ATOMIC-NEXT:    slli a8, a2, 36243; XTENSA-ATOMIC-NEXT:    movi a9, 246244; XTENSA-ATOMIC-NEXT:    and a8, a8, a96245; XTENSA-ATOMIC-NEXT:    l32r a9, .LCPI94_06246; XTENSA-ATOMIC-NEXT:    ssl a86247; XTENSA-ATOMIC-NEXT:    sll a9, a96248; XTENSA-ATOMIC-NEXT:    movi a10, -16249; XTENSA-ATOMIC-NEXT:    xor a9, a9, a106250; XTENSA-ATOMIC-NEXT:    movi a10, -46251; XTENSA-ATOMIC-NEXT:    and a10, a2, a106252; XTENSA-ATOMIC-NEXT:    memw6253; XTENSA-ATOMIC-NEXT:    l32i a14, a10, 06254; XTENSA-ATOMIC-NEXT:    slli a11, a3, 166255; XTENSA-ATOMIC-NEXT:    srai a11, a11, 166256; XTENSA-ATOMIC-NEXT:    movi a12, 06257; XTENSA-ATOMIC-NEXT:    movi a13, 16258; XTENSA-ATOMIC-NEXT:    j .LBB94_26259; XTENSA-ATOMIC-NEXT:  .LBB94_1: # %atomicrmw.start6260; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB94_2 Depth=16261; XTENSA-ATOMIC-NEXT:    or a14, a15, a156262; XTENSA-ATOMIC-NEXT:    beqi a7, 1, .LBB94_66263; XTENSA-ATOMIC-NEXT:  .LBB94_2: # %atomicrmw.start6264; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=16265; XTENSA-ATOMIC-NEXT:    ssr a86266; XTENSA-ATOMIC-NEXT:    srl a15, a146267; XTENSA-ATOMIC-NEXT:    slli a7, a15, 166268; XTENSA-ATOMIC-NEXT:    srai a6, a7, 166269; XTENSA-ATOMIC-NEXT:    or a7, a3, a36270; XTENSA-ATOMIC-NEXT:    bge a11, a6, .LBB94_46271; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start6272; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB94_2 Depth=16273; XTENSA-ATOMIC-NEXT:    or a7, a15, a156274; XTENSA-ATOMIC-NEXT:  .LBB94_4: # %atomicrmw.start6275; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB94_2 Depth=16276; XTENSA-ATOMIC-NEXT:    l32r a15, .LCPI94_06277; XTENSA-ATOMIC-NEXT:    and a15, a7, a156278; XTENSA-ATOMIC-NEXT:    ssl a86279; XTENSA-ATOMIC-NEXT:    sll a15, a156280; XTENSA-ATOMIC-NEXT:    and a7, a14, a96281; XTENSA-ATOMIC-NEXT:    or a15, a7, a156282; XTENSA-ATOMIC-NEXT:    wsr a14, scompare16283; XTENSA-ATOMIC-NEXT:    s32c1i a15, a10, 06284; XTENSA-ATOMIC-NEXT:    or a7, a13, a136285; XTENSA-ATOMIC-NEXT:    beq a15, a14, .LBB94_16286; XTENSA-ATOMIC-NEXT:  # %bb.5: # %atomicrmw.start6287; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB94_2 Depth=16288; XTENSA-ATOMIC-NEXT:    or a7, a12, a126289; XTENSA-ATOMIC-NEXT:    j .LBB94_16290; XTENSA-ATOMIC-NEXT:  .LBB94_6: # %atomicrmw.end6291; XTENSA-ATOMIC-NEXT:    ssr a86292; XTENSA-ATOMIC-NEXT:    srl a2, a156293; XTENSA-ATOMIC-NEXT:    memw6294; XTENSA-ATOMIC-NEXT:    retw6295  %res = atomicrmw max ptr %a, i16 %b seq_cst6296  ret i16 %res6297}6298 6299define i16 @atomicrmw_min_i16_monotonic(ptr %a, i16 %b) nounwind {6300; XTENSA-LABEL: atomicrmw_min_i16_monotonic:6301; XTENSA:       # %bb.0:6302; XTENSA-NEXT:    entry a1, 486303; XTENSA-NEXT:    or a6, a2, a26304; XTENSA-NEXT:    l16ui a2, a6, 06305; XTENSA-NEXT:    slli a8, a3, 166306; XTENSA-NEXT:    srai a5, a8, 166307; XTENSA-NEXT:    movi a7, 06308; XTENSA-NEXT:    l32r a4, .LCPI95_06309; XTENSA-NEXT:    j .LBB95_26310; XTENSA-NEXT:  .LBB95_1: # %atomicrmw.start6311; XTENSA-NEXT:    # in Loop: Header=BB95_2 Depth=16312; XTENSA-NEXT:    addi a11, a1, 06313; XTENSA-NEXT:    or a10, a6, a66314; XTENSA-NEXT:    or a13, a7, a76315; XTENSA-NEXT:    or a14, a7, a76316; XTENSA-NEXT:    callx8 a46317; XTENSA-NEXT:    l16ui a2, a1, 06318; XTENSA-NEXT:    bnez a10, .LBB95_46319; XTENSA-NEXT:  .LBB95_2: # %atomicrmw.start6320; XTENSA-NEXT:    # =>This Inner Loop Header: Depth=16321; XTENSA-NEXT:    s16i a2, a1, 06322; XTENSA-NEXT:    slli a8, a2, 166323; XTENSA-NEXT:    srai a8, a8, 166324; XTENSA-NEXT:    or a12, a3, a36325; XTENSA-NEXT:    blt a5, a8, .LBB95_16326; XTENSA-NEXT:  # %bb.3: # %atomicrmw.start6327; XTENSA-NEXT:    # in Loop: Header=BB95_2 Depth=16328; XTENSA-NEXT:    or a12, a2, a26329; XTENSA-NEXT:    j .LBB95_16330; XTENSA-NEXT:  .LBB95_4: # %atomicrmw.end6331; XTENSA-NEXT:    retw6332;6333; XTENSA-ATOMIC-LABEL: atomicrmw_min_i16_monotonic:6334; XTENSA-ATOMIC:       # %bb.0:6335; XTENSA-ATOMIC-NEXT:    entry a1, 326336; XTENSA-ATOMIC-NEXT:    slli a8, a2, 36337; XTENSA-ATOMIC-NEXT:    movi a9, 246338; XTENSA-ATOMIC-NEXT:    and a8, a8, a96339; XTENSA-ATOMIC-NEXT:    l32r a9, .LCPI95_06340; XTENSA-ATOMIC-NEXT:    ssl a86341; XTENSA-ATOMIC-NEXT:    sll a9, a96342; XTENSA-ATOMIC-NEXT:    movi a10, -16343; XTENSA-ATOMIC-NEXT:    xor a9, a9, a106344; XTENSA-ATOMIC-NEXT:    movi a10, -46345; XTENSA-ATOMIC-NEXT:    and a10, a2, a106346; XTENSA-ATOMIC-NEXT:    l32i a14, a10, 06347; XTENSA-ATOMIC-NEXT:    slli a11, a3, 166348; XTENSA-ATOMIC-NEXT:    srai a11, a11, 166349; XTENSA-ATOMIC-NEXT:    movi a12, 06350; XTENSA-ATOMIC-NEXT:    movi a13, 16351; XTENSA-ATOMIC-NEXT:    j .LBB95_26352; XTENSA-ATOMIC-NEXT:  .LBB95_1: # %atomicrmw.start6353; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB95_2 Depth=16354; XTENSA-ATOMIC-NEXT:    or a14, a15, a156355; XTENSA-ATOMIC-NEXT:    beqi a7, 1, .LBB95_66356; XTENSA-ATOMIC-NEXT:  .LBB95_2: # %atomicrmw.start6357; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=16358; XTENSA-ATOMIC-NEXT:    ssr a86359; XTENSA-ATOMIC-NEXT:    srl a15, a146360; XTENSA-ATOMIC-NEXT:    slli a7, a15, 166361; XTENSA-ATOMIC-NEXT:    srai a6, a7, 166362; XTENSA-ATOMIC-NEXT:    or a7, a3, a36363; XTENSA-ATOMIC-NEXT:    blt a11, a6, .LBB95_46364; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start6365; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB95_2 Depth=16366; XTENSA-ATOMIC-NEXT:    or a7, a15, a156367; XTENSA-ATOMIC-NEXT:  .LBB95_4: # %atomicrmw.start6368; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB95_2 Depth=16369; XTENSA-ATOMIC-NEXT:    l32r a15, .LCPI95_06370; XTENSA-ATOMIC-NEXT:    and a15, a7, a156371; XTENSA-ATOMIC-NEXT:    ssl a86372; XTENSA-ATOMIC-NEXT:    sll a15, a156373; XTENSA-ATOMIC-NEXT:    and a7, a14, a96374; XTENSA-ATOMIC-NEXT:    or a15, a7, a156375; XTENSA-ATOMIC-NEXT:    wsr a14, scompare16376; XTENSA-ATOMIC-NEXT:    s32c1i a15, a10, 06377; XTENSA-ATOMIC-NEXT:    or a7, a13, a136378; XTENSA-ATOMIC-NEXT:    beq a15, a14, .LBB95_16379; XTENSA-ATOMIC-NEXT:  # %bb.5: # %atomicrmw.start6380; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB95_2 Depth=16381; XTENSA-ATOMIC-NEXT:    or a7, a12, a126382; XTENSA-ATOMIC-NEXT:    j .LBB95_16383; XTENSA-ATOMIC-NEXT:  .LBB95_6: # %atomicrmw.end6384; XTENSA-ATOMIC-NEXT:    ssr a86385; XTENSA-ATOMIC-NEXT:    srl a2, a156386; XTENSA-ATOMIC-NEXT:    retw6387  %res = atomicrmw min ptr %a, i16 %b monotonic6388  ret i16 %res6389}6390 6391define i16 @atomicrmw_min_i16_acquire(ptr %a, i16 %b) nounwind {6392; XTENSA-LABEL: atomicrmw_min_i16_acquire:6393; XTENSA:       # %bb.0:6394; XTENSA-NEXT:    entry a1, 486395; XTENSA-NEXT:    or a6, a2, a26396; XTENSA-NEXT:    l16ui a2, a6, 06397; XTENSA-NEXT:    slli a8, a3, 166398; XTENSA-NEXT:    srai a5, a8, 166399; XTENSA-NEXT:    movi a7, 26400; XTENSA-NEXT:    l32r a4, .LCPI96_06401; XTENSA-NEXT:    j .LBB96_26402; XTENSA-NEXT:  .LBB96_1: # %atomicrmw.start6403; XTENSA-NEXT:    # in Loop: Header=BB96_2 Depth=16404; XTENSA-NEXT:    addi a11, a1, 06405; XTENSA-NEXT:    or a10, a6, a66406; XTENSA-NEXT:    or a13, a7, a76407; XTENSA-NEXT:    or a14, a7, a76408; XTENSA-NEXT:    callx8 a46409; XTENSA-NEXT:    l16ui a2, a1, 06410; XTENSA-NEXT:    bnez a10, .LBB96_46411; XTENSA-NEXT:  .LBB96_2: # %atomicrmw.start6412; XTENSA-NEXT:    # =>This Inner Loop Header: Depth=16413; XTENSA-NEXT:    s16i a2, a1, 06414; XTENSA-NEXT:    slli a8, a2, 166415; XTENSA-NEXT:    srai a8, a8, 166416; XTENSA-NEXT:    or a12, a3, a36417; XTENSA-NEXT:    blt a5, a8, .LBB96_16418; XTENSA-NEXT:  # %bb.3: # %atomicrmw.start6419; XTENSA-NEXT:    # in Loop: Header=BB96_2 Depth=16420; XTENSA-NEXT:    or a12, a2, a26421; XTENSA-NEXT:    j .LBB96_16422; XTENSA-NEXT:  .LBB96_4: # %atomicrmw.end6423; XTENSA-NEXT:    retw6424;6425; XTENSA-ATOMIC-LABEL: atomicrmw_min_i16_acquire:6426; XTENSA-ATOMIC:       # %bb.0:6427; XTENSA-ATOMIC-NEXT:    entry a1, 326428; XTENSA-ATOMIC-NEXT:    slli a8, a2, 36429; XTENSA-ATOMIC-NEXT:    movi a9, 246430; XTENSA-ATOMIC-NEXT:    and a8, a8, a96431; XTENSA-ATOMIC-NEXT:    l32r a9, .LCPI96_06432; XTENSA-ATOMIC-NEXT:    ssl a86433; XTENSA-ATOMIC-NEXT:    sll a9, a96434; XTENSA-ATOMIC-NEXT:    movi a10, -16435; XTENSA-ATOMIC-NEXT:    xor a9, a9, a106436; XTENSA-ATOMIC-NEXT:    movi a10, -46437; XTENSA-ATOMIC-NEXT:    and a10, a2, a106438; XTENSA-ATOMIC-NEXT:    l32i a14, a10, 06439; XTENSA-ATOMIC-NEXT:    slli a11, a3, 166440; XTENSA-ATOMIC-NEXT:    srai a11, a11, 166441; XTENSA-ATOMIC-NEXT:    movi a12, 06442; XTENSA-ATOMIC-NEXT:    movi a13, 16443; XTENSA-ATOMIC-NEXT:    j .LBB96_26444; XTENSA-ATOMIC-NEXT:  .LBB96_1: # %atomicrmw.start6445; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB96_2 Depth=16446; XTENSA-ATOMIC-NEXT:    or a14, a15, a156447; XTENSA-ATOMIC-NEXT:    beqi a7, 1, .LBB96_66448; XTENSA-ATOMIC-NEXT:  .LBB96_2: # %atomicrmw.start6449; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=16450; XTENSA-ATOMIC-NEXT:    ssr a86451; XTENSA-ATOMIC-NEXT:    srl a15, a146452; XTENSA-ATOMIC-NEXT:    slli a7, a15, 166453; XTENSA-ATOMIC-NEXT:    srai a6, a7, 166454; XTENSA-ATOMIC-NEXT:    or a7, a3, a36455; XTENSA-ATOMIC-NEXT:    blt a11, a6, .LBB96_46456; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start6457; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB96_2 Depth=16458; XTENSA-ATOMIC-NEXT:    or a7, a15, a156459; XTENSA-ATOMIC-NEXT:  .LBB96_4: # %atomicrmw.start6460; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB96_2 Depth=16461; XTENSA-ATOMIC-NEXT:    l32r a15, .LCPI96_06462; XTENSA-ATOMIC-NEXT:    and a15, a7, a156463; XTENSA-ATOMIC-NEXT:    ssl a86464; XTENSA-ATOMIC-NEXT:    sll a15, a156465; XTENSA-ATOMIC-NEXT:    and a7, a14, a96466; XTENSA-ATOMIC-NEXT:    or a15, a7, a156467; XTENSA-ATOMIC-NEXT:    wsr a14, scompare16468; XTENSA-ATOMIC-NEXT:    s32c1i a15, a10, 06469; XTENSA-ATOMIC-NEXT:    or a7, a13, a136470; XTENSA-ATOMIC-NEXT:    beq a15, a14, .LBB96_16471; XTENSA-ATOMIC-NEXT:  # %bb.5: # %atomicrmw.start6472; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB96_2 Depth=16473; XTENSA-ATOMIC-NEXT:    or a7, a12, a126474; XTENSA-ATOMIC-NEXT:    j .LBB96_16475; XTENSA-ATOMIC-NEXT:  .LBB96_6: # %atomicrmw.end6476; XTENSA-ATOMIC-NEXT:    ssr a86477; XTENSA-ATOMIC-NEXT:    srl a2, a156478; XTENSA-ATOMIC-NEXT:    memw6479; XTENSA-ATOMIC-NEXT:    retw6480  %res = atomicrmw min ptr %a, i16 %b acquire6481  ret i16 %res6482}6483 6484define i16 @atomicrmw_min_i16_release(ptr %a, i16 %b) nounwind {6485; XTENSA-LABEL: atomicrmw_min_i16_release:6486; XTENSA:       # %bb.0:6487; XTENSA-NEXT:    entry a1, 486488; XTENSA-NEXT:    or a9, a2, a26489; XTENSA-NEXT:    l16ui a2, a9, 06490; XTENSA-NEXT:    s32i a3, a1, 0 # 4-byte Folded Spill6491; XTENSA-NEXT:    slli a8, a3, 166492; XTENSA-NEXT:    or a3, a9, a96493; XTENSA-NEXT:    srai a4, a8, 166494; XTENSA-NEXT:    movi a7, 36495; XTENSA-NEXT:    movi a6, 06496; XTENSA-NEXT:    l32r a5, .LCPI97_06497; XTENSA-NEXT:    j .LBB97_26498; XTENSA-NEXT:  .LBB97_1: # %atomicrmw.start6499; XTENSA-NEXT:    # in Loop: Header=BB97_2 Depth=16500; XTENSA-NEXT:    addi a11, a1, 46501; XTENSA-NEXT:    or a10, a3, a36502; XTENSA-NEXT:    or a13, a7, a76503; XTENSA-NEXT:    or a14, a6, a66504; XTENSA-NEXT:    callx8 a56505; XTENSA-NEXT:    l16ui a2, a1, 46506; XTENSA-NEXT:    bnez a10, .LBB97_46507; XTENSA-NEXT:  .LBB97_2: # %atomicrmw.start6508; XTENSA-NEXT:    # =>This Inner Loop Header: Depth=16509; XTENSA-NEXT:    s16i a2, a1, 46510; XTENSA-NEXT:    slli a8, a2, 166511; XTENSA-NEXT:    srai a8, a8, 166512; XTENSA-NEXT:    l32i a12, a1, 0 # 4-byte Folded Reload6513; XTENSA-NEXT:    blt a4, a8, .LBB97_16514; XTENSA-NEXT:  # %bb.3: # %atomicrmw.start6515; XTENSA-NEXT:    # in Loop: Header=BB97_2 Depth=16516; XTENSA-NEXT:    or a12, a2, a26517; XTENSA-NEXT:    j .LBB97_16518; XTENSA-NEXT:  .LBB97_4: # %atomicrmw.end6519; XTENSA-NEXT:    retw6520;6521; XTENSA-ATOMIC-LABEL: atomicrmw_min_i16_release:6522; XTENSA-ATOMIC:       # %bb.0:6523; XTENSA-ATOMIC-NEXT:    entry a1, 326524; XTENSA-ATOMIC-NEXT:    slli a8, a2, 36525; XTENSA-ATOMIC-NEXT:    movi a9, 246526; XTENSA-ATOMIC-NEXT:    and a8, a8, a96527; XTENSA-ATOMIC-NEXT:    l32r a9, .LCPI97_06528; XTENSA-ATOMIC-NEXT:    ssl a86529; XTENSA-ATOMIC-NEXT:    sll a9, a96530; XTENSA-ATOMIC-NEXT:    movi a10, -16531; XTENSA-ATOMIC-NEXT:    xor a9, a9, a106532; XTENSA-ATOMIC-NEXT:    movi a10, -46533; XTENSA-ATOMIC-NEXT:    and a10, a2, a106534; XTENSA-ATOMIC-NEXT:    memw6535; XTENSA-ATOMIC-NEXT:    l32i a14, a10, 06536; XTENSA-ATOMIC-NEXT:    slli a11, a3, 166537; XTENSA-ATOMIC-NEXT:    srai a11, a11, 166538; XTENSA-ATOMIC-NEXT:    movi a12, 06539; XTENSA-ATOMIC-NEXT:    movi a13, 16540; XTENSA-ATOMIC-NEXT:    j .LBB97_26541; XTENSA-ATOMIC-NEXT:  .LBB97_1: # %atomicrmw.start6542; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB97_2 Depth=16543; XTENSA-ATOMIC-NEXT:    or a14, a15, a156544; XTENSA-ATOMIC-NEXT:    beqi a7, 1, .LBB97_66545; XTENSA-ATOMIC-NEXT:  .LBB97_2: # %atomicrmw.start6546; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=16547; XTENSA-ATOMIC-NEXT:    ssr a86548; XTENSA-ATOMIC-NEXT:    srl a15, a146549; XTENSA-ATOMIC-NEXT:    slli a7, a15, 166550; XTENSA-ATOMIC-NEXT:    srai a6, a7, 166551; XTENSA-ATOMIC-NEXT:    or a7, a3, a36552; XTENSA-ATOMIC-NEXT:    blt a11, a6, .LBB97_46553; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start6554; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB97_2 Depth=16555; XTENSA-ATOMIC-NEXT:    or a7, a15, a156556; XTENSA-ATOMIC-NEXT:  .LBB97_4: # %atomicrmw.start6557; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB97_2 Depth=16558; XTENSA-ATOMIC-NEXT:    l32r a15, .LCPI97_06559; XTENSA-ATOMIC-NEXT:    and a15, a7, a156560; XTENSA-ATOMIC-NEXT:    ssl a86561; XTENSA-ATOMIC-NEXT:    sll a15, a156562; XTENSA-ATOMIC-NEXT:    and a7, a14, a96563; XTENSA-ATOMIC-NEXT:    or a15, a7, a156564; XTENSA-ATOMIC-NEXT:    wsr a14, scompare16565; XTENSA-ATOMIC-NEXT:    s32c1i a15, a10, 06566; XTENSA-ATOMIC-NEXT:    or a7, a13, a136567; XTENSA-ATOMIC-NEXT:    beq a15, a14, .LBB97_16568; XTENSA-ATOMIC-NEXT:  # %bb.5: # %atomicrmw.start6569; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB97_2 Depth=16570; XTENSA-ATOMIC-NEXT:    or a7, a12, a126571; XTENSA-ATOMIC-NEXT:    j .LBB97_16572; XTENSA-ATOMIC-NEXT:  .LBB97_6: # %atomicrmw.end6573; XTENSA-ATOMIC-NEXT:    ssr a86574; XTENSA-ATOMIC-NEXT:    srl a2, a156575; XTENSA-ATOMIC-NEXT:    retw6576  %res = atomicrmw min ptr %a, i16 %b release6577  ret i16 %res6578}6579 6580define i16 @atomicrmw_min_i16_acq_rel(ptr %a, i16 %b) nounwind {6581; XTENSA-LABEL: atomicrmw_min_i16_acq_rel:6582; XTENSA:       # %bb.0:6583; XTENSA-NEXT:    entry a1, 486584; XTENSA-NEXT:    or a9, a2, a26585; XTENSA-NEXT:    l16ui a2, a9, 06586; XTENSA-NEXT:    s32i a3, a1, 0 # 4-byte Folded Spill6587; XTENSA-NEXT:    slli a8, a3, 166588; XTENSA-NEXT:    or a3, a9, a96589; XTENSA-NEXT:    srai a4, a8, 166590; XTENSA-NEXT:    movi a7, 46591; XTENSA-NEXT:    movi a6, 26592; XTENSA-NEXT:    l32r a5, .LCPI98_06593; XTENSA-NEXT:    j .LBB98_26594; XTENSA-NEXT:  .LBB98_1: # %atomicrmw.start6595; XTENSA-NEXT:    # in Loop: Header=BB98_2 Depth=16596; XTENSA-NEXT:    addi a11, a1, 46597; XTENSA-NEXT:    or a10, a3, a36598; XTENSA-NEXT:    or a13, a7, a76599; XTENSA-NEXT:    or a14, a6, a66600; XTENSA-NEXT:    callx8 a56601; XTENSA-NEXT:    l16ui a2, a1, 46602; XTENSA-NEXT:    bnez a10, .LBB98_46603; XTENSA-NEXT:  .LBB98_2: # %atomicrmw.start6604; XTENSA-NEXT:    # =>This Inner Loop Header: Depth=16605; XTENSA-NEXT:    s16i a2, a1, 46606; XTENSA-NEXT:    slli a8, a2, 166607; XTENSA-NEXT:    srai a8, a8, 166608; XTENSA-NEXT:    l32i a12, a1, 0 # 4-byte Folded Reload6609; XTENSA-NEXT:    blt a4, a8, .LBB98_16610; XTENSA-NEXT:  # %bb.3: # %atomicrmw.start6611; XTENSA-NEXT:    # in Loop: Header=BB98_2 Depth=16612; XTENSA-NEXT:    or a12, a2, a26613; XTENSA-NEXT:    j .LBB98_16614; XTENSA-NEXT:  .LBB98_4: # %atomicrmw.end6615; XTENSA-NEXT:    retw6616;6617; XTENSA-ATOMIC-LABEL: atomicrmw_min_i16_acq_rel:6618; XTENSA-ATOMIC:       # %bb.0:6619; XTENSA-ATOMIC-NEXT:    entry a1, 326620; XTENSA-ATOMIC-NEXT:    slli a8, a2, 36621; XTENSA-ATOMIC-NEXT:    movi a9, 246622; XTENSA-ATOMIC-NEXT:    and a8, a8, a96623; XTENSA-ATOMIC-NEXT:    l32r a9, .LCPI98_06624; XTENSA-ATOMIC-NEXT:    ssl a86625; XTENSA-ATOMIC-NEXT:    sll a9, a96626; XTENSA-ATOMIC-NEXT:    movi a10, -16627; XTENSA-ATOMIC-NEXT:    xor a9, a9, a106628; XTENSA-ATOMIC-NEXT:    movi a10, -46629; XTENSA-ATOMIC-NEXT:    and a10, a2, a106630; XTENSA-ATOMIC-NEXT:    memw6631; XTENSA-ATOMIC-NEXT:    l32i a14, a10, 06632; XTENSA-ATOMIC-NEXT:    slli a11, a3, 166633; XTENSA-ATOMIC-NEXT:    srai a11, a11, 166634; XTENSA-ATOMIC-NEXT:    movi a12, 06635; XTENSA-ATOMIC-NEXT:    movi a13, 16636; XTENSA-ATOMIC-NEXT:    j .LBB98_26637; XTENSA-ATOMIC-NEXT:  .LBB98_1: # %atomicrmw.start6638; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB98_2 Depth=16639; XTENSA-ATOMIC-NEXT:    or a14, a15, a156640; XTENSA-ATOMIC-NEXT:    beqi a7, 1, .LBB98_66641; XTENSA-ATOMIC-NEXT:  .LBB98_2: # %atomicrmw.start6642; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=16643; XTENSA-ATOMIC-NEXT:    ssr a86644; XTENSA-ATOMIC-NEXT:    srl a15, a146645; XTENSA-ATOMIC-NEXT:    slli a7, a15, 166646; XTENSA-ATOMIC-NEXT:    srai a6, a7, 166647; XTENSA-ATOMIC-NEXT:    or a7, a3, a36648; XTENSA-ATOMIC-NEXT:    blt a11, a6, .LBB98_46649; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start6650; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB98_2 Depth=16651; XTENSA-ATOMIC-NEXT:    or a7, a15, a156652; XTENSA-ATOMIC-NEXT:  .LBB98_4: # %atomicrmw.start6653; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB98_2 Depth=16654; XTENSA-ATOMIC-NEXT:    l32r a15, .LCPI98_06655; XTENSA-ATOMIC-NEXT:    and a15, a7, a156656; XTENSA-ATOMIC-NEXT:    ssl a86657; XTENSA-ATOMIC-NEXT:    sll a15, a156658; XTENSA-ATOMIC-NEXT:    and a7, a14, a96659; XTENSA-ATOMIC-NEXT:    or a15, a7, a156660; XTENSA-ATOMIC-NEXT:    wsr a14, scompare16661; XTENSA-ATOMIC-NEXT:    s32c1i a15, a10, 06662; XTENSA-ATOMIC-NEXT:    or a7, a13, a136663; XTENSA-ATOMIC-NEXT:    beq a15, a14, .LBB98_16664; XTENSA-ATOMIC-NEXT:  # %bb.5: # %atomicrmw.start6665; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB98_2 Depth=16666; XTENSA-ATOMIC-NEXT:    or a7, a12, a126667; XTENSA-ATOMIC-NEXT:    j .LBB98_16668; XTENSA-ATOMIC-NEXT:  .LBB98_6: # %atomicrmw.end6669; XTENSA-ATOMIC-NEXT:    ssr a86670; XTENSA-ATOMIC-NEXT:    srl a2, a156671; XTENSA-ATOMIC-NEXT:    memw6672; XTENSA-ATOMIC-NEXT:    retw6673  %res = atomicrmw min ptr %a, i16 %b acq_rel6674  ret i16 %res6675}6676 6677define i16 @atomicrmw_min_i16_seq_cst(ptr %a, i16 %b) nounwind {6678; XTENSA-LABEL: atomicrmw_min_i16_seq_cst:6679; XTENSA:       # %bb.0:6680; XTENSA-NEXT:    entry a1, 486681; XTENSA-NEXT:    or a6, a2, a26682; XTENSA-NEXT:    l16ui a2, a6, 06683; XTENSA-NEXT:    slli a8, a3, 166684; XTENSA-NEXT:    srai a5, a8, 166685; XTENSA-NEXT:    movi a7, 56686; XTENSA-NEXT:    l32r a4, .LCPI99_06687; XTENSA-NEXT:    j .LBB99_26688; XTENSA-NEXT:  .LBB99_1: # %atomicrmw.start6689; XTENSA-NEXT:    # in Loop: Header=BB99_2 Depth=16690; XTENSA-NEXT:    addi a11, a1, 06691; XTENSA-NEXT:    or a10, a6, a66692; XTENSA-NEXT:    or a13, a7, a76693; XTENSA-NEXT:    or a14, a7, a76694; XTENSA-NEXT:    callx8 a46695; XTENSA-NEXT:    l16ui a2, a1, 06696; XTENSA-NEXT:    bnez a10, .LBB99_46697; XTENSA-NEXT:  .LBB99_2: # %atomicrmw.start6698; XTENSA-NEXT:    # =>This Inner Loop Header: Depth=16699; XTENSA-NEXT:    s16i a2, a1, 06700; XTENSA-NEXT:    slli a8, a2, 166701; XTENSA-NEXT:    srai a8, a8, 166702; XTENSA-NEXT:    or a12, a3, a36703; XTENSA-NEXT:    blt a5, a8, .LBB99_16704; XTENSA-NEXT:  # %bb.3: # %atomicrmw.start6705; XTENSA-NEXT:    # in Loop: Header=BB99_2 Depth=16706; XTENSA-NEXT:    or a12, a2, a26707; XTENSA-NEXT:    j .LBB99_16708; XTENSA-NEXT:  .LBB99_4: # %atomicrmw.end6709; XTENSA-NEXT:    retw6710;6711; XTENSA-ATOMIC-LABEL: atomicrmw_min_i16_seq_cst:6712; XTENSA-ATOMIC:       # %bb.0:6713; XTENSA-ATOMIC-NEXT:    entry a1, 326714; XTENSA-ATOMIC-NEXT:    slli a8, a2, 36715; XTENSA-ATOMIC-NEXT:    movi a9, 246716; XTENSA-ATOMIC-NEXT:    and a8, a8, a96717; XTENSA-ATOMIC-NEXT:    l32r a9, .LCPI99_06718; XTENSA-ATOMIC-NEXT:    ssl a86719; XTENSA-ATOMIC-NEXT:    sll a9, a96720; XTENSA-ATOMIC-NEXT:    movi a10, -16721; XTENSA-ATOMIC-NEXT:    xor a9, a9, a106722; XTENSA-ATOMIC-NEXT:    movi a10, -46723; XTENSA-ATOMIC-NEXT:    and a10, a2, a106724; XTENSA-ATOMIC-NEXT:    memw6725; XTENSA-ATOMIC-NEXT:    l32i a14, a10, 06726; XTENSA-ATOMIC-NEXT:    slli a11, a3, 166727; XTENSA-ATOMIC-NEXT:    srai a11, a11, 166728; XTENSA-ATOMIC-NEXT:    movi a12, 06729; XTENSA-ATOMIC-NEXT:    movi a13, 16730; XTENSA-ATOMIC-NEXT:    j .LBB99_26731; XTENSA-ATOMIC-NEXT:  .LBB99_1: # %atomicrmw.start6732; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB99_2 Depth=16733; XTENSA-ATOMIC-NEXT:    or a14, a15, a156734; XTENSA-ATOMIC-NEXT:    beqi a7, 1, .LBB99_66735; XTENSA-ATOMIC-NEXT:  .LBB99_2: # %atomicrmw.start6736; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=16737; XTENSA-ATOMIC-NEXT:    ssr a86738; XTENSA-ATOMIC-NEXT:    srl a15, a146739; XTENSA-ATOMIC-NEXT:    slli a7, a15, 166740; XTENSA-ATOMIC-NEXT:    srai a6, a7, 166741; XTENSA-ATOMIC-NEXT:    or a7, a3, a36742; XTENSA-ATOMIC-NEXT:    blt a11, a6, .LBB99_46743; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start6744; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB99_2 Depth=16745; XTENSA-ATOMIC-NEXT:    or a7, a15, a156746; XTENSA-ATOMIC-NEXT:  .LBB99_4: # %atomicrmw.start6747; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB99_2 Depth=16748; XTENSA-ATOMIC-NEXT:    l32r a15, .LCPI99_06749; XTENSA-ATOMIC-NEXT:    and a15, a7, a156750; XTENSA-ATOMIC-NEXT:    ssl a86751; XTENSA-ATOMIC-NEXT:    sll a15, a156752; XTENSA-ATOMIC-NEXT:    and a7, a14, a96753; XTENSA-ATOMIC-NEXT:    or a15, a7, a156754; XTENSA-ATOMIC-NEXT:    wsr a14, scompare16755; XTENSA-ATOMIC-NEXT:    s32c1i a15, a10, 06756; XTENSA-ATOMIC-NEXT:    or a7, a13, a136757; XTENSA-ATOMIC-NEXT:    beq a15, a14, .LBB99_16758; XTENSA-ATOMIC-NEXT:  # %bb.5: # %atomicrmw.start6759; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB99_2 Depth=16760; XTENSA-ATOMIC-NEXT:    or a7, a12, a126761; XTENSA-ATOMIC-NEXT:    j .LBB99_16762; XTENSA-ATOMIC-NEXT:  .LBB99_6: # %atomicrmw.end6763; XTENSA-ATOMIC-NEXT:    ssr a86764; XTENSA-ATOMIC-NEXT:    srl a2, a156765; XTENSA-ATOMIC-NEXT:    memw6766; XTENSA-ATOMIC-NEXT:    retw6767  %res = atomicrmw min ptr %a, i16 %b seq_cst6768  ret i16 %res6769}6770 6771define i16 @atomicrmw_umax_i16_monotonic(ptr %a, i16 %b) nounwind {6772; XTENSA-LABEL: atomicrmw_umax_i16_monotonic:6773; XTENSA:       # %bb.0:6774; XTENSA-NEXT:    entry a1, 486775; XTENSA-NEXT:    or a6, a2, a26776; XTENSA-NEXT:    l16ui a2, a6, 06777; XTENSA-NEXT:    movi a7, 06778; XTENSA-NEXT:    l32r a5, .LCPI100_16779; XTENSA-NEXT:    j .LBB100_26780; XTENSA-NEXT:  .LBB100_1: # %atomicrmw.start6781; XTENSA-NEXT:    # in Loop: Header=BB100_2 Depth=16782; XTENSA-NEXT:    addi a11, a1, 06783; XTENSA-NEXT:    or a10, a6, a66784; XTENSA-NEXT:    or a13, a7, a76785; XTENSA-NEXT:    or a14, a7, a76786; XTENSA-NEXT:    callx8 a56787; XTENSA-NEXT:    l16ui a2, a1, 06788; XTENSA-NEXT:    bnez a10, .LBB100_46789; XTENSA-NEXT:  .LBB100_2: # %atomicrmw.start6790; XTENSA-NEXT:    # =>This Inner Loop Header: Depth=16791; XTENSA-NEXT:    l32r a8, .LCPI100_06792; XTENSA-NEXT:    and a9, a3, a86793; XTENSA-NEXT:    s16i a2, a1, 06794; XTENSA-NEXT:    and a8, a2, a86795; XTENSA-NEXT:    or a12, a3, a36796; XTENSA-NEXT:    bgeu a9, a8, .LBB100_16797; XTENSA-NEXT:  # %bb.3: # %atomicrmw.start6798; XTENSA-NEXT:    # in Loop: Header=BB100_2 Depth=16799; XTENSA-NEXT:    or a12, a2, a26800; XTENSA-NEXT:    j .LBB100_16801; XTENSA-NEXT:  .LBB100_4: # %atomicrmw.end6802; XTENSA-NEXT:    retw6803;6804; XTENSA-ATOMIC-LABEL: atomicrmw_umax_i16_monotonic:6805; XTENSA-ATOMIC:       # %bb.0:6806; XTENSA-ATOMIC-NEXT:    entry a1, 326807; XTENSA-ATOMIC-NEXT:    slli a8, a2, 36808; XTENSA-ATOMIC-NEXT:    movi a9, 246809; XTENSA-ATOMIC-NEXT:    and a8, a8, a96810; XTENSA-ATOMIC-NEXT:    l32r a9, .LCPI100_06811; XTENSA-ATOMIC-NEXT:    ssl a86812; XTENSA-ATOMIC-NEXT:    sll a9, a96813; XTENSA-ATOMIC-NEXT:    movi a10, -16814; XTENSA-ATOMIC-NEXT:    xor a9, a9, a106815; XTENSA-ATOMIC-NEXT:    movi a10, -46816; XTENSA-ATOMIC-NEXT:    and a10, a2, a106817; XTENSA-ATOMIC-NEXT:    l32i a13, a10, 06818; XTENSA-ATOMIC-NEXT:    movi a11, 06819; XTENSA-ATOMIC-NEXT:    movi a12, 16820; XTENSA-ATOMIC-NEXT:    j .LBB100_26821; XTENSA-ATOMIC-NEXT:  .LBB100_1: # %atomicrmw.start6822; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB100_2 Depth=16823; XTENSA-ATOMIC-NEXT:    or a13, a14, a146824; XTENSA-ATOMIC-NEXT:    beqi a15, 1, .LBB100_66825; XTENSA-ATOMIC-NEXT:  .LBB100_2: # %atomicrmw.start6826; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=16827; XTENSA-ATOMIC-NEXT:    l32r a14, .LCPI100_06828; XTENSA-ATOMIC-NEXT:    and a6, a3, a146829; XTENSA-ATOMIC-NEXT:    ssr a86830; XTENSA-ATOMIC-NEXT:    srl a15, a136831; XTENSA-ATOMIC-NEXT:    and a5, a15, a146832; XTENSA-ATOMIC-NEXT:    or a7, a3, a36833; XTENSA-ATOMIC-NEXT:    bgeu a6, a5, .LBB100_46834; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start6835; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB100_2 Depth=16836; XTENSA-ATOMIC-NEXT:    or a7, a15, a156837; XTENSA-ATOMIC-NEXT:  .LBB100_4: # %atomicrmw.start6838; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB100_2 Depth=16839; XTENSA-ATOMIC-NEXT:    and a14, a7, a146840; XTENSA-ATOMIC-NEXT:    ssl a86841; XTENSA-ATOMIC-NEXT:    sll a14, a146842; XTENSA-ATOMIC-NEXT:    and a15, a13, a96843; XTENSA-ATOMIC-NEXT:    or a14, a15, a146844; XTENSA-ATOMIC-NEXT:    wsr a13, scompare16845; XTENSA-ATOMIC-NEXT:    s32c1i a14, a10, 06846; XTENSA-ATOMIC-NEXT:    or a15, a12, a126847; XTENSA-ATOMIC-NEXT:    beq a14, a13, .LBB100_16848; XTENSA-ATOMIC-NEXT:  # %bb.5: # %atomicrmw.start6849; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB100_2 Depth=16850; XTENSA-ATOMIC-NEXT:    or a15, a11, a116851; XTENSA-ATOMIC-NEXT:    j .LBB100_16852; XTENSA-ATOMIC-NEXT:  .LBB100_6: # %atomicrmw.end6853; XTENSA-ATOMIC-NEXT:    ssr a86854; XTENSA-ATOMIC-NEXT:    srl a2, a146855; XTENSA-ATOMIC-NEXT:    retw6856  %res = atomicrmw umax ptr %a, i16 %b monotonic6857  ret i16 %res6858}6859 6860define i16 @atomicrmw_umax_i16_acquire(ptr %a, i16 %b) nounwind {6861; XTENSA-LABEL: atomicrmw_umax_i16_acquire:6862; XTENSA:       # %bb.0:6863; XTENSA-NEXT:    entry a1, 486864; XTENSA-NEXT:    or a6, a2, a26865; XTENSA-NEXT:    l16ui a2, a6, 06866; XTENSA-NEXT:    movi a7, 26867; XTENSA-NEXT:    l32r a5, .LCPI101_16868; XTENSA-NEXT:    j .LBB101_26869; XTENSA-NEXT:  .LBB101_1: # %atomicrmw.start6870; XTENSA-NEXT:    # in Loop: Header=BB101_2 Depth=16871; XTENSA-NEXT:    addi a11, a1, 06872; XTENSA-NEXT:    or a10, a6, a66873; XTENSA-NEXT:    or a13, a7, a76874; XTENSA-NEXT:    or a14, a7, a76875; XTENSA-NEXT:    callx8 a56876; XTENSA-NEXT:    l16ui a2, a1, 06877; XTENSA-NEXT:    bnez a10, .LBB101_46878; XTENSA-NEXT:  .LBB101_2: # %atomicrmw.start6879; XTENSA-NEXT:    # =>This Inner Loop Header: Depth=16880; XTENSA-NEXT:    l32r a8, .LCPI101_06881; XTENSA-NEXT:    and a9, a3, a86882; XTENSA-NEXT:    s16i a2, a1, 06883; XTENSA-NEXT:    and a8, a2, a86884; XTENSA-NEXT:    or a12, a3, a36885; XTENSA-NEXT:    bgeu a9, a8, .LBB101_16886; XTENSA-NEXT:  # %bb.3: # %atomicrmw.start6887; XTENSA-NEXT:    # in Loop: Header=BB101_2 Depth=16888; XTENSA-NEXT:    or a12, a2, a26889; XTENSA-NEXT:    j .LBB101_16890; XTENSA-NEXT:  .LBB101_4: # %atomicrmw.end6891; XTENSA-NEXT:    retw6892;6893; XTENSA-ATOMIC-LABEL: atomicrmw_umax_i16_acquire:6894; XTENSA-ATOMIC:       # %bb.0:6895; XTENSA-ATOMIC-NEXT:    entry a1, 326896; XTENSA-ATOMIC-NEXT:    slli a8, a2, 36897; XTENSA-ATOMIC-NEXT:    movi a9, 246898; XTENSA-ATOMIC-NEXT:    and a8, a8, a96899; XTENSA-ATOMIC-NEXT:    l32r a9, .LCPI101_06900; XTENSA-ATOMIC-NEXT:    ssl a86901; XTENSA-ATOMIC-NEXT:    sll a9, a96902; XTENSA-ATOMIC-NEXT:    movi a10, -16903; XTENSA-ATOMIC-NEXT:    xor a9, a9, a106904; XTENSA-ATOMIC-NEXT:    movi a10, -46905; XTENSA-ATOMIC-NEXT:    and a10, a2, a106906; XTENSA-ATOMIC-NEXT:    l32i a13, a10, 06907; XTENSA-ATOMIC-NEXT:    movi a11, 06908; XTENSA-ATOMIC-NEXT:    movi a12, 16909; XTENSA-ATOMIC-NEXT:    j .LBB101_26910; XTENSA-ATOMIC-NEXT:  .LBB101_1: # %atomicrmw.start6911; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB101_2 Depth=16912; XTENSA-ATOMIC-NEXT:    or a13, a14, a146913; XTENSA-ATOMIC-NEXT:    beqi a15, 1, .LBB101_66914; XTENSA-ATOMIC-NEXT:  .LBB101_2: # %atomicrmw.start6915; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=16916; XTENSA-ATOMIC-NEXT:    l32r a14, .LCPI101_06917; XTENSA-ATOMIC-NEXT:    and a6, a3, a146918; XTENSA-ATOMIC-NEXT:    ssr a86919; XTENSA-ATOMIC-NEXT:    srl a15, a136920; XTENSA-ATOMIC-NEXT:    and a5, a15, a146921; XTENSA-ATOMIC-NEXT:    or a7, a3, a36922; XTENSA-ATOMIC-NEXT:    bgeu a6, a5, .LBB101_46923; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start6924; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB101_2 Depth=16925; XTENSA-ATOMIC-NEXT:    or a7, a15, a156926; XTENSA-ATOMIC-NEXT:  .LBB101_4: # %atomicrmw.start6927; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB101_2 Depth=16928; XTENSA-ATOMIC-NEXT:    and a14, a7, a146929; XTENSA-ATOMIC-NEXT:    ssl a86930; XTENSA-ATOMIC-NEXT:    sll a14, a146931; XTENSA-ATOMIC-NEXT:    and a15, a13, a96932; XTENSA-ATOMIC-NEXT:    or a14, a15, a146933; XTENSA-ATOMIC-NEXT:    wsr a13, scompare16934; XTENSA-ATOMIC-NEXT:    s32c1i a14, a10, 06935; XTENSA-ATOMIC-NEXT:    or a15, a12, a126936; XTENSA-ATOMIC-NEXT:    beq a14, a13, .LBB101_16937; XTENSA-ATOMIC-NEXT:  # %bb.5: # %atomicrmw.start6938; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB101_2 Depth=16939; XTENSA-ATOMIC-NEXT:    or a15, a11, a116940; XTENSA-ATOMIC-NEXT:    j .LBB101_16941; XTENSA-ATOMIC-NEXT:  .LBB101_6: # %atomicrmw.end6942; XTENSA-ATOMIC-NEXT:    ssr a86943; XTENSA-ATOMIC-NEXT:    srl a2, a146944; XTENSA-ATOMIC-NEXT:    memw6945; XTENSA-ATOMIC-NEXT:    retw6946  %res = atomicrmw umax ptr %a, i16 %b acquire6947  ret i16 %res6948}6949 6950define i16 @atomicrmw_umax_i16_release(ptr %a, i16 %b) nounwind {6951; XTENSA-LABEL: atomicrmw_umax_i16_release:6952; XTENSA:       # %bb.0:6953; XTENSA-NEXT:    entry a1, 486954; XTENSA-NEXT:    or a5, a2, a26955; XTENSA-NEXT:    l16ui a2, a5, 06956; XTENSA-NEXT:    movi a7, 36957; XTENSA-NEXT:    movi a6, 06958; XTENSA-NEXT:    l32r a4, .LCPI102_16959; XTENSA-NEXT:    j .LBB102_26960; XTENSA-NEXT:  .LBB102_1: # %atomicrmw.start6961; XTENSA-NEXT:    # in Loop: Header=BB102_2 Depth=16962; XTENSA-NEXT:    addi a11, a1, 06963; XTENSA-NEXT:    or a10, a5, a56964; XTENSA-NEXT:    or a13, a7, a76965; XTENSA-NEXT:    or a14, a6, a66966; XTENSA-NEXT:    callx8 a46967; XTENSA-NEXT:    l16ui a2, a1, 06968; XTENSA-NEXT:    bnez a10, .LBB102_46969; XTENSA-NEXT:  .LBB102_2: # %atomicrmw.start6970; XTENSA-NEXT:    # =>This Inner Loop Header: Depth=16971; XTENSA-NEXT:    l32r a8, .LCPI102_06972; XTENSA-NEXT:    and a9, a3, a86973; XTENSA-NEXT:    s16i a2, a1, 06974; XTENSA-NEXT:    and a8, a2, a86975; XTENSA-NEXT:    or a12, a3, a36976; XTENSA-NEXT:    bgeu a9, a8, .LBB102_16977; XTENSA-NEXT:  # %bb.3: # %atomicrmw.start6978; XTENSA-NEXT:    # in Loop: Header=BB102_2 Depth=16979; XTENSA-NEXT:    or a12, a2, a26980; XTENSA-NEXT:    j .LBB102_16981; XTENSA-NEXT:  .LBB102_4: # %atomicrmw.end6982; XTENSA-NEXT:    retw6983;6984; XTENSA-ATOMIC-LABEL: atomicrmw_umax_i16_release:6985; XTENSA-ATOMIC:       # %bb.0:6986; XTENSA-ATOMIC-NEXT:    entry a1, 326987; XTENSA-ATOMIC-NEXT:    slli a8, a2, 36988; XTENSA-ATOMIC-NEXT:    movi a9, 246989; XTENSA-ATOMIC-NEXT:    and a8, a8, a96990; XTENSA-ATOMIC-NEXT:    l32r a9, .LCPI102_06991; XTENSA-ATOMIC-NEXT:    ssl a86992; XTENSA-ATOMIC-NEXT:    sll a9, a96993; XTENSA-ATOMIC-NEXT:    movi a10, -16994; XTENSA-ATOMIC-NEXT:    xor a9, a9, a106995; XTENSA-ATOMIC-NEXT:    movi a10, -46996; XTENSA-ATOMIC-NEXT:    and a10, a2, a106997; XTENSA-ATOMIC-NEXT:    memw6998; XTENSA-ATOMIC-NEXT:    l32i a13, a10, 06999; XTENSA-ATOMIC-NEXT:    movi a11, 07000; XTENSA-ATOMIC-NEXT:    movi a12, 17001; XTENSA-ATOMIC-NEXT:    j .LBB102_27002; XTENSA-ATOMIC-NEXT:  .LBB102_1: # %atomicrmw.start7003; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB102_2 Depth=17004; XTENSA-ATOMIC-NEXT:    or a13, a14, a147005; XTENSA-ATOMIC-NEXT:    beqi a15, 1, .LBB102_67006; XTENSA-ATOMIC-NEXT:  .LBB102_2: # %atomicrmw.start7007; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=17008; XTENSA-ATOMIC-NEXT:    l32r a14, .LCPI102_07009; XTENSA-ATOMIC-NEXT:    and a6, a3, a147010; XTENSA-ATOMIC-NEXT:    ssr a87011; XTENSA-ATOMIC-NEXT:    srl a15, a137012; XTENSA-ATOMIC-NEXT:    and a5, a15, a147013; XTENSA-ATOMIC-NEXT:    or a7, a3, a37014; XTENSA-ATOMIC-NEXT:    bgeu a6, a5, .LBB102_47015; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start7016; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB102_2 Depth=17017; XTENSA-ATOMIC-NEXT:    or a7, a15, a157018; XTENSA-ATOMIC-NEXT:  .LBB102_4: # %atomicrmw.start7019; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB102_2 Depth=17020; XTENSA-ATOMIC-NEXT:    and a14, a7, a147021; XTENSA-ATOMIC-NEXT:    ssl a87022; XTENSA-ATOMIC-NEXT:    sll a14, a147023; XTENSA-ATOMIC-NEXT:    and a15, a13, a97024; XTENSA-ATOMIC-NEXT:    or a14, a15, a147025; XTENSA-ATOMIC-NEXT:    wsr a13, scompare17026; XTENSA-ATOMIC-NEXT:    s32c1i a14, a10, 07027; XTENSA-ATOMIC-NEXT:    or a15, a12, a127028; XTENSA-ATOMIC-NEXT:    beq a14, a13, .LBB102_17029; XTENSA-ATOMIC-NEXT:  # %bb.5: # %atomicrmw.start7030; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB102_2 Depth=17031; XTENSA-ATOMIC-NEXT:    or a15, a11, a117032; XTENSA-ATOMIC-NEXT:    j .LBB102_17033; XTENSA-ATOMIC-NEXT:  .LBB102_6: # %atomicrmw.end7034; XTENSA-ATOMIC-NEXT:    ssr a87035; XTENSA-ATOMIC-NEXT:    srl a2, a147036; XTENSA-ATOMIC-NEXT:    retw7037  %res = atomicrmw umax ptr %a, i16 %b release7038  ret i16 %res7039}7040 7041define i16 @atomicrmw_umax_i16_acq_rel(ptr %a, i16 %b) nounwind {7042; XTENSA-LABEL: atomicrmw_umax_i16_acq_rel:7043; XTENSA:       # %bb.0:7044; XTENSA-NEXT:    entry a1, 487045; XTENSA-NEXT:    or a5, a2, a27046; XTENSA-NEXT:    l16ui a2, a5, 07047; XTENSA-NEXT:    movi a7, 47048; XTENSA-NEXT:    movi a6, 27049; XTENSA-NEXT:    l32r a4, .LCPI103_17050; XTENSA-NEXT:    j .LBB103_27051; XTENSA-NEXT:  .LBB103_1: # %atomicrmw.start7052; XTENSA-NEXT:    # in Loop: Header=BB103_2 Depth=17053; XTENSA-NEXT:    addi a11, a1, 07054; XTENSA-NEXT:    or a10, a5, a57055; XTENSA-NEXT:    or a13, a7, a77056; XTENSA-NEXT:    or a14, a6, a67057; XTENSA-NEXT:    callx8 a47058; XTENSA-NEXT:    l16ui a2, a1, 07059; XTENSA-NEXT:    bnez a10, .LBB103_47060; XTENSA-NEXT:  .LBB103_2: # %atomicrmw.start7061; XTENSA-NEXT:    # =>This Inner Loop Header: Depth=17062; XTENSA-NEXT:    l32r a8, .LCPI103_07063; XTENSA-NEXT:    and a9, a3, a87064; XTENSA-NEXT:    s16i a2, a1, 07065; XTENSA-NEXT:    and a8, a2, a87066; XTENSA-NEXT:    or a12, a3, a37067; XTENSA-NEXT:    bgeu a9, a8, .LBB103_17068; XTENSA-NEXT:  # %bb.3: # %atomicrmw.start7069; XTENSA-NEXT:    # in Loop: Header=BB103_2 Depth=17070; XTENSA-NEXT:    or a12, a2, a27071; XTENSA-NEXT:    j .LBB103_17072; XTENSA-NEXT:  .LBB103_4: # %atomicrmw.end7073; XTENSA-NEXT:    retw7074;7075; XTENSA-ATOMIC-LABEL: atomicrmw_umax_i16_acq_rel:7076; XTENSA-ATOMIC:       # %bb.0:7077; XTENSA-ATOMIC-NEXT:    entry a1, 327078; XTENSA-ATOMIC-NEXT:    slli a8, a2, 37079; XTENSA-ATOMIC-NEXT:    movi a9, 247080; XTENSA-ATOMIC-NEXT:    and a8, a8, a97081; XTENSA-ATOMIC-NEXT:    l32r a9, .LCPI103_07082; XTENSA-ATOMIC-NEXT:    ssl a87083; XTENSA-ATOMIC-NEXT:    sll a9, a97084; XTENSA-ATOMIC-NEXT:    movi a10, -17085; XTENSA-ATOMIC-NEXT:    xor a9, a9, a107086; XTENSA-ATOMIC-NEXT:    movi a10, -47087; XTENSA-ATOMIC-NEXT:    and a10, a2, a107088; XTENSA-ATOMIC-NEXT:    memw7089; XTENSA-ATOMIC-NEXT:    l32i a13, a10, 07090; XTENSA-ATOMIC-NEXT:    movi a11, 07091; XTENSA-ATOMIC-NEXT:    movi a12, 17092; XTENSA-ATOMIC-NEXT:    j .LBB103_27093; XTENSA-ATOMIC-NEXT:  .LBB103_1: # %atomicrmw.start7094; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB103_2 Depth=17095; XTENSA-ATOMIC-NEXT:    or a13, a14, a147096; XTENSA-ATOMIC-NEXT:    beqi a15, 1, .LBB103_67097; XTENSA-ATOMIC-NEXT:  .LBB103_2: # %atomicrmw.start7098; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=17099; XTENSA-ATOMIC-NEXT:    l32r a14, .LCPI103_07100; XTENSA-ATOMIC-NEXT:    and a6, a3, a147101; XTENSA-ATOMIC-NEXT:    ssr a87102; XTENSA-ATOMIC-NEXT:    srl a15, a137103; XTENSA-ATOMIC-NEXT:    and a5, a15, a147104; XTENSA-ATOMIC-NEXT:    or a7, a3, a37105; XTENSA-ATOMIC-NEXT:    bgeu a6, a5, .LBB103_47106; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start7107; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB103_2 Depth=17108; XTENSA-ATOMIC-NEXT:    or a7, a15, a157109; XTENSA-ATOMIC-NEXT:  .LBB103_4: # %atomicrmw.start7110; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB103_2 Depth=17111; XTENSA-ATOMIC-NEXT:    and a14, a7, a147112; XTENSA-ATOMIC-NEXT:    ssl a87113; XTENSA-ATOMIC-NEXT:    sll a14, a147114; XTENSA-ATOMIC-NEXT:    and a15, a13, a97115; XTENSA-ATOMIC-NEXT:    or a14, a15, a147116; XTENSA-ATOMIC-NEXT:    wsr a13, scompare17117; XTENSA-ATOMIC-NEXT:    s32c1i a14, a10, 07118; XTENSA-ATOMIC-NEXT:    or a15, a12, a127119; XTENSA-ATOMIC-NEXT:    beq a14, a13, .LBB103_17120; XTENSA-ATOMIC-NEXT:  # %bb.5: # %atomicrmw.start7121; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB103_2 Depth=17122; XTENSA-ATOMIC-NEXT:    or a15, a11, a117123; XTENSA-ATOMIC-NEXT:    j .LBB103_17124; XTENSA-ATOMIC-NEXT:  .LBB103_6: # %atomicrmw.end7125; XTENSA-ATOMIC-NEXT:    ssr a87126; XTENSA-ATOMIC-NEXT:    srl a2, a147127; XTENSA-ATOMIC-NEXT:    memw7128; XTENSA-ATOMIC-NEXT:    retw7129  %res = atomicrmw umax ptr %a, i16 %b acq_rel7130  ret i16 %res7131}7132 7133define i16 @atomicrmw_umax_i16_seq_cst(ptr %a, i16 %b) nounwind {7134; XTENSA-LABEL: atomicrmw_umax_i16_seq_cst:7135; XTENSA:       # %bb.0:7136; XTENSA-NEXT:    entry a1, 487137; XTENSA-NEXT:    or a6, a2, a27138; XTENSA-NEXT:    l16ui a2, a6, 07139; XTENSA-NEXT:    movi a7, 57140; XTENSA-NEXT:    l32r a5, .LCPI104_17141; XTENSA-NEXT:    j .LBB104_27142; XTENSA-NEXT:  .LBB104_1: # %atomicrmw.start7143; XTENSA-NEXT:    # in Loop: Header=BB104_2 Depth=17144; XTENSA-NEXT:    addi a11, a1, 07145; XTENSA-NEXT:    or a10, a6, a67146; XTENSA-NEXT:    or a13, a7, a77147; XTENSA-NEXT:    or a14, a7, a77148; XTENSA-NEXT:    callx8 a57149; XTENSA-NEXT:    l16ui a2, a1, 07150; XTENSA-NEXT:    bnez a10, .LBB104_47151; XTENSA-NEXT:  .LBB104_2: # %atomicrmw.start7152; XTENSA-NEXT:    # =>This Inner Loop Header: Depth=17153; XTENSA-NEXT:    l32r a8, .LCPI104_07154; XTENSA-NEXT:    and a9, a3, a87155; XTENSA-NEXT:    s16i a2, a1, 07156; XTENSA-NEXT:    and a8, a2, a87157; XTENSA-NEXT:    or a12, a3, a37158; XTENSA-NEXT:    bgeu a9, a8, .LBB104_17159; XTENSA-NEXT:  # %bb.3: # %atomicrmw.start7160; XTENSA-NEXT:    # in Loop: Header=BB104_2 Depth=17161; XTENSA-NEXT:    or a12, a2, a27162; XTENSA-NEXT:    j .LBB104_17163; XTENSA-NEXT:  .LBB104_4: # %atomicrmw.end7164; XTENSA-NEXT:    retw7165;7166; XTENSA-ATOMIC-LABEL: atomicrmw_umax_i16_seq_cst:7167; XTENSA-ATOMIC:       # %bb.0:7168; XTENSA-ATOMIC-NEXT:    entry a1, 327169; XTENSA-ATOMIC-NEXT:    slli a8, a2, 37170; XTENSA-ATOMIC-NEXT:    movi a9, 247171; XTENSA-ATOMIC-NEXT:    and a8, a8, a97172; XTENSA-ATOMIC-NEXT:    l32r a9, .LCPI104_07173; XTENSA-ATOMIC-NEXT:    ssl a87174; XTENSA-ATOMIC-NEXT:    sll a9, a97175; XTENSA-ATOMIC-NEXT:    movi a10, -17176; XTENSA-ATOMIC-NEXT:    xor a9, a9, a107177; XTENSA-ATOMIC-NEXT:    movi a10, -47178; XTENSA-ATOMIC-NEXT:    and a10, a2, a107179; XTENSA-ATOMIC-NEXT:    memw7180; XTENSA-ATOMIC-NEXT:    l32i a13, a10, 07181; XTENSA-ATOMIC-NEXT:    movi a11, 07182; XTENSA-ATOMIC-NEXT:    movi a12, 17183; XTENSA-ATOMIC-NEXT:    j .LBB104_27184; XTENSA-ATOMIC-NEXT:  .LBB104_1: # %atomicrmw.start7185; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB104_2 Depth=17186; XTENSA-ATOMIC-NEXT:    or a13, a14, a147187; XTENSA-ATOMIC-NEXT:    beqi a15, 1, .LBB104_67188; XTENSA-ATOMIC-NEXT:  .LBB104_2: # %atomicrmw.start7189; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=17190; XTENSA-ATOMIC-NEXT:    l32r a14, .LCPI104_07191; XTENSA-ATOMIC-NEXT:    and a6, a3, a147192; XTENSA-ATOMIC-NEXT:    ssr a87193; XTENSA-ATOMIC-NEXT:    srl a15, a137194; XTENSA-ATOMIC-NEXT:    and a5, a15, a147195; XTENSA-ATOMIC-NEXT:    or a7, a3, a37196; XTENSA-ATOMIC-NEXT:    bgeu a6, a5, .LBB104_47197; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start7198; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB104_2 Depth=17199; XTENSA-ATOMIC-NEXT:    or a7, a15, a157200; XTENSA-ATOMIC-NEXT:  .LBB104_4: # %atomicrmw.start7201; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB104_2 Depth=17202; XTENSA-ATOMIC-NEXT:    and a14, a7, a147203; XTENSA-ATOMIC-NEXT:    ssl a87204; XTENSA-ATOMIC-NEXT:    sll a14, a147205; XTENSA-ATOMIC-NEXT:    and a15, a13, a97206; XTENSA-ATOMIC-NEXT:    or a14, a15, a147207; XTENSA-ATOMIC-NEXT:    wsr a13, scompare17208; XTENSA-ATOMIC-NEXT:    s32c1i a14, a10, 07209; XTENSA-ATOMIC-NEXT:    or a15, a12, a127210; XTENSA-ATOMIC-NEXT:    beq a14, a13, .LBB104_17211; XTENSA-ATOMIC-NEXT:  # %bb.5: # %atomicrmw.start7212; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB104_2 Depth=17213; XTENSA-ATOMIC-NEXT:    or a15, a11, a117214; XTENSA-ATOMIC-NEXT:    j .LBB104_17215; XTENSA-ATOMIC-NEXT:  .LBB104_6: # %atomicrmw.end7216; XTENSA-ATOMIC-NEXT:    ssr a87217; XTENSA-ATOMIC-NEXT:    srl a2, a147218; XTENSA-ATOMIC-NEXT:    memw7219; XTENSA-ATOMIC-NEXT:    retw7220  %res = atomicrmw umax ptr %a, i16 %b seq_cst7221  ret i16 %res7222}7223 7224define i16 @atomicrmw_umin_i16_monotonic(ptr %a, i16 %b) nounwind {7225; XTENSA-LABEL: atomicrmw_umin_i16_monotonic:7226; XTENSA:       # %bb.0:7227; XTENSA-NEXT:    entry a1, 487228; XTENSA-NEXT:    or a6, a2, a27229; XTENSA-NEXT:    l16ui a2, a6, 07230; XTENSA-NEXT:    movi a7, 07231; XTENSA-NEXT:    l32r a5, .LCPI105_17232; XTENSA-NEXT:    j .LBB105_27233; XTENSA-NEXT:  .LBB105_1: # %atomicrmw.start7234; XTENSA-NEXT:    # in Loop: Header=BB105_2 Depth=17235; XTENSA-NEXT:    addi a11, a1, 07236; XTENSA-NEXT:    or a10, a6, a67237; XTENSA-NEXT:    or a13, a7, a77238; XTENSA-NEXT:    or a14, a7, a77239; XTENSA-NEXT:    callx8 a57240; XTENSA-NEXT:    l16ui a2, a1, 07241; XTENSA-NEXT:    bnez a10, .LBB105_47242; XTENSA-NEXT:  .LBB105_2: # %atomicrmw.start7243; XTENSA-NEXT:    # =>This Inner Loop Header: Depth=17244; XTENSA-NEXT:    l32r a8, .LCPI105_07245; XTENSA-NEXT:    and a9, a3, a87246; XTENSA-NEXT:    s16i a2, a1, 07247; XTENSA-NEXT:    and a8, a2, a87248; XTENSA-NEXT:    or a12, a3, a37249; XTENSA-NEXT:    bltu a9, a8, .LBB105_17250; XTENSA-NEXT:  # %bb.3: # %atomicrmw.start7251; XTENSA-NEXT:    # in Loop: Header=BB105_2 Depth=17252; XTENSA-NEXT:    or a12, a2, a27253; XTENSA-NEXT:    j .LBB105_17254; XTENSA-NEXT:  .LBB105_4: # %atomicrmw.end7255; XTENSA-NEXT:    retw7256;7257; XTENSA-ATOMIC-LABEL: atomicrmw_umin_i16_monotonic:7258; XTENSA-ATOMIC:       # %bb.0:7259; XTENSA-ATOMIC-NEXT:    entry a1, 327260; XTENSA-ATOMIC-NEXT:    slli a8, a2, 37261; XTENSA-ATOMIC-NEXT:    movi a9, 247262; XTENSA-ATOMIC-NEXT:    and a8, a8, a97263; XTENSA-ATOMIC-NEXT:    l32r a9, .LCPI105_07264; XTENSA-ATOMIC-NEXT:    ssl a87265; XTENSA-ATOMIC-NEXT:    sll a9, a97266; XTENSA-ATOMIC-NEXT:    movi a10, -17267; XTENSA-ATOMIC-NEXT:    xor a9, a9, a107268; XTENSA-ATOMIC-NEXT:    movi a10, -47269; XTENSA-ATOMIC-NEXT:    and a10, a2, a107270; XTENSA-ATOMIC-NEXT:    l32i a13, a10, 07271; XTENSA-ATOMIC-NEXT:    movi a11, 07272; XTENSA-ATOMIC-NEXT:    movi a12, 17273; XTENSA-ATOMIC-NEXT:    j .LBB105_27274; XTENSA-ATOMIC-NEXT:  .LBB105_1: # %atomicrmw.start7275; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB105_2 Depth=17276; XTENSA-ATOMIC-NEXT:    or a13, a14, a147277; XTENSA-ATOMIC-NEXT:    beqi a15, 1, .LBB105_67278; XTENSA-ATOMIC-NEXT:  .LBB105_2: # %atomicrmw.start7279; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=17280; XTENSA-ATOMIC-NEXT:    l32r a14, .LCPI105_07281; XTENSA-ATOMIC-NEXT:    and a6, a3, a147282; XTENSA-ATOMIC-NEXT:    ssr a87283; XTENSA-ATOMIC-NEXT:    srl a15, a137284; XTENSA-ATOMIC-NEXT:    and a5, a15, a147285; XTENSA-ATOMIC-NEXT:    or a7, a3, a37286; XTENSA-ATOMIC-NEXT:    bltu a6, a5, .LBB105_47287; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start7288; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB105_2 Depth=17289; XTENSA-ATOMIC-NEXT:    or a7, a15, a157290; XTENSA-ATOMIC-NEXT:  .LBB105_4: # %atomicrmw.start7291; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB105_2 Depth=17292; XTENSA-ATOMIC-NEXT:    and a14, a7, a147293; XTENSA-ATOMIC-NEXT:    ssl a87294; XTENSA-ATOMIC-NEXT:    sll a14, a147295; XTENSA-ATOMIC-NEXT:    and a15, a13, a97296; XTENSA-ATOMIC-NEXT:    or a14, a15, a147297; XTENSA-ATOMIC-NEXT:    wsr a13, scompare17298; XTENSA-ATOMIC-NEXT:    s32c1i a14, a10, 07299; XTENSA-ATOMIC-NEXT:    or a15, a12, a127300; XTENSA-ATOMIC-NEXT:    beq a14, a13, .LBB105_17301; XTENSA-ATOMIC-NEXT:  # %bb.5: # %atomicrmw.start7302; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB105_2 Depth=17303; XTENSA-ATOMIC-NEXT:    or a15, a11, a117304; XTENSA-ATOMIC-NEXT:    j .LBB105_17305; XTENSA-ATOMIC-NEXT:  .LBB105_6: # %atomicrmw.end7306; XTENSA-ATOMIC-NEXT:    ssr a87307; XTENSA-ATOMIC-NEXT:    srl a2, a147308; XTENSA-ATOMIC-NEXT:    retw7309  %res = atomicrmw umin ptr %a, i16 %b monotonic7310  ret i16 %res7311}7312 7313define i16 @atomicrmw_umin_i16_acquire(ptr %a, i16 %b) nounwind {7314; XTENSA-LABEL: atomicrmw_umin_i16_acquire:7315; XTENSA:       # %bb.0:7316; XTENSA-NEXT:    entry a1, 487317; XTENSA-NEXT:    or a6, a2, a27318; XTENSA-NEXT:    l16ui a2, a6, 07319; XTENSA-NEXT:    movi a7, 27320; XTENSA-NEXT:    l32r a5, .LCPI106_17321; XTENSA-NEXT:    j .LBB106_27322; XTENSA-NEXT:  .LBB106_1: # %atomicrmw.start7323; XTENSA-NEXT:    # in Loop: Header=BB106_2 Depth=17324; XTENSA-NEXT:    addi a11, a1, 07325; XTENSA-NEXT:    or a10, a6, a67326; XTENSA-NEXT:    or a13, a7, a77327; XTENSA-NEXT:    or a14, a7, a77328; XTENSA-NEXT:    callx8 a57329; XTENSA-NEXT:    l16ui a2, a1, 07330; XTENSA-NEXT:    bnez a10, .LBB106_47331; XTENSA-NEXT:  .LBB106_2: # %atomicrmw.start7332; XTENSA-NEXT:    # =>This Inner Loop Header: Depth=17333; XTENSA-NEXT:    l32r a8, .LCPI106_07334; XTENSA-NEXT:    and a9, a3, a87335; XTENSA-NEXT:    s16i a2, a1, 07336; XTENSA-NEXT:    and a8, a2, a87337; XTENSA-NEXT:    or a12, a3, a37338; XTENSA-NEXT:    bltu a9, a8, .LBB106_17339; XTENSA-NEXT:  # %bb.3: # %atomicrmw.start7340; XTENSA-NEXT:    # in Loop: Header=BB106_2 Depth=17341; XTENSA-NEXT:    or a12, a2, a27342; XTENSA-NEXT:    j .LBB106_17343; XTENSA-NEXT:  .LBB106_4: # %atomicrmw.end7344; XTENSA-NEXT:    retw7345;7346; XTENSA-ATOMIC-LABEL: atomicrmw_umin_i16_acquire:7347; XTENSA-ATOMIC:       # %bb.0:7348; XTENSA-ATOMIC-NEXT:    entry a1, 327349; XTENSA-ATOMIC-NEXT:    slli a8, a2, 37350; XTENSA-ATOMIC-NEXT:    movi a9, 247351; XTENSA-ATOMIC-NEXT:    and a8, a8, a97352; XTENSA-ATOMIC-NEXT:    l32r a9, .LCPI106_07353; XTENSA-ATOMIC-NEXT:    ssl a87354; XTENSA-ATOMIC-NEXT:    sll a9, a97355; XTENSA-ATOMIC-NEXT:    movi a10, -17356; XTENSA-ATOMIC-NEXT:    xor a9, a9, a107357; XTENSA-ATOMIC-NEXT:    movi a10, -47358; XTENSA-ATOMIC-NEXT:    and a10, a2, a107359; XTENSA-ATOMIC-NEXT:    l32i a13, a10, 07360; XTENSA-ATOMIC-NEXT:    movi a11, 07361; XTENSA-ATOMIC-NEXT:    movi a12, 17362; XTENSA-ATOMIC-NEXT:    j .LBB106_27363; XTENSA-ATOMIC-NEXT:  .LBB106_1: # %atomicrmw.start7364; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB106_2 Depth=17365; XTENSA-ATOMIC-NEXT:    or a13, a14, a147366; XTENSA-ATOMIC-NEXT:    beqi a15, 1, .LBB106_67367; XTENSA-ATOMIC-NEXT:  .LBB106_2: # %atomicrmw.start7368; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=17369; XTENSA-ATOMIC-NEXT:    l32r a14, .LCPI106_07370; XTENSA-ATOMIC-NEXT:    and a6, a3, a147371; XTENSA-ATOMIC-NEXT:    ssr a87372; XTENSA-ATOMIC-NEXT:    srl a15, a137373; XTENSA-ATOMIC-NEXT:    and a5, a15, a147374; XTENSA-ATOMIC-NEXT:    or a7, a3, a37375; XTENSA-ATOMIC-NEXT:    bltu a6, a5, .LBB106_47376; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start7377; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB106_2 Depth=17378; XTENSA-ATOMIC-NEXT:    or a7, a15, a157379; XTENSA-ATOMIC-NEXT:  .LBB106_4: # %atomicrmw.start7380; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB106_2 Depth=17381; XTENSA-ATOMIC-NEXT:    and a14, a7, a147382; XTENSA-ATOMIC-NEXT:    ssl a87383; XTENSA-ATOMIC-NEXT:    sll a14, a147384; XTENSA-ATOMIC-NEXT:    and a15, a13, a97385; XTENSA-ATOMIC-NEXT:    or a14, a15, a147386; XTENSA-ATOMIC-NEXT:    wsr a13, scompare17387; XTENSA-ATOMIC-NEXT:    s32c1i a14, a10, 07388; XTENSA-ATOMIC-NEXT:    or a15, a12, a127389; XTENSA-ATOMIC-NEXT:    beq a14, a13, .LBB106_17390; XTENSA-ATOMIC-NEXT:  # %bb.5: # %atomicrmw.start7391; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB106_2 Depth=17392; XTENSA-ATOMIC-NEXT:    or a15, a11, a117393; XTENSA-ATOMIC-NEXT:    j .LBB106_17394; XTENSA-ATOMIC-NEXT:  .LBB106_6: # %atomicrmw.end7395; XTENSA-ATOMIC-NEXT:    ssr a87396; XTENSA-ATOMIC-NEXT:    srl a2, a147397; XTENSA-ATOMIC-NEXT:    memw7398; XTENSA-ATOMIC-NEXT:    retw7399  %res = atomicrmw umin ptr %a, i16 %b acquire7400  ret i16 %res7401}7402 7403define i16 @atomicrmw_umin_i16_release(ptr %a, i16 %b) nounwind {7404; XTENSA-LABEL: atomicrmw_umin_i16_release:7405; XTENSA:       # %bb.0:7406; XTENSA-NEXT:    entry a1, 487407; XTENSA-NEXT:    or a5, a2, a27408; XTENSA-NEXT:    l16ui a2, a5, 07409; XTENSA-NEXT:    movi a7, 37410; XTENSA-NEXT:    movi a6, 07411; XTENSA-NEXT:    l32r a4, .LCPI107_17412; XTENSA-NEXT:    j .LBB107_27413; XTENSA-NEXT:  .LBB107_1: # %atomicrmw.start7414; XTENSA-NEXT:    # in Loop: Header=BB107_2 Depth=17415; XTENSA-NEXT:    addi a11, a1, 07416; XTENSA-NEXT:    or a10, a5, a57417; XTENSA-NEXT:    or a13, a7, a77418; XTENSA-NEXT:    or a14, a6, a67419; XTENSA-NEXT:    callx8 a47420; XTENSA-NEXT:    l16ui a2, a1, 07421; XTENSA-NEXT:    bnez a10, .LBB107_47422; XTENSA-NEXT:  .LBB107_2: # %atomicrmw.start7423; XTENSA-NEXT:    # =>This Inner Loop Header: Depth=17424; XTENSA-NEXT:    l32r a8, .LCPI107_07425; XTENSA-NEXT:    and a9, a3, a87426; XTENSA-NEXT:    s16i a2, a1, 07427; XTENSA-NEXT:    and a8, a2, a87428; XTENSA-NEXT:    or a12, a3, a37429; XTENSA-NEXT:    bltu a9, a8, .LBB107_17430; XTENSA-NEXT:  # %bb.3: # %atomicrmw.start7431; XTENSA-NEXT:    # in Loop: Header=BB107_2 Depth=17432; XTENSA-NEXT:    or a12, a2, a27433; XTENSA-NEXT:    j .LBB107_17434; XTENSA-NEXT:  .LBB107_4: # %atomicrmw.end7435; XTENSA-NEXT:    retw7436;7437; XTENSA-ATOMIC-LABEL: atomicrmw_umin_i16_release:7438; XTENSA-ATOMIC:       # %bb.0:7439; XTENSA-ATOMIC-NEXT:    entry a1, 327440; XTENSA-ATOMIC-NEXT:    slli a8, a2, 37441; XTENSA-ATOMIC-NEXT:    movi a9, 247442; XTENSA-ATOMIC-NEXT:    and a8, a8, a97443; XTENSA-ATOMIC-NEXT:    l32r a9, .LCPI107_07444; XTENSA-ATOMIC-NEXT:    ssl a87445; XTENSA-ATOMIC-NEXT:    sll a9, a97446; XTENSA-ATOMIC-NEXT:    movi a10, -17447; XTENSA-ATOMIC-NEXT:    xor a9, a9, a107448; XTENSA-ATOMIC-NEXT:    movi a10, -47449; XTENSA-ATOMIC-NEXT:    and a10, a2, a107450; XTENSA-ATOMIC-NEXT:    memw7451; XTENSA-ATOMIC-NEXT:    l32i a13, a10, 07452; XTENSA-ATOMIC-NEXT:    movi a11, 07453; XTENSA-ATOMIC-NEXT:    movi a12, 17454; XTENSA-ATOMIC-NEXT:    j .LBB107_27455; XTENSA-ATOMIC-NEXT:  .LBB107_1: # %atomicrmw.start7456; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB107_2 Depth=17457; XTENSA-ATOMIC-NEXT:    or a13, a14, a147458; XTENSA-ATOMIC-NEXT:    beqi a15, 1, .LBB107_67459; XTENSA-ATOMIC-NEXT:  .LBB107_2: # %atomicrmw.start7460; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=17461; XTENSA-ATOMIC-NEXT:    l32r a14, .LCPI107_07462; XTENSA-ATOMIC-NEXT:    and a6, a3, a147463; XTENSA-ATOMIC-NEXT:    ssr a87464; XTENSA-ATOMIC-NEXT:    srl a15, a137465; XTENSA-ATOMIC-NEXT:    and a5, a15, a147466; XTENSA-ATOMIC-NEXT:    or a7, a3, a37467; XTENSA-ATOMIC-NEXT:    bltu a6, a5, .LBB107_47468; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start7469; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB107_2 Depth=17470; XTENSA-ATOMIC-NEXT:    or a7, a15, a157471; XTENSA-ATOMIC-NEXT:  .LBB107_4: # %atomicrmw.start7472; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB107_2 Depth=17473; XTENSA-ATOMIC-NEXT:    and a14, a7, a147474; XTENSA-ATOMIC-NEXT:    ssl a87475; XTENSA-ATOMIC-NEXT:    sll a14, a147476; XTENSA-ATOMIC-NEXT:    and a15, a13, a97477; XTENSA-ATOMIC-NEXT:    or a14, a15, a147478; XTENSA-ATOMIC-NEXT:    wsr a13, scompare17479; XTENSA-ATOMIC-NEXT:    s32c1i a14, a10, 07480; XTENSA-ATOMIC-NEXT:    or a15, a12, a127481; XTENSA-ATOMIC-NEXT:    beq a14, a13, .LBB107_17482; XTENSA-ATOMIC-NEXT:  # %bb.5: # %atomicrmw.start7483; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB107_2 Depth=17484; XTENSA-ATOMIC-NEXT:    or a15, a11, a117485; XTENSA-ATOMIC-NEXT:    j .LBB107_17486; XTENSA-ATOMIC-NEXT:  .LBB107_6: # %atomicrmw.end7487; XTENSA-ATOMIC-NEXT:    ssr a87488; XTENSA-ATOMIC-NEXT:    srl a2, a147489; XTENSA-ATOMIC-NEXT:    retw7490  %res = atomicrmw umin ptr %a, i16 %b release7491  ret i16 %res7492}7493 7494define i16 @atomicrmw_umin_i16_acq_rel(ptr %a, i16 %b) nounwind {7495; XTENSA-LABEL: atomicrmw_umin_i16_acq_rel:7496; XTENSA:       # %bb.0:7497; XTENSA-NEXT:    entry a1, 487498; XTENSA-NEXT:    or a5, a2, a27499; XTENSA-NEXT:    l16ui a2, a5, 07500; XTENSA-NEXT:    movi a7, 47501; XTENSA-NEXT:    movi a6, 27502; XTENSA-NEXT:    l32r a4, .LCPI108_17503; XTENSA-NEXT:    j .LBB108_27504; XTENSA-NEXT:  .LBB108_1: # %atomicrmw.start7505; XTENSA-NEXT:    # in Loop: Header=BB108_2 Depth=17506; XTENSA-NEXT:    addi a11, a1, 07507; XTENSA-NEXT:    or a10, a5, a57508; XTENSA-NEXT:    or a13, a7, a77509; XTENSA-NEXT:    or a14, a6, a67510; XTENSA-NEXT:    callx8 a47511; XTENSA-NEXT:    l16ui a2, a1, 07512; XTENSA-NEXT:    bnez a10, .LBB108_47513; XTENSA-NEXT:  .LBB108_2: # %atomicrmw.start7514; XTENSA-NEXT:    # =>This Inner Loop Header: Depth=17515; XTENSA-NEXT:    l32r a8, .LCPI108_07516; XTENSA-NEXT:    and a9, a3, a87517; XTENSA-NEXT:    s16i a2, a1, 07518; XTENSA-NEXT:    and a8, a2, a87519; XTENSA-NEXT:    or a12, a3, a37520; XTENSA-NEXT:    bltu a9, a8, .LBB108_17521; XTENSA-NEXT:  # %bb.3: # %atomicrmw.start7522; XTENSA-NEXT:    # in Loop: Header=BB108_2 Depth=17523; XTENSA-NEXT:    or a12, a2, a27524; XTENSA-NEXT:    j .LBB108_17525; XTENSA-NEXT:  .LBB108_4: # %atomicrmw.end7526; XTENSA-NEXT:    retw7527;7528; XTENSA-ATOMIC-LABEL: atomicrmw_umin_i16_acq_rel:7529; XTENSA-ATOMIC:       # %bb.0:7530; XTENSA-ATOMIC-NEXT:    entry a1, 327531; XTENSA-ATOMIC-NEXT:    slli a8, a2, 37532; XTENSA-ATOMIC-NEXT:    movi a9, 247533; XTENSA-ATOMIC-NEXT:    and a8, a8, a97534; XTENSA-ATOMIC-NEXT:    l32r a9, .LCPI108_07535; XTENSA-ATOMIC-NEXT:    ssl a87536; XTENSA-ATOMIC-NEXT:    sll a9, a97537; XTENSA-ATOMIC-NEXT:    movi a10, -17538; XTENSA-ATOMIC-NEXT:    xor a9, a9, a107539; XTENSA-ATOMIC-NEXT:    movi a10, -47540; XTENSA-ATOMIC-NEXT:    and a10, a2, a107541; XTENSA-ATOMIC-NEXT:    memw7542; XTENSA-ATOMIC-NEXT:    l32i a13, a10, 07543; XTENSA-ATOMIC-NEXT:    movi a11, 07544; XTENSA-ATOMIC-NEXT:    movi a12, 17545; XTENSA-ATOMIC-NEXT:    j .LBB108_27546; XTENSA-ATOMIC-NEXT:  .LBB108_1: # %atomicrmw.start7547; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB108_2 Depth=17548; XTENSA-ATOMIC-NEXT:    or a13, a14, a147549; XTENSA-ATOMIC-NEXT:    beqi a15, 1, .LBB108_67550; XTENSA-ATOMIC-NEXT:  .LBB108_2: # %atomicrmw.start7551; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=17552; XTENSA-ATOMIC-NEXT:    l32r a14, .LCPI108_07553; XTENSA-ATOMIC-NEXT:    and a6, a3, a147554; XTENSA-ATOMIC-NEXT:    ssr a87555; XTENSA-ATOMIC-NEXT:    srl a15, a137556; XTENSA-ATOMIC-NEXT:    and a5, a15, a147557; XTENSA-ATOMIC-NEXT:    or a7, a3, a37558; XTENSA-ATOMIC-NEXT:    bltu a6, a5, .LBB108_47559; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start7560; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB108_2 Depth=17561; XTENSA-ATOMIC-NEXT:    or a7, a15, a157562; XTENSA-ATOMIC-NEXT:  .LBB108_4: # %atomicrmw.start7563; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB108_2 Depth=17564; XTENSA-ATOMIC-NEXT:    and a14, a7, a147565; XTENSA-ATOMIC-NEXT:    ssl a87566; XTENSA-ATOMIC-NEXT:    sll a14, a147567; XTENSA-ATOMIC-NEXT:    and a15, a13, a97568; XTENSA-ATOMIC-NEXT:    or a14, a15, a147569; XTENSA-ATOMIC-NEXT:    wsr a13, scompare17570; XTENSA-ATOMIC-NEXT:    s32c1i a14, a10, 07571; XTENSA-ATOMIC-NEXT:    or a15, a12, a127572; XTENSA-ATOMIC-NEXT:    beq a14, a13, .LBB108_17573; XTENSA-ATOMIC-NEXT:  # %bb.5: # %atomicrmw.start7574; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB108_2 Depth=17575; XTENSA-ATOMIC-NEXT:    or a15, a11, a117576; XTENSA-ATOMIC-NEXT:    j .LBB108_17577; XTENSA-ATOMIC-NEXT:  .LBB108_6: # %atomicrmw.end7578; XTENSA-ATOMIC-NEXT:    ssr a87579; XTENSA-ATOMIC-NEXT:    srl a2, a147580; XTENSA-ATOMIC-NEXT:    memw7581; XTENSA-ATOMIC-NEXT:    retw7582  %res = atomicrmw umin ptr %a, i16 %b acq_rel7583  ret i16 %res7584}7585 7586define i16 @atomicrmw_umin_i16_seq_cst(ptr %a, i16 %b) nounwind {7587; XTENSA-LABEL: atomicrmw_umin_i16_seq_cst:7588; XTENSA:       # %bb.0:7589; XTENSA-NEXT:    entry a1, 487590; XTENSA-NEXT:    or a6, a2, a27591; XTENSA-NEXT:    l16ui a2, a6, 07592; XTENSA-NEXT:    movi a7, 57593; XTENSA-NEXT:    l32r a5, .LCPI109_17594; XTENSA-NEXT:    j .LBB109_27595; XTENSA-NEXT:  .LBB109_1: # %atomicrmw.start7596; XTENSA-NEXT:    # in Loop: Header=BB109_2 Depth=17597; XTENSA-NEXT:    addi a11, a1, 07598; XTENSA-NEXT:    or a10, a6, a67599; XTENSA-NEXT:    or a13, a7, a77600; XTENSA-NEXT:    or a14, a7, a77601; XTENSA-NEXT:    callx8 a57602; XTENSA-NEXT:    l16ui a2, a1, 07603; XTENSA-NEXT:    bnez a10, .LBB109_47604; XTENSA-NEXT:  .LBB109_2: # %atomicrmw.start7605; XTENSA-NEXT:    # =>This Inner Loop Header: Depth=17606; XTENSA-NEXT:    l32r a8, .LCPI109_07607; XTENSA-NEXT:    and a9, a3, a87608; XTENSA-NEXT:    s16i a2, a1, 07609; XTENSA-NEXT:    and a8, a2, a87610; XTENSA-NEXT:    or a12, a3, a37611; XTENSA-NEXT:    bltu a9, a8, .LBB109_17612; XTENSA-NEXT:  # %bb.3: # %atomicrmw.start7613; XTENSA-NEXT:    # in Loop: Header=BB109_2 Depth=17614; XTENSA-NEXT:    or a12, a2, a27615; XTENSA-NEXT:    j .LBB109_17616; XTENSA-NEXT:  .LBB109_4: # %atomicrmw.end7617; XTENSA-NEXT:    retw7618;7619; XTENSA-ATOMIC-LABEL: atomicrmw_umin_i16_seq_cst:7620; XTENSA-ATOMIC:       # %bb.0:7621; XTENSA-ATOMIC-NEXT:    entry a1, 327622; XTENSA-ATOMIC-NEXT:    slli a8, a2, 37623; XTENSA-ATOMIC-NEXT:    movi a9, 247624; XTENSA-ATOMIC-NEXT:    and a8, a8, a97625; XTENSA-ATOMIC-NEXT:    l32r a9, .LCPI109_07626; XTENSA-ATOMIC-NEXT:    ssl a87627; XTENSA-ATOMIC-NEXT:    sll a9, a97628; XTENSA-ATOMIC-NEXT:    movi a10, -17629; XTENSA-ATOMIC-NEXT:    xor a9, a9, a107630; XTENSA-ATOMIC-NEXT:    movi a10, -47631; XTENSA-ATOMIC-NEXT:    and a10, a2, a107632; XTENSA-ATOMIC-NEXT:    memw7633; XTENSA-ATOMIC-NEXT:    l32i a13, a10, 07634; XTENSA-ATOMIC-NEXT:    movi a11, 07635; XTENSA-ATOMIC-NEXT:    movi a12, 17636; XTENSA-ATOMIC-NEXT:    j .LBB109_27637; XTENSA-ATOMIC-NEXT:  .LBB109_1: # %atomicrmw.start7638; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB109_2 Depth=17639; XTENSA-ATOMIC-NEXT:    or a13, a14, a147640; XTENSA-ATOMIC-NEXT:    beqi a15, 1, .LBB109_67641; XTENSA-ATOMIC-NEXT:  .LBB109_2: # %atomicrmw.start7642; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=17643; XTENSA-ATOMIC-NEXT:    l32r a14, .LCPI109_07644; XTENSA-ATOMIC-NEXT:    and a6, a3, a147645; XTENSA-ATOMIC-NEXT:    ssr a87646; XTENSA-ATOMIC-NEXT:    srl a15, a137647; XTENSA-ATOMIC-NEXT:    and a5, a15, a147648; XTENSA-ATOMIC-NEXT:    or a7, a3, a37649; XTENSA-ATOMIC-NEXT:    bltu a6, a5, .LBB109_47650; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start7651; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB109_2 Depth=17652; XTENSA-ATOMIC-NEXT:    or a7, a15, a157653; XTENSA-ATOMIC-NEXT:  .LBB109_4: # %atomicrmw.start7654; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB109_2 Depth=17655; XTENSA-ATOMIC-NEXT:    and a14, a7, a147656; XTENSA-ATOMIC-NEXT:    ssl a87657; XTENSA-ATOMIC-NEXT:    sll a14, a147658; XTENSA-ATOMIC-NEXT:    and a15, a13, a97659; XTENSA-ATOMIC-NEXT:    or a14, a15, a147660; XTENSA-ATOMIC-NEXT:    wsr a13, scompare17661; XTENSA-ATOMIC-NEXT:    s32c1i a14, a10, 07662; XTENSA-ATOMIC-NEXT:    or a15, a12, a127663; XTENSA-ATOMIC-NEXT:    beq a14, a13, .LBB109_17664; XTENSA-ATOMIC-NEXT:  # %bb.5: # %atomicrmw.start7665; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB109_2 Depth=17666; XTENSA-ATOMIC-NEXT:    or a15, a11, a117667; XTENSA-ATOMIC-NEXT:    j .LBB109_17668; XTENSA-ATOMIC-NEXT:  .LBB109_6: # %atomicrmw.end7669; XTENSA-ATOMIC-NEXT:    ssr a87670; XTENSA-ATOMIC-NEXT:    srl a2, a147671; XTENSA-ATOMIC-NEXT:    memw7672; XTENSA-ATOMIC-NEXT:    retw7673  %res = atomicrmw umin ptr %a, i16 %b seq_cst7674  ret i16 %res7675}7676 7677define i32 @atomicrmw_xchg_i32_monotonic(ptr %a, i32 %b) nounwind {7678; XTENSA-LABEL: atomicrmw_xchg_i32_monotonic:7679; XTENSA:       # %bb.0:7680; XTENSA-NEXT:    entry a1, 327681; XTENSA-NEXT:    or a11, a3, a37682; XTENSA-NEXT:    or a10, a2, a27683; XTENSA-NEXT:    movi a12, 07684; XTENSA-NEXT:    l32r a8, .LCPI110_07685; XTENSA-NEXT:    callx8 a87686; XTENSA-NEXT:    or a2, a10, a107687; XTENSA-NEXT:    retw7688;7689; XTENSA-ATOMIC-LABEL: atomicrmw_xchg_i32_monotonic:7690; XTENSA-ATOMIC:       # %bb.0:7691; XTENSA-ATOMIC-NEXT:    entry a1, 327692; XTENSA-ATOMIC-NEXT:    l32i a11, a2, 07693; XTENSA-ATOMIC-NEXT:    movi a9, 07694; XTENSA-ATOMIC-NEXT:    movi a10, 17695; XTENSA-ATOMIC-NEXT:    j .LBB110_27696; XTENSA-ATOMIC-NEXT:  .LBB110_1: # %atomicrmw.start7697; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB110_2 Depth=17698; XTENSA-ATOMIC-NEXT:    or a11, a8, a87699; XTENSA-ATOMIC-NEXT:    beqi a12, 1, .LBB110_47700; XTENSA-ATOMIC-NEXT:  .LBB110_2: # %atomicrmw.start7701; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=17702; XTENSA-ATOMIC-NEXT:    wsr a11, scompare17703; XTENSA-ATOMIC-NEXT:    or a8, a3, a37704; XTENSA-ATOMIC-NEXT:    s32c1i a8, a2, 07705; XTENSA-ATOMIC-NEXT:    or a12, a10, a107706; XTENSA-ATOMIC-NEXT:    beq a8, a11, .LBB110_17707; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start7708; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB110_2 Depth=17709; XTENSA-ATOMIC-NEXT:    or a12, a9, a97710; XTENSA-ATOMIC-NEXT:    j .LBB110_17711; XTENSA-ATOMIC-NEXT:  .LBB110_4: # %atomicrmw.end7712; XTENSA-ATOMIC-NEXT:    or a2, a8, a87713; XTENSA-ATOMIC-NEXT:    retw7714  %res = atomicrmw xchg ptr %a, i32 %b monotonic7715  ret i32 %res7716}7717 7718define i32 @atomicrmw_xchg_i32_acquire(ptr %a, i32 %b) nounwind {7719; XTENSA-LABEL: atomicrmw_xchg_i32_acquire:7720; XTENSA:       # %bb.0:7721; XTENSA-NEXT:    entry a1, 327722; XTENSA-NEXT:    or a11, a3, a37723; XTENSA-NEXT:    or a10, a2, a27724; XTENSA-NEXT:    movi a12, 27725; XTENSA-NEXT:    l32r a8, .LCPI111_07726; XTENSA-NEXT:    callx8 a87727; XTENSA-NEXT:    or a2, a10, a107728; XTENSA-NEXT:    retw7729;7730; XTENSA-ATOMIC-LABEL: atomicrmw_xchg_i32_acquire:7731; XTENSA-ATOMIC:       # %bb.0:7732; XTENSA-ATOMIC-NEXT:    entry a1, 327733; XTENSA-ATOMIC-NEXT:    l32i a11, a2, 07734; XTENSA-ATOMIC-NEXT:    movi a9, 07735; XTENSA-ATOMIC-NEXT:    movi a10, 17736; XTENSA-ATOMIC-NEXT:    j .LBB111_27737; XTENSA-ATOMIC-NEXT:  .LBB111_1: # %atomicrmw.start7738; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB111_2 Depth=17739; XTENSA-ATOMIC-NEXT:    or a11, a8, a87740; XTENSA-ATOMIC-NEXT:    beqi a12, 1, .LBB111_47741; XTENSA-ATOMIC-NEXT:  .LBB111_2: # %atomicrmw.start7742; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=17743; XTENSA-ATOMIC-NEXT:    wsr a11, scompare17744; XTENSA-ATOMIC-NEXT:    or a8, a3, a37745; XTENSA-ATOMIC-NEXT:    s32c1i a8, a2, 07746; XTENSA-ATOMIC-NEXT:    or a12, a10, a107747; XTENSA-ATOMIC-NEXT:    beq a8, a11, .LBB111_17748; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start7749; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB111_2 Depth=17750; XTENSA-ATOMIC-NEXT:    or a12, a9, a97751; XTENSA-ATOMIC-NEXT:    j .LBB111_17752; XTENSA-ATOMIC-NEXT:  .LBB111_4: # %atomicrmw.end7753; XTENSA-ATOMIC-NEXT:    memw7754; XTENSA-ATOMIC-NEXT:    or a2, a8, a87755; XTENSA-ATOMIC-NEXT:    retw7756  %res = atomicrmw xchg ptr %a, i32 %b acquire7757  ret i32 %res7758}7759 7760define i32 @atomicrmw_xchg_i32_release(ptr %a, i32 %b) nounwind {7761; XTENSA-LABEL: atomicrmw_xchg_i32_release:7762; XTENSA:       # %bb.0:7763; XTENSA-NEXT:    entry a1, 327764; XTENSA-NEXT:    or a11, a3, a37765; XTENSA-NEXT:    or a10, a2, a27766; XTENSA-NEXT:    movi a12, 37767; XTENSA-NEXT:    l32r a8, .LCPI112_07768; XTENSA-NEXT:    callx8 a87769; XTENSA-NEXT:    or a2, a10, a107770; XTENSA-NEXT:    retw7771;7772; XTENSA-ATOMIC-LABEL: atomicrmw_xchg_i32_release:7773; XTENSA-ATOMIC:       # %bb.0:7774; XTENSA-ATOMIC-NEXT:    entry a1, 327775; XTENSA-ATOMIC-NEXT:    memw7776; XTENSA-ATOMIC-NEXT:    l32i a11, a2, 07777; XTENSA-ATOMIC-NEXT:    movi a9, 07778; XTENSA-ATOMIC-NEXT:    movi a10, 17779; XTENSA-ATOMIC-NEXT:    j .LBB112_27780; XTENSA-ATOMIC-NEXT:  .LBB112_1: # %atomicrmw.start7781; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB112_2 Depth=17782; XTENSA-ATOMIC-NEXT:    or a11, a8, a87783; XTENSA-ATOMIC-NEXT:    beqi a12, 1, .LBB112_47784; XTENSA-ATOMIC-NEXT:  .LBB112_2: # %atomicrmw.start7785; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=17786; XTENSA-ATOMIC-NEXT:    wsr a11, scompare17787; XTENSA-ATOMIC-NEXT:    or a8, a3, a37788; XTENSA-ATOMIC-NEXT:    s32c1i a8, a2, 07789; XTENSA-ATOMIC-NEXT:    or a12, a10, a107790; XTENSA-ATOMIC-NEXT:    beq a8, a11, .LBB112_17791; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start7792; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB112_2 Depth=17793; XTENSA-ATOMIC-NEXT:    or a12, a9, a97794; XTENSA-ATOMIC-NEXT:    j .LBB112_17795; XTENSA-ATOMIC-NEXT:  .LBB112_4: # %atomicrmw.end7796; XTENSA-ATOMIC-NEXT:    or a2, a8, a87797; XTENSA-ATOMIC-NEXT:    retw7798  %res = atomicrmw xchg ptr %a, i32 %b release7799  ret i32 %res7800}7801 7802define i32 @atomicrmw_xchg_i32_acq_rel(ptr %a, i32 %b) nounwind {7803; XTENSA-LABEL: atomicrmw_xchg_i32_acq_rel:7804; XTENSA:       # %bb.0:7805; XTENSA-NEXT:    entry a1, 327806; XTENSA-NEXT:    or a11, a3, a37807; XTENSA-NEXT:    or a10, a2, a27808; XTENSA-NEXT:    movi a12, 47809; XTENSA-NEXT:    l32r a8, .LCPI113_07810; XTENSA-NEXT:    callx8 a87811; XTENSA-NEXT:    or a2, a10, a107812; XTENSA-NEXT:    retw7813;7814; XTENSA-ATOMIC-LABEL: atomicrmw_xchg_i32_acq_rel:7815; XTENSA-ATOMIC:       # %bb.0:7816; XTENSA-ATOMIC-NEXT:    entry a1, 327817; XTENSA-ATOMIC-NEXT:    memw7818; XTENSA-ATOMIC-NEXT:    l32i a11, a2, 07819; XTENSA-ATOMIC-NEXT:    movi a9, 07820; XTENSA-ATOMIC-NEXT:    movi a10, 17821; XTENSA-ATOMIC-NEXT:    j .LBB113_27822; XTENSA-ATOMIC-NEXT:  .LBB113_1: # %atomicrmw.start7823; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB113_2 Depth=17824; XTENSA-ATOMIC-NEXT:    or a11, a8, a87825; XTENSA-ATOMIC-NEXT:    beqi a12, 1, .LBB113_47826; XTENSA-ATOMIC-NEXT:  .LBB113_2: # %atomicrmw.start7827; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=17828; XTENSA-ATOMIC-NEXT:    wsr a11, scompare17829; XTENSA-ATOMIC-NEXT:    or a8, a3, a37830; XTENSA-ATOMIC-NEXT:    s32c1i a8, a2, 07831; XTENSA-ATOMIC-NEXT:    or a12, a10, a107832; XTENSA-ATOMIC-NEXT:    beq a8, a11, .LBB113_17833; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start7834; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB113_2 Depth=17835; XTENSA-ATOMIC-NEXT:    or a12, a9, a97836; XTENSA-ATOMIC-NEXT:    j .LBB113_17837; XTENSA-ATOMIC-NEXT:  .LBB113_4: # %atomicrmw.end7838; XTENSA-ATOMIC-NEXT:    memw7839; XTENSA-ATOMIC-NEXT:    or a2, a8, a87840; XTENSA-ATOMIC-NEXT:    retw7841  %res = atomicrmw xchg ptr %a, i32 %b acq_rel7842  ret i32 %res7843}7844 7845define i32 @atomicrmw_xchg_i32_seq_cst(ptr %a, i32 %b) nounwind {7846; XTENSA-LABEL: atomicrmw_xchg_i32_seq_cst:7847; XTENSA:       # %bb.0:7848; XTENSA-NEXT:    entry a1, 327849; XTENSA-NEXT:    or a11, a3, a37850; XTENSA-NEXT:    or a10, a2, a27851; XTENSA-NEXT:    movi a12, 57852; XTENSA-NEXT:    l32r a8, .LCPI114_07853; XTENSA-NEXT:    callx8 a87854; XTENSA-NEXT:    or a2, a10, a107855; XTENSA-NEXT:    retw7856;7857; XTENSA-ATOMIC-LABEL: atomicrmw_xchg_i32_seq_cst:7858; XTENSA-ATOMIC:       # %bb.0:7859; XTENSA-ATOMIC-NEXT:    entry a1, 327860; XTENSA-ATOMIC-NEXT:    memw7861; XTENSA-ATOMIC-NEXT:    l32i a11, a2, 07862; XTENSA-ATOMIC-NEXT:    movi a9, 07863; XTENSA-ATOMIC-NEXT:    movi a10, 17864; XTENSA-ATOMIC-NEXT:    j .LBB114_27865; XTENSA-ATOMIC-NEXT:  .LBB114_1: # %atomicrmw.start7866; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB114_2 Depth=17867; XTENSA-ATOMIC-NEXT:    or a11, a8, a87868; XTENSA-ATOMIC-NEXT:    beqi a12, 1, .LBB114_47869; XTENSA-ATOMIC-NEXT:  .LBB114_2: # %atomicrmw.start7870; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=17871; XTENSA-ATOMIC-NEXT:    wsr a11, scompare17872; XTENSA-ATOMIC-NEXT:    or a8, a3, a37873; XTENSA-ATOMIC-NEXT:    s32c1i a8, a2, 07874; XTENSA-ATOMIC-NEXT:    or a12, a10, a107875; XTENSA-ATOMIC-NEXT:    beq a8, a11, .LBB114_17876; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start7877; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB114_2 Depth=17878; XTENSA-ATOMIC-NEXT:    or a12, a9, a97879; XTENSA-ATOMIC-NEXT:    j .LBB114_17880; XTENSA-ATOMIC-NEXT:  .LBB114_4: # %atomicrmw.end7881; XTENSA-ATOMIC-NEXT:    memw7882; XTENSA-ATOMIC-NEXT:    or a2, a8, a87883; XTENSA-ATOMIC-NEXT:    retw7884  %res = atomicrmw xchg ptr %a, i32 %b seq_cst7885  ret i32 %res7886}7887 7888define i32 @atomicrmw_add_i32_monotonic(ptr %a, i32 %b) nounwind {7889; XTENSA-LABEL: atomicrmw_add_i32_monotonic:7890; XTENSA:       # %bb.0:7891; XTENSA-NEXT:    entry a1, 327892; XTENSA-NEXT:    or a11, a3, a37893; XTENSA-NEXT:    or a10, a2, a27894; XTENSA-NEXT:    movi a12, 07895; XTENSA-NEXT:    l32r a8, .LCPI115_07896; XTENSA-NEXT:    callx8 a87897; XTENSA-NEXT:    or a2, a10, a107898; XTENSA-NEXT:    retw7899;7900; XTENSA-ATOMIC-LABEL: atomicrmw_add_i32_monotonic:7901; XTENSA-ATOMIC:       # %bb.0:7902; XTENSA-ATOMIC-NEXT:    entry a1, 327903; XTENSA-ATOMIC-NEXT:    l32i a11, a2, 07904; XTENSA-ATOMIC-NEXT:    movi a9, 07905; XTENSA-ATOMIC-NEXT:    movi a10, 17906; XTENSA-ATOMIC-NEXT:    j .LBB115_27907; XTENSA-ATOMIC-NEXT:  .LBB115_1: # %atomicrmw.start7908; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB115_2 Depth=17909; XTENSA-ATOMIC-NEXT:    or a11, a8, a87910; XTENSA-ATOMIC-NEXT:    beqi a12, 1, .LBB115_47911; XTENSA-ATOMIC-NEXT:  .LBB115_2: # %atomicrmw.start7912; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=17913; XTENSA-ATOMIC-NEXT:    add a8, a11, a37914; XTENSA-ATOMIC-NEXT:    wsr a11, scompare17915; XTENSA-ATOMIC-NEXT:    s32c1i a8, a2, 07916; XTENSA-ATOMIC-NEXT:    or a12, a10, a107917; XTENSA-ATOMIC-NEXT:    beq a8, a11, .LBB115_17918; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start7919; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB115_2 Depth=17920; XTENSA-ATOMIC-NEXT:    or a12, a9, a97921; XTENSA-ATOMIC-NEXT:    j .LBB115_17922; XTENSA-ATOMIC-NEXT:  .LBB115_4: # %atomicrmw.end7923; XTENSA-ATOMIC-NEXT:    or a2, a8, a87924; XTENSA-ATOMIC-NEXT:    retw7925  %res = atomicrmw add ptr %a, i32 %b monotonic7926  ret i32 %res7927}7928 7929define i32 @atomicrmw_add_i32_acquire(ptr %a, i32 %b) nounwind {7930; XTENSA-LABEL: atomicrmw_add_i32_acquire:7931; XTENSA:       # %bb.0:7932; XTENSA-NEXT:    entry a1, 327933; XTENSA-NEXT:    or a11, a3, a37934; XTENSA-NEXT:    or a10, a2, a27935; XTENSA-NEXT:    movi a12, 27936; XTENSA-NEXT:    l32r a8, .LCPI116_07937; XTENSA-NEXT:    callx8 a87938; XTENSA-NEXT:    or a2, a10, a107939; XTENSA-NEXT:    retw7940;7941; XTENSA-ATOMIC-LABEL: atomicrmw_add_i32_acquire:7942; XTENSA-ATOMIC:       # %bb.0:7943; XTENSA-ATOMIC-NEXT:    entry a1, 327944; XTENSA-ATOMIC-NEXT:    l32i a11, a2, 07945; XTENSA-ATOMIC-NEXT:    movi a9, 07946; XTENSA-ATOMIC-NEXT:    movi a10, 17947; XTENSA-ATOMIC-NEXT:    j .LBB116_27948; XTENSA-ATOMIC-NEXT:  .LBB116_1: # %atomicrmw.start7949; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB116_2 Depth=17950; XTENSA-ATOMIC-NEXT:    or a11, a8, a87951; XTENSA-ATOMIC-NEXT:    beqi a12, 1, .LBB116_47952; XTENSA-ATOMIC-NEXT:  .LBB116_2: # %atomicrmw.start7953; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=17954; XTENSA-ATOMIC-NEXT:    add a8, a11, a37955; XTENSA-ATOMIC-NEXT:    wsr a11, scompare17956; XTENSA-ATOMIC-NEXT:    s32c1i a8, a2, 07957; XTENSA-ATOMIC-NEXT:    or a12, a10, a107958; XTENSA-ATOMIC-NEXT:    beq a8, a11, .LBB116_17959; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start7960; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB116_2 Depth=17961; XTENSA-ATOMIC-NEXT:    or a12, a9, a97962; XTENSA-ATOMIC-NEXT:    j .LBB116_17963; XTENSA-ATOMIC-NEXT:  .LBB116_4: # %atomicrmw.end7964; XTENSA-ATOMIC-NEXT:    memw7965; XTENSA-ATOMIC-NEXT:    or a2, a8, a87966; XTENSA-ATOMIC-NEXT:    retw7967  %res = atomicrmw add ptr %a, i32 %b acquire7968  ret i32 %res7969}7970 7971define i32 @atomicrmw_add_i32_release(ptr %a, i32 %b) nounwind {7972; XTENSA-LABEL: atomicrmw_add_i32_release:7973; XTENSA:       # %bb.0:7974; XTENSA-NEXT:    entry a1, 327975; XTENSA-NEXT:    or a11, a3, a37976; XTENSA-NEXT:    or a10, a2, a27977; XTENSA-NEXT:    movi a12, 37978; XTENSA-NEXT:    l32r a8, .LCPI117_07979; XTENSA-NEXT:    callx8 a87980; XTENSA-NEXT:    or a2, a10, a107981; XTENSA-NEXT:    retw7982;7983; XTENSA-ATOMIC-LABEL: atomicrmw_add_i32_release:7984; XTENSA-ATOMIC:       # %bb.0:7985; XTENSA-ATOMIC-NEXT:    entry a1, 327986; XTENSA-ATOMIC-NEXT:    memw7987; XTENSA-ATOMIC-NEXT:    l32i a11, a2, 07988; XTENSA-ATOMIC-NEXT:    movi a9, 07989; XTENSA-ATOMIC-NEXT:    movi a10, 17990; XTENSA-ATOMIC-NEXT:    j .LBB117_27991; XTENSA-ATOMIC-NEXT:  .LBB117_1: # %atomicrmw.start7992; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB117_2 Depth=17993; XTENSA-ATOMIC-NEXT:    or a11, a8, a87994; XTENSA-ATOMIC-NEXT:    beqi a12, 1, .LBB117_47995; XTENSA-ATOMIC-NEXT:  .LBB117_2: # %atomicrmw.start7996; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=17997; XTENSA-ATOMIC-NEXT:    add a8, a11, a37998; XTENSA-ATOMIC-NEXT:    wsr a11, scompare17999; XTENSA-ATOMIC-NEXT:    s32c1i a8, a2, 08000; XTENSA-ATOMIC-NEXT:    or a12, a10, a108001; XTENSA-ATOMIC-NEXT:    beq a8, a11, .LBB117_18002; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start8003; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB117_2 Depth=18004; XTENSA-ATOMIC-NEXT:    or a12, a9, a98005; XTENSA-ATOMIC-NEXT:    j .LBB117_18006; XTENSA-ATOMIC-NEXT:  .LBB117_4: # %atomicrmw.end8007; XTENSA-ATOMIC-NEXT:    or a2, a8, a88008; XTENSA-ATOMIC-NEXT:    retw8009  %res = atomicrmw add ptr %a, i32 %b release8010  ret i32 %res8011}8012 8013define i32 @atomicrmw_add_i32_acq_rel(ptr %a, i32 %b) nounwind {8014; XTENSA-LABEL: atomicrmw_add_i32_acq_rel:8015; XTENSA:       # %bb.0:8016; XTENSA-NEXT:    entry a1, 328017; XTENSA-NEXT:    or a11, a3, a38018; XTENSA-NEXT:    or a10, a2, a28019; XTENSA-NEXT:    movi a12, 48020; XTENSA-NEXT:    l32r a8, .LCPI118_08021; XTENSA-NEXT:    callx8 a88022; XTENSA-NEXT:    or a2, a10, a108023; XTENSA-NEXT:    retw8024;8025; XTENSA-ATOMIC-LABEL: atomicrmw_add_i32_acq_rel:8026; XTENSA-ATOMIC:       # %bb.0:8027; XTENSA-ATOMIC-NEXT:    entry a1, 328028; XTENSA-ATOMIC-NEXT:    memw8029; XTENSA-ATOMIC-NEXT:    l32i a11, a2, 08030; XTENSA-ATOMIC-NEXT:    movi a9, 08031; XTENSA-ATOMIC-NEXT:    movi a10, 18032; XTENSA-ATOMIC-NEXT:    j .LBB118_28033; XTENSA-ATOMIC-NEXT:  .LBB118_1: # %atomicrmw.start8034; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB118_2 Depth=18035; XTENSA-ATOMIC-NEXT:    or a11, a8, a88036; XTENSA-ATOMIC-NEXT:    beqi a12, 1, .LBB118_48037; XTENSA-ATOMIC-NEXT:  .LBB118_2: # %atomicrmw.start8038; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=18039; XTENSA-ATOMIC-NEXT:    add a8, a11, a38040; XTENSA-ATOMIC-NEXT:    wsr a11, scompare18041; XTENSA-ATOMIC-NEXT:    s32c1i a8, a2, 08042; XTENSA-ATOMIC-NEXT:    or a12, a10, a108043; XTENSA-ATOMIC-NEXT:    beq a8, a11, .LBB118_18044; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start8045; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB118_2 Depth=18046; XTENSA-ATOMIC-NEXT:    or a12, a9, a98047; XTENSA-ATOMIC-NEXT:    j .LBB118_18048; XTENSA-ATOMIC-NEXT:  .LBB118_4: # %atomicrmw.end8049; XTENSA-ATOMIC-NEXT:    memw8050; XTENSA-ATOMIC-NEXT:    or a2, a8, a88051; XTENSA-ATOMIC-NEXT:    retw8052  %res = atomicrmw add ptr %a, i32 %b acq_rel8053  ret i32 %res8054}8055 8056define i32 @atomicrmw_add_i32_seq_cst(ptr %a, i32 %b) nounwind {8057; XTENSA-LABEL: atomicrmw_add_i32_seq_cst:8058; XTENSA:       # %bb.0:8059; XTENSA-NEXT:    entry a1, 328060; XTENSA-NEXT:    or a11, a3, a38061; XTENSA-NEXT:    or a10, a2, a28062; XTENSA-NEXT:    movi a12, 58063; XTENSA-NEXT:    l32r a8, .LCPI119_08064; XTENSA-NEXT:    callx8 a88065; XTENSA-NEXT:    or a2, a10, a108066; XTENSA-NEXT:    retw8067;8068; XTENSA-ATOMIC-LABEL: atomicrmw_add_i32_seq_cst:8069; XTENSA-ATOMIC:       # %bb.0:8070; XTENSA-ATOMIC-NEXT:    entry a1, 328071; XTENSA-ATOMIC-NEXT:    memw8072; XTENSA-ATOMIC-NEXT:    l32i a11, a2, 08073; XTENSA-ATOMIC-NEXT:    movi a9, 08074; XTENSA-ATOMIC-NEXT:    movi a10, 18075; XTENSA-ATOMIC-NEXT:    j .LBB119_28076; XTENSA-ATOMIC-NEXT:  .LBB119_1: # %atomicrmw.start8077; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB119_2 Depth=18078; XTENSA-ATOMIC-NEXT:    or a11, a8, a88079; XTENSA-ATOMIC-NEXT:    beqi a12, 1, .LBB119_48080; XTENSA-ATOMIC-NEXT:  .LBB119_2: # %atomicrmw.start8081; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=18082; XTENSA-ATOMIC-NEXT:    add a8, a11, a38083; XTENSA-ATOMIC-NEXT:    wsr a11, scompare18084; XTENSA-ATOMIC-NEXT:    s32c1i a8, a2, 08085; XTENSA-ATOMIC-NEXT:    or a12, a10, a108086; XTENSA-ATOMIC-NEXT:    beq a8, a11, .LBB119_18087; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start8088; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB119_2 Depth=18089; XTENSA-ATOMIC-NEXT:    or a12, a9, a98090; XTENSA-ATOMIC-NEXT:    j .LBB119_18091; XTENSA-ATOMIC-NEXT:  .LBB119_4: # %atomicrmw.end8092; XTENSA-ATOMIC-NEXT:    memw8093; XTENSA-ATOMIC-NEXT:    or a2, a8, a88094; XTENSA-ATOMIC-NEXT:    retw8095  %res = atomicrmw add ptr %a, i32 %b seq_cst8096  ret i32 %res8097}8098 8099define i32 @atomicrmw_sub_i32_monotonic(ptr %a, i32 %b) nounwind {8100; XTENSA-LABEL: atomicrmw_sub_i32_monotonic:8101; XTENSA:       # %bb.0:8102; XTENSA-NEXT:    entry a1, 328103; XTENSA-NEXT:    or a11, a3, a38104; XTENSA-NEXT:    or a10, a2, a28105; XTENSA-NEXT:    movi a12, 08106; XTENSA-NEXT:    l32r a8, .LCPI120_08107; XTENSA-NEXT:    callx8 a88108; XTENSA-NEXT:    or a2, a10, a108109; XTENSA-NEXT:    retw8110;8111; XTENSA-ATOMIC-LABEL: atomicrmw_sub_i32_monotonic:8112; XTENSA-ATOMIC:       # %bb.0:8113; XTENSA-ATOMIC-NEXT:    entry a1, 328114; XTENSA-ATOMIC-NEXT:    l32i a11, a2, 08115; XTENSA-ATOMIC-NEXT:    movi a9, 08116; XTENSA-ATOMIC-NEXT:    movi a10, 18117; XTENSA-ATOMIC-NEXT:    j .LBB120_28118; XTENSA-ATOMIC-NEXT:  .LBB120_1: # %atomicrmw.start8119; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB120_2 Depth=18120; XTENSA-ATOMIC-NEXT:    or a11, a8, a88121; XTENSA-ATOMIC-NEXT:    beqi a12, 1, .LBB120_48122; XTENSA-ATOMIC-NEXT:  .LBB120_2: # %atomicrmw.start8123; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=18124; XTENSA-ATOMIC-NEXT:    sub a8, a11, a38125; XTENSA-ATOMIC-NEXT:    wsr a11, scompare18126; XTENSA-ATOMIC-NEXT:    s32c1i a8, a2, 08127; XTENSA-ATOMIC-NEXT:    or a12, a10, a108128; XTENSA-ATOMIC-NEXT:    beq a8, a11, .LBB120_18129; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start8130; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB120_2 Depth=18131; XTENSA-ATOMIC-NEXT:    or a12, a9, a98132; XTENSA-ATOMIC-NEXT:    j .LBB120_18133; XTENSA-ATOMIC-NEXT:  .LBB120_4: # %atomicrmw.end8134; XTENSA-ATOMIC-NEXT:    or a2, a8, a88135; XTENSA-ATOMIC-NEXT:    retw8136  %res = atomicrmw sub ptr %a, i32 %b monotonic8137  ret i32 %res8138}8139 8140define i32 @atomicrmw_sub_i32_acquire(ptr %a, i32 %b) nounwind {8141; XTENSA-LABEL: atomicrmw_sub_i32_acquire:8142; XTENSA:       # %bb.0:8143; XTENSA-NEXT:    entry a1, 328144; XTENSA-NEXT:    or a11, a3, a38145; XTENSA-NEXT:    or a10, a2, a28146; XTENSA-NEXT:    movi a12, 28147; XTENSA-NEXT:    l32r a8, .LCPI121_08148; XTENSA-NEXT:    callx8 a88149; XTENSA-NEXT:    or a2, a10, a108150; XTENSA-NEXT:    retw8151;8152; XTENSA-ATOMIC-LABEL: atomicrmw_sub_i32_acquire:8153; XTENSA-ATOMIC:       # %bb.0:8154; XTENSA-ATOMIC-NEXT:    entry a1, 328155; XTENSA-ATOMIC-NEXT:    l32i a11, a2, 08156; XTENSA-ATOMIC-NEXT:    movi a9, 08157; XTENSA-ATOMIC-NEXT:    movi a10, 18158; XTENSA-ATOMIC-NEXT:    j .LBB121_28159; XTENSA-ATOMIC-NEXT:  .LBB121_1: # %atomicrmw.start8160; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB121_2 Depth=18161; XTENSA-ATOMIC-NEXT:    or a11, a8, a88162; XTENSA-ATOMIC-NEXT:    beqi a12, 1, .LBB121_48163; XTENSA-ATOMIC-NEXT:  .LBB121_2: # %atomicrmw.start8164; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=18165; XTENSA-ATOMIC-NEXT:    sub a8, a11, a38166; XTENSA-ATOMIC-NEXT:    wsr a11, scompare18167; XTENSA-ATOMIC-NEXT:    s32c1i a8, a2, 08168; XTENSA-ATOMIC-NEXT:    or a12, a10, a108169; XTENSA-ATOMIC-NEXT:    beq a8, a11, .LBB121_18170; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start8171; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB121_2 Depth=18172; XTENSA-ATOMIC-NEXT:    or a12, a9, a98173; XTENSA-ATOMIC-NEXT:    j .LBB121_18174; XTENSA-ATOMIC-NEXT:  .LBB121_4: # %atomicrmw.end8175; XTENSA-ATOMIC-NEXT:    memw8176; XTENSA-ATOMIC-NEXT:    or a2, a8, a88177; XTENSA-ATOMIC-NEXT:    retw8178  %res = atomicrmw sub ptr %a, i32 %b acquire8179  ret i32 %res8180}8181 8182define i32 @atomicrmw_sub_i32_release(ptr %a, i32 %b) nounwind {8183; XTENSA-LABEL: atomicrmw_sub_i32_release:8184; XTENSA:       # %bb.0:8185; XTENSA-NEXT:    entry a1, 328186; XTENSA-NEXT:    or a11, a3, a38187; XTENSA-NEXT:    or a10, a2, a28188; XTENSA-NEXT:    movi a12, 38189; XTENSA-NEXT:    l32r a8, .LCPI122_08190; XTENSA-NEXT:    callx8 a88191; XTENSA-NEXT:    or a2, a10, a108192; XTENSA-NEXT:    retw8193;8194; XTENSA-ATOMIC-LABEL: atomicrmw_sub_i32_release:8195; XTENSA-ATOMIC:       # %bb.0:8196; XTENSA-ATOMIC-NEXT:    entry a1, 328197; XTENSA-ATOMIC-NEXT:    memw8198; XTENSA-ATOMIC-NEXT:    l32i a11, a2, 08199; XTENSA-ATOMIC-NEXT:    movi a9, 08200; XTENSA-ATOMIC-NEXT:    movi a10, 18201; XTENSA-ATOMIC-NEXT:    j .LBB122_28202; XTENSA-ATOMIC-NEXT:  .LBB122_1: # %atomicrmw.start8203; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB122_2 Depth=18204; XTENSA-ATOMIC-NEXT:    or a11, a8, a88205; XTENSA-ATOMIC-NEXT:    beqi a12, 1, .LBB122_48206; XTENSA-ATOMIC-NEXT:  .LBB122_2: # %atomicrmw.start8207; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=18208; XTENSA-ATOMIC-NEXT:    sub a8, a11, a38209; XTENSA-ATOMIC-NEXT:    wsr a11, scompare18210; XTENSA-ATOMIC-NEXT:    s32c1i a8, a2, 08211; XTENSA-ATOMIC-NEXT:    or a12, a10, a108212; XTENSA-ATOMIC-NEXT:    beq a8, a11, .LBB122_18213; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start8214; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB122_2 Depth=18215; XTENSA-ATOMIC-NEXT:    or a12, a9, a98216; XTENSA-ATOMIC-NEXT:    j .LBB122_18217; XTENSA-ATOMIC-NEXT:  .LBB122_4: # %atomicrmw.end8218; XTENSA-ATOMIC-NEXT:    or a2, a8, a88219; XTENSA-ATOMIC-NEXT:    retw8220  %res = atomicrmw sub ptr %a, i32 %b release8221  ret i32 %res8222}8223 8224define i32 @atomicrmw_sub_i32_acq_rel(ptr %a, i32 %b) nounwind {8225; XTENSA-LABEL: atomicrmw_sub_i32_acq_rel:8226; XTENSA:       # %bb.0:8227; XTENSA-NEXT:    entry a1, 328228; XTENSA-NEXT:    or a11, a3, a38229; XTENSA-NEXT:    or a10, a2, a28230; XTENSA-NEXT:    movi a12, 48231; XTENSA-NEXT:    l32r a8, .LCPI123_08232; XTENSA-NEXT:    callx8 a88233; XTENSA-NEXT:    or a2, a10, a108234; XTENSA-NEXT:    retw8235;8236; XTENSA-ATOMIC-LABEL: atomicrmw_sub_i32_acq_rel:8237; XTENSA-ATOMIC:       # %bb.0:8238; XTENSA-ATOMIC-NEXT:    entry a1, 328239; XTENSA-ATOMIC-NEXT:    memw8240; XTENSA-ATOMIC-NEXT:    l32i a11, a2, 08241; XTENSA-ATOMIC-NEXT:    movi a9, 08242; XTENSA-ATOMIC-NEXT:    movi a10, 18243; XTENSA-ATOMIC-NEXT:    j .LBB123_28244; XTENSA-ATOMIC-NEXT:  .LBB123_1: # %atomicrmw.start8245; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB123_2 Depth=18246; XTENSA-ATOMIC-NEXT:    or a11, a8, a88247; XTENSA-ATOMIC-NEXT:    beqi a12, 1, .LBB123_48248; XTENSA-ATOMIC-NEXT:  .LBB123_2: # %atomicrmw.start8249; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=18250; XTENSA-ATOMIC-NEXT:    sub a8, a11, a38251; XTENSA-ATOMIC-NEXT:    wsr a11, scompare18252; XTENSA-ATOMIC-NEXT:    s32c1i a8, a2, 08253; XTENSA-ATOMIC-NEXT:    or a12, a10, a108254; XTENSA-ATOMIC-NEXT:    beq a8, a11, .LBB123_18255; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start8256; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB123_2 Depth=18257; XTENSA-ATOMIC-NEXT:    or a12, a9, a98258; XTENSA-ATOMIC-NEXT:    j .LBB123_18259; XTENSA-ATOMIC-NEXT:  .LBB123_4: # %atomicrmw.end8260; XTENSA-ATOMIC-NEXT:    memw8261; XTENSA-ATOMIC-NEXT:    or a2, a8, a88262; XTENSA-ATOMIC-NEXT:    retw8263  %res = atomicrmw sub ptr %a, i32 %b acq_rel8264  ret i32 %res8265}8266 8267define i32 @atomicrmw_sub_i32_seq_cst(ptr %a, i32 %b) nounwind {8268; XTENSA-LABEL: atomicrmw_sub_i32_seq_cst:8269; XTENSA:       # %bb.0:8270; XTENSA-NEXT:    entry a1, 328271; XTENSA-NEXT:    or a11, a3, a38272; XTENSA-NEXT:    or a10, a2, a28273; XTENSA-NEXT:    movi a12, 58274; XTENSA-NEXT:    l32r a8, .LCPI124_08275; XTENSA-NEXT:    callx8 a88276; XTENSA-NEXT:    or a2, a10, a108277; XTENSA-NEXT:    retw8278;8279; XTENSA-ATOMIC-LABEL: atomicrmw_sub_i32_seq_cst:8280; XTENSA-ATOMIC:       # %bb.0:8281; XTENSA-ATOMIC-NEXT:    entry a1, 328282; XTENSA-ATOMIC-NEXT:    memw8283; XTENSA-ATOMIC-NEXT:    l32i a11, a2, 08284; XTENSA-ATOMIC-NEXT:    movi a9, 08285; XTENSA-ATOMIC-NEXT:    movi a10, 18286; XTENSA-ATOMIC-NEXT:    j .LBB124_28287; XTENSA-ATOMIC-NEXT:  .LBB124_1: # %atomicrmw.start8288; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB124_2 Depth=18289; XTENSA-ATOMIC-NEXT:    or a11, a8, a88290; XTENSA-ATOMIC-NEXT:    beqi a12, 1, .LBB124_48291; XTENSA-ATOMIC-NEXT:  .LBB124_2: # %atomicrmw.start8292; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=18293; XTENSA-ATOMIC-NEXT:    sub a8, a11, a38294; XTENSA-ATOMIC-NEXT:    wsr a11, scompare18295; XTENSA-ATOMIC-NEXT:    s32c1i a8, a2, 08296; XTENSA-ATOMIC-NEXT:    or a12, a10, a108297; XTENSA-ATOMIC-NEXT:    beq a8, a11, .LBB124_18298; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start8299; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB124_2 Depth=18300; XTENSA-ATOMIC-NEXT:    or a12, a9, a98301; XTENSA-ATOMIC-NEXT:    j .LBB124_18302; XTENSA-ATOMIC-NEXT:  .LBB124_4: # %atomicrmw.end8303; XTENSA-ATOMIC-NEXT:    memw8304; XTENSA-ATOMIC-NEXT:    or a2, a8, a88305; XTENSA-ATOMIC-NEXT:    retw8306  %res = atomicrmw sub ptr %a, i32 %b seq_cst8307  ret i32 %res8308}8309 8310define i32 @atomicrmw_and_i32_monotonic(ptr %a, i32 %b) nounwind {8311; XTENSA-LABEL: atomicrmw_and_i32_monotonic:8312; XTENSA:       # %bb.0:8313; XTENSA-NEXT:    entry a1, 328314; XTENSA-NEXT:    or a11, a3, a38315; XTENSA-NEXT:    or a10, a2, a28316; XTENSA-NEXT:    movi a12, 08317; XTENSA-NEXT:    l32r a8, .LCPI125_08318; XTENSA-NEXT:    callx8 a88319; XTENSA-NEXT:    or a2, a10, a108320; XTENSA-NEXT:    retw8321;8322; XTENSA-ATOMIC-LABEL: atomicrmw_and_i32_monotonic:8323; XTENSA-ATOMIC:       # %bb.0:8324; XTENSA-ATOMIC-NEXT:    entry a1, 328325; XTENSA-ATOMIC-NEXT:    l32i a11, a2, 08326; XTENSA-ATOMIC-NEXT:    movi a9, 08327; XTENSA-ATOMIC-NEXT:    movi a10, 18328; XTENSA-ATOMIC-NEXT:    j .LBB125_28329; XTENSA-ATOMIC-NEXT:  .LBB125_1: # %atomicrmw.start8330; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB125_2 Depth=18331; XTENSA-ATOMIC-NEXT:    or a11, a8, a88332; XTENSA-ATOMIC-NEXT:    beqi a12, 1, .LBB125_48333; XTENSA-ATOMIC-NEXT:  .LBB125_2: # %atomicrmw.start8334; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=18335; XTENSA-ATOMIC-NEXT:    and a8, a11, a38336; XTENSA-ATOMIC-NEXT:    wsr a11, scompare18337; XTENSA-ATOMIC-NEXT:    s32c1i a8, a2, 08338; XTENSA-ATOMIC-NEXT:    or a12, a10, a108339; XTENSA-ATOMIC-NEXT:    beq a8, a11, .LBB125_18340; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start8341; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB125_2 Depth=18342; XTENSA-ATOMIC-NEXT:    or a12, a9, a98343; XTENSA-ATOMIC-NEXT:    j .LBB125_18344; XTENSA-ATOMIC-NEXT:  .LBB125_4: # %atomicrmw.end8345; XTENSA-ATOMIC-NEXT:    or a2, a8, a88346; XTENSA-ATOMIC-NEXT:    retw8347  %res = atomicrmw and ptr %a, i32 %b monotonic8348  ret i32 %res8349}8350 8351define i32 @atomicrmw_and_i32_acquire(ptr %a, i32 %b) nounwind {8352; XTENSA-LABEL: atomicrmw_and_i32_acquire:8353; XTENSA:       # %bb.0:8354; XTENSA-NEXT:    entry a1, 328355; XTENSA-NEXT:    or a11, a3, a38356; XTENSA-NEXT:    or a10, a2, a28357; XTENSA-NEXT:    movi a12, 28358; XTENSA-NEXT:    l32r a8, .LCPI126_08359; XTENSA-NEXT:    callx8 a88360; XTENSA-NEXT:    or a2, a10, a108361; XTENSA-NEXT:    retw8362;8363; XTENSA-ATOMIC-LABEL: atomicrmw_and_i32_acquire:8364; XTENSA-ATOMIC:       # %bb.0:8365; XTENSA-ATOMIC-NEXT:    entry a1, 328366; XTENSA-ATOMIC-NEXT:    l32i a11, a2, 08367; XTENSA-ATOMIC-NEXT:    movi a9, 08368; XTENSA-ATOMIC-NEXT:    movi a10, 18369; XTENSA-ATOMIC-NEXT:    j .LBB126_28370; XTENSA-ATOMIC-NEXT:  .LBB126_1: # %atomicrmw.start8371; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB126_2 Depth=18372; XTENSA-ATOMIC-NEXT:    or a11, a8, a88373; XTENSA-ATOMIC-NEXT:    beqi a12, 1, .LBB126_48374; XTENSA-ATOMIC-NEXT:  .LBB126_2: # %atomicrmw.start8375; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=18376; XTENSA-ATOMIC-NEXT:    and a8, a11, a38377; XTENSA-ATOMIC-NEXT:    wsr a11, scompare18378; XTENSA-ATOMIC-NEXT:    s32c1i a8, a2, 08379; XTENSA-ATOMIC-NEXT:    or a12, a10, a108380; XTENSA-ATOMIC-NEXT:    beq a8, a11, .LBB126_18381; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start8382; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB126_2 Depth=18383; XTENSA-ATOMIC-NEXT:    or a12, a9, a98384; XTENSA-ATOMIC-NEXT:    j .LBB126_18385; XTENSA-ATOMIC-NEXT:  .LBB126_4: # %atomicrmw.end8386; XTENSA-ATOMIC-NEXT:    memw8387; XTENSA-ATOMIC-NEXT:    or a2, a8, a88388; XTENSA-ATOMIC-NEXT:    retw8389  %res = atomicrmw and ptr %a, i32 %b acquire8390  ret i32 %res8391}8392 8393define i32 @atomicrmw_and_i32_release(ptr %a, i32 %b) nounwind {8394; XTENSA-LABEL: atomicrmw_and_i32_release:8395; XTENSA:       # %bb.0:8396; XTENSA-NEXT:    entry a1, 328397; XTENSA-NEXT:    or a11, a3, a38398; XTENSA-NEXT:    or a10, a2, a28399; XTENSA-NEXT:    movi a12, 38400; XTENSA-NEXT:    l32r a8, .LCPI127_08401; XTENSA-NEXT:    callx8 a88402; XTENSA-NEXT:    or a2, a10, a108403; XTENSA-NEXT:    retw8404;8405; XTENSA-ATOMIC-LABEL: atomicrmw_and_i32_release:8406; XTENSA-ATOMIC:       # %bb.0:8407; XTENSA-ATOMIC-NEXT:    entry a1, 328408; XTENSA-ATOMIC-NEXT:    memw8409; XTENSA-ATOMIC-NEXT:    l32i a11, a2, 08410; XTENSA-ATOMIC-NEXT:    movi a9, 08411; XTENSA-ATOMIC-NEXT:    movi a10, 18412; XTENSA-ATOMIC-NEXT:    j .LBB127_28413; XTENSA-ATOMIC-NEXT:  .LBB127_1: # %atomicrmw.start8414; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB127_2 Depth=18415; XTENSA-ATOMIC-NEXT:    or a11, a8, a88416; XTENSA-ATOMIC-NEXT:    beqi a12, 1, .LBB127_48417; XTENSA-ATOMIC-NEXT:  .LBB127_2: # %atomicrmw.start8418; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=18419; XTENSA-ATOMIC-NEXT:    and a8, a11, a38420; XTENSA-ATOMIC-NEXT:    wsr a11, scompare18421; XTENSA-ATOMIC-NEXT:    s32c1i a8, a2, 08422; XTENSA-ATOMIC-NEXT:    or a12, a10, a108423; XTENSA-ATOMIC-NEXT:    beq a8, a11, .LBB127_18424; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start8425; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB127_2 Depth=18426; XTENSA-ATOMIC-NEXT:    or a12, a9, a98427; XTENSA-ATOMIC-NEXT:    j .LBB127_18428; XTENSA-ATOMIC-NEXT:  .LBB127_4: # %atomicrmw.end8429; XTENSA-ATOMIC-NEXT:    or a2, a8, a88430; XTENSA-ATOMIC-NEXT:    retw8431  %res = atomicrmw and ptr %a, i32 %b release8432  ret i32 %res8433}8434 8435define i32 @atomicrmw_and_i32_acq_rel(ptr %a, i32 %b) nounwind {8436; XTENSA-LABEL: atomicrmw_and_i32_acq_rel:8437; XTENSA:       # %bb.0:8438; XTENSA-NEXT:    entry a1, 328439; XTENSA-NEXT:    or a11, a3, a38440; XTENSA-NEXT:    or a10, a2, a28441; XTENSA-NEXT:    movi a12, 48442; XTENSA-NEXT:    l32r a8, .LCPI128_08443; XTENSA-NEXT:    callx8 a88444; XTENSA-NEXT:    or a2, a10, a108445; XTENSA-NEXT:    retw8446;8447; XTENSA-ATOMIC-LABEL: atomicrmw_and_i32_acq_rel:8448; XTENSA-ATOMIC:       # %bb.0:8449; XTENSA-ATOMIC-NEXT:    entry a1, 328450; XTENSA-ATOMIC-NEXT:    memw8451; XTENSA-ATOMIC-NEXT:    l32i a11, a2, 08452; XTENSA-ATOMIC-NEXT:    movi a9, 08453; XTENSA-ATOMIC-NEXT:    movi a10, 18454; XTENSA-ATOMIC-NEXT:    j .LBB128_28455; XTENSA-ATOMIC-NEXT:  .LBB128_1: # %atomicrmw.start8456; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB128_2 Depth=18457; XTENSA-ATOMIC-NEXT:    or a11, a8, a88458; XTENSA-ATOMIC-NEXT:    beqi a12, 1, .LBB128_48459; XTENSA-ATOMIC-NEXT:  .LBB128_2: # %atomicrmw.start8460; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=18461; XTENSA-ATOMIC-NEXT:    and a8, a11, a38462; XTENSA-ATOMIC-NEXT:    wsr a11, scompare18463; XTENSA-ATOMIC-NEXT:    s32c1i a8, a2, 08464; XTENSA-ATOMIC-NEXT:    or a12, a10, a108465; XTENSA-ATOMIC-NEXT:    beq a8, a11, .LBB128_18466; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start8467; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB128_2 Depth=18468; XTENSA-ATOMIC-NEXT:    or a12, a9, a98469; XTENSA-ATOMIC-NEXT:    j .LBB128_18470; XTENSA-ATOMIC-NEXT:  .LBB128_4: # %atomicrmw.end8471; XTENSA-ATOMIC-NEXT:    memw8472; XTENSA-ATOMIC-NEXT:    or a2, a8, a88473; XTENSA-ATOMIC-NEXT:    retw8474  %res = atomicrmw and ptr %a, i32 %b acq_rel8475  ret i32 %res8476}8477 8478define i32 @atomicrmw_and_i32_seq_cst(ptr %a, i32 %b) nounwind {8479; XTENSA-LABEL: atomicrmw_and_i32_seq_cst:8480; XTENSA:       # %bb.0:8481; XTENSA-NEXT:    entry a1, 328482; XTENSA-NEXT:    or a11, a3, a38483; XTENSA-NEXT:    or a10, a2, a28484; XTENSA-NEXT:    movi a12, 58485; XTENSA-NEXT:    l32r a8, .LCPI129_08486; XTENSA-NEXT:    callx8 a88487; XTENSA-NEXT:    or a2, a10, a108488; XTENSA-NEXT:    retw8489;8490; XTENSA-ATOMIC-LABEL: atomicrmw_and_i32_seq_cst:8491; XTENSA-ATOMIC:       # %bb.0:8492; XTENSA-ATOMIC-NEXT:    entry a1, 328493; XTENSA-ATOMIC-NEXT:    memw8494; XTENSA-ATOMIC-NEXT:    l32i a11, a2, 08495; XTENSA-ATOMIC-NEXT:    movi a9, 08496; XTENSA-ATOMIC-NEXT:    movi a10, 18497; XTENSA-ATOMIC-NEXT:    j .LBB129_28498; XTENSA-ATOMIC-NEXT:  .LBB129_1: # %atomicrmw.start8499; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB129_2 Depth=18500; XTENSA-ATOMIC-NEXT:    or a11, a8, a88501; XTENSA-ATOMIC-NEXT:    beqi a12, 1, .LBB129_48502; XTENSA-ATOMIC-NEXT:  .LBB129_2: # %atomicrmw.start8503; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=18504; XTENSA-ATOMIC-NEXT:    and a8, a11, a38505; XTENSA-ATOMIC-NEXT:    wsr a11, scompare18506; XTENSA-ATOMIC-NEXT:    s32c1i a8, a2, 08507; XTENSA-ATOMIC-NEXT:    or a12, a10, a108508; XTENSA-ATOMIC-NEXT:    beq a8, a11, .LBB129_18509; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start8510; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB129_2 Depth=18511; XTENSA-ATOMIC-NEXT:    or a12, a9, a98512; XTENSA-ATOMIC-NEXT:    j .LBB129_18513; XTENSA-ATOMIC-NEXT:  .LBB129_4: # %atomicrmw.end8514; XTENSA-ATOMIC-NEXT:    memw8515; XTENSA-ATOMIC-NEXT:    or a2, a8, a88516; XTENSA-ATOMIC-NEXT:    retw8517  %res = atomicrmw and ptr %a, i32 %b seq_cst8518  ret i32 %res8519}8520 8521;define i32 @atomicrmw_nand_i32_monotonic(ptr %a, i32 %b) nounwind {8522;  %res = atomicrmw nand ptr %a, i32 %b monotonic8523;  ret i32 %res8524;}8525;8526;define i32 @atomicrmw_nand_i32_acquire(ptr %a, i32 %b) nounwind {8527;  %res = atomicrmw nand ptr %a, i32 %b acquire8528;  ret i32 %res8529;}8530;8531;define i32 @atomicrmw_nand_i32_release(ptr %a, i32 %b) nounwind {8532;  %res = atomicrmw nand ptr %a, i32 %b release8533;  ret i32 %res8534;}8535;8536;define i32 @atomicrmw_nand_i32_acq_rel(ptr %a, i32 %b) nounwind {8537;  %res = atomicrmw nand ptr %a, i32 %b acq_rel8538;  ret i32 %res8539;}8540;8541;define i32 @atomicrmw_nand_i32_seq_cst(ptr %a, i32 %b) nounwind {8542;  %res = atomicrmw nand ptr %a, i32 %b seq_cst8543;  ret i32 %res8544;}8545 8546define i32 @atomicrmw_or_i32_monotonic(ptr %a, i32 %b) nounwind {8547; XTENSA-LABEL: atomicrmw_or_i32_monotonic:8548; XTENSA:       # %bb.0:8549; XTENSA-NEXT:    entry a1, 328550; XTENSA-NEXT:    or a11, a3, a38551; XTENSA-NEXT:    or a10, a2, a28552; XTENSA-NEXT:    movi a12, 08553; XTENSA-NEXT:    l32r a8, .LCPI130_08554; XTENSA-NEXT:    callx8 a88555; XTENSA-NEXT:    or a2, a10, a108556; XTENSA-NEXT:    retw8557;8558; XTENSA-ATOMIC-LABEL: atomicrmw_or_i32_monotonic:8559; XTENSA-ATOMIC:       # %bb.0:8560; XTENSA-ATOMIC-NEXT:    entry a1, 328561; XTENSA-ATOMIC-NEXT:    l32i a11, a2, 08562; XTENSA-ATOMIC-NEXT:    movi a9, 08563; XTENSA-ATOMIC-NEXT:    movi a10, 18564; XTENSA-ATOMIC-NEXT:    j .LBB130_28565; XTENSA-ATOMIC-NEXT:  .LBB130_1: # %atomicrmw.start8566; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB130_2 Depth=18567; XTENSA-ATOMIC-NEXT:    or a11, a8, a88568; XTENSA-ATOMIC-NEXT:    beqi a12, 1, .LBB130_48569; XTENSA-ATOMIC-NEXT:  .LBB130_2: # %atomicrmw.start8570; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=18571; XTENSA-ATOMIC-NEXT:    or a8, a11, a38572; XTENSA-ATOMIC-NEXT:    wsr a11, scompare18573; XTENSA-ATOMIC-NEXT:    s32c1i a8, a2, 08574; XTENSA-ATOMIC-NEXT:    or a12, a10, a108575; XTENSA-ATOMIC-NEXT:    beq a8, a11, .LBB130_18576; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start8577; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB130_2 Depth=18578; XTENSA-ATOMIC-NEXT:    or a12, a9, a98579; XTENSA-ATOMIC-NEXT:    j .LBB130_18580; XTENSA-ATOMIC-NEXT:  .LBB130_4: # %atomicrmw.end8581; XTENSA-ATOMIC-NEXT:    or a2, a8, a88582; XTENSA-ATOMIC-NEXT:    retw8583  %res = atomicrmw or ptr %a, i32 %b monotonic8584  ret i32 %res8585}8586 8587define i32 @atomicrmw_or_i32_acquire(ptr %a, i32 %b) nounwind {8588; XTENSA-LABEL: atomicrmw_or_i32_acquire:8589; XTENSA:       # %bb.0:8590; XTENSA-NEXT:    entry a1, 328591; XTENSA-NEXT:    or a11, a3, a38592; XTENSA-NEXT:    or a10, a2, a28593; XTENSA-NEXT:    movi a12, 28594; XTENSA-NEXT:    l32r a8, .LCPI131_08595; XTENSA-NEXT:    callx8 a88596; XTENSA-NEXT:    or a2, a10, a108597; XTENSA-NEXT:    retw8598;8599; XTENSA-ATOMIC-LABEL: atomicrmw_or_i32_acquire:8600; XTENSA-ATOMIC:       # %bb.0:8601; XTENSA-ATOMIC-NEXT:    entry a1, 328602; XTENSA-ATOMIC-NEXT:    l32i a11, a2, 08603; XTENSA-ATOMIC-NEXT:    movi a9, 08604; XTENSA-ATOMIC-NEXT:    movi a10, 18605; XTENSA-ATOMIC-NEXT:    j .LBB131_28606; XTENSA-ATOMIC-NEXT:  .LBB131_1: # %atomicrmw.start8607; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB131_2 Depth=18608; XTENSA-ATOMIC-NEXT:    or a11, a8, a88609; XTENSA-ATOMIC-NEXT:    beqi a12, 1, .LBB131_48610; XTENSA-ATOMIC-NEXT:  .LBB131_2: # %atomicrmw.start8611; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=18612; XTENSA-ATOMIC-NEXT:    or a8, a11, a38613; XTENSA-ATOMIC-NEXT:    wsr a11, scompare18614; XTENSA-ATOMIC-NEXT:    s32c1i a8, a2, 08615; XTENSA-ATOMIC-NEXT:    or a12, a10, a108616; XTENSA-ATOMIC-NEXT:    beq a8, a11, .LBB131_18617; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start8618; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB131_2 Depth=18619; XTENSA-ATOMIC-NEXT:    or a12, a9, a98620; XTENSA-ATOMIC-NEXT:    j .LBB131_18621; XTENSA-ATOMIC-NEXT:  .LBB131_4: # %atomicrmw.end8622; XTENSA-ATOMIC-NEXT:    memw8623; XTENSA-ATOMIC-NEXT:    or a2, a8, a88624; XTENSA-ATOMIC-NEXT:    retw8625  %res = atomicrmw or ptr %a, i32 %b acquire8626  ret i32 %res8627}8628 8629define i32 @atomicrmw_or_i32_release(ptr %a, i32 %b) nounwind {8630; XTENSA-LABEL: atomicrmw_or_i32_release:8631; XTENSA:       # %bb.0:8632; XTENSA-NEXT:    entry a1, 328633; XTENSA-NEXT:    or a11, a3, a38634; XTENSA-NEXT:    or a10, a2, a28635; XTENSA-NEXT:    movi a12, 38636; XTENSA-NEXT:    l32r a8, .LCPI132_08637; XTENSA-NEXT:    callx8 a88638; XTENSA-NEXT:    or a2, a10, a108639; XTENSA-NEXT:    retw8640;8641; XTENSA-ATOMIC-LABEL: atomicrmw_or_i32_release:8642; XTENSA-ATOMIC:       # %bb.0:8643; XTENSA-ATOMIC-NEXT:    entry a1, 328644; XTENSA-ATOMIC-NEXT:    memw8645; XTENSA-ATOMIC-NEXT:    l32i a11, a2, 08646; XTENSA-ATOMIC-NEXT:    movi a9, 08647; XTENSA-ATOMIC-NEXT:    movi a10, 18648; XTENSA-ATOMIC-NEXT:    j .LBB132_28649; XTENSA-ATOMIC-NEXT:  .LBB132_1: # %atomicrmw.start8650; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB132_2 Depth=18651; XTENSA-ATOMIC-NEXT:    or a11, a8, a88652; XTENSA-ATOMIC-NEXT:    beqi a12, 1, .LBB132_48653; XTENSA-ATOMIC-NEXT:  .LBB132_2: # %atomicrmw.start8654; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=18655; XTENSA-ATOMIC-NEXT:    or a8, a11, a38656; XTENSA-ATOMIC-NEXT:    wsr a11, scompare18657; XTENSA-ATOMIC-NEXT:    s32c1i a8, a2, 08658; XTENSA-ATOMIC-NEXT:    or a12, a10, a108659; XTENSA-ATOMIC-NEXT:    beq a8, a11, .LBB132_18660; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start8661; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB132_2 Depth=18662; XTENSA-ATOMIC-NEXT:    or a12, a9, a98663; XTENSA-ATOMIC-NEXT:    j .LBB132_18664; XTENSA-ATOMIC-NEXT:  .LBB132_4: # %atomicrmw.end8665; XTENSA-ATOMIC-NEXT:    or a2, a8, a88666; XTENSA-ATOMIC-NEXT:    retw8667  %res = atomicrmw or ptr %a, i32 %b release8668  ret i32 %res8669}8670 8671define i32 @atomicrmw_or_i32_acq_rel(ptr %a, i32 %b) nounwind {8672; XTENSA-LABEL: atomicrmw_or_i32_acq_rel:8673; XTENSA:       # %bb.0:8674; XTENSA-NEXT:    entry a1, 328675; XTENSA-NEXT:    or a11, a3, a38676; XTENSA-NEXT:    or a10, a2, a28677; XTENSA-NEXT:    movi a12, 48678; XTENSA-NEXT:    l32r a8, .LCPI133_08679; XTENSA-NEXT:    callx8 a88680; XTENSA-NEXT:    or a2, a10, a108681; XTENSA-NEXT:    retw8682;8683; XTENSA-ATOMIC-LABEL: atomicrmw_or_i32_acq_rel:8684; XTENSA-ATOMIC:       # %bb.0:8685; XTENSA-ATOMIC-NEXT:    entry a1, 328686; XTENSA-ATOMIC-NEXT:    memw8687; XTENSA-ATOMIC-NEXT:    l32i a11, a2, 08688; XTENSA-ATOMIC-NEXT:    movi a9, 08689; XTENSA-ATOMIC-NEXT:    movi a10, 18690; XTENSA-ATOMIC-NEXT:    j .LBB133_28691; XTENSA-ATOMIC-NEXT:  .LBB133_1: # %atomicrmw.start8692; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB133_2 Depth=18693; XTENSA-ATOMIC-NEXT:    or a11, a8, a88694; XTENSA-ATOMIC-NEXT:    beqi a12, 1, .LBB133_48695; XTENSA-ATOMIC-NEXT:  .LBB133_2: # %atomicrmw.start8696; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=18697; XTENSA-ATOMIC-NEXT:    or a8, a11, a38698; XTENSA-ATOMIC-NEXT:    wsr a11, scompare18699; XTENSA-ATOMIC-NEXT:    s32c1i a8, a2, 08700; XTENSA-ATOMIC-NEXT:    or a12, a10, a108701; XTENSA-ATOMIC-NEXT:    beq a8, a11, .LBB133_18702; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start8703; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB133_2 Depth=18704; XTENSA-ATOMIC-NEXT:    or a12, a9, a98705; XTENSA-ATOMIC-NEXT:    j .LBB133_18706; XTENSA-ATOMIC-NEXT:  .LBB133_4: # %atomicrmw.end8707; XTENSA-ATOMIC-NEXT:    memw8708; XTENSA-ATOMIC-NEXT:    or a2, a8, a88709; XTENSA-ATOMIC-NEXT:    retw8710  %res = atomicrmw or ptr %a, i32 %b acq_rel8711  ret i32 %res8712}8713 8714define i32 @atomicrmw_or_i32_seq_cst(ptr %a, i32 %b) nounwind {8715; XTENSA-LABEL: atomicrmw_or_i32_seq_cst:8716; XTENSA:       # %bb.0:8717; XTENSA-NEXT:    entry a1, 328718; XTENSA-NEXT:    or a11, a3, a38719; XTENSA-NEXT:    or a10, a2, a28720; XTENSA-NEXT:    movi a12, 58721; XTENSA-NEXT:    l32r a8, .LCPI134_08722; XTENSA-NEXT:    callx8 a88723; XTENSA-NEXT:    or a2, a10, a108724; XTENSA-NEXT:    retw8725;8726; XTENSA-ATOMIC-LABEL: atomicrmw_or_i32_seq_cst:8727; XTENSA-ATOMIC:       # %bb.0:8728; XTENSA-ATOMIC-NEXT:    entry a1, 328729; XTENSA-ATOMIC-NEXT:    memw8730; XTENSA-ATOMIC-NEXT:    l32i a11, a2, 08731; XTENSA-ATOMIC-NEXT:    movi a9, 08732; XTENSA-ATOMIC-NEXT:    movi a10, 18733; XTENSA-ATOMIC-NEXT:    j .LBB134_28734; XTENSA-ATOMIC-NEXT:  .LBB134_1: # %atomicrmw.start8735; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB134_2 Depth=18736; XTENSA-ATOMIC-NEXT:    or a11, a8, a88737; XTENSA-ATOMIC-NEXT:    beqi a12, 1, .LBB134_48738; XTENSA-ATOMIC-NEXT:  .LBB134_2: # %atomicrmw.start8739; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=18740; XTENSA-ATOMIC-NEXT:    or a8, a11, a38741; XTENSA-ATOMIC-NEXT:    wsr a11, scompare18742; XTENSA-ATOMIC-NEXT:    s32c1i a8, a2, 08743; XTENSA-ATOMIC-NEXT:    or a12, a10, a108744; XTENSA-ATOMIC-NEXT:    beq a8, a11, .LBB134_18745; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start8746; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB134_2 Depth=18747; XTENSA-ATOMIC-NEXT:    or a12, a9, a98748; XTENSA-ATOMIC-NEXT:    j .LBB134_18749; XTENSA-ATOMIC-NEXT:  .LBB134_4: # %atomicrmw.end8750; XTENSA-ATOMIC-NEXT:    memw8751; XTENSA-ATOMIC-NEXT:    or a2, a8, a88752; XTENSA-ATOMIC-NEXT:    retw8753  %res = atomicrmw or ptr %a, i32 %b seq_cst8754  ret i32 %res8755}8756 8757define i32 @atomicrmw_xor_i32_monotonic(ptr %a, i32 %b) nounwind {8758; XTENSA-LABEL: atomicrmw_xor_i32_monotonic:8759; XTENSA:       # %bb.0:8760; XTENSA-NEXT:    entry a1, 328761; XTENSA-NEXT:    or a11, a3, a38762; XTENSA-NEXT:    or a10, a2, a28763; XTENSA-NEXT:    movi a12, 08764; XTENSA-NEXT:    l32r a8, .LCPI135_08765; XTENSA-NEXT:    callx8 a88766; XTENSA-NEXT:    or a2, a10, a108767; XTENSA-NEXT:    retw8768;8769; XTENSA-ATOMIC-LABEL: atomicrmw_xor_i32_monotonic:8770; XTENSA-ATOMIC:       # %bb.0:8771; XTENSA-ATOMIC-NEXT:    entry a1, 328772; XTENSA-ATOMIC-NEXT:    l32i a11, a2, 08773; XTENSA-ATOMIC-NEXT:    movi a9, 08774; XTENSA-ATOMIC-NEXT:    movi a10, 18775; XTENSA-ATOMIC-NEXT:    j .LBB135_28776; XTENSA-ATOMIC-NEXT:  .LBB135_1: # %atomicrmw.start8777; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB135_2 Depth=18778; XTENSA-ATOMIC-NEXT:    or a11, a8, a88779; XTENSA-ATOMIC-NEXT:    beqi a12, 1, .LBB135_48780; XTENSA-ATOMIC-NEXT:  .LBB135_2: # %atomicrmw.start8781; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=18782; XTENSA-ATOMIC-NEXT:    xor a8, a11, a38783; XTENSA-ATOMIC-NEXT:    wsr a11, scompare18784; XTENSA-ATOMIC-NEXT:    s32c1i a8, a2, 08785; XTENSA-ATOMIC-NEXT:    or a12, a10, a108786; XTENSA-ATOMIC-NEXT:    beq a8, a11, .LBB135_18787; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start8788; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB135_2 Depth=18789; XTENSA-ATOMIC-NEXT:    or a12, a9, a98790; XTENSA-ATOMIC-NEXT:    j .LBB135_18791; XTENSA-ATOMIC-NEXT:  .LBB135_4: # %atomicrmw.end8792; XTENSA-ATOMIC-NEXT:    or a2, a8, a88793; XTENSA-ATOMIC-NEXT:    retw8794  %res = atomicrmw xor ptr %a, i32 %b monotonic8795  ret i32 %res8796}8797 8798define i32 @atomicrmw_xor_i32_acquire(ptr %a, i32 %b) nounwind {8799; XTENSA-LABEL: atomicrmw_xor_i32_acquire:8800; XTENSA:       # %bb.0:8801; XTENSA-NEXT:    entry a1, 328802; XTENSA-NEXT:    or a11, a3, a38803; XTENSA-NEXT:    or a10, a2, a28804; XTENSA-NEXT:    movi a12, 28805; XTENSA-NEXT:    l32r a8, .LCPI136_08806; XTENSA-NEXT:    callx8 a88807; XTENSA-NEXT:    or a2, a10, a108808; XTENSA-NEXT:    retw8809;8810; XTENSA-ATOMIC-LABEL: atomicrmw_xor_i32_acquire:8811; XTENSA-ATOMIC:       # %bb.0:8812; XTENSA-ATOMIC-NEXT:    entry a1, 328813; XTENSA-ATOMIC-NEXT:    l32i a11, a2, 08814; XTENSA-ATOMIC-NEXT:    movi a9, 08815; XTENSA-ATOMIC-NEXT:    movi a10, 18816; XTENSA-ATOMIC-NEXT:    j .LBB136_28817; XTENSA-ATOMIC-NEXT:  .LBB136_1: # %atomicrmw.start8818; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB136_2 Depth=18819; XTENSA-ATOMIC-NEXT:    or a11, a8, a88820; XTENSA-ATOMIC-NEXT:    beqi a12, 1, .LBB136_48821; XTENSA-ATOMIC-NEXT:  .LBB136_2: # %atomicrmw.start8822; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=18823; XTENSA-ATOMIC-NEXT:    xor a8, a11, a38824; XTENSA-ATOMIC-NEXT:    wsr a11, scompare18825; XTENSA-ATOMIC-NEXT:    s32c1i a8, a2, 08826; XTENSA-ATOMIC-NEXT:    or a12, a10, a108827; XTENSA-ATOMIC-NEXT:    beq a8, a11, .LBB136_18828; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start8829; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB136_2 Depth=18830; XTENSA-ATOMIC-NEXT:    or a12, a9, a98831; XTENSA-ATOMIC-NEXT:    j .LBB136_18832; XTENSA-ATOMIC-NEXT:  .LBB136_4: # %atomicrmw.end8833; XTENSA-ATOMIC-NEXT:    memw8834; XTENSA-ATOMIC-NEXT:    or a2, a8, a88835; XTENSA-ATOMIC-NEXT:    retw8836  %res = atomicrmw xor ptr %a, i32 %b acquire8837  ret i32 %res8838}8839 8840define i32 @atomicrmw_xor_i32_release(ptr %a, i32 %b) nounwind {8841; XTENSA-LABEL: atomicrmw_xor_i32_release:8842; XTENSA:       # %bb.0:8843; XTENSA-NEXT:    entry a1, 328844; XTENSA-NEXT:    or a11, a3, a38845; XTENSA-NEXT:    or a10, a2, a28846; XTENSA-NEXT:    movi a12, 38847; XTENSA-NEXT:    l32r a8, .LCPI137_08848; XTENSA-NEXT:    callx8 a88849; XTENSA-NEXT:    or a2, a10, a108850; XTENSA-NEXT:    retw8851;8852; XTENSA-ATOMIC-LABEL: atomicrmw_xor_i32_release:8853; XTENSA-ATOMIC:       # %bb.0:8854; XTENSA-ATOMIC-NEXT:    entry a1, 328855; XTENSA-ATOMIC-NEXT:    memw8856; XTENSA-ATOMIC-NEXT:    l32i a11, a2, 08857; XTENSA-ATOMIC-NEXT:    movi a9, 08858; XTENSA-ATOMIC-NEXT:    movi a10, 18859; XTENSA-ATOMIC-NEXT:    j .LBB137_28860; XTENSA-ATOMIC-NEXT:  .LBB137_1: # %atomicrmw.start8861; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB137_2 Depth=18862; XTENSA-ATOMIC-NEXT:    or a11, a8, a88863; XTENSA-ATOMIC-NEXT:    beqi a12, 1, .LBB137_48864; XTENSA-ATOMIC-NEXT:  .LBB137_2: # %atomicrmw.start8865; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=18866; XTENSA-ATOMIC-NEXT:    xor a8, a11, a38867; XTENSA-ATOMIC-NEXT:    wsr a11, scompare18868; XTENSA-ATOMIC-NEXT:    s32c1i a8, a2, 08869; XTENSA-ATOMIC-NEXT:    or a12, a10, a108870; XTENSA-ATOMIC-NEXT:    beq a8, a11, .LBB137_18871; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start8872; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB137_2 Depth=18873; XTENSA-ATOMIC-NEXT:    or a12, a9, a98874; XTENSA-ATOMIC-NEXT:    j .LBB137_18875; XTENSA-ATOMIC-NEXT:  .LBB137_4: # %atomicrmw.end8876; XTENSA-ATOMIC-NEXT:    or a2, a8, a88877; XTENSA-ATOMIC-NEXT:    retw8878  %res = atomicrmw xor ptr %a, i32 %b release8879  ret i32 %res8880}8881 8882define i32 @atomicrmw_xor_i32_acq_rel(ptr %a, i32 %b) nounwind {8883; XTENSA-LABEL: atomicrmw_xor_i32_acq_rel:8884; XTENSA:       # %bb.0:8885; XTENSA-NEXT:    entry a1, 328886; XTENSA-NEXT:    or a11, a3, a38887; XTENSA-NEXT:    or a10, a2, a28888; XTENSA-NEXT:    movi a12, 48889; XTENSA-NEXT:    l32r a8, .LCPI138_08890; XTENSA-NEXT:    callx8 a88891; XTENSA-NEXT:    or a2, a10, a108892; XTENSA-NEXT:    retw8893;8894; XTENSA-ATOMIC-LABEL: atomicrmw_xor_i32_acq_rel:8895; XTENSA-ATOMIC:       # %bb.0:8896; XTENSA-ATOMIC-NEXT:    entry a1, 328897; XTENSA-ATOMIC-NEXT:    memw8898; XTENSA-ATOMIC-NEXT:    l32i a11, a2, 08899; XTENSA-ATOMIC-NEXT:    movi a9, 08900; XTENSA-ATOMIC-NEXT:    movi a10, 18901; XTENSA-ATOMIC-NEXT:    j .LBB138_28902; XTENSA-ATOMIC-NEXT:  .LBB138_1: # %atomicrmw.start8903; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB138_2 Depth=18904; XTENSA-ATOMIC-NEXT:    or a11, a8, a88905; XTENSA-ATOMIC-NEXT:    beqi a12, 1, .LBB138_48906; XTENSA-ATOMIC-NEXT:  .LBB138_2: # %atomicrmw.start8907; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=18908; XTENSA-ATOMIC-NEXT:    xor a8, a11, a38909; XTENSA-ATOMIC-NEXT:    wsr a11, scompare18910; XTENSA-ATOMIC-NEXT:    s32c1i a8, a2, 08911; XTENSA-ATOMIC-NEXT:    or a12, a10, a108912; XTENSA-ATOMIC-NEXT:    beq a8, a11, .LBB138_18913; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start8914; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB138_2 Depth=18915; XTENSA-ATOMIC-NEXT:    or a12, a9, a98916; XTENSA-ATOMIC-NEXT:    j .LBB138_18917; XTENSA-ATOMIC-NEXT:  .LBB138_4: # %atomicrmw.end8918; XTENSA-ATOMIC-NEXT:    memw8919; XTENSA-ATOMIC-NEXT:    or a2, a8, a88920; XTENSA-ATOMIC-NEXT:    retw8921  %res = atomicrmw xor ptr %a, i32 %b acq_rel8922  ret i32 %res8923}8924 8925define i32 @atomicrmw_xor_i32_seq_cst(ptr %a, i32 %b) nounwind {8926; XTENSA-LABEL: atomicrmw_xor_i32_seq_cst:8927; XTENSA:       # %bb.0:8928; XTENSA-NEXT:    entry a1, 328929; XTENSA-NEXT:    or a11, a3, a38930; XTENSA-NEXT:    or a10, a2, a28931; XTENSA-NEXT:    movi a12, 58932; XTENSA-NEXT:    l32r a8, .LCPI139_08933; XTENSA-NEXT:    callx8 a88934; XTENSA-NEXT:    or a2, a10, a108935; XTENSA-NEXT:    retw8936;8937; XTENSA-ATOMIC-LABEL: atomicrmw_xor_i32_seq_cst:8938; XTENSA-ATOMIC:       # %bb.0:8939; XTENSA-ATOMIC-NEXT:    entry a1, 328940; XTENSA-ATOMIC-NEXT:    memw8941; XTENSA-ATOMIC-NEXT:    l32i a11, a2, 08942; XTENSA-ATOMIC-NEXT:    movi a9, 08943; XTENSA-ATOMIC-NEXT:    movi a10, 18944; XTENSA-ATOMIC-NEXT:    j .LBB139_28945; XTENSA-ATOMIC-NEXT:  .LBB139_1: # %atomicrmw.start8946; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB139_2 Depth=18947; XTENSA-ATOMIC-NEXT:    or a11, a8, a88948; XTENSA-ATOMIC-NEXT:    beqi a12, 1, .LBB139_48949; XTENSA-ATOMIC-NEXT:  .LBB139_2: # %atomicrmw.start8950; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=18951; XTENSA-ATOMIC-NEXT:    xor a8, a11, a38952; XTENSA-ATOMIC-NEXT:    wsr a11, scompare18953; XTENSA-ATOMIC-NEXT:    s32c1i a8, a2, 08954; XTENSA-ATOMIC-NEXT:    or a12, a10, a108955; XTENSA-ATOMIC-NEXT:    beq a8, a11, .LBB139_18956; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start8957; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB139_2 Depth=18958; XTENSA-ATOMIC-NEXT:    or a12, a9, a98959; XTENSA-ATOMIC-NEXT:    j .LBB139_18960; XTENSA-ATOMIC-NEXT:  .LBB139_4: # %atomicrmw.end8961; XTENSA-ATOMIC-NEXT:    memw8962; XTENSA-ATOMIC-NEXT:    or a2, a8, a88963; XTENSA-ATOMIC-NEXT:    retw8964  %res = atomicrmw xor ptr %a, i32 %b seq_cst8965  ret i32 %res8966}8967 8968define i32 @atomicrmw_max_i32_monotonic(ptr %a, i32 %b) nounwind {8969; XTENSA-LABEL: atomicrmw_max_i32_monotonic:8970; XTENSA:       # %bb.0:8971; XTENSA-NEXT:    entry a1, 488972; XTENSA-NEXT:    or a6, a2, a28973; XTENSA-NEXT:    l32i a2, a6, 08974; XTENSA-NEXT:    movi a7, 08975; XTENSA-NEXT:    l32r a5, .LCPI140_08976; XTENSA-NEXT:    j .LBB140_28977; XTENSA-NEXT:  .LBB140_1: # %atomicrmw.start8978; XTENSA-NEXT:    # in Loop: Header=BB140_2 Depth=18979; XTENSA-NEXT:    addi a11, a1, 08980; XTENSA-NEXT:    or a10, a6, a68981; XTENSA-NEXT:    or a13, a7, a78982; XTENSA-NEXT:    or a14, a7, a78983; XTENSA-NEXT:    callx8 a58984; XTENSA-NEXT:    l32i a2, a1, 08985; XTENSA-NEXT:    bnez a10, .LBB140_48986; XTENSA-NEXT:  .LBB140_2: # %atomicrmw.start8987; XTENSA-NEXT:    # =>This Inner Loop Header: Depth=18988; XTENSA-NEXT:    s32i a2, a1, 08989; XTENSA-NEXT:    or a12, a3, a38990; XTENSA-NEXT:    bge a3, a2, .LBB140_18991; XTENSA-NEXT:  # %bb.3: # %atomicrmw.start8992; XTENSA-NEXT:    # in Loop: Header=BB140_2 Depth=18993; XTENSA-NEXT:    or a12, a2, a28994; XTENSA-NEXT:    j .LBB140_18995; XTENSA-NEXT:  .LBB140_4: # %atomicrmw.end8996; XTENSA-NEXT:    retw8997;8998; XTENSA-ATOMIC-LABEL: atomicrmw_max_i32_monotonic:8999; XTENSA-ATOMIC:       # %bb.0:9000; XTENSA-ATOMIC-NEXT:    entry a1, 329001; XTENSA-ATOMIC-NEXT:    l32i a11, a2, 09002; XTENSA-ATOMIC-NEXT:    movi a9, 09003; XTENSA-ATOMIC-NEXT:    movi a10, 19004; XTENSA-ATOMIC-NEXT:    j .LBB140_29005; XTENSA-ATOMIC-NEXT:  .LBB140_1: # %atomicrmw.start9006; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB140_2 Depth=19007; XTENSA-ATOMIC-NEXT:    or a11, a8, a89008; XTENSA-ATOMIC-NEXT:    beqi a12, 1, .LBB140_69009; XTENSA-ATOMIC-NEXT:  .LBB140_2: # %atomicrmw.start9010; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=19011; XTENSA-ATOMIC-NEXT:    or a8, a3, a39012; XTENSA-ATOMIC-NEXT:    bge a3, a11, .LBB140_49013; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start9014; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB140_2 Depth=19015; XTENSA-ATOMIC-NEXT:    or a8, a11, a119016; XTENSA-ATOMIC-NEXT:  .LBB140_4: # %atomicrmw.start9017; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB140_2 Depth=19018; XTENSA-ATOMIC-NEXT:    wsr a11, scompare19019; XTENSA-ATOMIC-NEXT:    s32c1i a8, a2, 09020; XTENSA-ATOMIC-NEXT:    or a12, a10, a109021; XTENSA-ATOMIC-NEXT:    beq a8, a11, .LBB140_19022; XTENSA-ATOMIC-NEXT:  # %bb.5: # %atomicrmw.start9023; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB140_2 Depth=19024; XTENSA-ATOMIC-NEXT:    or a12, a9, a99025; XTENSA-ATOMIC-NEXT:    j .LBB140_19026; XTENSA-ATOMIC-NEXT:  .LBB140_6: # %atomicrmw.end9027; XTENSA-ATOMIC-NEXT:    or a2, a8, a89028; XTENSA-ATOMIC-NEXT:    retw9029  %res = atomicrmw max ptr %a, i32 %b monotonic9030  ret i32 %res9031}9032 9033define i32 @atomicrmw_max_i32_acquire(ptr %a, i32 %b) nounwind {9034; XTENSA-LABEL: atomicrmw_max_i32_acquire:9035; XTENSA:       # %bb.0:9036; XTENSA-NEXT:    entry a1, 489037; XTENSA-NEXT:    or a6, a2, a29038; XTENSA-NEXT:    l32i a2, a6, 09039; XTENSA-NEXT:    movi a7, 29040; XTENSA-NEXT:    l32r a5, .LCPI141_09041; XTENSA-NEXT:    j .LBB141_29042; XTENSA-NEXT:  .LBB141_1: # %atomicrmw.start9043; XTENSA-NEXT:    # in Loop: Header=BB141_2 Depth=19044; XTENSA-NEXT:    addi a11, a1, 09045; XTENSA-NEXT:    or a10, a6, a69046; XTENSA-NEXT:    or a13, a7, a79047; XTENSA-NEXT:    or a14, a7, a79048; XTENSA-NEXT:    callx8 a59049; XTENSA-NEXT:    l32i a2, a1, 09050; XTENSA-NEXT:    bnez a10, .LBB141_49051; XTENSA-NEXT:  .LBB141_2: # %atomicrmw.start9052; XTENSA-NEXT:    # =>This Inner Loop Header: Depth=19053; XTENSA-NEXT:    s32i a2, a1, 09054; XTENSA-NEXT:    or a12, a3, a39055; XTENSA-NEXT:    bge a3, a2, .LBB141_19056; XTENSA-NEXT:  # %bb.3: # %atomicrmw.start9057; XTENSA-NEXT:    # in Loop: Header=BB141_2 Depth=19058; XTENSA-NEXT:    or a12, a2, a29059; XTENSA-NEXT:    j .LBB141_19060; XTENSA-NEXT:  .LBB141_4: # %atomicrmw.end9061; XTENSA-NEXT:    retw9062;9063; XTENSA-ATOMIC-LABEL: atomicrmw_max_i32_acquire:9064; XTENSA-ATOMIC:       # %bb.0:9065; XTENSA-ATOMIC-NEXT:    entry a1, 329066; XTENSA-ATOMIC-NEXT:    l32i a11, a2, 09067; XTENSA-ATOMIC-NEXT:    movi a9, 09068; XTENSA-ATOMIC-NEXT:    movi a10, 19069; XTENSA-ATOMIC-NEXT:    j .LBB141_29070; XTENSA-ATOMIC-NEXT:  .LBB141_1: # %atomicrmw.start9071; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB141_2 Depth=19072; XTENSA-ATOMIC-NEXT:    or a11, a8, a89073; XTENSA-ATOMIC-NEXT:    beqi a12, 1, .LBB141_69074; XTENSA-ATOMIC-NEXT:  .LBB141_2: # %atomicrmw.start9075; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=19076; XTENSA-ATOMIC-NEXT:    or a8, a3, a39077; XTENSA-ATOMIC-NEXT:    bge a3, a11, .LBB141_49078; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start9079; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB141_2 Depth=19080; XTENSA-ATOMIC-NEXT:    or a8, a11, a119081; XTENSA-ATOMIC-NEXT:  .LBB141_4: # %atomicrmw.start9082; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB141_2 Depth=19083; XTENSA-ATOMIC-NEXT:    wsr a11, scompare19084; XTENSA-ATOMIC-NEXT:    s32c1i a8, a2, 09085; XTENSA-ATOMIC-NEXT:    or a12, a10, a109086; XTENSA-ATOMIC-NEXT:    beq a8, a11, .LBB141_19087; XTENSA-ATOMIC-NEXT:  # %bb.5: # %atomicrmw.start9088; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB141_2 Depth=19089; XTENSA-ATOMIC-NEXT:    or a12, a9, a99090; XTENSA-ATOMIC-NEXT:    j .LBB141_19091; XTENSA-ATOMIC-NEXT:  .LBB141_6: # %atomicrmw.end9092; XTENSA-ATOMIC-NEXT:    memw9093; XTENSA-ATOMIC-NEXT:    or a2, a8, a89094; XTENSA-ATOMIC-NEXT:    retw9095  %res = atomicrmw max ptr %a, i32 %b acquire9096  ret i32 %res9097}9098 9099define i32 @atomicrmw_max_i32_release(ptr %a, i32 %b) nounwind {9100; XTENSA-LABEL: atomicrmw_max_i32_release:9101; XTENSA:       # %bb.0:9102; XTENSA-NEXT:    entry a1, 489103; XTENSA-NEXT:    or a5, a2, a29104; XTENSA-NEXT:    l32i a2, a5, 09105; XTENSA-NEXT:    movi a7, 39106; XTENSA-NEXT:    movi a6, 09107; XTENSA-NEXT:    l32r a4, .LCPI142_09108; XTENSA-NEXT:    j .LBB142_29109; XTENSA-NEXT:  .LBB142_1: # %atomicrmw.start9110; XTENSA-NEXT:    # in Loop: Header=BB142_2 Depth=19111; XTENSA-NEXT:    addi a11, a1, 09112; XTENSA-NEXT:    or a10, a5, a59113; XTENSA-NEXT:    or a13, a7, a79114; XTENSA-NEXT:    or a14, a6, a69115; XTENSA-NEXT:    callx8 a49116; XTENSA-NEXT:    l32i a2, a1, 09117; XTENSA-NEXT:    bnez a10, .LBB142_49118; XTENSA-NEXT:  .LBB142_2: # %atomicrmw.start9119; XTENSA-NEXT:    # =>This Inner Loop Header: Depth=19120; XTENSA-NEXT:    s32i a2, a1, 09121; XTENSA-NEXT:    or a12, a3, a39122; XTENSA-NEXT:    bge a3, a2, .LBB142_19123; XTENSA-NEXT:  # %bb.3: # %atomicrmw.start9124; XTENSA-NEXT:    # in Loop: Header=BB142_2 Depth=19125; XTENSA-NEXT:    or a12, a2, a29126; XTENSA-NEXT:    j .LBB142_19127; XTENSA-NEXT:  .LBB142_4: # %atomicrmw.end9128; XTENSA-NEXT:    retw9129;9130; XTENSA-ATOMIC-LABEL: atomicrmw_max_i32_release:9131; XTENSA-ATOMIC:       # %bb.0:9132; XTENSA-ATOMIC-NEXT:    entry a1, 329133; XTENSA-ATOMIC-NEXT:    memw9134; XTENSA-ATOMIC-NEXT:    l32i a11, a2, 09135; XTENSA-ATOMIC-NEXT:    movi a9, 09136; XTENSA-ATOMIC-NEXT:    movi a10, 19137; XTENSA-ATOMIC-NEXT:    j .LBB142_29138; XTENSA-ATOMIC-NEXT:  .LBB142_1: # %atomicrmw.start9139; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB142_2 Depth=19140; XTENSA-ATOMIC-NEXT:    or a11, a8, a89141; XTENSA-ATOMIC-NEXT:    beqi a12, 1, .LBB142_69142; XTENSA-ATOMIC-NEXT:  .LBB142_2: # %atomicrmw.start9143; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=19144; XTENSA-ATOMIC-NEXT:    or a8, a3, a39145; XTENSA-ATOMIC-NEXT:    bge a3, a11, .LBB142_49146; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start9147; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB142_2 Depth=19148; XTENSA-ATOMIC-NEXT:    or a8, a11, a119149; XTENSA-ATOMIC-NEXT:  .LBB142_4: # %atomicrmw.start9150; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB142_2 Depth=19151; XTENSA-ATOMIC-NEXT:    wsr a11, scompare19152; XTENSA-ATOMIC-NEXT:    s32c1i a8, a2, 09153; XTENSA-ATOMIC-NEXT:    or a12, a10, a109154; XTENSA-ATOMIC-NEXT:    beq a8, a11, .LBB142_19155; XTENSA-ATOMIC-NEXT:  # %bb.5: # %atomicrmw.start9156; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB142_2 Depth=19157; XTENSA-ATOMIC-NEXT:    or a12, a9, a99158; XTENSA-ATOMIC-NEXT:    j .LBB142_19159; XTENSA-ATOMIC-NEXT:  .LBB142_6: # %atomicrmw.end9160; XTENSA-ATOMIC-NEXT:    or a2, a8, a89161; XTENSA-ATOMIC-NEXT:    retw9162  %res = atomicrmw max ptr %a, i32 %b release9163  ret i32 %res9164}9165 9166define i32 @atomicrmw_max_i32_acq_rel(ptr %a, i32 %b) nounwind {9167; XTENSA-LABEL: atomicrmw_max_i32_acq_rel:9168; XTENSA:       # %bb.0:9169; XTENSA-NEXT:    entry a1, 489170; XTENSA-NEXT:    or a5, a2, a29171; XTENSA-NEXT:    l32i a2, a5, 09172; XTENSA-NEXT:    movi a7, 49173; XTENSA-NEXT:    movi a6, 29174; XTENSA-NEXT:    l32r a4, .LCPI143_09175; XTENSA-NEXT:    j .LBB143_29176; XTENSA-NEXT:  .LBB143_1: # %atomicrmw.start9177; XTENSA-NEXT:    # in Loop: Header=BB143_2 Depth=19178; XTENSA-NEXT:    addi a11, a1, 09179; XTENSA-NEXT:    or a10, a5, a59180; XTENSA-NEXT:    or a13, a7, a79181; XTENSA-NEXT:    or a14, a6, a69182; XTENSA-NEXT:    callx8 a49183; XTENSA-NEXT:    l32i a2, a1, 09184; XTENSA-NEXT:    bnez a10, .LBB143_49185; XTENSA-NEXT:  .LBB143_2: # %atomicrmw.start9186; XTENSA-NEXT:    # =>This Inner Loop Header: Depth=19187; XTENSA-NEXT:    s32i a2, a1, 09188; XTENSA-NEXT:    or a12, a3, a39189; XTENSA-NEXT:    bge a3, a2, .LBB143_19190; XTENSA-NEXT:  # %bb.3: # %atomicrmw.start9191; XTENSA-NEXT:    # in Loop: Header=BB143_2 Depth=19192; XTENSA-NEXT:    or a12, a2, a29193; XTENSA-NEXT:    j .LBB143_19194; XTENSA-NEXT:  .LBB143_4: # %atomicrmw.end9195; XTENSA-NEXT:    retw9196;9197; XTENSA-ATOMIC-LABEL: atomicrmw_max_i32_acq_rel:9198; XTENSA-ATOMIC:       # %bb.0:9199; XTENSA-ATOMIC-NEXT:    entry a1, 329200; XTENSA-ATOMIC-NEXT:    memw9201; XTENSA-ATOMIC-NEXT:    l32i a11, a2, 09202; XTENSA-ATOMIC-NEXT:    movi a9, 09203; XTENSA-ATOMIC-NEXT:    movi a10, 19204; XTENSA-ATOMIC-NEXT:    j .LBB143_29205; XTENSA-ATOMIC-NEXT:  .LBB143_1: # %atomicrmw.start9206; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB143_2 Depth=19207; XTENSA-ATOMIC-NEXT:    or a11, a8, a89208; XTENSA-ATOMIC-NEXT:    beqi a12, 1, .LBB143_69209; XTENSA-ATOMIC-NEXT:  .LBB143_2: # %atomicrmw.start9210; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=19211; XTENSA-ATOMIC-NEXT:    or a8, a3, a39212; XTENSA-ATOMIC-NEXT:    bge a3, a11, .LBB143_49213; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start9214; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB143_2 Depth=19215; XTENSA-ATOMIC-NEXT:    or a8, a11, a119216; XTENSA-ATOMIC-NEXT:  .LBB143_4: # %atomicrmw.start9217; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB143_2 Depth=19218; XTENSA-ATOMIC-NEXT:    wsr a11, scompare19219; XTENSA-ATOMIC-NEXT:    s32c1i a8, a2, 09220; XTENSA-ATOMIC-NEXT:    or a12, a10, a109221; XTENSA-ATOMIC-NEXT:    beq a8, a11, .LBB143_19222; XTENSA-ATOMIC-NEXT:  # %bb.5: # %atomicrmw.start9223; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB143_2 Depth=19224; XTENSA-ATOMIC-NEXT:    or a12, a9, a99225; XTENSA-ATOMIC-NEXT:    j .LBB143_19226; XTENSA-ATOMIC-NEXT:  .LBB143_6: # %atomicrmw.end9227; XTENSA-ATOMIC-NEXT:    memw9228; XTENSA-ATOMIC-NEXT:    or a2, a8, a89229; XTENSA-ATOMIC-NEXT:    retw9230  %res = atomicrmw max ptr %a, i32 %b acq_rel9231  ret i32 %res9232}9233 9234define i32 @atomicrmw_max_i32_seq_cst(ptr %a, i32 %b) nounwind {9235; XTENSA-LABEL: atomicrmw_max_i32_seq_cst:9236; XTENSA:       # %bb.0:9237; XTENSA-NEXT:    entry a1, 489238; XTENSA-NEXT:    or a6, a2, a29239; XTENSA-NEXT:    l32i a2, a6, 09240; XTENSA-NEXT:    movi a7, 59241; XTENSA-NEXT:    l32r a5, .LCPI144_09242; XTENSA-NEXT:    j .LBB144_29243; XTENSA-NEXT:  .LBB144_1: # %atomicrmw.start9244; XTENSA-NEXT:    # in Loop: Header=BB144_2 Depth=19245; XTENSA-NEXT:    addi a11, a1, 09246; XTENSA-NEXT:    or a10, a6, a69247; XTENSA-NEXT:    or a13, a7, a79248; XTENSA-NEXT:    or a14, a7, a79249; XTENSA-NEXT:    callx8 a59250; XTENSA-NEXT:    l32i a2, a1, 09251; XTENSA-NEXT:    bnez a10, .LBB144_49252; XTENSA-NEXT:  .LBB144_2: # %atomicrmw.start9253; XTENSA-NEXT:    # =>This Inner Loop Header: Depth=19254; XTENSA-NEXT:    s32i a2, a1, 09255; XTENSA-NEXT:    or a12, a3, a39256; XTENSA-NEXT:    bge a3, a2, .LBB144_19257; XTENSA-NEXT:  # %bb.3: # %atomicrmw.start9258; XTENSA-NEXT:    # in Loop: Header=BB144_2 Depth=19259; XTENSA-NEXT:    or a12, a2, a29260; XTENSA-NEXT:    j .LBB144_19261; XTENSA-NEXT:  .LBB144_4: # %atomicrmw.end9262; XTENSA-NEXT:    retw9263;9264; XTENSA-ATOMIC-LABEL: atomicrmw_max_i32_seq_cst:9265; XTENSA-ATOMIC:       # %bb.0:9266; XTENSA-ATOMIC-NEXT:    entry a1, 329267; XTENSA-ATOMIC-NEXT:    memw9268; XTENSA-ATOMIC-NEXT:    l32i a11, a2, 09269; XTENSA-ATOMIC-NEXT:    movi a9, 09270; XTENSA-ATOMIC-NEXT:    movi a10, 19271; XTENSA-ATOMIC-NEXT:    j .LBB144_29272; XTENSA-ATOMIC-NEXT:  .LBB144_1: # %atomicrmw.start9273; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB144_2 Depth=19274; XTENSA-ATOMIC-NEXT:    or a11, a8, a89275; XTENSA-ATOMIC-NEXT:    beqi a12, 1, .LBB144_69276; XTENSA-ATOMIC-NEXT:  .LBB144_2: # %atomicrmw.start9277; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=19278; XTENSA-ATOMIC-NEXT:    or a8, a3, a39279; XTENSA-ATOMIC-NEXT:    bge a3, a11, .LBB144_49280; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start9281; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB144_2 Depth=19282; XTENSA-ATOMIC-NEXT:    or a8, a11, a119283; XTENSA-ATOMIC-NEXT:  .LBB144_4: # %atomicrmw.start9284; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB144_2 Depth=19285; XTENSA-ATOMIC-NEXT:    wsr a11, scompare19286; XTENSA-ATOMIC-NEXT:    s32c1i a8, a2, 09287; XTENSA-ATOMIC-NEXT:    or a12, a10, a109288; XTENSA-ATOMIC-NEXT:    beq a8, a11, .LBB144_19289; XTENSA-ATOMIC-NEXT:  # %bb.5: # %atomicrmw.start9290; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB144_2 Depth=19291; XTENSA-ATOMIC-NEXT:    or a12, a9, a99292; XTENSA-ATOMIC-NEXT:    j .LBB144_19293; XTENSA-ATOMIC-NEXT:  .LBB144_6: # %atomicrmw.end9294; XTENSA-ATOMIC-NEXT:    memw9295; XTENSA-ATOMIC-NEXT:    or a2, a8, a89296; XTENSA-ATOMIC-NEXT:    retw9297  %res = atomicrmw max ptr %a, i32 %b seq_cst9298  ret i32 %res9299}9300 9301define i32 @atomicrmw_min_i32_monotonic(ptr %a, i32 %b) nounwind {9302; XTENSA-LABEL: atomicrmw_min_i32_monotonic:9303; XTENSA:       # %bb.0:9304; XTENSA-NEXT:    entry a1, 489305; XTENSA-NEXT:    or a6, a2, a29306; XTENSA-NEXT:    l32i a2, a6, 09307; XTENSA-NEXT:    movi a7, 09308; XTENSA-NEXT:    l32r a5, .LCPI145_09309; XTENSA-NEXT:    j .LBB145_29310; XTENSA-NEXT:  .LBB145_1: # %atomicrmw.start9311; XTENSA-NEXT:    # in Loop: Header=BB145_2 Depth=19312; XTENSA-NEXT:    addi a11, a1, 09313; XTENSA-NEXT:    or a10, a6, a69314; XTENSA-NEXT:    or a13, a7, a79315; XTENSA-NEXT:    or a14, a7, a79316; XTENSA-NEXT:    callx8 a59317; XTENSA-NEXT:    l32i a2, a1, 09318; XTENSA-NEXT:    bnez a10, .LBB145_49319; XTENSA-NEXT:  .LBB145_2: # %atomicrmw.start9320; XTENSA-NEXT:    # =>This Inner Loop Header: Depth=19321; XTENSA-NEXT:    s32i a2, a1, 09322; XTENSA-NEXT:    or a12, a3, a39323; XTENSA-NEXT:    blt a3, a2, .LBB145_19324; XTENSA-NEXT:  # %bb.3: # %atomicrmw.start9325; XTENSA-NEXT:    # in Loop: Header=BB145_2 Depth=19326; XTENSA-NEXT:    or a12, a2, a29327; XTENSA-NEXT:    j .LBB145_19328; XTENSA-NEXT:  .LBB145_4: # %atomicrmw.end9329; XTENSA-NEXT:    retw9330;9331; XTENSA-ATOMIC-LABEL: atomicrmw_min_i32_monotonic:9332; XTENSA-ATOMIC:       # %bb.0:9333; XTENSA-ATOMIC-NEXT:    entry a1, 329334; XTENSA-ATOMIC-NEXT:    l32i a11, a2, 09335; XTENSA-ATOMIC-NEXT:    movi a9, 09336; XTENSA-ATOMIC-NEXT:    movi a10, 19337; XTENSA-ATOMIC-NEXT:    j .LBB145_29338; XTENSA-ATOMIC-NEXT:  .LBB145_1: # %atomicrmw.start9339; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB145_2 Depth=19340; XTENSA-ATOMIC-NEXT:    or a11, a8, a89341; XTENSA-ATOMIC-NEXT:    beqi a12, 1, .LBB145_69342; XTENSA-ATOMIC-NEXT:  .LBB145_2: # %atomicrmw.start9343; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=19344; XTENSA-ATOMIC-NEXT:    or a8, a3, a39345; XTENSA-ATOMIC-NEXT:    blt a3, a11, .LBB145_49346; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start9347; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB145_2 Depth=19348; XTENSA-ATOMIC-NEXT:    or a8, a11, a119349; XTENSA-ATOMIC-NEXT:  .LBB145_4: # %atomicrmw.start9350; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB145_2 Depth=19351; XTENSA-ATOMIC-NEXT:    wsr a11, scompare19352; XTENSA-ATOMIC-NEXT:    s32c1i a8, a2, 09353; XTENSA-ATOMIC-NEXT:    or a12, a10, a109354; XTENSA-ATOMIC-NEXT:    beq a8, a11, .LBB145_19355; XTENSA-ATOMIC-NEXT:  # %bb.5: # %atomicrmw.start9356; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB145_2 Depth=19357; XTENSA-ATOMIC-NEXT:    or a12, a9, a99358; XTENSA-ATOMIC-NEXT:    j .LBB145_19359; XTENSA-ATOMIC-NEXT:  .LBB145_6: # %atomicrmw.end9360; XTENSA-ATOMIC-NEXT:    or a2, a8, a89361; XTENSA-ATOMIC-NEXT:    retw9362  %res = atomicrmw min ptr %a, i32 %b monotonic9363  ret i32 %res9364}9365 9366define i32 @atomicrmw_min_i32_acquire(ptr %a, i32 %b) nounwind {9367; XTENSA-LABEL: atomicrmw_min_i32_acquire:9368; XTENSA:       # %bb.0:9369; XTENSA-NEXT:    entry a1, 489370; XTENSA-NEXT:    or a6, a2, a29371; XTENSA-NEXT:    l32i a2, a6, 09372; XTENSA-NEXT:    movi a7, 29373; XTENSA-NEXT:    l32r a5, .LCPI146_09374; XTENSA-NEXT:    j .LBB146_29375; XTENSA-NEXT:  .LBB146_1: # %atomicrmw.start9376; XTENSA-NEXT:    # in Loop: Header=BB146_2 Depth=19377; XTENSA-NEXT:    addi a11, a1, 09378; XTENSA-NEXT:    or a10, a6, a69379; XTENSA-NEXT:    or a13, a7, a79380; XTENSA-NEXT:    or a14, a7, a79381; XTENSA-NEXT:    callx8 a59382; XTENSA-NEXT:    l32i a2, a1, 09383; XTENSA-NEXT:    bnez a10, .LBB146_49384; XTENSA-NEXT:  .LBB146_2: # %atomicrmw.start9385; XTENSA-NEXT:    # =>This Inner Loop Header: Depth=19386; XTENSA-NEXT:    s32i a2, a1, 09387; XTENSA-NEXT:    or a12, a3, a39388; XTENSA-NEXT:    blt a3, a2, .LBB146_19389; XTENSA-NEXT:  # %bb.3: # %atomicrmw.start9390; XTENSA-NEXT:    # in Loop: Header=BB146_2 Depth=19391; XTENSA-NEXT:    or a12, a2, a29392; XTENSA-NEXT:    j .LBB146_19393; XTENSA-NEXT:  .LBB146_4: # %atomicrmw.end9394; XTENSA-NEXT:    retw9395;9396; XTENSA-ATOMIC-LABEL: atomicrmw_min_i32_acquire:9397; XTENSA-ATOMIC:       # %bb.0:9398; XTENSA-ATOMIC-NEXT:    entry a1, 329399; XTENSA-ATOMIC-NEXT:    l32i a11, a2, 09400; XTENSA-ATOMIC-NEXT:    movi a9, 09401; XTENSA-ATOMIC-NEXT:    movi a10, 19402; XTENSA-ATOMIC-NEXT:    j .LBB146_29403; XTENSA-ATOMIC-NEXT:  .LBB146_1: # %atomicrmw.start9404; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB146_2 Depth=19405; XTENSA-ATOMIC-NEXT:    or a11, a8, a89406; XTENSA-ATOMIC-NEXT:    beqi a12, 1, .LBB146_69407; XTENSA-ATOMIC-NEXT:  .LBB146_2: # %atomicrmw.start9408; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=19409; XTENSA-ATOMIC-NEXT:    or a8, a3, a39410; XTENSA-ATOMIC-NEXT:    blt a3, a11, .LBB146_49411; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start9412; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB146_2 Depth=19413; XTENSA-ATOMIC-NEXT:    or a8, a11, a119414; XTENSA-ATOMIC-NEXT:  .LBB146_4: # %atomicrmw.start9415; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB146_2 Depth=19416; XTENSA-ATOMIC-NEXT:    wsr a11, scompare19417; XTENSA-ATOMIC-NEXT:    s32c1i a8, a2, 09418; XTENSA-ATOMIC-NEXT:    or a12, a10, a109419; XTENSA-ATOMIC-NEXT:    beq a8, a11, .LBB146_19420; XTENSA-ATOMIC-NEXT:  # %bb.5: # %atomicrmw.start9421; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB146_2 Depth=19422; XTENSA-ATOMIC-NEXT:    or a12, a9, a99423; XTENSA-ATOMIC-NEXT:    j .LBB146_19424; XTENSA-ATOMIC-NEXT:  .LBB146_6: # %atomicrmw.end9425; XTENSA-ATOMIC-NEXT:    memw9426; XTENSA-ATOMIC-NEXT:    or a2, a8, a89427; XTENSA-ATOMIC-NEXT:    retw9428  %res = atomicrmw min ptr %a, i32 %b acquire9429  ret i32 %res9430}9431 9432define i32 @atomicrmw_min_i32_release(ptr %a, i32 %b) nounwind {9433; XTENSA-LABEL: atomicrmw_min_i32_release:9434; XTENSA:       # %bb.0:9435; XTENSA-NEXT:    entry a1, 489436; XTENSA-NEXT:    or a5, a2, a29437; XTENSA-NEXT:    l32i a2, a5, 09438; XTENSA-NEXT:    movi a7, 39439; XTENSA-NEXT:    movi a6, 09440; XTENSA-NEXT:    l32r a4, .LCPI147_09441; XTENSA-NEXT:    j .LBB147_29442; XTENSA-NEXT:  .LBB147_1: # %atomicrmw.start9443; XTENSA-NEXT:    # in Loop: Header=BB147_2 Depth=19444; XTENSA-NEXT:    addi a11, a1, 09445; XTENSA-NEXT:    or a10, a5, a59446; XTENSA-NEXT:    or a13, a7, a79447; XTENSA-NEXT:    or a14, a6, a69448; XTENSA-NEXT:    callx8 a49449; XTENSA-NEXT:    l32i a2, a1, 09450; XTENSA-NEXT:    bnez a10, .LBB147_49451; XTENSA-NEXT:  .LBB147_2: # %atomicrmw.start9452; XTENSA-NEXT:    # =>This Inner Loop Header: Depth=19453; XTENSA-NEXT:    s32i a2, a1, 09454; XTENSA-NEXT:    or a12, a3, a39455; XTENSA-NEXT:    blt a3, a2, .LBB147_19456; XTENSA-NEXT:  # %bb.3: # %atomicrmw.start9457; XTENSA-NEXT:    # in Loop: Header=BB147_2 Depth=19458; XTENSA-NEXT:    or a12, a2, a29459; XTENSA-NEXT:    j .LBB147_19460; XTENSA-NEXT:  .LBB147_4: # %atomicrmw.end9461; XTENSA-NEXT:    retw9462;9463; XTENSA-ATOMIC-LABEL: atomicrmw_min_i32_release:9464; XTENSA-ATOMIC:       # %bb.0:9465; XTENSA-ATOMIC-NEXT:    entry a1, 329466; XTENSA-ATOMIC-NEXT:    memw9467; XTENSA-ATOMIC-NEXT:    l32i a11, a2, 09468; XTENSA-ATOMIC-NEXT:    movi a9, 09469; XTENSA-ATOMIC-NEXT:    movi a10, 19470; XTENSA-ATOMIC-NEXT:    j .LBB147_29471; XTENSA-ATOMIC-NEXT:  .LBB147_1: # %atomicrmw.start9472; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB147_2 Depth=19473; XTENSA-ATOMIC-NEXT:    or a11, a8, a89474; XTENSA-ATOMIC-NEXT:    beqi a12, 1, .LBB147_69475; XTENSA-ATOMIC-NEXT:  .LBB147_2: # %atomicrmw.start9476; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=19477; XTENSA-ATOMIC-NEXT:    or a8, a3, a39478; XTENSA-ATOMIC-NEXT:    blt a3, a11, .LBB147_49479; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start9480; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB147_2 Depth=19481; XTENSA-ATOMIC-NEXT:    or a8, a11, a119482; XTENSA-ATOMIC-NEXT:  .LBB147_4: # %atomicrmw.start9483; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB147_2 Depth=19484; XTENSA-ATOMIC-NEXT:    wsr a11, scompare19485; XTENSA-ATOMIC-NEXT:    s32c1i a8, a2, 09486; XTENSA-ATOMIC-NEXT:    or a12, a10, a109487; XTENSA-ATOMIC-NEXT:    beq a8, a11, .LBB147_19488; XTENSA-ATOMIC-NEXT:  # %bb.5: # %atomicrmw.start9489; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB147_2 Depth=19490; XTENSA-ATOMIC-NEXT:    or a12, a9, a99491; XTENSA-ATOMIC-NEXT:    j .LBB147_19492; XTENSA-ATOMIC-NEXT:  .LBB147_6: # %atomicrmw.end9493; XTENSA-ATOMIC-NEXT:    or a2, a8, a89494; XTENSA-ATOMIC-NEXT:    retw9495  %res = atomicrmw min ptr %a, i32 %b release9496  ret i32 %res9497}9498 9499define i32 @atomicrmw_min_i32_acq_rel(ptr %a, i32 %b) nounwind {9500; XTENSA-LABEL: atomicrmw_min_i32_acq_rel:9501; XTENSA:       # %bb.0:9502; XTENSA-NEXT:    entry a1, 489503; XTENSA-NEXT:    or a5, a2, a29504; XTENSA-NEXT:    l32i a2, a5, 09505; XTENSA-NEXT:    movi a7, 49506; XTENSA-NEXT:    movi a6, 29507; XTENSA-NEXT:    l32r a4, .LCPI148_09508; XTENSA-NEXT:    j .LBB148_29509; XTENSA-NEXT:  .LBB148_1: # %atomicrmw.start9510; XTENSA-NEXT:    # in Loop: Header=BB148_2 Depth=19511; XTENSA-NEXT:    addi a11, a1, 09512; XTENSA-NEXT:    or a10, a5, a59513; XTENSA-NEXT:    or a13, a7, a79514; XTENSA-NEXT:    or a14, a6, a69515; XTENSA-NEXT:    callx8 a49516; XTENSA-NEXT:    l32i a2, a1, 09517; XTENSA-NEXT:    bnez a10, .LBB148_49518; XTENSA-NEXT:  .LBB148_2: # %atomicrmw.start9519; XTENSA-NEXT:    # =>This Inner Loop Header: Depth=19520; XTENSA-NEXT:    s32i a2, a1, 09521; XTENSA-NEXT:    or a12, a3, a39522; XTENSA-NEXT:    blt a3, a2, .LBB148_19523; XTENSA-NEXT:  # %bb.3: # %atomicrmw.start9524; XTENSA-NEXT:    # in Loop: Header=BB148_2 Depth=19525; XTENSA-NEXT:    or a12, a2, a29526; XTENSA-NEXT:    j .LBB148_19527; XTENSA-NEXT:  .LBB148_4: # %atomicrmw.end9528; XTENSA-NEXT:    retw9529;9530; XTENSA-ATOMIC-LABEL: atomicrmw_min_i32_acq_rel:9531; XTENSA-ATOMIC:       # %bb.0:9532; XTENSA-ATOMIC-NEXT:    entry a1, 329533; XTENSA-ATOMIC-NEXT:    memw9534; XTENSA-ATOMIC-NEXT:    l32i a11, a2, 09535; XTENSA-ATOMIC-NEXT:    movi a9, 09536; XTENSA-ATOMIC-NEXT:    movi a10, 19537; XTENSA-ATOMIC-NEXT:    j .LBB148_29538; XTENSA-ATOMIC-NEXT:  .LBB148_1: # %atomicrmw.start9539; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB148_2 Depth=19540; XTENSA-ATOMIC-NEXT:    or a11, a8, a89541; XTENSA-ATOMIC-NEXT:    beqi a12, 1, .LBB148_69542; XTENSA-ATOMIC-NEXT:  .LBB148_2: # %atomicrmw.start9543; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=19544; XTENSA-ATOMIC-NEXT:    or a8, a3, a39545; XTENSA-ATOMIC-NEXT:    blt a3, a11, .LBB148_49546; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start9547; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB148_2 Depth=19548; XTENSA-ATOMIC-NEXT:    or a8, a11, a119549; XTENSA-ATOMIC-NEXT:  .LBB148_4: # %atomicrmw.start9550; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB148_2 Depth=19551; XTENSA-ATOMIC-NEXT:    wsr a11, scompare19552; XTENSA-ATOMIC-NEXT:    s32c1i a8, a2, 09553; XTENSA-ATOMIC-NEXT:    or a12, a10, a109554; XTENSA-ATOMIC-NEXT:    beq a8, a11, .LBB148_19555; XTENSA-ATOMIC-NEXT:  # %bb.5: # %atomicrmw.start9556; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB148_2 Depth=19557; XTENSA-ATOMIC-NEXT:    or a12, a9, a99558; XTENSA-ATOMIC-NEXT:    j .LBB148_19559; XTENSA-ATOMIC-NEXT:  .LBB148_6: # %atomicrmw.end9560; XTENSA-ATOMIC-NEXT:    memw9561; XTENSA-ATOMIC-NEXT:    or a2, a8, a89562; XTENSA-ATOMIC-NEXT:    retw9563  %res = atomicrmw min ptr %a, i32 %b acq_rel9564  ret i32 %res9565}9566 9567define i32 @atomicrmw_min_i32_seq_cst(ptr %a, i32 %b) nounwind {9568; XTENSA-LABEL: atomicrmw_min_i32_seq_cst:9569; XTENSA:       # %bb.0:9570; XTENSA-NEXT:    entry a1, 489571; XTENSA-NEXT:    or a6, a2, a29572; XTENSA-NEXT:    l32i a2, a6, 09573; XTENSA-NEXT:    movi a7, 59574; XTENSA-NEXT:    l32r a5, .LCPI149_09575; XTENSA-NEXT:    j .LBB149_29576; XTENSA-NEXT:  .LBB149_1: # %atomicrmw.start9577; XTENSA-NEXT:    # in Loop: Header=BB149_2 Depth=19578; XTENSA-NEXT:    addi a11, a1, 09579; XTENSA-NEXT:    or a10, a6, a69580; XTENSA-NEXT:    or a13, a7, a79581; XTENSA-NEXT:    or a14, a7, a79582; XTENSA-NEXT:    callx8 a59583; XTENSA-NEXT:    l32i a2, a1, 09584; XTENSA-NEXT:    bnez a10, .LBB149_49585; XTENSA-NEXT:  .LBB149_2: # %atomicrmw.start9586; XTENSA-NEXT:    # =>This Inner Loop Header: Depth=19587; XTENSA-NEXT:    s32i a2, a1, 09588; XTENSA-NEXT:    or a12, a3, a39589; XTENSA-NEXT:    blt a3, a2, .LBB149_19590; XTENSA-NEXT:  # %bb.3: # %atomicrmw.start9591; XTENSA-NEXT:    # in Loop: Header=BB149_2 Depth=19592; XTENSA-NEXT:    or a12, a2, a29593; XTENSA-NEXT:    j .LBB149_19594; XTENSA-NEXT:  .LBB149_4: # %atomicrmw.end9595; XTENSA-NEXT:    retw9596;9597; XTENSA-ATOMIC-LABEL: atomicrmw_min_i32_seq_cst:9598; XTENSA-ATOMIC:       # %bb.0:9599; XTENSA-ATOMIC-NEXT:    entry a1, 329600; XTENSA-ATOMIC-NEXT:    memw9601; XTENSA-ATOMIC-NEXT:    l32i a11, a2, 09602; XTENSA-ATOMIC-NEXT:    movi a9, 09603; XTENSA-ATOMIC-NEXT:    movi a10, 19604; XTENSA-ATOMIC-NEXT:    j .LBB149_29605; XTENSA-ATOMIC-NEXT:  .LBB149_1: # %atomicrmw.start9606; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB149_2 Depth=19607; XTENSA-ATOMIC-NEXT:    or a11, a8, a89608; XTENSA-ATOMIC-NEXT:    beqi a12, 1, .LBB149_69609; XTENSA-ATOMIC-NEXT:  .LBB149_2: # %atomicrmw.start9610; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=19611; XTENSA-ATOMIC-NEXT:    or a8, a3, a39612; XTENSA-ATOMIC-NEXT:    blt a3, a11, .LBB149_49613; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start9614; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB149_2 Depth=19615; XTENSA-ATOMIC-NEXT:    or a8, a11, a119616; XTENSA-ATOMIC-NEXT:  .LBB149_4: # %atomicrmw.start9617; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB149_2 Depth=19618; XTENSA-ATOMIC-NEXT:    wsr a11, scompare19619; XTENSA-ATOMIC-NEXT:    s32c1i a8, a2, 09620; XTENSA-ATOMIC-NEXT:    or a12, a10, a109621; XTENSA-ATOMIC-NEXT:    beq a8, a11, .LBB149_19622; XTENSA-ATOMIC-NEXT:  # %bb.5: # %atomicrmw.start9623; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB149_2 Depth=19624; XTENSA-ATOMIC-NEXT:    or a12, a9, a99625; XTENSA-ATOMIC-NEXT:    j .LBB149_19626; XTENSA-ATOMIC-NEXT:  .LBB149_6: # %atomicrmw.end9627; XTENSA-ATOMIC-NEXT:    memw9628; XTENSA-ATOMIC-NEXT:    or a2, a8, a89629; XTENSA-ATOMIC-NEXT:    retw9630  %res = atomicrmw min ptr %a, i32 %b seq_cst9631  ret i32 %res9632}9633 9634define i32 @atomicrmw_umax_i32_monotonic(ptr %a, i32 %b) nounwind {9635; XTENSA-LABEL: atomicrmw_umax_i32_monotonic:9636; XTENSA:       # %bb.0:9637; XTENSA-NEXT:    entry a1, 489638; XTENSA-NEXT:    or a6, a2, a29639; XTENSA-NEXT:    l32i a2, a6, 09640; XTENSA-NEXT:    movi a7, 09641; XTENSA-NEXT:    l32r a5, .LCPI150_09642; XTENSA-NEXT:    j .LBB150_29643; XTENSA-NEXT:  .LBB150_1: # %atomicrmw.start9644; XTENSA-NEXT:    # in Loop: Header=BB150_2 Depth=19645; XTENSA-NEXT:    addi a11, a1, 09646; XTENSA-NEXT:    or a10, a6, a69647; XTENSA-NEXT:    or a13, a7, a79648; XTENSA-NEXT:    or a14, a7, a79649; XTENSA-NEXT:    callx8 a59650; XTENSA-NEXT:    l32i a2, a1, 09651; XTENSA-NEXT:    bnez a10, .LBB150_49652; XTENSA-NEXT:  .LBB150_2: # %atomicrmw.start9653; XTENSA-NEXT:    # =>This Inner Loop Header: Depth=19654; XTENSA-NEXT:    s32i a2, a1, 09655; XTENSA-NEXT:    or a12, a3, a39656; XTENSA-NEXT:    bgeu a3, a2, .LBB150_19657; XTENSA-NEXT:  # %bb.3: # %atomicrmw.start9658; XTENSA-NEXT:    # in Loop: Header=BB150_2 Depth=19659; XTENSA-NEXT:    or a12, a2, a29660; XTENSA-NEXT:    j .LBB150_19661; XTENSA-NEXT:  .LBB150_4: # %atomicrmw.end9662; XTENSA-NEXT:    retw9663;9664; XTENSA-ATOMIC-LABEL: atomicrmw_umax_i32_monotonic:9665; XTENSA-ATOMIC:       # %bb.0:9666; XTENSA-ATOMIC-NEXT:    entry a1, 329667; XTENSA-ATOMIC-NEXT:    l32i a11, a2, 09668; XTENSA-ATOMIC-NEXT:    movi a9, 09669; XTENSA-ATOMIC-NEXT:    movi a10, 19670; XTENSA-ATOMIC-NEXT:    j .LBB150_29671; XTENSA-ATOMIC-NEXT:  .LBB150_1: # %atomicrmw.start9672; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB150_2 Depth=19673; XTENSA-ATOMIC-NEXT:    or a11, a8, a89674; XTENSA-ATOMIC-NEXT:    beqi a12, 1, .LBB150_69675; XTENSA-ATOMIC-NEXT:  .LBB150_2: # %atomicrmw.start9676; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=19677; XTENSA-ATOMIC-NEXT:    or a8, a3, a39678; XTENSA-ATOMIC-NEXT:    bgeu a3, a11, .LBB150_49679; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start9680; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB150_2 Depth=19681; XTENSA-ATOMIC-NEXT:    or a8, a11, a119682; XTENSA-ATOMIC-NEXT:  .LBB150_4: # %atomicrmw.start9683; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB150_2 Depth=19684; XTENSA-ATOMIC-NEXT:    wsr a11, scompare19685; XTENSA-ATOMIC-NEXT:    s32c1i a8, a2, 09686; XTENSA-ATOMIC-NEXT:    or a12, a10, a109687; XTENSA-ATOMIC-NEXT:    beq a8, a11, .LBB150_19688; XTENSA-ATOMIC-NEXT:  # %bb.5: # %atomicrmw.start9689; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB150_2 Depth=19690; XTENSA-ATOMIC-NEXT:    or a12, a9, a99691; XTENSA-ATOMIC-NEXT:    j .LBB150_19692; XTENSA-ATOMIC-NEXT:  .LBB150_6: # %atomicrmw.end9693; XTENSA-ATOMIC-NEXT:    or a2, a8, a89694; XTENSA-ATOMIC-NEXT:    retw9695  %res = atomicrmw umax ptr %a, i32 %b monotonic9696  ret i32 %res9697}9698 9699define i32 @atomicrmw_umax_i32_acquire(ptr %a, i32 %b) nounwind {9700; XTENSA-LABEL: atomicrmw_umax_i32_acquire:9701; XTENSA:       # %bb.0:9702; XTENSA-NEXT:    entry a1, 489703; XTENSA-NEXT:    or a6, a2, a29704; XTENSA-NEXT:    l32i a2, a6, 09705; XTENSA-NEXT:    movi a7, 29706; XTENSA-NEXT:    l32r a5, .LCPI151_09707; XTENSA-NEXT:    j .LBB151_29708; XTENSA-NEXT:  .LBB151_1: # %atomicrmw.start9709; XTENSA-NEXT:    # in Loop: Header=BB151_2 Depth=19710; XTENSA-NEXT:    addi a11, a1, 09711; XTENSA-NEXT:    or a10, a6, a69712; XTENSA-NEXT:    or a13, a7, a79713; XTENSA-NEXT:    or a14, a7, a79714; XTENSA-NEXT:    callx8 a59715; XTENSA-NEXT:    l32i a2, a1, 09716; XTENSA-NEXT:    bnez a10, .LBB151_49717; XTENSA-NEXT:  .LBB151_2: # %atomicrmw.start9718; XTENSA-NEXT:    # =>This Inner Loop Header: Depth=19719; XTENSA-NEXT:    s32i a2, a1, 09720; XTENSA-NEXT:    or a12, a3, a39721; XTENSA-NEXT:    bgeu a3, a2, .LBB151_19722; XTENSA-NEXT:  # %bb.3: # %atomicrmw.start9723; XTENSA-NEXT:    # in Loop: Header=BB151_2 Depth=19724; XTENSA-NEXT:    or a12, a2, a29725; XTENSA-NEXT:    j .LBB151_19726; XTENSA-NEXT:  .LBB151_4: # %atomicrmw.end9727; XTENSA-NEXT:    retw9728;9729; XTENSA-ATOMIC-LABEL: atomicrmw_umax_i32_acquire:9730; XTENSA-ATOMIC:       # %bb.0:9731; XTENSA-ATOMIC-NEXT:    entry a1, 329732; XTENSA-ATOMIC-NEXT:    l32i a11, a2, 09733; XTENSA-ATOMIC-NEXT:    movi a9, 09734; XTENSA-ATOMIC-NEXT:    movi a10, 19735; XTENSA-ATOMIC-NEXT:    j .LBB151_29736; XTENSA-ATOMIC-NEXT:  .LBB151_1: # %atomicrmw.start9737; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB151_2 Depth=19738; XTENSA-ATOMIC-NEXT:    or a11, a8, a89739; XTENSA-ATOMIC-NEXT:    beqi a12, 1, .LBB151_69740; XTENSA-ATOMIC-NEXT:  .LBB151_2: # %atomicrmw.start9741; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=19742; XTENSA-ATOMIC-NEXT:    or a8, a3, a39743; XTENSA-ATOMIC-NEXT:    bgeu a3, a11, .LBB151_49744; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start9745; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB151_2 Depth=19746; XTENSA-ATOMIC-NEXT:    or a8, a11, a119747; XTENSA-ATOMIC-NEXT:  .LBB151_4: # %atomicrmw.start9748; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB151_2 Depth=19749; XTENSA-ATOMIC-NEXT:    wsr a11, scompare19750; XTENSA-ATOMIC-NEXT:    s32c1i a8, a2, 09751; XTENSA-ATOMIC-NEXT:    or a12, a10, a109752; XTENSA-ATOMIC-NEXT:    beq a8, a11, .LBB151_19753; XTENSA-ATOMIC-NEXT:  # %bb.5: # %atomicrmw.start9754; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB151_2 Depth=19755; XTENSA-ATOMIC-NEXT:    or a12, a9, a99756; XTENSA-ATOMIC-NEXT:    j .LBB151_19757; XTENSA-ATOMIC-NEXT:  .LBB151_6: # %atomicrmw.end9758; XTENSA-ATOMIC-NEXT:    memw9759; XTENSA-ATOMIC-NEXT:    or a2, a8, a89760; XTENSA-ATOMIC-NEXT:    retw9761  %res = atomicrmw umax ptr %a, i32 %b acquire9762  ret i32 %res9763}9764 9765define i32 @atomicrmw_umax_i32_release(ptr %a, i32 %b) nounwind {9766; XTENSA-LABEL: atomicrmw_umax_i32_release:9767; XTENSA:       # %bb.0:9768; XTENSA-NEXT:    entry a1, 489769; XTENSA-NEXT:    or a5, a2, a29770; XTENSA-NEXT:    l32i a2, a5, 09771; XTENSA-NEXT:    movi a7, 39772; XTENSA-NEXT:    movi a6, 09773; XTENSA-NEXT:    l32r a4, .LCPI152_09774; XTENSA-NEXT:    j .LBB152_29775; XTENSA-NEXT:  .LBB152_1: # %atomicrmw.start9776; XTENSA-NEXT:    # in Loop: Header=BB152_2 Depth=19777; XTENSA-NEXT:    addi a11, a1, 09778; XTENSA-NEXT:    or a10, a5, a59779; XTENSA-NEXT:    or a13, a7, a79780; XTENSA-NEXT:    or a14, a6, a69781; XTENSA-NEXT:    callx8 a49782; XTENSA-NEXT:    l32i a2, a1, 09783; XTENSA-NEXT:    bnez a10, .LBB152_49784; XTENSA-NEXT:  .LBB152_2: # %atomicrmw.start9785; XTENSA-NEXT:    # =>This Inner Loop Header: Depth=19786; XTENSA-NEXT:    s32i a2, a1, 09787; XTENSA-NEXT:    or a12, a3, a39788; XTENSA-NEXT:    bgeu a3, a2, .LBB152_19789; XTENSA-NEXT:  # %bb.3: # %atomicrmw.start9790; XTENSA-NEXT:    # in Loop: Header=BB152_2 Depth=19791; XTENSA-NEXT:    or a12, a2, a29792; XTENSA-NEXT:    j .LBB152_19793; XTENSA-NEXT:  .LBB152_4: # %atomicrmw.end9794; XTENSA-NEXT:    retw9795;9796; XTENSA-ATOMIC-LABEL: atomicrmw_umax_i32_release:9797; XTENSA-ATOMIC:       # %bb.0:9798; XTENSA-ATOMIC-NEXT:    entry a1, 329799; XTENSA-ATOMIC-NEXT:    memw9800; XTENSA-ATOMIC-NEXT:    l32i a11, a2, 09801; XTENSA-ATOMIC-NEXT:    movi a9, 09802; XTENSA-ATOMIC-NEXT:    movi a10, 19803; XTENSA-ATOMIC-NEXT:    j .LBB152_29804; XTENSA-ATOMIC-NEXT:  .LBB152_1: # %atomicrmw.start9805; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB152_2 Depth=19806; XTENSA-ATOMIC-NEXT:    or a11, a8, a89807; XTENSA-ATOMIC-NEXT:    beqi a12, 1, .LBB152_69808; XTENSA-ATOMIC-NEXT:  .LBB152_2: # %atomicrmw.start9809; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=19810; XTENSA-ATOMIC-NEXT:    or a8, a3, a39811; XTENSA-ATOMIC-NEXT:    bgeu a3, a11, .LBB152_49812; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start9813; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB152_2 Depth=19814; XTENSA-ATOMIC-NEXT:    or a8, a11, a119815; XTENSA-ATOMIC-NEXT:  .LBB152_4: # %atomicrmw.start9816; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB152_2 Depth=19817; XTENSA-ATOMIC-NEXT:    wsr a11, scompare19818; XTENSA-ATOMIC-NEXT:    s32c1i a8, a2, 09819; XTENSA-ATOMIC-NEXT:    or a12, a10, a109820; XTENSA-ATOMIC-NEXT:    beq a8, a11, .LBB152_19821; XTENSA-ATOMIC-NEXT:  # %bb.5: # %atomicrmw.start9822; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB152_2 Depth=19823; XTENSA-ATOMIC-NEXT:    or a12, a9, a99824; XTENSA-ATOMIC-NEXT:    j .LBB152_19825; XTENSA-ATOMIC-NEXT:  .LBB152_6: # %atomicrmw.end9826; XTENSA-ATOMIC-NEXT:    or a2, a8, a89827; XTENSA-ATOMIC-NEXT:    retw9828  %res = atomicrmw umax ptr %a, i32 %b release9829  ret i32 %res9830}9831 9832define i32 @atomicrmw_umax_i32_acq_rel(ptr %a, i32 %b) nounwind {9833; XTENSA-LABEL: atomicrmw_umax_i32_acq_rel:9834; XTENSA:       # %bb.0:9835; XTENSA-NEXT:    entry a1, 489836; XTENSA-NEXT:    or a5, a2, a29837; XTENSA-NEXT:    l32i a2, a5, 09838; XTENSA-NEXT:    movi a7, 49839; XTENSA-NEXT:    movi a6, 29840; XTENSA-NEXT:    l32r a4, .LCPI153_09841; XTENSA-NEXT:    j .LBB153_29842; XTENSA-NEXT:  .LBB153_1: # %atomicrmw.start9843; XTENSA-NEXT:    # in Loop: Header=BB153_2 Depth=19844; XTENSA-NEXT:    addi a11, a1, 09845; XTENSA-NEXT:    or a10, a5, a59846; XTENSA-NEXT:    or a13, a7, a79847; XTENSA-NEXT:    or a14, a6, a69848; XTENSA-NEXT:    callx8 a49849; XTENSA-NEXT:    l32i a2, a1, 09850; XTENSA-NEXT:    bnez a10, .LBB153_49851; XTENSA-NEXT:  .LBB153_2: # %atomicrmw.start9852; XTENSA-NEXT:    # =>This Inner Loop Header: Depth=19853; XTENSA-NEXT:    s32i a2, a1, 09854; XTENSA-NEXT:    or a12, a3, a39855; XTENSA-NEXT:    bgeu a3, a2, .LBB153_19856; XTENSA-NEXT:  # %bb.3: # %atomicrmw.start9857; XTENSA-NEXT:    # in Loop: Header=BB153_2 Depth=19858; XTENSA-NEXT:    or a12, a2, a29859; XTENSA-NEXT:    j .LBB153_19860; XTENSA-NEXT:  .LBB153_4: # %atomicrmw.end9861; XTENSA-NEXT:    retw9862;9863; XTENSA-ATOMIC-LABEL: atomicrmw_umax_i32_acq_rel:9864; XTENSA-ATOMIC:       # %bb.0:9865; XTENSA-ATOMIC-NEXT:    entry a1, 329866; XTENSA-ATOMIC-NEXT:    memw9867; XTENSA-ATOMIC-NEXT:    l32i a11, a2, 09868; XTENSA-ATOMIC-NEXT:    movi a9, 09869; XTENSA-ATOMIC-NEXT:    movi a10, 19870; XTENSA-ATOMIC-NEXT:    j .LBB153_29871; XTENSA-ATOMIC-NEXT:  .LBB153_1: # %atomicrmw.start9872; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB153_2 Depth=19873; XTENSA-ATOMIC-NEXT:    or a11, a8, a89874; XTENSA-ATOMIC-NEXT:    beqi a12, 1, .LBB153_69875; XTENSA-ATOMIC-NEXT:  .LBB153_2: # %atomicrmw.start9876; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=19877; XTENSA-ATOMIC-NEXT:    or a8, a3, a39878; XTENSA-ATOMIC-NEXT:    bgeu a3, a11, .LBB153_49879; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start9880; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB153_2 Depth=19881; XTENSA-ATOMIC-NEXT:    or a8, a11, a119882; XTENSA-ATOMIC-NEXT:  .LBB153_4: # %atomicrmw.start9883; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB153_2 Depth=19884; XTENSA-ATOMIC-NEXT:    wsr a11, scompare19885; XTENSA-ATOMIC-NEXT:    s32c1i a8, a2, 09886; XTENSA-ATOMIC-NEXT:    or a12, a10, a109887; XTENSA-ATOMIC-NEXT:    beq a8, a11, .LBB153_19888; XTENSA-ATOMIC-NEXT:  # %bb.5: # %atomicrmw.start9889; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB153_2 Depth=19890; XTENSA-ATOMIC-NEXT:    or a12, a9, a99891; XTENSA-ATOMIC-NEXT:    j .LBB153_19892; XTENSA-ATOMIC-NEXT:  .LBB153_6: # %atomicrmw.end9893; XTENSA-ATOMIC-NEXT:    memw9894; XTENSA-ATOMIC-NEXT:    or a2, a8, a89895; XTENSA-ATOMIC-NEXT:    retw9896  %res = atomicrmw umax ptr %a, i32 %b acq_rel9897  ret i32 %res9898}9899 9900define i32 @atomicrmw_umax_i32_seq_cst(ptr %a, i32 %b) nounwind {9901; XTENSA-LABEL: atomicrmw_umax_i32_seq_cst:9902; XTENSA:       # %bb.0:9903; XTENSA-NEXT:    entry a1, 489904; XTENSA-NEXT:    or a6, a2, a29905; XTENSA-NEXT:    l32i a2, a6, 09906; XTENSA-NEXT:    movi a7, 59907; XTENSA-NEXT:    l32r a5, .LCPI154_09908; XTENSA-NEXT:    j .LBB154_29909; XTENSA-NEXT:  .LBB154_1: # %atomicrmw.start9910; XTENSA-NEXT:    # in Loop: Header=BB154_2 Depth=19911; XTENSA-NEXT:    addi a11, a1, 09912; XTENSA-NEXT:    or a10, a6, a69913; XTENSA-NEXT:    or a13, a7, a79914; XTENSA-NEXT:    or a14, a7, a79915; XTENSA-NEXT:    callx8 a59916; XTENSA-NEXT:    l32i a2, a1, 09917; XTENSA-NEXT:    bnez a10, .LBB154_49918; XTENSA-NEXT:  .LBB154_2: # %atomicrmw.start9919; XTENSA-NEXT:    # =>This Inner Loop Header: Depth=19920; XTENSA-NEXT:    s32i a2, a1, 09921; XTENSA-NEXT:    or a12, a3, a39922; XTENSA-NEXT:    bgeu a3, a2, .LBB154_19923; XTENSA-NEXT:  # %bb.3: # %atomicrmw.start9924; XTENSA-NEXT:    # in Loop: Header=BB154_2 Depth=19925; XTENSA-NEXT:    or a12, a2, a29926; XTENSA-NEXT:    j .LBB154_19927; XTENSA-NEXT:  .LBB154_4: # %atomicrmw.end9928; XTENSA-NEXT:    retw9929;9930; XTENSA-ATOMIC-LABEL: atomicrmw_umax_i32_seq_cst:9931; XTENSA-ATOMIC:       # %bb.0:9932; XTENSA-ATOMIC-NEXT:    entry a1, 329933; XTENSA-ATOMIC-NEXT:    memw9934; XTENSA-ATOMIC-NEXT:    l32i a11, a2, 09935; XTENSA-ATOMIC-NEXT:    movi a9, 09936; XTENSA-ATOMIC-NEXT:    movi a10, 19937; XTENSA-ATOMIC-NEXT:    j .LBB154_29938; XTENSA-ATOMIC-NEXT:  .LBB154_1: # %atomicrmw.start9939; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB154_2 Depth=19940; XTENSA-ATOMIC-NEXT:    or a11, a8, a89941; XTENSA-ATOMIC-NEXT:    beqi a12, 1, .LBB154_69942; XTENSA-ATOMIC-NEXT:  .LBB154_2: # %atomicrmw.start9943; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=19944; XTENSA-ATOMIC-NEXT:    or a8, a3, a39945; XTENSA-ATOMIC-NEXT:    bgeu a3, a11, .LBB154_49946; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start9947; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB154_2 Depth=19948; XTENSA-ATOMIC-NEXT:    or a8, a11, a119949; XTENSA-ATOMIC-NEXT:  .LBB154_4: # %atomicrmw.start9950; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB154_2 Depth=19951; XTENSA-ATOMIC-NEXT:    wsr a11, scompare19952; XTENSA-ATOMIC-NEXT:    s32c1i a8, a2, 09953; XTENSA-ATOMIC-NEXT:    or a12, a10, a109954; XTENSA-ATOMIC-NEXT:    beq a8, a11, .LBB154_19955; XTENSA-ATOMIC-NEXT:  # %bb.5: # %atomicrmw.start9956; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB154_2 Depth=19957; XTENSA-ATOMIC-NEXT:    or a12, a9, a99958; XTENSA-ATOMIC-NEXT:    j .LBB154_19959; XTENSA-ATOMIC-NEXT:  .LBB154_6: # %atomicrmw.end9960; XTENSA-ATOMIC-NEXT:    memw9961; XTENSA-ATOMIC-NEXT:    or a2, a8, a89962; XTENSA-ATOMIC-NEXT:    retw9963  %res = atomicrmw umax ptr %a, i32 %b seq_cst9964  ret i32 %res9965}9966 9967define i32 @atomicrmw_umin_i32_monotonic(ptr %a, i32 %b) nounwind {9968; XTENSA-LABEL: atomicrmw_umin_i32_monotonic:9969; XTENSA:       # %bb.0:9970; XTENSA-NEXT:    entry a1, 489971; XTENSA-NEXT:    or a6, a2, a29972; XTENSA-NEXT:    l32i a2, a6, 09973; XTENSA-NEXT:    movi a7, 09974; XTENSA-NEXT:    l32r a5, .LCPI155_09975; XTENSA-NEXT:    j .LBB155_29976; XTENSA-NEXT:  .LBB155_1: # %atomicrmw.start9977; XTENSA-NEXT:    # in Loop: Header=BB155_2 Depth=19978; XTENSA-NEXT:    addi a11, a1, 09979; XTENSA-NEXT:    or a10, a6, a69980; XTENSA-NEXT:    or a13, a7, a79981; XTENSA-NEXT:    or a14, a7, a79982; XTENSA-NEXT:    callx8 a59983; XTENSA-NEXT:    l32i a2, a1, 09984; XTENSA-NEXT:    bnez a10, .LBB155_49985; XTENSA-NEXT:  .LBB155_2: # %atomicrmw.start9986; XTENSA-NEXT:    # =>This Inner Loop Header: Depth=19987; XTENSA-NEXT:    s32i a2, a1, 09988; XTENSA-NEXT:    or a12, a3, a39989; XTENSA-NEXT:    bltu a3, a2, .LBB155_19990; XTENSA-NEXT:  # %bb.3: # %atomicrmw.start9991; XTENSA-NEXT:    # in Loop: Header=BB155_2 Depth=19992; XTENSA-NEXT:    or a12, a2, a29993; XTENSA-NEXT:    j .LBB155_19994; XTENSA-NEXT:  .LBB155_4: # %atomicrmw.end9995; XTENSA-NEXT:    retw9996;9997; XTENSA-ATOMIC-LABEL: atomicrmw_umin_i32_monotonic:9998; XTENSA-ATOMIC:       # %bb.0:9999; XTENSA-ATOMIC-NEXT:    entry a1, 3210000; XTENSA-ATOMIC-NEXT:    l32i a11, a2, 010001; XTENSA-ATOMIC-NEXT:    movi a9, 010002; XTENSA-ATOMIC-NEXT:    movi a10, 110003; XTENSA-ATOMIC-NEXT:    j .LBB155_210004; XTENSA-ATOMIC-NEXT:  .LBB155_1: # %atomicrmw.start10005; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB155_2 Depth=110006; XTENSA-ATOMIC-NEXT:    or a11, a8, a810007; XTENSA-ATOMIC-NEXT:    beqi a12, 1, .LBB155_610008; XTENSA-ATOMIC-NEXT:  .LBB155_2: # %atomicrmw.start10009; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=110010; XTENSA-ATOMIC-NEXT:    or a8, a3, a310011; XTENSA-ATOMIC-NEXT:    bltu a3, a11, .LBB155_410012; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start10013; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB155_2 Depth=110014; XTENSA-ATOMIC-NEXT:    or a8, a11, a1110015; XTENSA-ATOMIC-NEXT:  .LBB155_4: # %atomicrmw.start10016; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB155_2 Depth=110017; XTENSA-ATOMIC-NEXT:    wsr a11, scompare110018; XTENSA-ATOMIC-NEXT:    s32c1i a8, a2, 010019; XTENSA-ATOMIC-NEXT:    or a12, a10, a1010020; XTENSA-ATOMIC-NEXT:    beq a8, a11, .LBB155_110021; XTENSA-ATOMIC-NEXT:  # %bb.5: # %atomicrmw.start10022; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB155_2 Depth=110023; XTENSA-ATOMIC-NEXT:    or a12, a9, a910024; XTENSA-ATOMIC-NEXT:    j .LBB155_110025; XTENSA-ATOMIC-NEXT:  .LBB155_6: # %atomicrmw.end10026; XTENSA-ATOMIC-NEXT:    or a2, a8, a810027; XTENSA-ATOMIC-NEXT:    retw10028  %res = atomicrmw umin ptr %a, i32 %b monotonic10029  ret i32 %res10030}10031 10032define i32 @atomicrmw_umin_i32_acquire(ptr %a, i32 %b) nounwind {10033; XTENSA-LABEL: atomicrmw_umin_i32_acquire:10034; XTENSA:       # %bb.0:10035; XTENSA-NEXT:    entry a1, 4810036; XTENSA-NEXT:    or a6, a2, a210037; XTENSA-NEXT:    l32i a2, a6, 010038; XTENSA-NEXT:    movi a7, 210039; XTENSA-NEXT:    l32r a5, .LCPI156_010040; XTENSA-NEXT:    j .LBB156_210041; XTENSA-NEXT:  .LBB156_1: # %atomicrmw.start10042; XTENSA-NEXT:    # in Loop: Header=BB156_2 Depth=110043; XTENSA-NEXT:    addi a11, a1, 010044; XTENSA-NEXT:    or a10, a6, a610045; XTENSA-NEXT:    or a13, a7, a710046; XTENSA-NEXT:    or a14, a7, a710047; XTENSA-NEXT:    callx8 a510048; XTENSA-NEXT:    l32i a2, a1, 010049; XTENSA-NEXT:    bnez a10, .LBB156_410050; XTENSA-NEXT:  .LBB156_2: # %atomicrmw.start10051; XTENSA-NEXT:    # =>This Inner Loop Header: Depth=110052; XTENSA-NEXT:    s32i a2, a1, 010053; XTENSA-NEXT:    or a12, a3, a310054; XTENSA-NEXT:    bltu a3, a2, .LBB156_110055; XTENSA-NEXT:  # %bb.3: # %atomicrmw.start10056; XTENSA-NEXT:    # in Loop: Header=BB156_2 Depth=110057; XTENSA-NEXT:    or a12, a2, a210058; XTENSA-NEXT:    j .LBB156_110059; XTENSA-NEXT:  .LBB156_4: # %atomicrmw.end10060; XTENSA-NEXT:    retw10061;10062; XTENSA-ATOMIC-LABEL: atomicrmw_umin_i32_acquire:10063; XTENSA-ATOMIC:       # %bb.0:10064; XTENSA-ATOMIC-NEXT:    entry a1, 3210065; XTENSA-ATOMIC-NEXT:    l32i a11, a2, 010066; XTENSA-ATOMIC-NEXT:    movi a9, 010067; XTENSA-ATOMIC-NEXT:    movi a10, 110068; XTENSA-ATOMIC-NEXT:    j .LBB156_210069; XTENSA-ATOMIC-NEXT:  .LBB156_1: # %atomicrmw.start10070; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB156_2 Depth=110071; XTENSA-ATOMIC-NEXT:    or a11, a8, a810072; XTENSA-ATOMIC-NEXT:    beqi a12, 1, .LBB156_610073; XTENSA-ATOMIC-NEXT:  .LBB156_2: # %atomicrmw.start10074; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=110075; XTENSA-ATOMIC-NEXT:    or a8, a3, a310076; XTENSA-ATOMIC-NEXT:    bltu a3, a11, .LBB156_410077; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start10078; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB156_2 Depth=110079; XTENSA-ATOMIC-NEXT:    or a8, a11, a1110080; XTENSA-ATOMIC-NEXT:  .LBB156_4: # %atomicrmw.start10081; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB156_2 Depth=110082; XTENSA-ATOMIC-NEXT:    wsr a11, scompare110083; XTENSA-ATOMIC-NEXT:    s32c1i a8, a2, 010084; XTENSA-ATOMIC-NEXT:    or a12, a10, a1010085; XTENSA-ATOMIC-NEXT:    beq a8, a11, .LBB156_110086; XTENSA-ATOMIC-NEXT:  # %bb.5: # %atomicrmw.start10087; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB156_2 Depth=110088; XTENSA-ATOMIC-NEXT:    or a12, a9, a910089; XTENSA-ATOMIC-NEXT:    j .LBB156_110090; XTENSA-ATOMIC-NEXT:  .LBB156_6: # %atomicrmw.end10091; XTENSA-ATOMIC-NEXT:    memw10092; XTENSA-ATOMIC-NEXT:    or a2, a8, a810093; XTENSA-ATOMIC-NEXT:    retw10094  %res = atomicrmw umin ptr %a, i32 %b acquire10095  ret i32 %res10096}10097 10098define i32 @atomicrmw_umin_i32_release(ptr %a, i32 %b) nounwind {10099; XTENSA-LABEL: atomicrmw_umin_i32_release:10100; XTENSA:       # %bb.0:10101; XTENSA-NEXT:    entry a1, 4810102; XTENSA-NEXT:    or a5, a2, a210103; XTENSA-NEXT:    l32i a2, a5, 010104; XTENSA-NEXT:    movi a7, 310105; XTENSA-NEXT:    movi a6, 010106; XTENSA-NEXT:    l32r a4, .LCPI157_010107; XTENSA-NEXT:    j .LBB157_210108; XTENSA-NEXT:  .LBB157_1: # %atomicrmw.start10109; XTENSA-NEXT:    # in Loop: Header=BB157_2 Depth=110110; XTENSA-NEXT:    addi a11, a1, 010111; XTENSA-NEXT:    or a10, a5, a510112; XTENSA-NEXT:    or a13, a7, a710113; XTENSA-NEXT:    or a14, a6, a610114; XTENSA-NEXT:    callx8 a410115; XTENSA-NEXT:    l32i a2, a1, 010116; XTENSA-NEXT:    bnez a10, .LBB157_410117; XTENSA-NEXT:  .LBB157_2: # %atomicrmw.start10118; XTENSA-NEXT:    # =>This Inner Loop Header: Depth=110119; XTENSA-NEXT:    s32i a2, a1, 010120; XTENSA-NEXT:    or a12, a3, a310121; XTENSA-NEXT:    bltu a3, a2, .LBB157_110122; XTENSA-NEXT:  # %bb.3: # %atomicrmw.start10123; XTENSA-NEXT:    # in Loop: Header=BB157_2 Depth=110124; XTENSA-NEXT:    or a12, a2, a210125; XTENSA-NEXT:    j .LBB157_110126; XTENSA-NEXT:  .LBB157_4: # %atomicrmw.end10127; XTENSA-NEXT:    retw10128;10129; XTENSA-ATOMIC-LABEL: atomicrmw_umin_i32_release:10130; XTENSA-ATOMIC:       # %bb.0:10131; XTENSA-ATOMIC-NEXT:    entry a1, 3210132; XTENSA-ATOMIC-NEXT:    memw10133; XTENSA-ATOMIC-NEXT:    l32i a11, a2, 010134; XTENSA-ATOMIC-NEXT:    movi a9, 010135; XTENSA-ATOMIC-NEXT:    movi a10, 110136; XTENSA-ATOMIC-NEXT:    j .LBB157_210137; XTENSA-ATOMIC-NEXT:  .LBB157_1: # %atomicrmw.start10138; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB157_2 Depth=110139; XTENSA-ATOMIC-NEXT:    or a11, a8, a810140; XTENSA-ATOMIC-NEXT:    beqi a12, 1, .LBB157_610141; XTENSA-ATOMIC-NEXT:  .LBB157_2: # %atomicrmw.start10142; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=110143; XTENSA-ATOMIC-NEXT:    or a8, a3, a310144; XTENSA-ATOMIC-NEXT:    bltu a3, a11, .LBB157_410145; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start10146; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB157_2 Depth=110147; XTENSA-ATOMIC-NEXT:    or a8, a11, a1110148; XTENSA-ATOMIC-NEXT:  .LBB157_4: # %atomicrmw.start10149; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB157_2 Depth=110150; XTENSA-ATOMIC-NEXT:    wsr a11, scompare110151; XTENSA-ATOMIC-NEXT:    s32c1i a8, a2, 010152; XTENSA-ATOMIC-NEXT:    or a12, a10, a1010153; XTENSA-ATOMIC-NEXT:    beq a8, a11, .LBB157_110154; XTENSA-ATOMIC-NEXT:  # %bb.5: # %atomicrmw.start10155; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB157_2 Depth=110156; XTENSA-ATOMIC-NEXT:    or a12, a9, a910157; XTENSA-ATOMIC-NEXT:    j .LBB157_110158; XTENSA-ATOMIC-NEXT:  .LBB157_6: # %atomicrmw.end10159; XTENSA-ATOMIC-NEXT:    or a2, a8, a810160; XTENSA-ATOMIC-NEXT:    retw10161  %res = atomicrmw umin ptr %a, i32 %b release10162  ret i32 %res10163}10164 10165define i32 @atomicrmw_umin_i32_acq_rel(ptr %a, i32 %b) nounwind {10166; XTENSA-LABEL: atomicrmw_umin_i32_acq_rel:10167; XTENSA:       # %bb.0:10168; XTENSA-NEXT:    entry a1, 4810169; XTENSA-NEXT:    or a5, a2, a210170; XTENSA-NEXT:    l32i a2, a5, 010171; XTENSA-NEXT:    movi a7, 410172; XTENSA-NEXT:    movi a6, 210173; XTENSA-NEXT:    l32r a4, .LCPI158_010174; XTENSA-NEXT:    j .LBB158_210175; XTENSA-NEXT:  .LBB158_1: # %atomicrmw.start10176; XTENSA-NEXT:    # in Loop: Header=BB158_2 Depth=110177; XTENSA-NEXT:    addi a11, a1, 010178; XTENSA-NEXT:    or a10, a5, a510179; XTENSA-NEXT:    or a13, a7, a710180; XTENSA-NEXT:    or a14, a6, a610181; XTENSA-NEXT:    callx8 a410182; XTENSA-NEXT:    l32i a2, a1, 010183; XTENSA-NEXT:    bnez a10, .LBB158_410184; XTENSA-NEXT:  .LBB158_2: # %atomicrmw.start10185; XTENSA-NEXT:    # =>This Inner Loop Header: Depth=110186; XTENSA-NEXT:    s32i a2, a1, 010187; XTENSA-NEXT:    or a12, a3, a310188; XTENSA-NEXT:    bltu a3, a2, .LBB158_110189; XTENSA-NEXT:  # %bb.3: # %atomicrmw.start10190; XTENSA-NEXT:    # in Loop: Header=BB158_2 Depth=110191; XTENSA-NEXT:    or a12, a2, a210192; XTENSA-NEXT:    j .LBB158_110193; XTENSA-NEXT:  .LBB158_4: # %atomicrmw.end10194; XTENSA-NEXT:    retw10195;10196; XTENSA-ATOMIC-LABEL: atomicrmw_umin_i32_acq_rel:10197; XTENSA-ATOMIC:       # %bb.0:10198; XTENSA-ATOMIC-NEXT:    entry a1, 3210199; XTENSA-ATOMIC-NEXT:    memw10200; XTENSA-ATOMIC-NEXT:    l32i a11, a2, 010201; XTENSA-ATOMIC-NEXT:    movi a9, 010202; XTENSA-ATOMIC-NEXT:    movi a10, 110203; XTENSA-ATOMIC-NEXT:    j .LBB158_210204; XTENSA-ATOMIC-NEXT:  .LBB158_1: # %atomicrmw.start10205; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB158_2 Depth=110206; XTENSA-ATOMIC-NEXT:    or a11, a8, a810207; XTENSA-ATOMIC-NEXT:    beqi a12, 1, .LBB158_610208; XTENSA-ATOMIC-NEXT:  .LBB158_2: # %atomicrmw.start10209; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=110210; XTENSA-ATOMIC-NEXT:    or a8, a3, a310211; XTENSA-ATOMIC-NEXT:    bltu a3, a11, .LBB158_410212; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start10213; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB158_2 Depth=110214; XTENSA-ATOMIC-NEXT:    or a8, a11, a1110215; XTENSA-ATOMIC-NEXT:  .LBB158_4: # %atomicrmw.start10216; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB158_2 Depth=110217; XTENSA-ATOMIC-NEXT:    wsr a11, scompare110218; XTENSA-ATOMIC-NEXT:    s32c1i a8, a2, 010219; XTENSA-ATOMIC-NEXT:    or a12, a10, a1010220; XTENSA-ATOMIC-NEXT:    beq a8, a11, .LBB158_110221; XTENSA-ATOMIC-NEXT:  # %bb.5: # %atomicrmw.start10222; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB158_2 Depth=110223; XTENSA-ATOMIC-NEXT:    or a12, a9, a910224; XTENSA-ATOMIC-NEXT:    j .LBB158_110225; XTENSA-ATOMIC-NEXT:  .LBB158_6: # %atomicrmw.end10226; XTENSA-ATOMIC-NEXT:    memw10227; XTENSA-ATOMIC-NEXT:    or a2, a8, a810228; XTENSA-ATOMIC-NEXT:    retw10229  %res = atomicrmw umin ptr %a, i32 %b acq_rel10230  ret i32 %res10231}10232 10233define i32 @atomicrmw_umin_i32_seq_cst(ptr %a, i32 %b) nounwind {10234; XTENSA-LABEL: atomicrmw_umin_i32_seq_cst:10235; XTENSA:       # %bb.0:10236; XTENSA-NEXT:    entry a1, 4810237; XTENSA-NEXT:    or a6, a2, a210238; XTENSA-NEXT:    l32i a2, a6, 010239; XTENSA-NEXT:    movi a7, 510240; XTENSA-NEXT:    l32r a5, .LCPI159_010241; XTENSA-NEXT:    j .LBB159_210242; XTENSA-NEXT:  .LBB159_1: # %atomicrmw.start10243; XTENSA-NEXT:    # in Loop: Header=BB159_2 Depth=110244; XTENSA-NEXT:    addi a11, a1, 010245; XTENSA-NEXT:    or a10, a6, a610246; XTENSA-NEXT:    or a13, a7, a710247; XTENSA-NEXT:    or a14, a7, a710248; XTENSA-NEXT:    callx8 a510249; XTENSA-NEXT:    l32i a2, a1, 010250; XTENSA-NEXT:    bnez a10, .LBB159_410251; XTENSA-NEXT:  .LBB159_2: # %atomicrmw.start10252; XTENSA-NEXT:    # =>This Inner Loop Header: Depth=110253; XTENSA-NEXT:    s32i a2, a1, 010254; XTENSA-NEXT:    or a12, a3, a310255; XTENSA-NEXT:    bltu a3, a2, .LBB159_110256; XTENSA-NEXT:  # %bb.3: # %atomicrmw.start10257; XTENSA-NEXT:    # in Loop: Header=BB159_2 Depth=110258; XTENSA-NEXT:    or a12, a2, a210259; XTENSA-NEXT:    j .LBB159_110260; XTENSA-NEXT:  .LBB159_4: # %atomicrmw.end10261; XTENSA-NEXT:    retw10262;10263; XTENSA-ATOMIC-LABEL: atomicrmw_umin_i32_seq_cst:10264; XTENSA-ATOMIC:       # %bb.0:10265; XTENSA-ATOMIC-NEXT:    entry a1, 3210266; XTENSA-ATOMIC-NEXT:    memw10267; XTENSA-ATOMIC-NEXT:    l32i a11, a2, 010268; XTENSA-ATOMIC-NEXT:    movi a9, 010269; XTENSA-ATOMIC-NEXT:    movi a10, 110270; XTENSA-ATOMIC-NEXT:    j .LBB159_210271; XTENSA-ATOMIC-NEXT:  .LBB159_1: # %atomicrmw.start10272; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB159_2 Depth=110273; XTENSA-ATOMIC-NEXT:    or a11, a8, a810274; XTENSA-ATOMIC-NEXT:    beqi a12, 1, .LBB159_610275; XTENSA-ATOMIC-NEXT:  .LBB159_2: # %atomicrmw.start10276; XTENSA-ATOMIC-NEXT:    # =>This Inner Loop Header: Depth=110277; XTENSA-ATOMIC-NEXT:    or a8, a3, a310278; XTENSA-ATOMIC-NEXT:    bltu a3, a11, .LBB159_410279; XTENSA-ATOMIC-NEXT:  # %bb.3: # %atomicrmw.start10280; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB159_2 Depth=110281; XTENSA-ATOMIC-NEXT:    or a8, a11, a1110282; XTENSA-ATOMIC-NEXT:  .LBB159_4: # %atomicrmw.start10283; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB159_2 Depth=110284; XTENSA-ATOMIC-NEXT:    wsr a11, scompare110285; XTENSA-ATOMIC-NEXT:    s32c1i a8, a2, 010286; XTENSA-ATOMIC-NEXT:    or a12, a10, a1010287; XTENSA-ATOMIC-NEXT:    beq a8, a11, .LBB159_110288; XTENSA-ATOMIC-NEXT:  # %bb.5: # %atomicrmw.start10289; XTENSA-ATOMIC-NEXT:    # in Loop: Header=BB159_2 Depth=110290; XTENSA-ATOMIC-NEXT:    or a12, a9, a910291; XTENSA-ATOMIC-NEXT:    j .LBB159_110292; XTENSA-ATOMIC-NEXT:  .LBB159_6: # %atomicrmw.end10293; XTENSA-ATOMIC-NEXT:    memw10294; XTENSA-ATOMIC-NEXT:    or a2, a8, a810295; XTENSA-ATOMIC-NEXT:    retw10296  %res = atomicrmw umin ptr %a, i32 %b seq_cst10297  ret i32 %res10298}10299