xref: /llvm-project/llvm/test/Transforms/InstCombine/logb.ll (revision 923566a67de39a00eb6fc5cabbad307a72aa338e)
1*923566a6Sc8ef; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 5
2*923566a6Sc8ef; RUN: opt < %s -passes=instcombine -S | FileCheck %s
3*923566a6Sc8ef
4*923566a6Sc8efdefine float @logbf_const() {
5*923566a6Sc8ef; CHECK-LABEL: define float @logbf_const() {
6*923566a6Sc8ef; CHECK-NEXT:    [[R:%.*]] = call float @logbf(float 7.000000e+00)
7*923566a6Sc8ef; CHECK-NEXT:    ret float 2.000000e+00
8*923566a6Sc8ef;
9*923566a6Sc8ef  %r = call float @logbf(float 7.000000e+00)
10*923566a6Sc8ef  ret float %r
11*923566a6Sc8ef}
12*923566a6Sc8ef
13*923566a6Sc8efdefine double @logb_const() {
14*923566a6Sc8ef; CHECK-LABEL: define double @logb_const() {
15*923566a6Sc8ef; CHECK-NEXT:    [[R:%.*]] = call double @logb(double -7.000000e+00)
16*923566a6Sc8ef; CHECK-NEXT:    ret double 2.000000e+00
17*923566a6Sc8ef;
18*923566a6Sc8ef  %r = call double @logb(double -7.000000e+00)
19*923566a6Sc8ef  ret double %r
20*923566a6Sc8ef}
21*923566a6Sc8ef
22*923566a6Sc8efdefine float @logbf_zero() {
23*923566a6Sc8ef; CHECK-LABEL: define float @logbf_zero() {
24*923566a6Sc8ef; CHECK-NEXT:    [[R:%.*]] = call float @logbf(float 0.000000e+00)
25*923566a6Sc8ef; CHECK-NEXT:    ret float [[R]]
26*923566a6Sc8ef;
27*923566a6Sc8ef  %r = call float @logbf(float 0.000000e+00)
28*923566a6Sc8ef  ret float %r
29*923566a6Sc8ef}
30*923566a6Sc8ef
31*923566a6Sc8efdefine double @logb_zero() {
32*923566a6Sc8ef; CHECK-LABEL: define double @logb_zero() {
33*923566a6Sc8ef; CHECK-NEXT:    [[R:%.*]] = call double @logb(double 0.000000e+00)
34*923566a6Sc8ef; CHECK-NEXT:    ret double [[R]]
35*923566a6Sc8ef;
36*923566a6Sc8ef  %r = call double @logb(double 0.000000e+00)
37*923566a6Sc8ef  ret double %r
38*923566a6Sc8ef}
39*923566a6Sc8ef
40*923566a6Sc8efdefine float @logbf_neg_zero() {
41*923566a6Sc8ef; CHECK-LABEL: define float @logbf_neg_zero() {
42*923566a6Sc8ef; CHECK-NEXT:    [[R:%.*]] = call float @logbf(float -0.000000e+00)
43*923566a6Sc8ef; CHECK-NEXT:    ret float [[R]]
44*923566a6Sc8ef;
45*923566a6Sc8ef  %r = call float @logbf(float -0.000000e+00)
46*923566a6Sc8ef  ret float %r
47*923566a6Sc8ef}
48*923566a6Sc8ef
49*923566a6Sc8efdefine double @logb_neg_zero() {
50*923566a6Sc8ef; CHECK-LABEL: define double @logb_neg_zero() {
51*923566a6Sc8ef; CHECK-NEXT:    [[R:%.*]] = call double @logb(double -0.000000e+00)
52*923566a6Sc8ef; CHECK-NEXT:    ret double [[R]]
53*923566a6Sc8ef;
54*923566a6Sc8ef  %r = call double @logb(double -0.000000e+00)
55*923566a6Sc8ef  ret double %r
56*923566a6Sc8ef}
57*923566a6Sc8ef
58*923566a6Sc8efdefine float @logbf_inf() {
59*923566a6Sc8ef; CHECK-LABEL: define float @logbf_inf() {
60*923566a6Sc8ef; CHECK-NEXT:    [[R:%.*]] = call float @logbf(float 0x7FF0000000000000)
61*923566a6Sc8ef; CHECK-NEXT:    ret float [[R]]
62*923566a6Sc8ef;
63*923566a6Sc8ef  %r = call float @logbf(float 0x7FF0000000000000)
64*923566a6Sc8ef  ret float %r
65*923566a6Sc8ef}
66*923566a6Sc8ef
67*923566a6Sc8efdefine double @logb_inf() {
68*923566a6Sc8ef; CHECK-LABEL: define double @logb_inf() {
69*923566a6Sc8ef; CHECK-NEXT:    [[R:%.*]] = call double @logb(double 0x7FF0000000000000)
70*923566a6Sc8ef; CHECK-NEXT:    ret double [[R]]
71*923566a6Sc8ef;
72*923566a6Sc8ef  %r = call double @logb(double 0x7FF0000000000000)
73*923566a6Sc8ef  ret double %r
74*923566a6Sc8ef}
75*923566a6Sc8ef
76*923566a6Sc8efdefine float @logbf_nan() {
77*923566a6Sc8ef; CHECK-LABEL: define float @logbf_nan() {
78*923566a6Sc8ef; CHECK-NEXT:    [[R:%.*]] = call float @logbf(float 0x7FF8000000000000)
79*923566a6Sc8ef; CHECK-NEXT:    ret float [[R]]
80*923566a6Sc8ef;
81*923566a6Sc8ef  %r = call float @logbf(float 0x7FF8000000000000)
82*923566a6Sc8ef  ret float %r
83*923566a6Sc8ef}
84*923566a6Sc8ef
85*923566a6Sc8efdefine double @logb_nan() {
86*923566a6Sc8ef; CHECK-LABEL: define double @logb_nan() {
87*923566a6Sc8ef; CHECK-NEXT:    [[R:%.*]] = call double @logb(double 0x7FF8000000000000)
88*923566a6Sc8ef; CHECK-NEXT:    ret double [[R]]
89*923566a6Sc8ef;
90*923566a6Sc8ef  %r = call double @logb(double 0x7FF8000000000000)
91*923566a6Sc8ef  ret double %r
92*923566a6Sc8ef}
93*923566a6Sc8ef
94*923566a6Sc8efdefine float @logbf_poison() {
95*923566a6Sc8ef; CHECK-LABEL: define float @logbf_poison() {
96*923566a6Sc8ef; CHECK-NEXT:    [[R:%.*]] = call float @logbf(float poison)
97*923566a6Sc8ef; CHECK-NEXT:    ret float [[R]]
98*923566a6Sc8ef;
99*923566a6Sc8ef  %r = call float @logbf(float poison)
100*923566a6Sc8ef  ret float %r
101*923566a6Sc8ef}
102*923566a6Sc8ef
103*923566a6Sc8efdefine double @logb_poison() {
104*923566a6Sc8ef; CHECK-LABEL: define double @logb_poison() {
105*923566a6Sc8ef; CHECK-NEXT:    [[R:%.*]] = call double @logb(double poison)
106*923566a6Sc8ef; CHECK-NEXT:    ret double [[R]]
107*923566a6Sc8ef;
108*923566a6Sc8ef  %r = call double @logb(double poison)
109*923566a6Sc8ef  ret double %r
110*923566a6Sc8ef}
111*923566a6Sc8ef
112*923566a6Sc8efdeclare float @logbf(float)
113*923566a6Sc8efdeclare double @logb(double)
114