diff options
Diffstat (limited to 'llvm/test/CodeGen/X86/vector-shuffle-128-v4.ll')
| -rw-r--r-- | llvm/test/CodeGen/X86/vector-shuffle-128-v4.ll | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/llvm/test/CodeGen/X86/vector-shuffle-128-v4.ll b/llvm/test/CodeGen/X86/vector-shuffle-128-v4.ll index d5bb55a2caa..dcd8ab166cf 100644 --- a/llvm/test/CodeGen/X86/vector-shuffle-128-v4.ll +++ b/llvm/test/CodeGen/X86/vector-shuffle-128-v4.ll @@ -119,6 +119,36 @@ define <4 x float> @shuffle_v4f32_3210(<4 x float> %a, <4 x float> %b) { %shuffle = shufflevector <4 x float> %a, <4 x float> %b, <4 x i32> <i32 3, i32 2, i32 1, i32 0> ret <4 x float> %shuffle } +define <4 x float> @shuffle_v4f32_0022(<4 x float> %a, <4 x float> %b) { +; SSE2-LABEL: @shuffle_v4f32_0022 +; SSE2: shufps {{.*}} # xmm0 = xmm0[0,0,2,2] +; SSE2-NEXT: retq +; +; SSE41-LABEL: @shuffle_v4f32_0022 +; SSE41: movsldup {{.*}} # xmm0 = xmm0[0,0,2,2] +; SSE41-NEXT: retq +; +; AVX1-LABEL: @shuffle_v4f32_0022 +; AVX1: vmovsldup {{.*}} # xmm0 = xmm0[0,0,2,2] +; AVX1-NEXT: retq + %shuffle = shufflevector <4 x float> %a, <4 x float> %b, <4 x i32> <i32 0, i32 0, i32 2, i32 2> + ret <4 x float> %shuffle +} +define <4 x float> @shuffle_v4f32_1133(<4 x float> %a, <4 x float> %b) { +; SSE2-LABEL: @shuffle_v4f32_1133 +; SSE2: shufps {{.*}} # xmm0 = xmm0[1,1,3,3] +; SSE2-NEXT: retq +; +; SSE41-LABEL: @shuffle_v4f32_1133 +; SSE41: movshdup {{.*}} # xmm0 = xmm0[1,1,3,3] +; SSE41-NEXT: retq +; +; AVX1-LABEL: @shuffle_v4f32_1133 +; AVX1: vmovshdup {{.*}} # xmm0 = xmm0[1,1,3,3] +; AVX1-NEXT: retq + %shuffle = shufflevector <4 x float> %a, <4 x float> %b, <4 x i32> <i32 1, i32 1, i32 3, i32 3> + ret <4 x float> %shuffle +} define <4 x i32> @shuffle_v4i32_0124(<4 x i32> %a, <4 x i32> %b) { ; SSE2-LABEL: @shuffle_v4i32_0124 |

