173 lines · plain
1; RUN: llc < %s -mtriple=ve-unknown-unknown | FileCheck %s2 3define signext i8 @func1(i8 signext %0, i8 signext %1) {4; CHECK-LABEL: func1:5; CHECK: # %bb.0:6; CHECK-NEXT: sra.w.sx %s0, %s0, %s17; CHECK-NEXT: adds.w.sx %s0, %s0, (0)18; CHECK-NEXT: b.l.t (, %s10)9 %3 = sext i8 %0 to i3210 %4 = sext i8 %1 to i3211 %5 = ashr i32 %3, %412 %6 = trunc i32 %5 to i813 ret i8 %614}15 16define signext i16 @func2(i16 signext %0, i16 signext %1) {17; CHECK-LABEL: func2:18; CHECK: # %bb.0:19; CHECK-NEXT: sra.w.sx %s0, %s0, %s120; CHECK-NEXT: adds.w.sx %s0, %s0, (0)121; CHECK-NEXT: b.l.t (, %s10)22 %3 = sext i16 %0 to i3223 %4 = sext i16 %1 to i3224 %5 = ashr i32 %3, %425 %6 = trunc i32 %5 to i1626 ret i16 %627}28 29define i32 @func3(i32 %0, i32 %1) {30; CHECK-LABEL: func3:31; CHECK: # %bb.0:32; CHECK-NEXT: sra.w.sx %s0, %s0, %s133; CHECK-NEXT: b.l.t (, %s10)34 %3 = ashr i32 %0, %135 ret i32 %336}37 38define i64 @func4(i64 %0, i64 %1) {39; CHECK-LABEL: func4:40; CHECK: # %bb.0:41; CHECK-NEXT: sra.l %s0, %s0, %s142; CHECK-NEXT: b.l.t (, %s10)43 %3 = ashr i64 %0, %144 ret i64 %345}46 47define zeroext i8 @func7(i8 zeroext %0, i8 zeroext %1) {48; CHECK-LABEL: func7:49; CHECK: # %bb.0:50; CHECK-NEXT: and %s0, %s0, (32)051; CHECK-NEXT: srl %s0, %s0, %s152; CHECK-NEXT: adds.w.zx %s0, %s0, (0)153; CHECK-NEXT: b.l.t (, %s10)54 %3 = zext i8 %0 to i3255 %4 = zext i8 %1 to i3256 %5 = lshr i32 %3, %457 %6 = trunc i32 %5 to i858 ret i8 %659}60 61define zeroext i16 @func8(i16 zeroext %0, i16 zeroext %1) {62; CHECK-LABEL: func8:63; CHECK: # %bb.0:64; CHECK-NEXT: and %s0, %s0, (32)065; CHECK-NEXT: srl %s0, %s0, %s166; CHECK-NEXT: adds.w.zx %s0, %s0, (0)167; CHECK-NEXT: b.l.t (, %s10)68 %3 = zext i16 %0 to i3269 %4 = zext i16 %1 to i3270 %5 = lshr i32 %3, %471 %6 = trunc i32 %5 to i1672 ret i16 %673}74 75define i32 @func9(i32 %0, i32 %1) {76; CHECK-LABEL: func9:77; CHECK: # %bb.0:78; CHECK-NEXT: and %s0, %s0, (32)079; CHECK-NEXT: srl %s0, %s0, %s180; CHECK-NEXT: b.l.t (, %s10)81 %3 = lshr i32 %0, %182 ret i32 %383}84 85define i64 @func10(i64 %0, i64 %1) {86; CHECK-LABEL: func10:87; CHECK: # %bb.0:88; CHECK-NEXT: srl %s0, %s0, %s189; CHECK-NEXT: b.l.t (, %s10)90 %3 = lshr i64 %0, %191 ret i64 %392}93 94define signext i8 @func12(i8 signext %0) {95; CHECK-LABEL: func12:96; CHECK: # %bb.0:97; CHECK-NEXT: sra.w.sx %s0, %s0, 598; CHECK-NEXT: adds.w.sx %s0, %s0, (0)199; CHECK-NEXT: b.l.t (, %s10)100 %2 = ashr i8 %0, 5101 ret i8 %2102}103 104define signext i16 @func13(i16 signext %0) {105; CHECK-LABEL: func13:106; CHECK: # %bb.0:107; CHECK-NEXT: sra.w.sx %s0, %s0, 5108; CHECK-NEXT: adds.w.sx %s0, %s0, (0)1109; CHECK-NEXT: b.l.t (, %s10)110 %2 = ashr i16 %0, 5111 ret i16 %2112}113 114define i32 @func14(i32 %0) {115; CHECK-LABEL: func14:116; CHECK: # %bb.0:117; CHECK-NEXT: sra.w.sx %s0, %s0, 5118; CHECK-NEXT: b.l.t (, %s10)119 %2 = ashr i32 %0, 5120 ret i32 %2121}122 123define i64 @func15(i64 %0) {124; CHECK-LABEL: func15:125; CHECK: # %bb.0:126; CHECK-NEXT: sra.l %s0, %s0, 5127; CHECK-NEXT: b.l.t (, %s10)128 %2 = ashr i64 %0, 5129 ret i64 %2130}131 132define zeroext i8 @func17(i8 zeroext %0) {133; CHECK-LABEL: func17:134; CHECK: # %bb.0:135; CHECK-NEXT: and %s0, %s0, (32)0136; CHECK-NEXT: srl %s0, %s0, 5137; CHECK-NEXT: adds.w.zx %s0, %s0, (0)1138; CHECK-NEXT: b.l.t (, %s10)139 %2 = lshr i8 %0, 5140 ret i8 %2141}142 143define zeroext i16 @func18(i16 zeroext %0) {144; CHECK-LABEL: func18:145; CHECK: # %bb.0:146; CHECK-NEXT: and %s0, %s0, (32)0147; CHECK-NEXT: srl %s0, %s0, 5148; CHECK-NEXT: adds.w.zx %s0, %s0, (0)1149; CHECK-NEXT: b.l.t (, %s10)150 %2 = lshr i16 %0, 5151 ret i16 %2152}153 154define i32 @func19(i32 %0) {155; CHECK-LABEL: func19:156; CHECK: # %bb.0:157; CHECK-NEXT: and %s0, %s0, (32)0158; CHECK-NEXT: srl %s0, %s0, 5159; CHECK-NEXT: b.l.t (, %s10)160 %2 = lshr i32 %0, 5161 ret i32 %2162}163 164define i64 @func20(i64 %0) {165; CHECK-LABEL: func20:166; CHECK: # %bb.0:167; CHECK-NEXT: srl %s0, %s0, 5168; CHECK-NEXT: b.l.t (, %s10)169 %2 = lshr i64 %0, 5170 ret i64 %2171}172 173