114 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 52; RUN: opt < %s -passes=instcombine -S | FileCheck %s3 4define float @logbf_const() {5; CHECK-LABEL: define float @logbf_const() {6; CHECK-NEXT: [[R:%.*]] = call float @logbf(float 7.000000e+00)7; CHECK-NEXT: ret float 2.000000e+008;9 %r = call float @logbf(float 7.000000e+00)10 ret float %r11}12 13define double @logb_const() {14; CHECK-LABEL: define double @logb_const() {15; CHECK-NEXT: [[R:%.*]] = call double @logb(double -7.000000e+00)16; CHECK-NEXT: ret double 2.000000e+0017;18 %r = call double @logb(double -7.000000e+00)19 ret double %r20}21 22define float @logbf_zero() {23; CHECK-LABEL: define float @logbf_zero() {24; CHECK-NEXT: [[R:%.*]] = call float @logbf(float 0.000000e+00)25; CHECK-NEXT: ret float [[R]]26;27 %r = call float @logbf(float 0.000000e+00)28 ret float %r29}30 31define double @logb_zero() {32; CHECK-LABEL: define double @logb_zero() {33; CHECK-NEXT: [[R:%.*]] = call double @logb(double 0.000000e+00)34; CHECK-NEXT: ret double [[R]]35;36 %r = call double @logb(double 0.000000e+00)37 ret double %r38}39 40define float @logbf_neg_zero() {41; CHECK-LABEL: define float @logbf_neg_zero() {42; CHECK-NEXT: [[R:%.*]] = call float @logbf(float -0.000000e+00)43; CHECK-NEXT: ret float [[R]]44;45 %r = call float @logbf(float -0.000000e+00)46 ret float %r47}48 49define double @logb_neg_zero() {50; CHECK-LABEL: define double @logb_neg_zero() {51; CHECK-NEXT: [[R:%.*]] = call double @logb(double -0.000000e+00)52; CHECK-NEXT: ret double [[R]]53;54 %r = call double @logb(double -0.000000e+00)55 ret double %r56}57 58define float @logbf_inf() {59; CHECK-LABEL: define float @logbf_inf() {60; CHECK-NEXT: [[R:%.*]] = call float @logbf(float 0x7FF0000000000000)61; CHECK-NEXT: ret float [[R]]62;63 %r = call float @logbf(float 0x7FF0000000000000)64 ret float %r65}66 67define double @logb_inf() {68; CHECK-LABEL: define double @logb_inf() {69; CHECK-NEXT: [[R:%.*]] = call double @logb(double 0x7FF0000000000000)70; CHECK-NEXT: ret double [[R]]71;72 %r = call double @logb(double 0x7FF0000000000000)73 ret double %r74}75 76define float @logbf_nan() {77; CHECK-LABEL: define float @logbf_nan() {78; CHECK-NEXT: [[R:%.*]] = call float @logbf(float 0x7FF8000000000000)79; CHECK-NEXT: ret float [[R]]80;81 %r = call float @logbf(float 0x7FF8000000000000)82 ret float %r83}84 85define double @logb_nan() {86; CHECK-LABEL: define double @logb_nan() {87; CHECK-NEXT: [[R:%.*]] = call double @logb(double 0x7FF8000000000000)88; CHECK-NEXT: ret double [[R]]89;90 %r = call double @logb(double 0x7FF8000000000000)91 ret double %r92}93 94define float @logbf_poison() {95; CHECK-LABEL: define float @logbf_poison() {96; CHECK-NEXT: [[R:%.*]] = call float @logbf(float poison)97; CHECK-NEXT: ret float [[R]]98;99 %r = call float @logbf(float poison)100 ret float %r101}102 103define double @logb_poison() {104; CHECK-LABEL: define double @logb_poison() {105; CHECK-NEXT: [[R:%.*]] = call double @logb(double poison)106; CHECK-NEXT: ret double [[R]]107;108 %r = call double @logb(double poison)109 ret double %r110}111 112declare float @logbf(float)113declare double @logb(double)114