954 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -mtriple=powerpc64le-unknown-linux-gnu | FileCheck %s --check-prefixes=ALL,LE,LE-64BIT3; RUN: llc < %s -mcpu=ppc -mtriple=powerpc64-unknown-linux-gnu | FileCheck %s --check-prefixes=ALL,BE4; RUN: llc < %s -mtriple=ppc32-- | FileCheck %s --check-prefixes=ALL,LE,LE-32BIT5 6define void @lshr_4bytes(ptr %src.ptr, ptr %bitOff.ptr, ptr %dst) nounwind {7; ALL-LABEL: lshr_4bytes:8; ALL: # %bb.0:9; ALL-NEXT: lwz 3, 0(3)10; ALL-NEXT: lwz 4, 0(4)11; ALL-NEXT: srw 3, 3, 412; ALL-NEXT: stw 3, 0(5)13; ALL-NEXT: blr14 %src = load i32, ptr %src.ptr, align 115 %bitOff = load i32, ptr %bitOff.ptr, align 116 %res = lshr i32 %src, %bitOff17 store i32 %res, ptr %dst, align 118 ret void19}20define void @shl_4bytes(ptr %src.ptr, ptr %bitOff.ptr, ptr %dst) nounwind {21; ALL-LABEL: shl_4bytes:22; ALL: # %bb.0:23; ALL-NEXT: lwz 3, 0(3)24; ALL-NEXT: lwz 4, 0(4)25; ALL-NEXT: slw 3, 3, 426; ALL-NEXT: stw 3, 0(5)27; ALL-NEXT: blr28 %src = load i32, ptr %src.ptr, align 129 %bitOff = load i32, ptr %bitOff.ptr, align 130 %res = shl i32 %src, %bitOff31 store i32 %res, ptr %dst, align 132 ret void33}34define void @ashr_4bytes(ptr %src.ptr, ptr %bitOff.ptr, ptr %dst) nounwind {35; ALL-LABEL: ashr_4bytes:36; ALL: # %bb.0:37; ALL-NEXT: lwz 3, 0(3)38; ALL-NEXT: lwz 4, 0(4)39; ALL-NEXT: sraw 3, 3, 440; ALL-NEXT: stw 3, 0(5)41; ALL-NEXT: blr42 %src = load i32, ptr %src.ptr, align 143 %bitOff = load i32, ptr %bitOff.ptr, align 144 %res = ashr i32 %src, %bitOff45 store i32 %res, ptr %dst, align 146 ret void47}48 49define void @lshr_8bytes(ptr %src.ptr, ptr %bitOff.ptr, ptr %dst) nounwind {50; LE-64BIT-LABEL: lshr_8bytes:51; LE-64BIT: # %bb.0:52; LE-64BIT-NEXT: ld 3, 0(3)53; LE-64BIT-NEXT: lwz 4, 0(4)54; LE-64BIT-NEXT: srd 3, 3, 455; LE-64BIT-NEXT: std 3, 0(5)56; LE-64BIT-NEXT: blr57;58; BE-LABEL: lshr_8bytes:59; BE: # %bb.0:60; BE-NEXT: ld 3, 0(3)61; BE-NEXT: lwz 4, 4(4)62; BE-NEXT: srd 3, 3, 463; BE-NEXT: std 3, 0(5)64; BE-NEXT: blr65;66; LE-32BIT-LABEL: lshr_8bytes:67; LE-32BIT: # %bb.0:68; LE-32BIT-NEXT: lwz 4, 4(4)69; LE-32BIT-NEXT: lwz 6, 4(3)70; LE-32BIT-NEXT: lwz 3, 0(3)71; LE-32BIT-NEXT: subfic 7, 4, 3272; LE-32BIT-NEXT: srw 6, 6, 473; LE-32BIT-NEXT: addi 8, 4, -3274; LE-32BIT-NEXT: slw 7, 3, 775; LE-32BIT-NEXT: srw 4, 3, 476; LE-32BIT-NEXT: srw 3, 3, 877; LE-32BIT-NEXT: or 6, 6, 778; LE-32BIT-NEXT: or 3, 6, 379; LE-32BIT-NEXT: stw 4, 0(5)80; LE-32BIT-NEXT: stw 3, 4(5)81; LE-32BIT-NEXT: blr82 %src = load i64, ptr %src.ptr, align 183 %bitOff = load i64, ptr %bitOff.ptr, align 184 %res = lshr i64 %src, %bitOff85 store i64 %res, ptr %dst, align 186 ret void87}88define void @shl_8bytes(ptr %src.ptr, ptr %bitOff.ptr, ptr %dst) nounwind {89; LE-64BIT-LABEL: shl_8bytes:90; LE-64BIT: # %bb.0:91; LE-64BIT-NEXT: ld 3, 0(3)92; LE-64BIT-NEXT: lwz 4, 0(4)93; LE-64BIT-NEXT: sld 3, 3, 494; LE-64BIT-NEXT: std 3, 0(5)95; LE-64BIT-NEXT: blr96;97; BE-LABEL: shl_8bytes:98; BE: # %bb.0:99; BE-NEXT: ld 3, 0(3)100; BE-NEXT: lwz 4, 4(4)101; BE-NEXT: sld 3, 3, 4102; BE-NEXT: std 3, 0(5)103; BE-NEXT: blr104;105; LE-32BIT-LABEL: shl_8bytes:106; LE-32BIT: # %bb.0:107; LE-32BIT-NEXT: lwz 4, 4(4)108; LE-32BIT-NEXT: lwz 6, 0(3)109; LE-32BIT-NEXT: lwz 3, 4(3)110; LE-32BIT-NEXT: subfic 7, 4, 32111; LE-32BIT-NEXT: slw 6, 6, 4112; LE-32BIT-NEXT: addi 8, 4, -32113; LE-32BIT-NEXT: srw 7, 3, 7114; LE-32BIT-NEXT: slw 4, 3, 4115; LE-32BIT-NEXT: slw 3, 3, 8116; LE-32BIT-NEXT: or 6, 6, 7117; LE-32BIT-NEXT: or 3, 6, 3118; LE-32BIT-NEXT: stw 4, 4(5)119; LE-32BIT-NEXT: stw 3, 0(5)120; LE-32BIT-NEXT: blr121 %src = load i64, ptr %src.ptr, align 1122 %bitOff = load i64, ptr %bitOff.ptr, align 1123 %res = shl i64 %src, %bitOff124 store i64 %res, ptr %dst, align 1125 ret void126}127define void @ashr_8bytes(ptr %src.ptr, ptr %bitOff.ptr, ptr %dst) nounwind {128; LE-64BIT-LABEL: ashr_8bytes:129; LE-64BIT: # %bb.0:130; LE-64BIT-NEXT: ld 3, 0(3)131; LE-64BIT-NEXT: lwz 4, 0(4)132; LE-64BIT-NEXT: srad 3, 3, 4133; LE-64BIT-NEXT: std 3, 0(5)134; LE-64BIT-NEXT: blr135;136; BE-LABEL: ashr_8bytes:137; BE: # %bb.0:138; BE-NEXT: ld 3, 0(3)139; BE-NEXT: lwz 4, 4(4)140; BE-NEXT: srad 3, 3, 4141; BE-NEXT: std 3, 0(5)142; BE-NEXT: blr143;144; LE-32BIT-LABEL: ashr_8bytes:145; LE-32BIT: # %bb.0:146; LE-32BIT-NEXT: lwz 4, 4(4)147; LE-32BIT-NEXT: lwz 6, 0(3)148; LE-32BIT-NEXT: addi 7, 4, -32149; LE-32BIT-NEXT: cmpwi 7, 0150; LE-32BIT-NEXT: ble 0, .LBB5_2151; LE-32BIT-NEXT: # %bb.1:152; LE-32BIT-NEXT: sraw 3, 6, 7153; LE-32BIT-NEXT: b .LBB5_3154; LE-32BIT-NEXT: .LBB5_2:155; LE-32BIT-NEXT: lwz 3, 4(3)156; LE-32BIT-NEXT: subfic 7, 4, 32157; LE-32BIT-NEXT: slw 7, 6, 7158; LE-32BIT-NEXT: srw 3, 3, 4159; LE-32BIT-NEXT: or 3, 3, 7160; LE-32BIT-NEXT: .LBB5_3:161; LE-32BIT-NEXT: sraw 4, 6, 4162; LE-32BIT-NEXT: stw 4, 0(5)163; LE-32BIT-NEXT: stw 3, 4(5)164; LE-32BIT-NEXT: blr165 %src = load i64, ptr %src.ptr, align 1166 %bitOff = load i64, ptr %bitOff.ptr, align 1167 %res = ashr i64 %src, %bitOff168 store i64 %res, ptr %dst, align 1169 ret void170}171 172define void @lshr_16bytes(ptr %src.ptr, ptr %bitOff.ptr, ptr %dst) nounwind {173; LE-64BIT-LABEL: lshr_16bytes:174; LE-64BIT: # %bb.0:175; LE-64BIT-NEXT: lwz 4, 0(4)176; LE-64BIT-NEXT: ld 6, 8(3)177; LE-64BIT-NEXT: subfic 7, 4, 64178; LE-64BIT-NEXT: ld 3, 0(3)179; LE-64BIT-NEXT: srd 3, 3, 4180; LE-64BIT-NEXT: sld 7, 6, 7181; LE-64BIT-NEXT: or 3, 3, 7182; LE-64BIT-NEXT: addi 7, 4, -64183; LE-64BIT-NEXT: srd 4, 6, 4184; LE-64BIT-NEXT: srd 7, 6, 7185; LE-64BIT-NEXT: std 4, 8(5)186; LE-64BIT-NEXT: or 3, 3, 7187; LE-64BIT-NEXT: std 3, 0(5)188; LE-64BIT-NEXT: blr189;190; BE-LABEL: lshr_16bytes:191; BE: # %bb.0:192; BE-NEXT: lwz 4, 12(4)193; BE-NEXT: ld 6, 0(3)194; BE-NEXT: ld 3, 8(3)195; BE-NEXT: subfic 7, 4, 64196; BE-NEXT: srd 3, 3, 4197; BE-NEXT: sld 7, 6, 7198; BE-NEXT: addi 8, 4, -64199; BE-NEXT: or 3, 3, 7200; BE-NEXT: srd 7, 6, 8201; BE-NEXT: srd 4, 6, 4202; BE-NEXT: or 3, 3, 7203; BE-NEXT: std 4, 0(5)204; BE-NEXT: std 3, 8(5)205; BE-NEXT: blr206;207; LE-32BIT-LABEL: lshr_16bytes:208; LE-32BIT: # %bb.0:209; LE-32BIT-NEXT: stwu 1, -48(1)210; LE-32BIT-NEXT: lwz 7, 0(3)211; LE-32BIT-NEXT: li 6, 0212; LE-32BIT-NEXT: lwz 8, 4(3)213; LE-32BIT-NEXT: lwz 9, 8(3)214; LE-32BIT-NEXT: lwz 3, 12(3)215; LE-32BIT-NEXT: lwz 4, 12(4)216; LE-32BIT-NEXT: stw 6, 28(1)217; LE-32BIT-NEXT: stw 6, 24(1)218; LE-32BIT-NEXT: stw 6, 20(1)219; LE-32BIT-NEXT: stw 6, 16(1)220; LE-32BIT-NEXT: rlwinm 6, 4, 29, 28, 29221; LE-32BIT-NEXT: stw 3, 44(1)222; LE-32BIT-NEXT: addi 3, 1, 32223; LE-32BIT-NEXT: stw 9, 40(1)224; LE-32BIT-NEXT: sub 3, 3, 6225; LE-32BIT-NEXT: stw 8, 36(1)226; LE-32BIT-NEXT: clrlwi 4, 4, 27227; LE-32BIT-NEXT: stw 7, 32(1)228; LE-32BIT-NEXT: subfic 9, 4, 32229; LE-32BIT-NEXT: lwz 6, 4(3)230; LE-32BIT-NEXT: lwz 7, 0(3)231; LE-32BIT-NEXT: lwz 8, 12(3)232; LE-32BIT-NEXT: srw 10, 6, 4233; LE-32BIT-NEXT: lwz 3, 8(3)234; LE-32BIT-NEXT: slw 11, 7, 9235; LE-32BIT-NEXT: slw 6, 6, 9236; LE-32BIT-NEXT: srw 8, 8, 4237; LE-32BIT-NEXT: slw 9, 3, 9238; LE-32BIT-NEXT: srw 3, 3, 4239; LE-32BIT-NEXT: or 3, 6, 3240; LE-32BIT-NEXT: stw 3, 8(5)241; LE-32BIT-NEXT: or 3, 9, 8242; LE-32BIT-NEXT: srw 4, 7, 4243; LE-32BIT-NEXT: stw 3, 12(5)244; LE-32BIT-NEXT: or 3, 11, 10245; LE-32BIT-NEXT: stw 4, 0(5)246; LE-32BIT-NEXT: stw 3, 4(5)247; LE-32BIT-NEXT: addi 1, 1, 48248; LE-32BIT-NEXT: blr249 %src = load i128, ptr %src.ptr, align 1250 %bitOff = load i128, ptr %bitOff.ptr, align 1251 %res = lshr i128 %src, %bitOff252 store i128 %res, ptr %dst, align 1253 ret void254}255define void @shl_16bytes(ptr %src.ptr, ptr %bitOff.ptr, ptr %dst) nounwind {256; LE-64BIT-LABEL: shl_16bytes:257; LE-64BIT: # %bb.0:258; LE-64BIT-NEXT: lwz 4, 0(4)259; LE-64BIT-NEXT: ld 6, 0(3)260; LE-64BIT-NEXT: subfic 7, 4, 64261; LE-64BIT-NEXT: ld 3, 8(3)262; LE-64BIT-NEXT: sld 3, 3, 4263; LE-64BIT-NEXT: srd 7, 6, 7264; LE-64BIT-NEXT: or 3, 3, 7265; LE-64BIT-NEXT: addi 7, 4, -64266; LE-64BIT-NEXT: sld 4, 6, 4267; LE-64BIT-NEXT: sld 7, 6, 7268; LE-64BIT-NEXT: std 4, 0(5)269; LE-64BIT-NEXT: or 3, 3, 7270; LE-64BIT-NEXT: std 3, 8(5)271; LE-64BIT-NEXT: blr272;273; BE-LABEL: shl_16bytes:274; BE: # %bb.0:275; BE-NEXT: lwz 4, 12(4)276; BE-NEXT: ld 6, 8(3)277; BE-NEXT: ld 3, 0(3)278; BE-NEXT: subfic 7, 4, 64279; BE-NEXT: sld 3, 3, 4280; BE-NEXT: srd 7, 6, 7281; BE-NEXT: addi 8, 4, -64282; BE-NEXT: or 3, 3, 7283; BE-NEXT: sld 7, 6, 8284; BE-NEXT: sld 4, 6, 4285; BE-NEXT: or 3, 3, 7286; BE-NEXT: std 4, 8(5)287; BE-NEXT: std 3, 0(5)288; BE-NEXT: blr289;290; LE-32BIT-LABEL: shl_16bytes:291; LE-32BIT: # %bb.0:292; LE-32BIT-NEXT: stwu 1, -48(1)293; LE-32BIT-NEXT: lwz 7, 0(3)294; LE-32BIT-NEXT: li 6, 0295; LE-32BIT-NEXT: lwz 8, 4(3)296; LE-32BIT-NEXT: lwz 9, 8(3)297; LE-32BIT-NEXT: lwz 3, 12(3)298; LE-32BIT-NEXT: lwz 4, 12(4)299; LE-32BIT-NEXT: stw 6, 44(1)300; LE-32BIT-NEXT: stw 6, 40(1)301; LE-32BIT-NEXT: stw 6, 36(1)302; LE-32BIT-NEXT: stw 6, 32(1)303; LE-32BIT-NEXT: rlwinm 6, 4, 29, 28, 29304; LE-32BIT-NEXT: stw 3, 28(1)305; LE-32BIT-NEXT: addi 3, 1, 16306; LE-32BIT-NEXT: stw 9, 24(1)307; LE-32BIT-NEXT: clrlwi 4, 4, 27308; LE-32BIT-NEXT: stw 8, 20(1)309; LE-32BIT-NEXT: subfic 8, 4, 32310; LE-32BIT-NEXT: stw 7, 16(1)311; LE-32BIT-NEXT: lwzux 3, 6, 3312; LE-32BIT-NEXT: lwz 9, 4(6)313; LE-32BIT-NEXT: slw 3, 3, 4314; LE-32BIT-NEXT: lwz 7, 8(6)315; LE-32BIT-NEXT: lwz 6, 12(6)316; LE-32BIT-NEXT: slw 11, 9, 4317; LE-32BIT-NEXT: srw 9, 9, 8318; LE-32BIT-NEXT: srw 10, 7, 8319; LE-32BIT-NEXT: srw 8, 6, 8320; LE-32BIT-NEXT: slw 7, 7, 4321; LE-32BIT-NEXT: slw 4, 6, 4322; LE-32BIT-NEXT: or 3, 3, 9323; LE-32BIT-NEXT: stw 4, 12(5)324; LE-32BIT-NEXT: or 4, 7, 8325; LE-32BIT-NEXT: stw 3, 0(5)326; LE-32BIT-NEXT: or 3, 11, 10327; LE-32BIT-NEXT: stw 4, 8(5)328; LE-32BIT-NEXT: stw 3, 4(5)329; LE-32BIT-NEXT: addi 1, 1, 48330; LE-32BIT-NEXT: blr331 %src = load i128, ptr %src.ptr, align 1332 %bitOff = load i128, ptr %bitOff.ptr, align 1333 %res = shl i128 %src, %bitOff334 store i128 %res, ptr %dst, align 1335 ret void336}337define void @ashr_16bytes(ptr %src.ptr, ptr %bitOff.ptr, ptr %dst) nounwind {338; LE-64BIT-LABEL: ashr_16bytes:339; LE-64BIT: # %bb.0:340; LE-64BIT-NEXT: lwz 4, 0(4)341; LE-64BIT-NEXT: ld 6, 8(3)342; LE-64BIT-NEXT: subfic 7, 4, 64343; LE-64BIT-NEXT: ld 3, 0(3)344; LE-64BIT-NEXT: srd 3, 3, 4345; LE-64BIT-NEXT: sld 7, 6, 7346; LE-64BIT-NEXT: or 3, 3, 7347; LE-64BIT-NEXT: addi 7, 4, -64348; LE-64BIT-NEXT: srad 4, 6, 4349; LE-64BIT-NEXT: cmpwi 7, 1350; LE-64BIT-NEXT: srad 8, 6, 7351; LE-64BIT-NEXT: std 4, 8(5)352; LE-64BIT-NEXT: isellt 3, 3, 8353; LE-64BIT-NEXT: std 3, 0(5)354; LE-64BIT-NEXT: blr355;356; BE-LABEL: ashr_16bytes:357; BE: # %bb.0:358; BE-NEXT: lwz 4, 12(4)359; BE-NEXT: ld 6, 0(3)360; BE-NEXT: addi 7, 4, -64361; BE-NEXT: cmpwi 7, 1362; BE-NEXT: blt 0, .LBB8_2363; BE-NEXT: # %bb.1:364; BE-NEXT: srad 3, 6, 7365; BE-NEXT: b .LBB8_3366; BE-NEXT: .LBB8_2:367; BE-NEXT: ld 3, 8(3)368; BE-NEXT: subfic 7, 4, 64369; BE-NEXT: sld 7, 6, 7370; BE-NEXT: srd 3, 3, 4371; BE-NEXT: or 3, 3, 7372; BE-NEXT: .LBB8_3:373; BE-NEXT: srad 4, 6, 4374; BE-NEXT: std 3, 8(5)375; BE-NEXT: std 4, 0(5)376; BE-NEXT: blr377;378; LE-32BIT-LABEL: ashr_16bytes:379; LE-32BIT: # %bb.0:380; LE-32BIT-NEXT: stwu 1, -48(1)381; LE-32BIT-NEXT: lwz 7, 0(3)382; LE-32BIT-NEXT: addi 6, 1, 32383; LE-32BIT-NEXT: lwz 8, 4(3)384; LE-32BIT-NEXT: lwz 9, 8(3)385; LE-32BIT-NEXT: lwz 3, 12(3)386; LE-32BIT-NEXT: lwz 4, 12(4)387; LE-32BIT-NEXT: stw 3, 44(1)388; LE-32BIT-NEXT: srawi 3, 7, 31389; LE-32BIT-NEXT: stw 7, 32(1)390; LE-32BIT-NEXT: rlwinm 7, 4, 29, 28, 29391; LE-32BIT-NEXT: stw 9, 40(1)392; LE-32BIT-NEXT: clrlwi 4, 4, 27393; LE-32BIT-NEXT: stw 8, 36(1)394; LE-32BIT-NEXT: subfic 9, 4, 32395; LE-32BIT-NEXT: stw 3, 28(1)396; LE-32BIT-NEXT: stw 3, 24(1)397; LE-32BIT-NEXT: stw 3, 20(1)398; LE-32BIT-NEXT: stw 3, 16(1)399; LE-32BIT-NEXT: sub 3, 6, 7400; LE-32BIT-NEXT: lwz 6, 4(3)401; LE-32BIT-NEXT: lwz 7, 0(3)402; LE-32BIT-NEXT: lwz 8, 12(3)403; LE-32BIT-NEXT: srw 10, 6, 4404; LE-32BIT-NEXT: lwz 3, 8(3)405; LE-32BIT-NEXT: slw 11, 7, 9406; LE-32BIT-NEXT: slw 6, 6, 9407; LE-32BIT-NEXT: srw 8, 8, 4408; LE-32BIT-NEXT: slw 9, 3, 9409; LE-32BIT-NEXT: srw 3, 3, 4410; LE-32BIT-NEXT: or 3, 6, 3411; LE-32BIT-NEXT: stw 3, 8(5)412; LE-32BIT-NEXT: or 3, 9, 8413; LE-32BIT-NEXT: sraw 4, 7, 4414; LE-32BIT-NEXT: stw 3, 12(5)415; LE-32BIT-NEXT: or 3, 11, 10416; LE-32BIT-NEXT: stw 4, 0(5)417; LE-32BIT-NEXT: stw 3, 4(5)418; LE-32BIT-NEXT: addi 1, 1, 48419; LE-32BIT-NEXT: blr420 %src = load i128, ptr %src.ptr, align 1421 %bitOff = load i128, ptr %bitOff.ptr, align 1422 %res = ashr i128 %src, %bitOff423 store i128 %res, ptr %dst, align 1424 ret void425}426 427define void @lshr_32bytes(ptr %src.ptr, ptr %bitOff.ptr, ptr %dst) nounwind {428; LE-64BIT-LABEL: lshr_32bytes:429; LE-64BIT: # %bb.0:430; LE-64BIT-NEXT: li 6, 16431; LE-64BIT-NEXT: lxvd2x 1, 0, 3432; LE-64BIT-NEXT: xxlxor 2, 2, 2433; LE-64BIT-NEXT: addi 7, 1, -64434; LE-64BIT-NEXT: li 8, 32435; LE-64BIT-NEXT: lxvd2x 0, 3, 6436; LE-64BIT-NEXT: lwz 3, 0(4)437; LE-64BIT-NEXT: li 4, 48438; LE-64BIT-NEXT: stxvd2x 2, 7, 8439; LE-64BIT-NEXT: stxvd2x 2, 7, 4440; LE-64BIT-NEXT: rlwinm 4, 3, 29, 27, 28441; LE-64BIT-NEXT: stxvd2x 1, 0, 7442; LE-64BIT-NEXT: clrlwi 3, 3, 26443; LE-64BIT-NEXT: stxvd2x 0, 7, 6444; LE-64BIT-NEXT: xori 8, 3, 63445; LE-64BIT-NEXT: ldux 6, 4, 7446; LE-64BIT-NEXT: ld 7, 16(4)447; LE-64BIT-NEXT: ld 9, 8(4)448; LE-64BIT-NEXT: ld 4, 24(4)449; LE-64BIT-NEXT: srd 6, 6, 3450; LE-64BIT-NEXT: sldi 11, 7, 1451; LE-64BIT-NEXT: srd 10, 9, 3452; LE-64BIT-NEXT: srd 7, 7, 3453; LE-64BIT-NEXT: sld 8, 11, 8454; LE-64BIT-NEXT: or 8, 10, 8455; LE-64BIT-NEXT: subfic 10, 3, 64456; LE-64BIT-NEXT: srd 3, 4, 3457; LE-64BIT-NEXT: sld 11, 4, 10458; LE-64BIT-NEXT: sld 9, 9, 10459; LE-64BIT-NEXT: std 3, 24(5)460; LE-64BIT-NEXT: std 8, 8(5)461; LE-64BIT-NEXT: or 6, 9, 6462; LE-64BIT-NEXT: or 3, 11, 7463; LE-64BIT-NEXT: std 6, 0(5)464; LE-64BIT-NEXT: std 3, 16(5)465; LE-64BIT-NEXT: blr466;467; BE-LABEL: lshr_32bytes:468; BE: # %bb.0:469; BE-NEXT: ld 6, 0(3)470; BE-NEXT: ld 7, 8(3)471; BE-NEXT: ld 8, 16(3)472; BE-NEXT: ld 3, 24(3)473; BE-NEXT: lwz 4, 28(4)474; BE-NEXT: li 9, 0475; BE-NEXT: addi 10, 1, -32476; BE-NEXT: std 9, -40(1)477; BE-NEXT: std 9, -48(1)478; BE-NEXT: std 9, -56(1)479; BE-NEXT: std 9, -64(1)480; BE-NEXT: std 3, -8(1)481; BE-NEXT: rlwinm 3, 4, 29, 27, 28482; BE-NEXT: neg 3, 3483; BE-NEXT: std 8, -16(1)484; BE-NEXT: std 7, -24(1)485; BE-NEXT: std 6, -32(1)486; BE-NEXT: extsw 3, 3487; BE-NEXT: ldux 3, 10, 3488; BE-NEXT: clrlwi 4, 4, 26489; BE-NEXT: subfic 9, 4, 64490; BE-NEXT: ld 6, 8(10)491; BE-NEXT: ld 7, 24(10)492; BE-NEXT: ld 8, 16(10)493; BE-NEXT: sld 10, 3, 9494; BE-NEXT: srd 3, 3, 4495; BE-NEXT: std 3, 0(5)496; BE-NEXT: srd 11, 6, 4497; BE-NEXT: srd 7, 7, 4498; BE-NEXT: sld 6, 6, 9499; BE-NEXT: sld 9, 8, 9500; BE-NEXT: srd 8, 8, 4501; BE-NEXT: or 10, 10, 11502; BE-NEXT: or 7, 9, 7503; BE-NEXT: or 6, 6, 8504; BE-NEXT: std 6, 16(5)505; BE-NEXT: std 7, 24(5)506; BE-NEXT: std 10, 8(5)507; BE-NEXT: blr508;509; LE-32BIT-LABEL: lshr_32bytes:510; LE-32BIT: # %bb.0:511; LE-32BIT-NEXT: stwu 1, -112(1)512; LE-32BIT-NEXT: lwz 7, 0(3)513; LE-32BIT-NEXT: li 6, 0514; LE-32BIT-NEXT: lwz 8, 4(3)515; LE-32BIT-NEXT: lwz 9, 8(3)516; LE-32BIT-NEXT: lwz 10, 12(3)517; LE-32BIT-NEXT: lwz 11, 16(3)518; LE-32BIT-NEXT: lwz 12, 20(3)519; LE-32BIT-NEXT: lwz 0, 24(3)520; LE-32BIT-NEXT: lwz 3, 28(3)521; LE-32BIT-NEXT: lwz 4, 28(4)522; LE-32BIT-NEXT: stw 6, 44(1)523; LE-32BIT-NEXT: stw 6, 40(1)524; LE-32BIT-NEXT: stw 6, 36(1)525; LE-32BIT-NEXT: stw 6, 32(1)526; LE-32BIT-NEXT: stw 6, 28(1)527; LE-32BIT-NEXT: stw 6, 24(1)528; LE-32BIT-NEXT: stw 6, 20(1)529; LE-32BIT-NEXT: stw 6, 16(1)530; LE-32BIT-NEXT: rlwinm 6, 4, 29, 27, 29531; LE-32BIT-NEXT: stw 3, 76(1)532; LE-32BIT-NEXT: addi 3, 1, 48533; LE-32BIT-NEXT: stw 25, 84(1) # 4-byte Folded Spill534; LE-32BIT-NEXT: sub 3, 3, 6535; LE-32BIT-NEXT: stw 26, 88(1) # 4-byte Folded Spill536; LE-32BIT-NEXT: clrlwi 4, 4, 27537; LE-32BIT-NEXT: stw 27, 92(1) # 4-byte Folded Spill538; LE-32BIT-NEXT: stw 28, 96(1) # 4-byte Folded Spill539; LE-32BIT-NEXT: stw 29, 100(1) # 4-byte Folded Spill540; LE-32BIT-NEXT: stw 30, 104(1) # 4-byte Folded Spill541; LE-32BIT-NEXT: subfic 30, 4, 32542; LE-32BIT-NEXT: stw 0, 72(1)543; LE-32BIT-NEXT: stw 12, 68(1)544; LE-32BIT-NEXT: xori 12, 4, 31545; LE-32BIT-NEXT: stw 11, 64(1)546; LE-32BIT-NEXT: stw 10, 60(1)547; LE-32BIT-NEXT: stw 9, 56(1)548; LE-32BIT-NEXT: stw 8, 52(1)549; LE-32BIT-NEXT: stw 7, 48(1)550; LE-32BIT-NEXT: lwz 6, 8(3)551; LE-32BIT-NEXT: lwz 7, 4(3)552; LE-32BIT-NEXT: lwz 8, 0(3)553; LE-32BIT-NEXT: srw 29, 6, 4554; LE-32BIT-NEXT: lwz 9, 12(3)555; LE-32BIT-NEXT: slw 6, 6, 30556; LE-32BIT-NEXT: lwz 10, 20(3)557; LE-32BIT-NEXT: slw 28, 8, 30558; LE-32BIT-NEXT: lwz 11, 16(3)559; LE-32BIT-NEXT: srw 27, 9, 4560; LE-32BIT-NEXT: lwz 0, 28(3)561; LE-32BIT-NEXT: srw 26, 10, 4562; LE-32BIT-NEXT: lwz 3, 24(3)563; LE-32BIT-NEXT: slw 25, 11, 30564; LE-32BIT-NEXT: slw 9, 9, 30565; LE-32BIT-NEXT: slw 10, 10, 30566; LE-32BIT-NEXT: slw 30, 3, 30567; LE-32BIT-NEXT: srw 3, 3, 4568; LE-32BIT-NEXT: srw 0, 0, 4569; LE-32BIT-NEXT: or 3, 10, 3570; LE-32BIT-NEXT: srw 11, 11, 4571; LE-32BIT-NEXT: stw 3, 24(5)572; LE-32BIT-NEXT: or 3, 30, 0573; LE-32BIT-NEXT: stw 3, 28(5)574; LE-32BIT-NEXT: or 3, 9, 11575; LE-32BIT-NEXT: stw 3, 16(5)576; LE-32BIT-NEXT: or 3, 25, 26577; LE-32BIT-NEXT: srw 8, 8, 4578; LE-32BIT-NEXT: srw 4, 7, 4579; LE-32BIT-NEXT: slwi 7, 7, 1580; LE-32BIT-NEXT: stw 3, 20(5)581; LE-32BIT-NEXT: or 3, 6, 27582; LE-32BIT-NEXT: slw 7, 7, 12583; LE-32BIT-NEXT: stw 3, 12(5)584; LE-32BIT-NEXT: or 3, 28, 4585; LE-32BIT-NEXT: stw 3, 4(5)586; LE-32BIT-NEXT: or 3, 29, 7587; LE-32BIT-NEXT: stw 8, 0(5)588; LE-32BIT-NEXT: stw 3, 8(5)589; LE-32BIT-NEXT: lwz 30, 104(1) # 4-byte Folded Reload590; LE-32BIT-NEXT: lwz 29, 100(1) # 4-byte Folded Reload591; LE-32BIT-NEXT: lwz 28, 96(1) # 4-byte Folded Reload592; LE-32BIT-NEXT: lwz 27, 92(1) # 4-byte Folded Reload593; LE-32BIT-NEXT: lwz 26, 88(1) # 4-byte Folded Reload594; LE-32BIT-NEXT: lwz 25, 84(1) # 4-byte Folded Reload595; LE-32BIT-NEXT: addi 1, 1, 112596; LE-32BIT-NEXT: blr597 %src = load i256, ptr %src.ptr, align 1598 %bitOff = load i256, ptr %bitOff.ptr, align 1599 %res = lshr i256 %src, %bitOff600 store i256 %res, ptr %dst, align 1601 ret void602}603define void @shl_32bytes(ptr %src.ptr, ptr %bitOff.ptr, ptr %dst) nounwind {604; LE-64BIT-LABEL: shl_32bytes:605; LE-64BIT: # %bb.0:606; LE-64BIT-NEXT: li 6, 16607; LE-64BIT-NEXT: lwz 4, 0(4)608; LE-64BIT-NEXT: lxvd2x 1, 0, 3609; LE-64BIT-NEXT: addi 7, 1, -64610; LE-64BIT-NEXT: li 8, 48611; LE-64BIT-NEXT: lxvd2x 0, 3, 6612; LE-64BIT-NEXT: rlwinm 3, 4, 29, 27, 28613; LE-64BIT-NEXT: clrlwi 4, 4, 26614; LE-64BIT-NEXT: neg 3, 3615; LE-64BIT-NEXT: stxvd2x 0, 7, 8616; LE-64BIT-NEXT: xxlxor 0, 0, 0617; LE-64BIT-NEXT: li 8, 32618; LE-64BIT-NEXT: extsw 3, 3619; LE-64BIT-NEXT: stxvd2x 0, 7, 6620; LE-64BIT-NEXT: addi 6, 1, -32621; LE-64BIT-NEXT: stxvd2x 0, 0, 7622; LE-64BIT-NEXT: stxvd2x 1, 7, 8623; LE-64BIT-NEXT: subfic 7, 4, 64624; LE-64BIT-NEXT: ldux 3, 6, 3625; LE-64BIT-NEXT: ld 8, 16(6)626; LE-64BIT-NEXT: ld 9, 24(6)627; LE-64BIT-NEXT: ld 6, 8(6)628; LE-64BIT-NEXT: srd 10, 8, 7629; LE-64BIT-NEXT: sld 9, 9, 4630; LE-64BIT-NEXT: sld 8, 8, 4631; LE-64BIT-NEXT: or 9, 9, 10632; LE-64BIT-NEXT: srd 10, 6, 7633; LE-64BIT-NEXT: srd 7, 3, 7634; LE-64BIT-NEXT: sld 6, 6, 4635; LE-64BIT-NEXT: sld 3, 3, 4636; LE-64BIT-NEXT: or 6, 6, 7637; LE-64BIT-NEXT: std 3, 0(5)638; LE-64BIT-NEXT: or 3, 8, 10639; LE-64BIT-NEXT: std 9, 24(5)640; LE-64BIT-NEXT: std 6, 8(5)641; LE-64BIT-NEXT: std 3, 16(5)642; LE-64BIT-NEXT: blr643;644; BE-LABEL: shl_32bytes:645; BE: # %bb.0:646; BE-NEXT: ld 6, 0(3)647; BE-NEXT: ld 7, 8(3)648; BE-NEXT: ld 8, 16(3)649; BE-NEXT: ld 3, 24(3)650; BE-NEXT: lwz 4, 28(4)651; BE-NEXT: li 9, 0652; BE-NEXT: addi 10, 1, -64653; BE-NEXT: std 9, -8(1)654; BE-NEXT: std 9, -16(1)655; BE-NEXT: std 9, -24(1)656; BE-NEXT: std 9, -32(1)657; BE-NEXT: std 3, -40(1)658; BE-NEXT: std 8, -48(1)659; BE-NEXT: std 7, -56(1)660; BE-NEXT: std 6, -64(1)661; BE-NEXT: rlwinm 3, 4, 29, 27, 28662; BE-NEXT: ldux 6, 3, 10663; BE-NEXT: clrlwi 4, 4, 26664; BE-NEXT: subfic 9, 4, 64665; BE-NEXT: ld 7, 16(3)666; BE-NEXT: ld 8, 8(3)667; BE-NEXT: ld 3, 24(3)668; BE-NEXT: sld 6, 6, 4669; BE-NEXT: srd 10, 7, 9670; BE-NEXT: sld 11, 8, 4671; BE-NEXT: srd 8, 8, 9672; BE-NEXT: srd 9, 3, 9673; BE-NEXT: sld 7, 7, 4674; BE-NEXT: sld 3, 3, 4675; BE-NEXT: or 10, 11, 10676; BE-NEXT: or 6, 6, 8677; BE-NEXT: or 7, 7, 9678; BE-NEXT: std 3, 24(5)679; BE-NEXT: std 7, 16(5)680; BE-NEXT: std 6, 0(5)681; BE-NEXT: std 10, 8(5)682; BE-NEXT: blr683;684; LE-32BIT-LABEL: shl_32bytes:685; LE-32BIT: # %bb.0:686; LE-32BIT-NEXT: stwu 1, -112(1)687; LE-32BIT-NEXT: lwz 7, 0(3)688; LE-32BIT-NEXT: li 6, 0689; LE-32BIT-NEXT: lwz 8, 4(3)690; LE-32BIT-NEXT: lwz 9, 8(3)691; LE-32BIT-NEXT: lwz 10, 12(3)692; LE-32BIT-NEXT: lwz 11, 16(3)693; LE-32BIT-NEXT: lwz 12, 20(3)694; LE-32BIT-NEXT: lwz 0, 24(3)695; LE-32BIT-NEXT: lwz 3, 28(3)696; LE-32BIT-NEXT: lwz 4, 28(4)697; LE-32BIT-NEXT: stw 25, 84(1) # 4-byte Folded Spill698; LE-32BIT-NEXT: stw 26, 88(1) # 4-byte Folded Spill699; LE-32BIT-NEXT: stw 27, 92(1) # 4-byte Folded Spill700; LE-32BIT-NEXT: stw 28, 96(1) # 4-byte Folded Spill701; LE-32BIT-NEXT: stw 29, 100(1) # 4-byte Folded Spill702; LE-32BIT-NEXT: stw 30, 104(1) # 4-byte Folded Spill703; LE-32BIT-NEXT: stw 6, 76(1)704; LE-32BIT-NEXT: stw 6, 72(1)705; LE-32BIT-NEXT: stw 6, 68(1)706; LE-32BIT-NEXT: stw 6, 64(1)707; LE-32BIT-NEXT: stw 6, 60(1)708; LE-32BIT-NEXT: stw 6, 56(1)709; LE-32BIT-NEXT: stw 6, 52(1)710; LE-32BIT-NEXT: stw 6, 48(1)711; LE-32BIT-NEXT: rlwinm 6, 4, 29, 27, 29712; LE-32BIT-NEXT: stw 3, 44(1)713; LE-32BIT-NEXT: addi 3, 1, 16714; LE-32BIT-NEXT: stw 0, 40(1)715; LE-32BIT-NEXT: clrlwi 4, 4, 27716; LE-32BIT-NEXT: stw 12, 36(1)717; LE-32BIT-NEXT: subfic 12, 4, 32718; LE-32BIT-NEXT: stw 11, 32(1)719; LE-32BIT-NEXT: stw 10, 28(1)720; LE-32BIT-NEXT: stw 9, 24(1)721; LE-32BIT-NEXT: stw 8, 20(1)722; LE-32BIT-NEXT: stw 7, 16(1)723; LE-32BIT-NEXT: lwzux 3, 6, 3724; LE-32BIT-NEXT: lwz 7, 8(6)725; LE-32BIT-NEXT: slw 3, 3, 4726; LE-32BIT-NEXT: lwz 8, 4(6)727; LE-32BIT-NEXT: lwz 9, 16(6)728; LE-32BIT-NEXT: srw 30, 7, 12729; LE-32BIT-NEXT: lwz 10, 12(6)730; LE-32BIT-NEXT: slw 29, 8, 4731; LE-32BIT-NEXT: lwz 11, 24(6)732; LE-32BIT-NEXT: srw 8, 8, 12733; LE-32BIT-NEXT: lwz 0, 20(6)734; LE-32BIT-NEXT: srw 28, 9, 12735; LE-32BIT-NEXT: lwz 6, 28(6)736; LE-32BIT-NEXT: slw 27, 10, 4737; LE-32BIT-NEXT: srw 10, 10, 12738; LE-32BIT-NEXT: slw 7, 7, 4739; LE-32BIT-NEXT: srw 26, 11, 12740; LE-32BIT-NEXT: slw 25, 0, 4741; LE-32BIT-NEXT: srw 0, 0, 12742; LE-32BIT-NEXT: slw 9, 9, 4743; LE-32BIT-NEXT: srw 12, 6, 12744; LE-32BIT-NEXT: slw 11, 11, 4745; LE-32BIT-NEXT: slw 4, 6, 4746; LE-32BIT-NEXT: stw 4, 28(5)747; LE-32BIT-NEXT: or 4, 11, 12748; LE-32BIT-NEXT: stw 4, 24(5)749; LE-32BIT-NEXT: or 4, 9, 0750; LE-32BIT-NEXT: stw 4, 16(5)751; LE-32BIT-NEXT: or 4, 25, 26752; LE-32BIT-NEXT: stw 4, 20(5)753; LE-32BIT-NEXT: or 4, 7, 10754; LE-32BIT-NEXT: or 3, 3, 8755; LE-32BIT-NEXT: stw 4, 8(5)756; LE-32BIT-NEXT: or 4, 27, 28757; LE-32BIT-NEXT: stw 3, 0(5)758; LE-32BIT-NEXT: or 3, 29, 30759; LE-32BIT-NEXT: stw 4, 12(5)760; LE-32BIT-NEXT: stw 3, 4(5)761; LE-32BIT-NEXT: lwz 30, 104(1) # 4-byte Folded Reload762; LE-32BIT-NEXT: lwz 29, 100(1) # 4-byte Folded Reload763; LE-32BIT-NEXT: lwz 28, 96(1) # 4-byte Folded Reload764; LE-32BIT-NEXT: lwz 27, 92(1) # 4-byte Folded Reload765; LE-32BIT-NEXT: lwz 26, 88(1) # 4-byte Folded Reload766; LE-32BIT-NEXT: lwz 25, 84(1) # 4-byte Folded Reload767; LE-32BIT-NEXT: addi 1, 1, 112768; LE-32BIT-NEXT: blr769 %src = load i256, ptr %src.ptr, align 1770 %bitOff = load i256, ptr %bitOff.ptr, align 1771 %res = shl i256 %src, %bitOff772 store i256 %res, ptr %dst, align 1773 ret void774}775define void @ashr_32bytes(ptr %src.ptr, ptr %bitOff.ptr, ptr %dst) nounwind {776; LE-64BIT-LABEL: ashr_32bytes:777; LE-64BIT: # %bb.0:778; LE-64BIT-NEXT: ld 6, 24(3)779; LE-64BIT-NEXT: lxvd2x 0, 0, 3780; LE-64BIT-NEXT: lwz 4, 0(4)781; LE-64BIT-NEXT: addi 7, 1, -64782; LE-64BIT-NEXT: ld 3, 16(3)783; LE-64BIT-NEXT: sradi 8, 6, 63784; LE-64BIT-NEXT: rlwinm 9, 4, 29, 27, 28785; LE-64BIT-NEXT: std 6, -40(1)786; LE-64BIT-NEXT: std 3, -48(1)787; LE-64BIT-NEXT: clrlwi 4, 4, 26788; LE-64BIT-NEXT: stxvd2x 0, 0, 7789; LE-64BIT-NEXT: std 8, -8(1)790; LE-64BIT-NEXT: std 8, -16(1)791; LE-64BIT-NEXT: std 8, -24(1)792; LE-64BIT-NEXT: std 8, -32(1)793; LE-64BIT-NEXT: ldux 3, 9, 7794; LE-64BIT-NEXT: xori 7, 4, 63795; LE-64BIT-NEXT: ld 6, 16(9)796; LE-64BIT-NEXT: ld 8, 8(9)797; LE-64BIT-NEXT: ld 9, 24(9)798; LE-64BIT-NEXT: srd 3, 3, 4799; LE-64BIT-NEXT: sldi 11, 6, 1800; LE-64BIT-NEXT: srd 10, 8, 4801; LE-64BIT-NEXT: srd 6, 6, 4802; LE-64BIT-NEXT: sld 7, 11, 7803; LE-64BIT-NEXT: or 7, 10, 7804; LE-64BIT-NEXT: subfic 10, 4, 64805; LE-64BIT-NEXT: srad 4, 9, 4806; LE-64BIT-NEXT: sld 8, 8, 10807; LE-64BIT-NEXT: sld 11, 9, 10808; LE-64BIT-NEXT: std 4, 24(5)809; LE-64BIT-NEXT: std 7, 8(5)810; LE-64BIT-NEXT: or 3, 8, 3811; LE-64BIT-NEXT: std 3, 0(5)812; LE-64BIT-NEXT: or 3, 11, 6813; LE-64BIT-NEXT: std 3, 16(5)814; LE-64BIT-NEXT: blr815;816; BE-LABEL: ashr_32bytes:817; BE: # %bb.0:818; BE-NEXT: ld 7, 0(3)819; BE-NEXT: ld 8, 8(3)820; BE-NEXT: ld 9, 16(3)821; BE-NEXT: ld 3, 24(3)822; BE-NEXT: lwz 4, 28(4)823; BE-NEXT: addi 6, 1, -32824; BE-NEXT: std 3, -8(1)825; BE-NEXT: std 7, -32(1)826; BE-NEXT: sradi 3, 7, 63827; BE-NEXT: rlwinm 7, 4, 29, 27, 28828; BE-NEXT: std 3, -40(1)829; BE-NEXT: std 3, -48(1)830; BE-NEXT: std 3, -56(1)831; BE-NEXT: std 3, -64(1)832; BE-NEXT: neg 3, 7833; BE-NEXT: std 9, -16(1)834; BE-NEXT: std 8, -24(1)835; BE-NEXT: extsw 3, 3836; BE-NEXT: ldux 3, 6, 3837; BE-NEXT: clrlwi 4, 4, 26838; BE-NEXT: subfic 9, 4, 64839; BE-NEXT: ld 7, 8(6)840; BE-NEXT: ld 8, 24(6)841; BE-NEXT: ld 6, 16(6)842; BE-NEXT: sld 10, 3, 9843; BE-NEXT: srad 3, 3, 4844; BE-NEXT: std 3, 0(5)845; BE-NEXT: srd 11, 7, 4846; BE-NEXT: srd 8, 8, 4847; BE-NEXT: sld 7, 7, 9848; BE-NEXT: sld 9, 6, 9849; BE-NEXT: srd 6, 6, 4850; BE-NEXT: or 10, 10, 11851; BE-NEXT: or 8, 9, 8852; BE-NEXT: or 6, 7, 6853; BE-NEXT: std 6, 16(5)854; BE-NEXT: std 8, 24(5)855; BE-NEXT: std 10, 8(5)856; BE-NEXT: blr857;858; LE-32BIT-LABEL: ashr_32bytes:859; LE-32BIT: # %bb.0:860; LE-32BIT-NEXT: stwu 1, -112(1)861; LE-32BIT-NEXT: lwz 7, 0(3)862; LE-32BIT-NEXT: addi 6, 1, 48863; LE-32BIT-NEXT: lwz 8, 4(3)864; LE-32BIT-NEXT: lwz 9, 8(3)865; LE-32BIT-NEXT: lwz 10, 12(3)866; LE-32BIT-NEXT: lwz 11, 16(3)867; LE-32BIT-NEXT: lwz 12, 20(3)868; LE-32BIT-NEXT: lwz 0, 24(3)869; LE-32BIT-NEXT: lwz 3, 28(3)870; LE-32BIT-NEXT: lwz 4, 28(4)871; LE-32BIT-NEXT: stw 3, 76(1)872; LE-32BIT-NEXT: srawi 3, 7, 31873; LE-32BIT-NEXT: stw 7, 48(1)874; LE-32BIT-NEXT: rlwinm 7, 4, 29, 27, 29875; LE-32BIT-NEXT: stw 25, 84(1) # 4-byte Folded Spill876; LE-32BIT-NEXT: clrlwi 4, 4, 27877; LE-32BIT-NEXT: stw 26, 88(1) # 4-byte Folded Spill878; LE-32BIT-NEXT: stw 27, 92(1) # 4-byte Folded Spill879; LE-32BIT-NEXT: stw 28, 96(1) # 4-byte Folded Spill880; LE-32BIT-NEXT: stw 29, 100(1) # 4-byte Folded Spill881; LE-32BIT-NEXT: stw 30, 104(1) # 4-byte Folded Spill882; LE-32BIT-NEXT: subfic 30, 4, 32883; LE-32BIT-NEXT: stw 0, 72(1)884; LE-32BIT-NEXT: stw 12, 68(1)885; LE-32BIT-NEXT: xori 12, 4, 31886; LE-32BIT-NEXT: stw 11, 64(1)887; LE-32BIT-NEXT: stw 10, 60(1)888; LE-32BIT-NEXT: stw 9, 56(1)889; LE-32BIT-NEXT: stw 8, 52(1)890; LE-32BIT-NEXT: stw 3, 44(1)891; LE-32BIT-NEXT: stw 3, 40(1)892; LE-32BIT-NEXT: stw 3, 36(1)893; LE-32BIT-NEXT: stw 3, 32(1)894; LE-32BIT-NEXT: stw 3, 28(1)895; LE-32BIT-NEXT: stw 3, 24(1)896; LE-32BIT-NEXT: stw 3, 20(1)897; LE-32BIT-NEXT: stw 3, 16(1)898; LE-32BIT-NEXT: sub 3, 6, 7899; LE-32BIT-NEXT: lwz 6, 8(3)900; LE-32BIT-NEXT: lwz 7, 4(3)901; LE-32BIT-NEXT: lwz 8, 0(3)902; LE-32BIT-NEXT: srw 29, 6, 4903; LE-32BIT-NEXT: lwz 9, 12(3)904; LE-32BIT-NEXT: slw 6, 6, 30905; LE-32BIT-NEXT: lwz 10, 20(3)906; LE-32BIT-NEXT: slw 28, 8, 30907; LE-32BIT-NEXT: lwz 11, 16(3)908; LE-32BIT-NEXT: srw 27, 9, 4909; LE-32BIT-NEXT: lwz 0, 28(3)910; LE-32BIT-NEXT: srw 26, 10, 4911; LE-32BIT-NEXT: lwz 3, 24(3)912; LE-32BIT-NEXT: slw 25, 11, 30913; LE-32BIT-NEXT: slw 9, 9, 30914; LE-32BIT-NEXT: slw 10, 10, 30915; LE-32BIT-NEXT: slw 30, 3, 30916; LE-32BIT-NEXT: srw 3, 3, 4917; LE-32BIT-NEXT: srw 0, 0, 4918; LE-32BIT-NEXT: or 3, 10, 3919; LE-32BIT-NEXT: srw 11, 11, 4920; LE-32BIT-NEXT: stw 3, 24(5)921; LE-32BIT-NEXT: or 3, 30, 0922; LE-32BIT-NEXT: stw 3, 28(5)923; LE-32BIT-NEXT: or 3, 9, 11924; LE-32BIT-NEXT: stw 3, 16(5)925; LE-32BIT-NEXT: or 3, 25, 26926; LE-32BIT-NEXT: sraw 8, 8, 4927; LE-32BIT-NEXT: srw 4, 7, 4928; LE-32BIT-NEXT: slwi 7, 7, 1929; LE-32BIT-NEXT: stw 3, 20(5)930; LE-32BIT-NEXT: or 3, 6, 27931; LE-32BIT-NEXT: slw 7, 7, 12932; LE-32BIT-NEXT: stw 3, 12(5)933; LE-32BIT-NEXT: or 3, 28, 4934; LE-32BIT-NEXT: stw 3, 4(5)935; LE-32BIT-NEXT: or 3, 29, 7936; LE-32BIT-NEXT: stw 8, 0(5)937; LE-32BIT-NEXT: stw 3, 8(5)938; LE-32BIT-NEXT: lwz 30, 104(1) # 4-byte Folded Reload939; LE-32BIT-NEXT: lwz 29, 100(1) # 4-byte Folded Reload940; LE-32BIT-NEXT: lwz 28, 96(1) # 4-byte Folded Reload941; LE-32BIT-NEXT: lwz 27, 92(1) # 4-byte Folded Reload942; LE-32BIT-NEXT: lwz 26, 88(1) # 4-byte Folded Reload943; LE-32BIT-NEXT: lwz 25, 84(1) # 4-byte Folded Reload944; LE-32BIT-NEXT: addi 1, 1, 112945; LE-32BIT-NEXT: blr946 %src = load i256, ptr %src.ptr, align 1947 %bitOff = load i256, ptr %bitOff.ptr, align 1948 %res = ashr i256 %src, %bitOff949 store i256 %res, ptr %dst, align 1950 ret void951}952;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:953; LE: {{.*}}954