| ; 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:%.*]] = tail 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) |
| |