Author: Simon Pilgrim Date: 2021-01-22T10:05:22Z New Revision: 636b87785c1de64134254b688d30ab1248b16ed2
URL: https://github.com/llvm/llvm-project/commit/636b87785c1de64134254b688d30ab1248b16ed2 DIFF: https://github.com/llvm/llvm-project/commit/636b87785c1de64134254b688d30ab1248b16ed2.diff LOG: [X86][SSE] Add PR48823 HSUB test case Added: Modified: llvm/test/CodeGen/X86/haddsub-3.ll Removed: ################################################################################ diff --git a/llvm/test/CodeGen/X86/haddsub-3.ll b/llvm/test/CodeGen/X86/haddsub-3.ll index 05ab83f8604de..651ab4ef39355 100644 --- a/llvm/test/CodeGen/X86/haddsub-3.ll +++ b/llvm/test/CodeGen/X86/haddsub-3.ll @@ -156,3 +156,56 @@ define <4 x double> @PR41414(i64 %x, <4 x double> %y) { %t3 = fadd <4 x double> zeroinitializer, %t2 ret <4 x double> %t3 } + +define <4 x float> @PR48823(<4 x float> %0, <4 x float> %1) { +; SSE2-LABEL: PR48823: +; SSE2: # %bb.0: +; SSE2-NEXT: movaps %xmm0, %xmm2 +; SSE2-NEXT: shufps {{.*#+}} xmm2 = xmm2[1,1],xmm1[2,3] +; SSE2-NEXT: shufps {{.*#+}} xmm0 = xmm0[0,1],xmm1[2,2] +; SSE2-NEXT: subps %xmm2, %xmm0 +; SSE2-NEXT: retq +; +; SSSE3-SLOW-LABEL: PR48823: +; SSSE3-SLOW: # %bb.0: +; SSSE3-SLOW-NEXT: movaps %xmm0, %xmm2 +; SSSE3-SLOW-NEXT: shufps {{.*#+}} xmm2 = xmm2[1,1],xmm1[2,3] +; SSSE3-SLOW-NEXT: shufps {{.*#+}} xmm0 = xmm0[0,1],xmm1[2,2] +; SSSE3-SLOW-NEXT: subps %xmm2, %xmm0 +; SSSE3-SLOW-NEXT: retq +; +; SSSE3-FAST-LABEL: PR48823: +; SSSE3-FAST: # %bb.0: +; SSSE3-FAST-NEXT: movaps %xmm0, %xmm2 +; SSSE3-FAST-NEXT: shufps {{.*#+}} xmm2 = xmm2[1,1],xmm1[2,3] +; SSSE3-FAST-NEXT: shufps {{.*#+}} xmm0 = xmm0[0,1],xmm1[2,2] +; SSSE3-FAST-NEXT: subps %xmm2, %xmm0 +; SSSE3-FAST-NEXT: retq +; +; AVX1-SLOW-LABEL: PR48823: +; AVX1-SLOW: # %bb.0: +; AVX1-SLOW-NEXT: vshufps {{.*#+}} xmm2 = xmm0[1,1],xmm1[2,3] +; AVX1-SLOW-NEXT: vshufps {{.*#+}} xmm0 = xmm0[0,1],xmm1[2,2] +; AVX1-SLOW-NEXT: vsubps %xmm2, %xmm0, %xmm0 +; AVX1-SLOW-NEXT: retq +; +; AVX1-FAST-LABEL: PR48823: +; AVX1-FAST: # %bb.0: +; AVX1-FAST-NEXT: vshufps {{.*#+}} xmm2 = xmm0[1,1],xmm1[2,3] +; AVX1-FAST-NEXT: vshufps {{.*#+}} xmm0 = xmm0[0,1],xmm1[2,2] +; AVX1-FAST-NEXT: vsubps %xmm2, %xmm0, %xmm0 +; AVX1-FAST-NEXT: retq +; +; AVX2-LABEL: PR48823: +; AVX2: # %bb.0: +; AVX2-NEXT: vshufps {{.*#+}} xmm2 = xmm0[1,1],xmm1[2,3] +; AVX2-NEXT: vshufps {{.*#+}} xmm0 = xmm0[0,1],xmm1[2,2] +; AVX2-NEXT: vsubps %xmm2, %xmm0, %xmm0 +; AVX2-NEXT: retq + %3 = shufflevector <4 x float> %0, <4 x float> poison, <4 x i32> <i32 1, i32 undef, i32 undef, i32 undef> + %4 = fsub <4 x float> %0, %3 + %5 = shufflevector <4 x float> %1, <4 x float> poison, <4 x i32> <i32 undef, i32 undef, i32 undef, i32 2> + %6 = fsub <4 x float> %5, %1 + %7 = shufflevector <4 x float> %4, <4 x float> %6, <4 x i32> <i32 0, i32 undef, i32 undef, i32 7> + ret <4 x float> %7 +} _______________________________________________ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits