summaryrefslogtreecommitdiffstats
path: root/llvm/test/CodeGen/X86/recip-fastmath.ll
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/test/CodeGen/X86/recip-fastmath.ll')
-rw-r--r--llvm/test/CodeGen/X86/recip-fastmath.ll118
1 files changed, 77 insertions, 41 deletions
diff --git a/llvm/test/CodeGen/X86/recip-fastmath.ll b/llvm/test/CodeGen/X86/recip-fastmath.ll
index e33c688b0a0..5fb531da706 100644
--- a/llvm/test/CodeGen/X86/recip-fastmath.ll
+++ b/llvm/test/CodeGen/X86/recip-fastmath.ll
@@ -61,11 +61,17 @@ define float @f32_no_estimate(float %x) #0 {
; HASWELL-NO-FMA-NEXT: vdivss %xmm0, %xmm1, %xmm0
; HASWELL-NO-FMA-NEXT: retq
;
-; AVX512-LABEL: f32_no_estimate:
-; AVX512: # BB#0:
-; AVX512-NEXT: vmovss {{.*#+}} xmm1 = mem[0],zero,zero,zero sched: [1:0.50]
-; AVX512-NEXT: vdivss %xmm0, %xmm1, %xmm0 # sched: [13:1.00]
-; AVX512-NEXT: retq # sched: [2:1.00]
+; KNL-LABEL: f32_no_estimate:
+; KNL: # BB#0:
+; KNL-NEXT: vmovss {{.*#+}} xmm1 = mem[0],zero,zero,zero sched: [1:0.50]
+; KNL-NEXT: vdivss %xmm0, %xmm1, %xmm0 # sched: [13:1.00]
+; KNL-NEXT: retq # sched: [2:1.00]
+;
+; SKX-LABEL: f32_no_estimate:
+; SKX: # BB#0:
+; SKX-NEXT: vmovss {{.*#+}} xmm1 = mem[0],zero,zero,zero sched: [1:0.50]
+; SKX-NEXT: vdivss %xmm0, %xmm1, %xmm0 # sched: [11:1.00]
+; SKX-NEXT: retq # sched: [2:1.00]
%div = fdiv fast float 1.0, %x
ret float %div
}
@@ -136,12 +142,19 @@ define float @f32_one_step(float %x) #1 {
; HASWELL-NO-FMA-NEXT: vaddss %xmm0, %xmm1, %xmm0
; HASWELL-NO-FMA-NEXT: retq
;
-; AVX512-LABEL: f32_one_step:
-; AVX512: # BB#0:
-; AVX512-NEXT: vrcp14ss %xmm0, %xmm0, %xmm1
-; AVX512-NEXT: vfnmadd213ss {{.*}}(%rip), %xmm1, %xmm0 # sched: [5:0.50]
-; AVX512-NEXT: vfmadd132ss %xmm1, %xmm1, %xmm0 # sched: [5:0.50]
-; AVX512-NEXT: retq # sched: [2:1.00]
+; KNL-LABEL: f32_one_step:
+; KNL: # BB#0:
+; KNL-NEXT: vrcp14ss %xmm0, %xmm0, %xmm1
+; KNL-NEXT: vfnmadd213ss {{.*}}(%rip), %xmm1, %xmm0 # sched: [5:0.50]
+; KNL-NEXT: vfmadd132ss %xmm1, %xmm1, %xmm0 # sched: [5:0.50]
+; KNL-NEXT: retq # sched: [2:1.00]
+;
+; SKX-LABEL: f32_one_step:
+; SKX: # BB#0:
+; SKX-NEXT: vrcp14ss %xmm0, %xmm0, %xmm1
+; SKX-NEXT: vfnmadd213ss {{.*}}(%rip), %xmm1, %xmm0 # sched: [4:0.50]
+; SKX-NEXT: vfmadd132ss %xmm1, %xmm1, %xmm0 # sched: [4:0.50]
+; SKX-NEXT: retq # sched: [2:1.00]
%div = fdiv fast float 1.0, %x
ret float %div
}
@@ -242,16 +255,27 @@ define float @f32_two_step(float %x) #2 {
; HASWELL-NO-FMA-NEXT: vaddss %xmm0, %xmm1, %xmm0
; HASWELL-NO-FMA-NEXT: retq
;
-; AVX512-LABEL: f32_two_step:
-; AVX512: # BB#0:
-; AVX512-NEXT: vrcp14ss %xmm0, %xmm0, %xmm1
-; AVX512-NEXT: vmovss {{.*#+}} xmm2 = mem[0],zero,zero,zero sched: [1:0.50]
-; AVX512-NEXT: vmovaps %xmm1, %xmm3 # sched: [1:1.00]
-; AVX512-NEXT: vfnmadd213ss %xmm2, %xmm0, %xmm3 # sched: [5:0.50]
-; AVX512-NEXT: vfmadd132ss %xmm1, %xmm1, %xmm3 # sched: [5:0.50]
-; AVX512-NEXT: vfnmadd213ss %xmm2, %xmm3, %xmm0 # sched: [5:0.50]
-; AVX512-NEXT: vfmadd132ss %xmm3, %xmm3, %xmm0 # sched: [5:0.50]
-; AVX512-NEXT: retq # sched: [2:1.00]
+; KNL-LABEL: f32_two_step:
+; KNL: # BB#0:
+; KNL-NEXT: vrcp14ss %xmm0, %xmm0, %xmm1
+; KNL-NEXT: vmovss {{.*#+}} xmm2 = mem[0],zero,zero,zero sched: [1:0.50]
+; KNL-NEXT: vmovaps %xmm1, %xmm3 # sched: [1:1.00]
+; KNL-NEXT: vfnmadd213ss %xmm2, %xmm0, %xmm3 # sched: [5:0.50]
+; KNL-NEXT: vfmadd132ss %xmm1, %xmm1, %xmm3 # sched: [5:0.50]
+; KNL-NEXT: vfnmadd213ss %xmm2, %xmm3, %xmm0 # sched: [5:0.50]
+; KNL-NEXT: vfmadd132ss %xmm3, %xmm3, %xmm0 # sched: [5:0.50]
+; KNL-NEXT: retq # sched: [2:1.00]
+;
+; SKX-LABEL: f32_two_step:
+; SKX: # BB#0:
+; SKX-NEXT: vrcp14ss %xmm0, %xmm0, %xmm1
+; SKX-NEXT: vmovss {{.*#+}} xmm2 = mem[0],zero,zero,zero sched: [1:0.50]
+; SKX-NEXT: vmovaps %xmm1, %xmm3 # sched: [1:1.00]
+; SKX-NEXT: vfnmadd213ss %xmm2, %xmm0, %xmm3 # sched: [4:0.50]
+; SKX-NEXT: vfmadd132ss %xmm1, %xmm1, %xmm3 # sched: [4:0.50]
+; SKX-NEXT: vfnmadd213ss %xmm2, %xmm3, %xmm0 # sched: [4:0.50]
+; SKX-NEXT: vfmadd132ss %xmm3, %xmm3, %xmm0 # sched: [4:0.50]
+; SKX-NEXT: retq # sched: [2:1.00]
%div = fdiv fast float 1.0, %x
ret float %div
}
@@ -300,11 +324,17 @@ define <4 x float> @v4f32_no_estimate(<4 x float> %x) #0 {
; HASWELL-NO-FMA-NEXT: vdivps %xmm0, %xmm1, %xmm0
; HASWELL-NO-FMA-NEXT: retq
;
-; AVX512-LABEL: v4f32_no_estimate:
-; AVX512: # BB#0:
-; AVX512-NEXT: vbroadcastss {{.*#+}} xmm1 = [1,1,1,1] sched: [1:0.50]
-; AVX512-NEXT: vdivps %xmm0, %xmm1, %xmm0 # sched: [13:1.00]
-; AVX512-NEXT: retq # sched: [2:1.00]
+; KNL-LABEL: v4f32_no_estimate:
+; KNL: # BB#0:
+; KNL-NEXT: vbroadcastss {{.*#+}} xmm1 = [1,1,1,1] sched: [1:0.50]
+; KNL-NEXT: vdivps %xmm0, %xmm1, %xmm0 # sched: [13:1.00]
+; KNL-NEXT: retq # sched: [2:1.00]
+;
+; SKX-LABEL: v4f32_no_estimate:
+; SKX: # BB#0:
+; SKX-NEXT: vbroadcastss {{.*#+}} xmm1 = [1,1,1,1] sched: [1:0.50]
+; SKX-NEXT: vdivps %xmm0, %xmm1, %xmm0 # sched: [11:1.00]
+; SKX-NEXT: retq # sched: [2:1.00]
%div = fdiv fast <4 x float> <float 1.0, float 1.0, float 1.0, float 1.0>, %x
ret <4 x float> %div
}
@@ -388,7 +418,7 @@ define <4 x float> @v4f32_one_step(<4 x float> %x) #1 {
; SKX: # BB#0:
; SKX-NEXT: vrcp14ps %xmm0, %xmm1
; SKX-NEXT: vfnmadd213ps {{.*}}(%rip){1to4}, %xmm1, %xmm0
-; SKX-NEXT: vfmadd132ps %xmm1, %xmm1, %xmm0 # sched: [5:0.50]
+; SKX-NEXT: vfmadd132ps %xmm1, %xmm1, %xmm0 # sched: [4:0.50]
; SKX-NEXT: retq # sched: [2:1.00]
%div = fdiv fast <4 x float> <float 1.0, float 1.0, float 1.0, float 1.0>, %x
ret <4 x float> %div
@@ -506,10 +536,10 @@ define <4 x float> @v4f32_two_step(<4 x float> %x) #2 {
; SKX-NEXT: vrcp14ps %xmm0, %xmm1
; SKX-NEXT: vbroadcastss {{.*#+}} xmm2 = [1,1,1,1] sched: [1:0.50]
; SKX-NEXT: vmovaps %xmm1, %xmm3 # sched: [1:1.00]
-; SKX-NEXT: vfnmadd213ps %xmm2, %xmm0, %xmm3 # sched: [5:0.50]
-; SKX-NEXT: vfmadd132ps %xmm1, %xmm1, %xmm3 # sched: [5:0.50]
-; SKX-NEXT: vfnmadd213ps %xmm2, %xmm3, %xmm0 # sched: [5:0.50]
-; SKX-NEXT: vfmadd132ps %xmm3, %xmm3, %xmm0 # sched: [5:0.50]
+; SKX-NEXT: vfnmadd213ps %xmm2, %xmm0, %xmm3 # sched: [4:0.50]
+; SKX-NEXT: vfmadd132ps %xmm1, %xmm1, %xmm3 # sched: [4:0.50]
+; SKX-NEXT: vfnmadd213ps %xmm2, %xmm3, %xmm0 # sched: [4:0.50]
+; SKX-NEXT: vfmadd132ps %xmm3, %xmm3, %xmm0 # sched: [4:0.50]
; SKX-NEXT: retq # sched: [2:1.00]
%div = fdiv fast <4 x float> <float 1.0, float 1.0, float 1.0, float 1.0>, %x
ret <4 x float> %div
@@ -562,11 +592,17 @@ define <8 x float> @v8f32_no_estimate(<8 x float> %x) #0 {
; HASWELL-NO-FMA-NEXT: vdivps %ymm0, %ymm1, %ymm0
; HASWELL-NO-FMA-NEXT: retq
;
-; AVX512-LABEL: v8f32_no_estimate:
-; AVX512: # BB#0:
-; AVX512-NEXT: vbroadcastss {{.*#+}} ymm1 = [1,1,1,1,1,1,1,1] sched: [1:0.50]
-; AVX512-NEXT: vdivps %ymm0, %ymm1, %ymm0 # sched: [21:2.00]
-; AVX512-NEXT: retq # sched: [2:1.00]
+; KNL-LABEL: v8f32_no_estimate:
+; KNL: # BB#0:
+; KNL-NEXT: vbroadcastss {{.*#+}} ymm1 = [1,1,1,1,1,1,1,1] sched: [1:0.50]
+; KNL-NEXT: vdivps %ymm0, %ymm1, %ymm0 # sched: [21:2.00]
+; KNL-NEXT: retq # sched: [2:1.00]
+;
+; SKX-LABEL: v8f32_no_estimate:
+; SKX: # BB#0:
+; SKX-NEXT: vbroadcastss {{.*#+}} ymm1 = [1,1,1,1,1,1,1,1] sched: [1:0.50]
+; SKX-NEXT: vdivps %ymm0, %ymm1, %ymm0 # sched: [11:1.00]
+; SKX-NEXT: retq # sched: [2:1.00]
%div = fdiv fast <8 x float> <float 1.0, float 1.0, float 1.0, float 1.0, float 1.0, float 1.0, float 1.0, float 1.0>, %x
ret <8 x float> %div
}
@@ -657,7 +693,7 @@ define <8 x float> @v8f32_one_step(<8 x float> %x) #1 {
; SKX: # BB#0:
; SKX-NEXT: vrcp14ps %ymm0, %ymm1
; SKX-NEXT: vfnmadd213ps {{.*}}(%rip){1to8}, %ymm1, %ymm0
-; SKX-NEXT: vfmadd132ps %ymm1, %ymm1, %ymm0 # sched: [5:0.50]
+; SKX-NEXT: vfmadd132ps %ymm1, %ymm1, %ymm0 # sched: [4:0.50]
; SKX-NEXT: retq # sched: [2:1.00]
%div = fdiv fast <8 x float> <float 1.0, float 1.0, float 1.0, float 1.0, float 1.0, float 1.0, float 1.0, float 1.0>, %x
ret <8 x float> %div
@@ -788,10 +824,10 @@ define <8 x float> @v8f32_two_step(<8 x float> %x) #2 {
; SKX-NEXT: vrcp14ps %ymm0, %ymm1
; SKX-NEXT: vbroadcastss {{.*#+}} ymm2 = [1,1,1,1,1,1,1,1] sched: [1:0.50]
; SKX-NEXT: vmovaps %ymm1, %ymm3 # sched: [1:1.00]
-; SKX-NEXT: vfnmadd213ps %ymm2, %ymm0, %ymm3 # sched: [5:0.50]
-; SKX-NEXT: vfmadd132ps %ymm1, %ymm1, %ymm3 # sched: [5:0.50]
-; SKX-NEXT: vfnmadd213ps %ymm2, %ymm3, %ymm0 # sched: [5:0.50]
-; SKX-NEXT: vfmadd132ps %ymm3, %ymm3, %ymm0 # sched: [5:0.50]
+; SKX-NEXT: vfnmadd213ps %ymm2, %ymm0, %ymm3 # sched: [4:0.50]
+; SKX-NEXT: vfmadd132ps %ymm1, %ymm1, %ymm3 # sched: [4:0.50]
+; SKX-NEXT: vfnmadd213ps %ymm2, %ymm3, %ymm0 # sched: [4:0.50]
+; SKX-NEXT: vfmadd132ps %ymm3, %ymm3, %ymm0 # sched: [4:0.50]
; SKX-NEXT: retq # sched: [2:1.00]
%div = fdiv fast <8 x float> <float 1.0, float 1.0, float 1.0, float 1.0, float 1.0, float 1.0, float 1.0, float 1.0>, %x
ret <8 x float> %div
OpenPOWER on IntegriCloud