| ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py | |
| ; RUN: opt < %s -passes=instcombine -S | FileCheck %s | |
| define double @fneg_cosh(double noundef %x) { | |
| ; CHECK-LABEL: @fneg_cosh( | |
| ; CHECK-NEXT: entry: | |
| ; CHECK-NEXT: [[RET:%.*]] = call nnan double @llvm.cosh.f64(double [[X:%.*]]) | |
| ; CHECK-NEXT: ret double [[RET]] | |
| ; | |
| entry: | |
| %fneg = fneg double %x | |
| %ret = tail call nnan double @llvm.cosh.f64(double %fneg) | |
| ret double %ret | |
| } | |
| declare double @llvm.cosh.f64(double) | |
| define double @fneg_tanh(double noundef %x) { | |
| ; CHECK-LABEL: @fneg_tanh( | |
| ; CHECK-NEXT: entry: | |
| ; CHECK-NEXT: [[TMP0:%.*]] = call nnan double @llvm.tanh.f64(double [[X:%.*]]) | |
| ; CHECK-NEXT: ret double [[TMP0]] | |
| ; | |
| entry: | |
| %fneg = fneg double %x | |
| %tanhneg = tail call nnan double @llvm.tanh.f64(double %fneg) | |
| %fneg1 = fneg double %tanhneg | |
| ret double %fneg1 | |
| } | |
| declare double @llvm.tanh.f64(double) | |
| define double @fneg_sinh(double noundef %x) { | |
| ; CHECK-LABEL: @fneg_sinh( | |
| ; CHECK-NEXT: entry: | |
| ; CHECK-NEXT: [[TMP0:%.*]] = call nnan double @llvm.sinh.f64(double [[X:%.*]]) | |
| ; CHECK-NEXT: ret double [[TMP0]] | |
| ; | |
| entry: | |
| %fneg = fneg double %x | |
| %sinhneg = tail call nnan double @llvm.sinh.f64(double %fneg) | |
| %fneg1 = fneg double %sinhneg | |
| ret double %fneg1 | |
| } | |
| declare double @llvm.sinh.f64(double) | |