; 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)