diff options
Diffstat (limited to 'llvm/test/Transforms/InstCombine/cos-1.ll')
-rw-r--r-- | llvm/test/Transforms/InstCombine/cos-1.ll | 175 |
1 files changed, 0 insertions, 175 deletions
diff --git a/llvm/test/Transforms/InstCombine/cos-1.ll b/llvm/test/Transforms/InstCombine/cos-1.ll deleted file mode 100644 index 50db2a98e83..00000000000 --- a/llvm/test/Transforms/InstCombine/cos-1.ll +++ /dev/null @@ -1,175 +0,0 @@ -; NOTE: Assertions have been autogenerated by utils/update_test_checks.py -; RUN: opt < %s -instcombine -S | FileCheck %s --check-prefixes=ANY,NO-FLOAT-SHRINK -; RUN: opt < %s -instcombine -enable-double-float-shrink -S | FileCheck %s --check-prefixes=ANY,DO-FLOAT-SHRINK - -target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128" - -declare double @cos(double) -declare double @llvm.cos.f64(double) -declare float @cosf(float) -declare float @llvm.cos.f32(float) - -declare double @sin(double) -declare double @llvm.sin.f64(double) -declare float @sinf(float) -declare float @llvm.sin.f32(float) - -declare double @tan(double) -declare fp128 @tanl(fp128) - -; cos(-x) -> cos(x); - -define double @cos_negated_arg(double %x) { -; ANY-LABEL: @cos_negated_arg( -; ANY-NEXT: [[COS:%.*]] = call double @cos(double [[X:%.*]]) -; ANY-NEXT: ret double [[COS]] -; - %neg = fsub double -0.0, %x - %r = call double @cos(double %neg) - ret double %r -} - -define float @cosf_negated_arg(float %x) { -; ANY-LABEL: @cosf_negated_arg( -; ANY-NEXT: [[COS:%.*]] = call float @cosf(float [[X:%.*]]) -; ANY-NEXT: ret float [[COS]] -; - %neg = fsub float -0.0, %x - %r = call float @cosf(float %neg) - ret float %r -} - -define float @cosf_negated_arg_FMF(float %x) { -; ANY-LABEL: @cosf_negated_arg_FMF( -; ANY-NEXT: [[COS:%.*]] = call reassoc nnan float @cosf(float [[X:%.*]]) -; ANY-NEXT: ret float [[COS]] -; - %neg = fsub float -0.0, %x - %r = call nnan reassoc float @cosf(float %neg) - ret float %r -} - -; sin(-x) -> -sin(x); - -define double @sin_negated_arg(double %x) { -; ANY-LABEL: @sin_negated_arg( -; ANY-NEXT: [[TMP1:%.*]] = call double @sin(double [[X:%.*]]) -; ANY-NEXT: [[TMP2:%.*]] = fsub double -0.000000e+00, [[TMP1]] -; ANY-NEXT: ret double [[TMP2]] -; - %neg = fsub double -0.0, %x - %r = call double @sin(double %neg) - ret double %r -} - -define float @sinf_negated_arg(float %x) { -; ANY-LABEL: @sinf_negated_arg( -; ANY-NEXT: [[TMP1:%.*]] = call float @sinf(float [[X:%.*]]) -; ANY-NEXT: [[TMP2:%.*]] = fsub float -0.000000e+00, [[TMP1]] -; ANY-NEXT: ret float [[TMP2]] -; - %neg = fsub float -0.0, %x - %r = call float @sinf(float %neg) - ret float %r -} - -define float @sinf_negated_arg_FMF(float %x) { -; ANY-LABEL: @sinf_negated_arg_FMF( -; ANY-NEXT: [[TMP1:%.*]] = call nnan afn float @sinf(float [[X:%.*]]) -; ANY-NEXT: [[TMP2:%.*]] = fsub nnan afn float -0.000000e+00, [[TMP1]] -; ANY-NEXT: ret float [[TMP2]] -; - %neg = fsub ninf float -0.0, %x - %r = call afn nnan float @sinf(float %neg) - ret float %r -} - -declare void @use(double) - -define double @sin_negated_arg_extra_use(double %x) { -; ANY-LABEL: @sin_negated_arg_extra_use( -; ANY-NEXT: [[NEG:%.*]] = fsub double -0.000000e+00, [[X:%.*]] -; ANY-NEXT: [[R:%.*]] = call double @sin(double [[NEG]]) -; ANY-NEXT: call void @use(double [[NEG]]) -; ANY-NEXT: ret double [[R]] -; - %neg = fsub double -0.0, %x - %r = call double @sin(double %neg) - call void @use(double %neg) - ret double %r -} - -; -sin(-x) --> sin(x) -; PR38458: https://bugs.llvm.org/show_bug.cgi?id=38458 - -define double @neg_sin_negated_arg(double %x) { -; ANY-LABEL: @neg_sin_negated_arg( -; ANY-NEXT: [[TMP1:%.*]] = call double @sin(double [[X:%.*]]) -; ANY-NEXT: ret double [[TMP1]] -; - %neg = fsub double -0.0, %x - %r = call double @sin(double %neg) - %rn = fsub double -0.0, %r - ret double %rn -} - -; tan(-x) -> -tan(x); - -define double @tan_negated_arg(double %x) { -; ANY-LABEL: @tan_negated_arg( -; ANY-NEXT: [[TMP1:%.*]] = call double @tan(double [[X:%.*]]) -; ANY-NEXT: [[TMP2:%.*]] = fsub double -0.000000e+00, [[TMP1]] -; ANY-NEXT: ret double [[TMP2]] -; - %neg = fsub double -0.0, %x - %r = call double @tan(double %neg) - ret double %r -} - -; tanl(-x) -> -tanl(x); - -define fp128 @tanl_negated_arg(fp128 %x) { -; ANY-LABEL: @tanl_negated_arg( -; ANY-NEXT: [[TMP1:%.*]] = call fp128 @tanl(fp128 [[X:%.*]]) -; ANY-NEXT: [[TMP2:%.*]] = fsub fp128 0xL00000000000000008000000000000000, [[TMP1]] -; ANY-NEXT: ret fp128 [[TMP2]] -; - %neg = fsub fp128 0xL00000000000000008000000000000000, %x - %r = call fp128 @tanl(fp128 %neg) - ret fp128 %r -} - -define float @negated_and_shrinkable_libcall(float %f) { -; NO-FLOAT-SHRINK-LABEL: @negated_and_shrinkable_libcall( -; NO-FLOAT-SHRINK-NEXT: [[CONV1:%.*]] = fpext float [[F:%.*]] to double -; NO-FLOAT-SHRINK-NEXT: [[COS1:%.*]] = call double @cos(double [[CONV1]]) -; NO-FLOAT-SHRINK-NEXT: [[CONV2:%.*]] = fptrunc double [[COS1]] to float -; NO-FLOAT-SHRINK-NEXT: ret float [[CONV2]] -; -; DO-FLOAT-SHRINK-LABEL: @negated_and_shrinkable_libcall( -; DO-FLOAT-SHRINK-NEXT: [[COSF:%.*]] = call float @cosf(float [[F:%.*]]) -; DO-FLOAT-SHRINK-NEXT: ret float [[COSF]] -; - %conv1 = fpext float %f to double - %neg = fsub double -0.0, %conv1 - %cos = call double @cos(double %neg) - %conv2 = fptrunc double %cos to float - ret float %conv2 -} - -; TODO: It was ok to shrink the libcall, so the intrinsic should shrink too? - -define float @negated_and_shrinkable_intrinsic(float %f) { -; ANY-LABEL: @negated_and_shrinkable_intrinsic( -; ANY-NEXT: [[CONV1:%.*]] = fpext float [[F:%.*]] to double -; ANY-NEXT: [[COS:%.*]] = call double @llvm.cos.f64(double [[CONV1]]) -; ANY-NEXT: [[CONV2:%.*]] = fptrunc double [[COS]] to float -; ANY-NEXT: ret float [[CONV2]] -; - %conv1 = fpext float %f to double - %neg = fsub double -0.0, %conv1 - %cos = call double @llvm.cos.f64(double %neg) - %conv2 = fptrunc double %cos to float - ret float %conv2 -} - |