brintos

brintos / llvm-project-archived public Read only

0
0
Text · 192.1 KiB · 09b2eeb Raw
5922 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=riscv64 -verify-machineinstrs < %s | FileCheck %s -check-prefixes=RV64I3; RUN: llc -mtriple=riscv32 -verify-machineinstrs < %s | FileCheck %s -check-prefixes=RV32I4 5define void @lshr_4bytes(ptr %src.ptr, ptr %byteOff.ptr, ptr %dst) nounwind {6; RV64I-LABEL: lshr_4bytes:7; RV64I:       # %bb.0:8; RV64I-NEXT:    lbu a3, 0(a0)9; RV64I-NEXT:    lbu a4, 1(a0)10; RV64I-NEXT:    lbu a5, 2(a0)11; RV64I-NEXT:    lb a0, 3(a0)12; RV64I-NEXT:    lbu a1, 0(a1)13; RV64I-NEXT:    slli a4, a4, 814; RV64I-NEXT:    or a3, a4, a315; RV64I-NEXT:    slli a5, a5, 1616; RV64I-NEXT:    slli a0, a0, 2417; RV64I-NEXT:    slli a1, a1, 318; RV64I-NEXT:    or a0, a0, a519; RV64I-NEXT:    or a0, a0, a320; RV64I-NEXT:    srlw a0, a0, a121; RV64I-NEXT:    srli a1, a0, 1622; RV64I-NEXT:    srli a3, a0, 2423; RV64I-NEXT:    srli a4, a0, 824; RV64I-NEXT:    sb a0, 0(a2)25; RV64I-NEXT:    sb a4, 1(a2)26; RV64I-NEXT:    sb a1, 2(a2)27; RV64I-NEXT:    sb a3, 3(a2)28; RV64I-NEXT:    ret29;30; RV32I-LABEL: lshr_4bytes:31; RV32I:       # %bb.0:32; RV32I-NEXT:    lbu a3, 1(a0)33; RV32I-NEXT:    lbu a4, 2(a0)34; RV32I-NEXT:    lbu a5, 3(a0)35; RV32I-NEXT:    lbu a0, 0(a0)36; RV32I-NEXT:    slli a3, a3, 837; RV32I-NEXT:    slli a4, a4, 1638; RV32I-NEXT:    slli a5, a5, 2439; RV32I-NEXT:    or a0, a3, a040; RV32I-NEXT:    or a4, a5, a441; RV32I-NEXT:    lbu a3, 1(a1)42; RV32I-NEXT:    lbu a5, 0(a1)43; RV32I-NEXT:    lbu a6, 2(a1)44; RV32I-NEXT:    lbu a1, 3(a1)45; RV32I-NEXT:    slli a3, a3, 846; RV32I-NEXT:    or a3, a3, a547; RV32I-NEXT:    slli a6, a6, 1648; RV32I-NEXT:    slli a1, a1, 2449; RV32I-NEXT:    or a1, a1, a650; RV32I-NEXT:    or a0, a4, a051; RV32I-NEXT:    or a1, a1, a352; RV32I-NEXT:    slli a1, a1, 353; RV32I-NEXT:    srl a0, a0, a154; RV32I-NEXT:    srli a1, a0, 1655; RV32I-NEXT:    srli a3, a0, 2456; RV32I-NEXT:    srli a4, a0, 857; RV32I-NEXT:    sb a0, 0(a2)58; RV32I-NEXT:    sb a4, 1(a2)59; RV32I-NEXT:    sb a1, 2(a2)60; RV32I-NEXT:    sb a3, 3(a2)61; RV32I-NEXT:    ret62  %src = load i32, ptr %src.ptr, align 163  %byteOff = load i32, ptr %byteOff.ptr, align 164  %bitOff = shl i32 %byteOff, 365  %res = lshr i32 %src, %bitOff66  store i32 %res, ptr %dst, align 167  ret void68}69define void @shl_4bytes(ptr %src.ptr, ptr %byteOff.ptr, ptr %dst) nounwind {70; RV64I-LABEL: shl_4bytes:71; RV64I:       # %bb.0:72; RV64I-NEXT:    lbu a3, 0(a0)73; RV64I-NEXT:    lbu a4, 1(a0)74; RV64I-NEXT:    lbu a5, 2(a0)75; RV64I-NEXT:    lb a0, 3(a0)76; RV64I-NEXT:    lbu a1, 0(a1)77; RV64I-NEXT:    slli a4, a4, 878; RV64I-NEXT:    or a3, a4, a379; RV64I-NEXT:    slli a5, a5, 1680; RV64I-NEXT:    slli a0, a0, 2481; RV64I-NEXT:    slli a1, a1, 382; RV64I-NEXT:    or a0, a0, a583; RV64I-NEXT:    or a0, a0, a384; RV64I-NEXT:    sllw a0, a0, a185; RV64I-NEXT:    srli a1, a0, 1686; RV64I-NEXT:    srli a3, a0, 2487; RV64I-NEXT:    srli a4, a0, 888; RV64I-NEXT:    sb a0, 0(a2)89; RV64I-NEXT:    sb a4, 1(a2)90; RV64I-NEXT:    sb a1, 2(a2)91; RV64I-NEXT:    sb a3, 3(a2)92; RV64I-NEXT:    ret93;94; RV32I-LABEL: shl_4bytes:95; RV32I:       # %bb.0:96; RV32I-NEXT:    lbu a3, 1(a0)97; RV32I-NEXT:    lbu a4, 2(a0)98; RV32I-NEXT:    lbu a5, 3(a0)99; RV32I-NEXT:    lbu a0, 0(a0)100; RV32I-NEXT:    slli a3, a3, 8101; RV32I-NEXT:    slli a4, a4, 16102; RV32I-NEXT:    slli a5, a5, 24103; RV32I-NEXT:    or a0, a3, a0104; RV32I-NEXT:    or a4, a5, a4105; RV32I-NEXT:    lbu a3, 1(a1)106; RV32I-NEXT:    lbu a5, 0(a1)107; RV32I-NEXT:    lbu a6, 2(a1)108; RV32I-NEXT:    lbu a1, 3(a1)109; RV32I-NEXT:    slli a3, a3, 8110; RV32I-NEXT:    or a3, a3, a5111; RV32I-NEXT:    slli a6, a6, 16112; RV32I-NEXT:    slli a1, a1, 24113; RV32I-NEXT:    or a1, a1, a6114; RV32I-NEXT:    or a0, a4, a0115; RV32I-NEXT:    or a1, a1, a3116; RV32I-NEXT:    slli a1, a1, 3117; RV32I-NEXT:    sll a0, a0, a1118; RV32I-NEXT:    srli a1, a0, 16119; RV32I-NEXT:    srli a3, a0, 24120; RV32I-NEXT:    srli a4, a0, 8121; RV32I-NEXT:    sb a0, 0(a2)122; RV32I-NEXT:    sb a4, 1(a2)123; RV32I-NEXT:    sb a1, 2(a2)124; RV32I-NEXT:    sb a3, 3(a2)125; RV32I-NEXT:    ret126  %src = load i32, ptr %src.ptr, align 1127  %byteOff = load i32, ptr %byteOff.ptr, align 1128  %bitOff = shl i32 %byteOff, 3129  %res = shl i32 %src, %bitOff130  store i32 %res, ptr %dst, align 1131  ret void132}133define void @ashr_4bytes(ptr %src.ptr, ptr %byteOff.ptr, ptr %dst) nounwind {134; RV64I-LABEL: ashr_4bytes:135; RV64I:       # %bb.0:136; RV64I-NEXT:    lbu a3, 0(a0)137; RV64I-NEXT:    lbu a4, 1(a0)138; RV64I-NEXT:    lbu a5, 2(a0)139; RV64I-NEXT:    lb a0, 3(a0)140; RV64I-NEXT:    lbu a1, 0(a1)141; RV64I-NEXT:    slli a4, a4, 8142; RV64I-NEXT:    or a3, a4, a3143; RV64I-NEXT:    slli a5, a5, 16144; RV64I-NEXT:    slli a0, a0, 24145; RV64I-NEXT:    slli a1, a1, 3146; RV64I-NEXT:    or a0, a0, a5147; RV64I-NEXT:    or a0, a0, a3148; RV64I-NEXT:    sraw a0, a0, a1149; RV64I-NEXT:    srli a1, a0, 16150; RV64I-NEXT:    srli a3, a0, 24151; RV64I-NEXT:    srli a4, a0, 8152; RV64I-NEXT:    sb a0, 0(a2)153; RV64I-NEXT:    sb a4, 1(a2)154; RV64I-NEXT:    sb a1, 2(a2)155; RV64I-NEXT:    sb a3, 3(a2)156; RV64I-NEXT:    ret157;158; RV32I-LABEL: ashr_4bytes:159; RV32I:       # %bb.0:160; RV32I-NEXT:    lbu a3, 1(a0)161; RV32I-NEXT:    lbu a4, 2(a0)162; RV32I-NEXT:    lbu a5, 3(a0)163; RV32I-NEXT:    lbu a0, 0(a0)164; RV32I-NEXT:    slli a3, a3, 8165; RV32I-NEXT:    slli a4, a4, 16166; RV32I-NEXT:    slli a5, a5, 24167; RV32I-NEXT:    or a0, a3, a0168; RV32I-NEXT:    or a4, a5, a4169; RV32I-NEXT:    lbu a3, 1(a1)170; RV32I-NEXT:    lbu a5, 0(a1)171; RV32I-NEXT:    lbu a6, 2(a1)172; RV32I-NEXT:    lbu a1, 3(a1)173; RV32I-NEXT:    slli a3, a3, 8174; RV32I-NEXT:    or a3, a3, a5175; RV32I-NEXT:    slli a6, a6, 16176; RV32I-NEXT:    slli a1, a1, 24177; RV32I-NEXT:    or a1, a1, a6178; RV32I-NEXT:    or a0, a4, a0179; RV32I-NEXT:    or a1, a1, a3180; RV32I-NEXT:    slli a1, a1, 3181; RV32I-NEXT:    sra a0, a0, a1182; RV32I-NEXT:    srli a1, a0, 16183; RV32I-NEXT:    srli a3, a0, 24184; RV32I-NEXT:    srli a4, a0, 8185; RV32I-NEXT:    sb a0, 0(a2)186; RV32I-NEXT:    sb a4, 1(a2)187; RV32I-NEXT:    sb a1, 2(a2)188; RV32I-NEXT:    sb a3, 3(a2)189; RV32I-NEXT:    ret190  %src = load i32, ptr %src.ptr, align 1191  %byteOff = load i32, ptr %byteOff.ptr, align 1192  %bitOff = shl i32 %byteOff, 3193  %res = ashr i32 %src, %bitOff194  store i32 %res, ptr %dst, align 1195  ret void196}197 198define void @lshr_8bytes(ptr %src.ptr, ptr %byteOff.ptr, ptr %dst) nounwind {199; RV64I-LABEL: lshr_8bytes:200; RV64I:       # %bb.0:201; RV64I-NEXT:    lbu a3, 0(a0)202; RV64I-NEXT:    lbu a4, 1(a0)203; RV64I-NEXT:    lbu a5, 2(a0)204; RV64I-NEXT:    lbu a6, 3(a0)205; RV64I-NEXT:    lbu a7, 4(a0)206; RV64I-NEXT:    lbu t0, 5(a0)207; RV64I-NEXT:    lbu t1, 6(a0)208; RV64I-NEXT:    lbu a0, 7(a0)209; RV64I-NEXT:    slli a4, a4, 8210; RV64I-NEXT:    slli a5, a5, 16211; RV64I-NEXT:    slli a6, a6, 24212; RV64I-NEXT:    slli t0, t0, 8213; RV64I-NEXT:    or a3, a4, a3214; RV64I-NEXT:    or a4, a6, a5215; RV64I-NEXT:    or a5, t0, a7216; RV64I-NEXT:    lbu a6, 4(a1)217; RV64I-NEXT:    lbu a7, 5(a1)218; RV64I-NEXT:    lbu t0, 6(a1)219; RV64I-NEXT:    lbu t2, 7(a1)220; RV64I-NEXT:    slli t1, t1, 16221; RV64I-NEXT:    slli a0, a0, 24222; RV64I-NEXT:    slli a7, a7, 8223; RV64I-NEXT:    slli t0, t0, 16224; RV64I-NEXT:    slli t2, t2, 24225; RV64I-NEXT:    or a0, a0, t1226; RV64I-NEXT:    or a6, a7, a6227; RV64I-NEXT:    or a7, t2, t0228; RV64I-NEXT:    lbu t0, 1(a1)229; RV64I-NEXT:    lbu t1, 0(a1)230; RV64I-NEXT:    lbu t2, 2(a1)231; RV64I-NEXT:    lbu a1, 3(a1)232; RV64I-NEXT:    slli t0, t0, 8233; RV64I-NEXT:    or t0, t0, t1234; RV64I-NEXT:    slli t2, t2, 16235; RV64I-NEXT:    slli a1, a1, 24236; RV64I-NEXT:    or a1, a1, t2237; RV64I-NEXT:    or a3, a4, a3238; RV64I-NEXT:    or a0, a0, a5239; RV64I-NEXT:    or a4, a7, a6240; RV64I-NEXT:    or a1, a1, t0241; RV64I-NEXT:    slli a0, a0, 32242; RV64I-NEXT:    slli a1, a1, 3243; RV64I-NEXT:    slli a4, a4, 35244; RV64I-NEXT:    or a0, a0, a3245; RV64I-NEXT:    or a1, a4, a1246; RV64I-NEXT:    srl a0, a0, a1247; RV64I-NEXT:    srli a1, a0, 48248; RV64I-NEXT:    srli a3, a0, 56249; RV64I-NEXT:    srli a4, a0, 32250; RV64I-NEXT:    srli a5, a0, 40251; RV64I-NEXT:    srli a6, a0, 16252; RV64I-NEXT:    srli a7, a0, 24253; RV64I-NEXT:    srli t0, a0, 8254; RV64I-NEXT:    sb a4, 4(a2)255; RV64I-NEXT:    sb a5, 5(a2)256; RV64I-NEXT:    sb a1, 6(a2)257; RV64I-NEXT:    sb a3, 7(a2)258; RV64I-NEXT:    sb a0, 0(a2)259; RV64I-NEXT:    sb t0, 1(a2)260; RV64I-NEXT:    sb a6, 2(a2)261; RV64I-NEXT:    sb a7, 3(a2)262; RV64I-NEXT:    ret263;264; RV32I-LABEL: lshr_8bytes:265; RV32I:       # %bb.0:266; RV32I-NEXT:    lbu a3, 5(a0)267; RV32I-NEXT:    lbu a4, 6(a0)268; RV32I-NEXT:    lbu a5, 7(a0)269; RV32I-NEXT:    lbu a6, 4(a0)270; RV32I-NEXT:    slli a3, a3, 8271; RV32I-NEXT:    slli a4, a4, 16272; RV32I-NEXT:    slli a5, a5, 24273; RV32I-NEXT:    or a3, a3, a6274; RV32I-NEXT:    or a4, a5, a4275; RV32I-NEXT:    lbu a5, 1(a1)276; RV32I-NEXT:    lbu a6, 0(a1)277; RV32I-NEXT:    lbu a7, 2(a1)278; RV32I-NEXT:    lbu a1, 3(a1)279; RV32I-NEXT:    slli a5, a5, 8280; RV32I-NEXT:    or a6, a5, a6281; RV32I-NEXT:    slli a7, a7, 16282; RV32I-NEXT:    slli a1, a1, 24283; RV32I-NEXT:    or a1, a1, a7284; RV32I-NEXT:    or a5, a4, a3285; RV32I-NEXT:    or a4, a1, a6286; RV32I-NEXT:    slli a4, a4, 3287; RV32I-NEXT:    addi a3, a4, -32288; RV32I-NEXT:    srl a1, a5, a4289; RV32I-NEXT:    bltz a3, .LBB3_2290; RV32I-NEXT:  # %bb.1:291; RV32I-NEXT:    mv a0, a1292; RV32I-NEXT:    j .LBB3_3293; RV32I-NEXT:  .LBB3_2:294; RV32I-NEXT:    lbu a6, 1(a0)295; RV32I-NEXT:    lbu a7, 0(a0)296; RV32I-NEXT:    lbu t0, 2(a0)297; RV32I-NEXT:    lbu a0, 3(a0)298; RV32I-NEXT:    slli a6, a6, 8299; RV32I-NEXT:    or a6, a6, a7300; RV32I-NEXT:    slli a5, a5, 1301; RV32I-NEXT:    slli t0, t0, 16302; RV32I-NEXT:    slli a0, a0, 24303; RV32I-NEXT:    or a0, a0, t0304; RV32I-NEXT:    not a7, a4305; RV32I-NEXT:    or a0, a0, a6306; RV32I-NEXT:    srl a0, a0, a4307; RV32I-NEXT:    sll a4, a5, a7308; RV32I-NEXT:    or a0, a0, a4309; RV32I-NEXT:  .LBB3_3:310; RV32I-NEXT:    srai a3, a3, 31311; RV32I-NEXT:    srli a4, a0, 16312; RV32I-NEXT:    srli a5, a0, 24313; RV32I-NEXT:    and a1, a3, a1314; RV32I-NEXT:    srli a3, a1, 16315; RV32I-NEXT:    srli a6, a1, 24316; RV32I-NEXT:    srli a7, a1, 8317; RV32I-NEXT:    sb a1, 4(a2)318; RV32I-NEXT:    sb a7, 5(a2)319; RV32I-NEXT:    sb a3, 6(a2)320; RV32I-NEXT:    sb a6, 7(a2)321; RV32I-NEXT:    srli a1, a0, 8322; RV32I-NEXT:    sb a0, 0(a2)323; RV32I-NEXT:    sb a1, 1(a2)324; RV32I-NEXT:    sb a4, 2(a2)325; RV32I-NEXT:    sb a5, 3(a2)326; RV32I-NEXT:    ret327  %src = load i64, ptr %src.ptr, align 1328  %byteOff = load i64, ptr %byteOff.ptr, align 1329  %bitOff = shl i64 %byteOff, 3330  %res = lshr i64 %src, %bitOff331  store i64 %res, ptr %dst, align 1332  ret void333}334define void @shl_8bytes(ptr %src.ptr, ptr %byteOff.ptr, ptr %dst) nounwind {335; RV64I-LABEL: shl_8bytes:336; RV64I:       # %bb.0:337; RV64I-NEXT:    lbu a3, 0(a0)338; RV64I-NEXT:    lbu a4, 1(a0)339; RV64I-NEXT:    lbu a5, 2(a0)340; RV64I-NEXT:    lbu a6, 3(a0)341; RV64I-NEXT:    lbu a7, 4(a0)342; RV64I-NEXT:    lbu t0, 5(a0)343; RV64I-NEXT:    lbu t1, 6(a0)344; RV64I-NEXT:    lbu a0, 7(a0)345; RV64I-NEXT:    slli a4, a4, 8346; RV64I-NEXT:    slli a5, a5, 16347; RV64I-NEXT:    slli a6, a6, 24348; RV64I-NEXT:    slli t0, t0, 8349; RV64I-NEXT:    or a3, a4, a3350; RV64I-NEXT:    or a4, a6, a5351; RV64I-NEXT:    or a5, t0, a7352; RV64I-NEXT:    lbu a6, 4(a1)353; RV64I-NEXT:    lbu a7, 5(a1)354; RV64I-NEXT:    lbu t0, 6(a1)355; RV64I-NEXT:    lbu t2, 7(a1)356; RV64I-NEXT:    slli t1, t1, 16357; RV64I-NEXT:    slli a0, a0, 24358; RV64I-NEXT:    slli a7, a7, 8359; RV64I-NEXT:    slli t0, t0, 16360; RV64I-NEXT:    slli t2, t2, 24361; RV64I-NEXT:    or a0, a0, t1362; RV64I-NEXT:    or a6, a7, a6363; RV64I-NEXT:    or a7, t2, t0364; RV64I-NEXT:    lbu t0, 1(a1)365; RV64I-NEXT:    lbu t1, 0(a1)366; RV64I-NEXT:    lbu t2, 2(a1)367; RV64I-NEXT:    lbu a1, 3(a1)368; RV64I-NEXT:    slli t0, t0, 8369; RV64I-NEXT:    or t0, t0, t1370; RV64I-NEXT:    slli t2, t2, 16371; RV64I-NEXT:    slli a1, a1, 24372; RV64I-NEXT:    or a1, a1, t2373; RV64I-NEXT:    or a3, a4, a3374; RV64I-NEXT:    or a0, a0, a5375; RV64I-NEXT:    or a4, a7, a6376; RV64I-NEXT:    or a1, a1, t0377; RV64I-NEXT:    slli a0, a0, 32378; RV64I-NEXT:    slli a1, a1, 3379; RV64I-NEXT:    slli a4, a4, 35380; RV64I-NEXT:    or a0, a0, a3381; RV64I-NEXT:    or a1, a4, a1382; RV64I-NEXT:    sll a0, a0, a1383; RV64I-NEXT:    srli a1, a0, 48384; RV64I-NEXT:    srli a3, a0, 56385; RV64I-NEXT:    srli a4, a0, 32386; RV64I-NEXT:    srli a5, a0, 40387; RV64I-NEXT:    srli a6, a0, 16388; RV64I-NEXT:    srli a7, a0, 24389; RV64I-NEXT:    srli t0, a0, 8390; RV64I-NEXT:    sb a4, 4(a2)391; RV64I-NEXT:    sb a5, 5(a2)392; RV64I-NEXT:    sb a1, 6(a2)393; RV64I-NEXT:    sb a3, 7(a2)394; RV64I-NEXT:    sb a0, 0(a2)395; RV64I-NEXT:    sb t0, 1(a2)396; RV64I-NEXT:    sb a6, 2(a2)397; RV64I-NEXT:    sb a7, 3(a2)398; RV64I-NEXT:    ret399;400; RV32I-LABEL: shl_8bytes:401; RV32I:       # %bb.0:402; RV32I-NEXT:    lbu a3, 1(a0)403; RV32I-NEXT:    lbu a4, 2(a0)404; RV32I-NEXT:    lbu a5, 3(a0)405; RV32I-NEXT:    lbu a6, 0(a0)406; RV32I-NEXT:    slli a3, a3, 8407; RV32I-NEXT:    slli a4, a4, 16408; RV32I-NEXT:    slli a5, a5, 24409; RV32I-NEXT:    or a3, a3, a6410; RV32I-NEXT:    or a4, a5, a4411; RV32I-NEXT:    lbu a5, 1(a1)412; RV32I-NEXT:    lbu a6, 0(a1)413; RV32I-NEXT:    lbu a7, 2(a1)414; RV32I-NEXT:    lbu a1, 3(a1)415; RV32I-NEXT:    slli a5, a5, 8416; RV32I-NEXT:    or a6, a5, a6417; RV32I-NEXT:    slli a7, a7, 16418; RV32I-NEXT:    slli a1, a1, 24419; RV32I-NEXT:    or a1, a1, a7420; RV32I-NEXT:    or a5, a4, a3421; RV32I-NEXT:    or a4, a1, a6422; RV32I-NEXT:    slli a4, a4, 3423; RV32I-NEXT:    addi a3, a4, -32424; RV32I-NEXT:    sll a1, a5, a4425; RV32I-NEXT:    bltz a3, .LBB4_2426; RV32I-NEXT:  # %bb.1:427; RV32I-NEXT:    mv a0, a1428; RV32I-NEXT:    j .LBB4_3429; RV32I-NEXT:  .LBB4_2:430; RV32I-NEXT:    lbu a6, 5(a0)431; RV32I-NEXT:    lbu a7, 4(a0)432; RV32I-NEXT:    lbu t0, 6(a0)433; RV32I-NEXT:    lbu a0, 7(a0)434; RV32I-NEXT:    slli a6, a6, 8435; RV32I-NEXT:    or a6, a6, a7436; RV32I-NEXT:    srli a5, a5, 1437; RV32I-NEXT:    slli t0, t0, 16438; RV32I-NEXT:    slli a0, a0, 24439; RV32I-NEXT:    or a0, a0, t0440; RV32I-NEXT:    not a7, a4441; RV32I-NEXT:    or a0, a0, a6442; RV32I-NEXT:    sll a0, a0, a4443; RV32I-NEXT:    srl a4, a5, a7444; RV32I-NEXT:    or a0, a0, a4445; RV32I-NEXT:  .LBB4_3:446; RV32I-NEXT:    srai a3, a3, 31447; RV32I-NEXT:    srli a4, a0, 16448; RV32I-NEXT:    srli a5, a0, 24449; RV32I-NEXT:    and a1, a3, a1450; RV32I-NEXT:    srli a3, a1, 16451; RV32I-NEXT:    srli a6, a1, 24452; RV32I-NEXT:    srli a7, a1, 8453; RV32I-NEXT:    sb a1, 0(a2)454; RV32I-NEXT:    sb a7, 1(a2)455; RV32I-NEXT:    sb a3, 2(a2)456; RV32I-NEXT:    sb a6, 3(a2)457; RV32I-NEXT:    srli a1, a0, 8458; RV32I-NEXT:    sb a0, 4(a2)459; RV32I-NEXT:    sb a1, 5(a2)460; RV32I-NEXT:    sb a4, 6(a2)461; RV32I-NEXT:    sb a5, 7(a2)462; RV32I-NEXT:    ret463  %src = load i64, ptr %src.ptr, align 1464  %byteOff = load i64, ptr %byteOff.ptr, align 1465  %bitOff = shl i64 %byteOff, 3466  %res = shl i64 %src, %bitOff467  store i64 %res, ptr %dst, align 1468  ret void469}470define void @ashr_8bytes(ptr %src.ptr, ptr %byteOff.ptr, ptr %dst) nounwind {471; RV64I-LABEL: ashr_8bytes:472; RV64I:       # %bb.0:473; RV64I-NEXT:    lbu a3, 0(a0)474; RV64I-NEXT:    lbu a4, 1(a0)475; RV64I-NEXT:    lbu a5, 2(a0)476; RV64I-NEXT:    lbu a6, 3(a0)477; RV64I-NEXT:    lbu a7, 4(a0)478; RV64I-NEXT:    lbu t0, 5(a0)479; RV64I-NEXT:    lbu t1, 6(a0)480; RV64I-NEXT:    lbu a0, 7(a0)481; RV64I-NEXT:    slli a4, a4, 8482; RV64I-NEXT:    slli a5, a5, 16483; RV64I-NEXT:    slli a6, a6, 24484; RV64I-NEXT:    slli t0, t0, 8485; RV64I-NEXT:    or a3, a4, a3486; RV64I-NEXT:    or a4, a6, a5487; RV64I-NEXT:    or a5, t0, a7488; RV64I-NEXT:    lbu a6, 4(a1)489; RV64I-NEXT:    lbu a7, 5(a1)490; RV64I-NEXT:    lbu t0, 6(a1)491; RV64I-NEXT:    lbu t2, 7(a1)492; RV64I-NEXT:    slli t1, t1, 16493; RV64I-NEXT:    slli a0, a0, 24494; RV64I-NEXT:    slli a7, a7, 8495; RV64I-NEXT:    slli t0, t0, 16496; RV64I-NEXT:    slli t2, t2, 24497; RV64I-NEXT:    or a0, a0, t1498; RV64I-NEXT:    or a6, a7, a6499; RV64I-NEXT:    or a7, t2, t0500; RV64I-NEXT:    lbu t0, 1(a1)501; RV64I-NEXT:    lbu t1, 0(a1)502; RV64I-NEXT:    lbu t2, 2(a1)503; RV64I-NEXT:    lbu a1, 3(a1)504; RV64I-NEXT:    slli t0, t0, 8505; RV64I-NEXT:    or t0, t0, t1506; RV64I-NEXT:    slli t2, t2, 16507; RV64I-NEXT:    slli a1, a1, 24508; RV64I-NEXT:    or a1, a1, t2509; RV64I-NEXT:    or a3, a4, a3510; RV64I-NEXT:    or a0, a0, a5511; RV64I-NEXT:    or a4, a7, a6512; RV64I-NEXT:    or a1, a1, t0513; RV64I-NEXT:    slli a0, a0, 32514; RV64I-NEXT:    slli a1, a1, 3515; RV64I-NEXT:    slli a4, a4, 35516; RV64I-NEXT:    or a0, a0, a3517; RV64I-NEXT:    or a1, a4, a1518; RV64I-NEXT:    sra a0, a0, a1519; RV64I-NEXT:    srli a1, a0, 48520; RV64I-NEXT:    srli a3, a0, 56521; RV64I-NEXT:    srli a4, a0, 32522; RV64I-NEXT:    srli a5, a0, 40523; RV64I-NEXT:    srli a6, a0, 16524; RV64I-NEXT:    srli a7, a0, 24525; RV64I-NEXT:    srli t0, a0, 8526; RV64I-NEXT:    sb a4, 4(a2)527; RV64I-NEXT:    sb a5, 5(a2)528; RV64I-NEXT:    sb a1, 6(a2)529; RV64I-NEXT:    sb a3, 7(a2)530; RV64I-NEXT:    sb a0, 0(a2)531; RV64I-NEXT:    sb t0, 1(a2)532; RV64I-NEXT:    sb a6, 2(a2)533; RV64I-NEXT:    sb a7, 3(a2)534; RV64I-NEXT:    ret535;536; RV32I-LABEL: ashr_8bytes:537; RV32I:       # %bb.0:538; RV32I-NEXT:    lbu a3, 5(a0)539; RV32I-NEXT:    lbu a4, 4(a0)540; RV32I-NEXT:    lbu a5, 6(a0)541; RV32I-NEXT:    lbu a6, 7(a0)542; RV32I-NEXT:    slli a3, a3, 8543; RV32I-NEXT:    or a3, a3, a4544; RV32I-NEXT:    lbu a4, 1(a1)545; RV32I-NEXT:    lbu a7, 0(a1)546; RV32I-NEXT:    lbu t0, 2(a1)547; RV32I-NEXT:    lbu a1, 3(a1)548; RV32I-NEXT:    slli a4, a4, 8549; RV32I-NEXT:    or a7, a4, a7550; RV32I-NEXT:    slli t0, t0, 16551; RV32I-NEXT:    slli a1, a1, 24552; RV32I-NEXT:    or a1, a1, t0553; RV32I-NEXT:    slli a4, a5, 16554; RV32I-NEXT:    slli a5, a6, 24555; RV32I-NEXT:    or a4, a5, a4556; RV32I-NEXT:    or a4, a4, a3557; RV32I-NEXT:    or a3, a1, a7558; RV32I-NEXT:    slli a3, a3, 3559; RV32I-NEXT:    addi a6, a3, -32560; RV32I-NEXT:    sra a1, a4, a3561; RV32I-NEXT:    bltz a6, .LBB5_2562; RV32I-NEXT:  # %bb.1:563; RV32I-NEXT:    srai a5, a5, 31564; RV32I-NEXT:    mv a0, a1565; RV32I-NEXT:    mv a1, a5566; RV32I-NEXT:    j .LBB5_3567; RV32I-NEXT:  .LBB5_2:568; RV32I-NEXT:    lbu a5, 1(a0)569; RV32I-NEXT:    lbu a6, 0(a0)570; RV32I-NEXT:    lbu a7, 2(a0)571; RV32I-NEXT:    lbu a0, 3(a0)572; RV32I-NEXT:    slli a5, a5, 8573; RV32I-NEXT:    or a5, a5, a6574; RV32I-NEXT:    slli a4, a4, 1575; RV32I-NEXT:    slli a7, a7, 16576; RV32I-NEXT:    slli a0, a0, 24577; RV32I-NEXT:    or a0, a0, a7578; RV32I-NEXT:    not a6, a3579; RV32I-NEXT:    or a0, a0, a5580; RV32I-NEXT:    srl a0, a0, a3581; RV32I-NEXT:    sll a3, a4, a6582; RV32I-NEXT:    or a0, a0, a3583; RV32I-NEXT:  .LBB5_3:584; RV32I-NEXT:    srli a3, a1, 16585; RV32I-NEXT:    srli a4, a1, 24586; RV32I-NEXT:    srli a5, a1, 8587; RV32I-NEXT:    srli a6, a0, 16588; RV32I-NEXT:    srli a7, a0, 24589; RV32I-NEXT:    sb a1, 4(a2)590; RV32I-NEXT:    sb a5, 5(a2)591; RV32I-NEXT:    sb a3, 6(a2)592; RV32I-NEXT:    sb a4, 7(a2)593; RV32I-NEXT:    srli a1, a0, 8594; RV32I-NEXT:    sb a0, 0(a2)595; RV32I-NEXT:    sb a1, 1(a2)596; RV32I-NEXT:    sb a6, 2(a2)597; RV32I-NEXT:    sb a7, 3(a2)598; RV32I-NEXT:    ret599  %src = load i64, ptr %src.ptr, align 1600  %byteOff = load i64, ptr %byteOff.ptr, align 1601  %bitOff = shl i64 %byteOff, 3602  %res = ashr i64 %src, %bitOff603  store i64 %res, ptr %dst, align 1604  ret void605}606 607define void @lshr_16bytes(ptr %src.ptr, ptr %byteOff.ptr, ptr %dst) nounwind {608; RV64I-LABEL: lshr_16bytes:609; RV64I:       # %bb.0:610; RV64I-NEXT:    lbu a3, 8(a0)611; RV64I-NEXT:    lbu a4, 9(a0)612; RV64I-NEXT:    lbu a5, 10(a0)613; RV64I-NEXT:    lbu a6, 11(a0)614; RV64I-NEXT:    lbu a7, 12(a0)615; RV64I-NEXT:    lbu t0, 13(a0)616; RV64I-NEXT:    lbu t1, 14(a0)617; RV64I-NEXT:    lbu t2, 15(a0)618; RV64I-NEXT:    slli a4, a4, 8619; RV64I-NEXT:    slli a5, a5, 16620; RV64I-NEXT:    slli a6, a6, 24621; RV64I-NEXT:    slli t0, t0, 8622; RV64I-NEXT:    or a3, a4, a3623; RV64I-NEXT:    or a4, a6, a5624; RV64I-NEXT:    or a5, t0, a7625; RV64I-NEXT:    lbu a6, 4(a1)626; RV64I-NEXT:    lbu a7, 5(a1)627; RV64I-NEXT:    lbu t0, 6(a1)628; RV64I-NEXT:    lbu t3, 7(a1)629; RV64I-NEXT:    slli t1, t1, 16630; RV64I-NEXT:    slli t2, t2, 24631; RV64I-NEXT:    slli a7, a7, 8632; RV64I-NEXT:    slli t0, t0, 16633; RV64I-NEXT:    slli t3, t3, 24634; RV64I-NEXT:    or t1, t2, t1635; RV64I-NEXT:    or a6, a7, a6636; RV64I-NEXT:    or a7, t3, t0637; RV64I-NEXT:    lbu t0, 1(a1)638; RV64I-NEXT:    lbu t2, 0(a1)639; RV64I-NEXT:    lbu t3, 2(a1)640; RV64I-NEXT:    lbu a1, 3(a1)641; RV64I-NEXT:    slli t0, t0, 8642; RV64I-NEXT:    or t0, t0, t2643; RV64I-NEXT:    slli t3, t3, 16644; RV64I-NEXT:    slli a1, a1, 24645; RV64I-NEXT:    or a1, a1, t3646; RV64I-NEXT:    or a3, a4, a3647; RV64I-NEXT:    or a4, t1, a5648; RV64I-NEXT:    or a5, a7, a6649; RV64I-NEXT:    or a1, a1, t0650; RV64I-NEXT:    slli a4, a4, 32651; RV64I-NEXT:    slli a1, a1, 3652; RV64I-NEXT:    slli a6, a5, 35653; RV64I-NEXT:    or a5, a4, a3654; RV64I-NEXT:    or a4, a6, a1655; RV64I-NEXT:    addi a3, a4, -64656; RV64I-NEXT:    srl a1, a5, a4657; RV64I-NEXT:    bltz a3, .LBB6_2658; RV64I-NEXT:  # %bb.1:659; RV64I-NEXT:    mv a0, a1660; RV64I-NEXT:    j .LBB6_3661; RV64I-NEXT:  .LBB6_2:662; RV64I-NEXT:    lbu a6, 1(a0)663; RV64I-NEXT:    lbu a7, 2(a0)664; RV64I-NEXT:    lbu t0, 3(a0)665; RV64I-NEXT:    lbu t1, 0(a0)666; RV64I-NEXT:    slli a6, a6, 8667; RV64I-NEXT:    slli a7, a7, 16668; RV64I-NEXT:    slli t0, t0, 24669; RV64I-NEXT:    or a6, a6, t1670; RV64I-NEXT:    or a7, t0, a7671; RV64I-NEXT:    lbu t0, 5(a0)672; RV64I-NEXT:    lbu t1, 4(a0)673; RV64I-NEXT:    lbu t2, 6(a0)674; RV64I-NEXT:    lbu a0, 7(a0)675; RV64I-NEXT:    slli t0, t0, 8676; RV64I-NEXT:    or t0, t0, t1677; RV64I-NEXT:    slli t2, t2, 16678; RV64I-NEXT:    slli a0, a0, 24679; RV64I-NEXT:    or a0, a0, t2680; RV64I-NEXT:    or a6, a7, a6681; RV64I-NEXT:    not a7, a4682; RV64I-NEXT:    slli a5, a5, 1683; RV64I-NEXT:    or a0, a0, t0684; RV64I-NEXT:    slli a0, a0, 32685; RV64I-NEXT:    or a0, a0, a6686; RV64I-NEXT:    srl a0, a0, a4687; RV64I-NEXT:    sll a4, a5, a7688; RV64I-NEXT:    or a0, a0, a4689; RV64I-NEXT:  .LBB6_3:690; RV64I-NEXT:    srai a3, a3, 63691; RV64I-NEXT:    srli a4, a0, 56692; RV64I-NEXT:    srli a5, a0, 48693; RV64I-NEXT:    srli a6, a0, 40694; RV64I-NEXT:    srli a7, a0, 32695; RV64I-NEXT:    srli t0, a0, 24696; RV64I-NEXT:    srli t1, a0, 16697; RV64I-NEXT:    and a1, a3, a1698; RV64I-NEXT:    sb a7, 4(a2)699; RV64I-NEXT:    sb a6, 5(a2)700; RV64I-NEXT:    sb a5, 6(a2)701; RV64I-NEXT:    sb a4, 7(a2)702; RV64I-NEXT:    srli a3, a1, 56703; RV64I-NEXT:    srli a4, a1, 48704; RV64I-NEXT:    srli a5, a1, 40705; RV64I-NEXT:    srli a6, a1, 32706; RV64I-NEXT:    srli a7, a1, 24707; RV64I-NEXT:    srli t2, a1, 16708; RV64I-NEXT:    sb a6, 12(a2)709; RV64I-NEXT:    sb a5, 13(a2)710; RV64I-NEXT:    sb a4, 14(a2)711; RV64I-NEXT:    sb a3, 15(a2)712; RV64I-NEXT:    srli a3, a1, 8713; RV64I-NEXT:    sb a1, 8(a2)714; RV64I-NEXT:    sb a3, 9(a2)715; RV64I-NEXT:    sb t2, 10(a2)716; RV64I-NEXT:    sb a7, 11(a2)717; RV64I-NEXT:    srli a1, a0, 8718; RV64I-NEXT:    sb a0, 0(a2)719; RV64I-NEXT:    sb a1, 1(a2)720; RV64I-NEXT:    sb t1, 2(a2)721; RV64I-NEXT:    sb t0, 3(a2)722; RV64I-NEXT:    ret723;724; RV32I-LABEL: lshr_16bytes:725; RV32I:       # %bb.0:726; RV32I-NEXT:    addi sp, sp, -32727; RV32I-NEXT:    lbu a3, 0(a0)728; RV32I-NEXT:    lbu a4, 1(a0)729; RV32I-NEXT:    lbu a5, 2(a0)730; RV32I-NEXT:    lbu a6, 3(a0)731; RV32I-NEXT:    lbu a7, 4(a0)732; RV32I-NEXT:    lbu t0, 5(a0)733; RV32I-NEXT:    lbu t1, 6(a0)734; RV32I-NEXT:    lbu t2, 7(a0)735; RV32I-NEXT:    slli a4, a4, 8736; RV32I-NEXT:    slli a5, a5, 16737; RV32I-NEXT:    slli a6, a6, 24738; RV32I-NEXT:    or a3, a4, a3739; RV32I-NEXT:    or a4, a6, a5740; RV32I-NEXT:    lbu a5, 8(a0)741; RV32I-NEXT:    lbu a6, 9(a0)742; RV32I-NEXT:    lbu t3, 10(a0)743; RV32I-NEXT:    lbu t4, 11(a0)744; RV32I-NEXT:    slli t0, t0, 8745; RV32I-NEXT:    slli t1, t1, 16746; RV32I-NEXT:    slli t2, t2, 24747; RV32I-NEXT:    slli a6, a6, 8748; RV32I-NEXT:    or a7, t0, a7749; RV32I-NEXT:    or t0, t2, t1750; RV32I-NEXT:    or a5, a6, a5751; RV32I-NEXT:    lbu a6, 12(a0)752; RV32I-NEXT:    lbu t1, 13(a0)753; RV32I-NEXT:    lbu t2, 14(a0)754; RV32I-NEXT:    lbu a0, 15(a0)755; RV32I-NEXT:    slli t3, t3, 16756; RV32I-NEXT:    slli t4, t4, 24757; RV32I-NEXT:    slli t1, t1, 8758; RV32I-NEXT:    slli t2, t2, 16759; RV32I-NEXT:    slli a0, a0, 24760; RV32I-NEXT:    or t3, t4, t3761; RV32I-NEXT:    or a6, t1, a6762; RV32I-NEXT:    or a0, a0, t2763; RV32I-NEXT:    lbu t1, 0(a1)764; RV32I-NEXT:    lbu t2, 1(a1)765; RV32I-NEXT:    lbu t4, 2(a1)766; RV32I-NEXT:    lbu a1, 3(a1)767; RV32I-NEXT:    sw zero, 16(sp)768; RV32I-NEXT:    sw zero, 20(sp)769; RV32I-NEXT:    sw zero, 24(sp)770; RV32I-NEXT:    sw zero, 28(sp)771; RV32I-NEXT:    slli t2, t2, 8772; RV32I-NEXT:    or t1, t2, t1773; RV32I-NEXT:    mv t2, sp774; RV32I-NEXT:    slli t4, t4, 16775; RV32I-NEXT:    slli a1, a1, 24776; RV32I-NEXT:    or a1, a1, t4777; RV32I-NEXT:    or a3, a4, a3778; RV32I-NEXT:    or a4, t0, a7779; RV32I-NEXT:    or a5, t3, a5780; RV32I-NEXT:    or a0, a0, a6781; RV32I-NEXT:    or a1, a1, t1782; RV32I-NEXT:    sw a3, 0(sp)783; RV32I-NEXT:    sw a4, 4(sp)784; RV32I-NEXT:    sw a5, 8(sp)785; RV32I-NEXT:    sw a0, 12(sp)786; RV32I-NEXT:    slli a0, a1, 3787; RV32I-NEXT:    andi a1, a1, 12788; RV32I-NEXT:    add a1, t2, a1789; RV32I-NEXT:    andi a3, a0, 24790; RV32I-NEXT:    xori a3, a3, 31791; RV32I-NEXT:    lw a4, 4(a1)792; RV32I-NEXT:    lw a5, 8(a1)793; RV32I-NEXT:    lw a6, 0(a1)794; RV32I-NEXT:    lw a1, 12(a1)795; RV32I-NEXT:    srl a7, a4, a0796; RV32I-NEXT:    slli t0, a5, 1797; RV32I-NEXT:    srl a6, a6, a0798; RV32I-NEXT:    slli a4, a4, 1799; RV32I-NEXT:    srl a5, a5, a0800; RV32I-NEXT:    slli t1, a1, 1801; RV32I-NEXT:    srl a0, a1, a0802; RV32I-NEXT:    sll a1, t0, a3803; RV32I-NEXT:    sll a4, a4, a3804; RV32I-NEXT:    sll a3, t1, a3805; RV32I-NEXT:    srli t0, a0, 16806; RV32I-NEXT:    srli t1, a0, 24807; RV32I-NEXT:    srli t2, a0, 8808; RV32I-NEXT:    or a1, a7, a1809; RV32I-NEXT:    or a4, a6, a4810; RV32I-NEXT:    or a3, a5, a3811; RV32I-NEXT:    sb a0, 12(a2)812; RV32I-NEXT:    sb t2, 13(a2)813; RV32I-NEXT:    sb t0, 14(a2)814; RV32I-NEXT:    sb t1, 15(a2)815; RV32I-NEXT:    srli a0, a3, 16816; RV32I-NEXT:    srli t0, a3, 24817; RV32I-NEXT:    srli a3, a3, 8818; RV32I-NEXT:    srli t1, a4, 16819; RV32I-NEXT:    srli t2, a4, 24820; RV32I-NEXT:    srli a4, a4, 8821; RV32I-NEXT:    srli t3, a1, 16822; RV32I-NEXT:    srli t4, a1, 24823; RV32I-NEXT:    srli a1, a1, 8824; RV32I-NEXT:    sb a5, 8(a2)825; RV32I-NEXT:    sb a3, 9(a2)826; RV32I-NEXT:    sb a0, 10(a2)827; RV32I-NEXT:    sb t0, 11(a2)828; RV32I-NEXT:    sb a6, 0(a2)829; RV32I-NEXT:    sb a4, 1(a2)830; RV32I-NEXT:    sb t1, 2(a2)831; RV32I-NEXT:    sb t2, 3(a2)832; RV32I-NEXT:    sb a7, 4(a2)833; RV32I-NEXT:    sb a1, 5(a2)834; RV32I-NEXT:    sb t3, 6(a2)835; RV32I-NEXT:    sb t4, 7(a2)836; RV32I-NEXT:    addi sp, sp, 32837; RV32I-NEXT:    ret838  %src = load i128, ptr %src.ptr, align 1839  %byteOff = load i128, ptr %byteOff.ptr, align 1840  %bitOff = shl i128 %byteOff, 3841  %res = lshr i128 %src, %bitOff842  store i128 %res, ptr %dst, align 1843  ret void844}845 846define void @lshr_16bytes_wordOff(ptr %src.ptr, ptr %wordOff.ptr, ptr %dst) nounwind {847; RV64I-LABEL: lshr_16bytes_wordOff:848; RV64I:       # %bb.0:849; RV64I-NEXT:    lbu a3, 8(a0)850; RV64I-NEXT:    lbu a4, 9(a0)851; RV64I-NEXT:    lbu a5, 10(a0)852; RV64I-NEXT:    lbu a6, 11(a0)853; RV64I-NEXT:    lbu a7, 12(a0)854; RV64I-NEXT:    lbu t0, 13(a0)855; RV64I-NEXT:    lbu t1, 14(a0)856; RV64I-NEXT:    lbu t2, 15(a0)857; RV64I-NEXT:    slli a4, a4, 8858; RV64I-NEXT:    slli a5, a5, 16859; RV64I-NEXT:    slli a6, a6, 24860; RV64I-NEXT:    slli t0, t0, 8861; RV64I-NEXT:    or a3, a4, a3862; RV64I-NEXT:    or a4, a6, a5863; RV64I-NEXT:    or a5, t0, a7864; RV64I-NEXT:    lbu a6, 4(a1)865; RV64I-NEXT:    lbu a7, 5(a1)866; RV64I-NEXT:    lbu t0, 6(a1)867; RV64I-NEXT:    lbu t3, 7(a1)868; RV64I-NEXT:    slli t1, t1, 16869; RV64I-NEXT:    slli t2, t2, 24870; RV64I-NEXT:    slli a7, a7, 8871; RV64I-NEXT:    slli t0, t0, 16872; RV64I-NEXT:    slli t3, t3, 24873; RV64I-NEXT:    or t1, t2, t1874; RV64I-NEXT:    or a6, a7, a6875; RV64I-NEXT:    or a7, t3, t0876; RV64I-NEXT:    lbu t0, 1(a1)877; RV64I-NEXT:    lbu t2, 0(a1)878; RV64I-NEXT:    lbu t3, 2(a1)879; RV64I-NEXT:    lbu a1, 3(a1)880; RV64I-NEXT:    slli t0, t0, 8881; RV64I-NEXT:    or t0, t0, t2882; RV64I-NEXT:    slli t3, t3, 16883; RV64I-NEXT:    slli a1, a1, 24884; RV64I-NEXT:    or a1, a1, t3885; RV64I-NEXT:    or a3, a4, a3886; RV64I-NEXT:    or a4, t1, a5887; RV64I-NEXT:    or a5, a7, a6888; RV64I-NEXT:    or a1, a1, t0889; RV64I-NEXT:    slli a4, a4, 32890; RV64I-NEXT:    slli a1, a1, 5891; RV64I-NEXT:    slli a6, a5, 37892; RV64I-NEXT:    or a5, a4, a3893; RV64I-NEXT:    or a4, a6, a1894; RV64I-NEXT:    addi a3, a4, -64895; RV64I-NEXT:    srl a1, a5, a4896; RV64I-NEXT:    bltz a3, .LBB7_2897; RV64I-NEXT:  # %bb.1:898; RV64I-NEXT:    mv a0, a1899; RV64I-NEXT:    j .LBB7_3900; RV64I-NEXT:  .LBB7_2:901; RV64I-NEXT:    lbu a6, 1(a0)902; RV64I-NEXT:    lbu a7, 2(a0)903; RV64I-NEXT:    lbu t0, 3(a0)904; RV64I-NEXT:    lbu t1, 0(a0)905; RV64I-NEXT:    slli a6, a6, 8906; RV64I-NEXT:    slli a7, a7, 16907; RV64I-NEXT:    slli t0, t0, 24908; RV64I-NEXT:    or a6, a6, t1909; RV64I-NEXT:    or a7, t0, a7910; RV64I-NEXT:    lbu t0, 5(a0)911; RV64I-NEXT:    lbu t1, 4(a0)912; RV64I-NEXT:    lbu t2, 6(a0)913; RV64I-NEXT:    lbu a0, 7(a0)914; RV64I-NEXT:    slli t0, t0, 8915; RV64I-NEXT:    or t0, t0, t1916; RV64I-NEXT:    slli t2, t2, 16917; RV64I-NEXT:    slli a0, a0, 24918; RV64I-NEXT:    or a0, a0, t2919; RV64I-NEXT:    or a6, a7, a6920; RV64I-NEXT:    not a7, a4921; RV64I-NEXT:    slli a5, a5, 1922; RV64I-NEXT:    or a0, a0, t0923; RV64I-NEXT:    slli a0, a0, 32924; RV64I-NEXT:    or a0, a0, a6925; RV64I-NEXT:    srl a0, a0, a4926; RV64I-NEXT:    sll a4, a5, a7927; RV64I-NEXT:    or a0, a0, a4928; RV64I-NEXT:  .LBB7_3:929; RV64I-NEXT:    srai a3, a3, 63930; RV64I-NEXT:    srli a4, a0, 56931; RV64I-NEXT:    srli a5, a0, 48932; RV64I-NEXT:    srli a6, a0, 40933; RV64I-NEXT:    srli a7, a0, 32934; RV64I-NEXT:    srli t0, a0, 24935; RV64I-NEXT:    srli t1, a0, 16936; RV64I-NEXT:    and a1, a3, a1937; RV64I-NEXT:    sb a7, 4(a2)938; RV64I-NEXT:    sb a6, 5(a2)939; RV64I-NEXT:    sb a5, 6(a2)940; RV64I-NEXT:    sb a4, 7(a2)941; RV64I-NEXT:    srli a3, a1, 56942; RV64I-NEXT:    srli a4, a1, 48943; RV64I-NEXT:    srli a5, a1, 40944; RV64I-NEXT:    srli a6, a1, 32945; RV64I-NEXT:    srli a7, a1, 24946; RV64I-NEXT:    srli t2, a1, 16947; RV64I-NEXT:    sb a6, 12(a2)948; RV64I-NEXT:    sb a5, 13(a2)949; RV64I-NEXT:    sb a4, 14(a2)950; RV64I-NEXT:    sb a3, 15(a2)951; RV64I-NEXT:    srli a3, a1, 8952; RV64I-NEXT:    sb a1, 8(a2)953; RV64I-NEXT:    sb a3, 9(a2)954; RV64I-NEXT:    sb t2, 10(a2)955; RV64I-NEXT:    sb a7, 11(a2)956; RV64I-NEXT:    srli a1, a0, 8957; RV64I-NEXT:    sb a0, 0(a2)958; RV64I-NEXT:    sb a1, 1(a2)959; RV64I-NEXT:    sb t1, 2(a2)960; RV64I-NEXT:    sb t0, 3(a2)961; RV64I-NEXT:    ret962;963; RV32I-LABEL: lshr_16bytes_wordOff:964; RV32I:       # %bb.0:965; RV32I-NEXT:    addi sp, sp, -32966; RV32I-NEXT:    lbu a3, 0(a0)967; RV32I-NEXT:    lbu a4, 1(a0)968; RV32I-NEXT:    lbu a5, 2(a0)969; RV32I-NEXT:    lbu a6, 3(a0)970; RV32I-NEXT:    lbu a7, 4(a0)971; RV32I-NEXT:    lbu t0, 5(a0)972; RV32I-NEXT:    lbu t1, 6(a0)973; RV32I-NEXT:    lbu t2, 7(a0)974; RV32I-NEXT:    lbu t3, 8(a0)975; RV32I-NEXT:    lbu t4, 9(a0)976; RV32I-NEXT:    lbu t5, 10(a0)977; RV32I-NEXT:    lbu t6, 11(a0)978; RV32I-NEXT:    slli a4, a4, 8979; RV32I-NEXT:    slli a5, a5, 16980; RV32I-NEXT:    slli a6, a6, 24981; RV32I-NEXT:    slli t0, t0, 8982; RV32I-NEXT:    or a3, a4, a3983; RV32I-NEXT:    or a4, a6, a5984; RV32I-NEXT:    or a5, t0, a7985; RV32I-NEXT:    lbu a6, 12(a0)986; RV32I-NEXT:    lbu a7, 13(a0)987; RV32I-NEXT:    lbu t0, 14(a0)988; RV32I-NEXT:    lbu a0, 15(a0)989; RV32I-NEXT:    lbu a1, 0(a1)990; RV32I-NEXT:    sw zero, 16(sp)991; RV32I-NEXT:    sw zero, 20(sp)992; RV32I-NEXT:    sw zero, 24(sp)993; RV32I-NEXT:    sw zero, 28(sp)994; RV32I-NEXT:    slli t1, t1, 16995; RV32I-NEXT:    slli t2, t2, 24996; RV32I-NEXT:    or t1, t2, t1997; RV32I-NEXT:    mv t2, sp998; RV32I-NEXT:    slli t4, t4, 8999; RV32I-NEXT:    slli t5, t5, 161000; RV32I-NEXT:    slli t6, t6, 241001; RV32I-NEXT:    slli a7, a7, 81002; RV32I-NEXT:    slli t0, t0, 161003; RV32I-NEXT:    slli a0, a0, 241004; RV32I-NEXT:    slli a1, a1, 21005; RV32I-NEXT:    or t3, t4, t31006; RV32I-NEXT:    or t4, t6, t51007; RV32I-NEXT:    or a6, a7, a61008; RV32I-NEXT:    or a0, a0, t01009; RV32I-NEXT:    andi a1, a1, 121010; RV32I-NEXT:    or a3, a4, a31011; RV32I-NEXT:    or a4, t1, a51012; RV32I-NEXT:    or a5, t4, t31013; RV32I-NEXT:    or a0, a0, a61014; RV32I-NEXT:    add a1, t2, a11015; RV32I-NEXT:    sw a3, 0(sp)1016; RV32I-NEXT:    sw a4, 4(sp)1017; RV32I-NEXT:    sw a5, 8(sp)1018; RV32I-NEXT:    sw a0, 12(sp)1019; RV32I-NEXT:    lw a0, 8(a1)1020; RV32I-NEXT:    lw a3, 4(a1)1021; RV32I-NEXT:    lw a4, 0(a1)1022; RV32I-NEXT:    lw a1, 12(a1)1023; RV32I-NEXT:    srli a5, a0, 161024; RV32I-NEXT:    srli a6, a0, 241025; RV32I-NEXT:    srli a7, a0, 81026; RV32I-NEXT:    srli t0, a1, 161027; RV32I-NEXT:    srli t1, a1, 241028; RV32I-NEXT:    srli t2, a1, 81029; RV32I-NEXT:    srli t3, a4, 161030; RV32I-NEXT:    srli t4, a4, 241031; RV32I-NEXT:    srli t5, a4, 81032; RV32I-NEXT:    srli t6, a3, 161033; RV32I-NEXT:    sb a0, 8(a2)1034; RV32I-NEXT:    sb a7, 9(a2)1035; RV32I-NEXT:    sb a5, 10(a2)1036; RV32I-NEXT:    sb a6, 11(a2)1037; RV32I-NEXT:    srli a0, a3, 241038; RV32I-NEXT:    sb a1, 12(a2)1039; RV32I-NEXT:    sb t2, 13(a2)1040; RV32I-NEXT:    sb t0, 14(a2)1041; RV32I-NEXT:    sb t1, 15(a2)1042; RV32I-NEXT:    srli a1, a3, 81043; RV32I-NEXT:    sb a4, 0(a2)1044; RV32I-NEXT:    sb t5, 1(a2)1045; RV32I-NEXT:    sb t3, 2(a2)1046; RV32I-NEXT:    sb t4, 3(a2)1047; RV32I-NEXT:    sb a3, 4(a2)1048; RV32I-NEXT:    sb a1, 5(a2)1049; RV32I-NEXT:    sb t6, 6(a2)1050; RV32I-NEXT:    sb a0, 7(a2)1051; RV32I-NEXT:    addi sp, sp, 321052; RV32I-NEXT:    ret1053  %src = load i128, ptr %src.ptr, align 11054  %wordOff = load i128, ptr %wordOff.ptr, align 11055  %bitOff = shl i128 %wordOff, 51056  %res = lshr i128 %src, %bitOff1057  store i128 %res, ptr %dst, align 11058  ret void1059}1060 1061define void @shl_16bytes(ptr %src.ptr, ptr %byteOff.ptr, ptr %dst) nounwind {1062; RV64I-LABEL: shl_16bytes:1063; RV64I:       # %bb.0:1064; RV64I-NEXT:    lbu a3, 0(a0)1065; RV64I-NEXT:    lbu a4, 1(a0)1066; RV64I-NEXT:    lbu a5, 2(a0)1067; RV64I-NEXT:    lbu a6, 3(a0)1068; RV64I-NEXT:    lbu a7, 4(a0)1069; RV64I-NEXT:    lbu t0, 5(a0)1070; RV64I-NEXT:    lbu t1, 6(a0)1071; RV64I-NEXT:    lbu t2, 7(a0)1072; RV64I-NEXT:    slli a4, a4, 81073; RV64I-NEXT:    slli a5, a5, 161074; RV64I-NEXT:    slli a6, a6, 241075; RV64I-NEXT:    slli t0, t0, 81076; RV64I-NEXT:    or a3, a4, a31077; RV64I-NEXT:    or a4, a6, a51078; RV64I-NEXT:    or a5, t0, a71079; RV64I-NEXT:    lbu a6, 4(a1)1080; RV64I-NEXT:    lbu a7, 5(a1)1081; RV64I-NEXT:    lbu t0, 6(a1)1082; RV64I-NEXT:    lbu t3, 7(a1)1083; RV64I-NEXT:    slli t1, t1, 161084; RV64I-NEXT:    slli t2, t2, 241085; RV64I-NEXT:    slli a7, a7, 81086; RV64I-NEXT:    slli t0, t0, 161087; RV64I-NEXT:    slli t3, t3, 241088; RV64I-NEXT:    or t1, t2, t11089; RV64I-NEXT:    or a6, a7, a61090; RV64I-NEXT:    or a7, t3, t01091; RV64I-NEXT:    lbu t0, 1(a1)1092; RV64I-NEXT:    lbu t2, 0(a1)1093; RV64I-NEXT:    lbu t3, 2(a1)1094; RV64I-NEXT:    lbu a1, 3(a1)1095; RV64I-NEXT:    slli t0, t0, 81096; RV64I-NEXT:    or t0, t0, t21097; RV64I-NEXT:    slli t3, t3, 161098; RV64I-NEXT:    slli a1, a1, 241099; RV64I-NEXT:    or a1, a1, t31100; RV64I-NEXT:    or a3, a4, a31101; RV64I-NEXT:    or a4, t1, a51102; RV64I-NEXT:    or a5, a7, a61103; RV64I-NEXT:    or a1, a1, t01104; RV64I-NEXT:    slli a4, a4, 321105; RV64I-NEXT:    slli a1, a1, 31106; RV64I-NEXT:    slli a6, a5, 351107; RV64I-NEXT:    or a5, a4, a31108; RV64I-NEXT:    or a4, a6, a11109; RV64I-NEXT:    addi a3, a4, -641110; RV64I-NEXT:    sll a1, a5, a41111; RV64I-NEXT:    bltz a3, .LBB8_21112; RV64I-NEXT:  # %bb.1:1113; RV64I-NEXT:    mv a0, a11114; RV64I-NEXT:    j .LBB8_31115; RV64I-NEXT:  .LBB8_2:1116; RV64I-NEXT:    lbu a6, 9(a0)1117; RV64I-NEXT:    lbu a7, 10(a0)1118; RV64I-NEXT:    lbu t0, 11(a0)1119; RV64I-NEXT:    lbu t1, 8(a0)1120; RV64I-NEXT:    slli a6, a6, 81121; RV64I-NEXT:    slli a7, a7, 161122; RV64I-NEXT:    slli t0, t0, 241123; RV64I-NEXT:    or a6, a6, t11124; RV64I-NEXT:    or a7, t0, a71125; RV64I-NEXT:    lbu t0, 13(a0)1126; RV64I-NEXT:    lbu t1, 12(a0)1127; RV64I-NEXT:    lbu t2, 14(a0)1128; RV64I-NEXT:    lbu a0, 15(a0)1129; RV64I-NEXT:    slli t0, t0, 81130; RV64I-NEXT:    or t0, t0, t11131; RV64I-NEXT:    slli t2, t2, 161132; RV64I-NEXT:    slli a0, a0, 241133; RV64I-NEXT:    or a0, a0, t21134; RV64I-NEXT:    or a6, a7, a61135; RV64I-NEXT:    not a7, a41136; RV64I-NEXT:    srli a5, a5, 11137; RV64I-NEXT:    or a0, a0, t01138; RV64I-NEXT:    slli a0, a0, 321139; RV64I-NEXT:    or a0, a0, a61140; RV64I-NEXT:    sll a0, a0, a41141; RV64I-NEXT:    srl a4, a5, a71142; RV64I-NEXT:    or a0, a0, a41143; RV64I-NEXT:  .LBB8_3:1144; RV64I-NEXT:    srai a3, a3, 631145; RV64I-NEXT:    srli a4, a0, 561146; RV64I-NEXT:    srli a5, a0, 481147; RV64I-NEXT:    srli a6, a0, 401148; RV64I-NEXT:    srli a7, a0, 321149; RV64I-NEXT:    srli t0, a0, 241150; RV64I-NEXT:    srli t1, a0, 161151; RV64I-NEXT:    and a1, a3, a11152; RV64I-NEXT:    sb a7, 12(a2)1153; RV64I-NEXT:    sb a6, 13(a2)1154; RV64I-NEXT:    sb a5, 14(a2)1155; RV64I-NEXT:    sb a4, 15(a2)1156; RV64I-NEXT:    srli a3, a1, 561157; RV64I-NEXT:    srli a4, a1, 481158; RV64I-NEXT:    srli a5, a1, 401159; RV64I-NEXT:    srli a6, a1, 321160; RV64I-NEXT:    srli a7, a1, 241161; RV64I-NEXT:    srli t2, a1, 161162; RV64I-NEXT:    sb a6, 4(a2)1163; RV64I-NEXT:    sb a5, 5(a2)1164; RV64I-NEXT:    sb a4, 6(a2)1165; RV64I-NEXT:    sb a3, 7(a2)1166; RV64I-NEXT:    srli a3, a1, 81167; RV64I-NEXT:    sb a1, 0(a2)1168; RV64I-NEXT:    sb a3, 1(a2)1169; RV64I-NEXT:    sb t2, 2(a2)1170; RV64I-NEXT:    sb a7, 3(a2)1171; RV64I-NEXT:    srli a1, a0, 81172; RV64I-NEXT:    sb a0, 8(a2)1173; RV64I-NEXT:    sb a1, 9(a2)1174; RV64I-NEXT:    sb t1, 10(a2)1175; RV64I-NEXT:    sb t0, 11(a2)1176; RV64I-NEXT:    ret1177;1178; RV32I-LABEL: shl_16bytes:1179; RV32I:       # %bb.0:1180; RV32I-NEXT:    addi sp, sp, -321181; RV32I-NEXT:    lbu a3, 0(a0)1182; RV32I-NEXT:    lbu a4, 1(a0)1183; RV32I-NEXT:    lbu a5, 2(a0)1184; RV32I-NEXT:    lbu a6, 3(a0)1185; RV32I-NEXT:    lbu a7, 4(a0)1186; RV32I-NEXT:    lbu t0, 5(a0)1187; RV32I-NEXT:    lbu t1, 6(a0)1188; RV32I-NEXT:    lbu t2, 7(a0)1189; RV32I-NEXT:    slli a4, a4, 81190; RV32I-NEXT:    slli a5, a5, 161191; RV32I-NEXT:    slli a6, a6, 241192; RV32I-NEXT:    or a3, a4, a31193; RV32I-NEXT:    or a4, a6, a51194; RV32I-NEXT:    lbu a5, 8(a0)1195; RV32I-NEXT:    lbu a6, 9(a0)1196; RV32I-NEXT:    lbu t3, 10(a0)1197; RV32I-NEXT:    lbu t4, 11(a0)1198; RV32I-NEXT:    slli t0, t0, 81199; RV32I-NEXT:    slli t1, t1, 161200; RV32I-NEXT:    slli t2, t2, 241201; RV32I-NEXT:    slli a6, a6, 81202; RV32I-NEXT:    or a7, t0, a71203; RV32I-NEXT:    or t0, t2, t11204; RV32I-NEXT:    or a5, a6, a51205; RV32I-NEXT:    lbu a6, 12(a0)1206; RV32I-NEXT:    lbu t1, 13(a0)1207; RV32I-NEXT:    lbu t2, 14(a0)1208; RV32I-NEXT:    lbu a0, 15(a0)1209; RV32I-NEXT:    slli t3, t3, 161210; RV32I-NEXT:    slli t4, t4, 241211; RV32I-NEXT:    slli t1, t1, 81212; RV32I-NEXT:    slli t2, t2, 161213; RV32I-NEXT:    slli a0, a0, 241214; RV32I-NEXT:    or t3, t4, t31215; RV32I-NEXT:    or a6, t1, a61216; RV32I-NEXT:    or a0, a0, t21217; RV32I-NEXT:    lbu t1, 0(a1)1218; RV32I-NEXT:    lbu t2, 1(a1)1219; RV32I-NEXT:    lbu t4, 2(a1)1220; RV32I-NEXT:    lbu a1, 3(a1)1221; RV32I-NEXT:    sw zero, 0(sp)1222; RV32I-NEXT:    sw zero, 4(sp)1223; RV32I-NEXT:    sw zero, 8(sp)1224; RV32I-NEXT:    sw zero, 12(sp)1225; RV32I-NEXT:    slli t2, t2, 81226; RV32I-NEXT:    or t1, t2, t11227; RV32I-NEXT:    addi t2, sp, 161228; RV32I-NEXT:    slli t4, t4, 161229; RV32I-NEXT:    slli a1, a1, 241230; RV32I-NEXT:    or a1, a1, t41231; RV32I-NEXT:    or a3, a4, a31232; RV32I-NEXT:    or a4, t0, a71233; RV32I-NEXT:    or a5, t3, a51234; RV32I-NEXT:    or a0, a0, a61235; RV32I-NEXT:    or a1, a1, t11236; RV32I-NEXT:    sw a3, 16(sp)1237; RV32I-NEXT:    sw a4, 20(sp)1238; RV32I-NEXT:    sw a5, 24(sp)1239; RV32I-NEXT:    sw a0, 28(sp)1240; RV32I-NEXT:    slli a0, a1, 31241; RV32I-NEXT:    andi a1, a1, 121242; RV32I-NEXT:    sub a1, t2, a11243; RV32I-NEXT:    andi a3, a0, 241244; RV32I-NEXT:    lw a4, 0(a1)1245; RV32I-NEXT:    lw a5, 4(a1)1246; RV32I-NEXT:    lw a6, 8(a1)1247; RV32I-NEXT:    lw a1, 12(a1)1248; RV32I-NEXT:    xori a3, a3, 311249; RV32I-NEXT:    sll a7, a5, a01250; RV32I-NEXT:    srli t0, a4, 11251; RV32I-NEXT:    sll a1, a1, a01252; RV32I-NEXT:    srli t1, a6, 11253; RV32I-NEXT:    sll a6, a6, a01254; RV32I-NEXT:    srli a5, a5, 11255; RV32I-NEXT:    sll a0, a4, a01256; RV32I-NEXT:    srl a4, t0, a31257; RV32I-NEXT:    srl t0, t1, a31258; RV32I-NEXT:    srl a3, a5, a31259; RV32I-NEXT:    srli a5, a6, 241260; RV32I-NEXT:    srli t1, a1, 241261; RV32I-NEXT:    srli t2, a0, 161262; RV32I-NEXT:    srli t3, a0, 241263; RV32I-NEXT:    srli t4, a0, 81264; RV32I-NEXT:    or a4, a7, a41265; RV32I-NEXT:    srli a7, a7, 241266; RV32I-NEXT:    or a1, a1, t01267; RV32I-NEXT:    or a3, a6, a31268; RV32I-NEXT:    sb a0, 0(a2)1269; RV32I-NEXT:    sb t4, 1(a2)1270; RV32I-NEXT:    sb t2, 2(a2)1271; RV32I-NEXT:    sb t3, 3(a2)1272; RV32I-NEXT:    srli a0, a3, 161273; RV32I-NEXT:    srli a6, a3, 81274; RV32I-NEXT:    srli t0, a1, 161275; RV32I-NEXT:    srli t2, a1, 81276; RV32I-NEXT:    srli t3, a4, 161277; RV32I-NEXT:    srli t4, a4, 81278; RV32I-NEXT:    sb a3, 8(a2)1279; RV32I-NEXT:    sb a6, 9(a2)1280; RV32I-NEXT:    sb a0, 10(a2)1281; RV32I-NEXT:    sb a5, 11(a2)1282; RV32I-NEXT:    sb a1, 12(a2)1283; RV32I-NEXT:    sb t2, 13(a2)1284; RV32I-NEXT:    sb t0, 14(a2)1285; RV32I-NEXT:    sb t1, 15(a2)1286; RV32I-NEXT:    sb a4, 4(a2)1287; RV32I-NEXT:    sb t4, 5(a2)1288; RV32I-NEXT:    sb t3, 6(a2)1289; RV32I-NEXT:    sb a7, 7(a2)1290; RV32I-NEXT:    addi sp, sp, 321291; RV32I-NEXT:    ret1292  %src = load i128, ptr %src.ptr, align 11293  %byteOff = load i128, ptr %byteOff.ptr, align 11294  %bitOff = shl i128 %byteOff, 31295  %res = shl i128 %src, %bitOff1296  store i128 %res, ptr %dst, align 11297  ret void1298}1299 1300define void @shl_16bytes_wordOff(ptr %src.ptr, ptr %wordOff.ptr, ptr %dst) nounwind {1301; RV64I-LABEL: shl_16bytes_wordOff:1302; RV64I:       # %bb.0:1303; RV64I-NEXT:    lbu a3, 0(a0)1304; RV64I-NEXT:    lbu a4, 1(a0)1305; RV64I-NEXT:    lbu a5, 2(a0)1306; RV64I-NEXT:    lbu a6, 3(a0)1307; RV64I-NEXT:    lbu a7, 4(a0)1308; RV64I-NEXT:    lbu t0, 5(a0)1309; RV64I-NEXT:    lbu t1, 6(a0)1310; RV64I-NEXT:    lbu t2, 7(a0)1311; RV64I-NEXT:    slli a4, a4, 81312; RV64I-NEXT:    slli a5, a5, 161313; RV64I-NEXT:    slli a6, a6, 241314; RV64I-NEXT:    slli t0, t0, 81315; RV64I-NEXT:    or a3, a4, a31316; RV64I-NEXT:    or a4, a6, a51317; RV64I-NEXT:    or a5, t0, a71318; RV64I-NEXT:    lbu a6, 4(a1)1319; RV64I-NEXT:    lbu a7, 5(a1)1320; RV64I-NEXT:    lbu t0, 6(a1)1321; RV64I-NEXT:    lbu t3, 7(a1)1322; RV64I-NEXT:    slli t1, t1, 161323; RV64I-NEXT:    slli t2, t2, 241324; RV64I-NEXT:    slli a7, a7, 81325; RV64I-NEXT:    slli t0, t0, 161326; RV64I-NEXT:    slli t3, t3, 241327; RV64I-NEXT:    or t1, t2, t11328; RV64I-NEXT:    or a6, a7, a61329; RV64I-NEXT:    or a7, t3, t01330; RV64I-NEXT:    lbu t0, 1(a1)1331; RV64I-NEXT:    lbu t2, 0(a1)1332; RV64I-NEXT:    lbu t3, 2(a1)1333; RV64I-NEXT:    lbu a1, 3(a1)1334; RV64I-NEXT:    slli t0, t0, 81335; RV64I-NEXT:    or t0, t0, t21336; RV64I-NEXT:    slli t3, t3, 161337; RV64I-NEXT:    slli a1, a1, 241338; RV64I-NEXT:    or a1, a1, t31339; RV64I-NEXT:    or a3, a4, a31340; RV64I-NEXT:    or a4, t1, a51341; RV64I-NEXT:    or a5, a7, a61342; RV64I-NEXT:    or a1, a1, t01343; RV64I-NEXT:    slli a4, a4, 321344; RV64I-NEXT:    slli a1, a1, 51345; RV64I-NEXT:    slli a6, a5, 371346; RV64I-NEXT:    or a5, a4, a31347; RV64I-NEXT:    or a4, a6, a11348; RV64I-NEXT:    addi a3, a4, -641349; RV64I-NEXT:    sll a1, a5, a41350; RV64I-NEXT:    bltz a3, .LBB9_21351; RV64I-NEXT:  # %bb.1:1352; RV64I-NEXT:    mv a0, a11353; RV64I-NEXT:    j .LBB9_31354; RV64I-NEXT:  .LBB9_2:1355; RV64I-NEXT:    lbu a6, 9(a0)1356; RV64I-NEXT:    lbu a7, 10(a0)1357; RV64I-NEXT:    lbu t0, 11(a0)1358; RV64I-NEXT:    lbu t1, 8(a0)1359; RV64I-NEXT:    slli a6, a6, 81360; RV64I-NEXT:    slli a7, a7, 161361; RV64I-NEXT:    slli t0, t0, 241362; RV64I-NEXT:    or a6, a6, t11363; RV64I-NEXT:    or a7, t0, a71364; RV64I-NEXT:    lbu t0, 13(a0)1365; RV64I-NEXT:    lbu t1, 12(a0)1366; RV64I-NEXT:    lbu t2, 14(a0)1367; RV64I-NEXT:    lbu a0, 15(a0)1368; RV64I-NEXT:    slli t0, t0, 81369; RV64I-NEXT:    or t0, t0, t11370; RV64I-NEXT:    slli t2, t2, 161371; RV64I-NEXT:    slli a0, a0, 241372; RV64I-NEXT:    or a0, a0, t21373; RV64I-NEXT:    or a6, a7, a61374; RV64I-NEXT:    not a7, a41375; RV64I-NEXT:    srli a5, a5, 11376; RV64I-NEXT:    or a0, a0, t01377; RV64I-NEXT:    slli a0, a0, 321378; RV64I-NEXT:    or a0, a0, a61379; RV64I-NEXT:    sll a0, a0, a41380; RV64I-NEXT:    srl a4, a5, a71381; RV64I-NEXT:    or a0, a0, a41382; RV64I-NEXT:  .LBB9_3:1383; RV64I-NEXT:    srai a3, a3, 631384; RV64I-NEXT:    srli a4, a0, 561385; RV64I-NEXT:    srli a5, a0, 481386; RV64I-NEXT:    srli a6, a0, 401387; RV64I-NEXT:    srli a7, a0, 321388; RV64I-NEXT:    srli t0, a0, 241389; RV64I-NEXT:    srli t1, a0, 161390; RV64I-NEXT:    and a1, a3, a11391; RV64I-NEXT:    sb a7, 12(a2)1392; RV64I-NEXT:    sb a6, 13(a2)1393; RV64I-NEXT:    sb a5, 14(a2)1394; RV64I-NEXT:    sb a4, 15(a2)1395; RV64I-NEXT:    srli a3, a1, 561396; RV64I-NEXT:    srli a4, a1, 481397; RV64I-NEXT:    srli a5, a1, 401398; RV64I-NEXT:    srli a6, a1, 321399; RV64I-NEXT:    srli a7, a1, 241400; RV64I-NEXT:    srli t2, a1, 161401; RV64I-NEXT:    sb a6, 4(a2)1402; RV64I-NEXT:    sb a5, 5(a2)1403; RV64I-NEXT:    sb a4, 6(a2)1404; RV64I-NEXT:    sb a3, 7(a2)1405; RV64I-NEXT:    srli a3, a1, 81406; RV64I-NEXT:    sb a1, 0(a2)1407; RV64I-NEXT:    sb a3, 1(a2)1408; RV64I-NEXT:    sb t2, 2(a2)1409; RV64I-NEXT:    sb a7, 3(a2)1410; RV64I-NEXT:    srli a1, a0, 81411; RV64I-NEXT:    sb a0, 8(a2)1412; RV64I-NEXT:    sb a1, 9(a2)1413; RV64I-NEXT:    sb t1, 10(a2)1414; RV64I-NEXT:    sb t0, 11(a2)1415; RV64I-NEXT:    ret1416;1417; RV32I-LABEL: shl_16bytes_wordOff:1418; RV32I:       # %bb.0:1419; RV32I-NEXT:    addi sp, sp, -321420; RV32I-NEXT:    lbu a3, 0(a0)1421; RV32I-NEXT:    lbu a4, 1(a0)1422; RV32I-NEXT:    lbu a5, 2(a0)1423; RV32I-NEXT:    lbu a6, 3(a0)1424; RV32I-NEXT:    lbu a7, 4(a0)1425; RV32I-NEXT:    lbu t0, 5(a0)1426; RV32I-NEXT:    lbu t1, 6(a0)1427; RV32I-NEXT:    lbu t2, 7(a0)1428; RV32I-NEXT:    lbu t3, 8(a0)1429; RV32I-NEXT:    lbu t4, 9(a0)1430; RV32I-NEXT:    lbu t5, 10(a0)1431; RV32I-NEXT:    lbu t6, 11(a0)1432; RV32I-NEXT:    slli a4, a4, 81433; RV32I-NEXT:    slli a5, a5, 161434; RV32I-NEXT:    slli a6, a6, 241435; RV32I-NEXT:    slli t0, t0, 81436; RV32I-NEXT:    or a3, a4, a31437; RV32I-NEXT:    or a4, a6, a51438; RV32I-NEXT:    or a5, t0, a71439; RV32I-NEXT:    lbu a6, 12(a0)1440; RV32I-NEXT:    lbu a7, 13(a0)1441; RV32I-NEXT:    lbu t0, 14(a0)1442; RV32I-NEXT:    lbu a0, 15(a0)1443; RV32I-NEXT:    lbu a1, 0(a1)1444; RV32I-NEXT:    sw zero, 0(sp)1445; RV32I-NEXT:    sw zero, 4(sp)1446; RV32I-NEXT:    sw zero, 8(sp)1447; RV32I-NEXT:    sw zero, 12(sp)1448; RV32I-NEXT:    slli t1, t1, 161449; RV32I-NEXT:    slli t2, t2, 241450; RV32I-NEXT:    or t1, t2, t11451; RV32I-NEXT:    addi t2, sp, 161452; RV32I-NEXT:    slli t4, t4, 81453; RV32I-NEXT:    slli t5, t5, 161454; RV32I-NEXT:    slli t6, t6, 241455; RV32I-NEXT:    slli a7, a7, 81456; RV32I-NEXT:    slli t0, t0, 161457; RV32I-NEXT:    slli a0, a0, 241458; RV32I-NEXT:    slli a1, a1, 21459; RV32I-NEXT:    or t3, t4, t31460; RV32I-NEXT:    or t4, t6, t51461; RV32I-NEXT:    or a6, a7, a61462; RV32I-NEXT:    or a0, a0, t01463; RV32I-NEXT:    andi a1, a1, 121464; RV32I-NEXT:    or a3, a4, a31465; RV32I-NEXT:    or a4, t1, a51466; RV32I-NEXT:    or a5, t4, t31467; RV32I-NEXT:    or a0, a0, a61468; RV32I-NEXT:    sub a1, t2, a11469; RV32I-NEXT:    sw a3, 16(sp)1470; RV32I-NEXT:    sw a4, 20(sp)1471; RV32I-NEXT:    sw a5, 24(sp)1472; RV32I-NEXT:    sw a0, 28(sp)1473; RV32I-NEXT:    lw a0, 8(a1)1474; RV32I-NEXT:    lw a3, 4(a1)1475; RV32I-NEXT:    lw a4, 0(a1)1476; RV32I-NEXT:    lw a1, 12(a1)1477; RV32I-NEXT:    srli a5, a0, 161478; RV32I-NEXT:    srli a6, a0, 241479; RV32I-NEXT:    srli a7, a0, 81480; RV32I-NEXT:    srli t0, a1, 161481; RV32I-NEXT:    srli t1, a1, 241482; RV32I-NEXT:    srli t2, a1, 81483; RV32I-NEXT:    srli t3, a4, 161484; RV32I-NEXT:    srli t4, a4, 241485; RV32I-NEXT:    srli t5, a4, 81486; RV32I-NEXT:    srli t6, a3, 161487; RV32I-NEXT:    sb a0, 8(a2)1488; RV32I-NEXT:    sb a7, 9(a2)1489; RV32I-NEXT:    sb a5, 10(a2)1490; RV32I-NEXT:    sb a6, 11(a2)1491; RV32I-NEXT:    srli a0, a3, 241492; RV32I-NEXT:    sb a1, 12(a2)1493; RV32I-NEXT:    sb t2, 13(a2)1494; RV32I-NEXT:    sb t0, 14(a2)1495; RV32I-NEXT:    sb t1, 15(a2)1496; RV32I-NEXT:    srli a1, a3, 81497; RV32I-NEXT:    sb a4, 0(a2)1498; RV32I-NEXT:    sb t5, 1(a2)1499; RV32I-NEXT:    sb t3, 2(a2)1500; RV32I-NEXT:    sb t4, 3(a2)1501; RV32I-NEXT:    sb a3, 4(a2)1502; RV32I-NEXT:    sb a1, 5(a2)1503; RV32I-NEXT:    sb t6, 6(a2)1504; RV32I-NEXT:    sb a0, 7(a2)1505; RV32I-NEXT:    addi sp, sp, 321506; RV32I-NEXT:    ret1507  %src = load i128, ptr %src.ptr, align 11508  %wordOff = load i128, ptr %wordOff.ptr, align 11509  %bitOff = shl i128 %wordOff, 51510  %res = shl i128 %src, %bitOff1511  store i128 %res, ptr %dst, align 11512  ret void1513}1514 1515 1516define void @ashr_16bytes(ptr %src.ptr, ptr %byteOff.ptr, ptr %dst) nounwind {1517; RV64I-LABEL: ashr_16bytes:1518; RV64I:       # %bb.0:1519; RV64I-NEXT:    lbu a3, 8(a0)1520; RV64I-NEXT:    lbu a4, 9(a0)1521; RV64I-NEXT:    lbu a5, 10(a0)1522; RV64I-NEXT:    lbu a6, 11(a0)1523; RV64I-NEXT:    lbu a7, 12(a0)1524; RV64I-NEXT:    lbu t0, 13(a0)1525; RV64I-NEXT:    lbu t1, 14(a0)1526; RV64I-NEXT:    lbu t2, 15(a0)1527; RV64I-NEXT:    slli a4, a4, 81528; RV64I-NEXT:    slli a5, a5, 161529; RV64I-NEXT:    slli a6, a6, 241530; RV64I-NEXT:    slli t0, t0, 81531; RV64I-NEXT:    or a3, a4, a31532; RV64I-NEXT:    or a4, a6, a51533; RV64I-NEXT:    or a5, t0, a71534; RV64I-NEXT:    lbu a6, 4(a1)1535; RV64I-NEXT:    lbu a7, 5(a1)1536; RV64I-NEXT:    lbu t0, 6(a1)1537; RV64I-NEXT:    lbu t3, 7(a1)1538; RV64I-NEXT:    slli t1, t1, 161539; RV64I-NEXT:    slli t2, t2, 241540; RV64I-NEXT:    slli a7, a7, 81541; RV64I-NEXT:    slli t0, t0, 161542; RV64I-NEXT:    slli t3, t3, 241543; RV64I-NEXT:    or t1, t2, t11544; RV64I-NEXT:    or a6, a7, a61545; RV64I-NEXT:    or a7, t3, t01546; RV64I-NEXT:    lbu t0, 1(a1)1547; RV64I-NEXT:    lbu t2, 0(a1)1548; RV64I-NEXT:    lbu t3, 2(a1)1549; RV64I-NEXT:    lbu a1, 3(a1)1550; RV64I-NEXT:    slli t0, t0, 81551; RV64I-NEXT:    or t0, t0, t21552; RV64I-NEXT:    slli t3, t3, 161553; RV64I-NEXT:    slli a1, a1, 241554; RV64I-NEXT:    or a1, a1, t31555; RV64I-NEXT:    or a3, a4, a31556; RV64I-NEXT:    or a5, t1, a51557; RV64I-NEXT:    or a4, a7, a61558; RV64I-NEXT:    or a1, a1, t01559; RV64I-NEXT:    slli a6, a5, 321560; RV64I-NEXT:    slli a1, a1, 31561; RV64I-NEXT:    slli a7, a4, 351562; RV64I-NEXT:    or a4, a6, a31563; RV64I-NEXT:    or a3, a7, a11564; RV64I-NEXT:    addi a6, a3, -641565; RV64I-NEXT:    sra a1, a4, a31566; RV64I-NEXT:    bltz a6, .LBB10_21567; RV64I-NEXT:  # %bb.1:1568; RV64I-NEXT:    sraiw a3, a5, 311569; RV64I-NEXT:    mv a0, a11570; RV64I-NEXT:    mv a1, a31571; RV64I-NEXT:    j .LBB10_31572; RV64I-NEXT:  .LBB10_2:1573; RV64I-NEXT:    lbu a5, 1(a0)1574; RV64I-NEXT:    lbu a6, 2(a0)1575; RV64I-NEXT:    lbu a7, 3(a0)1576; RV64I-NEXT:    lbu t0, 0(a0)1577; RV64I-NEXT:    slli a5, a5, 81578; RV64I-NEXT:    slli a6, a6, 161579; RV64I-NEXT:    slli a7, a7, 241580; RV64I-NEXT:    or a5, a5, t01581; RV64I-NEXT:    or a6, a7, a61582; RV64I-NEXT:    lbu a7, 5(a0)1583; RV64I-NEXT:    lbu t0, 4(a0)1584; RV64I-NEXT:    lbu t1, 6(a0)1585; RV64I-NEXT:    lbu a0, 7(a0)1586; RV64I-NEXT:    slli a7, a7, 81587; RV64I-NEXT:    or a7, a7, t01588; RV64I-NEXT:    slli t1, t1, 161589; RV64I-NEXT:    slli a0, a0, 241590; RV64I-NEXT:    or a0, a0, t11591; RV64I-NEXT:    or a5, a6, a51592; RV64I-NEXT:    not a6, a31593; RV64I-NEXT:    slli a4, a4, 11594; RV64I-NEXT:    or a0, a0, a71595; RV64I-NEXT:    slli a0, a0, 321596; RV64I-NEXT:    or a0, a0, a51597; RV64I-NEXT:    srl a0, a0, a31598; RV64I-NEXT:    sll a3, a4, a61599; RV64I-NEXT:    or a0, a0, a31600; RV64I-NEXT:  .LBB10_3:1601; RV64I-NEXT:    srli a3, a1, 561602; RV64I-NEXT:    srli a4, a1, 481603; RV64I-NEXT:    srli a5, a1, 401604; RV64I-NEXT:    srli a6, a1, 321605; RV64I-NEXT:    srli a7, a1, 241606; RV64I-NEXT:    srli t0, a1, 161607; RV64I-NEXT:    srli t1, a1, 81608; RV64I-NEXT:    srli t2, a0, 561609; RV64I-NEXT:    srli t3, a0, 481610; RV64I-NEXT:    srli t4, a0, 401611; RV64I-NEXT:    srli t5, a0, 321612; RV64I-NEXT:    sb a6, 12(a2)1613; RV64I-NEXT:    sb a5, 13(a2)1614; RV64I-NEXT:    sb a4, 14(a2)1615; RV64I-NEXT:    sb a3, 15(a2)1616; RV64I-NEXT:    srli a3, a0, 241617; RV64I-NEXT:    sb a1, 8(a2)1618; RV64I-NEXT:    sb t1, 9(a2)1619; RV64I-NEXT:    sb t0, 10(a2)1620; RV64I-NEXT:    sb a7, 11(a2)1621; RV64I-NEXT:    srli a1, a0, 161622; RV64I-NEXT:    sb t5, 4(a2)1623; RV64I-NEXT:    sb t4, 5(a2)1624; RV64I-NEXT:    sb t3, 6(a2)1625; RV64I-NEXT:    sb t2, 7(a2)1626; RV64I-NEXT:    srli a4, a0, 81627; RV64I-NEXT:    sb a0, 0(a2)1628; RV64I-NEXT:    sb a4, 1(a2)1629; RV64I-NEXT:    sb a1, 2(a2)1630; RV64I-NEXT:    sb a3, 3(a2)1631; RV64I-NEXT:    ret1632;1633; RV32I-LABEL: ashr_16bytes:1634; RV32I:       # %bb.0:1635; RV32I-NEXT:    addi sp, sp, -321636; RV32I-NEXT:    lbu a3, 0(a0)1637; RV32I-NEXT:    lbu a4, 1(a0)1638; RV32I-NEXT:    lbu a5, 2(a0)1639; RV32I-NEXT:    lbu a6, 3(a0)1640; RV32I-NEXT:    lbu a7, 4(a0)1641; RV32I-NEXT:    lbu t0, 5(a0)1642; RV32I-NEXT:    lbu t1, 6(a0)1643; RV32I-NEXT:    lbu t2, 7(a0)1644; RV32I-NEXT:    slli a4, a4, 81645; RV32I-NEXT:    or a3, a4, a31646; RV32I-NEXT:    lbu a4, 8(a0)1647; RV32I-NEXT:    lbu t3, 9(a0)1648; RV32I-NEXT:    lbu t4, 10(a0)1649; RV32I-NEXT:    lbu t5, 11(a0)1650; RV32I-NEXT:    slli a5, a5, 161651; RV32I-NEXT:    slli a6, a6, 241652; RV32I-NEXT:    slli t0, t0, 81653; RV32I-NEXT:    slli t1, t1, 161654; RV32I-NEXT:    slli t2, t2, 241655; RV32I-NEXT:    or a5, a6, a51656; RV32I-NEXT:    or a6, t0, a71657; RV32I-NEXT:    or a7, t2, t11658; RV32I-NEXT:    lbu t0, 12(a0)1659; RV32I-NEXT:    lbu t1, 13(a0)1660; RV32I-NEXT:    lbu t2, 14(a0)1661; RV32I-NEXT:    lbu a0, 15(a0)1662; RV32I-NEXT:    slli t3, t3, 81663; RV32I-NEXT:    slli t4, t4, 161664; RV32I-NEXT:    slli t5, t5, 241665; RV32I-NEXT:    slli t1, t1, 81666; RV32I-NEXT:    or a4, t3, a41667; RV32I-NEXT:    or t3, t5, t41668; RV32I-NEXT:    or t0, t1, t01669; RV32I-NEXT:    lbu t1, 1(a1)1670; RV32I-NEXT:    lbu t4, 0(a1)1671; RV32I-NEXT:    lbu t5, 2(a1)1672; RV32I-NEXT:    lbu a1, 3(a1)1673; RV32I-NEXT:    slli t1, t1, 81674; RV32I-NEXT:    or t1, t1, t41675; RV32I-NEXT:    slli t5, t5, 161676; RV32I-NEXT:    slli a1, a1, 241677; RV32I-NEXT:    or a1, a1, t51678; RV32I-NEXT:    mv t4, sp1679; RV32I-NEXT:    slli t2, t2, 161680; RV32I-NEXT:    slli a0, a0, 241681; RV32I-NEXT:    or t2, a0, t21682; RV32I-NEXT:    srai a0, a0, 311683; RV32I-NEXT:    or a3, a5, a31684; RV32I-NEXT:    or a5, a7, a61685; RV32I-NEXT:    or a4, t3, a41686; RV32I-NEXT:    or a6, t2, t01687; RV32I-NEXT:    or a1, a1, t11688; RV32I-NEXT:    sw a0, 16(sp)1689; RV32I-NEXT:    sw a0, 20(sp)1690; RV32I-NEXT:    sw a0, 24(sp)1691; RV32I-NEXT:    sw a0, 28(sp)1692; RV32I-NEXT:    sw a3, 0(sp)1693; RV32I-NEXT:    sw a5, 4(sp)1694; RV32I-NEXT:    sw a4, 8(sp)1695; RV32I-NEXT:    sw a6, 12(sp)1696; RV32I-NEXT:    slli a0, a1, 31697; RV32I-NEXT:    andi a1, a1, 121698; RV32I-NEXT:    add a1, t4, a11699; RV32I-NEXT:    andi a3, a0, 241700; RV32I-NEXT:    xori a3, a3, 311701; RV32I-NEXT:    lw a4, 4(a1)1702; RV32I-NEXT:    lw a5, 8(a1)1703; RV32I-NEXT:    lw a6, 0(a1)1704; RV32I-NEXT:    lw a1, 12(a1)1705; RV32I-NEXT:    srl a7, a4, a01706; RV32I-NEXT:    slli t0, a5, 11707; RV32I-NEXT:    srl a6, a6, a01708; RV32I-NEXT:    slli a4, a4, 11709; RV32I-NEXT:    srl a5, a5, a01710; RV32I-NEXT:    slli t1, a1, 11711; RV32I-NEXT:    sra a0, a1, a01712; RV32I-NEXT:    sll a1, t0, a31713; RV32I-NEXT:    sll a4, a4, a31714; RV32I-NEXT:    sll a3, t1, a31715; RV32I-NEXT:    srli t0, a0, 161716; RV32I-NEXT:    srli t1, a0, 241717; RV32I-NEXT:    srli t2, a0, 81718; RV32I-NEXT:    or a1, a7, a11719; RV32I-NEXT:    or a4, a6, a41720; RV32I-NEXT:    or a3, a5, a31721; RV32I-NEXT:    sb a0, 12(a2)1722; RV32I-NEXT:    sb t2, 13(a2)1723; RV32I-NEXT:    sb t0, 14(a2)1724; RV32I-NEXT:    sb t1, 15(a2)1725; RV32I-NEXT:    srli a0, a3, 161726; RV32I-NEXT:    srli t0, a3, 241727; RV32I-NEXT:    srli a3, a3, 81728; RV32I-NEXT:    srli t1, a4, 161729; RV32I-NEXT:    srli t2, a4, 241730; RV32I-NEXT:    srli a4, a4, 81731; RV32I-NEXT:    srli t3, a1, 161732; RV32I-NEXT:    srli t4, a1, 241733; RV32I-NEXT:    srli a1, a1, 81734; RV32I-NEXT:    sb a5, 8(a2)1735; RV32I-NEXT:    sb a3, 9(a2)1736; RV32I-NEXT:    sb a0, 10(a2)1737; RV32I-NEXT:    sb t0, 11(a2)1738; RV32I-NEXT:    sb a6, 0(a2)1739; RV32I-NEXT:    sb a4, 1(a2)1740; RV32I-NEXT:    sb t1, 2(a2)1741; RV32I-NEXT:    sb t2, 3(a2)1742; RV32I-NEXT:    sb a7, 4(a2)1743; RV32I-NEXT:    sb a1, 5(a2)1744; RV32I-NEXT:    sb t3, 6(a2)1745; RV32I-NEXT:    sb t4, 7(a2)1746; RV32I-NEXT:    addi sp, sp, 321747; RV32I-NEXT:    ret1748  %src = load i128, ptr %src.ptr, align 11749  %byteOff = load i128, ptr %byteOff.ptr, align 11750  %bitOff = shl i128 %byteOff, 31751  %res = ashr i128 %src, %bitOff1752  store i128 %res, ptr %dst, align 11753  ret void1754}1755 1756define void @ashr_16bytes_wordOff(ptr %src.ptr, ptr %wordOff.ptr, ptr %dst) nounwind {1757; RV64I-LABEL: ashr_16bytes_wordOff:1758; RV64I:       # %bb.0:1759; RV64I-NEXT:    lbu a3, 8(a0)1760; RV64I-NEXT:    lbu a4, 9(a0)1761; RV64I-NEXT:    lbu a5, 10(a0)1762; RV64I-NEXT:    lbu a6, 11(a0)1763; RV64I-NEXT:    lbu a7, 12(a0)1764; RV64I-NEXT:    lbu t0, 13(a0)1765; RV64I-NEXT:    lbu t1, 14(a0)1766; RV64I-NEXT:    lbu t2, 15(a0)1767; RV64I-NEXT:    slli a4, a4, 81768; RV64I-NEXT:    slli a5, a5, 161769; RV64I-NEXT:    slli a6, a6, 241770; RV64I-NEXT:    slli t0, t0, 81771; RV64I-NEXT:    or a3, a4, a31772; RV64I-NEXT:    or a4, a6, a51773; RV64I-NEXT:    or a5, t0, a71774; RV64I-NEXT:    lbu a6, 4(a1)1775; RV64I-NEXT:    lbu a7, 5(a1)1776; RV64I-NEXT:    lbu t0, 6(a1)1777; RV64I-NEXT:    lbu t3, 7(a1)1778; RV64I-NEXT:    slli t1, t1, 161779; RV64I-NEXT:    slli t2, t2, 241780; RV64I-NEXT:    slli a7, a7, 81781; RV64I-NEXT:    slli t0, t0, 161782; RV64I-NEXT:    slli t3, t3, 241783; RV64I-NEXT:    or t1, t2, t11784; RV64I-NEXT:    or a6, a7, a61785; RV64I-NEXT:    or a7, t3, t01786; RV64I-NEXT:    lbu t0, 1(a1)1787; RV64I-NEXT:    lbu t2, 0(a1)1788; RV64I-NEXT:    lbu t3, 2(a1)1789; RV64I-NEXT:    lbu a1, 3(a1)1790; RV64I-NEXT:    slli t0, t0, 81791; RV64I-NEXT:    or t0, t0, t21792; RV64I-NEXT:    slli t3, t3, 161793; RV64I-NEXT:    slli a1, a1, 241794; RV64I-NEXT:    or a1, a1, t31795; RV64I-NEXT:    or a3, a4, a31796; RV64I-NEXT:    or a5, t1, a51797; RV64I-NEXT:    or a4, a7, a61798; RV64I-NEXT:    or a1, a1, t01799; RV64I-NEXT:    slli a6, a5, 321800; RV64I-NEXT:    slli a1, a1, 51801; RV64I-NEXT:    slli a7, a4, 371802; RV64I-NEXT:    or a4, a6, a31803; RV64I-NEXT:    or a3, a7, a11804; RV64I-NEXT:    addi a6, a3, -641805; RV64I-NEXT:    sra a1, a4, a31806; RV64I-NEXT:    bltz a6, .LBB11_21807; RV64I-NEXT:  # %bb.1:1808; RV64I-NEXT:    sraiw a3, a5, 311809; RV64I-NEXT:    mv a0, a11810; RV64I-NEXT:    mv a1, a31811; RV64I-NEXT:    j .LBB11_31812; RV64I-NEXT:  .LBB11_2:1813; RV64I-NEXT:    lbu a5, 1(a0)1814; RV64I-NEXT:    lbu a6, 2(a0)1815; RV64I-NEXT:    lbu a7, 3(a0)1816; RV64I-NEXT:    lbu t0, 0(a0)1817; RV64I-NEXT:    slli a5, a5, 81818; RV64I-NEXT:    slli a6, a6, 161819; RV64I-NEXT:    slli a7, a7, 241820; RV64I-NEXT:    or a5, a5, t01821; RV64I-NEXT:    or a6, a7, a61822; RV64I-NEXT:    lbu a7, 5(a0)1823; RV64I-NEXT:    lbu t0, 4(a0)1824; RV64I-NEXT:    lbu t1, 6(a0)1825; RV64I-NEXT:    lbu a0, 7(a0)1826; RV64I-NEXT:    slli a7, a7, 81827; RV64I-NEXT:    or a7, a7, t01828; RV64I-NEXT:    slli t1, t1, 161829; RV64I-NEXT:    slli a0, a0, 241830; RV64I-NEXT:    or a0, a0, t11831; RV64I-NEXT:    or a5, a6, a51832; RV64I-NEXT:    not a6, a31833; RV64I-NEXT:    slli a4, a4, 11834; RV64I-NEXT:    or a0, a0, a71835; RV64I-NEXT:    slli a0, a0, 321836; RV64I-NEXT:    or a0, a0, a51837; RV64I-NEXT:    srl a0, a0, a31838; RV64I-NEXT:    sll a3, a4, a61839; RV64I-NEXT:    or a0, a0, a31840; RV64I-NEXT:  .LBB11_3:1841; RV64I-NEXT:    srli a3, a1, 561842; RV64I-NEXT:    srli a4, a1, 481843; RV64I-NEXT:    srli a5, a1, 401844; RV64I-NEXT:    srli a6, a1, 321845; RV64I-NEXT:    srli a7, a1, 241846; RV64I-NEXT:    srli t0, a1, 161847; RV64I-NEXT:    srli t1, a1, 81848; RV64I-NEXT:    srli t2, a0, 561849; RV64I-NEXT:    srli t3, a0, 481850; RV64I-NEXT:    srli t4, a0, 401851; RV64I-NEXT:    srli t5, a0, 321852; RV64I-NEXT:    sb a6, 12(a2)1853; RV64I-NEXT:    sb a5, 13(a2)1854; RV64I-NEXT:    sb a4, 14(a2)1855; RV64I-NEXT:    sb a3, 15(a2)1856; RV64I-NEXT:    srli a3, a0, 241857; RV64I-NEXT:    sb a1, 8(a2)1858; RV64I-NEXT:    sb t1, 9(a2)1859; RV64I-NEXT:    sb t0, 10(a2)1860; RV64I-NEXT:    sb a7, 11(a2)1861; RV64I-NEXT:    srli a1, a0, 161862; RV64I-NEXT:    sb t5, 4(a2)1863; RV64I-NEXT:    sb t4, 5(a2)1864; RV64I-NEXT:    sb t3, 6(a2)1865; RV64I-NEXT:    sb t2, 7(a2)1866; RV64I-NEXT:    srli a4, a0, 81867; RV64I-NEXT:    sb a0, 0(a2)1868; RV64I-NEXT:    sb a4, 1(a2)1869; RV64I-NEXT:    sb a1, 2(a2)1870; RV64I-NEXT:    sb a3, 3(a2)1871; RV64I-NEXT:    ret1872;1873; RV32I-LABEL: ashr_16bytes_wordOff:1874; RV32I:       # %bb.0:1875; RV32I-NEXT:    addi sp, sp, -321876; RV32I-NEXT:    lbu a3, 0(a0)1877; RV32I-NEXT:    lbu a4, 1(a0)1878; RV32I-NEXT:    lbu a5, 2(a0)1879; RV32I-NEXT:    lbu a6, 3(a0)1880; RV32I-NEXT:    lbu a7, 4(a0)1881; RV32I-NEXT:    lbu t0, 5(a0)1882; RV32I-NEXT:    lbu t1, 6(a0)1883; RV32I-NEXT:    lbu t2, 7(a0)1884; RV32I-NEXT:    lbu t3, 8(a0)1885; RV32I-NEXT:    lbu t4, 9(a0)1886; RV32I-NEXT:    lbu t5, 10(a0)1887; RV32I-NEXT:    lbu t6, 11(a0)1888; RV32I-NEXT:    slli a4, a4, 81889; RV32I-NEXT:    slli a5, a5, 161890; RV32I-NEXT:    slli a6, a6, 241891; RV32I-NEXT:    slli t0, t0, 81892; RV32I-NEXT:    or a3, a4, a31893; RV32I-NEXT:    or a4, a6, a51894; RV32I-NEXT:    or a5, t0, a71895; RV32I-NEXT:    lbu a6, 12(a0)1896; RV32I-NEXT:    lbu a7, 13(a0)1897; RV32I-NEXT:    lbu t0, 14(a0)1898; RV32I-NEXT:    lbu a0, 15(a0)1899; RV32I-NEXT:    lbu a1, 0(a1)1900; RV32I-NEXT:    slli t1, t1, 161901; RV32I-NEXT:    slli t2, t2, 241902; RV32I-NEXT:    or t1, t2, t11903; RV32I-NEXT:    mv t2, sp1904; RV32I-NEXT:    slli t4, t4, 81905; RV32I-NEXT:    slli t5, t5, 161906; RV32I-NEXT:    slli t6, t6, 241907; RV32I-NEXT:    slli a7, a7, 81908; RV32I-NEXT:    slli t0, t0, 161909; RV32I-NEXT:    slli a0, a0, 241910; RV32I-NEXT:    slli a1, a1, 21911; RV32I-NEXT:    or t3, t4, t31912; RV32I-NEXT:    or t4, t6, t51913; RV32I-NEXT:    or a6, a7, a61914; RV32I-NEXT:    or a7, a0, t01915; RV32I-NEXT:    srai a0, a0, 311916; RV32I-NEXT:    andi a1, a1, 121917; RV32I-NEXT:    or a3, a4, a31918; RV32I-NEXT:    or a4, t1, a51919; RV32I-NEXT:    or a5, t4, t31920; RV32I-NEXT:    or a6, a7, a61921; RV32I-NEXT:    sw a0, 16(sp)1922; RV32I-NEXT:    sw a0, 20(sp)1923; RV32I-NEXT:    sw a0, 24(sp)1924; RV32I-NEXT:    sw a0, 28(sp)1925; RV32I-NEXT:    add a1, t2, a11926; RV32I-NEXT:    sw a3, 0(sp)1927; RV32I-NEXT:    sw a4, 4(sp)1928; RV32I-NEXT:    sw a5, 8(sp)1929; RV32I-NEXT:    sw a6, 12(sp)1930; RV32I-NEXT:    lw a0, 8(a1)1931; RV32I-NEXT:    lw a3, 4(a1)1932; RV32I-NEXT:    lw a4, 0(a1)1933; RV32I-NEXT:    lw a1, 12(a1)1934; RV32I-NEXT:    srli a5, a0, 161935; RV32I-NEXT:    srli a6, a0, 241936; RV32I-NEXT:    srli a7, a0, 81937; RV32I-NEXT:    srli t0, a1, 161938; RV32I-NEXT:    srli t1, a1, 241939; RV32I-NEXT:    srli t2, a1, 81940; RV32I-NEXT:    srli t3, a4, 161941; RV32I-NEXT:    srli t4, a4, 241942; RV32I-NEXT:    srli t5, a4, 81943; RV32I-NEXT:    srli t6, a3, 161944; RV32I-NEXT:    sb a0, 8(a2)1945; RV32I-NEXT:    sb a7, 9(a2)1946; RV32I-NEXT:    sb a5, 10(a2)1947; RV32I-NEXT:    sb a6, 11(a2)1948; RV32I-NEXT:    srli a0, a3, 241949; RV32I-NEXT:    sb a1, 12(a2)1950; RV32I-NEXT:    sb t2, 13(a2)1951; RV32I-NEXT:    sb t0, 14(a2)1952; RV32I-NEXT:    sb t1, 15(a2)1953; RV32I-NEXT:    srli a1, a3, 81954; RV32I-NEXT:    sb a4, 0(a2)1955; RV32I-NEXT:    sb t5, 1(a2)1956; RV32I-NEXT:    sb t3, 2(a2)1957; RV32I-NEXT:    sb t4, 3(a2)1958; RV32I-NEXT:    sb a3, 4(a2)1959; RV32I-NEXT:    sb a1, 5(a2)1960; RV32I-NEXT:    sb t6, 6(a2)1961; RV32I-NEXT:    sb a0, 7(a2)1962; RV32I-NEXT:    addi sp, sp, 321963; RV32I-NEXT:    ret1964  %src = load i128, ptr %src.ptr, align 11965  %wordOff = load i128, ptr %wordOff.ptr, align 11966  %bitOff = shl i128 %wordOff, 51967  %res = ashr i128 %src, %bitOff1968  store i128 %res, ptr %dst, align 11969  ret void1970}1971 1972define void @lshr_32bytes(ptr %src.ptr, ptr %byteOff.ptr, ptr %dst) nounwind {1973; RV64I-LABEL: lshr_32bytes:1974; RV64I:       # %bb.0:1975; RV64I-NEXT:    addi sp, sp, -1601976; RV64I-NEXT:    sd s0, 152(sp) # 8-byte Folded Spill1977; RV64I-NEXT:    sd s1, 144(sp) # 8-byte Folded Spill1978; RV64I-NEXT:    sd s2, 136(sp) # 8-byte Folded Spill1979; RV64I-NEXT:    sd s3, 128(sp) # 8-byte Folded Spill1980; RV64I-NEXT:    sd s4, 120(sp) # 8-byte Folded Spill1981; RV64I-NEXT:    sd s5, 112(sp) # 8-byte Folded Spill1982; RV64I-NEXT:    sd s6, 104(sp) # 8-byte Folded Spill1983; RV64I-NEXT:    sd s7, 96(sp) # 8-byte Folded Spill1984; RV64I-NEXT:    sd s8, 88(sp) # 8-byte Folded Spill1985; RV64I-NEXT:    sd s9, 80(sp) # 8-byte Folded Spill1986; RV64I-NEXT:    sd s10, 72(sp) # 8-byte Folded Spill1987; RV64I-NEXT:    sd s11, 64(sp) # 8-byte Folded Spill1988; RV64I-NEXT:    lbu a3, 0(a0)1989; RV64I-NEXT:    lbu a4, 1(a0)1990; RV64I-NEXT:    lbu a5, 2(a0)1991; RV64I-NEXT:    lbu a6, 3(a0)1992; RV64I-NEXT:    lbu a7, 4(a0)1993; RV64I-NEXT:    lbu t0, 5(a0)1994; RV64I-NEXT:    lbu t1, 6(a0)1995; RV64I-NEXT:    lbu t2, 7(a0)1996; RV64I-NEXT:    lbu t3, 8(a0)1997; RV64I-NEXT:    lbu t4, 9(a0)1998; RV64I-NEXT:    lbu t5, 10(a0)1999; RV64I-NEXT:    lbu t6, 11(a0)2000; RV64I-NEXT:    lbu s0, 12(a0)2001; RV64I-NEXT:    lbu s1, 13(a0)2002; RV64I-NEXT:    lbu s2, 14(a0)2003; RV64I-NEXT:    lbu s3, 15(a0)2004; RV64I-NEXT:    lbu s4, 16(a0)2005; RV64I-NEXT:    lbu s5, 17(a0)2006; RV64I-NEXT:    lbu s6, 18(a0)2007; RV64I-NEXT:    lbu s7, 19(a0)2008; RV64I-NEXT:    slli a4, a4, 82009; RV64I-NEXT:    slli a5, a5, 162010; RV64I-NEXT:    slli a6, a6, 242011; RV64I-NEXT:    slli t0, t0, 82012; RV64I-NEXT:    slli t1, t1, 162013; RV64I-NEXT:    slli t2, t2, 242014; RV64I-NEXT:    or a3, a4, a32015; RV64I-NEXT:    or a4, a6, a52016; RV64I-NEXT:    or a5, t0, a72017; RV64I-NEXT:    or a6, t2, t12018; RV64I-NEXT:    lbu s8, 20(a0)2019; RV64I-NEXT:    lbu s9, 21(a0)2020; RV64I-NEXT:    lbu s10, 22(a0)2021; RV64I-NEXT:    lbu s11, 23(a0)2022; RV64I-NEXT:    slli t4, t4, 82023; RV64I-NEXT:    slli t5, t5, 162024; RV64I-NEXT:    slli t6, t6, 242025; RV64I-NEXT:    slli s1, s1, 82026; RV64I-NEXT:    slli s2, s2, 162027; RV64I-NEXT:    slli s3, s3, 242028; RV64I-NEXT:    or a7, t4, t32029; RV64I-NEXT:    or t0, t6, t52030; RV64I-NEXT:    or t1, s1, s02031; RV64I-NEXT:    or t2, s3, s22032; RV64I-NEXT:    lbu t6, 24(a0)2033; RV64I-NEXT:    lbu s0, 25(a0)2034; RV64I-NEXT:    lbu s1, 26(a0)2035; RV64I-NEXT:    lbu s2, 27(a0)2036; RV64I-NEXT:    slli s5, s5, 82037; RV64I-NEXT:    slli s6, s6, 162038; RV64I-NEXT:    slli s7, s7, 242039; RV64I-NEXT:    slli s9, s9, 82040; RV64I-NEXT:    or t3, s5, s42041; RV64I-NEXT:    or t4, s7, s62042; RV64I-NEXT:    or t5, s9, s82043; RV64I-NEXT:    lbu s3, 28(a0)2044; RV64I-NEXT:    lbu s4, 29(a0)2045; RV64I-NEXT:    lbu s5, 30(a0)2046; RV64I-NEXT:    lbu s6, 31(a0)2047; RV64I-NEXT:    slli s10, s10, 162048; RV64I-NEXT:    slli s11, s11, 242049; RV64I-NEXT:    slli s0, s0, 82050; RV64I-NEXT:    slli s1, s1, 162051; RV64I-NEXT:    slli s2, s2, 242052; RV64I-NEXT:    slli s4, s4, 82053; RV64I-NEXT:    or a0, s11, s102054; RV64I-NEXT:    or t6, s0, t62055; RV64I-NEXT:    or s0, s2, s12056; RV64I-NEXT:    or s1, s4, s32057; RV64I-NEXT:    lbu s2, 0(a1)2058; RV64I-NEXT:    lbu s3, 1(a1)2059; RV64I-NEXT:    lbu s4, 2(a1)2060; RV64I-NEXT:    lbu s7, 3(a1)2061; RV64I-NEXT:    slli s5, s5, 162062; RV64I-NEXT:    slli s6, s6, 242063; RV64I-NEXT:    slli s3, s3, 82064; RV64I-NEXT:    slli s4, s4, 162065; RV64I-NEXT:    slli s7, s7, 242066; RV64I-NEXT:    or s5, s6, s52067; RV64I-NEXT:    or s2, s3, s22068; RV64I-NEXT:    or s3, s7, s42069; RV64I-NEXT:    lbu s4, 5(a1)2070; RV64I-NEXT:    lbu s6, 4(a1)2071; RV64I-NEXT:    lbu s7, 6(a1)2072; RV64I-NEXT:    lbu a1, 7(a1)2073; RV64I-NEXT:    slli s4, s4, 82074; RV64I-NEXT:    or s4, s4, s62075; RV64I-NEXT:    sd zero, 32(sp)2076; RV64I-NEXT:    sd zero, 40(sp)2077; RV64I-NEXT:    sd zero, 48(sp)2078; RV64I-NEXT:    sd zero, 56(sp)2079; RV64I-NEXT:    slli s7, s7, 162080; RV64I-NEXT:    slli a1, a1, 242081; RV64I-NEXT:    or a1, a1, s72082; RV64I-NEXT:    mv s6, sp2083; RV64I-NEXT:    or a3, a4, a32084; RV64I-NEXT:    or a4, a6, a52085; RV64I-NEXT:    or a5, t0, a72086; RV64I-NEXT:    or a6, t2, t12087; RV64I-NEXT:    or a7, t4, t32088; RV64I-NEXT:    or a0, a0, t52089; RV64I-NEXT:    or t0, s0, t62090; RV64I-NEXT:    or t1, s5, s12091; RV64I-NEXT:    or t2, s3, s22092; RV64I-NEXT:    or a1, a1, s42093; RV64I-NEXT:    slli a4, a4, 322094; RV64I-NEXT:    slli a6, a6, 322095; RV64I-NEXT:    slli a0, a0, 322096; RV64I-NEXT:    slli t1, t1, 322097; RV64I-NEXT:    slli a1, a1, 322098; RV64I-NEXT:    or a3, a4, a32099; RV64I-NEXT:    or a4, a6, a52100; RV64I-NEXT:    or a0, a0, a72101; RV64I-NEXT:    or a5, t1, t02102; RV64I-NEXT:    or a1, a1, t22103; RV64I-NEXT:    sd a3, 0(sp)2104; RV64I-NEXT:    sd a4, 8(sp)2105; RV64I-NEXT:    sd a0, 16(sp)2106; RV64I-NEXT:    sd a5, 24(sp)2107; RV64I-NEXT:    slli a4, a1, 32108; RV64I-NEXT:    andi a1, a1, 242109; RV64I-NEXT:    add a1, s6, a12110; RV64I-NEXT:    andi a0, a4, 562111; RV64I-NEXT:    xori a5, a0, 632112; RV64I-NEXT:    ld a3, 8(a1)2113; RV64I-NEXT:    ld a6, 16(a1)2114; RV64I-NEXT:    ld a7, 0(a1)2115; RV64I-NEXT:    ld t0, 24(a1)2116; RV64I-NEXT:    srl a0, a3, a42117; RV64I-NEXT:    slli t1, a6, 12118; RV64I-NEXT:    srl a1, a7, a42119; RV64I-NEXT:    slli a7, a3, 12120; RV64I-NEXT:    srl a3, a6, a42121; RV64I-NEXT:    slli a6, t0, 12122; RV64I-NEXT:    srl t0, t0, a42123; RV64I-NEXT:    sll a4, t1, a52124; RV64I-NEXT:    sll a7, a7, a52125; RV64I-NEXT:    sll a5, a6, a52126; RV64I-NEXT:    srli a6, t0, 562127; RV64I-NEXT:    srli t1, t0, 482128; RV64I-NEXT:    srli t2, t0, 402129; RV64I-NEXT:    srli t3, t0, 322130; RV64I-NEXT:    srli t4, t0, 242131; RV64I-NEXT:    srli t5, t0, 162132; RV64I-NEXT:    srli t6, t0, 82133; RV64I-NEXT:    or a4, a0, a42134; RV64I-NEXT:    or a7, a1, a72135; RV64I-NEXT:    or a5, a3, a52136; RV64I-NEXT:    sb t3, 28(a2)2137; RV64I-NEXT:    sb t2, 29(a2)2138; RV64I-NEXT:    sb t1, 30(a2)2139; RV64I-NEXT:    sb a6, 31(a2)2140; RV64I-NEXT:    sb t0, 24(a2)2141; RV64I-NEXT:    sb t6, 25(a2)2142; RV64I-NEXT:    sb t5, 26(a2)2143; RV64I-NEXT:    sb t4, 27(a2)2144; RV64I-NEXT:    srli a6, a5, 562145; RV64I-NEXT:    srli t0, a5, 482146; RV64I-NEXT:    srli t1, a5, 402147; RV64I-NEXT:    srli t2, a5, 322148; RV64I-NEXT:    srli t3, a5, 242149; RV64I-NEXT:    srli t4, a5, 162150; RV64I-NEXT:    srli a5, a5, 82151; RV64I-NEXT:    srli t5, a7, 562152; RV64I-NEXT:    srli t6, a7, 482153; RV64I-NEXT:    srli s0, a7, 402154; RV64I-NEXT:    srli s1, a7, 322155; RV64I-NEXT:    srli s2, a7, 242156; RV64I-NEXT:    srli s3, a7, 162157; RV64I-NEXT:    srli a7, a7, 82158; RV64I-NEXT:    srli s4, a4, 562159; RV64I-NEXT:    srli s5, a4, 482160; RV64I-NEXT:    srli s6, a4, 402161; RV64I-NEXT:    sb t2, 20(a2)2162; RV64I-NEXT:    sb t1, 21(a2)2163; RV64I-NEXT:    sb t0, 22(a2)2164; RV64I-NEXT:    sb a6, 23(a2)2165; RV64I-NEXT:    srli a6, a4, 322166; RV64I-NEXT:    sb a3, 16(a2)2167; RV64I-NEXT:    sb a5, 17(a2)2168; RV64I-NEXT:    sb t4, 18(a2)2169; RV64I-NEXT:    sb t3, 19(a2)2170; RV64I-NEXT:    srli a3, a4, 242171; RV64I-NEXT:    sb s1, 4(a2)2172; RV64I-NEXT:    sb s0, 5(a2)2173; RV64I-NEXT:    sb t6, 6(a2)2174; RV64I-NEXT:    sb t5, 7(a2)2175; RV64I-NEXT:    srli a5, a4, 162176; RV64I-NEXT:    srli a4, a4, 82177; RV64I-NEXT:    sb a1, 0(a2)2178; RV64I-NEXT:    sb a7, 1(a2)2179; RV64I-NEXT:    sb s3, 2(a2)2180; RV64I-NEXT:    sb s2, 3(a2)2181; RV64I-NEXT:    sb a6, 12(a2)2182; RV64I-NEXT:    sb s6, 13(a2)2183; RV64I-NEXT:    sb s5, 14(a2)2184; RV64I-NEXT:    sb s4, 15(a2)2185; RV64I-NEXT:    sb a0, 8(a2)2186; RV64I-NEXT:    sb a4, 9(a2)2187; RV64I-NEXT:    sb a5, 10(a2)2188; RV64I-NEXT:    sb a3, 11(a2)2189; RV64I-NEXT:    ld s0, 152(sp) # 8-byte Folded Reload2190; RV64I-NEXT:    ld s1, 144(sp) # 8-byte Folded Reload2191; RV64I-NEXT:    ld s2, 136(sp) # 8-byte Folded Reload2192; RV64I-NEXT:    ld s3, 128(sp) # 8-byte Folded Reload2193; RV64I-NEXT:    ld s4, 120(sp) # 8-byte Folded Reload2194; RV64I-NEXT:    ld s5, 112(sp) # 8-byte Folded Reload2195; RV64I-NEXT:    ld s6, 104(sp) # 8-byte Folded Reload2196; RV64I-NEXT:    ld s7, 96(sp) # 8-byte Folded Reload2197; RV64I-NEXT:    ld s8, 88(sp) # 8-byte Folded Reload2198; RV64I-NEXT:    ld s9, 80(sp) # 8-byte Folded Reload2199; RV64I-NEXT:    ld s10, 72(sp) # 8-byte Folded Reload2200; RV64I-NEXT:    ld s11, 64(sp) # 8-byte Folded Reload2201; RV64I-NEXT:    addi sp, sp, 1602202; RV64I-NEXT:    ret2203;2204; RV32I-LABEL: lshr_32bytes:2205; RV32I:       # %bb.0:2206; RV32I-NEXT:    addi sp, sp, -1282207; RV32I-NEXT:    sw ra, 124(sp) # 4-byte Folded Spill2208; RV32I-NEXT:    sw s0, 120(sp) # 4-byte Folded Spill2209; RV32I-NEXT:    sw s1, 116(sp) # 4-byte Folded Spill2210; RV32I-NEXT:    sw s2, 112(sp) # 4-byte Folded Spill2211; RV32I-NEXT:    sw s3, 108(sp) # 4-byte Folded Spill2212; RV32I-NEXT:    sw s4, 104(sp) # 4-byte Folded Spill2213; RV32I-NEXT:    sw s5, 100(sp) # 4-byte Folded Spill2214; RV32I-NEXT:    sw s6, 96(sp) # 4-byte Folded Spill2215; RV32I-NEXT:    sw s7, 92(sp) # 4-byte Folded Spill2216; RV32I-NEXT:    sw s8, 88(sp) # 4-byte Folded Spill2217; RV32I-NEXT:    sw s9, 84(sp) # 4-byte Folded Spill2218; RV32I-NEXT:    sw s10, 80(sp) # 4-byte Folded Spill2219; RV32I-NEXT:    sw s11, 76(sp) # 4-byte Folded Spill2220; RV32I-NEXT:    lbu s1, 0(a0)2221; RV32I-NEXT:    lbu a4, 1(a0)2222; RV32I-NEXT:    lbu a5, 2(a0)2223; RV32I-NEXT:    lbu a6, 3(a0)2224; RV32I-NEXT:    lbu t1, 4(a0)2225; RV32I-NEXT:    lbu t3, 5(a0)2226; RV32I-NEXT:    lbu t4, 6(a0)2227; RV32I-NEXT:    lbu s0, 7(a0)2228; RV32I-NEXT:    lbu t2, 8(a0)2229; RV32I-NEXT:    lbu s3, 9(a0)2230; RV32I-NEXT:    lbu s6, 10(a0)2231; RV32I-NEXT:    lbu s8, 11(a0)2232; RV32I-NEXT:    lbu s9, 12(a0)2233; RV32I-NEXT:    lbu s10, 13(a0)2234; RV32I-NEXT:    lbu s4, 14(a0)2235; RV32I-NEXT:    lbu s7, 15(a0)2236; RV32I-NEXT:    lbu s5, 16(a0)2237; RV32I-NEXT:    lbu s11, 17(a0)2238; RV32I-NEXT:    lbu ra, 18(a0)2239; RV32I-NEXT:    lbu a3, 19(a0)2240; RV32I-NEXT:    lbu t5, 20(a0)2241; RV32I-NEXT:    lbu t6, 21(a0)2242; RV32I-NEXT:    lbu a7, 22(a0)2243; RV32I-NEXT:    lbu t0, 23(a0)2244; RV32I-NEXT:    slli a4, a4, 82245; RV32I-NEXT:    slli a5, a5, 162246; RV32I-NEXT:    slli a6, a6, 242247; RV32I-NEXT:    slli t3, t3, 82248; RV32I-NEXT:    slli t4, t4, 162249; RV32I-NEXT:    slli s0, s0, 242250; RV32I-NEXT:    or a4, a4, s12251; RV32I-NEXT:    sw a4, 4(sp) # 4-byte Folded Spill2252; RV32I-NEXT:    or a4, a6, a52253; RV32I-NEXT:    or a5, t3, t12254; RV32I-NEXT:    or a6, s0, t42255; RV32I-NEXT:    lbu t1, 24(a0)2256; RV32I-NEXT:    lbu s0, 25(a0)2257; RV32I-NEXT:    lbu s1, 26(a0)2258; RV32I-NEXT:    lbu s2, 27(a0)2259; RV32I-NEXT:    slli s3, s3, 82260; RV32I-NEXT:    slli s6, s6, 162261; RV32I-NEXT:    slli s8, s8, 242262; RV32I-NEXT:    slli s10, s10, 82263; RV32I-NEXT:    or t2, s3, t22264; RV32I-NEXT:    or t3, s8, s62265; RV32I-NEXT:    or t4, s10, s92266; RV32I-NEXT:    lbu s3, 28(a0)2267; RV32I-NEXT:    lbu s6, 29(a0)2268; RV32I-NEXT:    lbu s8, 30(a0)2269; RV32I-NEXT:    lbu s9, 31(a0)2270; RV32I-NEXT:    slli s4, s4, 162271; RV32I-NEXT:    slli s7, s7, 242272; RV32I-NEXT:    slli s11, s11, 82273; RV32I-NEXT:    slli ra, ra, 162274; RV32I-NEXT:    slli a3, a3, 242275; RV32I-NEXT:    or a0, s7, s42276; RV32I-NEXT:    or s4, s11, s52277; RV32I-NEXT:    or s5, a3, ra2278; RV32I-NEXT:    lbu a3, 0(a1)2279; RV32I-NEXT:    lbu s7, 1(a1)2280; RV32I-NEXT:    lbu s10, 2(a1)2281; RV32I-NEXT:    lbu a1, 3(a1)2282; RV32I-NEXT:    sw zero, 56(sp)2283; RV32I-NEXT:    sw zero, 60(sp)2284; RV32I-NEXT:    sw zero, 64(sp)2285; RV32I-NEXT:    sw zero, 68(sp)2286; RV32I-NEXT:    sw zero, 40(sp)2287; RV32I-NEXT:    sw zero, 44(sp)2288; RV32I-NEXT:    sw zero, 48(sp)2289; RV32I-NEXT:    sw zero, 52(sp)2290; RV32I-NEXT:    slli t6, t6, 82291; RV32I-NEXT:    or t5, t6, t52292; RV32I-NEXT:    addi t6, sp, 82293; RV32I-NEXT:    slli a7, a7, 162294; RV32I-NEXT:    slli t0, t0, 242295; RV32I-NEXT:    slli s0, s0, 82296; RV32I-NEXT:    slli s1, s1, 162297; RV32I-NEXT:    slli s2, s2, 242298; RV32I-NEXT:    slli s6, s6, 82299; RV32I-NEXT:    slli s8, s8, 162300; RV32I-NEXT:    slli s9, s9, 242301; RV32I-NEXT:    slli s7, s7, 82302; RV32I-NEXT:    slli s10, s10, 162303; RV32I-NEXT:    slli a1, a1, 242304; RV32I-NEXT:    or a7, t0, a72305; RV32I-NEXT:    or t0, s0, t12306; RV32I-NEXT:    or t1, s2, s12307; RV32I-NEXT:    or s0, s6, s32308; RV32I-NEXT:    or s1, s9, s82309; RV32I-NEXT:    or a3, s7, a32310; RV32I-NEXT:    or a1, a1, s102311; RV32I-NEXT:    lw s2, 4(sp) # 4-byte Folded Reload2312; RV32I-NEXT:    or a4, a4, s22313; RV32I-NEXT:    or a5, a6, a52314; RV32I-NEXT:    or a6, t3, t22315; RV32I-NEXT:    or a0, a0, t42316; RV32I-NEXT:    or t2, s5, s42317; RV32I-NEXT:    or a7, a7, t52318; RV32I-NEXT:    or t0, t1, t02319; RV32I-NEXT:    or s0, s1, s02320; RV32I-NEXT:    or a1, a1, a32321; RV32I-NEXT:    sw t2, 24(sp)2322; RV32I-NEXT:    sw a7, 28(sp)2323; RV32I-NEXT:    sw t0, 32(sp)2324; RV32I-NEXT:    sw s0, 36(sp)2325; RV32I-NEXT:    sw a4, 8(sp)2326; RV32I-NEXT:    sw a5, 12(sp)2327; RV32I-NEXT:    sw a6, 16(sp)2328; RV32I-NEXT:    sw a0, 20(sp)2329; RV32I-NEXT:    slli t1, a1, 32330; RV32I-NEXT:    andi a1, a1, 282331; RV32I-NEXT:    add a1, t6, a12332; RV32I-NEXT:    andi a0, t1, 242333; RV32I-NEXT:    xori t0, a0, 312334; RV32I-NEXT:    lw a3, 0(a1)2335; RV32I-NEXT:    lw a4, 4(a1)2336; RV32I-NEXT:    lw a5, 8(a1)2337; RV32I-NEXT:    lw a6, 12(a1)2338; RV32I-NEXT:    lw a7, 16(a1)2339; RV32I-NEXT:    lw t2, 20(a1)2340; RV32I-NEXT:    lw t3, 24(a1)2341; RV32I-NEXT:    lw t4, 28(a1)2342; RV32I-NEXT:    srl a0, a4, t12343; RV32I-NEXT:    slli t5, a5, 12344; RV32I-NEXT:    srl a1, a3, t12345; RV32I-NEXT:    slli t6, a4, 12346; RV32I-NEXT:    srl a3, a6, t12347; RV32I-NEXT:    slli s0, a7, 12348; RV32I-NEXT:    srl a4, a5, t12349; RV32I-NEXT:    slli s1, a6, 12350; RV32I-NEXT:    srl a5, t2, t12351; RV32I-NEXT:    slli s2, t3, 12352; RV32I-NEXT:    srl a6, a7, t12353; RV32I-NEXT:    slli t2, t2, 12354; RV32I-NEXT:    srl a7, t3, t12355; RV32I-NEXT:    slli t3, t4, 12356; RV32I-NEXT:    srl t1, t4, t12357; RV32I-NEXT:    sll t4, t5, t02358; RV32I-NEXT:    sll t5, t6, t02359; RV32I-NEXT:    sll t6, s0, t02360; RV32I-NEXT:    sll s0, s1, t02361; RV32I-NEXT:    sll s1, s2, t02362; RV32I-NEXT:    sll t2, t2, t02363; RV32I-NEXT:    sll t3, t3, t02364; RV32I-NEXT:    srli s2, t1, 242365; RV32I-NEXT:    srli s3, t1, 162366; RV32I-NEXT:    srli s4, t1, 82367; RV32I-NEXT:    or t0, a0, t42368; RV32I-NEXT:    or t4, a1, t52369; RV32I-NEXT:    or t5, a3, t62370; RV32I-NEXT:    or s0, a4, s02371; RV32I-NEXT:    or s1, a5, s12372; RV32I-NEXT:    or t2, a6, t22373; RV32I-NEXT:    or t3, a7, t32374; RV32I-NEXT:    sb t1, 28(a2)2375; RV32I-NEXT:    sb s4, 29(a2)2376; RV32I-NEXT:    sb s3, 30(a2)2377; RV32I-NEXT:    sb s2, 31(a2)2378; RV32I-NEXT:    srli t1, t3, 242379; RV32I-NEXT:    srli t6, t3, 162380; RV32I-NEXT:    srli t3, t3, 82381; RV32I-NEXT:    srli s2, t2, 242382; RV32I-NEXT:    srli s3, t2, 162383; RV32I-NEXT:    srli t2, t2, 82384; RV32I-NEXT:    srli s4, s1, 242385; RV32I-NEXT:    srli s5, s1, 162386; RV32I-NEXT:    srli s1, s1, 82387; RV32I-NEXT:    srli s6, s0, 242388; RV32I-NEXT:    srli s7, s0, 162389; RV32I-NEXT:    srli s0, s0, 82390; RV32I-NEXT:    srli s8, t5, 242391; RV32I-NEXT:    srli s9, t5, 162392; RV32I-NEXT:    srli t5, t5, 82393; RV32I-NEXT:    srli s10, t4, 242394; RV32I-NEXT:    srli s11, t4, 162395; RV32I-NEXT:    srli t4, t4, 82396; RV32I-NEXT:    sb a7, 24(a2)2397; RV32I-NEXT:    sb t3, 25(a2)2398; RV32I-NEXT:    sb t6, 26(a2)2399; RV32I-NEXT:    sb t1, 27(a2)2400; RV32I-NEXT:    srli a7, t0, 242401; RV32I-NEXT:    sb a6, 16(a2)2402; RV32I-NEXT:    sb t2, 17(a2)2403; RV32I-NEXT:    sb s3, 18(a2)2404; RV32I-NEXT:    sb s2, 19(a2)2405; RV32I-NEXT:    srli a6, t0, 162406; RV32I-NEXT:    srli t0, t0, 82407; RV32I-NEXT:    sb a5, 20(a2)2408; RV32I-NEXT:    sb s1, 21(a2)2409; RV32I-NEXT:    sb s5, 22(a2)2410; RV32I-NEXT:    sb s4, 23(a2)2411; RV32I-NEXT:    sb a4, 8(a2)2412; RV32I-NEXT:    sb s0, 9(a2)2413; RV32I-NEXT:    sb s7, 10(a2)2414; RV32I-NEXT:    sb s6, 11(a2)2415; RV32I-NEXT:    sb a3, 12(a2)2416; RV32I-NEXT:    sb t5, 13(a2)2417; RV32I-NEXT:    sb s9, 14(a2)2418; RV32I-NEXT:    sb s8, 15(a2)2419; RV32I-NEXT:    sb a1, 0(a2)2420; RV32I-NEXT:    sb t4, 1(a2)2421; RV32I-NEXT:    sb s11, 2(a2)2422; RV32I-NEXT:    sb s10, 3(a2)2423; RV32I-NEXT:    sb a0, 4(a2)2424; RV32I-NEXT:    sb t0, 5(a2)2425; RV32I-NEXT:    sb a6, 6(a2)2426; RV32I-NEXT:    sb a7, 7(a2)2427; RV32I-NEXT:    lw ra, 124(sp) # 4-byte Folded Reload2428; RV32I-NEXT:    lw s0, 120(sp) # 4-byte Folded Reload2429; RV32I-NEXT:    lw s1, 116(sp) # 4-byte Folded Reload2430; RV32I-NEXT:    lw s2, 112(sp) # 4-byte Folded Reload2431; RV32I-NEXT:    lw s3, 108(sp) # 4-byte Folded Reload2432; RV32I-NEXT:    lw s4, 104(sp) # 4-byte Folded Reload2433; RV32I-NEXT:    lw s5, 100(sp) # 4-byte Folded Reload2434; RV32I-NEXT:    lw s6, 96(sp) # 4-byte Folded Reload2435; RV32I-NEXT:    lw s7, 92(sp) # 4-byte Folded Reload2436; RV32I-NEXT:    lw s8, 88(sp) # 4-byte Folded Reload2437; RV32I-NEXT:    lw s9, 84(sp) # 4-byte Folded Reload2438; RV32I-NEXT:    lw s10, 80(sp) # 4-byte Folded Reload2439; RV32I-NEXT:    lw s11, 76(sp) # 4-byte Folded Reload2440; RV32I-NEXT:    addi sp, sp, 1282441; RV32I-NEXT:    ret2442  %src = load i256, ptr %src.ptr, align 12443  %byteOff = load i256, ptr %byteOff.ptr, align 12444  %bitOff = shl i256 %byteOff, 32445  %res = lshr i256 %src, %bitOff2446  store i256 %res, ptr %dst, align 12447  ret void2448}2449 2450define void @lshr_32bytes_wordOff(ptr %src.ptr, ptr %wordOff.ptr, ptr %dst) nounwind {2451; RV64I-LABEL: lshr_32bytes_wordOff:2452; RV64I:       # %bb.0:2453; RV64I-NEXT:    addi sp, sp, -1602454; RV64I-NEXT:    sd s0, 152(sp) # 8-byte Folded Spill2455; RV64I-NEXT:    sd s1, 144(sp) # 8-byte Folded Spill2456; RV64I-NEXT:    sd s2, 136(sp) # 8-byte Folded Spill2457; RV64I-NEXT:    sd s3, 128(sp) # 8-byte Folded Spill2458; RV64I-NEXT:    sd s4, 120(sp) # 8-byte Folded Spill2459; RV64I-NEXT:    sd s5, 112(sp) # 8-byte Folded Spill2460; RV64I-NEXT:    sd s6, 104(sp) # 8-byte Folded Spill2461; RV64I-NEXT:    sd s7, 96(sp) # 8-byte Folded Spill2462; RV64I-NEXT:    sd s8, 88(sp) # 8-byte Folded Spill2463; RV64I-NEXT:    sd s9, 80(sp) # 8-byte Folded Spill2464; RV64I-NEXT:    sd s10, 72(sp) # 8-byte Folded Spill2465; RV64I-NEXT:    sd s11, 64(sp) # 8-byte Folded Spill2466; RV64I-NEXT:    lbu a3, 0(a0)2467; RV64I-NEXT:    lbu a4, 1(a0)2468; RV64I-NEXT:    lbu a5, 2(a0)2469; RV64I-NEXT:    lbu a6, 3(a0)2470; RV64I-NEXT:    lbu a7, 4(a0)2471; RV64I-NEXT:    lbu t0, 5(a0)2472; RV64I-NEXT:    lbu t1, 6(a0)2473; RV64I-NEXT:    lbu t2, 7(a0)2474; RV64I-NEXT:    lbu t3, 8(a0)2475; RV64I-NEXT:    lbu t4, 9(a0)2476; RV64I-NEXT:    lbu t5, 10(a0)2477; RV64I-NEXT:    lbu t6, 11(a0)2478; RV64I-NEXT:    lbu s0, 12(a0)2479; RV64I-NEXT:    lbu s1, 13(a0)2480; RV64I-NEXT:    lbu s2, 14(a0)2481; RV64I-NEXT:    lbu s3, 15(a0)2482; RV64I-NEXT:    lbu s4, 16(a0)2483; RV64I-NEXT:    lbu s5, 17(a0)2484; RV64I-NEXT:    lbu s6, 18(a0)2485; RV64I-NEXT:    lbu s7, 19(a0)2486; RV64I-NEXT:    slli a4, a4, 82487; RV64I-NEXT:    slli a5, a5, 162488; RV64I-NEXT:    slli a6, a6, 242489; RV64I-NEXT:    slli t0, t0, 82490; RV64I-NEXT:    slli t1, t1, 162491; RV64I-NEXT:    slli t2, t2, 242492; RV64I-NEXT:    or a3, a4, a32493; RV64I-NEXT:    or a4, a6, a52494; RV64I-NEXT:    or a5, t0, a72495; RV64I-NEXT:    or a6, t2, t12496; RV64I-NEXT:    lbu s8, 20(a0)2497; RV64I-NEXT:    lbu s9, 21(a0)2498; RV64I-NEXT:    lbu s10, 22(a0)2499; RV64I-NEXT:    lbu s11, 23(a0)2500; RV64I-NEXT:    slli t4, t4, 82501; RV64I-NEXT:    slli t5, t5, 162502; RV64I-NEXT:    slli t6, t6, 242503; RV64I-NEXT:    slli s1, s1, 82504; RV64I-NEXT:    slli s2, s2, 162505; RV64I-NEXT:    slli s3, s3, 242506; RV64I-NEXT:    or a7, t4, t32507; RV64I-NEXT:    or t0, t6, t52508; RV64I-NEXT:    or t1, s1, s02509; RV64I-NEXT:    or t2, s3, s22510; RV64I-NEXT:    lbu t6, 24(a0)2511; RV64I-NEXT:    lbu s0, 25(a0)2512; RV64I-NEXT:    lbu s1, 26(a0)2513; RV64I-NEXT:    lbu s2, 27(a0)2514; RV64I-NEXT:    slli s5, s5, 82515; RV64I-NEXT:    slli s6, s6, 162516; RV64I-NEXT:    slli s7, s7, 242517; RV64I-NEXT:    slli s9, s9, 82518; RV64I-NEXT:    or t3, s5, s42519; RV64I-NEXT:    or t4, s7, s62520; RV64I-NEXT:    or t5, s9, s82521; RV64I-NEXT:    lbu s3, 28(a0)2522; RV64I-NEXT:    lbu s4, 29(a0)2523; RV64I-NEXT:    lbu s5, 30(a0)2524; RV64I-NEXT:    lbu s6, 31(a0)2525; RV64I-NEXT:    slli s10, s10, 162526; RV64I-NEXT:    slli s11, s11, 242527; RV64I-NEXT:    slli s0, s0, 82528; RV64I-NEXT:    slli s1, s1, 162529; RV64I-NEXT:    slli s2, s2, 242530; RV64I-NEXT:    slli s4, s4, 82531; RV64I-NEXT:    or a0, s11, s102532; RV64I-NEXT:    or t6, s0, t62533; RV64I-NEXT:    or s0, s2, s12534; RV64I-NEXT:    or s1, s4, s32535; RV64I-NEXT:    lbu s2, 0(a1)2536; RV64I-NEXT:    lbu s3, 1(a1)2537; RV64I-NEXT:    lbu s4, 2(a1)2538; RV64I-NEXT:    lbu s7, 3(a1)2539; RV64I-NEXT:    slli s5, s5, 162540; RV64I-NEXT:    slli s6, s6, 242541; RV64I-NEXT:    slli s3, s3, 82542; RV64I-NEXT:    slli s4, s4, 162543; RV64I-NEXT:    slli s7, s7, 242544; RV64I-NEXT:    or s5, s6, s52545; RV64I-NEXT:    or s2, s3, s22546; RV64I-NEXT:    or s3, s7, s42547; RV64I-NEXT:    lbu s4, 5(a1)2548; RV64I-NEXT:    lbu s6, 4(a1)2549; RV64I-NEXT:    lbu s7, 6(a1)2550; RV64I-NEXT:    lbu a1, 7(a1)2551; RV64I-NEXT:    slli s4, s4, 82552; RV64I-NEXT:    or s4, s4, s62553; RV64I-NEXT:    sd zero, 32(sp)2554; RV64I-NEXT:    sd zero, 40(sp)2555; RV64I-NEXT:    sd zero, 48(sp)2556; RV64I-NEXT:    sd zero, 56(sp)2557; RV64I-NEXT:    slli s7, s7, 162558; RV64I-NEXT:    slli a1, a1, 242559; RV64I-NEXT:    or a1, a1, s72560; RV64I-NEXT:    mv s6, sp2561; RV64I-NEXT:    or a3, a4, a32562; RV64I-NEXT:    or a4, a6, a52563; RV64I-NEXT:    or a5, t0, a72564; RV64I-NEXT:    or a6, t2, t12565; RV64I-NEXT:    or a7, t4, t32566; RV64I-NEXT:    or a0, a0, t52567; RV64I-NEXT:    or t0, s0, t62568; RV64I-NEXT:    or t1, s5, s12569; RV64I-NEXT:    or t2, s3, s22570; RV64I-NEXT:    or a1, a1, s42571; RV64I-NEXT:    slli a4, a4, 322572; RV64I-NEXT:    slli a6, a6, 322573; RV64I-NEXT:    slli a0, a0, 322574; RV64I-NEXT:    slli t1, t1, 322575; RV64I-NEXT:    slli a1, a1, 322576; RV64I-NEXT:    or a3, a4, a32577; RV64I-NEXT:    or a4, a6, a52578; RV64I-NEXT:    or a0, a0, a72579; RV64I-NEXT:    or a5, t1, t02580; RV64I-NEXT:    or a1, a1, t22581; RV64I-NEXT:    sd a3, 0(sp)2582; RV64I-NEXT:    sd a4, 8(sp)2583; RV64I-NEXT:    sd a0, 16(sp)2584; RV64I-NEXT:    sd a5, 24(sp)2585; RV64I-NEXT:    slli a3, a1, 52586; RV64I-NEXT:    slli a1, a1, 22587; RV64I-NEXT:    andi a1, a1, 242588; RV64I-NEXT:    andi a0, a3, 322589; RV64I-NEXT:    add a1, s6, a12590; RV64I-NEXT:    xori a4, a0, 632591; RV64I-NEXT:    ld a5, 8(a1)2592; RV64I-NEXT:    ld a6, 16(a1)2593; RV64I-NEXT:    ld a7, 0(a1)2594; RV64I-NEXT:    ld t0, 24(a1)2595; RV64I-NEXT:    srl a0, a5, a32596; RV64I-NEXT:    slli t1, a6, 12597; RV64I-NEXT:    srl a1, a7, a32598; RV64I-NEXT:    slli a5, a5, 12599; RV64I-NEXT:    srl a6, a6, a32600; RV64I-NEXT:    slli a7, t0, 12601; RV64I-NEXT:    srl a3, t0, a32602; RV64I-NEXT:    sll t0, t1, a42603; RV64I-NEXT:    sll a5, a5, a42604; RV64I-NEXT:    sll a4, a7, a42605; RV64I-NEXT:    srli a7, a6, 242606; RV64I-NEXT:    srli t1, a6, 162607; RV64I-NEXT:    srli t2, a6, 82608; RV64I-NEXT:    srli t3, a3, 562609; RV64I-NEXT:    srli t4, a3, 482610; RV64I-NEXT:    srli t5, a3, 402611; RV64I-NEXT:    srli t6, a3, 322612; RV64I-NEXT:    srli s0, a3, 242613; RV64I-NEXT:    srli s1, a3, 162614; RV64I-NEXT:    srli s2, a3, 82615; RV64I-NEXT:    srli s3, a1, 242616; RV64I-NEXT:    srli s4, a1, 162617; RV64I-NEXT:    srli s5, a1, 82618; RV64I-NEXT:    srli s6, a0, 242619; RV64I-NEXT:    or a4, a6, a42620; RV64I-NEXT:    sb a6, 16(a2)2621; RV64I-NEXT:    sb t2, 17(a2)2622; RV64I-NEXT:    sb t1, 18(a2)2623; RV64I-NEXT:    sb a7, 19(a2)2624; RV64I-NEXT:    srli a6, a0, 162625; RV64I-NEXT:    sb t6, 28(a2)2626; RV64I-NEXT:    sb t5, 29(a2)2627; RV64I-NEXT:    sb t4, 30(a2)2628; RV64I-NEXT:    sb t3, 31(a2)2629; RV64I-NEXT:    srli a7, a0, 82630; RV64I-NEXT:    or t0, a0, t02631; RV64I-NEXT:    or a5, a1, a52632; RV64I-NEXT:    sb a3, 24(a2)2633; RV64I-NEXT:    sb s2, 25(a2)2634; RV64I-NEXT:    sb s1, 26(a2)2635; RV64I-NEXT:    sb s0, 27(a2)2636; RV64I-NEXT:    sb a1, 0(a2)2637; RV64I-NEXT:    sb s5, 1(a2)2638; RV64I-NEXT:    sb s4, 2(a2)2639; RV64I-NEXT:    sb s3, 3(a2)2640; RV64I-NEXT:    sb a0, 8(a2)2641; RV64I-NEXT:    sb a7, 9(a2)2642; RV64I-NEXT:    sb a6, 10(a2)2643; RV64I-NEXT:    sb s6, 11(a2)2644; RV64I-NEXT:    srli a0, a4, 562645; RV64I-NEXT:    srli a1, a4, 482646; RV64I-NEXT:    srli a3, a4, 402647; RV64I-NEXT:    srli a4, a4, 322648; RV64I-NEXT:    srli a6, a5, 562649; RV64I-NEXT:    srli a7, a5, 482650; RV64I-NEXT:    srli t1, a5, 402651; RV64I-NEXT:    srli a5, a5, 322652; RV64I-NEXT:    srli t2, t0, 562653; RV64I-NEXT:    srli t3, t0, 482654; RV64I-NEXT:    srli t4, t0, 402655; RV64I-NEXT:    srli t0, t0, 322656; RV64I-NEXT:    sb a4, 20(a2)2657; RV64I-NEXT:    sb a3, 21(a2)2658; RV64I-NEXT:    sb a1, 22(a2)2659; RV64I-NEXT:    sb a0, 23(a2)2660; RV64I-NEXT:    sb a5, 4(a2)2661; RV64I-NEXT:    sb t1, 5(a2)2662; RV64I-NEXT:    sb a7, 6(a2)2663; RV64I-NEXT:    sb a6, 7(a2)2664; RV64I-NEXT:    sb t0, 12(a2)2665; RV64I-NEXT:    sb t4, 13(a2)2666; RV64I-NEXT:    sb t3, 14(a2)2667; RV64I-NEXT:    sb t2, 15(a2)2668; RV64I-NEXT:    ld s0, 152(sp) # 8-byte Folded Reload2669; RV64I-NEXT:    ld s1, 144(sp) # 8-byte Folded Reload2670; RV64I-NEXT:    ld s2, 136(sp) # 8-byte Folded Reload2671; RV64I-NEXT:    ld s3, 128(sp) # 8-byte Folded Reload2672; RV64I-NEXT:    ld s4, 120(sp) # 8-byte Folded Reload2673; RV64I-NEXT:    ld s5, 112(sp) # 8-byte Folded Reload2674; RV64I-NEXT:    ld s6, 104(sp) # 8-byte Folded Reload2675; RV64I-NEXT:    ld s7, 96(sp) # 8-byte Folded Reload2676; RV64I-NEXT:    ld s8, 88(sp) # 8-byte Folded Reload2677; RV64I-NEXT:    ld s9, 80(sp) # 8-byte Folded Reload2678; RV64I-NEXT:    ld s10, 72(sp) # 8-byte Folded Reload2679; RV64I-NEXT:    ld s11, 64(sp) # 8-byte Folded Reload2680; RV64I-NEXT:    addi sp, sp, 1602681; RV64I-NEXT:    ret2682;2683; RV32I-LABEL: lshr_32bytes_wordOff:2684; RV32I:       # %bb.0:2685; RV32I-NEXT:    addi sp, sp, -1282686; RV32I-NEXT:    sw ra, 124(sp) # 4-byte Folded Spill2687; RV32I-NEXT:    sw s0, 120(sp) # 4-byte Folded Spill2688; RV32I-NEXT:    sw s1, 116(sp) # 4-byte Folded Spill2689; RV32I-NEXT:    sw s2, 112(sp) # 4-byte Folded Spill2690; RV32I-NEXT:    sw s3, 108(sp) # 4-byte Folded Spill2691; RV32I-NEXT:    sw s4, 104(sp) # 4-byte Folded Spill2692; RV32I-NEXT:    sw s5, 100(sp) # 4-byte Folded Spill2693; RV32I-NEXT:    sw s6, 96(sp) # 4-byte Folded Spill2694; RV32I-NEXT:    sw s7, 92(sp) # 4-byte Folded Spill2695; RV32I-NEXT:    sw s8, 88(sp) # 4-byte Folded Spill2696; RV32I-NEXT:    sw s9, 84(sp) # 4-byte Folded Spill2697; RV32I-NEXT:    sw s10, 80(sp) # 4-byte Folded Spill2698; RV32I-NEXT:    sw s11, 76(sp) # 4-byte Folded Spill2699; RV32I-NEXT:    lbu a7, 0(a0)2700; RV32I-NEXT:    lbu t0, 1(a0)2701; RV32I-NEXT:    lbu t1, 2(a0)2702; RV32I-NEXT:    lbu s1, 3(a0)2703; RV32I-NEXT:    lbu s7, 4(a0)2704; RV32I-NEXT:    lbu s8, 5(a0)2705; RV32I-NEXT:    lbu s4, 6(a0)2706; RV32I-NEXT:    lbu s6, 7(a0)2707; RV32I-NEXT:    lbu s5, 8(a0)2708; RV32I-NEXT:    lbu s10, 9(a0)2709; RV32I-NEXT:    lbu s11, 10(a0)2710; RV32I-NEXT:    lbu ra, 11(a0)2711; RV32I-NEXT:    lbu t4, 12(a0)2712; RV32I-NEXT:    lbu t6, 13(a0)2713; RV32I-NEXT:    lbu a5, 14(a0)2714; RV32I-NEXT:    lbu a6, 15(a0)2715; RV32I-NEXT:    lbu a3, 16(a0)2716; RV32I-NEXT:    lbu t2, 17(a0)2717; RV32I-NEXT:    lbu t3, 18(a0)2718; RV32I-NEXT:    lbu t5, 19(a0)2719; RV32I-NEXT:    lbu a4, 20(a0)2720; RV32I-NEXT:    lbu s0, 21(a0)2721; RV32I-NEXT:    lbu s2, 22(a0)2722; RV32I-NEXT:    lbu s3, 23(a0)2723; RV32I-NEXT:    slli t0, t0, 82724; RV32I-NEXT:    slli t1, t1, 162725; RV32I-NEXT:    slli s1, s1, 242726; RV32I-NEXT:    slli s8, s8, 82727; RV32I-NEXT:    or a7, t0, a72728; RV32I-NEXT:    or t0, s1, t12729; RV32I-NEXT:    or t1, s8, s72730; RV32I-NEXT:    lbu s1, 24(a0)2731; RV32I-NEXT:    lbu s7, 25(a0)2732; RV32I-NEXT:    lbu s8, 26(a0)2733; RV32I-NEXT:    lbu s9, 27(a0)2734; RV32I-NEXT:    slli s4, s4, 162735; RV32I-NEXT:    slli s6, s6, 242736; RV32I-NEXT:    slli s10, s10, 82737; RV32I-NEXT:    slli s11, s11, 162738; RV32I-NEXT:    slli ra, ra, 242739; RV32I-NEXT:    or s4, s6, s42740; RV32I-NEXT:    or s5, s10, s52741; RV32I-NEXT:    or s6, ra, s112742; RV32I-NEXT:    lbu s10, 28(a0)2743; RV32I-NEXT:    lbu s11, 29(a0)2744; RV32I-NEXT:    lbu ra, 30(a0)2745; RV32I-NEXT:    lbu a0, 31(a0)2746; RV32I-NEXT:    lbu a1, 0(a1)2747; RV32I-NEXT:    sw zero, 56(sp)2748; RV32I-NEXT:    sw zero, 60(sp)2749; RV32I-NEXT:    sw zero, 64(sp)2750; RV32I-NEXT:    sw zero, 68(sp)2751; RV32I-NEXT:    sw zero, 40(sp)2752; RV32I-NEXT:    sw zero, 44(sp)2753; RV32I-NEXT:    sw zero, 48(sp)2754; RV32I-NEXT:    sw zero, 52(sp)2755; RV32I-NEXT:    slli t6, t6, 82756; RV32I-NEXT:    or t4, t6, t42757; RV32I-NEXT:    addi t6, sp, 82758; RV32I-NEXT:    slli a5, a5, 162759; RV32I-NEXT:    slli a6, a6, 242760; RV32I-NEXT:    slli t2, t2, 82761; RV32I-NEXT:    slli t3, t3, 162762; RV32I-NEXT:    slli t5, t5, 242763; RV32I-NEXT:    slli s0, s0, 82764; RV32I-NEXT:    slli s2, s2, 162765; RV32I-NEXT:    slli s3, s3, 242766; RV32I-NEXT:    slli s7, s7, 82767; RV32I-NEXT:    slli s8, s8, 162768; RV32I-NEXT:    slli s9, s9, 242769; RV32I-NEXT:    slli s11, s11, 82770; RV32I-NEXT:    slli ra, ra, 162771; RV32I-NEXT:    slli a0, a0, 242772; RV32I-NEXT:    slli a1, a1, 22773; RV32I-NEXT:    or a5, a6, a52774; RV32I-NEXT:    or a3, t2, a32775; RV32I-NEXT:    or a6, t5, t32776; RV32I-NEXT:    or a4, s0, a42777; RV32I-NEXT:    or t2, s3, s22778; RV32I-NEXT:    or t3, s7, s12779; RV32I-NEXT:    or t5, s9, s82780; RV32I-NEXT:    or s0, s11, s102781; RV32I-NEXT:    or a0, a0, ra2782; RV32I-NEXT:    andi a1, a1, 282783; RV32I-NEXT:    or a7, t0, a72784; RV32I-NEXT:    or t0, s4, t12785; RV32I-NEXT:    or t1, s6, s52786; RV32I-NEXT:    or a5, a5, t42787; RV32I-NEXT:    or a3, a6, a32788; RV32I-NEXT:    or a4, t2, a42789; RV32I-NEXT:    or a6, t5, t32790; RV32I-NEXT:    or a0, a0, s02791; RV32I-NEXT:    add t6, t6, a12792; RV32I-NEXT:    sw a3, 24(sp)2793; RV32I-NEXT:    sw a4, 28(sp)2794; RV32I-NEXT:    sw a6, 32(sp)2795; RV32I-NEXT:    sw a0, 36(sp)2796; RV32I-NEXT:    sw a7, 8(sp)2797; RV32I-NEXT:    sw t0, 12(sp)2798; RV32I-NEXT:    sw t1, 16(sp)2799; RV32I-NEXT:    sw a5, 20(sp)2800; RV32I-NEXT:    lw a1, 0(t6)2801; RV32I-NEXT:    lw a0, 4(t6)2802; RV32I-NEXT:    lw a4, 8(t6)2803; RV32I-NEXT:    lw a3, 12(t6)2804; RV32I-NEXT:    lw a7, 24(t6)2805; RV32I-NEXT:    lw a5, 20(t6)2806; RV32I-NEXT:    lw a6, 16(t6)2807; RV32I-NEXT:    lw t0, 28(t6)2808; RV32I-NEXT:    srli t1, a7, 242809; RV32I-NEXT:    srli t2, a7, 162810; RV32I-NEXT:    srli t3, a7, 82811; RV32I-NEXT:    srli t4, t0, 242812; RV32I-NEXT:    srli t5, t0, 162813; RV32I-NEXT:    srli t6, t0, 82814; RV32I-NEXT:    srli s0, a6, 242815; RV32I-NEXT:    srli s1, a6, 162816; RV32I-NEXT:    srli s2, a6, 82817; RV32I-NEXT:    srli s3, a5, 242818; RV32I-NEXT:    srli s4, a5, 162819; RV32I-NEXT:    srli s5, a5, 82820; RV32I-NEXT:    srli s6, a4, 242821; RV32I-NEXT:    srli s7, a4, 162822; RV32I-NEXT:    srli s8, a4, 82823; RV32I-NEXT:    srli s9, a3, 242824; RV32I-NEXT:    srli s10, a3, 162825; RV32I-NEXT:    srli s11, a3, 82826; RV32I-NEXT:    srli ra, a1, 242827; RV32I-NEXT:    sb a7, 24(a2)2828; RV32I-NEXT:    sb t3, 25(a2)2829; RV32I-NEXT:    sb t2, 26(a2)2830; RV32I-NEXT:    sb t1, 27(a2)2831; RV32I-NEXT:    srli a7, a1, 162832; RV32I-NEXT:    sb t0, 28(a2)2833; RV32I-NEXT:    sb t6, 29(a2)2834; RV32I-NEXT:    sb t5, 30(a2)2835; RV32I-NEXT:    sb t4, 31(a2)2836; RV32I-NEXT:    srli t0, a1, 82837; RV32I-NEXT:    sb a6, 16(a2)2838; RV32I-NEXT:    sb s2, 17(a2)2839; RV32I-NEXT:    sb s1, 18(a2)2840; RV32I-NEXT:    sb s0, 19(a2)2841; RV32I-NEXT:    srli a6, a0, 242842; RV32I-NEXT:    sb a5, 20(a2)2843; RV32I-NEXT:    sb s5, 21(a2)2844; RV32I-NEXT:    sb s4, 22(a2)2845; RV32I-NEXT:    sb s3, 23(a2)2846; RV32I-NEXT:    srli a5, a0, 162847; RV32I-NEXT:    sb a4, 8(a2)2848; RV32I-NEXT:    sb s8, 9(a2)2849; RV32I-NEXT:    sb s7, 10(a2)2850; RV32I-NEXT:    sb s6, 11(a2)2851; RV32I-NEXT:    srli a4, a0, 82852; RV32I-NEXT:    sb a3, 12(a2)2853; RV32I-NEXT:    sb s11, 13(a2)2854; RV32I-NEXT:    sb s10, 14(a2)2855; RV32I-NEXT:    sb s9, 15(a2)2856; RV32I-NEXT:    sb a1, 0(a2)2857; RV32I-NEXT:    sb t0, 1(a2)2858; RV32I-NEXT:    sb a7, 2(a2)2859; RV32I-NEXT:    sb ra, 3(a2)2860; RV32I-NEXT:    sb a0, 4(a2)2861; RV32I-NEXT:    sb a4, 5(a2)2862; RV32I-NEXT:    sb a5, 6(a2)2863; RV32I-NEXT:    sb a6, 7(a2)2864; RV32I-NEXT:    lw ra, 124(sp) # 4-byte Folded Reload2865; RV32I-NEXT:    lw s0, 120(sp) # 4-byte Folded Reload2866; RV32I-NEXT:    lw s1, 116(sp) # 4-byte Folded Reload2867; RV32I-NEXT:    lw s2, 112(sp) # 4-byte Folded Reload2868; RV32I-NEXT:    lw s3, 108(sp) # 4-byte Folded Reload2869; RV32I-NEXT:    lw s4, 104(sp) # 4-byte Folded Reload2870; RV32I-NEXT:    lw s5, 100(sp) # 4-byte Folded Reload2871; RV32I-NEXT:    lw s6, 96(sp) # 4-byte Folded Reload2872; RV32I-NEXT:    lw s7, 92(sp) # 4-byte Folded Reload2873; RV32I-NEXT:    lw s8, 88(sp) # 4-byte Folded Reload2874; RV32I-NEXT:    lw s9, 84(sp) # 4-byte Folded Reload2875; RV32I-NEXT:    lw s10, 80(sp) # 4-byte Folded Reload2876; RV32I-NEXT:    lw s11, 76(sp) # 4-byte Folded Reload2877; RV32I-NEXT:    addi sp, sp, 1282878; RV32I-NEXT:    ret2879  %src = load i256, ptr %src.ptr, align 12880  %wordOff = load i256, ptr %wordOff.ptr, align 12881  %bitOff = shl i256 %wordOff, 52882  %res = lshr i256 %src, %bitOff2883  store i256 %res, ptr %dst, align 12884  ret void2885}2886 2887define void @lshr_32bytes_dwordOff(ptr %src.ptr, ptr %dwordOff.ptr, ptr %dst) nounwind {2888; RV64I-LABEL: lshr_32bytes_dwordOff:2889; RV64I:       # %bb.0:2890; RV64I-NEXT:    addi sp, sp, -1602891; RV64I-NEXT:    sd s0, 152(sp) # 8-byte Folded Spill2892; RV64I-NEXT:    sd s1, 144(sp) # 8-byte Folded Spill2893; RV64I-NEXT:    sd s2, 136(sp) # 8-byte Folded Spill2894; RV64I-NEXT:    sd s3, 128(sp) # 8-byte Folded Spill2895; RV64I-NEXT:    sd s4, 120(sp) # 8-byte Folded Spill2896; RV64I-NEXT:    sd s5, 112(sp) # 8-byte Folded Spill2897; RV64I-NEXT:    sd s6, 104(sp) # 8-byte Folded Spill2898; RV64I-NEXT:    sd s7, 96(sp) # 8-byte Folded Spill2899; RV64I-NEXT:    sd s8, 88(sp) # 8-byte Folded Spill2900; RV64I-NEXT:    sd s9, 80(sp) # 8-byte Folded Spill2901; RV64I-NEXT:    sd s10, 72(sp) # 8-byte Folded Spill2902; RV64I-NEXT:    sd s11, 64(sp) # 8-byte Folded Spill2903; RV64I-NEXT:    lbu a5, 0(a0)2904; RV64I-NEXT:    lbu a7, 1(a0)2905; RV64I-NEXT:    lbu t2, 2(a0)2906; RV64I-NEXT:    lbu s3, 3(a0)2907; RV64I-NEXT:    lbu t0, 4(a0)2908; RV64I-NEXT:    lbu s8, 5(a0)2909; RV64I-NEXT:    lbu s9, 6(a0)2910; RV64I-NEXT:    lbu s10, 7(a0)2911; RV64I-NEXT:    lbu s2, 8(a0)2912; RV64I-NEXT:    lbu s4, 9(a0)2913; RV64I-NEXT:    lbu s5, 10(a0)2914; RV64I-NEXT:    lbu s6, 11(a0)2915; RV64I-NEXT:    lbu s7, 12(a0)2916; RV64I-NEXT:    lbu s11, 13(a0)2917; RV64I-NEXT:    lbu t1, 14(a0)2918; RV64I-NEXT:    lbu t3, 15(a0)2919; RV64I-NEXT:    lbu a3, 16(a0)2920; RV64I-NEXT:    lbu a6, 17(a0)2921; RV64I-NEXT:    lbu t4, 18(a0)2922; RV64I-NEXT:    lbu t5, 19(a0)2923; RV64I-NEXT:    lbu a4, 20(a0)2924; RV64I-NEXT:    lbu t6, 21(a0)2925; RV64I-NEXT:    lbu s0, 22(a0)2926; RV64I-NEXT:    lbu s1, 23(a0)2927; RV64I-NEXT:    slli a7, a7, 82928; RV64I-NEXT:    slli t2, t2, 162929; RV64I-NEXT:    slli s3, s3, 242930; RV64I-NEXT:    slli s8, s8, 82931; RV64I-NEXT:    slli s9, s9, 162932; RV64I-NEXT:    slli s10, s10, 242933; RV64I-NEXT:    or a5, a7, a52934; RV64I-NEXT:    or a7, s3, t22935; RV64I-NEXT:    or t0, s8, t02936; RV64I-NEXT:    or t2, s10, s92937; RV64I-NEXT:    lbu s3, 24(a0)2938; RV64I-NEXT:    lbu s8, 25(a0)2939; RV64I-NEXT:    lbu s9, 26(a0)2940; RV64I-NEXT:    lbu s10, 27(a0)2941; RV64I-NEXT:    slli s4, s4, 82942; RV64I-NEXT:    slli s5, s5, 162943; RV64I-NEXT:    slli s6, s6, 242944; RV64I-NEXT:    slli s11, s11, 82945; RV64I-NEXT:    or s2, s4, s22946; RV64I-NEXT:    or s4, s6, s52947; RV64I-NEXT:    or s5, s11, s72948; RV64I-NEXT:    lbu s6, 28(a0)2949; RV64I-NEXT:    lbu s7, 29(a0)2950; RV64I-NEXT:    lbu s11, 30(a0)2951; RV64I-NEXT:    lbu a0, 31(a0)2952; RV64I-NEXT:    lbu a1, 0(a1)2953; RV64I-NEXT:    sd zero, 32(sp)2954; RV64I-NEXT:    sd zero, 40(sp)2955; RV64I-NEXT:    sd zero, 48(sp)2956; RV64I-NEXT:    sd zero, 56(sp)2957; RV64I-NEXT:    slli t1, t1, 162958; RV64I-NEXT:    slli t3, t3, 242959; RV64I-NEXT:    or t1, t3, t12960; RV64I-NEXT:    mv t3, sp2961; RV64I-NEXT:    slli a6, a6, 82962; RV64I-NEXT:    slli t4, t4, 162963; RV64I-NEXT:    slli t5, t5, 242964; RV64I-NEXT:    slli t6, t6, 82965; RV64I-NEXT:    slli s0, s0, 162966; RV64I-NEXT:    slli s1, s1, 242967; RV64I-NEXT:    slli s8, s8, 82968; RV64I-NEXT:    slli s9, s9, 162969; RV64I-NEXT:    slli s10, s10, 242970; RV64I-NEXT:    slli s7, s7, 82971; RV64I-NEXT:    slli s11, s11, 162972; RV64I-NEXT:    slli a0, a0, 242973; RV64I-NEXT:    slli a1, a1, 32974; RV64I-NEXT:    or a3, a6, a32975; RV64I-NEXT:    or a6, t5, t42976; RV64I-NEXT:    or a4, t6, a42977; RV64I-NEXT:    or s0, s1, s02978; RV64I-NEXT:    or t4, s8, s32979; RV64I-NEXT:    or t5, s10, s92980; RV64I-NEXT:    or t6, s7, s62981; RV64I-NEXT:    or a0, a0, s112982; RV64I-NEXT:    andi a1, a1, 242983; RV64I-NEXT:    or a5, a7, a52984; RV64I-NEXT:    or a7, t2, t02985; RV64I-NEXT:    or t0, s4, s22986; RV64I-NEXT:    or t1, t1, s52987; RV64I-NEXT:    or a3, a6, a32988; RV64I-NEXT:    or a4, s0, a42989; RV64I-NEXT:    or a6, t5, t42990; RV64I-NEXT:    or a0, a0, t62991; RV64I-NEXT:    add t3, t3, a12992; RV64I-NEXT:    slli a7, a7, 322993; RV64I-NEXT:    slli t1, t1, 322994; RV64I-NEXT:    slli a4, a4, 322995; RV64I-NEXT:    slli a0, a0, 322996; RV64I-NEXT:    or a1, a7, a52997; RV64I-NEXT:    or a5, t1, t02998; RV64I-NEXT:    or a3, a4, a32999; RV64I-NEXT:    or a0, a0, a63000; RV64I-NEXT:    sd a1, 0(sp)3001; RV64I-NEXT:    sd a5, 8(sp)3002; RV64I-NEXT:    sd a3, 16(sp)3003; RV64I-NEXT:    sd a0, 24(sp)3004; RV64I-NEXT:    ld a4, 16(t3)3005; RV64I-NEXT:    ld a0, 8(t3)3006; RV64I-NEXT:    ld a1, 0(t3)3007; RV64I-NEXT:    ld a3, 24(t3)3008; RV64I-NEXT:    srli a5, a4, 563009; RV64I-NEXT:    srli a6, a4, 483010; RV64I-NEXT:    srli a7, a4, 403011; RV64I-NEXT:    srli t0, a4, 323012; RV64I-NEXT:    srli t1, a4, 243013; RV64I-NEXT:    srli t2, a4, 163014; RV64I-NEXT:    srli t3, a4, 83015; RV64I-NEXT:    srli t4, a3, 563016; RV64I-NEXT:    srli t5, a3, 483017; RV64I-NEXT:    srli t6, a3, 403018; RV64I-NEXT:    srli s0, a3, 323019; RV64I-NEXT:    srli s1, a3, 243020; RV64I-NEXT:    srli s2, a3, 163021; RV64I-NEXT:    srli s3, a3, 83022; RV64I-NEXT:    srli s4, a1, 563023; RV64I-NEXT:    srli s5, a1, 483024; RV64I-NEXT:    srli s6, a1, 403025; RV64I-NEXT:    srli s7, a1, 323026; RV64I-NEXT:    srli s8, a1, 243027; RV64I-NEXT:    srli s9, a1, 163028; RV64I-NEXT:    srli s10, a1, 83029; RV64I-NEXT:    srli s11, a0, 563030; RV64I-NEXT:    sb t0, 20(a2)3031; RV64I-NEXT:    sb a7, 21(a2)3032; RV64I-NEXT:    sb a6, 22(a2)3033; RV64I-NEXT:    sb a5, 23(a2)3034; RV64I-NEXT:    srli a5, a0, 483035; RV64I-NEXT:    sb a4, 16(a2)3036; RV64I-NEXT:    sb t3, 17(a2)3037; RV64I-NEXT:    sb t2, 18(a2)3038; RV64I-NEXT:    sb t1, 19(a2)3039; RV64I-NEXT:    srli a4, a0, 403040; RV64I-NEXT:    sb s0, 28(a2)3041; RV64I-NEXT:    sb t6, 29(a2)3042; RV64I-NEXT:    sb t5, 30(a2)3043; RV64I-NEXT:    sb t4, 31(a2)3044; RV64I-NEXT:    srli a6, a0, 323045; RV64I-NEXT:    sb a3, 24(a2)3046; RV64I-NEXT:    sb s3, 25(a2)3047; RV64I-NEXT:    sb s2, 26(a2)3048; RV64I-NEXT:    sb s1, 27(a2)3049; RV64I-NEXT:    srli a3, a0, 243050; RV64I-NEXT:    sb s7, 4(a2)3051; RV64I-NEXT:    sb s6, 5(a2)3052; RV64I-NEXT:    sb s5, 6(a2)3053; RV64I-NEXT:    sb s4, 7(a2)3054; RV64I-NEXT:    srli a7, a0, 163055; RV64I-NEXT:    sb a1, 0(a2)3056; RV64I-NEXT:    sb s10, 1(a2)3057; RV64I-NEXT:    sb s9, 2(a2)3058; RV64I-NEXT:    sb s8, 3(a2)3059; RV64I-NEXT:    srli a1, a0, 83060; RV64I-NEXT:    sb a6, 12(a2)3061; RV64I-NEXT:    sb a4, 13(a2)3062; RV64I-NEXT:    sb a5, 14(a2)3063; RV64I-NEXT:    sb s11, 15(a2)3064; RV64I-NEXT:    sb a0, 8(a2)3065; RV64I-NEXT:    sb a1, 9(a2)3066; RV64I-NEXT:    sb a7, 10(a2)3067; RV64I-NEXT:    sb a3, 11(a2)3068; RV64I-NEXT:    ld s0, 152(sp) # 8-byte Folded Reload3069; RV64I-NEXT:    ld s1, 144(sp) # 8-byte Folded Reload3070; RV64I-NEXT:    ld s2, 136(sp) # 8-byte Folded Reload3071; RV64I-NEXT:    ld s3, 128(sp) # 8-byte Folded Reload3072; RV64I-NEXT:    ld s4, 120(sp) # 8-byte Folded Reload3073; RV64I-NEXT:    ld s5, 112(sp) # 8-byte Folded Reload3074; RV64I-NEXT:    ld s6, 104(sp) # 8-byte Folded Reload3075; RV64I-NEXT:    ld s7, 96(sp) # 8-byte Folded Reload3076; RV64I-NEXT:    ld s8, 88(sp) # 8-byte Folded Reload3077; RV64I-NEXT:    ld s9, 80(sp) # 8-byte Folded Reload3078; RV64I-NEXT:    ld s10, 72(sp) # 8-byte Folded Reload3079; RV64I-NEXT:    ld s11, 64(sp) # 8-byte Folded Reload3080; RV64I-NEXT:    addi sp, sp, 1603081; RV64I-NEXT:    ret3082;3083; RV32I-LABEL: lshr_32bytes_dwordOff:3084; RV32I:       # %bb.0:3085; RV32I-NEXT:    addi sp, sp, -1283086; RV32I-NEXT:    sw ra, 124(sp) # 4-byte Folded Spill3087; RV32I-NEXT:    sw s0, 120(sp) # 4-byte Folded Spill3088; RV32I-NEXT:    sw s1, 116(sp) # 4-byte Folded Spill3089; RV32I-NEXT:    sw s2, 112(sp) # 4-byte Folded Spill3090; RV32I-NEXT:    sw s3, 108(sp) # 4-byte Folded Spill3091; RV32I-NEXT:    sw s4, 104(sp) # 4-byte Folded Spill3092; RV32I-NEXT:    sw s5, 100(sp) # 4-byte Folded Spill3093; RV32I-NEXT:    sw s6, 96(sp) # 4-byte Folded Spill3094; RV32I-NEXT:    sw s7, 92(sp) # 4-byte Folded Spill3095; RV32I-NEXT:    sw s8, 88(sp) # 4-byte Folded Spill3096; RV32I-NEXT:    sw s9, 84(sp) # 4-byte Folded Spill3097; RV32I-NEXT:    sw s10, 80(sp) # 4-byte Folded Spill3098; RV32I-NEXT:    sw s11, 76(sp) # 4-byte Folded Spill3099; RV32I-NEXT:    lbu a7, 0(a0)3100; RV32I-NEXT:    lbu t0, 1(a0)3101; RV32I-NEXT:    lbu t1, 2(a0)3102; RV32I-NEXT:    lbu s1, 3(a0)3103; RV32I-NEXT:    lbu s7, 4(a0)3104; RV32I-NEXT:    lbu s8, 5(a0)3105; RV32I-NEXT:    lbu s4, 6(a0)3106; RV32I-NEXT:    lbu s6, 7(a0)3107; RV32I-NEXT:    lbu s5, 8(a0)3108; RV32I-NEXT:    lbu s10, 9(a0)3109; RV32I-NEXT:    lbu s11, 10(a0)3110; RV32I-NEXT:    lbu ra, 11(a0)3111; RV32I-NEXT:    lbu t4, 12(a0)3112; RV32I-NEXT:    lbu t6, 13(a0)3113; RV32I-NEXT:    lbu a5, 14(a0)3114; RV32I-NEXT:    lbu a6, 15(a0)3115; RV32I-NEXT:    lbu a3, 16(a0)3116; RV32I-NEXT:    lbu t2, 17(a0)3117; RV32I-NEXT:    lbu t3, 18(a0)3118; RV32I-NEXT:    lbu t5, 19(a0)3119; RV32I-NEXT:    lbu a4, 20(a0)3120; RV32I-NEXT:    lbu s0, 21(a0)3121; RV32I-NEXT:    lbu s2, 22(a0)3122; RV32I-NEXT:    lbu s3, 23(a0)3123; RV32I-NEXT:    slli t0, t0, 83124; RV32I-NEXT:    slli t1, t1, 163125; RV32I-NEXT:    slli s1, s1, 243126; RV32I-NEXT:    slli s8, s8, 83127; RV32I-NEXT:    or a7, t0, a73128; RV32I-NEXT:    or t0, s1, t13129; RV32I-NEXT:    or t1, s8, s73130; RV32I-NEXT:    lbu s1, 24(a0)3131; RV32I-NEXT:    lbu s7, 25(a0)3132; RV32I-NEXT:    lbu s8, 26(a0)3133; RV32I-NEXT:    lbu s9, 27(a0)3134; RV32I-NEXT:    slli s4, s4, 163135; RV32I-NEXT:    slli s6, s6, 243136; RV32I-NEXT:    slli s10, s10, 83137; RV32I-NEXT:    slli s11, s11, 163138; RV32I-NEXT:    slli ra, ra, 243139; RV32I-NEXT:    or s4, s6, s43140; RV32I-NEXT:    or s5, s10, s53141; RV32I-NEXT:    or s6, ra, s113142; RV32I-NEXT:    lbu s10, 28(a0)3143; RV32I-NEXT:    lbu s11, 29(a0)3144; RV32I-NEXT:    lbu ra, 30(a0)3145; RV32I-NEXT:    lbu a0, 31(a0)3146; RV32I-NEXT:    lbu a1, 0(a1)3147; RV32I-NEXT:    sw zero, 56(sp)3148; RV32I-NEXT:    sw zero, 60(sp)3149; RV32I-NEXT:    sw zero, 64(sp)3150; RV32I-NEXT:    sw zero, 68(sp)3151; RV32I-NEXT:    sw zero, 40(sp)3152; RV32I-NEXT:    sw zero, 44(sp)3153; RV32I-NEXT:    sw zero, 48(sp)3154; RV32I-NEXT:    sw zero, 52(sp)3155; RV32I-NEXT:    slli t6, t6, 83156; RV32I-NEXT:    or t4, t6, t43157; RV32I-NEXT:    addi t6, sp, 83158; RV32I-NEXT:    slli a5, a5, 163159; RV32I-NEXT:    slli a6, a6, 243160; RV32I-NEXT:    slli t2, t2, 83161; RV32I-NEXT:    slli t3, t3, 163162; RV32I-NEXT:    slli t5, t5, 243163; RV32I-NEXT:    slli s0, s0, 83164; RV32I-NEXT:    slli s2, s2, 163165; RV32I-NEXT:    slli s3, s3, 243166; RV32I-NEXT:    slli s7, s7, 83167; RV32I-NEXT:    slli s8, s8, 163168; RV32I-NEXT:    slli s9, s9, 243169; RV32I-NEXT:    slli s11, s11, 83170; RV32I-NEXT:    slli ra, ra, 163171; RV32I-NEXT:    slli a0, a0, 243172; RV32I-NEXT:    slli a1, a1, 33173; RV32I-NEXT:    or a5, a6, a53174; RV32I-NEXT:    or a3, t2, a33175; RV32I-NEXT:    or a6, t5, t33176; RV32I-NEXT:    or a4, s0, a43177; RV32I-NEXT:    or t2, s3, s23178; RV32I-NEXT:    or t3, s7, s13179; RV32I-NEXT:    or t5, s9, s83180; RV32I-NEXT:    or s0, s11, s103181; RV32I-NEXT:    or a0, a0, ra3182; RV32I-NEXT:    andi a1, a1, 243183; RV32I-NEXT:    or a7, t0, a73184; RV32I-NEXT:    or t0, s4, t13185; RV32I-NEXT:    or t1, s6, s53186; RV32I-NEXT:    or a5, a5, t43187; RV32I-NEXT:    or a3, a6, a33188; RV32I-NEXT:    or a4, t2, a43189; RV32I-NEXT:    or a6, t5, t33190; RV32I-NEXT:    or a0, a0, s03191; RV32I-NEXT:    add t6, t6, a13192; RV32I-NEXT:    sw a3, 24(sp)3193; RV32I-NEXT:    sw a4, 28(sp)3194; RV32I-NEXT:    sw a6, 32(sp)3195; RV32I-NEXT:    sw a0, 36(sp)3196; RV32I-NEXT:    sw a7, 8(sp)3197; RV32I-NEXT:    sw t0, 12(sp)3198; RV32I-NEXT:    sw t1, 16(sp)3199; RV32I-NEXT:    sw a5, 20(sp)3200; RV32I-NEXT:    lw a1, 0(t6)3201; RV32I-NEXT:    lw a0, 4(t6)3202; RV32I-NEXT:    lw a4, 8(t6)3203; RV32I-NEXT:    lw a3, 12(t6)3204; RV32I-NEXT:    lw a7, 24(t6)3205; RV32I-NEXT:    lw a5, 20(t6)3206; RV32I-NEXT:    lw a6, 16(t6)3207; RV32I-NEXT:    lw t0, 28(t6)3208; RV32I-NEXT:    srli t1, a7, 243209; RV32I-NEXT:    srli t2, a7, 163210; RV32I-NEXT:    srli t3, a7, 83211; RV32I-NEXT:    srli t4, t0, 243212; RV32I-NEXT:    srli t5, t0, 163213; RV32I-NEXT:    srli t6, t0, 83214; RV32I-NEXT:    srli s0, a6, 243215; RV32I-NEXT:    srli s1, a6, 163216; RV32I-NEXT:    srli s2, a6, 83217; RV32I-NEXT:    srli s3, a5, 243218; RV32I-NEXT:    srli s4, a5, 163219; RV32I-NEXT:    srli s5, a5, 83220; RV32I-NEXT:    srli s6, a4, 243221; RV32I-NEXT:    srli s7, a4, 163222; RV32I-NEXT:    srli s8, a4, 83223; RV32I-NEXT:    srli s9, a3, 243224; RV32I-NEXT:    srli s10, a3, 163225; RV32I-NEXT:    srli s11, a3, 83226; RV32I-NEXT:    srli ra, a1, 243227; RV32I-NEXT:    sb a7, 24(a2)3228; RV32I-NEXT:    sb t3, 25(a2)3229; RV32I-NEXT:    sb t2, 26(a2)3230; RV32I-NEXT:    sb t1, 27(a2)3231; RV32I-NEXT:    srli a7, a1, 163232; RV32I-NEXT:    sb t0, 28(a2)3233; RV32I-NEXT:    sb t6, 29(a2)3234; RV32I-NEXT:    sb t5, 30(a2)3235; RV32I-NEXT:    sb t4, 31(a2)3236; RV32I-NEXT:    srli t0, a1, 83237; RV32I-NEXT:    sb a6, 16(a2)3238; RV32I-NEXT:    sb s2, 17(a2)3239; RV32I-NEXT:    sb s1, 18(a2)3240; RV32I-NEXT:    sb s0, 19(a2)3241; RV32I-NEXT:    srli a6, a0, 243242; RV32I-NEXT:    sb a5, 20(a2)3243; RV32I-NEXT:    sb s5, 21(a2)3244; RV32I-NEXT:    sb s4, 22(a2)3245; RV32I-NEXT:    sb s3, 23(a2)3246; RV32I-NEXT:    srli a5, a0, 163247; RV32I-NEXT:    sb a4, 8(a2)3248; RV32I-NEXT:    sb s8, 9(a2)3249; RV32I-NEXT:    sb s7, 10(a2)3250; RV32I-NEXT:    sb s6, 11(a2)3251; RV32I-NEXT:    srli a4, a0, 83252; RV32I-NEXT:    sb a3, 12(a2)3253; RV32I-NEXT:    sb s11, 13(a2)3254; RV32I-NEXT:    sb s10, 14(a2)3255; RV32I-NEXT:    sb s9, 15(a2)3256; RV32I-NEXT:    sb a1, 0(a2)3257; RV32I-NEXT:    sb t0, 1(a2)3258; RV32I-NEXT:    sb a7, 2(a2)3259; RV32I-NEXT:    sb ra, 3(a2)3260; RV32I-NEXT:    sb a0, 4(a2)3261; RV32I-NEXT:    sb a4, 5(a2)3262; RV32I-NEXT:    sb a5, 6(a2)3263; RV32I-NEXT:    sb a6, 7(a2)3264; RV32I-NEXT:    lw ra, 124(sp) # 4-byte Folded Reload3265; RV32I-NEXT:    lw s0, 120(sp) # 4-byte Folded Reload3266; RV32I-NEXT:    lw s1, 116(sp) # 4-byte Folded Reload3267; RV32I-NEXT:    lw s2, 112(sp) # 4-byte Folded Reload3268; RV32I-NEXT:    lw s3, 108(sp) # 4-byte Folded Reload3269; RV32I-NEXT:    lw s4, 104(sp) # 4-byte Folded Reload3270; RV32I-NEXT:    lw s5, 100(sp) # 4-byte Folded Reload3271; RV32I-NEXT:    lw s6, 96(sp) # 4-byte Folded Reload3272; RV32I-NEXT:    lw s7, 92(sp) # 4-byte Folded Reload3273; RV32I-NEXT:    lw s8, 88(sp) # 4-byte Folded Reload3274; RV32I-NEXT:    lw s9, 84(sp) # 4-byte Folded Reload3275; RV32I-NEXT:    lw s10, 80(sp) # 4-byte Folded Reload3276; RV32I-NEXT:    lw s11, 76(sp) # 4-byte Folded Reload3277; RV32I-NEXT:    addi sp, sp, 1283278; RV32I-NEXT:    ret3279  %src = load i256, ptr %src.ptr, align 13280  %dwordOff = load i256, ptr %dwordOff.ptr, align 13281  %bitOff = shl i256 %dwordOff, 63282  %res = lshr i256 %src, %bitOff3283  store i256 %res, ptr %dst, align 13284  ret void3285}3286 3287define void @shl_32bytes(ptr %src.ptr, ptr %byteOff.ptr, ptr %dst) nounwind {3288; RV64I-LABEL: shl_32bytes:3289; RV64I:       # %bb.0:3290; RV64I-NEXT:    addi sp, sp, -1603291; RV64I-NEXT:    sd s0, 152(sp) # 8-byte Folded Spill3292; RV64I-NEXT:    sd s1, 144(sp) # 8-byte Folded Spill3293; RV64I-NEXT:    sd s2, 136(sp) # 8-byte Folded Spill3294; RV64I-NEXT:    sd s3, 128(sp) # 8-byte Folded Spill3295; RV64I-NEXT:    sd s4, 120(sp) # 8-byte Folded Spill3296; RV64I-NEXT:    sd s5, 112(sp) # 8-byte Folded Spill3297; RV64I-NEXT:    sd s6, 104(sp) # 8-byte Folded Spill3298; RV64I-NEXT:    sd s7, 96(sp) # 8-byte Folded Spill3299; RV64I-NEXT:    sd s8, 88(sp) # 8-byte Folded Spill3300; RV64I-NEXT:    sd s9, 80(sp) # 8-byte Folded Spill3301; RV64I-NEXT:    sd s10, 72(sp) # 8-byte Folded Spill3302; RV64I-NEXT:    sd s11, 64(sp) # 8-byte Folded Spill3303; RV64I-NEXT:    lbu a3, 0(a0)3304; RV64I-NEXT:    lbu a4, 1(a0)3305; RV64I-NEXT:    lbu a5, 2(a0)3306; RV64I-NEXT:    lbu a6, 3(a0)3307; RV64I-NEXT:    lbu a7, 4(a0)3308; RV64I-NEXT:    lbu t0, 5(a0)3309; RV64I-NEXT:    lbu t1, 6(a0)3310; RV64I-NEXT:    lbu t2, 7(a0)3311; RV64I-NEXT:    lbu t3, 8(a0)3312; RV64I-NEXT:    lbu t4, 9(a0)3313; RV64I-NEXT:    lbu t5, 10(a0)3314; RV64I-NEXT:    lbu t6, 11(a0)3315; RV64I-NEXT:    lbu s0, 12(a0)3316; RV64I-NEXT:    lbu s1, 13(a0)3317; RV64I-NEXT:    lbu s2, 14(a0)3318; RV64I-NEXT:    lbu s3, 15(a0)3319; RV64I-NEXT:    lbu s4, 16(a0)3320; RV64I-NEXT:    lbu s5, 17(a0)3321; RV64I-NEXT:    lbu s6, 18(a0)3322; RV64I-NEXT:    lbu s7, 19(a0)3323; RV64I-NEXT:    slli a4, a4, 83324; RV64I-NEXT:    slli a5, a5, 163325; RV64I-NEXT:    slli a6, a6, 243326; RV64I-NEXT:    slli t0, t0, 83327; RV64I-NEXT:    slli t1, t1, 163328; RV64I-NEXT:    slli t2, t2, 243329; RV64I-NEXT:    or a3, a4, a33330; RV64I-NEXT:    or a4, a6, a53331; RV64I-NEXT:    or a5, t0, a73332; RV64I-NEXT:    or a6, t2, t13333; RV64I-NEXT:    lbu s8, 20(a0)3334; RV64I-NEXT:    lbu s9, 21(a0)3335; RV64I-NEXT:    lbu s10, 22(a0)3336; RV64I-NEXT:    lbu s11, 23(a0)3337; RV64I-NEXT:    slli t4, t4, 83338; RV64I-NEXT:    slli t5, t5, 163339; RV64I-NEXT:    slli t6, t6, 243340; RV64I-NEXT:    slli s1, s1, 83341; RV64I-NEXT:    slli s2, s2, 163342; RV64I-NEXT:    slli s3, s3, 243343; RV64I-NEXT:    or a7, t4, t33344; RV64I-NEXT:    or t0, t6, t53345; RV64I-NEXT:    or t1, s1, s03346; RV64I-NEXT:    or t2, s3, s23347; RV64I-NEXT:    lbu t6, 24(a0)3348; RV64I-NEXT:    lbu s0, 25(a0)3349; RV64I-NEXT:    lbu s1, 26(a0)3350; RV64I-NEXT:    lbu s2, 27(a0)3351; RV64I-NEXT:    slli s5, s5, 83352; RV64I-NEXT:    slli s6, s6, 163353; RV64I-NEXT:    slli s7, s7, 243354; RV64I-NEXT:    slli s9, s9, 83355; RV64I-NEXT:    or t3, s5, s43356; RV64I-NEXT:    or t4, s7, s63357; RV64I-NEXT:    or t5, s9, s83358; RV64I-NEXT:    lbu s3, 28(a0)3359; RV64I-NEXT:    lbu s4, 29(a0)3360; RV64I-NEXT:    lbu s5, 30(a0)3361; RV64I-NEXT:    lbu s6, 31(a0)3362; RV64I-NEXT:    slli s10, s10, 163363; RV64I-NEXT:    slli s11, s11, 243364; RV64I-NEXT:    slli s0, s0, 83365; RV64I-NEXT:    slli s1, s1, 163366; RV64I-NEXT:    slli s2, s2, 243367; RV64I-NEXT:    slli s4, s4, 83368; RV64I-NEXT:    or a0, s11, s103369; RV64I-NEXT:    or t6, s0, t63370; RV64I-NEXT:    or s0, s2, s13371; RV64I-NEXT:    or s1, s4, s33372; RV64I-NEXT:    lbu s2, 0(a1)3373; RV64I-NEXT:    lbu s3, 1(a1)3374; RV64I-NEXT:    lbu s4, 2(a1)3375; RV64I-NEXT:    lbu s7, 3(a1)3376; RV64I-NEXT:    slli s5, s5, 163377; RV64I-NEXT:    slli s6, s6, 243378; RV64I-NEXT:    slli s3, s3, 83379; RV64I-NEXT:    slli s4, s4, 163380; RV64I-NEXT:    slli s7, s7, 243381; RV64I-NEXT:    or s5, s6, s53382; RV64I-NEXT:    or s2, s3, s23383; RV64I-NEXT:    or s3, s7, s43384; RV64I-NEXT:    lbu s4, 5(a1)3385; RV64I-NEXT:    lbu s6, 4(a1)3386; RV64I-NEXT:    lbu s7, 6(a1)3387; RV64I-NEXT:    lbu a1, 7(a1)3388; RV64I-NEXT:    slli s4, s4, 83389; RV64I-NEXT:    or s4, s4, s63390; RV64I-NEXT:    sd zero, 0(sp)3391; RV64I-NEXT:    sd zero, 8(sp)3392; RV64I-NEXT:    sd zero, 16(sp)3393; RV64I-NEXT:    sd zero, 24(sp)3394; RV64I-NEXT:    slli s7, s7, 163395; RV64I-NEXT:    slli a1, a1, 243396; RV64I-NEXT:    or a1, a1, s73397; RV64I-NEXT:    addi s6, sp, 323398; RV64I-NEXT:    or a3, a4, a33399; RV64I-NEXT:    or a4, a6, a53400; RV64I-NEXT:    or a5, t0, a73401; RV64I-NEXT:    or a6, t2, t13402; RV64I-NEXT:    or a7, t4, t33403; RV64I-NEXT:    or a0, a0, t53404; RV64I-NEXT:    or t0, s0, t63405; RV64I-NEXT:    or t1, s5, s13406; RV64I-NEXT:    or t2, s3, s23407; RV64I-NEXT:    or a1, a1, s43408; RV64I-NEXT:    slli a4, a4, 323409; RV64I-NEXT:    slli a6, a6, 323410; RV64I-NEXT:    slli a0, a0, 323411; RV64I-NEXT:    slli t1, t1, 323412; RV64I-NEXT:    slli a1, a1, 323413; RV64I-NEXT:    or a3, a4, a33414; RV64I-NEXT:    or a4, a6, a53415; RV64I-NEXT:    or a0, a0, a73416; RV64I-NEXT:    or a5, t1, t03417; RV64I-NEXT:    or a1, a1, t23418; RV64I-NEXT:    sd a3, 32(sp)3419; RV64I-NEXT:    sd a4, 40(sp)3420; RV64I-NEXT:    sd a0, 48(sp)3421; RV64I-NEXT:    sd a5, 56(sp)3422; RV64I-NEXT:    slli a0, a1, 33423; RV64I-NEXT:    andi a1, a1, 243424; RV64I-NEXT:    sub a1, s6, a13425; RV64I-NEXT:    andi a3, a0, 563426; RV64I-NEXT:    ld a4, 0(a1)3427; RV64I-NEXT:    ld a5, 8(a1)3428; RV64I-NEXT:    ld a6, 16(a1)3429; RV64I-NEXT:    ld a1, 24(a1)3430; RV64I-NEXT:    xori a3, a3, 633431; RV64I-NEXT:    sll a7, a5, a03432; RV64I-NEXT:    srli t0, a4, 13433; RV64I-NEXT:    sll t1, a1, a03434; RV64I-NEXT:    srli a1, a6, 13435; RV64I-NEXT:    sll t2, a6, a03436; RV64I-NEXT:    srli a5, a5, 13437; RV64I-NEXT:    sll t3, a4, a03438; RV64I-NEXT:    srl a0, t0, a33439; RV64I-NEXT:    srl a4, a1, a33440; RV64I-NEXT:    srl a5, a5, a33441; RV64I-NEXT:    srli a3, t2, 563442; RV64I-NEXT:    srli a1, t1, 563443; RV64I-NEXT:    srli t0, t3, 563444; RV64I-NEXT:    srli t4, t3, 483445; RV64I-NEXT:    srli t5, t3, 403446; RV64I-NEXT:    srli t6, t3, 323447; RV64I-NEXT:    srli s0, t3, 243448; RV64I-NEXT:    srli s1, t3, 163449; RV64I-NEXT:    srli s2, t3, 83450; RV64I-NEXT:    srli a6, a7, 563451; RV64I-NEXT:    or a0, a7, a03452; RV64I-NEXT:    or a4, t1, a43453; RV64I-NEXT:    or a5, t2, a53454; RV64I-NEXT:    sb t6, 4(a2)3455; RV64I-NEXT:    sb t5, 5(a2)3456; RV64I-NEXT:    sb t4, 6(a2)3457; RV64I-NEXT:    sb t0, 7(a2)3458; RV64I-NEXT:    sb t3, 0(a2)3459; RV64I-NEXT:    sb s2, 1(a2)3460; RV64I-NEXT:    sb s1, 2(a2)3461; RV64I-NEXT:    sb s0, 3(a2)3462; RV64I-NEXT:    srli a7, a5, 483463; RV64I-NEXT:    srli t0, a5, 403464; RV64I-NEXT:    srli t1, a5, 323465; RV64I-NEXT:    srli t2, a5, 243466; RV64I-NEXT:    srli t3, a5, 163467; RV64I-NEXT:    srli t4, a5, 83468; RV64I-NEXT:    srli t5, a4, 483469; RV64I-NEXT:    srli t6, a4, 403470; RV64I-NEXT:    srli s0, a4, 323471; RV64I-NEXT:    srli s1, a4, 243472; RV64I-NEXT:    srli s2, a4, 163473; RV64I-NEXT:    srli s3, a4, 83474; RV64I-NEXT:    srli s4, a0, 483475; RV64I-NEXT:    srli s5, a0, 403476; RV64I-NEXT:    srli s6, a0, 323477; RV64I-NEXT:    sb t1, 20(a2)3478; RV64I-NEXT:    sb t0, 21(a2)3479; RV64I-NEXT:    sb a7, 22(a2)3480; RV64I-NEXT:    sb a3, 23(a2)3481; RV64I-NEXT:    srli a3, a0, 243482; RV64I-NEXT:    sb s0, 28(a2)3483; RV64I-NEXT:    sb t6, 29(a2)3484; RV64I-NEXT:    sb t5, 30(a2)3485; RV64I-NEXT:    sb a1, 31(a2)3486; RV64I-NEXT:    srli a1, a0, 163487; RV64I-NEXT:    sb s6, 12(a2)3488; RV64I-NEXT:    sb s5, 13(a2)3489; RV64I-NEXT:    sb s4, 14(a2)3490; RV64I-NEXT:    sb a6, 15(a2)3491; RV64I-NEXT:    srli a6, a0, 83492; RV64I-NEXT:    sb a5, 16(a2)3493; RV64I-NEXT:    sb t4, 17(a2)3494; RV64I-NEXT:    sb t3, 18(a2)3495; RV64I-NEXT:    sb t2, 19(a2)3496; RV64I-NEXT:    sb a4, 24(a2)3497; RV64I-NEXT:    sb s3, 25(a2)3498; RV64I-NEXT:    sb s2, 26(a2)3499; RV64I-NEXT:    sb s1, 27(a2)3500; RV64I-NEXT:    sb a0, 8(a2)3501; RV64I-NEXT:    sb a6, 9(a2)3502; RV64I-NEXT:    sb a1, 10(a2)3503; RV64I-NEXT:    sb a3, 11(a2)3504; RV64I-NEXT:    ld s0, 152(sp) # 8-byte Folded Reload3505; RV64I-NEXT:    ld s1, 144(sp) # 8-byte Folded Reload3506; RV64I-NEXT:    ld s2, 136(sp) # 8-byte Folded Reload3507; RV64I-NEXT:    ld s3, 128(sp) # 8-byte Folded Reload3508; RV64I-NEXT:    ld s4, 120(sp) # 8-byte Folded Reload3509; RV64I-NEXT:    ld s5, 112(sp) # 8-byte Folded Reload3510; RV64I-NEXT:    ld s6, 104(sp) # 8-byte Folded Reload3511; RV64I-NEXT:    ld s7, 96(sp) # 8-byte Folded Reload3512; RV64I-NEXT:    ld s8, 88(sp) # 8-byte Folded Reload3513; RV64I-NEXT:    ld s9, 80(sp) # 8-byte Folded Reload3514; RV64I-NEXT:    ld s10, 72(sp) # 8-byte Folded Reload3515; RV64I-NEXT:    ld s11, 64(sp) # 8-byte Folded Reload3516; RV64I-NEXT:    addi sp, sp, 1603517; RV64I-NEXT:    ret3518;3519; RV32I-LABEL: shl_32bytes:3520; RV32I:       # %bb.0:3521; RV32I-NEXT:    addi sp, sp, -1283522; RV32I-NEXT:    sw ra, 124(sp) # 4-byte Folded Spill3523; RV32I-NEXT:    sw s0, 120(sp) # 4-byte Folded Spill3524; RV32I-NEXT:    sw s1, 116(sp) # 4-byte Folded Spill3525; RV32I-NEXT:    sw s2, 112(sp) # 4-byte Folded Spill3526; RV32I-NEXT:    sw s3, 108(sp) # 4-byte Folded Spill3527; RV32I-NEXT:    sw s4, 104(sp) # 4-byte Folded Spill3528; RV32I-NEXT:    sw s5, 100(sp) # 4-byte Folded Spill3529; RV32I-NEXT:    sw s6, 96(sp) # 4-byte Folded Spill3530; RV32I-NEXT:    sw s7, 92(sp) # 4-byte Folded Spill3531; RV32I-NEXT:    sw s8, 88(sp) # 4-byte Folded Spill3532; RV32I-NEXT:    sw s9, 84(sp) # 4-byte Folded Spill3533; RV32I-NEXT:    sw s10, 80(sp) # 4-byte Folded Spill3534; RV32I-NEXT:    sw s11, 76(sp) # 4-byte Folded Spill3535; RV32I-NEXT:    lbu s1, 0(a0)3536; RV32I-NEXT:    lbu a4, 1(a0)3537; RV32I-NEXT:    lbu a5, 2(a0)3538; RV32I-NEXT:    lbu a6, 3(a0)3539; RV32I-NEXT:    lbu t1, 4(a0)3540; RV32I-NEXT:    lbu t3, 5(a0)3541; RV32I-NEXT:    lbu t4, 6(a0)3542; RV32I-NEXT:    lbu s0, 7(a0)3543; RV32I-NEXT:    lbu t2, 8(a0)3544; RV32I-NEXT:    lbu s3, 9(a0)3545; RV32I-NEXT:    lbu s6, 10(a0)3546; RV32I-NEXT:    lbu s8, 11(a0)3547; RV32I-NEXT:    lbu s9, 12(a0)3548; RV32I-NEXT:    lbu s10, 13(a0)3549; RV32I-NEXT:    lbu s4, 14(a0)3550; RV32I-NEXT:    lbu s7, 15(a0)3551; RV32I-NEXT:    lbu s5, 16(a0)3552; RV32I-NEXT:    lbu s11, 17(a0)3553; RV32I-NEXT:    lbu ra, 18(a0)3554; RV32I-NEXT:    lbu a3, 19(a0)3555; RV32I-NEXT:    lbu t5, 20(a0)3556; RV32I-NEXT:    lbu t6, 21(a0)3557; RV32I-NEXT:    lbu a7, 22(a0)3558; RV32I-NEXT:    lbu t0, 23(a0)3559; RV32I-NEXT:    slli a4, a4, 83560; RV32I-NEXT:    slli a5, a5, 163561; RV32I-NEXT:    slli a6, a6, 243562; RV32I-NEXT:    slli t3, t3, 83563; RV32I-NEXT:    slli t4, t4, 163564; RV32I-NEXT:    slli s0, s0, 243565; RV32I-NEXT:    or a4, a4, s13566; RV32I-NEXT:    sw a4, 4(sp) # 4-byte Folded Spill3567; RV32I-NEXT:    or a4, a6, a53568; RV32I-NEXT:    or a5, t3, t13569; RV32I-NEXT:    or a6, s0, t43570; RV32I-NEXT:    lbu t1, 24(a0)3571; RV32I-NEXT:    lbu s0, 25(a0)3572; RV32I-NEXT:    lbu s1, 26(a0)3573; RV32I-NEXT:    lbu s2, 27(a0)3574; RV32I-NEXT:    slli s3, s3, 83575; RV32I-NEXT:    slli s6, s6, 163576; RV32I-NEXT:    slli s8, s8, 243577; RV32I-NEXT:    slli s10, s10, 83578; RV32I-NEXT:    or t2, s3, t23579; RV32I-NEXT:    or t3, s8, s63580; RV32I-NEXT:    or t4, s10, s93581; RV32I-NEXT:    lbu s3, 28(a0)3582; RV32I-NEXT:    lbu s6, 29(a0)3583; RV32I-NEXT:    lbu s8, 30(a0)3584; RV32I-NEXT:    lbu s9, 31(a0)3585; RV32I-NEXT:    slli s4, s4, 163586; RV32I-NEXT:    slli s7, s7, 243587; RV32I-NEXT:    slli s11, s11, 83588; RV32I-NEXT:    slli ra, ra, 163589; RV32I-NEXT:    slli a3, a3, 243590; RV32I-NEXT:    or a0, s7, s43591; RV32I-NEXT:    or s4, s11, s53592; RV32I-NEXT:    or s5, a3, ra3593; RV32I-NEXT:    lbu a3, 0(a1)3594; RV32I-NEXT:    lbu s7, 1(a1)3595; RV32I-NEXT:    lbu s10, 2(a1)3596; RV32I-NEXT:    lbu a1, 3(a1)3597; RV32I-NEXT:    sw zero, 24(sp)3598; RV32I-NEXT:    sw zero, 28(sp)3599; RV32I-NEXT:    sw zero, 32(sp)3600; RV32I-NEXT:    sw zero, 36(sp)3601; RV32I-NEXT:    sw zero, 8(sp)3602; RV32I-NEXT:    sw zero, 12(sp)3603; RV32I-NEXT:    sw zero, 16(sp)3604; RV32I-NEXT:    sw zero, 20(sp)3605; RV32I-NEXT:    slli t6, t6, 83606; RV32I-NEXT:    or t5, t6, t53607; RV32I-NEXT:    addi t6, sp, 403608; RV32I-NEXT:    slli a7, a7, 163609; RV32I-NEXT:    slli t0, t0, 243610; RV32I-NEXT:    slli s0, s0, 83611; RV32I-NEXT:    slli s1, s1, 163612; RV32I-NEXT:    slli s2, s2, 243613; RV32I-NEXT:    slli s6, s6, 83614; RV32I-NEXT:    slli s8, s8, 163615; RV32I-NEXT:    slli s9, s9, 243616; RV32I-NEXT:    slli s7, s7, 83617; RV32I-NEXT:    slli s10, s10, 163618; RV32I-NEXT:    slli a1, a1, 243619; RV32I-NEXT:    or a7, t0, a73620; RV32I-NEXT:    or t0, s0, t13621; RV32I-NEXT:    or t1, s2, s13622; RV32I-NEXT:    or s0, s6, s33623; RV32I-NEXT:    or s1, s9, s83624; RV32I-NEXT:    or a3, s7, a33625; RV32I-NEXT:    or a1, a1, s103626; RV32I-NEXT:    lw s2, 4(sp) # 4-byte Folded Reload3627; RV32I-NEXT:    or a4, a4, s23628; RV32I-NEXT:    or a5, a6, a53629; RV32I-NEXT:    or a6, t3, t23630; RV32I-NEXT:    or a0, a0, t43631; RV32I-NEXT:    or t2, s5, s43632; RV32I-NEXT:    or a7, a7, t53633; RV32I-NEXT:    or t0, t1, t03634; RV32I-NEXT:    or s0, s1, s03635; RV32I-NEXT:    or a1, a1, a33636; RV32I-NEXT:    sw t2, 56(sp)3637; RV32I-NEXT:    sw a7, 60(sp)3638; RV32I-NEXT:    sw t0, 64(sp)3639; RV32I-NEXT:    sw s0, 68(sp)3640; RV32I-NEXT:    sw a4, 40(sp)3641; RV32I-NEXT:    sw a5, 44(sp)3642; RV32I-NEXT:    sw a6, 48(sp)3643; RV32I-NEXT:    sw a0, 52(sp)3644; RV32I-NEXT:    slli a3, a1, 33645; RV32I-NEXT:    andi a1, a1, 283646; RV32I-NEXT:    sub a1, t6, a13647; RV32I-NEXT:    andi a0, a3, 243648; RV32I-NEXT:    xori a0, a0, 313649; RV32I-NEXT:    lw a4, 0(a1)3650; RV32I-NEXT:    lw a5, 4(a1)3651; RV32I-NEXT:    lw a6, 8(a1)3652; RV32I-NEXT:    lw a7, 12(a1)3653; RV32I-NEXT:    lw t0, 16(a1)3654; RV32I-NEXT:    lw t1, 20(a1)3655; RV32I-NEXT:    lw t2, 24(a1)3656; RV32I-NEXT:    lw a1, 28(a1)3657; RV32I-NEXT:    sll t3, a5, a33658; RV32I-NEXT:    srli t4, a4, 13659; RV32I-NEXT:    sll t5, a7, a33660; RV32I-NEXT:    srli t6, a6, 13661; RV32I-NEXT:    sll s0, a6, a33662; RV32I-NEXT:    srli a5, a5, 13663; RV32I-NEXT:    sll s1, t1, a33664; RV32I-NEXT:    srli a6, t0, 13665; RV32I-NEXT:    sll s2, t0, a33666; RV32I-NEXT:    srli a7, a7, 13667; RV32I-NEXT:    sll s3, a1, a33668; RV32I-NEXT:    srli a1, t2, 13669; RV32I-NEXT:    sll s4, t2, a33670; RV32I-NEXT:    srli t0, t1, 13671; RV32I-NEXT:    sll s5, a4, a33672; RV32I-NEXT:    srl t2, t4, a03673; RV32I-NEXT:    srl t4, t6, a03674; RV32I-NEXT:    srl t6, a5, a03675; RV32I-NEXT:    srl s6, a6, a03676; RV32I-NEXT:    srl s7, a7, a03677; RV32I-NEXT:    srl s8, a1, a03678; RV32I-NEXT:    srl s9, t0, a03679; RV32I-NEXT:    srli t1, s4, 243680; RV32I-NEXT:    srli a7, s3, 243681; RV32I-NEXT:    srli a5, s2, 243682; RV32I-NEXT:    srli a3, s1, 243683; RV32I-NEXT:    srli a1, s0, 243684; RV32I-NEXT:    srli a0, t5, 243685; RV32I-NEXT:    srli s10, s5, 243686; RV32I-NEXT:    srli s11, s5, 163687; RV32I-NEXT:    srli ra, s5, 83688; RV32I-NEXT:    srli a4, t3, 243689; RV32I-NEXT:    or a6, t3, t23690; RV32I-NEXT:    or t0, t5, t43691; RV32I-NEXT:    or t2, s0, t63692; RV32I-NEXT:    or t3, s1, s63693; RV32I-NEXT:    or t4, s2, s73694; RV32I-NEXT:    or t5, s3, s83695; RV32I-NEXT:    or t6, s4, s93696; RV32I-NEXT:    sb s5, 0(a2)3697; RV32I-NEXT:    sb ra, 1(a2)3698; RV32I-NEXT:    sb s11, 2(a2)3699; RV32I-NEXT:    sb s10, 3(a2)3700; RV32I-NEXT:    srli s0, t6, 163701; RV32I-NEXT:    srli s1, t6, 83702; RV32I-NEXT:    srli s2, t5, 163703; RV32I-NEXT:    srli s3, t5, 83704; RV32I-NEXT:    srli s4, t4, 163705; RV32I-NEXT:    srli s5, t4, 83706; RV32I-NEXT:    srli s6, t3, 163707; RV32I-NEXT:    srli s7, t3, 83708; RV32I-NEXT:    srli s8, t2, 163709; RV32I-NEXT:    srli s9, t2, 83710; RV32I-NEXT:    srli s10, t0, 163711; RV32I-NEXT:    srli s11, t0, 83712; RV32I-NEXT:    sb t6, 24(a2)3713; RV32I-NEXT:    sb s1, 25(a2)3714; RV32I-NEXT:    sb s0, 26(a2)3715; RV32I-NEXT:    sb t1, 27(a2)3716; RV32I-NEXT:    srli t1, a6, 163717; RV32I-NEXT:    sb t5, 28(a2)3718; RV32I-NEXT:    sb s3, 29(a2)3719; RV32I-NEXT:    sb s2, 30(a2)3720; RV32I-NEXT:    sb a7, 31(a2)3721; RV32I-NEXT:    srli a7, a6, 83722; RV32I-NEXT:    sb t4, 16(a2)3723; RV32I-NEXT:    sb s5, 17(a2)3724; RV32I-NEXT:    sb s4, 18(a2)3725; RV32I-NEXT:    sb a5, 19(a2)3726; RV32I-NEXT:    sb t3, 20(a2)3727; RV32I-NEXT:    sb s7, 21(a2)3728; RV32I-NEXT:    sb s6, 22(a2)3729; RV32I-NEXT:    sb a3, 23(a2)3730; RV32I-NEXT:    sb t2, 8(a2)3731; RV32I-NEXT:    sb s9, 9(a2)3732; RV32I-NEXT:    sb s8, 10(a2)3733; RV32I-NEXT:    sb a1, 11(a2)3734; RV32I-NEXT:    sb t0, 12(a2)3735; RV32I-NEXT:    sb s11, 13(a2)3736; RV32I-NEXT:    sb s10, 14(a2)3737; RV32I-NEXT:    sb a0, 15(a2)3738; RV32I-NEXT:    sb a6, 4(a2)3739; RV32I-NEXT:    sb a7, 5(a2)3740; RV32I-NEXT:    sb t1, 6(a2)3741; RV32I-NEXT:    sb a4, 7(a2)3742; RV32I-NEXT:    lw ra, 124(sp) # 4-byte Folded Reload3743; RV32I-NEXT:    lw s0, 120(sp) # 4-byte Folded Reload3744; RV32I-NEXT:    lw s1, 116(sp) # 4-byte Folded Reload3745; RV32I-NEXT:    lw s2, 112(sp) # 4-byte Folded Reload3746; RV32I-NEXT:    lw s3, 108(sp) # 4-byte Folded Reload3747; RV32I-NEXT:    lw s4, 104(sp) # 4-byte Folded Reload3748; RV32I-NEXT:    lw s5, 100(sp) # 4-byte Folded Reload3749; RV32I-NEXT:    lw s6, 96(sp) # 4-byte Folded Reload3750; RV32I-NEXT:    lw s7, 92(sp) # 4-byte Folded Reload3751; RV32I-NEXT:    lw s8, 88(sp) # 4-byte Folded Reload3752; RV32I-NEXT:    lw s9, 84(sp) # 4-byte Folded Reload3753; RV32I-NEXT:    lw s10, 80(sp) # 4-byte Folded Reload3754; RV32I-NEXT:    lw s11, 76(sp) # 4-byte Folded Reload3755; RV32I-NEXT:    addi sp, sp, 1283756; RV32I-NEXT:    ret3757  %src = load i256, ptr %src.ptr, align 13758  %byteOff = load i256, ptr %byteOff.ptr, align 13759  %bitOff = shl i256 %byteOff, 33760  %res = shl i256 %src, %bitOff3761  store i256 %res, ptr %dst, align 13762  ret void3763}3764 3765define void @shl_32bytes_wordOff(ptr %src.ptr, ptr %wordOff.ptr, ptr %dst) nounwind {3766; RV64I-LABEL: shl_32bytes_wordOff:3767; RV64I:       # %bb.0:3768; RV64I-NEXT:    addi sp, sp, -1603769; RV64I-NEXT:    sd s0, 152(sp) # 8-byte Folded Spill3770; RV64I-NEXT:    sd s1, 144(sp) # 8-byte Folded Spill3771; RV64I-NEXT:    sd s2, 136(sp) # 8-byte Folded Spill3772; RV64I-NEXT:    sd s3, 128(sp) # 8-byte Folded Spill3773; RV64I-NEXT:    sd s4, 120(sp) # 8-byte Folded Spill3774; RV64I-NEXT:    sd s5, 112(sp) # 8-byte Folded Spill3775; RV64I-NEXT:    sd s6, 104(sp) # 8-byte Folded Spill3776; RV64I-NEXT:    sd s7, 96(sp) # 8-byte Folded Spill3777; RV64I-NEXT:    sd s8, 88(sp) # 8-byte Folded Spill3778; RV64I-NEXT:    sd s9, 80(sp) # 8-byte Folded Spill3779; RV64I-NEXT:    sd s10, 72(sp) # 8-byte Folded Spill3780; RV64I-NEXT:    sd s11, 64(sp) # 8-byte Folded Spill3781; RV64I-NEXT:    lbu a3, 0(a0)3782; RV64I-NEXT:    lbu a4, 1(a0)3783; RV64I-NEXT:    lbu a5, 2(a0)3784; RV64I-NEXT:    lbu a6, 3(a0)3785; RV64I-NEXT:    lbu a7, 4(a0)3786; RV64I-NEXT:    lbu t0, 5(a0)3787; RV64I-NEXT:    lbu t1, 6(a0)3788; RV64I-NEXT:    lbu t2, 7(a0)3789; RV64I-NEXT:    lbu t3, 8(a0)3790; RV64I-NEXT:    lbu t4, 9(a0)3791; RV64I-NEXT:    lbu t5, 10(a0)3792; RV64I-NEXT:    lbu t6, 11(a0)3793; RV64I-NEXT:    lbu s0, 12(a0)3794; RV64I-NEXT:    lbu s1, 13(a0)3795; RV64I-NEXT:    lbu s2, 14(a0)3796; RV64I-NEXT:    lbu s3, 15(a0)3797; RV64I-NEXT:    lbu s4, 16(a0)3798; RV64I-NEXT:    lbu s5, 17(a0)3799; RV64I-NEXT:    lbu s6, 18(a0)3800; RV64I-NEXT:    lbu s7, 19(a0)3801; RV64I-NEXT:    slli a4, a4, 83802; RV64I-NEXT:    slli a5, a5, 163803; RV64I-NEXT:    slli a6, a6, 243804; RV64I-NEXT:    slli t0, t0, 83805; RV64I-NEXT:    slli t1, t1, 163806; RV64I-NEXT:    slli t2, t2, 243807; RV64I-NEXT:    or a3, a4, a33808; RV64I-NEXT:    or a4, a6, a53809; RV64I-NEXT:    or a5, t0, a73810; RV64I-NEXT:    or a6, t2, t13811; RV64I-NEXT:    lbu s8, 20(a0)3812; RV64I-NEXT:    lbu s9, 21(a0)3813; RV64I-NEXT:    lbu s10, 22(a0)3814; RV64I-NEXT:    lbu s11, 23(a0)3815; RV64I-NEXT:    slli t4, t4, 83816; RV64I-NEXT:    slli t5, t5, 163817; RV64I-NEXT:    slli t6, t6, 243818; RV64I-NEXT:    slli s1, s1, 83819; RV64I-NEXT:    slli s2, s2, 163820; RV64I-NEXT:    slli s3, s3, 243821; RV64I-NEXT:    or a7, t4, t33822; RV64I-NEXT:    or t0, t6, t53823; RV64I-NEXT:    or t1, s1, s03824; RV64I-NEXT:    or t2, s3, s23825; RV64I-NEXT:    lbu t6, 24(a0)3826; RV64I-NEXT:    lbu s0, 25(a0)3827; RV64I-NEXT:    lbu s1, 26(a0)3828; RV64I-NEXT:    lbu s2, 27(a0)3829; RV64I-NEXT:    slli s5, s5, 83830; RV64I-NEXT:    slli s6, s6, 163831; RV64I-NEXT:    slli s7, s7, 243832; RV64I-NEXT:    slli s9, s9, 83833; RV64I-NEXT:    or t3, s5, s43834; RV64I-NEXT:    or t4, s7, s63835; RV64I-NEXT:    or t5, s9, s83836; RV64I-NEXT:    lbu s3, 28(a0)3837; RV64I-NEXT:    lbu s4, 29(a0)3838; RV64I-NEXT:    lbu s5, 30(a0)3839; RV64I-NEXT:    lbu s6, 31(a0)3840; RV64I-NEXT:    slli s10, s10, 163841; RV64I-NEXT:    slli s11, s11, 243842; RV64I-NEXT:    slli s0, s0, 83843; RV64I-NEXT:    slli s1, s1, 163844; RV64I-NEXT:    slli s2, s2, 243845; RV64I-NEXT:    slli s4, s4, 83846; RV64I-NEXT:    or a0, s11, s103847; RV64I-NEXT:    or t6, s0, t63848; RV64I-NEXT:    or s0, s2, s13849; RV64I-NEXT:    or s1, s4, s33850; RV64I-NEXT:    lbu s2, 0(a1)3851; RV64I-NEXT:    lbu s3, 1(a1)3852; RV64I-NEXT:    lbu s4, 2(a1)3853; RV64I-NEXT:    lbu s7, 3(a1)3854; RV64I-NEXT:    slli s5, s5, 163855; RV64I-NEXT:    slli s6, s6, 243856; RV64I-NEXT:    slli s3, s3, 83857; RV64I-NEXT:    slli s4, s4, 163858; RV64I-NEXT:    slli s7, s7, 243859; RV64I-NEXT:    or s5, s6, s53860; RV64I-NEXT:    or s2, s3, s23861; RV64I-NEXT:    or s3, s7, s43862; RV64I-NEXT:    lbu s4, 5(a1)3863; RV64I-NEXT:    lbu s6, 4(a1)3864; RV64I-NEXT:    lbu s7, 6(a1)3865; RV64I-NEXT:    lbu a1, 7(a1)3866; RV64I-NEXT:    slli s4, s4, 83867; RV64I-NEXT:    or s4, s4, s63868; RV64I-NEXT:    sd zero, 0(sp)3869; RV64I-NEXT:    sd zero, 8(sp)3870; RV64I-NEXT:    sd zero, 16(sp)3871; RV64I-NEXT:    sd zero, 24(sp)3872; RV64I-NEXT:    slli s7, s7, 163873; RV64I-NEXT:    slli a1, a1, 243874; RV64I-NEXT:    or a1, a1, s73875; RV64I-NEXT:    addi s6, sp, 323876; RV64I-NEXT:    or a3, a4, a33877; RV64I-NEXT:    or a4, a6, a53878; RV64I-NEXT:    or a5, t0, a73879; RV64I-NEXT:    or a6, t2, t13880; RV64I-NEXT:    or a7, t4, t33881; RV64I-NEXT:    or a0, a0, t53882; RV64I-NEXT:    or t0, s0, t63883; RV64I-NEXT:    or t1, s5, s13884; RV64I-NEXT:    or t2, s3, s23885; RV64I-NEXT:    or a1, a1, s43886; RV64I-NEXT:    slli a4, a4, 323887; RV64I-NEXT:    slli a6, a6, 323888; RV64I-NEXT:    slli a0, a0, 323889; RV64I-NEXT:    slli t1, t1, 323890; RV64I-NEXT:    slli a1, a1, 323891; RV64I-NEXT:    or a3, a4, a33892; RV64I-NEXT:    or a4, a6, a53893; RV64I-NEXT:    or a0, a0, a73894; RV64I-NEXT:    or a5, t1, t03895; RV64I-NEXT:    or a1, a1, t23896; RV64I-NEXT:    sd a3, 32(sp)3897; RV64I-NEXT:    sd a4, 40(sp)3898; RV64I-NEXT:    sd a0, 48(sp)3899; RV64I-NEXT:    sd a5, 56(sp)3900; RV64I-NEXT:    slli a3, a1, 53901; RV64I-NEXT:    slli a1, a1, 23902; RV64I-NEXT:    andi a1, a1, 243903; RV64I-NEXT:    andi a0, a3, 323904; RV64I-NEXT:    sub a1, s6, a13905; RV64I-NEXT:    ld a4, 0(a1)3906; RV64I-NEXT:    ld a5, 8(a1)3907; RV64I-NEXT:    ld a6, 16(a1)3908; RV64I-NEXT:    ld a1, 24(a1)3909; RV64I-NEXT:    xori a7, a0, 633910; RV64I-NEXT:    sll a0, a5, a33911; RV64I-NEXT:    srli t0, a4, 13912; RV64I-NEXT:    sll a1, a1, a33913; RV64I-NEXT:    srli t1, a6, 13914; RV64I-NEXT:    sll a6, a6, a33915; RV64I-NEXT:    srli a5, a5, 13916; RV64I-NEXT:    sll a3, a4, a33917; RV64I-NEXT:    srl a4, t0, a73918; RV64I-NEXT:    srl t0, t1, a73919; RV64I-NEXT:    srl a5, a5, a73920; RV64I-NEXT:    srli a7, a6, 563921; RV64I-NEXT:    srli t1, a6, 483922; RV64I-NEXT:    srli t2, a6, 403923; RV64I-NEXT:    srli t3, a6, 323924; RV64I-NEXT:    srli t4, a1, 563925; RV64I-NEXT:    srli t5, a1, 483926; RV64I-NEXT:    srli t6, a1, 403927; RV64I-NEXT:    srli s0, a1, 323928; RV64I-NEXT:    srli s1, a3, 563929; RV64I-NEXT:    srli s2, a3, 483930; RV64I-NEXT:    srli s3, a3, 403931; RV64I-NEXT:    srli s4, a3, 323932; RV64I-NEXT:    srli s5, a3, 243933; RV64I-NEXT:    srli s6, a3, 163934; RV64I-NEXT:    or a1, a1, t03935; RV64I-NEXT:    srli t0, a3, 83936; RV64I-NEXT:    or a5, a6, a53937; RV64I-NEXT:    srli a6, a0, 563938; RV64I-NEXT:    sb t3, 20(a2)3939; RV64I-NEXT:    sb t2, 21(a2)3940; RV64I-NEXT:    sb t1, 22(a2)3941; RV64I-NEXT:    sb a7, 23(a2)3942; RV64I-NEXT:    srli a7, a0, 483943; RV64I-NEXT:    sb s0, 28(a2)3944; RV64I-NEXT:    sb t6, 29(a2)3945; RV64I-NEXT:    sb t5, 30(a2)3946; RV64I-NEXT:    sb t4, 31(a2)3947; RV64I-NEXT:    srli t1, a0, 403948; RV64I-NEXT:    or a4, a0, a43949; RV64I-NEXT:    srli a0, a0, 323950; RV64I-NEXT:    sb s4, 4(a2)3951; RV64I-NEXT:    sb s3, 5(a2)3952; RV64I-NEXT:    sb s2, 6(a2)3953; RV64I-NEXT:    sb s1, 7(a2)3954; RV64I-NEXT:    sb a3, 0(a2)3955; RV64I-NEXT:    sb t0, 1(a2)3956; RV64I-NEXT:    sb s6, 2(a2)3957; RV64I-NEXT:    sb s5, 3(a2)3958; RV64I-NEXT:    sb a0, 12(a2)3959; RV64I-NEXT:    sb t1, 13(a2)3960; RV64I-NEXT:    sb a7, 14(a2)3961; RV64I-NEXT:    sb a6, 15(a2)3962; RV64I-NEXT:    srli a0, a5, 243963; RV64I-NEXT:    srli a3, a5, 163964; RV64I-NEXT:    srli a6, a5, 83965; RV64I-NEXT:    srli a7, a1, 243966; RV64I-NEXT:    srli t0, a1, 163967; RV64I-NEXT:    srli t1, a1, 83968; RV64I-NEXT:    srli t2, a4, 243969; RV64I-NEXT:    srli t3, a4, 163970; RV64I-NEXT:    srli t4, a4, 83971; RV64I-NEXT:    sb a5, 16(a2)3972; RV64I-NEXT:    sb a6, 17(a2)3973; RV64I-NEXT:    sb a3, 18(a2)3974; RV64I-NEXT:    sb a0, 19(a2)3975; RV64I-NEXT:    sb a1, 24(a2)3976; RV64I-NEXT:    sb t1, 25(a2)3977; RV64I-NEXT:    sb t0, 26(a2)3978; RV64I-NEXT:    sb a7, 27(a2)3979; RV64I-NEXT:    sb a4, 8(a2)3980; RV64I-NEXT:    sb t4, 9(a2)3981; RV64I-NEXT:    sb t3, 10(a2)3982; RV64I-NEXT:    sb t2, 11(a2)3983; RV64I-NEXT:    ld s0, 152(sp) # 8-byte Folded Reload3984; RV64I-NEXT:    ld s1, 144(sp) # 8-byte Folded Reload3985; RV64I-NEXT:    ld s2, 136(sp) # 8-byte Folded Reload3986; RV64I-NEXT:    ld s3, 128(sp) # 8-byte Folded Reload3987; RV64I-NEXT:    ld s4, 120(sp) # 8-byte Folded Reload3988; RV64I-NEXT:    ld s5, 112(sp) # 8-byte Folded Reload3989; RV64I-NEXT:    ld s6, 104(sp) # 8-byte Folded Reload3990; RV64I-NEXT:    ld s7, 96(sp) # 8-byte Folded Reload3991; RV64I-NEXT:    ld s8, 88(sp) # 8-byte Folded Reload3992; RV64I-NEXT:    ld s9, 80(sp) # 8-byte Folded Reload3993; RV64I-NEXT:    ld s10, 72(sp) # 8-byte Folded Reload3994; RV64I-NEXT:    ld s11, 64(sp) # 8-byte Folded Reload3995; RV64I-NEXT:    addi sp, sp, 1603996; RV64I-NEXT:    ret3997;3998; RV32I-LABEL: shl_32bytes_wordOff:3999; RV32I:       # %bb.0:4000; RV32I-NEXT:    addi sp, sp, -1284001; RV32I-NEXT:    sw ra, 124(sp) # 4-byte Folded Spill4002; RV32I-NEXT:    sw s0, 120(sp) # 4-byte Folded Spill4003; RV32I-NEXT:    sw s1, 116(sp) # 4-byte Folded Spill4004; RV32I-NEXT:    sw s2, 112(sp) # 4-byte Folded Spill4005; RV32I-NEXT:    sw s3, 108(sp) # 4-byte Folded Spill4006; RV32I-NEXT:    sw s4, 104(sp) # 4-byte Folded Spill4007; RV32I-NEXT:    sw s5, 100(sp) # 4-byte Folded Spill4008; RV32I-NEXT:    sw s6, 96(sp) # 4-byte Folded Spill4009; RV32I-NEXT:    sw s7, 92(sp) # 4-byte Folded Spill4010; RV32I-NEXT:    sw s8, 88(sp) # 4-byte Folded Spill4011; RV32I-NEXT:    sw s9, 84(sp) # 4-byte Folded Spill4012; RV32I-NEXT:    sw s10, 80(sp) # 4-byte Folded Spill4013; RV32I-NEXT:    sw s11, 76(sp) # 4-byte Folded Spill4014; RV32I-NEXT:    lbu a7, 0(a0)4015; RV32I-NEXT:    lbu t0, 1(a0)4016; RV32I-NEXT:    lbu t1, 2(a0)4017; RV32I-NEXT:    lbu s1, 3(a0)4018; RV32I-NEXT:    lbu s7, 4(a0)4019; RV32I-NEXT:    lbu s8, 5(a0)4020; RV32I-NEXT:    lbu s4, 6(a0)4021; RV32I-NEXT:    lbu s6, 7(a0)4022; RV32I-NEXT:    lbu s5, 8(a0)4023; RV32I-NEXT:    lbu s10, 9(a0)4024; RV32I-NEXT:    lbu s11, 10(a0)4025; RV32I-NEXT:    lbu ra, 11(a0)4026; RV32I-NEXT:    lbu t4, 12(a0)4027; RV32I-NEXT:    lbu t6, 13(a0)4028; RV32I-NEXT:    lbu a5, 14(a0)4029; RV32I-NEXT:    lbu a6, 15(a0)4030; RV32I-NEXT:    lbu a3, 16(a0)4031; RV32I-NEXT:    lbu t2, 17(a0)4032; RV32I-NEXT:    lbu t3, 18(a0)4033; RV32I-NEXT:    lbu t5, 19(a0)4034; RV32I-NEXT:    lbu a4, 20(a0)4035; RV32I-NEXT:    lbu s0, 21(a0)4036; RV32I-NEXT:    lbu s2, 22(a0)4037; RV32I-NEXT:    lbu s3, 23(a0)4038; RV32I-NEXT:    slli t0, t0, 84039; RV32I-NEXT:    slli t1, t1, 164040; RV32I-NEXT:    slli s1, s1, 244041; RV32I-NEXT:    slli s8, s8, 84042; RV32I-NEXT:    or a7, t0, a74043; RV32I-NEXT:    or t0, s1, t14044; RV32I-NEXT:    or t1, s8, s74045; RV32I-NEXT:    lbu s1, 24(a0)4046; RV32I-NEXT:    lbu s7, 25(a0)4047; RV32I-NEXT:    lbu s8, 26(a0)4048; RV32I-NEXT:    lbu s9, 27(a0)4049; RV32I-NEXT:    slli s4, s4, 164050; RV32I-NEXT:    slli s6, s6, 244051; RV32I-NEXT:    slli s10, s10, 84052; RV32I-NEXT:    slli s11, s11, 164053; RV32I-NEXT:    slli ra, ra, 244054; RV32I-NEXT:    or s4, s6, s44055; RV32I-NEXT:    or s5, s10, s54056; RV32I-NEXT:    or s6, ra, s114057; RV32I-NEXT:    lbu s10, 28(a0)4058; RV32I-NEXT:    lbu s11, 29(a0)4059; RV32I-NEXT:    lbu ra, 30(a0)4060; RV32I-NEXT:    lbu a0, 31(a0)4061; RV32I-NEXT:    lbu a1, 0(a1)4062; RV32I-NEXT:    sw zero, 24(sp)4063; RV32I-NEXT:    sw zero, 28(sp)4064; RV32I-NEXT:    sw zero, 32(sp)4065; RV32I-NEXT:    sw zero, 36(sp)4066; RV32I-NEXT:    sw zero, 8(sp)4067; RV32I-NEXT:    sw zero, 12(sp)4068; RV32I-NEXT:    sw zero, 16(sp)4069; RV32I-NEXT:    sw zero, 20(sp)4070; RV32I-NEXT:    slli t6, t6, 84071; RV32I-NEXT:    or t4, t6, t44072; RV32I-NEXT:    addi t6, sp, 404073; RV32I-NEXT:    slli a5, a5, 164074; RV32I-NEXT:    slli a6, a6, 244075; RV32I-NEXT:    slli t2, t2, 84076; RV32I-NEXT:    slli t3, t3, 164077; RV32I-NEXT:    slli t5, t5, 244078; RV32I-NEXT:    slli s0, s0, 84079; RV32I-NEXT:    slli s2, s2, 164080; RV32I-NEXT:    slli s3, s3, 244081; RV32I-NEXT:    slli s7, s7, 84082; RV32I-NEXT:    slli s8, s8, 164083; RV32I-NEXT:    slli s9, s9, 244084; RV32I-NEXT:    slli s11, s11, 84085; RV32I-NEXT:    slli ra, ra, 164086; RV32I-NEXT:    slli a0, a0, 244087; RV32I-NEXT:    slli a1, a1, 24088; RV32I-NEXT:    or a5, a6, a54089; RV32I-NEXT:    or a3, t2, a34090; RV32I-NEXT:    or a6, t5, t34091; RV32I-NEXT:    or a4, s0, a44092; RV32I-NEXT:    or t2, s3, s24093; RV32I-NEXT:    or t3, s7, s14094; RV32I-NEXT:    or t5, s9, s84095; RV32I-NEXT:    or s0, s11, s104096; RV32I-NEXT:    or a0, a0, ra4097; RV32I-NEXT:    andi a1, a1, 284098; RV32I-NEXT:    or a7, t0, a74099; RV32I-NEXT:    or t0, s4, t14100; RV32I-NEXT:    or t1, s6, s54101; RV32I-NEXT:    or a5, a5, t44102; RV32I-NEXT:    or a3, a6, a34103; RV32I-NEXT:    or a4, t2, a44104; RV32I-NEXT:    or a6, t5, t34105; RV32I-NEXT:    or a0, a0, s04106; RV32I-NEXT:    sub t2, t6, a14107; RV32I-NEXT:    sw a3, 56(sp)4108; RV32I-NEXT:    sw a4, 60(sp)4109; RV32I-NEXT:    sw a6, 64(sp)4110; RV32I-NEXT:    sw a0, 68(sp)4111; RV32I-NEXT:    sw a7, 40(sp)4112; RV32I-NEXT:    sw t0, 44(sp)4113; RV32I-NEXT:    sw t1, 48(sp)4114; RV32I-NEXT:    sw a5, 52(sp)4115; RV32I-NEXT:    lw a1, 0(t2)4116; RV32I-NEXT:    lw a0, 4(t2)4117; RV32I-NEXT:    lw a4, 8(t2)4118; RV32I-NEXT:    lw a3, 12(t2)4119; RV32I-NEXT:    lw a7, 24(t2)4120; RV32I-NEXT:    lw a5, 20(t2)4121; RV32I-NEXT:    lw a6, 16(t2)4122; RV32I-NEXT:    lw t0, 28(t2)4123; RV32I-NEXT:    srli t1, a7, 244124; RV32I-NEXT:    srli t2, a7, 164125; RV32I-NEXT:    srli t3, a7, 84126; RV32I-NEXT:    srli t4, t0, 244127; RV32I-NEXT:    srli t5, t0, 164128; RV32I-NEXT:    srli t6, t0, 84129; RV32I-NEXT:    srli s0, a6, 244130; RV32I-NEXT:    srli s1, a6, 164131; RV32I-NEXT:    srli s2, a6, 84132; RV32I-NEXT:    srli s3, a5, 244133; RV32I-NEXT:    srli s4, a5, 164134; RV32I-NEXT:    srli s5, a5, 84135; RV32I-NEXT:    srli s6, a4, 244136; RV32I-NEXT:    srli s7, a4, 164137; RV32I-NEXT:    srli s8, a4, 84138; RV32I-NEXT:    srli s9, a3, 244139; RV32I-NEXT:    srli s10, a3, 164140; RV32I-NEXT:    srli s11, a3, 84141; RV32I-NEXT:    srli ra, a1, 244142; RV32I-NEXT:    sb a7, 24(a2)4143; RV32I-NEXT:    sb t3, 25(a2)4144; RV32I-NEXT:    sb t2, 26(a2)4145; RV32I-NEXT:    sb t1, 27(a2)4146; RV32I-NEXT:    srli a7, a1, 164147; RV32I-NEXT:    sb t0, 28(a2)4148; RV32I-NEXT:    sb t6, 29(a2)4149; RV32I-NEXT:    sb t5, 30(a2)4150; RV32I-NEXT:    sb t4, 31(a2)4151; RV32I-NEXT:    srli t0, a1, 84152; RV32I-NEXT:    sb a6, 16(a2)4153; RV32I-NEXT:    sb s2, 17(a2)4154; RV32I-NEXT:    sb s1, 18(a2)4155; RV32I-NEXT:    sb s0, 19(a2)4156; RV32I-NEXT:    srli a6, a0, 244157; RV32I-NEXT:    sb a5, 20(a2)4158; RV32I-NEXT:    sb s5, 21(a2)4159; RV32I-NEXT:    sb s4, 22(a2)4160; RV32I-NEXT:    sb s3, 23(a2)4161; RV32I-NEXT:    srli a5, a0, 164162; RV32I-NEXT:    sb a4, 8(a2)4163; RV32I-NEXT:    sb s8, 9(a2)4164; RV32I-NEXT:    sb s7, 10(a2)4165; RV32I-NEXT:    sb s6, 11(a2)4166; RV32I-NEXT:    srli a4, a0, 84167; RV32I-NEXT:    sb a3, 12(a2)4168; RV32I-NEXT:    sb s11, 13(a2)4169; RV32I-NEXT:    sb s10, 14(a2)4170; RV32I-NEXT:    sb s9, 15(a2)4171; RV32I-NEXT:    sb a1, 0(a2)4172; RV32I-NEXT:    sb t0, 1(a2)4173; RV32I-NEXT:    sb a7, 2(a2)4174; RV32I-NEXT:    sb ra, 3(a2)4175; RV32I-NEXT:    sb a0, 4(a2)4176; RV32I-NEXT:    sb a4, 5(a2)4177; RV32I-NEXT:    sb a5, 6(a2)4178; RV32I-NEXT:    sb a6, 7(a2)4179; RV32I-NEXT:    lw ra, 124(sp) # 4-byte Folded Reload4180; RV32I-NEXT:    lw s0, 120(sp) # 4-byte Folded Reload4181; RV32I-NEXT:    lw s1, 116(sp) # 4-byte Folded Reload4182; RV32I-NEXT:    lw s2, 112(sp) # 4-byte Folded Reload4183; RV32I-NEXT:    lw s3, 108(sp) # 4-byte Folded Reload4184; RV32I-NEXT:    lw s4, 104(sp) # 4-byte Folded Reload4185; RV32I-NEXT:    lw s5, 100(sp) # 4-byte Folded Reload4186; RV32I-NEXT:    lw s6, 96(sp) # 4-byte Folded Reload4187; RV32I-NEXT:    lw s7, 92(sp) # 4-byte Folded Reload4188; RV32I-NEXT:    lw s8, 88(sp) # 4-byte Folded Reload4189; RV32I-NEXT:    lw s9, 84(sp) # 4-byte Folded Reload4190; RV32I-NEXT:    lw s10, 80(sp) # 4-byte Folded Reload4191; RV32I-NEXT:    lw s11, 76(sp) # 4-byte Folded Reload4192; RV32I-NEXT:    addi sp, sp, 1284193; RV32I-NEXT:    ret4194  %src = load i256, ptr %src.ptr, align 14195  %wordOff = load i256, ptr %wordOff.ptr, align 14196  %bitOff = shl i256 %wordOff, 54197  %res = shl i256 %src, %bitOff4198  store i256 %res, ptr %dst, align 14199  ret void4200}4201 4202define void @shl_32bytes_dwordOff(ptr %src.ptr, ptr %dwordOff.ptr, ptr %dst) nounwind {4203; RV64I-LABEL: shl_32bytes_dwordOff:4204; RV64I:       # %bb.0:4205; RV64I-NEXT:    addi sp, sp, -1604206; RV64I-NEXT:    sd s0, 152(sp) # 8-byte Folded Spill4207; RV64I-NEXT:    sd s1, 144(sp) # 8-byte Folded Spill4208; RV64I-NEXT:    sd s2, 136(sp) # 8-byte Folded Spill4209; RV64I-NEXT:    sd s3, 128(sp) # 8-byte Folded Spill4210; RV64I-NEXT:    sd s4, 120(sp) # 8-byte Folded Spill4211; RV64I-NEXT:    sd s5, 112(sp) # 8-byte Folded Spill4212; RV64I-NEXT:    sd s6, 104(sp) # 8-byte Folded Spill4213; RV64I-NEXT:    sd s7, 96(sp) # 8-byte Folded Spill4214; RV64I-NEXT:    sd s8, 88(sp) # 8-byte Folded Spill4215; RV64I-NEXT:    sd s9, 80(sp) # 8-byte Folded Spill4216; RV64I-NEXT:    sd s10, 72(sp) # 8-byte Folded Spill4217; RV64I-NEXT:    sd s11, 64(sp) # 8-byte Folded Spill4218; RV64I-NEXT:    lbu a5, 0(a0)4219; RV64I-NEXT:    lbu a7, 1(a0)4220; RV64I-NEXT:    lbu t2, 2(a0)4221; RV64I-NEXT:    lbu s3, 3(a0)4222; RV64I-NEXT:    lbu t0, 4(a0)4223; RV64I-NEXT:    lbu s8, 5(a0)4224; RV64I-NEXT:    lbu s9, 6(a0)4225; RV64I-NEXT:    lbu s10, 7(a0)4226; RV64I-NEXT:    lbu s2, 8(a0)4227; RV64I-NEXT:    lbu s4, 9(a0)4228; RV64I-NEXT:    lbu s5, 10(a0)4229; RV64I-NEXT:    lbu s6, 11(a0)4230; RV64I-NEXT:    lbu s7, 12(a0)4231; RV64I-NEXT:    lbu s11, 13(a0)4232; RV64I-NEXT:    lbu t1, 14(a0)4233; RV64I-NEXT:    lbu t3, 15(a0)4234; RV64I-NEXT:    lbu a3, 16(a0)4235; RV64I-NEXT:    lbu a6, 17(a0)4236; RV64I-NEXT:    lbu t4, 18(a0)4237; RV64I-NEXT:    lbu t5, 19(a0)4238; RV64I-NEXT:    lbu a4, 20(a0)4239; RV64I-NEXT:    lbu t6, 21(a0)4240; RV64I-NEXT:    lbu s0, 22(a0)4241; RV64I-NEXT:    lbu s1, 23(a0)4242; RV64I-NEXT:    slli a7, a7, 84243; RV64I-NEXT:    slli t2, t2, 164244; RV64I-NEXT:    slli s3, s3, 244245; RV64I-NEXT:    slli s8, s8, 84246; RV64I-NEXT:    slli s9, s9, 164247; RV64I-NEXT:    slli s10, s10, 244248; RV64I-NEXT:    or a5, a7, a54249; RV64I-NEXT:    or a7, s3, t24250; RV64I-NEXT:    or t0, s8, t04251; RV64I-NEXT:    or t2, s10, s94252; RV64I-NEXT:    lbu s3, 24(a0)4253; RV64I-NEXT:    lbu s8, 25(a0)4254; RV64I-NEXT:    lbu s9, 26(a0)4255; RV64I-NEXT:    lbu s10, 27(a0)4256; RV64I-NEXT:    slli s4, s4, 84257; RV64I-NEXT:    slli s5, s5, 164258; RV64I-NEXT:    slli s6, s6, 244259; RV64I-NEXT:    slli s11, s11, 84260; RV64I-NEXT:    or s2, s4, s24261; RV64I-NEXT:    or s4, s6, s54262; RV64I-NEXT:    or s5, s11, s74263; RV64I-NEXT:    lbu s6, 28(a0)4264; RV64I-NEXT:    lbu s7, 29(a0)4265; RV64I-NEXT:    lbu s11, 30(a0)4266; RV64I-NEXT:    lbu a0, 31(a0)4267; RV64I-NEXT:    lbu a1, 0(a1)4268; RV64I-NEXT:    sd zero, 0(sp)4269; RV64I-NEXT:    sd zero, 8(sp)4270; RV64I-NEXT:    sd zero, 16(sp)4271; RV64I-NEXT:    sd zero, 24(sp)4272; RV64I-NEXT:    slli t1, t1, 164273; RV64I-NEXT:    slli t3, t3, 244274; RV64I-NEXT:    or t1, t3, t14275; RV64I-NEXT:    addi t3, sp, 324276; RV64I-NEXT:    slli a6, a6, 84277; RV64I-NEXT:    slli t4, t4, 164278; RV64I-NEXT:    slli t5, t5, 244279; RV64I-NEXT:    slli t6, t6, 84280; RV64I-NEXT:    slli s0, s0, 164281; RV64I-NEXT:    slli s1, s1, 244282; RV64I-NEXT:    slli s8, s8, 84283; RV64I-NEXT:    slli s9, s9, 164284; RV64I-NEXT:    slli s10, s10, 244285; RV64I-NEXT:    slli s7, s7, 84286; RV64I-NEXT:    slli s11, s11, 164287; RV64I-NEXT:    slli a0, a0, 244288; RV64I-NEXT:    slli a1, a1, 34289; RV64I-NEXT:    or a3, a6, a34290; RV64I-NEXT:    or a6, t5, t44291; RV64I-NEXT:    or a4, t6, a44292; RV64I-NEXT:    or s0, s1, s04293; RV64I-NEXT:    or t4, s8, s34294; RV64I-NEXT:    or t5, s10, s94295; RV64I-NEXT:    or t6, s7, s64296; RV64I-NEXT:    or a0, a0, s114297; RV64I-NEXT:    andi a1, a1, 244298; RV64I-NEXT:    or a5, a7, a54299; RV64I-NEXT:    or a7, t2, t04300; RV64I-NEXT:    or t0, s4, s24301; RV64I-NEXT:    or t1, t1, s54302; RV64I-NEXT:    or a3, a6, a34303; RV64I-NEXT:    or a4, s0, a44304; RV64I-NEXT:    or a6, t5, t44305; RV64I-NEXT:    or a0, a0, t64306; RV64I-NEXT:    sub t2, t3, a14307; RV64I-NEXT:    slli a7, a7, 324308; RV64I-NEXT:    slli t1, t1, 324309; RV64I-NEXT:    slli a4, a4, 324310; RV64I-NEXT:    slli a0, a0, 324311; RV64I-NEXT:    or a1, a7, a54312; RV64I-NEXT:    or a5, t1, t04313; RV64I-NEXT:    or a3, a4, a34314; RV64I-NEXT:    or a0, a0, a64315; RV64I-NEXT:    sd a1, 32(sp)4316; RV64I-NEXT:    sd a5, 40(sp)4317; RV64I-NEXT:    sd a3, 48(sp)4318; RV64I-NEXT:    sd a0, 56(sp)4319; RV64I-NEXT:    ld a4, 16(t2)4320; RV64I-NEXT:    ld a0, 8(t2)4321; RV64I-NEXT:    ld a1, 0(t2)4322; RV64I-NEXT:    ld a3, 24(t2)4323; RV64I-NEXT:    srli a5, a4, 564324; RV64I-NEXT:    srli a6, a4, 484325; RV64I-NEXT:    srli a7, a4, 404326; RV64I-NEXT:    srli t0, a4, 324327; RV64I-NEXT:    srli t1, a4, 244328; RV64I-NEXT:    srli t2, a4, 164329; RV64I-NEXT:    srli t3, a4, 84330; RV64I-NEXT:    srli t4, a3, 564331; RV64I-NEXT:    srli t5, a3, 484332; RV64I-NEXT:    srli t6, a3, 404333; RV64I-NEXT:    srli s0, a3, 324334; RV64I-NEXT:    srli s1, a3, 244335; RV64I-NEXT:    srli s2, a3, 164336; RV64I-NEXT:    srli s3, a3, 84337; RV64I-NEXT:    srli s4, a1, 564338; RV64I-NEXT:    srli s5, a1, 484339; RV64I-NEXT:    srli s6, a1, 404340; RV64I-NEXT:    srli s7, a1, 324341; RV64I-NEXT:    srli s8, a1, 244342; RV64I-NEXT:    srli s9, a1, 164343; RV64I-NEXT:    srli s10, a1, 84344; RV64I-NEXT:    srli s11, a0, 564345; RV64I-NEXT:    sb t0, 20(a2)4346; RV64I-NEXT:    sb a7, 21(a2)4347; RV64I-NEXT:    sb a6, 22(a2)4348; RV64I-NEXT:    sb a5, 23(a2)4349; RV64I-NEXT:    srli a5, a0, 484350; RV64I-NEXT:    sb a4, 16(a2)4351; RV64I-NEXT:    sb t3, 17(a2)4352; RV64I-NEXT:    sb t2, 18(a2)4353; RV64I-NEXT:    sb t1, 19(a2)4354; RV64I-NEXT:    srli a4, a0, 404355; RV64I-NEXT:    sb s0, 28(a2)4356; RV64I-NEXT:    sb t6, 29(a2)4357; RV64I-NEXT:    sb t5, 30(a2)4358; RV64I-NEXT:    sb t4, 31(a2)4359; RV64I-NEXT:    srli a6, a0, 324360; RV64I-NEXT:    sb a3, 24(a2)4361; RV64I-NEXT:    sb s3, 25(a2)4362; RV64I-NEXT:    sb s2, 26(a2)4363; RV64I-NEXT:    sb s1, 27(a2)4364; RV64I-NEXT:    srli a3, a0, 244365; RV64I-NEXT:    sb s7, 4(a2)4366; RV64I-NEXT:    sb s6, 5(a2)4367; RV64I-NEXT:    sb s5, 6(a2)4368; RV64I-NEXT:    sb s4, 7(a2)4369; RV64I-NEXT:    srli a7, a0, 164370; RV64I-NEXT:    sb a1, 0(a2)4371; RV64I-NEXT:    sb s10, 1(a2)4372; RV64I-NEXT:    sb s9, 2(a2)4373; RV64I-NEXT:    sb s8, 3(a2)4374; RV64I-NEXT:    srli a1, a0, 84375; RV64I-NEXT:    sb a6, 12(a2)4376; RV64I-NEXT:    sb a4, 13(a2)4377; RV64I-NEXT:    sb a5, 14(a2)4378; RV64I-NEXT:    sb s11, 15(a2)4379; RV64I-NEXT:    sb a0, 8(a2)4380; RV64I-NEXT:    sb a1, 9(a2)4381; RV64I-NEXT:    sb a7, 10(a2)4382; RV64I-NEXT:    sb a3, 11(a2)4383; RV64I-NEXT:    ld s0, 152(sp) # 8-byte Folded Reload4384; RV64I-NEXT:    ld s1, 144(sp) # 8-byte Folded Reload4385; RV64I-NEXT:    ld s2, 136(sp) # 8-byte Folded Reload4386; RV64I-NEXT:    ld s3, 128(sp) # 8-byte Folded Reload4387; RV64I-NEXT:    ld s4, 120(sp) # 8-byte Folded Reload4388; RV64I-NEXT:    ld s5, 112(sp) # 8-byte Folded Reload4389; RV64I-NEXT:    ld s6, 104(sp) # 8-byte Folded Reload4390; RV64I-NEXT:    ld s7, 96(sp) # 8-byte Folded Reload4391; RV64I-NEXT:    ld s8, 88(sp) # 8-byte Folded Reload4392; RV64I-NEXT:    ld s9, 80(sp) # 8-byte Folded Reload4393; RV64I-NEXT:    ld s10, 72(sp) # 8-byte Folded Reload4394; RV64I-NEXT:    ld s11, 64(sp) # 8-byte Folded Reload4395; RV64I-NEXT:    addi sp, sp, 1604396; RV64I-NEXT:    ret4397;4398; RV32I-LABEL: shl_32bytes_dwordOff:4399; RV32I:       # %bb.0:4400; RV32I-NEXT:    addi sp, sp, -1284401; RV32I-NEXT:    sw ra, 124(sp) # 4-byte Folded Spill4402; RV32I-NEXT:    sw s0, 120(sp) # 4-byte Folded Spill4403; RV32I-NEXT:    sw s1, 116(sp) # 4-byte Folded Spill4404; RV32I-NEXT:    sw s2, 112(sp) # 4-byte Folded Spill4405; RV32I-NEXT:    sw s3, 108(sp) # 4-byte Folded Spill4406; RV32I-NEXT:    sw s4, 104(sp) # 4-byte Folded Spill4407; RV32I-NEXT:    sw s5, 100(sp) # 4-byte Folded Spill4408; RV32I-NEXT:    sw s6, 96(sp) # 4-byte Folded Spill4409; RV32I-NEXT:    sw s7, 92(sp) # 4-byte Folded Spill4410; RV32I-NEXT:    sw s8, 88(sp) # 4-byte Folded Spill4411; RV32I-NEXT:    sw s9, 84(sp) # 4-byte Folded Spill4412; RV32I-NEXT:    sw s10, 80(sp) # 4-byte Folded Spill4413; RV32I-NEXT:    sw s11, 76(sp) # 4-byte Folded Spill4414; RV32I-NEXT:    lbu a7, 0(a0)4415; RV32I-NEXT:    lbu t0, 1(a0)4416; RV32I-NEXT:    lbu t1, 2(a0)4417; RV32I-NEXT:    lbu s1, 3(a0)4418; RV32I-NEXT:    lbu s7, 4(a0)4419; RV32I-NEXT:    lbu s8, 5(a0)4420; RV32I-NEXT:    lbu s4, 6(a0)4421; RV32I-NEXT:    lbu s6, 7(a0)4422; RV32I-NEXT:    lbu s5, 8(a0)4423; RV32I-NEXT:    lbu s10, 9(a0)4424; RV32I-NEXT:    lbu s11, 10(a0)4425; RV32I-NEXT:    lbu ra, 11(a0)4426; RV32I-NEXT:    lbu t4, 12(a0)4427; RV32I-NEXT:    lbu t6, 13(a0)4428; RV32I-NEXT:    lbu a5, 14(a0)4429; RV32I-NEXT:    lbu a6, 15(a0)4430; RV32I-NEXT:    lbu a3, 16(a0)4431; RV32I-NEXT:    lbu t2, 17(a0)4432; RV32I-NEXT:    lbu t3, 18(a0)4433; RV32I-NEXT:    lbu t5, 19(a0)4434; RV32I-NEXT:    lbu a4, 20(a0)4435; RV32I-NEXT:    lbu s0, 21(a0)4436; RV32I-NEXT:    lbu s2, 22(a0)4437; RV32I-NEXT:    lbu s3, 23(a0)4438; RV32I-NEXT:    slli t0, t0, 84439; RV32I-NEXT:    slli t1, t1, 164440; RV32I-NEXT:    slli s1, s1, 244441; RV32I-NEXT:    slli s8, s8, 84442; RV32I-NEXT:    or a7, t0, a74443; RV32I-NEXT:    or t0, s1, t14444; RV32I-NEXT:    or t1, s8, s74445; RV32I-NEXT:    lbu s1, 24(a0)4446; RV32I-NEXT:    lbu s7, 25(a0)4447; RV32I-NEXT:    lbu s8, 26(a0)4448; RV32I-NEXT:    lbu s9, 27(a0)4449; RV32I-NEXT:    slli s4, s4, 164450; RV32I-NEXT:    slli s6, s6, 244451; RV32I-NEXT:    slli s10, s10, 84452; RV32I-NEXT:    slli s11, s11, 164453; RV32I-NEXT:    slli ra, ra, 244454; RV32I-NEXT:    or s4, s6, s44455; RV32I-NEXT:    or s5, s10, s54456; RV32I-NEXT:    or s6, ra, s114457; RV32I-NEXT:    lbu s10, 28(a0)4458; RV32I-NEXT:    lbu s11, 29(a0)4459; RV32I-NEXT:    lbu ra, 30(a0)4460; RV32I-NEXT:    lbu a0, 31(a0)4461; RV32I-NEXT:    lbu a1, 0(a1)4462; RV32I-NEXT:    sw zero, 24(sp)4463; RV32I-NEXT:    sw zero, 28(sp)4464; RV32I-NEXT:    sw zero, 32(sp)4465; RV32I-NEXT:    sw zero, 36(sp)4466; RV32I-NEXT:    sw zero, 8(sp)4467; RV32I-NEXT:    sw zero, 12(sp)4468; RV32I-NEXT:    sw zero, 16(sp)4469; RV32I-NEXT:    sw zero, 20(sp)4470; RV32I-NEXT:    slli t6, t6, 84471; RV32I-NEXT:    or t4, t6, t44472; RV32I-NEXT:    addi t6, sp, 404473; RV32I-NEXT:    slli a5, a5, 164474; RV32I-NEXT:    slli a6, a6, 244475; RV32I-NEXT:    slli t2, t2, 84476; RV32I-NEXT:    slli t3, t3, 164477; RV32I-NEXT:    slli t5, t5, 244478; RV32I-NEXT:    slli s0, s0, 84479; RV32I-NEXT:    slli s2, s2, 164480; RV32I-NEXT:    slli s3, s3, 244481; RV32I-NEXT:    slli s7, s7, 84482; RV32I-NEXT:    slli s8, s8, 164483; RV32I-NEXT:    slli s9, s9, 244484; RV32I-NEXT:    slli s11, s11, 84485; RV32I-NEXT:    slli ra, ra, 164486; RV32I-NEXT:    slli a0, a0, 244487; RV32I-NEXT:    slli a1, a1, 34488; RV32I-NEXT:    or a5, a6, a54489; RV32I-NEXT:    or a3, t2, a34490; RV32I-NEXT:    or a6, t5, t34491; RV32I-NEXT:    or a4, s0, a44492; RV32I-NEXT:    or t2, s3, s24493; RV32I-NEXT:    or t3, s7, s14494; RV32I-NEXT:    or t5, s9, s84495; RV32I-NEXT:    or s0, s11, s104496; RV32I-NEXT:    or a0, a0, ra4497; RV32I-NEXT:    andi a1, a1, 244498; RV32I-NEXT:    or a7, t0, a74499; RV32I-NEXT:    or t0, s4, t14500; RV32I-NEXT:    or t1, s6, s54501; RV32I-NEXT:    or a5, a5, t44502; RV32I-NEXT:    or a3, a6, a34503; RV32I-NEXT:    or a4, t2, a44504; RV32I-NEXT:    or a6, t5, t34505; RV32I-NEXT:    or a0, a0, s04506; RV32I-NEXT:    sub t2, t6, a14507; RV32I-NEXT:    sw a3, 56(sp)4508; RV32I-NEXT:    sw a4, 60(sp)4509; RV32I-NEXT:    sw a6, 64(sp)4510; RV32I-NEXT:    sw a0, 68(sp)4511; RV32I-NEXT:    sw a7, 40(sp)4512; RV32I-NEXT:    sw t0, 44(sp)4513; RV32I-NEXT:    sw t1, 48(sp)4514; RV32I-NEXT:    sw a5, 52(sp)4515; RV32I-NEXT:    lw a1, 0(t2)4516; RV32I-NEXT:    lw a0, 4(t2)4517; RV32I-NEXT:    lw a4, 8(t2)4518; RV32I-NEXT:    lw a3, 12(t2)4519; RV32I-NEXT:    lw a7, 24(t2)4520; RV32I-NEXT:    lw a5, 20(t2)4521; RV32I-NEXT:    lw a6, 16(t2)4522; RV32I-NEXT:    lw t0, 28(t2)4523; RV32I-NEXT:    srli t1, a7, 244524; RV32I-NEXT:    srli t2, a7, 164525; RV32I-NEXT:    srli t3, a7, 84526; RV32I-NEXT:    srli t4, t0, 244527; RV32I-NEXT:    srli t5, t0, 164528; RV32I-NEXT:    srli t6, t0, 84529; RV32I-NEXT:    srli s0, a6, 244530; RV32I-NEXT:    srli s1, a6, 164531; RV32I-NEXT:    srli s2, a6, 84532; RV32I-NEXT:    srli s3, a5, 244533; RV32I-NEXT:    srli s4, a5, 164534; RV32I-NEXT:    srli s5, a5, 84535; RV32I-NEXT:    srli s6, a4, 244536; RV32I-NEXT:    srli s7, a4, 164537; RV32I-NEXT:    srli s8, a4, 84538; RV32I-NEXT:    srli s9, a3, 244539; RV32I-NEXT:    srli s10, a3, 164540; RV32I-NEXT:    srli s11, a3, 84541; RV32I-NEXT:    srli ra, a1, 244542; RV32I-NEXT:    sb a7, 24(a2)4543; RV32I-NEXT:    sb t3, 25(a2)4544; RV32I-NEXT:    sb t2, 26(a2)4545; RV32I-NEXT:    sb t1, 27(a2)4546; RV32I-NEXT:    srli a7, a1, 164547; RV32I-NEXT:    sb t0, 28(a2)4548; RV32I-NEXT:    sb t6, 29(a2)4549; RV32I-NEXT:    sb t5, 30(a2)4550; RV32I-NEXT:    sb t4, 31(a2)4551; RV32I-NEXT:    srli t0, a1, 84552; RV32I-NEXT:    sb a6, 16(a2)4553; RV32I-NEXT:    sb s2, 17(a2)4554; RV32I-NEXT:    sb s1, 18(a2)4555; RV32I-NEXT:    sb s0, 19(a2)4556; RV32I-NEXT:    srli a6, a0, 244557; RV32I-NEXT:    sb a5, 20(a2)4558; RV32I-NEXT:    sb s5, 21(a2)4559; RV32I-NEXT:    sb s4, 22(a2)4560; RV32I-NEXT:    sb s3, 23(a2)4561; RV32I-NEXT:    srli a5, a0, 164562; RV32I-NEXT:    sb a4, 8(a2)4563; RV32I-NEXT:    sb s8, 9(a2)4564; RV32I-NEXT:    sb s7, 10(a2)4565; RV32I-NEXT:    sb s6, 11(a2)4566; RV32I-NEXT:    srli a4, a0, 84567; RV32I-NEXT:    sb a3, 12(a2)4568; RV32I-NEXT:    sb s11, 13(a2)4569; RV32I-NEXT:    sb s10, 14(a2)4570; RV32I-NEXT:    sb s9, 15(a2)4571; RV32I-NEXT:    sb a1, 0(a2)4572; RV32I-NEXT:    sb t0, 1(a2)4573; RV32I-NEXT:    sb a7, 2(a2)4574; RV32I-NEXT:    sb ra, 3(a2)4575; RV32I-NEXT:    sb a0, 4(a2)4576; RV32I-NEXT:    sb a4, 5(a2)4577; RV32I-NEXT:    sb a5, 6(a2)4578; RV32I-NEXT:    sb a6, 7(a2)4579; RV32I-NEXT:    lw ra, 124(sp) # 4-byte Folded Reload4580; RV32I-NEXT:    lw s0, 120(sp) # 4-byte Folded Reload4581; RV32I-NEXT:    lw s1, 116(sp) # 4-byte Folded Reload4582; RV32I-NEXT:    lw s2, 112(sp) # 4-byte Folded Reload4583; RV32I-NEXT:    lw s3, 108(sp) # 4-byte Folded Reload4584; RV32I-NEXT:    lw s4, 104(sp) # 4-byte Folded Reload4585; RV32I-NEXT:    lw s5, 100(sp) # 4-byte Folded Reload4586; RV32I-NEXT:    lw s6, 96(sp) # 4-byte Folded Reload4587; RV32I-NEXT:    lw s7, 92(sp) # 4-byte Folded Reload4588; RV32I-NEXT:    lw s8, 88(sp) # 4-byte Folded Reload4589; RV32I-NEXT:    lw s9, 84(sp) # 4-byte Folded Reload4590; RV32I-NEXT:    lw s10, 80(sp) # 4-byte Folded Reload4591; RV32I-NEXT:    lw s11, 76(sp) # 4-byte Folded Reload4592; RV32I-NEXT:    addi sp, sp, 1284593; RV32I-NEXT:    ret4594  %src = load i256, ptr %src.ptr, align 14595  %dwordOff = load i256, ptr %dwordOff.ptr, align 14596  %bitOff = shl i256 %dwordOff, 64597  %res = shl i256 %src, %bitOff4598  store i256 %res, ptr %dst, align 14599  ret void4600}4601 4602define void @ashr_32bytes(ptr %src.ptr, ptr %byteOff.ptr, ptr %dst) nounwind {4603; RV64I-LABEL: ashr_32bytes:4604; RV64I:       # %bb.0:4605; RV64I-NEXT:    addi sp, sp, -1604606; RV64I-NEXT:    sd s0, 152(sp) # 8-byte Folded Spill4607; RV64I-NEXT:    sd s1, 144(sp) # 8-byte Folded Spill4608; RV64I-NEXT:    sd s2, 136(sp) # 8-byte Folded Spill4609; RV64I-NEXT:    sd s3, 128(sp) # 8-byte Folded Spill4610; RV64I-NEXT:    sd s4, 120(sp) # 8-byte Folded Spill4611; RV64I-NEXT:    sd s5, 112(sp) # 8-byte Folded Spill4612; RV64I-NEXT:    sd s6, 104(sp) # 8-byte Folded Spill4613; RV64I-NEXT:    sd s7, 96(sp) # 8-byte Folded Spill4614; RV64I-NEXT:    sd s8, 88(sp) # 8-byte Folded Spill4615; RV64I-NEXT:    sd s9, 80(sp) # 8-byte Folded Spill4616; RV64I-NEXT:    sd s10, 72(sp) # 8-byte Folded Spill4617; RV64I-NEXT:    sd s11, 64(sp) # 8-byte Folded Spill4618; RV64I-NEXT:    lbu a3, 0(a0)4619; RV64I-NEXT:    lbu a4, 1(a0)4620; RV64I-NEXT:    lbu a5, 2(a0)4621; RV64I-NEXT:    lbu a6, 3(a0)4622; RV64I-NEXT:    lbu a7, 4(a0)4623; RV64I-NEXT:    lbu t0, 5(a0)4624; RV64I-NEXT:    lbu t1, 6(a0)4625; RV64I-NEXT:    lbu t2, 7(a0)4626; RV64I-NEXT:    lbu t3, 8(a0)4627; RV64I-NEXT:    lbu t4, 9(a0)4628; RV64I-NEXT:    lbu t5, 10(a0)4629; RV64I-NEXT:    lbu t6, 11(a0)4630; RV64I-NEXT:    lbu s0, 12(a0)4631; RV64I-NEXT:    lbu s1, 13(a0)4632; RV64I-NEXT:    lbu s2, 14(a0)4633; RV64I-NEXT:    lbu s3, 15(a0)4634; RV64I-NEXT:    lbu s4, 16(a0)4635; RV64I-NEXT:    lbu s5, 17(a0)4636; RV64I-NEXT:    lbu s6, 18(a0)4637; RV64I-NEXT:    lbu s7, 19(a0)4638; RV64I-NEXT:    slli a4, a4, 84639; RV64I-NEXT:    slli a5, a5, 164640; RV64I-NEXT:    slli a6, a6, 244641; RV64I-NEXT:    slli t0, t0, 84642; RV64I-NEXT:    slli t1, t1, 164643; RV64I-NEXT:    slli t2, t2, 244644; RV64I-NEXT:    or a3, a4, a34645; RV64I-NEXT:    or a4, a6, a54646; RV64I-NEXT:    or a5, t0, a74647; RV64I-NEXT:    or a6, t2, t14648; RV64I-NEXT:    lbu s8, 20(a0)4649; RV64I-NEXT:    lbu s9, 21(a0)4650; RV64I-NEXT:    lbu s10, 22(a0)4651; RV64I-NEXT:    lbu s11, 23(a0)4652; RV64I-NEXT:    slli t4, t4, 84653; RV64I-NEXT:    slli t5, t5, 164654; RV64I-NEXT:    slli t6, t6, 244655; RV64I-NEXT:    slli s1, s1, 84656; RV64I-NEXT:    slli s2, s2, 164657; RV64I-NEXT:    slli s3, s3, 244658; RV64I-NEXT:    or a7, t4, t34659; RV64I-NEXT:    or t0, t6, t54660; RV64I-NEXT:    or t1, s1, s04661; RV64I-NEXT:    or t2, s3, s24662; RV64I-NEXT:    lbu t6, 24(a0)4663; RV64I-NEXT:    lbu s0, 25(a0)4664; RV64I-NEXT:    lbu s1, 26(a0)4665; RV64I-NEXT:    lbu s2, 27(a0)4666; RV64I-NEXT:    slli s5, s5, 84667; RV64I-NEXT:    slli s6, s6, 164668; RV64I-NEXT:    slli s7, s7, 244669; RV64I-NEXT:    slli s9, s9, 84670; RV64I-NEXT:    or t3, s5, s44671; RV64I-NEXT:    or t4, s7, s64672; RV64I-NEXT:    or t5, s9, s84673; RV64I-NEXT:    lbu s3, 28(a0)4674; RV64I-NEXT:    lbu s4, 29(a0)4675; RV64I-NEXT:    lbu s5, 30(a0)4676; RV64I-NEXT:    lbu s6, 31(a0)4677; RV64I-NEXT:    slli s10, s10, 164678; RV64I-NEXT:    slli s11, s11, 244679; RV64I-NEXT:    slli s0, s0, 84680; RV64I-NEXT:    slli s1, s1, 164681; RV64I-NEXT:    slli s2, s2, 244682; RV64I-NEXT:    slli s4, s4, 84683; RV64I-NEXT:    or a0, s11, s104684; RV64I-NEXT:    or t6, s0, t64685; RV64I-NEXT:    or s0, s2, s14686; RV64I-NEXT:    or s1, s4, s34687; RV64I-NEXT:    lbu s2, 0(a1)4688; RV64I-NEXT:    lbu s3, 1(a1)4689; RV64I-NEXT:    lbu s4, 2(a1)4690; RV64I-NEXT:    lbu s7, 3(a1)4691; RV64I-NEXT:    slli s5, s5, 164692; RV64I-NEXT:    slli s6, s6, 244693; RV64I-NEXT:    slli s3, s3, 84694; RV64I-NEXT:    slli s4, s4, 164695; RV64I-NEXT:    slli s7, s7, 244696; RV64I-NEXT:    or s5, s6, s54697; RV64I-NEXT:    or s2, s3, s24698; RV64I-NEXT:    or s3, s7, s44699; RV64I-NEXT:    lbu s4, 5(a1)4700; RV64I-NEXT:    lbu s6, 4(a1)4701; RV64I-NEXT:    lbu s7, 6(a1)4702; RV64I-NEXT:    lbu a1, 7(a1)4703; RV64I-NEXT:    slli s4, s4, 84704; RV64I-NEXT:    or s4, s4, s64705; RV64I-NEXT:    slli s7, s7, 164706; RV64I-NEXT:    slli a1, a1, 244707; RV64I-NEXT:    or a1, a1, s74708; RV64I-NEXT:    mv s6, sp4709; RV64I-NEXT:    or a3, a4, a34710; RV64I-NEXT:    or a4, a6, a54711; RV64I-NEXT:    or a5, t0, a74712; RV64I-NEXT:    or a6, t2, t14713; RV64I-NEXT:    or a7, t4, t34714; RV64I-NEXT:    or a0, a0, t54715; RV64I-NEXT:    or t0, s0, t64716; RV64I-NEXT:    or t1, s5, s14717; RV64I-NEXT:    or t2, s3, s24718; RV64I-NEXT:    or a1, a1, s44719; RV64I-NEXT:    slli a4, a4, 324720; RV64I-NEXT:    slli a6, a6, 324721; RV64I-NEXT:    slli a0, a0, 324722; RV64I-NEXT:    slli t3, t1, 324723; RV64I-NEXT:    slli a1, a1, 324724; RV64I-NEXT:    sraiw t1, t1, 314725; RV64I-NEXT:    or a3, a4, a34726; RV64I-NEXT:    or a4, a6, a54727; RV64I-NEXT:    or a0, a0, a74728; RV64I-NEXT:    or a5, t3, t04729; RV64I-NEXT:    or a1, a1, t24730; RV64I-NEXT:    sd t1, 32(sp)4731; RV64I-NEXT:    sd t1, 40(sp)4732; RV64I-NEXT:    sd t1, 48(sp)4733; RV64I-NEXT:    sd t1, 56(sp)4734; RV64I-NEXT:    sd a3, 0(sp)4735; RV64I-NEXT:    sd a4, 8(sp)4736; RV64I-NEXT:    sd a0, 16(sp)4737; RV64I-NEXT:    sd a5, 24(sp)4738; RV64I-NEXT:    slli a4, a1, 34739; RV64I-NEXT:    andi a1, a1, 244740; RV64I-NEXT:    add a1, s6, a14741; RV64I-NEXT:    andi a0, a4, 564742; RV64I-NEXT:    xori a5, a0, 634743; RV64I-NEXT:    ld a3, 8(a1)4744; RV64I-NEXT:    ld a6, 16(a1)4745; RV64I-NEXT:    ld a7, 0(a1)4746; RV64I-NEXT:    ld t0, 24(a1)4747; RV64I-NEXT:    srl a0, a3, a44748; RV64I-NEXT:    slli t1, a6, 14749; RV64I-NEXT:    srl a1, a7, a44750; RV64I-NEXT:    slli a7, a3, 14751; RV64I-NEXT:    srl a3, a6, a44752; RV64I-NEXT:    slli a6, t0, 14753; RV64I-NEXT:    sra t0, t0, a44754; RV64I-NEXT:    sll a4, t1, a54755; RV64I-NEXT:    sll a7, a7, a54756; RV64I-NEXT:    sll a5, a6, a54757; RV64I-NEXT:    srli a6, t0, 564758; RV64I-NEXT:    srli t1, t0, 484759; RV64I-NEXT:    srli t2, t0, 404760; RV64I-NEXT:    srli t3, t0, 324761; RV64I-NEXT:    srli t4, t0, 244762; RV64I-NEXT:    srli t5, t0, 164763; RV64I-NEXT:    srli t6, t0, 84764; RV64I-NEXT:    or a4, a0, a44765; RV64I-NEXT:    or a7, a1, a74766; RV64I-NEXT:    or a5, a3, a54767; RV64I-NEXT:    sb t3, 28(a2)4768; RV64I-NEXT:    sb t2, 29(a2)4769; RV64I-NEXT:    sb t1, 30(a2)4770; RV64I-NEXT:    sb a6, 31(a2)4771; RV64I-NEXT:    sb t0, 24(a2)4772; RV64I-NEXT:    sb t6, 25(a2)4773; RV64I-NEXT:    sb t5, 26(a2)4774; RV64I-NEXT:    sb t4, 27(a2)4775; RV64I-NEXT:    srli a6, a5, 564776; RV64I-NEXT:    srli t0, a5, 484777; RV64I-NEXT:    srli t1, a5, 404778; RV64I-NEXT:    srli t2, a5, 324779; RV64I-NEXT:    srli t3, a5, 244780; RV64I-NEXT:    srli t4, a5, 164781; RV64I-NEXT:    srli a5, a5, 84782; RV64I-NEXT:    srli t5, a7, 564783; RV64I-NEXT:    srli t6, a7, 484784; RV64I-NEXT:    srli s0, a7, 404785; RV64I-NEXT:    srli s1, a7, 324786; RV64I-NEXT:    srli s2, a7, 244787; RV64I-NEXT:    srli s3, a7, 164788; RV64I-NEXT:    srli a7, a7, 84789; RV64I-NEXT:    srli s4, a4, 564790; RV64I-NEXT:    srli s5, a4, 484791; RV64I-NEXT:    srli s6, a4, 404792; RV64I-NEXT:    sb t2, 20(a2)4793; RV64I-NEXT:    sb t1, 21(a2)4794; RV64I-NEXT:    sb t0, 22(a2)4795; RV64I-NEXT:    sb a6, 23(a2)4796; RV64I-NEXT:    srli a6, a4, 324797; RV64I-NEXT:    sb a3, 16(a2)4798; RV64I-NEXT:    sb a5, 17(a2)4799; RV64I-NEXT:    sb t4, 18(a2)4800; RV64I-NEXT:    sb t3, 19(a2)4801; RV64I-NEXT:    srli a3, a4, 244802; RV64I-NEXT:    sb s1, 4(a2)4803; RV64I-NEXT:    sb s0, 5(a2)4804; RV64I-NEXT:    sb t6, 6(a2)4805; RV64I-NEXT:    sb t5, 7(a2)4806; RV64I-NEXT:    srli a5, a4, 164807; RV64I-NEXT:    srli a4, a4, 84808; RV64I-NEXT:    sb a1, 0(a2)4809; RV64I-NEXT:    sb a7, 1(a2)4810; RV64I-NEXT:    sb s3, 2(a2)4811; RV64I-NEXT:    sb s2, 3(a2)4812; RV64I-NEXT:    sb a6, 12(a2)4813; RV64I-NEXT:    sb s6, 13(a2)4814; RV64I-NEXT:    sb s5, 14(a2)4815; RV64I-NEXT:    sb s4, 15(a2)4816; RV64I-NEXT:    sb a0, 8(a2)4817; RV64I-NEXT:    sb a4, 9(a2)4818; RV64I-NEXT:    sb a5, 10(a2)4819; RV64I-NEXT:    sb a3, 11(a2)4820; RV64I-NEXT:    ld s0, 152(sp) # 8-byte Folded Reload4821; RV64I-NEXT:    ld s1, 144(sp) # 8-byte Folded Reload4822; RV64I-NEXT:    ld s2, 136(sp) # 8-byte Folded Reload4823; RV64I-NEXT:    ld s3, 128(sp) # 8-byte Folded Reload4824; RV64I-NEXT:    ld s4, 120(sp) # 8-byte Folded Reload4825; RV64I-NEXT:    ld s5, 112(sp) # 8-byte Folded Reload4826; RV64I-NEXT:    ld s6, 104(sp) # 8-byte Folded Reload4827; RV64I-NEXT:    ld s7, 96(sp) # 8-byte Folded Reload4828; RV64I-NEXT:    ld s8, 88(sp) # 8-byte Folded Reload4829; RV64I-NEXT:    ld s9, 80(sp) # 8-byte Folded Reload4830; RV64I-NEXT:    ld s10, 72(sp) # 8-byte Folded Reload4831; RV64I-NEXT:    ld s11, 64(sp) # 8-byte Folded Reload4832; RV64I-NEXT:    addi sp, sp, 1604833; RV64I-NEXT:    ret4834;4835; RV32I-LABEL: ashr_32bytes:4836; RV32I:       # %bb.0:4837; RV32I-NEXT:    addi sp, sp, -1284838; RV32I-NEXT:    sw ra, 124(sp) # 4-byte Folded Spill4839; RV32I-NEXT:    sw s0, 120(sp) # 4-byte Folded Spill4840; RV32I-NEXT:    sw s1, 116(sp) # 4-byte Folded Spill4841; RV32I-NEXT:    sw s2, 112(sp) # 4-byte Folded Spill4842; RV32I-NEXT:    sw s3, 108(sp) # 4-byte Folded Spill4843; RV32I-NEXT:    sw s4, 104(sp) # 4-byte Folded Spill4844; RV32I-NEXT:    sw s5, 100(sp) # 4-byte Folded Spill4845; RV32I-NEXT:    sw s6, 96(sp) # 4-byte Folded Spill4846; RV32I-NEXT:    sw s7, 92(sp) # 4-byte Folded Spill4847; RV32I-NEXT:    sw s8, 88(sp) # 4-byte Folded Spill4848; RV32I-NEXT:    sw s9, 84(sp) # 4-byte Folded Spill4849; RV32I-NEXT:    sw s10, 80(sp) # 4-byte Folded Spill4850; RV32I-NEXT:    sw s11, 76(sp) # 4-byte Folded Spill4851; RV32I-NEXT:    lbu t6, 0(a0)4852; RV32I-NEXT:    lbu a4, 1(a0)4853; RV32I-NEXT:    lbu a5, 2(a0)4854; RV32I-NEXT:    lbu a6, 3(a0)4855; RV32I-NEXT:    lbu t1, 4(a0)4856; RV32I-NEXT:    lbu t3, 5(a0)4857; RV32I-NEXT:    lbu t4, 6(a0)4858; RV32I-NEXT:    lbu t5, 7(a0)4859; RV32I-NEXT:    lbu t2, 8(a0)4860; RV32I-NEXT:    lbu s1, 9(a0)4861; RV32I-NEXT:    lbu s7, 10(a0)4862; RV32I-NEXT:    lbu s8, 11(a0)4863; RV32I-NEXT:    lbu s9, 12(a0)4864; RV32I-NEXT:    lbu s10, 13(a0)4865; RV32I-NEXT:    lbu s4, 14(a0)4866; RV32I-NEXT:    lbu s6, 15(a0)4867; RV32I-NEXT:    lbu s5, 16(a0)4868; RV32I-NEXT:    lbu s11, 17(a0)4869; RV32I-NEXT:    lbu ra, 18(a0)4870; RV32I-NEXT:    lbu a3, 19(a0)4871; RV32I-NEXT:    lbu s2, 20(a0)4872; RV32I-NEXT:    lbu s3, 21(a0)4873; RV32I-NEXT:    lbu a7, 22(a0)4874; RV32I-NEXT:    lbu t0, 23(a0)4875; RV32I-NEXT:    slli a4, a4, 84876; RV32I-NEXT:    slli a5, a5, 164877; RV32I-NEXT:    slli a6, a6, 244878; RV32I-NEXT:    slli t3, t3, 84879; RV32I-NEXT:    slli t4, t4, 164880; RV32I-NEXT:    slli t5, t5, 244881; RV32I-NEXT:    or a4, a4, t64882; RV32I-NEXT:    sw a4, 4(sp) # 4-byte Folded Spill4883; RV32I-NEXT:    or a4, a6, a54884; RV32I-NEXT:    or a5, t3, t14885; RV32I-NEXT:    or a6, t5, t44886; RV32I-NEXT:    lbu t1, 24(a0)4887; RV32I-NEXT:    lbu t5, 25(a0)4888; RV32I-NEXT:    lbu t6, 26(a0)4889; RV32I-NEXT:    lbu s0, 27(a0)4890; RV32I-NEXT:    slli s1, s1, 84891; RV32I-NEXT:    slli s7, s7, 164892; RV32I-NEXT:    slli s8, s8, 244893; RV32I-NEXT:    slli s10, s10, 84894; RV32I-NEXT:    or t2, s1, t24895; RV32I-NEXT:    or t3, s8, s74896; RV32I-NEXT:    or t4, s10, s94897; RV32I-NEXT:    lbu s1, 28(a0)4898; RV32I-NEXT:    lbu s7, 29(a0)4899; RV32I-NEXT:    lbu s8, 30(a0)4900; RV32I-NEXT:    lbu s9, 31(a0)4901; RV32I-NEXT:    slli s4, s4, 164902; RV32I-NEXT:    slli s6, s6, 244903; RV32I-NEXT:    slli s11, s11, 84904; RV32I-NEXT:    slli ra, ra, 164905; RV32I-NEXT:    slli a3, a3, 244906; RV32I-NEXT:    or a0, s6, s44907; RV32I-NEXT:    or s4, s11, s54908; RV32I-NEXT:    or s5, a3, ra4909; RV32I-NEXT:    lbu a3, 0(a1)4910; RV32I-NEXT:    lbu s6, 1(a1)4911; RV32I-NEXT:    lbu s10, 2(a1)4912; RV32I-NEXT:    lbu a1, 3(a1)4913; RV32I-NEXT:    slli s3, s3, 84914; RV32I-NEXT:    or s2, s3, s24915; RV32I-NEXT:    addi s3, sp, 84916; RV32I-NEXT:    slli a7, a7, 164917; RV32I-NEXT:    slli t0, t0, 244918; RV32I-NEXT:    slli t5, t5, 84919; RV32I-NEXT:    slli t6, t6, 164920; RV32I-NEXT:    slli s0, s0, 244921; RV32I-NEXT:    slli s7, s7, 84922; RV32I-NEXT:    slli s8, s8, 164923; RV32I-NEXT:    slli s9, s9, 244924; RV32I-NEXT:    slli s6, s6, 84925; RV32I-NEXT:    slli s10, s10, 164926; RV32I-NEXT:    slli a1, a1, 244927; RV32I-NEXT:    or a7, t0, a74928; RV32I-NEXT:    or t0, t5, t14929; RV32I-NEXT:    or t1, s0, t64930; RV32I-NEXT:    or t5, s7, s14931; RV32I-NEXT:    or t6, s9, s84932; RV32I-NEXT:    or a3, s6, a34933; RV32I-NEXT:    or a1, a1, s104934; RV32I-NEXT:    srai s0, s9, 314935; RV32I-NEXT:    lw s1, 4(sp) # 4-byte Folded Reload4936; RV32I-NEXT:    or a4, a4, s14937; RV32I-NEXT:    or a5, a6, a54938; RV32I-NEXT:    or a6, t3, t24939; RV32I-NEXT:    or a0, a0, t44940; RV32I-NEXT:    or t2, s5, s44941; RV32I-NEXT:    or a7, a7, s24942; RV32I-NEXT:    or t0, t1, t04943; RV32I-NEXT:    or t1, t6, t54944; RV32I-NEXT:    or a1, a1, a34945; RV32I-NEXT:    sw s0, 56(sp)4946; RV32I-NEXT:    sw s0, 60(sp)4947; RV32I-NEXT:    sw s0, 64(sp)4948; RV32I-NEXT:    sw s0, 68(sp)4949; RV32I-NEXT:    sw s0, 40(sp)4950; RV32I-NEXT:    sw s0, 44(sp)4951; RV32I-NEXT:    sw s0, 48(sp)4952; RV32I-NEXT:    sw s0, 52(sp)4953; RV32I-NEXT:    sw t2, 24(sp)4954; RV32I-NEXT:    sw a7, 28(sp)4955; RV32I-NEXT:    sw t0, 32(sp)4956; RV32I-NEXT:    sw t1, 36(sp)4957; RV32I-NEXT:    sw a4, 8(sp)4958; RV32I-NEXT:    sw a5, 12(sp)4959; RV32I-NEXT:    sw a6, 16(sp)4960; RV32I-NEXT:    sw a0, 20(sp)4961; RV32I-NEXT:    slli t1, a1, 34962; RV32I-NEXT:    andi a1, a1, 284963; RV32I-NEXT:    add a1, s3, a14964; RV32I-NEXT:    andi a0, t1, 244965; RV32I-NEXT:    xori t0, a0, 314966; RV32I-NEXT:    lw a3, 0(a1)4967; RV32I-NEXT:    lw a4, 4(a1)4968; RV32I-NEXT:    lw a5, 8(a1)4969; RV32I-NEXT:    lw a6, 12(a1)4970; RV32I-NEXT:    lw a7, 16(a1)4971; RV32I-NEXT:    lw t2, 20(a1)4972; RV32I-NEXT:    lw t3, 24(a1)4973; RV32I-NEXT:    lw t4, 28(a1)4974; RV32I-NEXT:    srl a0, a4, t14975; RV32I-NEXT:    slli t5, a5, 14976; RV32I-NEXT:    srl a1, a3, t14977; RV32I-NEXT:    slli t6, a4, 14978; RV32I-NEXT:    srl a3, a6, t14979; RV32I-NEXT:    slli s0, a7, 14980; RV32I-NEXT:    srl a4, a5, t14981; RV32I-NEXT:    slli s1, a6, 14982; RV32I-NEXT:    srl a5, t2, t14983; RV32I-NEXT:    slli s2, t3, 14984; RV32I-NEXT:    srl a6, a7, t14985; RV32I-NEXT:    slli t2, t2, 14986; RV32I-NEXT:    srl a7, t3, t14987; RV32I-NEXT:    slli t3, t4, 14988; RV32I-NEXT:    sra t1, t4, t14989; RV32I-NEXT:    sll t4, t5, t04990; RV32I-NEXT:    sll t5, t6, t04991; RV32I-NEXT:    sll t6, s0, t04992; RV32I-NEXT:    sll s0, s1, t04993; RV32I-NEXT:    sll s1, s2, t04994; RV32I-NEXT:    sll t2, t2, t04995; RV32I-NEXT:    sll t3, t3, t04996; RV32I-NEXT:    srli s2, t1, 244997; RV32I-NEXT:    srli s3, t1, 164998; RV32I-NEXT:    srli s4, t1, 84999; RV32I-NEXT:    or t0, a0, t45000; RV32I-NEXT:    or t4, a1, t55001; RV32I-NEXT:    or t5, a3, t65002; RV32I-NEXT:    or s0, a4, s05003; RV32I-NEXT:    or s1, a5, s15004; RV32I-NEXT:    or t2, a6, t25005; RV32I-NEXT:    or t3, a7, t35006; RV32I-NEXT:    sb t1, 28(a2)5007; RV32I-NEXT:    sb s4, 29(a2)5008; RV32I-NEXT:    sb s3, 30(a2)5009; RV32I-NEXT:    sb s2, 31(a2)5010; RV32I-NEXT:    srli t1, t3, 245011; RV32I-NEXT:    srli t6, t3, 165012; RV32I-NEXT:    srli t3, t3, 85013; RV32I-NEXT:    srli s2, t2, 245014; RV32I-NEXT:    srli s3, t2, 165015; RV32I-NEXT:    srli t2, t2, 85016; RV32I-NEXT:    srli s4, s1, 245017; RV32I-NEXT:    srli s5, s1, 165018; RV32I-NEXT:    srli s1, s1, 85019; RV32I-NEXT:    srli s6, s0, 245020; RV32I-NEXT:    srli s7, s0, 165021; RV32I-NEXT:    srli s0, s0, 85022; RV32I-NEXT:    srli s8, t5, 245023; RV32I-NEXT:    srli s9, t5, 165024; RV32I-NEXT:    srli t5, t5, 85025; RV32I-NEXT:    srli s10, t4, 245026; RV32I-NEXT:    srli s11, t4, 165027; RV32I-NEXT:    srli t4, t4, 85028; RV32I-NEXT:    sb a7, 24(a2)5029; RV32I-NEXT:    sb t3, 25(a2)5030; RV32I-NEXT:    sb t6, 26(a2)5031; RV32I-NEXT:    sb t1, 27(a2)5032; RV32I-NEXT:    srli a7, t0, 245033; RV32I-NEXT:    sb a6, 16(a2)5034; RV32I-NEXT:    sb t2, 17(a2)5035; RV32I-NEXT:    sb s3, 18(a2)5036; RV32I-NEXT:    sb s2, 19(a2)5037; RV32I-NEXT:    srli a6, t0, 165038; RV32I-NEXT:    srli t0, t0, 85039; RV32I-NEXT:    sb a5, 20(a2)5040; RV32I-NEXT:    sb s1, 21(a2)5041; RV32I-NEXT:    sb s5, 22(a2)5042; RV32I-NEXT:    sb s4, 23(a2)5043; RV32I-NEXT:    sb a4, 8(a2)5044; RV32I-NEXT:    sb s0, 9(a2)5045; RV32I-NEXT:    sb s7, 10(a2)5046; RV32I-NEXT:    sb s6, 11(a2)5047; RV32I-NEXT:    sb a3, 12(a2)5048; RV32I-NEXT:    sb t5, 13(a2)5049; RV32I-NEXT:    sb s9, 14(a2)5050; RV32I-NEXT:    sb s8, 15(a2)5051; RV32I-NEXT:    sb a1, 0(a2)5052; RV32I-NEXT:    sb t4, 1(a2)5053; RV32I-NEXT:    sb s11, 2(a2)5054; RV32I-NEXT:    sb s10, 3(a2)5055; RV32I-NEXT:    sb a0, 4(a2)5056; RV32I-NEXT:    sb t0, 5(a2)5057; RV32I-NEXT:    sb a6, 6(a2)5058; RV32I-NEXT:    sb a7, 7(a2)5059; RV32I-NEXT:    lw ra, 124(sp) # 4-byte Folded Reload5060; RV32I-NEXT:    lw s0, 120(sp) # 4-byte Folded Reload5061; RV32I-NEXT:    lw s1, 116(sp) # 4-byte Folded Reload5062; RV32I-NEXT:    lw s2, 112(sp) # 4-byte Folded Reload5063; RV32I-NEXT:    lw s3, 108(sp) # 4-byte Folded Reload5064; RV32I-NEXT:    lw s4, 104(sp) # 4-byte Folded Reload5065; RV32I-NEXT:    lw s5, 100(sp) # 4-byte Folded Reload5066; RV32I-NEXT:    lw s6, 96(sp) # 4-byte Folded Reload5067; RV32I-NEXT:    lw s7, 92(sp) # 4-byte Folded Reload5068; RV32I-NEXT:    lw s8, 88(sp) # 4-byte Folded Reload5069; RV32I-NEXT:    lw s9, 84(sp) # 4-byte Folded Reload5070; RV32I-NEXT:    lw s10, 80(sp) # 4-byte Folded Reload5071; RV32I-NEXT:    lw s11, 76(sp) # 4-byte Folded Reload5072; RV32I-NEXT:    addi sp, sp, 1285073; RV32I-NEXT:    ret5074  %src = load i256, ptr %src.ptr, align 15075  %byteOff = load i256, ptr %byteOff.ptr, align 15076  %bitOff = shl i256 %byteOff, 35077  %res = ashr i256 %src, %bitOff5078  store i256 %res, ptr %dst, align 15079  ret void5080}5081 5082define void @ashr_32bytes_wordOff(ptr %src.ptr, ptr %wordOff.ptr, ptr %dst) nounwind {5083; RV64I-LABEL: ashr_32bytes_wordOff:5084; RV64I:       # %bb.0:5085; RV64I-NEXT:    addi sp, sp, -1605086; RV64I-NEXT:    sd s0, 152(sp) # 8-byte Folded Spill5087; RV64I-NEXT:    sd s1, 144(sp) # 8-byte Folded Spill5088; RV64I-NEXT:    sd s2, 136(sp) # 8-byte Folded Spill5089; RV64I-NEXT:    sd s3, 128(sp) # 8-byte Folded Spill5090; RV64I-NEXT:    sd s4, 120(sp) # 8-byte Folded Spill5091; RV64I-NEXT:    sd s5, 112(sp) # 8-byte Folded Spill5092; RV64I-NEXT:    sd s6, 104(sp) # 8-byte Folded Spill5093; RV64I-NEXT:    sd s7, 96(sp) # 8-byte Folded Spill5094; RV64I-NEXT:    sd s8, 88(sp) # 8-byte Folded Spill5095; RV64I-NEXT:    sd s9, 80(sp) # 8-byte Folded Spill5096; RV64I-NEXT:    sd s10, 72(sp) # 8-byte Folded Spill5097; RV64I-NEXT:    sd s11, 64(sp) # 8-byte Folded Spill5098; RV64I-NEXT:    lbu a3, 0(a0)5099; RV64I-NEXT:    lbu a4, 1(a0)5100; RV64I-NEXT:    lbu a5, 2(a0)5101; RV64I-NEXT:    lbu a6, 3(a0)5102; RV64I-NEXT:    lbu a7, 4(a0)5103; RV64I-NEXT:    lbu t0, 5(a0)5104; RV64I-NEXT:    lbu t1, 6(a0)5105; RV64I-NEXT:    lbu t2, 7(a0)5106; RV64I-NEXT:    lbu t3, 8(a0)5107; RV64I-NEXT:    lbu t4, 9(a0)5108; RV64I-NEXT:    lbu t5, 10(a0)5109; RV64I-NEXT:    lbu t6, 11(a0)5110; RV64I-NEXT:    lbu s0, 12(a0)5111; RV64I-NEXT:    lbu s1, 13(a0)5112; RV64I-NEXT:    lbu s2, 14(a0)5113; RV64I-NEXT:    lbu s3, 15(a0)5114; RV64I-NEXT:    lbu s4, 16(a0)5115; RV64I-NEXT:    lbu s5, 17(a0)5116; RV64I-NEXT:    lbu s6, 18(a0)5117; RV64I-NEXT:    lbu s7, 19(a0)5118; RV64I-NEXT:    slli a4, a4, 85119; RV64I-NEXT:    slli a5, a5, 165120; RV64I-NEXT:    slli a6, a6, 245121; RV64I-NEXT:    slli t0, t0, 85122; RV64I-NEXT:    slli t1, t1, 165123; RV64I-NEXT:    slli t2, t2, 245124; RV64I-NEXT:    or a3, a4, a35125; RV64I-NEXT:    or a4, a6, a55126; RV64I-NEXT:    or a5, t0, a75127; RV64I-NEXT:    or a6, t2, t15128; RV64I-NEXT:    lbu s8, 20(a0)5129; RV64I-NEXT:    lbu s9, 21(a0)5130; RV64I-NEXT:    lbu s10, 22(a0)5131; RV64I-NEXT:    lbu s11, 23(a0)5132; RV64I-NEXT:    slli t4, t4, 85133; RV64I-NEXT:    slli t5, t5, 165134; RV64I-NEXT:    slli t6, t6, 245135; RV64I-NEXT:    slli s1, s1, 85136; RV64I-NEXT:    slli s2, s2, 165137; RV64I-NEXT:    slli s3, s3, 245138; RV64I-NEXT:    or a7, t4, t35139; RV64I-NEXT:    or t0, t6, t55140; RV64I-NEXT:    or t1, s1, s05141; RV64I-NEXT:    or t2, s3, s25142; RV64I-NEXT:    lbu t6, 24(a0)5143; RV64I-NEXT:    lbu s0, 25(a0)5144; RV64I-NEXT:    lbu s1, 26(a0)5145; RV64I-NEXT:    lbu s2, 27(a0)5146; RV64I-NEXT:    slli s5, s5, 85147; RV64I-NEXT:    slli s6, s6, 165148; RV64I-NEXT:    slli s7, s7, 245149; RV64I-NEXT:    slli s9, s9, 85150; RV64I-NEXT:    or t3, s5, s45151; RV64I-NEXT:    or t4, s7, s65152; RV64I-NEXT:    or t5, s9, s85153; RV64I-NEXT:    lbu s3, 28(a0)5154; RV64I-NEXT:    lbu s4, 29(a0)5155; RV64I-NEXT:    lbu s5, 30(a0)5156; RV64I-NEXT:    lbu s6, 31(a0)5157; RV64I-NEXT:    slli s10, s10, 165158; RV64I-NEXT:    slli s11, s11, 245159; RV64I-NEXT:    slli s0, s0, 85160; RV64I-NEXT:    slli s1, s1, 165161; RV64I-NEXT:    slli s2, s2, 245162; RV64I-NEXT:    slli s4, s4, 85163; RV64I-NEXT:    or a0, s11, s105164; RV64I-NEXT:    or t6, s0, t65165; RV64I-NEXT:    or s0, s2, s15166; RV64I-NEXT:    or s1, s4, s35167; RV64I-NEXT:    lbu s2, 0(a1)5168; RV64I-NEXT:    lbu s3, 1(a1)5169; RV64I-NEXT:    lbu s4, 2(a1)5170; RV64I-NEXT:    lbu s7, 3(a1)5171; RV64I-NEXT:    slli s5, s5, 165172; RV64I-NEXT:    slli s6, s6, 245173; RV64I-NEXT:    slli s3, s3, 85174; RV64I-NEXT:    slli s4, s4, 165175; RV64I-NEXT:    slli s7, s7, 245176; RV64I-NEXT:    or s5, s6, s55177; RV64I-NEXT:    or s2, s3, s25178; RV64I-NEXT:    or s3, s7, s45179; RV64I-NEXT:    lbu s4, 5(a1)5180; RV64I-NEXT:    lbu s6, 4(a1)5181; RV64I-NEXT:    lbu s7, 6(a1)5182; RV64I-NEXT:    lbu a1, 7(a1)5183; RV64I-NEXT:    slli s4, s4, 85184; RV64I-NEXT:    or s4, s4, s65185; RV64I-NEXT:    slli s7, s7, 165186; RV64I-NEXT:    slli a1, a1, 245187; RV64I-NEXT:    or a1, a1, s75188; RV64I-NEXT:    mv s6, sp5189; RV64I-NEXT:    or a3, a4, a35190; RV64I-NEXT:    or a4, a6, a55191; RV64I-NEXT:    or a5, t0, a75192; RV64I-NEXT:    or a6, t2, t15193; RV64I-NEXT:    or a7, t4, t35194; RV64I-NEXT:    or a0, a0, t55195; RV64I-NEXT:    or t0, s0, t65196; RV64I-NEXT:    or t1, s5, s15197; RV64I-NEXT:    or t2, s3, s25198; RV64I-NEXT:    or a1, a1, s45199; RV64I-NEXT:    slli a4, a4, 325200; RV64I-NEXT:    slli a6, a6, 325201; RV64I-NEXT:    slli a0, a0, 325202; RV64I-NEXT:    slli t3, t1, 325203; RV64I-NEXT:    slli a1, a1, 325204; RV64I-NEXT:    sraiw t1, t1, 315205; RV64I-NEXT:    or a3, a4, a35206; RV64I-NEXT:    or a4, a6, a55207; RV64I-NEXT:    or a0, a0, a75208; RV64I-NEXT:    or a5, t3, t05209; RV64I-NEXT:    or a1, a1, t25210; RV64I-NEXT:    sd t1, 32(sp)5211; RV64I-NEXT:    sd t1, 40(sp)5212; RV64I-NEXT:    sd t1, 48(sp)5213; RV64I-NEXT:    sd t1, 56(sp)5214; RV64I-NEXT:    sd a3, 0(sp)5215; RV64I-NEXT:    sd a4, 8(sp)5216; RV64I-NEXT:    sd a0, 16(sp)5217; RV64I-NEXT:    sd a5, 24(sp)5218; RV64I-NEXT:    slli a3, a1, 55219; RV64I-NEXT:    slli a1, a1, 25220; RV64I-NEXT:    andi a1, a1, 245221; RV64I-NEXT:    andi a0, a3, 325222; RV64I-NEXT:    add a1, s6, a15223; RV64I-NEXT:    xori a4, a0, 635224; RV64I-NEXT:    ld a5, 8(a1)5225; RV64I-NEXT:    ld a6, 16(a1)5226; RV64I-NEXT:    ld a7, 0(a1)5227; RV64I-NEXT:    ld t0, 24(a1)5228; RV64I-NEXT:    srl a0, a5, a35229; RV64I-NEXT:    slli t1, a6, 15230; RV64I-NEXT:    srl a1, a7, a35231; RV64I-NEXT:    slli a5, a5, 15232; RV64I-NEXT:    srl a6, a6, a35233; RV64I-NEXT:    slli a7, t0, 15234; RV64I-NEXT:    sra a3, t0, a35235; RV64I-NEXT:    sll t0, t1, a45236; RV64I-NEXT:    sll a5, a5, a45237; RV64I-NEXT:    sll a4, a7, a45238; RV64I-NEXT:    srli a7, a6, 245239; RV64I-NEXT:    srli t1, a6, 165240; RV64I-NEXT:    srli t2, a6, 85241; RV64I-NEXT:    srli t3, a3, 565242; RV64I-NEXT:    srli t4, a3, 485243; RV64I-NEXT:    srli t5, a3, 405244; RV64I-NEXT:    srli t6, a3, 325245; RV64I-NEXT:    srli s0, a3, 245246; RV64I-NEXT:    srli s1, a3, 165247; RV64I-NEXT:    srli s2, a3, 85248; RV64I-NEXT:    srli s3, a1, 245249; RV64I-NEXT:    srli s4, a1, 165250; RV64I-NEXT:    srli s5, a1, 85251; RV64I-NEXT:    srli s6, a0, 245252; RV64I-NEXT:    or a4, a6, a45253; RV64I-NEXT:    sb a6, 16(a2)5254; RV64I-NEXT:    sb t2, 17(a2)5255; RV64I-NEXT:    sb t1, 18(a2)5256; RV64I-NEXT:    sb a7, 19(a2)5257; RV64I-NEXT:    srli a6, a0, 165258; RV64I-NEXT:    sb t6, 28(a2)5259; RV64I-NEXT:    sb t5, 29(a2)5260; RV64I-NEXT:    sb t4, 30(a2)5261; RV64I-NEXT:    sb t3, 31(a2)5262; RV64I-NEXT:    srli a7, a0, 85263; RV64I-NEXT:    or t0, a0, t05264; RV64I-NEXT:    or a5, a1, a55265; RV64I-NEXT:    sb a3, 24(a2)5266; RV64I-NEXT:    sb s2, 25(a2)5267; RV64I-NEXT:    sb s1, 26(a2)5268; RV64I-NEXT:    sb s0, 27(a2)5269; RV64I-NEXT:    sb a1, 0(a2)5270; RV64I-NEXT:    sb s5, 1(a2)5271; RV64I-NEXT:    sb s4, 2(a2)5272; RV64I-NEXT:    sb s3, 3(a2)5273; RV64I-NEXT:    sb a0, 8(a2)5274; RV64I-NEXT:    sb a7, 9(a2)5275; RV64I-NEXT:    sb a6, 10(a2)5276; RV64I-NEXT:    sb s6, 11(a2)5277; RV64I-NEXT:    srli a0, a4, 565278; RV64I-NEXT:    srli a1, a4, 485279; RV64I-NEXT:    srli a3, a4, 405280; RV64I-NEXT:    srli a4, a4, 325281; RV64I-NEXT:    srli a6, a5, 565282; RV64I-NEXT:    srli a7, a5, 485283; RV64I-NEXT:    srli t1, a5, 405284; RV64I-NEXT:    srli a5, a5, 325285; RV64I-NEXT:    srli t2, t0, 565286; RV64I-NEXT:    srli t3, t0, 485287; RV64I-NEXT:    srli t4, t0, 405288; RV64I-NEXT:    srli t0, t0, 325289; RV64I-NEXT:    sb a4, 20(a2)5290; RV64I-NEXT:    sb a3, 21(a2)5291; RV64I-NEXT:    sb a1, 22(a2)5292; RV64I-NEXT:    sb a0, 23(a2)5293; RV64I-NEXT:    sb a5, 4(a2)5294; RV64I-NEXT:    sb t1, 5(a2)5295; RV64I-NEXT:    sb a7, 6(a2)5296; RV64I-NEXT:    sb a6, 7(a2)5297; RV64I-NEXT:    sb t0, 12(a2)5298; RV64I-NEXT:    sb t4, 13(a2)5299; RV64I-NEXT:    sb t3, 14(a2)5300; RV64I-NEXT:    sb t2, 15(a2)5301; RV64I-NEXT:    ld s0, 152(sp) # 8-byte Folded Reload5302; RV64I-NEXT:    ld s1, 144(sp) # 8-byte Folded Reload5303; RV64I-NEXT:    ld s2, 136(sp) # 8-byte Folded Reload5304; RV64I-NEXT:    ld s3, 128(sp) # 8-byte Folded Reload5305; RV64I-NEXT:    ld s4, 120(sp) # 8-byte Folded Reload5306; RV64I-NEXT:    ld s5, 112(sp) # 8-byte Folded Reload5307; RV64I-NEXT:    ld s6, 104(sp) # 8-byte Folded Reload5308; RV64I-NEXT:    ld s7, 96(sp) # 8-byte Folded Reload5309; RV64I-NEXT:    ld s8, 88(sp) # 8-byte Folded Reload5310; RV64I-NEXT:    ld s9, 80(sp) # 8-byte Folded Reload5311; RV64I-NEXT:    ld s10, 72(sp) # 8-byte Folded Reload5312; RV64I-NEXT:    ld s11, 64(sp) # 8-byte Folded Reload5313; RV64I-NEXT:    addi sp, sp, 1605314; RV64I-NEXT:    ret5315;5316; RV32I-LABEL: ashr_32bytes_wordOff:5317; RV32I:       # %bb.0:5318; RV32I-NEXT:    addi sp, sp, -1285319; RV32I-NEXT:    sw ra, 124(sp) # 4-byte Folded Spill5320; RV32I-NEXT:    sw s0, 120(sp) # 4-byte Folded Spill5321; RV32I-NEXT:    sw s1, 116(sp) # 4-byte Folded Spill5322; RV32I-NEXT:    sw s2, 112(sp) # 4-byte Folded Spill5323; RV32I-NEXT:    sw s3, 108(sp) # 4-byte Folded Spill5324; RV32I-NEXT:    sw s4, 104(sp) # 4-byte Folded Spill5325; RV32I-NEXT:    sw s5, 100(sp) # 4-byte Folded Spill5326; RV32I-NEXT:    sw s6, 96(sp) # 4-byte Folded Spill5327; RV32I-NEXT:    sw s7, 92(sp) # 4-byte Folded Spill5328; RV32I-NEXT:    sw s8, 88(sp) # 4-byte Folded Spill5329; RV32I-NEXT:    sw s9, 84(sp) # 4-byte Folded Spill5330; RV32I-NEXT:    sw s10, 80(sp) # 4-byte Folded Spill5331; RV32I-NEXT:    sw s11, 76(sp) # 4-byte Folded Spill5332; RV32I-NEXT:    lbu a6, 0(a0)5333; RV32I-NEXT:    lbu t0, 1(a0)5334; RV32I-NEXT:    lbu t1, 2(a0)5335; RV32I-NEXT:    lbu t6, 3(a0)5336; RV32I-NEXT:    lbu s7, 4(a0)5337; RV32I-NEXT:    lbu s8, 5(a0)5338; RV32I-NEXT:    lbu s3, 6(a0)5339; RV32I-NEXT:    lbu s5, 7(a0)5340; RV32I-NEXT:    lbu s4, 8(a0)5341; RV32I-NEXT:    lbu s9, 9(a0)5342; RV32I-NEXT:    lbu s10, 10(a0)5343; RV32I-NEXT:    lbu s11, 11(a0)5344; RV32I-NEXT:    lbu s2, 12(a0)5345; RV32I-NEXT:    lbu s6, 13(a0)5346; RV32I-NEXT:    lbu a5, 14(a0)5347; RV32I-NEXT:    lbu a7, 15(a0)5348; RV32I-NEXT:    lbu a3, 16(a0)5349; RV32I-NEXT:    lbu t2, 17(a0)5350; RV32I-NEXT:    lbu t3, 18(a0)5351; RV32I-NEXT:    lbu t4, 19(a0)5352; RV32I-NEXT:    lbu a4, 20(a0)5353; RV32I-NEXT:    lbu t5, 21(a0)5354; RV32I-NEXT:    lbu s0, 22(a0)5355; RV32I-NEXT:    lbu s1, 23(a0)5356; RV32I-NEXT:    slli t0, t0, 85357; RV32I-NEXT:    slli t1, t1, 165358; RV32I-NEXT:    slli t6, t6, 245359; RV32I-NEXT:    slli s8, s8, 85360; RV32I-NEXT:    or a6, t0, a65361; RV32I-NEXT:    or t0, t6, t15362; RV32I-NEXT:    or t1, s8, s75363; RV32I-NEXT:    lbu t6, 24(a0)5364; RV32I-NEXT:    lbu s7, 25(a0)5365; RV32I-NEXT:    lbu s8, 26(a0)5366; RV32I-NEXT:    lbu ra, 27(a0)5367; RV32I-NEXT:    slli s3, s3, 165368; RV32I-NEXT:    slli s5, s5, 245369; RV32I-NEXT:    slli s9, s9, 85370; RV32I-NEXT:    slli s10, s10, 165371; RV32I-NEXT:    slli s11, s11, 245372; RV32I-NEXT:    or s3, s5, s35373; RV32I-NEXT:    or s4, s9, s45374; RV32I-NEXT:    or s5, s11, s105375; RV32I-NEXT:    lbu s9, 28(a0)5376; RV32I-NEXT:    lbu s10, 29(a0)5377; RV32I-NEXT:    lbu s11, 30(a0)5378; RV32I-NEXT:    lbu a0, 31(a0)5379; RV32I-NEXT:    lbu a1, 0(a1)5380; RV32I-NEXT:    slli s6, s6, 85381; RV32I-NEXT:    or s2, s6, s25382; RV32I-NEXT:    addi s6, sp, 85383; RV32I-NEXT:    slli a5, a5, 165384; RV32I-NEXT:    slli a7, a7, 245385; RV32I-NEXT:    slli t2, t2, 85386; RV32I-NEXT:    slli t3, t3, 165387; RV32I-NEXT:    slli t4, t4, 245388; RV32I-NEXT:    slli t5, t5, 85389; RV32I-NEXT:    slli s0, s0, 165390; RV32I-NEXT:    slli s1, s1, 245391; RV32I-NEXT:    slli s7, s7, 85392; RV32I-NEXT:    slli s8, s8, 165393; RV32I-NEXT:    slli ra, ra, 245394; RV32I-NEXT:    slli s10, s10, 85395; RV32I-NEXT:    slli s11, s11, 165396; RV32I-NEXT:    slli a0, a0, 245397; RV32I-NEXT:    slli a1, a1, 25398; RV32I-NEXT:    or a5, a7, a55399; RV32I-NEXT:    or a3, t2, a35400; RV32I-NEXT:    or a7, t4, t35401; RV32I-NEXT:    or a4, t5, a45402; RV32I-NEXT:    or s0, s1, s05403; RV32I-NEXT:    or t2, s7, t65404; RV32I-NEXT:    or t3, ra, s85405; RV32I-NEXT:    or t4, s10, s95406; RV32I-NEXT:    or t5, a0, s115407; RV32I-NEXT:    srai a0, a0, 315408; RV32I-NEXT:    andi a1, a1, 285409; RV32I-NEXT:    or a6, t0, a65410; RV32I-NEXT:    or t0, s3, t15411; RV32I-NEXT:    or t1, s5, s45412; RV32I-NEXT:    or a5, a5, s25413; RV32I-NEXT:    or a3, a7, a35414; RV32I-NEXT:    or a4, s0, a45415; RV32I-NEXT:    or a7, t3, t25416; RV32I-NEXT:    or t2, t5, t45417; RV32I-NEXT:    sw a0, 56(sp)5418; RV32I-NEXT:    sw a0, 60(sp)5419; RV32I-NEXT:    sw a0, 64(sp)5420; RV32I-NEXT:    sw a0, 68(sp)5421; RV32I-NEXT:    sw a0, 40(sp)5422; RV32I-NEXT:    sw a0, 44(sp)5423; RV32I-NEXT:    sw a0, 48(sp)5424; RV32I-NEXT:    sw a0, 52(sp)5425; RV32I-NEXT:    add s6, s6, a15426; RV32I-NEXT:    sw a3, 24(sp)5427; RV32I-NEXT:    sw a4, 28(sp)5428; RV32I-NEXT:    sw a7, 32(sp)5429; RV32I-NEXT:    sw t2, 36(sp)5430; RV32I-NEXT:    sw a6, 8(sp)5431; RV32I-NEXT:    sw t0, 12(sp)5432; RV32I-NEXT:    sw t1, 16(sp)5433; RV32I-NEXT:    sw a5, 20(sp)5434; RV32I-NEXT:    lw a1, 0(s6)5435; RV32I-NEXT:    lw a0, 4(s6)5436; RV32I-NEXT:    lw a4, 8(s6)5437; RV32I-NEXT:    lw a3, 12(s6)5438; RV32I-NEXT:    lw a7, 24(s6)5439; RV32I-NEXT:    lw a5, 20(s6)5440; RV32I-NEXT:    lw a6, 16(s6)5441; RV32I-NEXT:    lw t0, 28(s6)5442; RV32I-NEXT:    srli t1, a7, 245443; RV32I-NEXT:    srli t2, a7, 165444; RV32I-NEXT:    srli t3, a7, 85445; RV32I-NEXT:    srli t4, t0, 245446; RV32I-NEXT:    srli t5, t0, 165447; RV32I-NEXT:    srli t6, t0, 85448; RV32I-NEXT:    srli s0, a6, 245449; RV32I-NEXT:    srli s1, a6, 165450; RV32I-NEXT:    srli s2, a6, 85451; RV32I-NEXT:    srli s3, a5, 245452; RV32I-NEXT:    srli s4, a5, 165453; RV32I-NEXT:    srli s5, a5, 85454; RV32I-NEXT:    srli s6, a4, 245455; RV32I-NEXT:    srli s7, a4, 165456; RV32I-NEXT:    srli s8, a4, 85457; RV32I-NEXT:    srli s9, a3, 245458; RV32I-NEXT:    srli s10, a3, 165459; RV32I-NEXT:    srli s11, a3, 85460; RV32I-NEXT:    srli ra, a1, 245461; RV32I-NEXT:    sb a7, 24(a2)5462; RV32I-NEXT:    sb t3, 25(a2)5463; RV32I-NEXT:    sb t2, 26(a2)5464; RV32I-NEXT:    sb t1, 27(a2)5465; RV32I-NEXT:    srli a7, a1, 165466; RV32I-NEXT:    sb t0, 28(a2)5467; RV32I-NEXT:    sb t6, 29(a2)5468; RV32I-NEXT:    sb t5, 30(a2)5469; RV32I-NEXT:    sb t4, 31(a2)5470; RV32I-NEXT:    srli t0, a1, 85471; RV32I-NEXT:    sb a6, 16(a2)5472; RV32I-NEXT:    sb s2, 17(a2)5473; RV32I-NEXT:    sb s1, 18(a2)5474; RV32I-NEXT:    sb s0, 19(a2)5475; RV32I-NEXT:    srli a6, a0, 245476; RV32I-NEXT:    sb a5, 20(a2)5477; RV32I-NEXT:    sb s5, 21(a2)5478; RV32I-NEXT:    sb s4, 22(a2)5479; RV32I-NEXT:    sb s3, 23(a2)5480; RV32I-NEXT:    srli a5, a0, 165481; RV32I-NEXT:    sb a4, 8(a2)5482; RV32I-NEXT:    sb s8, 9(a2)5483; RV32I-NEXT:    sb s7, 10(a2)5484; RV32I-NEXT:    sb s6, 11(a2)5485; RV32I-NEXT:    srli a4, a0, 85486; RV32I-NEXT:    sb a3, 12(a2)5487; RV32I-NEXT:    sb s11, 13(a2)5488; RV32I-NEXT:    sb s10, 14(a2)5489; RV32I-NEXT:    sb s9, 15(a2)5490; RV32I-NEXT:    sb a1, 0(a2)5491; RV32I-NEXT:    sb t0, 1(a2)5492; RV32I-NEXT:    sb a7, 2(a2)5493; RV32I-NEXT:    sb ra, 3(a2)5494; RV32I-NEXT:    sb a0, 4(a2)5495; RV32I-NEXT:    sb a4, 5(a2)5496; RV32I-NEXT:    sb a5, 6(a2)5497; RV32I-NEXT:    sb a6, 7(a2)5498; RV32I-NEXT:    lw ra, 124(sp) # 4-byte Folded Reload5499; RV32I-NEXT:    lw s0, 120(sp) # 4-byte Folded Reload5500; RV32I-NEXT:    lw s1, 116(sp) # 4-byte Folded Reload5501; RV32I-NEXT:    lw s2, 112(sp) # 4-byte Folded Reload5502; RV32I-NEXT:    lw s3, 108(sp) # 4-byte Folded Reload5503; RV32I-NEXT:    lw s4, 104(sp) # 4-byte Folded Reload5504; RV32I-NEXT:    lw s5, 100(sp) # 4-byte Folded Reload5505; RV32I-NEXT:    lw s6, 96(sp) # 4-byte Folded Reload5506; RV32I-NEXT:    lw s7, 92(sp) # 4-byte Folded Reload5507; RV32I-NEXT:    lw s8, 88(sp) # 4-byte Folded Reload5508; RV32I-NEXT:    lw s9, 84(sp) # 4-byte Folded Reload5509; RV32I-NEXT:    lw s10, 80(sp) # 4-byte Folded Reload5510; RV32I-NEXT:    lw s11, 76(sp) # 4-byte Folded Reload5511; RV32I-NEXT:    addi sp, sp, 1285512; RV32I-NEXT:    ret5513  %src = load i256, ptr %src.ptr, align 15514  %wordOff = load i256, ptr %wordOff.ptr, align 15515  %bitOff = shl i256 %wordOff, 55516  %res = ashr i256 %src, %bitOff5517  store i256 %res, ptr %dst, align 15518  ret void5519}5520 5521define void @ashr_32bytes_dwordOff(ptr %src.ptr, ptr %dwordOff.ptr, ptr %dst) nounwind {5522; RV64I-LABEL: ashr_32bytes_dwordOff:5523; RV64I:       # %bb.0:5524; RV64I-NEXT:    addi sp, sp, -1605525; RV64I-NEXT:    sd s0, 152(sp) # 8-byte Folded Spill5526; RV64I-NEXT:    sd s1, 144(sp) # 8-byte Folded Spill5527; RV64I-NEXT:    sd s2, 136(sp) # 8-byte Folded Spill5528; RV64I-NEXT:    sd s3, 128(sp) # 8-byte Folded Spill5529; RV64I-NEXT:    sd s4, 120(sp) # 8-byte Folded Spill5530; RV64I-NEXT:    sd s5, 112(sp) # 8-byte Folded Spill5531; RV64I-NEXT:    sd s6, 104(sp) # 8-byte Folded Spill5532; RV64I-NEXT:    sd s7, 96(sp) # 8-byte Folded Spill5533; RV64I-NEXT:    sd s8, 88(sp) # 8-byte Folded Spill5534; RV64I-NEXT:    sd s9, 80(sp) # 8-byte Folded Spill5535; RV64I-NEXT:    sd s10, 72(sp) # 8-byte Folded Spill5536; RV64I-NEXT:    sd s11, 64(sp) # 8-byte Folded Spill5537; RV64I-NEXT:    lbu a5, 0(a0)5538; RV64I-NEXT:    lbu a7, 1(a0)5539; RV64I-NEXT:    lbu t1, 2(a0)5540; RV64I-NEXT:    lbu s3, 3(a0)5541; RV64I-NEXT:    lbu t0, 4(a0)5542; RV64I-NEXT:    lbu s8, 5(a0)5543; RV64I-NEXT:    lbu s9, 6(a0)5544; RV64I-NEXT:    lbu s10, 7(a0)5545; RV64I-NEXT:    lbu s2, 8(a0)5546; RV64I-NEXT:    lbu s4, 9(a0)5547; RV64I-NEXT:    lbu s5, 10(a0)5548; RV64I-NEXT:    lbu s6, 11(a0)5549; RV64I-NEXT:    lbu s7, 12(a0)5550; RV64I-NEXT:    lbu s11, 13(a0)5551; RV64I-NEXT:    lbu t4, 14(a0)5552; RV64I-NEXT:    lbu t5, 15(a0)5553; RV64I-NEXT:    lbu a3, 16(a0)5554; RV64I-NEXT:    lbu a6, 17(a0)5555; RV64I-NEXT:    lbu t2, 18(a0)5556; RV64I-NEXT:    lbu t3, 19(a0)5557; RV64I-NEXT:    lbu a4, 20(a0)5558; RV64I-NEXT:    lbu t6, 21(a0)5559; RV64I-NEXT:    lbu s0, 22(a0)5560; RV64I-NEXT:    lbu s1, 23(a0)5561; RV64I-NEXT:    slli a7, a7, 85562; RV64I-NEXT:    slli t1, t1, 165563; RV64I-NEXT:    slli s3, s3, 245564; RV64I-NEXT:    slli s8, s8, 85565; RV64I-NEXT:    slli s9, s9, 165566; RV64I-NEXT:    slli s10, s10, 245567; RV64I-NEXT:    or a5, a7, a55568; RV64I-NEXT:    or a7, s3, t15569; RV64I-NEXT:    or t0, s8, t05570; RV64I-NEXT:    or t1, s10, s95571; RV64I-NEXT:    lbu s3, 24(a0)5572; RV64I-NEXT:    lbu s8, 25(a0)5573; RV64I-NEXT:    lbu s9, 26(a0)5574; RV64I-NEXT:    lbu s10, 27(a0)5575; RV64I-NEXT:    slli s4, s4, 85576; RV64I-NEXT:    slli s5, s5, 165577; RV64I-NEXT:    slli s6, s6, 245578; RV64I-NEXT:    slli s11, s11, 85579; RV64I-NEXT:    or s2, s4, s25580; RV64I-NEXT:    or s4, s6, s55581; RV64I-NEXT:    or s5, s11, s75582; RV64I-NEXT:    lbu s6, 28(a0)5583; RV64I-NEXT:    lbu s7, 29(a0)5584; RV64I-NEXT:    lbu s11, 30(a0)5585; RV64I-NEXT:    lbu a0, 31(a0)5586; RV64I-NEXT:    lbu a1, 0(a1)5587; RV64I-NEXT:    slli t4, t4, 165588; RV64I-NEXT:    slli t5, t5, 245589; RV64I-NEXT:    or t4, t5, t45590; RV64I-NEXT:    mv t5, sp5591; RV64I-NEXT:    slli a6, a6, 85592; RV64I-NEXT:    slli t2, t2, 165593; RV64I-NEXT:    slli t3, t3, 245594; RV64I-NEXT:    slli t6, t6, 85595; RV64I-NEXT:    slli s0, s0, 165596; RV64I-NEXT:    slli s1, s1, 245597; RV64I-NEXT:    slli s8, s8, 85598; RV64I-NEXT:    slli s9, s9, 165599; RV64I-NEXT:    slli s10, s10, 245600; RV64I-NEXT:    slli s7, s7, 85601; RV64I-NEXT:    slli s11, s11, 165602; RV64I-NEXT:    slli a0, a0, 245603; RV64I-NEXT:    slli a1, a1, 35604; RV64I-NEXT:    or a3, a6, a35605; RV64I-NEXT:    or a6, t3, t25606; RV64I-NEXT:    or a4, t6, a45607; RV64I-NEXT:    or s0, s1, s05608; RV64I-NEXT:    or t2, s8, s35609; RV64I-NEXT:    or t3, s10, s95610; RV64I-NEXT:    or t6, s7, s65611; RV64I-NEXT:    or a0, a0, s115612; RV64I-NEXT:    andi a1, a1, 245613; RV64I-NEXT:    or a5, a7, a55614; RV64I-NEXT:    or a7, t1, t05615; RV64I-NEXT:    or t0, s4, s25616; RV64I-NEXT:    or t1, t4, s55617; RV64I-NEXT:    or a3, a6, a35618; RV64I-NEXT:    or a4, s0, a45619; RV64I-NEXT:    or a6, t3, t25620; RV64I-NEXT:    or a0, a0, t65621; RV64I-NEXT:    add t5, t5, a15622; RV64I-NEXT:    slli a7, a7, 325623; RV64I-NEXT:    slli t1, t1, 325624; RV64I-NEXT:    slli a4, a4, 325625; RV64I-NEXT:    slli a1, a0, 325626; RV64I-NEXT:    sraiw a0, a0, 315627; RV64I-NEXT:    or a5, a7, a55628; RV64I-NEXT:    or a7, t1, t05629; RV64I-NEXT:    or a3, a4, a35630; RV64I-NEXT:    or a1, a1, a65631; RV64I-NEXT:    sd a0, 32(sp)5632; RV64I-NEXT:    sd a0, 40(sp)5633; RV64I-NEXT:    sd a0, 48(sp)5634; RV64I-NEXT:    sd a0, 56(sp)5635; RV64I-NEXT:    sd a5, 0(sp)5636; RV64I-NEXT:    sd a7, 8(sp)5637; RV64I-NEXT:    sd a3, 16(sp)5638; RV64I-NEXT:    sd a1, 24(sp)5639; RV64I-NEXT:    ld a4, 16(t5)5640; RV64I-NEXT:    ld a0, 8(t5)5641; RV64I-NEXT:    ld a1, 0(t5)5642; RV64I-NEXT:    ld a3, 24(t5)5643; RV64I-NEXT:    srli a5, a4, 565644; RV64I-NEXT:    srli a6, a4, 485645; RV64I-NEXT:    srli a7, a4, 405646; RV64I-NEXT:    srli t0, a4, 325647; RV64I-NEXT:    srli t1, a4, 245648; RV64I-NEXT:    srli t2, a4, 165649; RV64I-NEXT:    srli t3, a4, 85650; RV64I-NEXT:    srli t4, a3, 565651; RV64I-NEXT:    srli t5, a3, 485652; RV64I-NEXT:    srli t6, a3, 405653; RV64I-NEXT:    srli s0, a3, 325654; RV64I-NEXT:    srli s1, a3, 245655; RV64I-NEXT:    srli s2, a3, 165656; RV64I-NEXT:    srli s3, a3, 85657; RV64I-NEXT:    srli s4, a1, 565658; RV64I-NEXT:    srli s5, a1, 485659; RV64I-NEXT:    srli s6, a1, 405660; RV64I-NEXT:    srli s7, a1, 325661; RV64I-NEXT:    srli s8, a1, 245662; RV64I-NEXT:    srli s9, a1, 165663; RV64I-NEXT:    srli s10, a1, 85664; RV64I-NEXT:    srli s11, a0, 565665; RV64I-NEXT:    sb t0, 20(a2)5666; RV64I-NEXT:    sb a7, 21(a2)5667; RV64I-NEXT:    sb a6, 22(a2)5668; RV64I-NEXT:    sb a5, 23(a2)5669; RV64I-NEXT:    srli a5, a0, 485670; RV64I-NEXT:    sb a4, 16(a2)5671; RV64I-NEXT:    sb t3, 17(a2)5672; RV64I-NEXT:    sb t2, 18(a2)5673; RV64I-NEXT:    sb t1, 19(a2)5674; RV64I-NEXT:    srli a4, a0, 405675; RV64I-NEXT:    sb s0, 28(a2)5676; RV64I-NEXT:    sb t6, 29(a2)5677; RV64I-NEXT:    sb t5, 30(a2)5678; RV64I-NEXT:    sb t4, 31(a2)5679; RV64I-NEXT:    srli a6, a0, 325680; RV64I-NEXT:    sb a3, 24(a2)5681; RV64I-NEXT:    sb s3, 25(a2)5682; RV64I-NEXT:    sb s2, 26(a2)5683; RV64I-NEXT:    sb s1, 27(a2)5684; RV64I-NEXT:    srli a3, a0, 245685; RV64I-NEXT:    sb s7, 4(a2)5686; RV64I-NEXT:    sb s6, 5(a2)5687; RV64I-NEXT:    sb s5, 6(a2)5688; RV64I-NEXT:    sb s4, 7(a2)5689; RV64I-NEXT:    srli a7, a0, 165690; RV64I-NEXT:    sb a1, 0(a2)5691; RV64I-NEXT:    sb s10, 1(a2)5692; RV64I-NEXT:    sb s9, 2(a2)5693; RV64I-NEXT:    sb s8, 3(a2)5694; RV64I-NEXT:    srli a1, a0, 85695; RV64I-NEXT:    sb a6, 12(a2)5696; RV64I-NEXT:    sb a4, 13(a2)5697; RV64I-NEXT:    sb a5, 14(a2)5698; RV64I-NEXT:    sb s11, 15(a2)5699; RV64I-NEXT:    sb a0, 8(a2)5700; RV64I-NEXT:    sb a1, 9(a2)5701; RV64I-NEXT:    sb a7, 10(a2)5702; RV64I-NEXT:    sb a3, 11(a2)5703; RV64I-NEXT:    ld s0, 152(sp) # 8-byte Folded Reload5704; RV64I-NEXT:    ld s1, 144(sp) # 8-byte Folded Reload5705; RV64I-NEXT:    ld s2, 136(sp) # 8-byte Folded Reload5706; RV64I-NEXT:    ld s3, 128(sp) # 8-byte Folded Reload5707; RV64I-NEXT:    ld s4, 120(sp) # 8-byte Folded Reload5708; RV64I-NEXT:    ld s5, 112(sp) # 8-byte Folded Reload5709; RV64I-NEXT:    ld s6, 104(sp) # 8-byte Folded Reload5710; RV64I-NEXT:    ld s7, 96(sp) # 8-byte Folded Reload5711; RV64I-NEXT:    ld s8, 88(sp) # 8-byte Folded Reload5712; RV64I-NEXT:    ld s9, 80(sp) # 8-byte Folded Reload5713; RV64I-NEXT:    ld s10, 72(sp) # 8-byte Folded Reload5714; RV64I-NEXT:    ld s11, 64(sp) # 8-byte Folded Reload5715; RV64I-NEXT:    addi sp, sp, 1605716; RV64I-NEXT:    ret5717;5718; RV32I-LABEL: ashr_32bytes_dwordOff:5719; RV32I:       # %bb.0:5720; RV32I-NEXT:    addi sp, sp, -1285721; RV32I-NEXT:    sw ra, 124(sp) # 4-byte Folded Spill5722; RV32I-NEXT:    sw s0, 120(sp) # 4-byte Folded Spill5723; RV32I-NEXT:    sw s1, 116(sp) # 4-byte Folded Spill5724; RV32I-NEXT:    sw s2, 112(sp) # 4-byte Folded Spill5725; RV32I-NEXT:    sw s3, 108(sp) # 4-byte Folded Spill5726; RV32I-NEXT:    sw s4, 104(sp) # 4-byte Folded Spill5727; RV32I-NEXT:    sw s5, 100(sp) # 4-byte Folded Spill5728; RV32I-NEXT:    sw s6, 96(sp) # 4-byte Folded Spill5729; RV32I-NEXT:    sw s7, 92(sp) # 4-byte Folded Spill5730; RV32I-NEXT:    sw s8, 88(sp) # 4-byte Folded Spill5731; RV32I-NEXT:    sw s9, 84(sp) # 4-byte Folded Spill5732; RV32I-NEXT:    sw s10, 80(sp) # 4-byte Folded Spill5733; RV32I-NEXT:    sw s11, 76(sp) # 4-byte Folded Spill5734; RV32I-NEXT:    lbu a6, 0(a0)5735; RV32I-NEXT:    lbu t0, 1(a0)5736; RV32I-NEXT:    lbu t1, 2(a0)5737; RV32I-NEXT:    lbu t6, 3(a0)5738; RV32I-NEXT:    lbu s7, 4(a0)5739; RV32I-NEXT:    lbu s8, 5(a0)5740; RV32I-NEXT:    lbu s3, 6(a0)5741; RV32I-NEXT:    lbu s5, 7(a0)5742; RV32I-NEXT:    lbu s4, 8(a0)5743; RV32I-NEXT:    lbu s9, 9(a0)5744; RV32I-NEXT:    lbu s10, 10(a0)5745; RV32I-NEXT:    lbu s11, 11(a0)5746; RV32I-NEXT:    lbu s2, 12(a0)5747; RV32I-NEXT:    lbu s6, 13(a0)5748; RV32I-NEXT:    lbu a5, 14(a0)5749; RV32I-NEXT:    lbu a7, 15(a0)5750; RV32I-NEXT:    lbu a3, 16(a0)5751; RV32I-NEXT:    lbu t2, 17(a0)5752; RV32I-NEXT:    lbu t3, 18(a0)5753; RV32I-NEXT:    lbu t4, 19(a0)5754; RV32I-NEXT:    lbu a4, 20(a0)5755; RV32I-NEXT:    lbu t5, 21(a0)5756; RV32I-NEXT:    lbu s0, 22(a0)5757; RV32I-NEXT:    lbu s1, 23(a0)5758; RV32I-NEXT:    slli t0, t0, 85759; RV32I-NEXT:    slli t1, t1, 165760; RV32I-NEXT:    slli t6, t6, 245761; RV32I-NEXT:    slli s8, s8, 85762; RV32I-NEXT:    or a6, t0, a65763; RV32I-NEXT:    or t0, t6, t15764; RV32I-NEXT:    or t1, s8, s75765; RV32I-NEXT:    lbu t6, 24(a0)5766; RV32I-NEXT:    lbu s7, 25(a0)5767; RV32I-NEXT:    lbu s8, 26(a0)5768; RV32I-NEXT:    lbu ra, 27(a0)5769; RV32I-NEXT:    slli s3, s3, 165770; RV32I-NEXT:    slli s5, s5, 245771; RV32I-NEXT:    slli s9, s9, 85772; RV32I-NEXT:    slli s10, s10, 165773; RV32I-NEXT:    slli s11, s11, 245774; RV32I-NEXT:    or s3, s5, s35775; RV32I-NEXT:    or s4, s9, s45776; RV32I-NEXT:    or s5, s11, s105777; RV32I-NEXT:    lbu s9, 28(a0)5778; RV32I-NEXT:    lbu s10, 29(a0)5779; RV32I-NEXT:    lbu s11, 30(a0)5780; RV32I-NEXT:    lbu a0, 31(a0)5781; RV32I-NEXT:    lbu a1, 0(a1)5782; RV32I-NEXT:    slli s6, s6, 85783; RV32I-NEXT:    or s2, s6, s25784; RV32I-NEXT:    addi s6, sp, 85785; RV32I-NEXT:    slli a5, a5, 165786; RV32I-NEXT:    slli a7, a7, 245787; RV32I-NEXT:    slli t2, t2, 85788; RV32I-NEXT:    slli t3, t3, 165789; RV32I-NEXT:    slli t4, t4, 245790; RV32I-NEXT:    slli t5, t5, 85791; RV32I-NEXT:    slli s0, s0, 165792; RV32I-NEXT:    slli s1, s1, 245793; RV32I-NEXT:    slli s7, s7, 85794; RV32I-NEXT:    slli s8, s8, 165795; RV32I-NEXT:    slli ra, ra, 245796; RV32I-NEXT:    slli s10, s10, 85797; RV32I-NEXT:    slli s11, s11, 165798; RV32I-NEXT:    slli a0, a0, 245799; RV32I-NEXT:    slli a1, a1, 35800; RV32I-NEXT:    or a5, a7, a55801; RV32I-NEXT:    or a3, t2, a35802; RV32I-NEXT:    or a7, t4, t35803; RV32I-NEXT:    or a4, t5, a45804; RV32I-NEXT:    or s0, s1, s05805; RV32I-NEXT:    or t2, s7, t65806; RV32I-NEXT:    or t3, ra, s85807; RV32I-NEXT:    or t4, s10, s95808; RV32I-NEXT:    or t5, a0, s115809; RV32I-NEXT:    srai a0, a0, 315810; RV32I-NEXT:    andi a1, a1, 245811; RV32I-NEXT:    or a6, t0, a65812; RV32I-NEXT:    or t0, s3, t15813; RV32I-NEXT:    or t1, s5, s45814; RV32I-NEXT:    or a5, a5, s25815; RV32I-NEXT:    or a3, a7, a35816; RV32I-NEXT:    or a4, s0, a45817; RV32I-NEXT:    or a7, t3, t25818; RV32I-NEXT:    or t2, t5, t45819; RV32I-NEXT:    sw a0, 56(sp)5820; RV32I-NEXT:    sw a0, 60(sp)5821; RV32I-NEXT:    sw a0, 64(sp)5822; RV32I-NEXT:    sw a0, 68(sp)5823; RV32I-NEXT:    sw a0, 40(sp)5824; RV32I-NEXT:    sw a0, 44(sp)5825; RV32I-NEXT:    sw a0, 48(sp)5826; RV32I-NEXT:    sw a0, 52(sp)5827; RV32I-NEXT:    add s6, s6, a15828; RV32I-NEXT:    sw a3, 24(sp)5829; RV32I-NEXT:    sw a4, 28(sp)5830; RV32I-NEXT:    sw a7, 32(sp)5831; RV32I-NEXT:    sw t2, 36(sp)5832; RV32I-NEXT:    sw a6, 8(sp)5833; RV32I-NEXT:    sw t0, 12(sp)5834; RV32I-NEXT:    sw t1, 16(sp)5835; RV32I-NEXT:    sw a5, 20(sp)5836; RV32I-NEXT:    lw a1, 0(s6)5837; RV32I-NEXT:    lw a0, 4(s6)5838; RV32I-NEXT:    lw a4, 8(s6)5839; RV32I-NEXT:    lw a3, 12(s6)5840; RV32I-NEXT:    lw a7, 24(s6)5841; RV32I-NEXT:    lw a5, 20(s6)5842; RV32I-NEXT:    lw a6, 16(s6)5843; RV32I-NEXT:    lw t0, 28(s6)5844; RV32I-NEXT:    srli t1, a7, 245845; RV32I-NEXT:    srli t2, a7, 165846; RV32I-NEXT:    srli t3, a7, 85847; RV32I-NEXT:    srli t4, t0, 245848; RV32I-NEXT:    srli t5, t0, 165849; RV32I-NEXT:    srli t6, t0, 85850; RV32I-NEXT:    srli s0, a6, 245851; RV32I-NEXT:    srli s1, a6, 165852; RV32I-NEXT:    srli s2, a6, 85853; RV32I-NEXT:    srli s3, a5, 245854; RV32I-NEXT:    srli s4, a5, 165855; RV32I-NEXT:    srli s5, a5, 85856; RV32I-NEXT:    srli s6, a4, 245857; RV32I-NEXT:    srli s7, a4, 165858; RV32I-NEXT:    srli s8, a4, 85859; RV32I-NEXT:    srli s9, a3, 245860; RV32I-NEXT:    srli s10, a3, 165861; RV32I-NEXT:    srli s11, a3, 85862; RV32I-NEXT:    srli ra, a1, 245863; RV32I-NEXT:    sb a7, 24(a2)5864; RV32I-NEXT:    sb t3, 25(a2)5865; RV32I-NEXT:    sb t2, 26(a2)5866; RV32I-NEXT:    sb t1, 27(a2)5867; RV32I-NEXT:    srli a7, a1, 165868; RV32I-NEXT:    sb t0, 28(a2)5869; RV32I-NEXT:    sb t6, 29(a2)5870; RV32I-NEXT:    sb t5, 30(a2)5871; RV32I-NEXT:    sb t4, 31(a2)5872; RV32I-NEXT:    srli t0, a1, 85873; RV32I-NEXT:    sb a6, 16(a2)5874; RV32I-NEXT:    sb s2, 17(a2)5875; RV32I-NEXT:    sb s1, 18(a2)5876; RV32I-NEXT:    sb s0, 19(a2)5877; RV32I-NEXT:    srli a6, a0, 245878; RV32I-NEXT:    sb a5, 20(a2)5879; RV32I-NEXT:    sb s5, 21(a2)5880; RV32I-NEXT:    sb s4, 22(a2)5881; RV32I-NEXT:    sb s3, 23(a2)5882; RV32I-NEXT:    srli a5, a0, 165883; RV32I-NEXT:    sb a4, 8(a2)5884; RV32I-NEXT:    sb s8, 9(a2)5885; RV32I-NEXT:    sb s7, 10(a2)5886; RV32I-NEXT:    sb s6, 11(a2)5887; RV32I-NEXT:    srli a4, a0, 85888; RV32I-NEXT:    sb a3, 12(a2)5889; RV32I-NEXT:    sb s11, 13(a2)5890; RV32I-NEXT:    sb s10, 14(a2)5891; RV32I-NEXT:    sb s9, 15(a2)5892; RV32I-NEXT:    sb a1, 0(a2)5893; RV32I-NEXT:    sb t0, 1(a2)5894; RV32I-NEXT:    sb a7, 2(a2)5895; RV32I-NEXT:    sb ra, 3(a2)5896; RV32I-NEXT:    sb a0, 4(a2)5897; RV32I-NEXT:    sb a4, 5(a2)5898; RV32I-NEXT:    sb a5, 6(a2)5899; RV32I-NEXT:    sb a6, 7(a2)5900; RV32I-NEXT:    lw ra, 124(sp) # 4-byte Folded Reload5901; RV32I-NEXT:    lw s0, 120(sp) # 4-byte Folded Reload5902; RV32I-NEXT:    lw s1, 116(sp) # 4-byte Folded Reload5903; RV32I-NEXT:    lw s2, 112(sp) # 4-byte Folded Reload5904; RV32I-NEXT:    lw s3, 108(sp) # 4-byte Folded Reload5905; RV32I-NEXT:    lw s4, 104(sp) # 4-byte Folded Reload5906; RV32I-NEXT:    lw s5, 100(sp) # 4-byte Folded Reload5907; RV32I-NEXT:    lw s6, 96(sp) # 4-byte Folded Reload5908; RV32I-NEXT:    lw s7, 92(sp) # 4-byte Folded Reload5909; RV32I-NEXT:    lw s8, 88(sp) # 4-byte Folded Reload5910; RV32I-NEXT:    lw s9, 84(sp) # 4-byte Folded Reload5911; RV32I-NEXT:    lw s10, 80(sp) # 4-byte Folded Reload5912; RV32I-NEXT:    lw s11, 76(sp) # 4-byte Folded Reload5913; RV32I-NEXT:    addi sp, sp, 1285914; RV32I-NEXT:    ret5915  %src = load i256, ptr %src.ptr, align 15916  %dwordOff = load i256, ptr %dwordOff.ptr, align 15917  %bitOff = shl i256 %dwordOff, 65918  %res = ashr i256 %src, %bitOff5919  store i256 %res, ptr %dst, align 15920  ret void5921}5922