[llvm] r336404 - [x86]Add a test case to show missed vfnmadd generation.

Easwaran Raman via llvm-commits llvm-commits at lists.llvm.org
Thu Jul 5 17:31:33 PDT 2018


Author: eraman
Date: Thu Jul  5 17:31:33 2018
New Revision: 336404

URL: http://llvm.org/viewvc/llvm-project?rev=336404&view=rev
Log:
[x86]Add a test case to show missed vfnmadd generation.

Modified:
    llvm/trunk/test/CodeGen/X86/avx2-fma-fneg-combine.ll

Modified: llvm/trunk/test/CodeGen/X86/avx2-fma-fneg-combine.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/avx2-fma-fneg-combine.ll?rev=336404&r1=336403&r2=336404&view=diff
==============================================================================
--- llvm/trunk/test/CodeGen/X86/avx2-fma-fneg-combine.ll (original)
+++ llvm/trunk/test/CodeGen/X86/avx2-fma-fneg-combine.ll Thu Jul  5 17:31:33 2018
@@ -142,4 +142,29 @@ entry:
 
 }
 
+define <8 x float> @test8(float %a, <8 x float> %b, <8 x float> %c)  {
+; X32-LABEL: test8:
+; X32:       # %bb.0: # %entry
+; X32-NEXT:    vmovss {{.*#+}} xmm2 = mem[0],zero,zero,zero
+; X32-NEXT:    vbroadcastss {{.*#+}} xmm3 = [-0,-0,-0,-0]
+; X32-NEXT:    vxorps %xmm3, %xmm2, %xmm2
+; X32-NEXT:    vbroadcastss %xmm2, %ymm2
+; X32-NEXT:    vfmadd213ps {{.*#+}} ymm0 = (ymm2 * ymm0) + ymm1
+; X32-NEXT:    retl
+;
+; X64-LABEL: test8:
+; X64:       # %bb.0: # %entry
+; X64-NEXT:    vbroadcastss {{.*#+}} xmm3 = [-0,-0,-0,-0]
+; X64-NEXT:    vxorps %xmm3, %xmm0, %xmm0
+; X64-NEXT:    vbroadcastss %xmm0, %ymm0
+; X64-NEXT:    vfmadd213ps {{.*#+}} ymm0 = (ymm1 * ymm0) + ymm2
+; X64-NEXT:    retq
+entry:
+  %0 = fsub float -0.0, %a
+  %1 = insertelement <8 x float> undef, float %0, i32 0
+  %2 = shufflevector <8 x float> %1, <8 x float> undef, <8 x i32> zeroinitializer
+  %3 = tail call <8 x float> @llvm.fma.v8f32(<8 x float> %2, <8 x float> %b, <8 x float> %c)
+  ret <8 x float> %3
+}
+
 declare <8 x float> @llvm.fma.v8f32(<8 x float> %a, <8 x float> %b, <8 x float> %c)




More information about the llvm-commits mailing list