summaryrefslogtreecommitdiffstats
path: root/llvm/test/CodeGen/X86/fma_patterns_wide.ll
diff options
context:
space:
mode:
authorCraig Topper <craig.topper@gmail.com>2016-07-23 07:16:56 +0000
committerCraig Topper <craig.topper@gmail.com>2016-07-23 07:16:56 +0000
commitb6519db90dcb422020fcc7e78f655ad2f3821453 (patch)
treeeceb36551f03712a47060e5793c58ea8a4ea671d /llvm/test/CodeGen/X86/fma_patterns_wide.ll
parent6172b0b3e9544599f3874be00fe6975651c38bbd (diff)
downloadbcm5719-llvm-b6519db90dcb422020fcc7e78f655ad2f3821453.tar.gz
bcm5719-llvm-b6519db90dcb422020fcc7e78f655ad2f3821453.zip
[AVX512] Implement commuting support for EVEX encoded FMA3 instructions.
llvm-svn: 276521
Diffstat (limited to 'llvm/test/CodeGen/X86/fma_patterns_wide.ll')
-rw-r--r--llvm/test/CodeGen/X86/fma_patterns_wide.ll19
1 files changed, 7 insertions, 12 deletions
diff --git a/llvm/test/CodeGen/X86/fma_patterns_wide.ll b/llvm/test/CodeGen/X86/fma_patterns_wide.ll
index bf9291c7119..98b6c496e08 100644
--- a/llvm/test/CodeGen/X86/fma_patterns_wide.ll
+++ b/llvm/test/CodeGen/X86/fma_patterns_wide.ll
@@ -218,8 +218,7 @@ define <16 x float> @test_16f32_fmadd_load(<16 x float>* %a0, <16 x float> %a1,
; AVX512-LABEL: test_16f32_fmadd_load:
; AVX512: # BB#0:
; AVX512-NEXT: vmovaps (%rdi), %zmm2
-; AVX512-NEXT: vfmadd213ps %zmm1, %zmm0, %zmm2
-; AVX512-NEXT: vmovaps %zmm2, %zmm0
+; AVX512-NEXT: vfmadd213ps %zmm1, %zmm2, %zmm0
; AVX512-NEXT: retq
%x = load <16 x float>, <16 x float>* %a0
%y = fmul <16 x float> %x, %a1
@@ -243,8 +242,7 @@ define <8 x double> @test_8f64_fmsub_load(<8 x double>* %a0, <8 x double> %a1, <
; AVX512-LABEL: test_8f64_fmsub_load:
; AVX512: # BB#0:
; AVX512-NEXT: vmovapd (%rdi), %zmm2
-; AVX512-NEXT: vfmsub213pd %zmm1, %zmm0, %zmm2
-; AVX512-NEXT: vmovapd %zmm2, %zmm0
+; AVX512-NEXT: vfmsub213pd %zmm1, %zmm2, %zmm0
; AVX512-NEXT: retq
%x = load <8 x double>, <8 x double>* %a0
%y = fmul <8 x double> %x, %a1
@@ -543,9 +541,8 @@ define <16 x float> @test_v16f32_interp(<16 x float> %x, <16 x float> %y, <16 x
;
; AVX512-LABEL: test_v16f32_interp:
; AVX512: # BB#0:
-; AVX512-NEXT: vmovaps %zmm2, %zmm3
-; AVX512-NEXT: vfnmadd213ps %zmm1, %zmm1, %zmm3
-; AVX512-NEXT: vfmadd213ps %zmm3, %zmm2, %zmm0
+; AVX512-NEXT: vfnmadd213ps %zmm1, %zmm2, %zmm1
+; AVX512-NEXT: vfmadd213ps %zmm1, %zmm2, %zmm0
; AVX512-NEXT: retq
%t1 = fsub <16 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, float 1.0, float 1.0, float 1.0, float 1.0, float 1.0, float 1.0, float 1.0, float 1.0>, %t
%tx = fmul <16 x float> %x, %t
@@ -573,9 +570,8 @@ define <8 x double> @test_v8f64_interp(<8 x double> %x, <8 x double> %y, <8 x do
;
; AVX512-LABEL: test_v8f64_interp:
; AVX512: # BB#0:
-; AVX512-NEXT: vmovapd %zmm2, %zmm3
-; AVX512-NEXT: vfnmadd213pd %zmm1, %zmm1, %zmm3
-; AVX512-NEXT: vfmadd213pd %zmm3, %zmm2, %zmm0
+; AVX512-NEXT: vfnmadd213pd %zmm1, %zmm2, %zmm1
+; AVX512-NEXT: vfmadd213pd %zmm1, %zmm2, %zmm0
; AVX512-NEXT: retq
%t1 = fsub <8 x double> <double 1.0, double 1.0, double 1.0, double 1.0, double 1.0, double 1.0, double 1.0, double 1.0>, %t
%tx = fmul <8 x double> %x, %t
@@ -728,8 +724,7 @@ define <16 x float> @test_v16f32_fma_fmul_x_c1_c2_y(<16 x float> %x, <16 x float
;
; AVX512-LABEL: test_v16f32_fma_fmul_x_c1_c2_y:
; AVX512: # BB#0:
-; AVX512-NEXT: vfmadd231ps {{.*}}(%rip), %zmm0, %zmm1
-; AVX512-NEXT: vmovaps %zmm1, %zmm0
+; AVX512-NEXT: vfmadd132ps {{.*}}(%rip), %zmm1, %zmm0
; AVX512-NEXT: retq
%m0 = fmul <16 x float> %x, <float 1.0, float 2.0, float 3.0, float 4.0, float 5.0, float 6.0, float 7.0, float 8.0, float 9.0, float 10.0, float 11.0, float 12.0, float 13.0, float 14.0, float 15.0, float 16.0>
%m1 = fmul <16 x float> %m0, <float 16.0, float 15.0, float 14.0, float 13.0, float 12.0, float 11.0, float 10.0, float 9.0, float 8.0, float 7.0, float 6.0, float 5.0, float 4.0, float 3.0, float 2.0, float 1.0>
OpenPOWER on IntegriCloud