From 43fb1cdef78a17bed21369cc334913f2393cc15c Mon Sep 17 00:00:00 2001 From: Craig Topper Date: Mon, 26 Feb 2018 19:36:37 +0000 Subject: [PATCH] [InstCombine] Add test cases with vector constants to fpextend.ll llvm-svn: 326115 --- llvm/test/Transforms/InstCombine/fpextend.ll | 41 ++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/llvm/test/Transforms/InstCombine/fpextend.ll b/llvm/test/Transforms/InstCombine/fpextend.ll index 4f5e8e12..30930ff 100644 --- a/llvm/test/Transforms/InstCombine/fpextend.ll +++ b/llvm/test/Transforms/InstCombine/fpextend.ll @@ -3,6 +3,7 @@ @X = external global float @Y = external global float +@Z = external global <2 x float> define void @test() nounwind { ; CHECK-LABEL: @test( @@ -77,3 +78,43 @@ entry: store float %tmp34, float* @X, align 4 ret void } + +; Test with vector splat constant +define void @test5() nounwind { +; CHECK-LABEL: @test5( +; CHECK-NEXT: entry: +; CHECK-NEXT: [[TMP:%.*]] = load <2 x float>, <2 x float>* @Z, align 8 +; CHECK-NEXT: [[TMP1:%.*]] = fpext <2 x float> [[TMP]] to <2 x double> +; CHECK-NEXT: [[TMP3:%.*]] = fadd <2 x double> [[TMP1]], zeroinitializer +; CHECK-NEXT: [[TMP34:%.*]] = fptrunc <2 x double> [[TMP3]] to <2 x float> +; CHECK-NEXT: store <2 x float> [[TMP34]], <2 x float>* @Z, align 8 +; CHECK-NEXT: ret void +; +entry: + %tmp = load <2 x float>, <2 x float>* @Z, align 4 + %tmp1 = fpext <2 x float> %tmp to <2 x double> + %tmp3 = fadd <2 x double> %tmp1, + %tmp34 = fptrunc <2 x double> %tmp3 to <2 x float> + store <2 x float> %tmp34, <2 x float>* @Z, align 4 + ret void +} + +; Test with a non-splat constant +define void @test6() nounwind { +; CHECK-LABEL: @test6( +; CHECK-NEXT: entry: +; CHECK-NEXT: [[TMP:%.*]] = load <2 x float>, <2 x float>* @Z, align 8 +; CHECK-NEXT: [[TMP1:%.*]] = fpext <2 x float> [[TMP]] to <2 x double> +; CHECK-NEXT: [[TMP3:%.*]] = fadd <2 x double> [[TMP1]], +; CHECK-NEXT: [[TMP34:%.*]] = fptrunc <2 x double> [[TMP3]] to <2 x float> +; CHECK-NEXT: store <2 x float> [[TMP34]], <2 x float>* @Z, align 8 +; CHECK-NEXT: ret void +; +entry: + %tmp = load <2 x float>, <2 x float>* @Z, align 4 + %tmp1 = fpext <2 x float> %tmp to <2 x double> + %tmp3 = fadd <2 x double> %tmp1, + %tmp34 = fptrunc <2 x double> %tmp3 to <2 x float> + store <2 x float> %tmp34, <2 x float>* @Z, align 4 + ret void +} -- 2.7.4