@@ -228,11 +228,8 @@ define i32 @select_icmp_and_8_ne_0_and_not_8_alt(i32 %x) {
228228
229229define i32 @select_icmp_trunc_8_ne_0_or_128 (i32 %x ) {
230230; CHECK-LABEL: @select_icmp_trunc_8_ne_0_or_128(
231- ; CHECK-NEXT: [[TRUNC:%.*]] = trunc i32 %x to i8
232- ; CHECK-NEXT: [[CMP:%.*]] = icmp sgt i8 [[TRUNC]], -1
233231; CHECK-NEXT: [[OR:%.*]] = or i32 %x, 128
234- ; CHECK-NEXT: [[SEL:%.*]] = select i1 [[CMP]], i32 [[OR]], i32 %x
235- ; CHECK-NEXT: ret i32 [[SEL]]
232+ ; CHECK-NEXT: ret i32 [[OR]]
236233;
237234 %trunc = trunc i32 %x to i8
238235 %cmp = icmp sgt i8 %trunc , -1
@@ -243,11 +240,8 @@ define i32 @select_icmp_trunc_8_ne_0_or_128(i32 %x) {
243240
244241define i32 @select_icmp_trunc_8_ne_0_or_128_alt (i32 %x ) {
245242; CHECK-LABEL: @select_icmp_trunc_8_ne_0_or_128_alt(
246- ; CHECK-NEXT: [[TRUNC:%.*]] = trunc i32 %x to i8
247- ; CHECK-NEXT: [[CMP:%.*]] = icmp slt i8 [[TRUNC]], 0
248243; CHECK-NEXT: [[OR:%.*]] = or i32 %x, 128
249- ; CHECK-NEXT: [[SEL:%.*]] = select i1 [[CMP]], i32 %x, i32 [[OR]]
250- ; CHECK-NEXT: ret i32 [[SEL]]
244+ ; CHECK-NEXT: ret i32 [[OR]]
251245;
252246 %trunc = trunc i32 %x to i8
253247 %cmp = icmp slt i8 %trunc , 0
@@ -258,11 +252,7 @@ define i32 @select_icmp_trunc_8_ne_0_or_128_alt(i32 %x) {
258252
259253define i32 @select_icmp_trunc_8_eq_0_or_128 (i32 %x ) {
260254; CHECK-LABEL: @select_icmp_trunc_8_eq_0_or_128(
261- ; CHECK-NEXT: [[TRUNC:%.*]] = trunc i32 %x to i8
262- ; CHECK-NEXT: [[CMP:%.*]] = icmp slt i8 [[TRUNC]], 0
263- ; CHECK-NEXT: [[OR:%.*]] = or i32 %x, 128
264- ; CHECK-NEXT: [[SEL:%.*]] = select i1 [[CMP]], i32 [[OR]], i32 %x
265- ; CHECK-NEXT: ret i32 [[SEL]]
255+ ; CHECK-NEXT: ret i32 %x
266256;
267257 %trunc = trunc i32 %x to i8
268258 %cmp = icmp slt i8 %trunc , 0
@@ -273,11 +263,7 @@ define i32 @select_icmp_trunc_8_eq_0_or_128(i32 %x) {
273263
274264define i32 @select_icmp_trunc_8_eq_0_or_128_alt (i32 %x ) {
275265; CHECK-LABEL: @select_icmp_trunc_8_eq_0_or_128_alt(
276- ; CHECK-NEXT: [[TRUNC:%.*]] = trunc i32 %x to i8
277- ; CHECK-NEXT: [[CMP:%.*]] = icmp sgt i8 [[TRUNC]], -1
278- ; CHECK-NEXT: [[OR:%.*]] = or i32 %x, 128
279- ; CHECK-NEXT: [[SEL:%.*]] = select i1 [[CMP]], i32 %x, i32 [[OR]]
280- ; CHECK-NEXT: ret i32 [[SEL]]
266+ ; CHECK-NEXT: ret i32 %x
281267;
282268 %trunc = trunc i32 %x to i8
283269 %cmp = icmp sgt i8 %trunc , -1
@@ -288,11 +274,8 @@ define i32 @select_icmp_trunc_8_eq_0_or_128_alt(i32 %x) {
288274
289275define i32 @select_icmp_trunc_8_eq_0_and_not_8 (i32 %x ) {
290276; CHECK-LABEL: @select_icmp_trunc_8_eq_0_and_not_8(
291- ; CHECK-NEXT: [[TRUNC:%.*]] = trunc i32 %x to i4
292- ; CHECK-NEXT: [[CMP:%.*]] = icmp sgt i4 [[TRUNC]], -1
293277; CHECK-NEXT: [[AND:%.*]] = and i32 %x, -9
294- ; CHECK-NEXT: [[SEL:%.*]] = select i1 [[CMP]], i32 %x, i32 [[AND]]
295- ; CHECK-NEXT: ret i32 [[SEL]]
278+ ; CHECK-NEXT: ret i32 [[AND]]
296279;
297280 %trunc = trunc i32 %x to i4
298281 %cmp = icmp sgt i4 %trunc , -1
@@ -303,11 +286,8 @@ define i32 @select_icmp_trunc_8_eq_0_and_not_8(i32 %x) {
303286
304287define i32 @select_icmp_trunc_8_eq_0_and_not_8_alt (i32 %x ) {
305288; CHECK-LABEL: @select_icmp_trunc_8_eq_0_and_not_8_alt(
306- ; CHECK-NEXT: [[TRUNC:%.*]] = trunc i32 %x to i4
307- ; CHECK-NEXT: [[CMP:%.*]] = icmp slt i4 [[TRUNC]], 0
308289; CHECK-NEXT: [[AND:%.*]] = and i32 %x, -9
309- ; CHECK-NEXT: [[SEL:%.*]] = select i1 [[CMP]], i32 [[AND]], i32 %x
310- ; CHECK-NEXT: ret i32 [[SEL]]
290+ ; CHECK-NEXT: ret i32 [[AND]]
311291;
312292 %trunc = trunc i32 %x to i4
313293 %cmp = icmp slt i4 %trunc , 0
@@ -318,11 +298,7 @@ define i32 @select_icmp_trunc_8_eq_0_and_not_8_alt(i32 %x) {
318298
319299define i32 @select_icmp_trunc_8_ne_0_and_not_8 (i32 %x ) {
320300; CHECK-LABEL: @select_icmp_trunc_8_ne_0_and_not_8(
321- ; CHECK-NEXT: [[TRUNC:%.*]] = trunc i32 %x to i4
322- ; CHECK-NEXT: [[CMP:%.*]] = icmp slt i4 [[TRUNC]], 0
323- ; CHECK-NEXT: [[AND:%.*]] = and i32 %x, -9
324- ; CHECK-NEXT: [[SEL:%.*]] = select i1 [[CMP]], i32 %x, i32 [[AND]]
325- ; CHECK-NEXT: ret i32 [[SEL]]
301+ ; CHECK-NEXT: ret i32 %x
326302;
327303 %trunc = trunc i32 %x to i4
328304 %cmp = icmp slt i4 %trunc , 0
@@ -333,11 +309,7 @@ define i32 @select_icmp_trunc_8_ne_0_and_not_8(i32 %x) {
333309
334310define i32 @select_icmp_trunc_8_ne_0_and_not_8_alt (i32 %x ) {
335311; CHECK-LABEL: @select_icmp_trunc_8_ne_0_and_not_8_alt(
336- ; CHECK-NEXT: [[TRUNC:%.*]] = trunc i32 %x to i4
337- ; CHECK-NEXT: [[CMP:%.*]] = icmp sgt i4 [[TRUNC]], -1
338- ; CHECK-NEXT: [[AND:%.*]] = and i32 %x, -9
339- ; CHECK-NEXT: [[SEL:%.*]] = select i1 [[CMP]], i32 [[AND]], i32 %x
340- ; CHECK-NEXT: ret i32 [[SEL]]
312+ ; CHECK-NEXT: ret i32 %x
341313;
342314 %trunc = trunc i32 %x to i4
343315 %cmp = icmp sgt i4 %trunc , -1
@@ -361,11 +333,7 @@ define <2 x i32> @select_icmp_and_8_ne_0_and_not_8_vec(<2 x i32> %x) {
361333
362334define <2 x i32 > @select_icmp_trunc_8_ne_0_and_not_8_alt_vec (<2 x i32 > %x ) {
363335; CHECK-LABEL: @select_icmp_trunc_8_ne_0_and_not_8_alt_vec(
364- ; CHECK-NEXT: [[TRUNC:%.*]] = trunc <2 x i32> %x to <2 x i4>
365- ; CHECK-NEXT: [[CMP:%.*]] = icmp sgt <2 x i4> [[TRUNC]], <i4 -1, i4 -1>
366- ; CHECK-NEXT: [[AND:%.*]] = and <2 x i32> %x, <i32 -9, i32 -9>
367- ; CHECK-NEXT: [[SEL:%.*]] = select <2 x i1> [[CMP]], <2 x i32> [[AND]], <2 x i32> %x
368- ; CHECK-NEXT: ret <2 x i32> [[SEL]]
336+ ; CHECK-NEXT: ret <2 x i32> %x
369337;
370338 %trunc = trunc <2 x i32 > %x to <2 x i4 >
371339 %cmp = icmp sgt <2 x i4 > %trunc , <i4 -1 , i4 -1 >
0 commit comments