@@ -13,8 +13,7 @@ declare void @use_i32(i32)
1313define i32 @select_ult_shl_clamp_and_i32 (i32 %a0 , i32 %a1 , i32 %a2 ) {
1414; CHECK-LABEL: @select_ult_shl_clamp_and_i32(
1515; CHECK-NEXT: [[C:%.*]] = icmp ult i32 [[A1:%.*]], 32
16- ; CHECK-NEXT: [[M:%.*]] = and i32 [[A1]], 31
17- ; CHECK-NEXT: [[TMP1:%.*]] = shl i32 [[A0:%.*]], [[M]]
16+ ; CHECK-NEXT: [[TMP1:%.*]] = shl i32 [[A0:%.*]], [[A1]]
1817; CHECK-NEXT: [[R:%.*]] = select i1 [[C]], i32 [[TMP1]], i32 [[A2:%.*]]
1918; CHECK-NEXT: ret i32 [[R]]
2019;
@@ -28,8 +27,7 @@ define i32 @select_ult_shl_clamp_and_i32(i32 %a0, i32 %a1, i32 %a2) {
2827define i32 @select_ule_ashr_clamp_and_i32 (i32 %a0 , i32 %a1 , i32 %a2 ) {
2928; CHECK-LABEL: @select_ule_ashr_clamp_and_i32(
3029; CHECK-NEXT: [[C:%.*]] = icmp ult i32 [[A1:%.*]], 32
31- ; CHECK-NEXT: [[M:%.*]] = and i32 [[A1]], 127
32- ; CHECK-NEXT: [[TMP1:%.*]] = ashr i32 [[A0:%.*]], [[M]]
30+ ; CHECK-NEXT: [[TMP1:%.*]] = ashr i32 [[A0:%.*]], [[A1]]
3331; CHECK-NEXT: [[R:%.*]] = select i1 [[C]], i32 [[TMP1]], i32 [[A2:%.*]]
3432; CHECK-NEXT: ret i32 [[R]]
3533;
@@ -43,8 +41,7 @@ define i32 @select_ule_ashr_clamp_and_i32(i32 %a0, i32 %a1, i32 %a2) {
4341define i32 @select_ugt_lshr_clamp_and_i32 (i32 %a0 , i32 %a1 , i32 %a2 ) {
4442; CHECK-LABEL: @select_ugt_lshr_clamp_and_i32(
4543; CHECK-NEXT: [[C:%.*]] = icmp ugt i32 [[A1:%.*]], 31
46- ; CHECK-NEXT: [[M:%.*]] = and i32 [[A1]], 31
47- ; CHECK-NEXT: [[TMP1:%.*]] = lshr i32 [[A0:%.*]], [[M]]
44+ ; CHECK-NEXT: [[TMP1:%.*]] = lshr i32 [[A0:%.*]], [[A1]]
4845; CHECK-NEXT: [[R:%.*]] = select i1 [[C]], i32 [[A2:%.*]], i32 [[TMP1]]
4946; CHECK-NEXT: ret i32 [[R]]
5047;
@@ -58,8 +55,7 @@ define i32 @select_ugt_lshr_clamp_and_i32(i32 %a0, i32 %a1, i32 %a2) {
5855define i32 @select_uge_shl_clamp_and_i32 (i32 %a0 , i32 %a1 , i32 %a2 ) {
5956; CHECK-LABEL: @select_uge_shl_clamp_and_i32(
6057; CHECK-NEXT: [[C:%.*]] = icmp ugt i32 [[A1:%.*]], 31
61- ; CHECK-NEXT: [[M:%.*]] = and i32 [[A1]], 63
62- ; CHECK-NEXT: [[TMP1:%.*]] = shl i32 [[A0:%.*]], [[M]]
58+ ; CHECK-NEXT: [[TMP1:%.*]] = shl i32 [[A0:%.*]], [[A1]]
6359; CHECK-NEXT: [[R:%.*]] = select i1 [[C]], i32 [[A2:%.*]], i32 [[TMP1]]
6460; CHECK-NEXT: ret i32 [[R]]
6561;
@@ -129,8 +125,7 @@ define i17 @select_uge_lshr_clamp_and_i17_nonpow2(i17 %a0, i17 %a1, i17 %a2) {
129125define i32 @select_ult_shl_clamp_umin_i32 (i32 %a0 , i32 %a1 , i32 %a2 ) {
130126; CHECK-LABEL: @select_ult_shl_clamp_umin_i32(
131127; CHECK-NEXT: [[C:%.*]] = icmp ult i32 [[A1:%.*]], 32
132- ; CHECK-NEXT: [[M:%.*]] = call i32 @llvm.umin.i32(i32 [[A1]], i32 31)
133- ; CHECK-NEXT: [[TMP1:%.*]] = shl i32 [[A0:%.*]], [[M]]
128+ ; CHECK-NEXT: [[TMP1:%.*]] = shl i32 [[A0:%.*]], [[A1]]
134129; CHECK-NEXT: [[R:%.*]] = select i1 [[C]], i32 [[TMP1]], i32 [[A2:%.*]]
135130; CHECK-NEXT: ret i32 [[R]]
136131;
@@ -144,8 +139,7 @@ define i32 @select_ult_shl_clamp_umin_i32(i32 %a0, i32 %a1, i32 %a2) {
144139define i17 @select_ule_ashr_clamp_umin_i17 (i17 %a0 , i17 %a1 , i17 %a2 ) {
145140; CHECK-LABEL: @select_ule_ashr_clamp_umin_i17(
146141; CHECK-NEXT: [[C:%.*]] = icmp ult i17 [[A1:%.*]], 17
147- ; CHECK-NEXT: [[M:%.*]] = call i17 @llvm.umin.i17(i17 [[A1]], i17 17)
148- ; CHECK-NEXT: [[TMP1:%.*]] = ashr i17 [[A0:%.*]], [[M]]
142+ ; CHECK-NEXT: [[TMP1:%.*]] = ashr i17 [[A0:%.*]], [[A1]]
149143; CHECK-NEXT: [[R:%.*]] = select i1 [[C]], i17 [[TMP1]], i17 [[A2:%.*]]
150144; CHECK-NEXT: ret i17 [[R]]
151145;
@@ -159,8 +153,7 @@ define i17 @select_ule_ashr_clamp_umin_i17(i17 %a0, i17 %a1, i17 %a2) {
159153define i32 @select_ugt_shl_clamp_umin_i32 (i32 %a0 , i32 %a1 , i32 %a2 ) {
160154; CHECK-LABEL: @select_ugt_shl_clamp_umin_i32(
161155; CHECK-NEXT: [[C:%.*]] = icmp ugt i32 [[A1:%.*]], 31
162- ; CHECK-NEXT: [[M:%.*]] = call i32 @llvm.umin.i32(i32 [[A1]], i32 128)
163- ; CHECK-NEXT: [[S:%.*]] = shl i32 [[A0:%.*]], [[M]]
156+ ; CHECK-NEXT: [[S:%.*]] = shl i32 [[A0:%.*]], [[A1]]
164157; CHECK-NEXT: [[R:%.*]] = select i1 [[C]], i32 [[A2:%.*]], i32 [[S]]
165158; CHECK-NEXT: ret i32 [[R]]
166159;
@@ -174,8 +167,7 @@ define i32 @select_ugt_shl_clamp_umin_i32(i32 %a0, i32 %a1, i32 %a2) {
174167define <2 x i32 > @select_uge_lshr_clamp_umin_v2i32 (<2 x i32 > %a0 , <2 x i32 > %a1 , <2 x i32 > %a2 ) {
175168; CHECK-LABEL: @select_uge_lshr_clamp_umin_v2i32(
176169; CHECK-NEXT: [[C:%.*]] = icmp ugt <2 x i32> [[A1:%.*]], <i32 31, i32 31>
177- ; CHECK-NEXT: [[M:%.*]] = call <2 x i32> @llvm.umin.v2i32(<2 x i32> [[A1]], <2 x i32> <i32 63, i32 31>)
178- ; CHECK-NEXT: [[S:%.*]] = lshr <2 x i32> [[A0:%.*]], [[M]]
170+ ; CHECK-NEXT: [[S:%.*]] = lshr <2 x i32> [[A0:%.*]], [[A1]]
179171; CHECK-NEXT: [[R:%.*]] = select <2 x i1> [[C]], <2 x i32> [[A2:%.*]], <2 x i32> [[S]]
180172; CHECK-NEXT: ret <2 x i32> [[R]]
181173;
@@ -223,8 +215,7 @@ define i17 @select_uge_lshr_clamp_umin_i17_badlimit(i17 %a0, i17 %a1, i17 %a2) {
223215define range(i64 0 , -9223372036854775807 ) <4 x i64 > @PR109888 (<4 x i64 > %0 ) {
224216; CHECK-LABEL: @PR109888(
225217; CHECK-NEXT: [[C:%.*]] = icmp ult <4 x i64> [[TMP0:%.*]], <i64 64, i64 64, i64 64, i64 64>
226- ; CHECK-NEXT: [[M:%.*]] = and <4 x i64> [[TMP0]], <i64 63, i64 63, i64 63, i64 63>
227- ; CHECK-NEXT: [[TMP2:%.*]] = shl nuw <4 x i64> <i64 1, i64 1, i64 1, i64 1>, [[M]]
218+ ; CHECK-NEXT: [[TMP2:%.*]] = shl nuw <4 x i64> <i64 1, i64 1, i64 1, i64 1>, [[TMP0]]
228219; CHECK-NEXT: [[R:%.*]] = select <4 x i1> [[C]], <4 x i64> [[TMP2]], <4 x i64> zeroinitializer
229220; CHECK-NEXT: ret <4 x i64> [[R]]
230221;
0 commit comments