diff --git a/llvm/test/Transforms/InstCombine/signext.ll b/llvm/test/Transforms/InstCombine/signext.ll index 66cee2460ebf..fea485d8e7eb 100644 --- a/llvm/test/Transforms/InstCombine/signext.ll +++ b/llvm/test/Transforms/InstCombine/signext.ll @@ -61,6 +61,10 @@ define i32 @test5(i32 %x) { ret i32 %tmp.4 } +; If the shift amount equals the difference in width of the destination +; and source scalar types: +; ashr (shl (zext X), C), C --> sext X + define i32 @test6(i16 %P) { ; CHECK-LABEL: @test6( ; CHECK-NEXT: [[TMP_5:%.*]] = sext i16 %P to i32 @@ -72,6 +76,8 @@ define i32 @test6(i16 %P) { ret i32 %tmp.5 } +; FIXME: Vectors should get the same fold as above. + define <2 x i32> @test6_splat_vec(<2 x i12> %P) { ; CHECK-LABEL: @test6_splat_vec( ; CHECK-NEXT: [[Z:%.*]] = zext <2 x i12> %P to <2 x i32>