@@ -2758,6 +2758,58 @@ entry:
27582758 ret float %result
27592759}
27602760
2761+ ; Verify that tan(42.0) isn't simplified when the rounding mode is unknown.
2762+ define double @ftan () #0 {
2763+ ; X87-LABEL: ftan:
2764+ ; X87: # %bb.0: # %entry
2765+ ; X87-NEXT: subl $12, %esp
2766+ ; X87-NEXT: .cfi_def_cfa_offset 16
2767+ ; X87-NEXT: flds {{\.?LCPI[0-9]+_[0-9]+}}
2768+ ; X87-NEXT: fstpl (%esp)
2769+ ; X87-NEXT: wait
2770+ ; X87-NEXT: calll tan
2771+ ; X87-NEXT: addl $12, %esp
2772+ ; X87-NEXT: .cfi_def_cfa_offset 4
2773+ ; X87-NEXT: retl
2774+ ;
2775+ ; X86-SSE-LABEL: ftan:
2776+ ; X86-SSE: # %bb.0: # %entry
2777+ ; X86-SSE-NEXT: subl $12, %esp
2778+ ; X86-SSE-NEXT: .cfi_def_cfa_offset 16
2779+ ; X86-SSE-NEXT: movsd {{.*#+}} xmm0 = [4.2E+1,0.0E+0]
2780+ ; X86-SSE-NEXT: movsd %xmm0, (%esp)
2781+ ; X86-SSE-NEXT: calll tan
2782+ ; X86-SSE-NEXT: addl $12, %esp
2783+ ; X86-SSE-NEXT: .cfi_def_cfa_offset 4
2784+ ; X86-SSE-NEXT: retl
2785+ ;
2786+ ; SSE-LABEL: ftan:
2787+ ; SSE: # %bb.0: # %entry
2788+ ; SSE-NEXT: pushq %rax
2789+ ; SSE-NEXT: .cfi_def_cfa_offset 16
2790+ ; SSE-NEXT: movsd {{.*#+}} xmm0 = [4.2E+1,0.0E+0]
2791+ ; SSE-NEXT: callq tan@PLT
2792+ ; SSE-NEXT: popq %rax
2793+ ; SSE-NEXT: .cfi_def_cfa_offset 8
2794+ ; SSE-NEXT: retq
2795+ ;
2796+ ; AVX-LABEL: ftan:
2797+ ; AVX: # %bb.0: # %entry
2798+ ; AVX-NEXT: pushq %rax
2799+ ; AVX-NEXT: .cfi_def_cfa_offset 16
2800+ ; AVX-NEXT: vmovsd {{.*#+}} xmm0 = [4.2E+1,0.0E+0]
2801+ ; AVX-NEXT: callq tan@PLT
2802+ ; AVX-NEXT: popq %rax
2803+ ; AVX-NEXT: .cfi_def_cfa_offset 8
2804+ ; AVX-NEXT: retq
2805+ entry:
2806+ %result = call double @llvm.experimental.constrained.tan.f64 (double 42 .0 ,
2807+ metadata !"round.dynamic" ,
2808+ metadata !"fpexcept.strict" ) #0
2809+ ret double %result
2810+ }
2811+
2812+
27612813attributes #0 = { strictfp }
27622814
27632815@llvm.fp.env = thread_local global i8 zeroinitializer , section "llvm.metadata"
@@ -2771,6 +2823,7 @@ declare double @llvm.experimental.constrained.pow.f64(double, double, metadata,
27712823declare double @llvm.experimental.constrained.powi.f64 (double , i32 , metadata , metadata )
27722824declare double @llvm.experimental.constrained.sin.f64 (double , metadata , metadata )
27732825declare double @llvm.experimental.constrained.cos.f64 (double , metadata , metadata )
2826+ declare double @llvm.experimental.constrained.tan.f64 (double , metadata , metadata )
27742827declare double @llvm.experimental.constrained.exp.f64 (double , metadata , metadata )
27752828declare double @llvm.experimental.constrained.exp2.f64 (double , metadata , metadata )
27762829declare double @llvm.experimental.constrained.log.f64 (double , metadata , metadata )
0 commit comments