6111 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=powerpc64le-linux-gnu -mcpu=pwr8 -verify-machineinstrs \3; RUN: < %s | FileCheck %s4; RUN: llc -mtriple=powerpc-aix- -mcpu=pwr7 -verify-machineinstrs \5; RUN: < %s | FileCheck %s --check-prefix=AIX326; ModuleID = '../clang/test/CodeGen/Atomics.c'7 8@sc = dso_local global i8 0, align 19@uc = dso_local global i8 0, align 110@ss = dso_local global i16 0, align 211@us = dso_local global i16 0, align 212@si = dso_local global i32 0, align 413@ui = dso_local global i32 0, align 414@sll = dso_local global i64 0, align 815@ull = dso_local global i64 0, align 816@u128 = dso_local global i128 0, align 1617@s128 = dso_local global i128 0, align 1618 19define dso_local void @test_op_ignore() local_unnamed_addr #0 {20; CHECK-LABEL: test_op_ignore:21; CHECK: # %bb.0: # %entry22; CHECK-NEXT: addis 3, 2, sc@toc@ha23; CHECK-NEXT: std 26, -48(1) # 8-byte Folded Spill24; CHECK-NEXT: std 27, -40(1) # 8-byte Folded Spill25; CHECK-NEXT: addi 4, 3, sc@toc@l26; CHECK-NEXT: std 28, -32(1) # 8-byte Folded Spill27; CHECK-NEXT: std 29, -24(1) # 8-byte Folded Spill28; CHECK-NEXT: std 30, -16(1) # 8-byte Folded Spill29; CHECK-NEXT: sync30; CHECK-NEXT: li 3, 131; CHECK-NEXT: .LBB0_1: # %entry32; CHECK-NEXT: #33; CHECK-NEXT: lbarx 5, 0, 434; CHECK-NEXT: addi 5, 5, 135; CHECK-NEXT: stbcx. 5, 0, 436; CHECK-NEXT: bne- 0, .LBB0_137; CHECK-NEXT: # %bb.2: # %entry38; CHECK-NEXT: addis 5, 2, uc@toc@ha39; CHECK-NEXT: lwsync40; CHECK-NEXT: sync41; CHECK-NEXT: addi 5, 5, uc@toc@l42; CHECK-NEXT: .LBB0_3: # %entry43; CHECK-NEXT: #44; CHECK-NEXT: lbarx 6, 0, 545; CHECK-NEXT: addi 6, 6, 146; CHECK-NEXT: stbcx. 6, 0, 547; CHECK-NEXT: bne- 0, .LBB0_348; CHECK-NEXT: # %bb.4: # %entry49; CHECK-NEXT: addis 6, 2, ss@toc@ha50; CHECK-NEXT: lwsync51; CHECK-NEXT: sync52; CHECK-NEXT: addi 6, 6, ss@toc@l53; CHECK-NEXT: .LBB0_5: # %entry54; CHECK-NEXT: #55; CHECK-NEXT: lharx 7, 0, 656; CHECK-NEXT: addi 7, 7, 157; CHECK-NEXT: sthcx. 7, 0, 658; CHECK-NEXT: bne- 0, .LBB0_559; CHECK-NEXT: # %bb.6: # %entry60; CHECK-NEXT: addis 7, 2, us@toc@ha61; CHECK-NEXT: lwsync62; CHECK-NEXT: sync63; CHECK-NEXT: addi 8, 7, us@toc@l64; CHECK-NEXT: .LBB0_7: # %entry65; CHECK-NEXT: #66; CHECK-NEXT: lharx 7, 0, 867; CHECK-NEXT: addi 7, 7, 168; CHECK-NEXT: sthcx. 7, 0, 869; CHECK-NEXT: bne- 0, .LBB0_770; CHECK-NEXT: # %bb.8: # %entry71; CHECK-NEXT: addis 7, 2, si@toc@ha72; CHECK-NEXT: lwsync73; CHECK-NEXT: sync74; CHECK-NEXT: addi 9, 7, si@toc@l75; CHECK-NEXT: .LBB0_9: # %entry76; CHECK-NEXT: #77; CHECK-NEXT: lwarx 7, 0, 978; CHECK-NEXT: addi 7, 7, 179; CHECK-NEXT: stwcx. 7, 0, 980; CHECK-NEXT: bne- 0, .LBB0_981; CHECK-NEXT: # %bb.10: # %entry82; CHECK-NEXT: addis 7, 2, ui@toc@ha83; CHECK-NEXT: lwsync84; CHECK-NEXT: sync85; CHECK-NEXT: addi 10, 7, ui@toc@l86; CHECK-NEXT: .LBB0_11: # %entry87; CHECK-NEXT: #88; CHECK-NEXT: lwarx 7, 0, 1089; CHECK-NEXT: addi 7, 7, 190; CHECK-NEXT: stwcx. 7, 0, 1091; CHECK-NEXT: bne- 0, .LBB0_1192; CHECK-NEXT: # %bb.12: # %entry93; CHECK-NEXT: addis 7, 2, sll@toc@ha94; CHECK-NEXT: lwsync95; CHECK-NEXT: sync96; CHECK-NEXT: addi 11, 7, sll@toc@l97; CHECK-NEXT: li 7, 198; CHECK-NEXT: .LBB0_13: # %entry99; CHECK-NEXT: #100; CHECK-NEXT: ldarx 12, 0, 11101; CHECK-NEXT: addi 12, 12, 1102; CHECK-NEXT: stdcx. 12, 0, 11103; CHECK-NEXT: bne- 0, .LBB0_13104; CHECK-NEXT: # %bb.14: # %entry105; CHECK-NEXT: addis 12, 2, ull@toc@ha106; CHECK-NEXT: lwsync107; CHECK-NEXT: sync108; CHECK-NEXT: addi 12, 12, ull@toc@l109; CHECK-NEXT: .LBB0_15: # %entry110; CHECK-NEXT: #111; CHECK-NEXT: ldarx 30, 0, 12112; CHECK-NEXT: addi 0, 30, 1113; CHECK-NEXT: stdcx. 0, 0, 12114; CHECK-NEXT: bne- 0, .LBB0_15115; CHECK-NEXT: # %bb.16: # %entry116; CHECK-NEXT: lwsync117; CHECK-NEXT: sync118; CHECK-NEXT: .LBB0_17: # %entry119; CHECK-NEXT: #120; CHECK-NEXT: lbarx 0, 0, 4121; CHECK-NEXT: sub 0, 0, 3122; CHECK-NEXT: stbcx. 0, 0, 4123; CHECK-NEXT: bne- 0, .LBB0_17124; CHECK-NEXT: # %bb.18: # %entry125; CHECK-NEXT: lwsync126; CHECK-NEXT: sync127; CHECK-NEXT: .LBB0_19: # %entry128; CHECK-NEXT: #129; CHECK-NEXT: lbarx 0, 0, 5130; CHECK-NEXT: sub 0, 0, 3131; CHECK-NEXT: stbcx. 0, 0, 5132; CHECK-NEXT: bne- 0, .LBB0_19133; CHECK-NEXT: # %bb.20: # %entry134; CHECK-NEXT: lwsync135; CHECK-NEXT: sync136; CHECK-NEXT: .LBB0_21: # %entry137; CHECK-NEXT: #138; CHECK-NEXT: lharx 0, 0, 6139; CHECK-NEXT: sub 0, 0, 3140; CHECK-NEXT: sthcx. 0, 0, 6141; CHECK-NEXT: bne- 0, .LBB0_21142; CHECK-NEXT: # %bb.22: # %entry143; CHECK-NEXT: lwsync144; CHECK-NEXT: sync145; CHECK-NEXT: .LBB0_23: # %entry146; CHECK-NEXT: #147; CHECK-NEXT: lharx 0, 0, 8148; CHECK-NEXT: sub 0, 0, 3149; CHECK-NEXT: sthcx. 0, 0, 8150; CHECK-NEXT: bne- 0, .LBB0_23151; CHECK-NEXT: # %bb.24: # %entry152; CHECK-NEXT: lwsync153; CHECK-NEXT: sync154; CHECK-NEXT: .LBB0_25: # %entry155; CHECK-NEXT: #156; CHECK-NEXT: lwarx 0, 0, 9157; CHECK-NEXT: sub 0, 0, 3158; CHECK-NEXT: stwcx. 0, 0, 9159; CHECK-NEXT: bne- 0, .LBB0_25160; CHECK-NEXT: # %bb.26: # %entry161; CHECK-NEXT: lwsync162; CHECK-NEXT: sync163; CHECK-NEXT: .LBB0_27: # %entry164; CHECK-NEXT: #165; CHECK-NEXT: lwarx 0, 0, 10166; CHECK-NEXT: sub 0, 0, 3167; CHECK-NEXT: stwcx. 0, 0, 10168; CHECK-NEXT: bne- 0, .LBB0_27169; CHECK-NEXT: # %bb.28: # %entry170; CHECK-NEXT: lwsync171; CHECK-NEXT: sync172; CHECK-NEXT: .LBB0_29: # %entry173; CHECK-NEXT: #174; CHECK-NEXT: ldarx 0, 0, 11175; CHECK-NEXT: sub 0, 0, 7176; CHECK-NEXT: stdcx. 0, 0, 11177; CHECK-NEXT: bne- 0, .LBB0_29178; CHECK-NEXT: # %bb.30: # %entry179; CHECK-NEXT: lwsync180; CHECK-NEXT: sync181; CHECK-NEXT: .LBB0_31: # %entry182; CHECK-NEXT: #183; CHECK-NEXT: ldarx 0, 0, 12184; CHECK-NEXT: sub 0, 0, 7185; CHECK-NEXT: stdcx. 0, 0, 12186; CHECK-NEXT: bne- 0, .LBB0_31187; CHECK-NEXT: # %bb.32: # %entry188; CHECK-NEXT: lwsync189; CHECK-NEXT: sync190; CHECK-NEXT: .LBB0_33: # %entry191; CHECK-NEXT: #192; CHECK-NEXT: lbarx 0, 0, 4193; CHECK-NEXT: ori 0, 0, 1194; CHECK-NEXT: stbcx. 0, 0, 4195; CHECK-NEXT: bne- 0, .LBB0_33196; CHECK-NEXT: # %bb.34: # %entry197; CHECK-NEXT: lwsync198; CHECK-NEXT: sync199; CHECK-NEXT: .LBB0_35: # %entry200; CHECK-NEXT: #201; CHECK-NEXT: lbarx 0, 0, 5202; CHECK-NEXT: ori 0, 0, 1203; CHECK-NEXT: stbcx. 0, 0, 5204; CHECK-NEXT: bne- 0, .LBB0_35205; CHECK-NEXT: # %bb.36: # %entry206; CHECK-NEXT: lwsync207; CHECK-NEXT: sync208; CHECK-NEXT: .LBB0_37: # %entry209; CHECK-NEXT: #210; CHECK-NEXT: lharx 0, 0, 6211; CHECK-NEXT: ori 0, 0, 1212; CHECK-NEXT: sthcx. 0, 0, 6213; CHECK-NEXT: bne- 0, .LBB0_37214; CHECK-NEXT: # %bb.38: # %entry215; CHECK-NEXT: lwsync216; CHECK-NEXT: sync217; CHECK-NEXT: .LBB0_39: # %entry218; CHECK-NEXT: #219; CHECK-NEXT: lharx 0, 0, 8220; CHECK-NEXT: ori 0, 0, 1221; CHECK-NEXT: sthcx. 0, 0, 8222; CHECK-NEXT: bne- 0, .LBB0_39223; CHECK-NEXT: # %bb.40: # %entry224; CHECK-NEXT: lwsync225; CHECK-NEXT: sync226; CHECK-NEXT: .LBB0_41: # %entry227; CHECK-NEXT: #228; CHECK-NEXT: lwarx 0, 0, 9229; CHECK-NEXT: ori 0, 0, 1230; CHECK-NEXT: stwcx. 0, 0, 9231; CHECK-NEXT: bne- 0, .LBB0_41232; CHECK-NEXT: # %bb.42: # %entry233; CHECK-NEXT: lwsync234; CHECK-NEXT: sync235; CHECK-NEXT: .LBB0_43: # %entry236; CHECK-NEXT: #237; CHECK-NEXT: lwarx 0, 0, 10238; CHECK-NEXT: ori 0, 0, 1239; CHECK-NEXT: stwcx. 0, 0, 10240; CHECK-NEXT: bne- 0, .LBB0_43241; CHECK-NEXT: # %bb.44: # %entry242; CHECK-NEXT: lwsync243; CHECK-NEXT: sync244; CHECK-NEXT: .LBB0_45: # %entry245; CHECK-NEXT: #246; CHECK-NEXT: ldarx 0, 0, 11247; CHECK-NEXT: ori 0, 0, 1248; CHECK-NEXT: stdcx. 0, 0, 11249; CHECK-NEXT: bne- 0, .LBB0_45250; CHECK-NEXT: # %bb.46: # %entry251; CHECK-NEXT: lwsync252; CHECK-NEXT: sync253; CHECK-NEXT: .LBB0_47: # %entry254; CHECK-NEXT: #255; CHECK-NEXT: ldarx 0, 0, 12256; CHECK-NEXT: ori 0, 0, 1257; CHECK-NEXT: stdcx. 0, 0, 12258; CHECK-NEXT: bne- 0, .LBB0_47259; CHECK-NEXT: # %bb.48: # %entry260; CHECK-NEXT: lwsync261; CHECK-NEXT: sync262; CHECK-NEXT: .LBB0_49: # %entry263; CHECK-NEXT: #264; CHECK-NEXT: lbarx 0, 0, 4265; CHECK-NEXT: xori 0, 0, 1266; CHECK-NEXT: stbcx. 0, 0, 4267; CHECK-NEXT: bne- 0, .LBB0_49268; CHECK-NEXT: # %bb.50: # %entry269; CHECK-NEXT: lwsync270; CHECK-NEXT: sync271; CHECK-NEXT: .LBB0_51: # %entry272; CHECK-NEXT: #273; CHECK-NEXT: lbarx 0, 0, 5274; CHECK-NEXT: xori 0, 0, 1275; CHECK-NEXT: stbcx. 0, 0, 5276; CHECK-NEXT: bne- 0, .LBB0_51277; CHECK-NEXT: # %bb.52: # %entry278; CHECK-NEXT: lwsync279; CHECK-NEXT: sync280; CHECK-NEXT: .LBB0_53: # %entry281; CHECK-NEXT: #282; CHECK-NEXT: lharx 0, 0, 6283; CHECK-NEXT: xori 0, 0, 1284; CHECK-NEXT: sthcx. 0, 0, 6285; CHECK-NEXT: bne- 0, .LBB0_53286; CHECK-NEXT: # %bb.54: # %entry287; CHECK-NEXT: lwsync288; CHECK-NEXT: sync289; CHECK-NEXT: .LBB0_55: # %entry290; CHECK-NEXT: #291; CHECK-NEXT: lharx 0, 0, 8292; CHECK-NEXT: xori 0, 0, 1293; CHECK-NEXT: sthcx. 0, 0, 8294; CHECK-NEXT: bne- 0, .LBB0_55295; CHECK-NEXT: # %bb.56: # %entry296; CHECK-NEXT: lwsync297; CHECK-NEXT: sync298; CHECK-NEXT: .LBB0_57: # %entry299; CHECK-NEXT: #300; CHECK-NEXT: lwarx 0, 0, 9301; CHECK-NEXT: xori 0, 0, 1302; CHECK-NEXT: stwcx. 0, 0, 9303; CHECK-NEXT: bne- 0, .LBB0_57304; CHECK-NEXT: # %bb.58: # %entry305; CHECK-NEXT: lwsync306; CHECK-NEXT: sync307; CHECK-NEXT: .LBB0_59: # %entry308; CHECK-NEXT: #309; CHECK-NEXT: lwarx 0, 0, 10310; CHECK-NEXT: xori 0, 0, 1311; CHECK-NEXT: stwcx. 0, 0, 10312; CHECK-NEXT: bne- 0, .LBB0_59313; CHECK-NEXT: # %bb.60: # %entry314; CHECK-NEXT: lwsync315; CHECK-NEXT: sync316; CHECK-NEXT: .LBB0_61: # %entry317; CHECK-NEXT: #318; CHECK-NEXT: ldarx 0, 0, 11319; CHECK-NEXT: xori 0, 0, 1320; CHECK-NEXT: stdcx. 0, 0, 11321; CHECK-NEXT: bne- 0, .LBB0_61322; CHECK-NEXT: # %bb.62: # %entry323; CHECK-NEXT: lwsync324; CHECK-NEXT: sync325; CHECK-NEXT: .LBB0_63: # %entry326; CHECK-NEXT: #327; CHECK-NEXT: ldarx 0, 0, 12328; CHECK-NEXT: xori 0, 0, 1329; CHECK-NEXT: stdcx. 0, 0, 12330; CHECK-NEXT: bne- 0, .LBB0_63331; CHECK-NEXT: # %bb.64: # %entry332; CHECK-NEXT: addis 30, 2, u128@toc@ha333; CHECK-NEXT: lwsync334; CHECK-NEXT: sync335; CHECK-NEXT: addi 0, 30, u128@toc@l336; CHECK-NEXT: li 30, 0337; CHECK-NEXT: .LBB0_65: # %entry338; CHECK-NEXT: #339; CHECK-NEXT: lqarx 28, 0, 0340; CHECK-NEXT: xor 27, 7, 29341; CHECK-NEXT: xor 26, 30, 28342; CHECK-NEXT: stqcx. 26, 0, 0343; CHECK-NEXT: bne 0, .LBB0_65344; CHECK-NEXT: # %bb.66: # %entry345; CHECK-NEXT: addis 29, 2, s128@toc@ha346; CHECK-NEXT: lwsync347; CHECK-NEXT: addi 0, 29, s128@toc@l348; CHECK-NEXT: sync349; CHECK-NEXT: .LBB0_67: # %entry350; CHECK-NEXT: #351; CHECK-NEXT: lqarx 28, 0, 0352; CHECK-NEXT: xor 27, 7, 29353; CHECK-NEXT: xor 26, 30, 28354; CHECK-NEXT: stqcx. 26, 0, 0355; CHECK-NEXT: bne 0, .LBB0_67356; CHECK-NEXT: # %bb.68: # %entry357; CHECK-NEXT: lwsync358; CHECK-NEXT: sync359; CHECK-NEXT: .LBB0_69: # %entry360; CHECK-NEXT: #361; CHECK-NEXT: lbarx 0, 0, 4362; CHECK-NEXT: nand 0, 3, 0363; CHECK-NEXT: stbcx. 0, 0, 4364; CHECK-NEXT: bne- 0, .LBB0_69365; CHECK-NEXT: # %bb.70: # %entry366; CHECK-NEXT: lwsync367; CHECK-NEXT: sync368; CHECK-NEXT: .LBB0_71: # %entry369; CHECK-NEXT: #370; CHECK-NEXT: lbarx 0, 0, 5371; CHECK-NEXT: nand 0, 3, 0372; CHECK-NEXT: stbcx. 0, 0, 5373; CHECK-NEXT: bne- 0, .LBB0_71374; CHECK-NEXT: # %bb.72: # %entry375; CHECK-NEXT: lwsync376; CHECK-NEXT: sync377; CHECK-NEXT: .LBB0_73: # %entry378; CHECK-NEXT: #379; CHECK-NEXT: lharx 0, 0, 6380; CHECK-NEXT: nand 0, 3, 0381; CHECK-NEXT: sthcx. 0, 0, 6382; CHECK-NEXT: bne- 0, .LBB0_73383; CHECK-NEXT: # %bb.74: # %entry384; CHECK-NEXT: lwsync385; CHECK-NEXT: sync386; CHECK-NEXT: .LBB0_75: # %entry387; CHECK-NEXT: #388; CHECK-NEXT: lharx 0, 0, 8389; CHECK-NEXT: nand 0, 3, 0390; CHECK-NEXT: sthcx. 0, 0, 8391; CHECK-NEXT: bne- 0, .LBB0_75392; CHECK-NEXT: # %bb.76: # %entry393; CHECK-NEXT: lwsync394; CHECK-NEXT: sync395; CHECK-NEXT: .LBB0_77: # %entry396; CHECK-NEXT: #397; CHECK-NEXT: lwarx 0, 0, 9398; CHECK-NEXT: nand 0, 3, 0399; CHECK-NEXT: stwcx. 0, 0, 9400; CHECK-NEXT: bne- 0, .LBB0_77401; CHECK-NEXT: # %bb.78: # %entry402; CHECK-NEXT: lwsync403; CHECK-NEXT: sync404; CHECK-NEXT: .LBB0_79: # %entry405; CHECK-NEXT: #406; CHECK-NEXT: lwarx 0, 0, 10407; CHECK-NEXT: nand 0, 3, 0408; CHECK-NEXT: stwcx. 0, 0, 10409; CHECK-NEXT: bne- 0, .LBB0_79410; CHECK-NEXT: # %bb.80: # %entry411; CHECK-NEXT: lwsync412; CHECK-NEXT: sync413; CHECK-NEXT: .LBB0_81: # %entry414; CHECK-NEXT: #415; CHECK-NEXT: ldarx 0, 0, 11416; CHECK-NEXT: nand 0, 7, 0417; CHECK-NEXT: stdcx. 0, 0, 11418; CHECK-NEXT: bne- 0, .LBB0_81419; CHECK-NEXT: # %bb.82: # %entry420; CHECK-NEXT: lwsync421; CHECK-NEXT: sync422; CHECK-NEXT: .LBB0_83: # %entry423; CHECK-NEXT: #424; CHECK-NEXT: ldarx 0, 0, 12425; CHECK-NEXT: nand 0, 7, 0426; CHECK-NEXT: stdcx. 0, 0, 12427; CHECK-NEXT: bne- 0, .LBB0_83428; CHECK-NEXT: # %bb.84: # %entry429; CHECK-NEXT: lwsync430; CHECK-NEXT: sync431; CHECK-NEXT: .LBB0_85: # %entry432; CHECK-NEXT: #433; CHECK-NEXT: lbarx 0, 0, 4434; CHECK-NEXT: and 0, 3, 0435; CHECK-NEXT: stbcx. 0, 0, 4436; CHECK-NEXT: bne- 0, .LBB0_85437; CHECK-NEXT: # %bb.86: # %entry438; CHECK-NEXT: lwsync439; CHECK-NEXT: sync440; CHECK-NEXT: .LBB0_87: # %entry441; CHECK-NEXT: #442; CHECK-NEXT: lbarx 4, 0, 5443; CHECK-NEXT: and 4, 3, 4444; CHECK-NEXT: stbcx. 4, 0, 5445; CHECK-NEXT: bne- 0, .LBB0_87446; CHECK-NEXT: # %bb.88: # %entry447; CHECK-NEXT: lwsync448; CHECK-NEXT: sync449; CHECK-NEXT: .LBB0_89: # %entry450; CHECK-NEXT: #451; CHECK-NEXT: lharx 4, 0, 6452; CHECK-NEXT: and 4, 3, 4453; CHECK-NEXT: sthcx. 4, 0, 6454; CHECK-NEXT: bne- 0, .LBB0_89455; CHECK-NEXT: # %bb.90: # %entry456; CHECK-NEXT: lwsync457; CHECK-NEXT: sync458; CHECK-NEXT: .LBB0_91: # %entry459; CHECK-NEXT: #460; CHECK-NEXT: lharx 4, 0, 8461; CHECK-NEXT: and 4, 3, 4462; CHECK-NEXT: sthcx. 4, 0, 8463; CHECK-NEXT: bne- 0, .LBB0_91464; CHECK-NEXT: # %bb.92: # %entry465; CHECK-NEXT: lwsync466; CHECK-NEXT: sync467; CHECK-NEXT: .LBB0_93: # %entry468; CHECK-NEXT: #469; CHECK-NEXT: lwarx 4, 0, 9470; CHECK-NEXT: and 4, 3, 4471; CHECK-NEXT: stwcx. 4, 0, 9472; CHECK-NEXT: bne- 0, .LBB0_93473; CHECK-NEXT: # %bb.94: # %entry474; CHECK-NEXT: lwsync475; CHECK-NEXT: sync476; CHECK-NEXT: .LBB0_95: # %entry477; CHECK-NEXT: #478; CHECK-NEXT: lwarx 4, 0, 10479; CHECK-NEXT: and 4, 3, 4480; CHECK-NEXT: stwcx. 4, 0, 10481; CHECK-NEXT: bne- 0, .LBB0_95482; CHECK-NEXT: # %bb.96: # %entry483; CHECK-NEXT: lwsync484; CHECK-NEXT: sync485; CHECK-NEXT: .LBB0_97: # %entry486; CHECK-NEXT: #487; CHECK-NEXT: ldarx 3, 0, 11488; CHECK-NEXT: and 3, 7, 3489; CHECK-NEXT: stdcx. 3, 0, 11490; CHECK-NEXT: bne- 0, .LBB0_97491; CHECK-NEXT: # %bb.98: # %entry492; CHECK-NEXT: lwsync493; CHECK-NEXT: sync494; CHECK-NEXT: .LBB0_99: # %entry495; CHECK-NEXT: #496; CHECK-NEXT: ldarx 3, 0, 12497; CHECK-NEXT: and 3, 7, 3498; CHECK-NEXT: stdcx. 3, 0, 12499; CHECK-NEXT: bne- 0, .LBB0_99500; CHECK-NEXT: # %bb.100: # %entry501; CHECK-NEXT: lwsync502; CHECK-NEXT: ld 30, -16(1) # 8-byte Folded Reload503; CHECK-NEXT: ld 29, -24(1) # 8-byte Folded Reload504; CHECK-NEXT: ld 28, -32(1) # 8-byte Folded Reload505; CHECK-NEXT: ld 27, -40(1) # 8-byte Folded Reload506; CHECK-NEXT: ld 26, -48(1) # 8-byte Folded Reload507; CHECK-NEXT: blr508;509; AIX32-LABEL: test_op_ignore:510; AIX32: # %bb.0: # %entry511; AIX32-NEXT: mflr 0512; AIX32-NEXT: stwu 1, -160(1)513; AIX32-NEXT: lwz 3, L..C0(2) # @sc514; AIX32-NEXT: stw 0, 168(1)515; AIX32-NEXT: rlwinm 4, 3, 3, 27, 28516; AIX32-NEXT: stw 15, 92(1) # 4-byte Folded Spill517; AIX32-NEXT: stw 26, 136(1) # 4-byte Folded Spill518; AIX32-NEXT: stw 28, 144(1) # 4-byte Folded Spill519; AIX32-NEXT: li 15, 1520; AIX32-NEXT: rlwinm 28, 3, 0, 0, 29521; AIX32-NEXT: li 3, 255522; AIX32-NEXT: xori 26, 4, 24523; AIX32-NEXT: stw 16, 96(1) # 4-byte Folded Spill524; AIX32-NEXT: stw 17, 100(1) # 4-byte Folded Spill525; AIX32-NEXT: stw 18, 104(1) # 4-byte Folded Spill526; AIX32-NEXT: stw 19, 108(1) # 4-byte Folded Spill527; AIX32-NEXT: stw 20, 112(1) # 4-byte Folded Spill528; AIX32-NEXT: stw 21, 116(1) # 4-byte Folded Spill529; AIX32-NEXT: stw 22, 120(1) # 4-byte Folded Spill530; AIX32-NEXT: stw 23, 124(1) # 4-byte Folded Spill531; AIX32-NEXT: stw 24, 128(1) # 4-byte Folded Spill532; AIX32-NEXT: stw 25, 132(1) # 4-byte Folded Spill533; AIX32-NEXT: stw 27, 140(1) # 4-byte Folded Spill534; AIX32-NEXT: stw 29, 148(1) # 4-byte Folded Spill535; AIX32-NEXT: stw 30, 152(1) # 4-byte Folded Spill536; AIX32-NEXT: stw 31, 156(1) # 4-byte Folded Spill537; AIX32-NEXT: sync538; AIX32-NEXT: slw 29, 15, 26539; AIX32-NEXT: slw 3, 3, 26540; AIX32-NEXT: L..BB0_1: # %entry541; AIX32-NEXT: #542; AIX32-NEXT: lwarx 4, 0, 28543; AIX32-NEXT: add 5, 29, 4544; AIX32-NEXT: andc 4, 4, 3545; AIX32-NEXT: and 5, 5, 3546; AIX32-NEXT: or 4, 5, 4547; AIX32-NEXT: stwcx. 4, 0, 28548; AIX32-NEXT: bne- 0, L..BB0_1549; AIX32-NEXT: # %bb.2: # %entry550; AIX32-NEXT: lwz 3, L..C1(2) # @uc551; AIX32-NEXT: lwsync552; AIX32-NEXT: sync553; AIX32-NEXT: rlwinm 4, 3, 3, 27, 28554; AIX32-NEXT: rlwinm 27, 3, 0, 0, 29555; AIX32-NEXT: li 3, 255556; AIX32-NEXT: xori 24, 4, 24557; AIX32-NEXT: slw 18, 15, 24558; AIX32-NEXT: slw 3, 3, 24559; AIX32-NEXT: L..BB0_3: # %entry560; AIX32-NEXT: #561; AIX32-NEXT: lwarx 4, 0, 27562; AIX32-NEXT: add 5, 18, 4563; AIX32-NEXT: andc 4, 4, 3564; AIX32-NEXT: and 5, 5, 3565; AIX32-NEXT: or 4, 5, 4566; AIX32-NEXT: stwcx. 4, 0, 27567; AIX32-NEXT: bne- 0, L..BB0_3568; AIX32-NEXT: # %bb.4: # %entry569; AIX32-NEXT: lwz 3, L..C2(2) # @ss570; AIX32-NEXT: lwsync571; AIX32-NEXT: sync572; AIX32-NEXT: rlwinm 4, 3, 3, 27, 27573; AIX32-NEXT: rlwinm 25, 3, 0, 0, 29574; AIX32-NEXT: li 3, 0575; AIX32-NEXT: xori 22, 4, 16576; AIX32-NEXT: ori 3, 3, 65535577; AIX32-NEXT: slw 17, 15, 22578; AIX32-NEXT: slw 3, 3, 22579; AIX32-NEXT: L..BB0_5: # %entry580; AIX32-NEXT: #581; AIX32-NEXT: lwarx 4, 0, 25582; AIX32-NEXT: add 5, 17, 4583; AIX32-NEXT: andc 4, 4, 3584; AIX32-NEXT: and 5, 5, 3585; AIX32-NEXT: or 4, 5, 4586; AIX32-NEXT: stwcx. 4, 0, 25587; AIX32-NEXT: bne- 0, L..BB0_5588; AIX32-NEXT: # %bb.6: # %entry589; AIX32-NEXT: lwz 3, L..C3(2) # @us590; AIX32-NEXT: lwsync591; AIX32-NEXT: sync592; AIX32-NEXT: rlwinm 4, 3, 3, 27, 27593; AIX32-NEXT: rlwinm 23, 3, 0, 0, 29594; AIX32-NEXT: li 3, 0595; AIX32-NEXT: xori 21, 4, 16596; AIX32-NEXT: ori 3, 3, 65535597; AIX32-NEXT: slw 16, 15, 21598; AIX32-NEXT: slw 3, 3, 21599; AIX32-NEXT: L..BB0_7: # %entry600; AIX32-NEXT: #601; AIX32-NEXT: lwarx 4, 0, 23602; AIX32-NEXT: add 5, 16, 4603; AIX32-NEXT: andc 4, 4, 3604; AIX32-NEXT: and 5, 5, 3605; AIX32-NEXT: or 4, 5, 4606; AIX32-NEXT: stwcx. 4, 0, 23607; AIX32-NEXT: bne- 0, L..BB0_7608; AIX32-NEXT: # %bb.8: # %entry609; AIX32-NEXT: lwsync610; AIX32-NEXT: lwz 20, L..C4(2) # @si611; AIX32-NEXT: sync612; AIX32-NEXT: L..BB0_9: # %entry613; AIX32-NEXT: #614; AIX32-NEXT: lwarx 3, 0, 20615; AIX32-NEXT: addi 3, 3, 1616; AIX32-NEXT: stwcx. 3, 0, 20617; AIX32-NEXT: bne- 0, L..BB0_9618; AIX32-NEXT: # %bb.10: # %entry619; AIX32-NEXT: lwsync620; AIX32-NEXT: lwz 19, L..C5(2) # @ui621; AIX32-NEXT: sync622; AIX32-NEXT: L..BB0_11: # %entry623; AIX32-NEXT: #624; AIX32-NEXT: lwarx 3, 0, 19625; AIX32-NEXT: addi 3, 3, 1626; AIX32-NEXT: stwcx. 3, 0, 19627; AIX32-NEXT: bne- 0, L..BB0_11628; AIX32-NEXT: # %bb.12: # %entry629; AIX32-NEXT: lwz 31, L..C6(2) # @sll630; AIX32-NEXT: lwsync631; AIX32-NEXT: li 4, 0632; AIX32-NEXT: li 5, 1633; AIX32-NEXT: li 6, 5634; AIX32-NEXT: mr 3, 31635; AIX32-NEXT: bl .__atomic_fetch_add_8[PR]636; AIX32-NEXT: nop637; AIX32-NEXT: lwz 30, L..C7(2) # @ull638; AIX32-NEXT: li 4, 0639; AIX32-NEXT: li 5, 1640; AIX32-NEXT: mr 3, 30641; AIX32-NEXT: li 6, 5642; AIX32-NEXT: bl .__atomic_fetch_add_8[PR]643; AIX32-NEXT: nop644; AIX32-NEXT: li 3, 255645; AIX32-NEXT: sync646; AIX32-NEXT: slw 3, 3, 26647; AIX32-NEXT: L..BB0_13: # %entry648; AIX32-NEXT: #649; AIX32-NEXT: lwarx 4, 0, 28650; AIX32-NEXT: sub 5, 4, 29651; AIX32-NEXT: andc 4, 4, 3652; AIX32-NEXT: and 5, 5, 3653; AIX32-NEXT: or 4, 5, 4654; AIX32-NEXT: stwcx. 4, 0, 28655; AIX32-NEXT: bne- 0, L..BB0_13656; AIX32-NEXT: # %bb.14: # %entry657; AIX32-NEXT: li 3, 255658; AIX32-NEXT: lwsync659; AIX32-NEXT: sync660; AIX32-NEXT: slw 3, 3, 24661; AIX32-NEXT: L..BB0_15: # %entry662; AIX32-NEXT: #663; AIX32-NEXT: lwarx 4, 0, 27664; AIX32-NEXT: sub 5, 4, 18665; AIX32-NEXT: andc 4, 4, 3666; AIX32-NEXT: and 5, 5, 3667; AIX32-NEXT: or 4, 5, 4668; AIX32-NEXT: stwcx. 4, 0, 27669; AIX32-NEXT: bne- 0, L..BB0_15670; AIX32-NEXT: # %bb.16: # %entry671; AIX32-NEXT: li 3, 0672; AIX32-NEXT: lwsync673; AIX32-NEXT: sync674; AIX32-NEXT: ori 3, 3, 65535675; AIX32-NEXT: slw 3, 3, 22676; AIX32-NEXT: L..BB0_17: # %entry677; AIX32-NEXT: #678; AIX32-NEXT: lwarx 4, 0, 25679; AIX32-NEXT: sub 5, 4, 17680; AIX32-NEXT: andc 4, 4, 3681; AIX32-NEXT: and 5, 5, 3682; AIX32-NEXT: or 4, 5, 4683; AIX32-NEXT: stwcx. 4, 0, 25684; AIX32-NEXT: bne- 0, L..BB0_17685; AIX32-NEXT: # %bb.18: # %entry686; AIX32-NEXT: li 3, 0687; AIX32-NEXT: lwsync688; AIX32-NEXT: sync689; AIX32-NEXT: ori 3, 3, 65535690; AIX32-NEXT: slw 3, 3, 21691; AIX32-NEXT: L..BB0_19: # %entry692; AIX32-NEXT: #693; AIX32-NEXT: lwarx 4, 0, 23694; AIX32-NEXT: sub 5, 4, 16695; AIX32-NEXT: andc 4, 4, 3696; AIX32-NEXT: and 5, 5, 3697; AIX32-NEXT: or 4, 5, 4698; AIX32-NEXT: stwcx. 4, 0, 23699; AIX32-NEXT: bne- 0, L..BB0_19700; AIX32-NEXT: # %bb.20: # %entry701; AIX32-NEXT: lwsync702; AIX32-NEXT: sync703; AIX32-NEXT: L..BB0_21: # %entry704; AIX32-NEXT: #705; AIX32-NEXT: lwarx 3, 0, 20706; AIX32-NEXT: sub 3, 3, 15707; AIX32-NEXT: stwcx. 3, 0, 20708; AIX32-NEXT: bne- 0, L..BB0_21709; AIX32-NEXT: # %bb.22: # %entry710; AIX32-NEXT: lwsync711; AIX32-NEXT: sync712; AIX32-NEXT: L..BB0_23: # %entry713; AIX32-NEXT: #714; AIX32-NEXT: lwarx 3, 0, 19715; AIX32-NEXT: sub 3, 3, 15716; AIX32-NEXT: stwcx. 3, 0, 19717; AIX32-NEXT: bne- 0, L..BB0_23718; AIX32-NEXT: # %bb.24: # %entry719; AIX32-NEXT: lwsync720; AIX32-NEXT: li 4, 0721; AIX32-NEXT: li 5, 1722; AIX32-NEXT: mr 3, 31723; AIX32-NEXT: li 6, 5724; AIX32-NEXT: bl .__atomic_fetch_sub_8[PR]725; AIX32-NEXT: nop726; AIX32-NEXT: li 4, 0727; AIX32-NEXT: li 5, 1728; AIX32-NEXT: mr 3, 30729; AIX32-NEXT: li 6, 5730; AIX32-NEXT: bl .__atomic_fetch_sub_8[PR]731; AIX32-NEXT: nop732; AIX32-NEXT: li 3, 255733; AIX32-NEXT: sync734; AIX32-NEXT: slw 3, 3, 26735; AIX32-NEXT: L..BB0_25: # %entry736; AIX32-NEXT: #737; AIX32-NEXT: lwarx 4, 0, 28738; AIX32-NEXT: or 5, 29, 4739; AIX32-NEXT: andc 4, 4, 3740; AIX32-NEXT: and 5, 5, 3741; AIX32-NEXT: or 4, 5, 4742; AIX32-NEXT: stwcx. 4, 0, 28743; AIX32-NEXT: bne- 0, L..BB0_25744; AIX32-NEXT: # %bb.26: # %entry745; AIX32-NEXT: li 3, 255746; AIX32-NEXT: lwsync747; AIX32-NEXT: sync748; AIX32-NEXT: slw 3, 3, 24749; AIX32-NEXT: L..BB0_27: # %entry750; AIX32-NEXT: #751; AIX32-NEXT: lwarx 4, 0, 27752; AIX32-NEXT: or 5, 18, 4753; AIX32-NEXT: andc 4, 4, 3754; AIX32-NEXT: and 5, 5, 3755; AIX32-NEXT: or 4, 5, 4756; AIX32-NEXT: stwcx. 4, 0, 27757; AIX32-NEXT: bne- 0, L..BB0_27758; AIX32-NEXT: # %bb.28: # %entry759; AIX32-NEXT: li 3, 0760; AIX32-NEXT: lwsync761; AIX32-NEXT: sync762; AIX32-NEXT: ori 3, 3, 65535763; AIX32-NEXT: slw 3, 3, 22764; AIX32-NEXT: L..BB0_29: # %entry765; AIX32-NEXT: #766; AIX32-NEXT: lwarx 4, 0, 25767; AIX32-NEXT: or 5, 17, 4768; AIX32-NEXT: andc 4, 4, 3769; AIX32-NEXT: and 5, 5, 3770; AIX32-NEXT: or 4, 5, 4771; AIX32-NEXT: stwcx. 4, 0, 25772; AIX32-NEXT: bne- 0, L..BB0_29773; AIX32-NEXT: # %bb.30: # %entry774; AIX32-NEXT: li 3, 0775; AIX32-NEXT: lwsync776; AIX32-NEXT: sync777; AIX32-NEXT: ori 3, 3, 65535778; AIX32-NEXT: slw 3, 3, 21779; AIX32-NEXT: L..BB0_31: # %entry780; AIX32-NEXT: #781; AIX32-NEXT: lwarx 4, 0, 23782; AIX32-NEXT: or 5, 16, 4783; AIX32-NEXT: andc 4, 4, 3784; AIX32-NEXT: and 5, 5, 3785; AIX32-NEXT: or 4, 5, 4786; AIX32-NEXT: stwcx. 4, 0, 23787; AIX32-NEXT: bne- 0, L..BB0_31788; AIX32-NEXT: # %bb.32: # %entry789; AIX32-NEXT: lwsync790; AIX32-NEXT: sync791; AIX32-NEXT: L..BB0_33: # %entry792; AIX32-NEXT: #793; AIX32-NEXT: lwarx 3, 0, 20794; AIX32-NEXT: ori 3, 3, 1795; AIX32-NEXT: stwcx. 3, 0, 20796; AIX32-NEXT: bne- 0, L..BB0_33797; AIX32-NEXT: # %bb.34: # %entry798; AIX32-NEXT: lwsync799; AIX32-NEXT: sync800; AIX32-NEXT: L..BB0_35: # %entry801; AIX32-NEXT: #802; AIX32-NEXT: lwarx 3, 0, 19803; AIX32-NEXT: ori 3, 3, 1804; AIX32-NEXT: stwcx. 3, 0, 19805; AIX32-NEXT: bne- 0, L..BB0_35806; AIX32-NEXT: # %bb.36: # %entry807; AIX32-NEXT: lwsync808; AIX32-NEXT: li 4, 0809; AIX32-NEXT: li 5, 1810; AIX32-NEXT: mr 3, 31811; AIX32-NEXT: li 6, 5812; AIX32-NEXT: bl .__atomic_fetch_or_8[PR]813; AIX32-NEXT: nop814; AIX32-NEXT: li 4, 0815; AIX32-NEXT: li 5, 1816; AIX32-NEXT: mr 3, 30817; AIX32-NEXT: li 6, 5818; AIX32-NEXT: bl .__atomic_fetch_or_8[PR]819; AIX32-NEXT: nop820; AIX32-NEXT: li 3, 255821; AIX32-NEXT: sync822; AIX32-NEXT: slw 3, 3, 26823; AIX32-NEXT: L..BB0_37: # %entry824; AIX32-NEXT: #825; AIX32-NEXT: lwarx 4, 0, 28826; AIX32-NEXT: xor 5, 29, 4827; AIX32-NEXT: andc 4, 4, 3828; AIX32-NEXT: and 5, 5, 3829; AIX32-NEXT: or 4, 5, 4830; AIX32-NEXT: stwcx. 4, 0, 28831; AIX32-NEXT: bne- 0, L..BB0_37832; AIX32-NEXT: # %bb.38: # %entry833; AIX32-NEXT: li 3, 255834; AIX32-NEXT: lwsync835; AIX32-NEXT: sync836; AIX32-NEXT: slw 3, 3, 24837; AIX32-NEXT: L..BB0_39: # %entry838; AIX32-NEXT: #839; AIX32-NEXT: lwarx 4, 0, 27840; AIX32-NEXT: xor 5, 18, 4841; AIX32-NEXT: andc 4, 4, 3842; AIX32-NEXT: and 5, 5, 3843; AIX32-NEXT: or 4, 5, 4844; AIX32-NEXT: stwcx. 4, 0, 27845; AIX32-NEXT: bne- 0, L..BB0_39846; AIX32-NEXT: # %bb.40: # %entry847; AIX32-NEXT: li 3, 0848; AIX32-NEXT: lwsync849; AIX32-NEXT: sync850; AIX32-NEXT: ori 3, 3, 65535851; AIX32-NEXT: slw 3, 3, 22852; AIX32-NEXT: L..BB0_41: # %entry853; AIX32-NEXT: #854; AIX32-NEXT: lwarx 4, 0, 25855; AIX32-NEXT: xor 5, 17, 4856; AIX32-NEXT: andc 4, 4, 3857; AIX32-NEXT: and 5, 5, 3858; AIX32-NEXT: or 4, 5, 4859; AIX32-NEXT: stwcx. 4, 0, 25860; AIX32-NEXT: bne- 0, L..BB0_41861; AIX32-NEXT: # %bb.42: # %entry862; AIX32-NEXT: li 3, 0863; AIX32-NEXT: lwsync864; AIX32-NEXT: sync865; AIX32-NEXT: ori 3, 3, 65535866; AIX32-NEXT: slw 3, 3, 21867; AIX32-NEXT: L..BB0_43: # %entry868; AIX32-NEXT: #869; AIX32-NEXT: lwarx 4, 0, 23870; AIX32-NEXT: xor 5, 16, 4871; AIX32-NEXT: andc 4, 4, 3872; AIX32-NEXT: and 5, 5, 3873; AIX32-NEXT: or 4, 5, 4874; AIX32-NEXT: stwcx. 4, 0, 23875; AIX32-NEXT: bne- 0, L..BB0_43876; AIX32-NEXT: # %bb.44: # %entry877; AIX32-NEXT: lwsync878; AIX32-NEXT: sync879; AIX32-NEXT: L..BB0_45: # %entry880; AIX32-NEXT: #881; AIX32-NEXT: lwarx 3, 0, 20882; AIX32-NEXT: xori 3, 3, 1883; AIX32-NEXT: stwcx. 3, 0, 20884; AIX32-NEXT: bne- 0, L..BB0_45885; AIX32-NEXT: # %bb.46: # %entry886; AIX32-NEXT: lwsync887; AIX32-NEXT: sync888; AIX32-NEXT: L..BB0_47: # %entry889; AIX32-NEXT: #890; AIX32-NEXT: lwarx 3, 0, 19891; AIX32-NEXT: xori 3, 3, 1892; AIX32-NEXT: stwcx. 3, 0, 19893; AIX32-NEXT: bne- 0, L..BB0_47894; AIX32-NEXT: # %bb.48: # %entry895; AIX32-NEXT: lwsync896; AIX32-NEXT: li 4, 0897; AIX32-NEXT: li 5, 1898; AIX32-NEXT: mr 3, 31899; AIX32-NEXT: li 6, 5900; AIX32-NEXT: bl .__atomic_fetch_xor_8[PR]901; AIX32-NEXT: nop902; AIX32-NEXT: li 4, 0903; AIX32-NEXT: li 5, 1904; AIX32-NEXT: mr 3, 30905; AIX32-NEXT: li 6, 5906; AIX32-NEXT: bl .__atomic_fetch_xor_8[PR]907; AIX32-NEXT: nop908; AIX32-NEXT: lwz 31, L..C8(2) # @u128909; AIX32-NEXT: addi 30, 1, 72910; AIX32-NEXT: addi 29, 1, 56911; AIX32-NEXT: lwz 5, 12(31)912; AIX32-NEXT: lwz 4, 8(31)913; AIX32-NEXT: lwz 6, 4(31)914; AIX32-NEXT: lwz 7, 0(31)915; AIX32-NEXT: .align 4916; AIX32-NEXT: L..BB0_49: # %atomicrmw.start2917; AIX32-NEXT: #918; AIX32-NEXT: xori 3, 5, 1919; AIX32-NEXT: stw 7, 72(1)920; AIX32-NEXT: stw 7, 56(1)921; AIX32-NEXT: li 7, 5922; AIX32-NEXT: stw 3, 68(1)923; AIX32-NEXT: li 3, 16924; AIX32-NEXT: li 8, 5925; AIX32-NEXT: stw 6, 76(1)926; AIX32-NEXT: stw 4, 80(1)927; AIX32-NEXT: stw 5, 84(1)928; AIX32-NEXT: stw 4, 64(1)929; AIX32-NEXT: stw 6, 60(1)930; AIX32-NEXT: mr 4, 31931; AIX32-NEXT: mr 5, 30932; AIX32-NEXT: mr 6, 29933; AIX32-NEXT: bl .__atomic_compare_exchange[PR]934; AIX32-NEXT: nop935; AIX32-NEXT: lwz 5, 84(1)936; AIX32-NEXT: lwz 4, 80(1)937; AIX32-NEXT: lwz 6, 76(1)938; AIX32-NEXT: lwz 7, 72(1)939; AIX32-NEXT: cmplwi 3, 0940; AIX32-NEXT: beq 0, L..BB0_49941; AIX32-NEXT: # %bb.50: # %atomicrmw.end1942; AIX32-NEXT: lwz 31, L..C9(2) # @s128943; AIX32-NEXT: addi 30, 1, 72944; AIX32-NEXT: addi 29, 1, 56945; AIX32-NEXT: lwz 5, 12(31)946; AIX32-NEXT: lwz 4, 8(31)947; AIX32-NEXT: lwz 6, 4(31)948; AIX32-NEXT: lwz 7, 0(31)949; AIX32-NEXT: .align 4950; AIX32-NEXT: L..BB0_51: # %atomicrmw.start951; AIX32-NEXT: #952; AIX32-NEXT: xori 3, 5, 1953; AIX32-NEXT: stw 7, 72(1)954; AIX32-NEXT: stw 7, 56(1)955; AIX32-NEXT: li 7, 5956; AIX32-NEXT: stw 3, 68(1)957; AIX32-NEXT: li 3, 16958; AIX32-NEXT: li 8, 5959; AIX32-NEXT: stw 6, 76(1)960; AIX32-NEXT: stw 4, 80(1)961; AIX32-NEXT: stw 5, 84(1)962; AIX32-NEXT: stw 4, 64(1)963; AIX32-NEXT: stw 6, 60(1)964; AIX32-NEXT: mr 4, 31965; AIX32-NEXT: mr 5, 30966; AIX32-NEXT: mr 6, 29967; AIX32-NEXT: bl .__atomic_compare_exchange[PR]968; AIX32-NEXT: nop969; AIX32-NEXT: lwz 5, 84(1)970; AIX32-NEXT: lwz 4, 80(1)971; AIX32-NEXT: lwz 6, 76(1)972; AIX32-NEXT: lwz 7, 72(1)973; AIX32-NEXT: cmplwi 3, 0974; AIX32-NEXT: beq 0, L..BB0_51975; AIX32-NEXT: # %bb.52: # %atomicrmw.end976; AIX32-NEXT: li 29, 1977; AIX32-NEXT: li 3, 255978; AIX32-NEXT: sync979; AIX32-NEXT: slw 18, 29, 26980; AIX32-NEXT: slw 3, 3, 26981; AIX32-NEXT: L..BB0_53: # %atomicrmw.end982; AIX32-NEXT: #983; AIX32-NEXT: lwarx 4, 0, 28984; AIX32-NEXT: nand 5, 18, 4985; AIX32-NEXT: andc 4, 4, 3986; AIX32-NEXT: and 5, 5, 3987; AIX32-NEXT: or 4, 5, 4988; AIX32-NEXT: stwcx. 4, 0, 28989; AIX32-NEXT: bne- 0, L..BB0_53990; AIX32-NEXT: # %bb.54: # %atomicrmw.end991; AIX32-NEXT: li 3, 255992; AIX32-NEXT: lwsync993; AIX32-NEXT: slw 17, 29, 24994; AIX32-NEXT: sync995; AIX32-NEXT: slw 3, 3, 24996; AIX32-NEXT: L..BB0_55: # %atomicrmw.end997; AIX32-NEXT: #998; AIX32-NEXT: lwarx 4, 0, 27999; AIX32-NEXT: nand 5, 17, 41000; AIX32-NEXT: andc 4, 4, 31001; AIX32-NEXT: and 5, 5, 31002; AIX32-NEXT: or 4, 5, 41003; AIX32-NEXT: stwcx. 4, 0, 271004; AIX32-NEXT: bne- 0, L..BB0_551005; AIX32-NEXT: # %bb.56: # %atomicrmw.end1006; AIX32-NEXT: li 3, 01007; AIX32-NEXT: lwsync1008; AIX32-NEXT: slw 16, 29, 221009; AIX32-NEXT: sync1010; AIX32-NEXT: ori 3, 3, 655351011; AIX32-NEXT: slw 3, 3, 221012; AIX32-NEXT: L..BB0_57: # %atomicrmw.end1013; AIX32-NEXT: #1014; AIX32-NEXT: lwarx 4, 0, 251015; AIX32-NEXT: nand 5, 16, 41016; AIX32-NEXT: andc 4, 4, 31017; AIX32-NEXT: and 5, 5, 31018; AIX32-NEXT: or 4, 5, 41019; AIX32-NEXT: stwcx. 4, 0, 251020; AIX32-NEXT: bne- 0, L..BB0_571021; AIX32-NEXT: # %bb.58: # %atomicrmw.end1022; AIX32-NEXT: li 3, 01023; AIX32-NEXT: lwsync1024; AIX32-NEXT: slw 15, 29, 211025; AIX32-NEXT: sync1026; AIX32-NEXT: ori 3, 3, 655351027; AIX32-NEXT: slw 3, 3, 211028; AIX32-NEXT: L..BB0_59: # %atomicrmw.end1029; AIX32-NEXT: #1030; AIX32-NEXT: lwarx 4, 0, 231031; AIX32-NEXT: nand 5, 15, 41032; AIX32-NEXT: andc 4, 4, 31033; AIX32-NEXT: and 5, 5, 31034; AIX32-NEXT: or 4, 5, 41035; AIX32-NEXT: stwcx. 4, 0, 231036; AIX32-NEXT: bne- 0, L..BB0_591037; AIX32-NEXT: # %bb.60: # %atomicrmw.end1038; AIX32-NEXT: lwsync1039; AIX32-NEXT: sync1040; AIX32-NEXT: L..BB0_61: # %atomicrmw.end1041; AIX32-NEXT: #1042; AIX32-NEXT: lwarx 3, 0, 201043; AIX32-NEXT: nand 3, 29, 31044; AIX32-NEXT: stwcx. 3, 0, 201045; AIX32-NEXT: bne- 0, L..BB0_611046; AIX32-NEXT: # %bb.62: # %atomicrmw.end1047; AIX32-NEXT: lwsync1048; AIX32-NEXT: sync1049; AIX32-NEXT: L..BB0_63: # %atomicrmw.end1050; AIX32-NEXT: #1051; AIX32-NEXT: lwarx 3, 0, 191052; AIX32-NEXT: nand 3, 29, 31053; AIX32-NEXT: stwcx. 3, 0, 191054; AIX32-NEXT: bne- 0, L..BB0_631055; AIX32-NEXT: # %bb.64: # %atomicrmw.end1056; AIX32-NEXT: lwz 31, L..C6(2) # @sll1057; AIX32-NEXT: lwsync1058; AIX32-NEXT: li 4, 01059; AIX32-NEXT: li 5, 11060; AIX32-NEXT: li 6, 51061; AIX32-NEXT: mr 3, 311062; AIX32-NEXT: bl .__atomic_fetch_nand_8[PR]1063; AIX32-NEXT: nop1064; AIX32-NEXT: lwz 30, L..C7(2) # @ull1065; AIX32-NEXT: li 4, 01066; AIX32-NEXT: li 5, 11067; AIX32-NEXT: mr 3, 301068; AIX32-NEXT: li 6, 51069; AIX32-NEXT: bl .__atomic_fetch_nand_8[PR]1070; AIX32-NEXT: nop1071; AIX32-NEXT: li 3, 2551072; AIX32-NEXT: sync1073; AIX32-NEXT: slw 3, 3, 261074; AIX32-NEXT: L..BB0_65: # %atomicrmw.end1075; AIX32-NEXT: #1076; AIX32-NEXT: lwarx 4, 0, 281077; AIX32-NEXT: and 5, 18, 41078; AIX32-NEXT: andc 4, 4, 31079; AIX32-NEXT: and 5, 5, 31080; AIX32-NEXT: or 4, 5, 41081; AIX32-NEXT: stwcx. 4, 0, 281082; AIX32-NEXT: bne- 0, L..BB0_651083; AIX32-NEXT: # %bb.66: # %atomicrmw.end1084; AIX32-NEXT: li 3, 2551085; AIX32-NEXT: lwsync1086; AIX32-NEXT: sync1087; AIX32-NEXT: slw 3, 3, 241088; AIX32-NEXT: L..BB0_67: # %atomicrmw.end1089; AIX32-NEXT: #1090; AIX32-NEXT: lwarx 4, 0, 271091; AIX32-NEXT: and 5, 17, 41092; AIX32-NEXT: andc 4, 4, 31093; AIX32-NEXT: and 5, 5, 31094; AIX32-NEXT: or 4, 5, 41095; AIX32-NEXT: stwcx. 4, 0, 271096; AIX32-NEXT: bne- 0, L..BB0_671097; AIX32-NEXT: # %bb.68: # %atomicrmw.end1098; AIX32-NEXT: li 3, 01099; AIX32-NEXT: lwsync1100; AIX32-NEXT: sync1101; AIX32-NEXT: ori 3, 3, 655351102; AIX32-NEXT: slw 3, 3, 221103; AIX32-NEXT: L..BB0_69: # %atomicrmw.end1104; AIX32-NEXT: #1105; AIX32-NEXT: lwarx 4, 0, 251106; AIX32-NEXT: and 5, 16, 41107; AIX32-NEXT: andc 4, 4, 31108; AIX32-NEXT: and 5, 5, 31109; AIX32-NEXT: or 4, 5, 41110; AIX32-NEXT: stwcx. 4, 0, 251111; AIX32-NEXT: bne- 0, L..BB0_691112; AIX32-NEXT: # %bb.70: # %atomicrmw.end1113; AIX32-NEXT: li 3, 01114; AIX32-NEXT: lwsync1115; AIX32-NEXT: sync1116; AIX32-NEXT: ori 3, 3, 655351117; AIX32-NEXT: slw 3, 3, 211118; AIX32-NEXT: L..BB0_71: # %atomicrmw.end1119; AIX32-NEXT: #1120; AIX32-NEXT: lwarx 4, 0, 231121; AIX32-NEXT: and 5, 15, 41122; AIX32-NEXT: andc 4, 4, 31123; AIX32-NEXT: and 5, 5, 31124; AIX32-NEXT: or 4, 5, 41125; AIX32-NEXT: stwcx. 4, 0, 231126; AIX32-NEXT: bne- 0, L..BB0_711127; AIX32-NEXT: # %bb.72: # %atomicrmw.end1128; AIX32-NEXT: lwsync1129; AIX32-NEXT: sync1130; AIX32-NEXT: L..BB0_73: # %atomicrmw.end1131; AIX32-NEXT: #1132; AIX32-NEXT: lwarx 3, 0, 201133; AIX32-NEXT: and 3, 29, 31134; AIX32-NEXT: stwcx. 3, 0, 201135; AIX32-NEXT: bne- 0, L..BB0_731136; AIX32-NEXT: # %bb.74: # %atomicrmw.end1137; AIX32-NEXT: lwsync1138; AIX32-NEXT: sync1139; AIX32-NEXT: L..BB0_75: # %atomicrmw.end1140; AIX32-NEXT: #1141; AIX32-NEXT: lwarx 3, 0, 191142; AIX32-NEXT: and 3, 29, 31143; AIX32-NEXT: stwcx. 3, 0, 191144; AIX32-NEXT: bne- 0, L..BB0_751145; AIX32-NEXT: # %bb.76: # %atomicrmw.end1146; AIX32-NEXT: lwsync1147; AIX32-NEXT: li 4, 01148; AIX32-NEXT: li 5, 11149; AIX32-NEXT: mr 3, 311150; AIX32-NEXT: li 6, 51151; AIX32-NEXT: bl .__atomic_fetch_and_8[PR]1152; AIX32-NEXT: nop1153; AIX32-NEXT: li 4, 01154; AIX32-NEXT: li 5, 11155; AIX32-NEXT: mr 3, 301156; AIX32-NEXT: li 6, 51157; AIX32-NEXT: bl .__atomic_fetch_and_8[PR]1158; AIX32-NEXT: nop1159; AIX32-NEXT: lwz 31, 156(1) # 4-byte Folded Reload1160; AIX32-NEXT: lwz 30, 152(1) # 4-byte Folded Reload1161; AIX32-NEXT: lwz 29, 148(1) # 4-byte Folded Reload1162; AIX32-NEXT: lwz 28, 144(1) # 4-byte Folded Reload1163; AIX32-NEXT: lwz 27, 140(1) # 4-byte Folded Reload1164; AIX32-NEXT: lwz 26, 136(1) # 4-byte Folded Reload1165; AIX32-NEXT: lwz 25, 132(1) # 4-byte Folded Reload1166; AIX32-NEXT: lwz 24, 128(1) # 4-byte Folded Reload1167; AIX32-NEXT: lwz 23, 124(1) # 4-byte Folded Reload1168; AIX32-NEXT: lwz 22, 120(1) # 4-byte Folded Reload1169; AIX32-NEXT: lwz 21, 116(1) # 4-byte Folded Reload1170; AIX32-NEXT: lwz 20, 112(1) # 4-byte Folded Reload1171; AIX32-NEXT: lwz 19, 108(1) # 4-byte Folded Reload1172; AIX32-NEXT: lwz 18, 104(1) # 4-byte Folded Reload1173; AIX32-NEXT: lwz 17, 100(1) # 4-byte Folded Reload1174; AIX32-NEXT: lwz 16, 96(1) # 4-byte Folded Reload1175; AIX32-NEXT: lwz 15, 92(1) # 4-byte Folded Reload1176; AIX32-NEXT: addi 1, 1, 1601177; AIX32-NEXT: lwz 0, 8(1)1178; AIX32-NEXT: mtlr 01179; AIX32-NEXT: blr1180entry:1181 %0 = atomicrmw add ptr @sc, i8 1 seq_cst, align 11182 %1 = atomicrmw add ptr @uc, i8 1 seq_cst, align 11183 %2 = atomicrmw add ptr @ss, i16 1 seq_cst, align 21184 %3 = atomicrmw add ptr @us, i16 1 seq_cst, align 21185 %4 = atomicrmw add ptr @si, i32 1 seq_cst, align 41186 %5 = atomicrmw add ptr @ui, i32 1 seq_cst, align 41187 %6 = atomicrmw add ptr @sll, i64 1 seq_cst, align 81188 %7 = atomicrmw add ptr @ull, i64 1 seq_cst, align 81189 %8 = atomicrmw sub ptr @sc, i8 1 seq_cst, align 11190 %9 = atomicrmw sub ptr @uc, i8 1 seq_cst, align 11191 %10 = atomicrmw sub ptr @ss, i16 1 seq_cst, align 21192 %11 = atomicrmw sub ptr @us, i16 1 seq_cst, align 21193 %12 = atomicrmw sub ptr @si, i32 1 seq_cst, align 41194 %13 = atomicrmw sub ptr @ui, i32 1 seq_cst, align 41195 %14 = atomicrmw sub ptr @sll, i64 1 seq_cst, align 81196 %15 = atomicrmw sub ptr @ull, i64 1 seq_cst, align 81197 %16 = atomicrmw or ptr @sc, i8 1 seq_cst, align 11198 %17 = atomicrmw or ptr @uc, i8 1 seq_cst, align 11199 %18 = atomicrmw or ptr @ss, i16 1 seq_cst, align 21200 %19 = atomicrmw or ptr @us, i16 1 seq_cst, align 21201 %20 = atomicrmw or ptr @si, i32 1 seq_cst, align 41202 %21 = atomicrmw or ptr @ui, i32 1 seq_cst, align 41203 %22 = atomicrmw or ptr @sll, i64 1 seq_cst, align 81204 %23 = atomicrmw or ptr @ull, i64 1 seq_cst, align 81205 %24 = atomicrmw xor ptr @sc, i8 1 seq_cst, align 11206 %25 = atomicrmw xor ptr @uc, i8 1 seq_cst, align 11207 %26 = atomicrmw xor ptr @ss, i16 1 seq_cst, align 21208 %27 = atomicrmw xor ptr @us, i16 1 seq_cst, align 21209 %28 = atomicrmw xor ptr @si, i32 1 seq_cst, align 41210 %29 = atomicrmw xor ptr @ui, i32 1 seq_cst, align 41211 %30 = atomicrmw xor ptr @sll, i64 1 seq_cst, align 81212 %31 = atomicrmw xor ptr @ull, i64 1 seq_cst, align 81213 %32 = atomicrmw xor ptr @u128, i128 1 seq_cst, align 161214 %33 = atomicrmw xor ptr @s128, i128 1 seq_cst, align 161215 %34 = atomicrmw nand ptr @sc, i8 1 seq_cst, align 11216 %35 = atomicrmw nand ptr @uc, i8 1 seq_cst, align 11217 %36 = atomicrmw nand ptr @ss, i16 1 seq_cst, align 21218 %37 = atomicrmw nand ptr @us, i16 1 seq_cst, align 21219 %38 = atomicrmw nand ptr @si, i32 1 seq_cst, align 41220 %39 = atomicrmw nand ptr @ui, i32 1 seq_cst, align 41221 %40 = atomicrmw nand ptr @sll, i64 1 seq_cst, align 81222 %41 = atomicrmw nand ptr @ull, i64 1 seq_cst, align 81223 %42 = atomicrmw and ptr @sc, i8 1 seq_cst, align 11224 %43 = atomicrmw and ptr @uc, i8 1 seq_cst, align 11225 %44 = atomicrmw and ptr @ss, i16 1 seq_cst, align 21226 %45 = atomicrmw and ptr @us, i16 1 seq_cst, align 21227 %46 = atomicrmw and ptr @si, i32 1 seq_cst, align 41228 %47 = atomicrmw and ptr @ui, i32 1 seq_cst, align 41229 %48 = atomicrmw and ptr @sll, i64 1 seq_cst, align 81230 %49 = atomicrmw and ptr @ull, i64 1 seq_cst, align 81231 ret void1232}1233 1234define dso_local void @test_fetch_and_op() local_unnamed_addr #0 {1235; CHECK-LABEL: test_fetch_and_op:1236; CHECK: # %bb.0: # %entry1237; CHECK-NEXT: addis 4, 2, sc@toc@ha1238; CHECK-NEXT: std 22, -80(1) # 8-byte Folded Spill1239; CHECK-NEXT: std 23, -72(1) # 8-byte Folded Spill1240; CHECK-NEXT: li 3, 111241; CHECK-NEXT: std 24, -64(1) # 8-byte Folded Spill1242; CHECK-NEXT: std 25, -56(1) # 8-byte Folded Spill1243; CHECK-NEXT: addi 6, 4, sc@toc@l1244; CHECK-NEXT: std 26, -48(1) # 8-byte Folded Spill1245; CHECK-NEXT: std 27, -40(1) # 8-byte Folded Spill1246; CHECK-NEXT: std 28, -32(1) # 8-byte Folded Spill1247; CHECK-NEXT: std 29, -24(1) # 8-byte Folded Spill1248; CHECK-NEXT: std 30, -16(1) # 8-byte Folded Spill1249; CHECK-NEXT: sync1250; CHECK-NEXT: .LBB1_1: # %entry1251; CHECK-NEXT: #1252; CHECK-NEXT: lbarx 5, 0, 61253; CHECK-NEXT: addi 7, 5, 111254; CHECK-NEXT: stbcx. 7, 0, 61255; CHECK-NEXT: bne- 0, .LBB1_11256; CHECK-NEXT: # %bb.2: # %entry1257; CHECK-NEXT: lwsync1258; CHECK-NEXT: stb 5, sc@toc@l(4)1259; CHECK-NEXT: addis 5, 2, uc@toc@ha1260; CHECK-NEXT: sync1261; CHECK-NEXT: addi 8, 5, uc@toc@l1262; CHECK-NEXT: .LBB1_3: # %entry1263; CHECK-NEXT: #1264; CHECK-NEXT: lbarx 7, 0, 81265; CHECK-NEXT: addi 9, 7, 111266; CHECK-NEXT: stbcx. 9, 0, 81267; CHECK-NEXT: bne- 0, .LBB1_31268; CHECK-NEXT: # %bb.4: # %entry1269; CHECK-NEXT: lwsync1270; CHECK-NEXT: stb 7, uc@toc@l(5)1271; CHECK-NEXT: addis 7, 2, ss@toc@ha1272; CHECK-NEXT: sync1273; CHECK-NEXT: addi 10, 7, ss@toc@l1274; CHECK-NEXT: .LBB1_5: # %entry1275; CHECK-NEXT: #1276; CHECK-NEXT: lharx 9, 0, 101277; CHECK-NEXT: addi 11, 9, 111278; CHECK-NEXT: sthcx. 11, 0, 101279; CHECK-NEXT: bne- 0, .LBB1_51280; CHECK-NEXT: # %bb.6: # %entry1281; CHECK-NEXT: lwsync1282; CHECK-NEXT: sth 9, ss@toc@l(7)1283; CHECK-NEXT: addis 9, 2, us@toc@ha1284; CHECK-NEXT: sync1285; CHECK-NEXT: addi 0, 9, us@toc@l1286; CHECK-NEXT: .LBB1_7: # %entry1287; CHECK-NEXT: #1288; CHECK-NEXT: lharx 11, 0, 01289; CHECK-NEXT: addi 12, 11, 111290; CHECK-NEXT: sthcx. 12, 0, 01291; CHECK-NEXT: bne- 0, .LBB1_71292; CHECK-NEXT: # %bb.8: # %entry1293; CHECK-NEXT: addis 12, 2, si@toc@ha1294; CHECK-NEXT: lwsync1295; CHECK-NEXT: sth 11, us@toc@l(9)1296; CHECK-NEXT: sync1297; CHECK-NEXT: addi 29, 12, si@toc@l1298; CHECK-NEXT: .LBB1_9: # %entry1299; CHECK-NEXT: #1300; CHECK-NEXT: lwarx 11, 0, 291301; CHECK-NEXT: addi 30, 11, 111302; CHECK-NEXT: stwcx. 30, 0, 291303; CHECK-NEXT: bne- 0, .LBB1_91304; CHECK-NEXT: # %bb.10: # %entry1305; CHECK-NEXT: addis 30, 2, ui@toc@ha1306; CHECK-NEXT: lwsync1307; CHECK-NEXT: stw 11, si@toc@l(12)1308; CHECK-NEXT: sync1309; CHECK-NEXT: addi 27, 30, ui@toc@l1310; CHECK-NEXT: .LBB1_11: # %entry1311; CHECK-NEXT: #1312; CHECK-NEXT: lwarx 11, 0, 271313; CHECK-NEXT: addi 28, 11, 111314; CHECK-NEXT: stwcx. 28, 0, 271315; CHECK-NEXT: bne- 0, .LBB1_111316; CHECK-NEXT: # %bb.12: # %entry1317; CHECK-NEXT: addis 28, 2, sll@toc@ha1318; CHECK-NEXT: lwsync1319; CHECK-NEXT: stw 11, ui@toc@l(30)1320; CHECK-NEXT: li 11, 111321; CHECK-NEXT: sync1322; CHECK-NEXT: addi 25, 28, sll@toc@l1323; CHECK-NEXT: .LBB1_13: # %entry1324; CHECK-NEXT: #1325; CHECK-NEXT: ldarx 26, 0, 251326; CHECK-NEXT: addi 24, 26, 111327; CHECK-NEXT: stdcx. 24, 0, 251328; CHECK-NEXT: bne- 0, .LBB1_131329; CHECK-NEXT: # %bb.14: # %entry1330; CHECK-NEXT: lwsync1331; CHECK-NEXT: std 26, sll@toc@l(28)1332; CHECK-NEXT: addis 26, 2, ull@toc@ha1333; CHECK-NEXT: sync1334; CHECK-NEXT: addi 24, 26, ull@toc@l1335; CHECK-NEXT: .LBB1_15: # %entry1336; CHECK-NEXT: #1337; CHECK-NEXT: ldarx 23, 0, 241338; CHECK-NEXT: addi 22, 23, 111339; CHECK-NEXT: stdcx. 22, 0, 241340; CHECK-NEXT: bne- 0, .LBB1_151341; CHECK-NEXT: # %bb.16: # %entry1342; CHECK-NEXT: lwsync1343; CHECK-NEXT: std 23, ull@toc@l(26)1344; CHECK-NEXT: sync1345; CHECK-NEXT: .LBB1_17: # %entry1346; CHECK-NEXT: #1347; CHECK-NEXT: lbarx 23, 0, 61348; CHECK-NEXT: sub 22, 23, 31349; CHECK-NEXT: stbcx. 22, 0, 61350; CHECK-NEXT: bne- 0, .LBB1_171351; CHECK-NEXT: # %bb.18: # %entry1352; CHECK-NEXT: lwsync1353; CHECK-NEXT: stb 23, sc@toc@l(4)1354; CHECK-NEXT: sync1355; CHECK-NEXT: .LBB1_19: # %entry1356; CHECK-NEXT: #1357; CHECK-NEXT: lbarx 23, 0, 81358; CHECK-NEXT: sub 22, 23, 31359; CHECK-NEXT: stbcx. 22, 0, 81360; CHECK-NEXT: bne- 0, .LBB1_191361; CHECK-NEXT: # %bb.20: # %entry1362; CHECK-NEXT: lwsync1363; CHECK-NEXT: stb 23, uc@toc@l(5)1364; CHECK-NEXT: sync1365; CHECK-NEXT: .LBB1_21: # %entry1366; CHECK-NEXT: #1367; CHECK-NEXT: lharx 23, 0, 101368; CHECK-NEXT: sub 22, 23, 31369; CHECK-NEXT: sthcx. 22, 0, 101370; CHECK-NEXT: bne- 0, .LBB1_211371; CHECK-NEXT: # %bb.22: # %entry1372; CHECK-NEXT: lwsync1373; CHECK-NEXT: sth 23, ss@toc@l(7)1374; CHECK-NEXT: sync1375; CHECK-NEXT: .LBB1_23: # %entry1376; CHECK-NEXT: #1377; CHECK-NEXT: lharx 23, 0, 01378; CHECK-NEXT: sub 22, 23, 31379; CHECK-NEXT: sthcx. 22, 0, 01380; CHECK-NEXT: bne- 0, .LBB1_231381; CHECK-NEXT: # %bb.24: # %entry1382; CHECK-NEXT: lwsync1383; CHECK-NEXT: sth 23, us@toc@l(9)1384; CHECK-NEXT: sync1385; CHECK-NEXT: .LBB1_25: # %entry1386; CHECK-NEXT: #1387; CHECK-NEXT: lwarx 23, 0, 291388; CHECK-NEXT: sub 22, 23, 31389; CHECK-NEXT: stwcx. 22, 0, 291390; CHECK-NEXT: bne- 0, .LBB1_251391; CHECK-NEXT: # %bb.26: # %entry1392; CHECK-NEXT: lwsync1393; CHECK-NEXT: stw 23, si@toc@l(12)1394; CHECK-NEXT: sync1395; CHECK-NEXT: .LBB1_27: # %entry1396; CHECK-NEXT: #1397; CHECK-NEXT: lwarx 23, 0, 271398; CHECK-NEXT: sub 22, 23, 31399; CHECK-NEXT: stwcx. 22, 0, 271400; CHECK-NEXT: bne- 0, .LBB1_271401; CHECK-NEXT: # %bb.28: # %entry1402; CHECK-NEXT: lwsync1403; CHECK-NEXT: stw 23, ui@toc@l(30)1404; CHECK-NEXT: sync1405; CHECK-NEXT: .LBB1_29: # %entry1406; CHECK-NEXT: #1407; CHECK-NEXT: ldarx 23, 0, 251408; CHECK-NEXT: sub 22, 23, 111409; CHECK-NEXT: stdcx. 22, 0, 251410; CHECK-NEXT: bne- 0, .LBB1_291411; CHECK-NEXT: # %bb.30: # %entry1412; CHECK-NEXT: lwsync1413; CHECK-NEXT: std 23, sll@toc@l(28)1414; CHECK-NEXT: sync1415; CHECK-NEXT: .LBB1_31: # %entry1416; CHECK-NEXT: #1417; CHECK-NEXT: ldarx 23, 0, 241418; CHECK-NEXT: sub 22, 23, 111419; CHECK-NEXT: stdcx. 22, 0, 241420; CHECK-NEXT: bne- 0, .LBB1_311421; CHECK-NEXT: # %bb.32: # %entry1422; CHECK-NEXT: lwsync1423; CHECK-NEXT: std 23, ull@toc@l(26)1424; CHECK-NEXT: sync1425; CHECK-NEXT: .LBB1_33: # %entry1426; CHECK-NEXT: #1427; CHECK-NEXT: lbarx 23, 0, 61428; CHECK-NEXT: ori 22, 23, 111429; CHECK-NEXT: stbcx. 22, 0, 61430; CHECK-NEXT: bne- 0, .LBB1_331431; CHECK-NEXT: # %bb.34: # %entry1432; CHECK-NEXT: lwsync1433; CHECK-NEXT: stb 23, sc@toc@l(4)1434; CHECK-NEXT: sync1435; CHECK-NEXT: .LBB1_35: # %entry1436; CHECK-NEXT: #1437; CHECK-NEXT: lbarx 23, 0, 81438; CHECK-NEXT: ori 22, 23, 111439; CHECK-NEXT: stbcx. 22, 0, 81440; CHECK-NEXT: bne- 0, .LBB1_351441; CHECK-NEXT: # %bb.36: # %entry1442; CHECK-NEXT: lwsync1443; CHECK-NEXT: stb 23, uc@toc@l(5)1444; CHECK-NEXT: sync1445; CHECK-NEXT: .LBB1_37: # %entry1446; CHECK-NEXT: #1447; CHECK-NEXT: lharx 23, 0, 101448; CHECK-NEXT: ori 22, 23, 111449; CHECK-NEXT: sthcx. 22, 0, 101450; CHECK-NEXT: bne- 0, .LBB1_371451; CHECK-NEXT: # %bb.38: # %entry1452; CHECK-NEXT: lwsync1453; CHECK-NEXT: sth 23, ss@toc@l(7)1454; CHECK-NEXT: sync1455; CHECK-NEXT: .LBB1_39: # %entry1456; CHECK-NEXT: #1457; CHECK-NEXT: lharx 23, 0, 01458; CHECK-NEXT: ori 22, 23, 111459; CHECK-NEXT: sthcx. 22, 0, 01460; CHECK-NEXT: bne- 0, .LBB1_391461; CHECK-NEXT: # %bb.40: # %entry1462; CHECK-NEXT: lwsync1463; CHECK-NEXT: sth 23, us@toc@l(9)1464; CHECK-NEXT: sync1465; CHECK-NEXT: .LBB1_41: # %entry1466; CHECK-NEXT: #1467; CHECK-NEXT: lwarx 23, 0, 291468; CHECK-NEXT: ori 22, 23, 111469; CHECK-NEXT: stwcx. 22, 0, 291470; CHECK-NEXT: bne- 0, .LBB1_411471; CHECK-NEXT: # %bb.42: # %entry1472; CHECK-NEXT: lwsync1473; CHECK-NEXT: stw 23, si@toc@l(12)1474; CHECK-NEXT: sync1475; CHECK-NEXT: .LBB1_43: # %entry1476; CHECK-NEXT: #1477; CHECK-NEXT: lwarx 23, 0, 271478; CHECK-NEXT: ori 22, 23, 111479; CHECK-NEXT: stwcx. 22, 0, 271480; CHECK-NEXT: bne- 0, .LBB1_431481; CHECK-NEXT: # %bb.44: # %entry1482; CHECK-NEXT: lwsync1483; CHECK-NEXT: stw 23, ui@toc@l(30)1484; CHECK-NEXT: sync1485; CHECK-NEXT: .LBB1_45: # %entry1486; CHECK-NEXT: #1487; CHECK-NEXT: ldarx 23, 0, 251488; CHECK-NEXT: ori 22, 23, 111489; CHECK-NEXT: stdcx. 22, 0, 251490; CHECK-NEXT: bne- 0, .LBB1_451491; CHECK-NEXT: # %bb.46: # %entry1492; CHECK-NEXT: lwsync1493; CHECK-NEXT: std 23, sll@toc@l(28)1494; CHECK-NEXT: sync1495; CHECK-NEXT: .LBB1_47: # %entry1496; CHECK-NEXT: #1497; CHECK-NEXT: ldarx 23, 0, 241498; CHECK-NEXT: ori 22, 23, 111499; CHECK-NEXT: stdcx. 22, 0, 241500; CHECK-NEXT: bne- 0, .LBB1_471501; CHECK-NEXT: # %bb.48: # %entry1502; CHECK-NEXT: lwsync1503; CHECK-NEXT: std 23, ull@toc@l(26)1504; CHECK-NEXT: sync1505; CHECK-NEXT: .LBB1_49: # %entry1506; CHECK-NEXT: #1507; CHECK-NEXT: lbarx 23, 0, 61508; CHECK-NEXT: xori 22, 23, 111509; CHECK-NEXT: stbcx. 22, 0, 61510; CHECK-NEXT: bne- 0, .LBB1_491511; CHECK-NEXT: # %bb.50: # %entry1512; CHECK-NEXT: lwsync1513; CHECK-NEXT: stb 23, sc@toc@l(4)1514; CHECK-NEXT: sync1515; CHECK-NEXT: .LBB1_51: # %entry1516; CHECK-NEXT: #1517; CHECK-NEXT: lbarx 23, 0, 81518; CHECK-NEXT: xori 22, 23, 111519; CHECK-NEXT: stbcx. 22, 0, 81520; CHECK-NEXT: bne- 0, .LBB1_511521; CHECK-NEXT: # %bb.52: # %entry1522; CHECK-NEXT: lwsync1523; CHECK-NEXT: stb 23, uc@toc@l(5)1524; CHECK-NEXT: sync1525; CHECK-NEXT: .LBB1_53: # %entry1526; CHECK-NEXT: #1527; CHECK-NEXT: lharx 23, 0, 101528; CHECK-NEXT: xori 22, 23, 111529; CHECK-NEXT: sthcx. 22, 0, 101530; CHECK-NEXT: bne- 0, .LBB1_531531; CHECK-NEXT: # %bb.54: # %entry1532; CHECK-NEXT: lwsync1533; CHECK-NEXT: sth 23, ss@toc@l(7)1534; CHECK-NEXT: sync1535; CHECK-NEXT: .LBB1_55: # %entry1536; CHECK-NEXT: #1537; CHECK-NEXT: lharx 23, 0, 01538; CHECK-NEXT: xori 22, 23, 111539; CHECK-NEXT: sthcx. 22, 0, 01540; CHECK-NEXT: bne- 0, .LBB1_551541; CHECK-NEXT: # %bb.56: # %entry1542; CHECK-NEXT: lwsync1543; CHECK-NEXT: sth 23, us@toc@l(9)1544; CHECK-NEXT: sync1545; CHECK-NEXT: .LBB1_57: # %entry1546; CHECK-NEXT: #1547; CHECK-NEXT: lwarx 23, 0, 291548; CHECK-NEXT: xori 22, 23, 111549; CHECK-NEXT: stwcx. 22, 0, 291550; CHECK-NEXT: bne- 0, .LBB1_571551; CHECK-NEXT: # %bb.58: # %entry1552; CHECK-NEXT: lwsync1553; CHECK-NEXT: stw 23, si@toc@l(12)1554; CHECK-NEXT: sync1555; CHECK-NEXT: .LBB1_59: # %entry1556; CHECK-NEXT: #1557; CHECK-NEXT: lwarx 23, 0, 271558; CHECK-NEXT: xori 22, 23, 111559; CHECK-NEXT: stwcx. 22, 0, 271560; CHECK-NEXT: bne- 0, .LBB1_591561; CHECK-NEXT: # %bb.60: # %entry1562; CHECK-NEXT: lwsync1563; CHECK-NEXT: stw 23, ui@toc@l(30)1564; CHECK-NEXT: sync1565; CHECK-NEXT: .LBB1_61: # %entry1566; CHECK-NEXT: #1567; CHECK-NEXT: ldarx 23, 0, 251568; CHECK-NEXT: xori 22, 23, 111569; CHECK-NEXT: stdcx. 22, 0, 251570; CHECK-NEXT: bne- 0, .LBB1_611571; CHECK-NEXT: # %bb.62: # %entry1572; CHECK-NEXT: lwsync1573; CHECK-NEXT: std 23, sll@toc@l(28)1574; CHECK-NEXT: sync1575; CHECK-NEXT: .LBB1_63: # %entry1576; CHECK-NEXT: #1577; CHECK-NEXT: ldarx 23, 0, 241578; CHECK-NEXT: xori 22, 23, 111579; CHECK-NEXT: stdcx. 22, 0, 241580; CHECK-NEXT: bne- 0, .LBB1_631581; CHECK-NEXT: # %bb.64: # %entry1582; CHECK-NEXT: lwsync1583; CHECK-NEXT: std 23, ull@toc@l(26)1584; CHECK-NEXT: sync1585; CHECK-NEXT: .LBB1_65: # %entry1586; CHECK-NEXT: #1587; CHECK-NEXT: lbarx 23, 0, 61588; CHECK-NEXT: nand 22, 3, 231589; CHECK-NEXT: stbcx. 22, 0, 61590; CHECK-NEXT: bne- 0, .LBB1_651591; CHECK-NEXT: # %bb.66: # %entry1592; CHECK-NEXT: lwsync1593; CHECK-NEXT: stb 23, sc@toc@l(4)1594; CHECK-NEXT: sync1595; CHECK-NEXT: .LBB1_67: # %entry1596; CHECK-NEXT: #1597; CHECK-NEXT: lbarx 23, 0, 81598; CHECK-NEXT: nand 22, 3, 231599; CHECK-NEXT: stbcx. 22, 0, 81600; CHECK-NEXT: bne- 0, .LBB1_671601; CHECK-NEXT: # %bb.68: # %entry1602; CHECK-NEXT: lwsync1603; CHECK-NEXT: stb 23, uc@toc@l(5)1604; CHECK-NEXT: sync1605; CHECK-NEXT: .LBB1_69: # %entry1606; CHECK-NEXT: #1607; CHECK-NEXT: lharx 23, 0, 101608; CHECK-NEXT: nand 22, 3, 231609; CHECK-NEXT: sthcx. 22, 0, 101610; CHECK-NEXT: bne- 0, .LBB1_691611; CHECK-NEXT: # %bb.70: # %entry1612; CHECK-NEXT: lwsync1613; CHECK-NEXT: sth 23, ss@toc@l(7)1614; CHECK-NEXT: sync1615; CHECK-NEXT: .LBB1_71: # %entry1616; CHECK-NEXT: #1617; CHECK-NEXT: lharx 23, 0, 01618; CHECK-NEXT: nand 22, 3, 231619; CHECK-NEXT: sthcx. 22, 0, 01620; CHECK-NEXT: bne- 0, .LBB1_711621; CHECK-NEXT: # %bb.72: # %entry1622; CHECK-NEXT: lwsync1623; CHECK-NEXT: sth 23, us@toc@l(9)1624; CHECK-NEXT: sync1625; CHECK-NEXT: .LBB1_73: # %entry1626; CHECK-NEXT: #1627; CHECK-NEXT: lwarx 23, 0, 291628; CHECK-NEXT: nand 22, 3, 231629; CHECK-NEXT: stwcx. 22, 0, 291630; CHECK-NEXT: bne- 0, .LBB1_731631; CHECK-NEXT: # %bb.74: # %entry1632; CHECK-NEXT: lwsync1633; CHECK-NEXT: stw 23, si@toc@l(12)1634; CHECK-NEXT: sync1635; CHECK-NEXT: .LBB1_75: # %entry1636; CHECK-NEXT: #1637; CHECK-NEXT: lwarx 23, 0, 271638; CHECK-NEXT: nand 22, 3, 231639; CHECK-NEXT: stwcx. 22, 0, 271640; CHECK-NEXT: bne- 0, .LBB1_751641; CHECK-NEXT: # %bb.76: # %entry1642; CHECK-NEXT: lwsync1643; CHECK-NEXT: stw 23, ui@toc@l(30)1644; CHECK-NEXT: sync1645; CHECK-NEXT: .LBB1_77: # %entry1646; CHECK-NEXT: #1647; CHECK-NEXT: ldarx 23, 0, 251648; CHECK-NEXT: nand 22, 11, 231649; CHECK-NEXT: stdcx. 22, 0, 251650; CHECK-NEXT: bne- 0, .LBB1_771651; CHECK-NEXT: # %bb.78: # %entry1652; CHECK-NEXT: lwsync1653; CHECK-NEXT: std 23, sll@toc@l(28)1654; CHECK-NEXT: sync1655; CHECK-NEXT: .LBB1_79: # %entry1656; CHECK-NEXT: #1657; CHECK-NEXT: ldarx 23, 0, 241658; CHECK-NEXT: nand 22, 11, 231659; CHECK-NEXT: stdcx. 22, 0, 241660; CHECK-NEXT: bne- 0, .LBB1_791661; CHECK-NEXT: # %bb.80: # %entry1662; CHECK-NEXT: lwsync1663; CHECK-NEXT: std 23, ull@toc@l(26)1664; CHECK-NEXT: sync1665; CHECK-NEXT: .LBB1_81: # %entry1666; CHECK-NEXT: #1667; CHECK-NEXT: lbarx 23, 0, 61668; CHECK-NEXT: and 22, 3, 231669; CHECK-NEXT: stbcx. 22, 0, 61670; CHECK-NEXT: bne- 0, .LBB1_811671; CHECK-NEXT: # %bb.82: # %entry1672; CHECK-NEXT: lwsync1673; CHECK-NEXT: stb 23, sc@toc@l(4)1674; CHECK-NEXT: sync1675; CHECK-NEXT: .LBB1_83: # %entry1676; CHECK-NEXT: #1677; CHECK-NEXT: lbarx 4, 0, 81678; CHECK-NEXT: and 6, 3, 41679; CHECK-NEXT: stbcx. 6, 0, 81680; CHECK-NEXT: bne- 0, .LBB1_831681; CHECK-NEXT: # %bb.84: # %entry1682; CHECK-NEXT: lwsync1683; CHECK-NEXT: stb 4, uc@toc@l(5)1684; CHECK-NEXT: sync1685; CHECK-NEXT: .LBB1_85: # %entry1686; CHECK-NEXT: #1687; CHECK-NEXT: lharx 4, 0, 101688; CHECK-NEXT: and 5, 3, 41689; CHECK-NEXT: sthcx. 5, 0, 101690; CHECK-NEXT: bne- 0, .LBB1_851691; CHECK-NEXT: # %bb.86: # %entry1692; CHECK-NEXT: lwsync1693; CHECK-NEXT: sth 4, ss@toc@l(7)1694; CHECK-NEXT: sync1695; CHECK-NEXT: .LBB1_87: # %entry1696; CHECK-NEXT: #1697; CHECK-NEXT: lharx 4, 0, 01698; CHECK-NEXT: and 5, 3, 41699; CHECK-NEXT: sthcx. 5, 0, 01700; CHECK-NEXT: bne- 0, .LBB1_871701; CHECK-NEXT: # %bb.88: # %entry1702; CHECK-NEXT: lwsync1703; CHECK-NEXT: sth 4, us@toc@l(9)1704; CHECK-NEXT: sync1705; CHECK-NEXT: .LBB1_89: # %entry1706; CHECK-NEXT: #1707; CHECK-NEXT: lwarx 4, 0, 291708; CHECK-NEXT: and 5, 3, 41709; CHECK-NEXT: stwcx. 5, 0, 291710; CHECK-NEXT: bne- 0, .LBB1_891711; CHECK-NEXT: # %bb.90: # %entry1712; CHECK-NEXT: lwsync1713; CHECK-NEXT: stw 4, si@toc@l(12)1714; CHECK-NEXT: sync1715; CHECK-NEXT: .LBB1_91: # %entry1716; CHECK-NEXT: #1717; CHECK-NEXT: lwarx 4, 0, 271718; CHECK-NEXT: and 5, 3, 41719; CHECK-NEXT: stwcx. 5, 0, 271720; CHECK-NEXT: bne- 0, .LBB1_911721; CHECK-NEXT: # %bb.92: # %entry1722; CHECK-NEXT: lwsync1723; CHECK-NEXT: stw 4, ui@toc@l(30)1724; CHECK-NEXT: sync1725; CHECK-NEXT: .LBB1_93: # %entry1726; CHECK-NEXT: #1727; CHECK-NEXT: ldarx 3, 0, 251728; CHECK-NEXT: and 4, 11, 31729; CHECK-NEXT: stdcx. 4, 0, 251730; CHECK-NEXT: bne- 0, .LBB1_931731; CHECK-NEXT: # %bb.94: # %entry1732; CHECK-NEXT: lwsync1733; CHECK-NEXT: std 3, sll@toc@l(28)1734; CHECK-NEXT: sync1735; CHECK-NEXT: .LBB1_95: # %entry1736; CHECK-NEXT: #1737; CHECK-NEXT: ldarx 3, 0, 241738; CHECK-NEXT: and 4, 11, 31739; CHECK-NEXT: stdcx. 4, 0, 241740; CHECK-NEXT: bne- 0, .LBB1_951741; CHECK-NEXT: # %bb.96: # %entry1742; CHECK-NEXT: lwsync1743; CHECK-NEXT: std 3, ull@toc@l(26)1744; CHECK-NEXT: ld 30, -16(1) # 8-byte Folded Reload1745; CHECK-NEXT: ld 29, -24(1) # 8-byte Folded Reload1746; CHECK-NEXT: ld 28, -32(1) # 8-byte Folded Reload1747; CHECK-NEXT: ld 27, -40(1) # 8-byte Folded Reload1748; CHECK-NEXT: ld 26, -48(1) # 8-byte Folded Reload1749; CHECK-NEXT: ld 25, -56(1) # 8-byte Folded Reload1750; CHECK-NEXT: ld 24, -64(1) # 8-byte Folded Reload1751; CHECK-NEXT: ld 23, -72(1) # 8-byte Folded Reload1752; CHECK-NEXT: ld 22, -80(1) # 8-byte Folded Reload1753; CHECK-NEXT: blr1754;1755; AIX32-LABEL: test_fetch_and_op:1756; AIX32: # %bb.0: # %entry1757; AIX32-NEXT: mflr 01758; AIX32-NEXT: stwu 1, -144(1)1759; AIX32-NEXT: lwz 4, L..C0(2) # @sc1760; AIX32-NEXT: stw 0, 152(1)1761; AIX32-NEXT: li 7, 111762; AIX32-NEXT: stw 26, 120(1) # 4-byte Folded Spill1763; AIX32-NEXT: stw 13, 68(1) # 4-byte Folded Spill1764; AIX32-NEXT: stw 14, 72(1) # 4-byte Folded Spill1765; AIX32-NEXT: stw 15, 76(1) # 4-byte Folded Spill1766; AIX32-NEXT: rlwinm 3, 4, 3, 27, 281767; AIX32-NEXT: stw 16, 80(1) # 4-byte Folded Spill1768; AIX32-NEXT: stw 17, 84(1) # 4-byte Folded Spill1769; AIX32-NEXT: stw 18, 88(1) # 4-byte Folded Spill1770; AIX32-NEXT: xori 26, 3, 241771; AIX32-NEXT: li 3, 2551772; AIX32-NEXT: slw 3, 3, 261773; AIX32-NEXT: stw 19, 92(1) # 4-byte Folded Spill1774; AIX32-NEXT: stw 20, 96(1) # 4-byte Folded Spill1775; AIX32-NEXT: stw 21, 100(1) # 4-byte Folded Spill1776; AIX32-NEXT: stw 22, 104(1) # 4-byte Folded Spill1777; AIX32-NEXT: stw 23, 108(1) # 4-byte Folded Spill1778; AIX32-NEXT: stw 24, 112(1) # 4-byte Folded Spill1779; AIX32-NEXT: stw 25, 116(1) # 4-byte Folded Spill1780; AIX32-NEXT: stw 27, 124(1) # 4-byte Folded Spill1781; AIX32-NEXT: stw 28, 128(1) # 4-byte Folded Spill1782; AIX32-NEXT: stw 29, 132(1) # 4-byte Folded Spill1783; AIX32-NEXT: stw 30, 136(1) # 4-byte Folded Spill1784; AIX32-NEXT: stw 31, 140(1) # 4-byte Folded Spill1785; AIX32-NEXT: sync1786; AIX32-NEXT: rlwinm 25, 4, 0, 0, 291787; AIX32-NEXT: slw 24, 7, 261788; AIX32-NEXT: stw 4, 64(1) # 4-byte Folded Spill1789; AIX32-NEXT: L..BB1_1: # %entry1790; AIX32-NEXT: #1791; AIX32-NEXT: lwarx 4, 0, 251792; AIX32-NEXT: add 5, 24, 41793; AIX32-NEXT: andc 6, 4, 31794; AIX32-NEXT: and 5, 5, 31795; AIX32-NEXT: or 5, 5, 61796; AIX32-NEXT: stwcx. 5, 0, 251797; AIX32-NEXT: bne- 0, L..BB1_11798; AIX32-NEXT: # %bb.2: # %entry1799; AIX32-NEXT: srw 3, 4, 261800; AIX32-NEXT: lwsync1801; AIX32-NEXT: lwz 27, L..C1(2) # @uc1802; AIX32-NEXT: lwz 4, 64(1) # 4-byte Folded Reload1803; AIX32-NEXT: clrlwi 3, 3, 241804; AIX32-NEXT: rlwinm 21, 27, 0, 0, 291805; AIX32-NEXT: stb 3, 0(4)1806; AIX32-NEXT: rlwinm 3, 27, 3, 27, 281807; AIX32-NEXT: sync1808; AIX32-NEXT: xori 22, 3, 241809; AIX32-NEXT: li 3, 2551810; AIX32-NEXT: slw 20, 7, 221811; AIX32-NEXT: slw 3, 3, 221812; AIX32-NEXT: L..BB1_3: # %entry1813; AIX32-NEXT: #1814; AIX32-NEXT: lwarx 4, 0, 211815; AIX32-NEXT: add 5, 20, 41816; AIX32-NEXT: andc 6, 4, 31817; AIX32-NEXT: and 5, 5, 31818; AIX32-NEXT: or 5, 5, 61819; AIX32-NEXT: stwcx. 5, 0, 211820; AIX32-NEXT: bne- 0, L..BB1_31821; AIX32-NEXT: # %bb.4: # %entry1822; AIX32-NEXT: srw 3, 4, 221823; AIX32-NEXT: lwz 23, L..C2(2) # @ss1824; AIX32-NEXT: lwsync1825; AIX32-NEXT: clrlwi 3, 3, 241826; AIX32-NEXT: rlwinm 17, 23, 0, 0, 291827; AIX32-NEXT: stb 3, 0(27)1828; AIX32-NEXT: sync1829; AIX32-NEXT: rlwinm 3, 23, 3, 27, 271830; AIX32-NEXT: xori 18, 3, 161831; AIX32-NEXT: li 3, 01832; AIX32-NEXT: ori 3, 3, 655351833; AIX32-NEXT: slw 16, 7, 181834; AIX32-NEXT: slw 3, 3, 181835; AIX32-NEXT: L..BB1_5: # %entry1836; AIX32-NEXT: #1837; AIX32-NEXT: lwarx 4, 0, 171838; AIX32-NEXT: add 5, 16, 41839; AIX32-NEXT: andc 6, 4, 31840; AIX32-NEXT: and 5, 5, 31841; AIX32-NEXT: or 5, 5, 61842; AIX32-NEXT: stwcx. 5, 0, 171843; AIX32-NEXT: bne- 0, L..BB1_51844; AIX32-NEXT: # %bb.6: # %entry1845; AIX32-NEXT: srw 3, 4, 181846; AIX32-NEXT: lwz 19, L..C3(2) # @us1847; AIX32-NEXT: lwsync1848; AIX32-NEXT: clrlwi 3, 3, 161849; AIX32-NEXT: rlwinm 14, 19, 0, 0, 291850; AIX32-NEXT: sth 3, 0(23)1851; AIX32-NEXT: sync1852; AIX32-NEXT: rlwinm 3, 19, 3, 27, 271853; AIX32-NEXT: xori 15, 3, 161854; AIX32-NEXT: li 3, 01855; AIX32-NEXT: ori 3, 3, 655351856; AIX32-NEXT: slw 13, 7, 151857; AIX32-NEXT: slw 3, 3, 151858; AIX32-NEXT: L..BB1_7: # %entry1859; AIX32-NEXT: #1860; AIX32-NEXT: lwarx 4, 0, 141861; AIX32-NEXT: add 5, 13, 41862; AIX32-NEXT: andc 6, 4, 31863; AIX32-NEXT: and 5, 5, 31864; AIX32-NEXT: or 5, 5, 61865; AIX32-NEXT: stwcx. 5, 0, 141866; AIX32-NEXT: bne- 0, L..BB1_71867; AIX32-NEXT: # %bb.8: # %entry1868; AIX32-NEXT: srw 3, 4, 151869; AIX32-NEXT: lwsync1870; AIX32-NEXT: lwz 29, L..C4(2) # @si1871; AIX32-NEXT: clrlwi 3, 3, 161872; AIX32-NEXT: sth 3, 0(19)1873; AIX32-NEXT: sync1874; AIX32-NEXT: L..BB1_9: # %entry1875; AIX32-NEXT: #1876; AIX32-NEXT: lwarx 3, 0, 291877; AIX32-NEXT: addi 4, 3, 111878; AIX32-NEXT: stwcx. 4, 0, 291879; AIX32-NEXT: bne- 0, L..BB1_91880; AIX32-NEXT: # %bb.10: # %entry1881; AIX32-NEXT: lwsync1882; AIX32-NEXT: stw 3, 0(29)1883; AIX32-NEXT: lwz 28, L..C5(2) # @ui1884; AIX32-NEXT: sync1885; AIX32-NEXT: L..BB1_11: # %entry1886; AIX32-NEXT: #1887; AIX32-NEXT: lwarx 3, 0, 281888; AIX32-NEXT: addi 4, 3, 111889; AIX32-NEXT: stwcx. 4, 0, 281890; AIX32-NEXT: bne- 0, L..BB1_111891; AIX32-NEXT: # %bb.12: # %entry1892; AIX32-NEXT: lwz 31, L..C6(2) # @sll1893; AIX32-NEXT: lwsync1894; AIX32-NEXT: li 4, 01895; AIX32-NEXT: li 5, 111896; AIX32-NEXT: li 6, 51897; AIX32-NEXT: stw 3, 0(28)1898; AIX32-NEXT: mr 3, 311899; AIX32-NEXT: bl .__atomic_fetch_add_8[PR]1900; AIX32-NEXT: nop1901; AIX32-NEXT: lwz 30, L..C7(2) # @ull1902; AIX32-NEXT: stw 4, 4(31)1903; AIX32-NEXT: li 4, 01904; AIX32-NEXT: li 5, 111905; AIX32-NEXT: li 6, 51906; AIX32-NEXT: stw 3, 0(31)1907; AIX32-NEXT: mr 3, 301908; AIX32-NEXT: bl .__atomic_fetch_add_8[PR]1909; AIX32-NEXT: nop1910; AIX32-NEXT: stw 3, 0(30)1911; AIX32-NEXT: li 3, 2551912; AIX32-NEXT: stw 4, 4(30)1913; AIX32-NEXT: sync1914; AIX32-NEXT: slw 3, 3, 261915; AIX32-NEXT: L..BB1_13: # %entry1916; AIX32-NEXT: #1917; AIX32-NEXT: lwarx 4, 0, 251918; AIX32-NEXT: sub 5, 4, 241919; AIX32-NEXT: andc 6, 4, 31920; AIX32-NEXT: and 5, 5, 31921; AIX32-NEXT: or 5, 5, 61922; AIX32-NEXT: stwcx. 5, 0, 251923; AIX32-NEXT: bne- 0, L..BB1_131924; AIX32-NEXT: # %bb.14: # %entry1925; AIX32-NEXT: srw 3, 4, 261926; AIX32-NEXT: lwsync1927; AIX32-NEXT: lwz 4, 64(1) # 4-byte Folded Reload1928; AIX32-NEXT: clrlwi 3, 3, 241929; AIX32-NEXT: stb 3, 0(4)1930; AIX32-NEXT: li 3, 2551931; AIX32-NEXT: sync1932; AIX32-NEXT: slw 3, 3, 221933; AIX32-NEXT: L..BB1_15: # %entry1934; AIX32-NEXT: #1935; AIX32-NEXT: lwarx 4, 0, 211936; AIX32-NEXT: sub 5, 4, 201937; AIX32-NEXT: andc 6, 4, 31938; AIX32-NEXT: and 5, 5, 31939; AIX32-NEXT: or 5, 5, 61940; AIX32-NEXT: stwcx. 5, 0, 211941; AIX32-NEXT: bne- 0, L..BB1_151942; AIX32-NEXT: # %bb.16: # %entry1943; AIX32-NEXT: srw 3, 4, 221944; AIX32-NEXT: lwsync1945; AIX32-NEXT: li 7, 111946; AIX32-NEXT: clrlwi 3, 3, 241947; AIX32-NEXT: stb 3, 0(27)1948; AIX32-NEXT: sync1949; AIX32-NEXT: li 3, 01950; AIX32-NEXT: ori 3, 3, 655351951; AIX32-NEXT: slw 3, 3, 181952; AIX32-NEXT: L..BB1_17: # %entry1953; AIX32-NEXT: #1954; AIX32-NEXT: lwarx 4, 0, 171955; AIX32-NEXT: sub 5, 4, 161956; AIX32-NEXT: andc 6, 4, 31957; AIX32-NEXT: and 5, 5, 31958; AIX32-NEXT: or 5, 5, 61959; AIX32-NEXT: stwcx. 5, 0, 171960; AIX32-NEXT: bne- 0, L..BB1_171961; AIX32-NEXT: # %bb.18: # %entry1962; AIX32-NEXT: srw 3, 4, 181963; AIX32-NEXT: lwsync1964; AIX32-NEXT: clrlwi 3, 3, 161965; AIX32-NEXT: sth 3, 0(23)1966; AIX32-NEXT: li 3, 01967; AIX32-NEXT: sync1968; AIX32-NEXT: ori 3, 3, 655351969; AIX32-NEXT: slw 3, 3, 151970; AIX32-NEXT: L..BB1_19: # %entry1971; AIX32-NEXT: #1972; AIX32-NEXT: lwarx 4, 0, 141973; AIX32-NEXT: sub 5, 4, 131974; AIX32-NEXT: andc 6, 4, 31975; AIX32-NEXT: and 5, 5, 31976; AIX32-NEXT: or 5, 5, 61977; AIX32-NEXT: stwcx. 5, 0, 141978; AIX32-NEXT: bne- 0, L..BB1_191979; AIX32-NEXT: # %bb.20: # %entry1980; AIX32-NEXT: srw 3, 4, 151981; AIX32-NEXT: lwsync1982; AIX32-NEXT: clrlwi 3, 3, 161983; AIX32-NEXT: sth 3, 0(19)1984; AIX32-NEXT: sync1985; AIX32-NEXT: L..BB1_21: # %entry1986; AIX32-NEXT: #1987; AIX32-NEXT: lwarx 3, 0, 291988; AIX32-NEXT: sub 4, 3, 71989; AIX32-NEXT: stwcx. 4, 0, 291990; AIX32-NEXT: bne- 0, L..BB1_211991; AIX32-NEXT: # %bb.22: # %entry1992; AIX32-NEXT: lwsync1993; AIX32-NEXT: stw 3, 0(29)1994; AIX32-NEXT: sync1995; AIX32-NEXT: L..BB1_23: # %entry1996; AIX32-NEXT: #1997; AIX32-NEXT: lwarx 3, 0, 281998; AIX32-NEXT: sub 4, 3, 71999; AIX32-NEXT: stwcx. 4, 0, 282000; AIX32-NEXT: bne- 0, L..BB1_232001; AIX32-NEXT: # %bb.24: # %entry2002; AIX32-NEXT: lwsync2003; AIX32-NEXT: li 4, 02004; AIX32-NEXT: li 5, 112005; AIX32-NEXT: li 6, 52006; AIX32-NEXT: stw 3, 0(28)2007; AIX32-NEXT: mr 3, 312008; AIX32-NEXT: bl .__atomic_fetch_sub_8[PR]2009; AIX32-NEXT: nop2010; AIX32-NEXT: stw 4, 4(31)2011; AIX32-NEXT: li 4, 02012; AIX32-NEXT: li 5, 112013; AIX32-NEXT: li 6, 52014; AIX32-NEXT: stw 3, 0(31)2015; AIX32-NEXT: mr 3, 302016; AIX32-NEXT: bl .__atomic_fetch_sub_8[PR]2017; AIX32-NEXT: nop2018; AIX32-NEXT: stw 3, 0(30)2019; AIX32-NEXT: li 3, 2552020; AIX32-NEXT: stw 4, 4(30)2021; AIX32-NEXT: sync2022; AIX32-NEXT: slw 3, 3, 262023; AIX32-NEXT: L..BB1_25: # %entry2024; AIX32-NEXT: #2025; AIX32-NEXT: lwarx 4, 0, 252026; AIX32-NEXT: or 5, 24, 42027; AIX32-NEXT: andc 6, 4, 32028; AIX32-NEXT: and 5, 5, 32029; AIX32-NEXT: or 5, 5, 62030; AIX32-NEXT: stwcx. 5, 0, 252031; AIX32-NEXT: bne- 0, L..BB1_252032; AIX32-NEXT: # %bb.26: # %entry2033; AIX32-NEXT: srw 3, 4, 262034; AIX32-NEXT: lwsync2035; AIX32-NEXT: lwz 4, 64(1) # 4-byte Folded Reload2036; AIX32-NEXT: clrlwi 3, 3, 242037; AIX32-NEXT: stb 3, 0(4)2038; AIX32-NEXT: li 3, 2552039; AIX32-NEXT: sync2040; AIX32-NEXT: slw 3, 3, 222041; AIX32-NEXT: L..BB1_27: # %entry2042; AIX32-NEXT: #2043; AIX32-NEXT: lwarx 4, 0, 212044; AIX32-NEXT: or 5, 20, 42045; AIX32-NEXT: andc 6, 4, 32046; AIX32-NEXT: and 5, 5, 32047; AIX32-NEXT: or 5, 5, 62048; AIX32-NEXT: stwcx. 5, 0, 212049; AIX32-NEXT: bne- 0, L..BB1_272050; AIX32-NEXT: # %bb.28: # %entry2051; AIX32-NEXT: srw 3, 4, 222052; AIX32-NEXT: lwsync2053; AIX32-NEXT: clrlwi 3, 3, 242054; AIX32-NEXT: stb 3, 0(27)2055; AIX32-NEXT: li 3, 02056; AIX32-NEXT: sync2057; AIX32-NEXT: ori 3, 3, 655352058; AIX32-NEXT: slw 3, 3, 182059; AIX32-NEXT: L..BB1_29: # %entry2060; AIX32-NEXT: #2061; AIX32-NEXT: lwarx 4, 0, 172062; AIX32-NEXT: or 5, 16, 42063; AIX32-NEXT: andc 6, 4, 32064; AIX32-NEXT: and 5, 5, 32065; AIX32-NEXT: or 5, 5, 62066; AIX32-NEXT: stwcx. 5, 0, 172067; AIX32-NEXT: bne- 0, L..BB1_292068; AIX32-NEXT: # %bb.30: # %entry2069; AIX32-NEXT: srw 3, 4, 182070; AIX32-NEXT: lwsync2071; AIX32-NEXT: clrlwi 3, 3, 162072; AIX32-NEXT: sth 3, 0(23)2073; AIX32-NEXT: li 3, 02074; AIX32-NEXT: sync2075; AIX32-NEXT: ori 3, 3, 655352076; AIX32-NEXT: slw 3, 3, 152077; AIX32-NEXT: L..BB1_31: # %entry2078; AIX32-NEXT: #2079; AIX32-NEXT: lwarx 4, 0, 142080; AIX32-NEXT: or 5, 13, 42081; AIX32-NEXT: andc 6, 4, 32082; AIX32-NEXT: and 5, 5, 32083; AIX32-NEXT: or 5, 5, 62084; AIX32-NEXT: stwcx. 5, 0, 142085; AIX32-NEXT: bne- 0, L..BB1_312086; AIX32-NEXT: # %bb.32: # %entry2087; AIX32-NEXT: srw 3, 4, 152088; AIX32-NEXT: lwsync2089; AIX32-NEXT: clrlwi 3, 3, 162090; AIX32-NEXT: sth 3, 0(19)2091; AIX32-NEXT: sync2092; AIX32-NEXT: L..BB1_33: # %entry2093; AIX32-NEXT: #2094; AIX32-NEXT: lwarx 3, 0, 292095; AIX32-NEXT: ori 4, 3, 112096; AIX32-NEXT: stwcx. 4, 0, 292097; AIX32-NEXT: bne- 0, L..BB1_332098; AIX32-NEXT: # %bb.34: # %entry2099; AIX32-NEXT: lwsync2100; AIX32-NEXT: stw 3, 0(29)2101; AIX32-NEXT: sync2102; AIX32-NEXT: L..BB1_35: # %entry2103; AIX32-NEXT: #2104; AIX32-NEXT: lwarx 3, 0, 282105; AIX32-NEXT: ori 4, 3, 112106; AIX32-NEXT: stwcx. 4, 0, 282107; AIX32-NEXT: bne- 0, L..BB1_352108; AIX32-NEXT: # %bb.36: # %entry2109; AIX32-NEXT: lwsync2110; AIX32-NEXT: li 4, 02111; AIX32-NEXT: li 5, 112112; AIX32-NEXT: li 6, 52113; AIX32-NEXT: stw 3, 0(28)2114; AIX32-NEXT: mr 3, 312115; AIX32-NEXT: bl .__atomic_fetch_or_8[PR]2116; AIX32-NEXT: nop2117; AIX32-NEXT: stw 4, 4(31)2118; AIX32-NEXT: li 4, 02119; AIX32-NEXT: li 5, 112120; AIX32-NEXT: li 6, 52121; AIX32-NEXT: stw 3, 0(31)2122; AIX32-NEXT: mr 3, 302123; AIX32-NEXT: bl .__atomic_fetch_or_8[PR]2124; AIX32-NEXT: nop2125; AIX32-NEXT: stw 3, 0(30)2126; AIX32-NEXT: li 3, 2552127; AIX32-NEXT: stw 4, 4(30)2128; AIX32-NEXT: sync2129; AIX32-NEXT: slw 3, 3, 262130; AIX32-NEXT: L..BB1_37: # %entry2131; AIX32-NEXT: #2132; AIX32-NEXT: lwarx 4, 0, 252133; AIX32-NEXT: xor 5, 24, 42134; AIX32-NEXT: andc 6, 4, 32135; AIX32-NEXT: and 5, 5, 32136; AIX32-NEXT: or 5, 5, 62137; AIX32-NEXT: stwcx. 5, 0, 252138; AIX32-NEXT: bne- 0, L..BB1_372139; AIX32-NEXT: # %bb.38: # %entry2140; AIX32-NEXT: srw 3, 4, 262141; AIX32-NEXT: lwsync2142; AIX32-NEXT: lwz 4, 64(1) # 4-byte Folded Reload2143; AIX32-NEXT: clrlwi 3, 3, 242144; AIX32-NEXT: stb 3, 0(4)2145; AIX32-NEXT: li 3, 2552146; AIX32-NEXT: sync2147; AIX32-NEXT: slw 3, 3, 222148; AIX32-NEXT: L..BB1_39: # %entry2149; AIX32-NEXT: #2150; AIX32-NEXT: lwarx 4, 0, 212151; AIX32-NEXT: xor 5, 20, 42152; AIX32-NEXT: andc 6, 4, 32153; AIX32-NEXT: and 5, 5, 32154; AIX32-NEXT: or 5, 5, 62155; AIX32-NEXT: stwcx. 5, 0, 212156; AIX32-NEXT: bne- 0, L..BB1_392157; AIX32-NEXT: # %bb.40: # %entry2158; AIX32-NEXT: srw 3, 4, 222159; AIX32-NEXT: lwsync2160; AIX32-NEXT: clrlwi 3, 3, 242161; AIX32-NEXT: stb 3, 0(27)2162; AIX32-NEXT: li 3, 02163; AIX32-NEXT: sync2164; AIX32-NEXT: ori 3, 3, 655352165; AIX32-NEXT: slw 3, 3, 182166; AIX32-NEXT: L..BB1_41: # %entry2167; AIX32-NEXT: #2168; AIX32-NEXT: lwarx 4, 0, 172169; AIX32-NEXT: xor 5, 16, 42170; AIX32-NEXT: andc 6, 4, 32171; AIX32-NEXT: and 5, 5, 32172; AIX32-NEXT: or 5, 5, 62173; AIX32-NEXT: stwcx. 5, 0, 172174; AIX32-NEXT: bne- 0, L..BB1_412175; AIX32-NEXT: # %bb.42: # %entry2176; AIX32-NEXT: srw 3, 4, 182177; AIX32-NEXT: lwsync2178; AIX32-NEXT: clrlwi 3, 3, 162179; AIX32-NEXT: sth 3, 0(23)2180; AIX32-NEXT: li 3, 02181; AIX32-NEXT: sync2182; AIX32-NEXT: ori 3, 3, 655352183; AIX32-NEXT: slw 3, 3, 152184; AIX32-NEXT: L..BB1_43: # %entry2185; AIX32-NEXT: #2186; AIX32-NEXT: lwarx 4, 0, 142187; AIX32-NEXT: xor 5, 13, 42188; AIX32-NEXT: andc 6, 4, 32189; AIX32-NEXT: and 5, 5, 32190; AIX32-NEXT: or 5, 5, 62191; AIX32-NEXT: stwcx. 5, 0, 142192; AIX32-NEXT: bne- 0, L..BB1_432193; AIX32-NEXT: # %bb.44: # %entry2194; AIX32-NEXT: srw 3, 4, 152195; AIX32-NEXT: lwsync2196; AIX32-NEXT: clrlwi 3, 3, 162197; AIX32-NEXT: sth 3, 0(19)2198; AIX32-NEXT: sync2199; AIX32-NEXT: L..BB1_45: # %entry2200; AIX32-NEXT: #2201; AIX32-NEXT: lwarx 3, 0, 292202; AIX32-NEXT: xori 4, 3, 112203; AIX32-NEXT: stwcx. 4, 0, 292204; AIX32-NEXT: bne- 0, L..BB1_452205; AIX32-NEXT: # %bb.46: # %entry2206; AIX32-NEXT: lwsync2207; AIX32-NEXT: stw 3, 0(29)2208; AIX32-NEXT: sync2209; AIX32-NEXT: L..BB1_47: # %entry2210; AIX32-NEXT: #2211; AIX32-NEXT: lwarx 3, 0, 282212; AIX32-NEXT: xori 4, 3, 112213; AIX32-NEXT: stwcx. 4, 0, 282214; AIX32-NEXT: bne- 0, L..BB1_472215; AIX32-NEXT: # %bb.48: # %entry2216; AIX32-NEXT: lwsync2217; AIX32-NEXT: li 4, 02218; AIX32-NEXT: li 5, 112219; AIX32-NEXT: li 6, 52220; AIX32-NEXT: stw 3, 0(28)2221; AIX32-NEXT: mr 3, 312222; AIX32-NEXT: bl .__atomic_fetch_xor_8[PR]2223; AIX32-NEXT: nop2224; AIX32-NEXT: stw 4, 4(31)2225; AIX32-NEXT: li 4, 02226; AIX32-NEXT: li 5, 112227; AIX32-NEXT: li 6, 52228; AIX32-NEXT: stw 3, 0(31)2229; AIX32-NEXT: mr 3, 302230; AIX32-NEXT: bl .__atomic_fetch_xor_8[PR]2231; AIX32-NEXT: nop2232; AIX32-NEXT: stw 3, 0(30)2233; AIX32-NEXT: li 3, 2552234; AIX32-NEXT: stw 4, 4(30)2235; AIX32-NEXT: sync2236; AIX32-NEXT: slw 3, 3, 262237; AIX32-NEXT: L..BB1_49: # %entry2238; AIX32-NEXT: #2239; AIX32-NEXT: lwarx 4, 0, 252240; AIX32-NEXT: nand 5, 24, 42241; AIX32-NEXT: andc 6, 4, 32242; AIX32-NEXT: and 5, 5, 32243; AIX32-NEXT: or 5, 5, 62244; AIX32-NEXT: stwcx. 5, 0, 252245; AIX32-NEXT: bne- 0, L..BB1_492246; AIX32-NEXT: # %bb.50: # %entry2247; AIX32-NEXT: srw 3, 4, 262248; AIX32-NEXT: lwsync2249; AIX32-NEXT: li 7, 112250; AIX32-NEXT: lwz 4, 64(1) # 4-byte Folded Reload2251; AIX32-NEXT: clrlwi 3, 3, 242252; AIX32-NEXT: stb 3, 0(4)2253; AIX32-NEXT: sync2254; AIX32-NEXT: li 3, 2552255; AIX32-NEXT: slw 3, 3, 222256; AIX32-NEXT: L..BB1_51: # %entry2257; AIX32-NEXT: #2258; AIX32-NEXT: lwarx 4, 0, 212259; AIX32-NEXT: nand 5, 20, 42260; AIX32-NEXT: andc 6, 4, 32261; AIX32-NEXT: and 5, 5, 32262; AIX32-NEXT: or 5, 5, 62263; AIX32-NEXT: stwcx. 5, 0, 212264; AIX32-NEXT: bne- 0, L..BB1_512265; AIX32-NEXT: # %bb.52: # %entry2266; AIX32-NEXT: srw 3, 4, 222267; AIX32-NEXT: lwsync2268; AIX32-NEXT: clrlwi 3, 3, 242269; AIX32-NEXT: stb 3, 0(27)2270; AIX32-NEXT: li 3, 02271; AIX32-NEXT: sync2272; AIX32-NEXT: ori 3, 3, 655352273; AIX32-NEXT: slw 3, 3, 182274; AIX32-NEXT: L..BB1_53: # %entry2275; AIX32-NEXT: #2276; AIX32-NEXT: lwarx 4, 0, 172277; AIX32-NEXT: nand 5, 16, 42278; AIX32-NEXT: andc 6, 4, 32279; AIX32-NEXT: and 5, 5, 32280; AIX32-NEXT: or 5, 5, 62281; AIX32-NEXT: stwcx. 5, 0, 172282; AIX32-NEXT: bne- 0, L..BB1_532283; AIX32-NEXT: # %bb.54: # %entry2284; AIX32-NEXT: srw 3, 4, 182285; AIX32-NEXT: lwsync2286; AIX32-NEXT: clrlwi 3, 3, 162287; AIX32-NEXT: sth 3, 0(23)2288; AIX32-NEXT: li 3, 02289; AIX32-NEXT: sync2290; AIX32-NEXT: ori 3, 3, 655352291; AIX32-NEXT: slw 3, 3, 152292; AIX32-NEXT: L..BB1_55: # %entry2293; AIX32-NEXT: #2294; AIX32-NEXT: lwarx 4, 0, 142295; AIX32-NEXT: nand 5, 13, 42296; AIX32-NEXT: andc 6, 4, 32297; AIX32-NEXT: and 5, 5, 32298; AIX32-NEXT: or 5, 5, 62299; AIX32-NEXT: stwcx. 5, 0, 142300; AIX32-NEXT: bne- 0, L..BB1_552301; AIX32-NEXT: # %bb.56: # %entry2302; AIX32-NEXT: srw 3, 4, 152303; AIX32-NEXT: lwsync2304; AIX32-NEXT: clrlwi 3, 3, 162305; AIX32-NEXT: sth 3, 0(19)2306; AIX32-NEXT: sync2307; AIX32-NEXT: L..BB1_57: # %entry2308; AIX32-NEXT: #2309; AIX32-NEXT: lwarx 3, 0, 292310; AIX32-NEXT: nand 4, 7, 32311; AIX32-NEXT: stwcx. 4, 0, 292312; AIX32-NEXT: bne- 0, L..BB1_572313; AIX32-NEXT: # %bb.58: # %entry2314; AIX32-NEXT: lwsync2315; AIX32-NEXT: stw 3, 0(29)2316; AIX32-NEXT: sync2317; AIX32-NEXT: L..BB1_59: # %entry2318; AIX32-NEXT: #2319; AIX32-NEXT: lwarx 3, 0, 282320; AIX32-NEXT: nand 4, 7, 32321; AIX32-NEXT: stwcx. 4, 0, 282322; AIX32-NEXT: bne- 0, L..BB1_592323; AIX32-NEXT: # %bb.60: # %entry2324; AIX32-NEXT: lwsync2325; AIX32-NEXT: li 4, 02326; AIX32-NEXT: li 5, 112327; AIX32-NEXT: li 6, 52328; AIX32-NEXT: stw 3, 0(28)2329; AIX32-NEXT: mr 3, 312330; AIX32-NEXT: bl .__atomic_fetch_nand_8[PR]2331; AIX32-NEXT: nop2332; AIX32-NEXT: stw 4, 4(31)2333; AIX32-NEXT: li 4, 02334; AIX32-NEXT: li 5, 112335; AIX32-NEXT: li 6, 52336; AIX32-NEXT: stw 3, 0(31)2337; AIX32-NEXT: mr 3, 302338; AIX32-NEXT: bl .__atomic_fetch_nand_8[PR]2339; AIX32-NEXT: nop2340; AIX32-NEXT: stw 3, 0(30)2341; AIX32-NEXT: li 3, 2552342; AIX32-NEXT: stw 4, 4(30)2343; AIX32-NEXT: sync2344; AIX32-NEXT: slw 3, 3, 262345; AIX32-NEXT: L..BB1_61: # %entry2346; AIX32-NEXT: #2347; AIX32-NEXT: lwarx 4, 0, 252348; AIX32-NEXT: and 5, 24, 42349; AIX32-NEXT: andc 6, 4, 32350; AIX32-NEXT: and 5, 5, 32351; AIX32-NEXT: or 5, 5, 62352; AIX32-NEXT: stwcx. 5, 0, 252353; AIX32-NEXT: bne- 0, L..BB1_612354; AIX32-NEXT: # %bb.62: # %entry2355; AIX32-NEXT: srw 3, 4, 262356; AIX32-NEXT: lwsync2357; AIX32-NEXT: lwz 4, 64(1) # 4-byte Folded Reload2358; AIX32-NEXT: clrlwi 3, 3, 242359; AIX32-NEXT: stb 3, 0(4)2360; AIX32-NEXT: li 3, 2552361; AIX32-NEXT: sync2362; AIX32-NEXT: slw 3, 3, 222363; AIX32-NEXT: L..BB1_63: # %entry2364; AIX32-NEXT: #2365; AIX32-NEXT: lwarx 4, 0, 212366; AIX32-NEXT: and 5, 20, 42367; AIX32-NEXT: andc 6, 4, 32368; AIX32-NEXT: and 5, 5, 32369; AIX32-NEXT: or 5, 5, 62370; AIX32-NEXT: stwcx. 5, 0, 212371; AIX32-NEXT: bne- 0, L..BB1_632372; AIX32-NEXT: # %bb.64: # %entry2373; AIX32-NEXT: srw 3, 4, 222374; AIX32-NEXT: lwsync2375; AIX32-NEXT: li 7, 112376; AIX32-NEXT: clrlwi 3, 3, 242377; AIX32-NEXT: stb 3, 0(27)2378; AIX32-NEXT: sync2379; AIX32-NEXT: li 3, 02380; AIX32-NEXT: ori 3, 3, 655352381; AIX32-NEXT: slw 3, 3, 182382; AIX32-NEXT: L..BB1_65: # %entry2383; AIX32-NEXT: #2384; AIX32-NEXT: lwarx 4, 0, 172385; AIX32-NEXT: and 5, 16, 42386; AIX32-NEXT: andc 6, 4, 32387; AIX32-NEXT: and 5, 5, 32388; AIX32-NEXT: or 5, 5, 62389; AIX32-NEXT: stwcx. 5, 0, 172390; AIX32-NEXT: bne- 0, L..BB1_652391; AIX32-NEXT: # %bb.66: # %entry2392; AIX32-NEXT: srw 3, 4, 182393; AIX32-NEXT: lwsync2394; AIX32-NEXT: clrlwi 3, 3, 162395; AIX32-NEXT: sth 3, 0(23)2396; AIX32-NEXT: li 3, 02397; AIX32-NEXT: sync2398; AIX32-NEXT: ori 3, 3, 655352399; AIX32-NEXT: slw 3, 3, 152400; AIX32-NEXT: L..BB1_67: # %entry2401; AIX32-NEXT: #2402; AIX32-NEXT: lwarx 4, 0, 142403; AIX32-NEXT: and 5, 13, 42404; AIX32-NEXT: andc 6, 4, 32405; AIX32-NEXT: and 5, 5, 32406; AIX32-NEXT: or 5, 5, 62407; AIX32-NEXT: stwcx. 5, 0, 142408; AIX32-NEXT: bne- 0, L..BB1_672409; AIX32-NEXT: # %bb.68: # %entry2410; AIX32-NEXT: srw 3, 4, 152411; AIX32-NEXT: lwsync2412; AIX32-NEXT: clrlwi 3, 3, 162413; AIX32-NEXT: sth 3, 0(19)2414; AIX32-NEXT: sync2415; AIX32-NEXT: L..BB1_69: # %entry2416; AIX32-NEXT: #2417; AIX32-NEXT: lwarx 3, 0, 292418; AIX32-NEXT: and 4, 7, 32419; AIX32-NEXT: stwcx. 4, 0, 292420; AIX32-NEXT: bne- 0, L..BB1_692421; AIX32-NEXT: # %bb.70: # %entry2422; AIX32-NEXT: lwsync2423; AIX32-NEXT: stw 3, 0(29)2424; AIX32-NEXT: sync2425; AIX32-NEXT: L..BB1_71: # %entry2426; AIX32-NEXT: #2427; AIX32-NEXT: lwarx 3, 0, 282428; AIX32-NEXT: and 4, 7, 32429; AIX32-NEXT: stwcx. 4, 0, 282430; AIX32-NEXT: bne- 0, L..BB1_712431; AIX32-NEXT: # %bb.72: # %entry2432; AIX32-NEXT: lwsync2433; AIX32-NEXT: li 4, 02434; AIX32-NEXT: li 5, 112435; AIX32-NEXT: li 6, 52436; AIX32-NEXT: stw 3, 0(28)2437; AIX32-NEXT: mr 3, 312438; AIX32-NEXT: bl .__atomic_fetch_and_8[PR]2439; AIX32-NEXT: nop2440; AIX32-NEXT: stw 4, 4(31)2441; AIX32-NEXT: li 4, 02442; AIX32-NEXT: li 5, 112443; AIX32-NEXT: li 6, 52444; AIX32-NEXT: stw 3, 0(31)2445; AIX32-NEXT: mr 3, 302446; AIX32-NEXT: bl .__atomic_fetch_and_8[PR]2447; AIX32-NEXT: nop2448; AIX32-NEXT: stw 4, 4(30)2449; AIX32-NEXT: stw 3, 0(30)2450; AIX32-NEXT: lwz 31, 140(1) # 4-byte Folded Reload2451; AIX32-NEXT: lwz 30, 136(1) # 4-byte Folded Reload2452; AIX32-NEXT: lwz 29, 132(1) # 4-byte Folded Reload2453; AIX32-NEXT: lwz 28, 128(1) # 4-byte Folded Reload2454; AIX32-NEXT: lwz 27, 124(1) # 4-byte Folded Reload2455; AIX32-NEXT: lwz 26, 120(1) # 4-byte Folded Reload2456; AIX32-NEXT: lwz 25, 116(1) # 4-byte Folded Reload2457; AIX32-NEXT: lwz 24, 112(1) # 4-byte Folded Reload2458; AIX32-NEXT: lwz 23, 108(1) # 4-byte Folded Reload2459; AIX32-NEXT: lwz 22, 104(1) # 4-byte Folded Reload2460; AIX32-NEXT: lwz 21, 100(1) # 4-byte Folded Reload2461; AIX32-NEXT: lwz 20, 96(1) # 4-byte Folded Reload2462; AIX32-NEXT: lwz 19, 92(1) # 4-byte Folded Reload2463; AIX32-NEXT: lwz 18, 88(1) # 4-byte Folded Reload2464; AIX32-NEXT: lwz 17, 84(1) # 4-byte Folded Reload2465; AIX32-NEXT: lwz 16, 80(1) # 4-byte Folded Reload2466; AIX32-NEXT: lwz 15, 76(1) # 4-byte Folded Reload2467; AIX32-NEXT: lwz 14, 72(1) # 4-byte Folded Reload2468; AIX32-NEXT: lwz 13, 68(1) # 4-byte Folded Reload2469; AIX32-NEXT: addi 1, 1, 1442470; AIX32-NEXT: lwz 0, 8(1)2471; AIX32-NEXT: mtlr 02472; AIX32-NEXT: blr2473entry:2474 %0 = atomicrmw add ptr @sc, i8 11 seq_cst, align 12475 store i8 %0, ptr @sc, align 12476 %1 = atomicrmw add ptr @uc, i8 11 seq_cst, align 12477 store i8 %1, ptr @uc, align 12478 %2 = atomicrmw add ptr @ss, i16 11 seq_cst, align 22479 store i16 %2, ptr @ss, align 22480 %3 = atomicrmw add ptr @us, i16 11 seq_cst, align 22481 store i16 %3, ptr @us, align 22482 %4 = atomicrmw add ptr @si, i32 11 seq_cst, align 42483 store i32 %4, ptr @si, align 42484 %5 = atomicrmw add ptr @ui, i32 11 seq_cst, align 42485 store i32 %5, ptr @ui, align 42486 %6 = atomicrmw add ptr @sll, i64 11 seq_cst, align 82487 store i64 %6, ptr @sll, align 82488 %7 = atomicrmw add ptr @ull, i64 11 seq_cst, align 82489 store i64 %7, ptr @ull, align 82490 %8 = atomicrmw sub ptr @sc, i8 11 seq_cst, align 12491 store i8 %8, ptr @sc, align 12492 %9 = atomicrmw sub ptr @uc, i8 11 seq_cst, align 12493 store i8 %9, ptr @uc, align 12494 %10 = atomicrmw sub ptr @ss, i16 11 seq_cst, align 22495 store i16 %10, ptr @ss, align 22496 %11 = atomicrmw sub ptr @us, i16 11 seq_cst, align 22497 store i16 %11, ptr @us, align 22498 %12 = atomicrmw sub ptr @si, i32 11 seq_cst, align 42499 store i32 %12, ptr @si, align 42500 %13 = atomicrmw sub ptr @ui, i32 11 seq_cst, align 42501 store i32 %13, ptr @ui, align 42502 %14 = atomicrmw sub ptr @sll, i64 11 seq_cst, align 82503 store i64 %14, ptr @sll, align 82504 %15 = atomicrmw sub ptr @ull, i64 11 seq_cst, align 82505 store i64 %15, ptr @ull, align 82506 %16 = atomicrmw or ptr @sc, i8 11 seq_cst, align 12507 store i8 %16, ptr @sc, align 12508 %17 = atomicrmw or ptr @uc, i8 11 seq_cst, align 12509 store i8 %17, ptr @uc, align 12510 %18 = atomicrmw or ptr @ss, i16 11 seq_cst, align 22511 store i16 %18, ptr @ss, align 22512 %19 = atomicrmw or ptr @us, i16 11 seq_cst, align 22513 store i16 %19, ptr @us, align 22514 %20 = atomicrmw or ptr @si, i32 11 seq_cst, align 42515 store i32 %20, ptr @si, align 42516 %21 = atomicrmw or ptr @ui, i32 11 seq_cst, align 42517 store i32 %21, ptr @ui, align 42518 %22 = atomicrmw or ptr @sll, i64 11 seq_cst, align 82519 store i64 %22, ptr @sll, align 82520 %23 = atomicrmw or ptr @ull, i64 11 seq_cst, align 82521 store i64 %23, ptr @ull, align 82522 %24 = atomicrmw xor ptr @sc, i8 11 seq_cst, align 12523 store i8 %24, ptr @sc, align 12524 %25 = atomicrmw xor ptr @uc, i8 11 seq_cst, align 12525 store i8 %25, ptr @uc, align 12526 %26 = atomicrmw xor ptr @ss, i16 11 seq_cst, align 22527 store i16 %26, ptr @ss, align 22528 %27 = atomicrmw xor ptr @us, i16 11 seq_cst, align 22529 store i16 %27, ptr @us, align 22530 %28 = atomicrmw xor ptr @si, i32 11 seq_cst, align 42531 store i32 %28, ptr @si, align 42532 %29 = atomicrmw xor ptr @ui, i32 11 seq_cst, align 42533 store i32 %29, ptr @ui, align 42534 %30 = atomicrmw xor ptr @sll, i64 11 seq_cst, align 82535 store i64 %30, ptr @sll, align 82536 %31 = atomicrmw xor ptr @ull, i64 11 seq_cst, align 82537 store i64 %31, ptr @ull, align 82538 %32 = atomicrmw nand ptr @sc, i8 11 seq_cst, align 12539 store i8 %32, ptr @sc, align 12540 %33 = atomicrmw nand ptr @uc, i8 11 seq_cst, align 12541 store i8 %33, ptr @uc, align 12542 %34 = atomicrmw nand ptr @ss, i16 11 seq_cst, align 22543 store i16 %34, ptr @ss, align 22544 %35 = atomicrmw nand ptr @us, i16 11 seq_cst, align 22545 store i16 %35, ptr @us, align 22546 %36 = atomicrmw nand ptr @si, i32 11 seq_cst, align 42547 store i32 %36, ptr @si, align 42548 %37 = atomicrmw nand ptr @ui, i32 11 seq_cst, align 42549 store i32 %37, ptr @ui, align 42550 %38 = atomicrmw nand ptr @sll, i64 11 seq_cst, align 82551 store i64 %38, ptr @sll, align 82552 %39 = atomicrmw nand ptr @ull, i64 11 seq_cst, align 82553 store i64 %39, ptr @ull, align 82554 %40 = atomicrmw and ptr @sc, i8 11 seq_cst, align 12555 store i8 %40, ptr @sc, align 12556 %41 = atomicrmw and ptr @uc, i8 11 seq_cst, align 12557 store i8 %41, ptr @uc, align 12558 %42 = atomicrmw and ptr @ss, i16 11 seq_cst, align 22559 store i16 %42, ptr @ss, align 22560 %43 = atomicrmw and ptr @us, i16 11 seq_cst, align 22561 store i16 %43, ptr @us, align 22562 %44 = atomicrmw and ptr @si, i32 11 seq_cst, align 42563 store i32 %44, ptr @si, align 42564 %45 = atomicrmw and ptr @ui, i32 11 seq_cst, align 42565 store i32 %45, ptr @ui, align 42566 %46 = atomicrmw and ptr @sll, i64 11 seq_cst, align 82567 store i64 %46, ptr @sll, align 82568 %47 = atomicrmw and ptr @ull, i64 11 seq_cst, align 82569 store i64 %47, ptr @ull, align 82570 ret void2571}2572 2573define dso_local void @test_op_and_fetch() local_unnamed_addr #0 {2574; CHECK-LABEL: test_op_and_fetch:2575; CHECK: # %bb.0: # %entry2576; CHECK-NEXT: addis 3, 2, uc@toc@ha2577; CHECK-NEXT: addis 5, 2, sc@toc@ha2578; CHECK-NEXT: std 16, -128(1) # 8-byte Folded Spill2579; CHECK-NEXT: std 17, -120(1) # 8-byte Folded Spill2580; CHECK-NEXT: std 18, -112(1) # 8-byte Folded Spill2581; CHECK-NEXT: std 19, -104(1) # 8-byte Folded Spill2582; CHECK-NEXT: lbz 6, uc@toc@l(3)2583; CHECK-NEXT: std 20, -96(1) # 8-byte Folded Spill2584; CHECK-NEXT: std 21, -88(1) # 8-byte Folded Spill2585; CHECK-NEXT: addi 4, 3, uc@toc@l2586; CHECK-NEXT: addi 7, 5, sc@toc@l2587; CHECK-NEXT: std 22, -80(1) # 8-byte Folded Spill2588; CHECK-NEXT: std 23, -72(1) # 8-byte Folded Spill2589; CHECK-NEXT: std 24, -64(1) # 8-byte Folded Spill2590; CHECK-NEXT: std 25, -56(1) # 8-byte Folded Spill2591; CHECK-NEXT: std 26, -48(1) # 8-byte Folded Spill2592; CHECK-NEXT: std 27, -40(1) # 8-byte Folded Spill2593; CHECK-NEXT: std 28, -32(1) # 8-byte Folded Spill2594; CHECK-NEXT: std 29, -24(1) # 8-byte Folded Spill2595; CHECK-NEXT: std 30, -16(1) # 8-byte Folded Spill2596; CHECK-NEXT: sync2597; CHECK-NEXT: .LBB2_1: # %entry2598; CHECK-NEXT: #2599; CHECK-NEXT: lbarx 8, 0, 72600; CHECK-NEXT: add 8, 6, 82601; CHECK-NEXT: stbcx. 8, 0, 72602; CHECK-NEXT: bne- 0, .LBB2_12603; CHECK-NEXT: # %bb.2: # %entry2604; CHECK-NEXT: lwsync2605; CHECK-NEXT: stb 8, sc@toc@l(5)2606; CHECK-NEXT: lbz 6, uc@toc@l(3)2607; CHECK-NEXT: sync2608; CHECK-NEXT: .LBB2_3: # %entry2609; CHECK-NEXT: #2610; CHECK-NEXT: lbarx 8, 0, 42611; CHECK-NEXT: add 8, 6, 82612; CHECK-NEXT: stbcx. 8, 0, 42613; CHECK-NEXT: bne- 0, .LBB2_32614; CHECK-NEXT: # %bb.4: # %entry2615; CHECK-NEXT: addis 6, 2, ss@toc@ha2616; CHECK-NEXT: lwsync2617; CHECK-NEXT: stb 8, uc@toc@l(3)2618; CHECK-NEXT: clrlwi 8, 8, 242619; CHECK-NEXT: sync2620; CHECK-NEXT: addi 9, 6, ss@toc@l2621; CHECK-NEXT: .LBB2_5: # %entry2622; CHECK-NEXT: #2623; CHECK-NEXT: lharx 10, 0, 92624; CHECK-NEXT: add 10, 8, 102625; CHECK-NEXT: sthcx. 10, 0, 92626; CHECK-NEXT: bne- 0, .LBB2_52627; CHECK-NEXT: # %bb.6: # %entry2628; CHECK-NEXT: lwsync2629; CHECK-NEXT: addis 8, 2, us@toc@ha2630; CHECK-NEXT: sth 10, ss@toc@l(6)2631; CHECK-NEXT: lbz 10, uc@toc@l(3)2632; CHECK-NEXT: sync2633; CHECK-NEXT: addi 11, 8, us@toc@l2634; CHECK-NEXT: .LBB2_7: # %entry2635; CHECK-NEXT: #2636; CHECK-NEXT: lharx 12, 0, 112637; CHECK-NEXT: add 12, 10, 122638; CHECK-NEXT: sthcx. 12, 0, 112639; CHECK-NEXT: bne- 0, .LBB2_72640; CHECK-NEXT: # %bb.8: # %entry2641; CHECK-NEXT: lwsync2642; CHECK-NEXT: addis 10, 2, si@toc@ha2643; CHECK-NEXT: sth 12, us@toc@l(8)2644; CHECK-NEXT: lbz 12, uc@toc@l(3)2645; CHECK-NEXT: sync2646; CHECK-NEXT: addi 0, 10, si@toc@l2647; CHECK-NEXT: .LBB2_9: # %entry2648; CHECK-NEXT: #2649; CHECK-NEXT: lwarx 30, 0, 02650; CHECK-NEXT: add 30, 12, 302651; CHECK-NEXT: stwcx. 30, 0, 02652; CHECK-NEXT: bne- 0, .LBB2_92653; CHECK-NEXT: # %bb.10: # %entry2654; CHECK-NEXT: lwsync2655; CHECK-NEXT: addis 12, 2, ui@toc@ha2656; CHECK-NEXT: stw 30, si@toc@l(10)2657; CHECK-NEXT: lbz 30, uc@toc@l(3)2658; CHECK-NEXT: sync2659; CHECK-NEXT: addi 29, 12, ui@toc@l2660; CHECK-NEXT: .LBB2_11: # %entry2661; CHECK-NEXT: #2662; CHECK-NEXT: lwarx 28, 0, 292663; CHECK-NEXT: add 28, 30, 282664; CHECK-NEXT: stwcx. 28, 0, 292665; CHECK-NEXT: bne- 0, .LBB2_112666; CHECK-NEXT: # %bb.12: # %entry2667; CHECK-NEXT: lwsync2668; CHECK-NEXT: addis 30, 2, sll@toc@ha2669; CHECK-NEXT: stw 28, ui@toc@l(12)2670; CHECK-NEXT: lbz 28, uc@toc@l(3)2671; CHECK-NEXT: sync2672; CHECK-NEXT: addi 27, 30, sll@toc@l2673; CHECK-NEXT: .LBB2_13: # %entry2674; CHECK-NEXT: #2675; CHECK-NEXT: ldarx 26, 0, 272676; CHECK-NEXT: add 26, 28, 262677; CHECK-NEXT: stdcx. 26, 0, 272678; CHECK-NEXT: bne- 0, .LBB2_132679; CHECK-NEXT: # %bb.14: # %entry2680; CHECK-NEXT: lwsync2681; CHECK-NEXT: addis 28, 2, ull@toc@ha2682; CHECK-NEXT: std 26, sll@toc@l(30)2683; CHECK-NEXT: lbz 25, uc@toc@l(3)2684; CHECK-NEXT: sync2685; CHECK-NEXT: addi 26, 28, ull@toc@l2686; CHECK-NEXT: .LBB2_15: # %entry2687; CHECK-NEXT: #2688; CHECK-NEXT: ldarx 24, 0, 262689; CHECK-NEXT: add 24, 25, 242690; CHECK-NEXT: stdcx. 24, 0, 262691; CHECK-NEXT: bne- 0, .LBB2_152692; CHECK-NEXT: # %bb.16: # %entry2693; CHECK-NEXT: lwsync2694; CHECK-NEXT: std 24, ull@toc@l(28)2695; CHECK-NEXT: lbz 25, uc@toc@l(3)2696; CHECK-NEXT: sync2697; CHECK-NEXT: .LBB2_17: # %entry2698; CHECK-NEXT: #2699; CHECK-NEXT: lbarx 24, 0, 72700; CHECK-NEXT: sub 24, 24, 252701; CHECK-NEXT: stbcx. 24, 0, 72702; CHECK-NEXT: bne- 0, .LBB2_172703; CHECK-NEXT: # %bb.18: # %entry2704; CHECK-NEXT: lwsync2705; CHECK-NEXT: stb 24, sc@toc@l(5)2706; CHECK-NEXT: lbz 25, uc@toc@l(3)2707; CHECK-NEXT: sync2708; CHECK-NEXT: .LBB2_19: # %entry2709; CHECK-NEXT: #2710; CHECK-NEXT: lbarx 24, 0, 42711; CHECK-NEXT: sub 24, 24, 252712; CHECK-NEXT: stbcx. 24, 0, 42713; CHECK-NEXT: bne- 0, .LBB2_192714; CHECK-NEXT: # %bb.20: # %entry2715; CHECK-NEXT: lwsync2716; CHECK-NEXT: stb 24, uc@toc@l(3)2717; CHECK-NEXT: clrlwi 25, 24, 242718; CHECK-NEXT: sync2719; CHECK-NEXT: .LBB2_21: # %entry2720; CHECK-NEXT: #2721; CHECK-NEXT: lharx 24, 0, 92722; CHECK-NEXT: sub 24, 24, 252723; CHECK-NEXT: sthcx. 24, 0, 92724; CHECK-NEXT: bne- 0, .LBB2_212725; CHECK-NEXT: # %bb.22: # %entry2726; CHECK-NEXT: lwsync2727; CHECK-NEXT: sth 24, ss@toc@l(6)2728; CHECK-NEXT: lbz 25, uc@toc@l(3)2729; CHECK-NEXT: sync2730; CHECK-NEXT: .LBB2_23: # %entry2731; CHECK-NEXT: #2732; CHECK-NEXT: lharx 24, 0, 112733; CHECK-NEXT: sub 24, 24, 252734; CHECK-NEXT: sthcx. 24, 0, 112735; CHECK-NEXT: bne- 0, .LBB2_232736; CHECK-NEXT: # %bb.24: # %entry2737; CHECK-NEXT: lwsync2738; CHECK-NEXT: sth 24, us@toc@l(8)2739; CHECK-NEXT: lbz 25, uc@toc@l(3)2740; CHECK-NEXT: sync2741; CHECK-NEXT: .LBB2_25: # %entry2742; CHECK-NEXT: #2743; CHECK-NEXT: lwarx 24, 0, 02744; CHECK-NEXT: sub 24, 24, 252745; CHECK-NEXT: stwcx. 24, 0, 02746; CHECK-NEXT: bne- 0, .LBB2_252747; CHECK-NEXT: # %bb.26: # %entry2748; CHECK-NEXT: lwsync2749; CHECK-NEXT: stw 24, si@toc@l(10)2750; CHECK-NEXT: lbz 25, uc@toc@l(3)2751; CHECK-NEXT: sync2752; CHECK-NEXT: .LBB2_27: # %entry2753; CHECK-NEXT: #2754; CHECK-NEXT: lwarx 24, 0, 292755; CHECK-NEXT: sub 24, 24, 252756; CHECK-NEXT: stwcx. 24, 0, 292757; CHECK-NEXT: bne- 0, .LBB2_272758; CHECK-NEXT: # %bb.28: # %entry2759; CHECK-NEXT: lwsync2760; CHECK-NEXT: stw 24, ui@toc@l(12)2761; CHECK-NEXT: lbz 25, uc@toc@l(3)2762; CHECK-NEXT: sync2763; CHECK-NEXT: .LBB2_29: # %entry2764; CHECK-NEXT: #2765; CHECK-NEXT: ldarx 24, 0, 272766; CHECK-NEXT: sub 24, 24, 252767; CHECK-NEXT: stdcx. 24, 0, 272768; CHECK-NEXT: bne- 0, .LBB2_292769; CHECK-NEXT: # %bb.30: # %entry2770; CHECK-NEXT: lwsync2771; CHECK-NEXT: std 24, sll@toc@l(30)2772; CHECK-NEXT: lbz 25, uc@toc@l(3)2773; CHECK-NEXT: sync2774; CHECK-NEXT: .LBB2_31: # %entry2775; CHECK-NEXT: #2776; CHECK-NEXT: ldarx 24, 0, 262777; CHECK-NEXT: sub 24, 24, 252778; CHECK-NEXT: stdcx. 24, 0, 262779; CHECK-NEXT: bne- 0, .LBB2_312780; CHECK-NEXT: # %bb.32: # %entry2781; CHECK-NEXT: lwsync2782; CHECK-NEXT: std 24, ull@toc@l(28)2783; CHECK-NEXT: lbz 25, uc@toc@l(3)2784; CHECK-NEXT: sync2785; CHECK-NEXT: .LBB2_33: # %entry2786; CHECK-NEXT: #2787; CHECK-NEXT: lbarx 24, 0, 72788; CHECK-NEXT: or 24, 25, 242789; CHECK-NEXT: stbcx. 24, 0, 72790; CHECK-NEXT: bne- 0, .LBB2_332791; CHECK-NEXT: # %bb.34: # %entry2792; CHECK-NEXT: lwsync2793; CHECK-NEXT: stb 24, sc@toc@l(5)2794; CHECK-NEXT: lbz 25, uc@toc@l(3)2795; CHECK-NEXT: sync2796; CHECK-NEXT: .LBB2_35: # %entry2797; CHECK-NEXT: #2798; CHECK-NEXT: lbarx 24, 0, 42799; CHECK-NEXT: or 24, 25, 242800; CHECK-NEXT: stbcx. 24, 0, 42801; CHECK-NEXT: bne- 0, .LBB2_352802; CHECK-NEXT: # %bb.36: # %entry2803; CHECK-NEXT: lwsync2804; CHECK-NEXT: stb 24, uc@toc@l(3)2805; CHECK-NEXT: clrlwi 25, 24, 242806; CHECK-NEXT: sync2807; CHECK-NEXT: .LBB2_37: # %entry2808; CHECK-NEXT: #2809; CHECK-NEXT: lharx 24, 0, 92810; CHECK-NEXT: or 24, 25, 242811; CHECK-NEXT: sthcx. 24, 0, 92812; CHECK-NEXT: bne- 0, .LBB2_372813; CHECK-NEXT: # %bb.38: # %entry2814; CHECK-NEXT: lwsync2815; CHECK-NEXT: sth 24, ss@toc@l(6)2816; CHECK-NEXT: lbz 25, uc@toc@l(3)2817; CHECK-NEXT: sync2818; CHECK-NEXT: .LBB2_39: # %entry2819; CHECK-NEXT: #2820; CHECK-NEXT: lharx 24, 0, 112821; CHECK-NEXT: or 24, 25, 242822; CHECK-NEXT: sthcx. 24, 0, 112823; CHECK-NEXT: bne- 0, .LBB2_392824; CHECK-NEXT: # %bb.40: # %entry2825; CHECK-NEXT: lwsync2826; CHECK-NEXT: sth 24, us@toc@l(8)2827; CHECK-NEXT: lbz 25, uc@toc@l(3)2828; CHECK-NEXT: sync2829; CHECK-NEXT: .LBB2_41: # %entry2830; CHECK-NEXT: #2831; CHECK-NEXT: lwarx 24, 0, 02832; CHECK-NEXT: or 24, 25, 242833; CHECK-NEXT: stwcx. 24, 0, 02834; CHECK-NEXT: bne- 0, .LBB2_412835; CHECK-NEXT: # %bb.42: # %entry2836; CHECK-NEXT: lwsync2837; CHECK-NEXT: stw 24, si@toc@l(10)2838; CHECK-NEXT: lbz 25, uc@toc@l(3)2839; CHECK-NEXT: sync2840; CHECK-NEXT: .LBB2_43: # %entry2841; CHECK-NEXT: #2842; CHECK-NEXT: lwarx 24, 0, 292843; CHECK-NEXT: or 24, 25, 242844; CHECK-NEXT: stwcx. 24, 0, 292845; CHECK-NEXT: bne- 0, .LBB2_432846; CHECK-NEXT: # %bb.44: # %entry2847; CHECK-NEXT: lwsync2848; CHECK-NEXT: stw 24, ui@toc@l(12)2849; CHECK-NEXT: lbz 25, uc@toc@l(3)2850; CHECK-NEXT: sync2851; CHECK-NEXT: .LBB2_45: # %entry2852; CHECK-NEXT: #2853; CHECK-NEXT: ldarx 24, 0, 272854; CHECK-NEXT: or 24, 25, 242855; CHECK-NEXT: stdcx. 24, 0, 272856; CHECK-NEXT: bne- 0, .LBB2_452857; CHECK-NEXT: # %bb.46: # %entry2858; CHECK-NEXT: lwsync2859; CHECK-NEXT: std 24, sll@toc@l(30)2860; CHECK-NEXT: lbz 25, uc@toc@l(3)2861; CHECK-NEXT: sync2862; CHECK-NEXT: .LBB2_47: # %entry2863; CHECK-NEXT: #2864; CHECK-NEXT: ldarx 24, 0, 262865; CHECK-NEXT: or 24, 25, 242866; CHECK-NEXT: stdcx. 24, 0, 262867; CHECK-NEXT: bne- 0, .LBB2_472868; CHECK-NEXT: # %bb.48: # %entry2869; CHECK-NEXT: lwsync2870; CHECK-NEXT: std 24, ull@toc@l(28)2871; CHECK-NEXT: lbz 25, uc@toc@l(3)2872; CHECK-NEXT: sync2873; CHECK-NEXT: .LBB2_49: # %entry2874; CHECK-NEXT: #2875; CHECK-NEXT: lbarx 24, 0, 72876; CHECK-NEXT: xor 24, 25, 242877; CHECK-NEXT: stbcx. 24, 0, 72878; CHECK-NEXT: bne- 0, .LBB2_492879; CHECK-NEXT: # %bb.50: # %entry2880; CHECK-NEXT: lwsync2881; CHECK-NEXT: stb 24, sc@toc@l(5)2882; CHECK-NEXT: lbz 25, uc@toc@l(3)2883; CHECK-NEXT: sync2884; CHECK-NEXT: .LBB2_51: # %entry2885; CHECK-NEXT: #2886; CHECK-NEXT: lbarx 24, 0, 42887; CHECK-NEXT: xor 24, 25, 242888; CHECK-NEXT: stbcx. 24, 0, 42889; CHECK-NEXT: bne- 0, .LBB2_512890; CHECK-NEXT: # %bb.52: # %entry2891; CHECK-NEXT: lwsync2892; CHECK-NEXT: stb 24, uc@toc@l(3)2893; CHECK-NEXT: clrlwi 25, 24, 242894; CHECK-NEXT: sync2895; CHECK-NEXT: .LBB2_53: # %entry2896; CHECK-NEXT: #2897; CHECK-NEXT: lharx 24, 0, 92898; CHECK-NEXT: xor 24, 25, 242899; CHECK-NEXT: sthcx. 24, 0, 92900; CHECK-NEXT: bne- 0, .LBB2_532901; CHECK-NEXT: # %bb.54: # %entry2902; CHECK-NEXT: lwsync2903; CHECK-NEXT: sth 24, ss@toc@l(6)2904; CHECK-NEXT: lbz 25, uc@toc@l(3)2905; CHECK-NEXT: sync2906; CHECK-NEXT: .LBB2_55: # %entry2907; CHECK-NEXT: #2908; CHECK-NEXT: lharx 24, 0, 112909; CHECK-NEXT: xor 24, 25, 242910; CHECK-NEXT: sthcx. 24, 0, 112911; CHECK-NEXT: bne- 0, .LBB2_552912; CHECK-NEXT: # %bb.56: # %entry2913; CHECK-NEXT: lwsync2914; CHECK-NEXT: sth 24, us@toc@l(8)2915; CHECK-NEXT: lbz 25, uc@toc@l(3)2916; CHECK-NEXT: sync2917; CHECK-NEXT: .LBB2_57: # %entry2918; CHECK-NEXT: #2919; CHECK-NEXT: lwarx 24, 0, 02920; CHECK-NEXT: xor 24, 25, 242921; CHECK-NEXT: stwcx. 24, 0, 02922; CHECK-NEXT: bne- 0, .LBB2_572923; CHECK-NEXT: # %bb.58: # %entry2924; CHECK-NEXT: lwsync2925; CHECK-NEXT: stw 24, si@toc@l(10)2926; CHECK-NEXT: lbz 25, uc@toc@l(3)2927; CHECK-NEXT: sync2928; CHECK-NEXT: .LBB2_59: # %entry2929; CHECK-NEXT: #2930; CHECK-NEXT: lwarx 24, 0, 292931; CHECK-NEXT: xor 24, 25, 242932; CHECK-NEXT: stwcx. 24, 0, 292933; CHECK-NEXT: bne- 0, .LBB2_592934; CHECK-NEXT: # %bb.60: # %entry2935; CHECK-NEXT: lwsync2936; CHECK-NEXT: stw 24, ui@toc@l(12)2937; CHECK-NEXT: lbz 25, uc@toc@l(3)2938; CHECK-NEXT: sync2939; CHECK-NEXT: .LBB2_61: # %entry2940; CHECK-NEXT: #2941; CHECK-NEXT: ldarx 24, 0, 272942; CHECK-NEXT: xor 24, 25, 242943; CHECK-NEXT: stdcx. 24, 0, 272944; CHECK-NEXT: bne- 0, .LBB2_612945; CHECK-NEXT: # %bb.62: # %entry2946; CHECK-NEXT: lwsync2947; CHECK-NEXT: std 24, sll@toc@l(30)2948; CHECK-NEXT: lbz 25, uc@toc@l(3)2949; CHECK-NEXT: sync2950; CHECK-NEXT: .LBB2_63: # %entry2951; CHECK-NEXT: #2952; CHECK-NEXT: ldarx 24, 0, 262953; CHECK-NEXT: xor 24, 25, 242954; CHECK-NEXT: stdcx. 24, 0, 262955; CHECK-NEXT: bne- 0, .LBB2_632956; CHECK-NEXT: # %bb.64: # %entry2957; CHECK-NEXT: lwsync2958; CHECK-NEXT: std 24, ull@toc@l(28)2959; CHECK-NEXT: lbz 25, uc@toc@l(3)2960; CHECK-NEXT: sync2961; CHECK-NEXT: .LBB2_65: # %entry2962; CHECK-NEXT: #2963; CHECK-NEXT: lbarx 24, 0, 72964; CHECK-NEXT: nand 24, 25, 242965; CHECK-NEXT: stbcx. 24, 0, 72966; CHECK-NEXT: bne- 0, .LBB2_652967; CHECK-NEXT: # %bb.66: # %entry2968; CHECK-NEXT: lwsync2969; CHECK-NEXT: stb 24, sc@toc@l(5)2970; CHECK-NEXT: lbz 25, uc@toc@l(3)2971; CHECK-NEXT: sync2972; CHECK-NEXT: .LBB2_67: # %entry2973; CHECK-NEXT: #2974; CHECK-NEXT: lbarx 24, 0, 42975; CHECK-NEXT: nand 24, 25, 242976; CHECK-NEXT: stbcx. 24, 0, 42977; CHECK-NEXT: bne- 0, .LBB2_672978; CHECK-NEXT: # %bb.68: # %entry2979; CHECK-NEXT: lwsync2980; CHECK-NEXT: stb 24, uc@toc@l(3)2981; CHECK-NEXT: clrlwi 25, 24, 242982; CHECK-NEXT: sync2983; CHECK-NEXT: .LBB2_69: # %entry2984; CHECK-NEXT: #2985; CHECK-NEXT: lharx 24, 0, 92986; CHECK-NEXT: nand 24, 25, 242987; CHECK-NEXT: sthcx. 24, 0, 92988; CHECK-NEXT: bne- 0, .LBB2_692989; CHECK-NEXT: # %bb.70: # %entry2990; CHECK-NEXT: lwsync2991; CHECK-NEXT: sth 24, ss@toc@l(6)2992; CHECK-NEXT: lbz 25, uc@toc@l(3)2993; CHECK-NEXT: sync2994; CHECK-NEXT: .LBB2_71: # %entry2995; CHECK-NEXT: #2996; CHECK-NEXT: lharx 24, 0, 112997; CHECK-NEXT: nand 24, 25, 242998; CHECK-NEXT: sthcx. 24, 0, 112999; CHECK-NEXT: bne- 0, .LBB2_713000; CHECK-NEXT: # %bb.72: # %entry3001; CHECK-NEXT: lwsync3002; CHECK-NEXT: sth 24, us@toc@l(8)3003; CHECK-NEXT: lbz 25, uc@toc@l(3)3004; CHECK-NEXT: sync3005; CHECK-NEXT: .LBB2_73: # %entry3006; CHECK-NEXT: #3007; CHECK-NEXT: lwarx 24, 0, 03008; CHECK-NEXT: nand 24, 25, 243009; CHECK-NEXT: stwcx. 24, 0, 03010; CHECK-NEXT: bne- 0, .LBB2_733011; CHECK-NEXT: # %bb.74: # %entry3012; CHECK-NEXT: lwsync3013; CHECK-NEXT: stw 24, si@toc@l(10)3014; CHECK-NEXT: lbz 25, uc@toc@l(3)3015; CHECK-NEXT: sync3016; CHECK-NEXT: .LBB2_75: # %entry3017; CHECK-NEXT: #3018; CHECK-NEXT: lwarx 24, 0, 293019; CHECK-NEXT: nand 24, 25, 243020; CHECK-NEXT: stwcx. 24, 0, 293021; CHECK-NEXT: bne- 0, .LBB2_753022; CHECK-NEXT: # %bb.76: # %entry3023; CHECK-NEXT: lwsync3024; CHECK-NEXT: stw 24, ui@toc@l(12)3025; CHECK-NEXT: lbz 25, uc@toc@l(3)3026; CHECK-NEXT: sync3027; CHECK-NEXT: .LBB2_77: # %entry3028; CHECK-NEXT: #3029; CHECK-NEXT: ldarx 24, 0, 273030; CHECK-NEXT: nand 24, 25, 243031; CHECK-NEXT: stdcx. 24, 0, 273032; CHECK-NEXT: bne- 0, .LBB2_773033; CHECK-NEXT: # %bb.78: # %entry3034; CHECK-NEXT: lwsync3035; CHECK-NEXT: std 24, sll@toc@l(30)3036; CHECK-NEXT: lbz 25, uc@toc@l(3)3037; CHECK-NEXT: sync3038; CHECK-NEXT: .LBB2_79: # %entry3039; CHECK-NEXT: #3040; CHECK-NEXT: ldarx 24, 0, 263041; CHECK-NEXT: nand 24, 25, 243042; CHECK-NEXT: stdcx. 24, 0, 263043; CHECK-NEXT: bne- 0, .LBB2_793044; CHECK-NEXT: # %bb.80: # %entry3045; CHECK-NEXT: lwsync3046; CHECK-NEXT: std 24, ull@toc@l(28)3047; CHECK-NEXT: addis 24, 2, u128@toc@ha3048; CHECK-NEXT: li 22, 03049; CHECK-NEXT: lbz 25, uc@toc@l(3)3050; CHECK-NEXT: sync3051; CHECK-NEXT: addi 23, 24, u128@toc@l3052; CHECK-NEXT: .LBB2_81: # %entry3053; CHECK-NEXT: #3054; CHECK-NEXT: lqarx 20, 0, 233055; CHECK-NEXT: nand 19, 25, 213056; CHECK-NEXT: nand 18, 22, 203057; CHECK-NEXT: stqcx. 18, 0, 233058; CHECK-NEXT: bne 0, .LBB2_813059; CHECK-NEXT: # %bb.82: # %entry3060; CHECK-NEXT: lwsync3061; CHECK-NEXT: nand 25, 21, 253062; CHECK-NEXT: li 21, -13063; CHECK-NEXT: std 25, u128@toc@l(24)3064; CHECK-NEXT: addis 24, 2, s128@toc@ha3065; CHECK-NEXT: lbz 25, uc@toc@l(3)3066; CHECK-NEXT: std 21, 8(23)3067; CHECK-NEXT: sync3068; CHECK-NEXT: addi 23, 24, s128@toc@l3069; CHECK-NEXT: .LBB2_83: # %entry3070; CHECK-NEXT: #3071; CHECK-NEXT: lqarx 18, 0, 233072; CHECK-NEXT: nand 17, 25, 193073; CHECK-NEXT: nand 16, 22, 183074; CHECK-NEXT: stqcx. 16, 0, 233075; CHECK-NEXT: bne 0, .LBB2_833076; CHECK-NEXT: # %bb.84: # %entry3077; CHECK-NEXT: lwsync3078; CHECK-NEXT: std 21, 8(23)3079; CHECK-NEXT: nand 25, 19, 253080; CHECK-NEXT: std 25, s128@toc@l(24)3081; CHECK-NEXT: lbz 25, uc@toc@l(3)3082; CHECK-NEXT: sync3083; CHECK-NEXT: .LBB2_85: # %entry3084; CHECK-NEXT: #3085; CHECK-NEXT: lbarx 24, 0, 73086; CHECK-NEXT: and 24, 25, 243087; CHECK-NEXT: stbcx. 24, 0, 73088; CHECK-NEXT: bne- 0, .LBB2_853089; CHECK-NEXT: # %bb.86: # %entry3090; CHECK-NEXT: lwsync3091; CHECK-NEXT: stb 24, sc@toc@l(5)3092; CHECK-NEXT: lbz 7, uc@toc@l(3)3093; CHECK-NEXT: sync3094; CHECK-NEXT: .LBB2_87: # %entry3095; CHECK-NEXT: #3096; CHECK-NEXT: lbarx 5, 0, 43097; CHECK-NEXT: and 5, 7, 53098; CHECK-NEXT: stbcx. 5, 0, 43099; CHECK-NEXT: bne- 0, .LBB2_873100; CHECK-NEXT: # %bb.88: # %entry3101; CHECK-NEXT: lwsync3102; CHECK-NEXT: stb 5, uc@toc@l(3)3103; CHECK-NEXT: sync3104; CHECK-NEXT: .LBB2_89: # %entry3105; CHECK-NEXT: #3106; CHECK-NEXT: lharx 4, 0, 93107; CHECK-NEXT: and 4, 5, 43108; CHECK-NEXT: sthcx. 4, 0, 93109; CHECK-NEXT: bne- 0, .LBB2_893110; CHECK-NEXT: # %bb.90: # %entry3111; CHECK-NEXT: lwsync3112; CHECK-NEXT: sth 4, ss@toc@l(6)3113; CHECK-NEXT: lbz 4, uc@toc@l(3)3114; CHECK-NEXT: sync3115; CHECK-NEXT: .LBB2_91: # %entry3116; CHECK-NEXT: #3117; CHECK-NEXT: lharx 5, 0, 113118; CHECK-NEXT: and 5, 4, 53119; CHECK-NEXT: sthcx. 5, 0, 113120; CHECK-NEXT: bne- 0, .LBB2_913121; CHECK-NEXT: # %bb.92: # %entry3122; CHECK-NEXT: lwsync3123; CHECK-NEXT: sth 5, us@toc@l(8)3124; CHECK-NEXT: lbz 4, uc@toc@l(3)3125; CHECK-NEXT: sync3126; CHECK-NEXT: .LBB2_93: # %entry3127; CHECK-NEXT: #3128; CHECK-NEXT: lwarx 5, 0, 03129; CHECK-NEXT: and 5, 4, 53130; CHECK-NEXT: stwcx. 5, 0, 03131; CHECK-NEXT: bne- 0, .LBB2_933132; CHECK-NEXT: # %bb.94: # %entry3133; CHECK-NEXT: lwsync3134; CHECK-NEXT: stw 5, si@toc@l(10)3135; CHECK-NEXT: lbz 4, uc@toc@l(3)3136; CHECK-NEXT: sync3137; CHECK-NEXT: .LBB2_95: # %entry3138; CHECK-NEXT: #3139; CHECK-NEXT: lwarx 5, 0, 293140; CHECK-NEXT: and 5, 4, 53141; CHECK-NEXT: stwcx. 5, 0, 293142; CHECK-NEXT: bne- 0, .LBB2_953143; CHECK-NEXT: # %bb.96: # %entry3144; CHECK-NEXT: lwsync3145; CHECK-NEXT: stw 5, ui@toc@l(12)3146; CHECK-NEXT: lbz 4, uc@toc@l(3)3147; CHECK-NEXT: sync3148; CHECK-NEXT: .LBB2_97: # %entry3149; CHECK-NEXT: #3150; CHECK-NEXT: ldarx 5, 0, 273151; CHECK-NEXT: and 5, 4, 53152; CHECK-NEXT: stdcx. 5, 0, 273153; CHECK-NEXT: bne- 0, .LBB2_973154; CHECK-NEXT: # %bb.98: # %entry3155; CHECK-NEXT: lwsync3156; CHECK-NEXT: std 5, sll@toc@l(30)3157; CHECK-NEXT: lbz 3, uc@toc@l(3)3158; CHECK-NEXT: sync3159; CHECK-NEXT: .LBB2_99: # %entry3160; CHECK-NEXT: #3161; CHECK-NEXT: ldarx 4, 0, 263162; CHECK-NEXT: and 4, 3, 43163; CHECK-NEXT: stdcx. 4, 0, 263164; CHECK-NEXT: bne- 0, .LBB2_993165; CHECK-NEXT: # %bb.100: # %entry3166; CHECK-NEXT: lwsync3167; CHECK-NEXT: std 4, ull@toc@l(28)3168; CHECK-NEXT: ld 30, -16(1) # 8-byte Folded Reload3169; CHECK-NEXT: ld 29, -24(1) # 8-byte Folded Reload3170; CHECK-NEXT: ld 28, -32(1) # 8-byte Folded Reload3171; CHECK-NEXT: ld 27, -40(1) # 8-byte Folded Reload3172; CHECK-NEXT: ld 26, -48(1) # 8-byte Folded Reload3173; CHECK-NEXT: ld 25, -56(1) # 8-byte Folded Reload3174; CHECK-NEXT: ld 24, -64(1) # 8-byte Folded Reload3175; CHECK-NEXT: ld 23, -72(1) # 8-byte Folded Reload3176; CHECK-NEXT: ld 22, -80(1) # 8-byte Folded Reload3177; CHECK-NEXT: ld 21, -88(1) # 8-byte Folded Reload3178; CHECK-NEXT: ld 20, -96(1) # 8-byte Folded Reload3179; CHECK-NEXT: ld 19, -104(1) # 8-byte Folded Reload3180; CHECK-NEXT: ld 18, -112(1) # 8-byte Folded Reload3181; CHECK-NEXT: ld 17, -120(1) # 8-byte Folded Reload3182; CHECK-NEXT: ld 16, -128(1) # 8-byte Folded Reload3183; CHECK-NEXT: blr3184;3185; AIX32-LABEL: test_op_and_fetch:3186; AIX32: # %bb.0: # %entry3187; AIX32-NEXT: mflr 03188; AIX32-NEXT: stwu 1, -176(1)3189; AIX32-NEXT: stw 0, 184(1)3190; AIX32-NEXT: stw 27, 156(1) # 4-byte Folded Spill3191; AIX32-NEXT: lwz 27, L..C0(2) # @sc3192; AIX32-NEXT: stw 26, 152(1) # 4-byte Folded Spill3193; AIX32-NEXT: lwz 26, L..C1(2) # @uc3194; AIX32-NEXT: lbz 3, 0(26)3195; AIX32-NEXT: rlwinm 4, 27, 3, 27, 283196; AIX32-NEXT: stw 24, 144(1) # 4-byte Folded Spill3197; AIX32-NEXT: li 5, 2553198; AIX32-NEXT: stw 13, 100(1) # 4-byte Folded Spill3199; AIX32-NEXT: stw 14, 104(1) # 4-byte Folded Spill3200; AIX32-NEXT: stw 15, 108(1) # 4-byte Folded Spill3201; AIX32-NEXT: xori 24, 4, 243202; AIX32-NEXT: stw 16, 112(1) # 4-byte Folded Spill3203; AIX32-NEXT: stw 17, 116(1) # 4-byte Folded Spill3204; AIX32-NEXT: stw 18, 120(1) # 4-byte Folded Spill3205; AIX32-NEXT: stw 19, 124(1) # 4-byte Folded Spill3206; AIX32-NEXT: stw 20, 128(1) # 4-byte Folded Spill3207; AIX32-NEXT: stw 21, 132(1) # 4-byte Folded Spill3208; AIX32-NEXT: stw 22, 136(1) # 4-byte Folded Spill3209; AIX32-NEXT: stw 23, 140(1) # 4-byte Folded Spill3210; AIX32-NEXT: stw 25, 148(1) # 4-byte Folded Spill3211; AIX32-NEXT: stw 28, 160(1) # 4-byte Folded Spill3212; AIX32-NEXT: stw 29, 164(1) # 4-byte Folded Spill3213; AIX32-NEXT: stw 30, 168(1) # 4-byte Folded Spill3214; AIX32-NEXT: stw 31, 172(1) # 4-byte Folded Spill3215; AIX32-NEXT: li 17, -13216; AIX32-NEXT: sync3217; AIX32-NEXT: rlwinm 22, 27, 0, 0, 293218; AIX32-NEXT: slw 4, 3, 243219; AIX32-NEXT: slw 5, 5, 243220; AIX32-NEXT: L..BB2_1: # %entry3221; AIX32-NEXT: #3222; AIX32-NEXT: lwarx 6, 0, 223223; AIX32-NEXT: add 7, 4, 63224; AIX32-NEXT: andc 8, 6, 53225; AIX32-NEXT: and 7, 7, 53226; AIX32-NEXT: or 7, 7, 83227; AIX32-NEXT: stwcx. 7, 0, 223228; AIX32-NEXT: bne- 0, L..BB2_13229; AIX32-NEXT: # %bb.2: # %entry3230; AIX32-NEXT: srw 4, 6, 243231; AIX32-NEXT: lwsync3232; AIX32-NEXT: li 5, 2553233; AIX32-NEXT: rlwinm 19, 26, 0, 0, 293234; AIX32-NEXT: clrlwi 4, 4, 243235; AIX32-NEXT: add 3, 4, 33236; AIX32-NEXT: rlwinm 4, 26, 3, 27, 283237; AIX32-NEXT: stb 3, 0(27)3238; AIX32-NEXT: lbz 3, 0(26)3239; AIX32-NEXT: xori 21, 4, 243240; AIX32-NEXT: sync3241; AIX32-NEXT: slw 5, 5, 213242; AIX32-NEXT: slw 4, 3, 213243; AIX32-NEXT: L..BB2_3: # %entry3244; AIX32-NEXT: #3245; AIX32-NEXT: lwarx 6, 0, 193246; AIX32-NEXT: add 7, 4, 63247; AIX32-NEXT: andc 8, 6, 53248; AIX32-NEXT: and 7, 7, 53249; AIX32-NEXT: or 7, 7, 83250; AIX32-NEXT: stwcx. 7, 0, 193251; AIX32-NEXT: bne- 0, L..BB2_33252; AIX32-NEXT: # %bb.4: # %entry3253; AIX32-NEXT: srw 4, 6, 213254; AIX32-NEXT: lwz 23, L..C2(2) # @ss3255; AIX32-NEXT: li 5, 03256; AIX32-NEXT: lwsync3257; AIX32-NEXT: clrlwi 4, 4, 243258; AIX32-NEXT: ori 5, 5, 655353259; AIX32-NEXT: rlwinm 16, 23, 0, 0, 293260; AIX32-NEXT: add 3, 4, 33261; AIX32-NEXT: rlwinm 4, 23, 3, 27, 273262; AIX32-NEXT: xori 18, 4, 163263; AIX32-NEXT: stb 3, 0(26)3264; AIX32-NEXT: clrlwi 3, 3, 243265; AIX32-NEXT: sync3266; AIX32-NEXT: slw 4, 3, 183267; AIX32-NEXT: slw 5, 5, 183268; AIX32-NEXT: L..BB2_5: # %entry3269; AIX32-NEXT: #3270; AIX32-NEXT: lwarx 6, 0, 163271; AIX32-NEXT: add 7, 4, 63272; AIX32-NEXT: andc 8, 6, 53273; AIX32-NEXT: and 7, 7, 53274; AIX32-NEXT: or 7, 7, 83275; AIX32-NEXT: stwcx. 7, 0, 163276; AIX32-NEXT: bne- 0, L..BB2_53277; AIX32-NEXT: # %bb.6: # %entry3278; AIX32-NEXT: srw 4, 6, 183279; AIX32-NEXT: lwz 20, L..C3(2) # @us3280; AIX32-NEXT: lwsync3281; AIX32-NEXT: li 5, 03282; AIX32-NEXT: clrlwi 4, 4, 163283; AIX32-NEXT: ori 5, 5, 655353284; AIX32-NEXT: rlwinm 14, 20, 0, 0, 293285; AIX32-NEXT: add 3, 4, 33286; AIX32-NEXT: rlwinm 4, 20, 3, 27, 273287; AIX32-NEXT: xori 15, 4, 163288; AIX32-NEXT: sth 3, 0(23)3289; AIX32-NEXT: lbz 3, 0(26)3290; AIX32-NEXT: sync3291; AIX32-NEXT: slw 5, 5, 153292; AIX32-NEXT: slw 4, 3, 153293; AIX32-NEXT: L..BB2_7: # %entry3294; AIX32-NEXT: #3295; AIX32-NEXT: lwarx 6, 0, 143296; AIX32-NEXT: add 7, 4, 63297; AIX32-NEXT: andc 8, 6, 53298; AIX32-NEXT: and 7, 7, 53299; AIX32-NEXT: or 7, 7, 83300; AIX32-NEXT: stwcx. 7, 0, 143301; AIX32-NEXT: bne- 0, L..BB2_73302; AIX32-NEXT: # %bb.8: # %entry3303; AIX32-NEXT: srw 4, 6, 153304; AIX32-NEXT: lwsync3305; AIX32-NEXT: lwz 13, L..C4(2) # @si3306; AIX32-NEXT: clrlwi 4, 4, 163307; AIX32-NEXT: add 3, 4, 33308; AIX32-NEXT: sth 3, 0(20)3309; AIX32-NEXT: lbz 3, 0(26)3310; AIX32-NEXT: sync3311; AIX32-NEXT: L..BB2_9: # %entry3312; AIX32-NEXT: #3313; AIX32-NEXT: lwarx 4, 0, 133314; AIX32-NEXT: add 4, 3, 43315; AIX32-NEXT: stwcx. 4, 0, 133316; AIX32-NEXT: bne- 0, L..BB2_93317; AIX32-NEXT: # %bb.10: # %entry3318; AIX32-NEXT: lwsync3319; AIX32-NEXT: stw 4, 0(13)3320; AIX32-NEXT: lwz 25, L..C5(2) # @ui3321; AIX32-NEXT: lbz 3, 0(26)3322; AIX32-NEXT: sync3323; AIX32-NEXT: L..BB2_11: # %entry3324; AIX32-NEXT: #3325; AIX32-NEXT: lwarx 4, 0, 253326; AIX32-NEXT: add 4, 3, 43327; AIX32-NEXT: stwcx. 4, 0, 253328; AIX32-NEXT: bne- 0, L..BB2_113329; AIX32-NEXT: # %bb.12: # %entry3330; AIX32-NEXT: lwsync3331; AIX32-NEXT: lwz 31, L..C6(2) # @sll3332; AIX32-NEXT: stw 4, 0(25)3333; AIX32-NEXT: lbz 30, 0(26)3334; AIX32-NEXT: li 4, 03335; AIX32-NEXT: li 6, 53336; AIX32-NEXT: li 28, 03337; AIX32-NEXT: mr 3, 313338; AIX32-NEXT: mr 5, 303339; AIX32-NEXT: bl .__atomic_fetch_add_8[PR]3340; AIX32-NEXT: nop3341; AIX32-NEXT: addc 4, 4, 303342; AIX32-NEXT: lbz 29, 0(26)3343; AIX32-NEXT: lwz 30, L..C7(2) # @ull3344; AIX32-NEXT: li 6, 53345; AIX32-NEXT: addze 3, 33346; AIX32-NEXT: stw 4, 4(31)3347; AIX32-NEXT: li 4, 03348; AIX32-NEXT: stw 3, 0(31)3349; AIX32-NEXT: mr 3, 303350; AIX32-NEXT: mr 5, 293351; AIX32-NEXT: bl .__atomic_fetch_add_8[PR]3352; AIX32-NEXT: nop3353; AIX32-NEXT: addc 4, 4, 293354; AIX32-NEXT: li 5, 2553355; AIX32-NEXT: addze 3, 33356; AIX32-NEXT: stw 3, 0(30)3357; AIX32-NEXT: lbz 3, 0(26)3358; AIX32-NEXT: slw 5, 5, 243359; AIX32-NEXT: stw 4, 4(30)3360; AIX32-NEXT: sync3361; AIX32-NEXT: slw 4, 3, 243362; AIX32-NEXT: L..BB2_13: # %entry3363; AIX32-NEXT: #3364; AIX32-NEXT: lwarx 6, 0, 223365; AIX32-NEXT: sub 7, 6, 43366; AIX32-NEXT: andc 8, 6, 53367; AIX32-NEXT: and 7, 7, 53368; AIX32-NEXT: or 7, 7, 83369; AIX32-NEXT: stwcx. 7, 0, 223370; AIX32-NEXT: bne- 0, L..BB2_133371; AIX32-NEXT: # %bb.14: # %entry3372; AIX32-NEXT: srw 4, 6, 243373; AIX32-NEXT: lwsync3374; AIX32-NEXT: li 5, 2553375; AIX32-NEXT: clrlwi 4, 4, 243376; AIX32-NEXT: slw 5, 5, 213377; AIX32-NEXT: sub 3, 4, 33378; AIX32-NEXT: stb 3, 0(27)3379; AIX32-NEXT: lbz 3, 0(26)3380; AIX32-NEXT: sync3381; AIX32-NEXT: slw 4, 3, 213382; AIX32-NEXT: L..BB2_15: # %entry3383; AIX32-NEXT: #3384; AIX32-NEXT: lwarx 6, 0, 193385; AIX32-NEXT: sub 7, 6, 43386; AIX32-NEXT: andc 8, 6, 53387; AIX32-NEXT: and 7, 7, 53388; AIX32-NEXT: or 7, 7, 83389; AIX32-NEXT: stwcx. 7, 0, 193390; AIX32-NEXT: bne- 0, L..BB2_153391; AIX32-NEXT: # %bb.16: # %entry3392; AIX32-NEXT: srw 4, 6, 213393; AIX32-NEXT: li 5, 03394; AIX32-NEXT: lwsync3395; AIX32-NEXT: clrlwi 4, 4, 243396; AIX32-NEXT: ori 5, 5, 655353397; AIX32-NEXT: sub 3, 4, 33398; AIX32-NEXT: slw 5, 5, 183399; AIX32-NEXT: stb 3, 0(26)3400; AIX32-NEXT: sync3401; AIX32-NEXT: clrlwi 3, 3, 243402; AIX32-NEXT: slw 4, 3, 183403; AIX32-NEXT: L..BB2_17: # %entry3404; AIX32-NEXT: #3405; AIX32-NEXT: lwarx 6, 0, 163406; AIX32-NEXT: sub 7, 6, 43407; AIX32-NEXT: andc 8, 6, 53408; AIX32-NEXT: and 7, 7, 53409; AIX32-NEXT: or 7, 7, 83410; AIX32-NEXT: stwcx. 7, 0, 163411; AIX32-NEXT: bne- 0, L..BB2_173412; AIX32-NEXT: # %bb.18: # %entry3413; AIX32-NEXT: srw 4, 6, 183414; AIX32-NEXT: lwsync3415; AIX32-NEXT: li 5, 03416; AIX32-NEXT: clrlwi 4, 4, 163417; AIX32-NEXT: ori 5, 5, 655353418; AIX32-NEXT: sub 3, 4, 33419; AIX32-NEXT: slw 5, 5, 153420; AIX32-NEXT: sth 3, 0(23)3421; AIX32-NEXT: lbz 3, 0(26)3422; AIX32-NEXT: sync3423; AIX32-NEXT: slw 4, 3, 153424; AIX32-NEXT: L..BB2_19: # %entry3425; AIX32-NEXT: #3426; AIX32-NEXT: lwarx 6, 0, 143427; AIX32-NEXT: sub 7, 6, 43428; AIX32-NEXT: andc 8, 6, 53429; AIX32-NEXT: and 7, 7, 53430; AIX32-NEXT: or 7, 7, 83431; AIX32-NEXT: stwcx. 7, 0, 143432; AIX32-NEXT: bne- 0, L..BB2_193433; AIX32-NEXT: # %bb.20: # %entry3434; AIX32-NEXT: srw 4, 6, 153435; AIX32-NEXT: lwsync3436; AIX32-NEXT: clrlwi 4, 4, 163437; AIX32-NEXT: sub 3, 4, 33438; AIX32-NEXT: sth 3, 0(20)3439; AIX32-NEXT: lbz 3, 0(26)3440; AIX32-NEXT: sync3441; AIX32-NEXT: L..BB2_21: # %entry3442; AIX32-NEXT: #3443; AIX32-NEXT: lwarx 4, 0, 133444; AIX32-NEXT: sub 4, 4, 33445; AIX32-NEXT: stwcx. 4, 0, 133446; AIX32-NEXT: bne- 0, L..BB2_213447; AIX32-NEXT: # %bb.22: # %entry3448; AIX32-NEXT: lwsync3449; AIX32-NEXT: stw 4, 0(13)3450; AIX32-NEXT: lbz 3, 0(26)3451; AIX32-NEXT: sync3452; AIX32-NEXT: L..BB2_23: # %entry3453; AIX32-NEXT: #3454; AIX32-NEXT: lwarx 4, 0, 253455; AIX32-NEXT: sub 4, 4, 33456; AIX32-NEXT: stwcx. 4, 0, 253457; AIX32-NEXT: bne- 0, L..BB2_233458; AIX32-NEXT: # %bb.24: # %entry3459; AIX32-NEXT: lwsync3460; AIX32-NEXT: stw 4, 0(25)3461; AIX32-NEXT: li 4, 03462; AIX32-NEXT: lbz 29, 0(26)3463; AIX32-NEXT: li 6, 53464; AIX32-NEXT: mr 3, 313465; AIX32-NEXT: mr 5, 293466; AIX32-NEXT: bl .__atomic_fetch_sub_8[PR]3467; AIX32-NEXT: nop3468; AIX32-NEXT: subc 4, 4, 293469; AIX32-NEXT: lbz 29, 0(26)3470; AIX32-NEXT: li 6, 53471; AIX32-NEXT: mr 5, 293472; AIX32-NEXT: subfe 3, 28, 33473; AIX32-NEXT: stw 4, 4(31)3474; AIX32-NEXT: li 4, 03475; AIX32-NEXT: stw 3, 0(31)3476; AIX32-NEXT: mr 3, 303477; AIX32-NEXT: bl .__atomic_fetch_sub_8[PR]3478; AIX32-NEXT: nop3479; AIX32-NEXT: subc 4, 4, 293480; AIX32-NEXT: li 5, 2553481; AIX32-NEXT: subfe 3, 28, 33482; AIX32-NEXT: stw 4, 4(30)3483; AIX32-NEXT: slw 5, 5, 243484; AIX32-NEXT: stw 3, 0(30)3485; AIX32-NEXT: lbz 3, 0(26)3486; AIX32-NEXT: sync3487; AIX32-NEXT: slw 4, 3, 243488; AIX32-NEXT: L..BB2_25: # %entry3489; AIX32-NEXT: #3490; AIX32-NEXT: lwarx 6, 0, 223491; AIX32-NEXT: or 7, 4, 63492; AIX32-NEXT: andc 8, 6, 53493; AIX32-NEXT: and 7, 7, 53494; AIX32-NEXT: or 7, 7, 83495; AIX32-NEXT: stwcx. 7, 0, 223496; AIX32-NEXT: bne- 0, L..BB2_253497; AIX32-NEXT: # %bb.26: # %entry3498; AIX32-NEXT: srw 4, 6, 243499; AIX32-NEXT: lwsync3500; AIX32-NEXT: li 5, 2553501; AIX32-NEXT: clrlwi 4, 4, 243502; AIX32-NEXT: slw 5, 5, 213503; AIX32-NEXT: or 3, 4, 33504; AIX32-NEXT: stb 3, 0(27)3505; AIX32-NEXT: lbz 3, 0(26)3506; AIX32-NEXT: sync3507; AIX32-NEXT: slw 4, 3, 213508; AIX32-NEXT: L..BB2_27: # %entry3509; AIX32-NEXT: #3510; AIX32-NEXT: lwarx 6, 0, 193511; AIX32-NEXT: or 7, 4, 63512; AIX32-NEXT: andc 8, 6, 53513; AIX32-NEXT: and 7, 7, 53514; AIX32-NEXT: or 7, 7, 83515; AIX32-NEXT: stwcx. 7, 0, 193516; AIX32-NEXT: bne- 0, L..BB2_273517; AIX32-NEXT: # %bb.28: # %entry3518; AIX32-NEXT: srw 4, 6, 213519; AIX32-NEXT: li 5, 03520; AIX32-NEXT: lwsync3521; AIX32-NEXT: clrlwi 4, 4, 243522; AIX32-NEXT: ori 5, 5, 655353523; AIX32-NEXT: or 3, 4, 33524; AIX32-NEXT: slw 5, 5, 183525; AIX32-NEXT: stb 3, 0(26)3526; AIX32-NEXT: sync3527; AIX32-NEXT: clrlwi 3, 3, 243528; AIX32-NEXT: slw 4, 3, 183529; AIX32-NEXT: L..BB2_29: # %entry3530; AIX32-NEXT: #3531; AIX32-NEXT: lwarx 6, 0, 163532; AIX32-NEXT: or 7, 4, 63533; AIX32-NEXT: andc 8, 6, 53534; AIX32-NEXT: and 7, 7, 53535; AIX32-NEXT: or 7, 7, 83536; AIX32-NEXT: stwcx. 7, 0, 163537; AIX32-NEXT: bne- 0, L..BB2_293538; AIX32-NEXT: # %bb.30: # %entry3539; AIX32-NEXT: srw 4, 6, 183540; AIX32-NEXT: lwsync3541; AIX32-NEXT: li 5, 03542; AIX32-NEXT: clrlwi 4, 4, 163543; AIX32-NEXT: ori 5, 5, 655353544; AIX32-NEXT: or 3, 4, 33545; AIX32-NEXT: slw 5, 5, 153546; AIX32-NEXT: sth 3, 0(23)3547; AIX32-NEXT: lbz 3, 0(26)3548; AIX32-NEXT: sync3549; AIX32-NEXT: slw 4, 3, 153550; AIX32-NEXT: L..BB2_31: # %entry3551; AIX32-NEXT: #3552; AIX32-NEXT: lwarx 6, 0, 143553; AIX32-NEXT: or 7, 4, 63554; AIX32-NEXT: andc 8, 6, 53555; AIX32-NEXT: and 7, 7, 53556; AIX32-NEXT: or 7, 7, 83557; AIX32-NEXT: stwcx. 7, 0, 143558; AIX32-NEXT: bne- 0, L..BB2_313559; AIX32-NEXT: # %bb.32: # %entry3560; AIX32-NEXT: srw 4, 6, 153561; AIX32-NEXT: lwsync3562; AIX32-NEXT: clrlwi 4, 4, 163563; AIX32-NEXT: or 3, 4, 33564; AIX32-NEXT: sth 3, 0(20)3565; AIX32-NEXT: lbz 3, 0(26)3566; AIX32-NEXT: sync3567; AIX32-NEXT: L..BB2_33: # %entry3568; AIX32-NEXT: #3569; AIX32-NEXT: lwarx 4, 0, 133570; AIX32-NEXT: or 4, 3, 43571; AIX32-NEXT: stwcx. 4, 0, 133572; AIX32-NEXT: bne- 0, L..BB2_333573; AIX32-NEXT: # %bb.34: # %entry3574; AIX32-NEXT: lwsync3575; AIX32-NEXT: stw 4, 0(13)3576; AIX32-NEXT: lbz 3, 0(26)3577; AIX32-NEXT: sync3578; AIX32-NEXT: L..BB2_35: # %entry3579; AIX32-NEXT: #3580; AIX32-NEXT: lwarx 4, 0, 253581; AIX32-NEXT: or 4, 3, 43582; AIX32-NEXT: stwcx. 4, 0, 253583; AIX32-NEXT: bne- 0, L..BB2_353584; AIX32-NEXT: # %bb.36: # %entry3585; AIX32-NEXT: lwsync3586; AIX32-NEXT: stw 4, 0(25)3587; AIX32-NEXT: li 4, 03588; AIX32-NEXT: lbz 29, 0(26)3589; AIX32-NEXT: li 6, 53590; AIX32-NEXT: mr 3, 313591; AIX32-NEXT: mr 5, 293592; AIX32-NEXT: bl .__atomic_fetch_or_8[PR]3593; AIX32-NEXT: nop3594; AIX32-NEXT: or 4, 4, 293595; AIX32-NEXT: lbz 29, 0(26)3596; AIX32-NEXT: li 6, 53597; AIX32-NEXT: mr 5, 293598; AIX32-NEXT: stw 4, 4(31)3599; AIX32-NEXT: li 4, 03600; AIX32-NEXT: stw 3, 0(31)3601; AIX32-NEXT: mr 3, 303602; AIX32-NEXT: bl .__atomic_fetch_or_8[PR]3603; AIX32-NEXT: nop3604; AIX32-NEXT: stw 3, 0(30)3605; AIX32-NEXT: or 3, 4, 293606; AIX32-NEXT: li 5, 2553607; AIX32-NEXT: stw 3, 4(30)3608; AIX32-NEXT: lbz 3, 0(26)3609; AIX32-NEXT: sync3610; AIX32-NEXT: slw 5, 5, 243611; AIX32-NEXT: slw 4, 3, 243612; AIX32-NEXT: L..BB2_37: # %entry3613; AIX32-NEXT: #3614; AIX32-NEXT: lwarx 6, 0, 223615; AIX32-NEXT: xor 7, 4, 63616; AIX32-NEXT: andc 8, 6, 53617; AIX32-NEXT: and 7, 7, 53618; AIX32-NEXT: or 7, 7, 83619; AIX32-NEXT: stwcx. 7, 0, 223620; AIX32-NEXT: bne- 0, L..BB2_373621; AIX32-NEXT: # %bb.38: # %entry3622; AIX32-NEXT: srw 4, 6, 243623; AIX32-NEXT: lwsync3624; AIX32-NEXT: li 5, 2553625; AIX32-NEXT: clrlwi 4, 4, 243626; AIX32-NEXT: slw 5, 5, 213627; AIX32-NEXT: xor 3, 4, 33628; AIX32-NEXT: stb 3, 0(27)3629; AIX32-NEXT: lbz 3, 0(26)3630; AIX32-NEXT: sync3631; AIX32-NEXT: slw 4, 3, 213632; AIX32-NEXT: L..BB2_39: # %entry3633; AIX32-NEXT: #3634; AIX32-NEXT: lwarx 6, 0, 193635; AIX32-NEXT: xor 7, 4, 63636; AIX32-NEXT: andc 8, 6, 53637; AIX32-NEXT: and 7, 7, 53638; AIX32-NEXT: or 7, 7, 83639; AIX32-NEXT: stwcx. 7, 0, 193640; AIX32-NEXT: bne- 0, L..BB2_393641; AIX32-NEXT: # %bb.40: # %entry3642; AIX32-NEXT: srw 4, 6, 213643; AIX32-NEXT: li 5, 03644; AIX32-NEXT: lwsync3645; AIX32-NEXT: clrlwi 4, 4, 243646; AIX32-NEXT: ori 5, 5, 655353647; AIX32-NEXT: xor 3, 4, 33648; AIX32-NEXT: slw 5, 5, 183649; AIX32-NEXT: stb 3, 0(26)3650; AIX32-NEXT: sync3651; AIX32-NEXT: clrlwi 3, 3, 243652; AIX32-NEXT: slw 4, 3, 183653; AIX32-NEXT: L..BB2_41: # %entry3654; AIX32-NEXT: #3655; AIX32-NEXT: lwarx 6, 0, 163656; AIX32-NEXT: xor 7, 4, 63657; AIX32-NEXT: andc 8, 6, 53658; AIX32-NEXT: and 7, 7, 53659; AIX32-NEXT: or 7, 7, 83660; AIX32-NEXT: stwcx. 7, 0, 163661; AIX32-NEXT: bne- 0, L..BB2_413662; AIX32-NEXT: # %bb.42: # %entry3663; AIX32-NEXT: srw 4, 6, 183664; AIX32-NEXT: lwsync3665; AIX32-NEXT: li 5, 03666; AIX32-NEXT: clrlwi 4, 4, 163667; AIX32-NEXT: ori 5, 5, 655353668; AIX32-NEXT: xor 3, 4, 33669; AIX32-NEXT: slw 5, 5, 153670; AIX32-NEXT: sth 3, 0(23)3671; AIX32-NEXT: lbz 3, 0(26)3672; AIX32-NEXT: sync3673; AIX32-NEXT: slw 4, 3, 153674; AIX32-NEXT: L..BB2_43: # %entry3675; AIX32-NEXT: #3676; AIX32-NEXT: lwarx 6, 0, 143677; AIX32-NEXT: xor 7, 4, 63678; AIX32-NEXT: andc 8, 6, 53679; AIX32-NEXT: and 7, 7, 53680; AIX32-NEXT: or 7, 7, 83681; AIX32-NEXT: stwcx. 7, 0, 143682; AIX32-NEXT: bne- 0, L..BB2_433683; AIX32-NEXT: # %bb.44: # %entry3684; AIX32-NEXT: srw 4, 6, 153685; AIX32-NEXT: lwsync3686; AIX32-NEXT: clrlwi 4, 4, 163687; AIX32-NEXT: xor 3, 4, 33688; AIX32-NEXT: sth 3, 0(20)3689; AIX32-NEXT: lbz 3, 0(26)3690; AIX32-NEXT: sync3691; AIX32-NEXT: L..BB2_45: # %entry3692; AIX32-NEXT: #3693; AIX32-NEXT: lwarx 4, 0, 133694; AIX32-NEXT: xor 4, 3, 43695; AIX32-NEXT: stwcx. 4, 0, 133696; AIX32-NEXT: bne- 0, L..BB2_453697; AIX32-NEXT: # %bb.46: # %entry3698; AIX32-NEXT: lwsync3699; AIX32-NEXT: stw 4, 0(13)3700; AIX32-NEXT: lbz 3, 0(26)3701; AIX32-NEXT: sync3702; AIX32-NEXT: L..BB2_47: # %entry3703; AIX32-NEXT: #3704; AIX32-NEXT: lwarx 4, 0, 253705; AIX32-NEXT: xor 4, 3, 43706; AIX32-NEXT: stwcx. 4, 0, 253707; AIX32-NEXT: bne- 0, L..BB2_473708; AIX32-NEXT: # %bb.48: # %entry3709; AIX32-NEXT: lwsync3710; AIX32-NEXT: stw 4, 0(25)3711; AIX32-NEXT: li 4, 03712; AIX32-NEXT: lbz 29, 0(26)3713; AIX32-NEXT: li 6, 53714; AIX32-NEXT: mr 3, 313715; AIX32-NEXT: mr 5, 293716; AIX32-NEXT: bl .__atomic_fetch_xor_8[PR]3717; AIX32-NEXT: nop3718; AIX32-NEXT: xor 4, 4, 293719; AIX32-NEXT: lbz 29, 0(26)3720; AIX32-NEXT: li 6, 53721; AIX32-NEXT: mr 5, 293722; AIX32-NEXT: stw 4, 4(31)3723; AIX32-NEXT: li 4, 03724; AIX32-NEXT: stw 3, 0(31)3725; AIX32-NEXT: mr 3, 303726; AIX32-NEXT: bl .__atomic_fetch_xor_8[PR]3727; AIX32-NEXT: nop3728; AIX32-NEXT: xor 4, 4, 293729; AIX32-NEXT: stw 3, 0(30)3730; AIX32-NEXT: lbz 3, 0(26)3731; AIX32-NEXT: li 5, 2553732; AIX32-NEXT: stw 4, 4(30)3733; AIX32-NEXT: sync3734; AIX32-NEXT: slw 4, 3, 243735; AIX32-NEXT: slw 5, 5, 243736; AIX32-NEXT: L..BB2_49: # %entry3737; AIX32-NEXT: #3738; AIX32-NEXT: lwarx 6, 0, 223739; AIX32-NEXT: nand 7, 4, 63740; AIX32-NEXT: andc 8, 6, 53741; AIX32-NEXT: and 7, 7, 53742; AIX32-NEXT: or 7, 7, 83743; AIX32-NEXT: stwcx. 7, 0, 223744; AIX32-NEXT: bne- 0, L..BB2_493745; AIX32-NEXT: # %bb.50: # %entry3746; AIX32-NEXT: srw 4, 6, 243747; AIX32-NEXT: lwsync3748; AIX32-NEXT: li 5, 2553749; AIX32-NEXT: clrlwi 4, 4, 243750; AIX32-NEXT: slw 5, 5, 213751; AIX32-NEXT: nand 3, 4, 33752; AIX32-NEXT: stb 3, 0(27)3753; AIX32-NEXT: lbz 3, 0(26)3754; AIX32-NEXT: sync3755; AIX32-NEXT: slw 4, 3, 213756; AIX32-NEXT: L..BB2_51: # %entry3757; AIX32-NEXT: #3758; AIX32-NEXT: lwarx 6, 0, 193759; AIX32-NEXT: nand 7, 4, 63760; AIX32-NEXT: andc 8, 6, 53761; AIX32-NEXT: and 7, 7, 53762; AIX32-NEXT: or 7, 7, 83763; AIX32-NEXT: stwcx. 7, 0, 193764; AIX32-NEXT: bne- 0, L..BB2_513765; AIX32-NEXT: # %bb.52: # %entry3766; AIX32-NEXT: srw 4, 6, 213767; AIX32-NEXT: li 5, 03768; AIX32-NEXT: lwsync3769; AIX32-NEXT: clrlwi 4, 4, 243770; AIX32-NEXT: ori 5, 5, 655353771; AIX32-NEXT: nand 3, 4, 33772; AIX32-NEXT: slw 5, 5, 183773; AIX32-NEXT: stb 3, 0(26)3774; AIX32-NEXT: sync3775; AIX32-NEXT: clrlwi 3, 3, 243776; AIX32-NEXT: slw 4, 3, 183777; AIX32-NEXT: L..BB2_53: # %entry3778; AIX32-NEXT: #3779; AIX32-NEXT: lwarx 6, 0, 163780; AIX32-NEXT: nand 7, 4, 63781; AIX32-NEXT: andc 8, 6, 53782; AIX32-NEXT: and 7, 7, 53783; AIX32-NEXT: or 7, 7, 83784; AIX32-NEXT: stwcx. 7, 0, 163785; AIX32-NEXT: bne- 0, L..BB2_533786; AIX32-NEXT: # %bb.54: # %entry3787; AIX32-NEXT: srw 4, 6, 183788; AIX32-NEXT: lwsync3789; AIX32-NEXT: li 5, 03790; AIX32-NEXT: clrlwi 4, 4, 163791; AIX32-NEXT: ori 5, 5, 655353792; AIX32-NEXT: nand 3, 4, 33793; AIX32-NEXT: slw 5, 5, 153794; AIX32-NEXT: sth 3, 0(23)3795; AIX32-NEXT: lbz 3, 0(26)3796; AIX32-NEXT: sync3797; AIX32-NEXT: slw 4, 3, 153798; AIX32-NEXT: L..BB2_55: # %entry3799; AIX32-NEXT: #3800; AIX32-NEXT: lwarx 6, 0, 143801; AIX32-NEXT: nand 7, 4, 63802; AIX32-NEXT: andc 8, 6, 53803; AIX32-NEXT: and 7, 7, 53804; AIX32-NEXT: or 7, 7, 83805; AIX32-NEXT: stwcx. 7, 0, 143806; AIX32-NEXT: bne- 0, L..BB2_553807; AIX32-NEXT: # %bb.56: # %entry3808; AIX32-NEXT: srw 4, 6, 153809; AIX32-NEXT: lwsync3810; AIX32-NEXT: clrlwi 4, 4, 163811; AIX32-NEXT: nand 3, 4, 33812; AIX32-NEXT: sth 3, 0(20)3813; AIX32-NEXT: lbz 3, 0(26)3814; AIX32-NEXT: sync3815; AIX32-NEXT: L..BB2_57: # %entry3816; AIX32-NEXT: #3817; AIX32-NEXT: lwarx 4, 0, 133818; AIX32-NEXT: nand 4, 3, 43819; AIX32-NEXT: stwcx. 4, 0, 133820; AIX32-NEXT: bne- 0, L..BB2_573821; AIX32-NEXT: # %bb.58: # %entry3822; AIX32-NEXT: stw 23, 56(1) # 4-byte Folded Spill3823; AIX32-NEXT: stw 27, 60(1) # 4-byte Folded Spill3824; AIX32-NEXT: lwsync3825; AIX32-NEXT: stw 4, 0(13)3826; AIX32-NEXT: lbz 3, 0(26)3827; AIX32-NEXT: sync3828; AIX32-NEXT: L..BB2_59: # %entry3829; AIX32-NEXT: #3830; AIX32-NEXT: lwarx 4, 0, 253831; AIX32-NEXT: nand 4, 3, 43832; AIX32-NEXT: stwcx. 4, 0, 253833; AIX32-NEXT: bne- 0, L..BB2_593834; AIX32-NEXT: # %bb.60: # %entry3835; AIX32-NEXT: lwsync3836; AIX32-NEXT: stw 4, 0(25)3837; AIX32-NEXT: li 4, 03838; AIX32-NEXT: lbz 29, 0(26)3839; AIX32-NEXT: li 6, 53840; AIX32-NEXT: mr 3, 313841; AIX32-NEXT: mr 5, 293842; AIX32-NEXT: bl .__atomic_fetch_nand_8[PR]3843; AIX32-NEXT: nop3844; AIX32-NEXT: nand 3, 4, 293845; AIX32-NEXT: lbz 29, 0(26)3846; AIX32-NEXT: li 4, 03847; AIX32-NEXT: mr 5, 293848; AIX32-NEXT: li 6, 53849; AIX32-NEXT: stw 3, 4(31)3850; AIX32-NEXT: mr 3, 303851; AIX32-NEXT: stw 17, 0(31)3852; AIX32-NEXT: bl .__atomic_fetch_nand_8[PR]3853; AIX32-NEXT: nop3854; AIX32-NEXT: nand 3, 4, 293855; AIX32-NEXT: lwz 29, L..C8(2) # @u1283856; AIX32-NEXT: lbz 23, 0(26)3857; AIX32-NEXT: addi 28, 1, 803858; AIX32-NEXT: addi 27, 1, 643859; AIX32-NEXT: stw 17, 0(30)3860; AIX32-NEXT: lwz 4, 12(29)3861; AIX32-NEXT: lwz 5, 8(29)3862; AIX32-NEXT: lwz 6, 4(29)3863; AIX32-NEXT: lwz 7, 0(29)3864; AIX32-NEXT: stw 3, 4(30)3865; AIX32-NEXT: .align 43866; AIX32-NEXT: L..BB2_61: # %atomicrmw.start23867; AIX32-NEXT: #3868; AIX32-NEXT: and 3, 4, 233869; AIX32-NEXT: stw 7, 80(1)3870; AIX32-NEXT: li 7, 53871; AIX32-NEXT: li 8, 53872; AIX32-NEXT: xor 3, 3, 173873; AIX32-NEXT: stw 6, 84(1)3874; AIX32-NEXT: stw 5, 88(1)3875; AIX32-NEXT: stw 4, 92(1)3876; AIX32-NEXT: mr 4, 293877; AIX32-NEXT: mr 5, 283878; AIX32-NEXT: mr 6, 273879; AIX32-NEXT: stw 3, 76(1)3880; AIX32-NEXT: li 3, 163881; AIX32-NEXT: stw 17, 72(1)3882; AIX32-NEXT: stw 17, 68(1)3883; AIX32-NEXT: stw 17, 64(1)3884; AIX32-NEXT: bl .__atomic_compare_exchange[PR]3885; AIX32-NEXT: nop3886; AIX32-NEXT: lwz 4, 92(1)3887; AIX32-NEXT: lwz 5, 88(1)3888; AIX32-NEXT: lwz 6, 84(1)3889; AIX32-NEXT: lwz 7, 80(1)3890; AIX32-NEXT: cmplwi 3, 03891; AIX32-NEXT: beq 0, L..BB2_613892; AIX32-NEXT: # %bb.62: # %atomicrmw.end13893; AIX32-NEXT: and 3, 4, 233894; AIX32-NEXT: stw 17, 0(29)3895; AIX32-NEXT: lbz 23, 0(26)3896; AIX32-NEXT: stw 17, 4(29)3897; AIX32-NEXT: stw 17, 8(29)3898; AIX32-NEXT: xor 3, 3, 173899; AIX32-NEXT: addi 28, 1, 803900; AIX32-NEXT: addi 27, 1, 643901; AIX32-NEXT: stw 3, 12(29)3902; AIX32-NEXT: lwz 29, L..C9(2) # @s1283903; AIX32-NEXT: lwz 4, 12(29)3904; AIX32-NEXT: lwz 5, 8(29)3905; AIX32-NEXT: lwz 6, 4(29)3906; AIX32-NEXT: lwz 7, 0(29)3907; AIX32-NEXT: .align 43908; AIX32-NEXT: L..BB2_63: # %atomicrmw.start3909; AIX32-NEXT: #3910; AIX32-NEXT: and 3, 4, 233911; AIX32-NEXT: stw 7, 80(1)3912; AIX32-NEXT: li 7, 53913; AIX32-NEXT: li 8, 53914; AIX32-NEXT: xor 3, 3, 173915; AIX32-NEXT: stw 6, 84(1)3916; AIX32-NEXT: stw 5, 88(1)3917; AIX32-NEXT: stw 4, 92(1)3918; AIX32-NEXT: mr 4, 293919; AIX32-NEXT: mr 5, 283920; AIX32-NEXT: mr 6, 273921; AIX32-NEXT: stw 3, 76(1)3922; AIX32-NEXT: li 3, 163923; AIX32-NEXT: stw 17, 72(1)3924; AIX32-NEXT: stw 17, 68(1)3925; AIX32-NEXT: stw 17, 64(1)3926; AIX32-NEXT: bl .__atomic_compare_exchange[PR]3927; AIX32-NEXT: nop3928; AIX32-NEXT: lwz 4, 92(1)3929; AIX32-NEXT: lwz 5, 88(1)3930; AIX32-NEXT: lwz 6, 84(1)3931; AIX32-NEXT: lwz 7, 80(1)3932; AIX32-NEXT: cmplwi 3, 03933; AIX32-NEXT: beq 0, L..BB2_633934; AIX32-NEXT: # %bb.64: # %atomicrmw.end3935; AIX32-NEXT: and 3, 4, 233936; AIX32-NEXT: li 5, 2553937; AIX32-NEXT: xor 3, 3, 173938; AIX32-NEXT: stw 17, 0(29)3939; AIX32-NEXT: stw 17, 4(29)3940; AIX32-NEXT: stw 17, 8(29)3941; AIX32-NEXT: slw 5, 5, 243942; AIX32-NEXT: stw 3, 12(29)3943; AIX32-NEXT: lbz 3, 0(26)3944; AIX32-NEXT: sync3945; AIX32-NEXT: slw 4, 3, 243946; AIX32-NEXT: L..BB2_65: # %atomicrmw.end3947; AIX32-NEXT: #3948; AIX32-NEXT: lwarx 6, 0, 223949; AIX32-NEXT: and 7, 4, 63950; AIX32-NEXT: andc 8, 6, 53951; AIX32-NEXT: and 7, 7, 53952; AIX32-NEXT: or 7, 7, 83953; AIX32-NEXT: stwcx. 7, 0, 223954; AIX32-NEXT: bne- 0, L..BB2_653955; AIX32-NEXT: # %bb.66: # %atomicrmw.end3956; AIX32-NEXT: srw 4, 6, 243957; AIX32-NEXT: lwsync3958; AIX32-NEXT: li 5, 2553959; AIX32-NEXT: clrlwi 4, 4, 243960; AIX32-NEXT: slw 5, 5, 213961; AIX32-NEXT: and 3, 4, 33962; AIX32-NEXT: lwz 4, 60(1) # 4-byte Folded Reload3963; AIX32-NEXT: stb 3, 0(4)3964; AIX32-NEXT: lbz 3, 0(26)3965; AIX32-NEXT: sync3966; AIX32-NEXT: lwz 9, 56(1) # 4-byte Folded Reload3967; AIX32-NEXT: slw 4, 3, 213968; AIX32-NEXT: L..BB2_67: # %atomicrmw.end3969; AIX32-NEXT: #3970; AIX32-NEXT: lwarx 6, 0, 193971; AIX32-NEXT: and 7, 4, 63972; AIX32-NEXT: andc 8, 6, 53973; AIX32-NEXT: and 7, 7, 53974; AIX32-NEXT: or 7, 7, 83975; AIX32-NEXT: stwcx. 7, 0, 193976; AIX32-NEXT: bne- 0, L..BB2_673977; AIX32-NEXT: # %bb.68: # %atomicrmw.end3978; AIX32-NEXT: srw 4, 6, 213979; AIX32-NEXT: li 5, 03980; AIX32-NEXT: lwsync3981; AIX32-NEXT: clrlwi 4, 4, 243982; AIX32-NEXT: ori 5, 5, 655353983; AIX32-NEXT: and 3, 4, 33984; AIX32-NEXT: slw 5, 5, 183985; AIX32-NEXT: stb 3, 0(26)3986; AIX32-NEXT: sync3987; AIX32-NEXT: slw 4, 3, 183988; AIX32-NEXT: L..BB2_69: # %atomicrmw.end3989; AIX32-NEXT: #3990; AIX32-NEXT: lwarx 6, 0, 163991; AIX32-NEXT: and 7, 4, 63992; AIX32-NEXT: andc 8, 6, 53993; AIX32-NEXT: and 7, 7, 53994; AIX32-NEXT: or 7, 7, 83995; AIX32-NEXT: stwcx. 7, 0, 163996; AIX32-NEXT: bne- 0, L..BB2_693997; AIX32-NEXT: # %bb.70: # %atomicrmw.end3998; AIX32-NEXT: srw 4, 6, 183999; AIX32-NEXT: lwsync4000; AIX32-NEXT: li 5, 04001; AIX32-NEXT: clrlwi 4, 4, 164002; AIX32-NEXT: ori 5, 5, 655354003; AIX32-NEXT: and 3, 4, 34004; AIX32-NEXT: slw 5, 5, 154005; AIX32-NEXT: sth 3, 0(9)4006; AIX32-NEXT: lbz 3, 0(26)4007; AIX32-NEXT: sync4008; AIX32-NEXT: slw 4, 3, 154009; AIX32-NEXT: L..BB2_71: # %atomicrmw.end4010; AIX32-NEXT: #4011; AIX32-NEXT: lwarx 6, 0, 144012; AIX32-NEXT: and 7, 4, 64013; AIX32-NEXT: andc 8, 6, 54014; AIX32-NEXT: and 7, 7, 54015; AIX32-NEXT: or 7, 7, 84016; AIX32-NEXT: stwcx. 7, 0, 144017; AIX32-NEXT: bne- 0, L..BB2_714018; AIX32-NEXT: # %bb.72: # %atomicrmw.end4019; AIX32-NEXT: srw 4, 6, 154020; AIX32-NEXT: lwsync4021; AIX32-NEXT: clrlwi 4, 4, 164022; AIX32-NEXT: and 3, 4, 34023; AIX32-NEXT: sth 3, 0(20)4024; AIX32-NEXT: lbz 3, 0(26)4025; AIX32-NEXT: sync4026; AIX32-NEXT: L..BB2_73: # %atomicrmw.end4027; AIX32-NEXT: #4028; AIX32-NEXT: lwarx 4, 0, 134029; AIX32-NEXT: and 4, 3, 44030; AIX32-NEXT: stwcx. 4, 0, 134031; AIX32-NEXT: bne- 0, L..BB2_734032; AIX32-NEXT: # %bb.74: # %atomicrmw.end4033; AIX32-NEXT: lwsync4034; AIX32-NEXT: stw 4, 0(13)4035; AIX32-NEXT: lbz 3, 0(26)4036; AIX32-NEXT: sync4037; AIX32-NEXT: L..BB2_75: # %atomicrmw.end4038; AIX32-NEXT: #4039; AIX32-NEXT: lwarx 4, 0, 254040; AIX32-NEXT: and 4, 3, 44041; AIX32-NEXT: stwcx. 4, 0, 254042; AIX32-NEXT: bne- 0, L..BB2_754043; AIX32-NEXT: # %bb.76: # %atomicrmw.end4044; AIX32-NEXT: lwsync4045; AIX32-NEXT: stw 4, 0(25)4046; AIX32-NEXT: li 4, 04047; AIX32-NEXT: lbz 29, 0(26)4048; AIX32-NEXT: li 6, 54049; AIX32-NEXT: mr 3, 314050; AIX32-NEXT: li 28, 04051; AIX32-NEXT: mr 5, 294052; AIX32-NEXT: bl .__atomic_fetch_and_8[PR]4053; AIX32-NEXT: nop4054; AIX32-NEXT: and 3, 4, 294055; AIX32-NEXT: stw 28, 0(31)4056; AIX32-NEXT: li 4, 04057; AIX32-NEXT: li 6, 54058; AIX32-NEXT: stw 3, 4(31)4059; AIX32-NEXT: lbz 31, 0(26)4060; AIX32-NEXT: mr 3, 304061; AIX32-NEXT: mr 5, 314062; AIX32-NEXT: bl .__atomic_fetch_and_8[PR]4063; AIX32-NEXT: nop4064; AIX32-NEXT: and 3, 4, 314065; AIX32-NEXT: stw 28, 0(30)4066; AIX32-NEXT: lwz 31, 172(1) # 4-byte Folded Reload4067; AIX32-NEXT: lwz 29, 164(1) # 4-byte Folded Reload4068; AIX32-NEXT: lwz 28, 160(1) # 4-byte Folded Reload4069; AIX32-NEXT: lwz 27, 156(1) # 4-byte Folded Reload4070; AIX32-NEXT: lwz 26, 152(1) # 4-byte Folded Reload4071; AIX32-NEXT: lwz 25, 148(1) # 4-byte Folded Reload4072; AIX32-NEXT: lwz 24, 144(1) # 4-byte Folded Reload4073; AIX32-NEXT: stw 3, 4(30)4074; AIX32-NEXT: lwz 30, 168(1) # 4-byte Folded Reload4075; AIX32-NEXT: lwz 23, 140(1) # 4-byte Folded Reload4076; AIX32-NEXT: lwz 22, 136(1) # 4-byte Folded Reload4077; AIX32-NEXT: lwz 21, 132(1) # 4-byte Folded Reload4078; AIX32-NEXT: lwz 20, 128(1) # 4-byte Folded Reload4079; AIX32-NEXT: lwz 19, 124(1) # 4-byte Folded Reload4080; AIX32-NEXT: lwz 18, 120(1) # 4-byte Folded Reload4081; AIX32-NEXT: lwz 17, 116(1) # 4-byte Folded Reload4082; AIX32-NEXT: lwz 16, 112(1) # 4-byte Folded Reload4083; AIX32-NEXT: lwz 15, 108(1) # 4-byte Folded Reload4084; AIX32-NEXT: lwz 14, 104(1) # 4-byte Folded Reload4085; AIX32-NEXT: lwz 13, 100(1) # 4-byte Folded Reload4086; AIX32-NEXT: addi 1, 1, 1764087; AIX32-NEXT: lwz 0, 8(1)4088; AIX32-NEXT: mtlr 04089; AIX32-NEXT: blr4090entry:4091 %0 = load i8, ptr @uc, align 14092 %1 = atomicrmw add ptr @sc, i8 %0 seq_cst, align 14093 %2 = add i8 %1, %04094 store i8 %2, ptr @sc, align 14095 %3 = load i8, ptr @uc, align 14096 %4 = atomicrmw add ptr @uc, i8 %3 seq_cst, align 14097 %5 = add i8 %4, %34098 store i8 %5, ptr @uc, align 14099 %conv = zext i8 %5 to i164100 %6 = atomicrmw add ptr @ss, i16 %conv seq_cst, align 24101 %7 = add i16 %6, %conv4102 store i16 %7, ptr @ss, align 24103 %8 = load i8, ptr @uc, align 14104 %conv1 = zext i8 %8 to i164105 %9 = atomicrmw add ptr @us, i16 %conv1 seq_cst, align 24106 %10 = add i16 %9, %conv14107 store i16 %10, ptr @us, align 24108 %11 = load i8, ptr @uc, align 14109 %conv2 = zext i8 %11 to i324110 %12 = atomicrmw add ptr @si, i32 %conv2 seq_cst, align 44111 %13 = add i32 %12, %conv24112 store i32 %13, ptr @si, align 44113 %14 = load i8, ptr @uc, align 14114 %conv3 = zext i8 %14 to i324115 %15 = atomicrmw add ptr @ui, i32 %conv3 seq_cst, align 44116 %16 = add i32 %15, %conv34117 store i32 %16, ptr @ui, align 44118 %17 = load i8, ptr @uc, align 14119 %conv4 = zext i8 %17 to i644120 %18 = atomicrmw add ptr @sll, i64 %conv4 seq_cst, align 84121 %19 = add i64 %18, %conv44122 store i64 %19, ptr @sll, align 84123 %20 = load i8, ptr @uc, align 14124 %conv5 = zext i8 %20 to i644125 %21 = atomicrmw add ptr @ull, i64 %conv5 seq_cst, align 84126 %22 = add i64 %21, %conv54127 store i64 %22, ptr @ull, align 84128 %23 = load i8, ptr @uc, align 14129 %24 = atomicrmw sub ptr @sc, i8 %23 seq_cst, align 14130 %25 = sub i8 %24, %234131 store i8 %25, ptr @sc, align 14132 %26 = load i8, ptr @uc, align 14133 %27 = atomicrmw sub ptr @uc, i8 %26 seq_cst, align 14134 %28 = sub i8 %27, %264135 store i8 %28, ptr @uc, align 14136 %conv6 = zext i8 %28 to i164137 %29 = atomicrmw sub ptr @ss, i16 %conv6 seq_cst, align 24138 %30 = sub i16 %29, %conv64139 store i16 %30, ptr @ss, align 24140 %31 = load i8, ptr @uc, align 14141 %conv7 = zext i8 %31 to i164142 %32 = atomicrmw sub ptr @us, i16 %conv7 seq_cst, align 24143 %33 = sub i16 %32, %conv74144 store i16 %33, ptr @us, align 24145 %34 = load i8, ptr @uc, align 14146 %conv8 = zext i8 %34 to i324147 %35 = atomicrmw sub ptr @si, i32 %conv8 seq_cst, align 44148 %36 = sub i32 %35, %conv84149 store i32 %36, ptr @si, align 44150 %37 = load i8, ptr @uc, align 14151 %conv9 = zext i8 %37 to i324152 %38 = atomicrmw sub ptr @ui, i32 %conv9 seq_cst, align 44153 %39 = sub i32 %38, %conv94154 store i32 %39, ptr @ui, align 44155 %40 = load i8, ptr @uc, align 14156 %conv10 = zext i8 %40 to i644157 %41 = atomicrmw sub ptr @sll, i64 %conv10 seq_cst, align 84158 %42 = sub i64 %41, %conv104159 store i64 %42, ptr @sll, align 84160 %43 = load i8, ptr @uc, align 14161 %conv11 = zext i8 %43 to i644162 %44 = atomicrmw sub ptr @ull, i64 %conv11 seq_cst, align 84163 %45 = sub i64 %44, %conv114164 store i64 %45, ptr @ull, align 84165 %46 = load i8, ptr @uc, align 14166 %47 = atomicrmw or ptr @sc, i8 %46 seq_cst, align 14167 %48 = or i8 %47, %464168 store i8 %48, ptr @sc, align 14169 %49 = load i8, ptr @uc, align 14170 %50 = atomicrmw or ptr @uc, i8 %49 seq_cst, align 14171 %51 = or i8 %50, %494172 store i8 %51, ptr @uc, align 14173 %conv12 = zext i8 %51 to i164174 %52 = atomicrmw or ptr @ss, i16 %conv12 seq_cst, align 24175 %53 = or i16 %52, %conv124176 store i16 %53, ptr @ss, align 24177 %54 = load i8, ptr @uc, align 14178 %conv13 = zext i8 %54 to i164179 %55 = atomicrmw or ptr @us, i16 %conv13 seq_cst, align 24180 %56 = or i16 %55, %conv134181 store i16 %56, ptr @us, align 24182 %57 = load i8, ptr @uc, align 14183 %conv14 = zext i8 %57 to i324184 %58 = atomicrmw or ptr @si, i32 %conv14 seq_cst, align 44185 %59 = or i32 %58, %conv144186 store i32 %59, ptr @si, align 44187 %60 = load i8, ptr @uc, align 14188 %conv15 = zext i8 %60 to i324189 %61 = atomicrmw or ptr @ui, i32 %conv15 seq_cst, align 44190 %62 = or i32 %61, %conv154191 store i32 %62, ptr @ui, align 44192 %63 = load i8, ptr @uc, align 14193 %conv16 = zext i8 %63 to i644194 %64 = atomicrmw or ptr @sll, i64 %conv16 seq_cst, align 84195 %65 = or i64 %64, %conv164196 store i64 %65, ptr @sll, align 84197 %66 = load i8, ptr @uc, align 14198 %conv17 = zext i8 %66 to i644199 %67 = atomicrmw or ptr @ull, i64 %conv17 seq_cst, align 84200 %68 = or i64 %67, %conv174201 store i64 %68, ptr @ull, align 84202 %69 = load i8, ptr @uc, align 14203 %70 = atomicrmw xor ptr @sc, i8 %69 seq_cst, align 14204 %71 = xor i8 %70, %694205 store i8 %71, ptr @sc, align 14206 %72 = load i8, ptr @uc, align 14207 %73 = atomicrmw xor ptr @uc, i8 %72 seq_cst, align 14208 %74 = xor i8 %73, %724209 store i8 %74, ptr @uc, align 14210 %conv18 = zext i8 %74 to i164211 %75 = atomicrmw xor ptr @ss, i16 %conv18 seq_cst, align 24212 %76 = xor i16 %75, %conv184213 store i16 %76, ptr @ss, align 24214 %77 = load i8, ptr @uc, align 14215 %conv19 = zext i8 %77 to i164216 %78 = atomicrmw xor ptr @us, i16 %conv19 seq_cst, align 24217 %79 = xor i16 %78, %conv194218 store i16 %79, ptr @us, align 24219 %80 = load i8, ptr @uc, align 14220 %conv20 = zext i8 %80 to i324221 %81 = atomicrmw xor ptr @si, i32 %conv20 seq_cst, align 44222 %82 = xor i32 %81, %conv204223 store i32 %82, ptr @si, align 44224 %83 = load i8, ptr @uc, align 14225 %conv21 = zext i8 %83 to i324226 %84 = atomicrmw xor ptr @ui, i32 %conv21 seq_cst, align 44227 %85 = xor i32 %84, %conv214228 store i32 %85, ptr @ui, align 44229 %86 = load i8, ptr @uc, align 14230 %conv22 = zext i8 %86 to i644231 %87 = atomicrmw xor ptr @sll, i64 %conv22 seq_cst, align 84232 %88 = xor i64 %87, %conv224233 store i64 %88, ptr @sll, align 84234 %89 = load i8, ptr @uc, align 14235 %conv23 = zext i8 %89 to i644236 %90 = atomicrmw xor ptr @ull, i64 %conv23 seq_cst, align 84237 %91 = xor i64 %90, %conv234238 store i64 %91, ptr @ull, align 84239 %92 = load i8, ptr @uc, align 14240 %93 = atomicrmw nand ptr @sc, i8 %92 seq_cst, align 14241 %94 = and i8 %93, %924242 %95 = xor i8 %94, -14243 store i8 %95, ptr @sc, align 14244 %96 = load i8, ptr @uc, align 14245 %97 = atomicrmw nand ptr @uc, i8 %96 seq_cst, align 14246 %98 = and i8 %97, %964247 %99 = xor i8 %98, -14248 store i8 %99, ptr @uc, align 14249 %conv24 = zext i8 %99 to i164250 %100 = atomicrmw nand ptr @ss, i16 %conv24 seq_cst, align 24251 %101 = and i16 %100, %conv244252 %102 = xor i16 %101, -14253 store i16 %102, ptr @ss, align 24254 %103 = load i8, ptr @uc, align 14255 %conv25 = zext i8 %103 to i164256 %104 = atomicrmw nand ptr @us, i16 %conv25 seq_cst, align 24257 %105 = and i16 %104, %conv254258 %106 = xor i16 %105, -14259 store i16 %106, ptr @us, align 24260 %107 = load i8, ptr @uc, align 14261 %conv26 = zext i8 %107 to i324262 %108 = atomicrmw nand ptr @si, i32 %conv26 seq_cst, align 44263 %109 = and i32 %108, %conv264264 %110 = xor i32 %109, -14265 store i32 %110, ptr @si, align 44266 %111 = load i8, ptr @uc, align 14267 %conv27 = zext i8 %111 to i324268 %112 = atomicrmw nand ptr @ui, i32 %conv27 seq_cst, align 44269 %113 = and i32 %112, %conv274270 %114 = xor i32 %113, -14271 store i32 %114, ptr @ui, align 44272 %115 = load i8, ptr @uc, align 14273 %conv28 = zext i8 %115 to i644274 %116 = atomicrmw nand ptr @sll, i64 %conv28 seq_cst, align 84275 %117 = and i64 %116, %conv284276 %118 = xor i64 %117, -14277 store i64 %118, ptr @sll, align 84278 %119 = load i8, ptr @uc, align 14279 %conv29 = zext i8 %119 to i644280 %120 = atomicrmw nand ptr @ull, i64 %conv29 seq_cst, align 84281 %121 = and i64 %120, %conv294282 %122 = xor i64 %121, -14283 store i64 %122, ptr @ull, align 84284 %123 = load i8, ptr @uc, align 14285 %conv30 = zext i8 %123 to i1284286 %124 = atomicrmw nand ptr @u128, i128 %conv30 seq_cst, align 164287 %125 = and i128 %124, %conv304288 %126 = xor i128 %125, -14289 store i128 %126, ptr @u128, align 164290 %127 = load i8, ptr @uc, align 14291 %conv31 = zext i8 %127 to i1284292 %128 = atomicrmw nand ptr @s128, i128 %conv31 seq_cst, align 164293 %129 = and i128 %128, %conv314294 %130 = xor i128 %129, -14295 store i128 %130, ptr @s128, align 164296 %131 = load i8, ptr @uc, align 14297 %132 = atomicrmw and ptr @sc, i8 %131 seq_cst, align 14298 %133 = and i8 %132, %1314299 store i8 %133, ptr @sc, align 14300 %134 = load i8, ptr @uc, align 14301 %135 = atomicrmw and ptr @uc, i8 %134 seq_cst, align 14302 %136 = and i8 %135, %1344303 store i8 %136, ptr @uc, align 14304 %conv32 = zext i8 %136 to i164305 %137 = atomicrmw and ptr @ss, i16 %conv32 seq_cst, align 24306 %138 = and i16 %137, %conv324307 store i16 %138, ptr @ss, align 24308 %139 = load i8, ptr @uc, align 14309 %conv33 = zext i8 %139 to i164310 %140 = atomicrmw and ptr @us, i16 %conv33 seq_cst, align 24311 %141 = and i16 %140, %conv334312 store i16 %141, ptr @us, align 24313 %142 = load i8, ptr @uc, align 14314 %conv34 = zext i8 %142 to i324315 %143 = atomicrmw and ptr @si, i32 %conv34 seq_cst, align 44316 %144 = and i32 %143, %conv344317 store i32 %144, ptr @si, align 44318 %145 = load i8, ptr @uc, align 14319 %conv35 = zext i8 %145 to i324320 %146 = atomicrmw and ptr @ui, i32 %conv35 seq_cst, align 44321 %147 = and i32 %146, %conv354322 store i32 %147, ptr @ui, align 44323 %148 = load i8, ptr @uc, align 14324 %conv36 = zext i8 %148 to i644325 %149 = atomicrmw and ptr @sll, i64 %conv36 seq_cst, align 84326 %150 = and i64 %149, %conv364327 store i64 %150, ptr @sll, align 84328 %151 = load i8, ptr @uc, align 14329 %conv37 = zext i8 %151 to i644330 %152 = atomicrmw and ptr @ull, i64 %conv37 seq_cst, align 84331 %153 = and i64 %152, %conv374332 store i64 %153, ptr @ull, align 84333 ret void4334}4335 4336define dso_local void @test_compare_and_swap() local_unnamed_addr #0 {4337; CHECK-LABEL: test_compare_and_swap:4338; CHECK: # %bb.0: # %entry4339; CHECK-NEXT: addis 4, 2, sc@toc@ha4340; CHECK-NEXT: addis 3, 2, uc@toc@ha4341; CHECK-NEXT: std 27, -40(1) # 8-byte Folded Spill4342; CHECK-NEXT: std 28, -32(1) # 8-byte Folded Spill4343; CHECK-NEXT: std 29, -24(1) # 8-byte Folded Spill4344; CHECK-NEXT: std 30, -16(1) # 8-byte Folded Spill4345; CHECK-NEXT: addi 6, 4, sc@toc@l4346; CHECK-NEXT: lbz 7, uc@toc@l(3)4347; CHECK-NEXT: lbz 8, sc@toc@l(4)4348; CHECK-NEXT: lbarx 5, 0, 64349; CHECK-NEXT: cmplw 5, 74350; CHECK-NEXT: bne- 0, .LBB3_44351; CHECK-NEXT: # %bb.1: # %cmpxchg.fencedstore2764352; CHECK-NEXT: sync4353; CHECK-NEXT: .LBB3_2: # %cmpxchg.trystore2754354; CHECK-NEXT: #4355; CHECK-NEXT: stbcx. 8, 0, 64356; CHECK-NEXT: beq+ 0, .LBB3_44357; CHECK-NEXT: # %bb.3: # %cmpxchg.releasedload2744358; CHECK-NEXT: #4359; CHECK-NEXT: lbarx 5, 0, 64360; CHECK-NEXT: cmplw 5, 74361; CHECK-NEXT: beq+ 0, .LBB3_24362; CHECK-NEXT: .LBB3_4: # %cmpxchg.nostore2724363; CHECK-NEXT: addi 7, 3, uc@toc@l4364; CHECK-NEXT: lwsync4365; CHECK-NEXT: stb 5, sc@toc@l(4)4366; CHECK-NEXT: lbz 9, uc@toc@l(3)4367; CHECK-NEXT: lbarx 8, 0, 74368; CHECK-NEXT: cmplw 8, 94369; CHECK-NEXT: bne- 0, .LBB3_84370; CHECK-NEXT: # %bb.5: # %cmpxchg.fencedstore2574371; CHECK-NEXT: sync4372; CHECK-NEXT: clrlwi 5, 5, 244373; CHECK-NEXT: .LBB3_6: # %cmpxchg.trystore2564374; CHECK-NEXT: #4375; CHECK-NEXT: stbcx. 5, 0, 74376; CHECK-NEXT: beq+ 0, .LBB3_84377; CHECK-NEXT: # %bb.7: # %cmpxchg.releasedload2554378; CHECK-NEXT: #4379; CHECK-NEXT: lbarx 8, 0, 74380; CHECK-NEXT: cmplw 8, 94381; CHECK-NEXT: beq+ 0, .LBB3_64382; CHECK-NEXT: .LBB3_8: # %cmpxchg.nostore2534383; CHECK-NEXT: addis 5, 2, ss@toc@ha4384; CHECK-NEXT: lwsync4385; CHECK-NEXT: stb 8, uc@toc@l(3)4386; CHECK-NEXT: clrlwi 10, 8, 244387; CHECK-NEXT: lbz 11, sc@toc@l(4)4388; CHECK-NEXT: addi 8, 5, ss@toc@l4389; CHECK-NEXT: lharx 9, 0, 84390; CHECK-NEXT: cmplw 9, 104391; CHECK-NEXT: bne- 0, .LBB3_124392; CHECK-NEXT: # %bb.9: # %cmpxchg.fencedstore2384393; CHECK-NEXT: extsb 11, 114394; CHECK-NEXT: sync4395; CHECK-NEXT: clrlwi 11, 11, 164396; CHECK-NEXT: .LBB3_10: # %cmpxchg.trystore2374397; CHECK-NEXT: #4398; CHECK-NEXT: sthcx. 11, 0, 84399; CHECK-NEXT: beq+ 0, .LBB3_124400; CHECK-NEXT: # %bb.11: # %cmpxchg.releasedload2364401; CHECK-NEXT: #4402; CHECK-NEXT: lharx 9, 0, 84403; CHECK-NEXT: cmplw 9, 104404; CHECK-NEXT: beq+ 0, .LBB3_104405; CHECK-NEXT: .LBB3_12: # %cmpxchg.nostore2344406; CHECK-NEXT: lwsync4407; CHECK-NEXT: sth 9, ss@toc@l(5)4408; CHECK-NEXT: addis 5, 2, us@toc@ha4409; CHECK-NEXT: lbz 11, uc@toc@l(3)4410; CHECK-NEXT: lbz 12, sc@toc@l(4)4411; CHECK-NEXT: addi 9, 5, us@toc@l4412; CHECK-NEXT: lharx 10, 0, 94413; CHECK-NEXT: cmplw 10, 114414; CHECK-NEXT: bne- 0, .LBB3_164415; CHECK-NEXT: # %bb.13: # %cmpxchg.fencedstore2194416; CHECK-NEXT: extsb 12, 124417; CHECK-NEXT: sync4418; CHECK-NEXT: clrlwi 12, 12, 164419; CHECK-NEXT: .LBB3_14: # %cmpxchg.trystore2184420; CHECK-NEXT: #4421; CHECK-NEXT: sthcx. 12, 0, 94422; CHECK-NEXT: beq+ 0, .LBB3_164423; CHECK-NEXT: # %bb.15: # %cmpxchg.releasedload2174424; CHECK-NEXT: #4425; CHECK-NEXT: lharx 10, 0, 94426; CHECK-NEXT: cmplw 10, 114427; CHECK-NEXT: beq+ 0, .LBB3_144428; CHECK-NEXT: .LBB3_16: # %cmpxchg.nostore2154429; CHECK-NEXT: lwsync4430; CHECK-NEXT: sth 10, us@toc@l(5)4431; CHECK-NEXT: addis 5, 2, si@toc@ha4432; CHECK-NEXT: lbz 12, uc@toc@l(3)4433; CHECK-NEXT: lbz 0, sc@toc@l(4)4434; CHECK-NEXT: addi 10, 5, si@toc@l4435; CHECK-NEXT: lwarx 11, 0, 104436; CHECK-NEXT: cmplw 11, 124437; CHECK-NEXT: bne- 0, .LBB3_204438; CHECK-NEXT: # %bb.17: # %cmpxchg.fencedstore2004439; CHECK-NEXT: extsb 0, 04440; CHECK-NEXT: sync4441; CHECK-NEXT: .LBB3_18: # %cmpxchg.trystore1994442; CHECK-NEXT: #4443; CHECK-NEXT: stwcx. 0, 0, 104444; CHECK-NEXT: beq+ 0, .LBB3_204445; CHECK-NEXT: # %bb.19: # %cmpxchg.releasedload1984446; CHECK-NEXT: #4447; CHECK-NEXT: lwarx 11, 0, 104448; CHECK-NEXT: cmplw 11, 124449; CHECK-NEXT: beq+ 0, .LBB3_184450; CHECK-NEXT: .LBB3_20: # %cmpxchg.nostore1964451; CHECK-NEXT: lwsync4452; CHECK-NEXT: stw 11, si@toc@l(5)4453; CHECK-NEXT: addis 5, 2, ui@toc@ha4454; CHECK-NEXT: lbz 0, uc@toc@l(3)4455; CHECK-NEXT: lbz 30, sc@toc@l(4)4456; CHECK-NEXT: addi 11, 5, ui@toc@l4457; CHECK-NEXT: lwarx 12, 0, 114458; CHECK-NEXT: cmplw 12, 04459; CHECK-NEXT: bne- 0, .LBB3_244460; CHECK-NEXT: # %bb.21: # %cmpxchg.fencedstore1814461; CHECK-NEXT: extsb 30, 304462; CHECK-NEXT: sync4463; CHECK-NEXT: .LBB3_22: # %cmpxchg.trystore1804464; CHECK-NEXT: #4465; CHECK-NEXT: stwcx. 30, 0, 114466; CHECK-NEXT: beq+ 0, .LBB3_244467; CHECK-NEXT: # %bb.23: # %cmpxchg.releasedload1794468; CHECK-NEXT: #4469; CHECK-NEXT: lwarx 12, 0, 114470; CHECK-NEXT: cmplw 12, 04471; CHECK-NEXT: beq+ 0, .LBB3_224472; CHECK-NEXT: .LBB3_24: # %cmpxchg.nostore1774473; CHECK-NEXT: addis 30, 2, sll@toc@ha4474; CHECK-NEXT: lwsync4475; CHECK-NEXT: stw 12, ui@toc@l(5)4476; CHECK-NEXT: lbz 29, uc@toc@l(3)4477; CHECK-NEXT: lbz 28, sc@toc@l(4)4478; CHECK-NEXT: addi 12, 30, sll@toc@l4479; CHECK-NEXT: ldarx 0, 0, 124480; CHECK-NEXT: cmpld 0, 294481; CHECK-NEXT: bne- 0, .LBB3_284482; CHECK-NEXT: # %bb.25: # %cmpxchg.fencedstore1624483; CHECK-NEXT: extsb 28, 284484; CHECK-NEXT: sync4485; CHECK-NEXT: .LBB3_26: # %cmpxchg.trystore1614486; CHECK-NEXT: #4487; CHECK-NEXT: stdcx. 28, 0, 124488; CHECK-NEXT: beq+ 0, .LBB3_284489; CHECK-NEXT: # %bb.27: # %cmpxchg.releasedload1604490; CHECK-NEXT: #4491; CHECK-NEXT: ldarx 0, 0, 124492; CHECK-NEXT: cmpld 0, 294493; CHECK-NEXT: beq+ 0, .LBB3_264494; CHECK-NEXT: .LBB3_28: # %cmpxchg.nostore1584495; CHECK-NEXT: lwsync4496; CHECK-NEXT: std 0, sll@toc@l(30)4497; CHECK-NEXT: addis 30, 2, ull@toc@ha4498; CHECK-NEXT: lbz 28, uc@toc@l(3)4499; CHECK-NEXT: lbz 27, sc@toc@l(4)4500; CHECK-NEXT: addi 0, 30, ull@toc@l4501; CHECK-NEXT: ldarx 29, 0, 04502; CHECK-NEXT: cmpld 29, 284503; CHECK-NEXT: bne- 0, .LBB3_324504; CHECK-NEXT: # %bb.29: # %cmpxchg.fencedstore1434505; CHECK-NEXT: extsb 27, 274506; CHECK-NEXT: sync4507; CHECK-NEXT: .LBB3_30: # %cmpxchg.trystore1424508; CHECK-NEXT: #4509; CHECK-NEXT: stdcx. 27, 0, 04510; CHECK-NEXT: beq+ 0, .LBB3_324511; CHECK-NEXT: # %bb.31: # %cmpxchg.releasedload1414512; CHECK-NEXT: #4513; CHECK-NEXT: ldarx 29, 0, 04514; CHECK-NEXT: cmpld 29, 284515; CHECK-NEXT: beq+ 0, .LBB3_304516; CHECK-NEXT: .LBB3_32: # %cmpxchg.nostore1394517; CHECK-NEXT: lwsync4518; CHECK-NEXT: std 29, ull@toc@l(30)4519; CHECK-NEXT: lbz 30, uc@toc@l(3)4520; CHECK-NEXT: lbz 29, sc@toc@l(4)4521; CHECK-NEXT: lbarx 28, 0, 64522; CHECK-NEXT: cmplw 28, 304523; CHECK-NEXT: bne- 0, .LBB3_364524; CHECK-NEXT: # %bb.33: # %cmpxchg.fencedstore1244525; CHECK-NEXT: sync4526; CHECK-NEXT: .LBB3_34: # %cmpxchg.trystore1234527; CHECK-NEXT: #4528; CHECK-NEXT: stbcx. 29, 0, 64529; CHECK-NEXT: beq+ 0, .LBB3_374530; CHECK-NEXT: # %bb.35: # %cmpxchg.releasedload1224531; CHECK-NEXT: #4532; CHECK-NEXT: lbarx 28, 0, 64533; CHECK-NEXT: cmplw 28, 304534; CHECK-NEXT: beq+ 0, .LBB3_344535; CHECK-NEXT: .LBB3_36: # %cmpxchg.nostore1204536; CHECK-NEXT: lwsync4537; CHECK-NEXT: crxor 20, 20, 204538; CHECK-NEXT: b .LBB3_384539; CHECK-NEXT: .LBB3_37: # %cmpxchg.success1214540; CHECK-NEXT: lwsync4541; CHECK-NEXT: creqv 20, 20, 204542; CHECK-NEXT: .LBB3_38: # %cmpxchg.end1184543; CHECK-NEXT: li 6, 04544; CHECK-NEXT: li 30, 14545; CHECK-NEXT: isel 6, 30, 6, 204546; CHECK-NEXT: lbz 30, sc@toc@l(4)4547; CHECK-NEXT: stw 6, ui@toc@l(5)4548; CHECK-NEXT: lbz 6, uc@toc@l(3)4549; CHECK-NEXT: lbarx 29, 0, 74550; CHECK-NEXT: cmplw 29, 64551; CHECK-NEXT: bne- 0, .LBB3_424552; CHECK-NEXT: # %bb.39: # %cmpxchg.fencedstore1054553; CHECK-NEXT: sync4554; CHECK-NEXT: .LBB3_40: # %cmpxchg.trystore1044555; CHECK-NEXT: #4556; CHECK-NEXT: stbcx. 30, 0, 74557; CHECK-NEXT: beq+ 0, .LBB3_434558; CHECK-NEXT: # %bb.41: # %cmpxchg.releasedload1034559; CHECK-NEXT: #4560; CHECK-NEXT: lbarx 29, 0, 74561; CHECK-NEXT: cmplw 29, 64562; CHECK-NEXT: beq+ 0, .LBB3_404563; CHECK-NEXT: .LBB3_42: # %cmpxchg.nostore1014564; CHECK-NEXT: lwsync4565; CHECK-NEXT: crxor 20, 20, 204566; CHECK-NEXT: b .LBB3_444567; CHECK-NEXT: .LBB3_43: # %cmpxchg.success1024568; CHECK-NEXT: lwsync4569; CHECK-NEXT: creqv 20, 20, 204570; CHECK-NEXT: .LBB3_44: # %cmpxchg.end994571; CHECK-NEXT: li 6, 04572; CHECK-NEXT: li 7, 14573; CHECK-NEXT: isel 6, 7, 6, 204574; CHECK-NEXT: lbz 7, sc@toc@l(4)4575; CHECK-NEXT: stw 6, ui@toc@l(5)4576; CHECK-NEXT: lbz 6, uc@toc@l(3)4577; CHECK-NEXT: lharx 30, 0, 84578; CHECK-NEXT: cmplw 30, 64579; CHECK-NEXT: bne- 0, .LBB3_484580; CHECK-NEXT: # %bb.45: # %cmpxchg.fencedstore864581; CHECK-NEXT: extsb 7, 74582; CHECK-NEXT: sync4583; CHECK-NEXT: clrlwi 7, 7, 164584; CHECK-NEXT: .LBB3_46: # %cmpxchg.trystore854585; CHECK-NEXT: #4586; CHECK-NEXT: sthcx. 7, 0, 84587; CHECK-NEXT: beq+ 0, .LBB3_494588; CHECK-NEXT: # %bb.47: # %cmpxchg.releasedload844589; CHECK-NEXT: #4590; CHECK-NEXT: lharx 30, 0, 84591; CHECK-NEXT: cmplw 30, 64592; CHECK-NEXT: beq+ 0, .LBB3_464593; CHECK-NEXT: .LBB3_48: # %cmpxchg.nostore824594; CHECK-NEXT: lwsync4595; CHECK-NEXT: crxor 20, 20, 204596; CHECK-NEXT: b .LBB3_504597; CHECK-NEXT: .LBB3_49: # %cmpxchg.success834598; CHECK-NEXT: lwsync4599; CHECK-NEXT: creqv 20, 20, 204600; CHECK-NEXT: .LBB3_50: # %cmpxchg.end804601; CHECK-NEXT: li 6, 04602; CHECK-NEXT: li 7, 14603; CHECK-NEXT: isel 6, 7, 6, 204604; CHECK-NEXT: lbz 7, sc@toc@l(4)4605; CHECK-NEXT: stw 6, ui@toc@l(5)4606; CHECK-NEXT: lbz 6, uc@toc@l(3)4607; CHECK-NEXT: lharx 8, 0, 94608; CHECK-NEXT: cmplw 8, 64609; CHECK-NEXT: bne- 0, .LBB3_544610; CHECK-NEXT: # %bb.51: # %cmpxchg.fencedstore674611; CHECK-NEXT: extsb 7, 74612; CHECK-NEXT: sync4613; CHECK-NEXT: clrlwi 7, 7, 164614; CHECK-NEXT: .LBB3_52: # %cmpxchg.trystore664615; CHECK-NEXT: #4616; CHECK-NEXT: sthcx. 7, 0, 94617; CHECK-NEXT: beq+ 0, .LBB3_554618; CHECK-NEXT: # %bb.53: # %cmpxchg.releasedload654619; CHECK-NEXT: #4620; CHECK-NEXT: lharx 8, 0, 94621; CHECK-NEXT: cmplw 8, 64622; CHECK-NEXT: beq+ 0, .LBB3_524623; CHECK-NEXT: .LBB3_54: # %cmpxchg.nostore634624; CHECK-NEXT: lwsync4625; CHECK-NEXT: crxor 20, 20, 204626; CHECK-NEXT: b .LBB3_564627; CHECK-NEXT: .LBB3_55: # %cmpxchg.success644628; CHECK-NEXT: lwsync4629; CHECK-NEXT: creqv 20, 20, 204630; CHECK-NEXT: .LBB3_56: # %cmpxchg.end614631; CHECK-NEXT: li 6, 04632; CHECK-NEXT: li 7, 14633; CHECK-NEXT: isel 6, 7, 6, 204634; CHECK-NEXT: lbz 7, sc@toc@l(4)4635; CHECK-NEXT: stw 6, ui@toc@l(5)4636; CHECK-NEXT: lbz 6, uc@toc@l(3)4637; CHECK-NEXT: lwarx 8, 0, 104638; CHECK-NEXT: cmplw 8, 64639; CHECK-NEXT: bne- 0, .LBB3_604640; CHECK-NEXT: # %bb.57: # %cmpxchg.fencedstore484641; CHECK-NEXT: extsb 7, 74642; CHECK-NEXT: sync4643; CHECK-NEXT: .LBB3_58: # %cmpxchg.trystore474644; CHECK-NEXT: #4645; CHECK-NEXT: stwcx. 7, 0, 104646; CHECK-NEXT: beq+ 0, .LBB3_614647; CHECK-NEXT: # %bb.59: # %cmpxchg.releasedload464648; CHECK-NEXT: #4649; CHECK-NEXT: lwarx 8, 0, 104650; CHECK-NEXT: cmplw 8, 64651; CHECK-NEXT: beq+ 0, .LBB3_584652; CHECK-NEXT: .LBB3_60: # %cmpxchg.nostore444653; CHECK-NEXT: lwsync4654; CHECK-NEXT: crxor 20, 20, 204655; CHECK-NEXT: b .LBB3_624656; CHECK-NEXT: .LBB3_61: # %cmpxchg.success454657; CHECK-NEXT: lwsync4658; CHECK-NEXT: creqv 20, 20, 204659; CHECK-NEXT: .LBB3_62: # %cmpxchg.end424660; CHECK-NEXT: li 6, 04661; CHECK-NEXT: li 7, 14662; CHECK-NEXT: isel 6, 7, 6, 204663; CHECK-NEXT: lbz 7, sc@toc@l(4)4664; CHECK-NEXT: stw 6, ui@toc@l(5)4665; CHECK-NEXT: lbz 6, uc@toc@l(3)4666; CHECK-NEXT: lwarx 8, 0, 114667; CHECK-NEXT: cmplw 8, 64668; CHECK-NEXT: bne- 0, .LBB3_664669; CHECK-NEXT: # %bb.63: # %cmpxchg.fencedstore294670; CHECK-NEXT: extsb 7, 74671; CHECK-NEXT: sync4672; CHECK-NEXT: .LBB3_64: # %cmpxchg.trystore284673; CHECK-NEXT: #4674; CHECK-NEXT: stwcx. 7, 0, 114675; CHECK-NEXT: beq+ 0, .LBB3_674676; CHECK-NEXT: # %bb.65: # %cmpxchg.releasedload274677; CHECK-NEXT: #4678; CHECK-NEXT: lwarx 8, 0, 114679; CHECK-NEXT: cmplw 8, 64680; CHECK-NEXT: beq+ 0, .LBB3_644681; CHECK-NEXT: .LBB3_66: # %cmpxchg.nostore254682; CHECK-NEXT: lwsync4683; CHECK-NEXT: crxor 20, 20, 204684; CHECK-NEXT: b .LBB3_684685; CHECK-NEXT: .LBB3_67: # %cmpxchg.success264686; CHECK-NEXT: lwsync4687; CHECK-NEXT: creqv 20, 20, 204688; CHECK-NEXT: .LBB3_68: # %cmpxchg.end234689; CHECK-NEXT: li 6, 04690; CHECK-NEXT: li 7, 14691; CHECK-NEXT: isel 6, 7, 6, 204692; CHECK-NEXT: lbz 7, sc@toc@l(4)4693; CHECK-NEXT: stw 6, ui@toc@l(5)4694; CHECK-NEXT: lbz 6, uc@toc@l(3)4695; CHECK-NEXT: ldarx 8, 0, 124696; CHECK-NEXT: cmpld 8, 64697; CHECK-NEXT: bne- 0, .LBB3_724698; CHECK-NEXT: # %bb.69: # %cmpxchg.fencedstore104699; CHECK-NEXT: extsb 7, 74700; CHECK-NEXT: sync4701; CHECK-NEXT: .LBB3_70: # %cmpxchg.trystore94702; CHECK-NEXT: #4703; CHECK-NEXT: stdcx. 7, 0, 124704; CHECK-NEXT: beq+ 0, .LBB3_734705; CHECK-NEXT: # %bb.71: # %cmpxchg.releasedload84706; CHECK-NEXT: #4707; CHECK-NEXT: ldarx 8, 0, 124708; CHECK-NEXT: cmpld 8, 64709; CHECK-NEXT: beq+ 0, .LBB3_704710; CHECK-NEXT: .LBB3_72: # %cmpxchg.nostore64711; CHECK-NEXT: lwsync4712; CHECK-NEXT: crxor 20, 20, 204713; CHECK-NEXT: b .LBB3_744714; CHECK-NEXT: .LBB3_73: # %cmpxchg.success74715; CHECK-NEXT: lwsync4716; CHECK-NEXT: creqv 20, 20, 204717; CHECK-NEXT: .LBB3_74: # %cmpxchg.end44718; CHECK-NEXT: li 6, 04719; CHECK-NEXT: li 7, 14720; CHECK-NEXT: lbz 3, uc@toc@l(3)4721; CHECK-NEXT: lbz 4, sc@toc@l(4)4722; CHECK-NEXT: isel 6, 7, 6, 204723; CHECK-NEXT: stw 6, ui@toc@l(5)4724; CHECK-NEXT: ldarx 6, 0, 04725; CHECK-NEXT: cmpld 6, 34726; CHECK-NEXT: bne- 0, .LBB3_784727; CHECK-NEXT: # %bb.75: # %cmpxchg.fencedstore4728; CHECK-NEXT: extsb 4, 44729; CHECK-NEXT: sync4730; CHECK-NEXT: .LBB3_76: # %cmpxchg.trystore4731; CHECK-NEXT: #4732; CHECK-NEXT: stdcx. 4, 0, 04733; CHECK-NEXT: beq+ 0, .LBB3_794734; CHECK-NEXT: # %bb.77: # %cmpxchg.releasedload4735; CHECK-NEXT: #4736; CHECK-NEXT: ldarx 6, 0, 04737; CHECK-NEXT: cmpld 6, 34738; CHECK-NEXT: beq+ 0, .LBB3_764739; CHECK-NEXT: .LBB3_78: # %cmpxchg.nostore4740; CHECK-NEXT: lwsync4741; CHECK-NEXT: crxor 20, 20, 204742; CHECK-NEXT: b .LBB3_804743; CHECK-NEXT: .LBB3_79: # %cmpxchg.success4744; CHECK-NEXT: lwsync4745; CHECK-NEXT: creqv 20, 20, 204746; CHECK-NEXT: .LBB3_80: # %cmpxchg.end4747; CHECK-NEXT: li 3, 04748; CHECK-NEXT: li 4, 14749; CHECK-NEXT: ld 30, -16(1) # 8-byte Folded Reload4750; CHECK-NEXT: ld 29, -24(1) # 8-byte Folded Reload4751; CHECK-NEXT: ld 28, -32(1) # 8-byte Folded Reload4752; CHECK-NEXT: ld 27, -40(1) # 8-byte Folded Reload4753; CHECK-NEXT: isel 3, 4, 3, 204754; CHECK-NEXT: stw 3, ui@toc@l(5)4755; CHECK-NEXT: blr4756;4757; AIX32-LABEL: test_compare_and_swap:4758; AIX32: # %bb.0: # %entry4759; AIX32-NEXT: mflr 04760; AIX32-NEXT: stwu 1, -144(1)4761; AIX32-NEXT: stw 0, 152(1)4762; AIX32-NEXT: stw 29, 132(1) # 4-byte Folded Spill4763; AIX32-NEXT: lwz 29, L..C0(2) # @sc4764; AIX32-NEXT: stw 26, 120(1) # 4-byte Folded Spill4765; AIX32-NEXT: not 3, 294766; AIX32-NEXT: stw 30, 136(1) # 4-byte Folded Spill4767; AIX32-NEXT: lwz 30, L..C1(2) # @uc4768; AIX32-NEXT: lbz 4, 0(30)4769; AIX32-NEXT: lbz 5, 0(29)4770; AIX32-NEXT: stw 27, 124(1) # 4-byte Folded Spill4771; AIX32-NEXT: rlwinm 27, 29, 0, 0, 294772; AIX32-NEXT: stw 14, 72(1) # 4-byte Folded Spill4773; AIX32-NEXT: stw 15, 76(1) # 4-byte Folded Spill4774; AIX32-NEXT: rlwinm 26, 3, 3, 27, 284775; AIX32-NEXT: li 3, 2554776; AIX32-NEXT: slw 3, 3, 264777; AIX32-NEXT: stw 16, 80(1) # 4-byte Folded Spill4778; AIX32-NEXT: stw 17, 84(1) # 4-byte Folded Spill4779; AIX32-NEXT: stw 18, 88(1) # 4-byte Folded Spill4780; AIX32-NEXT: stw 19, 92(1) # 4-byte Folded Spill4781; AIX32-NEXT: stw 20, 96(1) # 4-byte Folded Spill4782; AIX32-NEXT: stw 21, 100(1) # 4-byte Folded Spill4783; AIX32-NEXT: stw 22, 104(1) # 4-byte Folded Spill4784; AIX32-NEXT: stw 23, 108(1) # 4-byte Folded Spill4785; AIX32-NEXT: stw 24, 112(1) # 4-byte Folded Spill4786; AIX32-NEXT: stw 25, 116(1) # 4-byte Folded Spill4787; AIX32-NEXT: stw 28, 128(1) # 4-byte Folded Spill4788; AIX32-NEXT: stw 31, 140(1) # 4-byte Folded Spill4789; AIX32-NEXT: not 25, 34790; AIX32-NEXT: lwarx 3, 0, 274791; AIX32-NEXT: srw 6, 3, 264792; AIX32-NEXT: clrlwi 6, 6, 244793; AIX32-NEXT: cmplw 6, 44794; AIX32-NEXT: bne- 0, L..BB3_44795; AIX32-NEXT: # %bb.1: # %cmpxchg.fencedstore2894796; AIX32-NEXT: sync4797; AIX32-NEXT: slw 5, 5, 264798; AIX32-NEXT: L..BB3_2: # %cmpxchg.trystore2884799; AIX32-NEXT: #4800; AIX32-NEXT: and 6, 3, 254801; AIX32-NEXT: or 6, 6, 54802; AIX32-NEXT: stwcx. 6, 0, 274803; AIX32-NEXT: beq+ 0, L..BB3_44804; AIX32-NEXT: # %bb.3: # %cmpxchg.releasedload2874805; AIX32-NEXT: #4806; AIX32-NEXT: lwarx 3, 0, 274807; AIX32-NEXT: srw 6, 3, 264808; AIX32-NEXT: clrlwi 6, 6, 244809; AIX32-NEXT: cmplw 6, 44810; AIX32-NEXT: beq+ 0, L..BB3_24811; AIX32-NEXT: L..BB3_4: # %cmpxchg.nostore2854812; AIX32-NEXT: not 4, 304813; AIX32-NEXT: srw 5, 3, 264814; AIX32-NEXT: lwsync4815; AIX32-NEXT: lbz 3, 0(30)4816; AIX32-NEXT: rlwinm 24, 30, 0, 0, 294817; AIX32-NEXT: rlwinm 23, 4, 3, 27, 284818; AIX32-NEXT: li 4, 2554819; AIX32-NEXT: stb 5, 0(29)4820; AIX32-NEXT: slw 4, 4, 234821; AIX32-NEXT: not 22, 44822; AIX32-NEXT: lwarx 4, 0, 244823; AIX32-NEXT: srw 6, 4, 234824; AIX32-NEXT: clrlwi 6, 6, 244825; AIX32-NEXT: cmplw 6, 34826; AIX32-NEXT: bne- 0, L..BB3_84827; AIX32-NEXT: # %bb.5: # %cmpxchg.fencedstore2564828; AIX32-NEXT: clrlwi 5, 5, 244829; AIX32-NEXT: sync4830; AIX32-NEXT: slw 5, 5, 234831; AIX32-NEXT: L..BB3_6: # %cmpxchg.trystore2554832; AIX32-NEXT: #4833; AIX32-NEXT: and 6, 4, 224834; AIX32-NEXT: or 6, 6, 54835; AIX32-NEXT: stwcx. 6, 0, 244836; AIX32-NEXT: beq+ 0, L..BB3_84837; AIX32-NEXT: # %bb.7: # %cmpxchg.releasedload2544838; AIX32-NEXT: #4839; AIX32-NEXT: lwarx 4, 0, 244840; AIX32-NEXT: srw 6, 4, 234841; AIX32-NEXT: clrlwi 6, 6, 244842; AIX32-NEXT: cmplw 6, 34843; AIX32-NEXT: beq+ 0, L..BB3_64844; AIX32-NEXT: L..BB3_8: # %cmpxchg.nostore2524845; AIX32-NEXT: srw 4, 4, 234846; AIX32-NEXT: lwsync4847; AIX32-NEXT: lis 3, 04848; AIX32-NEXT: lbz 7, 0(29)4849; AIX32-NEXT: stb 4, 0(30)4850; AIX32-NEXT: clrlwi 6, 4, 244851; AIX32-NEXT: lwz 4, L..C2(2) # @ss4852; AIX32-NEXT: ori 3, 3, 655354853; AIX32-NEXT: clrlwi 5, 4, 304854; AIX32-NEXT: rlwinm 21, 4, 0, 0, 294855; AIX32-NEXT: xori 5, 5, 24856; AIX32-NEXT: slwi 20, 5, 34857; AIX32-NEXT: slw 5, 3, 204858; AIX32-NEXT: not 19, 54859; AIX32-NEXT: lwarx 5, 0, 214860; AIX32-NEXT: srw 8, 5, 204861; AIX32-NEXT: clrlwi 8, 8, 164862; AIX32-NEXT: cmplw 8, 64863; AIX32-NEXT: bne- 0, L..BB3_124864; AIX32-NEXT: # %bb.9: # %cmpxchg.fencedstore2234865; AIX32-NEXT: extsb 7, 74866; AIX32-NEXT: sync4867; AIX32-NEXT: clrlwi 7, 7, 164868; AIX32-NEXT: slw 7, 7, 204869; AIX32-NEXT: L..BB3_10: # %cmpxchg.trystore2224870; AIX32-NEXT: #4871; AIX32-NEXT: and 8, 5, 194872; AIX32-NEXT: or 8, 8, 74873; AIX32-NEXT: stwcx. 8, 0, 214874; AIX32-NEXT: beq+ 0, L..BB3_124875; AIX32-NEXT: # %bb.11: # %cmpxchg.releasedload2214876; AIX32-NEXT: #4877; AIX32-NEXT: lwarx 5, 0, 214878; AIX32-NEXT: srw 8, 5, 204879; AIX32-NEXT: clrlwi 8, 8, 164880; AIX32-NEXT: cmplw 8, 64881; AIX32-NEXT: beq+ 0, L..BB3_104882; AIX32-NEXT: L..BB3_12: # %cmpxchg.nostore2194883; AIX32-NEXT: srw 5, 5, 204884; AIX32-NEXT: lwsync4885; AIX32-NEXT: lbz 6, 0(29)4886; AIX32-NEXT: sth 5, 0(4)4887; AIX32-NEXT: lwz 4, L..C3(2) # @us4888; AIX32-NEXT: lbz 5, 0(30)4889; AIX32-NEXT: clrlwi 7, 4, 304890; AIX32-NEXT: rlwinm 18, 4, 0, 0, 294891; AIX32-NEXT: xori 7, 7, 24892; AIX32-NEXT: slwi 17, 7, 34893; AIX32-NEXT: slw 3, 3, 174894; AIX32-NEXT: not 16, 34895; AIX32-NEXT: lwarx 3, 0, 184896; AIX32-NEXT: srw 7, 3, 174897; AIX32-NEXT: clrlwi 7, 7, 164898; AIX32-NEXT: cmplw 7, 54899; AIX32-NEXT: bne- 0, L..BB3_164900; AIX32-NEXT: # %bb.13: # %cmpxchg.fencedstore1904901; AIX32-NEXT: extsb 6, 64902; AIX32-NEXT: sync4903; AIX32-NEXT: clrlwi 6, 6, 164904; AIX32-NEXT: slw 6, 6, 174905; AIX32-NEXT: L..BB3_14: # %cmpxchg.trystore1894906; AIX32-NEXT: #4907; AIX32-NEXT: and 7, 3, 164908; AIX32-NEXT: or 7, 7, 64909; AIX32-NEXT: stwcx. 7, 0, 184910; AIX32-NEXT: beq+ 0, L..BB3_164911; AIX32-NEXT: # %bb.15: # %cmpxchg.releasedload1884912; AIX32-NEXT: #4913; AIX32-NEXT: lwarx 3, 0, 184914; AIX32-NEXT: srw 7, 3, 174915; AIX32-NEXT: clrlwi 7, 7, 164916; AIX32-NEXT: cmplw 7, 54917; AIX32-NEXT: beq+ 0, L..BB3_144918; AIX32-NEXT: L..BB3_16: # %cmpxchg.nostore1864919; AIX32-NEXT: srw 3, 3, 174920; AIX32-NEXT: lwsync4921; AIX32-NEXT: lwz 15, L..C4(2) # @si4922; AIX32-NEXT: lbz 5, 0(29)4923; AIX32-NEXT: sth 3, 0(4)4924; AIX32-NEXT: lbz 4, 0(30)4925; AIX32-NEXT: lwarx 3, 0, 154926; AIX32-NEXT: cmplw 3, 44927; AIX32-NEXT: bne- 0, L..BB3_204928; AIX32-NEXT: # %bb.17: # %cmpxchg.fencedstore1714929; AIX32-NEXT: extsb 5, 54930; AIX32-NEXT: sync4931; AIX32-NEXT: L..BB3_18: # %cmpxchg.trystore1704932; AIX32-NEXT: #4933; AIX32-NEXT: stwcx. 5, 0, 154934; AIX32-NEXT: beq+ 0, L..BB3_204935; AIX32-NEXT: # %bb.19: # %cmpxchg.releasedload1694936; AIX32-NEXT: #4937; AIX32-NEXT: lwarx 3, 0, 154938; AIX32-NEXT: cmplw 3, 44939; AIX32-NEXT: beq+ 0, L..BB3_184940; AIX32-NEXT: L..BB3_20: # %cmpxchg.nostore1674941; AIX32-NEXT: lwsync4942; AIX32-NEXT: lwz 28, L..C5(2) # @ui4943; AIX32-NEXT: stw 3, 0(15)4944; AIX32-NEXT: lbz 4, 0(30)4945; AIX32-NEXT: lbz 5, 0(29)4946; AIX32-NEXT: lwarx 3, 0, 284947; AIX32-NEXT: cmplw 3, 44948; AIX32-NEXT: bne- 0, L..BB3_244949; AIX32-NEXT: # %bb.21: # %cmpxchg.fencedstore1524950; AIX32-NEXT: extsb 5, 54951; AIX32-NEXT: sync4952; AIX32-NEXT: L..BB3_22: # %cmpxchg.trystore1514953; AIX32-NEXT: #4954; AIX32-NEXT: stwcx. 5, 0, 284955; AIX32-NEXT: beq+ 0, L..BB3_244956; AIX32-NEXT: # %bb.23: # %cmpxchg.releasedload1504957; AIX32-NEXT: #4958; AIX32-NEXT: lwarx 3, 0, 284959; AIX32-NEXT: cmplw 3, 44960; AIX32-NEXT: beq+ 0, L..BB3_224961; AIX32-NEXT: L..BB3_24: # %cmpxchg.nostore1484962; AIX32-NEXT: lwsync4963; AIX32-NEXT: stw 3, 0(28)4964; AIX32-NEXT: lwz 31, L..C6(2) # @sll4965; AIX32-NEXT: lbz 3, 0(29)4966; AIX32-NEXT: li 14, 04967; AIX32-NEXT: addi 4, 1, 644968; AIX32-NEXT: li 7, 54969; AIX32-NEXT: li 8, 54970; AIX32-NEXT: stw 14, 64(1)4971; AIX32-NEXT: extsb 6, 34972; AIX32-NEXT: lbz 3, 0(30)4973; AIX32-NEXT: srawi 5, 6, 314974; AIX32-NEXT: stw 3, 68(1)4975; AIX32-NEXT: mr 3, 314976; AIX32-NEXT: bl .__atomic_compare_exchange_8[PR]4977; AIX32-NEXT: nop4978; AIX32-NEXT: lwz 3, 68(1)4979; AIX32-NEXT: lbz 4, 0(29)4980; AIX32-NEXT: li 7, 54981; AIX32-NEXT: li 8, 54982; AIX32-NEXT: stw 3, 4(31)4983; AIX32-NEXT: lwz 3, 64(1)4984; AIX32-NEXT: extsb 6, 44985; AIX32-NEXT: addi 4, 1, 644986; AIX32-NEXT: stw 14, 64(1)4987; AIX32-NEXT: srawi 5, 6, 314988; AIX32-NEXT: stw 3, 0(31)4989; AIX32-NEXT: lbz 3, 0(30)4990; AIX32-NEXT: lwz 31, L..C7(2) # @ull4991; AIX32-NEXT: stw 3, 68(1)4992; AIX32-NEXT: mr 3, 314993; AIX32-NEXT: bl .__atomic_compare_exchange_8[PR]4994; AIX32-NEXT: nop4995; AIX32-NEXT: lwz 3, 64(1)4996; AIX32-NEXT: lwz 4, 68(1)4997; AIX32-NEXT: lbz 5, 0(29)4998; AIX32-NEXT: stw 4, 4(31)4999; AIX32-NEXT: stw 3, 0(31)5000; AIX32-NEXT: lbz 3, 0(30)5001; AIX32-NEXT: lwarx 4, 0, 275002; AIX32-NEXT: srw 6, 4, 265003; AIX32-NEXT: clrlwi 6, 6, 245004; AIX32-NEXT: cmplw 6, 35005; AIX32-NEXT: bne- 0, L..BB3_285006; AIX32-NEXT: # %bb.25: # %cmpxchg.fencedstore1195007; AIX32-NEXT: sync5008; AIX32-NEXT: slw 5, 5, 265009; AIX32-NEXT: L..BB3_26: # %cmpxchg.trystore1185010; AIX32-NEXT: #5011; AIX32-NEXT: and 4, 4, 255012; AIX32-NEXT: or 4, 4, 55013; AIX32-NEXT: stwcx. 4, 0, 275014; AIX32-NEXT: beq+ 0, L..BB3_295015; AIX32-NEXT: # %bb.27: # %cmpxchg.releasedload1175016; AIX32-NEXT: #5017; AIX32-NEXT: lwarx 4, 0, 275018; AIX32-NEXT: srw 6, 4, 265019; AIX32-NEXT: clrlwi 6, 6, 245020; AIX32-NEXT: cmplw 6, 35021; AIX32-NEXT: beq+ 0, L..BB3_265022; AIX32-NEXT: L..BB3_28: # %cmpxchg.nostore1155023; AIX32-NEXT: crxor 20, 20, 205024; AIX32-NEXT: lwsync5025; AIX32-NEXT: b L..BB3_305026; AIX32-NEXT: L..BB3_29: # %cmpxchg.success1165027; AIX32-NEXT: lwsync5028; AIX32-NEXT: creqv 20, 20, 205029; AIX32-NEXT: L..BB3_30: # %cmpxchg.end1135030; AIX32-NEXT: li 3, 05031; AIX32-NEXT: li 4, 15032; AIX32-NEXT: lbz 5, 0(29)5033; AIX32-NEXT: isel 3, 4, 3, 205034; AIX32-NEXT: stw 3, 0(28)5035; AIX32-NEXT: lbz 3, 0(30)5036; AIX32-NEXT: lwarx 4, 0, 245037; AIX32-NEXT: srw 6, 4, 235038; AIX32-NEXT: clrlwi 6, 6, 245039; AIX32-NEXT: cmplw 6, 35040; AIX32-NEXT: bne- 0, L..BB3_345041; AIX32-NEXT: # %bb.31: # %cmpxchg.fencedstore865042; AIX32-NEXT: sync5043; AIX32-NEXT: slw 5, 5, 235044; AIX32-NEXT: L..BB3_32: # %cmpxchg.trystore855045; AIX32-NEXT: #5046; AIX32-NEXT: and 4, 4, 225047; AIX32-NEXT: or 4, 4, 55048; AIX32-NEXT: stwcx. 4, 0, 245049; AIX32-NEXT: beq+ 0, L..BB3_355050; AIX32-NEXT: # %bb.33: # %cmpxchg.releasedload845051; AIX32-NEXT: #5052; AIX32-NEXT: lwarx 4, 0, 245053; AIX32-NEXT: srw 6, 4, 235054; AIX32-NEXT: clrlwi 6, 6, 245055; AIX32-NEXT: cmplw 6, 35056; AIX32-NEXT: beq+ 0, L..BB3_325057; AIX32-NEXT: L..BB3_34: # %cmpxchg.nostore825058; AIX32-NEXT: crxor 20, 20, 205059; AIX32-NEXT: lwsync5060; AIX32-NEXT: b L..BB3_365061; AIX32-NEXT: L..BB3_35: # %cmpxchg.success835062; AIX32-NEXT: lwsync5063; AIX32-NEXT: creqv 20, 20, 205064; AIX32-NEXT: L..BB3_36: # %cmpxchg.end805065; AIX32-NEXT: li 3, 05066; AIX32-NEXT: li 4, 15067; AIX32-NEXT: lbz 5, 0(29)5068; AIX32-NEXT: isel 3, 4, 3, 205069; AIX32-NEXT: stw 3, 0(28)5070; AIX32-NEXT: lbz 3, 0(30)5071; AIX32-NEXT: lwarx 4, 0, 215072; AIX32-NEXT: srw 6, 4, 205073; AIX32-NEXT: clrlwi 6, 6, 165074; AIX32-NEXT: cmplw 6, 35075; AIX32-NEXT: bne- 0, L..BB3_405076; AIX32-NEXT: # %bb.37: # %cmpxchg.fencedstore535077; AIX32-NEXT: extsb 5, 55078; AIX32-NEXT: sync5079; AIX32-NEXT: clrlwi 5, 5, 165080; AIX32-NEXT: slw 5, 5, 205081; AIX32-NEXT: L..BB3_38: # %cmpxchg.trystore525082; AIX32-NEXT: #5083; AIX32-NEXT: and 4, 4, 195084; AIX32-NEXT: or 4, 4, 55085; AIX32-NEXT: stwcx. 4, 0, 215086; AIX32-NEXT: beq+ 0, L..BB3_415087; AIX32-NEXT: # %bb.39: # %cmpxchg.releasedload515088; AIX32-NEXT: #5089; AIX32-NEXT: lwarx 4, 0, 215090; AIX32-NEXT: srw 6, 4, 205091; AIX32-NEXT: clrlwi 6, 6, 165092; AIX32-NEXT: cmplw 6, 35093; AIX32-NEXT: beq+ 0, L..BB3_385094; AIX32-NEXT: L..BB3_40: # %cmpxchg.nostore495095; AIX32-NEXT: crxor 20, 20, 205096; AIX32-NEXT: lwsync5097; AIX32-NEXT: b L..BB3_425098; AIX32-NEXT: L..BB3_41: # %cmpxchg.success505099; AIX32-NEXT: lwsync5100; AIX32-NEXT: creqv 20, 20, 205101; AIX32-NEXT: L..BB3_42: # %cmpxchg.end475102; AIX32-NEXT: li 3, 05103; AIX32-NEXT: li 4, 15104; AIX32-NEXT: lbz 5, 0(29)5105; AIX32-NEXT: isel 3, 4, 3, 205106; AIX32-NEXT: stw 3, 0(28)5107; AIX32-NEXT: lbz 3, 0(30)5108; AIX32-NEXT: lwarx 4, 0, 185109; AIX32-NEXT: srw 6, 4, 175110; AIX32-NEXT: clrlwi 6, 6, 165111; AIX32-NEXT: cmplw 6, 35112; AIX32-NEXT: bne- 0, L..BB3_465113; AIX32-NEXT: # %bb.43: # %cmpxchg.fencedstore295114; AIX32-NEXT: extsb 5, 55115; AIX32-NEXT: sync5116; AIX32-NEXT: clrlwi 5, 5, 165117; AIX32-NEXT: slw 5, 5, 175118; AIX32-NEXT: L..BB3_44: # %cmpxchg.trystore285119; AIX32-NEXT: #5120; AIX32-NEXT: and 4, 4, 165121; AIX32-NEXT: or 4, 4, 55122; AIX32-NEXT: stwcx. 4, 0, 185123; AIX32-NEXT: beq+ 0, L..BB3_475124; AIX32-NEXT: # %bb.45: # %cmpxchg.releasedload275125; AIX32-NEXT: #5126; AIX32-NEXT: lwarx 4, 0, 185127; AIX32-NEXT: srw 6, 4, 175128; AIX32-NEXT: clrlwi 6, 6, 165129; AIX32-NEXT: cmplw 6, 35130; AIX32-NEXT: beq+ 0, L..BB3_445131; AIX32-NEXT: L..BB3_46: # %cmpxchg.nostore255132; AIX32-NEXT: crxor 20, 20, 205133; AIX32-NEXT: lwsync5134; AIX32-NEXT: b L..BB3_485135; AIX32-NEXT: L..BB3_47: # %cmpxchg.success265136; AIX32-NEXT: lwsync5137; AIX32-NEXT: creqv 20, 20, 205138; AIX32-NEXT: L..BB3_48: # %cmpxchg.end235139; AIX32-NEXT: li 3, 05140; AIX32-NEXT: li 4, 15141; AIX32-NEXT: isel 3, 4, 3, 205142; AIX32-NEXT: lbz 4, 0(29)5143; AIX32-NEXT: stw 3, 0(28)5144; AIX32-NEXT: lbz 3, 0(30)5145; AIX32-NEXT: lwarx 5, 0, 155146; AIX32-NEXT: cmplw 5, 35147; AIX32-NEXT: bne- 0, L..BB3_525148; AIX32-NEXT: # %bb.49: # %cmpxchg.fencedstore105149; AIX32-NEXT: extsb 4, 45150; AIX32-NEXT: sync5151; AIX32-NEXT: L..BB3_50: # %cmpxchg.trystore95152; AIX32-NEXT: #5153; AIX32-NEXT: stwcx. 4, 0, 155154; AIX32-NEXT: beq+ 0, L..BB3_535155; AIX32-NEXT: # %bb.51: # %cmpxchg.releasedload85156; AIX32-NEXT: #5157; AIX32-NEXT: lwarx 5, 0, 155158; AIX32-NEXT: cmplw 5, 35159; AIX32-NEXT: beq+ 0, L..BB3_505160; AIX32-NEXT: L..BB3_52: # %cmpxchg.nostore65161; AIX32-NEXT: crxor 20, 20, 205162; AIX32-NEXT: lwsync5163; AIX32-NEXT: b L..BB3_545164; AIX32-NEXT: L..BB3_53: # %cmpxchg.success75165; AIX32-NEXT: lwsync5166; AIX32-NEXT: creqv 20, 20, 205167; AIX32-NEXT: L..BB3_54: # %cmpxchg.end45168; AIX32-NEXT: li 3, 05169; AIX32-NEXT: li 4, 15170; AIX32-NEXT: isel 3, 4, 3, 205171; AIX32-NEXT: lbz 4, 0(29)5172; AIX32-NEXT: stw 3, 0(28)5173; AIX32-NEXT: lbz 3, 0(30)5174; AIX32-NEXT: lwarx 5, 0, 285175; AIX32-NEXT: cmplw 5, 35176; AIX32-NEXT: bne- 0, L..BB3_585177; AIX32-NEXT: # %bb.55: # %cmpxchg.fencedstore5178; AIX32-NEXT: extsb 4, 45179; AIX32-NEXT: sync5180; AIX32-NEXT: L..BB3_56: # %cmpxchg.trystore5181; AIX32-NEXT: #5182; AIX32-NEXT: stwcx. 4, 0, 285183; AIX32-NEXT: beq+ 0, L..BB3_595184; AIX32-NEXT: # %bb.57: # %cmpxchg.releasedload5185; AIX32-NEXT: #5186; AIX32-NEXT: lwarx 5, 0, 285187; AIX32-NEXT: cmplw 5, 35188; AIX32-NEXT: beq+ 0, L..BB3_565189; AIX32-NEXT: L..BB3_58: # %cmpxchg.nostore5190; AIX32-NEXT: crxor 20, 20, 205191; AIX32-NEXT: lwsync5192; AIX32-NEXT: b L..BB3_605193; AIX32-NEXT: L..BB3_59: # %cmpxchg.success5194; AIX32-NEXT: lwsync5195; AIX32-NEXT: creqv 20, 20, 205196; AIX32-NEXT: L..BB3_60: # %cmpxchg.end5197; AIX32-NEXT: li 3, 15198; AIX32-NEXT: li 31, 05199; AIX32-NEXT: lbz 4, 0(29)5200; AIX32-NEXT: isel 3, 3, 31, 205201; AIX32-NEXT: li 7, 55202; AIX32-NEXT: li 8, 55203; AIX32-NEXT: extsb 6, 45204; AIX32-NEXT: stw 3, 0(28)5205; AIX32-NEXT: lbz 3, 0(30)5206; AIX32-NEXT: addi 4, 1, 645207; AIX32-NEXT: stw 31, 64(1)5208; AIX32-NEXT: srawi 5, 6, 315209; AIX32-NEXT: stw 3, 68(1)5210; AIX32-NEXT: lwz 3, L..C6(2) # @sll5211; AIX32-NEXT: bl .__atomic_compare_exchange_8[PR]5212; AIX32-NEXT: nop5213; AIX32-NEXT: lbz 4, 0(29)5214; AIX32-NEXT: stw 3, 0(28)5215; AIX32-NEXT: lbz 3, 0(30)5216; AIX32-NEXT: li 7, 55217; AIX32-NEXT: li 8, 55218; AIX32-NEXT: extsb 6, 45219; AIX32-NEXT: stw 3, 68(1)5220; AIX32-NEXT: lwz 3, L..C7(2) # @ull5221; AIX32-NEXT: addi 4, 1, 645222; AIX32-NEXT: stw 31, 64(1)5223; AIX32-NEXT: srawi 5, 6, 315224; AIX32-NEXT: bl .__atomic_compare_exchange_8[PR]5225; AIX32-NEXT: nop5226; AIX32-NEXT: stw 3, 0(28)5227; AIX32-NEXT: lwz 31, 140(1) # 4-byte Folded Reload5228; AIX32-NEXT: lwz 30, 136(1) # 4-byte Folded Reload5229; AIX32-NEXT: lwz 29, 132(1) # 4-byte Folded Reload5230; AIX32-NEXT: lwz 28, 128(1) # 4-byte Folded Reload5231; AIX32-NEXT: lwz 27, 124(1) # 4-byte Folded Reload5232; AIX32-NEXT: lwz 26, 120(1) # 4-byte Folded Reload5233; AIX32-NEXT: lwz 25, 116(1) # 4-byte Folded Reload5234; AIX32-NEXT: lwz 24, 112(1) # 4-byte Folded Reload5235; AIX32-NEXT: lwz 23, 108(1) # 4-byte Folded Reload5236; AIX32-NEXT: lwz 22, 104(1) # 4-byte Folded Reload5237; AIX32-NEXT: lwz 21, 100(1) # 4-byte Folded Reload5238; AIX32-NEXT: lwz 20, 96(1) # 4-byte Folded Reload5239; AIX32-NEXT: lwz 19, 92(1) # 4-byte Folded Reload5240; AIX32-NEXT: lwz 18, 88(1) # 4-byte Folded Reload5241; AIX32-NEXT: lwz 17, 84(1) # 4-byte Folded Reload5242; AIX32-NEXT: lwz 16, 80(1) # 4-byte Folded Reload5243; AIX32-NEXT: lwz 15, 76(1) # 4-byte Folded Reload5244; AIX32-NEXT: lwz 14, 72(1) # 4-byte Folded Reload5245; AIX32-NEXT: addi 1, 1, 1445246; AIX32-NEXT: lwz 0, 8(1)5247; AIX32-NEXT: mtlr 05248; AIX32-NEXT: blr5249entry:5250 %0 = load i8, ptr @uc, align 15251 %1 = load i8, ptr @sc, align 15252 %2 = cmpxchg ptr @sc, i8 %0, i8 %1 seq_cst seq_cst, align 15253 %3 = extractvalue { i8, i1 } %2, 05254 store i8 %3, ptr @sc, align 15255 %4 = load i8, ptr @uc, align 15256 %5 = cmpxchg ptr @uc, i8 %4, i8 %3 seq_cst seq_cst, align 15257 %6 = extractvalue { i8, i1 } %5, 05258 store i8 %6, ptr @uc, align 15259 %conv = zext i8 %6 to i165260 %7 = load i8, ptr @sc, align 15261 %conv1 = sext i8 %7 to i165262 %8 = cmpxchg ptr @ss, i16 %conv, i16 %conv1 seq_cst seq_cst, align 25263 %9 = extractvalue { i16, i1 } %8, 05264 store i16 %9, ptr @ss, align 25265 %10 = load i8, ptr @uc, align 15266 %conv2 = zext i8 %10 to i165267 %11 = load i8, ptr @sc, align 15268 %conv3 = sext i8 %11 to i165269 %12 = cmpxchg ptr @us, i16 %conv2, i16 %conv3 seq_cst seq_cst, align 25270 %13 = extractvalue { i16, i1 } %12, 05271 store i16 %13, ptr @us, align 25272 %14 = load i8, ptr @uc, align 15273 %conv4 = zext i8 %14 to i325274 %15 = load i8, ptr @sc, align 15275 %conv5 = sext i8 %15 to i325276 %16 = cmpxchg ptr @si, i32 %conv4, i32 %conv5 seq_cst seq_cst, align 45277 %17 = extractvalue { i32, i1 } %16, 05278 store i32 %17, ptr @si, align 45279 %18 = load i8, ptr @uc, align 15280 %conv6 = zext i8 %18 to i325281 %19 = load i8, ptr @sc, align 15282 %conv7 = sext i8 %19 to i325283 %20 = cmpxchg ptr @ui, i32 %conv6, i32 %conv7 seq_cst seq_cst, align 45284 %21 = extractvalue { i32, i1 } %20, 05285 store i32 %21, ptr @ui, align 45286 %22 = load i8, ptr @uc, align 15287 %conv8 = zext i8 %22 to i645288 %23 = load i8, ptr @sc, align 15289 %conv9 = sext i8 %23 to i645290 %24 = cmpxchg ptr @sll, i64 %conv8, i64 %conv9 seq_cst seq_cst, align 85291 %25 = extractvalue { i64, i1 } %24, 05292 store i64 %25, ptr @sll, align 85293 %26 = load i8, ptr @uc, align 15294 %conv10 = zext i8 %26 to i645295 %27 = load i8, ptr @sc, align 15296 %conv11 = sext i8 %27 to i645297 %28 = cmpxchg ptr @ull, i64 %conv10, i64 %conv11 seq_cst seq_cst, align 85298 %29 = extractvalue { i64, i1 } %28, 05299 store i64 %29, ptr @ull, align 85300 %30 = load i8, ptr @uc, align 15301 %31 = load i8, ptr @sc, align 15302 %32 = cmpxchg ptr @sc, i8 %30, i8 %31 seq_cst seq_cst, align 15303 %33 = extractvalue { i8, i1 } %32, 15304 %conv12 = zext i1 %33 to i325305 store i32 %conv12, ptr @ui, align 45306 %34 = load i8, ptr @uc, align 15307 %35 = load i8, ptr @sc, align 15308 %36 = cmpxchg ptr @uc, i8 %34, i8 %35 seq_cst seq_cst, align 15309 %37 = extractvalue { i8, i1 } %36, 15310 %conv13 = zext i1 %37 to i325311 store i32 %conv13, ptr @ui, align 45312 %38 = load i8, ptr @uc, align 15313 %conv14 = zext i8 %38 to i165314 %39 = load i8, ptr @sc, align 15315 %conv15 = sext i8 %39 to i165316 %40 = cmpxchg ptr @ss, i16 %conv14, i16 %conv15 seq_cst seq_cst, align 25317 %41 = extractvalue { i16, i1 } %40, 15318 %conv16 = zext i1 %41 to i325319 store i32 %conv16, ptr @ui, align 45320 %42 = load i8, ptr @uc, align 15321 %conv17 = zext i8 %42 to i165322 %43 = load i8, ptr @sc, align 15323 %conv18 = sext i8 %43 to i165324 %44 = cmpxchg ptr @us, i16 %conv17, i16 %conv18 seq_cst seq_cst, align 25325 %45 = extractvalue { i16, i1 } %44, 15326 %conv19 = zext i1 %45 to i325327 store i32 %conv19, ptr @ui, align 45328 %46 = load i8, ptr @uc, align 15329 %conv20 = zext i8 %46 to i325330 %47 = load i8, ptr @sc, align 15331 %conv21 = sext i8 %47 to i325332 %48 = cmpxchg ptr @si, i32 %conv20, i32 %conv21 seq_cst seq_cst, align 45333 %49 = extractvalue { i32, i1 } %48, 15334 %conv22 = zext i1 %49 to i325335 store i32 %conv22, ptr @ui, align 45336 %50 = load i8, ptr @uc, align 15337 %conv23 = zext i8 %50 to i325338 %51 = load i8, ptr @sc, align 15339 %conv24 = sext i8 %51 to i325340 %52 = cmpxchg ptr @ui, i32 %conv23, i32 %conv24 seq_cst seq_cst, align 45341 %53 = extractvalue { i32, i1 } %52, 15342 %conv25 = zext i1 %53 to i325343 store i32 %conv25, ptr @ui, align 45344 %54 = load i8, ptr @uc, align 15345 %conv26 = zext i8 %54 to i645346 %55 = load i8, ptr @sc, align 15347 %conv27 = sext i8 %55 to i645348 %56 = cmpxchg ptr @sll, i64 %conv26, i64 %conv27 seq_cst seq_cst, align 85349 %57 = extractvalue { i64, i1 } %56, 15350 %conv28 = zext i1 %57 to i325351 store i32 %conv28, ptr @ui, align 45352 %58 = load i8, ptr @uc, align 15353 %conv29 = zext i8 %58 to i645354 %59 = load i8, ptr @sc, align 15355 %conv30 = sext i8 %59 to i645356 %60 = cmpxchg ptr @ull, i64 %conv29, i64 %conv30 seq_cst seq_cst, align 85357 %61 = extractvalue { i64, i1 } %60, 15358 %conv31 = zext i1 %61 to i325359 store i32 %conv31, ptr @ui, align 45360 ret void5361}5362 5363define dso_local void @test_lock() local_unnamed_addr #0 {5364; CHECK-LABEL: test_lock:5365; CHECK: # %bb.0: # %entry5366; CHECK-NEXT: addis 3, 2, sc@toc@ha5367; CHECK-NEXT: sync5368; CHECK-NEXT: li 7, 15369; CHECK-NEXT: addi 4, 3, sc@toc@l5370; CHECK-NEXT: .LBB4_1: # %entry5371; CHECK-NEXT: #5372; CHECK-NEXT: lbarx 5, 0, 45373; CHECK-NEXT: stbcx. 7, 0, 45374; CHECK-NEXT: bne- 0, .LBB4_15375; CHECK-NEXT: # %bb.2: # %entry5376; CHECK-NEXT: addis 4, 2, uc@toc@ha5377; CHECK-NEXT: lwsync5378; CHECK-NEXT: stb 5, sc@toc@l(3)5379; CHECK-NEXT: sync5380; CHECK-NEXT: addi 6, 4, uc@toc@l5381; CHECK-NEXT: .LBB4_3: # %entry5382; CHECK-NEXT: #5383; CHECK-NEXT: lbarx 5, 0, 65384; CHECK-NEXT: stbcx. 7, 0, 65385; CHECK-NEXT: bne- 0, .LBB4_35386; CHECK-NEXT: # %bb.4: # %entry5387; CHECK-NEXT: lwsync5388; CHECK-NEXT: stb 5, uc@toc@l(4)5389; CHECK-NEXT: addis 5, 2, ss@toc@ha5390; CHECK-NEXT: sync5391; CHECK-NEXT: addi 8, 5, ss@toc@l5392; CHECK-NEXT: .LBB4_5: # %entry5393; CHECK-NEXT: #5394; CHECK-NEXT: lharx 6, 0, 85395; CHECK-NEXT: sthcx. 7, 0, 85396; CHECK-NEXT: bne- 0, .LBB4_55397; CHECK-NEXT: # %bb.6: # %entry5398; CHECK-NEXT: lwsync5399; CHECK-NEXT: sth 6, ss@toc@l(5)5400; CHECK-NEXT: addis 6, 2, us@toc@ha5401; CHECK-NEXT: sync5402; CHECK-NEXT: addi 9, 6, us@toc@l5403; CHECK-NEXT: .LBB4_7: # %entry5404; CHECK-NEXT: #5405; CHECK-NEXT: lharx 8, 0, 95406; CHECK-NEXT: sthcx. 7, 0, 95407; CHECK-NEXT: bne- 0, .LBB4_75408; CHECK-NEXT: # %bb.8: # %entry5409; CHECK-NEXT: lwsync5410; CHECK-NEXT: sth 8, us@toc@l(6)5411; CHECK-NEXT: addis 8, 2, si@toc@ha5412; CHECK-NEXT: sync5413; CHECK-NEXT: addi 10, 8, si@toc@l5414; CHECK-NEXT: .LBB4_9: # %entry5415; CHECK-NEXT: #5416; CHECK-NEXT: lwarx 9, 0, 105417; CHECK-NEXT: stwcx. 7, 0, 105418; CHECK-NEXT: bne- 0, .LBB4_95419; CHECK-NEXT: # %bb.10: # %entry5420; CHECK-NEXT: lwsync5421; CHECK-NEXT: stw 9, si@toc@l(8)5422; CHECK-NEXT: addis 9, 2, ui@toc@ha5423; CHECK-NEXT: sync5424; CHECK-NEXT: addi 11, 9, ui@toc@l5425; CHECK-NEXT: .LBB4_11: # %entry5426; CHECK-NEXT: #5427; CHECK-NEXT: lwarx 10, 0, 115428; CHECK-NEXT: stwcx. 7, 0, 115429; CHECK-NEXT: bne- 0, .LBB4_115430; CHECK-NEXT: # %bb.12: # %entry5431; CHECK-NEXT: addis 7, 2, sll@toc@ha5432; CHECK-NEXT: lwsync5433; CHECK-NEXT: stw 10, ui@toc@l(9)5434; CHECK-NEXT: li 11, 15435; CHECK-NEXT: sync5436; CHECK-NEXT: addi 10, 7, sll@toc@l5437; CHECK-NEXT: .LBB4_13: # %entry5438; CHECK-NEXT: #5439; CHECK-NEXT: ldarx 12, 0, 105440; CHECK-NEXT: stdcx. 11, 0, 105441; CHECK-NEXT: bne- 0, .LBB4_135442; CHECK-NEXT: # %bb.14: # %entry5443; CHECK-NEXT: addis 10, 2, ull@toc@ha5444; CHECK-NEXT: lwsync5445; CHECK-NEXT: std 12, sll@toc@l(7)5446; CHECK-NEXT: sync5447; CHECK-NEXT: addi 0, 10, ull@toc@l5448; CHECK-NEXT: .LBB4_15: # %entry5449; CHECK-NEXT: #5450; CHECK-NEXT: ldarx 12, 0, 05451; CHECK-NEXT: stdcx. 11, 0, 05452; CHECK-NEXT: bne- 0, .LBB4_155453; CHECK-NEXT: # %bb.16: # %entry5454; CHECK-NEXT: lwsync5455; CHECK-NEXT: std 12, ull@toc@l(10)5456; CHECK-NEXT: li 11, 05457; CHECK-NEXT: sync5458; CHECK-NEXT: lwsync5459; CHECK-NEXT: stb 11, sc@toc@l(3)5460; CHECK-NEXT: li 3, 05461; CHECK-NEXT: lwsync5462; CHECK-NEXT: stb 11, uc@toc@l(4)5463; CHECK-NEXT: lwsync5464; CHECK-NEXT: sth 11, ss@toc@l(5)5465; CHECK-NEXT: lwsync5466; CHECK-NEXT: sth 11, us@toc@l(6)5467; CHECK-NEXT: lwsync5468; CHECK-NEXT: stw 11, si@toc@l(8)5469; CHECK-NEXT: lwsync5470; CHECK-NEXT: stw 11, ui@toc@l(9)5471; CHECK-NEXT: lwsync5472; CHECK-NEXT: std 3, sll@toc@l(7)5473; CHECK-NEXT: lwsync5474; CHECK-NEXT: std 3, ull@toc@l(10)5475; CHECK-NEXT: blr5476;5477; AIX32-LABEL: test_lock:5478; AIX32: # %bb.0: # %entry5479; AIX32-NEXT: mflr 05480; AIX32-NEXT: stwu 1, -96(1)5481; AIX32-NEXT: stw 0, 104(1)5482; AIX32-NEXT: stw 29, 84(1) # 4-byte Folded Spill5483; AIX32-NEXT: lwz 29, L..C0(2) # @sc5484; AIX32-NEXT: li 3, 15485; AIX32-NEXT: li 6, 2555486; AIX32-NEXT: stw 23, 60(1) # 4-byte Folded Spill5487; AIX32-NEXT: stw 24, 64(1) # 4-byte Folded Spill5488; AIX32-NEXT: rlwinm 4, 29, 3, 27, 285489; AIX32-NEXT: stw 25, 68(1) # 4-byte Folded Spill5490; AIX32-NEXT: stw 26, 72(1) # 4-byte Folded Spill5491; AIX32-NEXT: stw 27, 76(1) # 4-byte Folded Spill5492; AIX32-NEXT: xori 4, 4, 245493; AIX32-NEXT: stw 28, 80(1) # 4-byte Folded Spill5494; AIX32-NEXT: stw 30, 88(1) # 4-byte Folded Spill5495; AIX32-NEXT: stw 31, 92(1) # 4-byte Folded Spill5496; AIX32-NEXT: slw 7, 3, 45497; AIX32-NEXT: slw 6, 6, 45498; AIX32-NEXT: sync5499; AIX32-NEXT: rlwinm 5, 29, 0, 0, 295500; AIX32-NEXT: and 7, 7, 65501; AIX32-NEXT: L..BB4_1: # %entry5502; AIX32-NEXT: #5503; AIX32-NEXT: lwarx 8, 0, 55504; AIX32-NEXT: andc 9, 8, 65505; AIX32-NEXT: or 9, 7, 95506; AIX32-NEXT: stwcx. 9, 0, 55507; AIX32-NEXT: bne- 0, L..BB4_15508; AIX32-NEXT: # %bb.2: # %entry5509; AIX32-NEXT: srw 4, 8, 45510; AIX32-NEXT: lwz 28, L..C1(2) # @uc5511; AIX32-NEXT: lwsync5512; AIX32-NEXT: li 6, 2555513; AIX32-NEXT: clrlwi 4, 4, 245514; AIX32-NEXT: rlwinm 5, 28, 0, 0, 295515; AIX32-NEXT: stb 4, 0(29)5516; AIX32-NEXT: rlwinm 4, 28, 3, 27, 285517; AIX32-NEXT: sync5518; AIX32-NEXT: xori 4, 4, 245519; AIX32-NEXT: slw 7, 3, 45520; AIX32-NEXT: slw 6, 6, 45521; AIX32-NEXT: and 7, 7, 65522; AIX32-NEXT: L..BB4_3: # %entry5523; AIX32-NEXT: #5524; AIX32-NEXT: lwarx 8, 0, 55525; AIX32-NEXT: andc 9, 8, 65526; AIX32-NEXT: or 9, 7, 95527; AIX32-NEXT: stwcx. 9, 0, 55528; AIX32-NEXT: bne- 0, L..BB4_35529; AIX32-NEXT: # %bb.4: # %entry5530; AIX32-NEXT: srw 4, 8, 45531; AIX32-NEXT: lwz 27, L..C2(2) # @ss5532; AIX32-NEXT: lwsync5533; AIX32-NEXT: li 6, 05534; AIX32-NEXT: clrlwi 4, 4, 245535; AIX32-NEXT: ori 6, 6, 655355536; AIX32-NEXT: rlwinm 5, 27, 0, 0, 295537; AIX32-NEXT: stb 4, 0(28)5538; AIX32-NEXT: rlwinm 4, 27, 3, 27, 275539; AIX32-NEXT: sync5540; AIX32-NEXT: xori 4, 4, 165541; AIX32-NEXT: slw 7, 3, 45542; AIX32-NEXT: slw 6, 6, 45543; AIX32-NEXT: and 7, 7, 65544; AIX32-NEXT: L..BB4_5: # %entry5545; AIX32-NEXT: #5546; AIX32-NEXT: lwarx 8, 0, 55547; AIX32-NEXT: andc 9, 8, 65548; AIX32-NEXT: or 9, 7, 95549; AIX32-NEXT: stwcx. 9, 0, 55550; AIX32-NEXT: bne- 0, L..BB4_55551; AIX32-NEXT: # %bb.6: # %entry5552; AIX32-NEXT: srw 4, 8, 45553; AIX32-NEXT: lwz 26, L..C3(2) # @us5554; AIX32-NEXT: lwsync5555; AIX32-NEXT: li 6, 05556; AIX32-NEXT: clrlwi 4, 4, 165557; AIX32-NEXT: ori 6, 6, 655355558; AIX32-NEXT: rlwinm 5, 26, 0, 0, 295559; AIX32-NEXT: sth 4, 0(27)5560; AIX32-NEXT: rlwinm 4, 26, 3, 27, 275561; AIX32-NEXT: sync5562; AIX32-NEXT: xori 4, 4, 165563; AIX32-NEXT: slw 7, 3, 45564; AIX32-NEXT: slw 6, 6, 45565; AIX32-NEXT: and 7, 7, 65566; AIX32-NEXT: L..BB4_7: # %entry5567; AIX32-NEXT: #5568; AIX32-NEXT: lwarx 8, 0, 55569; AIX32-NEXT: andc 9, 8, 65570; AIX32-NEXT: or 9, 7, 95571; AIX32-NEXT: stwcx. 9, 0, 55572; AIX32-NEXT: bne- 0, L..BB4_75573; AIX32-NEXT: # %bb.8: # %entry5574; AIX32-NEXT: srw 4, 8, 45575; AIX32-NEXT: lwsync5576; AIX32-NEXT: lwz 25, L..C4(2) # @si5577; AIX32-NEXT: clrlwi 4, 4, 165578; AIX32-NEXT: sth 4, 0(26)5579; AIX32-NEXT: sync5580; AIX32-NEXT: L..BB4_9: # %entry5581; AIX32-NEXT: #5582; AIX32-NEXT: lwarx 4, 0, 255583; AIX32-NEXT: stwcx. 3, 0, 255584; AIX32-NEXT: bne- 0, L..BB4_95585; AIX32-NEXT: # %bb.10: # %entry5586; AIX32-NEXT: lwsync5587; AIX32-NEXT: stw 4, 0(25)5588; AIX32-NEXT: lwz 24, L..C5(2) # @ui5589; AIX32-NEXT: sync5590; AIX32-NEXT: L..BB4_11: # %entry5591; AIX32-NEXT: #5592; AIX32-NEXT: lwarx 4, 0, 245593; AIX32-NEXT: stwcx. 3, 0, 245594; AIX32-NEXT: bne- 0, L..BB4_115595; AIX32-NEXT: # %bb.12: # %entry5596; AIX32-NEXT: lwz 31, L..C6(2) # @sll5597; AIX32-NEXT: lwsync5598; AIX32-NEXT: stw 4, 0(24)5599; AIX32-NEXT: mr 3, 315600; AIX32-NEXT: li 4, 05601; AIX32-NEXT: li 5, 15602; AIX32-NEXT: li 6, 55603; AIX32-NEXT: li 23, 05604; AIX32-NEXT: bl .__atomic_exchange_8[PR]5605; AIX32-NEXT: nop5606; AIX32-NEXT: lwz 30, L..C7(2) # @ull5607; AIX32-NEXT: stw 4, 4(31)5608; AIX32-NEXT: li 4, 05609; AIX32-NEXT: li 5, 15610; AIX32-NEXT: li 6, 55611; AIX32-NEXT: stw 3, 0(31)5612; AIX32-NEXT: mr 3, 305613; AIX32-NEXT: bl .__atomic_exchange_8[PR]5614; AIX32-NEXT: nop5615; AIX32-NEXT: stw 4, 4(30)5616; AIX32-NEXT: stw 3, 0(30)5617; AIX32-NEXT: sync5618; AIX32-NEXT: li 4, 05619; AIX32-NEXT: li 5, 05620; AIX32-NEXT: mr 3, 315621; AIX32-NEXT: lwsync5622; AIX32-NEXT: stb 23, 0(29)5623; AIX32-NEXT: li 6, 35624; AIX32-NEXT: lwsync5625; AIX32-NEXT: stb 23, 0(28)5626; AIX32-NEXT: lwsync5627; AIX32-NEXT: sth 23, 0(27)5628; AIX32-NEXT: lwsync5629; AIX32-NEXT: sth 23, 0(26)5630; AIX32-NEXT: lwsync5631; AIX32-NEXT: stw 23, 0(25)5632; AIX32-NEXT: lwsync5633; AIX32-NEXT: stw 23, 0(24)5634; AIX32-NEXT: bl .__atomic_store_8[PR]5635; AIX32-NEXT: nop5636; AIX32-NEXT: li 4, 05637; AIX32-NEXT: li 5, 05638; AIX32-NEXT: mr 3, 305639; AIX32-NEXT: li 6, 35640; AIX32-NEXT: bl .__atomic_store_8[PR]5641; AIX32-NEXT: nop5642; AIX32-NEXT: lwz 31, 92(1) # 4-byte Folded Reload5643; AIX32-NEXT: lwz 30, 88(1) # 4-byte Folded Reload5644; AIX32-NEXT: lwz 29, 84(1) # 4-byte Folded Reload5645; AIX32-NEXT: lwz 28, 80(1) # 4-byte Folded Reload5646; AIX32-NEXT: lwz 27, 76(1) # 4-byte Folded Reload5647; AIX32-NEXT: lwz 26, 72(1) # 4-byte Folded Reload5648; AIX32-NEXT: lwz 25, 68(1) # 4-byte Folded Reload5649; AIX32-NEXT: lwz 24, 64(1) # 4-byte Folded Reload5650; AIX32-NEXT: lwz 23, 60(1) # 4-byte Folded Reload5651; AIX32-NEXT: addi 1, 1, 965652; AIX32-NEXT: lwz 0, 8(1)5653; AIX32-NEXT: mtlr 05654; AIX32-NEXT: blr5655entry:5656 %0 = atomicrmw xchg ptr @sc, i8 1 seq_cst, align 15657 store i8 %0, ptr @sc, align 15658 %1 = atomicrmw xchg ptr @uc, i8 1 seq_cst, align 15659 store i8 %1, ptr @uc, align 15660 %2 = atomicrmw xchg ptr @ss, i16 1 seq_cst, align 25661 store i16 %2, ptr @ss, align 25662 %3 = atomicrmw xchg ptr @us, i16 1 seq_cst, align 25663 store i16 %3, ptr @us, align 25664 %4 = atomicrmw xchg ptr @si, i32 1 seq_cst, align 45665 store i32 %4, ptr @si, align 45666 %5 = atomicrmw xchg ptr @ui, i32 1 seq_cst, align 45667 store i32 %5, ptr @ui, align 45668 %6 = atomicrmw xchg ptr @sll, i64 1 seq_cst, align 85669 store i64 %6, ptr @sll, align 85670 %7 = atomicrmw xchg ptr @ull, i64 1 seq_cst, align 85671 store i64 %7, ptr @ull, align 85672 fence seq_cst5673 store atomic i8 0, ptr @sc release, align 15674 store atomic i8 0, ptr @uc release, align 15675 store atomic i16 0, ptr @ss release, align 25676 store atomic i16 0, ptr @us release, align 25677 store atomic i32 0, ptr @si release, align 45678 store atomic i32 0, ptr @ui release, align 45679 store atomic i64 0, ptr @sll release, align 85680 store atomic i64 0, ptr @ull release, align 85681 ret void5682}5683 5684define dso_local void @test_atomic() local_unnamed_addr #0 {5685; CHECK-LABEL: test_atomic:5686; CHECK: # %bb.0: # %entry5687; CHECK-NEXT: addis 4, 2, ui@toc@ha5688; CHECK-NEXT: li 3, 55689; CHECK-NEXT: addi 6, 4, ui@toc@l5690; CHECK-NEXT: .LBB5_1: # %entry5691; CHECK-NEXT: #5692; CHECK-NEXT: lwarx 5, 0, 65693; CHECK-NEXT: cmplwi 5, 55694; CHECK-NEXT: blt 0, .LBB5_35695; CHECK-NEXT: # %bb.2: # %entry5696; CHECK-NEXT: #5697; CHECK-NEXT: stwcx. 3, 0, 65698; CHECK-NEXT: bne- 0, .LBB5_15699; CHECK-NEXT: .LBB5_3: # %entry5700; CHECK-NEXT: stw 5, ui@toc@l(4)5701; CHECK-NEXT: addis 5, 2, si@toc@ha5702; CHECK-NEXT: sync5703; CHECK-NEXT: addi 7, 5, si@toc@l5704; CHECK-NEXT: .LBB5_4: # %entry5705; CHECK-NEXT: #5706; CHECK-NEXT: lwarx 8, 0, 75707; CHECK-NEXT: cmpwi 8, 55708; CHECK-NEXT: blt 0, .LBB5_65709; CHECK-NEXT: # %bb.5: # %entry5710; CHECK-NEXT: #5711; CHECK-NEXT: stwcx. 3, 0, 75712; CHECK-NEXT: bne- 0, .LBB5_45713; CHECK-NEXT: .LBB5_6: # %entry5714; CHECK-NEXT: lwsync5715; CHECK-NEXT: stw 8, si@toc@l(5)5716; CHECK-NEXT: .LBB5_7: # %entry5717; CHECK-NEXT: #5718; CHECK-NEXT: lwarx 8, 0, 65719; CHECK-NEXT: cmplwi 8, 55720; CHECK-NEXT: bgt 0, .LBB5_95721; CHECK-NEXT: # %bb.8: # %entry5722; CHECK-NEXT: #5723; CHECK-NEXT: stwcx. 3, 0, 65724; CHECK-NEXT: bne- 0, .LBB5_75725; CHECK-NEXT: .LBB5_9: # %entry5726; CHECK-NEXT: lwsync5727; CHECK-NEXT: stw 8, ui@toc@l(4)5728; CHECK-NEXT: lwsync5729; CHECK-NEXT: .LBB5_10: # %entry5730; CHECK-NEXT: #5731; CHECK-NEXT: lwarx 4, 0, 75732; CHECK-NEXT: cmpwi 4, 55733; CHECK-NEXT: bgt 0, .LBB5_125734; CHECK-NEXT: # %bb.11: # %entry5735; CHECK-NEXT: #5736; CHECK-NEXT: stwcx. 3, 0, 75737; CHECK-NEXT: bne- 0, .LBB5_105738; CHECK-NEXT: .LBB5_12: # %entry5739; CHECK-NEXT: stw 4, si@toc@l(5)5740; CHECK-NEXT: blr5741;5742; AIX32-LABEL: test_atomic:5743; AIX32: # %bb.0: # %entry5744; AIX32-NEXT: lwz 4, L..C5(2) # @ui5745; AIX32-NEXT: li 3, 55746; AIX32-NEXT: L..BB5_1: # %entry5747; AIX32-NEXT: #5748; AIX32-NEXT: lwarx 5, 0, 45749; AIX32-NEXT: cmplwi 5, 55750; AIX32-NEXT: blt 0, L..BB5_35751; AIX32-NEXT: # %bb.2: # %entry5752; AIX32-NEXT: #5753; AIX32-NEXT: stwcx. 3, 0, 45754; AIX32-NEXT: bne- 0, L..BB5_15755; AIX32-NEXT: L..BB5_3: # %entry5756; AIX32-NEXT: stw 5, 0(4)5757; AIX32-NEXT: lwz 5, L..C4(2) # @si5758; AIX32-NEXT: sync5759; AIX32-NEXT: L..BB5_4: # %entry5760; AIX32-NEXT: #5761; AIX32-NEXT: lwarx 6, 0, 55762; AIX32-NEXT: cmpwi 6, 55763; AIX32-NEXT: blt 0, L..BB5_65764; AIX32-NEXT: # %bb.5: # %entry5765; AIX32-NEXT: #5766; AIX32-NEXT: stwcx. 3, 0, 55767; AIX32-NEXT: bne- 0, L..BB5_45768; AIX32-NEXT: L..BB5_6: # %entry5769; AIX32-NEXT: lwsync5770; AIX32-NEXT: stw 6, 0(5)5771; AIX32-NEXT: L..BB5_7: # %entry5772; AIX32-NEXT: #5773; AIX32-NEXT: lwarx 6, 0, 45774; AIX32-NEXT: cmplwi 6, 55775; AIX32-NEXT: bgt 0, L..BB5_95776; AIX32-NEXT: # %bb.8: # %entry5777; AIX32-NEXT: #5778; AIX32-NEXT: stwcx. 3, 0, 45779; AIX32-NEXT: bne- 0, L..BB5_75780; AIX32-NEXT: L..BB5_9: # %entry5781; AIX32-NEXT: lwsync5782; AIX32-NEXT: stw 6, 0(4)5783; AIX32-NEXT: lwsync5784; AIX32-NEXT: L..BB5_10: # %entry5785; AIX32-NEXT: #5786; AIX32-NEXT: lwarx 4, 0, 55787; AIX32-NEXT: cmpwi 4, 55788; AIX32-NEXT: bgt 0, L..BB5_125789; AIX32-NEXT: # %bb.11: # %entry5790; AIX32-NEXT: #5791; AIX32-NEXT: stwcx. 3, 0, 55792; AIX32-NEXT: bne- 0, L..BB5_105793; AIX32-NEXT: L..BB5_12: # %entry5794; AIX32-NEXT: stw 4, 0(5)5795; AIX32-NEXT: blr5796entry:5797 %0 = atomicrmw umin ptr @ui, i32 5 monotonic, align 45798 store i32 %0, ptr @ui, align 45799 %1 = atomicrmw min ptr @si, i32 5 seq_cst, align 45800 store i32 %1, ptr @si, align 45801 %2 = atomicrmw umax ptr @ui, i32 5 acquire, align 45802 store i32 %2, ptr @ui, align 45803 %3 = atomicrmw max ptr @si, i32 5 release, align 45804 store i32 %3, ptr @si, align 45805 ret void5806}5807 5808define dso_local i64 @cmpswplp(ptr noundef %ptr, ptr nocapture noundef readnone %oldval, i64 noundef %newval) local_unnamed_addr #0 {5809; CHECK-LABEL: cmpswplp:5810; CHECK: # %bb.0: # %entry5811; CHECK-NEXT: ldarx 4, 0, 35812; CHECK-NEXT: cmpld 4, 55813; CHECK-NEXT: bne- 0, .LBB6_35814; CHECK-NEXT: # %bb.1: # %cmpxchg.fencedstore5815; CHECK-NEXT: addi 4, 5, 15816; CHECK-NEXT: creqv 20, 20, 205817; CHECK-NEXT: stdcx. 4, 0, 35818; CHECK-NEXT: bne- 0, .LBB6_35819; CHECK-NEXT: .LBB6_2: # %cmpxchg.end5820; CHECK-NEXT: li 3, 665821; CHECK-NEXT: li 4, 555822; CHECK-NEXT: isel 3, 4, 3, 205823; CHECK-NEXT: blr5824; CHECK-NEXT: .LBB6_3: # %cmpxchg.failure5825; CHECK-NEXT: crxor 20, 20, 205826; CHECK-NEXT: b .LBB6_25827;5828; AIX32-LABEL: cmpswplp:5829; AIX32: # %bb.0: # %entry5830; AIX32-NEXT: mflr 05831; AIX32-NEXT: stwu 1, -64(1)5832; AIX32-NEXT: addic 7, 6, 15833; AIX32-NEXT: stw 0, 72(1)5834; AIX32-NEXT: addze 8, 55835; AIX32-NEXT: stw 6, 60(1)5836; AIX32-NEXT: stw 5, 56(1)5837; AIX32-NEXT: addi 4, 1, 565838; AIX32-NEXT: mr 5, 85839; AIX32-NEXT: mr 6, 75840; AIX32-NEXT: li 7, 05841; AIX32-NEXT: li 8, 05842; AIX32-NEXT: bl .__atomic_compare_exchange_8[PR]5843; AIX32-NEXT: nop5844; AIX32-NEXT: andi. 3, 3, 15845; AIX32-NEXT: li 3, 665846; AIX32-NEXT: li 4, 555847; AIX32-NEXT: iselgt 4, 4, 35848; AIX32-NEXT: li 3, 05849; AIX32-NEXT: addi 1, 1, 645850; AIX32-NEXT: lwz 0, 8(1)5851; AIX32-NEXT: mtlr 05852; AIX32-NEXT: blr5853entry:5854 %add = add nsw i64 %newval, 15855 %0 = cmpxchg weak volatile ptr %ptr, i64 %newval, i64 %add monotonic monotonic, align 85856 %1 = extractvalue { i64, i1 } %0, 15857 %conv = select i1 %1, i64 55, i64 665858 ret i64 %conv5859}5860 5861define dso_local i64 @atommax8(ptr nocapture noundef %ptr, i64 noundef %val) local_unnamed_addr #0 {5862; CHECK-LABEL: atommax8:5863; CHECK: # %bb.0: # %entry5864; CHECK-NEXT: sync5865; CHECK-NEXT: .LBB7_1: # %entry5866; CHECK-NEXT: #5867; CHECK-NEXT: ldarx 5, 0, 35868; CHECK-NEXT: cmpd 1, 5, 45869; CHECK-NEXT: bgt 1, .LBB7_35870; CHECK-NEXT: # %bb.2: # %entry5871; CHECK-NEXT: #5872; CHECK-NEXT: stdcx. 4, 0, 35873; CHECK-NEXT: bne- 0, .LBB7_15874; CHECK-NEXT: .LBB7_3: # %entry5875; CHECK-NEXT: li 3, 555876; CHECK-NEXT: li 4, 665877; CHECK-NEXT: lwsync5878; CHECK-NEXT: isel 3, 4, 3, 55879; CHECK-NEXT: blr5880;5881; AIX32-LABEL: atommax8:5882; AIX32: # %bb.0: # %entry5883; AIX32-NEXT: mflr 05884; AIX32-NEXT: stwu 1, -80(1)5885; AIX32-NEXT: stw 0, 88(1)5886; AIX32-NEXT: stw 30, 72(1) # 4-byte Folded Spill5887; AIX32-NEXT: stw 31, 76(1) # 4-byte Folded Spill5888; AIX32-NEXT: mr 31, 55889; AIX32-NEXT: mr 30, 45890; AIX32-NEXT: lwz 4, 4(3)5891; AIX32-NEXT: lwz 5, 0(3)5892; AIX32-NEXT: stw 28, 64(1) # 4-byte Folded Spill5893; AIX32-NEXT: addi 28, 1, 565894; AIX32-NEXT: stw 29, 68(1) # 4-byte Folded Spill5895; AIX32-NEXT: mr 29, 35896; AIX32-NEXT: .align 45897; AIX32-NEXT: L..BB7_1: # %atomicrmw.start5898; AIX32-NEXT: #5899; AIX32-NEXT: cmplw 5, 305900; AIX32-NEXT: cmpw 1, 5, 305901; AIX32-NEXT: li 7, 55902; AIX32-NEXT: li 8, 55903; AIX32-NEXT: stw 5, 56(1)5904; AIX32-NEXT: mr 3, 295905; AIX32-NEXT: crandc 20, 5, 25906; AIX32-NEXT: cmplw 1, 4, 315907; AIX32-NEXT: crand 21, 2, 55908; AIX32-NEXT: stw 4, 60(1)5909; AIX32-NEXT: cror 20, 21, 205910; AIX32-NEXT: isel 5, 5, 30, 205911; AIX32-NEXT: isel 6, 4, 31, 205912; AIX32-NEXT: mr 4, 285913; AIX32-NEXT: bl .__atomic_compare_exchange_8[PR]5914; AIX32-NEXT: nop5915; AIX32-NEXT: lwz 4, 60(1)5916; AIX32-NEXT: lwz 5, 56(1)5917; AIX32-NEXT: cmplwi 3, 05918; AIX32-NEXT: beq 0, L..BB7_15919; AIX32-NEXT: # %bb.2: # %atomicrmw.end5920; AIX32-NEXT: cmplw 5, 305921; AIX32-NEXT: cmpw 1, 5, 305922; AIX32-NEXT: li 3, 555923; AIX32-NEXT: lwz 30, 72(1) # 4-byte Folded Reload5924; AIX32-NEXT: lwz 29, 68(1) # 4-byte Folded Reload5925; AIX32-NEXT: lwz 28, 64(1) # 4-byte Folded Reload5926; AIX32-NEXT: crandc 20, 5, 25927; AIX32-NEXT: cmplw 1, 4, 315928; AIX32-NEXT: li 4, 665929; AIX32-NEXT: lwz 31, 76(1) # 4-byte Folded Reload5930; AIX32-NEXT: crand 21, 2, 55931; AIX32-NEXT: cror 20, 21, 205932; AIX32-NEXT: isel 4, 4, 3, 205933; AIX32-NEXT: li 3, 05934; AIX32-NEXT: addi 1, 1, 805935; AIX32-NEXT: lwz 0, 8(1)5936; AIX32-NEXT: mtlr 05937; AIX32-NEXT: blr5938entry:5939 %0 = atomicrmw max ptr %ptr, i64 %val seq_cst, align 85940 %cmp.not = icmp sgt i64 %0, %val5941 %conv = select i1 %cmp.not, i64 66, i64 555942 ret i64 %conv5943}5944 5945define dso_local signext i32 @atommax4(ptr nocapture noundef %ptr, i32 noundef signext %val) local_unnamed_addr #0 {5946; CHECK-LABEL: atommax4:5947; CHECK: # %bb.0: # %entry5948; CHECK-NEXT: sync5949; CHECK-NEXT: .LBB8_1: # %entry5950; CHECK-NEXT: #5951; CHECK-NEXT: lwarx 5, 0, 35952; CHECK-NEXT: cmpw 1, 5, 45953; CHECK-NEXT: bgt 1, .LBB8_35954; CHECK-NEXT: # %bb.2: # %entry5955; CHECK-NEXT: #5956; CHECK-NEXT: stwcx. 4, 0, 35957; CHECK-NEXT: bne- 0, .LBB8_15958; CHECK-NEXT: .LBB8_3: # %entry5959; CHECK-NEXT: li 3, 555960; CHECK-NEXT: li 4, 665961; CHECK-NEXT: lwsync5962; CHECK-NEXT: isel 3, 4, 3, 55963; CHECK-NEXT: blr5964;5965; AIX32-LABEL: atommax4:5966; AIX32: # %bb.0: # %entry5967; AIX32-NEXT: sync5968; AIX32-NEXT: L..BB8_1: # %entry5969; AIX32-NEXT: #5970; AIX32-NEXT: lwarx 5, 0, 35971; AIX32-NEXT: cmpw 1, 5, 45972; AIX32-NEXT: bgt 1, L..BB8_35973; AIX32-NEXT: # %bb.2: # %entry5974; AIX32-NEXT: #5975; AIX32-NEXT: stwcx. 4, 0, 35976; AIX32-NEXT: bne- 0, L..BB8_15977; AIX32-NEXT: L..BB8_3: # %entry5978; AIX32-NEXT: li 3, 555979; AIX32-NEXT: li 4, 665980; AIX32-NEXT: lwsync5981; AIX32-NEXT: isel 3, 4, 3, 55982; AIX32-NEXT: blr5983entry:5984 %0 = atomicrmw max ptr %ptr, i32 %val seq_cst, align 45985 %cmp.not = icmp sgt i32 %0, %val5986 %cond = select i1 %cmp.not, i32 66, i32 555987 ret i32 %cond5988}5989 5990define dso_local signext i16 @atommax2(ptr nocapture noundef %ptr, i16 noundef signext %val) local_unnamed_addr #0 {5991; CHECK-LABEL: atommax2:5992; CHECK: # %bb.0: # %entry5993; CHECK-NEXT: sync5994; CHECK-NEXT: .LBB9_1: # %entry5995; CHECK-NEXT: #5996; CHECK-NEXT: lharx 5, 0, 35997; CHECK-NEXT: extsh 5, 55998; CHECK-NEXT: cmpw 1, 5, 45999; CHECK-NEXT: bgt 1, .LBB9_36000; CHECK-NEXT: # %bb.2: # %entry6001; CHECK-NEXT: #6002; CHECK-NEXT: sthcx. 4, 0, 36003; CHECK-NEXT: bne- 0, .LBB9_16004; CHECK-NEXT: .LBB9_3: # %entry6005; CHECK-NEXT: li 3, 556006; CHECK-NEXT: li 4, 666007; CHECK-NEXT: lwsync6008; CHECK-NEXT: isel 3, 4, 3, 56009; CHECK-NEXT: blr6010;6011; AIX32-LABEL: atommax2:6012; AIX32: # %bb.0: # %entry6013; AIX32-NEXT: rlwinm 6, 3, 3, 27, 276014; AIX32-NEXT: li 7, 06015; AIX32-NEXT: sync6016; AIX32-NEXT: extsh 5, 46017; AIX32-NEXT: rlwinm 3, 3, 0, 0, 296018; AIX32-NEXT: xori 6, 6, 166019; AIX32-NEXT: ori 7, 7, 655356020; AIX32-NEXT: slw 8, 5, 66021; AIX32-NEXT: slw 7, 7, 66022; AIX32-NEXT: and 8, 8, 76023; AIX32-NEXT: L..BB9_1: # %entry6024; AIX32-NEXT: #6025; AIX32-NEXT: lwarx 9, 0, 36026; AIX32-NEXT: and 10, 9, 76027; AIX32-NEXT: srw 10, 10, 66028; AIX32-NEXT: extsh 10, 106029; AIX32-NEXT: cmpw 10, 56030; AIX32-NEXT: bgt 0, L..BB9_36031; AIX32-NEXT: # %bb.2: # %entry6032; AIX32-NEXT: #6033; AIX32-NEXT: andc 10, 9, 76034; AIX32-NEXT: or 10, 8, 106035; AIX32-NEXT: stwcx. 10, 0, 36036; AIX32-NEXT: bne- 0, L..BB9_16037; AIX32-NEXT: L..BB9_3: # %entry6038; AIX32-NEXT: srw 3, 9, 66039; AIX32-NEXT: lwsync6040; AIX32-NEXT: clrlwi 3, 3, 166041; AIX32-NEXT: extsh 3, 36042; AIX32-NEXT: cmpw 3, 46043; AIX32-NEXT: li 3, 556044; AIX32-NEXT: li 4, 666045; AIX32-NEXT: iselgt 3, 4, 36046; AIX32-NEXT: blr6047entry:6048 %0 = atomicrmw max ptr %ptr, i16 %val seq_cst, align 26049 %cmp.not = icmp sgt i16 %0, %val6050 %conv3 = select i1 %cmp.not, i16 66, i16 556051 ret i16 %conv36052}6053 6054define dso_local zeroext i8 @atommax1(ptr nocapture noundef %ptr, i8 noundef zeroext %val) local_unnamed_addr #0 {6055; CHECK-LABEL: atommax1:6056; CHECK: # %bb.0: # %entry6057; CHECK-NEXT: sync6058; CHECK-NEXT: .LBB10_1: # %entry6059; CHECK-NEXT: #6060; CHECK-NEXT: lbarx 5, 0, 36061; CHECK-NEXT: cmplw 1, 5, 46062; CHECK-NEXT: bgt 1, .LBB10_36063; CHECK-NEXT: # %bb.2: # %entry6064; CHECK-NEXT: #6065; CHECK-NEXT: stbcx. 4, 0, 36066; CHECK-NEXT: bne- 0, .LBB10_16067; CHECK-NEXT: .LBB10_3: # %entry6068; CHECK-NEXT: li 3, 556069; CHECK-NEXT: li 4, 666070; CHECK-NEXT: lwsync6071; CHECK-NEXT: isel 3, 4, 3, 56072; CHECK-NEXT: blr6073;6074; AIX32-LABEL: atommax1:6075; AIX32: # %bb.0: # %entry6076; AIX32-NEXT: rlwinm 5, 3, 3, 27, 286077; AIX32-NEXT: li 7, 2556078; AIX32-NEXT: sync6079; AIX32-NEXT: rlwinm 3, 3, 0, 0, 296080; AIX32-NEXT: xori 5, 5, 246081; AIX32-NEXT: slw 6, 4, 56082; AIX32-NEXT: slw 7, 7, 56083; AIX32-NEXT: and 8, 6, 76084; AIX32-NEXT: L..BB10_1: # %entry6085; AIX32-NEXT: #6086; AIX32-NEXT: lwarx 9, 0, 36087; AIX32-NEXT: and 10, 9, 76088; AIX32-NEXT: cmplw 10, 66089; AIX32-NEXT: bgt 0, L..BB10_36090; AIX32-NEXT: # %bb.2: # %entry6091; AIX32-NEXT: #6092; AIX32-NEXT: andc 10, 9, 76093; AIX32-NEXT: or 10, 8, 106094; AIX32-NEXT: stwcx. 10, 0, 36095; AIX32-NEXT: bne- 0, L..BB10_16096; AIX32-NEXT: L..BB10_3: # %entry6097; AIX32-NEXT: srw 3, 9, 56098; AIX32-NEXT: lwsync6099; AIX32-NEXT: clrlwi 3, 3, 246100; AIX32-NEXT: cmplw 3, 46101; AIX32-NEXT: li 3, 556102; AIX32-NEXT: li 4, 666103; AIX32-NEXT: iselgt 3, 4, 36104; AIX32-NEXT: blr6105entry:6106 %0 = atomicrmw umax ptr %ptr, i8 %val seq_cst, align 16107 %cmp.not = icmp ugt i8 %0, %val6108 %conv3 = select i1 %cmp.not, i8 66, i8 556109 ret i8 %conv36110}6111