@@ -731,8 +731,9 @@ define <2 x half> @pow_recip(<2 x half> %x, <2 x half> %y) {
731
731
732
732
define float @exp_divisor (float %y , float %z ) {
733
733
; CHECK-LABEL: @exp_divisor(
734
- ; CHECK-NEXT: [[P:%.*]] = call float @llvm.exp.f32(float [[Y:%.*]])
735
- ; CHECK-NEXT: [[R:%.*]] = fdiv reassoc arcp float [[Z:%.*]], [[P]]
734
+ ; CHECK-NEXT: [[TMP1:%.*]] = fneg reassoc arcp float [[Y:%.*]]
735
+ ; CHECK-NEXT: [[TMP2:%.*]] = call reassoc arcp float @llvm.exp.f32(float [[TMP1]])
736
+ ; CHECK-NEXT: [[R:%.*]] = fmul reassoc arcp float [[TMP2]], [[Z:%.*]]
736
737
; CHECK-NEXT: ret float [[R]]
737
738
;
738
739
%p = call float @llvm.exp.f32 (float %y )
@@ -785,9 +786,9 @@ define float @exp_divisor_not_enough_fmf2(float %y, float %z) {
785
786
786
787
define <2 x half > @exp_recip (<2 x half > %x , <2 x half > %y ) {
787
788
; CHECK-LABEL: @exp_recip(
788
- ; CHECK-NEXT: [[P :%.*]] = call <2 x half> @llvm.exp.v2f16( <2 x half> [[Y:%.*]])
789
- ; CHECK-NEXT: [[R :%.*]] = fdiv reassoc ninf arcp <2 x half> <half 0xH3C00, half 0xH3C00>, [[P]]
790
- ; CHECK-NEXT: ret <2 x half> [[R ]]
789
+ ; CHECK-NEXT: [[TMP1 :%.*]] = fneg reassoc ninf arcp <2 x half> [[Y:%.*]]
790
+ ; CHECK-NEXT: [[TMP2 :%.*]] = call reassoc ninf arcp <2 x half> @llvm.exp.v2f16(<2 x half> [[TMP1]])
791
+ ; CHECK-NEXT: ret <2 x half> [[TMP2 ]]
791
792
;
792
793
%p = call <2 x half > @llvm.exp.v2f16 (<2 x half > %y )
793
794
%r = fdiv reassoc arcp ninf <2 x half > <half 1 .0 , half 1 .0 >, %p
@@ -796,8 +797,9 @@ define <2 x half> @exp_recip(<2 x half> %x, <2 x half> %y) {
796
797
797
798
define float @exp2_divisor (float %y , float %z ) {
798
799
; CHECK-LABEL: @exp2_divisor(
799
- ; CHECK-NEXT: [[P:%.*]] = call float @llvm.exp2.f32(float [[Y:%.*]])
800
- ; CHECK-NEXT: [[R:%.*]] = fdiv reassoc arcp float [[Z:%.*]], [[P]]
800
+ ; CHECK-NEXT: [[TMP1:%.*]] = fneg reassoc arcp float [[Y:%.*]]
801
+ ; CHECK-NEXT: [[TMP2:%.*]] = call reassoc arcp float @llvm.exp2.f32(float [[TMP1]])
802
+ ; CHECK-NEXT: [[R:%.*]] = fmul reassoc arcp float [[TMP2]], [[Z:%.*]]
801
803
; CHECK-NEXT: ret float [[R]]
802
804
;
803
805
%p = call float @llvm.exp2.f32 (float %y )
@@ -850,9 +852,9 @@ define float @exp2_divisor_not_enough_fmf2(float %y, float %z) {
850
852
851
853
define <2 x half > @exp2_recip (<2 x half > %x , <2 x half > %y ) {
852
854
; CHECK-LABEL: @exp2_recip(
853
- ; CHECK-NEXT: [[P :%.*]] = call <2 x half> @llvm.exp2.v2f16( <2 x half> [[Y:%.*]])
854
- ; CHECK-NEXT: [[R :%.*]] = fdiv reassoc ninf arcp <2 x half> <half 0xH3C00, half 0xH3C00>, [[P]]
855
- ; CHECK-NEXT: ret <2 x half> [[R ]]
855
+ ; CHECK-NEXT: [[TMP1 :%.*]] = fneg reassoc ninf arcp <2 x half> [[Y:%.*]]
856
+ ; CHECK-NEXT: [[TMP2 :%.*]] = call reassoc ninf arcp <2 x half> @llvm.exp2.v2f16(<2 x half> [[TMP1]])
857
+ ; CHECK-NEXT: ret <2 x half> [[TMP2 ]]
856
858
;
857
859
%p = call <2 x half > @llvm.exp2.v2f16 (<2 x half > %y )
858
860
%r = fdiv reassoc arcp ninf <2 x half > <half 1 .0 , half 1 .0 >, %p
0 commit comments