Index: test/Transforms/InstCombine/apint-select.ll =================================================================== --- test/Transforms/InstCombine/apint-select.ll +++ test/Transforms/InstCombine/apint-select.ll @@ -7,11 +7,18 @@ define i41 @test1(i1 %C) { %V = select i1 %C, i41 1, i41 0 ; V = C ret i41 %V +; CHECK-LABEL: @test1( +; CHECK-NEXT: %V = zext i1 %C to i41 +; CHECK-NEXT: ret i41 %V } define i999 @test2(i1 %C) { %V = select i1 %C, i999 0, i999 1 ; V = C ret i999 %V +; CHECK-LABEL: @test2( +; CHECK-NEXT: %1 = zext i1 %C to i999 +; CHECK-NEXT: %V = xor i999 %1, 1 +; CHECK-NEXT: ret i999 %V } define i41 @test3(i41 %X) { @@ -19,6 +26,9 @@ %t = icmp slt i41 %X, 0 %V = select i1 %t, i41 -1, i41 0 ret i41 %V +; CHECK-LABEL: @test3( +; CHECK-NEXT: %X.lobit = ashr i41 %X, 40 +; CHECK-NEXT: ret i41 %X.lobit } define i1023 @test4(i1023 %X) { @@ -26,6 +36,9 @@ %t = icmp slt i1023 %X, 0 %V = select i1 %t, i1023 -1, i1023 0 ret i1023 %V +; CHECK-LABEL: @test4( +; CHECK-NEXT: %X.lobit = ashr i1023 %X, 1022 +; CHECK-NEXT: ret i1023 %X.lobit } define i41 @test5(i41 %X) { @@ -34,6 +47,9 @@ %t = icmp ne i41 %Y, 0 %V = select i1 %t, i41 32, i41 0 ret i41 %V +; CHECK-LABEL: @test5( +; CHECK-NEXT: %Y = and i41 %X, 32 +; CHECK-NEXT: ret i41 %Y } define i1023 @test6(i1023 %X) { @@ -42,4 +58,7 @@ %t = icmp ne i1023 %Y, 0 %V = select i1 %t, i1023 64, i1023 0 ret i1023 %V +; CHECK-LABEL: @test6( +; CHECK-NEXT: %Y = and i1023 %X, 64 +; CHECK-NEXT: ret i1023 %Y }