From b53d44fe47413c87f619baf9e057f2a2e49d3998 Mon Sep 17 00:00:00 2001 From: Mohammed Nurul Hoque Date: Mon, 8 Aug 2022 09:21:33 -0400 Subject: [PATCH] [EarlyCSE][ConstantFolding] add tests for atan/atan2; NFC Baseline coverage for D127964. --- llvm/test/Transforms/EarlyCSE/atan.ll | 127 ++++++++++++++++++++++++++ 1 file changed, 127 insertions(+) create mode 100644 llvm/test/Transforms/EarlyCSE/atan.ll diff --git a/llvm/test/Transforms/EarlyCSE/atan.ll b/llvm/test/Transforms/EarlyCSE/atan.ll new file mode 100644 index 000000000000..a7de4a711412 --- /dev/null +++ b/llvm/test/Transforms/EarlyCSE/atan.ll @@ -0,0 +1,127 @@ +; NOTE: Assertions have been autogenerated by utils/update_test_checks.py +; RUN: opt -early-cse -S < %s | FileCheck %s + +define float @callatan0() { +; CHECK-LABEL: @callatan0( +; CHECK-NEXT: [[CALL:%.*]] = call float @atanf(float -0.000000e+00) +; CHECK-NEXT: ret float -0.000000e+00 +; + %call = call float @atanf(float -0.0) + ret float %call +} + +define float @callatanInf() { +; CHECK-LABEL: @callatanInf( +; CHECK-NEXT: [[CALL:%.*]] = call float @atanf(float 0x7FF0000000000000) +; CHECK-NEXT: ret float [[CALL]] +; + %call = call float @atanf(float 0x7FF0000000000000) + ret float %call +} + +define float @callatanNaN() { +; CHECK-LABEL: @callatanNaN( +; CHECK-NEXT: [[CALL:%.*]] = call float @atanf(float 0x7FF8000000000000) +; CHECK-NEXT: ret float [[CALL]] +; + %call = call float @atanf(float 0x7FF8000000000000) + ret float %call +} + +define float @callatanDenorm() { +; CHECK-LABEL: @callatanDenorm( +; CHECK-NEXT: [[CALL:%.*]] = call float @atanf(float 0x37A16C2000000000) +; CHECK-NEXT: ret float 0x37A16C2000000000 +; + %call = call float @atanf(float 0x37A16C2000000000) + ret float %call +} + +; long double calls currently not folded +define x86_fp80 @atanl_x86(x86_fp80 %x) { +; CHECK-LABEL: @atanl_x86( +; CHECK-NEXT: [[CALL:%.*]] = call x86_fp80 @atanl(x86_fp80 noundef 0xK3FFF8CCCCCCCCCCCCCCD) +; CHECK-NEXT: ret x86_fp80 [[CALL]] +; + %call = call x86_fp80 @atanl(x86_fp80 noundef 0xK3FFF8CCCCCCCCCCCCCCD) + ret x86_fp80 %call +} + +define float @callatan2_00() { +; CHECK-LABEL: @callatan2_00( +; CHECK-NEXT: [[CALL:%.*]] = call float @atan2f(float -0.000000e+00, float 0.000000e+00) +; CHECK-NEXT: ret float -0.000000e+00 +; + %call = call float @atan2f(float -0.0, float 0.0) + ret float %call +} + +define float @callatan2_x0() { +; CHECK-LABEL: @callatan2_x0( +; CHECK-NEXT: [[CALL:%.*]] = call float @atan2f(float 1.000000e+00, float -0.000000e+00) +; CHECK-NEXT: ret float 0x3FF921FB60000000 +; + %call = call float @atan2f(float 1.0, float -0.000000e+00) + ret float %call +} + +define float @callatan2_0x() { +; CHECK-LABEL: @callatan2_0x( +; CHECK-NEXT: [[CALL:%.*]] = call float @atan2f(float -0.000000e+00, float 1.000000e+00) +; CHECK-NEXT: ret float -0.000000e+00 +; + %call = call float @atan2f(float -0.0, float 1.0) + ret float %call +} + +define float @callatan2_xx() { +; CHECK-LABEL: @callatan2_xx( +; CHECK-NEXT: [[CALL:%.*]] = call float @atan2f(float -1.000000e+00, float 1.000000e+00) +; CHECK-NEXT: ret float 0xBFE921FB60000000 +; + %call = call float @atan2f(float -1.0, float 1.0) + ret float %call +} + +define float @callatan2_denorm() { +; CHECK-LABEL: @callatan2_denorm( +; CHECK-NEXT: [[CALL:%.*]] = call float @atan2f(float 0x39B4484C00000000, float 1.000000e+10) +; CHECK-NEXT: ret float 0x37A16C2000000000 +; + %call = call float @atan2f(float 0x39B4484C00000000, float 1.0e+10) + ret float %call +} + +define float @callatan2_flush_to_zero() { +; CHECK-LABEL: @callatan2_flush_to_zero( +; CHECK-NEXT: [[CALL:%.*]] = call float @atan2f(float 0x39B4484C00000000, float 0x4415AF1D80000000) +; CHECK-NEXT: ret float 0.000000e+00 +; + %call = call float @atan2f(float 0x39B4484C00000000, float 0x4415AF1D80000000) + ret float %call +} + +define float @callatan2_NaN() { +; CHECK-LABEL: @callatan2_NaN( +; CHECK-NEXT: [[CALL:%.*]] = call float @atan2f(float 0x7FF8000000000000, float 0x7FF8000000000000) +; CHECK-NEXT: ret float 0x7FF8000000000000 +; + %call = call float @atan2f(float 0x7FF8000000000000, float 0x7FF8000000000000) + ret float %call +} + +define float @callatan2_Inf() { +; CHECK-LABEL: @callatan2_Inf( +; CHECK-NEXT: [[CALL:%.*]] = call float @atan2f(float 0x7FF0000000000000, float 0x7FF0000000000000) +; CHECK-NEXT: ret float 0x3FE921FB60000000 +; + %call = call float @atan2f(float 0x7FF0000000000000, float 0x7FF0000000000000) + ret float %call +} + +declare dso_local float @atanf(float) #0 +declare dso_local x86_fp80 @atanl(x86_fp80) #0 + +declare dso_local float @atan2f(float, float) #0 + +attributes #0 = { nofree nounwind willreturn } -- 2.34.1