From 47eacc4d5790216f54ca048ff9cdb84f2f6d8aa6 Mon Sep 17 00:00:00 2001 From: Sanjay Patel Date: Thu, 12 Sep 2019 18:00:11 +0000 Subject: [PATCH] [InstCombine] add tests for fptrunc; NFC git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@371750 91177308-0d34-0410-b5e6-96231b3b80d8 --- test/Transforms/InstCombine/fptrunc.ll | 50 ++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 test/Transforms/InstCombine/fptrunc.ll diff --git a/test/Transforms/InstCombine/fptrunc.ll b/test/Transforms/InstCombine/fptrunc.ll new file mode 100644 index 00000000000..3790210fbe5 --- /dev/null +++ b/test/Transforms/InstCombine/fptrunc.ll @@ -0,0 +1,50 @@ +; NOTE: Assertions have been autogenerated by utils/update_test_checks.py +; RUN: opt < %s -instcombine -S | FileCheck %s + +define float @fadd_fpext_op0(float %x, double %y) { +; CHECK-LABEL: @fadd_fpext_op0( +; CHECK-NEXT: [[EXT:%.*]] = fpext float [[X:%.*]] to double +; CHECK-NEXT: [[BO:%.*]] = fadd reassoc double [[EXT]], [[Y:%.*]] +; CHECK-NEXT: [[R:%.*]] = fptrunc double [[BO]] to float +; CHECK-NEXT: ret float [[R]] +; + %ext = fpext float %x to double + %bo = fadd reassoc double %ext, %y + %r = fptrunc double %bo to float + ret float %r +} + +define half @fsub_fpext_op1(half %x, double %y) { +; CHECK-LABEL: @fsub_fpext_op1( +; CHECK-NEXT: [[EXT:%.*]] = fpext half [[X:%.*]] to double +; CHECK-NEXT: [[BO:%.*]] = fsub reassoc double [[Y:%.*]], [[EXT]] +; CHECK-NEXT: [[R:%.*]] = fptrunc double [[BO]] to half +; CHECK-NEXT: ret half [[R]] +; + %ext = fpext half %x to double + %bo = fsub reassoc double %y, %ext + %r = fptrunc double %bo to half + ret half %r +} + +define <2 x float> @fdiv_constant_op0(<2 x double> %x) { +; CHECK-LABEL: @fdiv_constant_op0( +; CHECK-NEXT: [[BO:%.*]] = fdiv reassoc <2 x double> , [[X:%.*]] +; CHECK-NEXT: [[R:%.*]] = fptrunc <2 x double> [[BO]] to <2 x float> +; CHECK-NEXT: ret <2 x float> [[R]] +; + %bo = fdiv reassoc <2 x double> , %x + %r = fptrunc <2 x double> %bo to <2 x float> + ret <2 x float> %r +} + +define <2 x half> @fmul_constant_op1(<2 x float> %x) { +; CHECK-LABEL: @fmul_constant_op1( +; CHECK-NEXT: [[BO:%.*]] = fmul reassoc <2 x float> [[X:%.*]], +; CHECK-NEXT: [[R:%.*]] = fptrunc <2 x float> [[BO]] to <2 x half> +; CHECK-NEXT: ret <2 x half> [[R]] +; + %bo = fmul reassoc <2 x float> %x, + %r = fptrunc <2 x float> %bo to <2 x half> + ret <2 x half> %r +} -- 2.40.0