48 lines
1.3 KiB
LLVM
48 lines
1.3 KiB
LLVM
; 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)
|
|
|