13111 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=riscv64 -verify-machineinstrs -global-isel < %s | FileCheck %s -check-prefixes=RV64I3; RUN: llc -mtriple=riscv32 -verify-machineinstrs -global-isel < %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, 1(a0)9; RV64I-NEXT: lbu a4, 0(a0)10; RV64I-NEXT: lbu a5, 2(a0)11; RV64I-NEXT: lbu a0, 3(a0)12; RV64I-NEXT: slli a3, a3, 813; RV64I-NEXT: or a3, a3, a414; RV64I-NEXT: lbu a4, 0(a1)15; RV64I-NEXT: lbu a6, 1(a1)16; RV64I-NEXT: lbu a7, 2(a1)17; RV64I-NEXT: lbu a1, 3(a1)18; RV64I-NEXT: slli a0, a0, 819; RV64I-NEXT: or a0, a0, a520; RV64I-NEXT: slli a6, a6, 821; RV64I-NEXT: or a4, a6, a422; RV64I-NEXT: slli a1, a1, 823; RV64I-NEXT: or a1, a1, a724; RV64I-NEXT: slli a0, a0, 1625; RV64I-NEXT: slli a1, a1, 1626; RV64I-NEXT: or a0, a0, a327; RV64I-NEXT: or a1, a1, a428; RV64I-NEXT: slli a1, a1, 329; RV64I-NEXT: srlw a0, a0, a130; RV64I-NEXT: srliw a1, a0, 1631; RV64I-NEXT: slli a3, a0, 4832; RV64I-NEXT: srliw a4, a0, 2433; RV64I-NEXT: srli a3, a3, 4834; RV64I-NEXT: srli a3, a3, 835; RV64I-NEXT: sb a0, 0(a2)36; RV64I-NEXT: sb a3, 1(a2)37; RV64I-NEXT: sb a1, 2(a2)38; RV64I-NEXT: sb a4, 3(a2)39; RV64I-NEXT: ret40;41; RV32I-LABEL: lshr_4bytes:42; RV32I: # %bb.0:43; RV32I-NEXT: lbu a3, 1(a0)44; RV32I-NEXT: lbu a4, 0(a0)45; RV32I-NEXT: lbu a5, 2(a0)46; RV32I-NEXT: lbu a0, 3(a0)47; RV32I-NEXT: slli a3, a3, 848; RV32I-NEXT: or a3, a3, a449; RV32I-NEXT: lbu a4, 0(a1)50; RV32I-NEXT: lbu a6, 1(a1)51; RV32I-NEXT: lbu a7, 2(a1)52; RV32I-NEXT: lbu a1, 3(a1)53; RV32I-NEXT: slli a0, a0, 854; RV32I-NEXT: or a0, a0, a555; RV32I-NEXT: slli a6, a6, 856; RV32I-NEXT: or a4, a6, a457; RV32I-NEXT: slli a1, a1, 858; RV32I-NEXT: or a1, a1, a759; RV32I-NEXT: slli a0, a0, 1660; RV32I-NEXT: slli a1, a1, 1661; RV32I-NEXT: or a0, a0, a362; RV32I-NEXT: or a1, a1, a463; RV32I-NEXT: slli a1, a1, 364; RV32I-NEXT: srl a0, a0, a165; RV32I-NEXT: srli a1, a0, 1666; RV32I-NEXT: slli a3, a0, 1667; RV32I-NEXT: srli a4, a0, 2468; RV32I-NEXT: srli a3, a3, 1669; RV32I-NEXT: srli a3, a3, 870; RV32I-NEXT: sb a0, 0(a2)71; RV32I-NEXT: sb a3, 1(a2)72; RV32I-NEXT: sb a1, 2(a2)73; RV32I-NEXT: sb a4, 3(a2)74; RV32I-NEXT: ret75 %src = load i32, ptr %src.ptr, align 176 %byteOff = load i32, ptr %byteOff.ptr, align 177 %bitOff = shl i32 %byteOff, 378 %res = lshr i32 %src, %bitOff79 store i32 %res, ptr %dst, align 180 ret void81}82define void @shl_4bytes(ptr %src.ptr, ptr %byteOff.ptr, ptr %dst) nounwind {83; RV64I-LABEL: shl_4bytes:84; RV64I: # %bb.0:85; RV64I-NEXT: lbu a3, 1(a0)86; RV64I-NEXT: lbu a4, 0(a0)87; RV64I-NEXT: lbu a5, 2(a0)88; RV64I-NEXT: lbu a0, 3(a0)89; RV64I-NEXT: slli a3, a3, 890; RV64I-NEXT: or a3, a3, a491; RV64I-NEXT: lbu a4, 0(a1)92; RV64I-NEXT: lbu a6, 1(a1)93; RV64I-NEXT: lbu a7, 2(a1)94; RV64I-NEXT: lbu a1, 3(a1)95; RV64I-NEXT: slli a0, a0, 896; RV64I-NEXT: or a0, a0, a597; RV64I-NEXT: slli a6, a6, 898; RV64I-NEXT: or a4, a6, a499; RV64I-NEXT: slli a1, a1, 8100; RV64I-NEXT: or a1, a1, a7101; RV64I-NEXT: slli a0, a0, 16102; RV64I-NEXT: slli a1, a1, 16103; RV64I-NEXT: or a0, a0, a3104; RV64I-NEXT: or a1, a1, a4105; RV64I-NEXT: slli a1, a1, 3106; RV64I-NEXT: sllw a0, a0, a1107; RV64I-NEXT: srliw a1, a0, 16108; RV64I-NEXT: slli a3, a0, 48109; RV64I-NEXT: srliw a4, a0, 24110; RV64I-NEXT: srli a3, a3, 48111; RV64I-NEXT: srli a3, a3, 8112; RV64I-NEXT: sb a0, 0(a2)113; RV64I-NEXT: sb a3, 1(a2)114; RV64I-NEXT: sb a1, 2(a2)115; RV64I-NEXT: sb a4, 3(a2)116; RV64I-NEXT: ret117;118; RV32I-LABEL: shl_4bytes:119; RV32I: # %bb.0:120; RV32I-NEXT: lbu a3, 1(a0)121; RV32I-NEXT: lbu a4, 0(a0)122; RV32I-NEXT: lbu a5, 2(a0)123; RV32I-NEXT: lbu a0, 3(a0)124; RV32I-NEXT: slli a3, a3, 8125; RV32I-NEXT: or a3, a3, a4126; RV32I-NEXT: lbu a4, 0(a1)127; RV32I-NEXT: lbu a6, 1(a1)128; RV32I-NEXT: lbu a7, 2(a1)129; RV32I-NEXT: lbu a1, 3(a1)130; RV32I-NEXT: slli a0, a0, 8131; RV32I-NEXT: or a0, a0, a5132; RV32I-NEXT: slli a6, a6, 8133; RV32I-NEXT: or a4, a6, a4134; RV32I-NEXT: slli a1, a1, 8135; RV32I-NEXT: or a1, a1, a7136; RV32I-NEXT: slli a0, a0, 16137; RV32I-NEXT: slli a1, a1, 16138; RV32I-NEXT: or a0, a0, a3139; RV32I-NEXT: or a1, a1, a4140; RV32I-NEXT: slli a1, a1, 3141; RV32I-NEXT: sll a0, a0, a1142; RV32I-NEXT: srli a1, a0, 16143; RV32I-NEXT: slli a3, a0, 16144; RV32I-NEXT: srli a4, a0, 24145; RV32I-NEXT: srli a3, a3, 16146; RV32I-NEXT: srli a3, a3, 8147; RV32I-NEXT: sb a0, 0(a2)148; RV32I-NEXT: sb a3, 1(a2)149; RV32I-NEXT: sb a1, 2(a2)150; RV32I-NEXT: sb a4, 3(a2)151; RV32I-NEXT: ret152 %src = load i32, ptr %src.ptr, align 1153 %byteOff = load i32, ptr %byteOff.ptr, align 1154 %bitOff = shl i32 %byteOff, 3155 %res = shl i32 %src, %bitOff156 store i32 %res, ptr %dst, align 1157 ret void158}159define void @ashr_4bytes(ptr %src.ptr, ptr %byteOff.ptr, ptr %dst) nounwind {160; RV64I-LABEL: ashr_4bytes:161; RV64I: # %bb.0:162; RV64I-NEXT: lbu a3, 1(a0)163; RV64I-NEXT: lbu a4, 0(a0)164; RV64I-NEXT: lbu a5, 2(a0)165; RV64I-NEXT: lbu a0, 3(a0)166; RV64I-NEXT: slli a3, a3, 8167; RV64I-NEXT: or a3, a3, a4168; RV64I-NEXT: lbu a4, 0(a1)169; RV64I-NEXT: lbu a6, 1(a1)170; RV64I-NEXT: lbu a7, 2(a1)171; RV64I-NEXT: lbu a1, 3(a1)172; RV64I-NEXT: slli a0, a0, 8173; RV64I-NEXT: or a0, a0, a5174; RV64I-NEXT: slli a6, a6, 8175; RV64I-NEXT: or a4, a6, a4176; RV64I-NEXT: slli a1, a1, 8177; RV64I-NEXT: or a1, a1, a7178; RV64I-NEXT: slli a0, a0, 16179; RV64I-NEXT: slli a1, a1, 16180; RV64I-NEXT: or a0, a0, a3181; RV64I-NEXT: or a1, a1, a4182; RV64I-NEXT: slli a1, a1, 3183; RV64I-NEXT: sraw a0, a0, a1184; RV64I-NEXT: srliw a1, a0, 16185; RV64I-NEXT: slli a3, a0, 48186; RV64I-NEXT: srliw a4, a0, 24187; RV64I-NEXT: srli a3, a3, 48188; RV64I-NEXT: srli a3, a3, 8189; RV64I-NEXT: sb a0, 0(a2)190; RV64I-NEXT: sb a3, 1(a2)191; RV64I-NEXT: sb a1, 2(a2)192; RV64I-NEXT: sb a4, 3(a2)193; RV64I-NEXT: ret194;195; RV32I-LABEL: ashr_4bytes:196; RV32I: # %bb.0:197; RV32I-NEXT: lbu a3, 1(a0)198; RV32I-NEXT: lbu a4, 0(a0)199; RV32I-NEXT: lbu a5, 2(a0)200; RV32I-NEXT: lbu a0, 3(a0)201; RV32I-NEXT: slli a3, a3, 8202; RV32I-NEXT: or a3, a3, a4203; RV32I-NEXT: lbu a4, 0(a1)204; RV32I-NEXT: lbu a6, 1(a1)205; RV32I-NEXT: lbu a7, 2(a1)206; RV32I-NEXT: lbu a1, 3(a1)207; RV32I-NEXT: slli a0, a0, 8208; RV32I-NEXT: or a0, a0, a5209; RV32I-NEXT: slli a6, a6, 8210; RV32I-NEXT: or a4, a6, a4211; RV32I-NEXT: slli a1, a1, 8212; RV32I-NEXT: or a1, a1, a7213; RV32I-NEXT: slli a0, a0, 16214; RV32I-NEXT: slli a1, a1, 16215; RV32I-NEXT: or a0, a0, a3216; RV32I-NEXT: or a1, a1, a4217; RV32I-NEXT: slli a1, a1, 3218; RV32I-NEXT: sra a0, a0, a1219; RV32I-NEXT: srli a1, a0, 16220; RV32I-NEXT: slli a3, a0, 16221; RV32I-NEXT: srli a4, a0, 24222; RV32I-NEXT: srli a3, a3, 16223; RV32I-NEXT: srli a3, a3, 8224; RV32I-NEXT: sb a0, 0(a2)225; RV32I-NEXT: sb a3, 1(a2)226; RV32I-NEXT: sb a1, 2(a2)227; RV32I-NEXT: sb a4, 3(a2)228; RV32I-NEXT: ret229 %src = load i32, ptr %src.ptr, align 1230 %byteOff = load i32, ptr %byteOff.ptr, align 1231 %bitOff = shl i32 %byteOff, 3232 %res = ashr i32 %src, %bitOff233 store i32 %res, ptr %dst, align 1234 ret void235}236 237define void @lshr_8bytes(ptr %src.ptr, ptr %byteOff.ptr, ptr %dst) nounwind {238; RV64I-LABEL: lshr_8bytes:239; RV64I: # %bb.0:240; RV64I-NEXT: lbu a3, 0(a0)241; RV64I-NEXT: lbu a4, 1(a0)242; RV64I-NEXT: lbu a5, 2(a0)243; RV64I-NEXT: lbu a6, 3(a0)244; RV64I-NEXT: lbu a7, 4(a0)245; RV64I-NEXT: lbu t0, 5(a0)246; RV64I-NEXT: lbu t1, 6(a0)247; RV64I-NEXT: lbu a0, 7(a0)248; RV64I-NEXT: slli a4, a4, 8249; RV64I-NEXT: slli a6, a6, 8250; RV64I-NEXT: or a3, a4, a3251; RV64I-NEXT: or a4, a6, a5252; RV64I-NEXT: lbu a5, 0(a1)253; RV64I-NEXT: lbu a6, 1(a1)254; RV64I-NEXT: lbu t2, 2(a1)255; RV64I-NEXT: lbu t3, 3(a1)256; RV64I-NEXT: slli t0, t0, 8257; RV64I-NEXT: slli a0, a0, 8258; RV64I-NEXT: slli a6, a6, 8259; RV64I-NEXT: or a7, t0, a7260; RV64I-NEXT: or a0, a0, t1261; RV64I-NEXT: or a5, a6, a5262; RV64I-NEXT: lbu a6, 4(a1)263; RV64I-NEXT: lbu t0, 5(a1)264; RV64I-NEXT: lbu t1, 6(a1)265; RV64I-NEXT: lbu a1, 7(a1)266; RV64I-NEXT: slli t3, t3, 8267; RV64I-NEXT: or t2, t3, t2268; RV64I-NEXT: slli t0, t0, 8269; RV64I-NEXT: or a6, t0, a6270; RV64I-NEXT: slli a1, a1, 8271; RV64I-NEXT: or a1, a1, t1272; RV64I-NEXT: slli a4, a4, 16273; RV64I-NEXT: or a3, a4, a3274; RV64I-NEXT: lui a4, 16275; RV64I-NEXT: addi a4, a4, -1276; RV64I-NEXT: slli a0, a0, 16277; RV64I-NEXT: slli t2, t2, 16278; RV64I-NEXT: slli a1, a1, 16279; RV64I-NEXT: or a0, a0, a7280; RV64I-NEXT: or a5, t2, a5281; RV64I-NEXT: or a1, a1, a6282; RV64I-NEXT: slli a0, a0, 32283; RV64I-NEXT: slli a1, a1, 32284; RV64I-NEXT: or a0, a0, a3285; RV64I-NEXT: or a1, a1, a5286; RV64I-NEXT: slli a1, a1, 3287; RV64I-NEXT: srl a0, a0, a1288; RV64I-NEXT: srli a1, a0, 32289; RV64I-NEXT: srliw a3, a0, 16290; RV64I-NEXT: and a5, a0, a4291; RV64I-NEXT: srliw a6, a0, 24292; RV64I-NEXT: srli a7, a0, 48293; RV64I-NEXT: srli t0, a0, 56294; RV64I-NEXT: srli a5, a5, 8295; RV64I-NEXT: and a4, a1, a4296; RV64I-NEXT: sb a0, 0(a2)297; RV64I-NEXT: sb a5, 1(a2)298; RV64I-NEXT: sb a3, 2(a2)299; RV64I-NEXT: sb a6, 3(a2)300; RV64I-NEXT: srli a4, a4, 8301; RV64I-NEXT: sb a1, 4(a2)302; RV64I-NEXT: sb a4, 5(a2)303; RV64I-NEXT: sb a7, 6(a2)304; RV64I-NEXT: sb t0, 7(a2)305; RV64I-NEXT: ret306;307; RV32I-LABEL: lshr_8bytes:308; RV32I: # %bb.0:309; RV32I-NEXT: lbu a3, 0(a0)310; RV32I-NEXT: lbu a4, 1(a0)311; RV32I-NEXT: lbu a5, 2(a0)312; RV32I-NEXT: lbu a6, 3(a0)313; RV32I-NEXT: lbu a7, 4(a0)314; RV32I-NEXT: lbu t0, 5(a0)315; RV32I-NEXT: lbu t1, 6(a0)316; RV32I-NEXT: lbu a0, 7(a0)317; RV32I-NEXT: slli a4, a4, 8318; RV32I-NEXT: slli a6, a6, 8319; RV32I-NEXT: slli t0, t0, 8320; RV32I-NEXT: or a3, a4, a3321; RV32I-NEXT: or a4, a6, a5322; RV32I-NEXT: or a5, t0, a7323; RV32I-NEXT: lbu a6, 0(a1)324; RV32I-NEXT: lbu a7, 1(a1)325; RV32I-NEXT: lbu t0, 2(a1)326; RV32I-NEXT: lbu a1, 3(a1)327; RV32I-NEXT: slli a0, a0, 8328; RV32I-NEXT: or t1, a0, t1329; RV32I-NEXT: slli a7, a7, 8330; RV32I-NEXT: or a6, a7, a6331; RV32I-NEXT: slli a1, a1, 8332; RV32I-NEXT: or a1, a1, t0333; RV32I-NEXT: slli a0, a4, 16334; RV32I-NEXT: or a0, a0, a3335; RV32I-NEXT: slli a3, t1, 16336; RV32I-NEXT: slli a1, a1, 16337; RV32I-NEXT: or a1, a1, a6338; RV32I-NEXT: slli a1, a1, 3339; RV32I-NEXT: li a4, 32340; RV32I-NEXT: or a3, a3, a5341; RV32I-NEXT: bltu a1, a4, .LBB3_2342; RV32I-NEXT: # %bb.1:343; RV32I-NEXT: srl a5, a3, a1344; RV32I-NEXT: bnez a1, .LBB3_3345; RV32I-NEXT: j .LBB3_4346; RV32I-NEXT: .LBB3_2:347; RV32I-NEXT: srl a5, a0, a1348; RV32I-NEXT: neg a6, a1349; RV32I-NEXT: sll a6, a3, a6350; RV32I-NEXT: or a5, a5, a6351; RV32I-NEXT: beqz a1, .LBB3_4352; RV32I-NEXT: .LBB3_3:353; RV32I-NEXT: mv a0, a5354; RV32I-NEXT: .LBB3_4:355; RV32I-NEXT: bltu a1, a4, .LBB3_6356; RV32I-NEXT: # %bb.5:357; RV32I-NEXT: li a1, 0358; RV32I-NEXT: j .LBB3_7359; RV32I-NEXT: .LBB3_6:360; RV32I-NEXT: srl a1, a3, a1361; RV32I-NEXT: .LBB3_7:362; RV32I-NEXT: srli a3, a0, 16363; RV32I-NEXT: lui a4, 16364; RV32I-NEXT: srli a5, a0, 24365; RV32I-NEXT: srli a6, a1, 16366; RV32I-NEXT: srli a7, a1, 24367; RV32I-NEXT: addi a4, a4, -1368; RV32I-NEXT: and t0, a0, a4369; RV32I-NEXT: and a4, a1, a4370; RV32I-NEXT: srli t0, t0, 8371; RV32I-NEXT: srli a4, a4, 8372; RV32I-NEXT: sb a0, 0(a2)373; RV32I-NEXT: sb t0, 1(a2)374; RV32I-NEXT: sb a3, 2(a2)375; RV32I-NEXT: sb a5, 3(a2)376; RV32I-NEXT: sb a1, 4(a2)377; RV32I-NEXT: sb a4, 5(a2)378; RV32I-NEXT: sb a6, 6(a2)379; RV32I-NEXT: sb a7, 7(a2)380; RV32I-NEXT: ret381 %src = load i64, ptr %src.ptr, align 1382 %byteOff = load i64, ptr %byteOff.ptr, align 1383 %bitOff = shl i64 %byteOff, 3384 %res = lshr i64 %src, %bitOff385 store i64 %res, ptr %dst, align 1386 ret void387}388define void @shl_8bytes(ptr %src.ptr, ptr %byteOff.ptr, ptr %dst) nounwind {389; RV64I-LABEL: shl_8bytes:390; RV64I: # %bb.0:391; RV64I-NEXT: lbu a3, 0(a0)392; RV64I-NEXT: lbu a4, 1(a0)393; RV64I-NEXT: lbu a5, 2(a0)394; RV64I-NEXT: lbu a6, 3(a0)395; RV64I-NEXT: lbu a7, 4(a0)396; RV64I-NEXT: lbu t0, 5(a0)397; RV64I-NEXT: lbu t1, 6(a0)398; RV64I-NEXT: lbu a0, 7(a0)399; RV64I-NEXT: slli a4, a4, 8400; RV64I-NEXT: slli a6, a6, 8401; RV64I-NEXT: or a3, a4, a3402; RV64I-NEXT: or a4, a6, a5403; RV64I-NEXT: lbu a5, 0(a1)404; RV64I-NEXT: lbu a6, 1(a1)405; RV64I-NEXT: lbu t2, 2(a1)406; RV64I-NEXT: lbu t3, 3(a1)407; RV64I-NEXT: slli t0, t0, 8408; RV64I-NEXT: slli a0, a0, 8409; RV64I-NEXT: slli a6, a6, 8410; RV64I-NEXT: or a7, t0, a7411; RV64I-NEXT: or a0, a0, t1412; RV64I-NEXT: or a5, a6, a5413; RV64I-NEXT: lbu a6, 4(a1)414; RV64I-NEXT: lbu t0, 5(a1)415; RV64I-NEXT: lbu t1, 6(a1)416; RV64I-NEXT: lbu a1, 7(a1)417; RV64I-NEXT: slli t3, t3, 8418; RV64I-NEXT: or t2, t3, t2419; RV64I-NEXT: slli t0, t0, 8420; RV64I-NEXT: or a6, t0, a6421; RV64I-NEXT: slli a1, a1, 8422; RV64I-NEXT: or a1, a1, t1423; RV64I-NEXT: slli a4, a4, 16424; RV64I-NEXT: or a3, a4, a3425; RV64I-NEXT: lui a4, 16426; RV64I-NEXT: addi a4, a4, -1427; RV64I-NEXT: slli a0, a0, 16428; RV64I-NEXT: slli t2, t2, 16429; RV64I-NEXT: slli a1, a1, 16430; RV64I-NEXT: or a0, a0, a7431; RV64I-NEXT: or a5, t2, a5432; RV64I-NEXT: or a1, a1, a6433; RV64I-NEXT: slli a0, a0, 32434; RV64I-NEXT: slli a1, a1, 32435; RV64I-NEXT: or a0, a0, a3436; RV64I-NEXT: or a1, a1, a5437; RV64I-NEXT: slli a1, a1, 3438; RV64I-NEXT: sll a0, a0, a1439; RV64I-NEXT: srli a1, a0, 32440; RV64I-NEXT: srliw a3, a0, 16441; RV64I-NEXT: and a5, a0, a4442; RV64I-NEXT: srliw a6, a0, 24443; RV64I-NEXT: srli a7, a0, 48444; RV64I-NEXT: srli t0, a0, 56445; RV64I-NEXT: srli a5, a5, 8446; RV64I-NEXT: and a4, a1, a4447; RV64I-NEXT: sb a0, 0(a2)448; RV64I-NEXT: sb a5, 1(a2)449; RV64I-NEXT: sb a3, 2(a2)450; RV64I-NEXT: sb a6, 3(a2)451; RV64I-NEXT: srli a4, a4, 8452; RV64I-NEXT: sb a1, 4(a2)453; RV64I-NEXT: sb a4, 5(a2)454; RV64I-NEXT: sb a7, 6(a2)455; RV64I-NEXT: sb t0, 7(a2)456; RV64I-NEXT: ret457;458; RV32I-LABEL: shl_8bytes:459; RV32I: # %bb.0:460; RV32I-NEXT: lbu a3, 0(a0)461; RV32I-NEXT: lbu a4, 1(a0)462; RV32I-NEXT: lbu a5, 2(a0)463; RV32I-NEXT: lbu a6, 3(a0)464; RV32I-NEXT: lbu a7, 4(a0)465; RV32I-NEXT: lbu t0, 5(a0)466; RV32I-NEXT: lbu t1, 6(a0)467; RV32I-NEXT: lbu a0, 7(a0)468; RV32I-NEXT: slli a4, a4, 8469; RV32I-NEXT: slli a6, a6, 8470; RV32I-NEXT: slli t0, t0, 8471; RV32I-NEXT: or a3, a4, a3472; RV32I-NEXT: or a4, a6, a5473; RV32I-NEXT: or a5, t0, a7474; RV32I-NEXT: lbu a6, 0(a1)475; RV32I-NEXT: lbu a7, 1(a1)476; RV32I-NEXT: lbu t0, 2(a1)477; RV32I-NEXT: lbu a1, 3(a1)478; RV32I-NEXT: slli a0, a0, 8479; RV32I-NEXT: or a0, a0, t1480; RV32I-NEXT: slli a7, a7, 8481; RV32I-NEXT: or a6, a7, a6482; RV32I-NEXT: slli a1, a1, 8483; RV32I-NEXT: or a1, a1, t0484; RV32I-NEXT: slli a4, a4, 16485; RV32I-NEXT: or a4, a4, a3486; RV32I-NEXT: slli a0, a0, 16487; RV32I-NEXT: slli a1, a1, 16488; RV32I-NEXT: or a3, a1, a6489; RV32I-NEXT: slli a3, a3, 3490; RV32I-NEXT: li a1, 32491; RV32I-NEXT: or a0, a0, a5492; RV32I-NEXT: bltu a3, a1, .LBB4_2493; RV32I-NEXT: # %bb.1:494; RV32I-NEXT: li a1, 0495; RV32I-NEXT: sll a4, a4, a3496; RV32I-NEXT: bnez a3, .LBB4_3497; RV32I-NEXT: j .LBB4_4498; RV32I-NEXT: .LBB4_2:499; RV32I-NEXT: sll a1, a4, a3500; RV32I-NEXT: neg a5, a3501; RV32I-NEXT: srl a4, a4, a5502; RV32I-NEXT: sll a5, a0, a3503; RV32I-NEXT: or a4, a4, a5504; RV32I-NEXT: beqz a3, .LBB4_4505; RV32I-NEXT: .LBB4_3:506; RV32I-NEXT: mv a0, a4507; RV32I-NEXT: .LBB4_4:508; RV32I-NEXT: srli a3, a1, 16509; RV32I-NEXT: lui a4, 16510; RV32I-NEXT: srli a5, a1, 24511; RV32I-NEXT: srli a6, a0, 16512; RV32I-NEXT: srli a7, a0, 24513; RV32I-NEXT: addi a4, a4, -1514; RV32I-NEXT: and t0, a1, a4515; RV32I-NEXT: and a4, a0, a4516; RV32I-NEXT: srli t0, t0, 8517; RV32I-NEXT: srli a4, a4, 8518; RV32I-NEXT: sb a1, 0(a2)519; RV32I-NEXT: sb t0, 1(a2)520; RV32I-NEXT: sb a3, 2(a2)521; RV32I-NEXT: sb a5, 3(a2)522; RV32I-NEXT: sb a0, 4(a2)523; RV32I-NEXT: sb a4, 5(a2)524; RV32I-NEXT: sb a6, 6(a2)525; RV32I-NEXT: sb a7, 7(a2)526; RV32I-NEXT: ret527 %src = load i64, ptr %src.ptr, align 1528 %byteOff = load i64, ptr %byteOff.ptr, align 1529 %bitOff = shl i64 %byteOff, 3530 %res = shl i64 %src, %bitOff531 store i64 %res, ptr %dst, align 1532 ret void533}534define void @ashr_8bytes(ptr %src.ptr, ptr %byteOff.ptr, ptr %dst) nounwind {535; RV64I-LABEL: ashr_8bytes:536; RV64I: # %bb.0:537; RV64I-NEXT: lbu a3, 0(a0)538; RV64I-NEXT: lbu a4, 1(a0)539; RV64I-NEXT: lbu a5, 2(a0)540; RV64I-NEXT: lbu a6, 3(a0)541; RV64I-NEXT: lbu a7, 4(a0)542; RV64I-NEXT: lbu t0, 5(a0)543; RV64I-NEXT: lbu t1, 6(a0)544; RV64I-NEXT: lbu a0, 7(a0)545; RV64I-NEXT: slli a4, a4, 8546; RV64I-NEXT: slli a6, a6, 8547; RV64I-NEXT: or a3, a4, a3548; RV64I-NEXT: or a4, a6, a5549; RV64I-NEXT: lbu a5, 0(a1)550; RV64I-NEXT: lbu a6, 1(a1)551; RV64I-NEXT: lbu t2, 2(a1)552; RV64I-NEXT: lbu t3, 3(a1)553; RV64I-NEXT: slli t0, t0, 8554; RV64I-NEXT: slli a0, a0, 8555; RV64I-NEXT: slli a6, a6, 8556; RV64I-NEXT: or a7, t0, a7557; RV64I-NEXT: or a0, a0, t1558; RV64I-NEXT: or a5, a6, a5559; RV64I-NEXT: lbu a6, 4(a1)560; RV64I-NEXT: lbu t0, 5(a1)561; RV64I-NEXT: lbu t1, 6(a1)562; RV64I-NEXT: lbu a1, 7(a1)563; RV64I-NEXT: slli t3, t3, 8564; RV64I-NEXT: or t2, t3, t2565; RV64I-NEXT: slli t0, t0, 8566; RV64I-NEXT: or a6, t0, a6567; RV64I-NEXT: slli a1, a1, 8568; RV64I-NEXT: or a1, a1, t1569; RV64I-NEXT: slli a4, a4, 16570; RV64I-NEXT: or a3, a4, a3571; RV64I-NEXT: lui a4, 16572; RV64I-NEXT: addi a4, a4, -1573; RV64I-NEXT: slli a0, a0, 16574; RV64I-NEXT: slli t2, t2, 16575; RV64I-NEXT: slli a1, a1, 16576; RV64I-NEXT: or a0, a0, a7577; RV64I-NEXT: or a5, t2, a5578; RV64I-NEXT: or a1, a1, a6579; RV64I-NEXT: slli a0, a0, 32580; RV64I-NEXT: slli a1, a1, 32581; RV64I-NEXT: or a0, a0, a3582; RV64I-NEXT: or a1, a1, a5583; RV64I-NEXT: slli a1, a1, 3584; RV64I-NEXT: sra a0, a0, a1585; RV64I-NEXT: srli a1, a0, 32586; RV64I-NEXT: srliw a3, a0, 16587; RV64I-NEXT: and a5, a0, a4588; RV64I-NEXT: srliw a6, a0, 24589; RV64I-NEXT: srli a7, a0, 48590; RV64I-NEXT: srli t0, a0, 56591; RV64I-NEXT: srli a5, a5, 8592; RV64I-NEXT: and a4, a1, a4593; RV64I-NEXT: sb a0, 0(a2)594; RV64I-NEXT: sb a5, 1(a2)595; RV64I-NEXT: sb a3, 2(a2)596; RV64I-NEXT: sb a6, 3(a2)597; RV64I-NEXT: srli a4, a4, 8598; RV64I-NEXT: sb a1, 4(a2)599; RV64I-NEXT: sb a4, 5(a2)600; RV64I-NEXT: sb a7, 6(a2)601; RV64I-NEXT: sb t0, 7(a2)602; RV64I-NEXT: ret603;604; RV32I-LABEL: ashr_8bytes:605; RV32I: # %bb.0:606; RV32I-NEXT: lbu a3, 0(a0)607; RV32I-NEXT: lbu a4, 1(a0)608; RV32I-NEXT: lbu a5, 2(a0)609; RV32I-NEXT: lbu a6, 3(a0)610; RV32I-NEXT: lbu a7, 4(a0)611; RV32I-NEXT: lbu t0, 5(a0)612; RV32I-NEXT: lbu t1, 6(a0)613; RV32I-NEXT: lbu a0, 7(a0)614; RV32I-NEXT: slli a4, a4, 8615; RV32I-NEXT: slli a6, a6, 8616; RV32I-NEXT: slli t0, t0, 8617; RV32I-NEXT: or a3, a4, a3618; RV32I-NEXT: or a4, a6, a5619; RV32I-NEXT: or a5, t0, a7620; RV32I-NEXT: lbu a6, 0(a1)621; RV32I-NEXT: lbu a7, 1(a1)622; RV32I-NEXT: lbu t0, 2(a1)623; RV32I-NEXT: lbu a1, 3(a1)624; RV32I-NEXT: slli a0, a0, 8625; RV32I-NEXT: or t1, a0, t1626; RV32I-NEXT: slli a7, a7, 8627; RV32I-NEXT: or a6, a7, a6628; RV32I-NEXT: slli a1, a1, 8629; RV32I-NEXT: or a1, a1, t0630; RV32I-NEXT: slli a0, a4, 16631; RV32I-NEXT: or a0, a0, a3632; RV32I-NEXT: slli a3, t1, 16633; RV32I-NEXT: slli a1, a1, 16634; RV32I-NEXT: or a1, a1, a6635; RV32I-NEXT: slli a1, a1, 3636; RV32I-NEXT: li a4, 32637; RV32I-NEXT: or a3, a3, a5638; RV32I-NEXT: bltu a1, a4, .LBB5_2639; RV32I-NEXT: # %bb.1:640; RV32I-NEXT: sra a5, a3, a1641; RV32I-NEXT: bnez a1, .LBB5_3642; RV32I-NEXT: j .LBB5_4643; RV32I-NEXT: .LBB5_2:644; RV32I-NEXT: srl a5, a0, a1645; RV32I-NEXT: neg a6, a1646; RV32I-NEXT: sll a6, a3, a6647; RV32I-NEXT: or a5, a5, a6648; RV32I-NEXT: beqz a1, .LBB5_4649; RV32I-NEXT: .LBB5_3:650; RV32I-NEXT: mv a0, a5651; RV32I-NEXT: .LBB5_4:652; RV32I-NEXT: bltu a1, a4, .LBB5_6653; RV32I-NEXT: # %bb.5:654; RV32I-NEXT: srai a1, a3, 31655; RV32I-NEXT: j .LBB5_7656; RV32I-NEXT: .LBB5_6:657; RV32I-NEXT: sra a1, a3, a1658; RV32I-NEXT: .LBB5_7:659; RV32I-NEXT: srli a3, a0, 16660; RV32I-NEXT: lui a4, 16661; RV32I-NEXT: srli a5, a0, 24662; RV32I-NEXT: srli a6, a1, 16663; RV32I-NEXT: srli a7, a1, 24664; RV32I-NEXT: addi a4, a4, -1665; RV32I-NEXT: and t0, a0, a4666; RV32I-NEXT: and a4, a1, a4667; RV32I-NEXT: srli t0, t0, 8668; RV32I-NEXT: srli a4, a4, 8669; RV32I-NEXT: sb a0, 0(a2)670; RV32I-NEXT: sb t0, 1(a2)671; RV32I-NEXT: sb a3, 2(a2)672; RV32I-NEXT: sb a5, 3(a2)673; RV32I-NEXT: sb a1, 4(a2)674; RV32I-NEXT: sb a4, 5(a2)675; RV32I-NEXT: sb a6, 6(a2)676; RV32I-NEXT: sb a7, 7(a2)677; RV32I-NEXT: ret678 %src = load i64, ptr %src.ptr, align 1679 %byteOff = load i64, ptr %byteOff.ptr, align 1680 %bitOff = shl i64 %byteOff, 3681 %res = ashr i64 %src, %bitOff682 store i64 %res, ptr %dst, align 1683 ret void684}685 686define void @lshr_16bytes(ptr %src.ptr, ptr %byteOff.ptr, ptr %dst) nounwind {687; RV64I-LABEL: lshr_16bytes:688; RV64I: # %bb.0:689; RV64I-NEXT: addi sp, sp, -16690; RV64I-NEXT: sd s0, 8(sp) # 8-byte Folded Spill691; RV64I-NEXT: lbu a3, 0(a0)692; RV64I-NEXT: lbu a4, 1(a0)693; RV64I-NEXT: lbu a5, 2(a0)694; RV64I-NEXT: lbu a6, 3(a0)695; RV64I-NEXT: lbu a7, 4(a0)696; RV64I-NEXT: lbu t0, 5(a0)697; RV64I-NEXT: lbu t1, 6(a0)698; RV64I-NEXT: lbu t2, 7(a0)699; RV64I-NEXT: lbu t3, 8(a0)700; RV64I-NEXT: lbu t4, 9(a0)701; RV64I-NEXT: lbu t5, 10(a0)702; RV64I-NEXT: lbu t6, 11(a0)703; RV64I-NEXT: slli a4, a4, 8704; RV64I-NEXT: slli a6, a6, 8705; RV64I-NEXT: or a3, a4, a3706; RV64I-NEXT: or a4, a6, a5707; RV64I-NEXT: lbu a5, 12(a0)708; RV64I-NEXT: lbu a6, 13(a0)709; RV64I-NEXT: lbu s0, 14(a0)710; RV64I-NEXT: lbu a0, 15(a0)711; RV64I-NEXT: slli t0, t0, 8712; RV64I-NEXT: slli t2, t2, 8713; RV64I-NEXT: slli t4, t4, 8714; RV64I-NEXT: slli t6, t6, 8715; RV64I-NEXT: or a7, t0, a7716; RV64I-NEXT: or t0, t2, t1717; RV64I-NEXT: or t1, t4, t3718; RV64I-NEXT: or t2, t6, t5719; RV64I-NEXT: lbu t3, 0(a1)720; RV64I-NEXT: lbu t4, 1(a1)721; RV64I-NEXT: lbu t5, 2(a1)722; RV64I-NEXT: lbu t6, 3(a1)723; RV64I-NEXT: slli a6, a6, 8724; RV64I-NEXT: slli a0, a0, 8725; RV64I-NEXT: slli t4, t4, 8726; RV64I-NEXT: or a5, a6, a5727; RV64I-NEXT: or a0, a0, s0728; RV64I-NEXT: or a6, t4, t3729; RV64I-NEXT: lbu t3, 4(a1)730; RV64I-NEXT: lbu t4, 5(a1)731; RV64I-NEXT: lbu s0, 6(a1)732; RV64I-NEXT: lbu a1, 7(a1)733; RV64I-NEXT: slli t6, t6, 8734; RV64I-NEXT: or t5, t6, t5735; RV64I-NEXT: slli t4, t4, 8736; RV64I-NEXT: or t3, t4, t3737; RV64I-NEXT: slli a1, a1, 8738; RV64I-NEXT: or a1, a1, s0739; RV64I-NEXT: slli a4, a4, 16740; RV64I-NEXT: or a3, a4, a3741; RV64I-NEXT: slli t0, t0, 16742; RV64I-NEXT: or a4, t0, a7743; RV64I-NEXT: slli t2, t2, 16744; RV64I-NEXT: or a7, t2, t1745; RV64I-NEXT: slli a0, a0, 16746; RV64I-NEXT: or a0, a0, a5747; RV64I-NEXT: slli t5, t5, 16748; RV64I-NEXT: or a5, t5, a6749; RV64I-NEXT: slli a1, a1, 16750; RV64I-NEXT: or a1, a1, t3751; RV64I-NEXT: slli a4, a4, 32752; RV64I-NEXT: slli a6, a0, 32753; RV64I-NEXT: slli a1, a1, 32754; RV64I-NEXT: or a0, a4, a3755; RV64I-NEXT: or a1, a1, a5756; RV64I-NEXT: slli a1, a1, 3757; RV64I-NEXT: li a4, 64758; RV64I-NEXT: or a3, a6, a7759; RV64I-NEXT: bltu a1, a4, .LBB6_2760; RV64I-NEXT: # %bb.1:761; RV64I-NEXT: sub a5, a1, a4762; RV64I-NEXT: srl a5, a3, a5763; RV64I-NEXT: bnez a1, .LBB6_3764; RV64I-NEXT: j .LBB6_4765; RV64I-NEXT: .LBB6_2:766; RV64I-NEXT: srl a5, a0, a1767; RV64I-NEXT: neg a6, a1768; RV64I-NEXT: sll a6, a3, a6769; RV64I-NEXT: or a5, a5, a6770; RV64I-NEXT: beqz a1, .LBB6_4771; RV64I-NEXT: .LBB6_3:772; RV64I-NEXT: mv a0, a5773; RV64I-NEXT: .LBB6_4:774; RV64I-NEXT: bltu a1, a4, .LBB6_6775; RV64I-NEXT: # %bb.5:776; RV64I-NEXT: li a1, 0777; RV64I-NEXT: j .LBB6_7778; RV64I-NEXT: .LBB6_6:779; RV64I-NEXT: srl a1, a3, a1780; RV64I-NEXT: .LBB6_7:781; RV64I-NEXT: srli a3, a0, 32782; RV64I-NEXT: srliw a4, a0, 16783; RV64I-NEXT: lui a5, 16784; RV64I-NEXT: srliw a6, a0, 24785; RV64I-NEXT: srli a7, a0, 48786; RV64I-NEXT: srli t0, a0, 56787; RV64I-NEXT: srli t1, a1, 32788; RV64I-NEXT: srliw t2, a1, 16789; RV64I-NEXT: srliw t3, a1, 24790; RV64I-NEXT: srli t4, a1, 48791; RV64I-NEXT: srli t5, a1, 56792; RV64I-NEXT: addi a5, a5, -1793; RV64I-NEXT: and t6, a0, a5794; RV64I-NEXT: srli t6, t6, 8795; RV64I-NEXT: sb a0, 0(a2)796; RV64I-NEXT: sb t6, 1(a2)797; RV64I-NEXT: sb a4, 2(a2)798; RV64I-NEXT: sb a6, 3(a2)799; RV64I-NEXT: and a0, a3, a5800; RV64I-NEXT: srli a0, a0, 8801; RV64I-NEXT: sb a3, 4(a2)802; RV64I-NEXT: sb a0, 5(a2)803; RV64I-NEXT: sb a7, 6(a2)804; RV64I-NEXT: sb t0, 7(a2)805; RV64I-NEXT: and a0, a1, a5806; RV64I-NEXT: and a3, t1, a5807; RV64I-NEXT: srli a0, a0, 8808; RV64I-NEXT: srli a3, a3, 8809; RV64I-NEXT: sb a1, 8(a2)810; RV64I-NEXT: sb a0, 9(a2)811; RV64I-NEXT: sb t2, 10(a2)812; RV64I-NEXT: sb t3, 11(a2)813; RV64I-NEXT: sb t1, 12(a2)814; RV64I-NEXT: sb a3, 13(a2)815; RV64I-NEXT: sb t4, 14(a2)816; RV64I-NEXT: sb t5, 15(a2)817; RV64I-NEXT: ld s0, 8(sp) # 8-byte Folded Reload818; RV64I-NEXT: addi sp, sp, 16819; RV64I-NEXT: ret820;821; RV32I-LABEL: lshr_16bytes:822; RV32I: # %bb.0:823; RV32I-NEXT: addi sp, sp, -16824; RV32I-NEXT: sw s0, 12(sp) # 4-byte Folded Spill825; RV32I-NEXT: sw s1, 8(sp) # 4-byte Folded Spill826; RV32I-NEXT: sw s2, 4(sp) # 4-byte Folded Spill827; RV32I-NEXT: lbu a3, 0(a0)828; RV32I-NEXT: lbu a5, 1(a0)829; RV32I-NEXT: lbu a6, 2(a0)830; RV32I-NEXT: lbu a7, 3(a0)831; RV32I-NEXT: lbu a4, 4(a0)832; RV32I-NEXT: lbu t0, 5(a0)833; RV32I-NEXT: lbu t1, 6(a0)834; RV32I-NEXT: lbu t2, 7(a0)835; RV32I-NEXT: lbu t4, 8(a0)836; RV32I-NEXT: lbu t5, 9(a0)837; RV32I-NEXT: lbu t6, 10(a0)838; RV32I-NEXT: lbu s0, 11(a0)839; RV32I-NEXT: slli a7, a7, 8840; RV32I-NEXT: slli t2, t2, 8841; RV32I-NEXT: or t3, a7, a6842; RV32I-NEXT: or t1, t2, t1843; RV32I-NEXT: lbu a6, 12(a0)844; RV32I-NEXT: lbu a7, 13(a0)845; RV32I-NEXT: lbu t2, 14(a0)846; RV32I-NEXT: lbu a0, 15(a0)847; RV32I-NEXT: slli t5, t5, 8848; RV32I-NEXT: slli s0, s0, 8849; RV32I-NEXT: slli a7, a7, 8850; RV32I-NEXT: or t4, t5, t4851; RV32I-NEXT: or t5, s0, t6852; RV32I-NEXT: or t6, a7, a6853; RV32I-NEXT: lbu a6, 0(a1)854; RV32I-NEXT: lbu a7, 1(a1)855; RV32I-NEXT: lbu s0, 2(a1)856; RV32I-NEXT: lbu a1, 3(a1)857; RV32I-NEXT: slli a0, a0, 8858; RV32I-NEXT: or t2, a0, t2859; RV32I-NEXT: slli a7, a7, 8860; RV32I-NEXT: or s1, a7, a6861; RV32I-NEXT: slli a1, a1, 8862; RV32I-NEXT: or s0, a1, s0863; RV32I-NEXT: li a7, 32864; RV32I-NEXT: slli a1, a5, 8865; RV32I-NEXT: slli a0, t0, 8866; RV32I-NEXT: slli t5, t5, 16867; RV32I-NEXT: slli t2, t2, 16868; RV32I-NEXT: slli s0, s0, 16869; RV32I-NEXT: or a6, t5, t4870; RV32I-NEXT: or t0, t2, t6871; RV32I-NEXT: or a5, s0, s1872; RV32I-NEXT: slli a5, a5, 3873; RV32I-NEXT: srl t2, a6, a5874; RV32I-NEXT: neg t5, a5875; RV32I-NEXT: sll t4, t0, t5876; RV32I-NEXT: bltu a5, a7, .LBB6_2877; RV32I-NEXT: # %bb.1:878; RV32I-NEXT: srl t6, t0, a5879; RV32I-NEXT: j .LBB6_3880; RV32I-NEXT: .LBB6_2:881; RV32I-NEXT: or t6, t2, t4882; RV32I-NEXT: .LBB6_3:883; RV32I-NEXT: or a1, a1, a3884; RV32I-NEXT: slli t3, t3, 16885; RV32I-NEXT: or a3, a0, a4886; RV32I-NEXT: slli t1, t1, 16887; RV32I-NEXT: mv a0, a6888; RV32I-NEXT: beqz a5, .LBB6_5889; RV32I-NEXT: # %bb.4:890; RV32I-NEXT: mv a0, t6891; RV32I-NEXT: .LBB6_5:892; RV32I-NEXT: or a4, t3, a1893; RV32I-NEXT: or a3, t1, a3894; RV32I-NEXT: bltu a5, a7, .LBB6_7895; RV32I-NEXT: # %bb.6:896; RV32I-NEXT: li a1, 0897; RV32I-NEXT: srl t6, a3, a5898; RV32I-NEXT: j .LBB6_8899; RV32I-NEXT: .LBB6_7:900; RV32I-NEXT: srl a1, t0, a5901; RV32I-NEXT: srl t1, a4, a5902; RV32I-NEXT: sll t3, a3, t5903; RV32I-NEXT: or t6, t1, t3904; RV32I-NEXT: .LBB6_8:905; RV32I-NEXT: li t1, 64906; RV32I-NEXT: mv t3, a4907; RV32I-NEXT: beqz a5, .LBB6_10908; RV32I-NEXT: # %bb.9:909; RV32I-NEXT: mv t3, t6910; RV32I-NEXT: .LBB6_10:911; RV32I-NEXT: sub s0, t1, a5912; RV32I-NEXT: bltu a5, a7, .LBB6_13913; RV32I-NEXT: # %bb.11:914; RV32I-NEXT: li t6, 0915; RV32I-NEXT: bgeu s0, a7, .LBB6_14916; RV32I-NEXT: .LBB6_12:917; RV32I-NEXT: sll t5, a6, t5918; RV32I-NEXT: neg s1, s0919; RV32I-NEXT: srl s1, a6, s1920; RV32I-NEXT: or s2, s1, t4921; RV32I-NEXT: j .LBB6_15922; RV32I-NEXT: .LBB6_13:923; RV32I-NEXT: srl t6, a3, a5924; RV32I-NEXT: bltu s0, a7, .LBB6_12925; RV32I-NEXT: .LBB6_14:926; RV32I-NEXT: li t5, 0927; RV32I-NEXT: sll s2, a6, s0928; RV32I-NEXT: .LBB6_15:929; RV32I-NEXT: addi s1, a5, -64930; RV32I-NEXT: mv t4, t0931; RV32I-NEXT: beqz s0, .LBB6_17932; RV32I-NEXT: # %bb.16:933; RV32I-NEXT: mv t4, s2934; RV32I-NEXT: .LBB6_17:935; RV32I-NEXT: bltu s1, a7, .LBB6_19936; RV32I-NEXT: # %bb.18:937; RV32I-NEXT: srl t2, t0, s1938; RV32I-NEXT: bnez s1, .LBB6_20939; RV32I-NEXT: j .LBB6_21940; RV32I-NEXT: .LBB6_19:941; RV32I-NEXT: neg s0, s1942; RV32I-NEXT: sll s0, t0, s0943; RV32I-NEXT: or t2, t2, s0944; RV32I-NEXT: beqz s1, .LBB6_21945; RV32I-NEXT: .LBB6_20:946; RV32I-NEXT: mv a6, t2947; RV32I-NEXT: .LBB6_21:948; RV32I-NEXT: bltu s1, a7, .LBB6_23949; RV32I-NEXT: # %bb.22:950; RV32I-NEXT: li a7, 0951; RV32I-NEXT: bltu a5, t1, .LBB6_24952; RV32I-NEXT: j .LBB6_25953; RV32I-NEXT: .LBB6_23:954; RV32I-NEXT: srl a7, t0, a5955; RV32I-NEXT: bgeu a5, t1, .LBB6_25956; RV32I-NEXT: .LBB6_24:957; RV32I-NEXT: or a6, t3, t5958; RV32I-NEXT: or a7, t6, t4959; RV32I-NEXT: .LBB6_25:960; RV32I-NEXT: bnez a5, .LBB6_29961; RV32I-NEXT: # %bb.26:962; RV32I-NEXT: bltu a5, t1, .LBB6_28963; RV32I-NEXT: .LBB6_27:964; RV32I-NEXT: li a0, 0965; RV32I-NEXT: li a1, 0966; RV32I-NEXT: .LBB6_28:967; RV32I-NEXT: srli a5, a4, 16968; RV32I-NEXT: lui a6, 16969; RV32I-NEXT: srli a7, a4, 24970; RV32I-NEXT: srli t0, a3, 16971; RV32I-NEXT: srli t1, a3, 24972; RV32I-NEXT: srli t2, a0, 16973; RV32I-NEXT: srli t3, a0, 24974; RV32I-NEXT: srli t4, a1, 16975; RV32I-NEXT: srli t5, a1, 24976; RV32I-NEXT: addi a6, a6, -1977; RV32I-NEXT: and t6, a4, a6978; RV32I-NEXT: srli t6, t6, 8979; RV32I-NEXT: sb a4, 0(a2)980; RV32I-NEXT: sb t6, 1(a2)981; RV32I-NEXT: sb a5, 2(a2)982; RV32I-NEXT: sb a7, 3(a2)983; RV32I-NEXT: and a4, a3, a6984; RV32I-NEXT: srli a4, a4, 8985; RV32I-NEXT: sb a3, 4(a2)986; RV32I-NEXT: sb a4, 5(a2)987; RV32I-NEXT: sb t0, 6(a2)988; RV32I-NEXT: sb t1, 7(a2)989; RV32I-NEXT: and a3, a0, a6990; RV32I-NEXT: and a4, a1, a6991; RV32I-NEXT: srli a3, a3, 8992; RV32I-NEXT: srli a4, a4, 8993; RV32I-NEXT: sb a0, 8(a2)994; RV32I-NEXT: sb a3, 9(a2)995; RV32I-NEXT: sb t2, 10(a2)996; RV32I-NEXT: sb t3, 11(a2)997; RV32I-NEXT: sb a1, 12(a2)998; RV32I-NEXT: sb a4, 13(a2)999; RV32I-NEXT: sb t4, 14(a2)1000; RV32I-NEXT: sb t5, 15(a2)1001; RV32I-NEXT: lw s0, 12(sp) # 4-byte Folded Reload1002; RV32I-NEXT: lw s1, 8(sp) # 4-byte Folded Reload1003; RV32I-NEXT: lw s2, 4(sp) # 4-byte Folded Reload1004; RV32I-NEXT: addi sp, sp, 161005; RV32I-NEXT: ret1006; RV32I-NEXT: .LBB6_29:1007; RV32I-NEXT: mv a4, a61008; RV32I-NEXT: mv a3, a71009; RV32I-NEXT: bgeu a5, t1, .LBB6_271010; RV32I-NEXT: j .LBB6_281011 %src = load i128, ptr %src.ptr, align 11012 %byteOff = load i128, ptr %byteOff.ptr, align 11013 %bitOff = shl i128 %byteOff, 31014 %res = lshr i128 %src, %bitOff1015 store i128 %res, ptr %dst, align 11016 ret void1017}1018 1019define void @lshr_16bytes_wordOff(ptr %src.ptr, ptr %wordOff.ptr, ptr %dst) nounwind {1020; RV64I-LABEL: lshr_16bytes_wordOff:1021; RV64I: # %bb.0:1022; RV64I-NEXT: addi sp, sp, -161023; RV64I-NEXT: sd s0, 8(sp) # 8-byte Folded Spill1024; RV64I-NEXT: lbu a3, 0(a0)1025; RV64I-NEXT: lbu a4, 1(a0)1026; RV64I-NEXT: lbu a5, 2(a0)1027; RV64I-NEXT: lbu a6, 3(a0)1028; RV64I-NEXT: lbu a7, 4(a0)1029; RV64I-NEXT: lbu t0, 5(a0)1030; RV64I-NEXT: lbu t1, 6(a0)1031; RV64I-NEXT: lbu t2, 7(a0)1032; RV64I-NEXT: lbu t3, 8(a0)1033; RV64I-NEXT: lbu t4, 9(a0)1034; RV64I-NEXT: lbu t5, 10(a0)1035; RV64I-NEXT: lbu t6, 11(a0)1036; RV64I-NEXT: slli a4, a4, 81037; RV64I-NEXT: slli a6, a6, 81038; RV64I-NEXT: or a3, a4, a31039; RV64I-NEXT: or a4, a6, a51040; RV64I-NEXT: lbu a5, 12(a0)1041; RV64I-NEXT: lbu a6, 13(a0)1042; RV64I-NEXT: lbu s0, 14(a0)1043; RV64I-NEXT: lbu a0, 15(a0)1044; RV64I-NEXT: slli t0, t0, 81045; RV64I-NEXT: slli t2, t2, 81046; RV64I-NEXT: slli t4, t4, 81047; RV64I-NEXT: slli t6, t6, 81048; RV64I-NEXT: or a7, t0, a71049; RV64I-NEXT: or t0, t2, t11050; RV64I-NEXT: or t1, t4, t31051; RV64I-NEXT: or t2, t6, t51052; RV64I-NEXT: lbu t3, 0(a1)1053; RV64I-NEXT: lbu t4, 1(a1)1054; RV64I-NEXT: lbu t5, 2(a1)1055; RV64I-NEXT: lbu t6, 3(a1)1056; RV64I-NEXT: slli a6, a6, 81057; RV64I-NEXT: slli a0, a0, 81058; RV64I-NEXT: slli t4, t4, 81059; RV64I-NEXT: or a5, a6, a51060; RV64I-NEXT: or a0, a0, s01061; RV64I-NEXT: or a6, t4, t31062; RV64I-NEXT: lbu t3, 4(a1)1063; RV64I-NEXT: lbu t4, 5(a1)1064; RV64I-NEXT: lbu s0, 6(a1)1065; RV64I-NEXT: lbu a1, 7(a1)1066; RV64I-NEXT: slli t6, t6, 81067; RV64I-NEXT: or t5, t6, t51068; RV64I-NEXT: slli t4, t4, 81069; RV64I-NEXT: or t3, t4, t31070; RV64I-NEXT: slli a1, a1, 81071; RV64I-NEXT: or a1, a1, s01072; RV64I-NEXT: slli a4, a4, 161073; RV64I-NEXT: or a3, a4, a31074; RV64I-NEXT: slli t0, t0, 161075; RV64I-NEXT: or a4, t0, a71076; RV64I-NEXT: slli t2, t2, 161077; RV64I-NEXT: or a7, t2, t11078; RV64I-NEXT: slli a0, a0, 161079; RV64I-NEXT: or a0, a0, a51080; RV64I-NEXT: slli t5, t5, 161081; RV64I-NEXT: or a5, t5, a61082; RV64I-NEXT: slli a1, a1, 161083; RV64I-NEXT: or a1, a1, t31084; RV64I-NEXT: slli a4, a4, 321085; RV64I-NEXT: slli a6, a0, 321086; RV64I-NEXT: slli a1, a1, 321087; RV64I-NEXT: or a0, a4, a31088; RV64I-NEXT: or a1, a1, a51089; RV64I-NEXT: slli a1, a1, 51090; RV64I-NEXT: li a4, 641091; RV64I-NEXT: or a3, a6, a71092; RV64I-NEXT: bltu a1, a4, .LBB7_21093; RV64I-NEXT: # %bb.1:1094; RV64I-NEXT: sub a5, a1, a41095; RV64I-NEXT: srl a5, a3, a51096; RV64I-NEXT: bnez a1, .LBB7_31097; RV64I-NEXT: j .LBB7_41098; RV64I-NEXT: .LBB7_2:1099; RV64I-NEXT: srl a5, a0, a11100; RV64I-NEXT: neg a6, a11101; RV64I-NEXT: sll a6, a3, a61102; RV64I-NEXT: or a5, a5, a61103; RV64I-NEXT: beqz a1, .LBB7_41104; RV64I-NEXT: .LBB7_3:1105; RV64I-NEXT: mv a0, a51106; RV64I-NEXT: .LBB7_4:1107; RV64I-NEXT: bltu a1, a4, .LBB7_61108; RV64I-NEXT: # %bb.5:1109; RV64I-NEXT: li a1, 01110; RV64I-NEXT: j .LBB7_71111; RV64I-NEXT: .LBB7_6:1112; RV64I-NEXT: srl a1, a3, a11113; RV64I-NEXT: .LBB7_7:1114; RV64I-NEXT: srli a3, a0, 321115; RV64I-NEXT: srliw a4, a0, 161116; RV64I-NEXT: lui a5, 161117; RV64I-NEXT: srliw a6, a0, 241118; RV64I-NEXT: srli a7, a0, 481119; RV64I-NEXT: srli t0, a0, 561120; RV64I-NEXT: srli t1, a1, 321121; RV64I-NEXT: srliw t2, a1, 161122; RV64I-NEXT: srliw t3, a1, 241123; RV64I-NEXT: srli t4, a1, 481124; RV64I-NEXT: srli t5, a1, 561125; RV64I-NEXT: addi a5, a5, -11126; RV64I-NEXT: and t6, a0, a51127; RV64I-NEXT: srli t6, t6, 81128; RV64I-NEXT: sb a0, 0(a2)1129; RV64I-NEXT: sb t6, 1(a2)1130; RV64I-NEXT: sb a4, 2(a2)1131; RV64I-NEXT: sb a6, 3(a2)1132; RV64I-NEXT: and a0, a3, a51133; RV64I-NEXT: srli a0, a0, 81134; RV64I-NEXT: sb a3, 4(a2)1135; RV64I-NEXT: sb a0, 5(a2)1136; RV64I-NEXT: sb a7, 6(a2)1137; RV64I-NEXT: sb t0, 7(a2)1138; RV64I-NEXT: and a0, a1, a51139; RV64I-NEXT: and a3, t1, a51140; RV64I-NEXT: srli a0, a0, 81141; RV64I-NEXT: srli a3, a3, 81142; RV64I-NEXT: sb a1, 8(a2)1143; RV64I-NEXT: sb a0, 9(a2)1144; RV64I-NEXT: sb t2, 10(a2)1145; RV64I-NEXT: sb t3, 11(a2)1146; RV64I-NEXT: sb t1, 12(a2)1147; RV64I-NEXT: sb a3, 13(a2)1148; RV64I-NEXT: sb t4, 14(a2)1149; RV64I-NEXT: sb t5, 15(a2)1150; RV64I-NEXT: ld s0, 8(sp) # 8-byte Folded Reload1151; RV64I-NEXT: addi sp, sp, 161152; RV64I-NEXT: ret1153;1154; RV32I-LABEL: lshr_16bytes_wordOff:1155; RV32I: # %bb.0:1156; RV32I-NEXT: addi sp, sp, -161157; RV32I-NEXT: sw s0, 12(sp) # 4-byte Folded Spill1158; RV32I-NEXT: sw s1, 8(sp) # 4-byte Folded Spill1159; RV32I-NEXT: sw s2, 4(sp) # 4-byte Folded Spill1160; RV32I-NEXT: lbu a3, 0(a0)1161; RV32I-NEXT: lbu a5, 1(a0)1162; RV32I-NEXT: lbu a6, 2(a0)1163; RV32I-NEXT: lbu a7, 3(a0)1164; RV32I-NEXT: lbu a4, 4(a0)1165; RV32I-NEXT: lbu t0, 5(a0)1166; RV32I-NEXT: lbu t1, 6(a0)1167; RV32I-NEXT: lbu t2, 7(a0)1168; RV32I-NEXT: lbu t4, 8(a0)1169; RV32I-NEXT: lbu t5, 9(a0)1170; RV32I-NEXT: lbu t6, 10(a0)1171; RV32I-NEXT: lbu s0, 11(a0)1172; RV32I-NEXT: slli a7, a7, 81173; RV32I-NEXT: slli t2, t2, 81174; RV32I-NEXT: or t3, a7, a61175; RV32I-NEXT: or t1, t2, t11176; RV32I-NEXT: lbu a6, 12(a0)1177; RV32I-NEXT: lbu a7, 13(a0)1178; RV32I-NEXT: lbu t2, 14(a0)1179; RV32I-NEXT: lbu a0, 15(a0)1180; RV32I-NEXT: slli t5, t5, 81181; RV32I-NEXT: slli s0, s0, 81182; RV32I-NEXT: slli a7, a7, 81183; RV32I-NEXT: or t4, t5, t41184; RV32I-NEXT: or t5, s0, t61185; RV32I-NEXT: or t6, a7, a61186; RV32I-NEXT: lbu a6, 0(a1)1187; RV32I-NEXT: lbu a7, 1(a1)1188; RV32I-NEXT: lbu s0, 2(a1)1189; RV32I-NEXT: lbu a1, 3(a1)1190; RV32I-NEXT: slli a0, a0, 81191; RV32I-NEXT: or t2, a0, t21192; RV32I-NEXT: slli a7, a7, 81193; RV32I-NEXT: or s1, a7, a61194; RV32I-NEXT: slli a1, a1, 81195; RV32I-NEXT: or s0, a1, s01196; RV32I-NEXT: li a7, 321197; RV32I-NEXT: slli a1, a5, 81198; RV32I-NEXT: slli a0, t0, 81199; RV32I-NEXT: slli t5, t5, 161200; RV32I-NEXT: slli t2, t2, 161201; RV32I-NEXT: slli s0, s0, 161202; RV32I-NEXT: or a6, t5, t41203; RV32I-NEXT: or t0, t2, t61204; RV32I-NEXT: or a5, s0, s11205; RV32I-NEXT: slli a5, a5, 51206; RV32I-NEXT: srl t2, a6, a51207; RV32I-NEXT: neg t5, a51208; RV32I-NEXT: sll t4, t0, t51209; RV32I-NEXT: bltu a5, a7, .LBB7_21210; RV32I-NEXT: # %bb.1:1211; RV32I-NEXT: srl t6, t0, a51212; RV32I-NEXT: j .LBB7_31213; RV32I-NEXT: .LBB7_2:1214; RV32I-NEXT: or t6, t2, t41215; RV32I-NEXT: .LBB7_3:1216; RV32I-NEXT: or a1, a1, a31217; RV32I-NEXT: slli t3, t3, 161218; RV32I-NEXT: or a3, a0, a41219; RV32I-NEXT: slli t1, t1, 161220; RV32I-NEXT: mv a0, a61221; RV32I-NEXT: beqz a5, .LBB7_51222; RV32I-NEXT: # %bb.4:1223; RV32I-NEXT: mv a0, t61224; RV32I-NEXT: .LBB7_5:1225; RV32I-NEXT: or a4, t3, a11226; RV32I-NEXT: or a3, t1, a31227; RV32I-NEXT: bltu a5, a7, .LBB7_71228; RV32I-NEXT: # %bb.6:1229; RV32I-NEXT: li a1, 01230; RV32I-NEXT: srl t6, a3, a51231; RV32I-NEXT: j .LBB7_81232; RV32I-NEXT: .LBB7_7:1233; RV32I-NEXT: srl a1, t0, a51234; RV32I-NEXT: srl t1, a4, a51235; RV32I-NEXT: sll t3, a3, t51236; RV32I-NEXT: or t6, t1, t31237; RV32I-NEXT: .LBB7_8:1238; RV32I-NEXT: li t1, 641239; RV32I-NEXT: mv t3, a41240; RV32I-NEXT: beqz a5, .LBB7_101241; RV32I-NEXT: # %bb.9:1242; RV32I-NEXT: mv t3, t61243; RV32I-NEXT: .LBB7_10:1244; RV32I-NEXT: sub s0, t1, a51245; RV32I-NEXT: bltu a5, a7, .LBB7_131246; RV32I-NEXT: # %bb.11:1247; RV32I-NEXT: li t6, 01248; RV32I-NEXT: bgeu s0, a7, .LBB7_141249; RV32I-NEXT: .LBB7_12:1250; RV32I-NEXT: sll t5, a6, t51251; RV32I-NEXT: neg s1, s01252; RV32I-NEXT: srl s1, a6, s11253; RV32I-NEXT: or s2, s1, t41254; RV32I-NEXT: j .LBB7_151255; RV32I-NEXT: .LBB7_13:1256; RV32I-NEXT: srl t6, a3, a51257; RV32I-NEXT: bltu s0, a7, .LBB7_121258; RV32I-NEXT: .LBB7_14:1259; RV32I-NEXT: li t5, 01260; RV32I-NEXT: sll s2, a6, s01261; RV32I-NEXT: .LBB7_15:1262; RV32I-NEXT: addi s1, a5, -641263; RV32I-NEXT: mv t4, t01264; RV32I-NEXT: beqz s0, .LBB7_171265; RV32I-NEXT: # %bb.16:1266; RV32I-NEXT: mv t4, s21267; RV32I-NEXT: .LBB7_17:1268; RV32I-NEXT: bltu s1, a7, .LBB7_191269; RV32I-NEXT: # %bb.18:1270; RV32I-NEXT: srl t2, t0, s11271; RV32I-NEXT: bnez s1, .LBB7_201272; RV32I-NEXT: j .LBB7_211273; RV32I-NEXT: .LBB7_19:1274; RV32I-NEXT: neg s0, s11275; RV32I-NEXT: sll s0, t0, s01276; RV32I-NEXT: or t2, t2, s01277; RV32I-NEXT: beqz s1, .LBB7_211278; RV32I-NEXT: .LBB7_20:1279; RV32I-NEXT: mv a6, t21280; RV32I-NEXT: .LBB7_21:1281; RV32I-NEXT: bltu s1, a7, .LBB7_231282; RV32I-NEXT: # %bb.22:1283; RV32I-NEXT: li a7, 01284; RV32I-NEXT: bltu a5, t1, .LBB7_241285; RV32I-NEXT: j .LBB7_251286; RV32I-NEXT: .LBB7_23:1287; RV32I-NEXT: srl a7, t0, a51288; RV32I-NEXT: bgeu a5, t1, .LBB7_251289; RV32I-NEXT: .LBB7_24:1290; RV32I-NEXT: or a6, t3, t51291; RV32I-NEXT: or a7, t6, t41292; RV32I-NEXT: .LBB7_25:1293; RV32I-NEXT: bnez a5, .LBB7_291294; RV32I-NEXT: # %bb.26:1295; RV32I-NEXT: bltu a5, t1, .LBB7_281296; RV32I-NEXT: .LBB7_27:1297; RV32I-NEXT: li a0, 01298; RV32I-NEXT: li a1, 01299; RV32I-NEXT: .LBB7_28:1300; RV32I-NEXT: srli a5, a4, 161301; RV32I-NEXT: lui a6, 161302; RV32I-NEXT: srli a7, a4, 241303; RV32I-NEXT: srli t0, a3, 161304; RV32I-NEXT: srli t1, a3, 241305; RV32I-NEXT: srli t2, a0, 161306; RV32I-NEXT: srli t3, a0, 241307; RV32I-NEXT: srli t4, a1, 161308; RV32I-NEXT: srli t5, a1, 241309; RV32I-NEXT: addi a6, a6, -11310; RV32I-NEXT: and t6, a4, a61311; RV32I-NEXT: srli t6, t6, 81312; RV32I-NEXT: sb a4, 0(a2)1313; RV32I-NEXT: sb t6, 1(a2)1314; RV32I-NEXT: sb a5, 2(a2)1315; RV32I-NEXT: sb a7, 3(a2)1316; RV32I-NEXT: and a4, a3, a61317; RV32I-NEXT: srli a4, a4, 81318; RV32I-NEXT: sb a3, 4(a2)1319; RV32I-NEXT: sb a4, 5(a2)1320; RV32I-NEXT: sb t0, 6(a2)1321; RV32I-NEXT: sb t1, 7(a2)1322; RV32I-NEXT: and a3, a0, a61323; RV32I-NEXT: and a4, a1, a61324; RV32I-NEXT: srli a3, a3, 81325; RV32I-NEXT: srli a4, a4, 81326; RV32I-NEXT: sb a0, 8(a2)1327; RV32I-NEXT: sb a3, 9(a2)1328; RV32I-NEXT: sb t2, 10(a2)1329; RV32I-NEXT: sb t3, 11(a2)1330; RV32I-NEXT: sb a1, 12(a2)1331; RV32I-NEXT: sb a4, 13(a2)1332; RV32I-NEXT: sb t4, 14(a2)1333; RV32I-NEXT: sb t5, 15(a2)1334; RV32I-NEXT: lw s0, 12(sp) # 4-byte Folded Reload1335; RV32I-NEXT: lw s1, 8(sp) # 4-byte Folded Reload1336; RV32I-NEXT: lw s2, 4(sp) # 4-byte Folded Reload1337; RV32I-NEXT: addi sp, sp, 161338; RV32I-NEXT: ret1339; RV32I-NEXT: .LBB7_29:1340; RV32I-NEXT: mv a4, a61341; RV32I-NEXT: mv a3, a71342; RV32I-NEXT: bgeu a5, t1, .LBB7_271343; RV32I-NEXT: j .LBB7_281344 %src = load i128, ptr %src.ptr, align 11345 %wordOff = load i128, ptr %wordOff.ptr, align 11346 %bitOff = shl i128 %wordOff, 51347 %res = lshr i128 %src, %bitOff1348 store i128 %res, ptr %dst, align 11349 ret void1350}1351 1352define void @shl_16bytes(ptr %src.ptr, ptr %byteOff.ptr, ptr %dst) nounwind {1353; RV64I-LABEL: shl_16bytes:1354; RV64I: # %bb.0:1355; RV64I-NEXT: addi sp, sp, -161356; RV64I-NEXT: sd s0, 8(sp) # 8-byte Folded Spill1357; RV64I-NEXT: lbu a3, 0(a0)1358; RV64I-NEXT: lbu a4, 1(a0)1359; RV64I-NEXT: lbu a5, 2(a0)1360; RV64I-NEXT: lbu a6, 3(a0)1361; RV64I-NEXT: lbu a7, 4(a0)1362; RV64I-NEXT: lbu t0, 5(a0)1363; RV64I-NEXT: lbu t1, 6(a0)1364; RV64I-NEXT: lbu t2, 7(a0)1365; RV64I-NEXT: lbu t3, 8(a0)1366; RV64I-NEXT: lbu t4, 9(a0)1367; RV64I-NEXT: lbu t5, 10(a0)1368; RV64I-NEXT: lbu t6, 11(a0)1369; RV64I-NEXT: slli a4, a4, 81370; RV64I-NEXT: slli a6, a6, 81371; RV64I-NEXT: or a3, a4, a31372; RV64I-NEXT: or a4, a6, a51373; RV64I-NEXT: lbu a5, 12(a0)1374; RV64I-NEXT: lbu a6, 13(a0)1375; RV64I-NEXT: lbu s0, 14(a0)1376; RV64I-NEXT: lbu a0, 15(a0)1377; RV64I-NEXT: slli t0, t0, 81378; RV64I-NEXT: slli t2, t2, 81379; RV64I-NEXT: slli t4, t4, 81380; RV64I-NEXT: slli t6, t6, 81381; RV64I-NEXT: or a7, t0, a71382; RV64I-NEXT: or t0, t2, t11383; RV64I-NEXT: or t1, t4, t31384; RV64I-NEXT: or t2, t6, t51385; RV64I-NEXT: lbu t3, 0(a1)1386; RV64I-NEXT: lbu t4, 1(a1)1387; RV64I-NEXT: lbu t5, 2(a1)1388; RV64I-NEXT: lbu t6, 3(a1)1389; RV64I-NEXT: slli a6, a6, 81390; RV64I-NEXT: slli a0, a0, 81391; RV64I-NEXT: slli t4, t4, 81392; RV64I-NEXT: or a5, a6, a51393; RV64I-NEXT: or a0, a0, s01394; RV64I-NEXT: or a6, t4, t31395; RV64I-NEXT: lbu t3, 4(a1)1396; RV64I-NEXT: lbu t4, 5(a1)1397; RV64I-NEXT: lbu s0, 6(a1)1398; RV64I-NEXT: lbu a1, 7(a1)1399; RV64I-NEXT: slli t6, t6, 81400; RV64I-NEXT: or t5, t6, t51401; RV64I-NEXT: slli t4, t4, 81402; RV64I-NEXT: or t3, t4, t31403; RV64I-NEXT: slli a1, a1, 81404; RV64I-NEXT: or a1, a1, s01405; RV64I-NEXT: slli a4, a4, 161406; RV64I-NEXT: or a3, a4, a31407; RV64I-NEXT: slli t0, t0, 161408; RV64I-NEXT: or a4, t0, a71409; RV64I-NEXT: slli t2, t2, 161410; RV64I-NEXT: or a7, t2, t11411; RV64I-NEXT: slli a0, a0, 161412; RV64I-NEXT: or a0, a0, a51413; RV64I-NEXT: slli t5, t5, 161414; RV64I-NEXT: or a5, t5, a61415; RV64I-NEXT: slli a1, a1, 161416; RV64I-NEXT: or a1, a1, t31417; RV64I-NEXT: slli a4, a4, 321418; RV64I-NEXT: slli a0, a0, 321419; RV64I-NEXT: slli a1, a1, 321420; RV64I-NEXT: or a4, a4, a31421; RV64I-NEXT: or a1, a1, a51422; RV64I-NEXT: slli a3, a1, 31423; RV64I-NEXT: li a5, 641424; RV64I-NEXT: or a0, a0, a71425; RV64I-NEXT: bltu a3, a5, .LBB8_21426; RV64I-NEXT: # %bb.1:1427; RV64I-NEXT: li a1, 01428; RV64I-NEXT: sub a5, a3, a51429; RV64I-NEXT: sll a4, a4, a51430; RV64I-NEXT: bnez a3, .LBB8_31431; RV64I-NEXT: j .LBB8_41432; RV64I-NEXT: .LBB8_2:1433; RV64I-NEXT: sll a1, a4, a31434; RV64I-NEXT: neg a5, a31435; RV64I-NEXT: srl a4, a4, a51436; RV64I-NEXT: sll a5, a0, a31437; RV64I-NEXT: or a4, a4, a51438; RV64I-NEXT: beqz a3, .LBB8_41439; RV64I-NEXT: .LBB8_3:1440; RV64I-NEXT: mv a0, a41441; RV64I-NEXT: .LBB8_4:1442; RV64I-NEXT: srli a3, a1, 321443; RV64I-NEXT: srliw a4, a1, 161444; RV64I-NEXT: lui a5, 161445; RV64I-NEXT: srliw a6, a1, 241446; RV64I-NEXT: srli a7, a1, 481447; RV64I-NEXT: srli t0, a1, 561448; RV64I-NEXT: srli t1, a0, 321449; RV64I-NEXT: srliw t2, a0, 161450; RV64I-NEXT: srliw t3, a0, 241451; RV64I-NEXT: srli t4, a0, 481452; RV64I-NEXT: srli t5, a0, 561453; RV64I-NEXT: addi a5, a5, -11454; RV64I-NEXT: and t6, a1, a51455; RV64I-NEXT: srli t6, t6, 81456; RV64I-NEXT: sb a1, 0(a2)1457; RV64I-NEXT: sb t6, 1(a2)1458; RV64I-NEXT: sb a4, 2(a2)1459; RV64I-NEXT: sb a6, 3(a2)1460; RV64I-NEXT: and a1, a3, a51461; RV64I-NEXT: srli a1, a1, 81462; RV64I-NEXT: sb a3, 4(a2)1463; RV64I-NEXT: sb a1, 5(a2)1464; RV64I-NEXT: sb a7, 6(a2)1465; RV64I-NEXT: sb t0, 7(a2)1466; RV64I-NEXT: and a1, a0, a51467; RV64I-NEXT: and a3, t1, a51468; RV64I-NEXT: srli a1, a1, 81469; RV64I-NEXT: srli a3, a3, 81470; RV64I-NEXT: sb a0, 8(a2)1471; RV64I-NEXT: sb a1, 9(a2)1472; RV64I-NEXT: sb t2, 10(a2)1473; RV64I-NEXT: sb t3, 11(a2)1474; RV64I-NEXT: sb t1, 12(a2)1475; RV64I-NEXT: sb a3, 13(a2)1476; RV64I-NEXT: sb t4, 14(a2)1477; RV64I-NEXT: sb t5, 15(a2)1478; RV64I-NEXT: ld s0, 8(sp) # 8-byte Folded Reload1479; RV64I-NEXT: addi sp, sp, 161480; RV64I-NEXT: ret1481;1482; RV32I-LABEL: shl_16bytes:1483; RV32I: # %bb.0:1484; RV32I-NEXT: lbu a3, 0(a0)1485; RV32I-NEXT: lbu a4, 1(a0)1486; RV32I-NEXT: lbu a5, 2(a0)1487; RV32I-NEXT: lbu a6, 3(a0)1488; RV32I-NEXT: lbu a7, 4(a0)1489; RV32I-NEXT: lbu t0, 5(a0)1490; RV32I-NEXT: lbu t1, 6(a0)1491; RV32I-NEXT: lbu t2, 7(a0)1492; RV32I-NEXT: slli a4, a4, 81493; RV32I-NEXT: or a3, a4, a31494; RV32I-NEXT: slli a6, a6, 81495; RV32I-NEXT: slli t0, t0, 81496; RV32I-NEXT: slli t2, t2, 81497; RV32I-NEXT: or a4, a6, a51498; RV32I-NEXT: or a5, t0, a71499; RV32I-NEXT: or a7, t2, t11500; RV32I-NEXT: lbu a6, 1(a1)1501; RV32I-NEXT: lbu t0, 0(a1)1502; RV32I-NEXT: lbu t1, 2(a1)1503; RV32I-NEXT: lbu a1, 3(a1)1504; RV32I-NEXT: slli a6, a6, 81505; RV32I-NEXT: or t2, a6, t01506; RV32I-NEXT: li a6, 641507; RV32I-NEXT: slli a1, a1, 81508; RV32I-NEXT: or a1, a1, t11509; RV32I-NEXT: li t1, 321510; RV32I-NEXT: slli a4, a4, 161511; RV32I-NEXT: slli a7, a7, 161512; RV32I-NEXT: slli a1, a1, 161513; RV32I-NEXT: or t0, a4, a31514; RV32I-NEXT: or a4, a7, a51515; RV32I-NEXT: or a5, a1, t21516; RV32I-NEXT: slli a5, a5, 31517; RV32I-NEXT: neg t3, a51518; RV32I-NEXT: srl t4, t0, t31519; RV32I-NEXT: sll t2, a4, a51520; RV32I-NEXT: bltu a5, t1, .LBB8_21521; RV32I-NEXT: # %bb.1:1522; RV32I-NEXT: li a1, 01523; RV32I-NEXT: sll t5, t0, a51524; RV32I-NEXT: j .LBB8_31525; RV32I-NEXT: .LBB8_2:1526; RV32I-NEXT: sll a1, t0, a51527; RV32I-NEXT: or t5, t4, t21528; RV32I-NEXT: .LBB8_3:1529; RV32I-NEXT: addi sp, sp, -321530; RV32I-NEXT: sw s0, 28(sp) # 4-byte Folded Spill1531; RV32I-NEXT: sw s1, 24(sp) # 4-byte Folded Spill1532; RV32I-NEXT: sw s2, 20(sp) # 4-byte Folded Spill1533; RV32I-NEXT: sw s3, 16(sp) # 4-byte Folded Spill1534; RV32I-NEXT: sw s4, 12(sp) # 4-byte Folded Spill1535; RV32I-NEXT: sw s5, 8(sp) # 4-byte Folded Spill1536; RV32I-NEXT: sw s6, 4(sp) # 4-byte Folded Spill1537; RV32I-NEXT: lbu s3, 11(a0)1538; RV32I-NEXT: lbu s1, 15(a0)1539; RV32I-NEXT: sub a7, a6, a51540; RV32I-NEXT: mv a3, a41541; RV32I-NEXT: beqz a5, .LBB8_51542; RV32I-NEXT: # %bb.4:1543; RV32I-NEXT: mv a3, t51544; RV32I-NEXT: .LBB8_5:1545; RV32I-NEXT: lbu s2, 9(a0)1546; RV32I-NEXT: lbu t5, 10(a0)1547; RV32I-NEXT: lbu s0, 13(a0)1548; RV32I-NEXT: lbu t6, 14(a0)1549; RV32I-NEXT: slli s3, s3, 81550; RV32I-NEXT: slli s1, s1, 81551; RV32I-NEXT: bltu a7, t1, .LBB8_71552; RV32I-NEXT: # %bb.6:1553; RV32I-NEXT: srl s4, a4, a71554; RV32I-NEXT: j .LBB8_81555; RV32I-NEXT: .LBB8_7:1556; RV32I-NEXT: neg s4, a71557; RV32I-NEXT: sll s4, a4, s41558; RV32I-NEXT: or s4, t4, s41559; RV32I-NEXT: .LBB8_8:1560; RV32I-NEXT: slli s2, s2, 81561; RV32I-NEXT: lbu s6, 8(a0)1562; RV32I-NEXT: lbu s5, 12(a0)1563; RV32I-NEXT: or s3, s3, t51564; RV32I-NEXT: slli t5, s0, 81565; RV32I-NEXT: or s1, s1, t61566; RV32I-NEXT: mv t4, t01567; RV32I-NEXT: beqz a7, .LBB8_101568; RV32I-NEXT: # %bb.9:1569; RV32I-NEXT: mv t4, s41570; RV32I-NEXT: .LBB8_10:1571; RV32I-NEXT: or a0, s2, s61572; RV32I-NEXT: slli s0, s3, 161573; RV32I-NEXT: or t6, t5, s51574; RV32I-NEXT: slli s1, s1, 161575; RV32I-NEXT: bltu a7, t1, .LBB8_121576; RV32I-NEXT: # %bb.11:1577; RV32I-NEXT: li t5, 01578; RV32I-NEXT: j .LBB8_131579; RV32I-NEXT: .LBB8_12:1580; RV32I-NEXT: srl t5, a4, t31581; RV32I-NEXT: .LBB8_13:1582; RV32I-NEXT: or a7, s0, a01583; RV32I-NEXT: or a0, s1, t61584; RV32I-NEXT: bltu a5, t1, .LBB8_151585; RV32I-NEXT: # %bb.14:1586; RV32I-NEXT: li t6, 01587; RV32I-NEXT: sll s1, a7, a51588; RV32I-NEXT: j .LBB8_161589; RV32I-NEXT: .LBB8_15:1590; RV32I-NEXT: sll t6, a7, a51591; RV32I-NEXT: srl t3, a7, t31592; RV32I-NEXT: sll s0, a0, a51593; RV32I-NEXT: or s1, t3, s01594; RV32I-NEXT: .LBB8_16:1595; RV32I-NEXT: addi s0, a5, -641596; RV32I-NEXT: mv t3, a01597; RV32I-NEXT: beqz a5, .LBB8_181598; RV32I-NEXT: # %bb.17:1599; RV32I-NEXT: mv t3, s11600; RV32I-NEXT: .LBB8_18:1601; RV32I-NEXT: bltu s0, t1, .LBB8_201602; RV32I-NEXT: # %bb.19:1603; RV32I-NEXT: li t1, 01604; RV32I-NEXT: sll t0, t0, s01605; RV32I-NEXT: bnez s0, .LBB8_211606; RV32I-NEXT: j .LBB8_221607; RV32I-NEXT: .LBB8_20:1608; RV32I-NEXT: sll t1, t0, a51609; RV32I-NEXT: neg s1, s01610; RV32I-NEXT: srl t0, t0, s11611; RV32I-NEXT: or t0, t0, t21612; RV32I-NEXT: beqz s0, .LBB8_221613; RV32I-NEXT: .LBB8_21:1614; RV32I-NEXT: mv a4, t01615; RV32I-NEXT: .LBB8_22:1616; RV32I-NEXT: lw s0, 28(sp) # 4-byte Folded Reload1617; RV32I-NEXT: lw s1, 24(sp) # 4-byte Folded Reload1618; RV32I-NEXT: lw s2, 20(sp) # 4-byte Folded Reload1619; RV32I-NEXT: lw s3, 16(sp) # 4-byte Folded Reload1620; RV32I-NEXT: lw s4, 12(sp) # 4-byte Folded Reload1621; RV32I-NEXT: lw s5, 8(sp) # 4-byte Folded Reload1622; RV32I-NEXT: lw s6, 4(sp) # 4-byte Folded Reload1623; RV32I-NEXT: addi sp, sp, 321624; RV32I-NEXT: bltu a5, a6, .LBB8_241625; RV32I-NEXT: # %bb.23:1626; RV32I-NEXT: li a1, 01627; RV32I-NEXT: li a3, 01628; RV32I-NEXT: bnez a5, .LBB8_251629; RV32I-NEXT: j .LBB8_261630; RV32I-NEXT: .LBB8_24:1631; RV32I-NEXT: or t1, t4, t61632; RV32I-NEXT: or a4, t5, t31633; RV32I-NEXT: beqz a5, .LBB8_261634; RV32I-NEXT: .LBB8_25:1635; RV32I-NEXT: mv a7, t11636; RV32I-NEXT: mv a0, a41637; RV32I-NEXT: .LBB8_26:1638; RV32I-NEXT: srli a4, a1, 161639; RV32I-NEXT: lui a5, 161640; RV32I-NEXT: srli a6, a1, 241641; RV32I-NEXT: srli t0, a3, 161642; RV32I-NEXT: srli t1, a3, 241643; RV32I-NEXT: srli t2, a7, 161644; RV32I-NEXT: srli t3, a7, 241645; RV32I-NEXT: srli t4, a0, 161646; RV32I-NEXT: srli t5, a0, 241647; RV32I-NEXT: addi a5, a5, -11648; RV32I-NEXT: and t6, a1, a51649; RV32I-NEXT: srli t6, t6, 81650; RV32I-NEXT: sb a1, 0(a2)1651; RV32I-NEXT: sb t6, 1(a2)1652; RV32I-NEXT: sb a4, 2(a2)1653; RV32I-NEXT: sb a6, 3(a2)1654; RV32I-NEXT: and a1, a3, a51655; RV32I-NEXT: srli a1, a1, 81656; RV32I-NEXT: sb a3, 4(a2)1657; RV32I-NEXT: sb a1, 5(a2)1658; RV32I-NEXT: sb t0, 6(a2)1659; RV32I-NEXT: sb t1, 7(a2)1660; RV32I-NEXT: and a1, a7, a51661; RV32I-NEXT: and a5, a0, a51662; RV32I-NEXT: srli a1, a1, 81663; RV32I-NEXT: srli a5, a5, 81664; RV32I-NEXT: sb a7, 8(a2)1665; RV32I-NEXT: sb a1, 9(a2)1666; RV32I-NEXT: sb t2, 10(a2)1667; RV32I-NEXT: sb t3, 11(a2)1668; RV32I-NEXT: sb a0, 12(a2)1669; RV32I-NEXT: sb a5, 13(a2)1670; RV32I-NEXT: sb t4, 14(a2)1671; RV32I-NEXT: sb t5, 15(a2)1672; RV32I-NEXT: ret1673 %src = load i128, ptr %src.ptr, align 11674 %byteOff = load i128, ptr %byteOff.ptr, align 11675 %bitOff = shl i128 %byteOff, 31676 %res = shl i128 %src, %bitOff1677 store i128 %res, ptr %dst, align 11678 ret void1679}1680 1681define void @shl_16bytes_wordOff(ptr %src.ptr, ptr %wordOff.ptr, ptr %dst) nounwind {1682; RV64I-LABEL: shl_16bytes_wordOff:1683; RV64I: # %bb.0:1684; RV64I-NEXT: addi sp, sp, -161685; RV64I-NEXT: sd s0, 8(sp) # 8-byte Folded Spill1686; RV64I-NEXT: lbu a3, 0(a0)1687; RV64I-NEXT: lbu a4, 1(a0)1688; RV64I-NEXT: lbu a5, 2(a0)1689; RV64I-NEXT: lbu a6, 3(a0)1690; RV64I-NEXT: lbu a7, 4(a0)1691; RV64I-NEXT: lbu t0, 5(a0)1692; RV64I-NEXT: lbu t1, 6(a0)1693; RV64I-NEXT: lbu t2, 7(a0)1694; RV64I-NEXT: lbu t3, 8(a0)1695; RV64I-NEXT: lbu t4, 9(a0)1696; RV64I-NEXT: lbu t5, 10(a0)1697; RV64I-NEXT: lbu t6, 11(a0)1698; RV64I-NEXT: slli a4, a4, 81699; RV64I-NEXT: slli a6, a6, 81700; RV64I-NEXT: or a3, a4, a31701; RV64I-NEXT: or a4, a6, a51702; RV64I-NEXT: lbu a5, 12(a0)1703; RV64I-NEXT: lbu a6, 13(a0)1704; RV64I-NEXT: lbu s0, 14(a0)1705; RV64I-NEXT: lbu a0, 15(a0)1706; RV64I-NEXT: slli t0, t0, 81707; RV64I-NEXT: slli t2, t2, 81708; RV64I-NEXT: slli t4, t4, 81709; RV64I-NEXT: slli t6, t6, 81710; RV64I-NEXT: or a7, t0, a71711; RV64I-NEXT: or t0, t2, t11712; RV64I-NEXT: or t1, t4, t31713; RV64I-NEXT: or t2, t6, t51714; RV64I-NEXT: lbu t3, 0(a1)1715; RV64I-NEXT: lbu t4, 1(a1)1716; RV64I-NEXT: lbu t5, 2(a1)1717; RV64I-NEXT: lbu t6, 3(a1)1718; RV64I-NEXT: slli a6, a6, 81719; RV64I-NEXT: slli a0, a0, 81720; RV64I-NEXT: slli t4, t4, 81721; RV64I-NEXT: or a5, a6, a51722; RV64I-NEXT: or a0, a0, s01723; RV64I-NEXT: or a6, t4, t31724; RV64I-NEXT: lbu t3, 4(a1)1725; RV64I-NEXT: lbu t4, 5(a1)1726; RV64I-NEXT: lbu s0, 6(a1)1727; RV64I-NEXT: lbu a1, 7(a1)1728; RV64I-NEXT: slli t6, t6, 81729; RV64I-NEXT: or t5, t6, t51730; RV64I-NEXT: slli t4, t4, 81731; RV64I-NEXT: or t3, t4, t31732; RV64I-NEXT: slli a1, a1, 81733; RV64I-NEXT: or a1, a1, s01734; RV64I-NEXT: slli a4, a4, 161735; RV64I-NEXT: or a3, a4, a31736; RV64I-NEXT: slli t0, t0, 161737; RV64I-NEXT: or a4, t0, a71738; RV64I-NEXT: slli t2, t2, 161739; RV64I-NEXT: or a7, t2, t11740; RV64I-NEXT: slli a0, a0, 161741; RV64I-NEXT: or a0, a0, a51742; RV64I-NEXT: slli t5, t5, 161743; RV64I-NEXT: or a5, t5, a61744; RV64I-NEXT: slli a1, a1, 161745; RV64I-NEXT: or a1, a1, t31746; RV64I-NEXT: slli a4, a4, 321747; RV64I-NEXT: slli a0, a0, 321748; RV64I-NEXT: slli a1, a1, 321749; RV64I-NEXT: or a4, a4, a31750; RV64I-NEXT: or a1, a1, a51751; RV64I-NEXT: slli a3, a1, 51752; RV64I-NEXT: li a5, 641753; RV64I-NEXT: or a0, a0, a71754; RV64I-NEXT: bltu a3, a5, .LBB9_21755; RV64I-NEXT: # %bb.1:1756; RV64I-NEXT: li a1, 01757; RV64I-NEXT: sub a5, a3, a51758; RV64I-NEXT: sll a4, a4, a51759; RV64I-NEXT: bnez a3, .LBB9_31760; RV64I-NEXT: j .LBB9_41761; RV64I-NEXT: .LBB9_2:1762; RV64I-NEXT: sll a1, a4, a31763; RV64I-NEXT: neg a5, a31764; RV64I-NEXT: srl a4, a4, a51765; RV64I-NEXT: sll a5, a0, a31766; RV64I-NEXT: or a4, a4, a51767; RV64I-NEXT: beqz a3, .LBB9_41768; RV64I-NEXT: .LBB9_3:1769; RV64I-NEXT: mv a0, a41770; RV64I-NEXT: .LBB9_4:1771; RV64I-NEXT: srli a3, a1, 321772; RV64I-NEXT: srliw a4, a1, 161773; RV64I-NEXT: lui a5, 161774; RV64I-NEXT: srliw a6, a1, 241775; RV64I-NEXT: srli a7, a1, 481776; RV64I-NEXT: srli t0, a1, 561777; RV64I-NEXT: srli t1, a0, 321778; RV64I-NEXT: srliw t2, a0, 161779; RV64I-NEXT: srliw t3, a0, 241780; RV64I-NEXT: srli t4, a0, 481781; RV64I-NEXT: srli t5, a0, 561782; RV64I-NEXT: addi a5, a5, -11783; RV64I-NEXT: and t6, a1, a51784; RV64I-NEXT: srli t6, t6, 81785; RV64I-NEXT: sb a1, 0(a2)1786; RV64I-NEXT: sb t6, 1(a2)1787; RV64I-NEXT: sb a4, 2(a2)1788; RV64I-NEXT: sb a6, 3(a2)1789; RV64I-NEXT: and a1, a3, a51790; RV64I-NEXT: srli a1, a1, 81791; RV64I-NEXT: sb a3, 4(a2)1792; RV64I-NEXT: sb a1, 5(a2)1793; RV64I-NEXT: sb a7, 6(a2)1794; RV64I-NEXT: sb t0, 7(a2)1795; RV64I-NEXT: and a1, a0, a51796; RV64I-NEXT: and a3, t1, a51797; RV64I-NEXT: srli a1, a1, 81798; RV64I-NEXT: srli a3, a3, 81799; RV64I-NEXT: sb a0, 8(a2)1800; RV64I-NEXT: sb a1, 9(a2)1801; RV64I-NEXT: sb t2, 10(a2)1802; RV64I-NEXT: sb t3, 11(a2)1803; RV64I-NEXT: sb t1, 12(a2)1804; RV64I-NEXT: sb a3, 13(a2)1805; RV64I-NEXT: sb t4, 14(a2)1806; RV64I-NEXT: sb t5, 15(a2)1807; RV64I-NEXT: ld s0, 8(sp) # 8-byte Folded Reload1808; RV64I-NEXT: addi sp, sp, 161809; RV64I-NEXT: ret1810;1811; RV32I-LABEL: shl_16bytes_wordOff:1812; RV32I: # %bb.0:1813; RV32I-NEXT: lbu a3, 0(a0)1814; RV32I-NEXT: lbu a4, 1(a0)1815; RV32I-NEXT: lbu a5, 2(a0)1816; RV32I-NEXT: lbu a6, 3(a0)1817; RV32I-NEXT: lbu a7, 4(a0)1818; RV32I-NEXT: lbu t0, 5(a0)1819; RV32I-NEXT: lbu t1, 6(a0)1820; RV32I-NEXT: lbu t2, 7(a0)1821; RV32I-NEXT: slli a4, a4, 81822; RV32I-NEXT: or a3, a4, a31823; RV32I-NEXT: slli a6, a6, 81824; RV32I-NEXT: slli t0, t0, 81825; RV32I-NEXT: slli t2, t2, 81826; RV32I-NEXT: or a4, a6, a51827; RV32I-NEXT: or a5, t0, a71828; RV32I-NEXT: or a7, t2, t11829; RV32I-NEXT: lbu a6, 1(a1)1830; RV32I-NEXT: lbu t0, 0(a1)1831; RV32I-NEXT: lbu t1, 2(a1)1832; RV32I-NEXT: lbu a1, 3(a1)1833; RV32I-NEXT: slli a6, a6, 81834; RV32I-NEXT: or t2, a6, t01835; RV32I-NEXT: li a6, 641836; RV32I-NEXT: slli a1, a1, 81837; RV32I-NEXT: or a1, a1, t11838; RV32I-NEXT: li t1, 321839; RV32I-NEXT: slli a4, a4, 161840; RV32I-NEXT: slli a7, a7, 161841; RV32I-NEXT: slli a1, a1, 161842; RV32I-NEXT: or t0, a4, a31843; RV32I-NEXT: or a4, a7, a51844; RV32I-NEXT: or a5, a1, t21845; RV32I-NEXT: slli a5, a5, 51846; RV32I-NEXT: neg t3, a51847; RV32I-NEXT: srl t4, t0, t31848; RV32I-NEXT: sll t2, a4, a51849; RV32I-NEXT: bltu a5, t1, .LBB9_21850; RV32I-NEXT: # %bb.1:1851; RV32I-NEXT: li a1, 01852; RV32I-NEXT: sll t5, t0, a51853; RV32I-NEXT: j .LBB9_31854; RV32I-NEXT: .LBB9_2:1855; RV32I-NEXT: sll a1, t0, a51856; RV32I-NEXT: or t5, t4, t21857; RV32I-NEXT: .LBB9_3:1858; RV32I-NEXT: addi sp, sp, -321859; RV32I-NEXT: sw s0, 28(sp) # 4-byte Folded Spill1860; RV32I-NEXT: sw s1, 24(sp) # 4-byte Folded Spill1861; RV32I-NEXT: sw s2, 20(sp) # 4-byte Folded Spill1862; RV32I-NEXT: sw s3, 16(sp) # 4-byte Folded Spill1863; RV32I-NEXT: sw s4, 12(sp) # 4-byte Folded Spill1864; RV32I-NEXT: sw s5, 8(sp) # 4-byte Folded Spill1865; RV32I-NEXT: sw s6, 4(sp) # 4-byte Folded Spill1866; RV32I-NEXT: lbu s3, 11(a0)1867; RV32I-NEXT: lbu s1, 15(a0)1868; RV32I-NEXT: sub a7, a6, a51869; RV32I-NEXT: mv a3, a41870; RV32I-NEXT: beqz a5, .LBB9_51871; RV32I-NEXT: # %bb.4:1872; RV32I-NEXT: mv a3, t51873; RV32I-NEXT: .LBB9_5:1874; RV32I-NEXT: lbu s2, 9(a0)1875; RV32I-NEXT: lbu t5, 10(a0)1876; RV32I-NEXT: lbu s0, 13(a0)1877; RV32I-NEXT: lbu t6, 14(a0)1878; RV32I-NEXT: slli s3, s3, 81879; RV32I-NEXT: slli s1, s1, 81880; RV32I-NEXT: bltu a7, t1, .LBB9_71881; RV32I-NEXT: # %bb.6:1882; RV32I-NEXT: srl s4, a4, a71883; RV32I-NEXT: j .LBB9_81884; RV32I-NEXT: .LBB9_7:1885; RV32I-NEXT: neg s4, a71886; RV32I-NEXT: sll s4, a4, s41887; RV32I-NEXT: or s4, t4, s41888; RV32I-NEXT: .LBB9_8:1889; RV32I-NEXT: slli s2, s2, 81890; RV32I-NEXT: lbu s6, 8(a0)1891; RV32I-NEXT: lbu s5, 12(a0)1892; RV32I-NEXT: or s3, s3, t51893; RV32I-NEXT: slli t5, s0, 81894; RV32I-NEXT: or s1, s1, t61895; RV32I-NEXT: mv t4, t01896; RV32I-NEXT: beqz a7, .LBB9_101897; RV32I-NEXT: # %bb.9:1898; RV32I-NEXT: mv t4, s41899; RV32I-NEXT: .LBB9_10:1900; RV32I-NEXT: or a0, s2, s61901; RV32I-NEXT: slli s0, s3, 161902; RV32I-NEXT: or t6, t5, s51903; RV32I-NEXT: slli s1, s1, 161904; RV32I-NEXT: bltu a7, t1, .LBB9_121905; RV32I-NEXT: # %bb.11:1906; RV32I-NEXT: li t5, 01907; RV32I-NEXT: j .LBB9_131908; RV32I-NEXT: .LBB9_12:1909; RV32I-NEXT: srl t5, a4, t31910; RV32I-NEXT: .LBB9_13:1911; RV32I-NEXT: or a7, s0, a01912; RV32I-NEXT: or a0, s1, t61913; RV32I-NEXT: bltu a5, t1, .LBB9_151914; RV32I-NEXT: # %bb.14:1915; RV32I-NEXT: li t6, 01916; RV32I-NEXT: sll s1, a7, a51917; RV32I-NEXT: j .LBB9_161918; RV32I-NEXT: .LBB9_15:1919; RV32I-NEXT: sll t6, a7, a51920; RV32I-NEXT: srl t3, a7, t31921; RV32I-NEXT: sll s0, a0, a51922; RV32I-NEXT: or s1, t3, s01923; RV32I-NEXT: .LBB9_16:1924; RV32I-NEXT: addi s0, a5, -641925; RV32I-NEXT: mv t3, a01926; RV32I-NEXT: beqz a5, .LBB9_181927; RV32I-NEXT: # %bb.17:1928; RV32I-NEXT: mv t3, s11929; RV32I-NEXT: .LBB9_18:1930; RV32I-NEXT: bltu s0, t1, .LBB9_201931; RV32I-NEXT: # %bb.19:1932; RV32I-NEXT: li t1, 01933; RV32I-NEXT: sll t0, t0, s01934; RV32I-NEXT: bnez s0, .LBB9_211935; RV32I-NEXT: j .LBB9_221936; RV32I-NEXT: .LBB9_20:1937; RV32I-NEXT: sll t1, t0, a51938; RV32I-NEXT: neg s1, s01939; RV32I-NEXT: srl t0, t0, s11940; RV32I-NEXT: or t0, t0, t21941; RV32I-NEXT: beqz s0, .LBB9_221942; RV32I-NEXT: .LBB9_21:1943; RV32I-NEXT: mv a4, t01944; RV32I-NEXT: .LBB9_22:1945; RV32I-NEXT: lw s0, 28(sp) # 4-byte Folded Reload1946; RV32I-NEXT: lw s1, 24(sp) # 4-byte Folded Reload1947; RV32I-NEXT: lw s2, 20(sp) # 4-byte Folded Reload1948; RV32I-NEXT: lw s3, 16(sp) # 4-byte Folded Reload1949; RV32I-NEXT: lw s4, 12(sp) # 4-byte Folded Reload1950; RV32I-NEXT: lw s5, 8(sp) # 4-byte Folded Reload1951; RV32I-NEXT: lw s6, 4(sp) # 4-byte Folded Reload1952; RV32I-NEXT: addi sp, sp, 321953; RV32I-NEXT: bltu a5, a6, .LBB9_241954; RV32I-NEXT: # %bb.23:1955; RV32I-NEXT: li a1, 01956; RV32I-NEXT: li a3, 01957; RV32I-NEXT: bnez a5, .LBB9_251958; RV32I-NEXT: j .LBB9_261959; RV32I-NEXT: .LBB9_24:1960; RV32I-NEXT: or t1, t4, t61961; RV32I-NEXT: or a4, t5, t31962; RV32I-NEXT: beqz a5, .LBB9_261963; RV32I-NEXT: .LBB9_25:1964; RV32I-NEXT: mv a7, t11965; RV32I-NEXT: mv a0, a41966; RV32I-NEXT: .LBB9_26:1967; RV32I-NEXT: srli a4, a1, 161968; RV32I-NEXT: lui a5, 161969; RV32I-NEXT: srli a6, a1, 241970; RV32I-NEXT: srli t0, a3, 161971; RV32I-NEXT: srli t1, a3, 241972; RV32I-NEXT: srli t2, a7, 161973; RV32I-NEXT: srli t3, a7, 241974; RV32I-NEXT: srli t4, a0, 161975; RV32I-NEXT: srli t5, a0, 241976; RV32I-NEXT: addi a5, a5, -11977; RV32I-NEXT: and t6, a1, a51978; RV32I-NEXT: srli t6, t6, 81979; RV32I-NEXT: sb a1, 0(a2)1980; RV32I-NEXT: sb t6, 1(a2)1981; RV32I-NEXT: sb a4, 2(a2)1982; RV32I-NEXT: sb a6, 3(a2)1983; RV32I-NEXT: and a1, a3, a51984; RV32I-NEXT: srli a1, a1, 81985; RV32I-NEXT: sb a3, 4(a2)1986; RV32I-NEXT: sb a1, 5(a2)1987; RV32I-NEXT: sb t0, 6(a2)1988; RV32I-NEXT: sb t1, 7(a2)1989; RV32I-NEXT: and a1, a7, a51990; RV32I-NEXT: and a5, a0, a51991; RV32I-NEXT: srli a1, a1, 81992; RV32I-NEXT: srli a5, a5, 81993; RV32I-NEXT: sb a7, 8(a2)1994; RV32I-NEXT: sb a1, 9(a2)1995; RV32I-NEXT: sb t2, 10(a2)1996; RV32I-NEXT: sb t3, 11(a2)1997; RV32I-NEXT: sb a0, 12(a2)1998; RV32I-NEXT: sb a5, 13(a2)1999; RV32I-NEXT: sb t4, 14(a2)2000; RV32I-NEXT: sb t5, 15(a2)2001; RV32I-NEXT: ret2002 %src = load i128, ptr %src.ptr, align 12003 %wordOff = load i128, ptr %wordOff.ptr, align 12004 %bitOff = shl i128 %wordOff, 52005 %res = shl i128 %src, %bitOff2006 store i128 %res, ptr %dst, align 12007 ret void2008}2009 2010 2011define void @ashr_16bytes(ptr %src.ptr, ptr %byteOff.ptr, ptr %dst) nounwind {2012; RV64I-LABEL: ashr_16bytes:2013; RV64I: # %bb.0:2014; RV64I-NEXT: addi sp, sp, -162015; RV64I-NEXT: sd s0, 8(sp) # 8-byte Folded Spill2016; RV64I-NEXT: lbu a3, 0(a0)2017; RV64I-NEXT: lbu a4, 1(a0)2018; RV64I-NEXT: lbu a5, 2(a0)2019; RV64I-NEXT: lbu a6, 3(a0)2020; RV64I-NEXT: lbu a7, 4(a0)2021; RV64I-NEXT: lbu t0, 5(a0)2022; RV64I-NEXT: lbu t1, 6(a0)2023; RV64I-NEXT: lbu t2, 7(a0)2024; RV64I-NEXT: lbu t3, 8(a0)2025; RV64I-NEXT: lbu t4, 9(a0)2026; RV64I-NEXT: lbu t5, 10(a0)2027; RV64I-NEXT: lbu t6, 11(a0)2028; RV64I-NEXT: slli a4, a4, 82029; RV64I-NEXT: slli a6, a6, 82030; RV64I-NEXT: or a3, a4, a32031; RV64I-NEXT: or a4, a6, a52032; RV64I-NEXT: lbu a5, 12(a0)2033; RV64I-NEXT: lbu a6, 13(a0)2034; RV64I-NEXT: lbu s0, 14(a0)2035; RV64I-NEXT: lbu a0, 15(a0)2036; RV64I-NEXT: slli t0, t0, 82037; RV64I-NEXT: slli t2, t2, 82038; RV64I-NEXT: slli t4, t4, 82039; RV64I-NEXT: slli t6, t6, 82040; RV64I-NEXT: or a7, t0, a72041; RV64I-NEXT: or t0, t2, t12042; RV64I-NEXT: or t1, t4, t32043; RV64I-NEXT: or t2, t6, t52044; RV64I-NEXT: lbu t3, 0(a1)2045; RV64I-NEXT: lbu t4, 1(a1)2046; RV64I-NEXT: lbu t5, 2(a1)2047; RV64I-NEXT: lbu t6, 3(a1)2048; RV64I-NEXT: slli a6, a6, 82049; RV64I-NEXT: slli a0, a0, 82050; RV64I-NEXT: slli t4, t4, 82051; RV64I-NEXT: or a5, a6, a52052; RV64I-NEXT: or a0, a0, s02053; RV64I-NEXT: or a6, t4, t32054; RV64I-NEXT: lbu t3, 4(a1)2055; RV64I-NEXT: lbu t4, 5(a1)2056; RV64I-NEXT: lbu s0, 6(a1)2057; RV64I-NEXT: lbu a1, 7(a1)2058; RV64I-NEXT: slli t6, t6, 82059; RV64I-NEXT: or t5, t6, t52060; RV64I-NEXT: slli t4, t4, 82061; RV64I-NEXT: or t3, t4, t32062; RV64I-NEXT: slli a1, a1, 82063; RV64I-NEXT: or a1, a1, s02064; RV64I-NEXT: slli a4, a4, 162065; RV64I-NEXT: or a3, a4, a32066; RV64I-NEXT: slli t0, t0, 162067; RV64I-NEXT: or a4, t0, a72068; RV64I-NEXT: slli t2, t2, 162069; RV64I-NEXT: or a7, t2, t12070; RV64I-NEXT: slli a0, a0, 162071; RV64I-NEXT: or a0, a0, a52072; RV64I-NEXT: slli t5, t5, 162073; RV64I-NEXT: or a5, t5, a62074; RV64I-NEXT: slli a1, a1, 162075; RV64I-NEXT: or a1, a1, t32076; RV64I-NEXT: slli a4, a4, 322077; RV64I-NEXT: slli a6, a0, 322078; RV64I-NEXT: slli a1, a1, 322079; RV64I-NEXT: or a0, a4, a32080; RV64I-NEXT: or a1, a1, a52081; RV64I-NEXT: slli a1, a1, 32082; RV64I-NEXT: li a4, 642083; RV64I-NEXT: or a3, a6, a72084; RV64I-NEXT: bltu a1, a4, .LBB10_22085; RV64I-NEXT: # %bb.1:2086; RV64I-NEXT: sub a5, a1, a42087; RV64I-NEXT: sra a5, a3, a52088; RV64I-NEXT: bnez a1, .LBB10_32089; RV64I-NEXT: j .LBB10_42090; RV64I-NEXT: .LBB10_2:2091; RV64I-NEXT: srl a5, a0, a12092; RV64I-NEXT: neg a6, a12093; RV64I-NEXT: sll a6, a3, a62094; RV64I-NEXT: or a5, a5, a62095; RV64I-NEXT: beqz a1, .LBB10_42096; RV64I-NEXT: .LBB10_3:2097; RV64I-NEXT: mv a0, a52098; RV64I-NEXT: .LBB10_4:2099; RV64I-NEXT: bltu a1, a4, .LBB10_62100; RV64I-NEXT: # %bb.5:2101; RV64I-NEXT: srai a1, a3, 632102; RV64I-NEXT: j .LBB10_72103; RV64I-NEXT: .LBB10_6:2104; RV64I-NEXT: sra a1, a3, a12105; RV64I-NEXT: .LBB10_7:2106; RV64I-NEXT: srli a3, a0, 322107; RV64I-NEXT: srliw a4, a0, 162108; RV64I-NEXT: lui a5, 162109; RV64I-NEXT: srliw a6, a0, 242110; RV64I-NEXT: srli a7, a0, 482111; RV64I-NEXT: srli t0, a0, 562112; RV64I-NEXT: srli t1, a1, 322113; RV64I-NEXT: srliw t2, a1, 162114; RV64I-NEXT: srliw t3, a1, 242115; RV64I-NEXT: srli t4, a1, 482116; RV64I-NEXT: srli t5, a1, 562117; RV64I-NEXT: addi a5, a5, -12118; RV64I-NEXT: and t6, a0, a52119; RV64I-NEXT: srli t6, t6, 82120; RV64I-NEXT: sb a0, 0(a2)2121; RV64I-NEXT: sb t6, 1(a2)2122; RV64I-NEXT: sb a4, 2(a2)2123; RV64I-NEXT: sb a6, 3(a2)2124; RV64I-NEXT: and a0, a3, a52125; RV64I-NEXT: srli a0, a0, 82126; RV64I-NEXT: sb a3, 4(a2)2127; RV64I-NEXT: sb a0, 5(a2)2128; RV64I-NEXT: sb a7, 6(a2)2129; RV64I-NEXT: sb t0, 7(a2)2130; RV64I-NEXT: and a0, a1, a52131; RV64I-NEXT: and a3, t1, a52132; RV64I-NEXT: srli a0, a0, 82133; RV64I-NEXT: srli a3, a3, 82134; RV64I-NEXT: sb a1, 8(a2)2135; RV64I-NEXT: sb a0, 9(a2)2136; RV64I-NEXT: sb t2, 10(a2)2137; RV64I-NEXT: sb t3, 11(a2)2138; RV64I-NEXT: sb t1, 12(a2)2139; RV64I-NEXT: sb a3, 13(a2)2140; RV64I-NEXT: sb t4, 14(a2)2141; RV64I-NEXT: sb t5, 15(a2)2142; RV64I-NEXT: ld s0, 8(sp) # 8-byte Folded Reload2143; RV64I-NEXT: addi sp, sp, 162144; RV64I-NEXT: ret2145;2146; RV32I-LABEL: ashr_16bytes:2147; RV32I: # %bb.0:2148; RV32I-NEXT: addi sp, sp, -162149; RV32I-NEXT: sw s0, 12(sp) # 4-byte Folded Spill2150; RV32I-NEXT: sw s1, 8(sp) # 4-byte Folded Spill2151; RV32I-NEXT: sw s2, 4(sp) # 4-byte Folded Spill2152; RV32I-NEXT: lbu a3, 0(a0)2153; RV32I-NEXT: lbu a5, 1(a0)2154; RV32I-NEXT: lbu a6, 2(a0)2155; RV32I-NEXT: lbu a7, 3(a0)2156; RV32I-NEXT: lbu a4, 4(a0)2157; RV32I-NEXT: lbu t2, 5(a0)2158; RV32I-NEXT: lbu t0, 6(a0)2159; RV32I-NEXT: lbu t1, 7(a0)2160; RV32I-NEXT: lbu t4, 8(a0)2161; RV32I-NEXT: lbu t5, 9(a0)2162; RV32I-NEXT: lbu t6, 10(a0)2163; RV32I-NEXT: lbu s0, 11(a0)2164; RV32I-NEXT: slli a7, a7, 82165; RV32I-NEXT: slli t1, t1, 82166; RV32I-NEXT: or t3, a7, a62167; RV32I-NEXT: or t1, t1, t02168; RV32I-NEXT: lbu a6, 12(a0)2169; RV32I-NEXT: lbu a7, 13(a0)2170; RV32I-NEXT: lbu t0, 14(a0)2171; RV32I-NEXT: lbu a0, 15(a0)2172; RV32I-NEXT: slli t5, t5, 82173; RV32I-NEXT: slli s0, s0, 82174; RV32I-NEXT: slli a7, a7, 82175; RV32I-NEXT: or t4, t5, t42176; RV32I-NEXT: or t5, s0, t62177; RV32I-NEXT: or a6, a7, a62178; RV32I-NEXT: lbu a7, 0(a1)2179; RV32I-NEXT: lbu t6, 1(a1)2180; RV32I-NEXT: lbu s0, 2(a1)2181; RV32I-NEXT: lbu a1, 3(a1)2182; RV32I-NEXT: slli a0, a0, 82183; RV32I-NEXT: or s1, a0, t02184; RV32I-NEXT: slli t6, t6, 82185; RV32I-NEXT: or t6, t6, a72186; RV32I-NEXT: slli a1, a1, 82187; RV32I-NEXT: or s0, a1, s02188; RV32I-NEXT: li t0, 322189; RV32I-NEXT: slli a1, a5, 82190; RV32I-NEXT: slli a0, t2, 82191; RV32I-NEXT: slli t5, t5, 162192; RV32I-NEXT: slli s1, s1, 162193; RV32I-NEXT: slli s0, s0, 162194; RV32I-NEXT: or a7, t5, t42195; RV32I-NEXT: or a5, s1, a62196; RV32I-NEXT: or a6, s0, t62197; RV32I-NEXT: slli a6, a6, 32198; RV32I-NEXT: srl t2, a7, a62199; RV32I-NEXT: neg t6, a62200; RV32I-NEXT: sll t4, a5, t62201; RV32I-NEXT: bltu a6, t0, .LBB10_22202; RV32I-NEXT: # %bb.1:2203; RV32I-NEXT: sra t5, a5, a62204; RV32I-NEXT: j .LBB10_32205; RV32I-NEXT: .LBB10_2:2206; RV32I-NEXT: or t5, t2, t42207; RV32I-NEXT: .LBB10_3:2208; RV32I-NEXT: or a1, a1, a32209; RV32I-NEXT: slli t3, t3, 162210; RV32I-NEXT: or a3, a0, a42211; RV32I-NEXT: slli t1, t1, 162212; RV32I-NEXT: mv a0, a72213; RV32I-NEXT: beqz a6, .LBB10_52214; RV32I-NEXT: # %bb.4:2215; RV32I-NEXT: mv a0, t52216; RV32I-NEXT: .LBB10_5:2217; RV32I-NEXT: or a4, t3, a12218; RV32I-NEXT: or a3, t1, a32219; RV32I-NEXT: bltu a6, t0, .LBB10_72220; RV32I-NEXT: # %bb.6:2221; RV32I-NEXT: srai a1, a5, 312222; RV32I-NEXT: srl t5, a3, a62223; RV32I-NEXT: j .LBB10_82224; RV32I-NEXT: .LBB10_7:2225; RV32I-NEXT: sra a1, a5, a62226; RV32I-NEXT: srl t1, a4, a62227; RV32I-NEXT: sll t3, a3, t62228; RV32I-NEXT: or t5, t1, t32229; RV32I-NEXT: .LBB10_8:2230; RV32I-NEXT: li t1, 642231; RV32I-NEXT: mv t3, a42232; RV32I-NEXT: beqz a6, .LBB10_102233; RV32I-NEXT: # %bb.9:2234; RV32I-NEXT: mv t3, t52235; RV32I-NEXT: .LBB10_10:2236; RV32I-NEXT: sub s0, t1, a62237; RV32I-NEXT: bltu a6, t0, .LBB10_132238; RV32I-NEXT: # %bb.11:2239; RV32I-NEXT: li t5, 02240; RV32I-NEXT: bgeu s0, t0, .LBB10_142241; RV32I-NEXT: .LBB10_12:2242; RV32I-NEXT: sll t6, a7, t62243; RV32I-NEXT: neg s1, s02244; RV32I-NEXT: srl s1, a7, s12245; RV32I-NEXT: or s2, s1, t42246; RV32I-NEXT: j .LBB10_152247; RV32I-NEXT: .LBB10_13:2248; RV32I-NEXT: srl t5, a3, a62249; RV32I-NEXT: bltu s0, t0, .LBB10_122250; RV32I-NEXT: .LBB10_14:2251; RV32I-NEXT: li t6, 02252; RV32I-NEXT: sll s2, a7, s02253; RV32I-NEXT: .LBB10_15:2254; RV32I-NEXT: addi s1, a6, -642255; RV32I-NEXT: mv t4, a52256; RV32I-NEXT: beqz s0, .LBB10_172257; RV32I-NEXT: # %bb.16:2258; RV32I-NEXT: mv t4, s22259; RV32I-NEXT: .LBB10_17:2260; RV32I-NEXT: bltu s1, t0, .LBB10_192261; RV32I-NEXT: # %bb.18:2262; RV32I-NEXT: sra t2, a5, s12263; RV32I-NEXT: bnez s1, .LBB10_202264; RV32I-NEXT: j .LBB10_212265; RV32I-NEXT: .LBB10_19:2266; RV32I-NEXT: neg s0, s12267; RV32I-NEXT: sll s0, a5, s02268; RV32I-NEXT: or t2, t2, s02269; RV32I-NEXT: beqz s1, .LBB10_212270; RV32I-NEXT: .LBB10_20:2271; RV32I-NEXT: mv a7, t22272; RV32I-NEXT: .LBB10_21:2273; RV32I-NEXT: bltu s1, t0, .LBB10_232274; RV32I-NEXT: # %bb.22:2275; RV32I-NEXT: srai t0, a5, 312276; RV32I-NEXT: bltu a6, t1, .LBB10_242277; RV32I-NEXT: j .LBB10_252278; RV32I-NEXT: .LBB10_23:2279; RV32I-NEXT: sra t0, a5, a62280; RV32I-NEXT: bgeu a6, t1, .LBB10_252281; RV32I-NEXT: .LBB10_24:2282; RV32I-NEXT: or a7, t3, t62283; RV32I-NEXT: or t0, t5, t42284; RV32I-NEXT: .LBB10_25:2285; RV32I-NEXT: bnez a6, .LBB10_292286; RV32I-NEXT: # %bb.26:2287; RV32I-NEXT: bltu a6, t1, .LBB10_282288; RV32I-NEXT: .LBB10_27:2289; RV32I-NEXT: srai a0, a5, 312290; RV32I-NEXT: mv a1, a02291; RV32I-NEXT: .LBB10_28:2292; RV32I-NEXT: srli a5, a4, 162293; RV32I-NEXT: lui a6, 162294; RV32I-NEXT: srli a7, a4, 242295; RV32I-NEXT: srli t0, a3, 162296; RV32I-NEXT: srli t1, a3, 242297; RV32I-NEXT: srli t2, a0, 162298; RV32I-NEXT: srli t3, a0, 242299; RV32I-NEXT: srli t4, a1, 162300; RV32I-NEXT: srli t5, a1, 242301; RV32I-NEXT: addi a6, a6, -12302; RV32I-NEXT: and t6, a4, a62303; RV32I-NEXT: srli t6, t6, 82304; RV32I-NEXT: sb a4, 0(a2)2305; RV32I-NEXT: sb t6, 1(a2)2306; RV32I-NEXT: sb a5, 2(a2)2307; RV32I-NEXT: sb a7, 3(a2)2308; RV32I-NEXT: and a4, a3, a62309; RV32I-NEXT: srli a4, a4, 82310; RV32I-NEXT: sb a3, 4(a2)2311; RV32I-NEXT: sb a4, 5(a2)2312; RV32I-NEXT: sb t0, 6(a2)2313; RV32I-NEXT: sb t1, 7(a2)2314; RV32I-NEXT: and a3, a0, a62315; RV32I-NEXT: and a4, a1, a62316; RV32I-NEXT: srli a3, a3, 82317; RV32I-NEXT: srli a4, a4, 82318; RV32I-NEXT: sb a0, 8(a2)2319; RV32I-NEXT: sb a3, 9(a2)2320; RV32I-NEXT: sb t2, 10(a2)2321; RV32I-NEXT: sb t3, 11(a2)2322; RV32I-NEXT: sb a1, 12(a2)2323; RV32I-NEXT: sb a4, 13(a2)2324; RV32I-NEXT: sb t4, 14(a2)2325; RV32I-NEXT: sb t5, 15(a2)2326; RV32I-NEXT: lw s0, 12(sp) # 4-byte Folded Reload2327; RV32I-NEXT: lw s1, 8(sp) # 4-byte Folded Reload2328; RV32I-NEXT: lw s2, 4(sp) # 4-byte Folded Reload2329; RV32I-NEXT: addi sp, sp, 162330; RV32I-NEXT: ret2331; RV32I-NEXT: .LBB10_29:2332; RV32I-NEXT: mv a4, a72333; RV32I-NEXT: mv a3, t02334; RV32I-NEXT: bgeu a6, t1, .LBB10_272335; RV32I-NEXT: j .LBB10_282336 %src = load i128, ptr %src.ptr, align 12337 %byteOff = load i128, ptr %byteOff.ptr, align 12338 %bitOff = shl i128 %byteOff, 32339 %res = ashr i128 %src, %bitOff2340 store i128 %res, ptr %dst, align 12341 ret void2342}2343 2344define void @ashr_16bytes_wordOff(ptr %src.ptr, ptr %wordOff.ptr, ptr %dst) nounwind {2345; RV64I-LABEL: ashr_16bytes_wordOff:2346; RV64I: # %bb.0:2347; RV64I-NEXT: addi sp, sp, -162348; RV64I-NEXT: sd s0, 8(sp) # 8-byte Folded Spill2349; RV64I-NEXT: lbu a3, 0(a0)2350; RV64I-NEXT: lbu a4, 1(a0)2351; RV64I-NEXT: lbu a5, 2(a0)2352; RV64I-NEXT: lbu a6, 3(a0)2353; RV64I-NEXT: lbu a7, 4(a0)2354; RV64I-NEXT: lbu t0, 5(a0)2355; RV64I-NEXT: lbu t1, 6(a0)2356; RV64I-NEXT: lbu t2, 7(a0)2357; RV64I-NEXT: lbu t3, 8(a0)2358; RV64I-NEXT: lbu t4, 9(a0)2359; RV64I-NEXT: lbu t5, 10(a0)2360; RV64I-NEXT: lbu t6, 11(a0)2361; RV64I-NEXT: slli a4, a4, 82362; RV64I-NEXT: slli a6, a6, 82363; RV64I-NEXT: or a3, a4, a32364; RV64I-NEXT: or a4, a6, a52365; RV64I-NEXT: lbu a5, 12(a0)2366; RV64I-NEXT: lbu a6, 13(a0)2367; RV64I-NEXT: lbu s0, 14(a0)2368; RV64I-NEXT: lbu a0, 15(a0)2369; RV64I-NEXT: slli t0, t0, 82370; RV64I-NEXT: slli t2, t2, 82371; RV64I-NEXT: slli t4, t4, 82372; RV64I-NEXT: slli t6, t6, 82373; RV64I-NEXT: or a7, t0, a72374; RV64I-NEXT: or t0, t2, t12375; RV64I-NEXT: or t1, t4, t32376; RV64I-NEXT: or t2, t6, t52377; RV64I-NEXT: lbu t3, 0(a1)2378; RV64I-NEXT: lbu t4, 1(a1)2379; RV64I-NEXT: lbu t5, 2(a1)2380; RV64I-NEXT: lbu t6, 3(a1)2381; RV64I-NEXT: slli a6, a6, 82382; RV64I-NEXT: slli a0, a0, 82383; RV64I-NEXT: slli t4, t4, 82384; RV64I-NEXT: or a5, a6, a52385; RV64I-NEXT: or a0, a0, s02386; RV64I-NEXT: or a6, t4, t32387; RV64I-NEXT: lbu t3, 4(a1)2388; RV64I-NEXT: lbu t4, 5(a1)2389; RV64I-NEXT: lbu s0, 6(a1)2390; RV64I-NEXT: lbu a1, 7(a1)2391; RV64I-NEXT: slli t6, t6, 82392; RV64I-NEXT: or t5, t6, t52393; RV64I-NEXT: slli t4, t4, 82394; RV64I-NEXT: or t3, t4, t32395; RV64I-NEXT: slli a1, a1, 82396; RV64I-NEXT: or a1, a1, s02397; RV64I-NEXT: slli a4, a4, 162398; RV64I-NEXT: or a3, a4, a32399; RV64I-NEXT: slli t0, t0, 162400; RV64I-NEXT: or a4, t0, a72401; RV64I-NEXT: slli t2, t2, 162402; RV64I-NEXT: or a7, t2, t12403; RV64I-NEXT: slli a0, a0, 162404; RV64I-NEXT: or a0, a0, a52405; RV64I-NEXT: slli t5, t5, 162406; RV64I-NEXT: or a5, t5, a62407; RV64I-NEXT: slli a1, a1, 162408; RV64I-NEXT: or a1, a1, t32409; RV64I-NEXT: slli a4, a4, 322410; RV64I-NEXT: slli a6, a0, 322411; RV64I-NEXT: slli a1, a1, 322412; RV64I-NEXT: or a0, a4, a32413; RV64I-NEXT: or a1, a1, a52414; RV64I-NEXT: slli a1, a1, 52415; RV64I-NEXT: li a4, 642416; RV64I-NEXT: or a3, a6, a72417; RV64I-NEXT: bltu a1, a4, .LBB11_22418; RV64I-NEXT: # %bb.1:2419; RV64I-NEXT: sub a5, a1, a42420; RV64I-NEXT: sra a5, a3, a52421; RV64I-NEXT: bnez a1, .LBB11_32422; RV64I-NEXT: j .LBB11_42423; RV64I-NEXT: .LBB11_2:2424; RV64I-NEXT: srl a5, a0, a12425; RV64I-NEXT: neg a6, a12426; RV64I-NEXT: sll a6, a3, a62427; RV64I-NEXT: or a5, a5, a62428; RV64I-NEXT: beqz a1, .LBB11_42429; RV64I-NEXT: .LBB11_3:2430; RV64I-NEXT: mv a0, a52431; RV64I-NEXT: .LBB11_4:2432; RV64I-NEXT: bltu a1, a4, .LBB11_62433; RV64I-NEXT: # %bb.5:2434; RV64I-NEXT: srai a1, a3, 632435; RV64I-NEXT: j .LBB11_72436; RV64I-NEXT: .LBB11_6:2437; RV64I-NEXT: sra a1, a3, a12438; RV64I-NEXT: .LBB11_7:2439; RV64I-NEXT: srli a3, a0, 322440; RV64I-NEXT: srliw a4, a0, 162441; RV64I-NEXT: lui a5, 162442; RV64I-NEXT: srliw a6, a0, 242443; RV64I-NEXT: srli a7, a0, 482444; RV64I-NEXT: srli t0, a0, 562445; RV64I-NEXT: srli t1, a1, 322446; RV64I-NEXT: srliw t2, a1, 162447; RV64I-NEXT: srliw t3, a1, 242448; RV64I-NEXT: srli t4, a1, 482449; RV64I-NEXT: srli t5, a1, 562450; RV64I-NEXT: addi a5, a5, -12451; RV64I-NEXT: and t6, a0, a52452; RV64I-NEXT: srli t6, t6, 82453; RV64I-NEXT: sb a0, 0(a2)2454; RV64I-NEXT: sb t6, 1(a2)2455; RV64I-NEXT: sb a4, 2(a2)2456; RV64I-NEXT: sb a6, 3(a2)2457; RV64I-NEXT: and a0, a3, a52458; RV64I-NEXT: srli a0, a0, 82459; RV64I-NEXT: sb a3, 4(a2)2460; RV64I-NEXT: sb a0, 5(a2)2461; RV64I-NEXT: sb a7, 6(a2)2462; RV64I-NEXT: sb t0, 7(a2)2463; RV64I-NEXT: and a0, a1, a52464; RV64I-NEXT: and a3, t1, a52465; RV64I-NEXT: srli a0, a0, 82466; RV64I-NEXT: srli a3, a3, 82467; RV64I-NEXT: sb a1, 8(a2)2468; RV64I-NEXT: sb a0, 9(a2)2469; RV64I-NEXT: sb t2, 10(a2)2470; RV64I-NEXT: sb t3, 11(a2)2471; RV64I-NEXT: sb t1, 12(a2)2472; RV64I-NEXT: sb a3, 13(a2)2473; RV64I-NEXT: sb t4, 14(a2)2474; RV64I-NEXT: sb t5, 15(a2)2475; RV64I-NEXT: ld s0, 8(sp) # 8-byte Folded Reload2476; RV64I-NEXT: addi sp, sp, 162477; RV64I-NEXT: ret2478;2479; RV32I-LABEL: ashr_16bytes_wordOff:2480; RV32I: # %bb.0:2481; RV32I-NEXT: addi sp, sp, -162482; RV32I-NEXT: sw s0, 12(sp) # 4-byte Folded Spill2483; RV32I-NEXT: sw s1, 8(sp) # 4-byte Folded Spill2484; RV32I-NEXT: sw s2, 4(sp) # 4-byte Folded Spill2485; RV32I-NEXT: lbu a3, 0(a0)2486; RV32I-NEXT: lbu a5, 1(a0)2487; RV32I-NEXT: lbu a6, 2(a0)2488; RV32I-NEXT: lbu a7, 3(a0)2489; RV32I-NEXT: lbu a4, 4(a0)2490; RV32I-NEXT: lbu t2, 5(a0)2491; RV32I-NEXT: lbu t0, 6(a0)2492; RV32I-NEXT: lbu t1, 7(a0)2493; RV32I-NEXT: lbu t4, 8(a0)2494; RV32I-NEXT: lbu t5, 9(a0)2495; RV32I-NEXT: lbu t6, 10(a0)2496; RV32I-NEXT: lbu s0, 11(a0)2497; RV32I-NEXT: slli a7, a7, 82498; RV32I-NEXT: slli t1, t1, 82499; RV32I-NEXT: or t3, a7, a62500; RV32I-NEXT: or t1, t1, t02501; RV32I-NEXT: lbu a6, 12(a0)2502; RV32I-NEXT: lbu a7, 13(a0)2503; RV32I-NEXT: lbu t0, 14(a0)2504; RV32I-NEXT: lbu a0, 15(a0)2505; RV32I-NEXT: slli t5, t5, 82506; RV32I-NEXT: slli s0, s0, 82507; RV32I-NEXT: slli a7, a7, 82508; RV32I-NEXT: or t4, t5, t42509; RV32I-NEXT: or t5, s0, t62510; RV32I-NEXT: or a6, a7, a62511; RV32I-NEXT: lbu a7, 0(a1)2512; RV32I-NEXT: lbu t6, 1(a1)2513; RV32I-NEXT: lbu s0, 2(a1)2514; RV32I-NEXT: lbu a1, 3(a1)2515; RV32I-NEXT: slli a0, a0, 82516; RV32I-NEXT: or s1, a0, t02517; RV32I-NEXT: slli t6, t6, 82518; RV32I-NEXT: or t6, t6, a72519; RV32I-NEXT: slli a1, a1, 82520; RV32I-NEXT: or s0, a1, s02521; RV32I-NEXT: li t0, 322522; RV32I-NEXT: slli a1, a5, 82523; RV32I-NEXT: slli a0, t2, 82524; RV32I-NEXT: slli t5, t5, 162525; RV32I-NEXT: slli s1, s1, 162526; RV32I-NEXT: slli s0, s0, 162527; RV32I-NEXT: or a7, t5, t42528; RV32I-NEXT: or a5, s1, a62529; RV32I-NEXT: or a6, s0, t62530; RV32I-NEXT: slli a6, a6, 52531; RV32I-NEXT: srl t2, a7, a62532; RV32I-NEXT: neg t6, a62533; RV32I-NEXT: sll t4, a5, t62534; RV32I-NEXT: bltu a6, t0, .LBB11_22535; RV32I-NEXT: # %bb.1:2536; RV32I-NEXT: sra t5, a5, a62537; RV32I-NEXT: j .LBB11_32538; RV32I-NEXT: .LBB11_2:2539; RV32I-NEXT: or t5, t2, t42540; RV32I-NEXT: .LBB11_3:2541; RV32I-NEXT: or a1, a1, a32542; RV32I-NEXT: slli t3, t3, 162543; RV32I-NEXT: or a3, a0, a42544; RV32I-NEXT: slli t1, t1, 162545; RV32I-NEXT: mv a0, a72546; RV32I-NEXT: beqz a6, .LBB11_52547; RV32I-NEXT: # %bb.4:2548; RV32I-NEXT: mv a0, t52549; RV32I-NEXT: .LBB11_5:2550; RV32I-NEXT: or a4, t3, a12551; RV32I-NEXT: or a3, t1, a32552; RV32I-NEXT: bltu a6, t0, .LBB11_72553; RV32I-NEXT: # %bb.6:2554; RV32I-NEXT: srai a1, a5, 312555; RV32I-NEXT: srl t5, a3, a62556; RV32I-NEXT: j .LBB11_82557; RV32I-NEXT: .LBB11_7:2558; RV32I-NEXT: sra a1, a5, a62559; RV32I-NEXT: srl t1, a4, a62560; RV32I-NEXT: sll t3, a3, t62561; RV32I-NEXT: or t5, t1, t32562; RV32I-NEXT: .LBB11_8:2563; RV32I-NEXT: li t1, 642564; RV32I-NEXT: mv t3, a42565; RV32I-NEXT: beqz a6, .LBB11_102566; RV32I-NEXT: # %bb.9:2567; RV32I-NEXT: mv t3, t52568; RV32I-NEXT: .LBB11_10:2569; RV32I-NEXT: sub s0, t1, a62570; RV32I-NEXT: bltu a6, t0, .LBB11_132571; RV32I-NEXT: # %bb.11:2572; RV32I-NEXT: li t5, 02573; RV32I-NEXT: bgeu s0, t0, .LBB11_142574; RV32I-NEXT: .LBB11_12:2575; RV32I-NEXT: sll t6, a7, t62576; RV32I-NEXT: neg s1, s02577; RV32I-NEXT: srl s1, a7, s12578; RV32I-NEXT: or s2, s1, t42579; RV32I-NEXT: j .LBB11_152580; RV32I-NEXT: .LBB11_13:2581; RV32I-NEXT: srl t5, a3, a62582; RV32I-NEXT: bltu s0, t0, .LBB11_122583; RV32I-NEXT: .LBB11_14:2584; RV32I-NEXT: li t6, 02585; RV32I-NEXT: sll s2, a7, s02586; RV32I-NEXT: .LBB11_15:2587; RV32I-NEXT: addi s1, a6, -642588; RV32I-NEXT: mv t4, a52589; RV32I-NEXT: beqz s0, .LBB11_172590; RV32I-NEXT: # %bb.16:2591; RV32I-NEXT: mv t4, s22592; RV32I-NEXT: .LBB11_17:2593; RV32I-NEXT: bltu s1, t0, .LBB11_192594; RV32I-NEXT: # %bb.18:2595; RV32I-NEXT: sra t2, a5, s12596; RV32I-NEXT: bnez s1, .LBB11_202597; RV32I-NEXT: j .LBB11_212598; RV32I-NEXT: .LBB11_19:2599; RV32I-NEXT: neg s0, s12600; RV32I-NEXT: sll s0, a5, s02601; RV32I-NEXT: or t2, t2, s02602; RV32I-NEXT: beqz s1, .LBB11_212603; RV32I-NEXT: .LBB11_20:2604; RV32I-NEXT: mv a7, t22605; RV32I-NEXT: .LBB11_21:2606; RV32I-NEXT: bltu s1, t0, .LBB11_232607; RV32I-NEXT: # %bb.22:2608; RV32I-NEXT: srai t0, a5, 312609; RV32I-NEXT: bltu a6, t1, .LBB11_242610; RV32I-NEXT: j .LBB11_252611; RV32I-NEXT: .LBB11_23:2612; RV32I-NEXT: sra t0, a5, a62613; RV32I-NEXT: bgeu a6, t1, .LBB11_252614; RV32I-NEXT: .LBB11_24:2615; RV32I-NEXT: or a7, t3, t62616; RV32I-NEXT: or t0, t5, t42617; RV32I-NEXT: .LBB11_25:2618; RV32I-NEXT: bnez a6, .LBB11_292619; RV32I-NEXT: # %bb.26:2620; RV32I-NEXT: bltu a6, t1, .LBB11_282621; RV32I-NEXT: .LBB11_27:2622; RV32I-NEXT: srai a0, a5, 312623; RV32I-NEXT: mv a1, a02624; RV32I-NEXT: .LBB11_28:2625; RV32I-NEXT: srli a5, a4, 162626; RV32I-NEXT: lui a6, 162627; RV32I-NEXT: srli a7, a4, 242628; RV32I-NEXT: srli t0, a3, 162629; RV32I-NEXT: srli t1, a3, 242630; RV32I-NEXT: srli t2, a0, 162631; RV32I-NEXT: srli t3, a0, 242632; RV32I-NEXT: srli t4, a1, 162633; RV32I-NEXT: srli t5, a1, 242634; RV32I-NEXT: addi a6, a6, -12635; RV32I-NEXT: and t6, a4, a62636; RV32I-NEXT: srli t6, t6, 82637; RV32I-NEXT: sb a4, 0(a2)2638; RV32I-NEXT: sb t6, 1(a2)2639; RV32I-NEXT: sb a5, 2(a2)2640; RV32I-NEXT: sb a7, 3(a2)2641; RV32I-NEXT: and a4, a3, a62642; RV32I-NEXT: srli a4, a4, 82643; RV32I-NEXT: sb a3, 4(a2)2644; RV32I-NEXT: sb a4, 5(a2)2645; RV32I-NEXT: sb t0, 6(a2)2646; RV32I-NEXT: sb t1, 7(a2)2647; RV32I-NEXT: and a3, a0, a62648; RV32I-NEXT: and a4, a1, a62649; RV32I-NEXT: srli a3, a3, 82650; RV32I-NEXT: srli a4, a4, 82651; RV32I-NEXT: sb a0, 8(a2)2652; RV32I-NEXT: sb a3, 9(a2)2653; RV32I-NEXT: sb t2, 10(a2)2654; RV32I-NEXT: sb t3, 11(a2)2655; RV32I-NEXT: sb a1, 12(a2)2656; RV32I-NEXT: sb a4, 13(a2)2657; RV32I-NEXT: sb t4, 14(a2)2658; RV32I-NEXT: sb t5, 15(a2)2659; RV32I-NEXT: lw s0, 12(sp) # 4-byte Folded Reload2660; RV32I-NEXT: lw s1, 8(sp) # 4-byte Folded Reload2661; RV32I-NEXT: lw s2, 4(sp) # 4-byte Folded Reload2662; RV32I-NEXT: addi sp, sp, 162663; RV32I-NEXT: ret2664; RV32I-NEXT: .LBB11_29:2665; RV32I-NEXT: mv a4, a72666; RV32I-NEXT: mv a3, t02667; RV32I-NEXT: bgeu a6, t1, .LBB11_272668; RV32I-NEXT: j .LBB11_282669 %src = load i128, ptr %src.ptr, align 12670 %wordOff = load i128, ptr %wordOff.ptr, align 12671 %bitOff = shl i128 %wordOff, 52672 %res = ashr i128 %src, %bitOff2673 store i128 %res, ptr %dst, align 12674 ret void2675}2676 2677define void @lshr_32bytes(ptr %src.ptr, ptr %byteOff.ptr, ptr %dst) nounwind {2678; RV64I-LABEL: lshr_32bytes:2679; RV64I: # %bb.0:2680; RV64I-NEXT: addi sp, sp, -962681; RV64I-NEXT: sd s0, 88(sp) # 8-byte Folded Spill2682; RV64I-NEXT: sd s1, 80(sp) # 8-byte Folded Spill2683; RV64I-NEXT: sd s2, 72(sp) # 8-byte Folded Spill2684; RV64I-NEXT: sd s3, 64(sp) # 8-byte Folded Spill2685; RV64I-NEXT: sd s4, 56(sp) # 8-byte Folded Spill2686; RV64I-NEXT: sd s5, 48(sp) # 8-byte Folded Spill2687; RV64I-NEXT: sd s6, 40(sp) # 8-byte Folded Spill2688; RV64I-NEXT: sd s7, 32(sp) # 8-byte Folded Spill2689; RV64I-NEXT: sd s8, 24(sp) # 8-byte Folded Spill2690; RV64I-NEXT: sd s9, 16(sp) # 8-byte Folded Spill2691; RV64I-NEXT: sd s10, 8(sp) # 8-byte Folded Spill2692; RV64I-NEXT: sd s11, 0(sp) # 8-byte Folded Spill2693; RV64I-NEXT: lbu a3, 0(a0)2694; RV64I-NEXT: lbu a4, 1(a0)2695; RV64I-NEXT: lbu a5, 2(a0)2696; RV64I-NEXT: lbu a6, 3(a0)2697; RV64I-NEXT: lbu a7, 4(a0)2698; RV64I-NEXT: lbu t0, 5(a0)2699; RV64I-NEXT: lbu t1, 6(a0)2700; RV64I-NEXT: lbu t2, 7(a0)2701; RV64I-NEXT: lbu t3, 8(a0)2702; RV64I-NEXT: lbu t4, 9(a0)2703; RV64I-NEXT: lbu t5, 10(a0)2704; RV64I-NEXT: lbu t6, 11(a0)2705; RV64I-NEXT: lbu s0, 12(a0)2706; RV64I-NEXT: lbu s1, 13(a0)2707; RV64I-NEXT: lbu s2, 14(a0)2708; RV64I-NEXT: lbu s3, 15(a0)2709; RV64I-NEXT: lbu s4, 16(a0)2710; RV64I-NEXT: lbu s5, 17(a0)2711; RV64I-NEXT: lbu s6, 18(a0)2712; RV64I-NEXT: lbu s7, 19(a0)2713; RV64I-NEXT: slli a4, a4, 82714; RV64I-NEXT: slli a6, a6, 82715; RV64I-NEXT: slli t0, t0, 82716; RV64I-NEXT: or a3, a4, a32717; RV64I-NEXT: or a5, a6, a52718; RV64I-NEXT: or a7, t0, a72719; RV64I-NEXT: lbu s8, 20(a0)2720; RV64I-NEXT: lbu s9, 21(a0)2721; RV64I-NEXT: lbu s10, 22(a0)2722; RV64I-NEXT: lbu s11, 23(a0)2723; RV64I-NEXT: slli t2, t2, 82724; RV64I-NEXT: slli t4, t4, 82725; RV64I-NEXT: slli t6, t6, 82726; RV64I-NEXT: slli s1, s1, 82727; RV64I-NEXT: or t1, t2, t12728; RV64I-NEXT: or a4, t4, t32729; RV64I-NEXT: or a6, t6, t52730; RV64I-NEXT: or t0, s1, s02731; RV64I-NEXT: lbu t5, 24(a0)2732; RV64I-NEXT: lbu t6, 25(a0)2733; RV64I-NEXT: lbu s0, 26(a0)2734; RV64I-NEXT: lbu s1, 27(a0)2735; RV64I-NEXT: slli s3, s3, 82736; RV64I-NEXT: slli s5, s5, 82737; RV64I-NEXT: slli s7, s7, 82738; RV64I-NEXT: or t4, s3, s22739; RV64I-NEXT: or t2, s5, s42740; RV64I-NEXT: or t3, s7, s62741; RV64I-NEXT: lbu s2, 28(a0)2742; RV64I-NEXT: lbu s3, 29(a0)2743; RV64I-NEXT: lbu s4, 30(a0)2744; RV64I-NEXT: lbu a0, 31(a0)2745; RV64I-NEXT: slli s9, s9, 82746; RV64I-NEXT: slli s11, s11, 82747; RV64I-NEXT: slli t6, t6, 82748; RV64I-NEXT: slli s1, s1, 82749; RV64I-NEXT: or s5, s9, s82750; RV64I-NEXT: or s6, s11, s102751; RV64I-NEXT: or t5, t6, t52752; RV64I-NEXT: or s0, s1, s02753; RV64I-NEXT: lbu t6, 0(a1)2754; RV64I-NEXT: lbu s1, 1(a1)2755; RV64I-NEXT: lbu s7, 2(a1)2756; RV64I-NEXT: lbu s8, 3(a1)2757; RV64I-NEXT: slli s3, s3, 82758; RV64I-NEXT: slli a0, a0, 82759; RV64I-NEXT: slli s1, s1, 82760; RV64I-NEXT: or s2, s3, s22761; RV64I-NEXT: or s3, a0, s42762; RV64I-NEXT: or t6, s1, t62763; RV64I-NEXT: lbu a0, 4(a1)2764; RV64I-NEXT: lbu s1, 5(a1)2765; RV64I-NEXT: lbu s4, 6(a1)2766; RV64I-NEXT: lbu a1, 7(a1)2767; RV64I-NEXT: slli s8, s8, 82768; RV64I-NEXT: or s7, s8, s72769; RV64I-NEXT: slli s1, s1, 82770; RV64I-NEXT: or s1, s1, a02771; RV64I-NEXT: slli a1, a1, 82772; RV64I-NEXT: or s4, a1, s42773; RV64I-NEXT: slli t1, t1, 162774; RV64I-NEXT: or a1, t1, a72775; RV64I-NEXT: slli t4, t4, 162776; RV64I-NEXT: or a0, t4, t02777; RV64I-NEXT: slli t3, t3, 162778; RV64I-NEXT: or t0, t3, t22779; RV64I-NEXT: slli s6, s6, 162780; RV64I-NEXT: or t1, s6, s52781; RV64I-NEXT: slli s0, s0, 162782; RV64I-NEXT: or t3, s0, t52783; RV64I-NEXT: slli s3, s3, 162784; RV64I-NEXT: or t5, s3, s22785; RV64I-NEXT: slli s7, s7, 162786; RV64I-NEXT: or t6, s7, t62787; RV64I-NEXT: slli s4, s4, 162788; RV64I-NEXT: or s0, s4, s12789; RV64I-NEXT: li a7, 642790; RV64I-NEXT: slli t4, a5, 162791; RV64I-NEXT: slli t2, a6, 162792; RV64I-NEXT: slli t1, t1, 322793; RV64I-NEXT: slli t5, t5, 322794; RV64I-NEXT: slli s0, s0, 322795; RV64I-NEXT: or a6, t1, t02796; RV64I-NEXT: or t0, t5, t32797; RV64I-NEXT: or a5, s0, t62798; RV64I-NEXT: slli a5, a5, 32799; RV64I-NEXT: sub t1, a5, a72800; RV64I-NEXT: neg t5, a52801; RV64I-NEXT: sll t3, t0, t52802; RV64I-NEXT: bltu a5, a7, .LBB12_22803; RV64I-NEXT: # %bb.1:2804; RV64I-NEXT: srl t6, t0, t12805; RV64I-NEXT: j .LBB12_32806; RV64I-NEXT: .LBB12_2:2807; RV64I-NEXT: srl t6, a6, a52808; RV64I-NEXT: or t6, t6, t32809; RV64I-NEXT: .LBB12_3:2810; RV64I-NEXT: or a3, t4, a32811; RV64I-NEXT: slli t4, a1, 322812; RV64I-NEXT: or t2, t2, a42813; RV64I-NEXT: slli a0, a0, 322814; RV64I-NEXT: mv a1, a62815; RV64I-NEXT: beqz a5, .LBB12_52816; RV64I-NEXT: # %bb.4:2817; RV64I-NEXT: mv a1, t62818; RV64I-NEXT: .LBB12_5:2819; RV64I-NEXT: or a4, t4, a32820; RV64I-NEXT: or a3, a0, t22821; RV64I-NEXT: bltu a5, a7, .LBB12_72822; RV64I-NEXT: # %bb.6:2823; RV64I-NEXT: li a0, 02824; RV64I-NEXT: srl t4, a3, t12825; RV64I-NEXT: j .LBB12_82826; RV64I-NEXT: .LBB12_7:2827; RV64I-NEXT: srl a0, t0, a52828; RV64I-NEXT: srl t1, a4, a52829; RV64I-NEXT: sll t2, a3, t52830; RV64I-NEXT: or t4, t1, t22831; RV64I-NEXT: .LBB12_8:2832; RV64I-NEXT: li t1, 1282833; RV64I-NEXT: mv t2, a42834; RV64I-NEXT: beqz a5, .LBB12_102835; RV64I-NEXT: # %bb.9:2836; RV64I-NEXT: mv t2, t42837; RV64I-NEXT: .LBB12_10:2838; RV64I-NEXT: sub t6, t1, a52839; RV64I-NEXT: bltu a5, a7, .LBB12_132840; RV64I-NEXT: # %bb.11:2841; RV64I-NEXT: li t4, 02842; RV64I-NEXT: bgeu t6, a7, .LBB12_142843; RV64I-NEXT: .LBB12_12:2844; RV64I-NEXT: sll t5, a6, t52845; RV64I-NEXT: neg s0, t62846; RV64I-NEXT: srl s0, a6, s02847; RV64I-NEXT: or s1, s0, t32848; RV64I-NEXT: j .LBB12_152849; RV64I-NEXT: .LBB12_13:2850; RV64I-NEXT: srl t4, a3, a52851; RV64I-NEXT: bltu t6, a7, .LBB12_122852; RV64I-NEXT: .LBB12_14:2853; RV64I-NEXT: li t5, 02854; RV64I-NEXT: sub t3, t6, a72855; RV64I-NEXT: sll s1, a6, t32856; RV64I-NEXT: .LBB12_15:2857; RV64I-NEXT: sub s0, a5, t12858; RV64I-NEXT: mv t3, t02859; RV64I-NEXT: beqz t6, .LBB12_172860; RV64I-NEXT: # %bb.16:2861; RV64I-NEXT: mv t3, s12862; RV64I-NEXT: .LBB12_17:2863; RV64I-NEXT: bltu s0, a7, .LBB12_192864; RV64I-NEXT: # %bb.18:2865; RV64I-NEXT: sub t6, s0, a72866; RV64I-NEXT: srl t6, t0, t62867; RV64I-NEXT: bnez s0, .LBB12_202868; RV64I-NEXT: j .LBB12_212869; RV64I-NEXT: .LBB12_19:2870; RV64I-NEXT: srl t6, a6, s02871; RV64I-NEXT: neg s1, s02872; RV64I-NEXT: sll s1, t0, s12873; RV64I-NEXT: or t6, t6, s12874; RV64I-NEXT: beqz s0, .LBB12_212875; RV64I-NEXT: .LBB12_20:2876; RV64I-NEXT: mv a6, t62877; RV64I-NEXT: .LBB12_21:2878; RV64I-NEXT: bltu s0, a7, .LBB12_232879; RV64I-NEXT: # %bb.22:2880; RV64I-NEXT: li a7, 02881; RV64I-NEXT: bltu a5, t1, .LBB12_242882; RV64I-NEXT: j .LBB12_252883; RV64I-NEXT: .LBB12_23:2884; RV64I-NEXT: srl a7, t0, s02885; RV64I-NEXT: bgeu a5, t1, .LBB12_252886; RV64I-NEXT: .LBB12_24:2887; RV64I-NEXT: or a6, t2, t52888; RV64I-NEXT: or a7, t4, t32889; RV64I-NEXT: .LBB12_25:2890; RV64I-NEXT: bnez a5, .LBB12_292891; RV64I-NEXT: # %bb.26:2892; RV64I-NEXT: bltu a5, t1, .LBB12_282893; RV64I-NEXT: .LBB12_27:2894; RV64I-NEXT: li a1, 02895; RV64I-NEXT: li a0, 02896; RV64I-NEXT: .LBB12_28:2897; RV64I-NEXT: srli a5, a4, 322898; RV64I-NEXT: srliw a6, a4, 162899; RV64I-NEXT: lui t2, 162900; RV64I-NEXT: srliw t1, a4, 242901; RV64I-NEXT: srli t0, a4, 482902; RV64I-NEXT: srli t5, a4, 562903; RV64I-NEXT: srli a7, a3, 322904; RV64I-NEXT: srliw t4, a3, 162905; RV64I-NEXT: srliw s0, a3, 242906; RV64I-NEXT: srli t6, a3, 482907; RV64I-NEXT: srli s3, a3, 562908; RV64I-NEXT: srli t3, a1, 322909; RV64I-NEXT: srliw s2, a1, 162910; RV64I-NEXT: srliw s6, a1, 242911; RV64I-NEXT: srli s4, a1, 482912; RV64I-NEXT: srli s7, a1, 562913; RV64I-NEXT: srli s1, a0, 322914; RV64I-NEXT: srliw s5, a0, 162915; RV64I-NEXT: srliw s8, a0, 242916; RV64I-NEXT: srli s9, a0, 482917; RV64I-NEXT: srli s10, a0, 562918; RV64I-NEXT: addi t2, t2, -12919; RV64I-NEXT: and s11, a4, t22920; RV64I-NEXT: srli s11, s11, 82921; RV64I-NEXT: sb a4, 0(a2)2922; RV64I-NEXT: sb s11, 1(a2)2923; RV64I-NEXT: sb a6, 2(a2)2924; RV64I-NEXT: sb t1, 3(a2)2925; RV64I-NEXT: and a4, a5, t22926; RV64I-NEXT: srli a4, a4, 82927; RV64I-NEXT: sb a5, 4(a2)2928; RV64I-NEXT: sb a4, 5(a2)2929; RV64I-NEXT: sb t0, 6(a2)2930; RV64I-NEXT: sb t5, 7(a2)2931; RV64I-NEXT: and a4, a3, t22932; RV64I-NEXT: srli a4, a4, 82933; RV64I-NEXT: sb a3, 8(a2)2934; RV64I-NEXT: sb a4, 9(a2)2935; RV64I-NEXT: sb t4, 10(a2)2936; RV64I-NEXT: sb s0, 11(a2)2937; RV64I-NEXT: and a3, a7, t22938; RV64I-NEXT: srli a3, a3, 82939; RV64I-NEXT: sb a7, 12(a2)2940; RV64I-NEXT: sb a3, 13(a2)2941; RV64I-NEXT: sb t6, 14(a2)2942; RV64I-NEXT: sb s3, 15(a2)2943; RV64I-NEXT: and a3, a1, t22944; RV64I-NEXT: srli a3, a3, 82945; RV64I-NEXT: sb a1, 16(a2)2946; RV64I-NEXT: sb a3, 17(a2)2947; RV64I-NEXT: sb s2, 18(a2)2948; RV64I-NEXT: sb s6, 19(a2)2949; RV64I-NEXT: and a1, t3, t22950; RV64I-NEXT: srli a1, a1, 82951; RV64I-NEXT: sb t3, 20(a2)2952; RV64I-NEXT: sb a1, 21(a2)2953; RV64I-NEXT: sb s4, 22(a2)2954; RV64I-NEXT: sb s7, 23(a2)2955; RV64I-NEXT: and a1, a0, t22956; RV64I-NEXT: and a3, s1, t22957; RV64I-NEXT: srli a1, a1, 82958; RV64I-NEXT: srli a3, a3, 82959; RV64I-NEXT: sb a0, 24(a2)2960; RV64I-NEXT: sb a1, 25(a2)2961; RV64I-NEXT: sb s5, 26(a2)2962; RV64I-NEXT: sb s8, 27(a2)2963; RV64I-NEXT: sb s1, 28(a2)2964; RV64I-NEXT: sb a3, 29(a2)2965; RV64I-NEXT: sb s9, 30(a2)2966; RV64I-NEXT: sb s10, 31(a2)2967; RV64I-NEXT: ld s0, 88(sp) # 8-byte Folded Reload2968; RV64I-NEXT: ld s1, 80(sp) # 8-byte Folded Reload2969; RV64I-NEXT: ld s2, 72(sp) # 8-byte Folded Reload2970; RV64I-NEXT: ld s3, 64(sp) # 8-byte Folded Reload2971; RV64I-NEXT: ld s4, 56(sp) # 8-byte Folded Reload2972; RV64I-NEXT: ld s5, 48(sp) # 8-byte Folded Reload2973; RV64I-NEXT: ld s6, 40(sp) # 8-byte Folded Reload2974; RV64I-NEXT: ld s7, 32(sp) # 8-byte Folded Reload2975; RV64I-NEXT: ld s8, 24(sp) # 8-byte Folded Reload2976; RV64I-NEXT: ld s9, 16(sp) # 8-byte Folded Reload2977; RV64I-NEXT: ld s10, 8(sp) # 8-byte Folded Reload2978; RV64I-NEXT: ld s11, 0(sp) # 8-byte Folded Reload2979; RV64I-NEXT: addi sp, sp, 962980; RV64I-NEXT: ret2981; RV64I-NEXT: .LBB12_29:2982; RV64I-NEXT: mv a4, a62983; RV64I-NEXT: mv a3, a72984; RV64I-NEXT: bgeu a5, t1, .LBB12_272985; RV64I-NEXT: j .LBB12_282986;2987; RV32I-LABEL: lshr_32bytes:2988; RV32I: # %bb.0:2989; RV32I-NEXT: addi sp, sp, -642990; RV32I-NEXT: sw ra, 60(sp) # 4-byte Folded Spill2991; RV32I-NEXT: sw s0, 56(sp) # 4-byte Folded Spill2992; RV32I-NEXT: sw s1, 52(sp) # 4-byte Folded Spill2993; RV32I-NEXT: sw s2, 48(sp) # 4-byte Folded Spill2994; RV32I-NEXT: sw s3, 44(sp) # 4-byte Folded Spill2995; RV32I-NEXT: sw s4, 40(sp) # 4-byte Folded Spill2996; RV32I-NEXT: sw s5, 36(sp) # 4-byte Folded Spill2997; RV32I-NEXT: sw s6, 32(sp) # 4-byte Folded Spill2998; RV32I-NEXT: sw s7, 28(sp) # 4-byte Folded Spill2999; RV32I-NEXT: sw s8, 24(sp) # 4-byte Folded Spill3000; RV32I-NEXT: sw s9, 20(sp) # 4-byte Folded Spill3001; RV32I-NEXT: sw s10, 16(sp) # 4-byte Folded Spill3002; RV32I-NEXT: sw s11, 12(sp) # 4-byte Folded Spill3003; RV32I-NEXT: li a4, 03004; RV32I-NEXT: lbu a3, 0(a0)3005; RV32I-NEXT: lbu a5, 1(a0)3006; RV32I-NEXT: lbu a6, 2(a0)3007; RV32I-NEXT: lbu a7, 3(a0)3008; RV32I-NEXT: lbu t0, 4(a0)3009; RV32I-NEXT: lbu t1, 5(a0)3010; RV32I-NEXT: lbu t2, 6(a0)3011; RV32I-NEXT: lbu t3, 7(a0)3012; RV32I-NEXT: lbu t4, 8(a0)3013; RV32I-NEXT: lbu t5, 9(a0)3014; RV32I-NEXT: lbu t6, 10(a0)3015; RV32I-NEXT: lbu s0, 11(a0)3016; RV32I-NEXT: slli a5, a5, 83017; RV32I-NEXT: slli a7, a7, 83018; RV32I-NEXT: slli t1, t1, 83019; RV32I-NEXT: or a3, a5, a33020; RV32I-NEXT: or a7, a7, a63021; RV32I-NEXT: or t1, t1, t03022; RV32I-NEXT: lbu a6, 13(a0)3023; RV32I-NEXT: lbu a5, 14(a0)3024; RV32I-NEXT: lbu s1, 15(a0)3025; RV32I-NEXT: slli t3, t3, 83026; RV32I-NEXT: slli t5, t5, 83027; RV32I-NEXT: slli s0, s0, 83028; RV32I-NEXT: or t3, t3, t23029; RV32I-NEXT: or t0, t5, t43030; RV32I-NEXT: or t5, s0, t63031; RV32I-NEXT: lbu t2, 1(a1)3032; RV32I-NEXT: lbu t4, 0(a1)3033; RV32I-NEXT: lbu t6, 2(a1)3034; RV32I-NEXT: lbu a1, 3(a1)3035; RV32I-NEXT: slli t2, t2, 83036; RV32I-NEXT: or s0, t2, t43037; RV32I-NEXT: slli t2, s1, 83038; RV32I-NEXT: slli a1, a1, 83039; RV32I-NEXT: or a1, a1, t63040; RV32I-NEXT: slli t4, a7, 163041; RV32I-NEXT: slli a7, t3, 163042; RV32I-NEXT: slli t3, t5, 163043; RV32I-NEXT: slli t5, a1, 163044; RV32I-NEXT: or a1, a7, t13045; RV32I-NEXT: or a7, t5, s03046; RV32I-NEXT: slli a7, a7, 33047; RV32I-NEXT: srli t1, a7, 53048; RV32I-NEXT: andi t5, a7, 313049; RV32I-NEXT: neg s3, t53050; RV32I-NEXT: beqz t5, .LBB12_23051; RV32I-NEXT: # %bb.1:3052; RV32I-NEXT: sll a4, a1, s33053; RV32I-NEXT: .LBB12_2:3054; RV32I-NEXT: or s7, t4, a33055; RV32I-NEXT: lbu t4, 12(a0)3056; RV32I-NEXT: lbu t6, 19(a0)3057; RV32I-NEXT: slli s1, a6, 83058; RV32I-NEXT: or a5, t2, a53059; RV32I-NEXT: or a3, t3, t03060; RV32I-NEXT: beqz t1, .LBB12_43061; RV32I-NEXT: # %bb.3:3062; RV32I-NEXT: li s0, 03063; RV32I-NEXT: j .LBB12_53064; RV32I-NEXT: .LBB12_4:3065; RV32I-NEXT: srl s0, s7, a73066; RV32I-NEXT: or s0, s0, a43067; RV32I-NEXT: .LBB12_5:3068; RV32I-NEXT: li a6, 03069; RV32I-NEXT: lbu t0, 17(a0)3070; RV32I-NEXT: lbu a4, 18(a0)3071; RV32I-NEXT: slli s4, t6, 83072; RV32I-NEXT: or s2, s1, t43073; RV32I-NEXT: slli a5, a5, 163074; RV32I-NEXT: li s5, 13075; RV32I-NEXT: sll t6, a3, s33076; RV32I-NEXT: beqz t5, .LBB12_73077; RV32I-NEXT: # %bb.6:3078; RV32I-NEXT: mv a6, t63079; RV32I-NEXT: .LBB12_7:3080; RV32I-NEXT: lbu t2, 16(a0)3081; RV32I-NEXT: lbu t3, 23(a0)3082; RV32I-NEXT: slli s1, t0, 83083; RV32I-NEXT: or t4, s4, a43084; RV32I-NEXT: srl a4, a1, a73085; RV32I-NEXT: or a5, a5, s23086; RV32I-NEXT: bne t1, s5, .LBB12_93087; RV32I-NEXT: # %bb.8:3088; RV32I-NEXT: or s0, a4, a63089; RV32I-NEXT: .LBB12_9:3090; RV32I-NEXT: li t0, 03091; RV32I-NEXT: lbu s5, 21(a0)3092; RV32I-NEXT: lbu a6, 22(a0)3093; RV32I-NEXT: slli s4, t3, 83094; RV32I-NEXT: or t2, s1, t23095; RV32I-NEXT: slli s6, t4, 163096; RV32I-NEXT: li s8, 23097; RV32I-NEXT: sll t3, a5, s33098; RV32I-NEXT: beqz t5, .LBB12_113099; RV32I-NEXT: # %bb.10:3100; RV32I-NEXT: mv t0, t33101; RV32I-NEXT: .LBB12_11:3102; RV32I-NEXT: lbu s1, 20(a0)3103; RV32I-NEXT: lbu s2, 27(a0)3104; RV32I-NEXT: slli s5, s5, 83105; RV32I-NEXT: or s4, s4, a63106; RV32I-NEXT: srl t4, a3, a73107; RV32I-NEXT: or a6, s6, t23108; RV32I-NEXT: bne t1, s8, .LBB12_133109; RV32I-NEXT: # %bb.12:3110; RV32I-NEXT: or s0, t4, t03111; RV32I-NEXT: .LBB12_13:3112; RV32I-NEXT: sw s7, 4(sp) # 4-byte Folded Spill3113; RV32I-NEXT: li t2, 03114; RV32I-NEXT: lbu s6, 25(a0)3115; RV32I-NEXT: lbu t0, 26(a0)3116; RV32I-NEXT: slli s8, s2, 83117; RV32I-NEXT: or s7, s5, s13118; RV32I-NEXT: slli s9, s4, 163119; RV32I-NEXT: sll s11, a6, s33120; RV32I-NEXT: beqz t5, .LBB12_153121; RV32I-NEXT: # %bb.14:3122; RV32I-NEXT: mv t2, s113123; RV32I-NEXT: .LBB12_15:3124; RV32I-NEXT: lbu s1, 24(a0)3125; RV32I-NEXT: lbu s2, 31(a0)3126; RV32I-NEXT: slli s5, s6, 83127; RV32I-NEXT: or s4, s8, t03128; RV32I-NEXT: srl ra, a5, a73129; RV32I-NEXT: or t0, s9, s73130; RV32I-NEXT: li s6, 33131; RV32I-NEXT: bne t1, s6, .LBB12_173132; RV32I-NEXT: # %bb.16:3133; RV32I-NEXT: or s0, ra, t23134; RV32I-NEXT: .LBB12_17:3135; RV32I-NEXT: li t2, 03136; RV32I-NEXT: lbu s7, 29(a0)3137; RV32I-NEXT: lbu s6, 30(a0)3138; RV32I-NEXT: slli s8, s2, 83139; RV32I-NEXT: or s2, s5, s13140; RV32I-NEXT: slli s5, s4, 163141; RV32I-NEXT: li s9, 43142; RV32I-NEXT: sll s1, t0, s33143; RV32I-NEXT: sw s1, 8(sp) # 4-byte Folded Spill3144; RV32I-NEXT: beqz t5, .LBB12_193145; RV32I-NEXT: # %bb.18:3146; RV32I-NEXT: lw t2, 8(sp) # 4-byte Folded Reload3147; RV32I-NEXT: .LBB12_19:3148; RV32I-NEXT: lbu s1, 28(a0)3149; RV32I-NEXT: slli s7, s7, 83150; RV32I-NEXT: or s4, s8, s63151; RV32I-NEXT: srl s10, a6, a73152; RV32I-NEXT: or a0, s5, s23153; RV32I-NEXT: bne t1, s9, .LBB12_213154; RV32I-NEXT: # %bb.20:3155; RV32I-NEXT: or s0, s10, t23156; RV32I-NEXT: .LBB12_21:3157; RV32I-NEXT: li s2, 03158; RV32I-NEXT: or t2, s7, s13159; RV32I-NEXT: slli s4, s4, 163160; RV32I-NEXT: li s9, 53161; RV32I-NEXT: sll s7, a0, s33162; RV32I-NEXT: beqz t5, .LBB12_233163; RV32I-NEXT: # %bb.22:3164; RV32I-NEXT: mv s2, s73165; RV32I-NEXT: .LBB12_23:3166; RV32I-NEXT: srl s8, t0, a73167; RV32I-NEXT: or t2, s4, t23168; RV32I-NEXT: bne t1, s9, .LBB12_253169; RV32I-NEXT: # %bb.24:3170; RV32I-NEXT: or s0, s8, s23171; RV32I-NEXT: .LBB12_25:3172; RV32I-NEXT: li s4, 03173; RV32I-NEXT: li s2, 63174; RV32I-NEXT: sll s5, t2, s33175; RV32I-NEXT: beqz t5, .LBB12_273176; RV32I-NEXT: # %bb.26:3177; RV32I-NEXT: mv s4, s53178; RV32I-NEXT: .LBB12_27:3179; RV32I-NEXT: srl s6, a0, a73180; RV32I-NEXT: bne t1, s2, .LBB12_293181; RV32I-NEXT: # %bb.28:3182; RV32I-NEXT: or s0, s6, s43183; RV32I-NEXT: .LBB12_29:3184; RV32I-NEXT: li s3, 73185; RV32I-NEXT: srl s1, t2, a73186; RV32I-NEXT: mv s4, s13187; RV32I-NEXT: bne t1, s3, .LBB12_343188; RV32I-NEXT: # %bb.30:3189; RV32I-NEXT: bnez a7, .LBB12_353190; RV32I-NEXT: .LBB12_31:3191; RV32I-NEXT: li s0, 03192; RV32I-NEXT: bnez t5, .LBB12_363193; RV32I-NEXT: .LBB12_32:3194; RV32I-NEXT: li s4, 23195; RV32I-NEXT: beqz t1, .LBB12_373196; RV32I-NEXT: .LBB12_33:3197; RV32I-NEXT: li a4, 03198; RV32I-NEXT: j .LBB12_383199; RV32I-NEXT: .LBB12_34:3200; RV32I-NEXT: mv s4, s03201; RV32I-NEXT: beqz a7, .LBB12_313202; RV32I-NEXT: .LBB12_35:3203; RV32I-NEXT: sw s4, 4(sp) # 4-byte Folded Spill3204; RV32I-NEXT: li s0, 03205; RV32I-NEXT: beqz t5, .LBB12_323206; RV32I-NEXT: .LBB12_36:3207; RV32I-NEXT: mv s0, t63208; RV32I-NEXT: li s4, 23209; RV32I-NEXT: bnez t1, .LBB12_333210; RV32I-NEXT: .LBB12_37:3211; RV32I-NEXT: or a4, a4, s03212; RV32I-NEXT: .LBB12_38:3213; RV32I-NEXT: li s0, 13214; RV32I-NEXT: li t6, 03215; RV32I-NEXT: bnez t5, .LBB12_573216; RV32I-NEXT: # %bb.39:3217; RV32I-NEXT: beq t1, s0, .LBB12_583218; RV32I-NEXT: .LBB12_40:3219; RV32I-NEXT: li t6, 03220; RV32I-NEXT: bnez t5, .LBB12_593221; RV32I-NEXT: .LBB12_41:3222; RV32I-NEXT: beq t1, s4, .LBB12_603223; RV32I-NEXT: .LBB12_42:3224; RV32I-NEXT: li t6, 03225; RV32I-NEXT: bnez t5, .LBB12_613226; RV32I-NEXT: .LBB12_43:3227; RV32I-NEXT: li s4, 33228; RV32I-NEXT: bne t1, s4, .LBB12_453229; RV32I-NEXT: .LBB12_44:3230; RV32I-NEXT: or a4, s10, t63231; RV32I-NEXT: .LBB12_45:3232; RV32I-NEXT: li t6, 03233; RV32I-NEXT: li s4, 43234; RV32I-NEXT: bnez t5, .LBB12_623235; RV32I-NEXT: # %bb.46:3236; RV32I-NEXT: beq t1, s4, .LBB12_633237; RV32I-NEXT: .LBB12_47:3238; RV32I-NEXT: li t6, 03239; RV32I-NEXT: bnez t5, .LBB12_643240; RV32I-NEXT: .LBB12_48:3241; RV32I-NEXT: beq t1, s9, .LBB12_653242; RV32I-NEXT: .LBB12_49:3243; RV32I-NEXT: mv t6, s13244; RV32I-NEXT: bne t1, s2, .LBB12_663245; RV32I-NEXT: .LBB12_50:3246; RV32I-NEXT: li a4, 03247; RV32I-NEXT: bne t1, s3, .LBB12_673248; RV32I-NEXT: .LBB12_51:3249; RV32I-NEXT: beqz a7, .LBB12_533250; RV32I-NEXT: .LBB12_52:3251; RV32I-NEXT: mv a1, a43252; RV32I-NEXT: .LBB12_53:3253; RV32I-NEXT: li a4, 03254; RV32I-NEXT: li t6, 23255; RV32I-NEXT: beqz t5, .LBB12_553256; RV32I-NEXT: # %bb.54:3257; RV32I-NEXT: mv a4, t33258; RV32I-NEXT: .LBB12_55:3259; RV32I-NEXT: beqz t1, .LBB12_683260; RV32I-NEXT: # %bb.56:3261; RV32I-NEXT: li a4, 03262; RV32I-NEXT: j .LBB12_693263; RV32I-NEXT: .LBB12_57:3264; RV32I-NEXT: mv t6, t33265; RV32I-NEXT: bne t1, s0, .LBB12_403266; RV32I-NEXT: .LBB12_58:3267; RV32I-NEXT: or a4, t4, t63268; RV32I-NEXT: li t6, 03269; RV32I-NEXT: beqz t5, .LBB12_413270; RV32I-NEXT: .LBB12_59:3271; RV32I-NEXT: mv t6, s113272; RV32I-NEXT: bne t1, s4, .LBB12_423273; RV32I-NEXT: .LBB12_60:3274; RV32I-NEXT: or a4, ra, t63275; RV32I-NEXT: li t6, 03276; RV32I-NEXT: beqz t5, .LBB12_433277; RV32I-NEXT: .LBB12_61:3278; RV32I-NEXT: lw t6, 8(sp) # 4-byte Folded Reload3279; RV32I-NEXT: li s4, 33280; RV32I-NEXT: beq t1, s4, .LBB12_443281; RV32I-NEXT: j .LBB12_453282; RV32I-NEXT: .LBB12_62:3283; RV32I-NEXT: mv t6, s73284; RV32I-NEXT: bne t1, s4, .LBB12_473285; RV32I-NEXT: .LBB12_63:3286; RV32I-NEXT: or a4, s8, t63287; RV32I-NEXT: li t6, 03288; RV32I-NEXT: beqz t5, .LBB12_483289; RV32I-NEXT: .LBB12_64:3290; RV32I-NEXT: mv t6, s53291; RV32I-NEXT: bne t1, s9, .LBB12_493292; RV32I-NEXT: .LBB12_65:3293; RV32I-NEXT: or a4, s6, t63294; RV32I-NEXT: mv t6, s13295; RV32I-NEXT: beq t1, s2, .LBB12_503296; RV32I-NEXT: .LBB12_66:3297; RV32I-NEXT: mv t6, a43298; RV32I-NEXT: li a4, 03299; RV32I-NEXT: beq t1, s3, .LBB12_513300; RV32I-NEXT: .LBB12_67:3301; RV32I-NEXT: mv a4, t63302; RV32I-NEXT: bnez a7, .LBB12_523303; RV32I-NEXT: j .LBB12_533304; RV32I-NEXT: .LBB12_68:3305; RV32I-NEXT: or a4, t4, a43306; RV32I-NEXT: .LBB12_69:3307; RV32I-NEXT: li t4, 33308; RV32I-NEXT: li t3, 03309; RV32I-NEXT: bnez t5, .LBB12_843310; RV32I-NEXT: # %bb.70:3311; RV32I-NEXT: beq t1, s0, .LBB12_853312; RV32I-NEXT: .LBB12_71:3313; RV32I-NEXT: li t3, 03314; RV32I-NEXT: bnez t5, .LBB12_863315; RV32I-NEXT: .LBB12_72:3316; RV32I-NEXT: beq t1, t6, .LBB12_873317; RV32I-NEXT: .LBB12_73:3318; RV32I-NEXT: li t3, 03319; RV32I-NEXT: bnez t5, .LBB12_883320; RV32I-NEXT: .LBB12_74:3321; RV32I-NEXT: beq t1, t4, .LBB12_893322; RV32I-NEXT: .LBB12_75:3323; RV32I-NEXT: li t3, 03324; RV32I-NEXT: bnez t5, .LBB12_903325; RV32I-NEXT: .LBB12_76:3326; RV32I-NEXT: beq t1, s4, .LBB12_913327; RV32I-NEXT: .LBB12_77:3328; RV32I-NEXT: mv t3, s13329; RV32I-NEXT: bne t1, s9, .LBB12_923330; RV32I-NEXT: .LBB12_78:3331; RV32I-NEXT: li a4, 03332; RV32I-NEXT: bne t1, s2, .LBB12_933333; RV32I-NEXT: .LBB12_79:3334; RV32I-NEXT: li t3, 03335; RV32I-NEXT: bne t1, s3, .LBB12_943336; RV32I-NEXT: .LBB12_80:3337; RV32I-NEXT: bnez a7, .LBB12_953338; RV32I-NEXT: .LBB12_81:3339; RV32I-NEXT: li a4, 03340; RV32I-NEXT: bnez t5, .LBB12_963341; RV32I-NEXT: .LBB12_82:3342; RV32I-NEXT: beqz t1, .LBB12_973343; RV32I-NEXT: .LBB12_83:3344; RV32I-NEXT: li a4, 03345; RV32I-NEXT: j .LBB12_983346; RV32I-NEXT: .LBB12_84:3347; RV32I-NEXT: mv t3, s113348; RV32I-NEXT: bne t1, s0, .LBB12_713349; RV32I-NEXT: .LBB12_85:3350; RV32I-NEXT: or a4, ra, t33351; RV32I-NEXT: li t3, 03352; RV32I-NEXT: beqz t5, .LBB12_723353; RV32I-NEXT: .LBB12_86:3354; RV32I-NEXT: lw t3, 8(sp) # 4-byte Folded Reload3355; RV32I-NEXT: bne t1, t6, .LBB12_733356; RV32I-NEXT: .LBB12_87:3357; RV32I-NEXT: or a4, s10, t33358; RV32I-NEXT: li t3, 03359; RV32I-NEXT: beqz t5, .LBB12_743360; RV32I-NEXT: .LBB12_88:3361; RV32I-NEXT: mv t3, s73362; RV32I-NEXT: bne t1, t4, .LBB12_753363; RV32I-NEXT: .LBB12_89:3364; RV32I-NEXT: or a4, s8, t33365; RV32I-NEXT: li t3, 03366; RV32I-NEXT: beqz t5, .LBB12_763367; RV32I-NEXT: .LBB12_90:3368; RV32I-NEXT: mv t3, s53369; RV32I-NEXT: bne t1, s4, .LBB12_773370; RV32I-NEXT: .LBB12_91:3371; RV32I-NEXT: or a4, s6, t33372; RV32I-NEXT: mv t3, s13373; RV32I-NEXT: beq t1, s9, .LBB12_783374; RV32I-NEXT: .LBB12_92:3375; RV32I-NEXT: mv t3, a43376; RV32I-NEXT: li a4, 03377; RV32I-NEXT: beq t1, s2, .LBB12_793378; RV32I-NEXT: .LBB12_93:3379; RV32I-NEXT: mv a4, t33380; RV32I-NEXT: li t3, 03381; RV32I-NEXT: beq t1, s3, .LBB12_803382; RV32I-NEXT: .LBB12_94:3383; RV32I-NEXT: mv t3, a43384; RV32I-NEXT: beqz a7, .LBB12_813385; RV32I-NEXT: .LBB12_95:3386; RV32I-NEXT: mv a3, t33387; RV32I-NEXT: li a4, 03388; RV32I-NEXT: beqz t5, .LBB12_823389; RV32I-NEXT: .LBB12_96:3390; RV32I-NEXT: mv a4, s113391; RV32I-NEXT: bnez t1, .LBB12_833392; RV32I-NEXT: .LBB12_97:3393; RV32I-NEXT: or a4, ra, a43394; RV32I-NEXT: .LBB12_98:3395; RV32I-NEXT: lw ra, 4(sp) # 4-byte Folded Reload3396; RV32I-NEXT: li t3, 03397; RV32I-NEXT: bnez t5, .LBB12_1123398; RV32I-NEXT: # %bb.99:3399; RV32I-NEXT: beq t1, s0, .LBB12_1133400; RV32I-NEXT: .LBB12_100:3401; RV32I-NEXT: li t3, 03402; RV32I-NEXT: bnez t5, .LBB12_1143403; RV32I-NEXT: .LBB12_101:3404; RV32I-NEXT: beq t1, t6, .LBB12_1153405; RV32I-NEXT: .LBB12_102:3406; RV32I-NEXT: li t3, 03407; RV32I-NEXT: bnez t5, .LBB12_1163408; RV32I-NEXT: .LBB12_103:3409; RV32I-NEXT: beq t1, t4, .LBB12_1173410; RV32I-NEXT: .LBB12_104:3411; RV32I-NEXT: mv t3, s13412; RV32I-NEXT: bne t1, s4, .LBB12_1183413; RV32I-NEXT: .LBB12_105:3414; RV32I-NEXT: li a4, 03415; RV32I-NEXT: bne t1, s9, .LBB12_1193416; RV32I-NEXT: .LBB12_106:3417; RV32I-NEXT: li t3, 03418; RV32I-NEXT: bne t1, s2, .LBB12_1203419; RV32I-NEXT: .LBB12_107:3420; RV32I-NEXT: li a4, 03421; RV32I-NEXT: bne t1, s3, .LBB12_1213422; RV32I-NEXT: .LBB12_108:3423; RV32I-NEXT: bnez a7, .LBB12_1223424; RV32I-NEXT: .LBB12_109:3425; RV32I-NEXT: li a4, 03426; RV32I-NEXT: bnez t5, .LBB12_1233427; RV32I-NEXT: .LBB12_110:3428; RV32I-NEXT: beqz t1, .LBB12_1243429; RV32I-NEXT: .LBB12_111:3430; RV32I-NEXT: li a4, 03431; RV32I-NEXT: li t3, 03432; RV32I-NEXT: bnez t5, .LBB12_1253433; RV32I-NEXT: j .LBB12_1263434; RV32I-NEXT: .LBB12_112:3435; RV32I-NEXT: lw t3, 8(sp) # 4-byte Folded Reload3436; RV32I-NEXT: bne t1, s0, .LBB12_1003437; RV32I-NEXT: .LBB12_113:3438; RV32I-NEXT: or a4, s10, t33439; RV32I-NEXT: li t3, 03440; RV32I-NEXT: beqz t5, .LBB12_1013441; RV32I-NEXT: .LBB12_114:3442; RV32I-NEXT: mv t3, s73443; RV32I-NEXT: bne t1, t6, .LBB12_1023444; RV32I-NEXT: .LBB12_115:3445; RV32I-NEXT: or a4, s8, t33446; RV32I-NEXT: li t3, 03447; RV32I-NEXT: beqz t5, .LBB12_1033448; RV32I-NEXT: .LBB12_116:3449; RV32I-NEXT: mv t3, s53450; RV32I-NEXT: bne t1, t4, .LBB12_1043451; RV32I-NEXT: .LBB12_117:3452; RV32I-NEXT: or a4, s6, t33453; RV32I-NEXT: mv t3, s13454; RV32I-NEXT: beq t1, s4, .LBB12_1053455; RV32I-NEXT: .LBB12_118:3456; RV32I-NEXT: mv t3, a43457; RV32I-NEXT: li a4, 03458; RV32I-NEXT: beq t1, s9, .LBB12_1063459; RV32I-NEXT: .LBB12_119:3460; RV32I-NEXT: mv a4, t33461; RV32I-NEXT: li t3, 03462; RV32I-NEXT: beq t1, s2, .LBB12_1073463; RV32I-NEXT: .LBB12_120:3464; RV32I-NEXT: mv t3, a43465; RV32I-NEXT: li a4, 03466; RV32I-NEXT: beq t1, s3, .LBB12_1083467; RV32I-NEXT: .LBB12_121:3468; RV32I-NEXT: mv a4, t33469; RV32I-NEXT: beqz a7, .LBB12_1093470; RV32I-NEXT: .LBB12_122:3471; RV32I-NEXT: mv a5, a43472; RV32I-NEXT: li a4, 03473; RV32I-NEXT: beqz t5, .LBB12_1103474; RV32I-NEXT: .LBB12_123:3475; RV32I-NEXT: lw a4, 8(sp) # 4-byte Folded Reload3476; RV32I-NEXT: bnez t1, .LBB12_1113477; RV32I-NEXT: .LBB12_124:3478; RV32I-NEXT: or a4, s10, a43479; RV32I-NEXT: li t3, 03480; RV32I-NEXT: beqz t5, .LBB12_1263481; RV32I-NEXT: .LBB12_125:3482; RV32I-NEXT: mv t3, s73483; RV32I-NEXT: .LBB12_126:3484; RV32I-NEXT: beq t1, s0, .LBB12_1383485; RV32I-NEXT: # %bb.127:3486; RV32I-NEXT: li t3, 03487; RV32I-NEXT: bnez t5, .LBB12_1393488; RV32I-NEXT: .LBB12_128:3489; RV32I-NEXT: beq t1, t6, .LBB12_1403490; RV32I-NEXT: .LBB12_129:3491; RV32I-NEXT: mv t3, s13492; RV32I-NEXT: bne t1, t4, .LBB12_1413493; RV32I-NEXT: .LBB12_130:3494; RV32I-NEXT: li a4, 03495; RV32I-NEXT: bne t1, s4, .LBB12_1423496; RV32I-NEXT: .LBB12_131:3497; RV32I-NEXT: li t3, 03498; RV32I-NEXT: bne t1, s9, .LBB12_1433499; RV32I-NEXT: .LBB12_132:3500; RV32I-NEXT: li a4, 03501; RV32I-NEXT: bne t1, s2, .LBB12_1443502; RV32I-NEXT: .LBB12_133:3503; RV32I-NEXT: li t3, 03504; RV32I-NEXT: bne t1, s3, .LBB12_1453505; RV32I-NEXT: .LBB12_134:3506; RV32I-NEXT: bnez a7, .LBB12_1463507; RV32I-NEXT: .LBB12_135:3508; RV32I-NEXT: li a4, 03509; RV32I-NEXT: bnez t5, .LBB12_1473510; RV32I-NEXT: .LBB12_136:3511; RV32I-NEXT: beqz t1, .LBB12_1483512; RV32I-NEXT: .LBB12_137:3513; RV32I-NEXT: li a4, 03514; RV32I-NEXT: li t3, 03515; RV32I-NEXT: bnez t5, .LBB12_1493516; RV32I-NEXT: j .LBB12_1503517; RV32I-NEXT: .LBB12_138:3518; RV32I-NEXT: or a4, s8, t33519; RV32I-NEXT: li t3, 03520; RV32I-NEXT: beqz t5, .LBB12_1283521; RV32I-NEXT: .LBB12_139:3522; RV32I-NEXT: mv t3, s53523; RV32I-NEXT: bne t1, t6, .LBB12_1293524; RV32I-NEXT: .LBB12_140:3525; RV32I-NEXT: or a4, s6, t33526; RV32I-NEXT: mv t3, s13527; RV32I-NEXT: beq t1, t4, .LBB12_1303528; RV32I-NEXT: .LBB12_141:3529; RV32I-NEXT: mv t3, a43530; RV32I-NEXT: li a4, 03531; RV32I-NEXT: beq t1, s4, .LBB12_1313532; RV32I-NEXT: .LBB12_142:3533; RV32I-NEXT: mv a4, t33534; RV32I-NEXT: li t3, 03535; RV32I-NEXT: beq t1, s9, .LBB12_1323536; RV32I-NEXT: .LBB12_143:3537; RV32I-NEXT: mv t3, a43538; RV32I-NEXT: li a4, 03539; RV32I-NEXT: beq t1, s2, .LBB12_1333540; RV32I-NEXT: .LBB12_144:3541; RV32I-NEXT: mv a4, t33542; RV32I-NEXT: li t3, 03543; RV32I-NEXT: beq t1, s3, .LBB12_1343544; RV32I-NEXT: .LBB12_145:3545; RV32I-NEXT: mv t3, a43546; RV32I-NEXT: beqz a7, .LBB12_1353547; RV32I-NEXT: .LBB12_146:3548; RV32I-NEXT: mv a6, t33549; RV32I-NEXT: li a4, 03550; RV32I-NEXT: beqz t5, .LBB12_1363551; RV32I-NEXT: .LBB12_147:3552; RV32I-NEXT: mv a4, s73553; RV32I-NEXT: bnez t1, .LBB12_1373554; RV32I-NEXT: .LBB12_148:3555; RV32I-NEXT: or a4, s8, a43556; RV32I-NEXT: li t3, 03557; RV32I-NEXT: beqz t5, .LBB12_1503558; RV32I-NEXT: .LBB12_149:3559; RV32I-NEXT: mv t3, s53560; RV32I-NEXT: .LBB12_150:3561; RV32I-NEXT: beq t1, s0, .LBB12_1613562; RV32I-NEXT: # %bb.151:3563; RV32I-NEXT: mv t3, s13564; RV32I-NEXT: bne t1, t6, .LBB12_1623565; RV32I-NEXT: .LBB12_152:3566; RV32I-NEXT: li a4, 03567; RV32I-NEXT: bne t1, t4, .LBB12_1633568; RV32I-NEXT: .LBB12_153:3569; RV32I-NEXT: li t3, 03570; RV32I-NEXT: bne t1, s4, .LBB12_1643571; RV32I-NEXT: .LBB12_154:3572; RV32I-NEXT: li a4, 03573; RV32I-NEXT: bne t1, s9, .LBB12_1653574; RV32I-NEXT: .LBB12_155:3575; RV32I-NEXT: li t3, 03576; RV32I-NEXT: bne t1, s2, .LBB12_1663577; RV32I-NEXT: .LBB12_156:3578; RV32I-NEXT: li a4, 03579; RV32I-NEXT: bne t1, s3, .LBB12_1673580; RV32I-NEXT: .LBB12_157:3581; RV32I-NEXT: bnez a7, .LBB12_1683582; RV32I-NEXT: .LBB12_158:3583; RV32I-NEXT: li a4, 03584; RV32I-NEXT: bnez t5, .LBB12_1693585; RV32I-NEXT: .LBB12_159:3586; RV32I-NEXT: beqz t1, .LBB12_1703587; RV32I-NEXT: .LBB12_160:3588; RV32I-NEXT: li a4, 03589; RV32I-NEXT: mv t3, s13590; RV32I-NEXT: bne t1, s0, .LBB12_1713591; RV32I-NEXT: j .LBB12_1723592; RV32I-NEXT: .LBB12_161:3593; RV32I-NEXT: or a4, s6, t33594; RV32I-NEXT: mv t3, s13595; RV32I-NEXT: beq t1, t6, .LBB12_1523596; RV32I-NEXT: .LBB12_162:3597; RV32I-NEXT: mv t3, a43598; RV32I-NEXT: li a4, 03599; RV32I-NEXT: beq t1, t4, .LBB12_1533600; RV32I-NEXT: .LBB12_163:3601; RV32I-NEXT: mv a4, t33602; RV32I-NEXT: li t3, 03603; RV32I-NEXT: beq t1, s4, .LBB12_1543604; RV32I-NEXT: .LBB12_164:3605; RV32I-NEXT: mv t3, a43606; RV32I-NEXT: li a4, 03607; RV32I-NEXT: beq t1, s9, .LBB12_1553608; RV32I-NEXT: .LBB12_165:3609; RV32I-NEXT: mv a4, t33610; RV32I-NEXT: li t3, 03611; RV32I-NEXT: beq t1, s2, .LBB12_1563612; RV32I-NEXT: .LBB12_166:3613; RV32I-NEXT: mv t3, a43614; RV32I-NEXT: li a4, 03615; RV32I-NEXT: beq t1, s3, .LBB12_1573616; RV32I-NEXT: .LBB12_167:3617; RV32I-NEXT: mv a4, t33618; RV32I-NEXT: beqz a7, .LBB12_1583619; RV32I-NEXT: .LBB12_168:3620; RV32I-NEXT: mv t0, a43621; RV32I-NEXT: li a4, 03622; RV32I-NEXT: beqz t5, .LBB12_1593623; RV32I-NEXT: .LBB12_169:3624; RV32I-NEXT: mv a4, s53625; RV32I-NEXT: bnez t1, .LBB12_1603626; RV32I-NEXT: .LBB12_170:3627; RV32I-NEXT: or a4, s6, a43628; RV32I-NEXT: mv t3, s13629; RV32I-NEXT: beq t1, s0, .LBB12_1723630; RV32I-NEXT: .LBB12_171:3631; RV32I-NEXT: mv t3, a43632; RV32I-NEXT: .LBB12_172:3633; RV32I-NEXT: li a4, 03634; RV32I-NEXT: bne t1, t6, .LBB12_1903635; RV32I-NEXT: # %bb.173:3636; RV32I-NEXT: li t3, 03637; RV32I-NEXT: bne t1, t4, .LBB12_1913638; RV32I-NEXT: .LBB12_174:3639; RV32I-NEXT: li a4, 03640; RV32I-NEXT: bne t1, s4, .LBB12_1923641; RV32I-NEXT: .LBB12_175:3642; RV32I-NEXT: li t3, 03643; RV32I-NEXT: bne t1, s9, .LBB12_1933644; RV32I-NEXT: .LBB12_176:3645; RV32I-NEXT: li a4, 03646; RV32I-NEXT: bne t1, s2, .LBB12_1943647; RV32I-NEXT: .LBB12_177:3648; RV32I-NEXT: li t3, 03649; RV32I-NEXT: bne t1, s3, .LBB12_1953650; RV32I-NEXT: .LBB12_178:3651; RV32I-NEXT: bnez a7, .LBB12_1963652; RV32I-NEXT: .LBB12_179:3653; RV32I-NEXT: bnez t1, .LBB12_1973654; RV32I-NEXT: .LBB12_180:3655; RV32I-NEXT: li a4, 03656; RV32I-NEXT: bne t1, s0, .LBB12_1983657; RV32I-NEXT: .LBB12_181:3658; RV32I-NEXT: li t3, 03659; RV32I-NEXT: bne t1, t6, .LBB12_1993660; RV32I-NEXT: .LBB12_182:3661; RV32I-NEXT: li a4, 03662; RV32I-NEXT: bne t1, t4, .LBB12_2003663; RV32I-NEXT: .LBB12_183:3664; RV32I-NEXT: li t3, 03665; RV32I-NEXT: bne t1, s4, .LBB12_2013666; RV32I-NEXT: .LBB12_184:3667; RV32I-NEXT: li a4, 03668; RV32I-NEXT: bne t1, s9, .LBB12_2023669; RV32I-NEXT: .LBB12_185:3670; RV32I-NEXT: li t3, 03671; RV32I-NEXT: bne t1, s2, .LBB12_2033672; RV32I-NEXT: .LBB12_186:3673; RV32I-NEXT: li a4, 03674; RV32I-NEXT: bne t1, s3, .LBB12_2043675; RV32I-NEXT: .LBB12_187:3676; RV32I-NEXT: beqz a7, .LBB12_1893677; RV32I-NEXT: .LBB12_188:3678; RV32I-NEXT: mv t2, a43679; RV32I-NEXT: .LBB12_189:3680; RV32I-NEXT: srli a4, ra, 163681; RV32I-NEXT: lui t4, 163682; RV32I-NEXT: srli t3, ra, 243683; RV32I-NEXT: srli a7, a1, 163684; RV32I-NEXT: srli t6, a1, 243685; RV32I-NEXT: srli t1, a3, 163686; RV32I-NEXT: srli s2, a3, 243687; RV32I-NEXT: srli t5, a5, 163688; RV32I-NEXT: srli s3, a5, 243689; RV32I-NEXT: srli s1, a6, 163690; RV32I-NEXT: srli s6, a6, 243691; RV32I-NEXT: srli s0, t0, 163692; RV32I-NEXT: srli s5, t0, 243693; RV32I-NEXT: srli s4, a0, 163694; RV32I-NEXT: srli s7, a0, 243695; RV32I-NEXT: srli s8, t2, 163696; RV32I-NEXT: srli s9, t2, 243697; RV32I-NEXT: addi t4, t4, -13698; RV32I-NEXT: and s10, ra, t43699; RV32I-NEXT: and s11, a1, t43700; RV32I-NEXT: srli s10, s10, 83701; RV32I-NEXT: sb ra, 0(a2)3702; RV32I-NEXT: sb s10, 1(a2)3703; RV32I-NEXT: sb a4, 2(a2)3704; RV32I-NEXT: sb t3, 3(a2)3705; RV32I-NEXT: and a4, a3, t43706; RV32I-NEXT: srli t3, s11, 83707; RV32I-NEXT: sb a1, 4(a2)3708; RV32I-NEXT: sb t3, 5(a2)3709; RV32I-NEXT: sb a7, 6(a2)3710; RV32I-NEXT: sb t6, 7(a2)3711; RV32I-NEXT: and a1, a5, t43712; RV32I-NEXT: srli a4, a4, 83713; RV32I-NEXT: sb a3, 8(a2)3714; RV32I-NEXT: sb a4, 9(a2)3715; RV32I-NEXT: sb t1, 10(a2)3716; RV32I-NEXT: sb s2, 11(a2)3717; RV32I-NEXT: and a3, a6, t43718; RV32I-NEXT: srli a1, a1, 83719; RV32I-NEXT: sb a5, 12(a2)3720; RV32I-NEXT: sb a1, 13(a2)3721; RV32I-NEXT: sb t5, 14(a2)3722; RV32I-NEXT: sb s3, 15(a2)3723; RV32I-NEXT: and a1, t0, t43724; RV32I-NEXT: srli a3, a3, 83725; RV32I-NEXT: sb a6, 16(a2)3726; RV32I-NEXT: sb a3, 17(a2)3727; RV32I-NEXT: sb s1, 18(a2)3728; RV32I-NEXT: sb s6, 19(a2)3729; RV32I-NEXT: and a3, a0, t43730; RV32I-NEXT: and a4, t2, t43731; RV32I-NEXT: srli a1, a1, 83732; RV32I-NEXT: srli a3, a3, 83733; RV32I-NEXT: srli a4, a4, 83734; RV32I-NEXT: sb t0, 20(a2)3735; RV32I-NEXT: sb a1, 21(a2)3736; RV32I-NEXT: sb s0, 22(a2)3737; RV32I-NEXT: sb s5, 23(a2)3738; RV32I-NEXT: sb a0, 24(a2)3739; RV32I-NEXT: sb a3, 25(a2)3740; RV32I-NEXT: sb s4, 26(a2)3741; RV32I-NEXT: sb s7, 27(a2)3742; RV32I-NEXT: sb t2, 28(a2)3743; RV32I-NEXT: sb a4, 29(a2)3744; RV32I-NEXT: sb s8, 30(a2)3745; RV32I-NEXT: sb s9, 31(a2)3746; RV32I-NEXT: lw ra, 60(sp) # 4-byte Folded Reload3747; RV32I-NEXT: lw s0, 56(sp) # 4-byte Folded Reload3748; RV32I-NEXT: lw s1, 52(sp) # 4-byte Folded Reload3749; RV32I-NEXT: lw s2, 48(sp) # 4-byte Folded Reload3750; RV32I-NEXT: lw s3, 44(sp) # 4-byte Folded Reload3751; RV32I-NEXT: lw s4, 40(sp) # 4-byte Folded Reload3752; RV32I-NEXT: lw s5, 36(sp) # 4-byte Folded Reload3753; RV32I-NEXT: lw s6, 32(sp) # 4-byte Folded Reload3754; RV32I-NEXT: lw s7, 28(sp) # 4-byte Folded Reload3755; RV32I-NEXT: lw s8, 24(sp) # 4-byte Folded Reload3756; RV32I-NEXT: lw s9, 20(sp) # 4-byte Folded Reload3757; RV32I-NEXT: lw s10, 16(sp) # 4-byte Folded Reload3758; RV32I-NEXT: lw s11, 12(sp) # 4-byte Folded Reload3759; RV32I-NEXT: addi sp, sp, 643760; RV32I-NEXT: ret3761; RV32I-NEXT: .LBB12_190:3762; RV32I-NEXT: mv a4, t33763; RV32I-NEXT: li t3, 03764; RV32I-NEXT: beq t1, t4, .LBB12_1743765; RV32I-NEXT: .LBB12_191:3766; RV32I-NEXT: mv t3, a43767; RV32I-NEXT: li a4, 03768; RV32I-NEXT: beq t1, s4, .LBB12_1753769; RV32I-NEXT: .LBB12_192:3770; RV32I-NEXT: mv a4, t33771; RV32I-NEXT: li t3, 03772; RV32I-NEXT: beq t1, s9, .LBB12_1763773; RV32I-NEXT: .LBB12_193:3774; RV32I-NEXT: mv t3, a43775; RV32I-NEXT: li a4, 03776; RV32I-NEXT: beq t1, s2, .LBB12_1773777; RV32I-NEXT: .LBB12_194:3778; RV32I-NEXT: mv a4, t33779; RV32I-NEXT: li t3, 03780; RV32I-NEXT: beq t1, s3, .LBB12_1783781; RV32I-NEXT: .LBB12_195:3782; RV32I-NEXT: mv t3, a43783; RV32I-NEXT: beqz a7, .LBB12_1793784; RV32I-NEXT: .LBB12_196:3785; RV32I-NEXT: mv a0, t33786; RV32I-NEXT: beqz t1, .LBB12_1803787; RV32I-NEXT: .LBB12_197:3788; RV32I-NEXT: li s1, 03789; RV32I-NEXT: li a4, 03790; RV32I-NEXT: beq t1, s0, .LBB12_1813791; RV32I-NEXT: .LBB12_198:3792; RV32I-NEXT: mv a4, s13793; RV32I-NEXT: li t3, 03794; RV32I-NEXT: beq t1, t6, .LBB12_1823795; RV32I-NEXT: .LBB12_199:3796; RV32I-NEXT: mv t3, a43797; RV32I-NEXT: li a4, 03798; RV32I-NEXT: beq t1, t4, .LBB12_1833799; RV32I-NEXT: .LBB12_200:3800; RV32I-NEXT: mv a4, t33801; RV32I-NEXT: li t3, 03802; RV32I-NEXT: beq t1, s4, .LBB12_1843803; RV32I-NEXT: .LBB12_201:3804; RV32I-NEXT: mv t3, a43805; RV32I-NEXT: li a4, 03806; RV32I-NEXT: beq t1, s9, .LBB12_1853807; RV32I-NEXT: .LBB12_202:3808; RV32I-NEXT: mv a4, t33809; RV32I-NEXT: li t3, 03810; RV32I-NEXT: beq t1, s2, .LBB12_1863811; RV32I-NEXT: .LBB12_203:3812; RV32I-NEXT: mv t3, a43813; RV32I-NEXT: li a4, 03814; RV32I-NEXT: beq t1, s3, .LBB12_1873815; RV32I-NEXT: .LBB12_204:3816; RV32I-NEXT: mv a4, t33817; RV32I-NEXT: bnez a7, .LBB12_1883818; RV32I-NEXT: j .LBB12_1893819 %src = load i256, ptr %src.ptr, align 13820 %byteOff = load i256, ptr %byteOff.ptr, align 13821 %bitOff = shl i256 %byteOff, 33822 %res = lshr i256 %src, %bitOff3823 store i256 %res, ptr %dst, align 13824 ret void3825}3826 3827define void @lshr_32bytes_wordOff(ptr %src.ptr, ptr %wordOff.ptr, ptr %dst) nounwind {3828; RV64I-LABEL: lshr_32bytes_wordOff:3829; RV64I: # %bb.0:3830; RV64I-NEXT: addi sp, sp, -963831; RV64I-NEXT: sd s0, 88(sp) # 8-byte Folded Spill3832; RV64I-NEXT: sd s1, 80(sp) # 8-byte Folded Spill3833; RV64I-NEXT: sd s2, 72(sp) # 8-byte Folded Spill3834; RV64I-NEXT: sd s3, 64(sp) # 8-byte Folded Spill3835; RV64I-NEXT: sd s4, 56(sp) # 8-byte Folded Spill3836; RV64I-NEXT: sd s5, 48(sp) # 8-byte Folded Spill3837; RV64I-NEXT: sd s6, 40(sp) # 8-byte Folded Spill3838; RV64I-NEXT: sd s7, 32(sp) # 8-byte Folded Spill3839; RV64I-NEXT: sd s8, 24(sp) # 8-byte Folded Spill3840; RV64I-NEXT: sd s9, 16(sp) # 8-byte Folded Spill3841; RV64I-NEXT: sd s10, 8(sp) # 8-byte Folded Spill3842; RV64I-NEXT: sd s11, 0(sp) # 8-byte Folded Spill3843; RV64I-NEXT: lbu a3, 0(a0)3844; RV64I-NEXT: lbu a4, 1(a0)3845; RV64I-NEXT: lbu a5, 2(a0)3846; RV64I-NEXT: lbu a6, 3(a0)3847; RV64I-NEXT: lbu a7, 4(a0)3848; RV64I-NEXT: lbu t0, 5(a0)3849; RV64I-NEXT: lbu t1, 6(a0)3850; RV64I-NEXT: lbu t2, 7(a0)3851; RV64I-NEXT: lbu t3, 8(a0)3852; RV64I-NEXT: lbu t4, 9(a0)3853; RV64I-NEXT: lbu t5, 10(a0)3854; RV64I-NEXT: lbu t6, 11(a0)3855; RV64I-NEXT: lbu s0, 12(a0)3856; RV64I-NEXT: lbu s1, 13(a0)3857; RV64I-NEXT: lbu s2, 14(a0)3858; RV64I-NEXT: lbu s3, 15(a0)3859; RV64I-NEXT: lbu s4, 16(a0)3860; RV64I-NEXT: lbu s5, 17(a0)3861; RV64I-NEXT: lbu s6, 18(a0)3862; RV64I-NEXT: lbu s7, 19(a0)3863; RV64I-NEXT: slli a4, a4, 83864; RV64I-NEXT: slli a6, a6, 83865; RV64I-NEXT: slli t0, t0, 83866; RV64I-NEXT: or a3, a4, a33867; RV64I-NEXT: or a5, a6, a53868; RV64I-NEXT: or a7, t0, a73869; RV64I-NEXT: lbu s8, 20(a0)3870; RV64I-NEXT: lbu s9, 21(a0)3871; RV64I-NEXT: lbu s10, 22(a0)3872; RV64I-NEXT: lbu s11, 23(a0)3873; RV64I-NEXT: slli t2, t2, 83874; RV64I-NEXT: slli t4, t4, 83875; RV64I-NEXT: slli t6, t6, 83876; RV64I-NEXT: slli s1, s1, 83877; RV64I-NEXT: or t1, t2, t13878; RV64I-NEXT: or a4, t4, t33879; RV64I-NEXT: or a6, t6, t53880; RV64I-NEXT: or t0, s1, s03881; RV64I-NEXT: lbu t5, 24(a0)3882; RV64I-NEXT: lbu t6, 25(a0)3883; RV64I-NEXT: lbu s0, 26(a0)3884; RV64I-NEXT: lbu s1, 27(a0)3885; RV64I-NEXT: slli s3, s3, 83886; RV64I-NEXT: slli s5, s5, 83887; RV64I-NEXT: slli s7, s7, 83888; RV64I-NEXT: or t4, s3, s23889; RV64I-NEXT: or t2, s5, s43890; RV64I-NEXT: or t3, s7, s63891; RV64I-NEXT: lbu s2, 28(a0)3892; RV64I-NEXT: lbu s3, 29(a0)3893; RV64I-NEXT: lbu s4, 30(a0)3894; RV64I-NEXT: lbu a0, 31(a0)3895; RV64I-NEXT: slli s9, s9, 83896; RV64I-NEXT: slli s11, s11, 83897; RV64I-NEXT: slli t6, t6, 83898; RV64I-NEXT: slli s1, s1, 83899; RV64I-NEXT: or s5, s9, s83900; RV64I-NEXT: or s6, s11, s103901; RV64I-NEXT: or t5, t6, t53902; RV64I-NEXT: or s0, s1, s03903; RV64I-NEXT: lbu t6, 0(a1)3904; RV64I-NEXT: lbu s1, 1(a1)3905; RV64I-NEXT: lbu s7, 2(a1)3906; RV64I-NEXT: lbu s8, 3(a1)3907; RV64I-NEXT: slli s3, s3, 83908; RV64I-NEXT: slli a0, a0, 83909; RV64I-NEXT: slli s1, s1, 83910; RV64I-NEXT: or s2, s3, s23911; RV64I-NEXT: or s3, a0, s43912; RV64I-NEXT: or t6, s1, t63913; RV64I-NEXT: lbu a0, 4(a1)3914; RV64I-NEXT: lbu s1, 5(a1)3915; RV64I-NEXT: lbu s4, 6(a1)3916; RV64I-NEXT: lbu a1, 7(a1)3917; RV64I-NEXT: slli s8, s8, 83918; RV64I-NEXT: or s7, s8, s73919; RV64I-NEXT: slli s1, s1, 83920; RV64I-NEXT: or s1, s1, a03921; RV64I-NEXT: slli a1, a1, 83922; RV64I-NEXT: or s4, a1, s43923; RV64I-NEXT: slli t1, t1, 163924; RV64I-NEXT: or a1, t1, a73925; RV64I-NEXT: slli t4, t4, 163926; RV64I-NEXT: or a0, t4, t03927; RV64I-NEXT: slli t3, t3, 163928; RV64I-NEXT: or t0, t3, t23929; RV64I-NEXT: slli s6, s6, 163930; RV64I-NEXT: or t1, s6, s53931; RV64I-NEXT: slli s0, s0, 163932; RV64I-NEXT: or t3, s0, t53933; RV64I-NEXT: slli s3, s3, 163934; RV64I-NEXT: or t5, s3, s23935; RV64I-NEXT: slli s7, s7, 163936; RV64I-NEXT: or t6, s7, t63937; RV64I-NEXT: slli s4, s4, 163938; RV64I-NEXT: or s0, s4, s13939; RV64I-NEXT: li a7, 643940; RV64I-NEXT: slli t4, a5, 163941; RV64I-NEXT: slli t2, a6, 163942; RV64I-NEXT: slli t1, t1, 323943; RV64I-NEXT: slli t5, t5, 323944; RV64I-NEXT: slli s0, s0, 323945; RV64I-NEXT: or a6, t1, t03946; RV64I-NEXT: or t0, t5, t33947; RV64I-NEXT: or a5, s0, t63948; RV64I-NEXT: slli a5, a5, 53949; RV64I-NEXT: sub t1, a5, a73950; RV64I-NEXT: neg t5, a53951; RV64I-NEXT: sll t3, t0, t53952; RV64I-NEXT: bltu a5, a7, .LBB13_23953; RV64I-NEXT: # %bb.1:3954; RV64I-NEXT: srl t6, t0, t13955; RV64I-NEXT: j .LBB13_33956; RV64I-NEXT: .LBB13_2:3957; RV64I-NEXT: srl t6, a6, a53958; RV64I-NEXT: or t6, t6, t33959; RV64I-NEXT: .LBB13_3:3960; RV64I-NEXT: or a3, t4, a33961; RV64I-NEXT: slli t4, a1, 323962; RV64I-NEXT: or t2, t2, a43963; RV64I-NEXT: slli a0, a0, 323964; RV64I-NEXT: mv a1, a63965; RV64I-NEXT: beqz a5, .LBB13_53966; RV64I-NEXT: # %bb.4:3967; RV64I-NEXT: mv a1, t63968; RV64I-NEXT: .LBB13_5:3969; RV64I-NEXT: or a4, t4, a33970; RV64I-NEXT: or a3, a0, t23971; RV64I-NEXT: bltu a5, a7, .LBB13_73972; RV64I-NEXT: # %bb.6:3973; RV64I-NEXT: li a0, 03974; RV64I-NEXT: srl t4, a3, t13975; RV64I-NEXT: j .LBB13_83976; RV64I-NEXT: .LBB13_7:3977; RV64I-NEXT: srl a0, t0, a53978; RV64I-NEXT: srl t1, a4, a53979; RV64I-NEXT: sll t2, a3, t53980; RV64I-NEXT: or t4, t1, t23981; RV64I-NEXT: .LBB13_8:3982; RV64I-NEXT: li t1, 1283983; RV64I-NEXT: mv t2, a43984; RV64I-NEXT: beqz a5, .LBB13_103985; RV64I-NEXT: # %bb.9:3986; RV64I-NEXT: mv t2, t43987; RV64I-NEXT: .LBB13_10:3988; RV64I-NEXT: sub t6, t1, a53989; RV64I-NEXT: bltu a5, a7, .LBB13_133990; RV64I-NEXT: # %bb.11:3991; RV64I-NEXT: li t4, 03992; RV64I-NEXT: bgeu t6, a7, .LBB13_143993; RV64I-NEXT: .LBB13_12:3994; RV64I-NEXT: sll t5, a6, t53995; RV64I-NEXT: neg s0, t63996; RV64I-NEXT: srl s0, a6, s03997; RV64I-NEXT: or s1, s0, t33998; RV64I-NEXT: j .LBB13_153999; RV64I-NEXT: .LBB13_13:4000; RV64I-NEXT: srl t4, a3, a54001; RV64I-NEXT: bltu t6, a7, .LBB13_124002; RV64I-NEXT: .LBB13_14:4003; RV64I-NEXT: li t5, 04004; RV64I-NEXT: sub t3, t6, a74005; RV64I-NEXT: sll s1, a6, t34006; RV64I-NEXT: .LBB13_15:4007; RV64I-NEXT: sub s0, a5, t14008; RV64I-NEXT: mv t3, t04009; RV64I-NEXT: beqz t6, .LBB13_174010; RV64I-NEXT: # %bb.16:4011; RV64I-NEXT: mv t3, s14012; RV64I-NEXT: .LBB13_17:4013; RV64I-NEXT: bltu s0, a7, .LBB13_194014; RV64I-NEXT: # %bb.18:4015; RV64I-NEXT: sub t6, s0, a74016; RV64I-NEXT: srl t6, t0, t64017; RV64I-NEXT: bnez s0, .LBB13_204018; RV64I-NEXT: j .LBB13_214019; RV64I-NEXT: .LBB13_19:4020; RV64I-NEXT: srl t6, a6, s04021; RV64I-NEXT: neg s1, s04022; RV64I-NEXT: sll s1, t0, s14023; RV64I-NEXT: or t6, t6, s14024; RV64I-NEXT: beqz s0, .LBB13_214025; RV64I-NEXT: .LBB13_20:4026; RV64I-NEXT: mv a6, t64027; RV64I-NEXT: .LBB13_21:4028; RV64I-NEXT: bltu s0, a7, .LBB13_234029; RV64I-NEXT: # %bb.22:4030; RV64I-NEXT: li a7, 04031; RV64I-NEXT: bltu a5, t1, .LBB13_244032; RV64I-NEXT: j .LBB13_254033; RV64I-NEXT: .LBB13_23:4034; RV64I-NEXT: srl a7, t0, s04035; RV64I-NEXT: bgeu a5, t1, .LBB13_254036; RV64I-NEXT: .LBB13_24:4037; RV64I-NEXT: or a6, t2, t54038; RV64I-NEXT: or a7, t4, t34039; RV64I-NEXT: .LBB13_25:4040; RV64I-NEXT: bnez a5, .LBB13_294041; RV64I-NEXT: # %bb.26:4042; RV64I-NEXT: bltu a5, t1, .LBB13_284043; RV64I-NEXT: .LBB13_27:4044; RV64I-NEXT: li a1, 04045; RV64I-NEXT: li a0, 04046; RV64I-NEXT: .LBB13_28:4047; RV64I-NEXT: srli a5, a4, 324048; RV64I-NEXT: srliw a6, a4, 164049; RV64I-NEXT: lui t2, 164050; RV64I-NEXT: srliw t1, a4, 244051; RV64I-NEXT: srli t0, a4, 484052; RV64I-NEXT: srli t5, a4, 564053; RV64I-NEXT: srli a7, a3, 324054; RV64I-NEXT: srliw t4, a3, 164055; RV64I-NEXT: srliw s0, a3, 244056; RV64I-NEXT: srli t6, a3, 484057; RV64I-NEXT: srli s3, a3, 564058; RV64I-NEXT: srli t3, a1, 324059; RV64I-NEXT: srliw s2, a1, 164060; RV64I-NEXT: srliw s6, a1, 244061; RV64I-NEXT: srli s4, a1, 484062; RV64I-NEXT: srli s7, a1, 564063; RV64I-NEXT: srli s1, a0, 324064; RV64I-NEXT: srliw s5, a0, 164065; RV64I-NEXT: srliw s8, a0, 244066; RV64I-NEXT: srli s9, a0, 484067; RV64I-NEXT: srli s10, a0, 564068; RV64I-NEXT: addi t2, t2, -14069; RV64I-NEXT: and s11, a4, t24070; RV64I-NEXT: srli s11, s11, 84071; RV64I-NEXT: sb a4, 0(a2)4072; RV64I-NEXT: sb s11, 1(a2)4073; RV64I-NEXT: sb a6, 2(a2)4074; RV64I-NEXT: sb t1, 3(a2)4075; RV64I-NEXT: and a4, a5, t24076; RV64I-NEXT: srli a4, a4, 84077; RV64I-NEXT: sb a5, 4(a2)4078; RV64I-NEXT: sb a4, 5(a2)4079; RV64I-NEXT: sb t0, 6(a2)4080; RV64I-NEXT: sb t5, 7(a2)4081; RV64I-NEXT: and a4, a3, t24082; RV64I-NEXT: srli a4, a4, 84083; RV64I-NEXT: sb a3, 8(a2)4084; RV64I-NEXT: sb a4, 9(a2)4085; RV64I-NEXT: sb t4, 10(a2)4086; RV64I-NEXT: sb s0, 11(a2)4087; RV64I-NEXT: and a3, a7, t24088; RV64I-NEXT: srli a3, a3, 84089; RV64I-NEXT: sb a7, 12(a2)4090; RV64I-NEXT: sb a3, 13(a2)4091; RV64I-NEXT: sb t6, 14(a2)4092; RV64I-NEXT: sb s3, 15(a2)4093; RV64I-NEXT: and a3, a1, t24094; RV64I-NEXT: srli a3, a3, 84095; RV64I-NEXT: sb a1, 16(a2)4096; RV64I-NEXT: sb a3, 17(a2)4097; RV64I-NEXT: sb s2, 18(a2)4098; RV64I-NEXT: sb s6, 19(a2)4099; RV64I-NEXT: and a1, t3, t24100; RV64I-NEXT: srli a1, a1, 84101; RV64I-NEXT: sb t3, 20(a2)4102; RV64I-NEXT: sb a1, 21(a2)4103; RV64I-NEXT: sb s4, 22(a2)4104; RV64I-NEXT: sb s7, 23(a2)4105; RV64I-NEXT: and a1, a0, t24106; RV64I-NEXT: and a3, s1, t24107; RV64I-NEXT: srli a1, a1, 84108; RV64I-NEXT: srli a3, a3, 84109; RV64I-NEXT: sb a0, 24(a2)4110; RV64I-NEXT: sb a1, 25(a2)4111; RV64I-NEXT: sb s5, 26(a2)4112; RV64I-NEXT: sb s8, 27(a2)4113; RV64I-NEXT: sb s1, 28(a2)4114; RV64I-NEXT: sb a3, 29(a2)4115; RV64I-NEXT: sb s9, 30(a2)4116; RV64I-NEXT: sb s10, 31(a2)4117; RV64I-NEXT: ld s0, 88(sp) # 8-byte Folded Reload4118; RV64I-NEXT: ld s1, 80(sp) # 8-byte Folded Reload4119; RV64I-NEXT: ld s2, 72(sp) # 8-byte Folded Reload4120; RV64I-NEXT: ld s3, 64(sp) # 8-byte Folded Reload4121; RV64I-NEXT: ld s4, 56(sp) # 8-byte Folded Reload4122; RV64I-NEXT: ld s5, 48(sp) # 8-byte Folded Reload4123; RV64I-NEXT: ld s6, 40(sp) # 8-byte Folded Reload4124; RV64I-NEXT: ld s7, 32(sp) # 8-byte Folded Reload4125; RV64I-NEXT: ld s8, 24(sp) # 8-byte Folded Reload4126; RV64I-NEXT: ld s9, 16(sp) # 8-byte Folded Reload4127; RV64I-NEXT: ld s10, 8(sp) # 8-byte Folded Reload4128; RV64I-NEXT: ld s11, 0(sp) # 8-byte Folded Reload4129; RV64I-NEXT: addi sp, sp, 964130; RV64I-NEXT: ret4131; RV64I-NEXT: .LBB13_29:4132; RV64I-NEXT: mv a4, a64133; RV64I-NEXT: mv a3, a74134; RV64I-NEXT: bgeu a5, t1, .LBB13_274135; RV64I-NEXT: j .LBB13_284136;4137; RV32I-LABEL: lshr_32bytes_wordOff:4138; RV32I: # %bb.0:4139; RV32I-NEXT: addi sp, sp, -644140; RV32I-NEXT: sw ra, 60(sp) # 4-byte Folded Spill4141; RV32I-NEXT: sw s0, 56(sp) # 4-byte Folded Spill4142; RV32I-NEXT: sw s1, 52(sp) # 4-byte Folded Spill4143; RV32I-NEXT: sw s2, 48(sp) # 4-byte Folded Spill4144; RV32I-NEXT: sw s3, 44(sp) # 4-byte Folded Spill4145; RV32I-NEXT: sw s4, 40(sp) # 4-byte Folded Spill4146; RV32I-NEXT: sw s5, 36(sp) # 4-byte Folded Spill4147; RV32I-NEXT: sw s6, 32(sp) # 4-byte Folded Spill4148; RV32I-NEXT: sw s7, 28(sp) # 4-byte Folded Spill4149; RV32I-NEXT: sw s8, 24(sp) # 4-byte Folded Spill4150; RV32I-NEXT: sw s9, 20(sp) # 4-byte Folded Spill4151; RV32I-NEXT: sw s10, 16(sp) # 4-byte Folded Spill4152; RV32I-NEXT: sw s11, 12(sp) # 4-byte Folded Spill4153; RV32I-NEXT: li a4, 04154; RV32I-NEXT: lbu a3, 0(a0)4155; RV32I-NEXT: lbu a5, 1(a0)4156; RV32I-NEXT: lbu a6, 2(a0)4157; RV32I-NEXT: lbu a7, 3(a0)4158; RV32I-NEXT: lbu t0, 4(a0)4159; RV32I-NEXT: lbu t1, 5(a0)4160; RV32I-NEXT: lbu t2, 6(a0)4161; RV32I-NEXT: lbu t3, 7(a0)4162; RV32I-NEXT: lbu t4, 8(a0)4163; RV32I-NEXT: lbu t5, 9(a0)4164; RV32I-NEXT: lbu t6, 10(a0)4165; RV32I-NEXT: lbu s0, 11(a0)4166; RV32I-NEXT: slli a5, a5, 84167; RV32I-NEXT: slli a7, a7, 84168; RV32I-NEXT: slli t1, t1, 84169; RV32I-NEXT: or a3, a5, a34170; RV32I-NEXT: or a7, a7, a64171; RV32I-NEXT: or t1, t1, t04172; RV32I-NEXT: lbu a6, 13(a0)4173; RV32I-NEXT: lbu a5, 14(a0)4174; RV32I-NEXT: lbu s1, 15(a0)4175; RV32I-NEXT: slli t3, t3, 84176; RV32I-NEXT: slli t5, t5, 84177; RV32I-NEXT: slli s0, s0, 84178; RV32I-NEXT: or t3, t3, t24179; RV32I-NEXT: or t0, t5, t44180; RV32I-NEXT: or t5, s0, t64181; RV32I-NEXT: lbu t2, 1(a1)4182; RV32I-NEXT: lbu t4, 0(a1)4183; RV32I-NEXT: lbu t6, 2(a1)4184; RV32I-NEXT: lbu a1, 3(a1)4185; RV32I-NEXT: slli t2, t2, 84186; RV32I-NEXT: or s0, t2, t44187; RV32I-NEXT: slli t2, s1, 84188; RV32I-NEXT: slli a1, a1, 84189; RV32I-NEXT: or a1, a1, t64190; RV32I-NEXT: slli t4, a7, 164191; RV32I-NEXT: slli a7, t3, 164192; RV32I-NEXT: slli t3, t5, 164193; RV32I-NEXT: slli t5, a1, 164194; RV32I-NEXT: or a1, a7, t14195; RV32I-NEXT: or a7, t5, s04196; RV32I-NEXT: slli a7, a7, 54197; RV32I-NEXT: srli t1, a7, 54198; RV32I-NEXT: andi t5, a7, 314199; RV32I-NEXT: neg s3, t54200; RV32I-NEXT: beqz t5, .LBB13_24201; RV32I-NEXT: # %bb.1:4202; RV32I-NEXT: sll a4, a1, s34203; RV32I-NEXT: .LBB13_2:4204; RV32I-NEXT: or s7, t4, a34205; RV32I-NEXT: lbu t4, 12(a0)4206; RV32I-NEXT: lbu t6, 19(a0)4207; RV32I-NEXT: slli s1, a6, 84208; RV32I-NEXT: or a5, t2, a54209; RV32I-NEXT: or a3, t3, t04210; RV32I-NEXT: beqz t1, .LBB13_44211; RV32I-NEXT: # %bb.3:4212; RV32I-NEXT: li s0, 04213; RV32I-NEXT: j .LBB13_54214; RV32I-NEXT: .LBB13_4:4215; RV32I-NEXT: srl s0, s7, a74216; RV32I-NEXT: or s0, s0, a44217; RV32I-NEXT: .LBB13_5:4218; RV32I-NEXT: li a6, 04219; RV32I-NEXT: lbu t0, 17(a0)4220; RV32I-NEXT: lbu a4, 18(a0)4221; RV32I-NEXT: slli s4, t6, 84222; RV32I-NEXT: or s2, s1, t44223; RV32I-NEXT: slli a5, a5, 164224; RV32I-NEXT: li s5, 14225; RV32I-NEXT: sll t6, a3, s34226; RV32I-NEXT: beqz t5, .LBB13_74227; RV32I-NEXT: # %bb.6:4228; RV32I-NEXT: mv a6, t64229; RV32I-NEXT: .LBB13_7:4230; RV32I-NEXT: lbu t2, 16(a0)4231; RV32I-NEXT: lbu t3, 23(a0)4232; RV32I-NEXT: slli s1, t0, 84233; RV32I-NEXT: or t4, s4, a44234; RV32I-NEXT: srl a4, a1, a74235; RV32I-NEXT: or a5, a5, s24236; RV32I-NEXT: bne t1, s5, .LBB13_94237; RV32I-NEXT: # %bb.8:4238; RV32I-NEXT: or s0, a4, a64239; RV32I-NEXT: .LBB13_9:4240; RV32I-NEXT: li t0, 04241; RV32I-NEXT: lbu s5, 21(a0)4242; RV32I-NEXT: lbu a6, 22(a0)4243; RV32I-NEXT: slli s4, t3, 84244; RV32I-NEXT: or t2, s1, t24245; RV32I-NEXT: slli s6, t4, 164246; RV32I-NEXT: li s8, 24247; RV32I-NEXT: sll t3, a5, s34248; RV32I-NEXT: beqz t5, .LBB13_114249; RV32I-NEXT: # %bb.10:4250; RV32I-NEXT: mv t0, t34251; RV32I-NEXT: .LBB13_11:4252; RV32I-NEXT: lbu s1, 20(a0)4253; RV32I-NEXT: lbu s2, 27(a0)4254; RV32I-NEXT: slli s5, s5, 84255; RV32I-NEXT: or s4, s4, a64256; RV32I-NEXT: srl t4, a3, a74257; RV32I-NEXT: or a6, s6, t24258; RV32I-NEXT: bne t1, s8, .LBB13_134259; RV32I-NEXT: # %bb.12:4260; RV32I-NEXT: or s0, t4, t04261; RV32I-NEXT: .LBB13_13:4262; RV32I-NEXT: sw s7, 4(sp) # 4-byte Folded Spill4263; RV32I-NEXT: li t2, 04264; RV32I-NEXT: lbu s6, 25(a0)4265; RV32I-NEXT: lbu t0, 26(a0)4266; RV32I-NEXT: slli s8, s2, 84267; RV32I-NEXT: or s7, s5, s14268; RV32I-NEXT: slli s9, s4, 164269; RV32I-NEXT: sll s11, a6, s34270; RV32I-NEXT: beqz t5, .LBB13_154271; RV32I-NEXT: # %bb.14:4272; RV32I-NEXT: mv t2, s114273; RV32I-NEXT: .LBB13_15:4274; RV32I-NEXT: lbu s1, 24(a0)4275; RV32I-NEXT: lbu s2, 31(a0)4276; RV32I-NEXT: slli s5, s6, 84277; RV32I-NEXT: or s4, s8, t04278; RV32I-NEXT: srl ra, a5, a74279; RV32I-NEXT: or t0, s9, s74280; RV32I-NEXT: li s6, 34281; RV32I-NEXT: bne t1, s6, .LBB13_174282; RV32I-NEXT: # %bb.16:4283; RV32I-NEXT: or s0, ra, t24284; RV32I-NEXT: .LBB13_17:4285; RV32I-NEXT: li t2, 04286; RV32I-NEXT: lbu s7, 29(a0)4287; RV32I-NEXT: lbu s6, 30(a0)4288; RV32I-NEXT: slli s8, s2, 84289; RV32I-NEXT: or s2, s5, s14290; RV32I-NEXT: slli s5, s4, 164291; RV32I-NEXT: li s9, 44292; RV32I-NEXT: sll s1, t0, s34293; RV32I-NEXT: sw s1, 8(sp) # 4-byte Folded Spill4294; RV32I-NEXT: beqz t5, .LBB13_194295; RV32I-NEXT: # %bb.18:4296; RV32I-NEXT: lw t2, 8(sp) # 4-byte Folded Reload4297; RV32I-NEXT: .LBB13_19:4298; RV32I-NEXT: lbu s1, 28(a0)4299; RV32I-NEXT: slli s7, s7, 84300; RV32I-NEXT: or s4, s8, s64301; RV32I-NEXT: srl s10, a6, a74302; RV32I-NEXT: or a0, s5, s24303; RV32I-NEXT: bne t1, s9, .LBB13_214304; RV32I-NEXT: # %bb.20:4305; RV32I-NEXT: or s0, s10, t24306; RV32I-NEXT: .LBB13_21:4307; RV32I-NEXT: li s2, 04308; RV32I-NEXT: or t2, s7, s14309; RV32I-NEXT: slli s4, s4, 164310; RV32I-NEXT: li s9, 54311; RV32I-NEXT: sll s7, a0, s34312; RV32I-NEXT: beqz t5, .LBB13_234313; RV32I-NEXT: # %bb.22:4314; RV32I-NEXT: mv s2, s74315; RV32I-NEXT: .LBB13_23:4316; RV32I-NEXT: srl s8, t0, a74317; RV32I-NEXT: or t2, s4, t24318; RV32I-NEXT: bne t1, s9, .LBB13_254319; RV32I-NEXT: # %bb.24:4320; RV32I-NEXT: or s0, s8, s24321; RV32I-NEXT: .LBB13_25:4322; RV32I-NEXT: li s4, 04323; RV32I-NEXT: li s2, 64324; RV32I-NEXT: sll s5, t2, s34325; RV32I-NEXT: beqz t5, .LBB13_274326; RV32I-NEXT: # %bb.26:4327; RV32I-NEXT: mv s4, s54328; RV32I-NEXT: .LBB13_27:4329; RV32I-NEXT: srl s6, a0, a74330; RV32I-NEXT: bne t1, s2, .LBB13_294331; RV32I-NEXT: # %bb.28:4332; RV32I-NEXT: or s0, s6, s44333; RV32I-NEXT: .LBB13_29:4334; RV32I-NEXT: li s3, 74335; RV32I-NEXT: srl s1, t2, a74336; RV32I-NEXT: mv s4, s14337; RV32I-NEXT: bne t1, s3, .LBB13_344338; RV32I-NEXT: # %bb.30:4339; RV32I-NEXT: bnez a7, .LBB13_354340; RV32I-NEXT: .LBB13_31:4341; RV32I-NEXT: li s0, 04342; RV32I-NEXT: bnez t5, .LBB13_364343; RV32I-NEXT: .LBB13_32:4344; RV32I-NEXT: li s4, 24345; RV32I-NEXT: beqz t1, .LBB13_374346; RV32I-NEXT: .LBB13_33:4347; RV32I-NEXT: li a4, 04348; RV32I-NEXT: j .LBB13_384349; RV32I-NEXT: .LBB13_34:4350; RV32I-NEXT: mv s4, s04351; RV32I-NEXT: beqz a7, .LBB13_314352; RV32I-NEXT: .LBB13_35:4353; RV32I-NEXT: sw s4, 4(sp) # 4-byte Folded Spill4354; RV32I-NEXT: li s0, 04355; RV32I-NEXT: beqz t5, .LBB13_324356; RV32I-NEXT: .LBB13_36:4357; RV32I-NEXT: mv s0, t64358; RV32I-NEXT: li s4, 24359; RV32I-NEXT: bnez t1, .LBB13_334360; RV32I-NEXT: .LBB13_37:4361; RV32I-NEXT: or a4, a4, s04362; RV32I-NEXT: .LBB13_38:4363; RV32I-NEXT: li s0, 14364; RV32I-NEXT: li t6, 04365; RV32I-NEXT: bnez t5, .LBB13_574366; RV32I-NEXT: # %bb.39:4367; RV32I-NEXT: beq t1, s0, .LBB13_584368; RV32I-NEXT: .LBB13_40:4369; RV32I-NEXT: li t6, 04370; RV32I-NEXT: bnez t5, .LBB13_594371; RV32I-NEXT: .LBB13_41:4372; RV32I-NEXT: beq t1, s4, .LBB13_604373; RV32I-NEXT: .LBB13_42:4374; RV32I-NEXT: li t6, 04375; RV32I-NEXT: bnez t5, .LBB13_614376; RV32I-NEXT: .LBB13_43:4377; RV32I-NEXT: li s4, 34378; RV32I-NEXT: bne t1, s4, .LBB13_454379; RV32I-NEXT: .LBB13_44:4380; RV32I-NEXT: or a4, s10, t64381; RV32I-NEXT: .LBB13_45:4382; RV32I-NEXT: li t6, 04383; RV32I-NEXT: li s4, 44384; RV32I-NEXT: bnez t5, .LBB13_624385; RV32I-NEXT: # %bb.46:4386; RV32I-NEXT: beq t1, s4, .LBB13_634387; RV32I-NEXT: .LBB13_47:4388; RV32I-NEXT: li t6, 04389; RV32I-NEXT: bnez t5, .LBB13_644390; RV32I-NEXT: .LBB13_48:4391; RV32I-NEXT: beq t1, s9, .LBB13_654392; RV32I-NEXT: .LBB13_49:4393; RV32I-NEXT: mv t6, s14394; RV32I-NEXT: bne t1, s2, .LBB13_664395; RV32I-NEXT: .LBB13_50:4396; RV32I-NEXT: li a4, 04397; RV32I-NEXT: bne t1, s3, .LBB13_674398; RV32I-NEXT: .LBB13_51:4399; RV32I-NEXT: beqz a7, .LBB13_534400; RV32I-NEXT: .LBB13_52:4401; RV32I-NEXT: mv a1, a44402; RV32I-NEXT: .LBB13_53:4403; RV32I-NEXT: li a4, 04404; RV32I-NEXT: li t6, 24405; RV32I-NEXT: beqz t5, .LBB13_554406; RV32I-NEXT: # %bb.54:4407; RV32I-NEXT: mv a4, t34408; RV32I-NEXT: .LBB13_55:4409; RV32I-NEXT: beqz t1, .LBB13_684410; RV32I-NEXT: # %bb.56:4411; RV32I-NEXT: li a4, 04412; RV32I-NEXT: j .LBB13_694413; RV32I-NEXT: .LBB13_57:4414; RV32I-NEXT: mv t6, t34415; RV32I-NEXT: bne t1, s0, .LBB13_404416; RV32I-NEXT: .LBB13_58:4417; RV32I-NEXT: or a4, t4, t64418; RV32I-NEXT: li t6, 04419; RV32I-NEXT: beqz t5, .LBB13_414420; RV32I-NEXT: .LBB13_59:4421; RV32I-NEXT: mv t6, s114422; RV32I-NEXT: bne t1, s4, .LBB13_424423; RV32I-NEXT: .LBB13_60:4424; RV32I-NEXT: or a4, ra, t64425; RV32I-NEXT: li t6, 04426; RV32I-NEXT: beqz t5, .LBB13_434427; RV32I-NEXT: .LBB13_61:4428; RV32I-NEXT: lw t6, 8(sp) # 4-byte Folded Reload4429; RV32I-NEXT: li s4, 34430; RV32I-NEXT: beq t1, s4, .LBB13_444431; RV32I-NEXT: j .LBB13_454432; RV32I-NEXT: .LBB13_62:4433; RV32I-NEXT: mv t6, s74434; RV32I-NEXT: bne t1, s4, .LBB13_474435; RV32I-NEXT: .LBB13_63:4436; RV32I-NEXT: or a4, s8, t64437; RV32I-NEXT: li t6, 04438; RV32I-NEXT: beqz t5, .LBB13_484439; RV32I-NEXT: .LBB13_64:4440; RV32I-NEXT: mv t6, s54441; RV32I-NEXT: bne t1, s9, .LBB13_494442; RV32I-NEXT: .LBB13_65:4443; RV32I-NEXT: or a4, s6, t64444; RV32I-NEXT: mv t6, s14445; RV32I-NEXT: beq t1, s2, .LBB13_504446; RV32I-NEXT: .LBB13_66:4447; RV32I-NEXT: mv t6, a44448; RV32I-NEXT: li a4, 04449; RV32I-NEXT: beq t1, s3, .LBB13_514450; RV32I-NEXT: .LBB13_67:4451; RV32I-NEXT: mv a4, t64452; RV32I-NEXT: bnez a7, .LBB13_524453; RV32I-NEXT: j .LBB13_534454; RV32I-NEXT: .LBB13_68:4455; RV32I-NEXT: or a4, t4, a44456; RV32I-NEXT: .LBB13_69:4457; RV32I-NEXT: li t4, 34458; RV32I-NEXT: li t3, 04459; RV32I-NEXT: bnez t5, .LBB13_844460; RV32I-NEXT: # %bb.70:4461; RV32I-NEXT: beq t1, s0, .LBB13_854462; RV32I-NEXT: .LBB13_71:4463; RV32I-NEXT: li t3, 04464; RV32I-NEXT: bnez t5, .LBB13_864465; RV32I-NEXT: .LBB13_72:4466; RV32I-NEXT: beq t1, t6, .LBB13_874467; RV32I-NEXT: .LBB13_73:4468; RV32I-NEXT: li t3, 04469; RV32I-NEXT: bnez t5, .LBB13_884470; RV32I-NEXT: .LBB13_74:4471; RV32I-NEXT: beq t1, t4, .LBB13_894472; RV32I-NEXT: .LBB13_75:4473; RV32I-NEXT: li t3, 04474; RV32I-NEXT: bnez t5, .LBB13_904475; RV32I-NEXT: .LBB13_76:4476; RV32I-NEXT: beq t1, s4, .LBB13_914477; RV32I-NEXT: .LBB13_77:4478; RV32I-NEXT: mv t3, s14479; RV32I-NEXT: bne t1, s9, .LBB13_924480; RV32I-NEXT: .LBB13_78:4481; RV32I-NEXT: li a4, 04482; RV32I-NEXT: bne t1, s2, .LBB13_934483; RV32I-NEXT: .LBB13_79:4484; RV32I-NEXT: li t3, 04485; RV32I-NEXT: bne t1, s3, .LBB13_944486; RV32I-NEXT: .LBB13_80:4487; RV32I-NEXT: bnez a7, .LBB13_954488; RV32I-NEXT: .LBB13_81:4489; RV32I-NEXT: li a4, 04490; RV32I-NEXT: bnez t5, .LBB13_964491; RV32I-NEXT: .LBB13_82:4492; RV32I-NEXT: beqz t1, .LBB13_974493; RV32I-NEXT: .LBB13_83:4494; RV32I-NEXT: li a4, 04495; RV32I-NEXT: j .LBB13_984496; RV32I-NEXT: .LBB13_84:4497; RV32I-NEXT: mv t3, s114498; RV32I-NEXT: bne t1, s0, .LBB13_714499; RV32I-NEXT: .LBB13_85:4500; RV32I-NEXT: or a4, ra, t34501; RV32I-NEXT: li t3, 04502; RV32I-NEXT: beqz t5, .LBB13_724503; RV32I-NEXT: .LBB13_86:4504; RV32I-NEXT: lw t3, 8(sp) # 4-byte Folded Reload4505; RV32I-NEXT: bne t1, t6, .LBB13_734506; RV32I-NEXT: .LBB13_87:4507; RV32I-NEXT: or a4, s10, t34508; RV32I-NEXT: li t3, 04509; RV32I-NEXT: beqz t5, .LBB13_744510; RV32I-NEXT: .LBB13_88:4511; RV32I-NEXT: mv t3, s74512; RV32I-NEXT: bne t1, t4, .LBB13_754513; RV32I-NEXT: .LBB13_89:4514; RV32I-NEXT: or a4, s8, t34515; RV32I-NEXT: li t3, 04516; RV32I-NEXT: beqz t5, .LBB13_764517; RV32I-NEXT: .LBB13_90:4518; RV32I-NEXT: mv t3, s54519; RV32I-NEXT: bne t1, s4, .LBB13_774520; RV32I-NEXT: .LBB13_91:4521; RV32I-NEXT: or a4, s6, t34522; RV32I-NEXT: mv t3, s14523; RV32I-NEXT: beq t1, s9, .LBB13_784524; RV32I-NEXT: .LBB13_92:4525; RV32I-NEXT: mv t3, a44526; RV32I-NEXT: li a4, 04527; RV32I-NEXT: beq t1, s2, .LBB13_794528; RV32I-NEXT: .LBB13_93:4529; RV32I-NEXT: mv a4, t34530; RV32I-NEXT: li t3, 04531; RV32I-NEXT: beq t1, s3, .LBB13_804532; RV32I-NEXT: .LBB13_94:4533; RV32I-NEXT: mv t3, a44534; RV32I-NEXT: beqz a7, .LBB13_814535; RV32I-NEXT: .LBB13_95:4536; RV32I-NEXT: mv a3, t34537; RV32I-NEXT: li a4, 04538; RV32I-NEXT: beqz t5, .LBB13_824539; RV32I-NEXT: .LBB13_96:4540; RV32I-NEXT: mv a4, s114541; RV32I-NEXT: bnez t1, .LBB13_834542; RV32I-NEXT: .LBB13_97:4543; RV32I-NEXT: or a4, ra, a44544; RV32I-NEXT: .LBB13_98:4545; RV32I-NEXT: lw ra, 4(sp) # 4-byte Folded Reload4546; RV32I-NEXT: li t3, 04547; RV32I-NEXT: bnez t5, .LBB13_1124548; RV32I-NEXT: # %bb.99:4549; RV32I-NEXT: beq t1, s0, .LBB13_1134550; RV32I-NEXT: .LBB13_100:4551; RV32I-NEXT: li t3, 04552; RV32I-NEXT: bnez t5, .LBB13_1144553; RV32I-NEXT: .LBB13_101:4554; RV32I-NEXT: beq t1, t6, .LBB13_1154555; RV32I-NEXT: .LBB13_102:4556; RV32I-NEXT: li t3, 04557; RV32I-NEXT: bnez t5, .LBB13_1164558; RV32I-NEXT: .LBB13_103:4559; RV32I-NEXT: beq t1, t4, .LBB13_1174560; RV32I-NEXT: .LBB13_104:4561; RV32I-NEXT: mv t3, s14562; RV32I-NEXT: bne t1, s4, .LBB13_1184563; RV32I-NEXT: .LBB13_105:4564; RV32I-NEXT: li a4, 04565; RV32I-NEXT: bne t1, s9, .LBB13_1194566; RV32I-NEXT: .LBB13_106:4567; RV32I-NEXT: li t3, 04568; RV32I-NEXT: bne t1, s2, .LBB13_1204569; RV32I-NEXT: .LBB13_107:4570; RV32I-NEXT: li a4, 04571; RV32I-NEXT: bne t1, s3, .LBB13_1214572; RV32I-NEXT: .LBB13_108:4573; RV32I-NEXT: bnez a7, .LBB13_1224574; RV32I-NEXT: .LBB13_109:4575; RV32I-NEXT: li a4, 04576; RV32I-NEXT: bnez t5, .LBB13_1234577; RV32I-NEXT: .LBB13_110:4578; RV32I-NEXT: beqz t1, .LBB13_1244579; RV32I-NEXT: .LBB13_111:4580; RV32I-NEXT: li a4, 04581; RV32I-NEXT: li t3, 04582; RV32I-NEXT: bnez t5, .LBB13_1254583; RV32I-NEXT: j .LBB13_1264584; RV32I-NEXT: .LBB13_112:4585; RV32I-NEXT: lw t3, 8(sp) # 4-byte Folded Reload4586; RV32I-NEXT: bne t1, s0, .LBB13_1004587; RV32I-NEXT: .LBB13_113:4588; RV32I-NEXT: or a4, s10, t34589; RV32I-NEXT: li t3, 04590; RV32I-NEXT: beqz t5, .LBB13_1014591; RV32I-NEXT: .LBB13_114:4592; RV32I-NEXT: mv t3, s74593; RV32I-NEXT: bne t1, t6, .LBB13_1024594; RV32I-NEXT: .LBB13_115:4595; RV32I-NEXT: or a4, s8, t34596; RV32I-NEXT: li t3, 04597; RV32I-NEXT: beqz t5, .LBB13_1034598; RV32I-NEXT: .LBB13_116:4599; RV32I-NEXT: mv t3, s54600; RV32I-NEXT: bne t1, t4, .LBB13_1044601; RV32I-NEXT: .LBB13_117:4602; RV32I-NEXT: or a4, s6, t34603; RV32I-NEXT: mv t3, s14604; RV32I-NEXT: beq t1, s4, .LBB13_1054605; RV32I-NEXT: .LBB13_118:4606; RV32I-NEXT: mv t3, a44607; RV32I-NEXT: li a4, 04608; RV32I-NEXT: beq t1, s9, .LBB13_1064609; RV32I-NEXT: .LBB13_119:4610; RV32I-NEXT: mv a4, t34611; RV32I-NEXT: li t3, 04612; RV32I-NEXT: beq t1, s2, .LBB13_1074613; RV32I-NEXT: .LBB13_120:4614; RV32I-NEXT: mv t3, a44615; RV32I-NEXT: li a4, 04616; RV32I-NEXT: beq t1, s3, .LBB13_1084617; RV32I-NEXT: .LBB13_121:4618; RV32I-NEXT: mv a4, t34619; RV32I-NEXT: beqz a7, .LBB13_1094620; RV32I-NEXT: .LBB13_122:4621; RV32I-NEXT: mv a5, a44622; RV32I-NEXT: li a4, 04623; RV32I-NEXT: beqz t5, .LBB13_1104624; RV32I-NEXT: .LBB13_123:4625; RV32I-NEXT: lw a4, 8(sp) # 4-byte Folded Reload4626; RV32I-NEXT: bnez t1, .LBB13_1114627; RV32I-NEXT: .LBB13_124:4628; RV32I-NEXT: or a4, s10, a44629; RV32I-NEXT: li t3, 04630; RV32I-NEXT: beqz t5, .LBB13_1264631; RV32I-NEXT: .LBB13_125:4632; RV32I-NEXT: mv t3, s74633; RV32I-NEXT: .LBB13_126:4634; RV32I-NEXT: beq t1, s0, .LBB13_1384635; RV32I-NEXT: # %bb.127:4636; RV32I-NEXT: li t3, 04637; RV32I-NEXT: bnez t5, .LBB13_1394638; RV32I-NEXT: .LBB13_128:4639; RV32I-NEXT: beq t1, t6, .LBB13_1404640; RV32I-NEXT: .LBB13_129:4641; RV32I-NEXT: mv t3, s14642; RV32I-NEXT: bne t1, t4, .LBB13_1414643; RV32I-NEXT: .LBB13_130:4644; RV32I-NEXT: li a4, 04645; RV32I-NEXT: bne t1, s4, .LBB13_1424646; RV32I-NEXT: .LBB13_131:4647; RV32I-NEXT: li t3, 04648; RV32I-NEXT: bne t1, s9, .LBB13_1434649; RV32I-NEXT: .LBB13_132:4650; RV32I-NEXT: li a4, 04651; RV32I-NEXT: bne t1, s2, .LBB13_1444652; RV32I-NEXT: .LBB13_133:4653; RV32I-NEXT: li t3, 04654; RV32I-NEXT: bne t1, s3, .LBB13_1454655; RV32I-NEXT: .LBB13_134:4656; RV32I-NEXT: bnez a7, .LBB13_1464657; RV32I-NEXT: .LBB13_135:4658; RV32I-NEXT: li a4, 04659; RV32I-NEXT: bnez t5, .LBB13_1474660; RV32I-NEXT: .LBB13_136:4661; RV32I-NEXT: beqz t1, .LBB13_1484662; RV32I-NEXT: .LBB13_137:4663; RV32I-NEXT: li a4, 04664; RV32I-NEXT: li t3, 04665; RV32I-NEXT: bnez t5, .LBB13_1494666; RV32I-NEXT: j .LBB13_1504667; RV32I-NEXT: .LBB13_138:4668; RV32I-NEXT: or a4, s8, t34669; RV32I-NEXT: li t3, 04670; RV32I-NEXT: beqz t5, .LBB13_1284671; RV32I-NEXT: .LBB13_139:4672; RV32I-NEXT: mv t3, s54673; RV32I-NEXT: bne t1, t6, .LBB13_1294674; RV32I-NEXT: .LBB13_140:4675; RV32I-NEXT: or a4, s6, t34676; RV32I-NEXT: mv t3, s14677; RV32I-NEXT: beq t1, t4, .LBB13_1304678; RV32I-NEXT: .LBB13_141:4679; RV32I-NEXT: mv t3, a44680; RV32I-NEXT: li a4, 04681; RV32I-NEXT: beq t1, s4, .LBB13_1314682; RV32I-NEXT: .LBB13_142:4683; RV32I-NEXT: mv a4, t34684; RV32I-NEXT: li t3, 04685; RV32I-NEXT: beq t1, s9, .LBB13_1324686; RV32I-NEXT: .LBB13_143:4687; RV32I-NEXT: mv t3, a44688; RV32I-NEXT: li a4, 04689; RV32I-NEXT: beq t1, s2, .LBB13_1334690; RV32I-NEXT: .LBB13_144:4691; RV32I-NEXT: mv a4, t34692; RV32I-NEXT: li t3, 04693; RV32I-NEXT: beq t1, s3, .LBB13_1344694; RV32I-NEXT: .LBB13_145:4695; RV32I-NEXT: mv t3, a44696; RV32I-NEXT: beqz a7, .LBB13_1354697; RV32I-NEXT: .LBB13_146:4698; RV32I-NEXT: mv a6, t34699; RV32I-NEXT: li a4, 04700; RV32I-NEXT: beqz t5, .LBB13_1364701; RV32I-NEXT: .LBB13_147:4702; RV32I-NEXT: mv a4, s74703; RV32I-NEXT: bnez t1, .LBB13_1374704; RV32I-NEXT: .LBB13_148:4705; RV32I-NEXT: or a4, s8, a44706; RV32I-NEXT: li t3, 04707; RV32I-NEXT: beqz t5, .LBB13_1504708; RV32I-NEXT: .LBB13_149:4709; RV32I-NEXT: mv t3, s54710; RV32I-NEXT: .LBB13_150:4711; RV32I-NEXT: beq t1, s0, .LBB13_1614712; RV32I-NEXT: # %bb.151:4713; RV32I-NEXT: mv t3, s14714; RV32I-NEXT: bne t1, t6, .LBB13_1624715; RV32I-NEXT: .LBB13_152:4716; RV32I-NEXT: li a4, 04717; RV32I-NEXT: bne t1, t4, .LBB13_1634718; RV32I-NEXT: .LBB13_153:4719; RV32I-NEXT: li t3, 04720; RV32I-NEXT: bne t1, s4, .LBB13_1644721; RV32I-NEXT: .LBB13_154:4722; RV32I-NEXT: li a4, 04723; RV32I-NEXT: bne t1, s9, .LBB13_1654724; RV32I-NEXT: .LBB13_155:4725; RV32I-NEXT: li t3, 04726; RV32I-NEXT: bne t1, s2, .LBB13_1664727; RV32I-NEXT: .LBB13_156:4728; RV32I-NEXT: li a4, 04729; RV32I-NEXT: bne t1, s3, .LBB13_1674730; RV32I-NEXT: .LBB13_157:4731; RV32I-NEXT: bnez a7, .LBB13_1684732; RV32I-NEXT: .LBB13_158:4733; RV32I-NEXT: li a4, 04734; RV32I-NEXT: bnez t5, .LBB13_1694735; RV32I-NEXT: .LBB13_159:4736; RV32I-NEXT: beqz t1, .LBB13_1704737; RV32I-NEXT: .LBB13_160:4738; RV32I-NEXT: li a4, 04739; RV32I-NEXT: mv t3, s14740; RV32I-NEXT: bne t1, s0, .LBB13_1714741; RV32I-NEXT: j .LBB13_1724742; RV32I-NEXT: .LBB13_161:4743; RV32I-NEXT: or a4, s6, t34744; RV32I-NEXT: mv t3, s14745; RV32I-NEXT: beq t1, t6, .LBB13_1524746; RV32I-NEXT: .LBB13_162:4747; RV32I-NEXT: mv t3, a44748; RV32I-NEXT: li a4, 04749; RV32I-NEXT: beq t1, t4, .LBB13_1534750; RV32I-NEXT: .LBB13_163:4751; RV32I-NEXT: mv a4, t34752; RV32I-NEXT: li t3, 04753; RV32I-NEXT: beq t1, s4, .LBB13_1544754; RV32I-NEXT: .LBB13_164:4755; RV32I-NEXT: mv t3, a44756; RV32I-NEXT: li a4, 04757; RV32I-NEXT: beq t1, s9, .LBB13_1554758; RV32I-NEXT: .LBB13_165:4759; RV32I-NEXT: mv a4, t34760; RV32I-NEXT: li t3, 04761; RV32I-NEXT: beq t1, s2, .LBB13_1564762; RV32I-NEXT: .LBB13_166:4763; RV32I-NEXT: mv t3, a44764; RV32I-NEXT: li a4, 04765; RV32I-NEXT: beq t1, s3, .LBB13_1574766; RV32I-NEXT: .LBB13_167:4767; RV32I-NEXT: mv a4, t34768; RV32I-NEXT: beqz a7, .LBB13_1584769; RV32I-NEXT: .LBB13_168:4770; RV32I-NEXT: mv t0, a44771; RV32I-NEXT: li a4, 04772; RV32I-NEXT: beqz t5, .LBB13_1594773; RV32I-NEXT: .LBB13_169:4774; RV32I-NEXT: mv a4, s54775; RV32I-NEXT: bnez t1, .LBB13_1604776; RV32I-NEXT: .LBB13_170:4777; RV32I-NEXT: or a4, s6, a44778; RV32I-NEXT: mv t3, s14779; RV32I-NEXT: beq t1, s0, .LBB13_1724780; RV32I-NEXT: .LBB13_171:4781; RV32I-NEXT: mv t3, a44782; RV32I-NEXT: .LBB13_172:4783; RV32I-NEXT: li a4, 04784; RV32I-NEXT: bne t1, t6, .LBB13_1904785; RV32I-NEXT: # %bb.173:4786; RV32I-NEXT: li t3, 04787; RV32I-NEXT: bne t1, t4, .LBB13_1914788; RV32I-NEXT: .LBB13_174:4789; RV32I-NEXT: li a4, 04790; RV32I-NEXT: bne t1, s4, .LBB13_1924791; RV32I-NEXT: .LBB13_175:4792; RV32I-NEXT: li t3, 04793; RV32I-NEXT: bne t1, s9, .LBB13_1934794; RV32I-NEXT: .LBB13_176:4795; RV32I-NEXT: li a4, 04796; RV32I-NEXT: bne t1, s2, .LBB13_1944797; RV32I-NEXT: .LBB13_177:4798; RV32I-NEXT: li t3, 04799; RV32I-NEXT: bne t1, s3, .LBB13_1954800; RV32I-NEXT: .LBB13_178:4801; RV32I-NEXT: bnez a7, .LBB13_1964802; RV32I-NEXT: .LBB13_179:4803; RV32I-NEXT: bnez t1, .LBB13_1974804; RV32I-NEXT: .LBB13_180:4805; RV32I-NEXT: li a4, 04806; RV32I-NEXT: bne t1, s0, .LBB13_1984807; RV32I-NEXT: .LBB13_181:4808; RV32I-NEXT: li t3, 04809; RV32I-NEXT: bne t1, t6, .LBB13_1994810; RV32I-NEXT: .LBB13_182:4811; RV32I-NEXT: li a4, 04812; RV32I-NEXT: bne t1, t4, .LBB13_2004813; RV32I-NEXT: .LBB13_183:4814; RV32I-NEXT: li t3, 04815; RV32I-NEXT: bne t1, s4, .LBB13_2014816; RV32I-NEXT: .LBB13_184:4817; RV32I-NEXT: li a4, 04818; RV32I-NEXT: bne t1, s9, .LBB13_2024819; RV32I-NEXT: .LBB13_185:4820; RV32I-NEXT: li t3, 04821; RV32I-NEXT: bne t1, s2, .LBB13_2034822; RV32I-NEXT: .LBB13_186:4823; RV32I-NEXT: li a4, 04824; RV32I-NEXT: bne t1, s3, .LBB13_2044825; RV32I-NEXT: .LBB13_187:4826; RV32I-NEXT: beqz a7, .LBB13_1894827; RV32I-NEXT: .LBB13_188:4828; RV32I-NEXT: mv t2, a44829; RV32I-NEXT: .LBB13_189:4830; RV32I-NEXT: srli a4, ra, 164831; RV32I-NEXT: lui t4, 164832; RV32I-NEXT: srli t3, ra, 244833; RV32I-NEXT: srli a7, a1, 164834; RV32I-NEXT: srli t6, a1, 244835; RV32I-NEXT: srli t1, a3, 164836; RV32I-NEXT: srli s2, a3, 244837; RV32I-NEXT: srli t5, a5, 164838; RV32I-NEXT: srli s3, a5, 244839; RV32I-NEXT: srli s1, a6, 164840; RV32I-NEXT: srli s6, a6, 244841; RV32I-NEXT: srli s0, t0, 164842; RV32I-NEXT: srli s5, t0, 244843; RV32I-NEXT: srli s4, a0, 164844; RV32I-NEXT: srli s7, a0, 244845; RV32I-NEXT: srli s8, t2, 164846; RV32I-NEXT: srli s9, t2, 244847; RV32I-NEXT: addi t4, t4, -14848; RV32I-NEXT: and s10, ra, t44849; RV32I-NEXT: and s11, a1, t44850; RV32I-NEXT: srli s10, s10, 84851; RV32I-NEXT: sb ra, 0(a2)4852; RV32I-NEXT: sb s10, 1(a2)4853; RV32I-NEXT: sb a4, 2(a2)4854; RV32I-NEXT: sb t3, 3(a2)4855; RV32I-NEXT: and a4, a3, t44856; RV32I-NEXT: srli t3, s11, 84857; RV32I-NEXT: sb a1, 4(a2)4858; RV32I-NEXT: sb t3, 5(a2)4859; RV32I-NEXT: sb a7, 6(a2)4860; RV32I-NEXT: sb t6, 7(a2)4861; RV32I-NEXT: and a1, a5, t44862; RV32I-NEXT: srli a4, a4, 84863; RV32I-NEXT: sb a3, 8(a2)4864; RV32I-NEXT: sb a4, 9(a2)4865; RV32I-NEXT: sb t1, 10(a2)4866; RV32I-NEXT: sb s2, 11(a2)4867; RV32I-NEXT: and a3, a6, t44868; RV32I-NEXT: srli a1, a1, 84869; RV32I-NEXT: sb a5, 12(a2)4870; RV32I-NEXT: sb a1, 13(a2)4871; RV32I-NEXT: sb t5, 14(a2)4872; RV32I-NEXT: sb s3, 15(a2)4873; RV32I-NEXT: and a1, t0, t44874; RV32I-NEXT: srli a3, a3, 84875; RV32I-NEXT: sb a6, 16(a2)4876; RV32I-NEXT: sb a3, 17(a2)4877; RV32I-NEXT: sb s1, 18(a2)4878; RV32I-NEXT: sb s6, 19(a2)4879; RV32I-NEXT: and a3, a0, t44880; RV32I-NEXT: and a4, t2, t44881; RV32I-NEXT: srli a1, a1, 84882; RV32I-NEXT: srli a3, a3, 84883; RV32I-NEXT: srli a4, a4, 84884; RV32I-NEXT: sb t0, 20(a2)4885; RV32I-NEXT: sb a1, 21(a2)4886; RV32I-NEXT: sb s0, 22(a2)4887; RV32I-NEXT: sb s5, 23(a2)4888; RV32I-NEXT: sb a0, 24(a2)4889; RV32I-NEXT: sb a3, 25(a2)4890; RV32I-NEXT: sb s4, 26(a2)4891; RV32I-NEXT: sb s7, 27(a2)4892; RV32I-NEXT: sb t2, 28(a2)4893; RV32I-NEXT: sb a4, 29(a2)4894; RV32I-NEXT: sb s8, 30(a2)4895; RV32I-NEXT: sb s9, 31(a2)4896; RV32I-NEXT: lw ra, 60(sp) # 4-byte Folded Reload4897; RV32I-NEXT: lw s0, 56(sp) # 4-byte Folded Reload4898; RV32I-NEXT: lw s1, 52(sp) # 4-byte Folded Reload4899; RV32I-NEXT: lw s2, 48(sp) # 4-byte Folded Reload4900; RV32I-NEXT: lw s3, 44(sp) # 4-byte Folded Reload4901; RV32I-NEXT: lw s4, 40(sp) # 4-byte Folded Reload4902; RV32I-NEXT: lw s5, 36(sp) # 4-byte Folded Reload4903; RV32I-NEXT: lw s6, 32(sp) # 4-byte Folded Reload4904; RV32I-NEXT: lw s7, 28(sp) # 4-byte Folded Reload4905; RV32I-NEXT: lw s8, 24(sp) # 4-byte Folded Reload4906; RV32I-NEXT: lw s9, 20(sp) # 4-byte Folded Reload4907; RV32I-NEXT: lw s10, 16(sp) # 4-byte Folded Reload4908; RV32I-NEXT: lw s11, 12(sp) # 4-byte Folded Reload4909; RV32I-NEXT: addi sp, sp, 644910; RV32I-NEXT: ret4911; RV32I-NEXT: .LBB13_190:4912; RV32I-NEXT: mv a4, t34913; RV32I-NEXT: li t3, 04914; RV32I-NEXT: beq t1, t4, .LBB13_1744915; RV32I-NEXT: .LBB13_191:4916; RV32I-NEXT: mv t3, a44917; RV32I-NEXT: li a4, 04918; RV32I-NEXT: beq t1, s4, .LBB13_1754919; RV32I-NEXT: .LBB13_192:4920; RV32I-NEXT: mv a4, t34921; RV32I-NEXT: li t3, 04922; RV32I-NEXT: beq t1, s9, .LBB13_1764923; RV32I-NEXT: .LBB13_193:4924; RV32I-NEXT: mv t3, a44925; RV32I-NEXT: li a4, 04926; RV32I-NEXT: beq t1, s2, .LBB13_1774927; RV32I-NEXT: .LBB13_194:4928; RV32I-NEXT: mv a4, t34929; RV32I-NEXT: li t3, 04930; RV32I-NEXT: beq t1, s3, .LBB13_1784931; RV32I-NEXT: .LBB13_195:4932; RV32I-NEXT: mv t3, a44933; RV32I-NEXT: beqz a7, .LBB13_1794934; RV32I-NEXT: .LBB13_196:4935; RV32I-NEXT: mv a0, t34936; RV32I-NEXT: beqz t1, .LBB13_1804937; RV32I-NEXT: .LBB13_197:4938; RV32I-NEXT: li s1, 04939; RV32I-NEXT: li a4, 04940; RV32I-NEXT: beq t1, s0, .LBB13_1814941; RV32I-NEXT: .LBB13_198:4942; RV32I-NEXT: mv a4, s14943; RV32I-NEXT: li t3, 04944; RV32I-NEXT: beq t1, t6, .LBB13_1824945; RV32I-NEXT: .LBB13_199:4946; RV32I-NEXT: mv t3, a44947; RV32I-NEXT: li a4, 04948; RV32I-NEXT: beq t1, t4, .LBB13_1834949; RV32I-NEXT: .LBB13_200:4950; RV32I-NEXT: mv a4, t34951; RV32I-NEXT: li t3, 04952; RV32I-NEXT: beq t1, s4, .LBB13_1844953; RV32I-NEXT: .LBB13_201:4954; RV32I-NEXT: mv t3, a44955; RV32I-NEXT: li a4, 04956; RV32I-NEXT: beq t1, s9, .LBB13_1854957; RV32I-NEXT: .LBB13_202:4958; RV32I-NEXT: mv a4, t34959; RV32I-NEXT: li t3, 04960; RV32I-NEXT: beq t1, s2, .LBB13_1864961; RV32I-NEXT: .LBB13_203:4962; RV32I-NEXT: mv t3, a44963; RV32I-NEXT: li a4, 04964; RV32I-NEXT: beq t1, s3, .LBB13_1874965; RV32I-NEXT: .LBB13_204:4966; RV32I-NEXT: mv a4, t34967; RV32I-NEXT: bnez a7, .LBB13_1884968; RV32I-NEXT: j .LBB13_1894969 %src = load i256, ptr %src.ptr, align 14970 %wordOff = load i256, ptr %wordOff.ptr, align 14971 %bitOff = shl i256 %wordOff, 54972 %res = lshr i256 %src, %bitOff4973 store i256 %res, ptr %dst, align 14974 ret void4975}4976 4977define void @lshr_32bytes_dwordOff(ptr %src.ptr, ptr %dwordOff.ptr, ptr %dst) nounwind {4978; RV64I-LABEL: lshr_32bytes_dwordOff:4979; RV64I: # %bb.0:4980; RV64I-NEXT: addi sp, sp, -964981; RV64I-NEXT: sd s0, 88(sp) # 8-byte Folded Spill4982; RV64I-NEXT: sd s1, 80(sp) # 8-byte Folded Spill4983; RV64I-NEXT: sd s2, 72(sp) # 8-byte Folded Spill4984; RV64I-NEXT: sd s3, 64(sp) # 8-byte Folded Spill4985; RV64I-NEXT: sd s4, 56(sp) # 8-byte Folded Spill4986; RV64I-NEXT: sd s5, 48(sp) # 8-byte Folded Spill4987; RV64I-NEXT: sd s6, 40(sp) # 8-byte Folded Spill4988; RV64I-NEXT: sd s7, 32(sp) # 8-byte Folded Spill4989; RV64I-NEXT: sd s8, 24(sp) # 8-byte Folded Spill4990; RV64I-NEXT: sd s9, 16(sp) # 8-byte Folded Spill4991; RV64I-NEXT: sd s10, 8(sp) # 8-byte Folded Spill4992; RV64I-NEXT: sd s11, 0(sp) # 8-byte Folded Spill4993; RV64I-NEXT: lbu a3, 0(a0)4994; RV64I-NEXT: lbu a4, 1(a0)4995; RV64I-NEXT: lbu a5, 2(a0)4996; RV64I-NEXT: lbu a6, 3(a0)4997; RV64I-NEXT: lbu a7, 4(a0)4998; RV64I-NEXT: lbu t0, 5(a0)4999; RV64I-NEXT: lbu t1, 6(a0)5000; RV64I-NEXT: lbu t2, 7(a0)5001; RV64I-NEXT: lbu t3, 8(a0)5002; RV64I-NEXT: lbu t4, 9(a0)5003; RV64I-NEXT: lbu t5, 10(a0)5004; RV64I-NEXT: lbu t6, 11(a0)5005; RV64I-NEXT: lbu s0, 12(a0)5006; RV64I-NEXT: lbu s1, 13(a0)5007; RV64I-NEXT: lbu s2, 14(a0)5008; RV64I-NEXT: lbu s3, 15(a0)5009; RV64I-NEXT: lbu s4, 16(a0)5010; RV64I-NEXT: lbu s5, 17(a0)5011; RV64I-NEXT: lbu s6, 18(a0)5012; RV64I-NEXT: lbu s7, 19(a0)5013; RV64I-NEXT: slli a4, a4, 85014; RV64I-NEXT: slli a6, a6, 85015; RV64I-NEXT: slli t0, t0, 85016; RV64I-NEXT: or a3, a4, a35017; RV64I-NEXT: or a5, a6, a55018; RV64I-NEXT: or a7, t0, a75019; RV64I-NEXT: lbu s8, 20(a0)5020; RV64I-NEXT: lbu s9, 21(a0)5021; RV64I-NEXT: lbu s10, 22(a0)5022; RV64I-NEXT: lbu s11, 23(a0)5023; RV64I-NEXT: slli t2, t2, 85024; RV64I-NEXT: slli t4, t4, 85025; RV64I-NEXT: slli t6, t6, 85026; RV64I-NEXT: slli s1, s1, 85027; RV64I-NEXT: or t1, t2, t15028; RV64I-NEXT: or a4, t4, t35029; RV64I-NEXT: or a6, t6, t55030; RV64I-NEXT: or t0, s1, s05031; RV64I-NEXT: lbu t5, 24(a0)5032; RV64I-NEXT: lbu t6, 25(a0)5033; RV64I-NEXT: lbu s0, 26(a0)5034; RV64I-NEXT: lbu s1, 27(a0)5035; RV64I-NEXT: slli s3, s3, 85036; RV64I-NEXT: slli s5, s5, 85037; RV64I-NEXT: slli s7, s7, 85038; RV64I-NEXT: or t4, s3, s25039; RV64I-NEXT: or t2, s5, s45040; RV64I-NEXT: or t3, s7, s65041; RV64I-NEXT: lbu s2, 28(a0)5042; RV64I-NEXT: lbu s3, 29(a0)5043; RV64I-NEXT: lbu s4, 30(a0)5044; RV64I-NEXT: lbu a0, 31(a0)5045; RV64I-NEXT: slli s9, s9, 85046; RV64I-NEXT: slli s11, s11, 85047; RV64I-NEXT: slli t6, t6, 85048; RV64I-NEXT: slli s1, s1, 85049; RV64I-NEXT: or s5, s9, s85050; RV64I-NEXT: or s6, s11, s105051; RV64I-NEXT: or t5, t6, t55052; RV64I-NEXT: or s0, s1, s05053; RV64I-NEXT: lbu t6, 0(a1)5054; RV64I-NEXT: lbu s1, 1(a1)5055; RV64I-NEXT: lbu s7, 2(a1)5056; RV64I-NEXT: lbu s8, 3(a1)5057; RV64I-NEXT: slli s3, s3, 85058; RV64I-NEXT: slli a0, a0, 85059; RV64I-NEXT: slli s1, s1, 85060; RV64I-NEXT: or s2, s3, s25061; RV64I-NEXT: or s3, a0, s45062; RV64I-NEXT: or t6, s1, t65063; RV64I-NEXT: lbu a0, 4(a1)5064; RV64I-NEXT: lbu s1, 5(a1)5065; RV64I-NEXT: lbu s4, 6(a1)5066; RV64I-NEXT: lbu a1, 7(a1)5067; RV64I-NEXT: slli s8, s8, 85068; RV64I-NEXT: or s7, s8, s75069; RV64I-NEXT: slli s1, s1, 85070; RV64I-NEXT: or s1, s1, a05071; RV64I-NEXT: slli a1, a1, 85072; RV64I-NEXT: or s4, a1, s45073; RV64I-NEXT: slli t1, t1, 165074; RV64I-NEXT: or a1, t1, a75075; RV64I-NEXT: slli t4, t4, 165076; RV64I-NEXT: or a0, t4, t05077; RV64I-NEXT: slli t3, t3, 165078; RV64I-NEXT: or t0, t3, t25079; RV64I-NEXT: slli s6, s6, 165080; RV64I-NEXT: or t1, s6, s55081; RV64I-NEXT: slli s0, s0, 165082; RV64I-NEXT: or t3, s0, t55083; RV64I-NEXT: slli s3, s3, 165084; RV64I-NEXT: or t5, s3, s25085; RV64I-NEXT: slli s7, s7, 165086; RV64I-NEXT: or t6, s7, t65087; RV64I-NEXT: slli s4, s4, 165088; RV64I-NEXT: or s0, s4, s15089; RV64I-NEXT: li a7, 645090; RV64I-NEXT: slli t4, a5, 165091; RV64I-NEXT: slli t2, a6, 165092; RV64I-NEXT: slli t1, t1, 325093; RV64I-NEXT: slli t5, t5, 325094; RV64I-NEXT: slli s0, s0, 325095; RV64I-NEXT: or a6, t1, t05096; RV64I-NEXT: or t0, t5, t35097; RV64I-NEXT: or a5, s0, t65098; RV64I-NEXT: slli a5, a5, 65099; RV64I-NEXT: sub t1, a5, a75100; RV64I-NEXT: neg t5, a55101; RV64I-NEXT: sll t3, t0, t55102; RV64I-NEXT: bltu a5, a7, .LBB14_25103; RV64I-NEXT: # %bb.1:5104; RV64I-NEXT: srl t6, t0, t15105; RV64I-NEXT: j .LBB14_35106; RV64I-NEXT: .LBB14_2:5107; RV64I-NEXT: srl t6, a6, a55108; RV64I-NEXT: or t6, t6, t35109; RV64I-NEXT: .LBB14_3:5110; RV64I-NEXT: or a3, t4, a35111; RV64I-NEXT: slli t4, a1, 325112; RV64I-NEXT: or t2, t2, a45113; RV64I-NEXT: slli a0, a0, 325114; RV64I-NEXT: mv a1, a65115; RV64I-NEXT: beqz a5, .LBB14_55116; RV64I-NEXT: # %bb.4:5117; RV64I-NEXT: mv a1, t65118; RV64I-NEXT: .LBB14_5:5119; RV64I-NEXT: or a4, t4, a35120; RV64I-NEXT: or a3, a0, t25121; RV64I-NEXT: bltu a5, a7, .LBB14_75122; RV64I-NEXT: # %bb.6:5123; RV64I-NEXT: li a0, 05124; RV64I-NEXT: srl t4, a3, t15125; RV64I-NEXT: j .LBB14_85126; RV64I-NEXT: .LBB14_7:5127; RV64I-NEXT: srl a0, t0, a55128; RV64I-NEXT: srl t1, a4, a55129; RV64I-NEXT: sll t2, a3, t55130; RV64I-NEXT: or t4, t1, t25131; RV64I-NEXT: .LBB14_8:5132; RV64I-NEXT: li t1, 1285133; RV64I-NEXT: mv t2, a45134; RV64I-NEXT: beqz a5, .LBB14_105135; RV64I-NEXT: # %bb.9:5136; RV64I-NEXT: mv t2, t45137; RV64I-NEXT: .LBB14_10:5138; RV64I-NEXT: sub t6, t1, a55139; RV64I-NEXT: bltu a5, a7, .LBB14_135140; RV64I-NEXT: # %bb.11:5141; RV64I-NEXT: li t4, 05142; RV64I-NEXT: bgeu t6, a7, .LBB14_145143; RV64I-NEXT: .LBB14_12:5144; RV64I-NEXT: sll t5, a6, t55145; RV64I-NEXT: neg s0, t65146; RV64I-NEXT: srl s0, a6, s05147; RV64I-NEXT: or s1, s0, t35148; RV64I-NEXT: j .LBB14_155149; RV64I-NEXT: .LBB14_13:5150; RV64I-NEXT: srl t4, a3, a55151; RV64I-NEXT: bltu t6, a7, .LBB14_125152; RV64I-NEXT: .LBB14_14:5153; RV64I-NEXT: li t5, 05154; RV64I-NEXT: sub t3, t6, a75155; RV64I-NEXT: sll s1, a6, t35156; RV64I-NEXT: .LBB14_15:5157; RV64I-NEXT: sub s0, a5, t15158; RV64I-NEXT: mv t3, t05159; RV64I-NEXT: beqz t6, .LBB14_175160; RV64I-NEXT: # %bb.16:5161; RV64I-NEXT: mv t3, s15162; RV64I-NEXT: .LBB14_17:5163; RV64I-NEXT: bltu s0, a7, .LBB14_195164; RV64I-NEXT: # %bb.18:5165; RV64I-NEXT: sub t6, s0, a75166; RV64I-NEXT: srl t6, t0, t65167; RV64I-NEXT: bnez s0, .LBB14_205168; RV64I-NEXT: j .LBB14_215169; RV64I-NEXT: .LBB14_19:5170; RV64I-NEXT: srl t6, a6, s05171; RV64I-NEXT: neg s1, s05172; RV64I-NEXT: sll s1, t0, s15173; RV64I-NEXT: or t6, t6, s15174; RV64I-NEXT: beqz s0, .LBB14_215175; RV64I-NEXT: .LBB14_20:5176; RV64I-NEXT: mv a6, t65177; RV64I-NEXT: .LBB14_21:5178; RV64I-NEXT: bltu s0, a7, .LBB14_235179; RV64I-NEXT: # %bb.22:5180; RV64I-NEXT: li a7, 05181; RV64I-NEXT: bltu a5, t1, .LBB14_245182; RV64I-NEXT: j .LBB14_255183; RV64I-NEXT: .LBB14_23:5184; RV64I-NEXT: srl a7, t0, s05185; RV64I-NEXT: bgeu a5, t1, .LBB14_255186; RV64I-NEXT: .LBB14_24:5187; RV64I-NEXT: or a6, t2, t55188; RV64I-NEXT: or a7, t4, t35189; RV64I-NEXT: .LBB14_25:5190; RV64I-NEXT: bnez a5, .LBB14_295191; RV64I-NEXT: # %bb.26:5192; RV64I-NEXT: bltu a5, t1, .LBB14_285193; RV64I-NEXT: .LBB14_27:5194; RV64I-NEXT: li a1, 05195; RV64I-NEXT: li a0, 05196; RV64I-NEXT: .LBB14_28:5197; RV64I-NEXT: srli a5, a4, 325198; RV64I-NEXT: srliw a6, a4, 165199; RV64I-NEXT: lui t2, 165200; RV64I-NEXT: srliw t1, a4, 245201; RV64I-NEXT: srli t0, a4, 485202; RV64I-NEXT: srli t5, a4, 565203; RV64I-NEXT: srli a7, a3, 325204; RV64I-NEXT: srliw t4, a3, 165205; RV64I-NEXT: srliw s0, a3, 245206; RV64I-NEXT: srli t6, a3, 485207; RV64I-NEXT: srli s3, a3, 565208; RV64I-NEXT: srli t3, a1, 325209; RV64I-NEXT: srliw s2, a1, 165210; RV64I-NEXT: srliw s6, a1, 245211; RV64I-NEXT: srli s4, a1, 485212; RV64I-NEXT: srli s7, a1, 565213; RV64I-NEXT: srli s1, a0, 325214; RV64I-NEXT: srliw s5, a0, 165215; RV64I-NEXT: srliw s8, a0, 245216; RV64I-NEXT: srli s9, a0, 485217; RV64I-NEXT: srli s10, a0, 565218; RV64I-NEXT: addi t2, t2, -15219; RV64I-NEXT: and s11, a4, t25220; RV64I-NEXT: srli s11, s11, 85221; RV64I-NEXT: sb a4, 0(a2)5222; RV64I-NEXT: sb s11, 1(a2)5223; RV64I-NEXT: sb a6, 2(a2)5224; RV64I-NEXT: sb t1, 3(a2)5225; RV64I-NEXT: and a4, a5, t25226; RV64I-NEXT: srli a4, a4, 85227; RV64I-NEXT: sb a5, 4(a2)5228; RV64I-NEXT: sb a4, 5(a2)5229; RV64I-NEXT: sb t0, 6(a2)5230; RV64I-NEXT: sb t5, 7(a2)5231; RV64I-NEXT: and a4, a3, t25232; RV64I-NEXT: srli a4, a4, 85233; RV64I-NEXT: sb a3, 8(a2)5234; RV64I-NEXT: sb a4, 9(a2)5235; RV64I-NEXT: sb t4, 10(a2)5236; RV64I-NEXT: sb s0, 11(a2)5237; RV64I-NEXT: and a3, a7, t25238; RV64I-NEXT: srli a3, a3, 85239; RV64I-NEXT: sb a7, 12(a2)5240; RV64I-NEXT: sb a3, 13(a2)5241; RV64I-NEXT: sb t6, 14(a2)5242; RV64I-NEXT: sb s3, 15(a2)5243; RV64I-NEXT: and a3, a1, t25244; RV64I-NEXT: srli a3, a3, 85245; RV64I-NEXT: sb a1, 16(a2)5246; RV64I-NEXT: sb a3, 17(a2)5247; RV64I-NEXT: sb s2, 18(a2)5248; RV64I-NEXT: sb s6, 19(a2)5249; RV64I-NEXT: and a1, t3, t25250; RV64I-NEXT: srli a1, a1, 85251; RV64I-NEXT: sb t3, 20(a2)5252; RV64I-NEXT: sb a1, 21(a2)5253; RV64I-NEXT: sb s4, 22(a2)5254; RV64I-NEXT: sb s7, 23(a2)5255; RV64I-NEXT: and a1, a0, t25256; RV64I-NEXT: and a3, s1, t25257; RV64I-NEXT: srli a1, a1, 85258; RV64I-NEXT: srli a3, a3, 85259; RV64I-NEXT: sb a0, 24(a2)5260; RV64I-NEXT: sb a1, 25(a2)5261; RV64I-NEXT: sb s5, 26(a2)5262; RV64I-NEXT: sb s8, 27(a2)5263; RV64I-NEXT: sb s1, 28(a2)5264; RV64I-NEXT: sb a3, 29(a2)5265; RV64I-NEXT: sb s9, 30(a2)5266; RV64I-NEXT: sb s10, 31(a2)5267; RV64I-NEXT: ld s0, 88(sp) # 8-byte Folded Reload5268; RV64I-NEXT: ld s1, 80(sp) # 8-byte Folded Reload5269; RV64I-NEXT: ld s2, 72(sp) # 8-byte Folded Reload5270; RV64I-NEXT: ld s3, 64(sp) # 8-byte Folded Reload5271; RV64I-NEXT: ld s4, 56(sp) # 8-byte Folded Reload5272; RV64I-NEXT: ld s5, 48(sp) # 8-byte Folded Reload5273; RV64I-NEXT: ld s6, 40(sp) # 8-byte Folded Reload5274; RV64I-NEXT: ld s7, 32(sp) # 8-byte Folded Reload5275; RV64I-NEXT: ld s8, 24(sp) # 8-byte Folded Reload5276; RV64I-NEXT: ld s9, 16(sp) # 8-byte Folded Reload5277; RV64I-NEXT: ld s10, 8(sp) # 8-byte Folded Reload5278; RV64I-NEXT: ld s11, 0(sp) # 8-byte Folded Reload5279; RV64I-NEXT: addi sp, sp, 965280; RV64I-NEXT: ret5281; RV64I-NEXT: .LBB14_29:5282; RV64I-NEXT: mv a4, a65283; RV64I-NEXT: mv a3, a75284; RV64I-NEXT: bgeu a5, t1, .LBB14_275285; RV64I-NEXT: j .LBB14_285286;5287; RV32I-LABEL: lshr_32bytes_dwordOff:5288; RV32I: # %bb.0:5289; RV32I-NEXT: addi sp, sp, -645290; RV32I-NEXT: sw ra, 60(sp) # 4-byte Folded Spill5291; RV32I-NEXT: sw s0, 56(sp) # 4-byte Folded Spill5292; RV32I-NEXT: sw s1, 52(sp) # 4-byte Folded Spill5293; RV32I-NEXT: sw s2, 48(sp) # 4-byte Folded Spill5294; RV32I-NEXT: sw s3, 44(sp) # 4-byte Folded Spill5295; RV32I-NEXT: sw s4, 40(sp) # 4-byte Folded Spill5296; RV32I-NEXT: sw s5, 36(sp) # 4-byte Folded Spill5297; RV32I-NEXT: sw s6, 32(sp) # 4-byte Folded Spill5298; RV32I-NEXT: sw s7, 28(sp) # 4-byte Folded Spill5299; RV32I-NEXT: sw s8, 24(sp) # 4-byte Folded Spill5300; RV32I-NEXT: sw s9, 20(sp) # 4-byte Folded Spill5301; RV32I-NEXT: sw s10, 16(sp) # 4-byte Folded Spill5302; RV32I-NEXT: sw s11, 12(sp) # 4-byte Folded Spill5303; RV32I-NEXT: li a4, 05304; RV32I-NEXT: lbu a3, 0(a0)5305; RV32I-NEXT: lbu a5, 1(a0)5306; RV32I-NEXT: lbu a6, 2(a0)5307; RV32I-NEXT: lbu a7, 3(a0)5308; RV32I-NEXT: lbu t0, 4(a0)5309; RV32I-NEXT: lbu t1, 5(a0)5310; RV32I-NEXT: lbu t2, 6(a0)5311; RV32I-NEXT: lbu t3, 7(a0)5312; RV32I-NEXT: lbu t4, 8(a0)5313; RV32I-NEXT: lbu t5, 9(a0)5314; RV32I-NEXT: lbu t6, 10(a0)5315; RV32I-NEXT: lbu s0, 11(a0)5316; RV32I-NEXT: slli a5, a5, 85317; RV32I-NEXT: slli a7, a7, 85318; RV32I-NEXT: slli t1, t1, 85319; RV32I-NEXT: or a3, a5, a35320; RV32I-NEXT: or a7, a7, a65321; RV32I-NEXT: or t1, t1, t05322; RV32I-NEXT: lbu a6, 13(a0)5323; RV32I-NEXT: lbu a5, 14(a0)5324; RV32I-NEXT: lbu s1, 15(a0)5325; RV32I-NEXT: slli t3, t3, 85326; RV32I-NEXT: slli t5, t5, 85327; RV32I-NEXT: slli s0, s0, 85328; RV32I-NEXT: or t3, t3, t25329; RV32I-NEXT: or t0, t5, t45330; RV32I-NEXT: or t5, s0, t65331; RV32I-NEXT: lbu t2, 1(a1)5332; RV32I-NEXT: lbu t4, 0(a1)5333; RV32I-NEXT: lbu t6, 2(a1)5334; RV32I-NEXT: lbu a1, 3(a1)5335; RV32I-NEXT: slli t2, t2, 85336; RV32I-NEXT: or s0, t2, t45337; RV32I-NEXT: slli t2, s1, 85338; RV32I-NEXT: slli a1, a1, 85339; RV32I-NEXT: or a1, a1, t65340; RV32I-NEXT: slli t4, a7, 165341; RV32I-NEXT: slli a7, t3, 165342; RV32I-NEXT: slli t3, t5, 165343; RV32I-NEXT: slli t5, a1, 165344; RV32I-NEXT: or a1, a7, t15345; RV32I-NEXT: or a7, t5, s05346; RV32I-NEXT: slli a7, a7, 65347; RV32I-NEXT: srli t1, a7, 55348; RV32I-NEXT: andi t5, a7, 315349; RV32I-NEXT: neg s3, t55350; RV32I-NEXT: beqz t5, .LBB14_25351; RV32I-NEXT: # %bb.1:5352; RV32I-NEXT: sll a4, a1, s35353; RV32I-NEXT: .LBB14_2:5354; RV32I-NEXT: or s7, t4, a35355; RV32I-NEXT: lbu t4, 12(a0)5356; RV32I-NEXT: lbu t6, 19(a0)5357; RV32I-NEXT: slli s1, a6, 85358; RV32I-NEXT: or a5, t2, a55359; RV32I-NEXT: or a3, t3, t05360; RV32I-NEXT: beqz t1, .LBB14_45361; RV32I-NEXT: # %bb.3:5362; RV32I-NEXT: li s0, 05363; RV32I-NEXT: j .LBB14_55364; RV32I-NEXT: .LBB14_4:5365; RV32I-NEXT: srl s0, s7, a75366; RV32I-NEXT: or s0, s0, a45367; RV32I-NEXT: .LBB14_5:5368; RV32I-NEXT: li a6, 05369; RV32I-NEXT: lbu t0, 17(a0)5370; RV32I-NEXT: lbu a4, 18(a0)5371; RV32I-NEXT: slli s4, t6, 85372; RV32I-NEXT: or s2, s1, t45373; RV32I-NEXT: slli a5, a5, 165374; RV32I-NEXT: li s5, 15375; RV32I-NEXT: sll t6, a3, s35376; RV32I-NEXT: beqz t5, .LBB14_75377; RV32I-NEXT: # %bb.6:5378; RV32I-NEXT: mv a6, t65379; RV32I-NEXT: .LBB14_7:5380; RV32I-NEXT: lbu t2, 16(a0)5381; RV32I-NEXT: lbu t3, 23(a0)5382; RV32I-NEXT: slli s1, t0, 85383; RV32I-NEXT: or t4, s4, a45384; RV32I-NEXT: srl a4, a1, a75385; RV32I-NEXT: or a5, a5, s25386; RV32I-NEXT: bne t1, s5, .LBB14_95387; RV32I-NEXT: # %bb.8:5388; RV32I-NEXT: or s0, a4, a65389; RV32I-NEXT: .LBB14_9:5390; RV32I-NEXT: li t0, 05391; RV32I-NEXT: lbu s5, 21(a0)5392; RV32I-NEXT: lbu a6, 22(a0)5393; RV32I-NEXT: slli s4, t3, 85394; RV32I-NEXT: or t2, s1, t25395; RV32I-NEXT: slli s6, t4, 165396; RV32I-NEXT: li s8, 25397; RV32I-NEXT: sll t3, a5, s35398; RV32I-NEXT: beqz t5, .LBB14_115399; RV32I-NEXT: # %bb.10:5400; RV32I-NEXT: mv t0, t35401; RV32I-NEXT: .LBB14_11:5402; RV32I-NEXT: lbu s1, 20(a0)5403; RV32I-NEXT: lbu s2, 27(a0)5404; RV32I-NEXT: slli s5, s5, 85405; RV32I-NEXT: or s4, s4, a65406; RV32I-NEXT: srl t4, a3, a75407; RV32I-NEXT: or a6, s6, t25408; RV32I-NEXT: bne t1, s8, .LBB14_135409; RV32I-NEXT: # %bb.12:5410; RV32I-NEXT: or s0, t4, t05411; RV32I-NEXT: .LBB14_13:5412; RV32I-NEXT: sw s7, 4(sp) # 4-byte Folded Spill5413; RV32I-NEXT: li t2, 05414; RV32I-NEXT: lbu s6, 25(a0)5415; RV32I-NEXT: lbu t0, 26(a0)5416; RV32I-NEXT: slli s8, s2, 85417; RV32I-NEXT: or s7, s5, s15418; RV32I-NEXT: slli s9, s4, 165419; RV32I-NEXT: sll s11, a6, s35420; RV32I-NEXT: beqz t5, .LBB14_155421; RV32I-NEXT: # %bb.14:5422; RV32I-NEXT: mv t2, s115423; RV32I-NEXT: .LBB14_15:5424; RV32I-NEXT: lbu s1, 24(a0)5425; RV32I-NEXT: lbu s2, 31(a0)5426; RV32I-NEXT: slli s5, s6, 85427; RV32I-NEXT: or s4, s8, t05428; RV32I-NEXT: srl ra, a5, a75429; RV32I-NEXT: or t0, s9, s75430; RV32I-NEXT: li s6, 35431; RV32I-NEXT: bne t1, s6, .LBB14_175432; RV32I-NEXT: # %bb.16:5433; RV32I-NEXT: or s0, ra, t25434; RV32I-NEXT: .LBB14_17:5435; RV32I-NEXT: li t2, 05436; RV32I-NEXT: lbu s7, 29(a0)5437; RV32I-NEXT: lbu s6, 30(a0)5438; RV32I-NEXT: slli s8, s2, 85439; RV32I-NEXT: or s2, s5, s15440; RV32I-NEXT: slli s5, s4, 165441; RV32I-NEXT: li s9, 45442; RV32I-NEXT: sll s1, t0, s35443; RV32I-NEXT: sw s1, 8(sp) # 4-byte Folded Spill5444; RV32I-NEXT: beqz t5, .LBB14_195445; RV32I-NEXT: # %bb.18:5446; RV32I-NEXT: lw t2, 8(sp) # 4-byte Folded Reload5447; RV32I-NEXT: .LBB14_19:5448; RV32I-NEXT: lbu s1, 28(a0)5449; RV32I-NEXT: slli s7, s7, 85450; RV32I-NEXT: or s4, s8, s65451; RV32I-NEXT: srl s10, a6, a75452; RV32I-NEXT: or a0, s5, s25453; RV32I-NEXT: bne t1, s9, .LBB14_215454; RV32I-NEXT: # %bb.20:5455; RV32I-NEXT: or s0, s10, t25456; RV32I-NEXT: .LBB14_21:5457; RV32I-NEXT: li s2, 05458; RV32I-NEXT: or t2, s7, s15459; RV32I-NEXT: slli s4, s4, 165460; RV32I-NEXT: li s9, 55461; RV32I-NEXT: sll s7, a0, s35462; RV32I-NEXT: beqz t5, .LBB14_235463; RV32I-NEXT: # %bb.22:5464; RV32I-NEXT: mv s2, s75465; RV32I-NEXT: .LBB14_23:5466; RV32I-NEXT: srl s8, t0, a75467; RV32I-NEXT: or t2, s4, t25468; RV32I-NEXT: bne t1, s9, .LBB14_255469; RV32I-NEXT: # %bb.24:5470; RV32I-NEXT: or s0, s8, s25471; RV32I-NEXT: .LBB14_25:5472; RV32I-NEXT: li s4, 05473; RV32I-NEXT: li s2, 65474; RV32I-NEXT: sll s5, t2, s35475; RV32I-NEXT: beqz t5, .LBB14_275476; RV32I-NEXT: # %bb.26:5477; RV32I-NEXT: mv s4, s55478; RV32I-NEXT: .LBB14_27:5479; RV32I-NEXT: srl s6, a0, a75480; RV32I-NEXT: bne t1, s2, .LBB14_295481; RV32I-NEXT: # %bb.28:5482; RV32I-NEXT: or s0, s6, s45483; RV32I-NEXT: .LBB14_29:5484; RV32I-NEXT: li s3, 75485; RV32I-NEXT: srl s1, t2, a75486; RV32I-NEXT: mv s4, s15487; RV32I-NEXT: bne t1, s3, .LBB14_345488; RV32I-NEXT: # %bb.30:5489; RV32I-NEXT: bnez a7, .LBB14_355490; RV32I-NEXT: .LBB14_31:5491; RV32I-NEXT: li s0, 05492; RV32I-NEXT: bnez t5, .LBB14_365493; RV32I-NEXT: .LBB14_32:5494; RV32I-NEXT: li s4, 25495; RV32I-NEXT: beqz t1, .LBB14_375496; RV32I-NEXT: .LBB14_33:5497; RV32I-NEXT: li a4, 05498; RV32I-NEXT: j .LBB14_385499; RV32I-NEXT: .LBB14_34:5500; RV32I-NEXT: mv s4, s05501; RV32I-NEXT: beqz a7, .LBB14_315502; RV32I-NEXT: .LBB14_35:5503; RV32I-NEXT: sw s4, 4(sp) # 4-byte Folded Spill5504; RV32I-NEXT: li s0, 05505; RV32I-NEXT: beqz t5, .LBB14_325506; RV32I-NEXT: .LBB14_36:5507; RV32I-NEXT: mv s0, t65508; RV32I-NEXT: li s4, 25509; RV32I-NEXT: bnez t1, .LBB14_335510; RV32I-NEXT: .LBB14_37:5511; RV32I-NEXT: or a4, a4, s05512; RV32I-NEXT: .LBB14_38:5513; RV32I-NEXT: li s0, 15514; RV32I-NEXT: li t6, 05515; RV32I-NEXT: bnez t5, .LBB14_575516; RV32I-NEXT: # %bb.39:5517; RV32I-NEXT: beq t1, s0, .LBB14_585518; RV32I-NEXT: .LBB14_40:5519; RV32I-NEXT: li t6, 05520; RV32I-NEXT: bnez t5, .LBB14_595521; RV32I-NEXT: .LBB14_41:5522; RV32I-NEXT: beq t1, s4, .LBB14_605523; RV32I-NEXT: .LBB14_42:5524; RV32I-NEXT: li t6, 05525; RV32I-NEXT: bnez t5, .LBB14_615526; RV32I-NEXT: .LBB14_43:5527; RV32I-NEXT: li s4, 35528; RV32I-NEXT: bne t1, s4, .LBB14_455529; RV32I-NEXT: .LBB14_44:5530; RV32I-NEXT: or a4, s10, t65531; RV32I-NEXT: .LBB14_45:5532; RV32I-NEXT: li t6, 05533; RV32I-NEXT: li s4, 45534; RV32I-NEXT: bnez t5, .LBB14_625535; RV32I-NEXT: # %bb.46:5536; RV32I-NEXT: beq t1, s4, .LBB14_635537; RV32I-NEXT: .LBB14_47:5538; RV32I-NEXT: li t6, 05539; RV32I-NEXT: bnez t5, .LBB14_645540; RV32I-NEXT: .LBB14_48:5541; RV32I-NEXT: beq t1, s9, .LBB14_655542; RV32I-NEXT: .LBB14_49:5543; RV32I-NEXT: mv t6, s15544; RV32I-NEXT: bne t1, s2, .LBB14_665545; RV32I-NEXT: .LBB14_50:5546; RV32I-NEXT: li a4, 05547; RV32I-NEXT: bne t1, s3, .LBB14_675548; RV32I-NEXT: .LBB14_51:5549; RV32I-NEXT: beqz a7, .LBB14_535550; RV32I-NEXT: .LBB14_52:5551; RV32I-NEXT: mv a1, a45552; RV32I-NEXT: .LBB14_53:5553; RV32I-NEXT: li a4, 05554; RV32I-NEXT: li t6, 25555; RV32I-NEXT: beqz t5, .LBB14_555556; RV32I-NEXT: # %bb.54:5557; RV32I-NEXT: mv a4, t35558; RV32I-NEXT: .LBB14_55:5559; RV32I-NEXT: beqz t1, .LBB14_685560; RV32I-NEXT: # %bb.56:5561; RV32I-NEXT: li a4, 05562; RV32I-NEXT: j .LBB14_695563; RV32I-NEXT: .LBB14_57:5564; RV32I-NEXT: mv t6, t35565; RV32I-NEXT: bne t1, s0, .LBB14_405566; RV32I-NEXT: .LBB14_58:5567; RV32I-NEXT: or a4, t4, t65568; RV32I-NEXT: li t6, 05569; RV32I-NEXT: beqz t5, .LBB14_415570; RV32I-NEXT: .LBB14_59:5571; RV32I-NEXT: mv t6, s115572; RV32I-NEXT: bne t1, s4, .LBB14_425573; RV32I-NEXT: .LBB14_60:5574; RV32I-NEXT: or a4, ra, t65575; RV32I-NEXT: li t6, 05576; RV32I-NEXT: beqz t5, .LBB14_435577; RV32I-NEXT: .LBB14_61:5578; RV32I-NEXT: lw t6, 8(sp) # 4-byte Folded Reload5579; RV32I-NEXT: li s4, 35580; RV32I-NEXT: beq t1, s4, .LBB14_445581; RV32I-NEXT: j .LBB14_455582; RV32I-NEXT: .LBB14_62:5583; RV32I-NEXT: mv t6, s75584; RV32I-NEXT: bne t1, s4, .LBB14_475585; RV32I-NEXT: .LBB14_63:5586; RV32I-NEXT: or a4, s8, t65587; RV32I-NEXT: li t6, 05588; RV32I-NEXT: beqz t5, .LBB14_485589; RV32I-NEXT: .LBB14_64:5590; RV32I-NEXT: mv t6, s55591; RV32I-NEXT: bne t1, s9, .LBB14_495592; RV32I-NEXT: .LBB14_65:5593; RV32I-NEXT: or a4, s6, t65594; RV32I-NEXT: mv t6, s15595; RV32I-NEXT: beq t1, s2, .LBB14_505596; RV32I-NEXT: .LBB14_66:5597; RV32I-NEXT: mv t6, a45598; RV32I-NEXT: li a4, 05599; RV32I-NEXT: beq t1, s3, .LBB14_515600; RV32I-NEXT: .LBB14_67:5601; RV32I-NEXT: mv a4, t65602; RV32I-NEXT: bnez a7, .LBB14_525603; RV32I-NEXT: j .LBB14_535604; RV32I-NEXT: .LBB14_68:5605; RV32I-NEXT: or a4, t4, a45606; RV32I-NEXT: .LBB14_69:5607; RV32I-NEXT: li t4, 35608; RV32I-NEXT: li t3, 05609; RV32I-NEXT: bnez t5, .LBB14_845610; RV32I-NEXT: # %bb.70:5611; RV32I-NEXT: beq t1, s0, .LBB14_855612; RV32I-NEXT: .LBB14_71:5613; RV32I-NEXT: li t3, 05614; RV32I-NEXT: bnez t5, .LBB14_865615; RV32I-NEXT: .LBB14_72:5616; RV32I-NEXT: beq t1, t6, .LBB14_875617; RV32I-NEXT: .LBB14_73:5618; RV32I-NEXT: li t3, 05619; RV32I-NEXT: bnez t5, .LBB14_885620; RV32I-NEXT: .LBB14_74:5621; RV32I-NEXT: beq t1, t4, .LBB14_895622; RV32I-NEXT: .LBB14_75:5623; RV32I-NEXT: li t3, 05624; RV32I-NEXT: bnez t5, .LBB14_905625; RV32I-NEXT: .LBB14_76:5626; RV32I-NEXT: beq t1, s4, .LBB14_915627; RV32I-NEXT: .LBB14_77:5628; RV32I-NEXT: mv t3, s15629; RV32I-NEXT: bne t1, s9, .LBB14_925630; RV32I-NEXT: .LBB14_78:5631; RV32I-NEXT: li a4, 05632; RV32I-NEXT: bne t1, s2, .LBB14_935633; RV32I-NEXT: .LBB14_79:5634; RV32I-NEXT: li t3, 05635; RV32I-NEXT: bne t1, s3, .LBB14_945636; RV32I-NEXT: .LBB14_80:5637; RV32I-NEXT: bnez a7, .LBB14_955638; RV32I-NEXT: .LBB14_81:5639; RV32I-NEXT: li a4, 05640; RV32I-NEXT: bnez t5, .LBB14_965641; RV32I-NEXT: .LBB14_82:5642; RV32I-NEXT: beqz t1, .LBB14_975643; RV32I-NEXT: .LBB14_83:5644; RV32I-NEXT: li a4, 05645; RV32I-NEXT: j .LBB14_985646; RV32I-NEXT: .LBB14_84:5647; RV32I-NEXT: mv t3, s115648; RV32I-NEXT: bne t1, s0, .LBB14_715649; RV32I-NEXT: .LBB14_85:5650; RV32I-NEXT: or a4, ra, t35651; RV32I-NEXT: li t3, 05652; RV32I-NEXT: beqz t5, .LBB14_725653; RV32I-NEXT: .LBB14_86:5654; RV32I-NEXT: lw t3, 8(sp) # 4-byte Folded Reload5655; RV32I-NEXT: bne t1, t6, .LBB14_735656; RV32I-NEXT: .LBB14_87:5657; RV32I-NEXT: or a4, s10, t35658; RV32I-NEXT: li t3, 05659; RV32I-NEXT: beqz t5, .LBB14_745660; RV32I-NEXT: .LBB14_88:5661; RV32I-NEXT: mv t3, s75662; RV32I-NEXT: bne t1, t4, .LBB14_755663; RV32I-NEXT: .LBB14_89:5664; RV32I-NEXT: or a4, s8, t35665; RV32I-NEXT: li t3, 05666; RV32I-NEXT: beqz t5, .LBB14_765667; RV32I-NEXT: .LBB14_90:5668; RV32I-NEXT: mv t3, s55669; RV32I-NEXT: bne t1, s4, .LBB14_775670; RV32I-NEXT: .LBB14_91:5671; RV32I-NEXT: or a4, s6, t35672; RV32I-NEXT: mv t3, s15673; RV32I-NEXT: beq t1, s9, .LBB14_785674; RV32I-NEXT: .LBB14_92:5675; RV32I-NEXT: mv t3, a45676; RV32I-NEXT: li a4, 05677; RV32I-NEXT: beq t1, s2, .LBB14_795678; RV32I-NEXT: .LBB14_93:5679; RV32I-NEXT: mv a4, t35680; RV32I-NEXT: li t3, 05681; RV32I-NEXT: beq t1, s3, .LBB14_805682; RV32I-NEXT: .LBB14_94:5683; RV32I-NEXT: mv t3, a45684; RV32I-NEXT: beqz a7, .LBB14_815685; RV32I-NEXT: .LBB14_95:5686; RV32I-NEXT: mv a3, t35687; RV32I-NEXT: li a4, 05688; RV32I-NEXT: beqz t5, .LBB14_825689; RV32I-NEXT: .LBB14_96:5690; RV32I-NEXT: mv a4, s115691; RV32I-NEXT: bnez t1, .LBB14_835692; RV32I-NEXT: .LBB14_97:5693; RV32I-NEXT: or a4, ra, a45694; RV32I-NEXT: .LBB14_98:5695; RV32I-NEXT: lw ra, 4(sp) # 4-byte Folded Reload5696; RV32I-NEXT: li t3, 05697; RV32I-NEXT: bnez t5, .LBB14_1125698; RV32I-NEXT: # %bb.99:5699; RV32I-NEXT: beq t1, s0, .LBB14_1135700; RV32I-NEXT: .LBB14_100:5701; RV32I-NEXT: li t3, 05702; RV32I-NEXT: bnez t5, .LBB14_1145703; RV32I-NEXT: .LBB14_101:5704; RV32I-NEXT: beq t1, t6, .LBB14_1155705; RV32I-NEXT: .LBB14_102:5706; RV32I-NEXT: li t3, 05707; RV32I-NEXT: bnez t5, .LBB14_1165708; RV32I-NEXT: .LBB14_103:5709; RV32I-NEXT: beq t1, t4, .LBB14_1175710; RV32I-NEXT: .LBB14_104:5711; RV32I-NEXT: mv t3, s15712; RV32I-NEXT: bne t1, s4, .LBB14_1185713; RV32I-NEXT: .LBB14_105:5714; RV32I-NEXT: li a4, 05715; RV32I-NEXT: bne t1, s9, .LBB14_1195716; RV32I-NEXT: .LBB14_106:5717; RV32I-NEXT: li t3, 05718; RV32I-NEXT: bne t1, s2, .LBB14_1205719; RV32I-NEXT: .LBB14_107:5720; RV32I-NEXT: li a4, 05721; RV32I-NEXT: bne t1, s3, .LBB14_1215722; RV32I-NEXT: .LBB14_108:5723; RV32I-NEXT: bnez a7, .LBB14_1225724; RV32I-NEXT: .LBB14_109:5725; RV32I-NEXT: li a4, 05726; RV32I-NEXT: bnez t5, .LBB14_1235727; RV32I-NEXT: .LBB14_110:5728; RV32I-NEXT: beqz t1, .LBB14_1245729; RV32I-NEXT: .LBB14_111:5730; RV32I-NEXT: li a4, 05731; RV32I-NEXT: li t3, 05732; RV32I-NEXT: bnez t5, .LBB14_1255733; RV32I-NEXT: j .LBB14_1265734; RV32I-NEXT: .LBB14_112:5735; RV32I-NEXT: lw t3, 8(sp) # 4-byte Folded Reload5736; RV32I-NEXT: bne t1, s0, .LBB14_1005737; RV32I-NEXT: .LBB14_113:5738; RV32I-NEXT: or a4, s10, t35739; RV32I-NEXT: li t3, 05740; RV32I-NEXT: beqz t5, .LBB14_1015741; RV32I-NEXT: .LBB14_114:5742; RV32I-NEXT: mv t3, s75743; RV32I-NEXT: bne t1, t6, .LBB14_1025744; RV32I-NEXT: .LBB14_115:5745; RV32I-NEXT: or a4, s8, t35746; RV32I-NEXT: li t3, 05747; RV32I-NEXT: beqz t5, .LBB14_1035748; RV32I-NEXT: .LBB14_116:5749; RV32I-NEXT: mv t3, s55750; RV32I-NEXT: bne t1, t4, .LBB14_1045751; RV32I-NEXT: .LBB14_117:5752; RV32I-NEXT: or a4, s6, t35753; RV32I-NEXT: mv t3, s15754; RV32I-NEXT: beq t1, s4, .LBB14_1055755; RV32I-NEXT: .LBB14_118:5756; RV32I-NEXT: mv t3, a45757; RV32I-NEXT: li a4, 05758; RV32I-NEXT: beq t1, s9, .LBB14_1065759; RV32I-NEXT: .LBB14_119:5760; RV32I-NEXT: mv a4, t35761; RV32I-NEXT: li t3, 05762; RV32I-NEXT: beq t1, s2, .LBB14_1075763; RV32I-NEXT: .LBB14_120:5764; RV32I-NEXT: mv t3, a45765; RV32I-NEXT: li a4, 05766; RV32I-NEXT: beq t1, s3, .LBB14_1085767; RV32I-NEXT: .LBB14_121:5768; RV32I-NEXT: mv a4, t35769; RV32I-NEXT: beqz a7, .LBB14_1095770; RV32I-NEXT: .LBB14_122:5771; RV32I-NEXT: mv a5, a45772; RV32I-NEXT: li a4, 05773; RV32I-NEXT: beqz t5, .LBB14_1105774; RV32I-NEXT: .LBB14_123:5775; RV32I-NEXT: lw a4, 8(sp) # 4-byte Folded Reload5776; RV32I-NEXT: bnez t1, .LBB14_1115777; RV32I-NEXT: .LBB14_124:5778; RV32I-NEXT: or a4, s10, a45779; RV32I-NEXT: li t3, 05780; RV32I-NEXT: beqz t5, .LBB14_1265781; RV32I-NEXT: .LBB14_125:5782; RV32I-NEXT: mv t3, s75783; RV32I-NEXT: .LBB14_126:5784; RV32I-NEXT: beq t1, s0, .LBB14_1385785; RV32I-NEXT: # %bb.127:5786; RV32I-NEXT: li t3, 05787; RV32I-NEXT: bnez t5, .LBB14_1395788; RV32I-NEXT: .LBB14_128:5789; RV32I-NEXT: beq t1, t6, .LBB14_1405790; RV32I-NEXT: .LBB14_129:5791; RV32I-NEXT: mv t3, s15792; RV32I-NEXT: bne t1, t4, .LBB14_1415793; RV32I-NEXT: .LBB14_130:5794; RV32I-NEXT: li a4, 05795; RV32I-NEXT: bne t1, s4, .LBB14_1425796; RV32I-NEXT: .LBB14_131:5797; RV32I-NEXT: li t3, 05798; RV32I-NEXT: bne t1, s9, .LBB14_1435799; RV32I-NEXT: .LBB14_132:5800; RV32I-NEXT: li a4, 05801; RV32I-NEXT: bne t1, s2, .LBB14_1445802; RV32I-NEXT: .LBB14_133:5803; RV32I-NEXT: li t3, 05804; RV32I-NEXT: bne t1, s3, .LBB14_1455805; RV32I-NEXT: .LBB14_134:5806; RV32I-NEXT: bnez a7, .LBB14_1465807; RV32I-NEXT: .LBB14_135:5808; RV32I-NEXT: li a4, 05809; RV32I-NEXT: bnez t5, .LBB14_1475810; RV32I-NEXT: .LBB14_136:5811; RV32I-NEXT: beqz t1, .LBB14_1485812; RV32I-NEXT: .LBB14_137:5813; RV32I-NEXT: li a4, 05814; RV32I-NEXT: li t3, 05815; RV32I-NEXT: bnez t5, .LBB14_1495816; RV32I-NEXT: j .LBB14_1505817; RV32I-NEXT: .LBB14_138:5818; RV32I-NEXT: or a4, s8, t35819; RV32I-NEXT: li t3, 05820; RV32I-NEXT: beqz t5, .LBB14_1285821; RV32I-NEXT: .LBB14_139:5822; RV32I-NEXT: mv t3, s55823; RV32I-NEXT: bne t1, t6, .LBB14_1295824; RV32I-NEXT: .LBB14_140:5825; RV32I-NEXT: or a4, s6, t35826; RV32I-NEXT: mv t3, s15827; RV32I-NEXT: beq t1, t4, .LBB14_1305828; RV32I-NEXT: .LBB14_141:5829; RV32I-NEXT: mv t3, a45830; RV32I-NEXT: li a4, 05831; RV32I-NEXT: beq t1, s4, .LBB14_1315832; RV32I-NEXT: .LBB14_142:5833; RV32I-NEXT: mv a4, t35834; RV32I-NEXT: li t3, 05835; RV32I-NEXT: beq t1, s9, .LBB14_1325836; RV32I-NEXT: .LBB14_143:5837; RV32I-NEXT: mv t3, a45838; RV32I-NEXT: li a4, 05839; RV32I-NEXT: beq t1, s2, .LBB14_1335840; RV32I-NEXT: .LBB14_144:5841; RV32I-NEXT: mv a4, t35842; RV32I-NEXT: li t3, 05843; RV32I-NEXT: beq t1, s3, .LBB14_1345844; RV32I-NEXT: .LBB14_145:5845; RV32I-NEXT: mv t3, a45846; RV32I-NEXT: beqz a7, .LBB14_1355847; RV32I-NEXT: .LBB14_146:5848; RV32I-NEXT: mv a6, t35849; RV32I-NEXT: li a4, 05850; RV32I-NEXT: beqz t5, .LBB14_1365851; RV32I-NEXT: .LBB14_147:5852; RV32I-NEXT: mv a4, s75853; RV32I-NEXT: bnez t1, .LBB14_1375854; RV32I-NEXT: .LBB14_148:5855; RV32I-NEXT: or a4, s8, a45856; RV32I-NEXT: li t3, 05857; RV32I-NEXT: beqz t5, .LBB14_1505858; RV32I-NEXT: .LBB14_149:5859; RV32I-NEXT: mv t3, s55860; RV32I-NEXT: .LBB14_150:5861; RV32I-NEXT: beq t1, s0, .LBB14_1615862; RV32I-NEXT: # %bb.151:5863; RV32I-NEXT: mv t3, s15864; RV32I-NEXT: bne t1, t6, .LBB14_1625865; RV32I-NEXT: .LBB14_152:5866; RV32I-NEXT: li a4, 05867; RV32I-NEXT: bne t1, t4, .LBB14_1635868; RV32I-NEXT: .LBB14_153:5869; RV32I-NEXT: li t3, 05870; RV32I-NEXT: bne t1, s4, .LBB14_1645871; RV32I-NEXT: .LBB14_154:5872; RV32I-NEXT: li a4, 05873; RV32I-NEXT: bne t1, s9, .LBB14_1655874; RV32I-NEXT: .LBB14_155:5875; RV32I-NEXT: li t3, 05876; RV32I-NEXT: bne t1, s2, .LBB14_1665877; RV32I-NEXT: .LBB14_156:5878; RV32I-NEXT: li a4, 05879; RV32I-NEXT: bne t1, s3, .LBB14_1675880; RV32I-NEXT: .LBB14_157:5881; RV32I-NEXT: bnez a7, .LBB14_1685882; RV32I-NEXT: .LBB14_158:5883; RV32I-NEXT: li a4, 05884; RV32I-NEXT: bnez t5, .LBB14_1695885; RV32I-NEXT: .LBB14_159:5886; RV32I-NEXT: beqz t1, .LBB14_1705887; RV32I-NEXT: .LBB14_160:5888; RV32I-NEXT: li a4, 05889; RV32I-NEXT: mv t3, s15890; RV32I-NEXT: bne t1, s0, .LBB14_1715891; RV32I-NEXT: j .LBB14_1725892; RV32I-NEXT: .LBB14_161:5893; RV32I-NEXT: or a4, s6, t35894; RV32I-NEXT: mv t3, s15895; RV32I-NEXT: beq t1, t6, .LBB14_1525896; RV32I-NEXT: .LBB14_162:5897; RV32I-NEXT: mv t3, a45898; RV32I-NEXT: li a4, 05899; RV32I-NEXT: beq t1, t4, .LBB14_1535900; RV32I-NEXT: .LBB14_163:5901; RV32I-NEXT: mv a4, t35902; RV32I-NEXT: li t3, 05903; RV32I-NEXT: beq t1, s4, .LBB14_1545904; RV32I-NEXT: .LBB14_164:5905; RV32I-NEXT: mv t3, a45906; RV32I-NEXT: li a4, 05907; RV32I-NEXT: beq t1, s9, .LBB14_1555908; RV32I-NEXT: .LBB14_165:5909; RV32I-NEXT: mv a4, t35910; RV32I-NEXT: li t3, 05911; RV32I-NEXT: beq t1, s2, .LBB14_1565912; RV32I-NEXT: .LBB14_166:5913; RV32I-NEXT: mv t3, a45914; RV32I-NEXT: li a4, 05915; RV32I-NEXT: beq t1, s3, .LBB14_1575916; RV32I-NEXT: .LBB14_167:5917; RV32I-NEXT: mv a4, t35918; RV32I-NEXT: beqz a7, .LBB14_1585919; RV32I-NEXT: .LBB14_168:5920; RV32I-NEXT: mv t0, a45921; RV32I-NEXT: li a4, 05922; RV32I-NEXT: beqz t5, .LBB14_1595923; RV32I-NEXT: .LBB14_169:5924; RV32I-NEXT: mv a4, s55925; RV32I-NEXT: bnez t1, .LBB14_1605926; RV32I-NEXT: .LBB14_170:5927; RV32I-NEXT: or a4, s6, a45928; RV32I-NEXT: mv t3, s15929; RV32I-NEXT: beq t1, s0, .LBB14_1725930; RV32I-NEXT: .LBB14_171:5931; RV32I-NEXT: mv t3, a45932; RV32I-NEXT: .LBB14_172:5933; RV32I-NEXT: li a4, 05934; RV32I-NEXT: bne t1, t6, .LBB14_1905935; RV32I-NEXT: # %bb.173:5936; RV32I-NEXT: li t3, 05937; RV32I-NEXT: bne t1, t4, .LBB14_1915938; RV32I-NEXT: .LBB14_174:5939; RV32I-NEXT: li a4, 05940; RV32I-NEXT: bne t1, s4, .LBB14_1925941; RV32I-NEXT: .LBB14_175:5942; RV32I-NEXT: li t3, 05943; RV32I-NEXT: bne t1, s9, .LBB14_1935944; RV32I-NEXT: .LBB14_176:5945; RV32I-NEXT: li a4, 05946; RV32I-NEXT: bne t1, s2, .LBB14_1945947; RV32I-NEXT: .LBB14_177:5948; RV32I-NEXT: li t3, 05949; RV32I-NEXT: bne t1, s3, .LBB14_1955950; RV32I-NEXT: .LBB14_178:5951; RV32I-NEXT: bnez a7, .LBB14_1965952; RV32I-NEXT: .LBB14_179:5953; RV32I-NEXT: bnez t1, .LBB14_1975954; RV32I-NEXT: .LBB14_180:5955; RV32I-NEXT: li a4, 05956; RV32I-NEXT: bne t1, s0, .LBB14_1985957; RV32I-NEXT: .LBB14_181:5958; RV32I-NEXT: li t3, 05959; RV32I-NEXT: bne t1, t6, .LBB14_1995960; RV32I-NEXT: .LBB14_182:5961; RV32I-NEXT: li a4, 05962; RV32I-NEXT: bne t1, t4, .LBB14_2005963; RV32I-NEXT: .LBB14_183:5964; RV32I-NEXT: li t3, 05965; RV32I-NEXT: bne t1, s4, .LBB14_2015966; RV32I-NEXT: .LBB14_184:5967; RV32I-NEXT: li a4, 05968; RV32I-NEXT: bne t1, s9, .LBB14_2025969; RV32I-NEXT: .LBB14_185:5970; RV32I-NEXT: li t3, 05971; RV32I-NEXT: bne t1, s2, .LBB14_2035972; RV32I-NEXT: .LBB14_186:5973; RV32I-NEXT: li a4, 05974; RV32I-NEXT: bne t1, s3, .LBB14_2045975; RV32I-NEXT: .LBB14_187:5976; RV32I-NEXT: beqz a7, .LBB14_1895977; RV32I-NEXT: .LBB14_188:5978; RV32I-NEXT: mv t2, a45979; RV32I-NEXT: .LBB14_189:5980; RV32I-NEXT: srli a4, ra, 165981; RV32I-NEXT: lui t4, 165982; RV32I-NEXT: srli t3, ra, 245983; RV32I-NEXT: srli a7, a1, 165984; RV32I-NEXT: srli t6, a1, 245985; RV32I-NEXT: srli t1, a3, 165986; RV32I-NEXT: srli s2, a3, 245987; RV32I-NEXT: srli t5, a5, 165988; RV32I-NEXT: srli s3, a5, 245989; RV32I-NEXT: srli s1, a6, 165990; RV32I-NEXT: srli s6, a6, 245991; RV32I-NEXT: srli s0, t0, 165992; RV32I-NEXT: srli s5, t0, 245993; RV32I-NEXT: srli s4, a0, 165994; RV32I-NEXT: srli s7, a0, 245995; RV32I-NEXT: srli s8, t2, 165996; RV32I-NEXT: srli s9, t2, 245997; RV32I-NEXT: addi t4, t4, -15998; RV32I-NEXT: and s10, ra, t45999; RV32I-NEXT: and s11, a1, t46000; RV32I-NEXT: srli s10, s10, 86001; RV32I-NEXT: sb ra, 0(a2)6002; RV32I-NEXT: sb s10, 1(a2)6003; RV32I-NEXT: sb a4, 2(a2)6004; RV32I-NEXT: sb t3, 3(a2)6005; RV32I-NEXT: and a4, a3, t46006; RV32I-NEXT: srli t3, s11, 86007; RV32I-NEXT: sb a1, 4(a2)6008; RV32I-NEXT: sb t3, 5(a2)6009; RV32I-NEXT: sb a7, 6(a2)6010; RV32I-NEXT: sb t6, 7(a2)6011; RV32I-NEXT: and a1, a5, t46012; RV32I-NEXT: srli a4, a4, 86013; RV32I-NEXT: sb a3, 8(a2)6014; RV32I-NEXT: sb a4, 9(a2)6015; RV32I-NEXT: sb t1, 10(a2)6016; RV32I-NEXT: sb s2, 11(a2)6017; RV32I-NEXT: and a3, a6, t46018; RV32I-NEXT: srli a1, a1, 86019; RV32I-NEXT: sb a5, 12(a2)6020; RV32I-NEXT: sb a1, 13(a2)6021; RV32I-NEXT: sb t5, 14(a2)6022; RV32I-NEXT: sb s3, 15(a2)6023; RV32I-NEXT: and a1, t0, t46024; RV32I-NEXT: srli a3, a3, 86025; RV32I-NEXT: sb a6, 16(a2)6026; RV32I-NEXT: sb a3, 17(a2)6027; RV32I-NEXT: sb s1, 18(a2)6028; RV32I-NEXT: sb s6, 19(a2)6029; RV32I-NEXT: and a3, a0, t46030; RV32I-NEXT: and a4, t2, t46031; RV32I-NEXT: srli a1, a1, 86032; RV32I-NEXT: srli a3, a3, 86033; RV32I-NEXT: srli a4, a4, 86034; RV32I-NEXT: sb t0, 20(a2)6035; RV32I-NEXT: sb a1, 21(a2)6036; RV32I-NEXT: sb s0, 22(a2)6037; RV32I-NEXT: sb s5, 23(a2)6038; RV32I-NEXT: sb a0, 24(a2)6039; RV32I-NEXT: sb a3, 25(a2)6040; RV32I-NEXT: sb s4, 26(a2)6041; RV32I-NEXT: sb s7, 27(a2)6042; RV32I-NEXT: sb t2, 28(a2)6043; RV32I-NEXT: sb a4, 29(a2)6044; RV32I-NEXT: sb s8, 30(a2)6045; RV32I-NEXT: sb s9, 31(a2)6046; RV32I-NEXT: lw ra, 60(sp) # 4-byte Folded Reload6047; RV32I-NEXT: lw s0, 56(sp) # 4-byte Folded Reload6048; RV32I-NEXT: lw s1, 52(sp) # 4-byte Folded Reload6049; RV32I-NEXT: lw s2, 48(sp) # 4-byte Folded Reload6050; RV32I-NEXT: lw s3, 44(sp) # 4-byte Folded Reload6051; RV32I-NEXT: lw s4, 40(sp) # 4-byte Folded Reload6052; RV32I-NEXT: lw s5, 36(sp) # 4-byte Folded Reload6053; RV32I-NEXT: lw s6, 32(sp) # 4-byte Folded Reload6054; RV32I-NEXT: lw s7, 28(sp) # 4-byte Folded Reload6055; RV32I-NEXT: lw s8, 24(sp) # 4-byte Folded Reload6056; RV32I-NEXT: lw s9, 20(sp) # 4-byte Folded Reload6057; RV32I-NEXT: lw s10, 16(sp) # 4-byte Folded Reload6058; RV32I-NEXT: lw s11, 12(sp) # 4-byte Folded Reload6059; RV32I-NEXT: addi sp, sp, 646060; RV32I-NEXT: ret6061; RV32I-NEXT: .LBB14_190:6062; RV32I-NEXT: mv a4, t36063; RV32I-NEXT: li t3, 06064; RV32I-NEXT: beq t1, t4, .LBB14_1746065; RV32I-NEXT: .LBB14_191:6066; RV32I-NEXT: mv t3, a46067; RV32I-NEXT: li a4, 06068; RV32I-NEXT: beq t1, s4, .LBB14_1756069; RV32I-NEXT: .LBB14_192:6070; RV32I-NEXT: mv a4, t36071; RV32I-NEXT: li t3, 06072; RV32I-NEXT: beq t1, s9, .LBB14_1766073; RV32I-NEXT: .LBB14_193:6074; RV32I-NEXT: mv t3, a46075; RV32I-NEXT: li a4, 06076; RV32I-NEXT: beq t1, s2, .LBB14_1776077; RV32I-NEXT: .LBB14_194:6078; RV32I-NEXT: mv a4, t36079; RV32I-NEXT: li t3, 06080; RV32I-NEXT: beq t1, s3, .LBB14_1786081; RV32I-NEXT: .LBB14_195:6082; RV32I-NEXT: mv t3, a46083; RV32I-NEXT: beqz a7, .LBB14_1796084; RV32I-NEXT: .LBB14_196:6085; RV32I-NEXT: mv a0, t36086; RV32I-NEXT: beqz t1, .LBB14_1806087; RV32I-NEXT: .LBB14_197:6088; RV32I-NEXT: li s1, 06089; RV32I-NEXT: li a4, 06090; RV32I-NEXT: beq t1, s0, .LBB14_1816091; RV32I-NEXT: .LBB14_198:6092; RV32I-NEXT: mv a4, s16093; RV32I-NEXT: li t3, 06094; RV32I-NEXT: beq t1, t6, .LBB14_1826095; RV32I-NEXT: .LBB14_199:6096; RV32I-NEXT: mv t3, a46097; RV32I-NEXT: li a4, 06098; RV32I-NEXT: beq t1, t4, .LBB14_1836099; RV32I-NEXT: .LBB14_200:6100; RV32I-NEXT: mv a4, t36101; RV32I-NEXT: li t3, 06102; RV32I-NEXT: beq t1, s4, .LBB14_1846103; RV32I-NEXT: .LBB14_201:6104; RV32I-NEXT: mv t3, a46105; RV32I-NEXT: li a4, 06106; RV32I-NEXT: beq t1, s9, .LBB14_1856107; RV32I-NEXT: .LBB14_202:6108; RV32I-NEXT: mv a4, t36109; RV32I-NEXT: li t3, 06110; RV32I-NEXT: beq t1, s2, .LBB14_1866111; RV32I-NEXT: .LBB14_203:6112; RV32I-NEXT: mv t3, a46113; RV32I-NEXT: li a4, 06114; RV32I-NEXT: beq t1, s3, .LBB14_1876115; RV32I-NEXT: .LBB14_204:6116; RV32I-NEXT: mv a4, t36117; RV32I-NEXT: bnez a7, .LBB14_1886118; RV32I-NEXT: j .LBB14_1896119 %src = load i256, ptr %src.ptr, align 16120 %dwordOff = load i256, ptr %dwordOff.ptr, align 16121 %bitOff = shl i256 %dwordOff, 66122 %res = lshr i256 %src, %bitOff6123 store i256 %res, ptr %dst, align 16124 ret void6125}6126 6127define void @shl_32bytes(ptr %src.ptr, ptr %byteOff.ptr, ptr %dst) nounwind {6128; RV64I-LABEL: shl_32bytes:6129; RV64I: # %bb.0:6130; RV64I-NEXT: addi sp, sp, -1126131; RV64I-NEXT: sd ra, 104(sp) # 8-byte Folded Spill6132; RV64I-NEXT: sd s0, 96(sp) # 8-byte Folded Spill6133; RV64I-NEXT: sd s1, 88(sp) # 8-byte Folded Spill6134; RV64I-NEXT: sd s2, 80(sp) # 8-byte Folded Spill6135; RV64I-NEXT: sd s3, 72(sp) # 8-byte Folded Spill6136; RV64I-NEXT: sd s4, 64(sp) # 8-byte Folded Spill6137; RV64I-NEXT: sd s5, 56(sp) # 8-byte Folded Spill6138; RV64I-NEXT: sd s6, 48(sp) # 8-byte Folded Spill6139; RV64I-NEXT: sd s7, 40(sp) # 8-byte Folded Spill6140; RV64I-NEXT: sd s8, 32(sp) # 8-byte Folded Spill6141; RV64I-NEXT: sd s9, 24(sp) # 8-byte Folded Spill6142; RV64I-NEXT: sd s10, 16(sp) # 8-byte Folded Spill6143; RV64I-NEXT: sd s11, 8(sp) # 8-byte Folded Spill6144; RV64I-NEXT: lbu a3, 0(a0)6145; RV64I-NEXT: lbu a4, 1(a0)6146; RV64I-NEXT: lbu a5, 2(a0)6147; RV64I-NEXT: lbu a6, 3(a0)6148; RV64I-NEXT: lbu a7, 4(a0)6149; RV64I-NEXT: lbu t0, 5(a0)6150; RV64I-NEXT: lbu t1, 6(a0)6151; RV64I-NEXT: lbu t2, 7(a0)6152; RV64I-NEXT: lbu t3, 8(a0)6153; RV64I-NEXT: lbu t4, 9(a0)6154; RV64I-NEXT: lbu t5, 10(a0)6155; RV64I-NEXT: lbu t6, 11(a0)6156; RV64I-NEXT: slli a4, a4, 86157; RV64I-NEXT: or a3, a4, a36158; RV64I-NEXT: lbu a4, 12(a0)6159; RV64I-NEXT: lbu s0, 13(a0)6160; RV64I-NEXT: lbu s1, 14(a0)6161; RV64I-NEXT: lbu s2, 15(a0)6162; RV64I-NEXT: slli a6, a6, 86163; RV64I-NEXT: slli t0, t0, 86164; RV64I-NEXT: slli t2, t2, 86165; RV64I-NEXT: slli t4, t4, 86166; RV64I-NEXT: or s3, a6, a56167; RV64I-NEXT: or a5, t0, a76168; RV64I-NEXT: or a7, t2, t16169; RV64I-NEXT: or a6, t4, t36170; RV64I-NEXT: lbu t0, 0(a1)6171; RV64I-NEXT: lbu t1, 1(a1)6172; RV64I-NEXT: lbu t2, 2(a1)6173; RV64I-NEXT: lbu t3, 3(a1)6174; RV64I-NEXT: slli t6, t6, 86175; RV64I-NEXT: slli s0, s0, 86176; RV64I-NEXT: slli s2, s2, 86177; RV64I-NEXT: or t6, t6, t56178; RV64I-NEXT: or s0, s0, a46179; RV64I-NEXT: or s1, s2, s16180; RV64I-NEXT: lbu a4, 4(a1)6181; RV64I-NEXT: lbu t4, 5(a1)6182; RV64I-NEXT: lbu t5, 6(a1)6183; RV64I-NEXT: lbu a1, 7(a1)6184; RV64I-NEXT: slli t1, t1, 86185; RV64I-NEXT: slli t3, t3, 86186; RV64I-NEXT: slli t4, t4, 86187; RV64I-NEXT: slli a1, a1, 86188; RV64I-NEXT: or t0, t1, t06189; RV64I-NEXT: or t1, t3, t26190; RV64I-NEXT: or t2, t4, a46191; RV64I-NEXT: or a1, a1, t56192; RV64I-NEXT: lbu t5, 19(a0)6193; RV64I-NEXT: lbu t4, 21(a0)6194; RV64I-NEXT: lbu a4, 22(a0)6195; RV64I-NEXT: lbu t3, 23(a0)6196; RV64I-NEXT: slli s3, s3, 166197; RV64I-NEXT: slli a7, a7, 166198; RV64I-NEXT: slli t6, t6, 166199; RV64I-NEXT: slli s1, s1, 166200; RV64I-NEXT: or s4, s3, a36201; RV64I-NEXT: or a5, a7, a56202; RV64I-NEXT: or a6, t6, a66203; RV64I-NEXT: or s0, s1, s06204; RV64I-NEXT: lbu s1, 27(a0)6205; RV64I-NEXT: lbu t6, 29(a0)6206; RV64I-NEXT: lbu a3, 30(a0)6207; RV64I-NEXT: lbu s2, 31(a0)6208; RV64I-NEXT: slli t1, t1, 166209; RV64I-NEXT: or s5, t1, t06210; RV64I-NEXT: li a7, 1286211; RV64I-NEXT: slli a1, a1, 166212; RV64I-NEXT: or a1, a1, t26213; RV64I-NEXT: li t0, 646214; RV64I-NEXT: slli s3, t3, 86215; RV64I-NEXT: slli s2, s2, 86216; RV64I-NEXT: slli a5, a5, 326217; RV64I-NEXT: slli s0, s0, 326218; RV64I-NEXT: slli a1, a1, 326219; RV64I-NEXT: or t1, a5, s46220; RV64I-NEXT: or a5, s0, a66221; RV64I-NEXT: or a6, a1, s56222; RV64I-NEXT: slli a6, a6, 36223; RV64I-NEXT: sub t2, a6, t06224; RV64I-NEXT: neg t3, a66225; RV64I-NEXT: srl s0, t1, t36226; RV64I-NEXT: bltu a6, t0, .LBB15_26227; RV64I-NEXT: # %bb.1:6228; RV64I-NEXT: li a1, 06229; RV64I-NEXT: sll s4, t1, t26230; RV64I-NEXT: j .LBB15_36231; RV64I-NEXT: .LBB15_2:6232; RV64I-NEXT: sll a1, t1, a66233; RV64I-NEXT: sll s4, a5, a66234; RV64I-NEXT: or s4, s0, s46235; RV64I-NEXT: .LBB15_3:6236; RV64I-NEXT: slli t5, t5, 86237; RV64I-NEXT: slli t4, t4, 86238; RV64I-NEXT: or s3, s3, a46239; RV64I-NEXT: lbu ra, 17(a0)6240; RV64I-NEXT: lbu s11, 18(a0)6241; RV64I-NEXT: lbu s8, 20(a0)6242; RV64I-NEXT: lbu s5, 25(a0)6243; RV64I-NEXT: slli s1, s1, 86244; RV64I-NEXT: lbu s7, 26(a0)6245; RV64I-NEXT: lbu s6, 28(a0)6246; RV64I-NEXT: slli s10, t6, 86247; RV64I-NEXT: or s9, s2, a36248; RV64I-NEXT: sub a4, a7, a66249; RV64I-NEXT: mv a3, a56250; RV64I-NEXT: beqz a6, .LBB15_56251; RV64I-NEXT: # %bb.4:6252; RV64I-NEXT: mv a3, s46253; RV64I-NEXT: .LBB15_5:6254; RV64I-NEXT: slli t6, ra, 86255; RV64I-NEXT: or t5, t5, s116256; RV64I-NEXT: or t4, t4, s86257; RV64I-NEXT: slli s3, s3, 166258; RV64I-NEXT: lbu s8, 16(a0)6259; RV64I-NEXT: lbu a0, 24(a0)6260; RV64I-NEXT: slli s5, s5, 86261; RV64I-NEXT: or s2, s1, s76262; RV64I-NEXT: or s1, s10, s66263; RV64I-NEXT: slli s4, s9, 166264; RV64I-NEXT: bltu a4, t0, .LBB15_76265; RV64I-NEXT: # %bb.6:6266; RV64I-NEXT: sub s0, a4, t06267; RV64I-NEXT: srl s0, a5, s06268; RV64I-NEXT: j .LBB15_86269; RV64I-NEXT: .LBB15_7:6270; RV64I-NEXT: neg s6, a46271; RV64I-NEXT: sll s6, a5, s66272; RV64I-NEXT: or s0, s0, s66273; RV64I-NEXT: .LBB15_8:6274; RV64I-NEXT: or t6, t6, s86275; RV64I-NEXT: slli s6, t5, 166276; RV64I-NEXT: or s3, s3, t46277; RV64I-NEXT: or t5, s5, a06278; RV64I-NEXT: slli s2, s2, 166279; RV64I-NEXT: or s1, s4, s16280; RV64I-NEXT: mv t4, t16281; RV64I-NEXT: beqz a4, .LBB15_106282; RV64I-NEXT: # %bb.9:6283; RV64I-NEXT: mv t4, s06284; RV64I-NEXT: .LBB15_10:6285; RV64I-NEXT: or a0, s6, t66286; RV64I-NEXT: slli s0, s3, 326287; RV64I-NEXT: or t6, s2, t56288; RV64I-NEXT: slli s1, s1, 326289; RV64I-NEXT: bltu a4, t0, .LBB15_126290; RV64I-NEXT: # %bb.11:6291; RV64I-NEXT: li t5, 06292; RV64I-NEXT: j .LBB15_136293; RV64I-NEXT: .LBB15_12:6294; RV64I-NEXT: srl t5, a5, t36295; RV64I-NEXT: .LBB15_13:6296; RV64I-NEXT: or a4, s0, a06297; RV64I-NEXT: or a0, s1, t66298; RV64I-NEXT: bltu a6, t0, .LBB15_156299; RV64I-NEXT: # %bb.14:6300; RV64I-NEXT: li t6, 06301; RV64I-NEXT: sll t2, a4, t26302; RV64I-NEXT: j .LBB15_166303; RV64I-NEXT: .LBB15_15:6304; RV64I-NEXT: sll t6, a4, a66305; RV64I-NEXT: srl t2, a4, t36306; RV64I-NEXT: sll t3, a0, a66307; RV64I-NEXT: or t2, t2, t36308; RV64I-NEXT: .LBB15_16:6309; RV64I-NEXT: sub s0, a6, a76310; RV64I-NEXT: mv t3, a06311; RV64I-NEXT: beqz a6, .LBB15_186312; RV64I-NEXT: # %bb.17:6313; RV64I-NEXT: mv t3, t26314; RV64I-NEXT: .LBB15_18:6315; RV64I-NEXT: bltu s0, t0, .LBB15_206316; RV64I-NEXT: # %bb.19:6317; RV64I-NEXT: li t2, 06318; RV64I-NEXT: sub t0, s0, t06319; RV64I-NEXT: sll t0, t1, t06320; RV64I-NEXT: bnez s0, .LBB15_216321; RV64I-NEXT: j .LBB15_226322; RV64I-NEXT: .LBB15_20:6323; RV64I-NEXT: sll t2, t1, s06324; RV64I-NEXT: neg t0, s06325; RV64I-NEXT: srl t0, t1, t06326; RV64I-NEXT: sll t1, a5, s06327; RV64I-NEXT: or t0, t0, t16328; RV64I-NEXT: beqz s0, .LBB15_226329; RV64I-NEXT: .LBB15_21:6330; RV64I-NEXT: mv a5, t06331; RV64I-NEXT: .LBB15_22:6332; RV64I-NEXT: bltu a6, a7, .LBB15_246333; RV64I-NEXT: # %bb.23:6334; RV64I-NEXT: li a1, 06335; RV64I-NEXT: li a3, 06336; RV64I-NEXT: bnez a6, .LBB15_256337; RV64I-NEXT: j .LBB15_266338; RV64I-NEXT: .LBB15_24:6339; RV64I-NEXT: or t2, t4, t66340; RV64I-NEXT: or a5, t5, t36341; RV64I-NEXT: beqz a6, .LBB15_266342; RV64I-NEXT: .LBB15_25:6343; RV64I-NEXT: mv a4, t26344; RV64I-NEXT: mv a0, a56345; RV64I-NEXT: .LBB15_26:6346; RV64I-NEXT: srli a5, a1, 326347; RV64I-NEXT: srliw a6, a1, 166348; RV64I-NEXT: lui t2, 166349; RV64I-NEXT: srliw t1, a1, 246350; RV64I-NEXT: srli t0, a1, 486351; RV64I-NEXT: srli t5, a1, 566352; RV64I-NEXT: srli a7, a3, 326353; RV64I-NEXT: srliw t4, a3, 166354; RV64I-NEXT: srliw s0, a3, 246355; RV64I-NEXT: srli t6, a3, 486356; RV64I-NEXT: srli s3, a3, 566357; RV64I-NEXT: srli t3, a4, 326358; RV64I-NEXT: srliw s2, a4, 166359; RV64I-NEXT: srliw s6, a4, 246360; RV64I-NEXT: srli s4, a4, 486361; RV64I-NEXT: srli s7, a4, 566362; RV64I-NEXT: srli s1, a0, 326363; RV64I-NEXT: srliw s5, a0, 166364; RV64I-NEXT: srliw s8, a0, 246365; RV64I-NEXT: srli s9, a0, 486366; RV64I-NEXT: srli s10, a0, 566367; RV64I-NEXT: addi t2, t2, -16368; RV64I-NEXT: and s11, a1, t26369; RV64I-NEXT: srli s11, s11, 86370; RV64I-NEXT: sb a1, 0(a2)6371; RV64I-NEXT: sb s11, 1(a2)6372; RV64I-NEXT: sb a6, 2(a2)6373; RV64I-NEXT: sb t1, 3(a2)6374; RV64I-NEXT: and a1, a5, t26375; RV64I-NEXT: srli a1, a1, 86376; RV64I-NEXT: sb a5, 4(a2)6377; RV64I-NEXT: sb a1, 5(a2)6378; RV64I-NEXT: sb t0, 6(a2)6379; RV64I-NEXT: sb t5, 7(a2)6380; RV64I-NEXT: and a1, a3, t26381; RV64I-NEXT: srli a1, a1, 86382; RV64I-NEXT: sb a3, 8(a2)6383; RV64I-NEXT: sb a1, 9(a2)6384; RV64I-NEXT: sb t4, 10(a2)6385; RV64I-NEXT: sb s0, 11(a2)6386; RV64I-NEXT: and a1, a7, t26387; RV64I-NEXT: srli a1, a1, 86388; RV64I-NEXT: sb a7, 12(a2)6389; RV64I-NEXT: sb a1, 13(a2)6390; RV64I-NEXT: sb t6, 14(a2)6391; RV64I-NEXT: sb s3, 15(a2)6392; RV64I-NEXT: and a1, a4, t26393; RV64I-NEXT: srli a1, a1, 86394; RV64I-NEXT: sb a4, 16(a2)6395; RV64I-NEXT: sb a1, 17(a2)6396; RV64I-NEXT: sb s2, 18(a2)6397; RV64I-NEXT: sb s6, 19(a2)6398; RV64I-NEXT: and a1, t3, t26399; RV64I-NEXT: srli a1, a1, 86400; RV64I-NEXT: sb t3, 20(a2)6401; RV64I-NEXT: sb a1, 21(a2)6402; RV64I-NEXT: sb s4, 22(a2)6403; RV64I-NEXT: sb s7, 23(a2)6404; RV64I-NEXT: and a1, a0, t26405; RV64I-NEXT: and a3, s1, t26406; RV64I-NEXT: srli a1, a1, 86407; RV64I-NEXT: srli a3, a3, 86408; RV64I-NEXT: sb a0, 24(a2)6409; RV64I-NEXT: sb a1, 25(a2)6410; RV64I-NEXT: sb s5, 26(a2)6411; RV64I-NEXT: sb s8, 27(a2)6412; RV64I-NEXT: sb s1, 28(a2)6413; RV64I-NEXT: sb a3, 29(a2)6414; RV64I-NEXT: sb s9, 30(a2)6415; RV64I-NEXT: sb s10, 31(a2)6416; RV64I-NEXT: ld ra, 104(sp) # 8-byte Folded Reload6417; RV64I-NEXT: ld s0, 96(sp) # 8-byte Folded Reload6418; RV64I-NEXT: ld s1, 88(sp) # 8-byte Folded Reload6419; RV64I-NEXT: ld s2, 80(sp) # 8-byte Folded Reload6420; RV64I-NEXT: ld s3, 72(sp) # 8-byte Folded Reload6421; RV64I-NEXT: ld s4, 64(sp) # 8-byte Folded Reload6422; RV64I-NEXT: ld s5, 56(sp) # 8-byte Folded Reload6423; RV64I-NEXT: ld s6, 48(sp) # 8-byte Folded Reload6424; RV64I-NEXT: ld s7, 40(sp) # 8-byte Folded Reload6425; RV64I-NEXT: ld s8, 32(sp) # 8-byte Folded Reload6426; RV64I-NEXT: ld s9, 24(sp) # 8-byte Folded Reload6427; RV64I-NEXT: ld s10, 16(sp) # 8-byte Folded Reload6428; RV64I-NEXT: ld s11, 8(sp) # 8-byte Folded Reload6429; RV64I-NEXT: addi sp, sp, 1126430; RV64I-NEXT: ret6431;6432; RV32I-LABEL: shl_32bytes:6433; RV32I: # %bb.0:6434; RV32I-NEXT: addi sp, sp, -806435; RV32I-NEXT: sw ra, 76(sp) # 4-byte Folded Spill6436; RV32I-NEXT: sw s0, 72(sp) # 4-byte Folded Spill6437; RV32I-NEXT: sw s1, 68(sp) # 4-byte Folded Spill6438; RV32I-NEXT: sw s2, 64(sp) # 4-byte Folded Spill6439; RV32I-NEXT: sw s3, 60(sp) # 4-byte Folded Spill6440; RV32I-NEXT: sw s4, 56(sp) # 4-byte Folded Spill6441; RV32I-NEXT: sw s5, 52(sp) # 4-byte Folded Spill6442; RV32I-NEXT: sw s6, 48(sp) # 4-byte Folded Spill6443; RV32I-NEXT: sw s7, 44(sp) # 4-byte Folded Spill6444; RV32I-NEXT: sw s8, 40(sp) # 4-byte Folded Spill6445; RV32I-NEXT: sw s9, 36(sp) # 4-byte Folded Spill6446; RV32I-NEXT: sw s10, 32(sp) # 4-byte Folded Spill6447; RV32I-NEXT: sw s11, 28(sp) # 4-byte Folded Spill6448; RV32I-NEXT: lbu a3, 1(a0)6449; RV32I-NEXT: lbu a4, 0(a0)6450; RV32I-NEXT: lbu a5, 2(a0)6451; RV32I-NEXT: lbu a6, 3(a0)6452; RV32I-NEXT: slli a3, a3, 86453; RV32I-NEXT: or a3, a3, a46454; RV32I-NEXT: lbu a4, 0(a1)6455; RV32I-NEXT: lbu a7, 1(a1)6456; RV32I-NEXT: lbu t0, 2(a1)6457; RV32I-NEXT: lbu a1, 3(a1)6458; RV32I-NEXT: slli a6, a6, 86459; RV32I-NEXT: or a5, a6, a56460; RV32I-NEXT: slli a7, a7, 86461; RV32I-NEXT: slli a1, a1, 86462; RV32I-NEXT: or a4, a7, a46463; RV32I-NEXT: or a1, a1, t06464; RV32I-NEXT: slli a5, a5, 166465; RV32I-NEXT: slli a1, a1, 166466; RV32I-NEXT: or a6, a5, a36467; RV32I-NEXT: or a1, a1, a46468; RV32I-NEXT: slli a1, a1, 36469; RV32I-NEXT: srli a5, a1, 56470; RV32I-NEXT: sll t5, a6, a16471; RV32I-NEXT: li s7, 16472; RV32I-NEXT: mv a3, t56473; RV32I-NEXT: beqz a5, .LBB15_26474; RV32I-NEXT: # %bb.1:6475; RV32I-NEXT: li a3, 06476; RV32I-NEXT: .LBB15_2:6477; RV32I-NEXT: li a4, 06478; RV32I-NEXT: li s8, 26479; RV32I-NEXT: beq a5, s7, .LBB15_46480; RV32I-NEXT: # %bb.3:6481; RV32I-NEXT: mv a4, a36482; RV32I-NEXT: .LBB15_4:6483; RV32I-NEXT: li a7, 06484; RV32I-NEXT: li s0, 36485; RV32I-NEXT: beq a5, s8, .LBB15_66486; RV32I-NEXT: # %bb.5:6487; RV32I-NEXT: mv a7, a46488; RV32I-NEXT: .LBB15_6:6489; RV32I-NEXT: li a4, 06490; RV32I-NEXT: li s4, 46491; RV32I-NEXT: beq a5, s0, .LBB15_86492; RV32I-NEXT: # %bb.7:6493; RV32I-NEXT: mv a4, a76494; RV32I-NEXT: .LBB15_8:6495; RV32I-NEXT: li t0, 06496; RV32I-NEXT: li s5, 56497; RV32I-NEXT: beq a5, s4, .LBB15_106498; RV32I-NEXT: # %bb.9:6499; RV32I-NEXT: mv t0, a46500; RV32I-NEXT: .LBB15_10:6501; RV32I-NEXT: lbu t2, 7(a0)6502; RV32I-NEXT: li a7, 06503; RV32I-NEXT: beq a5, s5, .LBB15_126504; RV32I-NEXT: # %bb.11:6505; RV32I-NEXT: mv a7, t06506; RV32I-NEXT: .LBB15_12:6507; RV32I-NEXT: li a4, 06508; RV32I-NEXT: lbu t0, 5(a0)6509; RV32I-NEXT: lbu t1, 6(a0)6510; RV32I-NEXT: li s1, 66511; RV32I-NEXT: slli t2, t2, 86512; RV32I-NEXT: beq a5, s1, .LBB15_146513; RV32I-NEXT: # %bb.13:6514; RV32I-NEXT: mv a4, a76515; RV32I-NEXT: .LBB15_14:6516; RV32I-NEXT: li a7, 06517; RV32I-NEXT: lbu a3, 4(a0)6518; RV32I-NEXT: or t1, t2, t16519; RV32I-NEXT: li ra, 76520; RV32I-NEXT: slli t0, t0, 86521; RV32I-NEXT: beq a5, ra, .LBB15_166522; RV32I-NEXT: # %bb.15:6523; RV32I-NEXT: mv a7, a46524; RV32I-NEXT: .LBB15_16:6525; RV32I-NEXT: or a3, t0, a36526; RV32I-NEXT: slli t1, t1, 166527; RV32I-NEXT: andi t6, a1, 316528; RV32I-NEXT: mv a4, a66529; RV32I-NEXT: beqz a1, .LBB15_186530; RV32I-NEXT: # %bb.17:6531; RV32I-NEXT: mv a4, a76532; RV32I-NEXT: .LBB15_18:6533; RV32I-NEXT: li t0, 06534; RV32I-NEXT: or a7, t1, a36535; RV32I-NEXT: neg s3, t66536; RV32I-NEXT: srl s11, a6, s36537; RV32I-NEXT: beqz t6, .LBB15_206538; RV32I-NEXT: # %bb.19:6539; RV32I-NEXT: mv t0, s116540; RV32I-NEXT: .LBB15_20:6541; RV32I-NEXT: sll s10, a7, a16542; RV32I-NEXT: beqz a5, .LBB15_226543; RV32I-NEXT: # %bb.21:6544; RV32I-NEXT: li a3, 06545; RV32I-NEXT: mv a6, t56546; RV32I-NEXT: bne a5, s7, .LBB15_236547; RV32I-NEXT: j .LBB15_246548; RV32I-NEXT: .LBB15_22:6549; RV32I-NEXT: or a3, s10, t06550; RV32I-NEXT: mv a6, t56551; RV32I-NEXT: beq a5, s7, .LBB15_246552; RV32I-NEXT: .LBB15_23:6553; RV32I-NEXT: mv a6, a36554; RV32I-NEXT: .LBB15_24:6555; RV32I-NEXT: li a3, 06556; RV32I-NEXT: bne a5, s8, .LBB15_406557; RV32I-NEXT: # %bb.25:6558; RV32I-NEXT: li a6, 06559; RV32I-NEXT: bne a5, s0, .LBB15_416560; RV32I-NEXT: .LBB15_26:6561; RV32I-NEXT: li a3, 06562; RV32I-NEXT: beq a5, s4, .LBB15_286563; RV32I-NEXT: .LBB15_27:6564; RV32I-NEXT: mv a3, a66565; RV32I-NEXT: .LBB15_28:6566; RV32I-NEXT: lbu t2, 11(a0)6567; RV32I-NEXT: li t0, 06568; RV32I-NEXT: beq a5, s5, .LBB15_306569; RV32I-NEXT: # %bb.29:6570; RV32I-NEXT: mv t0, a36571; RV32I-NEXT: .LBB15_30:6572; RV32I-NEXT: li a6, 06573; RV32I-NEXT: lbu t1, 9(a0)6574; RV32I-NEXT: lbu a3, 10(a0)6575; RV32I-NEXT: slli t2, t2, 86576; RV32I-NEXT: beq a5, s1, .LBB15_326577; RV32I-NEXT: # %bb.31:6578; RV32I-NEXT: mv a6, t06579; RV32I-NEXT: .LBB15_32:6580; RV32I-NEXT: li t0, 06581; RV32I-NEXT: lbu t3, 8(a0)6582; RV32I-NEXT: or t2, t2, a36583; RV32I-NEXT: slli t1, t1, 86584; RV32I-NEXT: beq a5, ra, .LBB15_346585; RV32I-NEXT: # %bb.33:6586; RV32I-NEXT: mv t0, a66587; RV32I-NEXT: .LBB15_34:6588; RV32I-NEXT: or a3, t1, t36589; RV32I-NEXT: slli a6, t2, 166590; RV32I-NEXT: mv t2, a76591; RV32I-NEXT: beqz a1, .LBB15_366592; RV32I-NEXT: # %bb.35:6593; RV32I-NEXT: mv t2, t06594; RV32I-NEXT: .LBB15_36:6595; RV32I-NEXT: li t0, 06596; RV32I-NEXT: or a6, a6, a36597; RV32I-NEXT: srl s2, a7, s36598; RV32I-NEXT: beqz t6, .LBB15_386599; RV32I-NEXT: # %bb.37:6600; RV32I-NEXT: mv t0, s26601; RV32I-NEXT: .LBB15_38:6602; RV32I-NEXT: sll s9, a6, a16603; RV32I-NEXT: beqz a5, .LBB15_426604; RV32I-NEXT: # %bb.39:6605; RV32I-NEXT: li a7, 06606; RV32I-NEXT: li a3, 06607; RV32I-NEXT: bnez t6, .LBB15_436608; RV32I-NEXT: j .LBB15_446609; RV32I-NEXT: .LBB15_40:6610; RV32I-NEXT: mv a3, a66611; RV32I-NEXT: li a6, 06612; RV32I-NEXT: beq a5, s0, .LBB15_266613; RV32I-NEXT: .LBB15_41:6614; RV32I-NEXT: mv a6, a36615; RV32I-NEXT: li a3, 06616; RV32I-NEXT: bne a5, s4, .LBB15_276617; RV32I-NEXT: j .LBB15_286618; RV32I-NEXT: .LBB15_42:6619; RV32I-NEXT: or a7, s9, t06620; RV32I-NEXT: li a3, 06621; RV32I-NEXT: beqz t6, .LBB15_446622; RV32I-NEXT: .LBB15_43:6623; RV32I-NEXT: mv a3, s116624; RV32I-NEXT: .LBB15_44:6625; RV32I-NEXT: beq a5, s7, .LBB15_616626; RV32I-NEXT: # %bb.45:6627; RV32I-NEXT: mv a3, t56628; RV32I-NEXT: bne a5, s8, .LBB15_626629; RV32I-NEXT: .LBB15_46:6630; RV32I-NEXT: li a7, 06631; RV32I-NEXT: bne a5, s0, .LBB15_636632; RV32I-NEXT: .LBB15_47:6633; RV32I-NEXT: li a3, 06634; RV32I-NEXT: beq a5, s4, .LBB15_496635; RV32I-NEXT: .LBB15_48:6636; RV32I-NEXT: mv a3, a76637; RV32I-NEXT: .LBB15_49:6638; RV32I-NEXT: lbu t3, 15(a0)6639; RV32I-NEXT: li t0, 06640; RV32I-NEXT: beq a5, s5, .LBB15_516641; RV32I-NEXT: # %bb.50:6642; RV32I-NEXT: mv t0, a36643; RV32I-NEXT: .LBB15_51:6644; RV32I-NEXT: li a7, 06645; RV32I-NEXT: lbu t1, 13(a0)6646; RV32I-NEXT: lbu a3, 14(a0)6647; RV32I-NEXT: slli t3, t3, 86648; RV32I-NEXT: beq a5, s1, .LBB15_536649; RV32I-NEXT: # %bb.52:6650; RV32I-NEXT: mv a7, t06651; RV32I-NEXT: .LBB15_53:6652; RV32I-NEXT: li t0, 06653; RV32I-NEXT: lbu t4, 12(a0)6654; RV32I-NEXT: or t3, t3, a36655; RV32I-NEXT: slli t1, t1, 86656; RV32I-NEXT: beq a5, ra, .LBB15_556657; RV32I-NEXT: # %bb.54:6658; RV32I-NEXT: mv t0, a76659; RV32I-NEXT: .LBB15_55:6660; RV32I-NEXT: or a3, t1, t46661; RV32I-NEXT: slli t3, t3, 166662; RV32I-NEXT: mv a7, a66663; RV32I-NEXT: beqz a1, .LBB15_576664; RV32I-NEXT: # %bb.56:6665; RV32I-NEXT: mv a7, t06666; RV32I-NEXT: .LBB15_57:6667; RV32I-NEXT: sw a7, 4(sp) # 4-byte Folded Spill6668; RV32I-NEXT: li t0, 06669; RV32I-NEXT: or a7, t3, a36670; RV32I-NEXT: srl a3, a6, s36671; RV32I-NEXT: sw a3, 24(sp) # 4-byte Folded Spill6672; RV32I-NEXT: beqz t6, .LBB15_596673; RV32I-NEXT: # %bb.58:6674; RV32I-NEXT: lw t0, 24(sp) # 4-byte Folded Reload6675; RV32I-NEXT: .LBB15_59:6676; RV32I-NEXT: sll a3, a7, a16677; RV32I-NEXT: sw a3, 20(sp) # 4-byte Folded Spill6678; RV32I-NEXT: beqz a5, .LBB15_646679; RV32I-NEXT: # %bb.60:6680; RV32I-NEXT: li a6, 06681; RV32I-NEXT: li a3, 06682; RV32I-NEXT: bnez t6, .LBB15_656683; RV32I-NEXT: j .LBB15_666684; RV32I-NEXT: .LBB15_61:6685; RV32I-NEXT: or a7, s10, a36686; RV32I-NEXT: mv a3, t56687; RV32I-NEXT: beq a5, s8, .LBB15_466688; RV32I-NEXT: .LBB15_62:6689; RV32I-NEXT: mv a3, a76690; RV32I-NEXT: li a7, 06691; RV32I-NEXT: beq a5, s0, .LBB15_476692; RV32I-NEXT: .LBB15_63:6693; RV32I-NEXT: mv a7, a36694; RV32I-NEXT: li a3, 06695; RV32I-NEXT: bne a5, s4, .LBB15_486696; RV32I-NEXT: j .LBB15_496697; RV32I-NEXT: .LBB15_64:6698; RV32I-NEXT: or a6, a3, t06699; RV32I-NEXT: li a3, 06700; RV32I-NEXT: beqz t6, .LBB15_666701; RV32I-NEXT: .LBB15_65:6702; RV32I-NEXT: mv a3, s26703; RV32I-NEXT: .LBB15_66:6704; RV32I-NEXT: beq a5, s7, .LBB15_846705; RV32I-NEXT: # %bb.67:6706; RV32I-NEXT: li a3, 06707; RV32I-NEXT: bnez t6, .LBB15_856708; RV32I-NEXT: .LBB15_68:6709; RV32I-NEXT: beq a5, s8, .LBB15_866710; RV32I-NEXT: .LBB15_69:6711; RV32I-NEXT: mv t0, t56712; RV32I-NEXT: bne a5, s0, .LBB15_876713; RV32I-NEXT: .LBB15_70:6714; RV32I-NEXT: li a3, 06715; RV32I-NEXT: beq a5, s4, .LBB15_726716; RV32I-NEXT: .LBB15_71:6717; RV32I-NEXT: mv a3, t06718; RV32I-NEXT: .LBB15_72:6719; RV32I-NEXT: lbu t3, 19(a0)6720; RV32I-NEXT: li t0, 06721; RV32I-NEXT: beq a5, s5, .LBB15_746722; RV32I-NEXT: # %bb.73:6723; RV32I-NEXT: mv t0, a36724; RV32I-NEXT: .LBB15_74:6725; RV32I-NEXT: li a6, 06726; RV32I-NEXT: lbu t1, 17(a0)6727; RV32I-NEXT: lbu a3, 18(a0)6728; RV32I-NEXT: slli t3, t3, 86729; RV32I-NEXT: beq a5, s1, .LBB15_766730; RV32I-NEXT: # %bb.75:6731; RV32I-NEXT: mv a6, t06732; RV32I-NEXT: .LBB15_76:6733; RV32I-NEXT: li t0, 06734; RV32I-NEXT: lbu t4, 16(a0)6735; RV32I-NEXT: or t3, t3, a36736; RV32I-NEXT: slli t1, t1, 86737; RV32I-NEXT: beq a5, ra, .LBB15_786738; RV32I-NEXT: # %bb.77:6739; RV32I-NEXT: mv t0, a66740; RV32I-NEXT: .LBB15_78:6741; RV32I-NEXT: or a3, t1, t46742; RV32I-NEXT: slli t3, t3, 166743; RV32I-NEXT: mv s6, a76744; RV32I-NEXT: beqz a1, .LBB15_806745; RV32I-NEXT: # %bb.79:6746; RV32I-NEXT: mv s6, t06747; RV32I-NEXT: .LBB15_80:6748; RV32I-NEXT: li t0, 06749; RV32I-NEXT: or a6, t3, a36750; RV32I-NEXT: srl a3, a7, s36751; RV32I-NEXT: sw a3, 16(sp) # 4-byte Folded Spill6752; RV32I-NEXT: beqz t6, .LBB15_826753; RV32I-NEXT: # %bb.81:6754; RV32I-NEXT: lw t0, 16(sp) # 4-byte Folded Reload6755; RV32I-NEXT: .LBB15_82:6756; RV32I-NEXT: sll a3, a6, a16757; RV32I-NEXT: sw a3, 8(sp) # 4-byte Folded Spill6758; RV32I-NEXT: beqz a5, .LBB15_886759; RV32I-NEXT: # %bb.83:6760; RV32I-NEXT: li a7, 06761; RV32I-NEXT: li a3, 06762; RV32I-NEXT: bnez t6, .LBB15_896763; RV32I-NEXT: j .LBB15_906764; RV32I-NEXT: .LBB15_84:6765; RV32I-NEXT: or a6, s9, a36766; RV32I-NEXT: li a3, 06767; RV32I-NEXT: beqz t6, .LBB15_686768; RV32I-NEXT: .LBB15_85:6769; RV32I-NEXT: mv a3, s116770; RV32I-NEXT: bne a5, s8, .LBB15_696771; RV32I-NEXT: .LBB15_86:6772; RV32I-NEXT: or a6, s10, a36773; RV32I-NEXT: mv t0, t56774; RV32I-NEXT: beq a5, s0, .LBB15_706775; RV32I-NEXT: .LBB15_87:6776; RV32I-NEXT: mv t0, a66777; RV32I-NEXT: li a3, 06778; RV32I-NEXT: bne a5, s4, .LBB15_716779; RV32I-NEXT: j .LBB15_726780; RV32I-NEXT: .LBB15_88:6781; RV32I-NEXT: or a7, a3, t06782; RV32I-NEXT: li a3, 06783; RV32I-NEXT: beqz t6, .LBB15_906784; RV32I-NEXT: .LBB15_89:6785; RV32I-NEXT: lw a3, 24(sp) # 4-byte Folded Reload6786; RV32I-NEXT: .LBB15_90:6787; RV32I-NEXT: beq a5, s7, .LBB15_1096788; RV32I-NEXT: # %bb.91:6789; RV32I-NEXT: li a3, 06790; RV32I-NEXT: bnez t6, .LBB15_1106791; RV32I-NEXT: .LBB15_92:6792; RV32I-NEXT: beq a5, s8, .LBB15_1116793; RV32I-NEXT: .LBB15_93:6794; RV32I-NEXT: li a3, 06795; RV32I-NEXT: bnez t6, .LBB15_1126796; RV32I-NEXT: .LBB15_94:6797; RV32I-NEXT: beq a5, s0, .LBB15_1136798; RV32I-NEXT: .LBB15_95:6799; RV32I-NEXT: mv a3, t56800; RV32I-NEXT: beq a5, s4, .LBB15_976801; RV32I-NEXT: .LBB15_96:6802; RV32I-NEXT: mv a3, a76803; RV32I-NEXT: .LBB15_97:6804; RV32I-NEXT: lbu t3, 23(a0)6805; RV32I-NEXT: li t0, 06806; RV32I-NEXT: beq a5, s5, .LBB15_996807; RV32I-NEXT: # %bb.98:6808; RV32I-NEXT: mv t0, a36809; RV32I-NEXT: .LBB15_99:6810; RV32I-NEXT: li a7, 06811; RV32I-NEXT: lbu t1, 21(a0)6812; RV32I-NEXT: lbu a3, 22(a0)6813; RV32I-NEXT: slli t3, t3, 86814; RV32I-NEXT: beq a5, s1, .LBB15_1016815; RV32I-NEXT: # %bb.100:6816; RV32I-NEXT: mv a7, t06817; RV32I-NEXT: .LBB15_101:6818; RV32I-NEXT: sw s9, 12(sp) # 4-byte Folded Spill6819; RV32I-NEXT: li t0, 06820; RV32I-NEXT: lbu t4, 20(a0)6821; RV32I-NEXT: or t3, t3, a36822; RV32I-NEXT: slli t1, t1, 86823; RV32I-NEXT: beq a5, ra, .LBB15_1036824; RV32I-NEXT: # %bb.102:6825; RV32I-NEXT: mv t0, a76826; RV32I-NEXT: .LBB15_103:6827; RV32I-NEXT: or a3, t1, t46828; RV32I-NEXT: slli t3, t3, 166829; RV32I-NEXT: mv s9, a66830; RV32I-NEXT: beqz a1, .LBB15_1056831; RV32I-NEXT: # %bb.104:6832; RV32I-NEXT: mv s9, t06833; RV32I-NEXT: .LBB15_105:6834; RV32I-NEXT: li t1, 06835; RV32I-NEXT: or t0, t3, a36836; RV32I-NEXT: srl a6, a6, s36837; RV32I-NEXT: beqz t6, .LBB15_1076838; RV32I-NEXT: # %bb.106:6839; RV32I-NEXT: mv t1, a66840; RV32I-NEXT: .LBB15_107:6841; RV32I-NEXT: sll a3, t0, a16842; RV32I-NEXT: sw a3, 0(sp) # 4-byte Folded Spill6843; RV32I-NEXT: beqz a5, .LBB15_1146844; RV32I-NEXT: # %bb.108:6845; RV32I-NEXT: li t1, 06846; RV32I-NEXT: li a3, 06847; RV32I-NEXT: bnez t6, .LBB15_1156848; RV32I-NEXT: j .LBB15_1166849; RV32I-NEXT: .LBB15_109:6850; RV32I-NEXT: lw a7, 20(sp) # 4-byte Folded Reload6851; RV32I-NEXT: or a7, a7, a36852; RV32I-NEXT: li a3, 06853; RV32I-NEXT: beqz t6, .LBB15_926854; RV32I-NEXT: .LBB15_110:6855; RV32I-NEXT: mv a3, s26856; RV32I-NEXT: bne a5, s8, .LBB15_936857; RV32I-NEXT: .LBB15_111:6858; RV32I-NEXT: or a7, s9, a36859; RV32I-NEXT: li a3, 06860; RV32I-NEXT: beqz t6, .LBB15_946861; RV32I-NEXT: .LBB15_112:6862; RV32I-NEXT: mv a3, s116863; RV32I-NEXT: bne a5, s0, .LBB15_956864; RV32I-NEXT: .LBB15_113:6865; RV32I-NEXT: or a7, s10, a36866; RV32I-NEXT: mv a3, t56867; RV32I-NEXT: bne a5, s4, .LBB15_966868; RV32I-NEXT: j .LBB15_976869; RV32I-NEXT: .LBB15_114:6870; RV32I-NEXT: or t1, a3, t16871; RV32I-NEXT: li a3, 06872; RV32I-NEXT: beqz t6, .LBB15_1166873; RV32I-NEXT: .LBB15_115:6874; RV32I-NEXT: lw a3, 16(sp) # 4-byte Folded Reload6875; RV32I-NEXT: .LBB15_116:6876; RV32I-NEXT: beq a5, s7, .LBB15_1366877; RV32I-NEXT: # %bb.117:6878; RV32I-NEXT: li a3, 06879; RV32I-NEXT: bnez t6, .LBB15_1376880; RV32I-NEXT: .LBB15_118:6881; RV32I-NEXT: beq a5, s8, .LBB15_1386882; RV32I-NEXT: .LBB15_119:6883; RV32I-NEXT: li a3, 06884; RV32I-NEXT: bnez t6, .LBB15_1396885; RV32I-NEXT: .LBB15_120:6886; RV32I-NEXT: beq a5, s0, .LBB15_1406887; RV32I-NEXT: .LBB15_121:6888; RV32I-NEXT: li a3, 06889; RV32I-NEXT: bnez t6, .LBB15_1416890; RV32I-NEXT: .LBB15_122:6891; RV32I-NEXT: bne a5, s4, .LBB15_1246892; RV32I-NEXT: .LBB15_123:6893; RV32I-NEXT: or t1, s10, a36894; RV32I-NEXT: .LBB15_124:6895; RV32I-NEXT: lbu s0, 27(a0)6896; RV32I-NEXT: mv t3, t56897; RV32I-NEXT: beq a5, s5, .LBB15_1266898; RV32I-NEXT: # %bb.125:6899; RV32I-NEXT: mv t3, t16900; RV32I-NEXT: .LBB15_126:6901; RV32I-NEXT: li t1, 06902; RV32I-NEXT: lbu t4, 25(a0)6903; RV32I-NEXT: lbu a3, 26(a0)6904; RV32I-NEXT: slli s0, s0, 86905; RV32I-NEXT: beq a5, s1, .LBB15_1286906; RV32I-NEXT: # %bb.127:6907; RV32I-NEXT: mv t1, t36908; RV32I-NEXT: .LBB15_128:6909; RV32I-NEXT: li t3, 06910; RV32I-NEXT: lbu s1, 24(a0)6911; RV32I-NEXT: or s0, s0, a36912; RV32I-NEXT: slli a3, t4, 86913; RV32I-NEXT: beq a5, ra, .LBB15_1306914; RV32I-NEXT: # %bb.129:6915; RV32I-NEXT: mv t3, t16916; RV32I-NEXT: .LBB15_130:6917; RV32I-NEXT: or a3, a3, s16918; RV32I-NEXT: slli s0, s0, 166919; RV32I-NEXT: mv ra, t06920; RV32I-NEXT: beqz a1, .LBB15_1326921; RV32I-NEXT: # %bb.131:6922; RV32I-NEXT: mv ra, t36923; RV32I-NEXT: .LBB15_132:6924; RV32I-NEXT: li t4, 06925; RV32I-NEXT: or t3, s0, a36926; RV32I-NEXT: srl t0, t0, s36927; RV32I-NEXT: li s1, 66928; RV32I-NEXT: beqz t6, .LBB15_1346929; RV32I-NEXT: # %bb.133:6930; RV32I-NEXT: mv t4, t06931; RV32I-NEXT: .LBB15_134:6932; RV32I-NEXT: sll t1, t3, a16933; RV32I-NEXT: li s0, 36934; RV32I-NEXT: beqz a5, .LBB15_1426935; RV32I-NEXT: # %bb.135:6936; RV32I-NEXT: li t4, 06937; RV32I-NEXT: li a3, 06938; RV32I-NEXT: bnez t6, .LBB15_1436939; RV32I-NEXT: j .LBB15_1446940; RV32I-NEXT: .LBB15_136:6941; RV32I-NEXT: lw a7, 8(sp) # 4-byte Folded Reload6942; RV32I-NEXT: or t1, a7, a36943; RV32I-NEXT: li a3, 06944; RV32I-NEXT: beqz t6, .LBB15_1186945; RV32I-NEXT: .LBB15_137:6946; RV32I-NEXT: lw a3, 24(sp) # 4-byte Folded Reload6947; RV32I-NEXT: bne a5, s8, .LBB15_1196948; RV32I-NEXT: .LBB15_138:6949; RV32I-NEXT: lw a7, 20(sp) # 4-byte Folded Reload6950; RV32I-NEXT: or t1, a7, a36951; RV32I-NEXT: li a3, 06952; RV32I-NEXT: beqz t6, .LBB15_1206953; RV32I-NEXT: .LBB15_139:6954; RV32I-NEXT: mv a3, s26955; RV32I-NEXT: bne a5, s0, .LBB15_1216956; RV32I-NEXT: .LBB15_140:6957; RV32I-NEXT: lw a7, 12(sp) # 4-byte Folded Reload6958; RV32I-NEXT: or t1, a7, a36959; RV32I-NEXT: li a3, 06960; RV32I-NEXT: beqz t6, .LBB15_1226961; RV32I-NEXT: .LBB15_141:6962; RV32I-NEXT: mv a3, s116963; RV32I-NEXT: beq a5, s4, .LBB15_1236964; RV32I-NEXT: j .LBB15_1246965; RV32I-NEXT: .LBB15_142:6966; RV32I-NEXT: or t4, t1, t46967; RV32I-NEXT: li a3, 06968; RV32I-NEXT: beqz t6, .LBB15_1446969; RV32I-NEXT: .LBB15_143:6970; RV32I-NEXT: mv a3, a66971; RV32I-NEXT: .LBB15_144:6972; RV32I-NEXT: beq a5, s7, .LBB15_1666973; RV32I-NEXT: # %bb.145:6974; RV32I-NEXT: li a3, 06975; RV32I-NEXT: bnez t6, .LBB15_1676976; RV32I-NEXT: .LBB15_146:6977; RV32I-NEXT: beq a5, s8, .LBB15_1686978; RV32I-NEXT: .LBB15_147:6979; RV32I-NEXT: li a3, 06980; RV32I-NEXT: bnez t6, .LBB15_1696981; RV32I-NEXT: .LBB15_148:6982; RV32I-NEXT: beq a5, s0, .LBB15_1706983; RV32I-NEXT: .LBB15_149:6984; RV32I-NEXT: li a3, 06985; RV32I-NEXT: bnez t6, .LBB15_1716986; RV32I-NEXT: .LBB15_150:6987; RV32I-NEXT: bne a5, s4, .LBB15_1526988; RV32I-NEXT: .LBB15_151:6989; RV32I-NEXT: lw a7, 12(sp) # 4-byte Folded Reload6990; RV32I-NEXT: or t4, a7, a36991; RV32I-NEXT: .LBB15_152:6992; RV32I-NEXT: li a7, 16993; RV32I-NEXT: li a3, 06994; RV32I-NEXT: beqz t6, .LBB15_1546995; RV32I-NEXT: # %bb.153:6996; RV32I-NEXT: mv a3, s116997; RV32I-NEXT: .LBB15_154:6998; RV32I-NEXT: li s7, 26999; RV32I-NEXT: li s8, 37000; RV32I-NEXT: bne a5, s5, .LBB15_1567001; RV32I-NEXT: # %bb.155:7002; RV32I-NEXT: or t4, s10, a37003; RV32I-NEXT: .LBB15_156:7004; RV32I-NEXT: lbu s0, 31(a0)7005; RV32I-NEXT: mv a3, t57006; RV32I-NEXT: beq a5, s1, .LBB15_1587007; RV32I-NEXT: # %bb.157:7008; RV32I-NEXT: mv a3, t47009; RV32I-NEXT: .LBB15_158:7010; RV32I-NEXT: li t4, 07011; RV32I-NEXT: lbu s5, 29(a0)7012; RV32I-NEXT: lbu s1, 30(a0)7013; RV32I-NEXT: slli s0, s0, 87014; RV32I-NEXT: li s4, 77015; RV32I-NEXT: beq a5, s4, .LBB15_1607016; RV32I-NEXT: # %bb.159:7017; RV32I-NEXT: mv t4, a37018; RV32I-NEXT: .LBB15_160:7019; RV32I-NEXT: lbu a3, 28(a0)7020; RV32I-NEXT: slli s5, s5, 87021; RV32I-NEXT: or s0, s0, s17022; RV32I-NEXT: mv a0, t37023; RV32I-NEXT: beqz a1, .LBB15_1627024; RV32I-NEXT: # %bb.161:7025; RV32I-NEXT: mv a0, t47026; RV32I-NEXT: .LBB15_162:7027; RV32I-NEXT: li t4, 07028; RV32I-NEXT: or a3, s5, a37029; RV32I-NEXT: slli s0, s0, 167030; RV32I-NEXT: li s1, 67031; RV32I-NEXT: li s4, 47032; RV32I-NEXT: beqz t6, .LBB15_1647033; RV32I-NEXT: # %bb.163:7034; RV32I-NEXT: srl t4, t3, s37035; RV32I-NEXT: .LBB15_164:7036; RV32I-NEXT: or s3, s0, a37037; RV32I-NEXT: li s0, 57038; RV32I-NEXT: beqz a5, .LBB15_1727039; RV32I-NEXT: # %bb.165:7040; RV32I-NEXT: li t3, 07041; RV32I-NEXT: li a3, 07042; RV32I-NEXT: bnez t6, .LBB15_1737043; RV32I-NEXT: j .LBB15_1747044; RV32I-NEXT: .LBB15_166:7045; RV32I-NEXT: lw a7, 0(sp) # 4-byte Folded Reload7046; RV32I-NEXT: or t4, a7, a37047; RV32I-NEXT: li a3, 07048; RV32I-NEXT: beqz t6, .LBB15_1467049; RV32I-NEXT: .LBB15_167:7050; RV32I-NEXT: lw a3, 16(sp) # 4-byte Folded Reload7051; RV32I-NEXT: bne a5, s8, .LBB15_1477052; RV32I-NEXT: .LBB15_168:7053; RV32I-NEXT: lw a7, 8(sp) # 4-byte Folded Reload7054; RV32I-NEXT: or t4, a7, a37055; RV32I-NEXT: li a3, 07056; RV32I-NEXT: beqz t6, .LBB15_1487057; RV32I-NEXT: .LBB15_169:7058; RV32I-NEXT: lw a3, 24(sp) # 4-byte Folded Reload7059; RV32I-NEXT: bne a5, s0, .LBB15_1497060; RV32I-NEXT: .LBB15_170:7061; RV32I-NEXT: lw a7, 20(sp) # 4-byte Folded Reload7062; RV32I-NEXT: or t4, a7, a37063; RV32I-NEXT: li a3, 07064; RV32I-NEXT: beqz t6, .LBB15_1507065; RV32I-NEXT: .LBB15_171:7066; RV32I-NEXT: mv a3, s27067; RV32I-NEXT: beq a5, s4, .LBB15_1517068; RV32I-NEXT: j .LBB15_1527069; RV32I-NEXT: .LBB15_172:7070; RV32I-NEXT: sll a3, s3, a17071; RV32I-NEXT: or t3, a3, t47072; RV32I-NEXT: li a3, 07073; RV32I-NEXT: beqz t6, .LBB15_1747074; RV32I-NEXT: .LBB15_173:7075; RV32I-NEXT: mv a3, t07076; RV32I-NEXT: .LBB15_174:7077; RV32I-NEXT: beq a5, a7, .LBB15_1897078; RV32I-NEXT: # %bb.175:7079; RV32I-NEXT: li a3, 07080; RV32I-NEXT: bnez t6, .LBB15_1907081; RV32I-NEXT: .LBB15_176:7082; RV32I-NEXT: beq a5, s7, .LBB15_1917083; RV32I-NEXT: .LBB15_177:7084; RV32I-NEXT: li a3, 07085; RV32I-NEXT: bnez t6, .LBB15_1927086; RV32I-NEXT: .LBB15_178:7087; RV32I-NEXT: beq a5, s8, .LBB15_1937088; RV32I-NEXT: .LBB15_179:7089; RV32I-NEXT: li a3, 07090; RV32I-NEXT: bnez t6, .LBB15_1947091; RV32I-NEXT: .LBB15_180:7092; RV32I-NEXT: beq a5, s4, .LBB15_1957093; RV32I-NEXT: .LBB15_181:7094; RV32I-NEXT: li a3, 07095; RV32I-NEXT: bnez t6, .LBB15_1967096; RV32I-NEXT: .LBB15_182:7097; RV32I-NEXT: beq a5, s0, .LBB15_1977098; RV32I-NEXT: .LBB15_183:7099; RV32I-NEXT: li a3, 07100; RV32I-NEXT: bnez t6, .LBB15_1987101; RV32I-NEXT: .LBB15_184:7102; RV32I-NEXT: beq a5, s1, .LBB15_1997103; RV32I-NEXT: .LBB15_185:7104; RV32I-NEXT: li a3, 77105; RV32I-NEXT: bne a5, a3, .LBB15_2007106; RV32I-NEXT: .LBB15_186:7107; RV32I-NEXT: beqz a1, .LBB15_1887108; RV32I-NEXT: .LBB15_187:7109; RV32I-NEXT: mv s3, t57110; RV32I-NEXT: .LBB15_188:7111; RV32I-NEXT: srli a1, a4, 167112; RV32I-NEXT: lui a7, 167113; RV32I-NEXT: srli a6, a4, 247114; RV32I-NEXT: srli a3, t2, 167115; RV32I-NEXT: srli t1, t2, 247116; RV32I-NEXT: lw s2, 4(sp) # 4-byte Folded Reload7117; RV32I-NEXT: srli a5, s2, 167118; RV32I-NEXT: srli t5, s2, 247119; RV32I-NEXT: srli t0, s6, 167120; RV32I-NEXT: srli t6, s6, 247121; RV32I-NEXT: srli t4, s9, 167122; RV32I-NEXT: srli s4, s9, 247123; RV32I-NEXT: srli t3, ra, 167124; RV32I-NEXT: srli s1, ra, 247125; RV32I-NEXT: srli s0, a0, 167126; RV32I-NEXT: srli s5, a0, 247127; RV32I-NEXT: srli s7, s3, 167128; RV32I-NEXT: srli s8, s3, 247129; RV32I-NEXT: addi a7, a7, -17130; RV32I-NEXT: and s10, a4, a77131; RV32I-NEXT: and s11, t2, a77132; RV32I-NEXT: srli s10, s10, 87133; RV32I-NEXT: sb a4, 0(a2)7134; RV32I-NEXT: sb s10, 1(a2)7135; RV32I-NEXT: sb a1, 2(a2)7136; RV32I-NEXT: sb a6, 3(a2)7137; RV32I-NEXT: and a1, s2, a77138; RV32I-NEXT: srli a4, s11, 87139; RV32I-NEXT: sb t2, 4(a2)7140; RV32I-NEXT: sb a4, 5(a2)7141; RV32I-NEXT: sb a3, 6(a2)7142; RV32I-NEXT: sb t1, 7(a2)7143; RV32I-NEXT: and a3, s6, a77144; RV32I-NEXT: srli a1, a1, 87145; RV32I-NEXT: sb s2, 8(a2)7146; RV32I-NEXT: sb a1, 9(a2)7147; RV32I-NEXT: sb a5, 10(a2)7148; RV32I-NEXT: sb t5, 11(a2)7149; RV32I-NEXT: and a1, s9, a77150; RV32I-NEXT: srli a3, a3, 87151; RV32I-NEXT: sb s6, 12(a2)7152; RV32I-NEXT: sb a3, 13(a2)7153; RV32I-NEXT: sb t0, 14(a2)7154; RV32I-NEXT: sb t6, 15(a2)7155; RV32I-NEXT: and a3, ra, a77156; RV32I-NEXT: srli a1, a1, 87157; RV32I-NEXT: sb s9, 16(a2)7158; RV32I-NEXT: sb a1, 17(a2)7159; RV32I-NEXT: sb t4, 18(a2)7160; RV32I-NEXT: sb s4, 19(a2)7161; RV32I-NEXT: and a1, a0, a77162; RV32I-NEXT: and a4, s3, a77163; RV32I-NEXT: srli a3, a3, 87164; RV32I-NEXT: srli a1, a1, 87165; RV32I-NEXT: srli a4, a4, 87166; RV32I-NEXT: sb ra, 20(a2)7167; RV32I-NEXT: sb a3, 21(a2)7168; RV32I-NEXT: sb t3, 22(a2)7169; RV32I-NEXT: sb s1, 23(a2)7170; RV32I-NEXT: sb a0, 24(a2)7171; RV32I-NEXT: sb a1, 25(a2)7172; RV32I-NEXT: sb s0, 26(a2)7173; RV32I-NEXT: sb s5, 27(a2)7174; RV32I-NEXT: sb s3, 28(a2)7175; RV32I-NEXT: sb a4, 29(a2)7176; RV32I-NEXT: sb s7, 30(a2)7177; RV32I-NEXT: sb s8, 31(a2)7178; RV32I-NEXT: lw ra, 76(sp) # 4-byte Folded Reload7179; RV32I-NEXT: lw s0, 72(sp) # 4-byte Folded Reload7180; RV32I-NEXT: lw s1, 68(sp) # 4-byte Folded Reload7181; RV32I-NEXT: lw s2, 64(sp) # 4-byte Folded Reload7182; RV32I-NEXT: lw s3, 60(sp) # 4-byte Folded Reload7183; RV32I-NEXT: lw s4, 56(sp) # 4-byte Folded Reload7184; RV32I-NEXT: lw s5, 52(sp) # 4-byte Folded Reload7185; RV32I-NEXT: lw s6, 48(sp) # 4-byte Folded Reload7186; RV32I-NEXT: lw s7, 44(sp) # 4-byte Folded Reload7187; RV32I-NEXT: lw s8, 40(sp) # 4-byte Folded Reload7188; RV32I-NEXT: lw s9, 36(sp) # 4-byte Folded Reload7189; RV32I-NEXT: lw s10, 32(sp) # 4-byte Folded Reload7190; RV32I-NEXT: lw s11, 28(sp) # 4-byte Folded Reload7191; RV32I-NEXT: addi sp, sp, 807192; RV32I-NEXT: ret7193; RV32I-NEXT: .LBB15_189:7194; RV32I-NEXT: or t3, t1, a37195; RV32I-NEXT: li a3, 07196; RV32I-NEXT: beqz t6, .LBB15_1767197; RV32I-NEXT: .LBB15_190:7198; RV32I-NEXT: mv a3, a67199; RV32I-NEXT: bne a5, s7, .LBB15_1777200; RV32I-NEXT: .LBB15_191:7201; RV32I-NEXT: lw a6, 0(sp) # 4-byte Folded Reload7202; RV32I-NEXT: or t3, a6, a37203; RV32I-NEXT: li a3, 07204; RV32I-NEXT: beqz t6, .LBB15_1787205; RV32I-NEXT: .LBB15_192:7206; RV32I-NEXT: lw a3, 16(sp) # 4-byte Folded Reload7207; RV32I-NEXT: bne a5, s8, .LBB15_1797208; RV32I-NEXT: .LBB15_193:7209; RV32I-NEXT: lw a6, 8(sp) # 4-byte Folded Reload7210; RV32I-NEXT: or t3, a6, a37211; RV32I-NEXT: li a3, 07212; RV32I-NEXT: beqz t6, .LBB15_1807213; RV32I-NEXT: .LBB15_194:7214; RV32I-NEXT: lw a3, 24(sp) # 4-byte Folded Reload7215; RV32I-NEXT: bne a5, s4, .LBB15_1817216; RV32I-NEXT: .LBB15_195:7217; RV32I-NEXT: lw a6, 20(sp) # 4-byte Folded Reload7218; RV32I-NEXT: or t3, a6, a37219; RV32I-NEXT: li a3, 07220; RV32I-NEXT: beqz t6, .LBB15_1827221; RV32I-NEXT: .LBB15_196:7222; RV32I-NEXT: mv a3, s27223; RV32I-NEXT: bne a5, s0, .LBB15_1837224; RV32I-NEXT: .LBB15_197:7225; RV32I-NEXT: lw a6, 12(sp) # 4-byte Folded Reload7226; RV32I-NEXT: or t3, a6, a37227; RV32I-NEXT: li a3, 07228; RV32I-NEXT: beqz t6, .LBB15_1847229; RV32I-NEXT: .LBB15_198:7230; RV32I-NEXT: mv a3, s117231; RV32I-NEXT: bne a5, s1, .LBB15_1857232; RV32I-NEXT: .LBB15_199:7233; RV32I-NEXT: or t3, s10, a37234; RV32I-NEXT: li a3, 77235; RV32I-NEXT: beq a5, a3, .LBB15_1867236; RV32I-NEXT: .LBB15_200:7237; RV32I-NEXT: mv t5, t37238; RV32I-NEXT: bnez a1, .LBB15_1877239; RV32I-NEXT: j .LBB15_1887240 %src = load i256, ptr %src.ptr, align 17241 %byteOff = load i256, ptr %byteOff.ptr, align 17242 %bitOff = shl i256 %byteOff, 37243 %res = shl i256 %src, %bitOff7244 store i256 %res, ptr %dst, align 17245 ret void7246}7247 7248define void @shl_32bytes_wordOff(ptr %src.ptr, ptr %wordOff.ptr, ptr %dst) nounwind {7249; RV64I-LABEL: shl_32bytes_wordOff:7250; RV64I: # %bb.0:7251; RV64I-NEXT: addi sp, sp, -1127252; RV64I-NEXT: sd ra, 104(sp) # 8-byte Folded Spill7253; RV64I-NEXT: sd s0, 96(sp) # 8-byte Folded Spill7254; RV64I-NEXT: sd s1, 88(sp) # 8-byte Folded Spill7255; RV64I-NEXT: sd s2, 80(sp) # 8-byte Folded Spill7256; RV64I-NEXT: sd s3, 72(sp) # 8-byte Folded Spill7257; RV64I-NEXT: sd s4, 64(sp) # 8-byte Folded Spill7258; RV64I-NEXT: sd s5, 56(sp) # 8-byte Folded Spill7259; RV64I-NEXT: sd s6, 48(sp) # 8-byte Folded Spill7260; RV64I-NEXT: sd s7, 40(sp) # 8-byte Folded Spill7261; RV64I-NEXT: sd s8, 32(sp) # 8-byte Folded Spill7262; RV64I-NEXT: sd s9, 24(sp) # 8-byte Folded Spill7263; RV64I-NEXT: sd s10, 16(sp) # 8-byte Folded Spill7264; RV64I-NEXT: sd s11, 8(sp) # 8-byte Folded Spill7265; RV64I-NEXT: lbu a3, 0(a0)7266; RV64I-NEXT: lbu a4, 1(a0)7267; RV64I-NEXT: lbu a5, 2(a0)7268; RV64I-NEXT: lbu a6, 3(a0)7269; RV64I-NEXT: lbu a7, 4(a0)7270; RV64I-NEXT: lbu t0, 5(a0)7271; RV64I-NEXT: lbu t1, 6(a0)7272; RV64I-NEXT: lbu t2, 7(a0)7273; RV64I-NEXT: lbu t3, 8(a0)7274; RV64I-NEXT: lbu t4, 9(a0)7275; RV64I-NEXT: lbu t5, 10(a0)7276; RV64I-NEXT: lbu t6, 11(a0)7277; RV64I-NEXT: slli a4, a4, 87278; RV64I-NEXT: or a3, a4, a37279; RV64I-NEXT: lbu a4, 12(a0)7280; RV64I-NEXT: lbu s0, 13(a0)7281; RV64I-NEXT: lbu s1, 14(a0)7282; RV64I-NEXT: lbu s2, 15(a0)7283; RV64I-NEXT: slli a6, a6, 87284; RV64I-NEXT: slli t0, t0, 87285; RV64I-NEXT: slli t2, t2, 87286; RV64I-NEXT: slli t4, t4, 87287; RV64I-NEXT: or s3, a6, a57288; RV64I-NEXT: or a5, t0, a77289; RV64I-NEXT: or a7, t2, t17290; RV64I-NEXT: or a6, t4, t37291; RV64I-NEXT: lbu t0, 0(a1)7292; RV64I-NEXT: lbu t1, 1(a1)7293; RV64I-NEXT: lbu t2, 2(a1)7294; RV64I-NEXT: lbu t3, 3(a1)7295; RV64I-NEXT: slli t6, t6, 87296; RV64I-NEXT: slli s0, s0, 87297; RV64I-NEXT: slli s2, s2, 87298; RV64I-NEXT: or t6, t6, t57299; RV64I-NEXT: or s0, s0, a47300; RV64I-NEXT: or s1, s2, s17301; RV64I-NEXT: lbu a4, 4(a1)7302; RV64I-NEXT: lbu t4, 5(a1)7303; RV64I-NEXT: lbu t5, 6(a1)7304; RV64I-NEXT: lbu a1, 7(a1)7305; RV64I-NEXT: slli t1, t1, 87306; RV64I-NEXT: slli t3, t3, 87307; RV64I-NEXT: slli t4, t4, 87308; RV64I-NEXT: slli a1, a1, 87309; RV64I-NEXT: or t0, t1, t07310; RV64I-NEXT: or t1, t3, t27311; RV64I-NEXT: or t2, t4, a47312; RV64I-NEXT: or a1, a1, t57313; RV64I-NEXT: lbu t5, 19(a0)7314; RV64I-NEXT: lbu t4, 21(a0)7315; RV64I-NEXT: lbu a4, 22(a0)7316; RV64I-NEXT: lbu t3, 23(a0)7317; RV64I-NEXT: slli s3, s3, 167318; RV64I-NEXT: slli a7, a7, 167319; RV64I-NEXT: slli t6, t6, 167320; RV64I-NEXT: slli s1, s1, 167321; RV64I-NEXT: or s4, s3, a37322; RV64I-NEXT: or a5, a7, a57323; RV64I-NEXT: or a6, t6, a67324; RV64I-NEXT: or s0, s1, s07325; RV64I-NEXT: lbu s1, 27(a0)7326; RV64I-NEXT: lbu t6, 29(a0)7327; RV64I-NEXT: lbu a3, 30(a0)7328; RV64I-NEXT: lbu s2, 31(a0)7329; RV64I-NEXT: slli t1, t1, 167330; RV64I-NEXT: or s5, t1, t07331; RV64I-NEXT: li a7, 1287332; RV64I-NEXT: slli a1, a1, 167333; RV64I-NEXT: or a1, a1, t27334; RV64I-NEXT: li t0, 647335; RV64I-NEXT: slli s3, t3, 87336; RV64I-NEXT: slli s2, s2, 87337; RV64I-NEXT: slli a5, a5, 327338; RV64I-NEXT: slli s0, s0, 327339; RV64I-NEXT: slli a1, a1, 327340; RV64I-NEXT: or t1, a5, s47341; RV64I-NEXT: or a5, s0, a67342; RV64I-NEXT: or a6, a1, s57343; RV64I-NEXT: slli a6, a6, 57344; RV64I-NEXT: sub t2, a6, t07345; RV64I-NEXT: neg t3, a67346; RV64I-NEXT: srl s0, t1, t37347; RV64I-NEXT: bltu a6, t0, .LBB16_27348; RV64I-NEXT: # %bb.1:7349; RV64I-NEXT: li a1, 07350; RV64I-NEXT: sll s4, t1, t27351; RV64I-NEXT: j .LBB16_37352; RV64I-NEXT: .LBB16_2:7353; RV64I-NEXT: sll a1, t1, a67354; RV64I-NEXT: sll s4, a5, a67355; RV64I-NEXT: or s4, s0, s47356; RV64I-NEXT: .LBB16_3:7357; RV64I-NEXT: slli t5, t5, 87358; RV64I-NEXT: slli t4, t4, 87359; RV64I-NEXT: or s3, s3, a47360; RV64I-NEXT: lbu ra, 17(a0)7361; RV64I-NEXT: lbu s11, 18(a0)7362; RV64I-NEXT: lbu s8, 20(a0)7363; RV64I-NEXT: lbu s5, 25(a0)7364; RV64I-NEXT: slli s1, s1, 87365; RV64I-NEXT: lbu s7, 26(a0)7366; RV64I-NEXT: lbu s6, 28(a0)7367; RV64I-NEXT: slli s10, t6, 87368; RV64I-NEXT: or s9, s2, a37369; RV64I-NEXT: sub a4, a7, a67370; RV64I-NEXT: mv a3, a57371; RV64I-NEXT: beqz a6, .LBB16_57372; RV64I-NEXT: # %bb.4:7373; RV64I-NEXT: mv a3, s47374; RV64I-NEXT: .LBB16_5:7375; RV64I-NEXT: slli t6, ra, 87376; RV64I-NEXT: or t5, t5, s117377; RV64I-NEXT: or t4, t4, s87378; RV64I-NEXT: slli s3, s3, 167379; RV64I-NEXT: lbu s8, 16(a0)7380; RV64I-NEXT: lbu a0, 24(a0)7381; RV64I-NEXT: slli s5, s5, 87382; RV64I-NEXT: or s2, s1, s77383; RV64I-NEXT: or s1, s10, s67384; RV64I-NEXT: slli s4, s9, 167385; RV64I-NEXT: bltu a4, t0, .LBB16_77386; RV64I-NEXT: # %bb.6:7387; RV64I-NEXT: sub s0, a4, t07388; RV64I-NEXT: srl s0, a5, s07389; RV64I-NEXT: j .LBB16_87390; RV64I-NEXT: .LBB16_7:7391; RV64I-NEXT: neg s6, a47392; RV64I-NEXT: sll s6, a5, s67393; RV64I-NEXT: or s0, s0, s67394; RV64I-NEXT: .LBB16_8:7395; RV64I-NEXT: or t6, t6, s87396; RV64I-NEXT: slli s6, t5, 167397; RV64I-NEXT: or s3, s3, t47398; RV64I-NEXT: or t5, s5, a07399; RV64I-NEXT: slli s2, s2, 167400; RV64I-NEXT: or s1, s4, s17401; RV64I-NEXT: mv t4, t17402; RV64I-NEXT: beqz a4, .LBB16_107403; RV64I-NEXT: # %bb.9:7404; RV64I-NEXT: mv t4, s07405; RV64I-NEXT: .LBB16_10:7406; RV64I-NEXT: or a0, s6, t67407; RV64I-NEXT: slli s0, s3, 327408; RV64I-NEXT: or t6, s2, t57409; RV64I-NEXT: slli s1, s1, 327410; RV64I-NEXT: bltu a4, t0, .LBB16_127411; RV64I-NEXT: # %bb.11:7412; RV64I-NEXT: li t5, 07413; RV64I-NEXT: j .LBB16_137414; RV64I-NEXT: .LBB16_12:7415; RV64I-NEXT: srl t5, a5, t37416; RV64I-NEXT: .LBB16_13:7417; RV64I-NEXT: or a4, s0, a07418; RV64I-NEXT: or a0, s1, t67419; RV64I-NEXT: bltu a6, t0, .LBB16_157420; RV64I-NEXT: # %bb.14:7421; RV64I-NEXT: li t6, 07422; RV64I-NEXT: sll t2, a4, t27423; RV64I-NEXT: j .LBB16_167424; RV64I-NEXT: .LBB16_15:7425; RV64I-NEXT: sll t6, a4, a67426; RV64I-NEXT: srl t2, a4, t37427; RV64I-NEXT: sll t3, a0, a67428; RV64I-NEXT: or t2, t2, t37429; RV64I-NEXT: .LBB16_16:7430; RV64I-NEXT: sub s0, a6, a77431; RV64I-NEXT: mv t3, a07432; RV64I-NEXT: beqz a6, .LBB16_187433; RV64I-NEXT: # %bb.17:7434; RV64I-NEXT: mv t3, t27435; RV64I-NEXT: .LBB16_18:7436; RV64I-NEXT: bltu s0, t0, .LBB16_207437; RV64I-NEXT: # %bb.19:7438; RV64I-NEXT: li t2, 07439; RV64I-NEXT: sub t0, s0, t07440; RV64I-NEXT: sll t0, t1, t07441; RV64I-NEXT: bnez s0, .LBB16_217442; RV64I-NEXT: j .LBB16_227443; RV64I-NEXT: .LBB16_20:7444; RV64I-NEXT: sll t2, t1, s07445; RV64I-NEXT: neg t0, s07446; RV64I-NEXT: srl t0, t1, t07447; RV64I-NEXT: sll t1, a5, s07448; RV64I-NEXT: or t0, t0, t17449; RV64I-NEXT: beqz s0, .LBB16_227450; RV64I-NEXT: .LBB16_21:7451; RV64I-NEXT: mv a5, t07452; RV64I-NEXT: .LBB16_22:7453; RV64I-NEXT: bltu a6, a7, .LBB16_247454; RV64I-NEXT: # %bb.23:7455; RV64I-NEXT: li a1, 07456; RV64I-NEXT: li a3, 07457; RV64I-NEXT: bnez a6, .LBB16_257458; RV64I-NEXT: j .LBB16_267459; RV64I-NEXT: .LBB16_24:7460; RV64I-NEXT: or t2, t4, t67461; RV64I-NEXT: or a5, t5, t37462; RV64I-NEXT: beqz a6, .LBB16_267463; RV64I-NEXT: .LBB16_25:7464; RV64I-NEXT: mv a4, t27465; RV64I-NEXT: mv a0, a57466; RV64I-NEXT: .LBB16_26:7467; RV64I-NEXT: srli a5, a1, 327468; RV64I-NEXT: srliw a6, a1, 167469; RV64I-NEXT: lui t2, 167470; RV64I-NEXT: srliw t1, a1, 247471; RV64I-NEXT: srli t0, a1, 487472; RV64I-NEXT: srli t5, a1, 567473; RV64I-NEXT: srli a7, a3, 327474; RV64I-NEXT: srliw t4, a3, 167475; RV64I-NEXT: srliw s0, a3, 247476; RV64I-NEXT: srli t6, a3, 487477; RV64I-NEXT: srli s3, a3, 567478; RV64I-NEXT: srli t3, a4, 327479; RV64I-NEXT: srliw s2, a4, 167480; RV64I-NEXT: srliw s6, a4, 247481; RV64I-NEXT: srli s4, a4, 487482; RV64I-NEXT: srli s7, a4, 567483; RV64I-NEXT: srli s1, a0, 327484; RV64I-NEXT: srliw s5, a0, 167485; RV64I-NEXT: srliw s8, a0, 247486; RV64I-NEXT: srli s9, a0, 487487; RV64I-NEXT: srli s10, a0, 567488; RV64I-NEXT: addi t2, t2, -17489; RV64I-NEXT: and s11, a1, t27490; RV64I-NEXT: srli s11, s11, 87491; RV64I-NEXT: sb a1, 0(a2)7492; RV64I-NEXT: sb s11, 1(a2)7493; RV64I-NEXT: sb a6, 2(a2)7494; RV64I-NEXT: sb t1, 3(a2)7495; RV64I-NEXT: and a1, a5, t27496; RV64I-NEXT: srli a1, a1, 87497; RV64I-NEXT: sb a5, 4(a2)7498; RV64I-NEXT: sb a1, 5(a2)7499; RV64I-NEXT: sb t0, 6(a2)7500; RV64I-NEXT: sb t5, 7(a2)7501; RV64I-NEXT: and a1, a3, t27502; RV64I-NEXT: srli a1, a1, 87503; RV64I-NEXT: sb a3, 8(a2)7504; RV64I-NEXT: sb a1, 9(a2)7505; RV64I-NEXT: sb t4, 10(a2)7506; RV64I-NEXT: sb s0, 11(a2)7507; RV64I-NEXT: and a1, a7, t27508; RV64I-NEXT: srli a1, a1, 87509; RV64I-NEXT: sb a7, 12(a2)7510; RV64I-NEXT: sb a1, 13(a2)7511; RV64I-NEXT: sb t6, 14(a2)7512; RV64I-NEXT: sb s3, 15(a2)7513; RV64I-NEXT: and a1, a4, t27514; RV64I-NEXT: srli a1, a1, 87515; RV64I-NEXT: sb a4, 16(a2)7516; RV64I-NEXT: sb a1, 17(a2)7517; RV64I-NEXT: sb s2, 18(a2)7518; RV64I-NEXT: sb s6, 19(a2)7519; RV64I-NEXT: and a1, t3, t27520; RV64I-NEXT: srli a1, a1, 87521; RV64I-NEXT: sb t3, 20(a2)7522; RV64I-NEXT: sb a1, 21(a2)7523; RV64I-NEXT: sb s4, 22(a2)7524; RV64I-NEXT: sb s7, 23(a2)7525; RV64I-NEXT: and a1, a0, t27526; RV64I-NEXT: and a3, s1, t27527; RV64I-NEXT: srli a1, a1, 87528; RV64I-NEXT: srli a3, a3, 87529; RV64I-NEXT: sb a0, 24(a2)7530; RV64I-NEXT: sb a1, 25(a2)7531; RV64I-NEXT: sb s5, 26(a2)7532; RV64I-NEXT: sb s8, 27(a2)7533; RV64I-NEXT: sb s1, 28(a2)7534; RV64I-NEXT: sb a3, 29(a2)7535; RV64I-NEXT: sb s9, 30(a2)7536; RV64I-NEXT: sb s10, 31(a2)7537; RV64I-NEXT: ld ra, 104(sp) # 8-byte Folded Reload7538; RV64I-NEXT: ld s0, 96(sp) # 8-byte Folded Reload7539; RV64I-NEXT: ld s1, 88(sp) # 8-byte Folded Reload7540; RV64I-NEXT: ld s2, 80(sp) # 8-byte Folded Reload7541; RV64I-NEXT: ld s3, 72(sp) # 8-byte Folded Reload7542; RV64I-NEXT: ld s4, 64(sp) # 8-byte Folded Reload7543; RV64I-NEXT: ld s5, 56(sp) # 8-byte Folded Reload7544; RV64I-NEXT: ld s6, 48(sp) # 8-byte Folded Reload7545; RV64I-NEXT: ld s7, 40(sp) # 8-byte Folded Reload7546; RV64I-NEXT: ld s8, 32(sp) # 8-byte Folded Reload7547; RV64I-NEXT: ld s9, 24(sp) # 8-byte Folded Reload7548; RV64I-NEXT: ld s10, 16(sp) # 8-byte Folded Reload7549; RV64I-NEXT: ld s11, 8(sp) # 8-byte Folded Reload7550; RV64I-NEXT: addi sp, sp, 1127551; RV64I-NEXT: ret7552;7553; RV32I-LABEL: shl_32bytes_wordOff:7554; RV32I: # %bb.0:7555; RV32I-NEXT: addi sp, sp, -807556; RV32I-NEXT: sw ra, 76(sp) # 4-byte Folded Spill7557; RV32I-NEXT: sw s0, 72(sp) # 4-byte Folded Spill7558; RV32I-NEXT: sw s1, 68(sp) # 4-byte Folded Spill7559; RV32I-NEXT: sw s2, 64(sp) # 4-byte Folded Spill7560; RV32I-NEXT: sw s3, 60(sp) # 4-byte Folded Spill7561; RV32I-NEXT: sw s4, 56(sp) # 4-byte Folded Spill7562; RV32I-NEXT: sw s5, 52(sp) # 4-byte Folded Spill7563; RV32I-NEXT: sw s6, 48(sp) # 4-byte Folded Spill7564; RV32I-NEXT: sw s7, 44(sp) # 4-byte Folded Spill7565; RV32I-NEXT: sw s8, 40(sp) # 4-byte Folded Spill7566; RV32I-NEXT: sw s9, 36(sp) # 4-byte Folded Spill7567; RV32I-NEXT: sw s10, 32(sp) # 4-byte Folded Spill7568; RV32I-NEXT: sw s11, 28(sp) # 4-byte Folded Spill7569; RV32I-NEXT: lbu a3, 1(a0)7570; RV32I-NEXT: lbu a4, 0(a0)7571; RV32I-NEXT: lbu a5, 2(a0)7572; RV32I-NEXT: lbu a6, 3(a0)7573; RV32I-NEXT: slli a3, a3, 87574; RV32I-NEXT: or a3, a3, a47575; RV32I-NEXT: lbu a4, 0(a1)7576; RV32I-NEXT: lbu a7, 1(a1)7577; RV32I-NEXT: lbu t0, 2(a1)7578; RV32I-NEXT: lbu a1, 3(a1)7579; RV32I-NEXT: slli a6, a6, 87580; RV32I-NEXT: or a5, a6, a57581; RV32I-NEXT: slli a7, a7, 87582; RV32I-NEXT: slli a1, a1, 87583; RV32I-NEXT: or a4, a7, a47584; RV32I-NEXT: or a1, a1, t07585; RV32I-NEXT: slli a5, a5, 167586; RV32I-NEXT: slli a1, a1, 167587; RV32I-NEXT: or a6, a5, a37588; RV32I-NEXT: or a1, a1, a47589; RV32I-NEXT: slli a1, a1, 57590; RV32I-NEXT: srli a5, a1, 57591; RV32I-NEXT: sll t5, a6, a17592; RV32I-NEXT: li s9, 17593; RV32I-NEXT: mv a4, t57594; RV32I-NEXT: beqz a5, .LBB16_27595; RV32I-NEXT: # %bb.1:7596; RV32I-NEXT: li a4, 07597; RV32I-NEXT: .LBB16_2:7598; RV32I-NEXT: li a3, 07599; RV32I-NEXT: li s0, 27600; RV32I-NEXT: beq a5, s9, .LBB16_47601; RV32I-NEXT: # %bb.3:7602; RV32I-NEXT: mv a3, a47603; RV32I-NEXT: .LBB16_4:7604; RV32I-NEXT: li a7, 07605; RV32I-NEXT: beq a5, s0, .LBB16_67606; RV32I-NEXT: # %bb.5:7607; RV32I-NEXT: mv a7, a37608; RV32I-NEXT: .LBB16_6:7609; RV32I-NEXT: li a4, 07610; RV32I-NEXT: li s6, 37611; RV32I-NEXT: li s4, 47612; RV32I-NEXT: beq a5, s6, .LBB16_87613; RV32I-NEXT: # %bb.7:7614; RV32I-NEXT: mv a4, a77615; RV32I-NEXT: .LBB16_8:7616; RV32I-NEXT: li t0, 07617; RV32I-NEXT: li s11, 57618; RV32I-NEXT: beq a5, s4, .LBB16_107619; RV32I-NEXT: # %bb.9:7620; RV32I-NEXT: mv t0, a47621; RV32I-NEXT: .LBB16_10:7622; RV32I-NEXT: lbu t2, 7(a0)7623; RV32I-NEXT: li a7, 07624; RV32I-NEXT: beq a5, s11, .LBB16_127625; RV32I-NEXT: # %bb.11:7626; RV32I-NEXT: mv a7, t07627; RV32I-NEXT: .LBB16_12:7628; RV32I-NEXT: li a4, 07629; RV32I-NEXT: lbu t0, 5(a0)7630; RV32I-NEXT: lbu t1, 6(a0)7631; RV32I-NEXT: li s1, 67632; RV32I-NEXT: slli t2, t2, 87633; RV32I-NEXT: beq a5, s1, .LBB16_147634; RV32I-NEXT: # %bb.13:7635; RV32I-NEXT: mv a4, a77636; RV32I-NEXT: .LBB16_14:7637; RV32I-NEXT: li a7, 07638; RV32I-NEXT: lbu a3, 4(a0)7639; RV32I-NEXT: or t1, t2, t17640; RV32I-NEXT: li ra, 77641; RV32I-NEXT: slli t0, t0, 87642; RV32I-NEXT: beq a5, ra, .LBB16_167643; RV32I-NEXT: # %bb.15:7644; RV32I-NEXT: mv a7, a47645; RV32I-NEXT: .LBB16_16:7646; RV32I-NEXT: or a3, t0, a37647; RV32I-NEXT: slli t1, t1, 167648; RV32I-NEXT: andi t6, a1, 317649; RV32I-NEXT: mv a4, a67650; RV32I-NEXT: beqz a1, .LBB16_187651; RV32I-NEXT: # %bb.17:7652; RV32I-NEXT: mv a4, a77653; RV32I-NEXT: .LBB16_18:7654; RV32I-NEXT: li t0, 07655; RV32I-NEXT: or a7, t1, a37656; RV32I-NEXT: neg s3, t67657; RV32I-NEXT: srl s5, a6, s37658; RV32I-NEXT: beqz t6, .LBB16_207659; RV32I-NEXT: # %bb.19:7660; RV32I-NEXT: mv t0, s57661; RV32I-NEXT: .LBB16_20:7662; RV32I-NEXT: sll s7, a7, a17663; RV32I-NEXT: beqz a5, .LBB16_227664; RV32I-NEXT: # %bb.21:7665; RV32I-NEXT: li a3, 07666; RV32I-NEXT: mv a6, t57667; RV32I-NEXT: bne a5, s9, .LBB16_237668; RV32I-NEXT: j .LBB16_247669; RV32I-NEXT: .LBB16_22:7670; RV32I-NEXT: or a3, s7, t07671; RV32I-NEXT: mv a6, t57672; RV32I-NEXT: beq a5, s9, .LBB16_247673; RV32I-NEXT: .LBB16_23:7674; RV32I-NEXT: mv a6, a37675; RV32I-NEXT: .LBB16_24:7676; RV32I-NEXT: li a3, 07677; RV32I-NEXT: bne a5, s0, .LBB16_407678; RV32I-NEXT: # %bb.25:7679; RV32I-NEXT: li a6, 07680; RV32I-NEXT: bne a5, s6, .LBB16_417681; RV32I-NEXT: .LBB16_26:7682; RV32I-NEXT: li a3, 07683; RV32I-NEXT: beq a5, s4, .LBB16_287684; RV32I-NEXT: .LBB16_27:7685; RV32I-NEXT: mv a3, a67686; RV32I-NEXT: .LBB16_28:7687; RV32I-NEXT: lbu t2, 11(a0)7688; RV32I-NEXT: li t0, 07689; RV32I-NEXT: beq a5, s11, .LBB16_307690; RV32I-NEXT: # %bb.29:7691; RV32I-NEXT: mv t0, a37692; RV32I-NEXT: .LBB16_30:7693; RV32I-NEXT: li a6, 07694; RV32I-NEXT: lbu t1, 9(a0)7695; RV32I-NEXT: lbu a3, 10(a0)7696; RV32I-NEXT: slli t2, t2, 87697; RV32I-NEXT: beq a5, s1, .LBB16_327698; RV32I-NEXT: # %bb.31:7699; RV32I-NEXT: mv a6, t07700; RV32I-NEXT: .LBB16_32:7701; RV32I-NEXT: li t0, 07702; RV32I-NEXT: lbu t3, 8(a0)7703; RV32I-NEXT: or t2, t2, a37704; RV32I-NEXT: slli t1, t1, 87705; RV32I-NEXT: beq a5, ra, .LBB16_347706; RV32I-NEXT: # %bb.33:7707; RV32I-NEXT: mv t0, a67708; RV32I-NEXT: .LBB16_34:7709; RV32I-NEXT: or a3, t1, t37710; RV32I-NEXT: slli a6, t2, 167711; RV32I-NEXT: mv t2, a77712; RV32I-NEXT: beqz a1, .LBB16_367713; RV32I-NEXT: # %bb.35:7714; RV32I-NEXT: mv t2, t07715; RV32I-NEXT: .LBB16_36:7716; RV32I-NEXT: li t0, 07717; RV32I-NEXT: or a6, a6, a37718; RV32I-NEXT: srl s8, a7, s37719; RV32I-NEXT: beqz t6, .LBB16_387720; RV32I-NEXT: # %bb.37:7721; RV32I-NEXT: mv t0, s87722; RV32I-NEXT: .LBB16_38:7723; RV32I-NEXT: sll s10, a6, a17724; RV32I-NEXT: beqz a5, .LBB16_427725; RV32I-NEXT: # %bb.39:7726; RV32I-NEXT: li a7, 07727; RV32I-NEXT: li a3, 07728; RV32I-NEXT: bnez t6, .LBB16_437729; RV32I-NEXT: j .LBB16_447730; RV32I-NEXT: .LBB16_40:7731; RV32I-NEXT: mv a3, a67732; RV32I-NEXT: li a6, 07733; RV32I-NEXT: beq a5, s6, .LBB16_267734; RV32I-NEXT: .LBB16_41:7735; RV32I-NEXT: mv a6, a37736; RV32I-NEXT: li a3, 07737; RV32I-NEXT: bne a5, s4, .LBB16_277738; RV32I-NEXT: j .LBB16_287739; RV32I-NEXT: .LBB16_42:7740; RV32I-NEXT: or a7, s10, t07741; RV32I-NEXT: li a3, 07742; RV32I-NEXT: beqz t6, .LBB16_447743; RV32I-NEXT: .LBB16_43:7744; RV32I-NEXT: mv a3, s57745; RV32I-NEXT: .LBB16_44:7746; RV32I-NEXT: beq a5, s9, .LBB16_617747; RV32I-NEXT: # %bb.45:7748; RV32I-NEXT: mv a3, t57749; RV32I-NEXT: bne a5, s0, .LBB16_627750; RV32I-NEXT: .LBB16_46:7751; RV32I-NEXT: li a7, 07752; RV32I-NEXT: bne a5, s6, .LBB16_637753; RV32I-NEXT: .LBB16_47:7754; RV32I-NEXT: li a3, 07755; RV32I-NEXT: beq a5, s4, .LBB16_497756; RV32I-NEXT: .LBB16_48:7757; RV32I-NEXT: mv a3, a77758; RV32I-NEXT: .LBB16_49:7759; RV32I-NEXT: lbu t3, 15(a0)7760; RV32I-NEXT: li t0, 07761; RV32I-NEXT: beq a5, s11, .LBB16_517762; RV32I-NEXT: # %bb.50:7763; RV32I-NEXT: mv t0, a37764; RV32I-NEXT: .LBB16_51:7765; RV32I-NEXT: li a7, 07766; RV32I-NEXT: lbu t1, 13(a0)7767; RV32I-NEXT: lbu a3, 14(a0)7768; RV32I-NEXT: slli t3, t3, 87769; RV32I-NEXT: beq a5, s1, .LBB16_537770; RV32I-NEXT: # %bb.52:7771; RV32I-NEXT: mv a7, t07772; RV32I-NEXT: .LBB16_53:7773; RV32I-NEXT: li t0, 07774; RV32I-NEXT: lbu t4, 12(a0)7775; RV32I-NEXT: or t3, t3, a37776; RV32I-NEXT: slli t1, t1, 87777; RV32I-NEXT: beq a5, ra, .LBB16_557778; RV32I-NEXT: # %bb.54:7779; RV32I-NEXT: mv t0, a77780; RV32I-NEXT: .LBB16_55:7781; RV32I-NEXT: or a3, t1, t47782; RV32I-NEXT: slli t3, t3, 167783; RV32I-NEXT: mv s2, a67784; RV32I-NEXT: beqz a1, .LBB16_577785; RV32I-NEXT: # %bb.56:7786; RV32I-NEXT: mv s2, t07787; RV32I-NEXT: .LBB16_57:7788; RV32I-NEXT: li t0, 07789; RV32I-NEXT: or a7, t3, a37790; RV32I-NEXT: srl a3, a6, s37791; RV32I-NEXT: sw a3, 24(sp) # 4-byte Folded Spill7792; RV32I-NEXT: beqz t6, .LBB16_597793; RV32I-NEXT: # %bb.58:7794; RV32I-NEXT: lw t0, 24(sp) # 4-byte Folded Reload7795; RV32I-NEXT: .LBB16_59:7796; RV32I-NEXT: sll a3, a7, a17797; RV32I-NEXT: sw a3, 20(sp) # 4-byte Folded Spill7798; RV32I-NEXT: beqz a5, .LBB16_647799; RV32I-NEXT: # %bb.60:7800; RV32I-NEXT: li a6, 07801; RV32I-NEXT: li a3, 07802; RV32I-NEXT: bnez t6, .LBB16_657803; RV32I-NEXT: j .LBB16_667804; RV32I-NEXT: .LBB16_61:7805; RV32I-NEXT: or a7, s7, a37806; RV32I-NEXT: mv a3, t57807; RV32I-NEXT: beq a5, s0, .LBB16_467808; RV32I-NEXT: .LBB16_62:7809; RV32I-NEXT: mv a3, a77810; RV32I-NEXT: li a7, 07811; RV32I-NEXT: beq a5, s6, .LBB16_477812; RV32I-NEXT: .LBB16_63:7813; RV32I-NEXT: mv a7, a37814; RV32I-NEXT: li a3, 07815; RV32I-NEXT: bne a5, s4, .LBB16_487816; RV32I-NEXT: j .LBB16_497817; RV32I-NEXT: .LBB16_64:7818; RV32I-NEXT: or a6, a3, t07819; RV32I-NEXT: li a3, 07820; RV32I-NEXT: beqz t6, .LBB16_667821; RV32I-NEXT: .LBB16_65:7822; RV32I-NEXT: mv a3, s87823; RV32I-NEXT: .LBB16_66:7824; RV32I-NEXT: beq a5, s9, .LBB16_847825; RV32I-NEXT: # %bb.67:7826; RV32I-NEXT: li a3, 07827; RV32I-NEXT: bnez t6, .LBB16_857828; RV32I-NEXT: .LBB16_68:7829; RV32I-NEXT: beq a5, s0, .LBB16_867830; RV32I-NEXT: .LBB16_69:7831; RV32I-NEXT: mv t0, t57832; RV32I-NEXT: bne a5, s6, .LBB16_877833; RV32I-NEXT: .LBB16_70:7834; RV32I-NEXT: li a3, 07835; RV32I-NEXT: beq a5, s4, .LBB16_727836; RV32I-NEXT: .LBB16_71:7837; RV32I-NEXT: mv a3, t07838; RV32I-NEXT: .LBB16_72:7839; RV32I-NEXT: lbu t3, 19(a0)7840; RV32I-NEXT: li t0, 07841; RV32I-NEXT: beq a5, s11, .LBB16_747842; RV32I-NEXT: # %bb.73:7843; RV32I-NEXT: mv t0, a37844; RV32I-NEXT: .LBB16_74:7845; RV32I-NEXT: li a6, 07846; RV32I-NEXT: lbu t1, 17(a0)7847; RV32I-NEXT: lbu a3, 18(a0)7848; RV32I-NEXT: slli t3, t3, 87849; RV32I-NEXT: beq a5, s1, .LBB16_767850; RV32I-NEXT: # %bb.75:7851; RV32I-NEXT: mv a6, t07852; RV32I-NEXT: .LBB16_76:7853; RV32I-NEXT: li t0, 07854; RV32I-NEXT: lbu t4, 16(a0)7855; RV32I-NEXT: or t3, t3, a37856; RV32I-NEXT: slli t1, t1, 87857; RV32I-NEXT: beq a5, ra, .LBB16_787858; RV32I-NEXT: # %bb.77:7859; RV32I-NEXT: mv t0, a67860; RV32I-NEXT: .LBB16_78:7861; RV32I-NEXT: or a3, t1, t47862; RV32I-NEXT: slli t3, t3, 167863; RV32I-NEXT: mv s6, a77864; RV32I-NEXT: beqz a1, .LBB16_807865; RV32I-NEXT: # %bb.79:7866; RV32I-NEXT: mv s6, t07867; RV32I-NEXT: .LBB16_80:7868; RV32I-NEXT: li t0, 07869; RV32I-NEXT: or a6, t3, a37870; RV32I-NEXT: srl a3, a7, s37871; RV32I-NEXT: sw a3, 16(sp) # 4-byte Folded Spill7872; RV32I-NEXT: beqz t6, .LBB16_827873; RV32I-NEXT: # %bb.81:7874; RV32I-NEXT: lw t0, 16(sp) # 4-byte Folded Reload7875; RV32I-NEXT: .LBB16_82:7876; RV32I-NEXT: sll a3, a6, a17877; RV32I-NEXT: sw a3, 12(sp) # 4-byte Folded Spill7878; RV32I-NEXT: beqz a5, .LBB16_887879; RV32I-NEXT: # %bb.83:7880; RV32I-NEXT: li a7, 07881; RV32I-NEXT: li a3, 07882; RV32I-NEXT: bnez t6, .LBB16_897883; RV32I-NEXT: j .LBB16_907884; RV32I-NEXT: .LBB16_84:7885; RV32I-NEXT: or a6, s10, a37886; RV32I-NEXT: li a3, 07887; RV32I-NEXT: beqz t6, .LBB16_687888; RV32I-NEXT: .LBB16_85:7889; RV32I-NEXT: mv a3, s57890; RV32I-NEXT: bne a5, s0, .LBB16_697891; RV32I-NEXT: .LBB16_86:7892; RV32I-NEXT: or a6, s7, a37893; RV32I-NEXT: mv t0, t57894; RV32I-NEXT: beq a5, s6, .LBB16_707895; RV32I-NEXT: .LBB16_87:7896; RV32I-NEXT: mv t0, a67897; RV32I-NEXT: li a3, 07898; RV32I-NEXT: bne a5, s4, .LBB16_717899; RV32I-NEXT: j .LBB16_727900; RV32I-NEXT: .LBB16_88:7901; RV32I-NEXT: or a7, a3, t07902; RV32I-NEXT: li a3, 07903; RV32I-NEXT: beqz t6, .LBB16_907904; RV32I-NEXT: .LBB16_89:7905; RV32I-NEXT: lw a3, 24(sp) # 4-byte Folded Reload7906; RV32I-NEXT: .LBB16_90:7907; RV32I-NEXT: beq a5, s9, .LBB16_1097908; RV32I-NEXT: # %bb.91:7909; RV32I-NEXT: li a3, 07910; RV32I-NEXT: bnez t6, .LBB16_1107911; RV32I-NEXT: .LBB16_92:7912; RV32I-NEXT: beq a5, s0, .LBB16_1117913; RV32I-NEXT: .LBB16_93:7914; RV32I-NEXT: li a3, 07915; RV32I-NEXT: bnez t6, .LBB16_1127916; RV32I-NEXT: .LBB16_94:7917; RV32I-NEXT: li t0, 37918; RV32I-NEXT: beq a5, t0, .LBB16_1137919; RV32I-NEXT: .LBB16_95:7920; RV32I-NEXT: mv a3, t57921; RV32I-NEXT: beq a5, s4, .LBB16_977922; RV32I-NEXT: .LBB16_96:7923; RV32I-NEXT: mv a3, a77924; RV32I-NEXT: .LBB16_97:7925; RV32I-NEXT: lbu t3, 23(a0)7926; RV32I-NEXT: li t0, 07927; RV32I-NEXT: beq a5, s11, .LBB16_997928; RV32I-NEXT: # %bb.98:7929; RV32I-NEXT: mv t0, a37930; RV32I-NEXT: .LBB16_99:7931; RV32I-NEXT: li a7, 07932; RV32I-NEXT: lbu t1, 21(a0)7933; RV32I-NEXT: lbu a3, 22(a0)7934; RV32I-NEXT: slli t3, t3, 87935; RV32I-NEXT: beq a5, s1, .LBB16_1017936; RV32I-NEXT: # %bb.100:7937; RV32I-NEXT: mv a7, t07938; RV32I-NEXT: .LBB16_101:7939; RV32I-NEXT: li t0, 07940; RV32I-NEXT: lbu t4, 20(a0)7941; RV32I-NEXT: or t3, t3, a37942; RV32I-NEXT: slli t1, t1, 87943; RV32I-NEXT: beq a5, ra, .LBB16_1037944; RV32I-NEXT: # %bb.102:7945; RV32I-NEXT: mv t0, a77946; RV32I-NEXT: .LBB16_103:7947; RV32I-NEXT: or a3, t1, t47948; RV32I-NEXT: slli t3, t3, 167949; RV32I-NEXT: mv s9, a67950; RV32I-NEXT: beqz a1, .LBB16_1057951; RV32I-NEXT: # %bb.104:7952; RV32I-NEXT: mv s9, t07953; RV32I-NEXT: .LBB16_105:7954; RV32I-NEXT: li t1, 07955; RV32I-NEXT: or t0, t3, a37956; RV32I-NEXT: srl a6, a6, s37957; RV32I-NEXT: beqz t6, .LBB16_1077958; RV32I-NEXT: # %bb.106:7959; RV32I-NEXT: mv t1, a67960; RV32I-NEXT: .LBB16_107:7961; RV32I-NEXT: sll a7, t0, a17962; RV32I-NEXT: beqz a5, .LBB16_1147963; RV32I-NEXT: # %bb.108:7964; RV32I-NEXT: li t1, 07965; RV32I-NEXT: li a3, 07966; RV32I-NEXT: bnez t6, .LBB16_1157967; RV32I-NEXT: j .LBB16_1167968; RV32I-NEXT: .LBB16_109:7969; RV32I-NEXT: lw a7, 20(sp) # 4-byte Folded Reload7970; RV32I-NEXT: or a7, a7, a37971; RV32I-NEXT: li a3, 07972; RV32I-NEXT: beqz t6, .LBB16_927973; RV32I-NEXT: .LBB16_110:7974; RV32I-NEXT: mv a3, s87975; RV32I-NEXT: bne a5, s0, .LBB16_937976; RV32I-NEXT: .LBB16_111:7977; RV32I-NEXT: or a7, s10, a37978; RV32I-NEXT: li a3, 07979; RV32I-NEXT: beqz t6, .LBB16_947980; RV32I-NEXT: .LBB16_112:7981; RV32I-NEXT: mv a3, s57982; RV32I-NEXT: li t0, 37983; RV32I-NEXT: bne a5, t0, .LBB16_957984; RV32I-NEXT: .LBB16_113:7985; RV32I-NEXT: or a7, s7, a37986; RV32I-NEXT: mv a3, t57987; RV32I-NEXT: bne a5, s4, .LBB16_967988; RV32I-NEXT: j .LBB16_977989; RV32I-NEXT: .LBB16_114:7990; RV32I-NEXT: or t1, a7, t17991; RV32I-NEXT: li a3, 07992; RV32I-NEXT: beqz t6, .LBB16_1167993; RV32I-NEXT: .LBB16_115:7994; RV32I-NEXT: lw a3, 16(sp) # 4-byte Folded Reload7995; RV32I-NEXT: .LBB16_116:7996; RV32I-NEXT: li t3, 17997; RV32I-NEXT: beq a5, t3, .LBB16_1367998; RV32I-NEXT: # %bb.117:7999; RV32I-NEXT: li a3, 08000; RV32I-NEXT: bnez t6, .LBB16_1378001; RV32I-NEXT: .LBB16_118:8002; RV32I-NEXT: beq a5, s0, .LBB16_1388003; RV32I-NEXT: .LBB16_119:8004; RV32I-NEXT: li a3, 08005; RV32I-NEXT: bnez t6, .LBB16_1398006; RV32I-NEXT: .LBB16_120:8007; RV32I-NEXT: li t3, 38008; RV32I-NEXT: beq a5, t3, .LBB16_1408009; RV32I-NEXT: .LBB16_121:8010; RV32I-NEXT: li a3, 08011; RV32I-NEXT: bnez t6, .LBB16_1418012; RV32I-NEXT: .LBB16_122:8013; RV32I-NEXT: bne a5, s4, .LBB16_1248014; RV32I-NEXT: .LBB16_123:8015; RV32I-NEXT: or t1, s7, a38016; RV32I-NEXT: .LBB16_124:8017; RV32I-NEXT: sw t2, 8(sp) # 4-byte Folded Spill8018; RV32I-NEXT: lbu s0, 27(a0)8019; RV32I-NEXT: mv t3, t58020; RV32I-NEXT: beq a5, s11, .LBB16_1268021; RV32I-NEXT: # %bb.125:8022; RV32I-NEXT: mv t3, t18023; RV32I-NEXT: .LBB16_126:8024; RV32I-NEXT: mv t2, s108025; RV32I-NEXT: li t1, 08026; RV32I-NEXT: lbu t4, 25(a0)8027; RV32I-NEXT: lbu a3, 26(a0)8028; RV32I-NEXT: slli s0, s0, 88029; RV32I-NEXT: beq a5, s1, .LBB16_1288030; RV32I-NEXT: # %bb.127:8031; RV32I-NEXT: mv t1, t38032; RV32I-NEXT: .LBB16_128:8033; RV32I-NEXT: mv s10, s88034; RV32I-NEXT: li t3, 08035; RV32I-NEXT: lbu s1, 24(a0)8036; RV32I-NEXT: or s0, s0, a38037; RV32I-NEXT: slli a3, t4, 88038; RV32I-NEXT: beq a5, ra, .LBB16_1308039; RV32I-NEXT: # %bb.129:8040; RV32I-NEXT: mv t3, t18041; RV32I-NEXT: .LBB16_130:8042; RV32I-NEXT: li s8, 48043; RV32I-NEXT: or a3, a3, s18044; RV32I-NEXT: slli s0, s0, 168045; RV32I-NEXT: mv ra, t08046; RV32I-NEXT: beqz a1, .LBB16_1328047; RV32I-NEXT: # %bb.131:8048; RV32I-NEXT: mv ra, t38049; RV32I-NEXT: .LBB16_132:8050; RV32I-NEXT: li s4, 58051; RV32I-NEXT: li t4, 08052; RV32I-NEXT: or t3, s0, a38053; RV32I-NEXT: srl t0, t0, s38054; RV32I-NEXT: li s1, 68055; RV32I-NEXT: beqz t6, .LBB16_1348056; RV32I-NEXT: # %bb.133:8057; RV32I-NEXT: mv t4, t08058; RV32I-NEXT: .LBB16_134:8059; RV32I-NEXT: mv s11, a48060; RV32I-NEXT: sll t1, t3, a18061; RV32I-NEXT: li s0, 28062; RV32I-NEXT: mv a4, s78063; RV32I-NEXT: beqz a5, .LBB16_1428064; RV32I-NEXT: # %bb.135:8065; RV32I-NEXT: li t4, 08066; RV32I-NEXT: j .LBB16_1438067; RV32I-NEXT: .LBB16_136:8068; RV32I-NEXT: lw t1, 12(sp) # 4-byte Folded Reload8069; RV32I-NEXT: or t1, t1, a38070; RV32I-NEXT: li a3, 08071; RV32I-NEXT: beqz t6, .LBB16_1188072; RV32I-NEXT: .LBB16_137:8073; RV32I-NEXT: lw a3, 24(sp) # 4-byte Folded Reload8074; RV32I-NEXT: bne a5, s0, .LBB16_1198075; RV32I-NEXT: .LBB16_138:8076; RV32I-NEXT: lw t1, 20(sp) # 4-byte Folded Reload8077; RV32I-NEXT: or t1, t1, a38078; RV32I-NEXT: li a3, 08079; RV32I-NEXT: beqz t6, .LBB16_1208080; RV32I-NEXT: .LBB16_139:8081; RV32I-NEXT: mv a3, s88082; RV32I-NEXT: li t3, 38083; RV32I-NEXT: bne a5, t3, .LBB16_1218084; RV32I-NEXT: .LBB16_140:8085; RV32I-NEXT: or t1, s10, a38086; RV32I-NEXT: li a3, 08087; RV32I-NEXT: beqz t6, .LBB16_1228088; RV32I-NEXT: .LBB16_141:8089; RV32I-NEXT: mv a3, s58090; RV32I-NEXT: beq a5, s4, .LBB16_1238091; RV32I-NEXT: j .LBB16_1248092; RV32I-NEXT: .LBB16_142:8093; RV32I-NEXT: or t4, t1, t48094; RV32I-NEXT: .LBB16_143:8095; RV32I-NEXT: mv s7, s58096; RV32I-NEXT: li a3, 08097; RV32I-NEXT: beqz t6, .LBB16_1458098; RV32I-NEXT: # %bb.144:8099; RV32I-NEXT: mv a3, a68100; RV32I-NEXT: .LBB16_145:8101; RV32I-NEXT: li s5, 18102; RV32I-NEXT: bne a5, s5, .LBB16_1478103; RV32I-NEXT: # %bb.146:8104; RV32I-NEXT: or t4, a7, a38105; RV32I-NEXT: .LBB16_147:8106; RV32I-NEXT: mv s5, s78107; RV32I-NEXT: li a3, 08108; RV32I-NEXT: bnez t6, .LBB16_1668109; RV32I-NEXT: # %bb.148:8110; RV32I-NEXT: beq a5, s0, .LBB16_1678111; RV32I-NEXT: .LBB16_149:8112; RV32I-NEXT: li a3, 08113; RV32I-NEXT: bnez t6, .LBB16_1688114; RV32I-NEXT: .LBB16_150:8115; RV32I-NEXT: li s0, 38116; RV32I-NEXT: beq a5, s0, .LBB16_1698117; RV32I-NEXT: .LBB16_151:8118; RV32I-NEXT: li a3, 08119; RV32I-NEXT: bnez t6, .LBB16_1708120; RV32I-NEXT: .LBB16_152:8121; RV32I-NEXT: beq a5, s8, .LBB16_1718122; RV32I-NEXT: .LBB16_153:8123; RV32I-NEXT: li a3, 08124; RV32I-NEXT: bnez t6, .LBB16_1728125; RV32I-NEXT: .LBB16_154:8126; RV32I-NEXT: li s8, 28127; RV32I-NEXT: bne a5, s4, .LBB16_1568128; RV32I-NEXT: .LBB16_155:8129; RV32I-NEXT: or t4, a4, a38130; RV32I-NEXT: .LBB16_156:8131; RV32I-NEXT: lbu s0, 31(a0)8132; RV32I-NEXT: mv a3, t58133; RV32I-NEXT: beq a5, s1, .LBB16_1588134; RV32I-NEXT: # %bb.157:8135; RV32I-NEXT: mv a3, t48136; RV32I-NEXT: .LBB16_158:8137; RV32I-NEXT: li t4, 08138; RV32I-NEXT: lbu s5, 29(a0)8139; RV32I-NEXT: lbu s1, 30(a0)8140; RV32I-NEXT: slli s0, s0, 88141; RV32I-NEXT: li s4, 78142; RV32I-NEXT: beq a5, s4, .LBB16_1608143; RV32I-NEXT: # %bb.159:8144; RV32I-NEXT: mv t4, a38145; RV32I-NEXT: .LBB16_160:8146; RV32I-NEXT: lbu a3, 28(a0)8147; RV32I-NEXT: slli s5, s5, 88148; RV32I-NEXT: or s0, s0, s18149; RV32I-NEXT: mv a0, t38150; RV32I-NEXT: beqz a1, .LBB16_1628151; RV32I-NEXT: # %bb.161:8152; RV32I-NEXT: mv a0, t48153; RV32I-NEXT: .LBB16_162:8154; RV32I-NEXT: li t4, 08155; RV32I-NEXT: or a3, s5, a38156; RV32I-NEXT: slli s0, s0, 168157; RV32I-NEXT: li s1, 68158; RV32I-NEXT: li s4, 48159; RV32I-NEXT: beqz t6, .LBB16_1648160; RV32I-NEXT: # %bb.163:8161; RV32I-NEXT: srl t4, t3, s38162; RV32I-NEXT: .LBB16_164:8163; RV32I-NEXT: or s3, s0, a38164; RV32I-NEXT: li s0, 58165; RV32I-NEXT: beqz a5, .LBB16_1738166; RV32I-NEXT: # %bb.165:8167; RV32I-NEXT: li t3, 08168; RV32I-NEXT: li a3, 08169; RV32I-NEXT: bnez t6, .LBB16_1748170; RV32I-NEXT: j .LBB16_1758171; RV32I-NEXT: .LBB16_166:8172; RV32I-NEXT: lw a3, 16(sp) # 4-byte Folded Reload8173; RV32I-NEXT: bne a5, s0, .LBB16_1498174; RV32I-NEXT: .LBB16_167:8175; RV32I-NEXT: lw t4, 12(sp) # 4-byte Folded Reload8176; RV32I-NEXT: or t4, t4, a38177; RV32I-NEXT: li a3, 08178; RV32I-NEXT: beqz t6, .LBB16_1508179; RV32I-NEXT: .LBB16_168:8180; RV32I-NEXT: lw a3, 24(sp) # 4-byte Folded Reload8181; RV32I-NEXT: li s0, 38182; RV32I-NEXT: bne a5, s0, .LBB16_1518183; RV32I-NEXT: .LBB16_169:8184; RV32I-NEXT: lw t4, 20(sp) # 4-byte Folded Reload8185; RV32I-NEXT: or t4, t4, a38186; RV32I-NEXT: li a3, 08187; RV32I-NEXT: beqz t6, .LBB16_1528188; RV32I-NEXT: .LBB16_170:8189; RV32I-NEXT: mv a3, s108190; RV32I-NEXT: bne a5, s8, .LBB16_1538191; RV32I-NEXT: .LBB16_171:8192; RV32I-NEXT: or t4, t2, a38193; RV32I-NEXT: li a3, 08194; RV32I-NEXT: beqz t6, .LBB16_1548195; RV32I-NEXT: .LBB16_172:8196; RV32I-NEXT: mv a3, s58197; RV32I-NEXT: li s8, 28198; RV32I-NEXT: beq a5, s4, .LBB16_1558199; RV32I-NEXT: j .LBB16_1568200; RV32I-NEXT: .LBB16_173:8201; RV32I-NEXT: sll a3, s3, a18202; RV32I-NEXT: or t3, a3, t48203; RV32I-NEXT: li a3, 08204; RV32I-NEXT: beqz t6, .LBB16_1758205; RV32I-NEXT: .LBB16_174:8206; RV32I-NEXT: mv a3, t08207; RV32I-NEXT: .LBB16_175:8208; RV32I-NEXT: li t0, 18209; RV32I-NEXT: beq a5, t0, .LBB16_1958210; RV32I-NEXT: # %bb.176:8211; RV32I-NEXT: li a3, 08212; RV32I-NEXT: bnez t6, .LBB16_1968213; RV32I-NEXT: .LBB16_177:8214; RV32I-NEXT: bne a5, s8, .LBB16_1798215; RV32I-NEXT: .LBB16_178:8216; RV32I-NEXT: or t3, a7, a38217; RV32I-NEXT: .LBB16_179:8218; RV32I-NEXT: li a3, 08219; RV32I-NEXT: li a6, 38220; RV32I-NEXT: bnez t6, .LBB16_1978221; RV32I-NEXT: # %bb.180:8222; RV32I-NEXT: beq a5, a6, .LBB16_1988223; RV32I-NEXT: .LBB16_181:8224; RV32I-NEXT: li a3, 08225; RV32I-NEXT: bnez t6, .LBB16_1998226; RV32I-NEXT: .LBB16_182:8227; RV32I-NEXT: beq a5, s4, .LBB16_2008228; RV32I-NEXT: .LBB16_183:8229; RV32I-NEXT: li a3, 08230; RV32I-NEXT: bnez t6, .LBB16_2018231; RV32I-NEXT: .LBB16_184:8232; RV32I-NEXT: bne a5, s0, .LBB16_1868233; RV32I-NEXT: .LBB16_185:8234; RV32I-NEXT: or t3, t2, a38235; RV32I-NEXT: .LBB16_186:8236; RV32I-NEXT: lw t2, 8(sp) # 4-byte Folded Reload8237; RV32I-NEXT: li a3, 08238; RV32I-NEXT: beqz t6, .LBB16_1888239; RV32I-NEXT: # %bb.187:8240; RV32I-NEXT: mv a3, s78241; RV32I-NEXT: .LBB16_188:8242; RV32I-NEXT: bne a5, s1, .LBB16_1908243; RV32I-NEXT: # %bb.189:8244; RV32I-NEXT: or t3, a4, a38245; RV32I-NEXT: .LBB16_190:8246; RV32I-NEXT: mv a4, s118247; RV32I-NEXT: li a3, 78248; RV32I-NEXT: beq a5, a3, .LBB16_1928249; RV32I-NEXT: # %bb.191:8250; RV32I-NEXT: mv t5, t38251; RV32I-NEXT: .LBB16_192:8252; RV32I-NEXT: beqz a1, .LBB16_1948253; RV32I-NEXT: # %bb.193:8254; RV32I-NEXT: mv s3, t58255; RV32I-NEXT: .LBB16_194:8256; RV32I-NEXT: srli a1, a4, 168257; RV32I-NEXT: lui a7, 168258; RV32I-NEXT: srli a6, a4, 248259; RV32I-NEXT: srli a3, t2, 168260; RV32I-NEXT: srli t1, t2, 248261; RV32I-NEXT: srli a5, s2, 168262; RV32I-NEXT: srli t5, s2, 248263; RV32I-NEXT: srli t0, s6, 168264; RV32I-NEXT: srli t6, s6, 248265; RV32I-NEXT: srli t4, s9, 168266; RV32I-NEXT: srli s4, s9, 248267; RV32I-NEXT: srli t3, ra, 168268; RV32I-NEXT: srli s1, ra, 248269; RV32I-NEXT: srli s0, a0, 168270; RV32I-NEXT: srli s5, a0, 248271; RV32I-NEXT: srli s7, s3, 168272; RV32I-NEXT: srli s8, s3, 248273; RV32I-NEXT: addi a7, a7, -18274; RV32I-NEXT: and s10, a4, a78275; RV32I-NEXT: and s11, t2, a78276; RV32I-NEXT: srli s10, s10, 88277; RV32I-NEXT: sb a4, 0(a2)8278; RV32I-NEXT: sb s10, 1(a2)8279; RV32I-NEXT: sb a1, 2(a2)8280; RV32I-NEXT: sb a6, 3(a2)8281; RV32I-NEXT: and a1, s2, a78282; RV32I-NEXT: srli a4, s11, 88283; RV32I-NEXT: sb t2, 4(a2)8284; RV32I-NEXT: sb a4, 5(a2)8285; RV32I-NEXT: sb a3, 6(a2)8286; RV32I-NEXT: sb t1, 7(a2)8287; RV32I-NEXT: and a3, s6, a78288; RV32I-NEXT: srli a1, a1, 88289; RV32I-NEXT: sb s2, 8(a2)8290; RV32I-NEXT: sb a1, 9(a2)8291; RV32I-NEXT: sb a5, 10(a2)8292; RV32I-NEXT: sb t5, 11(a2)8293; RV32I-NEXT: and a1, s9, a78294; RV32I-NEXT: srli a3, a3, 88295; RV32I-NEXT: sb s6, 12(a2)8296; RV32I-NEXT: sb a3, 13(a2)8297; RV32I-NEXT: sb t0, 14(a2)8298; RV32I-NEXT: sb t6, 15(a2)8299; RV32I-NEXT: and a3, ra, a78300; RV32I-NEXT: srli a1, a1, 88301; RV32I-NEXT: sb s9, 16(a2)8302; RV32I-NEXT: sb a1, 17(a2)8303; RV32I-NEXT: sb t4, 18(a2)8304; RV32I-NEXT: sb s4, 19(a2)8305; RV32I-NEXT: and a1, a0, a78306; RV32I-NEXT: and a4, s3, a78307; RV32I-NEXT: srli a3, a3, 88308; RV32I-NEXT: srli a1, a1, 88309; RV32I-NEXT: srli a4, a4, 88310; RV32I-NEXT: sb ra, 20(a2)8311; RV32I-NEXT: sb a3, 21(a2)8312; RV32I-NEXT: sb t3, 22(a2)8313; RV32I-NEXT: sb s1, 23(a2)8314; RV32I-NEXT: sb a0, 24(a2)8315; RV32I-NEXT: sb a1, 25(a2)8316; RV32I-NEXT: sb s0, 26(a2)8317; RV32I-NEXT: sb s5, 27(a2)8318; RV32I-NEXT: sb s3, 28(a2)8319; RV32I-NEXT: sb a4, 29(a2)8320; RV32I-NEXT: sb s7, 30(a2)8321; RV32I-NEXT: sb s8, 31(a2)8322; RV32I-NEXT: lw ra, 76(sp) # 4-byte Folded Reload8323; RV32I-NEXT: lw s0, 72(sp) # 4-byte Folded Reload8324; RV32I-NEXT: lw s1, 68(sp) # 4-byte Folded Reload8325; RV32I-NEXT: lw s2, 64(sp) # 4-byte Folded Reload8326; RV32I-NEXT: lw s3, 60(sp) # 4-byte Folded Reload8327; RV32I-NEXT: lw s4, 56(sp) # 4-byte Folded Reload8328; RV32I-NEXT: lw s5, 52(sp) # 4-byte Folded Reload8329; RV32I-NEXT: lw s6, 48(sp) # 4-byte Folded Reload8330; RV32I-NEXT: lw s7, 44(sp) # 4-byte Folded Reload8331; RV32I-NEXT: lw s8, 40(sp) # 4-byte Folded Reload8332; RV32I-NEXT: lw s9, 36(sp) # 4-byte Folded Reload8333; RV32I-NEXT: lw s10, 32(sp) # 4-byte Folded Reload8334; RV32I-NEXT: lw s11, 28(sp) # 4-byte Folded Reload8335; RV32I-NEXT: addi sp, sp, 808336; RV32I-NEXT: ret8337; RV32I-NEXT: .LBB16_195:8338; RV32I-NEXT: or t3, t1, a38339; RV32I-NEXT: li a3, 08340; RV32I-NEXT: beqz t6, .LBB16_1778341; RV32I-NEXT: .LBB16_196:8342; RV32I-NEXT: mv a3, a68343; RV32I-NEXT: beq a5, s8, .LBB16_1788344; RV32I-NEXT: j .LBB16_1798345; RV32I-NEXT: .LBB16_197:8346; RV32I-NEXT: lw a3, 16(sp) # 4-byte Folded Reload8347; RV32I-NEXT: bne a5, a6, .LBB16_1818348; RV32I-NEXT: .LBB16_198:8349; RV32I-NEXT: lw a6, 12(sp) # 4-byte Folded Reload8350; RV32I-NEXT: or t3, a6, a38351; RV32I-NEXT: li a3, 08352; RV32I-NEXT: beqz t6, .LBB16_1828353; RV32I-NEXT: .LBB16_199:8354; RV32I-NEXT: lw a3, 24(sp) # 4-byte Folded Reload8355; RV32I-NEXT: bne a5, s4, .LBB16_1838356; RV32I-NEXT: .LBB16_200:8357; RV32I-NEXT: lw a6, 20(sp) # 4-byte Folded Reload8358; RV32I-NEXT: or t3, a6, a38359; RV32I-NEXT: li a3, 08360; RV32I-NEXT: beqz t6, .LBB16_1848361; RV32I-NEXT: .LBB16_201:8362; RV32I-NEXT: mv a3, s108363; RV32I-NEXT: beq a5, s0, .LBB16_1858364; RV32I-NEXT: j .LBB16_1868365 %src = load i256, ptr %src.ptr, align 18366 %wordOff = load i256, ptr %wordOff.ptr, align 18367 %bitOff = shl i256 %wordOff, 58368 %res = shl i256 %src, %bitOff8369 store i256 %res, ptr %dst, align 18370 ret void8371}8372 8373define void @shl_32bytes_dwordOff(ptr %src.ptr, ptr %dwordOff.ptr, ptr %dst) nounwind {8374; RV64I-LABEL: shl_32bytes_dwordOff:8375; RV64I: # %bb.0:8376; RV64I-NEXT: addi sp, sp, -1128377; RV64I-NEXT: sd ra, 104(sp) # 8-byte Folded Spill8378; RV64I-NEXT: sd s0, 96(sp) # 8-byte Folded Spill8379; RV64I-NEXT: sd s1, 88(sp) # 8-byte Folded Spill8380; RV64I-NEXT: sd s2, 80(sp) # 8-byte Folded Spill8381; RV64I-NEXT: sd s3, 72(sp) # 8-byte Folded Spill8382; RV64I-NEXT: sd s4, 64(sp) # 8-byte Folded Spill8383; RV64I-NEXT: sd s5, 56(sp) # 8-byte Folded Spill8384; RV64I-NEXT: sd s6, 48(sp) # 8-byte Folded Spill8385; RV64I-NEXT: sd s7, 40(sp) # 8-byte Folded Spill8386; RV64I-NEXT: sd s8, 32(sp) # 8-byte Folded Spill8387; RV64I-NEXT: sd s9, 24(sp) # 8-byte Folded Spill8388; RV64I-NEXT: sd s10, 16(sp) # 8-byte Folded Spill8389; RV64I-NEXT: sd s11, 8(sp) # 8-byte Folded Spill8390; RV64I-NEXT: lbu a3, 0(a0)8391; RV64I-NEXT: lbu a4, 1(a0)8392; RV64I-NEXT: lbu a5, 2(a0)8393; RV64I-NEXT: lbu a6, 3(a0)8394; RV64I-NEXT: lbu a7, 4(a0)8395; RV64I-NEXT: lbu t0, 5(a0)8396; RV64I-NEXT: lbu t1, 6(a0)8397; RV64I-NEXT: lbu t2, 7(a0)8398; RV64I-NEXT: lbu t3, 8(a0)8399; RV64I-NEXT: lbu t4, 9(a0)8400; RV64I-NEXT: lbu t5, 10(a0)8401; RV64I-NEXT: lbu t6, 11(a0)8402; RV64I-NEXT: slli a4, a4, 88403; RV64I-NEXT: or a3, a4, a38404; RV64I-NEXT: lbu a4, 12(a0)8405; RV64I-NEXT: lbu s0, 13(a0)8406; RV64I-NEXT: lbu s1, 14(a0)8407; RV64I-NEXT: lbu s2, 15(a0)8408; RV64I-NEXT: slli a6, a6, 88409; RV64I-NEXT: slli t0, t0, 88410; RV64I-NEXT: slli t2, t2, 88411; RV64I-NEXT: slli t4, t4, 88412; RV64I-NEXT: or s3, a6, a58413; RV64I-NEXT: or a5, t0, a78414; RV64I-NEXT: or a7, t2, t18415; RV64I-NEXT: or a6, t4, t38416; RV64I-NEXT: lbu t0, 0(a1)8417; RV64I-NEXT: lbu t1, 1(a1)8418; RV64I-NEXT: lbu t2, 2(a1)8419; RV64I-NEXT: lbu t3, 3(a1)8420; RV64I-NEXT: slli t6, t6, 88421; RV64I-NEXT: slli s0, s0, 88422; RV64I-NEXT: slli s2, s2, 88423; RV64I-NEXT: or t6, t6, t58424; RV64I-NEXT: or s0, s0, a48425; RV64I-NEXT: or s1, s2, s18426; RV64I-NEXT: lbu a4, 4(a1)8427; RV64I-NEXT: lbu t4, 5(a1)8428; RV64I-NEXT: lbu t5, 6(a1)8429; RV64I-NEXT: lbu a1, 7(a1)8430; RV64I-NEXT: slli t1, t1, 88431; RV64I-NEXT: slli t3, t3, 88432; RV64I-NEXT: slli t4, t4, 88433; RV64I-NEXT: slli a1, a1, 88434; RV64I-NEXT: or t0, t1, t08435; RV64I-NEXT: or t1, t3, t28436; RV64I-NEXT: or t2, t4, a48437; RV64I-NEXT: or a1, a1, t58438; RV64I-NEXT: lbu t5, 19(a0)8439; RV64I-NEXT: lbu t4, 21(a0)8440; RV64I-NEXT: lbu a4, 22(a0)8441; RV64I-NEXT: lbu t3, 23(a0)8442; RV64I-NEXT: slli s3, s3, 168443; RV64I-NEXT: slli a7, a7, 168444; RV64I-NEXT: slli t6, t6, 168445; RV64I-NEXT: slli s1, s1, 168446; RV64I-NEXT: or s4, s3, a38447; RV64I-NEXT: or a5, a7, a58448; RV64I-NEXT: or a6, t6, a68449; RV64I-NEXT: or s0, s1, s08450; RV64I-NEXT: lbu s1, 27(a0)8451; RV64I-NEXT: lbu t6, 29(a0)8452; RV64I-NEXT: lbu a3, 30(a0)8453; RV64I-NEXT: lbu s2, 31(a0)8454; RV64I-NEXT: slli t1, t1, 168455; RV64I-NEXT: or s5, t1, t08456; RV64I-NEXT: li a7, 1288457; RV64I-NEXT: slli a1, a1, 168458; RV64I-NEXT: or a1, a1, t28459; RV64I-NEXT: li t0, 648460; RV64I-NEXT: slli s3, t3, 88461; RV64I-NEXT: slli s2, s2, 88462; RV64I-NEXT: slli a5, a5, 328463; RV64I-NEXT: slli s0, s0, 328464; RV64I-NEXT: slli a1, a1, 328465; RV64I-NEXT: or t1, a5, s48466; RV64I-NEXT: or a5, s0, a68467; RV64I-NEXT: or a6, a1, s58468; RV64I-NEXT: slli a6, a6, 68469; RV64I-NEXT: sub t2, a6, t08470; RV64I-NEXT: neg t3, a68471; RV64I-NEXT: srl s0, t1, t38472; RV64I-NEXT: bltu a6, t0, .LBB17_28473; RV64I-NEXT: # %bb.1:8474; RV64I-NEXT: li a1, 08475; RV64I-NEXT: sll s4, t1, t28476; RV64I-NEXT: j .LBB17_38477; RV64I-NEXT: .LBB17_2:8478; RV64I-NEXT: sll a1, t1, a68479; RV64I-NEXT: sll s4, a5, a68480; RV64I-NEXT: or s4, s0, s48481; RV64I-NEXT: .LBB17_3:8482; RV64I-NEXT: slli t5, t5, 88483; RV64I-NEXT: slli t4, t4, 88484; RV64I-NEXT: or s3, s3, a48485; RV64I-NEXT: lbu ra, 17(a0)8486; RV64I-NEXT: lbu s11, 18(a0)8487; RV64I-NEXT: lbu s8, 20(a0)8488; RV64I-NEXT: lbu s5, 25(a0)8489; RV64I-NEXT: slli s1, s1, 88490; RV64I-NEXT: lbu s7, 26(a0)8491; RV64I-NEXT: lbu s6, 28(a0)8492; RV64I-NEXT: slli s10, t6, 88493; RV64I-NEXT: or s9, s2, a38494; RV64I-NEXT: sub a4, a7, a68495; RV64I-NEXT: mv a3, a58496; RV64I-NEXT: beqz a6, .LBB17_58497; RV64I-NEXT: # %bb.4:8498; RV64I-NEXT: mv a3, s48499; RV64I-NEXT: .LBB17_5:8500; RV64I-NEXT: slli t6, ra, 88501; RV64I-NEXT: or t5, t5, s118502; RV64I-NEXT: or t4, t4, s88503; RV64I-NEXT: slli s3, s3, 168504; RV64I-NEXT: lbu s8, 16(a0)8505; RV64I-NEXT: lbu a0, 24(a0)8506; RV64I-NEXT: slli s5, s5, 88507; RV64I-NEXT: or s2, s1, s78508; RV64I-NEXT: or s1, s10, s68509; RV64I-NEXT: slli s4, s9, 168510; RV64I-NEXT: bltu a4, t0, .LBB17_78511; RV64I-NEXT: # %bb.6:8512; RV64I-NEXT: sub s0, a4, t08513; RV64I-NEXT: srl s0, a5, s08514; RV64I-NEXT: j .LBB17_88515; RV64I-NEXT: .LBB17_7:8516; RV64I-NEXT: neg s6, a48517; RV64I-NEXT: sll s6, a5, s68518; RV64I-NEXT: or s0, s0, s68519; RV64I-NEXT: .LBB17_8:8520; RV64I-NEXT: or t6, t6, s88521; RV64I-NEXT: slli s6, t5, 168522; RV64I-NEXT: or s3, s3, t48523; RV64I-NEXT: or t5, s5, a08524; RV64I-NEXT: slli s2, s2, 168525; RV64I-NEXT: or s1, s4, s18526; RV64I-NEXT: mv t4, t18527; RV64I-NEXT: beqz a4, .LBB17_108528; RV64I-NEXT: # %bb.9:8529; RV64I-NEXT: mv t4, s08530; RV64I-NEXT: .LBB17_10:8531; RV64I-NEXT: or a0, s6, t68532; RV64I-NEXT: slli s0, s3, 328533; RV64I-NEXT: or t6, s2, t58534; RV64I-NEXT: slli s1, s1, 328535; RV64I-NEXT: bltu a4, t0, .LBB17_128536; RV64I-NEXT: # %bb.11:8537; RV64I-NEXT: li t5, 08538; RV64I-NEXT: j .LBB17_138539; RV64I-NEXT: .LBB17_12:8540; RV64I-NEXT: srl t5, a5, t38541; RV64I-NEXT: .LBB17_13:8542; RV64I-NEXT: or a4, s0, a08543; RV64I-NEXT: or a0, s1, t68544; RV64I-NEXT: bltu a6, t0, .LBB17_158545; RV64I-NEXT: # %bb.14:8546; RV64I-NEXT: li t6, 08547; RV64I-NEXT: sll t2, a4, t28548; RV64I-NEXT: j .LBB17_168549; RV64I-NEXT: .LBB17_15:8550; RV64I-NEXT: sll t6, a4, a68551; RV64I-NEXT: srl t2, a4, t38552; RV64I-NEXT: sll t3, a0, a68553; RV64I-NEXT: or t2, t2, t38554; RV64I-NEXT: .LBB17_16:8555; RV64I-NEXT: sub s0, a6, a78556; RV64I-NEXT: mv t3, a08557; RV64I-NEXT: beqz a6, .LBB17_188558; RV64I-NEXT: # %bb.17:8559; RV64I-NEXT: mv t3, t28560; RV64I-NEXT: .LBB17_18:8561; RV64I-NEXT: bltu s0, t0, .LBB17_208562; RV64I-NEXT: # %bb.19:8563; RV64I-NEXT: li t2, 08564; RV64I-NEXT: sub t0, s0, t08565; RV64I-NEXT: sll t0, t1, t08566; RV64I-NEXT: bnez s0, .LBB17_218567; RV64I-NEXT: j .LBB17_228568; RV64I-NEXT: .LBB17_20:8569; RV64I-NEXT: sll t2, t1, s08570; RV64I-NEXT: neg t0, s08571; RV64I-NEXT: srl t0, t1, t08572; RV64I-NEXT: sll t1, a5, s08573; RV64I-NEXT: or t0, t0, t18574; RV64I-NEXT: beqz s0, .LBB17_228575; RV64I-NEXT: .LBB17_21:8576; RV64I-NEXT: mv a5, t08577; RV64I-NEXT: .LBB17_22:8578; RV64I-NEXT: bltu a6, a7, .LBB17_248579; RV64I-NEXT: # %bb.23:8580; RV64I-NEXT: li a1, 08581; RV64I-NEXT: li a3, 08582; RV64I-NEXT: bnez a6, .LBB17_258583; RV64I-NEXT: j .LBB17_268584; RV64I-NEXT: .LBB17_24:8585; RV64I-NEXT: or t2, t4, t68586; RV64I-NEXT: or a5, t5, t38587; RV64I-NEXT: beqz a6, .LBB17_268588; RV64I-NEXT: .LBB17_25:8589; RV64I-NEXT: mv a4, t28590; RV64I-NEXT: mv a0, a58591; RV64I-NEXT: .LBB17_26:8592; RV64I-NEXT: srli a5, a1, 328593; RV64I-NEXT: srliw a6, a1, 168594; RV64I-NEXT: lui t2, 168595; RV64I-NEXT: srliw t1, a1, 248596; RV64I-NEXT: srli t0, a1, 488597; RV64I-NEXT: srli t5, a1, 568598; RV64I-NEXT: srli a7, a3, 328599; RV64I-NEXT: srliw t4, a3, 168600; RV64I-NEXT: srliw s0, a3, 248601; RV64I-NEXT: srli t6, a3, 488602; RV64I-NEXT: srli s3, a3, 568603; RV64I-NEXT: srli t3, a4, 328604; RV64I-NEXT: srliw s2, a4, 168605; RV64I-NEXT: srliw s6, a4, 248606; RV64I-NEXT: srli s4, a4, 488607; RV64I-NEXT: srli s7, a4, 568608; RV64I-NEXT: srli s1, a0, 328609; RV64I-NEXT: srliw s5, a0, 168610; RV64I-NEXT: srliw s8, a0, 248611; RV64I-NEXT: srli s9, a0, 488612; RV64I-NEXT: srli s10, a0, 568613; RV64I-NEXT: addi t2, t2, -18614; RV64I-NEXT: and s11, a1, t28615; RV64I-NEXT: srli s11, s11, 88616; RV64I-NEXT: sb a1, 0(a2)8617; RV64I-NEXT: sb s11, 1(a2)8618; RV64I-NEXT: sb a6, 2(a2)8619; RV64I-NEXT: sb t1, 3(a2)8620; RV64I-NEXT: and a1, a5, t28621; RV64I-NEXT: srli a1, a1, 88622; RV64I-NEXT: sb a5, 4(a2)8623; RV64I-NEXT: sb a1, 5(a2)8624; RV64I-NEXT: sb t0, 6(a2)8625; RV64I-NEXT: sb t5, 7(a2)8626; RV64I-NEXT: and a1, a3, t28627; RV64I-NEXT: srli a1, a1, 88628; RV64I-NEXT: sb a3, 8(a2)8629; RV64I-NEXT: sb a1, 9(a2)8630; RV64I-NEXT: sb t4, 10(a2)8631; RV64I-NEXT: sb s0, 11(a2)8632; RV64I-NEXT: and a1, a7, t28633; RV64I-NEXT: srli a1, a1, 88634; RV64I-NEXT: sb a7, 12(a2)8635; RV64I-NEXT: sb a1, 13(a2)8636; RV64I-NEXT: sb t6, 14(a2)8637; RV64I-NEXT: sb s3, 15(a2)8638; RV64I-NEXT: and a1, a4, t28639; RV64I-NEXT: srli a1, a1, 88640; RV64I-NEXT: sb a4, 16(a2)8641; RV64I-NEXT: sb a1, 17(a2)8642; RV64I-NEXT: sb s2, 18(a2)8643; RV64I-NEXT: sb s6, 19(a2)8644; RV64I-NEXT: and a1, t3, t28645; RV64I-NEXT: srli a1, a1, 88646; RV64I-NEXT: sb t3, 20(a2)8647; RV64I-NEXT: sb a1, 21(a2)8648; RV64I-NEXT: sb s4, 22(a2)8649; RV64I-NEXT: sb s7, 23(a2)8650; RV64I-NEXT: and a1, a0, t28651; RV64I-NEXT: and a3, s1, t28652; RV64I-NEXT: srli a1, a1, 88653; RV64I-NEXT: srli a3, a3, 88654; RV64I-NEXT: sb a0, 24(a2)8655; RV64I-NEXT: sb a1, 25(a2)8656; RV64I-NEXT: sb s5, 26(a2)8657; RV64I-NEXT: sb s8, 27(a2)8658; RV64I-NEXT: sb s1, 28(a2)8659; RV64I-NEXT: sb a3, 29(a2)8660; RV64I-NEXT: sb s9, 30(a2)8661; RV64I-NEXT: sb s10, 31(a2)8662; RV64I-NEXT: ld ra, 104(sp) # 8-byte Folded Reload8663; RV64I-NEXT: ld s0, 96(sp) # 8-byte Folded Reload8664; RV64I-NEXT: ld s1, 88(sp) # 8-byte Folded Reload8665; RV64I-NEXT: ld s2, 80(sp) # 8-byte Folded Reload8666; RV64I-NEXT: ld s3, 72(sp) # 8-byte Folded Reload8667; RV64I-NEXT: ld s4, 64(sp) # 8-byte Folded Reload8668; RV64I-NEXT: ld s5, 56(sp) # 8-byte Folded Reload8669; RV64I-NEXT: ld s6, 48(sp) # 8-byte Folded Reload8670; RV64I-NEXT: ld s7, 40(sp) # 8-byte Folded Reload8671; RV64I-NEXT: ld s8, 32(sp) # 8-byte Folded Reload8672; RV64I-NEXT: ld s9, 24(sp) # 8-byte Folded Reload8673; RV64I-NEXT: ld s10, 16(sp) # 8-byte Folded Reload8674; RV64I-NEXT: ld s11, 8(sp) # 8-byte Folded Reload8675; RV64I-NEXT: addi sp, sp, 1128676; RV64I-NEXT: ret8677;8678; RV32I-LABEL: shl_32bytes_dwordOff:8679; RV32I: # %bb.0:8680; RV32I-NEXT: addi sp, sp, -808681; RV32I-NEXT: sw ra, 76(sp) # 4-byte Folded Spill8682; RV32I-NEXT: sw s0, 72(sp) # 4-byte Folded Spill8683; RV32I-NEXT: sw s1, 68(sp) # 4-byte Folded Spill8684; RV32I-NEXT: sw s2, 64(sp) # 4-byte Folded Spill8685; RV32I-NEXT: sw s3, 60(sp) # 4-byte Folded Spill8686; RV32I-NEXT: sw s4, 56(sp) # 4-byte Folded Spill8687; RV32I-NEXT: sw s5, 52(sp) # 4-byte Folded Spill8688; RV32I-NEXT: sw s6, 48(sp) # 4-byte Folded Spill8689; RV32I-NEXT: sw s7, 44(sp) # 4-byte Folded Spill8690; RV32I-NEXT: sw s8, 40(sp) # 4-byte Folded Spill8691; RV32I-NEXT: sw s9, 36(sp) # 4-byte Folded Spill8692; RV32I-NEXT: sw s10, 32(sp) # 4-byte Folded Spill8693; RV32I-NEXT: sw s11, 28(sp) # 4-byte Folded Spill8694; RV32I-NEXT: lbu a3, 1(a0)8695; RV32I-NEXT: lbu a4, 0(a0)8696; RV32I-NEXT: lbu a5, 2(a0)8697; RV32I-NEXT: lbu a6, 3(a0)8698; RV32I-NEXT: slli a3, a3, 88699; RV32I-NEXT: or a3, a3, a48700; RV32I-NEXT: lbu a4, 0(a1)8701; RV32I-NEXT: lbu a7, 1(a1)8702; RV32I-NEXT: lbu t0, 2(a1)8703; RV32I-NEXT: lbu a1, 3(a1)8704; RV32I-NEXT: slli a6, a6, 88705; RV32I-NEXT: or a5, a6, a58706; RV32I-NEXT: slli a7, a7, 88707; RV32I-NEXT: slli a1, a1, 88708; RV32I-NEXT: or a4, a7, a48709; RV32I-NEXT: or a1, a1, t08710; RV32I-NEXT: slli a5, a5, 168711; RV32I-NEXT: slli a1, a1, 168712; RV32I-NEXT: or a6, a5, a38713; RV32I-NEXT: or a1, a1, a48714; RV32I-NEXT: slli a1, a1, 68715; RV32I-NEXT: srli a5, a1, 58716; RV32I-NEXT: sll t5, a6, a18717; RV32I-NEXT: li s5, 18718; RV32I-NEXT: mv a4, t58719; RV32I-NEXT: beqz a5, .LBB17_28720; RV32I-NEXT: # %bb.1:8721; RV32I-NEXT: li a4, 08722; RV32I-NEXT: .LBB17_2:8723; RV32I-NEXT: li a3, 08724; RV32I-NEXT: li s0, 28725; RV32I-NEXT: beq a5, s5, .LBB17_48726; RV32I-NEXT: # %bb.3:8727; RV32I-NEXT: mv a3, a48728; RV32I-NEXT: .LBB17_4:8729; RV32I-NEXT: li a7, 08730; RV32I-NEXT: beq a5, s0, .LBB17_68731; RV32I-NEXT: # %bb.5:8732; RV32I-NEXT: mv a7, a38733; RV32I-NEXT: .LBB17_6:8734; RV32I-NEXT: li a4, 08735; RV32I-NEXT: li s8, 38736; RV32I-NEXT: li s10, 48737; RV32I-NEXT: beq a5, s8, .LBB17_88738; RV32I-NEXT: # %bb.7:8739; RV32I-NEXT: mv a4, a78740; RV32I-NEXT: .LBB17_8:8741; RV32I-NEXT: li t0, 08742; RV32I-NEXT: li s1, 58743; RV32I-NEXT: beq a5, s10, .LBB17_108744; RV32I-NEXT: # %bb.9:8745; RV32I-NEXT: mv t0, a48746; RV32I-NEXT: .LBB17_10:8747; RV32I-NEXT: li a7, 08748; RV32I-NEXT: lbu t1, 7(a0)8749; RV32I-NEXT: li s6, 68750; RV32I-NEXT: beq a5, s1, .LBB17_128751; RV32I-NEXT: # %bb.11:8752; RV32I-NEXT: mv a7, t08753; RV32I-NEXT: .LBB17_12:8754; RV32I-NEXT: li a4, 08755; RV32I-NEXT: lbu t0, 5(a0)8756; RV32I-NEXT: lbu a3, 6(a0)8757; RV32I-NEXT: slli t2, t1, 88758; RV32I-NEXT: beq a5, s6, .LBB17_148759; RV32I-NEXT: # %bb.13:8760; RV32I-NEXT: mv a4, a78761; RV32I-NEXT: .LBB17_14:8762; RV32I-NEXT: li a7, 08763; RV32I-NEXT: lbu t1, 4(a0)8764; RV32I-NEXT: or t2, t2, a38765; RV32I-NEXT: li ra, 78766; RV32I-NEXT: slli t0, t0, 88767; RV32I-NEXT: beq a5, ra, .LBB17_168768; RV32I-NEXT: # %bb.15:8769; RV32I-NEXT: mv a7, a48770; RV32I-NEXT: .LBB17_16:8771; RV32I-NEXT: or a3, t0, t18772; RV32I-NEXT: slli t2, t2, 168773; RV32I-NEXT: andi t6, a1, 318774; RV32I-NEXT: mv a4, a68775; RV32I-NEXT: beqz a1, .LBB17_188776; RV32I-NEXT: # %bb.17:8777; RV32I-NEXT: mv a4, a78778; RV32I-NEXT: .LBB17_18:8779; RV32I-NEXT: li t0, 08780; RV32I-NEXT: or a7, t2, a38781; RV32I-NEXT: neg s3, t68782; RV32I-NEXT: srl s4, a6, s38783; RV32I-NEXT: beqz t6, .LBB17_208784; RV32I-NEXT: # %bb.19:8785; RV32I-NEXT: mv t0, s48786; RV32I-NEXT: .LBB17_20:8787; RV32I-NEXT: sll s9, a7, a18788; RV32I-NEXT: beqz a5, .LBB17_228789; RV32I-NEXT: # %bb.21:8790; RV32I-NEXT: li a3, 08791; RV32I-NEXT: mv a6, t58792; RV32I-NEXT: bne a5, s5, .LBB17_238793; RV32I-NEXT: j .LBB17_248794; RV32I-NEXT: .LBB17_22:8795; RV32I-NEXT: or a3, s9, t08796; RV32I-NEXT: mv a6, t58797; RV32I-NEXT: beq a5, s5, .LBB17_248798; RV32I-NEXT: .LBB17_23:8799; RV32I-NEXT: mv a6, a38800; RV32I-NEXT: .LBB17_24:8801; RV32I-NEXT: li a3, 08802; RV32I-NEXT: bne a5, s0, .LBB17_408803; RV32I-NEXT: # %bb.25:8804; RV32I-NEXT: li a6, 08805; RV32I-NEXT: bne a5, s8, .LBB17_418806; RV32I-NEXT: .LBB17_26:8807; RV32I-NEXT: li a3, 08808; RV32I-NEXT: beq a5, s10, .LBB17_288809; RV32I-NEXT: .LBB17_27:8810; RV32I-NEXT: mv a3, a68811; RV32I-NEXT: .LBB17_28:8812; RV32I-NEXT: lbu t2, 11(a0)8813; RV32I-NEXT: li t0, 08814; RV32I-NEXT: beq a5, s1, .LBB17_308815; RV32I-NEXT: # %bb.29:8816; RV32I-NEXT: mv t0, a38817; RV32I-NEXT: .LBB17_30:8818; RV32I-NEXT: li a6, 08819; RV32I-NEXT: lbu t1, 9(a0)8820; RV32I-NEXT: lbu a3, 10(a0)8821; RV32I-NEXT: slli t2, t2, 88822; RV32I-NEXT: beq a5, s6, .LBB17_328823; RV32I-NEXT: # %bb.31:8824; RV32I-NEXT: mv a6, t08825; RV32I-NEXT: .LBB17_32:8826; RV32I-NEXT: li t0, 08827; RV32I-NEXT: lbu t3, 8(a0)8828; RV32I-NEXT: or t2, t2, a38829; RV32I-NEXT: slli t1, t1, 88830; RV32I-NEXT: beq a5, ra, .LBB17_348831; RV32I-NEXT: # %bb.33:8832; RV32I-NEXT: mv t0, a68833; RV32I-NEXT: .LBB17_34:8834; RV32I-NEXT: or a3, t1, t38835; RV32I-NEXT: slli a6, t2, 168836; RV32I-NEXT: mv t2, a78837; RV32I-NEXT: beqz a1, .LBB17_368838; RV32I-NEXT: # %bb.35:8839; RV32I-NEXT: mv t2, t08840; RV32I-NEXT: .LBB17_36:8841; RV32I-NEXT: li t0, 08842; RV32I-NEXT: or a6, a6, a38843; RV32I-NEXT: srl a3, a7, s38844; RV32I-NEXT: sw a3, 24(sp) # 4-byte Folded Spill8845; RV32I-NEXT: beqz t6, .LBB17_388846; RV32I-NEXT: # %bb.37:8847; RV32I-NEXT: lw t0, 24(sp) # 4-byte Folded Reload8848; RV32I-NEXT: .LBB17_38:8849; RV32I-NEXT: sll s7, a6, a18850; RV32I-NEXT: beqz a5, .LBB17_428851; RV32I-NEXT: # %bb.39:8852; RV32I-NEXT: li a7, 08853; RV32I-NEXT: li a3, 08854; RV32I-NEXT: bnez t6, .LBB17_438855; RV32I-NEXT: j .LBB17_448856; RV32I-NEXT: .LBB17_40:8857; RV32I-NEXT: mv a3, a68858; RV32I-NEXT: li a6, 08859; RV32I-NEXT: beq a5, s8, .LBB17_268860; RV32I-NEXT: .LBB17_41:8861; RV32I-NEXT: mv a6, a38862; RV32I-NEXT: li a3, 08863; RV32I-NEXT: bne a5, s10, .LBB17_278864; RV32I-NEXT: j .LBB17_288865; RV32I-NEXT: .LBB17_42:8866; RV32I-NEXT: or a7, s7, t08867; RV32I-NEXT: li a3, 08868; RV32I-NEXT: beqz t6, .LBB17_448869; RV32I-NEXT: .LBB17_43:8870; RV32I-NEXT: mv a3, s48871; RV32I-NEXT: .LBB17_44:8872; RV32I-NEXT: beq a5, s5, .LBB17_618873; RV32I-NEXT: # %bb.45:8874; RV32I-NEXT: mv a3, t58875; RV32I-NEXT: bne a5, s0, .LBB17_628876; RV32I-NEXT: .LBB17_46:8877; RV32I-NEXT: li a7, 08878; RV32I-NEXT: bne a5, s8, .LBB17_638879; RV32I-NEXT: .LBB17_47:8880; RV32I-NEXT: li a3, 08881; RV32I-NEXT: beq a5, s10, .LBB17_498882; RV32I-NEXT: .LBB17_48:8883; RV32I-NEXT: mv a3, a78884; RV32I-NEXT: .LBB17_49:8885; RV32I-NEXT: lbu t3, 15(a0)8886; RV32I-NEXT: li t0, 08887; RV32I-NEXT: beq a5, s1, .LBB17_518888; RV32I-NEXT: # %bb.50:8889; RV32I-NEXT: mv t0, a38890; RV32I-NEXT: .LBB17_51:8891; RV32I-NEXT: li a7, 08892; RV32I-NEXT: lbu t1, 13(a0)8893; RV32I-NEXT: lbu a3, 14(a0)8894; RV32I-NEXT: slli t3, t3, 88895; RV32I-NEXT: beq a5, s6, .LBB17_538896; RV32I-NEXT: # %bb.52:8897; RV32I-NEXT: mv a7, t08898; RV32I-NEXT: .LBB17_53:8899; RV32I-NEXT: li t0, 08900; RV32I-NEXT: lbu t4, 12(a0)8901; RV32I-NEXT: or t3, t3, a38902; RV32I-NEXT: slli t1, t1, 88903; RV32I-NEXT: beq a5, ra, .LBB17_558904; RV32I-NEXT: # %bb.54:8905; RV32I-NEXT: mv t0, a78906; RV32I-NEXT: .LBB17_55:8907; RV32I-NEXT: or a3, t1, t48908; RV32I-NEXT: slli t3, t3, 168909; RV32I-NEXT: mv s2, a68910; RV32I-NEXT: beqz a1, .LBB17_578911; RV32I-NEXT: # %bb.56:8912; RV32I-NEXT: mv s2, t08913; RV32I-NEXT: .LBB17_57:8914; RV32I-NEXT: li t0, 08915; RV32I-NEXT: or a7, t3, a38916; RV32I-NEXT: srl a3, a6, s38917; RV32I-NEXT: sw a3, 20(sp) # 4-byte Folded Spill8918; RV32I-NEXT: beqz t6, .LBB17_598919; RV32I-NEXT: # %bb.58:8920; RV32I-NEXT: lw t0, 20(sp) # 4-byte Folded Reload8921; RV32I-NEXT: .LBB17_59:8922; RV32I-NEXT: sll a3, a7, a18923; RV32I-NEXT: sw a3, 16(sp) # 4-byte Folded Spill8924; RV32I-NEXT: beqz a5, .LBB17_648925; RV32I-NEXT: # %bb.60:8926; RV32I-NEXT: li a6, 08927; RV32I-NEXT: li a3, 08928; RV32I-NEXT: bnez t6, .LBB17_658929; RV32I-NEXT: j .LBB17_668930; RV32I-NEXT: .LBB17_61:8931; RV32I-NEXT: or a7, s9, a38932; RV32I-NEXT: mv a3, t58933; RV32I-NEXT: beq a5, s0, .LBB17_468934; RV32I-NEXT: .LBB17_62:8935; RV32I-NEXT: mv a3, a78936; RV32I-NEXT: li a7, 08937; RV32I-NEXT: beq a5, s8, .LBB17_478938; RV32I-NEXT: .LBB17_63:8939; RV32I-NEXT: mv a7, a38940; RV32I-NEXT: li a3, 08941; RV32I-NEXT: bne a5, s10, .LBB17_488942; RV32I-NEXT: j .LBB17_498943; RV32I-NEXT: .LBB17_64:8944; RV32I-NEXT: or a6, a3, t08945; RV32I-NEXT: li a3, 08946; RV32I-NEXT: beqz t6, .LBB17_668947; RV32I-NEXT: .LBB17_65:8948; RV32I-NEXT: lw a3, 24(sp) # 4-byte Folded Reload8949; RV32I-NEXT: .LBB17_66:8950; RV32I-NEXT: beq a5, s5, .LBB17_848951; RV32I-NEXT: # %bb.67:8952; RV32I-NEXT: li a3, 08953; RV32I-NEXT: bnez t6, .LBB17_858954; RV32I-NEXT: .LBB17_68:8955; RV32I-NEXT: beq a5, s0, .LBB17_868956; RV32I-NEXT: .LBB17_69:8957; RV32I-NEXT: mv t0, t58958; RV32I-NEXT: bne a5, s8, .LBB17_878959; RV32I-NEXT: .LBB17_70:8960; RV32I-NEXT: li a3, 08961; RV32I-NEXT: beq a5, s10, .LBB17_728962; RV32I-NEXT: .LBB17_71:8963; RV32I-NEXT: mv a3, t08964; RV32I-NEXT: .LBB17_72:8965; RV32I-NEXT: lbu t3, 19(a0)8966; RV32I-NEXT: li t0, 08967; RV32I-NEXT: beq a5, s1, .LBB17_748968; RV32I-NEXT: # %bb.73:8969; RV32I-NEXT: mv t0, a38970; RV32I-NEXT: .LBB17_74:8971; RV32I-NEXT: li a6, 08972; RV32I-NEXT: lbu t1, 17(a0)8973; RV32I-NEXT: lbu a3, 18(a0)8974; RV32I-NEXT: slli t3, t3, 88975; RV32I-NEXT: beq a5, s6, .LBB17_768976; RV32I-NEXT: # %bb.75:8977; RV32I-NEXT: mv a6, t08978; RV32I-NEXT: .LBB17_76:8979; RV32I-NEXT: li t0, 08980; RV32I-NEXT: lbu t4, 16(a0)8981; RV32I-NEXT: or t3, t3, a38982; RV32I-NEXT: slli t1, t1, 88983; RV32I-NEXT: beq a5, ra, .LBB17_788984; RV32I-NEXT: # %bb.77:8985; RV32I-NEXT: mv t0, a68986; RV32I-NEXT: .LBB17_78:8987; RV32I-NEXT: or a3, t1, t48988; RV32I-NEXT: slli t3, t3, 168989; RV32I-NEXT: mv s6, a78990; RV32I-NEXT: beqz a1, .LBB17_808991; RV32I-NEXT: # %bb.79:8992; RV32I-NEXT: mv s6, t08993; RV32I-NEXT: .LBB17_80:8994; RV32I-NEXT: li t0, 08995; RV32I-NEXT: or a6, t3, a38996; RV32I-NEXT: srl s10, a7, s38997; RV32I-NEXT: beqz t6, .LBB17_828998; RV32I-NEXT: # %bb.81:8999; RV32I-NEXT: mv t0, s109000; RV32I-NEXT: .LBB17_82:9001; RV32I-NEXT: sll s11, a6, a19002; RV32I-NEXT: beqz a5, .LBB17_889003; RV32I-NEXT: # %bb.83:9004; RV32I-NEXT: li a7, 09005; RV32I-NEXT: li a3, 09006; RV32I-NEXT: bnez t6, .LBB17_899007; RV32I-NEXT: j .LBB17_909008; RV32I-NEXT: .LBB17_84:9009; RV32I-NEXT: or a6, s7, a39010; RV32I-NEXT: li a3, 09011; RV32I-NEXT: beqz t6, .LBB17_689012; RV32I-NEXT: .LBB17_85:9013; RV32I-NEXT: mv a3, s49014; RV32I-NEXT: bne a5, s0, .LBB17_699015; RV32I-NEXT: .LBB17_86:9016; RV32I-NEXT: or a6, s9, a39017; RV32I-NEXT: mv t0, t59018; RV32I-NEXT: beq a5, s8, .LBB17_709019; RV32I-NEXT: .LBB17_87:9020; RV32I-NEXT: mv t0, a69021; RV32I-NEXT: li a3, 09022; RV32I-NEXT: bne a5, s10, .LBB17_719023; RV32I-NEXT: j .LBB17_729024; RV32I-NEXT: .LBB17_88:9025; RV32I-NEXT: or a7, s11, t09026; RV32I-NEXT: li a3, 09027; RV32I-NEXT: beqz t6, .LBB17_909028; RV32I-NEXT: .LBB17_89:9029; RV32I-NEXT: lw a3, 20(sp) # 4-byte Folded Reload9030; RV32I-NEXT: .LBB17_90:9031; RV32I-NEXT: beq a5, s5, .LBB17_1109032; RV32I-NEXT: # %bb.91:9033; RV32I-NEXT: li a3, 09034; RV32I-NEXT: bnez t6, .LBB17_1119035; RV32I-NEXT: .LBB17_92:9036; RV32I-NEXT: beq a5, s0, .LBB17_1129037; RV32I-NEXT: .LBB17_93:9038; RV32I-NEXT: li a3, 09039; RV32I-NEXT: bnez t6, .LBB17_1139040; RV32I-NEXT: .LBB17_94:9041; RV32I-NEXT: bne a5, s8, .LBB17_969042; RV32I-NEXT: .LBB17_95:9043; RV32I-NEXT: or a7, s9, a39044; RV32I-NEXT: .LBB17_96:9045; RV32I-NEXT: mv a3, t59046; RV32I-NEXT: li t0, 49047; RV32I-NEXT: beq a5, t0, .LBB17_989048; RV32I-NEXT: # %bb.97:9049; RV32I-NEXT: mv a3, a79050; RV32I-NEXT: .LBB17_98:9051; RV32I-NEXT: lbu t3, 23(a0)9052; RV32I-NEXT: li t0, 09053; RV32I-NEXT: beq a5, s1, .LBB17_1009054; RV32I-NEXT: # %bb.99:9055; RV32I-NEXT: mv t0, a39056; RV32I-NEXT: .LBB17_100:9057; RV32I-NEXT: li a7, 09058; RV32I-NEXT: lbu t1, 21(a0)9059; RV32I-NEXT: lbu a3, 22(a0)9060; RV32I-NEXT: slli t3, t3, 89061; RV32I-NEXT: li t4, 69062; RV32I-NEXT: beq a5, t4, .LBB17_1029063; RV32I-NEXT: # %bb.101:9064; RV32I-NEXT: mv a7, t09065; RV32I-NEXT: .LBB17_102:9066; RV32I-NEXT: sw s9, 8(sp) # 4-byte Folded Spill9067; RV32I-NEXT: sw s4, 12(sp) # 4-byte Folded Spill9068; RV32I-NEXT: li t0, 09069; RV32I-NEXT: lbu t4, 20(a0)9070; RV32I-NEXT: or t3, t3, a39071; RV32I-NEXT: slli t1, t1, 89072; RV32I-NEXT: beq a5, ra, .LBB17_1049073; RV32I-NEXT: # %bb.103:9074; RV32I-NEXT: mv t0, a79075; RV32I-NEXT: .LBB17_104:9076; RV32I-NEXT: or a3, t1, t49077; RV32I-NEXT: slli t3, t3, 169078; RV32I-NEXT: mv s9, a69079; RV32I-NEXT: beqz a1, .LBB17_1069080; RV32I-NEXT: # %bb.105:9081; RV32I-NEXT: mv s9, t09082; RV32I-NEXT: .LBB17_106:9083; RV32I-NEXT: li t1, 09084; RV32I-NEXT: or t0, t3, a39085; RV32I-NEXT: srl a6, a6, s39086; RV32I-NEXT: beqz t6, .LBB17_1089087; RV32I-NEXT: # %bb.107:9088; RV32I-NEXT: mv t1, a69089; RV32I-NEXT: .LBB17_108:9090; RV32I-NEXT: sll a7, t0, a19091; RV32I-NEXT: beqz a5, .LBB17_1149092; RV32I-NEXT: # %bb.109:9093; RV32I-NEXT: li t1, 09094; RV32I-NEXT: li a3, 09095; RV32I-NEXT: bnez t6, .LBB17_1159096; RV32I-NEXT: j .LBB17_1169097; RV32I-NEXT: .LBB17_110:9098; RV32I-NEXT: lw a7, 16(sp) # 4-byte Folded Reload9099; RV32I-NEXT: or a7, a7, a39100; RV32I-NEXT: li a3, 09101; RV32I-NEXT: beqz t6, .LBB17_929102; RV32I-NEXT: .LBB17_111:9103; RV32I-NEXT: lw a3, 24(sp) # 4-byte Folded Reload9104; RV32I-NEXT: bne a5, s0, .LBB17_939105; RV32I-NEXT: .LBB17_112:9106; RV32I-NEXT: or a7, s7, a39107; RV32I-NEXT: li a3, 09108; RV32I-NEXT: beqz t6, .LBB17_949109; RV32I-NEXT: .LBB17_113:9110; RV32I-NEXT: mv a3, s49111; RV32I-NEXT: beq a5, s8, .LBB17_959112; RV32I-NEXT: j .LBB17_969113; RV32I-NEXT: .LBB17_114:9114; RV32I-NEXT: or t1, a7, t19115; RV32I-NEXT: li a3, 09116; RV32I-NEXT: beqz t6, .LBB17_1169117; RV32I-NEXT: .LBB17_115:9118; RV32I-NEXT: mv a3, s109119; RV32I-NEXT: .LBB17_116:9120; RV32I-NEXT: beq a5, s5, .LBB17_1389121; RV32I-NEXT: # %bb.117:9122; RV32I-NEXT: li a3, 09123; RV32I-NEXT: bnez t6, .LBB17_1399124; RV32I-NEXT: .LBB17_118:9125; RV32I-NEXT: beq a5, s0, .LBB17_1409126; RV32I-NEXT: .LBB17_119:9127; RV32I-NEXT: li a3, 09128; RV32I-NEXT: bnez t6, .LBB17_1419129; RV32I-NEXT: .LBB17_120:9130; RV32I-NEXT: bne a5, s8, .LBB17_1229131; RV32I-NEXT: .LBB17_121:9132; RV32I-NEXT: or t1, s7, a39133; RV32I-NEXT: .LBB17_122:9134; RV32I-NEXT: li s4, 19135; RV32I-NEXT: li a3, 09136; RV32I-NEXT: beqz t6, .LBB17_1249137; RV32I-NEXT: # %bb.123:9138; RV32I-NEXT: lw a3, 12(sp) # 4-byte Folded Reload9139; RV32I-NEXT: .LBB17_124:9140; RV32I-NEXT: li s5, 39141; RV32I-NEXT: li s8, 29142; RV32I-NEXT: li t3, 49143; RV32I-NEXT: bne a5, t3, .LBB17_1269144; RV32I-NEXT: # %bb.125:9145; RV32I-NEXT: lw t1, 8(sp) # 4-byte Folded Reload9146; RV32I-NEXT: or t1, t1, a39147; RV32I-NEXT: .LBB17_126:9148; RV32I-NEXT: lbu s0, 27(a0)9149; RV32I-NEXT: mv t3, t59150; RV32I-NEXT: beq a5, s1, .LBB17_1289151; RV32I-NEXT: # %bb.127:9152; RV32I-NEXT: mv t3, t19153; RV32I-NEXT: .LBB17_128:9154; RV32I-NEXT: li t1, 09155; RV32I-NEXT: lbu t4, 25(a0)9156; RV32I-NEXT: lbu a3, 26(a0)9157; RV32I-NEXT: slli s0, s0, 89158; RV32I-NEXT: li s1, 69159; RV32I-NEXT: beq a5, s1, .LBB17_1309160; RV32I-NEXT: # %bb.129:9161; RV32I-NEXT: mv t1, t39162; RV32I-NEXT: .LBB17_130:9163; RV32I-NEXT: li t3, 09164; RV32I-NEXT: lbu s1, 24(a0)9165; RV32I-NEXT: or s0, s0, a39166; RV32I-NEXT: slli a3, t4, 89167; RV32I-NEXT: beq a5, ra, .LBB17_1329168; RV32I-NEXT: # %bb.131:9169; RV32I-NEXT: mv t3, t19170; RV32I-NEXT: .LBB17_132:9171; RV32I-NEXT: or a3, a3, s19172; RV32I-NEXT: slli s0, s0, 169173; RV32I-NEXT: mv ra, t09174; RV32I-NEXT: beqz a1, .LBB17_1349175; RV32I-NEXT: # %bb.133:9176; RV32I-NEXT: mv ra, t39177; RV32I-NEXT: .LBB17_134:9178; RV32I-NEXT: li t4, 09179; RV32I-NEXT: or t3, s0, a39180; RV32I-NEXT: srl t0, t0, s39181; RV32I-NEXT: li s0, 59182; RV32I-NEXT: beqz t6, .LBB17_1369183; RV32I-NEXT: # %bb.135:9184; RV32I-NEXT: mv t4, t09185; RV32I-NEXT: .LBB17_136:9186; RV32I-NEXT: sll t1, t3, a19187; RV32I-NEXT: beqz a5, .LBB17_1429188; RV32I-NEXT: # %bb.137:9189; RV32I-NEXT: li t4, 09190; RV32I-NEXT: li a3, 09191; RV32I-NEXT: bnez t6, .LBB17_1439192; RV32I-NEXT: j .LBB17_1449193; RV32I-NEXT: .LBB17_138:9194; RV32I-NEXT: or t1, s11, a39195; RV32I-NEXT: li a3, 09196; RV32I-NEXT: beqz t6, .LBB17_1189197; RV32I-NEXT: .LBB17_139:9198; RV32I-NEXT: lw a3, 20(sp) # 4-byte Folded Reload9199; RV32I-NEXT: bne a5, s0, .LBB17_1199200; RV32I-NEXT: .LBB17_140:9201; RV32I-NEXT: lw t1, 16(sp) # 4-byte Folded Reload9202; RV32I-NEXT: or t1, t1, a39203; RV32I-NEXT: li a3, 09204; RV32I-NEXT: beqz t6, .LBB17_1209205; RV32I-NEXT: .LBB17_141:9206; RV32I-NEXT: lw a3, 24(sp) # 4-byte Folded Reload9207; RV32I-NEXT: beq a5, s8, .LBB17_1219208; RV32I-NEXT: j .LBB17_1229209; RV32I-NEXT: .LBB17_142:9210; RV32I-NEXT: or t4, t1, t49211; RV32I-NEXT: li a3, 09212; RV32I-NEXT: beqz t6, .LBB17_1449213; RV32I-NEXT: .LBB17_143:9214; RV32I-NEXT: mv a3, a69215; RV32I-NEXT: .LBB17_144:9216; RV32I-NEXT: beq a5, s4, .LBB17_1649217; RV32I-NEXT: # %bb.145:9218; RV32I-NEXT: li a3, 09219; RV32I-NEXT: bnez t6, .LBB17_1659220; RV32I-NEXT: .LBB17_146:9221; RV32I-NEXT: beq a5, s8, .LBB17_1669222; RV32I-NEXT: .LBB17_147:9223; RV32I-NEXT: li a3, 09224; RV32I-NEXT: bnez t6, .LBB17_1679225; RV32I-NEXT: .LBB17_148:9226; RV32I-NEXT: beq a5, s5, .LBB17_1689227; RV32I-NEXT: .LBB17_149:9228; RV32I-NEXT: li a3, 09229; RV32I-NEXT: bnez t6, .LBB17_1699230; RV32I-NEXT: .LBB17_150:9231; RV32I-NEXT: li s1, 49232; RV32I-NEXT: beq a5, s1, .LBB17_1709233; RV32I-NEXT: .LBB17_151:9234; RV32I-NEXT: li a3, 09235; RV32I-NEXT: bnez t6, .LBB17_1719236; RV32I-NEXT: .LBB17_152:9237; RV32I-NEXT: bne a5, s0, .LBB17_1549238; RV32I-NEXT: .LBB17_153:9239; RV32I-NEXT: lw t4, 8(sp) # 4-byte Folded Reload9240; RV32I-NEXT: or t4, t4, a39241; RV32I-NEXT: .LBB17_154:9242; RV32I-NEXT: lbu s0, 31(a0)9243; RV32I-NEXT: mv a3, t59244; RV32I-NEXT: li s1, 69245; RV32I-NEXT: beq a5, s1, .LBB17_1569246; RV32I-NEXT: # %bb.155:9247; RV32I-NEXT: mv a3, t49248; RV32I-NEXT: .LBB17_156:9249; RV32I-NEXT: li t4, 09250; RV32I-NEXT: lbu s5, 29(a0)9251; RV32I-NEXT: lbu s1, 30(a0)9252; RV32I-NEXT: slli s0, s0, 89253; RV32I-NEXT: li s4, 79254; RV32I-NEXT: beq a5, s4, .LBB17_1589255; RV32I-NEXT: # %bb.157:9256; RV32I-NEXT: mv t4, a39257; RV32I-NEXT: .LBB17_158:9258; RV32I-NEXT: lbu a3, 28(a0)9259; RV32I-NEXT: slli s5, s5, 89260; RV32I-NEXT: or s0, s0, s19261; RV32I-NEXT: mv a0, t39262; RV32I-NEXT: beqz a1, .LBB17_1609263; RV32I-NEXT: # %bb.159:9264; RV32I-NEXT: mv a0, t49265; RV32I-NEXT: .LBB17_160:9266; RV32I-NEXT: li t4, 09267; RV32I-NEXT: or a3, s5, a39268; RV32I-NEXT: slli s0, s0, 169269; RV32I-NEXT: li s1, 59270; RV32I-NEXT: li s4, 49271; RV32I-NEXT: beqz t6, .LBB17_1629272; RV32I-NEXT: # %bb.161:9273; RV32I-NEXT: srl t4, t3, s39274; RV32I-NEXT: .LBB17_162:9275; RV32I-NEXT: or s3, s0, a39276; RV32I-NEXT: li s0, 69277; RV32I-NEXT: li s5, 19278; RV32I-NEXT: beqz a5, .LBB17_1729279; RV32I-NEXT: # %bb.163:9280; RV32I-NEXT: li t3, 09281; RV32I-NEXT: li a3, 09282; RV32I-NEXT: bnez t6, .LBB17_1739283; RV32I-NEXT: j .LBB17_1749284; RV32I-NEXT: .LBB17_164:9285; RV32I-NEXT: or t4, a7, a39286; RV32I-NEXT: li a3, 09287; RV32I-NEXT: beqz t6, .LBB17_1469288; RV32I-NEXT: .LBB17_165:9289; RV32I-NEXT: mv a3, s109290; RV32I-NEXT: bne a5, s8, .LBB17_1479291; RV32I-NEXT: .LBB17_166:9292; RV32I-NEXT: or t4, s11, a39293; RV32I-NEXT: li a3, 09294; RV32I-NEXT: beqz t6, .LBB17_1489295; RV32I-NEXT: .LBB17_167:9296; RV32I-NEXT: lw a3, 20(sp) # 4-byte Folded Reload9297; RV32I-NEXT: bne a5, s5, .LBB17_1499298; RV32I-NEXT: .LBB17_168:9299; RV32I-NEXT: lw t4, 16(sp) # 4-byte Folded Reload9300; RV32I-NEXT: or t4, t4, a39301; RV32I-NEXT: li a3, 09302; RV32I-NEXT: beqz t6, .LBB17_1509303; RV32I-NEXT: .LBB17_169:9304; RV32I-NEXT: lw a3, 24(sp) # 4-byte Folded Reload9305; RV32I-NEXT: li s1, 49306; RV32I-NEXT: bne a5, s1, .LBB17_1519307; RV32I-NEXT: .LBB17_170:9308; RV32I-NEXT: or t4, s7, a39309; RV32I-NEXT: li a3, 09310; RV32I-NEXT: beqz t6, .LBB17_1529311; RV32I-NEXT: .LBB17_171:9312; RV32I-NEXT: lw a3, 12(sp) # 4-byte Folded Reload9313; RV32I-NEXT: beq a5, s0, .LBB17_1539314; RV32I-NEXT: j .LBB17_1549315; RV32I-NEXT: .LBB17_172:9316; RV32I-NEXT: sll a3, s3, a19317; RV32I-NEXT: or t3, a3, t49318; RV32I-NEXT: li a3, 09319; RV32I-NEXT: beqz t6, .LBB17_1749320; RV32I-NEXT: .LBB17_173:9321; RV32I-NEXT: mv a3, t09322; RV32I-NEXT: .LBB17_174:9323; RV32I-NEXT: beq a5, s5, .LBB17_1909324; RV32I-NEXT: # %bb.175:9325; RV32I-NEXT: li a3, 09326; RV32I-NEXT: bnez t6, .LBB17_1919327; RV32I-NEXT: .LBB17_176:9328; RV32I-NEXT: bne a5, s8, .LBB17_1789329; RV32I-NEXT: .LBB17_177:9330; RV32I-NEXT: or t3, a7, a39331; RV32I-NEXT: .LBB17_178:9332; RV32I-NEXT: li a3, 09333; RV32I-NEXT: li a6, 39334; RV32I-NEXT: bnez t6, .LBB17_1929335; RV32I-NEXT: # %bb.179:9336; RV32I-NEXT: beq a5, a6, .LBB17_1939337; RV32I-NEXT: .LBB17_180:9338; RV32I-NEXT: li a3, 09339; RV32I-NEXT: bnez t6, .LBB17_1949340; RV32I-NEXT: .LBB17_181:9341; RV32I-NEXT: beq a5, s4, .LBB17_1959342; RV32I-NEXT: .LBB17_182:9343; RV32I-NEXT: li a3, 09344; RV32I-NEXT: bnez t6, .LBB17_1969345; RV32I-NEXT: .LBB17_183:9346; RV32I-NEXT: beq a5, s1, .LBB17_1979347; RV32I-NEXT: .LBB17_184:9348; RV32I-NEXT: li a3, 09349; RV32I-NEXT: bnez t6, .LBB17_1989350; RV32I-NEXT: .LBB17_185:9351; RV32I-NEXT: beq a5, s0, .LBB17_1999352; RV32I-NEXT: .LBB17_186:9353; RV32I-NEXT: li a3, 79354; RV32I-NEXT: bne a5, a3, .LBB17_2009355; RV32I-NEXT: .LBB17_187:9356; RV32I-NEXT: beqz a1, .LBB17_1899357; RV32I-NEXT: .LBB17_188:9358; RV32I-NEXT: mv s3, t59359; RV32I-NEXT: .LBB17_189:9360; RV32I-NEXT: srli a1, a4, 169361; RV32I-NEXT: lui a7, 169362; RV32I-NEXT: srli a6, a4, 249363; RV32I-NEXT: srli a3, t2, 169364; RV32I-NEXT: srli t1, t2, 249365; RV32I-NEXT: srli a5, s2, 169366; RV32I-NEXT: srli t5, s2, 249367; RV32I-NEXT: srli t0, s6, 169368; RV32I-NEXT: srli t6, s6, 249369; RV32I-NEXT: srli t4, s9, 169370; RV32I-NEXT: srli s4, s9, 249371; RV32I-NEXT: srli t3, ra, 169372; RV32I-NEXT: srli s1, ra, 249373; RV32I-NEXT: srli s0, a0, 169374; RV32I-NEXT: srli s5, a0, 249375; RV32I-NEXT: srli s7, s3, 169376; RV32I-NEXT: srli s8, s3, 249377; RV32I-NEXT: addi a7, a7, -19378; RV32I-NEXT: and s10, a4, a79379; RV32I-NEXT: and s11, t2, a79380; RV32I-NEXT: srli s10, s10, 89381; RV32I-NEXT: sb a4, 0(a2)9382; RV32I-NEXT: sb s10, 1(a2)9383; RV32I-NEXT: sb a1, 2(a2)9384; RV32I-NEXT: sb a6, 3(a2)9385; RV32I-NEXT: and a1, s2, a79386; RV32I-NEXT: srli a4, s11, 89387; RV32I-NEXT: sb t2, 4(a2)9388; RV32I-NEXT: sb a4, 5(a2)9389; RV32I-NEXT: sb a3, 6(a2)9390; RV32I-NEXT: sb t1, 7(a2)9391; RV32I-NEXT: and a3, s6, a79392; RV32I-NEXT: srli a1, a1, 89393; RV32I-NEXT: sb s2, 8(a2)9394; RV32I-NEXT: sb a1, 9(a2)9395; RV32I-NEXT: sb a5, 10(a2)9396; RV32I-NEXT: sb t5, 11(a2)9397; RV32I-NEXT: and a1, s9, a79398; RV32I-NEXT: srli a3, a3, 89399; RV32I-NEXT: sb s6, 12(a2)9400; RV32I-NEXT: sb a3, 13(a2)9401; RV32I-NEXT: sb t0, 14(a2)9402; RV32I-NEXT: sb t6, 15(a2)9403; RV32I-NEXT: and a3, ra, a79404; RV32I-NEXT: srli a1, a1, 89405; RV32I-NEXT: sb s9, 16(a2)9406; RV32I-NEXT: sb a1, 17(a2)9407; RV32I-NEXT: sb t4, 18(a2)9408; RV32I-NEXT: sb s4, 19(a2)9409; RV32I-NEXT: and a1, a0, a79410; RV32I-NEXT: and a4, s3, a79411; RV32I-NEXT: srli a3, a3, 89412; RV32I-NEXT: srli a1, a1, 89413; RV32I-NEXT: srli a4, a4, 89414; RV32I-NEXT: sb ra, 20(a2)9415; RV32I-NEXT: sb a3, 21(a2)9416; RV32I-NEXT: sb t3, 22(a2)9417; RV32I-NEXT: sb s1, 23(a2)9418; RV32I-NEXT: sb a0, 24(a2)9419; RV32I-NEXT: sb a1, 25(a2)9420; RV32I-NEXT: sb s0, 26(a2)9421; RV32I-NEXT: sb s5, 27(a2)9422; RV32I-NEXT: sb s3, 28(a2)9423; RV32I-NEXT: sb a4, 29(a2)9424; RV32I-NEXT: sb s7, 30(a2)9425; RV32I-NEXT: sb s8, 31(a2)9426; RV32I-NEXT: lw ra, 76(sp) # 4-byte Folded Reload9427; RV32I-NEXT: lw s0, 72(sp) # 4-byte Folded Reload9428; RV32I-NEXT: lw s1, 68(sp) # 4-byte Folded Reload9429; RV32I-NEXT: lw s2, 64(sp) # 4-byte Folded Reload9430; RV32I-NEXT: lw s3, 60(sp) # 4-byte Folded Reload9431; RV32I-NEXT: lw s4, 56(sp) # 4-byte Folded Reload9432; RV32I-NEXT: lw s5, 52(sp) # 4-byte Folded Reload9433; RV32I-NEXT: lw s6, 48(sp) # 4-byte Folded Reload9434; RV32I-NEXT: lw s7, 44(sp) # 4-byte Folded Reload9435; RV32I-NEXT: lw s8, 40(sp) # 4-byte Folded Reload9436; RV32I-NEXT: lw s9, 36(sp) # 4-byte Folded Reload9437; RV32I-NEXT: lw s10, 32(sp) # 4-byte Folded Reload9438; RV32I-NEXT: lw s11, 28(sp) # 4-byte Folded Reload9439; RV32I-NEXT: addi sp, sp, 809440; RV32I-NEXT: ret9441; RV32I-NEXT: .LBB17_190:9442; RV32I-NEXT: or t3, t1, a39443; RV32I-NEXT: li a3, 09444; RV32I-NEXT: beqz t6, .LBB17_1769445; RV32I-NEXT: .LBB17_191:9446; RV32I-NEXT: mv a3, a69447; RV32I-NEXT: beq a5, s8, .LBB17_1779448; RV32I-NEXT: j .LBB17_1789449; RV32I-NEXT: .LBB17_192:9450; RV32I-NEXT: mv a3, s109451; RV32I-NEXT: bne a5, a6, .LBB17_1809452; RV32I-NEXT: .LBB17_193:9453; RV32I-NEXT: or t3, s11, a39454; RV32I-NEXT: li a3, 09455; RV32I-NEXT: beqz t6, .LBB17_1819456; RV32I-NEXT: .LBB17_194:9457; RV32I-NEXT: lw a3, 20(sp) # 4-byte Folded Reload9458; RV32I-NEXT: bne a5, s4, .LBB17_1829459; RV32I-NEXT: .LBB17_195:9460; RV32I-NEXT: lw a6, 16(sp) # 4-byte Folded Reload9461; RV32I-NEXT: or t3, a6, a39462; RV32I-NEXT: li a3, 09463; RV32I-NEXT: beqz t6, .LBB17_1839464; RV32I-NEXT: .LBB17_196:9465; RV32I-NEXT: lw a3, 24(sp) # 4-byte Folded Reload9466; RV32I-NEXT: bne a5, s1, .LBB17_1849467; RV32I-NEXT: .LBB17_197:9468; RV32I-NEXT: or t3, s7, a39469; RV32I-NEXT: li a3, 09470; RV32I-NEXT: beqz t6, .LBB17_1859471; RV32I-NEXT: .LBB17_198:9472; RV32I-NEXT: lw a3, 12(sp) # 4-byte Folded Reload9473; RV32I-NEXT: bne a5, s0, .LBB17_1869474; RV32I-NEXT: .LBB17_199:9475; RV32I-NEXT: lw a6, 8(sp) # 4-byte Folded Reload9476; RV32I-NEXT: or t3, a6, a39477; RV32I-NEXT: li a3, 79478; RV32I-NEXT: beq a5, a3, .LBB17_1879479; RV32I-NEXT: .LBB17_200:9480; RV32I-NEXT: mv t5, t39481; RV32I-NEXT: bnez a1, .LBB17_1889482; RV32I-NEXT: j .LBB17_1899483 %src = load i256, ptr %src.ptr, align 19484 %dwordOff = load i256, ptr %dwordOff.ptr, align 19485 %bitOff = shl i256 %dwordOff, 69486 %res = shl i256 %src, %bitOff9487 store i256 %res, ptr %dst, align 19488 ret void9489}9490 9491define void @ashr_32bytes(ptr %src.ptr, ptr %byteOff.ptr, ptr %dst) nounwind {9492; RV64I-LABEL: ashr_32bytes:9493; RV64I: # %bb.0:9494; RV64I-NEXT: addi sp, sp, -969495; RV64I-NEXT: sd s0, 88(sp) # 8-byte Folded Spill9496; RV64I-NEXT: sd s1, 80(sp) # 8-byte Folded Spill9497; RV64I-NEXT: sd s2, 72(sp) # 8-byte Folded Spill9498; RV64I-NEXT: sd s3, 64(sp) # 8-byte Folded Spill9499; RV64I-NEXT: sd s4, 56(sp) # 8-byte Folded Spill9500; RV64I-NEXT: sd s5, 48(sp) # 8-byte Folded Spill9501; RV64I-NEXT: sd s6, 40(sp) # 8-byte Folded Spill9502; RV64I-NEXT: sd s7, 32(sp) # 8-byte Folded Spill9503; RV64I-NEXT: sd s8, 24(sp) # 8-byte Folded Spill9504; RV64I-NEXT: sd s9, 16(sp) # 8-byte Folded Spill9505; RV64I-NEXT: sd s10, 8(sp) # 8-byte Folded Spill9506; RV64I-NEXT: sd s11, 0(sp) # 8-byte Folded Spill9507; RV64I-NEXT: lbu a3, 0(a0)9508; RV64I-NEXT: lbu a4, 1(a0)9509; RV64I-NEXT: lbu a5, 2(a0)9510; RV64I-NEXT: lbu a6, 3(a0)9511; RV64I-NEXT: lbu a7, 4(a0)9512; RV64I-NEXT: lbu t0, 5(a0)9513; RV64I-NEXT: lbu t1, 6(a0)9514; RV64I-NEXT: lbu t2, 7(a0)9515; RV64I-NEXT: lbu t3, 8(a0)9516; RV64I-NEXT: lbu t4, 9(a0)9517; RV64I-NEXT: lbu t5, 10(a0)9518; RV64I-NEXT: lbu t6, 11(a0)9519; RV64I-NEXT: lbu s0, 12(a0)9520; RV64I-NEXT: lbu s1, 13(a0)9521; RV64I-NEXT: lbu s2, 14(a0)9522; RV64I-NEXT: lbu s3, 15(a0)9523; RV64I-NEXT: lbu s4, 16(a0)9524; RV64I-NEXT: lbu s5, 17(a0)9525; RV64I-NEXT: lbu s6, 18(a0)9526; RV64I-NEXT: lbu s7, 19(a0)9527; RV64I-NEXT: slli a4, a4, 89528; RV64I-NEXT: slli a6, a6, 89529; RV64I-NEXT: slli t0, t0, 89530; RV64I-NEXT: or a3, a4, a39531; RV64I-NEXT: or a5, a6, a59532; RV64I-NEXT: or a7, t0, a79533; RV64I-NEXT: lbu s8, 20(a0)9534; RV64I-NEXT: lbu s9, 21(a0)9535; RV64I-NEXT: lbu s10, 22(a0)9536; RV64I-NEXT: lbu s11, 23(a0)9537; RV64I-NEXT: slli t2, t2, 89538; RV64I-NEXT: slli t4, t4, 89539; RV64I-NEXT: slli t6, t6, 89540; RV64I-NEXT: slli s1, s1, 89541; RV64I-NEXT: or t1, t2, t19542; RV64I-NEXT: or a4, t4, t39543; RV64I-NEXT: or a6, t6, t59544; RV64I-NEXT: or t0, s1, s09545; RV64I-NEXT: lbu t5, 24(a0)9546; RV64I-NEXT: lbu t6, 25(a0)9547; RV64I-NEXT: lbu s0, 26(a0)9548; RV64I-NEXT: lbu s1, 27(a0)9549; RV64I-NEXT: slli s3, s3, 89550; RV64I-NEXT: slli s5, s5, 89551; RV64I-NEXT: slli s7, s7, 89552; RV64I-NEXT: or t4, s3, s29553; RV64I-NEXT: or t2, s5, s49554; RV64I-NEXT: or t3, s7, s69555; RV64I-NEXT: lbu s2, 28(a0)9556; RV64I-NEXT: lbu s3, 29(a0)9557; RV64I-NEXT: lbu s4, 30(a0)9558; RV64I-NEXT: lbu a0, 31(a0)9559; RV64I-NEXT: slli s9, s9, 89560; RV64I-NEXT: slli s11, s11, 89561; RV64I-NEXT: slli t6, t6, 89562; RV64I-NEXT: slli s1, s1, 89563; RV64I-NEXT: or s5, s9, s89564; RV64I-NEXT: or s6, s11, s109565; RV64I-NEXT: or t5, t6, t59566; RV64I-NEXT: or s0, s1, s09567; RV64I-NEXT: lbu t6, 0(a1)9568; RV64I-NEXT: lbu s1, 1(a1)9569; RV64I-NEXT: lbu s7, 2(a1)9570; RV64I-NEXT: lbu s8, 3(a1)9571; RV64I-NEXT: slli s3, s3, 89572; RV64I-NEXT: slli a0, a0, 89573; RV64I-NEXT: slli s1, s1, 89574; RV64I-NEXT: or s2, s3, s29575; RV64I-NEXT: or s3, a0, s49576; RV64I-NEXT: or t6, s1, t69577; RV64I-NEXT: lbu a0, 4(a1)9578; RV64I-NEXT: lbu s1, 5(a1)9579; RV64I-NEXT: lbu s4, 6(a1)9580; RV64I-NEXT: lbu a1, 7(a1)9581; RV64I-NEXT: slli s8, s8, 89582; RV64I-NEXT: or s7, s8, s79583; RV64I-NEXT: slli s1, s1, 89584; RV64I-NEXT: or s1, s1, a09585; RV64I-NEXT: slli a1, a1, 89586; RV64I-NEXT: or s4, a1, s49587; RV64I-NEXT: slli t1, t1, 169588; RV64I-NEXT: or a1, t1, a79589; RV64I-NEXT: slli t4, t4, 169590; RV64I-NEXT: or a0, t4, t09591; RV64I-NEXT: slli t3, t3, 169592; RV64I-NEXT: or a7, t3, t29593; RV64I-NEXT: slli s6, s6, 169594; RV64I-NEXT: or t1, s6, s59595; RV64I-NEXT: slli s0, s0, 169596; RV64I-NEXT: or t4, s0, t59597; RV64I-NEXT: slli s3, s3, 169598; RV64I-NEXT: or t5, s3, s29599; RV64I-NEXT: slli s7, s7, 169600; RV64I-NEXT: or t6, s7, t69601; RV64I-NEXT: slli s4, s4, 169602; RV64I-NEXT: or s0, s4, s19603; RV64I-NEXT: li t0, 649604; RV64I-NEXT: slli t3, a5, 169605; RV64I-NEXT: slli t2, a6, 169606; RV64I-NEXT: slli t1, t1, 329607; RV64I-NEXT: slli t5, t5, 329608; RV64I-NEXT: slli s0, s0, 329609; RV64I-NEXT: or a7, t1, a79610; RV64I-NEXT: or a5, t5, t49611; RV64I-NEXT: or a6, s0, t69612; RV64I-NEXT: slli a6, a6, 39613; RV64I-NEXT: sub t1, a6, t09614; RV64I-NEXT: neg t5, a69615; RV64I-NEXT: sll t4, a5, t59616; RV64I-NEXT: bltu a6, t0, .LBB18_29617; RV64I-NEXT: # %bb.1:9618; RV64I-NEXT: sra t6, a5, t19619; RV64I-NEXT: j .LBB18_39620; RV64I-NEXT: .LBB18_2:9621; RV64I-NEXT: srl t6, a7, a69622; RV64I-NEXT: or t6, t6, t49623; RV64I-NEXT: .LBB18_3:9624; RV64I-NEXT: or a3, t3, a39625; RV64I-NEXT: slli t3, a1, 329626; RV64I-NEXT: or t2, t2, a49627; RV64I-NEXT: slli a0, a0, 329628; RV64I-NEXT: mv a1, a79629; RV64I-NEXT: beqz a6, .LBB18_59630; RV64I-NEXT: # %bb.4:9631; RV64I-NEXT: mv a1, t69632; RV64I-NEXT: .LBB18_5:9633; RV64I-NEXT: or a4, t3, a39634; RV64I-NEXT: or a3, a0, t29635; RV64I-NEXT: bltu a6, t0, .LBB18_79636; RV64I-NEXT: # %bb.6:9637; RV64I-NEXT: srai a0, a5, 639638; RV64I-NEXT: srl t3, a3, t19639; RV64I-NEXT: j .LBB18_89640; RV64I-NEXT: .LBB18_7:9641; RV64I-NEXT: sra a0, a5, a69642; RV64I-NEXT: srl t1, a4, a69643; RV64I-NEXT: sll t2, a3, t59644; RV64I-NEXT: or t3, t1, t29645; RV64I-NEXT: .LBB18_8:9646; RV64I-NEXT: li t1, 1289647; RV64I-NEXT: mv t2, a49648; RV64I-NEXT: beqz a6, .LBB18_109649; RV64I-NEXT: # %bb.9:9650; RV64I-NEXT: mv t2, t39651; RV64I-NEXT: .LBB18_10:9652; RV64I-NEXT: sub t6, t1, a69653; RV64I-NEXT: bltu a6, t0, .LBB18_139654; RV64I-NEXT: # %bb.11:9655; RV64I-NEXT: li t3, 09656; RV64I-NEXT: bgeu t6, t0, .LBB18_149657; RV64I-NEXT: .LBB18_12:9658; RV64I-NEXT: sll t5, a7, t59659; RV64I-NEXT: neg s0, t69660; RV64I-NEXT: srl s0, a7, s09661; RV64I-NEXT: or s1, s0, t49662; RV64I-NEXT: j .LBB18_159663; RV64I-NEXT: .LBB18_13:9664; RV64I-NEXT: srl t3, a3, a69665; RV64I-NEXT: bltu t6, t0, .LBB18_129666; RV64I-NEXT: .LBB18_14:9667; RV64I-NEXT: li t5, 09668; RV64I-NEXT: sub t4, t6, t09669; RV64I-NEXT: sll s1, a7, t49670; RV64I-NEXT: .LBB18_15:9671; RV64I-NEXT: sub s0, a6, t19672; RV64I-NEXT: mv t4, a59673; RV64I-NEXT: beqz t6, .LBB18_179674; RV64I-NEXT: # %bb.16:9675; RV64I-NEXT: mv t4, s19676; RV64I-NEXT: .LBB18_17:9677; RV64I-NEXT: bltu s0, t0, .LBB18_199678; RV64I-NEXT: # %bb.18:9679; RV64I-NEXT: sub t6, s0, t09680; RV64I-NEXT: sra t6, a5, t69681; RV64I-NEXT: bnez s0, .LBB18_209682; RV64I-NEXT: j .LBB18_219683; RV64I-NEXT: .LBB18_19:9684; RV64I-NEXT: srl t6, a7, s09685; RV64I-NEXT: neg s1, s09686; RV64I-NEXT: sll s1, a5, s19687; RV64I-NEXT: or t6, t6, s19688; RV64I-NEXT: beqz s0, .LBB18_219689; RV64I-NEXT: .LBB18_20:9690; RV64I-NEXT: mv a7, t69691; RV64I-NEXT: .LBB18_21:9692; RV64I-NEXT: bltu s0, t0, .LBB18_239693; RV64I-NEXT: # %bb.22:9694; RV64I-NEXT: srai t0, a5, 639695; RV64I-NEXT: bltu a6, t1, .LBB18_249696; RV64I-NEXT: j .LBB18_259697; RV64I-NEXT: .LBB18_23:9698; RV64I-NEXT: sra t0, a5, s09699; RV64I-NEXT: bgeu a6, t1, .LBB18_259700; RV64I-NEXT: .LBB18_24:9701; RV64I-NEXT: or a7, t2, t59702; RV64I-NEXT: or t0, t3, t49703; RV64I-NEXT: .LBB18_25:9704; RV64I-NEXT: bnez a6, .LBB18_299705; RV64I-NEXT: # %bb.26:9706; RV64I-NEXT: bltu a6, t1, .LBB18_289707; RV64I-NEXT: .LBB18_27:9708; RV64I-NEXT: srai a1, a5, 639709; RV64I-NEXT: mv a0, a19710; RV64I-NEXT: .LBB18_28:9711; RV64I-NEXT: srli a5, a4, 329712; RV64I-NEXT: srliw a6, a4, 169713; RV64I-NEXT: lui t2, 169714; RV64I-NEXT: srliw t1, a4, 249715; RV64I-NEXT: srli t0, a4, 489716; RV64I-NEXT: srli t5, a4, 569717; RV64I-NEXT: srli a7, a3, 329718; RV64I-NEXT: srliw t4, a3, 169719; RV64I-NEXT: srliw s0, a3, 249720; RV64I-NEXT: srli t6, a3, 489721; RV64I-NEXT: srli s3, a3, 569722; RV64I-NEXT: srli t3, a1, 329723; RV64I-NEXT: srliw s2, a1, 169724; RV64I-NEXT: srliw s6, a1, 249725; RV64I-NEXT: srli s4, a1, 489726; RV64I-NEXT: srli s7, a1, 569727; RV64I-NEXT: srli s1, a0, 329728; RV64I-NEXT: srliw s5, a0, 169729; RV64I-NEXT: srliw s8, a0, 249730; RV64I-NEXT: srli s9, a0, 489731; RV64I-NEXT: srli s10, a0, 569732; RV64I-NEXT: addi t2, t2, -19733; RV64I-NEXT: and s11, a4, t29734; RV64I-NEXT: srli s11, s11, 89735; RV64I-NEXT: sb a4, 0(a2)9736; RV64I-NEXT: sb s11, 1(a2)9737; RV64I-NEXT: sb a6, 2(a2)9738; RV64I-NEXT: sb t1, 3(a2)9739; RV64I-NEXT: and a4, a5, t29740; RV64I-NEXT: srli a4, a4, 89741; RV64I-NEXT: sb a5, 4(a2)9742; RV64I-NEXT: sb a4, 5(a2)9743; RV64I-NEXT: sb t0, 6(a2)9744; RV64I-NEXT: sb t5, 7(a2)9745; RV64I-NEXT: and a4, a3, t29746; RV64I-NEXT: srli a4, a4, 89747; RV64I-NEXT: sb a3, 8(a2)9748; RV64I-NEXT: sb a4, 9(a2)9749; RV64I-NEXT: sb t4, 10(a2)9750; RV64I-NEXT: sb s0, 11(a2)9751; RV64I-NEXT: and a3, a7, t29752; RV64I-NEXT: srli a3, a3, 89753; RV64I-NEXT: sb a7, 12(a2)9754; RV64I-NEXT: sb a3, 13(a2)9755; RV64I-NEXT: sb t6, 14(a2)9756; RV64I-NEXT: sb s3, 15(a2)9757; RV64I-NEXT: and a3, a1, t29758; RV64I-NEXT: srli a3, a3, 89759; RV64I-NEXT: sb a1, 16(a2)9760; RV64I-NEXT: sb a3, 17(a2)9761; RV64I-NEXT: sb s2, 18(a2)9762; RV64I-NEXT: sb s6, 19(a2)9763; RV64I-NEXT: and a1, t3, t29764; RV64I-NEXT: srli a1, a1, 89765; RV64I-NEXT: sb t3, 20(a2)9766; RV64I-NEXT: sb a1, 21(a2)9767; RV64I-NEXT: sb s4, 22(a2)9768; RV64I-NEXT: sb s7, 23(a2)9769; RV64I-NEXT: and a1, a0, t29770; RV64I-NEXT: and a3, s1, t29771; RV64I-NEXT: srli a1, a1, 89772; RV64I-NEXT: srli a3, a3, 89773; RV64I-NEXT: sb a0, 24(a2)9774; RV64I-NEXT: sb a1, 25(a2)9775; RV64I-NEXT: sb s5, 26(a2)9776; RV64I-NEXT: sb s8, 27(a2)9777; RV64I-NEXT: sb s1, 28(a2)9778; RV64I-NEXT: sb a3, 29(a2)9779; RV64I-NEXT: sb s9, 30(a2)9780; RV64I-NEXT: sb s10, 31(a2)9781; RV64I-NEXT: ld s0, 88(sp) # 8-byte Folded Reload9782; RV64I-NEXT: ld s1, 80(sp) # 8-byte Folded Reload9783; RV64I-NEXT: ld s2, 72(sp) # 8-byte Folded Reload9784; RV64I-NEXT: ld s3, 64(sp) # 8-byte Folded Reload9785; RV64I-NEXT: ld s4, 56(sp) # 8-byte Folded Reload9786; RV64I-NEXT: ld s5, 48(sp) # 8-byte Folded Reload9787; RV64I-NEXT: ld s6, 40(sp) # 8-byte Folded Reload9788; RV64I-NEXT: ld s7, 32(sp) # 8-byte Folded Reload9789; RV64I-NEXT: ld s8, 24(sp) # 8-byte Folded Reload9790; RV64I-NEXT: ld s9, 16(sp) # 8-byte Folded Reload9791; RV64I-NEXT: ld s10, 8(sp) # 8-byte Folded Reload9792; RV64I-NEXT: ld s11, 0(sp) # 8-byte Folded Reload9793; RV64I-NEXT: addi sp, sp, 969794; RV64I-NEXT: ret9795; RV64I-NEXT: .LBB18_29:9796; RV64I-NEXT: mv a4, a79797; RV64I-NEXT: mv a3, t09798; RV64I-NEXT: bgeu a6, t1, .LBB18_279799; RV64I-NEXT: j .LBB18_289800;9801; RV32I-LABEL: ashr_32bytes:9802; RV32I: # %bb.0:9803; RV32I-NEXT: addi sp, sp, -809804; RV32I-NEXT: sw ra, 76(sp) # 4-byte Folded Spill9805; RV32I-NEXT: sw s0, 72(sp) # 4-byte Folded Spill9806; RV32I-NEXT: sw s1, 68(sp) # 4-byte Folded Spill9807; RV32I-NEXT: sw s2, 64(sp) # 4-byte Folded Spill9808; RV32I-NEXT: sw s3, 60(sp) # 4-byte Folded Spill9809; RV32I-NEXT: sw s4, 56(sp) # 4-byte Folded Spill9810; RV32I-NEXT: sw s5, 52(sp) # 4-byte Folded Spill9811; RV32I-NEXT: sw s6, 48(sp) # 4-byte Folded Spill9812; RV32I-NEXT: sw s7, 44(sp) # 4-byte Folded Spill9813; RV32I-NEXT: sw s8, 40(sp) # 4-byte Folded Spill9814; RV32I-NEXT: sw s9, 36(sp) # 4-byte Folded Spill9815; RV32I-NEXT: sw s10, 32(sp) # 4-byte Folded Spill9816; RV32I-NEXT: sw s11, 28(sp) # 4-byte Folded Spill9817; RV32I-NEXT: li a5, 09818; RV32I-NEXT: lbu a3, 0(a0)9819; RV32I-NEXT: lbu a4, 1(a0)9820; RV32I-NEXT: lbu t0, 2(a0)9821; RV32I-NEXT: lbu t1, 3(a0)9822; RV32I-NEXT: lbu t2, 4(a0)9823; RV32I-NEXT: lbu t3, 5(a0)9824; RV32I-NEXT: lbu t4, 6(a0)9825; RV32I-NEXT: lbu t5, 7(a0)9826; RV32I-NEXT: lbu t6, 8(a0)9827; RV32I-NEXT: lbu s0, 9(a0)9828; RV32I-NEXT: lbu s1, 10(a0)9829; RV32I-NEXT: lbu s2, 11(a0)9830; RV32I-NEXT: slli a4, a4, 89831; RV32I-NEXT: or a4, a4, a39832; RV32I-NEXT: lbu a7, 13(a0)9833; RV32I-NEXT: lbu a6, 14(a0)9834; RV32I-NEXT: lbu a3, 15(a0)9835; RV32I-NEXT: lbu s3, 28(a0)9836; RV32I-NEXT: slli t1, t1, 89837; RV32I-NEXT: slli t3, t3, 89838; RV32I-NEXT: slli t5, t5, 89839; RV32I-NEXT: or t0, t1, t09840; RV32I-NEXT: or t1, t3, t29841; RV32I-NEXT: or t4, t5, t49842; RV32I-NEXT: lbu t2, 29(a0)9843; RV32I-NEXT: lbu t3, 30(a0)9844; RV32I-NEXT: lbu t5, 31(a0)9845; RV32I-NEXT: slli s0, s0, 89846; RV32I-NEXT: slli s2, s2, 89847; RV32I-NEXT: slli s4, t2, 89848; RV32I-NEXT: or t2, s0, t69849; RV32I-NEXT: or s0, s2, s19850; RV32I-NEXT: or s1, s4, s39851; RV32I-NEXT: lbu t6, 0(a1)9852; RV32I-NEXT: lbu s2, 1(a1)9853; RV32I-NEXT: lbu s3, 2(a1)9854; RV32I-NEXT: lbu a1, 3(a1)9855; RV32I-NEXT: slli t5, t5, 89856; RV32I-NEXT: or s4, t5, t39857; RV32I-NEXT: slli s2, s2, 89858; RV32I-NEXT: or s2, s2, t69859; RV32I-NEXT: slli a1, a1, 89860; RV32I-NEXT: or a1, a1, s39861; RV32I-NEXT: slli t3, a3, 89862; RV32I-NEXT: slli t6, t0, 169863; RV32I-NEXT: slli t4, t4, 169864; RV32I-NEXT: slli t5, s0, 169865; RV32I-NEXT: slli s4, s4, 169866; RV32I-NEXT: slli a3, a1, 169867; RV32I-NEXT: or s5, t4, t19868; RV32I-NEXT: or a1, s4, s19869; RV32I-NEXT: or t0, a3, s29870; RV32I-NEXT: slli t0, t0, 39871; RV32I-NEXT: srli t1, t0, 59872; RV32I-NEXT: andi t4, t0, 319873; RV32I-NEXT: neg a3, t49874; RV32I-NEXT: beqz t4, .LBB18_29875; RV32I-NEXT: # %bb.1:9876; RV32I-NEXT: sll a5, s5, a39877; RV32I-NEXT: .LBB18_2:9878; RV32I-NEXT: or s10, t6, a49879; RV32I-NEXT: lbu t6, 12(a0)9880; RV32I-NEXT: lbu s0, 19(a0)9881; RV32I-NEXT: slli s1, a7, 89882; RV32I-NEXT: or a6, t3, a69883; RV32I-NEXT: or a4, t5, t29884; RV32I-NEXT: srai t2, a1, 319885; RV32I-NEXT: beqz t1, .LBB18_49886; RV32I-NEXT: # %bb.3:9887; RV32I-NEXT: mv a5, t29888; RV32I-NEXT: j .LBB18_59889; RV32I-NEXT: .LBB18_4:9890; RV32I-NEXT: srl a7, s10, t09891; RV32I-NEXT: or a5, a7, a59892; RV32I-NEXT: .LBB18_5:9893; RV32I-NEXT: li a7, 09894; RV32I-NEXT: lbu s3, 17(a0)9895; RV32I-NEXT: lbu t3, 18(a0)9896; RV32I-NEXT: slli s0, s0, 89897; RV32I-NEXT: or s4, s1, t69898; RV32I-NEXT: slli a6, a6, 169899; RV32I-NEXT: li s6, 19900; RV32I-NEXT: sll s2, a4, a39901; RV32I-NEXT: beqz t4, .LBB18_79902; RV32I-NEXT: # %bb.6:9903; RV32I-NEXT: mv a7, s29904; RV32I-NEXT: .LBB18_7:9905; RV32I-NEXT: lbu t5, 16(a0)9906; RV32I-NEXT: lbu t6, 23(a0)9907; RV32I-NEXT: slli s1, s3, 89908; RV32I-NEXT: or s0, s0, t39909; RV32I-NEXT: srl s3, s5, t09910; RV32I-NEXT: or a6, a6, s49911; RV32I-NEXT: bne t1, s6, .LBB18_99912; RV32I-NEXT: # %bb.8:9913; RV32I-NEXT: or a5, s3, a79914; RV32I-NEXT: .LBB18_9:9915; RV32I-NEXT: li t3, 09916; RV32I-NEXT: lbu s6, 21(a0)9917; RV32I-NEXT: lbu a7, 22(a0)9918; RV32I-NEXT: slli s4, t6, 89919; RV32I-NEXT: or s7, s1, t59920; RV32I-NEXT: slli s8, s0, 169921; RV32I-NEXT: li s9, 29922; RV32I-NEXT: sll s0, a6, a39923; RV32I-NEXT: beqz t4, .LBB18_119924; RV32I-NEXT: # %bb.10:9925; RV32I-NEXT: mv t3, s09926; RV32I-NEXT: .LBB18_11:9927; RV32I-NEXT: lbu t5, 20(a0)9928; RV32I-NEXT: lbu t6, 27(a0)9929; RV32I-NEXT: slli s6, s6, 89930; RV32I-NEXT: or s4, s4, a79931; RV32I-NEXT: srl s1, a4, t09932; RV32I-NEXT: or a7, s8, s79933; RV32I-NEXT: bne t1, s9, .LBB18_139934; RV32I-NEXT: # %bb.12:9935; RV32I-NEXT: or a5, s1, t39936; RV32I-NEXT: .LBB18_13:9937; RV32I-NEXT: li t3, 09938; RV32I-NEXT: lbu s8, 25(a0)9939; RV32I-NEXT: lbu s7, 26(a0)9940; RV32I-NEXT: slli t6, t6, 89941; RV32I-NEXT: or s6, s6, t59942; RV32I-NEXT: slli s9, s4, 169943; RV32I-NEXT: li s11, 39944; RV32I-NEXT: sll t5, a7, a39945; RV32I-NEXT: beqz t4, .LBB18_159946; RV32I-NEXT: # %bb.14:9947; RV32I-NEXT: mv t3, t59948; RV32I-NEXT: .LBB18_15:9949; RV32I-NEXT: lbu s4, 24(a0)9950; RV32I-NEXT: slli s8, s8, 89951; RV32I-NEXT: or s7, t6, s79952; RV32I-NEXT: srl t6, a6, t09953; RV32I-NEXT: or a0, s9, s69954; RV32I-NEXT: sw s5, 16(sp) # 4-byte Folded Spill9955; RV32I-NEXT: sw s10, 12(sp) # 4-byte Folded Spill9956; RV32I-NEXT: bne t1, s11, .LBB18_179957; RV32I-NEXT: # %bb.16:9958; RV32I-NEXT: or a5, t6, t39959; RV32I-NEXT: .LBB18_17:9960; RV32I-NEXT: li s6, 09961; RV32I-NEXT: or t3, s8, s49962; RV32I-NEXT: slli s7, s7, 169963; RV32I-NEXT: li s10, 49964; RV32I-NEXT: sll s11, a0, a39965; RV32I-NEXT: beqz t4, .LBB18_199966; RV32I-NEXT: # %bb.18:9967; RV32I-NEXT: mv s6, s119968; RV32I-NEXT: .LBB18_19:9969; RV32I-NEXT: srl s4, a7, t09970; RV32I-NEXT: or t3, s7, t39971; RV32I-NEXT: sw s4, 20(sp) # 4-byte Folded Spill9972; RV32I-NEXT: bne t1, s10, .LBB18_219973; RV32I-NEXT: # %bb.20:9974; RV32I-NEXT: or a5, s4, s69975; RV32I-NEXT: .LBB18_21:9976; RV32I-NEXT: li s4, 09977; RV32I-NEXT: li s5, 59978; RV32I-NEXT: sll s6, t3, a39979; RV32I-NEXT: sw s6, 24(sp) # 4-byte Folded Spill9980; RV32I-NEXT: beqz t4, .LBB18_239981; RV32I-NEXT: # %bb.22:9982; RV32I-NEXT: lw s4, 24(sp) # 4-byte Folded Reload9983; RV32I-NEXT: .LBB18_23:9984; RV32I-NEXT: srl s6, a0, t09985; RV32I-NEXT: beq t1, s5, .LBB18_259986; RV32I-NEXT: # %bb.24:9987; RV32I-NEXT: mv ra, s69988; RV32I-NEXT: j .LBB18_269989; RV32I-NEXT: .LBB18_25:9990; RV32I-NEXT: mv ra, s69991; RV32I-NEXT: or a5, s6, s49992; RV32I-NEXT: .LBB18_26:9993; RV32I-NEXT: li s4, 09994; RV32I-NEXT: li s8, 69995; RV32I-NEXT: sll s7, a1, a39996; RV32I-NEXT: beqz t4, .LBB18_289997; RV32I-NEXT: # %bb.27:9998; RV32I-NEXT: mv s4, s79999; RV32I-NEXT: .LBB18_28:10000; RV32I-NEXT: srl s5, t3, t010001; RV32I-NEXT: beq t1, s8, .LBB18_3010002; RV32I-NEXT: # %bb.29:10003; RV32I-NEXT: mv s9, s510004; RV32I-NEXT: j .LBB18_3110005; RV32I-NEXT: .LBB18_30:10006; RV32I-NEXT: mv s9, s510007; RV32I-NEXT: or a5, s5, s410008; RV32I-NEXT: .LBB18_31:10009; RV32I-NEXT: li s5, 010010; RV32I-NEXT: li s6, 710011; RV32I-NEXT: sll s4, t2, a310012; RV32I-NEXT: beqz t4, .LBB18_3310013; RV32I-NEXT: # %bb.32:10014; RV32I-NEXT: mv s5, s410015; RV32I-NEXT: .LBB18_33:10016; RV32I-NEXT: srl a3, a1, t010017; RV32I-NEXT: bne t1, s6, .LBB18_3510018; RV32I-NEXT: # %bb.34:10019; RV32I-NEXT: or a5, a3, s510020; RV32I-NEXT: .LBB18_35:10021; RV32I-NEXT: li s5, 310022; RV32I-NEXT: mv s6, a310023; RV32I-NEXT: bnez t0, .LBB18_3910024; RV32I-NEXT: # %bb.36:10025; RV32I-NEXT: li a3, 010026; RV32I-NEXT: bnez t4, .LBB18_4010027; RV32I-NEXT: .LBB18_37:10028; RV32I-NEXT: beqz t1, .LBB18_4110029; RV32I-NEXT: .LBB18_38:10030; RV32I-NEXT: mv a5, t210031; RV32I-NEXT: j .LBB18_4210032; RV32I-NEXT: .LBB18_39:10033; RV32I-NEXT: sw a5, 12(sp) # 4-byte Folded Spill10034; RV32I-NEXT: li a3, 010035; RV32I-NEXT: beqz t4, .LBB18_3710036; RV32I-NEXT: .LBB18_40:10037; RV32I-NEXT: mv a3, s210038; RV32I-NEXT: bnez t1, .LBB18_3810039; RV32I-NEXT: .LBB18_41:10040; RV32I-NEXT: or a5, s3, a310041; RV32I-NEXT: .LBB18_42:10042; RV32I-NEXT: li s2, 110043; RV32I-NEXT: li s3, 210044; RV32I-NEXT: li a3, 010045; RV32I-NEXT: bnez t4, .LBB18_6110046; RV32I-NEXT: # %bb.43:10047; RV32I-NEXT: beq t1, s2, .LBB18_6210048; RV32I-NEXT: .LBB18_44:10049; RV32I-NEXT: li a3, 010050; RV32I-NEXT: bnez t4, .LBB18_6310051; RV32I-NEXT: .LBB18_45:10052; RV32I-NEXT: beq t1, s3, .LBB18_6410053; RV32I-NEXT: .LBB18_46:10054; RV32I-NEXT: li a3, 010055; RV32I-NEXT: bnez t4, .LBB18_6510056; RV32I-NEXT: .LBB18_47:10057; RV32I-NEXT: beq t1, s5, .LBB18_6610058; RV32I-NEXT: .LBB18_48:10059; RV32I-NEXT: li a3, 010060; RV32I-NEXT: bnez t4, .LBB18_6710061; RV32I-NEXT: .LBB18_49:10062; RV32I-NEXT: bne t1, s10, .LBB18_5110063; RV32I-NEXT: .LBB18_50:10064; RV32I-NEXT: or a5, ra, a310065; RV32I-NEXT: .LBB18_51:10066; RV32I-NEXT: li a3, 010067; RV32I-NEXT: li s10, 510068; RV32I-NEXT: bnez t4, .LBB18_6810069; RV32I-NEXT: # %bb.52:10070; RV32I-NEXT: beq t1, s10, .LBB18_6910071; RV32I-NEXT: .LBB18_53:10072; RV32I-NEXT: li a3, 010073; RV32I-NEXT: bnez t4, .LBB18_7010074; RV32I-NEXT: .LBB18_54:10075; RV32I-NEXT: bne t1, s8, .LBB18_5610076; RV32I-NEXT: .LBB18_55:10077; RV32I-NEXT: or a5, s6, a310078; RV32I-NEXT: .LBB18_56:10079; RV32I-NEXT: mv a3, t210080; RV32I-NEXT: li s8, 710081; RV32I-NEXT: bne t1, s8, .LBB18_7110082; RV32I-NEXT: # %bb.57:10083; RV32I-NEXT: bnez t0, .LBB18_7210084; RV32I-NEXT: .LBB18_58:10085; RV32I-NEXT: li a5, 010086; RV32I-NEXT: bnez t4, .LBB18_7310087; RV32I-NEXT: .LBB18_59:10088; RV32I-NEXT: beqz t1, .LBB18_7410089; RV32I-NEXT: .LBB18_60:10090; RV32I-NEXT: mv a5, t210091; RV32I-NEXT: j .LBB18_7510092; RV32I-NEXT: .LBB18_61:10093; RV32I-NEXT: mv a3, s010094; RV32I-NEXT: bne t1, s2, .LBB18_4410095; RV32I-NEXT: .LBB18_62:10096; RV32I-NEXT: or a5, s1, a310097; RV32I-NEXT: li a3, 010098; RV32I-NEXT: beqz t4, .LBB18_4510099; RV32I-NEXT: .LBB18_63:10100; RV32I-NEXT: mv a3, t510101; RV32I-NEXT: bne t1, s3, .LBB18_4610102; RV32I-NEXT: .LBB18_64:10103; RV32I-NEXT: or a5, t6, a310104; RV32I-NEXT: li a3, 010105; RV32I-NEXT: beqz t4, .LBB18_4710106; RV32I-NEXT: .LBB18_65:10107; RV32I-NEXT: mv a3, s1110108; RV32I-NEXT: bne t1, s5, .LBB18_4810109; RV32I-NEXT: .LBB18_66:10110; RV32I-NEXT: lw a5, 20(sp) # 4-byte Folded Reload10111; RV32I-NEXT: or a5, a5, a310112; RV32I-NEXT: li a3, 010113; RV32I-NEXT: beqz t4, .LBB18_4910114; RV32I-NEXT: .LBB18_67:10115; RV32I-NEXT: lw a3, 24(sp) # 4-byte Folded Reload10116; RV32I-NEXT: beq t1, s10, .LBB18_5010117; RV32I-NEXT: j .LBB18_5110118; RV32I-NEXT: .LBB18_68:10119; RV32I-NEXT: mv a3, s710120; RV32I-NEXT: bne t1, s10, .LBB18_5310121; RV32I-NEXT: .LBB18_69:10122; RV32I-NEXT: or a5, s9, a310123; RV32I-NEXT: li a3, 010124; RV32I-NEXT: beqz t4, .LBB18_5410125; RV32I-NEXT: .LBB18_70:10126; RV32I-NEXT: mv a3, s410127; RV32I-NEXT: beq t1, s8, .LBB18_5510128; RV32I-NEXT: j .LBB18_5610129; RV32I-NEXT: .LBB18_71:10130; RV32I-NEXT: mv a3, a510131; RV32I-NEXT: beqz t0, .LBB18_5810132; RV32I-NEXT: .LBB18_72:10133; RV32I-NEXT: sw a3, 16(sp) # 4-byte Folded Spill10134; RV32I-NEXT: li a5, 010135; RV32I-NEXT: beqz t4, .LBB18_5910136; RV32I-NEXT: .LBB18_73:10137; RV32I-NEXT: mv a5, s010138; RV32I-NEXT: bnez t1, .LBB18_6010139; RV32I-NEXT: .LBB18_74:10140; RV32I-NEXT: or a5, s1, a510141; RV32I-NEXT: .LBB18_75:10142; RV32I-NEXT: li s0, 410143; RV32I-NEXT: li s1, 610144; RV32I-NEXT: li a3, 010145; RV32I-NEXT: bnez t4, .LBB18_9110146; RV32I-NEXT: # %bb.76:10147; RV32I-NEXT: beq t1, s2, .LBB18_9210148; RV32I-NEXT: .LBB18_77:10149; RV32I-NEXT: li a3, 010150; RV32I-NEXT: bnez t4, .LBB18_9310151; RV32I-NEXT: .LBB18_78:10152; RV32I-NEXT: beq t1, s3, .LBB18_9410153; RV32I-NEXT: .LBB18_79:10154; RV32I-NEXT: li a3, 010155; RV32I-NEXT: bnez t4, .LBB18_9510156; RV32I-NEXT: .LBB18_80:10157; RV32I-NEXT: beq t1, s5, .LBB18_9610158; RV32I-NEXT: .LBB18_81:10159; RV32I-NEXT: li a3, 010160; RV32I-NEXT: bnez t4, .LBB18_9710161; RV32I-NEXT: .LBB18_82:10162; RV32I-NEXT: beq t1, s0, .LBB18_9810163; RV32I-NEXT: .LBB18_83:10164; RV32I-NEXT: li a3, 010165; RV32I-NEXT: bnez t4, .LBB18_9910166; RV32I-NEXT: .LBB18_84:10167; RV32I-NEXT: beq t1, s10, .LBB18_10010168; RV32I-NEXT: .LBB18_85:10169; RV32I-NEXT: mv a3, t210170; RV32I-NEXT: bne t1, s1, .LBB18_10110171; RV32I-NEXT: .LBB18_86:10172; RV32I-NEXT: mv a5, t210173; RV32I-NEXT: bne t1, s8, .LBB18_10210174; RV32I-NEXT: .LBB18_87:10175; RV32I-NEXT: bnez t0, .LBB18_10310176; RV32I-NEXT: .LBB18_88:10177; RV32I-NEXT: li a3, 010178; RV32I-NEXT: bnez t4, .LBB18_10410179; RV32I-NEXT: .LBB18_89:10180; RV32I-NEXT: beqz t1, .LBB18_10510181; RV32I-NEXT: .LBB18_90:10182; RV32I-NEXT: mv a5, t210183; RV32I-NEXT: li a3, 010184; RV32I-NEXT: bnez t4, .LBB18_10610185; RV32I-NEXT: j .LBB18_10710186; RV32I-NEXT: .LBB18_91:10187; RV32I-NEXT: mv a3, t510188; RV32I-NEXT: bne t1, s2, .LBB18_7710189; RV32I-NEXT: .LBB18_92:10190; RV32I-NEXT: or a5, t6, a310191; RV32I-NEXT: li a3, 010192; RV32I-NEXT: beqz t4, .LBB18_7810193; RV32I-NEXT: .LBB18_93:10194; RV32I-NEXT: mv a3, s1110195; RV32I-NEXT: bne t1, s3, .LBB18_7910196; RV32I-NEXT: .LBB18_94:10197; RV32I-NEXT: lw a5, 20(sp) # 4-byte Folded Reload10198; RV32I-NEXT: or a5, a5, a310199; RV32I-NEXT: li a3, 010200; RV32I-NEXT: beqz t4, .LBB18_8010201; RV32I-NEXT: .LBB18_95:10202; RV32I-NEXT: lw a3, 24(sp) # 4-byte Folded Reload10203; RV32I-NEXT: bne t1, s5, .LBB18_8110204; RV32I-NEXT: .LBB18_96:10205; RV32I-NEXT: or a5, ra, a310206; RV32I-NEXT: li a3, 010207; RV32I-NEXT: beqz t4, .LBB18_8210208; RV32I-NEXT: .LBB18_97:10209; RV32I-NEXT: mv a3, s710210; RV32I-NEXT: bne t1, s0, .LBB18_8310211; RV32I-NEXT: .LBB18_98:10212; RV32I-NEXT: or a5, s9, a310213; RV32I-NEXT: li a3, 010214; RV32I-NEXT: beqz t4, .LBB18_8410215; RV32I-NEXT: .LBB18_99:10216; RV32I-NEXT: mv a3, s410217; RV32I-NEXT: bne t1, s10, .LBB18_8510218; RV32I-NEXT: .LBB18_100:10219; RV32I-NEXT: or a5, s6, a310220; RV32I-NEXT: mv a3, t210221; RV32I-NEXT: beq t1, s1, .LBB18_8610222; RV32I-NEXT: .LBB18_101:10223; RV32I-NEXT: mv a3, a510224; RV32I-NEXT: mv a5, t210225; RV32I-NEXT: beq t1, s8, .LBB18_8710226; RV32I-NEXT: .LBB18_102:10227; RV32I-NEXT: mv a5, a310228; RV32I-NEXT: beqz t0, .LBB18_8810229; RV32I-NEXT: .LBB18_103:10230; RV32I-NEXT: mv a4, a510231; RV32I-NEXT: li a3, 010232; RV32I-NEXT: beqz t4, .LBB18_8910233; RV32I-NEXT: .LBB18_104:10234; RV32I-NEXT: mv a3, t510235; RV32I-NEXT: bnez t1, .LBB18_9010236; RV32I-NEXT: .LBB18_105:10237; RV32I-NEXT: or a5, t6, a310238; RV32I-NEXT: li a3, 010239; RV32I-NEXT: beqz t4, .LBB18_10710240; RV32I-NEXT: .LBB18_106:10241; RV32I-NEXT: mv a3, s1110242; RV32I-NEXT: .LBB18_107:10243; RV32I-NEXT: beq t1, s2, .LBB18_12110244; RV32I-NEXT: # %bb.108:10245; RV32I-NEXT: li a3, 010246; RV32I-NEXT: bnez t4, .LBB18_12210247; RV32I-NEXT: .LBB18_109:10248; RV32I-NEXT: beq t1, s3, .LBB18_12310249; RV32I-NEXT: .LBB18_110:10250; RV32I-NEXT: li a3, 010251; RV32I-NEXT: bnez t4, .LBB18_12410252; RV32I-NEXT: .LBB18_111:10253; RV32I-NEXT: beq t1, s5, .LBB18_12510254; RV32I-NEXT: .LBB18_112:10255; RV32I-NEXT: li a3, 010256; RV32I-NEXT: bnez t4, .LBB18_12610257; RV32I-NEXT: .LBB18_113:10258; RV32I-NEXT: beq t1, s0, .LBB18_12710259; RV32I-NEXT: .LBB18_114:10260; RV32I-NEXT: mv a3, t210261; RV32I-NEXT: bne t1, s10, .LBB18_12810262; RV32I-NEXT: .LBB18_115:10263; RV32I-NEXT: mv a5, t210264; RV32I-NEXT: bne t1, s1, .LBB18_12910265; RV32I-NEXT: .LBB18_116:10266; RV32I-NEXT: mv a3, t210267; RV32I-NEXT: bne t1, s8, .LBB18_13010268; RV32I-NEXT: .LBB18_117:10269; RV32I-NEXT: bnez t0, .LBB18_13110270; RV32I-NEXT: .LBB18_118:10271; RV32I-NEXT: li a3, 010272; RV32I-NEXT: bnez t4, .LBB18_13210273; RV32I-NEXT: .LBB18_119:10274; RV32I-NEXT: beqz t1, .LBB18_13310275; RV32I-NEXT: .LBB18_120:10276; RV32I-NEXT: mv a5, t210277; RV32I-NEXT: j .LBB18_13410278; RV32I-NEXT: .LBB18_121:10279; RV32I-NEXT: lw a5, 20(sp) # 4-byte Folded Reload10280; RV32I-NEXT: or a5, a5, a310281; RV32I-NEXT: li a3, 010282; RV32I-NEXT: beqz t4, .LBB18_10910283; RV32I-NEXT: .LBB18_122:10284; RV32I-NEXT: lw a3, 24(sp) # 4-byte Folded Reload10285; RV32I-NEXT: bne t1, s3, .LBB18_11010286; RV32I-NEXT: .LBB18_123:10287; RV32I-NEXT: or a5, ra, a310288; RV32I-NEXT: li a3, 010289; RV32I-NEXT: beqz t4, .LBB18_11110290; RV32I-NEXT: .LBB18_124:10291; RV32I-NEXT: mv a3, s710292; RV32I-NEXT: bne t1, s5, .LBB18_11210293; RV32I-NEXT: .LBB18_125:10294; RV32I-NEXT: or a5, s9, a310295; RV32I-NEXT: li a3, 010296; RV32I-NEXT: beqz t4, .LBB18_11310297; RV32I-NEXT: .LBB18_126:10298; RV32I-NEXT: mv a3, s410299; RV32I-NEXT: bne t1, s0, .LBB18_11410300; RV32I-NEXT: .LBB18_127:10301; RV32I-NEXT: or a5, s6, a310302; RV32I-NEXT: mv a3, t210303; RV32I-NEXT: beq t1, s10, .LBB18_11510304; RV32I-NEXT: .LBB18_128:10305; RV32I-NEXT: mv a3, a510306; RV32I-NEXT: mv a5, t210307; RV32I-NEXT: beq t1, s1, .LBB18_11610308; RV32I-NEXT: .LBB18_129:10309; RV32I-NEXT: mv a5, a310310; RV32I-NEXT: mv a3, t210311; RV32I-NEXT: beq t1, s8, .LBB18_11710312; RV32I-NEXT: .LBB18_130:10313; RV32I-NEXT: mv a3, a510314; RV32I-NEXT: beqz t0, .LBB18_11810315; RV32I-NEXT: .LBB18_131:10316; RV32I-NEXT: mv a6, a310317; RV32I-NEXT: li a3, 010318; RV32I-NEXT: beqz t4, .LBB18_11910319; RV32I-NEXT: .LBB18_132:10320; RV32I-NEXT: mv a3, s1110321; RV32I-NEXT: bnez t1, .LBB18_12010322; RV32I-NEXT: .LBB18_133:10323; RV32I-NEXT: lw a5, 20(sp) # 4-byte Folded Reload10324; RV32I-NEXT: or a5, a5, a310325; RV32I-NEXT: .LBB18_134:10326; RV32I-NEXT: lw s11, 16(sp) # 4-byte Folded Reload10327; RV32I-NEXT: li a3, 010328; RV32I-NEXT: bnez t4, .LBB18_14810329; RV32I-NEXT: # %bb.135:10330; RV32I-NEXT: beq t1, s2, .LBB18_14910331; RV32I-NEXT: .LBB18_136:10332; RV32I-NEXT: li a3, 010333; RV32I-NEXT: bnez t4, .LBB18_15010334; RV32I-NEXT: .LBB18_137:10335; RV32I-NEXT: beq t1, s3, .LBB18_15110336; RV32I-NEXT: .LBB18_138:10337; RV32I-NEXT: li a3, 010338; RV32I-NEXT: bnez t4, .LBB18_15210339; RV32I-NEXT: .LBB18_139:10340; RV32I-NEXT: beq t1, s5, .LBB18_15310341; RV32I-NEXT: .LBB18_140:10342; RV32I-NEXT: mv a3, t210343; RV32I-NEXT: bne t1, s0, .LBB18_15410344; RV32I-NEXT: .LBB18_141:10345; RV32I-NEXT: mv a5, t210346; RV32I-NEXT: bne t1, s10, .LBB18_15510347; RV32I-NEXT: .LBB18_142:10348; RV32I-NEXT: mv a3, t210349; RV32I-NEXT: bne t1, s1, .LBB18_15610350; RV32I-NEXT: .LBB18_143:10351; RV32I-NEXT: mv a5, t210352; RV32I-NEXT: bne t1, s8, .LBB18_15710353; RV32I-NEXT: .LBB18_144:10354; RV32I-NEXT: bnez t0, .LBB18_15810355; RV32I-NEXT: .LBB18_145:10356; RV32I-NEXT: li a3, 010357; RV32I-NEXT: bnez t4, .LBB18_15910358; RV32I-NEXT: .LBB18_146:10359; RV32I-NEXT: beqz t1, .LBB18_16010360; RV32I-NEXT: .LBB18_147:10361; RV32I-NEXT: mv a5, t210362; RV32I-NEXT: li a3, 010363; RV32I-NEXT: bnez t4, .LBB18_16110364; RV32I-NEXT: j .LBB18_16210365; RV32I-NEXT: .LBB18_148:10366; RV32I-NEXT: lw a3, 24(sp) # 4-byte Folded Reload10367; RV32I-NEXT: bne t1, s2, .LBB18_13610368; RV32I-NEXT: .LBB18_149:10369; RV32I-NEXT: or a5, ra, a310370; RV32I-NEXT: li a3, 010371; RV32I-NEXT: beqz t4, .LBB18_13710372; RV32I-NEXT: .LBB18_150:10373; RV32I-NEXT: mv a3, s710374; RV32I-NEXT: bne t1, s3, .LBB18_13810375; RV32I-NEXT: .LBB18_151:10376; RV32I-NEXT: or a5, s9, a310377; RV32I-NEXT: li a3, 010378; RV32I-NEXT: beqz t4, .LBB18_13910379; RV32I-NEXT: .LBB18_152:10380; RV32I-NEXT: mv a3, s410381; RV32I-NEXT: bne t1, s5, .LBB18_14010382; RV32I-NEXT: .LBB18_153:10383; RV32I-NEXT: or a5, s6, a310384; RV32I-NEXT: mv a3, t210385; RV32I-NEXT: beq t1, s0, .LBB18_14110386; RV32I-NEXT: .LBB18_154:10387; RV32I-NEXT: mv a3, a510388; RV32I-NEXT: mv a5, t210389; RV32I-NEXT: beq t1, s10, .LBB18_14210390; RV32I-NEXT: .LBB18_155:10391; RV32I-NEXT: mv a5, a310392; RV32I-NEXT: mv a3, t210393; RV32I-NEXT: beq t1, s1, .LBB18_14310394; RV32I-NEXT: .LBB18_156:10395; RV32I-NEXT: mv a3, a510396; RV32I-NEXT: mv a5, t210397; RV32I-NEXT: beq t1, s8, .LBB18_14410398; RV32I-NEXT: .LBB18_157:10399; RV32I-NEXT: mv a5, a310400; RV32I-NEXT: beqz t0, .LBB18_14510401; RV32I-NEXT: .LBB18_158:10402; RV32I-NEXT: mv a7, a510403; RV32I-NEXT: li a3, 010404; RV32I-NEXT: beqz t4, .LBB18_14610405; RV32I-NEXT: .LBB18_159:10406; RV32I-NEXT: lw a3, 24(sp) # 4-byte Folded Reload10407; RV32I-NEXT: bnez t1, .LBB18_14710408; RV32I-NEXT: .LBB18_160:10409; RV32I-NEXT: or a5, ra, a310410; RV32I-NEXT: li a3, 010411; RV32I-NEXT: beqz t4, .LBB18_16210412; RV32I-NEXT: .LBB18_161:10413; RV32I-NEXT: mv a3, s710414; RV32I-NEXT: .LBB18_162:10415; RV32I-NEXT: beq t1, s2, .LBB18_17410416; RV32I-NEXT: # %bb.163:10417; RV32I-NEXT: li a3, 010418; RV32I-NEXT: bnez t4, .LBB18_17510419; RV32I-NEXT: .LBB18_164:10420; RV32I-NEXT: beq t1, s3, .LBB18_17610421; RV32I-NEXT: .LBB18_165:10422; RV32I-NEXT: mv a3, t210423; RV32I-NEXT: bne t1, s5, .LBB18_17710424; RV32I-NEXT: .LBB18_166:10425; RV32I-NEXT: mv a5, t210426; RV32I-NEXT: bne t1, s0, .LBB18_17810427; RV32I-NEXT: .LBB18_167:10428; RV32I-NEXT: mv a3, t210429; RV32I-NEXT: bne t1, s10, .LBB18_17910430; RV32I-NEXT: .LBB18_168:10431; RV32I-NEXT: mv a5, t210432; RV32I-NEXT: bne t1, s1, .LBB18_18010433; RV32I-NEXT: .LBB18_169:10434; RV32I-NEXT: mv a3, t210435; RV32I-NEXT: bne t1, s8, .LBB18_18110436; RV32I-NEXT: .LBB18_170:10437; RV32I-NEXT: bnez t0, .LBB18_18210438; RV32I-NEXT: .LBB18_171:10439; RV32I-NEXT: li a3, 010440; RV32I-NEXT: bnez t4, .LBB18_18310441; RV32I-NEXT: .LBB18_172:10442; RV32I-NEXT: beqz t1, .LBB18_18410443; RV32I-NEXT: .LBB18_173:10444; RV32I-NEXT: mv a5, t210445; RV32I-NEXT: li a3, 010446; RV32I-NEXT: bnez t4, .LBB18_18510447; RV32I-NEXT: j .LBB18_18610448; RV32I-NEXT: .LBB18_174:10449; RV32I-NEXT: or a5, s9, a310450; RV32I-NEXT: li a3, 010451; RV32I-NEXT: beqz t4, .LBB18_16410452; RV32I-NEXT: .LBB18_175:10453; RV32I-NEXT: mv a3, s410454; RV32I-NEXT: bne t1, s3, .LBB18_16510455; RV32I-NEXT: .LBB18_176:10456; RV32I-NEXT: or a5, s6, a310457; RV32I-NEXT: mv a3, t210458; RV32I-NEXT: beq t1, s5, .LBB18_16610459; RV32I-NEXT: .LBB18_177:10460; RV32I-NEXT: mv a3, a510461; RV32I-NEXT: mv a5, t210462; RV32I-NEXT: beq t1, s0, .LBB18_16710463; RV32I-NEXT: .LBB18_178:10464; RV32I-NEXT: mv a5, a310465; RV32I-NEXT: mv a3, t210466; RV32I-NEXT: beq t1, s10, .LBB18_16810467; RV32I-NEXT: .LBB18_179:10468; RV32I-NEXT: mv a3, a510469; RV32I-NEXT: mv a5, t210470; RV32I-NEXT: beq t1, s1, .LBB18_16910471; RV32I-NEXT: .LBB18_180:10472; RV32I-NEXT: mv a5, a310473; RV32I-NEXT: mv a3, t210474; RV32I-NEXT: beq t1, s8, .LBB18_17010475; RV32I-NEXT: .LBB18_181:10476; RV32I-NEXT: mv a3, a510477; RV32I-NEXT: beqz t0, .LBB18_17110478; RV32I-NEXT: .LBB18_182:10479; RV32I-NEXT: mv a0, a310480; RV32I-NEXT: li a3, 010481; RV32I-NEXT: beqz t4, .LBB18_17210482; RV32I-NEXT: .LBB18_183:10483; RV32I-NEXT: mv a3, s710484; RV32I-NEXT: bnez t1, .LBB18_17310485; RV32I-NEXT: .LBB18_184:10486; RV32I-NEXT: or a5, s9, a310487; RV32I-NEXT: li a3, 010488; RV32I-NEXT: beqz t4, .LBB18_18610489; RV32I-NEXT: .LBB18_185:10490; RV32I-NEXT: mv a3, s410491; RV32I-NEXT: .LBB18_186:10492; RV32I-NEXT: beq t1, s2, .LBB18_19710493; RV32I-NEXT: # %bb.187:10494; RV32I-NEXT: mv a3, t210495; RV32I-NEXT: bne t1, s3, .LBB18_19810496; RV32I-NEXT: .LBB18_188:10497; RV32I-NEXT: mv a5, t210498; RV32I-NEXT: bne t1, s5, .LBB18_19910499; RV32I-NEXT: .LBB18_189:10500; RV32I-NEXT: mv a3, t210501; RV32I-NEXT: bne t1, s0, .LBB18_20010502; RV32I-NEXT: .LBB18_190:10503; RV32I-NEXT: mv a5, t210504; RV32I-NEXT: bne t1, s10, .LBB18_20110505; RV32I-NEXT: .LBB18_191:10506; RV32I-NEXT: mv a3, t210507; RV32I-NEXT: bne t1, s1, .LBB18_20210508; RV32I-NEXT: .LBB18_192:10509; RV32I-NEXT: mv a5, t210510; RV32I-NEXT: bne t1, s8, .LBB18_20310511; RV32I-NEXT: .LBB18_193:10512; RV32I-NEXT: bnez t0, .LBB18_20410513; RV32I-NEXT: .LBB18_194:10514; RV32I-NEXT: li a3, 010515; RV32I-NEXT: bnez t4, .LBB18_20510516; RV32I-NEXT: .LBB18_195:10517; RV32I-NEXT: beqz t1, .LBB18_20610518; RV32I-NEXT: .LBB18_196:10519; RV32I-NEXT: mv a3, t210520; RV32I-NEXT: mv a5, t210521; RV32I-NEXT: bne t1, s2, .LBB18_20710522; RV32I-NEXT: j .LBB18_20810523; RV32I-NEXT: .LBB18_197:10524; RV32I-NEXT: or a5, s6, a310525; RV32I-NEXT: mv a3, t210526; RV32I-NEXT: beq t1, s3, .LBB18_18810527; RV32I-NEXT: .LBB18_198:10528; RV32I-NEXT: mv a3, a510529; RV32I-NEXT: mv a5, t210530; RV32I-NEXT: beq t1, s5, .LBB18_18910531; RV32I-NEXT: .LBB18_199:10532; RV32I-NEXT: mv a5, a310533; RV32I-NEXT: mv a3, t210534; RV32I-NEXT: beq t1, s0, .LBB18_19010535; RV32I-NEXT: .LBB18_200:10536; RV32I-NEXT: mv a3, a510537; RV32I-NEXT: mv a5, t210538; RV32I-NEXT: beq t1, s10, .LBB18_19110539; RV32I-NEXT: .LBB18_201:10540; RV32I-NEXT: mv a5, a310541; RV32I-NEXT: mv a3, t210542; RV32I-NEXT: beq t1, s1, .LBB18_19210543; RV32I-NEXT: .LBB18_202:10544; RV32I-NEXT: mv a3, a510545; RV32I-NEXT: mv a5, t210546; RV32I-NEXT: beq t1, s8, .LBB18_19310547; RV32I-NEXT: .LBB18_203:10548; RV32I-NEXT: mv a5, a310549; RV32I-NEXT: beqz t0, .LBB18_19410550; RV32I-NEXT: .LBB18_204:10551; RV32I-NEXT: mv t3, a510552; RV32I-NEXT: li a3, 010553; RV32I-NEXT: beqz t4, .LBB18_19510554; RV32I-NEXT: .LBB18_205:10555; RV32I-NEXT: mv a3, s410556; RV32I-NEXT: bnez t1, .LBB18_19610557; RV32I-NEXT: .LBB18_206:10558; RV32I-NEXT: or a3, s6, a310559; RV32I-NEXT: mv a5, t210560; RV32I-NEXT: beq t1, s2, .LBB18_20810561; RV32I-NEXT: .LBB18_207:10562; RV32I-NEXT: mv a5, a310563; RV32I-NEXT: .LBB18_208:10564; RV32I-NEXT: mv a3, t210565; RV32I-NEXT: bne t1, s3, .LBB18_21710566; RV32I-NEXT: # %bb.209:10567; RV32I-NEXT: mv a5, t210568; RV32I-NEXT: bne t1, s5, .LBB18_21810569; RV32I-NEXT: .LBB18_210:10570; RV32I-NEXT: mv a3, t210571; RV32I-NEXT: bne t1, s0, .LBB18_21910572; RV32I-NEXT: .LBB18_211:10573; RV32I-NEXT: mv a5, t210574; RV32I-NEXT: bne t1, s10, .LBB18_22010575; RV32I-NEXT: .LBB18_212:10576; RV32I-NEXT: mv a3, t210577; RV32I-NEXT: bne t1, s1, .LBB18_22110578; RV32I-NEXT: .LBB18_213:10579; RV32I-NEXT: bne t1, s8, .LBB18_22210580; RV32I-NEXT: .LBB18_214:10581; RV32I-NEXT: beqz t0, .LBB18_21610582; RV32I-NEXT: .LBB18_215:10583; RV32I-NEXT: mv a1, t210584; RV32I-NEXT: .LBB18_216:10585; RV32I-NEXT: lw ra, 12(sp) # 4-byte Folded Reload10586; RV32I-NEXT: srli a5, ra, 1610587; RV32I-NEXT: lui t4, 1610588; RV32I-NEXT: srli t2, ra, 2410589; RV32I-NEXT: srli t0, s11, 1610590; RV32I-NEXT: srli t6, s11, 2410591; RV32I-NEXT: srli t1, a4, 1610592; RV32I-NEXT: srli s2, a4, 2410593; RV32I-NEXT: srli t5, a6, 1610594; RV32I-NEXT: srli s3, a6, 2410595; RV32I-NEXT: srli s1, a7, 1610596; RV32I-NEXT: srli a3, a7, 2410597; RV32I-NEXT: srli s0, a0, 1610598; RV32I-NEXT: srli s5, a0, 2410599; RV32I-NEXT: srli s4, t3, 1610600; RV32I-NEXT: srli s6, t3, 2410601; RV32I-NEXT: srli s7, a1, 1610602; RV32I-NEXT: srli s8, a1, 2410603; RV32I-NEXT: addi t4, t4, -110604; RV32I-NEXT: and s9, ra, t410605; RV32I-NEXT: and s10, s11, t410606; RV32I-NEXT: srli s9, s9, 810607; RV32I-NEXT: sb ra, 0(a2)10608; RV32I-NEXT: sb s9, 1(a2)10609; RV32I-NEXT: sb a5, 2(a2)10610; RV32I-NEXT: sb t2, 3(a2)10611; RV32I-NEXT: and a5, a4, t410612; RV32I-NEXT: srli t2, s10, 810613; RV32I-NEXT: sb s11, 4(a2)10614; RV32I-NEXT: sb t2, 5(a2)10615; RV32I-NEXT: sb t0, 6(a2)10616; RV32I-NEXT: sb t6, 7(a2)10617; RV32I-NEXT: and t0, a6, t410618; RV32I-NEXT: srli a5, a5, 810619; RV32I-NEXT: sb a4, 8(a2)10620; RV32I-NEXT: sb a5, 9(a2)10621; RV32I-NEXT: sb t1, 10(a2)10622; RV32I-NEXT: sb s2, 11(a2)10623; RV32I-NEXT: and a4, a7, t410624; RV32I-NEXT: srli a5, t0, 810625; RV32I-NEXT: sb a6, 12(a2)10626; RV32I-NEXT: sb a5, 13(a2)10627; RV32I-NEXT: sb t5, 14(a2)10628; RV32I-NEXT: sb s3, 15(a2)10629; RV32I-NEXT: and a5, a0, t410630; RV32I-NEXT: srli a4, a4, 810631; RV32I-NEXT: sb a7, 16(a2)10632; RV32I-NEXT: sb a4, 17(a2)10633; RV32I-NEXT: sb s1, 18(a2)10634; RV32I-NEXT: sb a3, 19(a2)10635; RV32I-NEXT: and a3, t3, t410636; RV32I-NEXT: and a4, a1, t410637; RV32I-NEXT: srli a5, a5, 810638; RV32I-NEXT: srli a3, a3, 810639; RV32I-NEXT: srli a4, a4, 810640; RV32I-NEXT: sb a0, 20(a2)10641; RV32I-NEXT: sb a5, 21(a2)10642; RV32I-NEXT: sb s0, 22(a2)10643; RV32I-NEXT: sb s5, 23(a2)10644; RV32I-NEXT: sb t3, 24(a2)10645; RV32I-NEXT: sb a3, 25(a2)10646; RV32I-NEXT: sb s4, 26(a2)10647; RV32I-NEXT: sb s6, 27(a2)10648; RV32I-NEXT: sb a1, 28(a2)10649; RV32I-NEXT: sb a4, 29(a2)10650; RV32I-NEXT: sb s7, 30(a2)10651; RV32I-NEXT: sb s8, 31(a2)10652; RV32I-NEXT: lw ra, 76(sp) # 4-byte Folded Reload10653; RV32I-NEXT: lw s0, 72(sp) # 4-byte Folded Reload10654; RV32I-NEXT: lw s1, 68(sp) # 4-byte Folded Reload10655; RV32I-NEXT: lw s2, 64(sp) # 4-byte Folded Reload10656; RV32I-NEXT: lw s3, 60(sp) # 4-byte Folded Reload10657; RV32I-NEXT: lw s4, 56(sp) # 4-byte Folded Reload10658; RV32I-NEXT: lw s5, 52(sp) # 4-byte Folded Reload10659; RV32I-NEXT: lw s6, 48(sp) # 4-byte Folded Reload10660; RV32I-NEXT: lw s7, 44(sp) # 4-byte Folded Reload10661; RV32I-NEXT: lw s8, 40(sp) # 4-byte Folded Reload10662; RV32I-NEXT: lw s9, 36(sp) # 4-byte Folded Reload10663; RV32I-NEXT: lw s10, 32(sp) # 4-byte Folded Reload10664; RV32I-NEXT: lw s11, 28(sp) # 4-byte Folded Reload10665; RV32I-NEXT: addi sp, sp, 8010666; RV32I-NEXT: ret10667; RV32I-NEXT: .LBB18_217:10668; RV32I-NEXT: mv a3, a510669; RV32I-NEXT: mv a5, t210670; RV32I-NEXT: beq t1, s5, .LBB18_21010671; RV32I-NEXT: .LBB18_218:10672; RV32I-NEXT: mv a5, a310673; RV32I-NEXT: mv a3, t210674; RV32I-NEXT: beq t1, s0, .LBB18_21110675; RV32I-NEXT: .LBB18_219:10676; RV32I-NEXT: mv a3, a510677; RV32I-NEXT: mv a5, t210678; RV32I-NEXT: beq t1, s10, .LBB18_21210679; RV32I-NEXT: .LBB18_220:10680; RV32I-NEXT: mv a5, a310681; RV32I-NEXT: mv a3, t210682; RV32I-NEXT: beq t1, s1, .LBB18_21310683; RV32I-NEXT: .LBB18_221:10684; RV32I-NEXT: mv a3, a510685; RV32I-NEXT: beq t1, s8, .LBB18_21410686; RV32I-NEXT: .LBB18_222:10687; RV32I-NEXT: mv t2, a310688; RV32I-NEXT: bnez t0, .LBB18_21510689; RV32I-NEXT: j .LBB18_21610690 %src = load i256, ptr %src.ptr, align 110691 %byteOff = load i256, ptr %byteOff.ptr, align 110692 %bitOff = shl i256 %byteOff, 310693 %res = ashr i256 %src, %bitOff10694 store i256 %res, ptr %dst, align 110695 ret void10696}10697 10698define void @ashr_32bytes_wordOff(ptr %src.ptr, ptr %wordOff.ptr, ptr %dst) nounwind {10699; RV64I-LABEL: ashr_32bytes_wordOff:10700; RV64I: # %bb.0:10701; RV64I-NEXT: addi sp, sp, -9610702; RV64I-NEXT: sd s0, 88(sp) # 8-byte Folded Spill10703; RV64I-NEXT: sd s1, 80(sp) # 8-byte Folded Spill10704; RV64I-NEXT: sd s2, 72(sp) # 8-byte Folded Spill10705; RV64I-NEXT: sd s3, 64(sp) # 8-byte Folded Spill10706; RV64I-NEXT: sd s4, 56(sp) # 8-byte Folded Spill10707; RV64I-NEXT: sd s5, 48(sp) # 8-byte Folded Spill10708; RV64I-NEXT: sd s6, 40(sp) # 8-byte Folded Spill10709; RV64I-NEXT: sd s7, 32(sp) # 8-byte Folded Spill10710; RV64I-NEXT: sd s8, 24(sp) # 8-byte Folded Spill10711; RV64I-NEXT: sd s9, 16(sp) # 8-byte Folded Spill10712; RV64I-NEXT: sd s10, 8(sp) # 8-byte Folded Spill10713; RV64I-NEXT: sd s11, 0(sp) # 8-byte Folded Spill10714; RV64I-NEXT: lbu a3, 0(a0)10715; RV64I-NEXT: lbu a4, 1(a0)10716; RV64I-NEXT: lbu a5, 2(a0)10717; RV64I-NEXT: lbu a6, 3(a0)10718; RV64I-NEXT: lbu a7, 4(a0)10719; RV64I-NEXT: lbu t0, 5(a0)10720; RV64I-NEXT: lbu t1, 6(a0)10721; RV64I-NEXT: lbu t2, 7(a0)10722; RV64I-NEXT: lbu t3, 8(a0)10723; RV64I-NEXT: lbu t4, 9(a0)10724; RV64I-NEXT: lbu t5, 10(a0)10725; RV64I-NEXT: lbu t6, 11(a0)10726; RV64I-NEXT: lbu s0, 12(a0)10727; RV64I-NEXT: lbu s1, 13(a0)10728; RV64I-NEXT: lbu s2, 14(a0)10729; RV64I-NEXT: lbu s3, 15(a0)10730; RV64I-NEXT: lbu s4, 16(a0)10731; RV64I-NEXT: lbu s5, 17(a0)10732; RV64I-NEXT: lbu s6, 18(a0)10733; RV64I-NEXT: lbu s7, 19(a0)10734; RV64I-NEXT: slli a4, a4, 810735; RV64I-NEXT: slli a6, a6, 810736; RV64I-NEXT: slli t0, t0, 810737; RV64I-NEXT: or a3, a4, a310738; RV64I-NEXT: or a5, a6, a510739; RV64I-NEXT: or a7, t0, a710740; RV64I-NEXT: lbu s8, 20(a0)10741; RV64I-NEXT: lbu s9, 21(a0)10742; RV64I-NEXT: lbu s10, 22(a0)10743; RV64I-NEXT: lbu s11, 23(a0)10744; RV64I-NEXT: slli t2, t2, 810745; RV64I-NEXT: slli t4, t4, 810746; RV64I-NEXT: slli t6, t6, 810747; RV64I-NEXT: slli s1, s1, 810748; RV64I-NEXT: or t1, t2, t110749; RV64I-NEXT: or a4, t4, t310750; RV64I-NEXT: or a6, t6, t510751; RV64I-NEXT: or t0, s1, s010752; RV64I-NEXT: lbu t5, 24(a0)10753; RV64I-NEXT: lbu t6, 25(a0)10754; RV64I-NEXT: lbu s0, 26(a0)10755; RV64I-NEXT: lbu s1, 27(a0)10756; RV64I-NEXT: slli s3, s3, 810757; RV64I-NEXT: slli s5, s5, 810758; RV64I-NEXT: slli s7, s7, 810759; RV64I-NEXT: or t4, s3, s210760; RV64I-NEXT: or t2, s5, s410761; RV64I-NEXT: or t3, s7, s610762; RV64I-NEXT: lbu s2, 28(a0)10763; RV64I-NEXT: lbu s3, 29(a0)10764; RV64I-NEXT: lbu s4, 30(a0)10765; RV64I-NEXT: lbu a0, 31(a0)10766; RV64I-NEXT: slli s9, s9, 810767; RV64I-NEXT: slli s11, s11, 810768; RV64I-NEXT: slli t6, t6, 810769; RV64I-NEXT: slli s1, s1, 810770; RV64I-NEXT: or s5, s9, s810771; RV64I-NEXT: or s6, s11, s1010772; RV64I-NEXT: or t5, t6, t510773; RV64I-NEXT: or s0, s1, s010774; RV64I-NEXT: lbu t6, 0(a1)10775; RV64I-NEXT: lbu s1, 1(a1)10776; RV64I-NEXT: lbu s7, 2(a1)10777; RV64I-NEXT: lbu s8, 3(a1)10778; RV64I-NEXT: slli s3, s3, 810779; RV64I-NEXT: slli a0, a0, 810780; RV64I-NEXT: slli s1, s1, 810781; RV64I-NEXT: or s2, s3, s210782; RV64I-NEXT: or s3, a0, s410783; RV64I-NEXT: or t6, s1, t610784; RV64I-NEXT: lbu a0, 4(a1)10785; RV64I-NEXT: lbu s1, 5(a1)10786; RV64I-NEXT: lbu s4, 6(a1)10787; RV64I-NEXT: lbu a1, 7(a1)10788; RV64I-NEXT: slli s8, s8, 810789; RV64I-NEXT: or s7, s8, s710790; RV64I-NEXT: slli s1, s1, 810791; RV64I-NEXT: or s1, s1, a010792; RV64I-NEXT: slli a1, a1, 810793; RV64I-NEXT: or s4, a1, s410794; RV64I-NEXT: slli t1, t1, 1610795; RV64I-NEXT: or a1, t1, a710796; RV64I-NEXT: slli t4, t4, 1610797; RV64I-NEXT: or a0, t4, t010798; RV64I-NEXT: slli t3, t3, 1610799; RV64I-NEXT: or a7, t3, t210800; RV64I-NEXT: slli s6, s6, 1610801; RV64I-NEXT: or t1, s6, s510802; RV64I-NEXT: slli s0, s0, 1610803; RV64I-NEXT: or t4, s0, t510804; RV64I-NEXT: slli s3, s3, 1610805; RV64I-NEXT: or t5, s3, s210806; RV64I-NEXT: slli s7, s7, 1610807; RV64I-NEXT: or t6, s7, t610808; RV64I-NEXT: slli s4, s4, 1610809; RV64I-NEXT: or s0, s4, s110810; RV64I-NEXT: li t0, 6410811; RV64I-NEXT: slli t3, a5, 1610812; RV64I-NEXT: slli t2, a6, 1610813; RV64I-NEXT: slli t1, t1, 3210814; RV64I-NEXT: slli t5, t5, 3210815; RV64I-NEXT: slli s0, s0, 3210816; RV64I-NEXT: or a7, t1, a710817; RV64I-NEXT: or a5, t5, t410818; RV64I-NEXT: or a6, s0, t610819; RV64I-NEXT: slli a6, a6, 510820; RV64I-NEXT: sub t1, a6, t010821; RV64I-NEXT: neg t5, a610822; RV64I-NEXT: sll t4, a5, t510823; RV64I-NEXT: bltu a6, t0, .LBB19_210824; RV64I-NEXT: # %bb.1:10825; RV64I-NEXT: sra t6, a5, t110826; RV64I-NEXT: j .LBB19_310827; RV64I-NEXT: .LBB19_2:10828; RV64I-NEXT: srl t6, a7, a610829; RV64I-NEXT: or t6, t6, t410830; RV64I-NEXT: .LBB19_3:10831; RV64I-NEXT: or a3, t3, a310832; RV64I-NEXT: slli t3, a1, 3210833; RV64I-NEXT: or t2, t2, a410834; RV64I-NEXT: slli a0, a0, 3210835; RV64I-NEXT: mv a1, a710836; RV64I-NEXT: beqz a6, .LBB19_510837; RV64I-NEXT: # %bb.4:10838; RV64I-NEXT: mv a1, t610839; RV64I-NEXT: .LBB19_5:10840; RV64I-NEXT: or a4, t3, a310841; RV64I-NEXT: or a3, a0, t210842; RV64I-NEXT: bltu a6, t0, .LBB19_710843; RV64I-NEXT: # %bb.6:10844; RV64I-NEXT: srai a0, a5, 6310845; RV64I-NEXT: srl t3, a3, t110846; RV64I-NEXT: j .LBB19_810847; RV64I-NEXT: .LBB19_7:10848; RV64I-NEXT: sra a0, a5, a610849; RV64I-NEXT: srl t1, a4, a610850; RV64I-NEXT: sll t2, a3, t510851; RV64I-NEXT: or t3, t1, t210852; RV64I-NEXT: .LBB19_8:10853; RV64I-NEXT: li t1, 12810854; RV64I-NEXT: mv t2, a410855; RV64I-NEXT: beqz a6, .LBB19_1010856; RV64I-NEXT: # %bb.9:10857; RV64I-NEXT: mv t2, t310858; RV64I-NEXT: .LBB19_10:10859; RV64I-NEXT: sub t6, t1, a610860; RV64I-NEXT: bltu a6, t0, .LBB19_1310861; RV64I-NEXT: # %bb.11:10862; RV64I-NEXT: li t3, 010863; RV64I-NEXT: bgeu t6, t0, .LBB19_1410864; RV64I-NEXT: .LBB19_12:10865; RV64I-NEXT: sll t5, a7, t510866; RV64I-NEXT: neg s0, t610867; RV64I-NEXT: srl s0, a7, s010868; RV64I-NEXT: or s1, s0, t410869; RV64I-NEXT: j .LBB19_1510870; RV64I-NEXT: .LBB19_13:10871; RV64I-NEXT: srl t3, a3, a610872; RV64I-NEXT: bltu t6, t0, .LBB19_1210873; RV64I-NEXT: .LBB19_14:10874; RV64I-NEXT: li t5, 010875; RV64I-NEXT: sub t4, t6, t010876; RV64I-NEXT: sll s1, a7, t410877; RV64I-NEXT: .LBB19_15:10878; RV64I-NEXT: sub s0, a6, t110879; RV64I-NEXT: mv t4, a510880; RV64I-NEXT: beqz t6, .LBB19_1710881; RV64I-NEXT: # %bb.16:10882; RV64I-NEXT: mv t4, s110883; RV64I-NEXT: .LBB19_17:10884; RV64I-NEXT: bltu s0, t0, .LBB19_1910885; RV64I-NEXT: # %bb.18:10886; RV64I-NEXT: sub t6, s0, t010887; RV64I-NEXT: sra t6, a5, t610888; RV64I-NEXT: bnez s0, .LBB19_2010889; RV64I-NEXT: j .LBB19_2110890; RV64I-NEXT: .LBB19_19:10891; RV64I-NEXT: srl t6, a7, s010892; RV64I-NEXT: neg s1, s010893; RV64I-NEXT: sll s1, a5, s110894; RV64I-NEXT: or t6, t6, s110895; RV64I-NEXT: beqz s0, .LBB19_2110896; RV64I-NEXT: .LBB19_20:10897; RV64I-NEXT: mv a7, t610898; RV64I-NEXT: .LBB19_21:10899; RV64I-NEXT: bltu s0, t0, .LBB19_2310900; RV64I-NEXT: # %bb.22:10901; RV64I-NEXT: srai t0, a5, 6310902; RV64I-NEXT: bltu a6, t1, .LBB19_2410903; RV64I-NEXT: j .LBB19_2510904; RV64I-NEXT: .LBB19_23:10905; RV64I-NEXT: sra t0, a5, s010906; RV64I-NEXT: bgeu a6, t1, .LBB19_2510907; RV64I-NEXT: .LBB19_24:10908; RV64I-NEXT: or a7, t2, t510909; RV64I-NEXT: or t0, t3, t410910; RV64I-NEXT: .LBB19_25:10911; RV64I-NEXT: bnez a6, .LBB19_2910912; RV64I-NEXT: # %bb.26:10913; RV64I-NEXT: bltu a6, t1, .LBB19_2810914; RV64I-NEXT: .LBB19_27:10915; RV64I-NEXT: srai a1, a5, 6310916; RV64I-NEXT: mv a0, a110917; RV64I-NEXT: .LBB19_28:10918; RV64I-NEXT: srli a5, a4, 3210919; RV64I-NEXT: srliw a6, a4, 1610920; RV64I-NEXT: lui t2, 1610921; RV64I-NEXT: srliw t1, a4, 2410922; RV64I-NEXT: srli t0, a4, 4810923; RV64I-NEXT: srli t5, a4, 5610924; RV64I-NEXT: srli a7, a3, 3210925; RV64I-NEXT: srliw t4, a3, 1610926; RV64I-NEXT: srliw s0, a3, 2410927; RV64I-NEXT: srli t6, a3, 4810928; RV64I-NEXT: srli s3, a3, 5610929; RV64I-NEXT: srli t3, a1, 3210930; RV64I-NEXT: srliw s2, a1, 1610931; RV64I-NEXT: srliw s6, a1, 2410932; RV64I-NEXT: srli s4, a1, 4810933; RV64I-NEXT: srli s7, a1, 5610934; RV64I-NEXT: srli s1, a0, 3210935; RV64I-NEXT: srliw s5, a0, 1610936; RV64I-NEXT: srliw s8, a0, 2410937; RV64I-NEXT: srli s9, a0, 4810938; RV64I-NEXT: srli s10, a0, 5610939; RV64I-NEXT: addi t2, t2, -110940; RV64I-NEXT: and s11, a4, t210941; RV64I-NEXT: srli s11, s11, 810942; RV64I-NEXT: sb a4, 0(a2)10943; RV64I-NEXT: sb s11, 1(a2)10944; RV64I-NEXT: sb a6, 2(a2)10945; RV64I-NEXT: sb t1, 3(a2)10946; RV64I-NEXT: and a4, a5, t210947; RV64I-NEXT: srli a4, a4, 810948; RV64I-NEXT: sb a5, 4(a2)10949; RV64I-NEXT: sb a4, 5(a2)10950; RV64I-NEXT: sb t0, 6(a2)10951; RV64I-NEXT: sb t5, 7(a2)10952; RV64I-NEXT: and a4, a3, t210953; RV64I-NEXT: srli a4, a4, 810954; RV64I-NEXT: sb a3, 8(a2)10955; RV64I-NEXT: sb a4, 9(a2)10956; RV64I-NEXT: sb t4, 10(a2)10957; RV64I-NEXT: sb s0, 11(a2)10958; RV64I-NEXT: and a3, a7, t210959; RV64I-NEXT: srli a3, a3, 810960; RV64I-NEXT: sb a7, 12(a2)10961; RV64I-NEXT: sb a3, 13(a2)10962; RV64I-NEXT: sb t6, 14(a2)10963; RV64I-NEXT: sb s3, 15(a2)10964; RV64I-NEXT: and a3, a1, t210965; RV64I-NEXT: srli a3, a3, 810966; RV64I-NEXT: sb a1, 16(a2)10967; RV64I-NEXT: sb a3, 17(a2)10968; RV64I-NEXT: sb s2, 18(a2)10969; RV64I-NEXT: sb s6, 19(a2)10970; RV64I-NEXT: and a1, t3, t210971; RV64I-NEXT: srli a1, a1, 810972; RV64I-NEXT: sb t3, 20(a2)10973; RV64I-NEXT: sb a1, 21(a2)10974; RV64I-NEXT: sb s4, 22(a2)10975; RV64I-NEXT: sb s7, 23(a2)10976; RV64I-NEXT: and a1, a0, t210977; RV64I-NEXT: and a3, s1, t210978; RV64I-NEXT: srli a1, a1, 810979; RV64I-NEXT: srli a3, a3, 810980; RV64I-NEXT: sb a0, 24(a2)10981; RV64I-NEXT: sb a1, 25(a2)10982; RV64I-NEXT: sb s5, 26(a2)10983; RV64I-NEXT: sb s8, 27(a2)10984; RV64I-NEXT: sb s1, 28(a2)10985; RV64I-NEXT: sb a3, 29(a2)10986; RV64I-NEXT: sb s9, 30(a2)10987; RV64I-NEXT: sb s10, 31(a2)10988; RV64I-NEXT: ld s0, 88(sp) # 8-byte Folded Reload10989; RV64I-NEXT: ld s1, 80(sp) # 8-byte Folded Reload10990; RV64I-NEXT: ld s2, 72(sp) # 8-byte Folded Reload10991; RV64I-NEXT: ld s3, 64(sp) # 8-byte Folded Reload10992; RV64I-NEXT: ld s4, 56(sp) # 8-byte Folded Reload10993; RV64I-NEXT: ld s5, 48(sp) # 8-byte Folded Reload10994; RV64I-NEXT: ld s6, 40(sp) # 8-byte Folded Reload10995; RV64I-NEXT: ld s7, 32(sp) # 8-byte Folded Reload10996; RV64I-NEXT: ld s8, 24(sp) # 8-byte Folded Reload10997; RV64I-NEXT: ld s9, 16(sp) # 8-byte Folded Reload10998; RV64I-NEXT: ld s10, 8(sp) # 8-byte Folded Reload10999; RV64I-NEXT: ld s11, 0(sp) # 8-byte Folded Reload11000; RV64I-NEXT: addi sp, sp, 9611001; RV64I-NEXT: ret11002; RV64I-NEXT: .LBB19_29:11003; RV64I-NEXT: mv a4, a711004; RV64I-NEXT: mv a3, t011005; RV64I-NEXT: bgeu a6, t1, .LBB19_2711006; RV64I-NEXT: j .LBB19_2811007;11008; RV32I-LABEL: ashr_32bytes_wordOff:11009; RV32I: # %bb.0:11010; RV32I-NEXT: addi sp, sp, -8011011; RV32I-NEXT: sw ra, 76(sp) # 4-byte Folded Spill11012; RV32I-NEXT: sw s0, 72(sp) # 4-byte Folded Spill11013; RV32I-NEXT: sw s1, 68(sp) # 4-byte Folded Spill11014; RV32I-NEXT: sw s2, 64(sp) # 4-byte Folded Spill11015; RV32I-NEXT: sw s3, 60(sp) # 4-byte Folded Spill11016; RV32I-NEXT: sw s4, 56(sp) # 4-byte Folded Spill11017; RV32I-NEXT: sw s5, 52(sp) # 4-byte Folded Spill11018; RV32I-NEXT: sw s6, 48(sp) # 4-byte Folded Spill11019; RV32I-NEXT: sw s7, 44(sp) # 4-byte Folded Spill11020; RV32I-NEXT: sw s8, 40(sp) # 4-byte Folded Spill11021; RV32I-NEXT: sw s9, 36(sp) # 4-byte Folded Spill11022; RV32I-NEXT: sw s10, 32(sp) # 4-byte Folded Spill11023; RV32I-NEXT: sw s11, 28(sp) # 4-byte Folded Spill11024; RV32I-NEXT: li a5, 011025; RV32I-NEXT: lbu a3, 0(a0)11026; RV32I-NEXT: lbu a4, 1(a0)11027; RV32I-NEXT: lbu t0, 2(a0)11028; RV32I-NEXT: lbu t1, 3(a0)11029; RV32I-NEXT: lbu t2, 4(a0)11030; RV32I-NEXT: lbu t3, 5(a0)11031; RV32I-NEXT: lbu t4, 6(a0)11032; RV32I-NEXT: lbu t5, 7(a0)11033; RV32I-NEXT: lbu t6, 8(a0)11034; RV32I-NEXT: lbu s0, 9(a0)11035; RV32I-NEXT: lbu s1, 10(a0)11036; RV32I-NEXT: lbu s2, 11(a0)11037; RV32I-NEXT: slli a4, a4, 811038; RV32I-NEXT: or a4, a4, a311039; RV32I-NEXT: lbu a7, 13(a0)11040; RV32I-NEXT: lbu a6, 14(a0)11041; RV32I-NEXT: lbu a3, 15(a0)11042; RV32I-NEXT: lbu s3, 28(a0)11043; RV32I-NEXT: slli t1, t1, 811044; RV32I-NEXT: slli t3, t3, 811045; RV32I-NEXT: slli t5, t5, 811046; RV32I-NEXT: or t0, t1, t011047; RV32I-NEXT: or t1, t3, t211048; RV32I-NEXT: or t4, t5, t411049; RV32I-NEXT: lbu t2, 29(a0)11050; RV32I-NEXT: lbu t3, 30(a0)11051; RV32I-NEXT: lbu t5, 31(a0)11052; RV32I-NEXT: slli s0, s0, 811053; RV32I-NEXT: slli s2, s2, 811054; RV32I-NEXT: slli s4, t2, 811055; RV32I-NEXT: or t2, s0, t611056; RV32I-NEXT: or s0, s2, s111057; RV32I-NEXT: or s1, s4, s311058; RV32I-NEXT: lbu t6, 0(a1)11059; RV32I-NEXT: lbu s2, 1(a1)11060; RV32I-NEXT: lbu s3, 2(a1)11061; RV32I-NEXT: lbu a1, 3(a1)11062; RV32I-NEXT: slli t5, t5, 811063; RV32I-NEXT: or s4, t5, t311064; RV32I-NEXT: slli s2, s2, 811065; RV32I-NEXT: or s2, s2, t611066; RV32I-NEXT: slli a1, a1, 811067; RV32I-NEXT: or a1, a1, s311068; RV32I-NEXT: slli t3, a3, 811069; RV32I-NEXT: slli t6, t0, 1611070; RV32I-NEXT: slli t4, t4, 1611071; RV32I-NEXT: slli t5, s0, 1611072; RV32I-NEXT: slli s4, s4, 1611073; RV32I-NEXT: slli a3, a1, 1611074; RV32I-NEXT: or s5, t4, t111075; RV32I-NEXT: or a1, s4, s111076; RV32I-NEXT: or t0, a3, s211077; RV32I-NEXT: slli t0, t0, 511078; RV32I-NEXT: srli t1, t0, 511079; RV32I-NEXT: andi t4, t0, 3111080; RV32I-NEXT: neg a3, t411081; RV32I-NEXT: beqz t4, .LBB19_211082; RV32I-NEXT: # %bb.1:11083; RV32I-NEXT: sll a5, s5, a311084; RV32I-NEXT: .LBB19_2:11085; RV32I-NEXT: or s10, t6, a411086; RV32I-NEXT: lbu t6, 12(a0)11087; RV32I-NEXT: lbu s0, 19(a0)11088; RV32I-NEXT: slli s1, a7, 811089; RV32I-NEXT: or a6, t3, a611090; RV32I-NEXT: or a4, t5, t211091; RV32I-NEXT: srai t2, a1, 3111092; RV32I-NEXT: beqz t1, .LBB19_411093; RV32I-NEXT: # %bb.3:11094; RV32I-NEXT: mv a5, t211095; RV32I-NEXT: j .LBB19_511096; RV32I-NEXT: .LBB19_4:11097; RV32I-NEXT: srl a7, s10, t011098; RV32I-NEXT: or a5, a7, a511099; RV32I-NEXT: .LBB19_5:11100; RV32I-NEXT: li a7, 011101; RV32I-NEXT: lbu s3, 17(a0)11102; RV32I-NEXT: lbu t3, 18(a0)11103; RV32I-NEXT: slli s0, s0, 811104; RV32I-NEXT: or s4, s1, t611105; RV32I-NEXT: slli a6, a6, 1611106; RV32I-NEXT: li s6, 111107; RV32I-NEXT: sll s2, a4, a311108; RV32I-NEXT: beqz t4, .LBB19_711109; RV32I-NEXT: # %bb.6:11110; RV32I-NEXT: mv a7, s211111; RV32I-NEXT: .LBB19_7:11112; RV32I-NEXT: lbu t5, 16(a0)11113; RV32I-NEXT: lbu t6, 23(a0)11114; RV32I-NEXT: slli s1, s3, 811115; RV32I-NEXT: or s0, s0, t311116; RV32I-NEXT: srl s3, s5, t011117; RV32I-NEXT: or a6, a6, s411118; RV32I-NEXT: bne t1, s6, .LBB19_911119; RV32I-NEXT: # %bb.8:11120; RV32I-NEXT: or a5, s3, a711121; RV32I-NEXT: .LBB19_9:11122; RV32I-NEXT: li t3, 011123; RV32I-NEXT: lbu s6, 21(a0)11124; RV32I-NEXT: lbu a7, 22(a0)11125; RV32I-NEXT: slli s4, t6, 811126; RV32I-NEXT: or s7, s1, t511127; RV32I-NEXT: slli s8, s0, 1611128; RV32I-NEXT: li s9, 211129; RV32I-NEXT: sll s0, a6, a311130; RV32I-NEXT: beqz t4, .LBB19_1111131; RV32I-NEXT: # %bb.10:11132; RV32I-NEXT: mv t3, s011133; RV32I-NEXT: .LBB19_11:11134; RV32I-NEXT: lbu t5, 20(a0)11135; RV32I-NEXT: lbu t6, 27(a0)11136; RV32I-NEXT: slli s6, s6, 811137; RV32I-NEXT: or s4, s4, a711138; RV32I-NEXT: srl s1, a4, t011139; RV32I-NEXT: or a7, s8, s711140; RV32I-NEXT: bne t1, s9, .LBB19_1311141; RV32I-NEXT: # %bb.12:11142; RV32I-NEXT: or a5, s1, t311143; RV32I-NEXT: .LBB19_13:11144; RV32I-NEXT: li t3, 011145; RV32I-NEXT: lbu s8, 25(a0)11146; RV32I-NEXT: lbu s7, 26(a0)11147; RV32I-NEXT: slli t6, t6, 811148; RV32I-NEXT: or s6, s6, t511149; RV32I-NEXT: slli s9, s4, 1611150; RV32I-NEXT: li s11, 311151; RV32I-NEXT: sll t5, a7, a311152; RV32I-NEXT: beqz t4, .LBB19_1511153; RV32I-NEXT: # %bb.14:11154; RV32I-NEXT: mv t3, t511155; RV32I-NEXT: .LBB19_15:11156; RV32I-NEXT: lbu s4, 24(a0)11157; RV32I-NEXT: slli s8, s8, 811158; RV32I-NEXT: or s7, t6, s711159; RV32I-NEXT: srl t6, a6, t011160; RV32I-NEXT: or a0, s9, s611161; RV32I-NEXT: sw s5, 16(sp) # 4-byte Folded Spill11162; RV32I-NEXT: sw s10, 12(sp) # 4-byte Folded Spill11163; RV32I-NEXT: bne t1, s11, .LBB19_1711164; RV32I-NEXT: # %bb.16:11165; RV32I-NEXT: or a5, t6, t311166; RV32I-NEXT: .LBB19_17:11167; RV32I-NEXT: li s6, 011168; RV32I-NEXT: or t3, s8, s411169; RV32I-NEXT: slli s7, s7, 1611170; RV32I-NEXT: li s10, 411171; RV32I-NEXT: sll s11, a0, a311172; RV32I-NEXT: beqz t4, .LBB19_1911173; RV32I-NEXT: # %bb.18:11174; RV32I-NEXT: mv s6, s1111175; RV32I-NEXT: .LBB19_19:11176; RV32I-NEXT: srl s4, a7, t011177; RV32I-NEXT: or t3, s7, t311178; RV32I-NEXT: sw s4, 20(sp) # 4-byte Folded Spill11179; RV32I-NEXT: bne t1, s10, .LBB19_2111180; RV32I-NEXT: # %bb.20:11181; RV32I-NEXT: or a5, s4, s611182; RV32I-NEXT: .LBB19_21:11183; RV32I-NEXT: li s4, 011184; RV32I-NEXT: li s5, 511185; RV32I-NEXT: sll s6, t3, a311186; RV32I-NEXT: sw s6, 24(sp) # 4-byte Folded Spill11187; RV32I-NEXT: beqz t4, .LBB19_2311188; RV32I-NEXT: # %bb.22:11189; RV32I-NEXT: lw s4, 24(sp) # 4-byte Folded Reload11190; RV32I-NEXT: .LBB19_23:11191; RV32I-NEXT: srl s6, a0, t011192; RV32I-NEXT: beq t1, s5, .LBB19_2511193; RV32I-NEXT: # %bb.24:11194; RV32I-NEXT: mv ra, s611195; RV32I-NEXT: j .LBB19_2611196; RV32I-NEXT: .LBB19_25:11197; RV32I-NEXT: mv ra, s611198; RV32I-NEXT: or a5, s6, s411199; RV32I-NEXT: .LBB19_26:11200; RV32I-NEXT: li s4, 011201; RV32I-NEXT: li s8, 611202; RV32I-NEXT: sll s7, a1, a311203; RV32I-NEXT: beqz t4, .LBB19_2811204; RV32I-NEXT: # %bb.27:11205; RV32I-NEXT: mv s4, s711206; RV32I-NEXT: .LBB19_28:11207; RV32I-NEXT: srl s5, t3, t011208; RV32I-NEXT: beq t1, s8, .LBB19_3011209; RV32I-NEXT: # %bb.29:11210; RV32I-NEXT: mv s9, s511211; RV32I-NEXT: j .LBB19_3111212; RV32I-NEXT: .LBB19_30:11213; RV32I-NEXT: mv s9, s511214; RV32I-NEXT: or a5, s5, s411215; RV32I-NEXT: .LBB19_31:11216; RV32I-NEXT: li s5, 011217; RV32I-NEXT: li s6, 711218; RV32I-NEXT: sll s4, t2, a311219; RV32I-NEXT: beqz t4, .LBB19_3311220; RV32I-NEXT: # %bb.32:11221; RV32I-NEXT: mv s5, s411222; RV32I-NEXT: .LBB19_33:11223; RV32I-NEXT: srl a3, a1, t011224; RV32I-NEXT: bne t1, s6, .LBB19_3511225; RV32I-NEXT: # %bb.34:11226; RV32I-NEXT: or a5, a3, s511227; RV32I-NEXT: .LBB19_35:11228; RV32I-NEXT: li s5, 311229; RV32I-NEXT: mv s6, a311230; RV32I-NEXT: bnez t0, .LBB19_3911231; RV32I-NEXT: # %bb.36:11232; RV32I-NEXT: li a3, 011233; RV32I-NEXT: bnez t4, .LBB19_4011234; RV32I-NEXT: .LBB19_37:11235; RV32I-NEXT: beqz t1, .LBB19_4111236; RV32I-NEXT: .LBB19_38:11237; RV32I-NEXT: mv a5, t211238; RV32I-NEXT: j .LBB19_4211239; RV32I-NEXT: .LBB19_39:11240; RV32I-NEXT: sw a5, 12(sp) # 4-byte Folded Spill11241; RV32I-NEXT: li a3, 011242; RV32I-NEXT: beqz t4, .LBB19_3711243; RV32I-NEXT: .LBB19_40:11244; RV32I-NEXT: mv a3, s211245; RV32I-NEXT: bnez t1, .LBB19_3811246; RV32I-NEXT: .LBB19_41:11247; RV32I-NEXT: or a5, s3, a311248; RV32I-NEXT: .LBB19_42:11249; RV32I-NEXT: li s2, 111250; RV32I-NEXT: li s3, 211251; RV32I-NEXT: li a3, 011252; RV32I-NEXT: bnez t4, .LBB19_6111253; RV32I-NEXT: # %bb.43:11254; RV32I-NEXT: beq t1, s2, .LBB19_6211255; RV32I-NEXT: .LBB19_44:11256; RV32I-NEXT: li a3, 011257; RV32I-NEXT: bnez t4, .LBB19_6311258; RV32I-NEXT: .LBB19_45:11259; RV32I-NEXT: beq t1, s3, .LBB19_6411260; RV32I-NEXT: .LBB19_46:11261; RV32I-NEXT: li a3, 011262; RV32I-NEXT: bnez t4, .LBB19_6511263; RV32I-NEXT: .LBB19_47:11264; RV32I-NEXT: beq t1, s5, .LBB19_6611265; RV32I-NEXT: .LBB19_48:11266; RV32I-NEXT: li a3, 011267; RV32I-NEXT: bnez t4, .LBB19_6711268; RV32I-NEXT: .LBB19_49:11269; RV32I-NEXT: bne t1, s10, .LBB19_5111270; RV32I-NEXT: .LBB19_50:11271; RV32I-NEXT: or a5, ra, a311272; RV32I-NEXT: .LBB19_51:11273; RV32I-NEXT: li a3, 011274; RV32I-NEXT: li s10, 511275; RV32I-NEXT: bnez t4, .LBB19_6811276; RV32I-NEXT: # %bb.52:11277; RV32I-NEXT: beq t1, s10, .LBB19_6911278; RV32I-NEXT: .LBB19_53:11279; RV32I-NEXT: li a3, 011280; RV32I-NEXT: bnez t4, .LBB19_7011281; RV32I-NEXT: .LBB19_54:11282; RV32I-NEXT: bne t1, s8, .LBB19_5611283; RV32I-NEXT: .LBB19_55:11284; RV32I-NEXT: or a5, s6, a311285; RV32I-NEXT: .LBB19_56:11286; RV32I-NEXT: mv a3, t211287; RV32I-NEXT: li s8, 711288; RV32I-NEXT: bne t1, s8, .LBB19_7111289; RV32I-NEXT: # %bb.57:11290; RV32I-NEXT: bnez t0, .LBB19_7211291; RV32I-NEXT: .LBB19_58:11292; RV32I-NEXT: li a5, 011293; RV32I-NEXT: bnez t4, .LBB19_7311294; RV32I-NEXT: .LBB19_59:11295; RV32I-NEXT: beqz t1, .LBB19_7411296; RV32I-NEXT: .LBB19_60:11297; RV32I-NEXT: mv a5, t211298; RV32I-NEXT: j .LBB19_7511299; RV32I-NEXT: .LBB19_61:11300; RV32I-NEXT: mv a3, s011301; RV32I-NEXT: bne t1, s2, .LBB19_4411302; RV32I-NEXT: .LBB19_62:11303; RV32I-NEXT: or a5, s1, a311304; RV32I-NEXT: li a3, 011305; RV32I-NEXT: beqz t4, .LBB19_4511306; RV32I-NEXT: .LBB19_63:11307; RV32I-NEXT: mv a3, t511308; RV32I-NEXT: bne t1, s3, .LBB19_4611309; RV32I-NEXT: .LBB19_64:11310; RV32I-NEXT: or a5, t6, a311311; RV32I-NEXT: li a3, 011312; RV32I-NEXT: beqz t4, .LBB19_4711313; RV32I-NEXT: .LBB19_65:11314; RV32I-NEXT: mv a3, s1111315; RV32I-NEXT: bne t1, s5, .LBB19_4811316; RV32I-NEXT: .LBB19_66:11317; RV32I-NEXT: lw a5, 20(sp) # 4-byte Folded Reload11318; RV32I-NEXT: or a5, a5, a311319; RV32I-NEXT: li a3, 011320; RV32I-NEXT: beqz t4, .LBB19_4911321; RV32I-NEXT: .LBB19_67:11322; RV32I-NEXT: lw a3, 24(sp) # 4-byte Folded Reload11323; RV32I-NEXT: beq t1, s10, .LBB19_5011324; RV32I-NEXT: j .LBB19_5111325; RV32I-NEXT: .LBB19_68:11326; RV32I-NEXT: mv a3, s711327; RV32I-NEXT: bne t1, s10, .LBB19_5311328; RV32I-NEXT: .LBB19_69:11329; RV32I-NEXT: or a5, s9, a311330; RV32I-NEXT: li a3, 011331; RV32I-NEXT: beqz t4, .LBB19_5411332; RV32I-NEXT: .LBB19_70:11333; RV32I-NEXT: mv a3, s411334; RV32I-NEXT: beq t1, s8, .LBB19_5511335; RV32I-NEXT: j .LBB19_5611336; RV32I-NEXT: .LBB19_71:11337; RV32I-NEXT: mv a3, a511338; RV32I-NEXT: beqz t0, .LBB19_5811339; RV32I-NEXT: .LBB19_72:11340; RV32I-NEXT: sw a3, 16(sp) # 4-byte Folded Spill11341; RV32I-NEXT: li a5, 011342; RV32I-NEXT: beqz t4, .LBB19_5911343; RV32I-NEXT: .LBB19_73:11344; RV32I-NEXT: mv a5, s011345; RV32I-NEXT: bnez t1, .LBB19_6011346; RV32I-NEXT: .LBB19_74:11347; RV32I-NEXT: or a5, s1, a511348; RV32I-NEXT: .LBB19_75:11349; RV32I-NEXT: li s0, 411350; RV32I-NEXT: li s1, 611351; RV32I-NEXT: li a3, 011352; RV32I-NEXT: bnez t4, .LBB19_9111353; RV32I-NEXT: # %bb.76:11354; RV32I-NEXT: beq t1, s2, .LBB19_9211355; RV32I-NEXT: .LBB19_77:11356; RV32I-NEXT: li a3, 011357; RV32I-NEXT: bnez t4, .LBB19_9311358; RV32I-NEXT: .LBB19_78:11359; RV32I-NEXT: beq t1, s3, .LBB19_9411360; RV32I-NEXT: .LBB19_79:11361; RV32I-NEXT: li a3, 011362; RV32I-NEXT: bnez t4, .LBB19_9511363; RV32I-NEXT: .LBB19_80:11364; RV32I-NEXT: beq t1, s5, .LBB19_9611365; RV32I-NEXT: .LBB19_81:11366; RV32I-NEXT: li a3, 011367; RV32I-NEXT: bnez t4, .LBB19_9711368; RV32I-NEXT: .LBB19_82:11369; RV32I-NEXT: beq t1, s0, .LBB19_9811370; RV32I-NEXT: .LBB19_83:11371; RV32I-NEXT: li a3, 011372; RV32I-NEXT: bnez t4, .LBB19_9911373; RV32I-NEXT: .LBB19_84:11374; RV32I-NEXT: beq t1, s10, .LBB19_10011375; RV32I-NEXT: .LBB19_85:11376; RV32I-NEXT: mv a3, t211377; RV32I-NEXT: bne t1, s1, .LBB19_10111378; RV32I-NEXT: .LBB19_86:11379; RV32I-NEXT: mv a5, t211380; RV32I-NEXT: bne t1, s8, .LBB19_10211381; RV32I-NEXT: .LBB19_87:11382; RV32I-NEXT: bnez t0, .LBB19_10311383; RV32I-NEXT: .LBB19_88:11384; RV32I-NEXT: li a3, 011385; RV32I-NEXT: bnez t4, .LBB19_10411386; RV32I-NEXT: .LBB19_89:11387; RV32I-NEXT: beqz t1, .LBB19_10511388; RV32I-NEXT: .LBB19_90:11389; RV32I-NEXT: mv a5, t211390; RV32I-NEXT: li a3, 011391; RV32I-NEXT: bnez t4, .LBB19_10611392; RV32I-NEXT: j .LBB19_10711393; RV32I-NEXT: .LBB19_91:11394; RV32I-NEXT: mv a3, t511395; RV32I-NEXT: bne t1, s2, .LBB19_7711396; RV32I-NEXT: .LBB19_92:11397; RV32I-NEXT: or a5, t6, a311398; RV32I-NEXT: li a3, 011399; RV32I-NEXT: beqz t4, .LBB19_7811400; RV32I-NEXT: .LBB19_93:11401; RV32I-NEXT: mv a3, s1111402; RV32I-NEXT: bne t1, s3, .LBB19_7911403; RV32I-NEXT: .LBB19_94:11404; RV32I-NEXT: lw a5, 20(sp) # 4-byte Folded Reload11405; RV32I-NEXT: or a5, a5, a311406; RV32I-NEXT: li a3, 011407; RV32I-NEXT: beqz t4, .LBB19_8011408; RV32I-NEXT: .LBB19_95:11409; RV32I-NEXT: lw a3, 24(sp) # 4-byte Folded Reload11410; RV32I-NEXT: bne t1, s5, .LBB19_8111411; RV32I-NEXT: .LBB19_96:11412; RV32I-NEXT: or a5, ra, a311413; RV32I-NEXT: li a3, 011414; RV32I-NEXT: beqz t4, .LBB19_8211415; RV32I-NEXT: .LBB19_97:11416; RV32I-NEXT: mv a3, s711417; RV32I-NEXT: bne t1, s0, .LBB19_8311418; RV32I-NEXT: .LBB19_98:11419; RV32I-NEXT: or a5, s9, a311420; RV32I-NEXT: li a3, 011421; RV32I-NEXT: beqz t4, .LBB19_8411422; RV32I-NEXT: .LBB19_99:11423; RV32I-NEXT: mv a3, s411424; RV32I-NEXT: bne t1, s10, .LBB19_8511425; RV32I-NEXT: .LBB19_100:11426; RV32I-NEXT: or a5, s6, a311427; RV32I-NEXT: mv a3, t211428; RV32I-NEXT: beq t1, s1, .LBB19_8611429; RV32I-NEXT: .LBB19_101:11430; RV32I-NEXT: mv a3, a511431; RV32I-NEXT: mv a5, t211432; RV32I-NEXT: beq t1, s8, .LBB19_8711433; RV32I-NEXT: .LBB19_102:11434; RV32I-NEXT: mv a5, a311435; RV32I-NEXT: beqz t0, .LBB19_8811436; RV32I-NEXT: .LBB19_103:11437; RV32I-NEXT: mv a4, a511438; RV32I-NEXT: li a3, 011439; RV32I-NEXT: beqz t4, .LBB19_8911440; RV32I-NEXT: .LBB19_104:11441; RV32I-NEXT: mv a3, t511442; RV32I-NEXT: bnez t1, .LBB19_9011443; RV32I-NEXT: .LBB19_105:11444; RV32I-NEXT: or a5, t6, a311445; RV32I-NEXT: li a3, 011446; RV32I-NEXT: beqz t4, .LBB19_10711447; RV32I-NEXT: .LBB19_106:11448; RV32I-NEXT: mv a3, s1111449; RV32I-NEXT: .LBB19_107:11450; RV32I-NEXT: beq t1, s2, .LBB19_12111451; RV32I-NEXT: # %bb.108:11452; RV32I-NEXT: li a3, 011453; RV32I-NEXT: bnez t4, .LBB19_12211454; RV32I-NEXT: .LBB19_109:11455; RV32I-NEXT: beq t1, s3, .LBB19_12311456; RV32I-NEXT: .LBB19_110:11457; RV32I-NEXT: li a3, 011458; RV32I-NEXT: bnez t4, .LBB19_12411459; RV32I-NEXT: .LBB19_111:11460; RV32I-NEXT: beq t1, s5, .LBB19_12511461; RV32I-NEXT: .LBB19_112:11462; RV32I-NEXT: li a3, 011463; RV32I-NEXT: bnez t4, .LBB19_12611464; RV32I-NEXT: .LBB19_113:11465; RV32I-NEXT: beq t1, s0, .LBB19_12711466; RV32I-NEXT: .LBB19_114:11467; RV32I-NEXT: mv a3, t211468; RV32I-NEXT: bne t1, s10, .LBB19_12811469; RV32I-NEXT: .LBB19_115:11470; RV32I-NEXT: mv a5, t211471; RV32I-NEXT: bne t1, s1, .LBB19_12911472; RV32I-NEXT: .LBB19_116:11473; RV32I-NEXT: mv a3, t211474; RV32I-NEXT: bne t1, s8, .LBB19_13011475; RV32I-NEXT: .LBB19_117:11476; RV32I-NEXT: bnez t0, .LBB19_13111477; RV32I-NEXT: .LBB19_118:11478; RV32I-NEXT: li a3, 011479; RV32I-NEXT: bnez t4, .LBB19_13211480; RV32I-NEXT: .LBB19_119:11481; RV32I-NEXT: beqz t1, .LBB19_13311482; RV32I-NEXT: .LBB19_120:11483; RV32I-NEXT: mv a5, t211484; RV32I-NEXT: j .LBB19_13411485; RV32I-NEXT: .LBB19_121:11486; RV32I-NEXT: lw a5, 20(sp) # 4-byte Folded Reload11487; RV32I-NEXT: or a5, a5, a311488; RV32I-NEXT: li a3, 011489; RV32I-NEXT: beqz t4, .LBB19_10911490; RV32I-NEXT: .LBB19_122:11491; RV32I-NEXT: lw a3, 24(sp) # 4-byte Folded Reload11492; RV32I-NEXT: bne t1, s3, .LBB19_11011493; RV32I-NEXT: .LBB19_123:11494; RV32I-NEXT: or a5, ra, a311495; RV32I-NEXT: li a3, 011496; RV32I-NEXT: beqz t4, .LBB19_11111497; RV32I-NEXT: .LBB19_124:11498; RV32I-NEXT: mv a3, s711499; RV32I-NEXT: bne t1, s5, .LBB19_11211500; RV32I-NEXT: .LBB19_125:11501; RV32I-NEXT: or a5, s9, a311502; RV32I-NEXT: li a3, 011503; RV32I-NEXT: beqz t4, .LBB19_11311504; RV32I-NEXT: .LBB19_126:11505; RV32I-NEXT: mv a3, s411506; RV32I-NEXT: bne t1, s0, .LBB19_11411507; RV32I-NEXT: .LBB19_127:11508; RV32I-NEXT: or a5, s6, a311509; RV32I-NEXT: mv a3, t211510; RV32I-NEXT: beq t1, s10, .LBB19_11511511; RV32I-NEXT: .LBB19_128:11512; RV32I-NEXT: mv a3, a511513; RV32I-NEXT: mv a5, t211514; RV32I-NEXT: beq t1, s1, .LBB19_11611515; RV32I-NEXT: .LBB19_129:11516; RV32I-NEXT: mv a5, a311517; RV32I-NEXT: mv a3, t211518; RV32I-NEXT: beq t1, s8, .LBB19_11711519; RV32I-NEXT: .LBB19_130:11520; RV32I-NEXT: mv a3, a511521; RV32I-NEXT: beqz t0, .LBB19_11811522; RV32I-NEXT: .LBB19_131:11523; RV32I-NEXT: mv a6, a311524; RV32I-NEXT: li a3, 011525; RV32I-NEXT: beqz t4, .LBB19_11911526; RV32I-NEXT: .LBB19_132:11527; RV32I-NEXT: mv a3, s1111528; RV32I-NEXT: bnez t1, .LBB19_12011529; RV32I-NEXT: .LBB19_133:11530; RV32I-NEXT: lw a5, 20(sp) # 4-byte Folded Reload11531; RV32I-NEXT: or a5, a5, a311532; RV32I-NEXT: .LBB19_134:11533; RV32I-NEXT: lw s11, 16(sp) # 4-byte Folded Reload11534; RV32I-NEXT: li a3, 011535; RV32I-NEXT: bnez t4, .LBB19_14811536; RV32I-NEXT: # %bb.135:11537; RV32I-NEXT: beq t1, s2, .LBB19_14911538; RV32I-NEXT: .LBB19_136:11539; RV32I-NEXT: li a3, 011540; RV32I-NEXT: bnez t4, .LBB19_15011541; RV32I-NEXT: .LBB19_137:11542; RV32I-NEXT: beq t1, s3, .LBB19_15111543; RV32I-NEXT: .LBB19_138:11544; RV32I-NEXT: li a3, 011545; RV32I-NEXT: bnez t4, .LBB19_15211546; RV32I-NEXT: .LBB19_139:11547; RV32I-NEXT: beq t1, s5, .LBB19_15311548; RV32I-NEXT: .LBB19_140:11549; RV32I-NEXT: mv a3, t211550; RV32I-NEXT: bne t1, s0, .LBB19_15411551; RV32I-NEXT: .LBB19_141:11552; RV32I-NEXT: mv a5, t211553; RV32I-NEXT: bne t1, s10, .LBB19_15511554; RV32I-NEXT: .LBB19_142:11555; RV32I-NEXT: mv a3, t211556; RV32I-NEXT: bne t1, s1, .LBB19_15611557; RV32I-NEXT: .LBB19_143:11558; RV32I-NEXT: mv a5, t211559; RV32I-NEXT: bne t1, s8, .LBB19_15711560; RV32I-NEXT: .LBB19_144:11561; RV32I-NEXT: bnez t0, .LBB19_15811562; RV32I-NEXT: .LBB19_145:11563; RV32I-NEXT: li a3, 011564; RV32I-NEXT: bnez t4, .LBB19_15911565; RV32I-NEXT: .LBB19_146:11566; RV32I-NEXT: beqz t1, .LBB19_16011567; RV32I-NEXT: .LBB19_147:11568; RV32I-NEXT: mv a5, t211569; RV32I-NEXT: li a3, 011570; RV32I-NEXT: bnez t4, .LBB19_16111571; RV32I-NEXT: j .LBB19_16211572; RV32I-NEXT: .LBB19_148:11573; RV32I-NEXT: lw a3, 24(sp) # 4-byte Folded Reload11574; RV32I-NEXT: bne t1, s2, .LBB19_13611575; RV32I-NEXT: .LBB19_149:11576; RV32I-NEXT: or a5, ra, a311577; RV32I-NEXT: li a3, 011578; RV32I-NEXT: beqz t4, .LBB19_13711579; RV32I-NEXT: .LBB19_150:11580; RV32I-NEXT: mv a3, s711581; RV32I-NEXT: bne t1, s3, .LBB19_13811582; RV32I-NEXT: .LBB19_151:11583; RV32I-NEXT: or a5, s9, a311584; RV32I-NEXT: li a3, 011585; RV32I-NEXT: beqz t4, .LBB19_13911586; RV32I-NEXT: .LBB19_152:11587; RV32I-NEXT: mv a3, s411588; RV32I-NEXT: bne t1, s5, .LBB19_14011589; RV32I-NEXT: .LBB19_153:11590; RV32I-NEXT: or a5, s6, a311591; RV32I-NEXT: mv a3, t211592; RV32I-NEXT: beq t1, s0, .LBB19_14111593; RV32I-NEXT: .LBB19_154:11594; RV32I-NEXT: mv a3, a511595; RV32I-NEXT: mv a5, t211596; RV32I-NEXT: beq t1, s10, .LBB19_14211597; RV32I-NEXT: .LBB19_155:11598; RV32I-NEXT: mv a5, a311599; RV32I-NEXT: mv a3, t211600; RV32I-NEXT: beq t1, s1, .LBB19_14311601; RV32I-NEXT: .LBB19_156:11602; RV32I-NEXT: mv a3, a511603; RV32I-NEXT: mv a5, t211604; RV32I-NEXT: beq t1, s8, .LBB19_14411605; RV32I-NEXT: .LBB19_157:11606; RV32I-NEXT: mv a5, a311607; RV32I-NEXT: beqz t0, .LBB19_14511608; RV32I-NEXT: .LBB19_158:11609; RV32I-NEXT: mv a7, a511610; RV32I-NEXT: li a3, 011611; RV32I-NEXT: beqz t4, .LBB19_14611612; RV32I-NEXT: .LBB19_159:11613; RV32I-NEXT: lw a3, 24(sp) # 4-byte Folded Reload11614; RV32I-NEXT: bnez t1, .LBB19_14711615; RV32I-NEXT: .LBB19_160:11616; RV32I-NEXT: or a5, ra, a311617; RV32I-NEXT: li a3, 011618; RV32I-NEXT: beqz t4, .LBB19_16211619; RV32I-NEXT: .LBB19_161:11620; RV32I-NEXT: mv a3, s711621; RV32I-NEXT: .LBB19_162:11622; RV32I-NEXT: beq t1, s2, .LBB19_17411623; RV32I-NEXT: # %bb.163:11624; RV32I-NEXT: li a3, 011625; RV32I-NEXT: bnez t4, .LBB19_17511626; RV32I-NEXT: .LBB19_164:11627; RV32I-NEXT: beq t1, s3, .LBB19_17611628; RV32I-NEXT: .LBB19_165:11629; RV32I-NEXT: mv a3, t211630; RV32I-NEXT: bne t1, s5, .LBB19_17711631; RV32I-NEXT: .LBB19_166:11632; RV32I-NEXT: mv a5, t211633; RV32I-NEXT: bne t1, s0, .LBB19_17811634; RV32I-NEXT: .LBB19_167:11635; RV32I-NEXT: mv a3, t211636; RV32I-NEXT: bne t1, s10, .LBB19_17911637; RV32I-NEXT: .LBB19_168:11638; RV32I-NEXT: mv a5, t211639; RV32I-NEXT: bne t1, s1, .LBB19_18011640; RV32I-NEXT: .LBB19_169:11641; RV32I-NEXT: mv a3, t211642; RV32I-NEXT: bne t1, s8, .LBB19_18111643; RV32I-NEXT: .LBB19_170:11644; RV32I-NEXT: bnez t0, .LBB19_18211645; RV32I-NEXT: .LBB19_171:11646; RV32I-NEXT: li a3, 011647; RV32I-NEXT: bnez t4, .LBB19_18311648; RV32I-NEXT: .LBB19_172:11649; RV32I-NEXT: beqz t1, .LBB19_18411650; RV32I-NEXT: .LBB19_173:11651; RV32I-NEXT: mv a5, t211652; RV32I-NEXT: li a3, 011653; RV32I-NEXT: bnez t4, .LBB19_18511654; RV32I-NEXT: j .LBB19_18611655; RV32I-NEXT: .LBB19_174:11656; RV32I-NEXT: or a5, s9, a311657; RV32I-NEXT: li a3, 011658; RV32I-NEXT: beqz t4, .LBB19_16411659; RV32I-NEXT: .LBB19_175:11660; RV32I-NEXT: mv a3, s411661; RV32I-NEXT: bne t1, s3, .LBB19_16511662; RV32I-NEXT: .LBB19_176:11663; RV32I-NEXT: or a5, s6, a311664; RV32I-NEXT: mv a3, t211665; RV32I-NEXT: beq t1, s5, .LBB19_16611666; RV32I-NEXT: .LBB19_177:11667; RV32I-NEXT: mv a3, a511668; RV32I-NEXT: mv a5, t211669; RV32I-NEXT: beq t1, s0, .LBB19_16711670; RV32I-NEXT: .LBB19_178:11671; RV32I-NEXT: mv a5, a311672; RV32I-NEXT: mv a3, t211673; RV32I-NEXT: beq t1, s10, .LBB19_16811674; RV32I-NEXT: .LBB19_179:11675; RV32I-NEXT: mv a3, a511676; RV32I-NEXT: mv a5, t211677; RV32I-NEXT: beq t1, s1, .LBB19_16911678; RV32I-NEXT: .LBB19_180:11679; RV32I-NEXT: mv a5, a311680; RV32I-NEXT: mv a3, t211681; RV32I-NEXT: beq t1, s8, .LBB19_17011682; RV32I-NEXT: .LBB19_181:11683; RV32I-NEXT: mv a3, a511684; RV32I-NEXT: beqz t0, .LBB19_17111685; RV32I-NEXT: .LBB19_182:11686; RV32I-NEXT: mv a0, a311687; RV32I-NEXT: li a3, 011688; RV32I-NEXT: beqz t4, .LBB19_17211689; RV32I-NEXT: .LBB19_183:11690; RV32I-NEXT: mv a3, s711691; RV32I-NEXT: bnez t1, .LBB19_17311692; RV32I-NEXT: .LBB19_184:11693; RV32I-NEXT: or a5, s9, a311694; RV32I-NEXT: li a3, 011695; RV32I-NEXT: beqz t4, .LBB19_18611696; RV32I-NEXT: .LBB19_185:11697; RV32I-NEXT: mv a3, s411698; RV32I-NEXT: .LBB19_186:11699; RV32I-NEXT: beq t1, s2, .LBB19_19711700; RV32I-NEXT: # %bb.187:11701; RV32I-NEXT: mv a3, t211702; RV32I-NEXT: bne t1, s3, .LBB19_19811703; RV32I-NEXT: .LBB19_188:11704; RV32I-NEXT: mv a5, t211705; RV32I-NEXT: bne t1, s5, .LBB19_19911706; RV32I-NEXT: .LBB19_189:11707; RV32I-NEXT: mv a3, t211708; RV32I-NEXT: bne t1, s0, .LBB19_20011709; RV32I-NEXT: .LBB19_190:11710; RV32I-NEXT: mv a5, t211711; RV32I-NEXT: bne t1, s10, .LBB19_20111712; RV32I-NEXT: .LBB19_191:11713; RV32I-NEXT: mv a3, t211714; RV32I-NEXT: bne t1, s1, .LBB19_20211715; RV32I-NEXT: .LBB19_192:11716; RV32I-NEXT: mv a5, t211717; RV32I-NEXT: bne t1, s8, .LBB19_20311718; RV32I-NEXT: .LBB19_193:11719; RV32I-NEXT: bnez t0, .LBB19_20411720; RV32I-NEXT: .LBB19_194:11721; RV32I-NEXT: li a3, 011722; RV32I-NEXT: bnez t4, .LBB19_20511723; RV32I-NEXT: .LBB19_195:11724; RV32I-NEXT: beqz t1, .LBB19_20611725; RV32I-NEXT: .LBB19_196:11726; RV32I-NEXT: mv a3, t211727; RV32I-NEXT: mv a5, t211728; RV32I-NEXT: bne t1, s2, .LBB19_20711729; RV32I-NEXT: j .LBB19_20811730; RV32I-NEXT: .LBB19_197:11731; RV32I-NEXT: or a5, s6, a311732; RV32I-NEXT: mv a3, t211733; RV32I-NEXT: beq t1, s3, .LBB19_18811734; RV32I-NEXT: .LBB19_198:11735; RV32I-NEXT: mv a3, a511736; RV32I-NEXT: mv a5, t211737; RV32I-NEXT: beq t1, s5, .LBB19_18911738; RV32I-NEXT: .LBB19_199:11739; RV32I-NEXT: mv a5, a311740; RV32I-NEXT: mv a3, t211741; RV32I-NEXT: beq t1, s0, .LBB19_19011742; RV32I-NEXT: .LBB19_200:11743; RV32I-NEXT: mv a3, a511744; RV32I-NEXT: mv a5, t211745; RV32I-NEXT: beq t1, s10, .LBB19_19111746; RV32I-NEXT: .LBB19_201:11747; RV32I-NEXT: mv a5, a311748; RV32I-NEXT: mv a3, t211749; RV32I-NEXT: beq t1, s1, .LBB19_19211750; RV32I-NEXT: .LBB19_202:11751; RV32I-NEXT: mv a3, a511752; RV32I-NEXT: mv a5, t211753; RV32I-NEXT: beq t1, s8, .LBB19_19311754; RV32I-NEXT: .LBB19_203:11755; RV32I-NEXT: mv a5, a311756; RV32I-NEXT: beqz t0, .LBB19_19411757; RV32I-NEXT: .LBB19_204:11758; RV32I-NEXT: mv t3, a511759; RV32I-NEXT: li a3, 011760; RV32I-NEXT: beqz t4, .LBB19_19511761; RV32I-NEXT: .LBB19_205:11762; RV32I-NEXT: mv a3, s411763; RV32I-NEXT: bnez t1, .LBB19_19611764; RV32I-NEXT: .LBB19_206:11765; RV32I-NEXT: or a3, s6, a311766; RV32I-NEXT: mv a5, t211767; RV32I-NEXT: beq t1, s2, .LBB19_20811768; RV32I-NEXT: .LBB19_207:11769; RV32I-NEXT: mv a5, a311770; RV32I-NEXT: .LBB19_208:11771; RV32I-NEXT: mv a3, t211772; RV32I-NEXT: bne t1, s3, .LBB19_21711773; RV32I-NEXT: # %bb.209:11774; RV32I-NEXT: mv a5, t211775; RV32I-NEXT: bne t1, s5, .LBB19_21811776; RV32I-NEXT: .LBB19_210:11777; RV32I-NEXT: mv a3, t211778; RV32I-NEXT: bne t1, s0, .LBB19_21911779; RV32I-NEXT: .LBB19_211:11780; RV32I-NEXT: mv a5, t211781; RV32I-NEXT: bne t1, s10, .LBB19_22011782; RV32I-NEXT: .LBB19_212:11783; RV32I-NEXT: mv a3, t211784; RV32I-NEXT: bne t1, s1, .LBB19_22111785; RV32I-NEXT: .LBB19_213:11786; RV32I-NEXT: bne t1, s8, .LBB19_22211787; RV32I-NEXT: .LBB19_214:11788; RV32I-NEXT: beqz t0, .LBB19_21611789; RV32I-NEXT: .LBB19_215:11790; RV32I-NEXT: mv a1, t211791; RV32I-NEXT: .LBB19_216:11792; RV32I-NEXT: lw ra, 12(sp) # 4-byte Folded Reload11793; RV32I-NEXT: srli a5, ra, 1611794; RV32I-NEXT: lui t4, 1611795; RV32I-NEXT: srli t2, ra, 2411796; RV32I-NEXT: srli t0, s11, 1611797; RV32I-NEXT: srli t6, s11, 2411798; RV32I-NEXT: srli t1, a4, 1611799; RV32I-NEXT: srli s2, a4, 2411800; RV32I-NEXT: srli t5, a6, 1611801; RV32I-NEXT: srli s3, a6, 2411802; RV32I-NEXT: srli s1, a7, 1611803; RV32I-NEXT: srli a3, a7, 2411804; RV32I-NEXT: srli s0, a0, 1611805; RV32I-NEXT: srli s5, a0, 2411806; RV32I-NEXT: srli s4, t3, 1611807; RV32I-NEXT: srli s6, t3, 2411808; RV32I-NEXT: srli s7, a1, 1611809; RV32I-NEXT: srli s8, a1, 2411810; RV32I-NEXT: addi t4, t4, -111811; RV32I-NEXT: and s9, ra, t411812; RV32I-NEXT: and s10, s11, t411813; RV32I-NEXT: srli s9, s9, 811814; RV32I-NEXT: sb ra, 0(a2)11815; RV32I-NEXT: sb s9, 1(a2)11816; RV32I-NEXT: sb a5, 2(a2)11817; RV32I-NEXT: sb t2, 3(a2)11818; RV32I-NEXT: and a5, a4, t411819; RV32I-NEXT: srli t2, s10, 811820; RV32I-NEXT: sb s11, 4(a2)11821; RV32I-NEXT: sb t2, 5(a2)11822; RV32I-NEXT: sb t0, 6(a2)11823; RV32I-NEXT: sb t6, 7(a2)11824; RV32I-NEXT: and t0, a6, t411825; RV32I-NEXT: srli a5, a5, 811826; RV32I-NEXT: sb a4, 8(a2)11827; RV32I-NEXT: sb a5, 9(a2)11828; RV32I-NEXT: sb t1, 10(a2)11829; RV32I-NEXT: sb s2, 11(a2)11830; RV32I-NEXT: and a4, a7, t411831; RV32I-NEXT: srli a5, t0, 811832; RV32I-NEXT: sb a6, 12(a2)11833; RV32I-NEXT: sb a5, 13(a2)11834; RV32I-NEXT: sb t5, 14(a2)11835; RV32I-NEXT: sb s3, 15(a2)11836; RV32I-NEXT: and a5, a0, t411837; RV32I-NEXT: srli a4, a4, 811838; RV32I-NEXT: sb a7, 16(a2)11839; RV32I-NEXT: sb a4, 17(a2)11840; RV32I-NEXT: sb s1, 18(a2)11841; RV32I-NEXT: sb a3, 19(a2)11842; RV32I-NEXT: and a3, t3, t411843; RV32I-NEXT: and a4, a1, t411844; RV32I-NEXT: srli a5, a5, 811845; RV32I-NEXT: srli a3, a3, 811846; RV32I-NEXT: srli a4, a4, 811847; RV32I-NEXT: sb a0, 20(a2)11848; RV32I-NEXT: sb a5, 21(a2)11849; RV32I-NEXT: sb s0, 22(a2)11850; RV32I-NEXT: sb s5, 23(a2)11851; RV32I-NEXT: sb t3, 24(a2)11852; RV32I-NEXT: sb a3, 25(a2)11853; RV32I-NEXT: sb s4, 26(a2)11854; RV32I-NEXT: sb s6, 27(a2)11855; RV32I-NEXT: sb a1, 28(a2)11856; RV32I-NEXT: sb a4, 29(a2)11857; RV32I-NEXT: sb s7, 30(a2)11858; RV32I-NEXT: sb s8, 31(a2)11859; RV32I-NEXT: lw ra, 76(sp) # 4-byte Folded Reload11860; RV32I-NEXT: lw s0, 72(sp) # 4-byte Folded Reload11861; RV32I-NEXT: lw s1, 68(sp) # 4-byte Folded Reload11862; RV32I-NEXT: lw s2, 64(sp) # 4-byte Folded Reload11863; RV32I-NEXT: lw s3, 60(sp) # 4-byte Folded Reload11864; RV32I-NEXT: lw s4, 56(sp) # 4-byte Folded Reload11865; RV32I-NEXT: lw s5, 52(sp) # 4-byte Folded Reload11866; RV32I-NEXT: lw s6, 48(sp) # 4-byte Folded Reload11867; RV32I-NEXT: lw s7, 44(sp) # 4-byte Folded Reload11868; RV32I-NEXT: lw s8, 40(sp) # 4-byte Folded Reload11869; RV32I-NEXT: lw s9, 36(sp) # 4-byte Folded Reload11870; RV32I-NEXT: lw s10, 32(sp) # 4-byte Folded Reload11871; RV32I-NEXT: lw s11, 28(sp) # 4-byte Folded Reload11872; RV32I-NEXT: addi sp, sp, 8011873; RV32I-NEXT: ret11874; RV32I-NEXT: .LBB19_217:11875; RV32I-NEXT: mv a3, a511876; RV32I-NEXT: mv a5, t211877; RV32I-NEXT: beq t1, s5, .LBB19_21011878; RV32I-NEXT: .LBB19_218:11879; RV32I-NEXT: mv a5, a311880; RV32I-NEXT: mv a3, t211881; RV32I-NEXT: beq t1, s0, .LBB19_21111882; RV32I-NEXT: .LBB19_219:11883; RV32I-NEXT: mv a3, a511884; RV32I-NEXT: mv a5, t211885; RV32I-NEXT: beq t1, s10, .LBB19_21211886; RV32I-NEXT: .LBB19_220:11887; RV32I-NEXT: mv a5, a311888; RV32I-NEXT: mv a3, t211889; RV32I-NEXT: beq t1, s1, .LBB19_21311890; RV32I-NEXT: .LBB19_221:11891; RV32I-NEXT: mv a3, a511892; RV32I-NEXT: beq t1, s8, .LBB19_21411893; RV32I-NEXT: .LBB19_222:11894; RV32I-NEXT: mv t2, a311895; RV32I-NEXT: bnez t0, .LBB19_21511896; RV32I-NEXT: j .LBB19_21611897 %src = load i256, ptr %src.ptr, align 111898 %wordOff = load i256, ptr %wordOff.ptr, align 111899 %bitOff = shl i256 %wordOff, 511900 %res = ashr i256 %src, %bitOff11901 store i256 %res, ptr %dst, align 111902 ret void11903}11904 11905define void @ashr_32bytes_dwordOff(ptr %src.ptr, ptr %dwordOff.ptr, ptr %dst) nounwind {11906; RV64I-LABEL: ashr_32bytes_dwordOff:11907; RV64I: # %bb.0:11908; RV64I-NEXT: addi sp, sp, -9611909; RV64I-NEXT: sd s0, 88(sp) # 8-byte Folded Spill11910; RV64I-NEXT: sd s1, 80(sp) # 8-byte Folded Spill11911; RV64I-NEXT: sd s2, 72(sp) # 8-byte Folded Spill11912; RV64I-NEXT: sd s3, 64(sp) # 8-byte Folded Spill11913; RV64I-NEXT: sd s4, 56(sp) # 8-byte Folded Spill11914; RV64I-NEXT: sd s5, 48(sp) # 8-byte Folded Spill11915; RV64I-NEXT: sd s6, 40(sp) # 8-byte Folded Spill11916; RV64I-NEXT: sd s7, 32(sp) # 8-byte Folded Spill11917; RV64I-NEXT: sd s8, 24(sp) # 8-byte Folded Spill11918; RV64I-NEXT: sd s9, 16(sp) # 8-byte Folded Spill11919; RV64I-NEXT: sd s10, 8(sp) # 8-byte Folded Spill11920; RV64I-NEXT: sd s11, 0(sp) # 8-byte Folded Spill11921; RV64I-NEXT: lbu a3, 0(a0)11922; RV64I-NEXT: lbu a4, 1(a0)11923; RV64I-NEXT: lbu a5, 2(a0)11924; RV64I-NEXT: lbu a6, 3(a0)11925; RV64I-NEXT: lbu a7, 4(a0)11926; RV64I-NEXT: lbu t0, 5(a0)11927; RV64I-NEXT: lbu t1, 6(a0)11928; RV64I-NEXT: lbu t2, 7(a0)11929; RV64I-NEXT: lbu t3, 8(a0)11930; RV64I-NEXT: lbu t4, 9(a0)11931; RV64I-NEXT: lbu t5, 10(a0)11932; RV64I-NEXT: lbu t6, 11(a0)11933; RV64I-NEXT: lbu s0, 12(a0)11934; RV64I-NEXT: lbu s1, 13(a0)11935; RV64I-NEXT: lbu s2, 14(a0)11936; RV64I-NEXT: lbu s3, 15(a0)11937; RV64I-NEXT: lbu s4, 16(a0)11938; RV64I-NEXT: lbu s5, 17(a0)11939; RV64I-NEXT: lbu s6, 18(a0)11940; RV64I-NEXT: lbu s7, 19(a0)11941; RV64I-NEXT: slli a4, a4, 811942; RV64I-NEXT: slli a6, a6, 811943; RV64I-NEXT: slli t0, t0, 811944; RV64I-NEXT: or a3, a4, a311945; RV64I-NEXT: or a5, a6, a511946; RV64I-NEXT: or a7, t0, a711947; RV64I-NEXT: lbu s8, 20(a0)11948; RV64I-NEXT: lbu s9, 21(a0)11949; RV64I-NEXT: lbu s10, 22(a0)11950; RV64I-NEXT: lbu s11, 23(a0)11951; RV64I-NEXT: slli t2, t2, 811952; RV64I-NEXT: slli t4, t4, 811953; RV64I-NEXT: slli t6, t6, 811954; RV64I-NEXT: slli s1, s1, 811955; RV64I-NEXT: or t1, t2, t111956; RV64I-NEXT: or a4, t4, t311957; RV64I-NEXT: or a6, t6, t511958; RV64I-NEXT: or t0, s1, s011959; RV64I-NEXT: lbu t5, 24(a0)11960; RV64I-NEXT: lbu t6, 25(a0)11961; RV64I-NEXT: lbu s0, 26(a0)11962; RV64I-NEXT: lbu s1, 27(a0)11963; RV64I-NEXT: slli s3, s3, 811964; RV64I-NEXT: slli s5, s5, 811965; RV64I-NEXT: slli s7, s7, 811966; RV64I-NEXT: or t4, s3, s211967; RV64I-NEXT: or t2, s5, s411968; RV64I-NEXT: or t3, s7, s611969; RV64I-NEXT: lbu s2, 28(a0)11970; RV64I-NEXT: lbu s3, 29(a0)11971; RV64I-NEXT: lbu s4, 30(a0)11972; RV64I-NEXT: lbu a0, 31(a0)11973; RV64I-NEXT: slli s9, s9, 811974; RV64I-NEXT: slli s11, s11, 811975; RV64I-NEXT: slli t6, t6, 811976; RV64I-NEXT: slli s1, s1, 811977; RV64I-NEXT: or s5, s9, s811978; RV64I-NEXT: or s6, s11, s1011979; RV64I-NEXT: or t5, t6, t511980; RV64I-NEXT: or s0, s1, s011981; RV64I-NEXT: lbu t6, 0(a1)11982; RV64I-NEXT: lbu s1, 1(a1)11983; RV64I-NEXT: lbu s7, 2(a1)11984; RV64I-NEXT: lbu s8, 3(a1)11985; RV64I-NEXT: slli s3, s3, 811986; RV64I-NEXT: slli a0, a0, 811987; RV64I-NEXT: slli s1, s1, 811988; RV64I-NEXT: or s2, s3, s211989; RV64I-NEXT: or s3, a0, s411990; RV64I-NEXT: or t6, s1, t611991; RV64I-NEXT: lbu a0, 4(a1)11992; RV64I-NEXT: lbu s1, 5(a1)11993; RV64I-NEXT: lbu s4, 6(a1)11994; RV64I-NEXT: lbu a1, 7(a1)11995; RV64I-NEXT: slli s8, s8, 811996; RV64I-NEXT: or s7, s8, s711997; RV64I-NEXT: slli s1, s1, 811998; RV64I-NEXT: or s1, s1, a011999; RV64I-NEXT: slli a1, a1, 812000; RV64I-NEXT: or s4, a1, s412001; RV64I-NEXT: slli t1, t1, 1612002; RV64I-NEXT: or a1, t1, a712003; RV64I-NEXT: slli t4, t4, 1612004; RV64I-NEXT: or a0, t4, t012005; RV64I-NEXT: slli t3, t3, 1612006; RV64I-NEXT: or a7, t3, t212007; RV64I-NEXT: slli s6, s6, 1612008; RV64I-NEXT: or t1, s6, s512009; RV64I-NEXT: slli s0, s0, 1612010; RV64I-NEXT: or t4, s0, t512011; RV64I-NEXT: slli s3, s3, 1612012; RV64I-NEXT: or t5, s3, s212013; RV64I-NEXT: slli s7, s7, 1612014; RV64I-NEXT: or t6, s7, t612015; RV64I-NEXT: slli s4, s4, 1612016; RV64I-NEXT: or s0, s4, s112017; RV64I-NEXT: li t0, 6412018; RV64I-NEXT: slli t3, a5, 1612019; RV64I-NEXT: slli t2, a6, 1612020; RV64I-NEXT: slli t1, t1, 3212021; RV64I-NEXT: slli t5, t5, 3212022; RV64I-NEXT: slli s0, s0, 3212023; RV64I-NEXT: or a7, t1, a712024; RV64I-NEXT: or a5, t5, t412025; RV64I-NEXT: or a6, s0, t612026; RV64I-NEXT: slli a6, a6, 612027; RV64I-NEXT: sub t1, a6, t012028; RV64I-NEXT: neg t5, a612029; RV64I-NEXT: sll t4, a5, t512030; RV64I-NEXT: bltu a6, t0, .LBB20_212031; RV64I-NEXT: # %bb.1:12032; RV64I-NEXT: sra t6, a5, t112033; RV64I-NEXT: j .LBB20_312034; RV64I-NEXT: .LBB20_2:12035; RV64I-NEXT: srl t6, a7, a612036; RV64I-NEXT: or t6, t6, t412037; RV64I-NEXT: .LBB20_3:12038; RV64I-NEXT: or a3, t3, a312039; RV64I-NEXT: slli t3, a1, 3212040; RV64I-NEXT: or t2, t2, a412041; RV64I-NEXT: slli a0, a0, 3212042; RV64I-NEXT: mv a1, a712043; RV64I-NEXT: beqz a6, .LBB20_512044; RV64I-NEXT: # %bb.4:12045; RV64I-NEXT: mv a1, t612046; RV64I-NEXT: .LBB20_5:12047; RV64I-NEXT: or a4, t3, a312048; RV64I-NEXT: or a3, a0, t212049; RV64I-NEXT: bltu a6, t0, .LBB20_712050; RV64I-NEXT: # %bb.6:12051; RV64I-NEXT: srai a0, a5, 6312052; RV64I-NEXT: srl t3, a3, t112053; RV64I-NEXT: j .LBB20_812054; RV64I-NEXT: .LBB20_7:12055; RV64I-NEXT: sra a0, a5, a612056; RV64I-NEXT: srl t1, a4, a612057; RV64I-NEXT: sll t2, a3, t512058; RV64I-NEXT: or t3, t1, t212059; RV64I-NEXT: .LBB20_8:12060; RV64I-NEXT: li t1, 12812061; RV64I-NEXT: mv t2, a412062; RV64I-NEXT: beqz a6, .LBB20_1012063; RV64I-NEXT: # %bb.9:12064; RV64I-NEXT: mv t2, t312065; RV64I-NEXT: .LBB20_10:12066; RV64I-NEXT: sub t6, t1, a612067; RV64I-NEXT: bltu a6, t0, .LBB20_1312068; RV64I-NEXT: # %bb.11:12069; RV64I-NEXT: li t3, 012070; RV64I-NEXT: bgeu t6, t0, .LBB20_1412071; RV64I-NEXT: .LBB20_12:12072; RV64I-NEXT: sll t5, a7, t512073; RV64I-NEXT: neg s0, t612074; RV64I-NEXT: srl s0, a7, s012075; RV64I-NEXT: or s1, s0, t412076; RV64I-NEXT: j .LBB20_1512077; RV64I-NEXT: .LBB20_13:12078; RV64I-NEXT: srl t3, a3, a612079; RV64I-NEXT: bltu t6, t0, .LBB20_1212080; RV64I-NEXT: .LBB20_14:12081; RV64I-NEXT: li t5, 012082; RV64I-NEXT: sub t4, t6, t012083; RV64I-NEXT: sll s1, a7, t412084; RV64I-NEXT: .LBB20_15:12085; RV64I-NEXT: sub s0, a6, t112086; RV64I-NEXT: mv t4, a512087; RV64I-NEXT: beqz t6, .LBB20_1712088; RV64I-NEXT: # %bb.16:12089; RV64I-NEXT: mv t4, s112090; RV64I-NEXT: .LBB20_17:12091; RV64I-NEXT: bltu s0, t0, .LBB20_1912092; RV64I-NEXT: # %bb.18:12093; RV64I-NEXT: sub t6, s0, t012094; RV64I-NEXT: sra t6, a5, t612095; RV64I-NEXT: bnez s0, .LBB20_2012096; RV64I-NEXT: j .LBB20_2112097; RV64I-NEXT: .LBB20_19:12098; RV64I-NEXT: srl t6, a7, s012099; RV64I-NEXT: neg s1, s012100; RV64I-NEXT: sll s1, a5, s112101; RV64I-NEXT: or t6, t6, s112102; RV64I-NEXT: beqz s0, .LBB20_2112103; RV64I-NEXT: .LBB20_20:12104; RV64I-NEXT: mv a7, t612105; RV64I-NEXT: .LBB20_21:12106; RV64I-NEXT: bltu s0, t0, .LBB20_2312107; RV64I-NEXT: # %bb.22:12108; RV64I-NEXT: srai t0, a5, 6312109; RV64I-NEXT: bltu a6, t1, .LBB20_2412110; RV64I-NEXT: j .LBB20_2512111; RV64I-NEXT: .LBB20_23:12112; RV64I-NEXT: sra t0, a5, s012113; RV64I-NEXT: bgeu a6, t1, .LBB20_2512114; RV64I-NEXT: .LBB20_24:12115; RV64I-NEXT: or a7, t2, t512116; RV64I-NEXT: or t0, t3, t412117; RV64I-NEXT: .LBB20_25:12118; RV64I-NEXT: bnez a6, .LBB20_2912119; RV64I-NEXT: # %bb.26:12120; RV64I-NEXT: bltu a6, t1, .LBB20_2812121; RV64I-NEXT: .LBB20_27:12122; RV64I-NEXT: srai a1, a5, 6312123; RV64I-NEXT: mv a0, a112124; RV64I-NEXT: .LBB20_28:12125; RV64I-NEXT: srli a5, a4, 3212126; RV64I-NEXT: srliw a6, a4, 1612127; RV64I-NEXT: lui t2, 1612128; RV64I-NEXT: srliw t1, a4, 2412129; RV64I-NEXT: srli t0, a4, 4812130; RV64I-NEXT: srli t5, a4, 5612131; RV64I-NEXT: srli a7, a3, 3212132; RV64I-NEXT: srliw t4, a3, 1612133; RV64I-NEXT: srliw s0, a3, 2412134; RV64I-NEXT: srli t6, a3, 4812135; RV64I-NEXT: srli s3, a3, 5612136; RV64I-NEXT: srli t3, a1, 3212137; RV64I-NEXT: srliw s2, a1, 1612138; RV64I-NEXT: srliw s6, a1, 2412139; RV64I-NEXT: srli s4, a1, 4812140; RV64I-NEXT: srli s7, a1, 5612141; RV64I-NEXT: srli s1, a0, 3212142; RV64I-NEXT: srliw s5, a0, 1612143; RV64I-NEXT: srliw s8, a0, 2412144; RV64I-NEXT: srli s9, a0, 4812145; RV64I-NEXT: srli s10, a0, 5612146; RV64I-NEXT: addi t2, t2, -112147; RV64I-NEXT: and s11, a4, t212148; RV64I-NEXT: srli s11, s11, 812149; RV64I-NEXT: sb a4, 0(a2)12150; RV64I-NEXT: sb s11, 1(a2)12151; RV64I-NEXT: sb a6, 2(a2)12152; RV64I-NEXT: sb t1, 3(a2)12153; RV64I-NEXT: and a4, a5, t212154; RV64I-NEXT: srli a4, a4, 812155; RV64I-NEXT: sb a5, 4(a2)12156; RV64I-NEXT: sb a4, 5(a2)12157; RV64I-NEXT: sb t0, 6(a2)12158; RV64I-NEXT: sb t5, 7(a2)12159; RV64I-NEXT: and a4, a3, t212160; RV64I-NEXT: srli a4, a4, 812161; RV64I-NEXT: sb a3, 8(a2)12162; RV64I-NEXT: sb a4, 9(a2)12163; RV64I-NEXT: sb t4, 10(a2)12164; RV64I-NEXT: sb s0, 11(a2)12165; RV64I-NEXT: and a3, a7, t212166; RV64I-NEXT: srli a3, a3, 812167; RV64I-NEXT: sb a7, 12(a2)12168; RV64I-NEXT: sb a3, 13(a2)12169; RV64I-NEXT: sb t6, 14(a2)12170; RV64I-NEXT: sb s3, 15(a2)12171; RV64I-NEXT: and a3, a1, t212172; RV64I-NEXT: srli a3, a3, 812173; RV64I-NEXT: sb a1, 16(a2)12174; RV64I-NEXT: sb a3, 17(a2)12175; RV64I-NEXT: sb s2, 18(a2)12176; RV64I-NEXT: sb s6, 19(a2)12177; RV64I-NEXT: and a1, t3, t212178; RV64I-NEXT: srli a1, a1, 812179; RV64I-NEXT: sb t3, 20(a2)12180; RV64I-NEXT: sb a1, 21(a2)12181; RV64I-NEXT: sb s4, 22(a2)12182; RV64I-NEXT: sb s7, 23(a2)12183; RV64I-NEXT: and a1, a0, t212184; RV64I-NEXT: and a3, s1, t212185; RV64I-NEXT: srli a1, a1, 812186; RV64I-NEXT: srli a3, a3, 812187; RV64I-NEXT: sb a0, 24(a2)12188; RV64I-NEXT: sb a1, 25(a2)12189; RV64I-NEXT: sb s5, 26(a2)12190; RV64I-NEXT: sb s8, 27(a2)12191; RV64I-NEXT: sb s1, 28(a2)12192; RV64I-NEXT: sb a3, 29(a2)12193; RV64I-NEXT: sb s9, 30(a2)12194; RV64I-NEXT: sb s10, 31(a2)12195; RV64I-NEXT: ld s0, 88(sp) # 8-byte Folded Reload12196; RV64I-NEXT: ld s1, 80(sp) # 8-byte Folded Reload12197; RV64I-NEXT: ld s2, 72(sp) # 8-byte Folded Reload12198; RV64I-NEXT: ld s3, 64(sp) # 8-byte Folded Reload12199; RV64I-NEXT: ld s4, 56(sp) # 8-byte Folded Reload12200; RV64I-NEXT: ld s5, 48(sp) # 8-byte Folded Reload12201; RV64I-NEXT: ld s6, 40(sp) # 8-byte Folded Reload12202; RV64I-NEXT: ld s7, 32(sp) # 8-byte Folded Reload12203; RV64I-NEXT: ld s8, 24(sp) # 8-byte Folded Reload12204; RV64I-NEXT: ld s9, 16(sp) # 8-byte Folded Reload12205; RV64I-NEXT: ld s10, 8(sp) # 8-byte Folded Reload12206; RV64I-NEXT: ld s11, 0(sp) # 8-byte Folded Reload12207; RV64I-NEXT: addi sp, sp, 9612208; RV64I-NEXT: ret12209; RV64I-NEXT: .LBB20_29:12210; RV64I-NEXT: mv a4, a712211; RV64I-NEXT: mv a3, t012212; RV64I-NEXT: bgeu a6, t1, .LBB20_2712213; RV64I-NEXT: j .LBB20_2812214;12215; RV32I-LABEL: ashr_32bytes_dwordOff:12216; RV32I: # %bb.0:12217; RV32I-NEXT: addi sp, sp, -8012218; RV32I-NEXT: sw ra, 76(sp) # 4-byte Folded Spill12219; RV32I-NEXT: sw s0, 72(sp) # 4-byte Folded Spill12220; RV32I-NEXT: sw s1, 68(sp) # 4-byte Folded Spill12221; RV32I-NEXT: sw s2, 64(sp) # 4-byte Folded Spill12222; RV32I-NEXT: sw s3, 60(sp) # 4-byte Folded Spill12223; RV32I-NEXT: sw s4, 56(sp) # 4-byte Folded Spill12224; RV32I-NEXT: sw s5, 52(sp) # 4-byte Folded Spill12225; RV32I-NEXT: sw s6, 48(sp) # 4-byte Folded Spill12226; RV32I-NEXT: sw s7, 44(sp) # 4-byte Folded Spill12227; RV32I-NEXT: sw s8, 40(sp) # 4-byte Folded Spill12228; RV32I-NEXT: sw s9, 36(sp) # 4-byte Folded Spill12229; RV32I-NEXT: sw s10, 32(sp) # 4-byte Folded Spill12230; RV32I-NEXT: sw s11, 28(sp) # 4-byte Folded Spill12231; RV32I-NEXT: li a5, 012232; RV32I-NEXT: lbu a3, 0(a0)12233; RV32I-NEXT: lbu a4, 1(a0)12234; RV32I-NEXT: lbu t0, 2(a0)12235; RV32I-NEXT: lbu t1, 3(a0)12236; RV32I-NEXT: lbu t2, 4(a0)12237; RV32I-NEXT: lbu t3, 5(a0)12238; RV32I-NEXT: lbu t4, 6(a0)12239; RV32I-NEXT: lbu t5, 7(a0)12240; RV32I-NEXT: lbu t6, 8(a0)12241; RV32I-NEXT: lbu s0, 9(a0)12242; RV32I-NEXT: lbu s1, 10(a0)12243; RV32I-NEXT: lbu s2, 11(a0)12244; RV32I-NEXT: slli a4, a4, 812245; RV32I-NEXT: or a4, a4, a312246; RV32I-NEXT: lbu a7, 13(a0)12247; RV32I-NEXT: lbu a6, 14(a0)12248; RV32I-NEXT: lbu a3, 15(a0)12249; RV32I-NEXT: lbu s3, 28(a0)12250; RV32I-NEXT: slli t1, t1, 812251; RV32I-NEXT: slli t3, t3, 812252; RV32I-NEXT: slli t5, t5, 812253; RV32I-NEXT: or t0, t1, t012254; RV32I-NEXT: or t1, t3, t212255; RV32I-NEXT: or t4, t5, t412256; RV32I-NEXT: lbu t2, 29(a0)12257; RV32I-NEXT: lbu t3, 30(a0)12258; RV32I-NEXT: lbu t5, 31(a0)12259; RV32I-NEXT: slli s0, s0, 812260; RV32I-NEXT: slli s2, s2, 812261; RV32I-NEXT: slli s4, t2, 812262; RV32I-NEXT: or t2, s0, t612263; RV32I-NEXT: or s0, s2, s112264; RV32I-NEXT: or s1, s4, s312265; RV32I-NEXT: lbu t6, 0(a1)12266; RV32I-NEXT: lbu s2, 1(a1)12267; RV32I-NEXT: lbu s3, 2(a1)12268; RV32I-NEXT: lbu a1, 3(a1)12269; RV32I-NEXT: slli t5, t5, 812270; RV32I-NEXT: or s4, t5, t312271; RV32I-NEXT: slli s2, s2, 812272; RV32I-NEXT: or s2, s2, t612273; RV32I-NEXT: slli a1, a1, 812274; RV32I-NEXT: or a1, a1, s312275; RV32I-NEXT: slli t3, a3, 812276; RV32I-NEXT: slli t6, t0, 1612277; RV32I-NEXT: slli t4, t4, 1612278; RV32I-NEXT: slli t5, s0, 1612279; RV32I-NEXT: slli s4, s4, 1612280; RV32I-NEXT: slli a3, a1, 1612281; RV32I-NEXT: or s5, t4, t112282; RV32I-NEXT: or a1, s4, s112283; RV32I-NEXT: or t0, a3, s212284; RV32I-NEXT: slli t0, t0, 612285; RV32I-NEXT: srli t1, t0, 512286; RV32I-NEXT: andi t4, t0, 3112287; RV32I-NEXT: neg a3, t412288; RV32I-NEXT: beqz t4, .LBB20_212289; RV32I-NEXT: # %bb.1:12290; RV32I-NEXT: sll a5, s5, a312291; RV32I-NEXT: .LBB20_2:12292; RV32I-NEXT: or s10, t6, a412293; RV32I-NEXT: lbu t6, 12(a0)12294; RV32I-NEXT: lbu s0, 19(a0)12295; RV32I-NEXT: slli s1, a7, 812296; RV32I-NEXT: or a6, t3, a612297; RV32I-NEXT: or a4, t5, t212298; RV32I-NEXT: srai t2, a1, 3112299; RV32I-NEXT: beqz t1, .LBB20_412300; RV32I-NEXT: # %bb.3:12301; RV32I-NEXT: mv a5, t212302; RV32I-NEXT: j .LBB20_512303; RV32I-NEXT: .LBB20_4:12304; RV32I-NEXT: srl a7, s10, t012305; RV32I-NEXT: or a5, a7, a512306; RV32I-NEXT: .LBB20_5:12307; RV32I-NEXT: li a7, 012308; RV32I-NEXT: lbu s3, 17(a0)12309; RV32I-NEXT: lbu t3, 18(a0)12310; RV32I-NEXT: slli s0, s0, 812311; RV32I-NEXT: or s4, s1, t612312; RV32I-NEXT: slli a6, a6, 1612313; RV32I-NEXT: li s6, 112314; RV32I-NEXT: sll s2, a4, a312315; RV32I-NEXT: beqz t4, .LBB20_712316; RV32I-NEXT: # %bb.6:12317; RV32I-NEXT: mv a7, s212318; RV32I-NEXT: .LBB20_7:12319; RV32I-NEXT: lbu t5, 16(a0)12320; RV32I-NEXT: lbu t6, 23(a0)12321; RV32I-NEXT: slli s1, s3, 812322; RV32I-NEXT: or s0, s0, t312323; RV32I-NEXT: srl s3, s5, t012324; RV32I-NEXT: or a6, a6, s412325; RV32I-NEXT: bne t1, s6, .LBB20_912326; RV32I-NEXT: # %bb.8:12327; RV32I-NEXT: or a5, s3, a712328; RV32I-NEXT: .LBB20_9:12329; RV32I-NEXT: li t3, 012330; RV32I-NEXT: lbu s6, 21(a0)12331; RV32I-NEXT: lbu a7, 22(a0)12332; RV32I-NEXT: slli s4, t6, 812333; RV32I-NEXT: or s7, s1, t512334; RV32I-NEXT: slli s8, s0, 1612335; RV32I-NEXT: li s9, 212336; RV32I-NEXT: sll s0, a6, a312337; RV32I-NEXT: beqz t4, .LBB20_1112338; RV32I-NEXT: # %bb.10:12339; RV32I-NEXT: mv t3, s012340; RV32I-NEXT: .LBB20_11:12341; RV32I-NEXT: lbu t5, 20(a0)12342; RV32I-NEXT: lbu t6, 27(a0)12343; RV32I-NEXT: slli s6, s6, 812344; RV32I-NEXT: or s4, s4, a712345; RV32I-NEXT: srl s1, a4, t012346; RV32I-NEXT: or a7, s8, s712347; RV32I-NEXT: bne t1, s9, .LBB20_1312348; RV32I-NEXT: # %bb.12:12349; RV32I-NEXT: or a5, s1, t312350; RV32I-NEXT: .LBB20_13:12351; RV32I-NEXT: li t3, 012352; RV32I-NEXT: lbu s8, 25(a0)12353; RV32I-NEXT: lbu s7, 26(a0)12354; RV32I-NEXT: slli t6, t6, 812355; RV32I-NEXT: or s6, s6, t512356; RV32I-NEXT: slli s9, s4, 1612357; RV32I-NEXT: li s11, 312358; RV32I-NEXT: sll t5, a7, a312359; RV32I-NEXT: beqz t4, .LBB20_1512360; RV32I-NEXT: # %bb.14:12361; RV32I-NEXT: mv t3, t512362; RV32I-NEXT: .LBB20_15:12363; RV32I-NEXT: lbu s4, 24(a0)12364; RV32I-NEXT: slli s8, s8, 812365; RV32I-NEXT: or s7, t6, s712366; RV32I-NEXT: srl t6, a6, t012367; RV32I-NEXT: or a0, s9, s612368; RV32I-NEXT: sw s5, 16(sp) # 4-byte Folded Spill12369; RV32I-NEXT: sw s10, 12(sp) # 4-byte Folded Spill12370; RV32I-NEXT: bne t1, s11, .LBB20_1712371; RV32I-NEXT: # %bb.16:12372; RV32I-NEXT: or a5, t6, t312373; RV32I-NEXT: .LBB20_17:12374; RV32I-NEXT: li s6, 012375; RV32I-NEXT: or t3, s8, s412376; RV32I-NEXT: slli s7, s7, 1612377; RV32I-NEXT: li s10, 412378; RV32I-NEXT: sll s11, a0, a312379; RV32I-NEXT: beqz t4, .LBB20_1912380; RV32I-NEXT: # %bb.18:12381; RV32I-NEXT: mv s6, s1112382; RV32I-NEXT: .LBB20_19:12383; RV32I-NEXT: srl s4, a7, t012384; RV32I-NEXT: or t3, s7, t312385; RV32I-NEXT: sw s4, 20(sp) # 4-byte Folded Spill12386; RV32I-NEXT: bne t1, s10, .LBB20_2112387; RV32I-NEXT: # %bb.20:12388; RV32I-NEXT: or a5, s4, s612389; RV32I-NEXT: .LBB20_21:12390; RV32I-NEXT: li s4, 012391; RV32I-NEXT: li s5, 512392; RV32I-NEXT: sll s6, t3, a312393; RV32I-NEXT: sw s6, 24(sp) # 4-byte Folded Spill12394; RV32I-NEXT: beqz t4, .LBB20_2312395; RV32I-NEXT: # %bb.22:12396; RV32I-NEXT: lw s4, 24(sp) # 4-byte Folded Reload12397; RV32I-NEXT: .LBB20_23:12398; RV32I-NEXT: srl s6, a0, t012399; RV32I-NEXT: beq t1, s5, .LBB20_2512400; RV32I-NEXT: # %bb.24:12401; RV32I-NEXT: mv ra, s612402; RV32I-NEXT: j .LBB20_2612403; RV32I-NEXT: .LBB20_25:12404; RV32I-NEXT: mv ra, s612405; RV32I-NEXT: or a5, s6, s412406; RV32I-NEXT: .LBB20_26:12407; RV32I-NEXT: li s4, 012408; RV32I-NEXT: li s8, 612409; RV32I-NEXT: sll s7, a1, a312410; RV32I-NEXT: beqz t4, .LBB20_2812411; RV32I-NEXT: # %bb.27:12412; RV32I-NEXT: mv s4, s712413; RV32I-NEXT: .LBB20_28:12414; RV32I-NEXT: srl s5, t3, t012415; RV32I-NEXT: beq t1, s8, .LBB20_3012416; RV32I-NEXT: # %bb.29:12417; RV32I-NEXT: mv s9, s512418; RV32I-NEXT: j .LBB20_3112419; RV32I-NEXT: .LBB20_30:12420; RV32I-NEXT: mv s9, s512421; RV32I-NEXT: or a5, s5, s412422; RV32I-NEXT: .LBB20_31:12423; RV32I-NEXT: li s5, 012424; RV32I-NEXT: li s6, 712425; RV32I-NEXT: sll s4, t2, a312426; RV32I-NEXT: beqz t4, .LBB20_3312427; RV32I-NEXT: # %bb.32:12428; RV32I-NEXT: mv s5, s412429; RV32I-NEXT: .LBB20_33:12430; RV32I-NEXT: srl a3, a1, t012431; RV32I-NEXT: bne t1, s6, .LBB20_3512432; RV32I-NEXT: # %bb.34:12433; RV32I-NEXT: or a5, a3, s512434; RV32I-NEXT: .LBB20_35:12435; RV32I-NEXT: li s5, 312436; RV32I-NEXT: mv s6, a312437; RV32I-NEXT: bnez t0, .LBB20_3912438; RV32I-NEXT: # %bb.36:12439; RV32I-NEXT: li a3, 012440; RV32I-NEXT: bnez t4, .LBB20_4012441; RV32I-NEXT: .LBB20_37:12442; RV32I-NEXT: beqz t1, .LBB20_4112443; RV32I-NEXT: .LBB20_38:12444; RV32I-NEXT: mv a5, t212445; RV32I-NEXT: j .LBB20_4212446; RV32I-NEXT: .LBB20_39:12447; RV32I-NEXT: sw a5, 12(sp) # 4-byte Folded Spill12448; RV32I-NEXT: li a3, 012449; RV32I-NEXT: beqz t4, .LBB20_3712450; RV32I-NEXT: .LBB20_40:12451; RV32I-NEXT: mv a3, s212452; RV32I-NEXT: bnez t1, .LBB20_3812453; RV32I-NEXT: .LBB20_41:12454; RV32I-NEXT: or a5, s3, a312455; RV32I-NEXT: .LBB20_42:12456; RV32I-NEXT: li s2, 112457; RV32I-NEXT: li s3, 212458; RV32I-NEXT: li a3, 012459; RV32I-NEXT: bnez t4, .LBB20_6112460; RV32I-NEXT: # %bb.43:12461; RV32I-NEXT: beq t1, s2, .LBB20_6212462; RV32I-NEXT: .LBB20_44:12463; RV32I-NEXT: li a3, 012464; RV32I-NEXT: bnez t4, .LBB20_6312465; RV32I-NEXT: .LBB20_45:12466; RV32I-NEXT: beq t1, s3, .LBB20_6412467; RV32I-NEXT: .LBB20_46:12468; RV32I-NEXT: li a3, 012469; RV32I-NEXT: bnez t4, .LBB20_6512470; RV32I-NEXT: .LBB20_47:12471; RV32I-NEXT: beq t1, s5, .LBB20_6612472; RV32I-NEXT: .LBB20_48:12473; RV32I-NEXT: li a3, 012474; RV32I-NEXT: bnez t4, .LBB20_6712475; RV32I-NEXT: .LBB20_49:12476; RV32I-NEXT: bne t1, s10, .LBB20_5112477; RV32I-NEXT: .LBB20_50:12478; RV32I-NEXT: or a5, ra, a312479; RV32I-NEXT: .LBB20_51:12480; RV32I-NEXT: li a3, 012481; RV32I-NEXT: li s10, 512482; RV32I-NEXT: bnez t4, .LBB20_6812483; RV32I-NEXT: # %bb.52:12484; RV32I-NEXT: beq t1, s10, .LBB20_6912485; RV32I-NEXT: .LBB20_53:12486; RV32I-NEXT: li a3, 012487; RV32I-NEXT: bnez t4, .LBB20_7012488; RV32I-NEXT: .LBB20_54:12489; RV32I-NEXT: bne t1, s8, .LBB20_5612490; RV32I-NEXT: .LBB20_55:12491; RV32I-NEXT: or a5, s6, a312492; RV32I-NEXT: .LBB20_56:12493; RV32I-NEXT: mv a3, t212494; RV32I-NEXT: li s8, 712495; RV32I-NEXT: bne t1, s8, .LBB20_7112496; RV32I-NEXT: # %bb.57:12497; RV32I-NEXT: bnez t0, .LBB20_7212498; RV32I-NEXT: .LBB20_58:12499; RV32I-NEXT: li a5, 012500; RV32I-NEXT: bnez t4, .LBB20_7312501; RV32I-NEXT: .LBB20_59:12502; RV32I-NEXT: beqz t1, .LBB20_7412503; RV32I-NEXT: .LBB20_60:12504; RV32I-NEXT: mv a5, t212505; RV32I-NEXT: j .LBB20_7512506; RV32I-NEXT: .LBB20_61:12507; RV32I-NEXT: mv a3, s012508; RV32I-NEXT: bne t1, s2, .LBB20_4412509; RV32I-NEXT: .LBB20_62:12510; RV32I-NEXT: or a5, s1, a312511; RV32I-NEXT: li a3, 012512; RV32I-NEXT: beqz t4, .LBB20_4512513; RV32I-NEXT: .LBB20_63:12514; RV32I-NEXT: mv a3, t512515; RV32I-NEXT: bne t1, s3, .LBB20_4612516; RV32I-NEXT: .LBB20_64:12517; RV32I-NEXT: or a5, t6, a312518; RV32I-NEXT: li a3, 012519; RV32I-NEXT: beqz t4, .LBB20_4712520; RV32I-NEXT: .LBB20_65:12521; RV32I-NEXT: mv a3, s1112522; RV32I-NEXT: bne t1, s5, .LBB20_4812523; RV32I-NEXT: .LBB20_66:12524; RV32I-NEXT: lw a5, 20(sp) # 4-byte Folded Reload12525; RV32I-NEXT: or a5, a5, a312526; RV32I-NEXT: li a3, 012527; RV32I-NEXT: beqz t4, .LBB20_4912528; RV32I-NEXT: .LBB20_67:12529; RV32I-NEXT: lw a3, 24(sp) # 4-byte Folded Reload12530; RV32I-NEXT: beq t1, s10, .LBB20_5012531; RV32I-NEXT: j .LBB20_5112532; RV32I-NEXT: .LBB20_68:12533; RV32I-NEXT: mv a3, s712534; RV32I-NEXT: bne t1, s10, .LBB20_5312535; RV32I-NEXT: .LBB20_69:12536; RV32I-NEXT: or a5, s9, a312537; RV32I-NEXT: li a3, 012538; RV32I-NEXT: beqz t4, .LBB20_5412539; RV32I-NEXT: .LBB20_70:12540; RV32I-NEXT: mv a3, s412541; RV32I-NEXT: beq t1, s8, .LBB20_5512542; RV32I-NEXT: j .LBB20_5612543; RV32I-NEXT: .LBB20_71:12544; RV32I-NEXT: mv a3, a512545; RV32I-NEXT: beqz t0, .LBB20_5812546; RV32I-NEXT: .LBB20_72:12547; RV32I-NEXT: sw a3, 16(sp) # 4-byte Folded Spill12548; RV32I-NEXT: li a5, 012549; RV32I-NEXT: beqz t4, .LBB20_5912550; RV32I-NEXT: .LBB20_73:12551; RV32I-NEXT: mv a5, s012552; RV32I-NEXT: bnez t1, .LBB20_6012553; RV32I-NEXT: .LBB20_74:12554; RV32I-NEXT: or a5, s1, a512555; RV32I-NEXT: .LBB20_75:12556; RV32I-NEXT: li s0, 412557; RV32I-NEXT: li s1, 612558; RV32I-NEXT: li a3, 012559; RV32I-NEXT: bnez t4, .LBB20_9112560; RV32I-NEXT: # %bb.76:12561; RV32I-NEXT: beq t1, s2, .LBB20_9212562; RV32I-NEXT: .LBB20_77:12563; RV32I-NEXT: li a3, 012564; RV32I-NEXT: bnez t4, .LBB20_9312565; RV32I-NEXT: .LBB20_78:12566; RV32I-NEXT: beq t1, s3, .LBB20_9412567; RV32I-NEXT: .LBB20_79:12568; RV32I-NEXT: li a3, 012569; RV32I-NEXT: bnez t4, .LBB20_9512570; RV32I-NEXT: .LBB20_80:12571; RV32I-NEXT: beq t1, s5, .LBB20_9612572; RV32I-NEXT: .LBB20_81:12573; RV32I-NEXT: li a3, 012574; RV32I-NEXT: bnez t4, .LBB20_9712575; RV32I-NEXT: .LBB20_82:12576; RV32I-NEXT: beq t1, s0, .LBB20_9812577; RV32I-NEXT: .LBB20_83:12578; RV32I-NEXT: li a3, 012579; RV32I-NEXT: bnez t4, .LBB20_9912580; RV32I-NEXT: .LBB20_84:12581; RV32I-NEXT: beq t1, s10, .LBB20_10012582; RV32I-NEXT: .LBB20_85:12583; RV32I-NEXT: mv a3, t212584; RV32I-NEXT: bne t1, s1, .LBB20_10112585; RV32I-NEXT: .LBB20_86:12586; RV32I-NEXT: mv a5, t212587; RV32I-NEXT: bne t1, s8, .LBB20_10212588; RV32I-NEXT: .LBB20_87:12589; RV32I-NEXT: bnez t0, .LBB20_10312590; RV32I-NEXT: .LBB20_88:12591; RV32I-NEXT: li a3, 012592; RV32I-NEXT: bnez t4, .LBB20_10412593; RV32I-NEXT: .LBB20_89:12594; RV32I-NEXT: beqz t1, .LBB20_10512595; RV32I-NEXT: .LBB20_90:12596; RV32I-NEXT: mv a5, t212597; RV32I-NEXT: li a3, 012598; RV32I-NEXT: bnez t4, .LBB20_10612599; RV32I-NEXT: j .LBB20_10712600; RV32I-NEXT: .LBB20_91:12601; RV32I-NEXT: mv a3, t512602; RV32I-NEXT: bne t1, s2, .LBB20_7712603; RV32I-NEXT: .LBB20_92:12604; RV32I-NEXT: or a5, t6, a312605; RV32I-NEXT: li a3, 012606; RV32I-NEXT: beqz t4, .LBB20_7812607; RV32I-NEXT: .LBB20_93:12608; RV32I-NEXT: mv a3, s1112609; RV32I-NEXT: bne t1, s3, .LBB20_7912610; RV32I-NEXT: .LBB20_94:12611; RV32I-NEXT: lw a5, 20(sp) # 4-byte Folded Reload12612; RV32I-NEXT: or a5, a5, a312613; RV32I-NEXT: li a3, 012614; RV32I-NEXT: beqz t4, .LBB20_8012615; RV32I-NEXT: .LBB20_95:12616; RV32I-NEXT: lw a3, 24(sp) # 4-byte Folded Reload12617; RV32I-NEXT: bne t1, s5, .LBB20_8112618; RV32I-NEXT: .LBB20_96:12619; RV32I-NEXT: or a5, ra, a312620; RV32I-NEXT: li a3, 012621; RV32I-NEXT: beqz t4, .LBB20_8212622; RV32I-NEXT: .LBB20_97:12623; RV32I-NEXT: mv a3, s712624; RV32I-NEXT: bne t1, s0, .LBB20_8312625; RV32I-NEXT: .LBB20_98:12626; RV32I-NEXT: or a5, s9, a312627; RV32I-NEXT: li a3, 012628; RV32I-NEXT: beqz t4, .LBB20_8412629; RV32I-NEXT: .LBB20_99:12630; RV32I-NEXT: mv a3, s412631; RV32I-NEXT: bne t1, s10, .LBB20_8512632; RV32I-NEXT: .LBB20_100:12633; RV32I-NEXT: or a5, s6, a312634; RV32I-NEXT: mv a3, t212635; RV32I-NEXT: beq t1, s1, .LBB20_8612636; RV32I-NEXT: .LBB20_101:12637; RV32I-NEXT: mv a3, a512638; RV32I-NEXT: mv a5, t212639; RV32I-NEXT: beq t1, s8, .LBB20_8712640; RV32I-NEXT: .LBB20_102:12641; RV32I-NEXT: mv a5, a312642; RV32I-NEXT: beqz t0, .LBB20_8812643; RV32I-NEXT: .LBB20_103:12644; RV32I-NEXT: mv a4, a512645; RV32I-NEXT: li a3, 012646; RV32I-NEXT: beqz t4, .LBB20_8912647; RV32I-NEXT: .LBB20_104:12648; RV32I-NEXT: mv a3, t512649; RV32I-NEXT: bnez t1, .LBB20_9012650; RV32I-NEXT: .LBB20_105:12651; RV32I-NEXT: or a5, t6, a312652; RV32I-NEXT: li a3, 012653; RV32I-NEXT: beqz t4, .LBB20_10712654; RV32I-NEXT: .LBB20_106:12655; RV32I-NEXT: mv a3, s1112656; RV32I-NEXT: .LBB20_107:12657; RV32I-NEXT: beq t1, s2, .LBB20_12112658; RV32I-NEXT: # %bb.108:12659; RV32I-NEXT: li a3, 012660; RV32I-NEXT: bnez t4, .LBB20_12212661; RV32I-NEXT: .LBB20_109:12662; RV32I-NEXT: beq t1, s3, .LBB20_12312663; RV32I-NEXT: .LBB20_110:12664; RV32I-NEXT: li a3, 012665; RV32I-NEXT: bnez t4, .LBB20_12412666; RV32I-NEXT: .LBB20_111:12667; RV32I-NEXT: beq t1, s5, .LBB20_12512668; RV32I-NEXT: .LBB20_112:12669; RV32I-NEXT: li a3, 012670; RV32I-NEXT: bnez t4, .LBB20_12612671; RV32I-NEXT: .LBB20_113:12672; RV32I-NEXT: beq t1, s0, .LBB20_12712673; RV32I-NEXT: .LBB20_114:12674; RV32I-NEXT: mv a3, t212675; RV32I-NEXT: bne t1, s10, .LBB20_12812676; RV32I-NEXT: .LBB20_115:12677; RV32I-NEXT: mv a5, t212678; RV32I-NEXT: bne t1, s1, .LBB20_12912679; RV32I-NEXT: .LBB20_116:12680; RV32I-NEXT: mv a3, t212681; RV32I-NEXT: bne t1, s8, .LBB20_13012682; RV32I-NEXT: .LBB20_117:12683; RV32I-NEXT: bnez t0, .LBB20_13112684; RV32I-NEXT: .LBB20_118:12685; RV32I-NEXT: li a3, 012686; RV32I-NEXT: bnez t4, .LBB20_13212687; RV32I-NEXT: .LBB20_119:12688; RV32I-NEXT: beqz t1, .LBB20_13312689; RV32I-NEXT: .LBB20_120:12690; RV32I-NEXT: mv a5, t212691; RV32I-NEXT: j .LBB20_13412692; RV32I-NEXT: .LBB20_121:12693; RV32I-NEXT: lw a5, 20(sp) # 4-byte Folded Reload12694; RV32I-NEXT: or a5, a5, a312695; RV32I-NEXT: li a3, 012696; RV32I-NEXT: beqz t4, .LBB20_10912697; RV32I-NEXT: .LBB20_122:12698; RV32I-NEXT: lw a3, 24(sp) # 4-byte Folded Reload12699; RV32I-NEXT: bne t1, s3, .LBB20_11012700; RV32I-NEXT: .LBB20_123:12701; RV32I-NEXT: or a5, ra, a312702; RV32I-NEXT: li a3, 012703; RV32I-NEXT: beqz t4, .LBB20_11112704; RV32I-NEXT: .LBB20_124:12705; RV32I-NEXT: mv a3, s712706; RV32I-NEXT: bne t1, s5, .LBB20_11212707; RV32I-NEXT: .LBB20_125:12708; RV32I-NEXT: or a5, s9, a312709; RV32I-NEXT: li a3, 012710; RV32I-NEXT: beqz t4, .LBB20_11312711; RV32I-NEXT: .LBB20_126:12712; RV32I-NEXT: mv a3, s412713; RV32I-NEXT: bne t1, s0, .LBB20_11412714; RV32I-NEXT: .LBB20_127:12715; RV32I-NEXT: or a5, s6, a312716; RV32I-NEXT: mv a3, t212717; RV32I-NEXT: beq t1, s10, .LBB20_11512718; RV32I-NEXT: .LBB20_128:12719; RV32I-NEXT: mv a3, a512720; RV32I-NEXT: mv a5, t212721; RV32I-NEXT: beq t1, s1, .LBB20_11612722; RV32I-NEXT: .LBB20_129:12723; RV32I-NEXT: mv a5, a312724; RV32I-NEXT: mv a3, t212725; RV32I-NEXT: beq t1, s8, .LBB20_11712726; RV32I-NEXT: .LBB20_130:12727; RV32I-NEXT: mv a3, a512728; RV32I-NEXT: beqz t0, .LBB20_11812729; RV32I-NEXT: .LBB20_131:12730; RV32I-NEXT: mv a6, a312731; RV32I-NEXT: li a3, 012732; RV32I-NEXT: beqz t4, .LBB20_11912733; RV32I-NEXT: .LBB20_132:12734; RV32I-NEXT: mv a3, s1112735; RV32I-NEXT: bnez t1, .LBB20_12012736; RV32I-NEXT: .LBB20_133:12737; RV32I-NEXT: lw a5, 20(sp) # 4-byte Folded Reload12738; RV32I-NEXT: or a5, a5, a312739; RV32I-NEXT: .LBB20_134:12740; RV32I-NEXT: lw s11, 16(sp) # 4-byte Folded Reload12741; RV32I-NEXT: li a3, 012742; RV32I-NEXT: bnez t4, .LBB20_14812743; RV32I-NEXT: # %bb.135:12744; RV32I-NEXT: beq t1, s2, .LBB20_14912745; RV32I-NEXT: .LBB20_136:12746; RV32I-NEXT: li a3, 012747; RV32I-NEXT: bnez t4, .LBB20_15012748; RV32I-NEXT: .LBB20_137:12749; RV32I-NEXT: beq t1, s3, .LBB20_15112750; RV32I-NEXT: .LBB20_138:12751; RV32I-NEXT: li a3, 012752; RV32I-NEXT: bnez t4, .LBB20_15212753; RV32I-NEXT: .LBB20_139:12754; RV32I-NEXT: beq t1, s5, .LBB20_15312755; RV32I-NEXT: .LBB20_140:12756; RV32I-NEXT: mv a3, t212757; RV32I-NEXT: bne t1, s0, .LBB20_15412758; RV32I-NEXT: .LBB20_141:12759; RV32I-NEXT: mv a5, t212760; RV32I-NEXT: bne t1, s10, .LBB20_15512761; RV32I-NEXT: .LBB20_142:12762; RV32I-NEXT: mv a3, t212763; RV32I-NEXT: bne t1, s1, .LBB20_15612764; RV32I-NEXT: .LBB20_143:12765; RV32I-NEXT: mv a5, t212766; RV32I-NEXT: bne t1, s8, .LBB20_15712767; RV32I-NEXT: .LBB20_144:12768; RV32I-NEXT: bnez t0, .LBB20_15812769; RV32I-NEXT: .LBB20_145:12770; RV32I-NEXT: li a3, 012771; RV32I-NEXT: bnez t4, .LBB20_15912772; RV32I-NEXT: .LBB20_146:12773; RV32I-NEXT: beqz t1, .LBB20_16012774; RV32I-NEXT: .LBB20_147:12775; RV32I-NEXT: mv a5, t212776; RV32I-NEXT: li a3, 012777; RV32I-NEXT: bnez t4, .LBB20_16112778; RV32I-NEXT: j .LBB20_16212779; RV32I-NEXT: .LBB20_148:12780; RV32I-NEXT: lw a3, 24(sp) # 4-byte Folded Reload12781; RV32I-NEXT: bne t1, s2, .LBB20_13612782; RV32I-NEXT: .LBB20_149:12783; RV32I-NEXT: or a5, ra, a312784; RV32I-NEXT: li a3, 012785; RV32I-NEXT: beqz t4, .LBB20_13712786; RV32I-NEXT: .LBB20_150:12787; RV32I-NEXT: mv a3, s712788; RV32I-NEXT: bne t1, s3, .LBB20_13812789; RV32I-NEXT: .LBB20_151:12790; RV32I-NEXT: or a5, s9, a312791; RV32I-NEXT: li a3, 012792; RV32I-NEXT: beqz t4, .LBB20_13912793; RV32I-NEXT: .LBB20_152:12794; RV32I-NEXT: mv a3, s412795; RV32I-NEXT: bne t1, s5, .LBB20_14012796; RV32I-NEXT: .LBB20_153:12797; RV32I-NEXT: or a5, s6, a312798; RV32I-NEXT: mv a3, t212799; RV32I-NEXT: beq t1, s0, .LBB20_14112800; RV32I-NEXT: .LBB20_154:12801; RV32I-NEXT: mv a3, a512802; RV32I-NEXT: mv a5, t212803; RV32I-NEXT: beq t1, s10, .LBB20_14212804; RV32I-NEXT: .LBB20_155:12805; RV32I-NEXT: mv a5, a312806; RV32I-NEXT: mv a3, t212807; RV32I-NEXT: beq t1, s1, .LBB20_14312808; RV32I-NEXT: .LBB20_156:12809; RV32I-NEXT: mv a3, a512810; RV32I-NEXT: mv a5, t212811; RV32I-NEXT: beq t1, s8, .LBB20_14412812; RV32I-NEXT: .LBB20_157:12813; RV32I-NEXT: mv a5, a312814; RV32I-NEXT: beqz t0, .LBB20_14512815; RV32I-NEXT: .LBB20_158:12816; RV32I-NEXT: mv a7, a512817; RV32I-NEXT: li a3, 012818; RV32I-NEXT: beqz t4, .LBB20_14612819; RV32I-NEXT: .LBB20_159:12820; RV32I-NEXT: lw a3, 24(sp) # 4-byte Folded Reload12821; RV32I-NEXT: bnez t1, .LBB20_14712822; RV32I-NEXT: .LBB20_160:12823; RV32I-NEXT: or a5, ra, a312824; RV32I-NEXT: li a3, 012825; RV32I-NEXT: beqz t4, .LBB20_16212826; RV32I-NEXT: .LBB20_161:12827; RV32I-NEXT: mv a3, s712828; RV32I-NEXT: .LBB20_162:12829; RV32I-NEXT: beq t1, s2, .LBB20_17412830; RV32I-NEXT: # %bb.163:12831; RV32I-NEXT: li a3, 012832; RV32I-NEXT: bnez t4, .LBB20_17512833; RV32I-NEXT: .LBB20_164:12834; RV32I-NEXT: beq t1, s3, .LBB20_17612835; RV32I-NEXT: .LBB20_165:12836; RV32I-NEXT: mv a3, t212837; RV32I-NEXT: bne t1, s5, .LBB20_17712838; RV32I-NEXT: .LBB20_166:12839; RV32I-NEXT: mv a5, t212840; RV32I-NEXT: bne t1, s0, .LBB20_17812841; RV32I-NEXT: .LBB20_167:12842; RV32I-NEXT: mv a3, t212843; RV32I-NEXT: bne t1, s10, .LBB20_17912844; RV32I-NEXT: .LBB20_168:12845; RV32I-NEXT: mv a5, t212846; RV32I-NEXT: bne t1, s1, .LBB20_18012847; RV32I-NEXT: .LBB20_169:12848; RV32I-NEXT: mv a3, t212849; RV32I-NEXT: bne t1, s8, .LBB20_18112850; RV32I-NEXT: .LBB20_170:12851; RV32I-NEXT: bnez t0, .LBB20_18212852; RV32I-NEXT: .LBB20_171:12853; RV32I-NEXT: li a3, 012854; RV32I-NEXT: bnez t4, .LBB20_18312855; RV32I-NEXT: .LBB20_172:12856; RV32I-NEXT: beqz t1, .LBB20_18412857; RV32I-NEXT: .LBB20_173:12858; RV32I-NEXT: mv a5, t212859; RV32I-NEXT: li a3, 012860; RV32I-NEXT: bnez t4, .LBB20_18512861; RV32I-NEXT: j .LBB20_18612862; RV32I-NEXT: .LBB20_174:12863; RV32I-NEXT: or a5, s9, a312864; RV32I-NEXT: li a3, 012865; RV32I-NEXT: beqz t4, .LBB20_16412866; RV32I-NEXT: .LBB20_175:12867; RV32I-NEXT: mv a3, s412868; RV32I-NEXT: bne t1, s3, .LBB20_16512869; RV32I-NEXT: .LBB20_176:12870; RV32I-NEXT: or a5, s6, a312871; RV32I-NEXT: mv a3, t212872; RV32I-NEXT: beq t1, s5, .LBB20_16612873; RV32I-NEXT: .LBB20_177:12874; RV32I-NEXT: mv a3, a512875; RV32I-NEXT: mv a5, t212876; RV32I-NEXT: beq t1, s0, .LBB20_16712877; RV32I-NEXT: .LBB20_178:12878; RV32I-NEXT: mv a5, a312879; RV32I-NEXT: mv a3, t212880; RV32I-NEXT: beq t1, s10, .LBB20_16812881; RV32I-NEXT: .LBB20_179:12882; RV32I-NEXT: mv a3, a512883; RV32I-NEXT: mv a5, t212884; RV32I-NEXT: beq t1, s1, .LBB20_16912885; RV32I-NEXT: .LBB20_180:12886; RV32I-NEXT: mv a5, a312887; RV32I-NEXT: mv a3, t212888; RV32I-NEXT: beq t1, s8, .LBB20_17012889; RV32I-NEXT: .LBB20_181:12890; RV32I-NEXT: mv a3, a512891; RV32I-NEXT: beqz t0, .LBB20_17112892; RV32I-NEXT: .LBB20_182:12893; RV32I-NEXT: mv a0, a312894; RV32I-NEXT: li a3, 012895; RV32I-NEXT: beqz t4, .LBB20_17212896; RV32I-NEXT: .LBB20_183:12897; RV32I-NEXT: mv a3, s712898; RV32I-NEXT: bnez t1, .LBB20_17312899; RV32I-NEXT: .LBB20_184:12900; RV32I-NEXT: or a5, s9, a312901; RV32I-NEXT: li a3, 012902; RV32I-NEXT: beqz t4, .LBB20_18612903; RV32I-NEXT: .LBB20_185:12904; RV32I-NEXT: mv a3, s412905; RV32I-NEXT: .LBB20_186:12906; RV32I-NEXT: beq t1, s2, .LBB20_19712907; RV32I-NEXT: # %bb.187:12908; RV32I-NEXT: mv a3, t212909; RV32I-NEXT: bne t1, s3, .LBB20_19812910; RV32I-NEXT: .LBB20_188:12911; RV32I-NEXT: mv a5, t212912; RV32I-NEXT: bne t1, s5, .LBB20_19912913; RV32I-NEXT: .LBB20_189:12914; RV32I-NEXT: mv a3, t212915; RV32I-NEXT: bne t1, s0, .LBB20_20012916; RV32I-NEXT: .LBB20_190:12917; RV32I-NEXT: mv a5, t212918; RV32I-NEXT: bne t1, s10, .LBB20_20112919; RV32I-NEXT: .LBB20_191:12920; RV32I-NEXT: mv a3, t212921; RV32I-NEXT: bne t1, s1, .LBB20_20212922; RV32I-NEXT: .LBB20_192:12923; RV32I-NEXT: mv a5, t212924; RV32I-NEXT: bne t1, s8, .LBB20_20312925; RV32I-NEXT: .LBB20_193:12926; RV32I-NEXT: bnez t0, .LBB20_20412927; RV32I-NEXT: .LBB20_194:12928; RV32I-NEXT: li a3, 012929; RV32I-NEXT: bnez t4, .LBB20_20512930; RV32I-NEXT: .LBB20_195:12931; RV32I-NEXT: beqz t1, .LBB20_20612932; RV32I-NEXT: .LBB20_196:12933; RV32I-NEXT: mv a3, t212934; RV32I-NEXT: mv a5, t212935; RV32I-NEXT: bne t1, s2, .LBB20_20712936; RV32I-NEXT: j .LBB20_20812937; RV32I-NEXT: .LBB20_197:12938; RV32I-NEXT: or a5, s6, a312939; RV32I-NEXT: mv a3, t212940; RV32I-NEXT: beq t1, s3, .LBB20_18812941; RV32I-NEXT: .LBB20_198:12942; RV32I-NEXT: mv a3, a512943; RV32I-NEXT: mv a5, t212944; RV32I-NEXT: beq t1, s5, .LBB20_18912945; RV32I-NEXT: .LBB20_199:12946; RV32I-NEXT: mv a5, a312947; RV32I-NEXT: mv a3, t212948; RV32I-NEXT: beq t1, s0, .LBB20_19012949; RV32I-NEXT: .LBB20_200:12950; RV32I-NEXT: mv a3, a512951; RV32I-NEXT: mv a5, t212952; RV32I-NEXT: beq t1, s10, .LBB20_19112953; RV32I-NEXT: .LBB20_201:12954; RV32I-NEXT: mv a5, a312955; RV32I-NEXT: mv a3, t212956; RV32I-NEXT: beq t1, s1, .LBB20_19212957; RV32I-NEXT: .LBB20_202:12958; RV32I-NEXT: mv a3, a512959; RV32I-NEXT: mv a5, t212960; RV32I-NEXT: beq t1, s8, .LBB20_19312961; RV32I-NEXT: .LBB20_203:12962; RV32I-NEXT: mv a5, a312963; RV32I-NEXT: beqz t0, .LBB20_19412964; RV32I-NEXT: .LBB20_204:12965; RV32I-NEXT: mv t3, a512966; RV32I-NEXT: li a3, 012967; RV32I-NEXT: beqz t4, .LBB20_19512968; RV32I-NEXT: .LBB20_205:12969; RV32I-NEXT: mv a3, s412970; RV32I-NEXT: bnez t1, .LBB20_19612971; RV32I-NEXT: .LBB20_206:12972; RV32I-NEXT: or a3, s6, a312973; RV32I-NEXT: mv a5, t212974; RV32I-NEXT: beq t1, s2, .LBB20_20812975; RV32I-NEXT: .LBB20_207:12976; RV32I-NEXT: mv a5, a312977; RV32I-NEXT: .LBB20_208:12978; RV32I-NEXT: mv a3, t212979; RV32I-NEXT: bne t1, s3, .LBB20_21712980; RV32I-NEXT: # %bb.209:12981; RV32I-NEXT: mv a5, t212982; RV32I-NEXT: bne t1, s5, .LBB20_21812983; RV32I-NEXT: .LBB20_210:12984; RV32I-NEXT: mv a3, t212985; RV32I-NEXT: bne t1, s0, .LBB20_21912986; RV32I-NEXT: .LBB20_211:12987; RV32I-NEXT: mv a5, t212988; RV32I-NEXT: bne t1, s10, .LBB20_22012989; RV32I-NEXT: .LBB20_212:12990; RV32I-NEXT: mv a3, t212991; RV32I-NEXT: bne t1, s1, .LBB20_22112992; RV32I-NEXT: .LBB20_213:12993; RV32I-NEXT: bne t1, s8, .LBB20_22212994; RV32I-NEXT: .LBB20_214:12995; RV32I-NEXT: beqz t0, .LBB20_21612996; RV32I-NEXT: .LBB20_215:12997; RV32I-NEXT: mv a1, t212998; RV32I-NEXT: .LBB20_216:12999; RV32I-NEXT: lw ra, 12(sp) # 4-byte Folded Reload13000; RV32I-NEXT: srli a5, ra, 1613001; RV32I-NEXT: lui t4, 1613002; RV32I-NEXT: srli t2, ra, 2413003; RV32I-NEXT: srli t0, s11, 1613004; RV32I-NEXT: srli t6, s11, 2413005; RV32I-NEXT: srli t1, a4, 1613006; RV32I-NEXT: srli s2, a4, 2413007; RV32I-NEXT: srli t5, a6, 1613008; RV32I-NEXT: srli s3, a6, 2413009; RV32I-NEXT: srli s1, a7, 1613010; RV32I-NEXT: srli a3, a7, 2413011; RV32I-NEXT: srli s0, a0, 1613012; RV32I-NEXT: srli s5, a0, 2413013; RV32I-NEXT: srli s4, t3, 1613014; RV32I-NEXT: srli s6, t3, 2413015; RV32I-NEXT: srli s7, a1, 1613016; RV32I-NEXT: srli s8, a1, 2413017; RV32I-NEXT: addi t4, t4, -113018; RV32I-NEXT: and s9, ra, t413019; RV32I-NEXT: and s10, s11, t413020; RV32I-NEXT: srli s9, s9, 813021; RV32I-NEXT: sb ra, 0(a2)13022; RV32I-NEXT: sb s9, 1(a2)13023; RV32I-NEXT: sb a5, 2(a2)13024; RV32I-NEXT: sb t2, 3(a2)13025; RV32I-NEXT: and a5, a4, t413026; RV32I-NEXT: srli t2, s10, 813027; RV32I-NEXT: sb s11, 4(a2)13028; RV32I-NEXT: sb t2, 5(a2)13029; RV32I-NEXT: sb t0, 6(a2)13030; RV32I-NEXT: sb t6, 7(a2)13031; RV32I-NEXT: and t0, a6, t413032; RV32I-NEXT: srli a5, a5, 813033; RV32I-NEXT: sb a4, 8(a2)13034; RV32I-NEXT: sb a5, 9(a2)13035; RV32I-NEXT: sb t1, 10(a2)13036; RV32I-NEXT: sb s2, 11(a2)13037; RV32I-NEXT: and a4, a7, t413038; RV32I-NEXT: srli a5, t0, 813039; RV32I-NEXT: sb a6, 12(a2)13040; RV32I-NEXT: sb a5, 13(a2)13041; RV32I-NEXT: sb t5, 14(a2)13042; RV32I-NEXT: sb s3, 15(a2)13043; RV32I-NEXT: and a5, a0, t413044; RV32I-NEXT: srli a4, a4, 813045; RV32I-NEXT: sb a7, 16(a2)13046; RV32I-NEXT: sb a4, 17(a2)13047; RV32I-NEXT: sb s1, 18(a2)13048; RV32I-NEXT: sb a3, 19(a2)13049; RV32I-NEXT: and a3, t3, t413050; RV32I-NEXT: and a4, a1, t413051; RV32I-NEXT: srli a5, a5, 813052; RV32I-NEXT: srli a3, a3, 813053; RV32I-NEXT: srli a4, a4, 813054; RV32I-NEXT: sb a0, 20(a2)13055; RV32I-NEXT: sb a5, 21(a2)13056; RV32I-NEXT: sb s0, 22(a2)13057; RV32I-NEXT: sb s5, 23(a2)13058; RV32I-NEXT: sb t3, 24(a2)13059; RV32I-NEXT: sb a3, 25(a2)13060; RV32I-NEXT: sb s4, 26(a2)13061; RV32I-NEXT: sb s6, 27(a2)13062; RV32I-NEXT: sb a1, 28(a2)13063; RV32I-NEXT: sb a4, 29(a2)13064; RV32I-NEXT: sb s7, 30(a2)13065; RV32I-NEXT: sb s8, 31(a2)13066; RV32I-NEXT: lw ra, 76(sp) # 4-byte Folded Reload13067; RV32I-NEXT: lw s0, 72(sp) # 4-byte Folded Reload13068; RV32I-NEXT: lw s1, 68(sp) # 4-byte Folded Reload13069; RV32I-NEXT: lw s2, 64(sp) # 4-byte Folded Reload13070; RV32I-NEXT: lw s3, 60(sp) # 4-byte Folded Reload13071; RV32I-NEXT: lw s4, 56(sp) # 4-byte Folded Reload13072; RV32I-NEXT: lw s5, 52(sp) # 4-byte Folded Reload13073; RV32I-NEXT: lw s6, 48(sp) # 4-byte Folded Reload13074; RV32I-NEXT: lw s7, 44(sp) # 4-byte Folded Reload13075; RV32I-NEXT: lw s8, 40(sp) # 4-byte Folded Reload13076; RV32I-NEXT: lw s9, 36(sp) # 4-byte Folded Reload13077; RV32I-NEXT: lw s10, 32(sp) # 4-byte Folded Reload13078; RV32I-NEXT: lw s11, 28(sp) # 4-byte Folded Reload13079; RV32I-NEXT: addi sp, sp, 8013080; RV32I-NEXT: ret13081; RV32I-NEXT: .LBB20_217:13082; RV32I-NEXT: mv a3, a513083; RV32I-NEXT: mv a5, t213084; RV32I-NEXT: beq t1, s5, .LBB20_21013085; RV32I-NEXT: .LBB20_218:13086; RV32I-NEXT: mv a5, a313087; RV32I-NEXT: mv a3, t213088; RV32I-NEXT: beq t1, s0, .LBB20_21113089; RV32I-NEXT: .LBB20_219:13090; RV32I-NEXT: mv a3, a513091; RV32I-NEXT: mv a5, t213092; RV32I-NEXT: beq t1, s10, .LBB20_21213093; RV32I-NEXT: .LBB20_220:13094; RV32I-NEXT: mv a5, a313095; RV32I-NEXT: mv a3, t213096; RV32I-NEXT: beq t1, s1, .LBB20_21313097; RV32I-NEXT: .LBB20_221:13098; RV32I-NEXT: mv a3, a513099; RV32I-NEXT: beq t1, s8, .LBB20_21413100; RV32I-NEXT: .LBB20_222:13101; RV32I-NEXT: mv t2, a313102; RV32I-NEXT: bnez t0, .LBB20_21513103; RV32I-NEXT: j .LBB20_21613104 %src = load i256, ptr %src.ptr, align 113105 %dwordOff = load i256, ptr %dwordOff.ptr, align 113106 %bitOff = shl i256 %dwordOff, 613107 %res = ashr i256 %src, %bitOff13108 store i256 %res, ptr %dst, align 113109 ret void13110}13111