diff options
Diffstat (limited to 'test/CodeGen/X86/merge-consecutive-loads-256.ll')
| -rw-r--r-- | test/CodeGen/X86/merge-consecutive-loads-256.ll | 198 |
1 files changed, 76 insertions, 122 deletions
diff --git a/test/CodeGen/X86/merge-consecutive-loads-256.ll b/test/CodeGen/X86/merge-consecutive-loads-256.ll index b00d732889e36..5693149b59210 100644 --- a/test/CodeGen/X86/merge-consecutive-loads-256.ll +++ b/test/CodeGen/X86/merge-consecutive-loads-256.ll @@ -8,12 +8,12 @@ define <4 x double> @merge_4f64_2f64_23(<2 x double>* %ptr) nounwind uwtable noinline ssp { ; AVX-LABEL: merge_4f64_2f64_23: -; AVX: # BB#0: +; AVX: # %bb.0: ; AVX-NEXT: vmovups 32(%rdi), %ymm0 ; AVX-NEXT: retq ; ; X32-AVX-LABEL: merge_4f64_2f64_23: -; X32-AVX: # BB#0: +; X32-AVX: # %bb.0: ; X32-AVX-NEXT: movl {{[0-9]+}}(%esp), %eax ; X32-AVX-NEXT: vmovups 32(%eax), %ymm0 ; X32-AVX-NEXT: retl @@ -27,18 +27,14 @@ define <4 x double> @merge_4f64_2f64_23(<2 x double>* %ptr) nounwind uwtable noi define <4 x double> @merge_4f64_2f64_2z(<2 x double>* %ptr) nounwind uwtable noinline ssp { ; AVX-LABEL: merge_4f64_2f64_2z: -; AVX: # BB#0: +; AVX: # %bb.0: ; AVX-NEXT: vmovaps 32(%rdi), %xmm0 -; AVX-NEXT: vxorps %xmm1, %xmm1, %xmm1 -; AVX-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm0 ; AVX-NEXT: retq ; ; X32-AVX-LABEL: merge_4f64_2f64_2z: -; X32-AVX: # BB#0: +; X32-AVX: # %bb.0: ; X32-AVX-NEXT: movl {{[0-9]+}}(%esp), %eax ; X32-AVX-NEXT: vmovaps 32(%eax), %xmm0 -; X32-AVX-NEXT: vxorps %xmm1, %xmm1, %xmm1 -; X32-AVX-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm0 ; X32-AVX-NEXT: retl %ptr0 = getelementptr inbounds <2 x double>, <2 x double>* %ptr, i64 2 %val0 = load <2 x double>, <2 x double>* %ptr0 @@ -48,12 +44,12 @@ define <4 x double> @merge_4f64_2f64_2z(<2 x double>* %ptr) nounwind uwtable noi define <4 x double> @merge_4f64_f64_2345(double* %ptr) nounwind uwtable noinline ssp { ; AVX-LABEL: merge_4f64_f64_2345: -; AVX: # BB#0: +; AVX: # %bb.0: ; AVX-NEXT: vmovups 16(%rdi), %ymm0 ; AVX-NEXT: retq ; ; X32-AVX-LABEL: merge_4f64_f64_2345: -; X32-AVX: # BB#0: +; X32-AVX: # %bb.0: ; X32-AVX-NEXT: movl {{[0-9]+}}(%esp), %eax ; X32-AVX-NEXT: vmovups 16(%eax), %ymm0 ; X32-AVX-NEXT: retl @@ -74,12 +70,12 @@ define <4 x double> @merge_4f64_f64_2345(double* %ptr) nounwind uwtable noinline define <4 x double> @merge_4f64_f64_3zuu(double* %ptr) nounwind uwtable noinline ssp { ; AVX-LABEL: merge_4f64_f64_3zuu: -; AVX: # BB#0: +; AVX: # %bb.0: ; AVX-NEXT: vmovsd {{.*#+}} xmm0 = mem[0],zero ; AVX-NEXT: retq ; ; X32-AVX-LABEL: merge_4f64_f64_3zuu: -; X32-AVX: # BB#0: +; X32-AVX: # %bb.0: ; X32-AVX-NEXT: movl {{[0-9]+}}(%esp), %eax ; X32-AVX-NEXT: vmovsd {{.*#+}} xmm0 = mem[0],zero ; X32-AVX-NEXT: retl @@ -92,12 +88,12 @@ define <4 x double> @merge_4f64_f64_3zuu(double* %ptr) nounwind uwtable noinline define <4 x double> @merge_4f64_f64_34uu(double* %ptr) nounwind uwtable noinline ssp { ; AVX-LABEL: merge_4f64_f64_34uu: -; AVX: # BB#0: +; AVX: # %bb.0: ; AVX-NEXT: vmovups 24(%rdi), %xmm0 ; AVX-NEXT: retq ; ; X32-AVX-LABEL: merge_4f64_f64_34uu: -; X32-AVX: # BB#0: +; X32-AVX: # %bb.0: ; X32-AVX-NEXT: movl {{[0-9]+}}(%esp), %eax ; X32-AVX-NEXT: vmovups 24(%eax), %xmm0 ; X32-AVX-NEXT: retl @@ -112,18 +108,14 @@ define <4 x double> @merge_4f64_f64_34uu(double* %ptr) nounwind uwtable noinline define <4 x double> @merge_4f64_f64_45zz(double* %ptr) nounwind uwtable noinline ssp { ; AVX-LABEL: merge_4f64_f64_45zz: -; AVX: # BB#0: -; AVX-NEXT: vmovups 32(%rdi), %xmm0 -; AVX-NEXT: vxorps %xmm1, %xmm1, %xmm1 -; AVX-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm0 +; AVX: # %bb.0: +; AVX-NEXT: vmovaps 32(%rdi), %xmm0 ; AVX-NEXT: retq ; ; X32-AVX-LABEL: merge_4f64_f64_45zz: -; X32-AVX: # BB#0: +; X32-AVX: # %bb.0: ; X32-AVX-NEXT: movl {{[0-9]+}}(%esp), %eax -; X32-AVX-NEXT: vmovups 32(%eax), %xmm0 -; X32-AVX-NEXT: vxorps %xmm1, %xmm1, %xmm1 -; X32-AVX-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm0 +; X32-AVX-NEXT: vmovaps 32(%eax), %xmm0 ; X32-AVX-NEXT: retl %ptr0 = getelementptr inbounds double, double* %ptr, i64 4 %ptr1 = getelementptr inbounds double, double* %ptr, i64 5 @@ -136,15 +128,15 @@ define <4 x double> @merge_4f64_f64_45zz(double* %ptr) nounwind uwtable noinline define <4 x double> @merge_4f64_f64_34z6(double* %ptr) nounwind uwtable noinline ssp { ; AVX-LABEL: merge_4f64_f64_34z6: -; AVX: # BB#0: -; AVX-NEXT: vxorpd %ymm0, %ymm0, %ymm0 +; AVX: # %bb.0: +; AVX-NEXT: vxorpd %xmm0, %xmm0, %xmm0 ; AVX-NEXT: vblendpd {{.*#+}} ymm0 = mem[0,1],ymm0[2],mem[3] ; AVX-NEXT: retq ; ; X32-AVX-LABEL: merge_4f64_f64_34z6: -; X32-AVX: # BB#0: +; X32-AVX: # %bb.0: ; X32-AVX-NEXT: movl {{[0-9]+}}(%esp), %eax -; X32-AVX-NEXT: vxorpd %ymm0, %ymm0, %ymm0 +; X32-AVX-NEXT: vxorpd %xmm0, %xmm0, %xmm0 ; X32-AVX-NEXT: vblendpd {{.*#+}} ymm0 = mem[0,1],ymm0[2],mem[3] ; X32-AVX-NEXT: retl %ptr0 = getelementptr inbounds double, double* %ptr, i64 3 @@ -162,18 +154,14 @@ define <4 x double> @merge_4f64_f64_34z6(double* %ptr) nounwind uwtable noinline define <4 x i64> @merge_4i64_2i64_3z(<2 x i64>* %ptr) nounwind uwtable noinline ssp { ; AVX-LABEL: merge_4i64_2i64_3z: -; AVX: # BB#0: +; AVX: # %bb.0: ; AVX-NEXT: vmovaps 48(%rdi), %xmm0 -; AVX-NEXT: vxorps %xmm1, %xmm1, %xmm1 -; AVX-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm0 ; AVX-NEXT: retq ; ; X32-AVX-LABEL: merge_4i64_2i64_3z: -; X32-AVX: # BB#0: +; X32-AVX: # %bb.0: ; X32-AVX-NEXT: movl {{[0-9]+}}(%esp), %eax ; X32-AVX-NEXT: vmovaps 48(%eax), %xmm0 -; X32-AVX-NEXT: vxorps %xmm1, %xmm1, %xmm1 -; X32-AVX-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm0 ; X32-AVX-NEXT: retl %ptr0 = getelementptr inbounds <2 x i64>, <2 x i64>* %ptr, i64 3 %val0 = load <2 x i64>, <2 x i64>* %ptr0 @@ -183,12 +171,12 @@ define <4 x i64> @merge_4i64_2i64_3z(<2 x i64>* %ptr) nounwind uwtable noinline define <4 x i64> @merge_4i64_i64_1234(i64* %ptr) nounwind uwtable noinline ssp { ; AVX-LABEL: merge_4i64_i64_1234: -; AVX: # BB#0: +; AVX: # %bb.0: ; AVX-NEXT: vmovups 8(%rdi), %ymm0 ; AVX-NEXT: retq ; ; X32-AVX-LABEL: merge_4i64_i64_1234: -; X32-AVX: # BB#0: +; X32-AVX: # %bb.0: ; X32-AVX-NEXT: movl {{[0-9]+}}(%esp), %eax ; X32-AVX-NEXT: vmovups 8(%eax), %ymm0 ; X32-AVX-NEXT: retl @@ -209,12 +197,12 @@ define <4 x i64> @merge_4i64_i64_1234(i64* %ptr) nounwind uwtable noinline ssp { define <4 x i64> @merge_4i64_i64_1zzu(i64* %ptr) nounwind uwtable noinline ssp { ; AVX-LABEL: merge_4i64_i64_1zzu: -; AVX: # BB#0: +; AVX: # %bb.0: ; AVX-NEXT: vmovsd {{.*#+}} xmm0 = mem[0],zero ; AVX-NEXT: retq ; ; X32-AVX-LABEL: merge_4i64_i64_1zzu: -; X32-AVX: # BB#0: +; X32-AVX: # %bb.0: ; X32-AVX-NEXT: movl {{[0-9]+}}(%esp), %eax ; X32-AVX-NEXT: vmovsd {{.*#+}} xmm0 = mem[0],zero ; X32-AVX-NEXT: retl @@ -228,18 +216,14 @@ define <4 x i64> @merge_4i64_i64_1zzu(i64* %ptr) nounwind uwtable noinline ssp { define <4 x i64> @merge_4i64_i64_23zz(i64* %ptr) nounwind uwtable noinline ssp { ; AVX-LABEL: merge_4i64_i64_23zz: -; AVX: # BB#0: -; AVX-NEXT: vmovups 16(%rdi), %xmm0 -; AVX-NEXT: vxorps %xmm1, %xmm1, %xmm1 -; AVX-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm0 +; AVX: # %bb.0: +; AVX-NEXT: vmovaps 16(%rdi), %xmm0 ; AVX-NEXT: retq ; ; X32-AVX-LABEL: merge_4i64_i64_23zz: -; X32-AVX: # BB#0: +; X32-AVX: # %bb.0: ; X32-AVX-NEXT: movl {{[0-9]+}}(%esp), %eax -; X32-AVX-NEXT: vmovups 16(%eax), %xmm0 -; X32-AVX-NEXT: vxorps %xmm1, %xmm1, %xmm1 -; X32-AVX-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm0 +; X32-AVX-NEXT: vmovaps 16(%eax), %xmm0 ; X32-AVX-NEXT: retl %ptr0 = getelementptr inbounds i64, i64* %ptr, i64 2 %ptr1 = getelementptr inbounds i64, i64* %ptr, i64 3 @@ -252,7 +236,7 @@ define <4 x i64> @merge_4i64_i64_23zz(i64* %ptr) nounwind uwtable noinline ssp { define <8 x float> @merge_8f32_2f32_23z5(<2 x float>* %ptr) nounwind uwtable noinline ssp { ; AVX1-LABEL: merge_8f32_2f32_23z5: -; AVX1: # BB#0: +; AVX1: # %bb.0: ; AVX1-NEXT: vmovq {{.*#+}} xmm0 = mem[0],zero ; AVX1-NEXT: vmovups 16(%rdi), %xmm1 ; AVX1-NEXT: vpslldq {{.*#+}} xmm0 = zero,zero,zero,zero,zero,zero,zero,zero,xmm0[0,1,2,3,4,5,6,7] @@ -260,7 +244,7 @@ define <8 x float> @merge_8f32_2f32_23z5(<2 x float>* %ptr) nounwind uwtable noi ; AVX1-NEXT: retq ; ; AVX2-LABEL: merge_8f32_2f32_23z5: -; AVX2: # BB#0: +; AVX2: # %bb.0: ; AVX2-NEXT: vmovq {{.*#+}} xmm0 = mem[0],zero ; AVX2-NEXT: vmovdqu 16(%rdi), %xmm1 ; AVX2-NEXT: vpslldq {{.*#+}} xmm0 = zero,zero,zero,zero,zero,zero,zero,zero,xmm0[0,1,2,3,4,5,6,7] @@ -268,7 +252,7 @@ define <8 x float> @merge_8f32_2f32_23z5(<2 x float>* %ptr) nounwind uwtable noi ; AVX2-NEXT: retq ; ; AVX512F-LABEL: merge_8f32_2f32_23z5: -; AVX512F: # BB#0: +; AVX512F: # %bb.0: ; AVX512F-NEXT: vmovq {{.*#+}} xmm0 = mem[0],zero ; AVX512F-NEXT: vmovdqu 16(%rdi), %xmm1 ; AVX512F-NEXT: vpslldq {{.*#+}} xmm0 = zero,zero,zero,zero,zero,zero,zero,zero,xmm0[0,1,2,3,4,5,6,7] @@ -276,9 +260,9 @@ define <8 x float> @merge_8f32_2f32_23z5(<2 x float>* %ptr) nounwind uwtable noi ; AVX512F-NEXT: retq ; ; X32-AVX-LABEL: merge_8f32_2f32_23z5: -; X32-AVX: # BB#0: +; X32-AVX: # %bb.0: ; X32-AVX-NEXT: movl {{[0-9]+}}(%esp), %eax -; X32-AVX-NEXT: vxorpd %ymm0, %ymm0, %ymm0 +; X32-AVX-NEXT: vxorpd %xmm0, %xmm0, %xmm0 ; X32-AVX-NEXT: vblendpd {{.*#+}} ymm0 = mem[0,1],ymm0[2],mem[3] ; X32-AVX-NEXT: retl %ptr0 = getelementptr inbounds <2 x float>, <2 x float>* %ptr, i64 2 @@ -295,13 +279,13 @@ define <8 x float> @merge_8f32_2f32_23z5(<2 x float>* %ptr) nounwind uwtable noi define <8 x float> @merge_8f32_4f32_z2(<4 x float>* %ptr) nounwind uwtable noinline ssp { ; AVX-LABEL: merge_8f32_4f32_z2: -; AVX: # BB#0: +; AVX: # %bb.0: ; AVX-NEXT: vxorps %xmm0, %xmm0, %xmm0 ; AVX-NEXT: vinsertf128 $1, 32(%rdi), %ymm0, %ymm0 ; AVX-NEXT: retq ; ; X32-AVX-LABEL: merge_8f32_4f32_z2: -; X32-AVX: # BB#0: +; X32-AVX: # %bb.0: ; X32-AVX-NEXT: movl {{[0-9]+}}(%esp), %eax ; X32-AVX-NEXT: vxorps %xmm0, %xmm0, %xmm0 ; X32-AVX-NEXT: vinsertf128 $1, 32(%eax), %ymm0, %ymm0 @@ -314,12 +298,12 @@ define <8 x float> @merge_8f32_4f32_z2(<4 x float>* %ptr) nounwind uwtable noinl define <8 x float> @merge_8f32_f32_12zzuuzz(float* %ptr) nounwind uwtable noinline ssp { ; AVX-LABEL: merge_8f32_f32_12zzuuzz: -; AVX: # BB#0: +; AVX: # %bb.0: ; AVX-NEXT: vmovsd {{.*#+}} xmm0 = mem[0],zero ; AVX-NEXT: retq ; ; X32-AVX-LABEL: merge_8f32_f32_12zzuuzz: -; X32-AVX: # BB#0: +; X32-AVX: # %bb.0: ; X32-AVX-NEXT: movl {{[0-9]+}}(%esp), %eax ; X32-AVX-NEXT: vmovsd {{.*#+}} xmm0 = mem[0],zero ; X32-AVX-NEXT: retl @@ -338,15 +322,15 @@ define <8 x float> @merge_8f32_f32_12zzuuzz(float* %ptr) nounwind uwtable noinli define <8 x float> @merge_8f32_f32_1u3u5zu8(float* %ptr) nounwind uwtable noinline ssp { ; AVX-LABEL: merge_8f32_f32_1u3u5zu8: -; AVX: # BB#0: -; AVX-NEXT: vxorps %ymm0, %ymm0, %ymm0 +; AVX: # %bb.0: +; AVX-NEXT: vxorps %xmm0, %xmm0, %xmm0 ; AVX-NEXT: vblendps {{.*#+}} ymm0 = mem[0,1,2,3,4],ymm0[5],mem[6,7] ; AVX-NEXT: retq ; ; X32-AVX-LABEL: merge_8f32_f32_1u3u5zu8: -; X32-AVX: # BB#0: +; X32-AVX: # %bb.0: ; X32-AVX-NEXT: movl {{[0-9]+}}(%esp), %eax -; X32-AVX-NEXT: vxorps %ymm0, %ymm0, %ymm0 +; X32-AVX-NEXT: vxorps %xmm0, %xmm0, %xmm0 ; X32-AVX-NEXT: vblendps {{.*#+}} ymm0 = mem[0,1,2,3,4],ymm0[5],mem[6,7] ; X32-AVX-NEXT: retl %ptr0 = getelementptr inbounds float, float* %ptr, i64 1 @@ -367,13 +351,13 @@ define <8 x float> @merge_8f32_f32_1u3u5zu8(float* %ptr) nounwind uwtable noinli define <8 x i32> @merge_8i32_4i32_z3(<4 x i32>* %ptr) nounwind uwtable noinline ssp { ; AVX-LABEL: merge_8i32_4i32_z3: -; AVX: # BB#0: +; AVX: # %bb.0: ; AVX-NEXT: vxorps %xmm0, %xmm0, %xmm0 ; AVX-NEXT: vinsertf128 $1, 48(%rdi), %ymm0, %ymm0 ; AVX-NEXT: retq ; ; X32-AVX-LABEL: merge_8i32_4i32_z3: -; X32-AVX: # BB#0: +; X32-AVX: # %bb.0: ; X32-AVX-NEXT: movl {{[0-9]+}}(%esp), %eax ; X32-AVX-NEXT: vxorps %xmm0, %xmm0, %xmm0 ; X32-AVX-NEXT: vinsertf128 $1, 48(%eax), %ymm0, %ymm0 @@ -386,14 +370,14 @@ define <8 x i32> @merge_8i32_4i32_z3(<4 x i32>* %ptr) nounwind uwtable noinline define <8 x i32> @merge_8i32_i32_56zz9uzz(i32* %ptr) nounwind uwtable noinline ssp { ; AVX-LABEL: merge_8i32_i32_56zz9uzz: -; AVX: # BB#0: +; AVX: # %bb.0: ; AVX-NEXT: vmovsd {{.*#+}} xmm0 = mem[0],zero ; AVX-NEXT: vmovss {{.*#+}} xmm1 = mem[0],zero,zero,zero ; AVX-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm0 ; AVX-NEXT: retq ; ; X32-AVX-LABEL: merge_8i32_i32_56zz9uzz: -; X32-AVX: # BB#0: +; X32-AVX: # %bb.0: ; X32-AVX-NEXT: movl {{[0-9]+}}(%esp), %eax ; X32-AVX-NEXT: vmovsd {{.*#+}} xmm0 = mem[0],zero ; X32-AVX-NEXT: vmovss {{.*#+}} xmm1 = mem[0],zero,zero,zero @@ -416,28 +400,16 @@ define <8 x i32> @merge_8i32_i32_56zz9uzz(i32* %ptr) nounwind uwtable noinline s } define <8 x i32> @merge_8i32_i32_1u3u5zu8(i32* %ptr) nounwind uwtable noinline ssp { -; AVX1-LABEL: merge_8i32_i32_1u3u5zu8: -; AVX1: # BB#0: -; AVX1-NEXT: vxorps %ymm0, %ymm0, %ymm0 -; AVX1-NEXT: vblendps {{.*#+}} ymm0 = mem[0,1,2,3,4],ymm0[5],mem[6,7] -; AVX1-NEXT: retq -; -; AVX2-LABEL: merge_8i32_i32_1u3u5zu8: -; AVX2: # BB#0: -; AVX2-NEXT: vpxor %ymm0, %ymm0, %ymm0 -; AVX2-NEXT: vpblendd {{.*#+}} ymm0 = mem[0,1,2,3,4],ymm0[5],mem[6,7] -; AVX2-NEXT: retq -; -; AVX512F-LABEL: merge_8i32_i32_1u3u5zu8: -; AVX512F: # BB#0: -; AVX512F-NEXT: vpxor %ymm0, %ymm0, %ymm0 -; AVX512F-NEXT: vpblendd {{.*#+}} ymm0 = mem[0,1,2,3,4],ymm0[5],mem[6,7] -; AVX512F-NEXT: retq +; AVX-LABEL: merge_8i32_i32_1u3u5zu8: +; AVX: # %bb.0: +; AVX-NEXT: vxorps %xmm0, %xmm0, %xmm0 +; AVX-NEXT: vblendps {{.*#+}} ymm0 = mem[0,1,2,3,4],ymm0[5],mem[6,7] +; AVX-NEXT: retq ; ; X32-AVX-LABEL: merge_8i32_i32_1u3u5zu8: -; X32-AVX: # BB#0: +; X32-AVX: # %bb.0: ; X32-AVX-NEXT: movl {{[0-9]+}}(%esp), %eax -; X32-AVX-NEXT: vxorps %ymm0, %ymm0, %ymm0 +; X32-AVX-NEXT: vxorps %xmm0, %xmm0, %xmm0 ; X32-AVX-NEXT: vblendps {{.*#+}} ymm0 = mem[0,1,2,3,4],ymm0[5],mem[6,7] ; X32-AVX-NEXT: retl %ptr0 = getelementptr inbounds i32, i32* %ptr, i64 1 @@ -458,12 +430,12 @@ define <8 x i32> @merge_8i32_i32_1u3u5zu8(i32* %ptr) nounwind uwtable noinline s define <16 x i16> @merge_16i16_i16_89zzzuuuuuuuuuuuz(i16* %ptr) nounwind uwtable noinline ssp { ; AVX-LABEL: merge_16i16_i16_89zzzuuuuuuuuuuuz: -; AVX: # BB#0: +; AVX: # %bb.0: ; AVX-NEXT: vmovss {{.*#+}} xmm0 = mem[0],zero,zero,zero ; AVX-NEXT: retq ; ; X32-AVX-LABEL: merge_16i16_i16_89zzzuuuuuuuuuuuz: -; X32-AVX: # BB#0: +; X32-AVX: # %bb.0: ; X32-AVX-NEXT: movl {{[0-9]+}}(%esp), %eax ; X32-AVX-NEXT: vmovss {{.*#+}} xmm0 = mem[0],zero,zero,zero ; X32-AVX-NEXT: retl @@ -482,12 +454,12 @@ define <16 x i16> @merge_16i16_i16_89zzzuuuuuuuuuuuz(i16* %ptr) nounwind uwtable define <16 x i16> @merge_16i16_i16_45u7uuuuuuuuuuuu(i16* %ptr) nounwind uwtable noinline ssp { ; AVX-LABEL: merge_16i16_i16_45u7uuuuuuuuuuuu: -; AVX: # BB#0: +; AVX: # %bb.0: ; AVX-NEXT: vmovsd {{.*#+}} xmm0 = mem[0],zero ; AVX-NEXT: retq ; ; X32-AVX-LABEL: merge_16i16_i16_45u7uuuuuuuuuuuu: -; X32-AVX: # BB#0: +; X32-AVX: # %bb.0: ; X32-AVX-NEXT: movl {{[0-9]+}}(%esp), %eax ; X32-AVX-NEXT: vmovsd {{.*#+}} xmm0 = mem[0],zero ; X32-AVX-NEXT: retl @@ -505,12 +477,12 @@ define <16 x i16> @merge_16i16_i16_45u7uuuuuuuuuuuu(i16* %ptr) nounwind uwtable define <16 x i16> @merge_16i16_i16_0uu3uuuuuuuuCuEF(i16* %ptr) nounwind uwtable noinline ssp { ; AVX-LABEL: merge_16i16_i16_0uu3uuuuuuuuCuEF: -; AVX: # BB#0: +; AVX: # %bb.0: ; AVX-NEXT: vmovups (%rdi), %ymm0 ; AVX-NEXT: retq ; ; X32-AVX-LABEL: merge_16i16_i16_0uu3uuuuuuuuCuEF: -; X32-AVX: # BB#0: +; X32-AVX: # %bb.0: ; X32-AVX-NEXT: movl {{[0-9]+}}(%esp), %eax ; X32-AVX-NEXT: vmovups (%eax), %ymm0 ; X32-AVX-NEXT: retl @@ -534,13 +506,13 @@ define <16 x i16> @merge_16i16_i16_0uu3uuuuuuuuCuEF(i16* %ptr) nounwind uwtable define <16 x i16> @merge_16i16_i16_0uu3zzuuuuuzCuEF(i16* %ptr) nounwind uwtable noinline ssp { ; AVX-LABEL: merge_16i16_i16_0uu3zzuuuuuzCuEF: -; AVX: # BB#0: +; AVX: # %bb.0: ; AVX-NEXT: vmovups (%rdi), %ymm0 ; AVX-NEXT: vandps {{.*}}(%rip), %ymm0, %ymm0 ; AVX-NEXT: retq ; ; X32-AVX-LABEL: merge_16i16_i16_0uu3zzuuuuuzCuEF: -; X32-AVX: # BB#0: +; X32-AVX: # %bb.0: ; X32-AVX-NEXT: movl {{[0-9]+}}(%esp), %eax ; X32-AVX-NEXT: vmovups (%eax), %ymm0 ; X32-AVX-NEXT: vandps {{\.LCPI.*}}, %ymm0, %ymm0 @@ -568,12 +540,12 @@ define <16 x i16> @merge_16i16_i16_0uu3zzuuuuuzCuEF(i16* %ptr) nounwind uwtable define <32 x i8> @merge_32i8_i8_45u7uuuuuuuuuuuuuuuuuuuuuuuuuuuu(i8* %ptr) nounwind uwtable noinline ssp { ; AVX-LABEL: merge_32i8_i8_45u7uuuuuuuuuuuuuuuuuuuuuuuuuuuu: -; AVX: # BB#0: +; AVX: # %bb.0: ; AVX-NEXT: vmovss {{.*#+}} xmm0 = mem[0],zero,zero,zero ; AVX-NEXT: retq ; ; X32-AVX-LABEL: merge_32i8_i8_45u7uuuuuuuuuuuuuuuuuuuuuuuuuuuu: -; X32-AVX: # BB#0: +; X32-AVX: # %bb.0: ; X32-AVX-NEXT: movl {{[0-9]+}}(%esp), %eax ; X32-AVX-NEXT: vmovss {{.*#+}} xmm0 = mem[0],zero,zero,zero ; X32-AVX-NEXT: retl @@ -591,12 +563,12 @@ define <32 x i8> @merge_32i8_i8_45u7uuuuuuuuuuuuuuuuuuuuuuuuuuuu(i8* %ptr) nounw define <32 x i8> @merge_32i8_i8_23u5uuuuuuuuuuzzzzuuuuuuuuuuuuuu(i8* %ptr) nounwind uwtable noinline ssp { ; AVX-LABEL: merge_32i8_i8_23u5uuuuuuuuuuzzzzuuuuuuuuuuuuuu: -; AVX: # BB#0: +; AVX: # %bb.0: ; AVX-NEXT: vmovss {{.*#+}} xmm0 = mem[0],zero,zero,zero ; AVX-NEXT: retq ; ; X32-AVX-LABEL: merge_32i8_i8_23u5uuuuuuuuuuzzzzuuuuuuuuuuuuuu: -; X32-AVX: # BB#0: +; X32-AVX: # %bb.0: ; X32-AVX-NEXT: movl {{[0-9]+}}(%esp), %eax ; X32-AVX-NEXT: vmovss {{.*#+}} xmm0 = mem[0],zero,zero,zero ; X32-AVX-NEXT: retl @@ -621,37 +593,19 @@ define <32 x i8> @merge_32i8_i8_23u5uuuuuuuuuuzzzzuuuuuuuuuuuuuu(i8* %ptr) nounw ; define <4 x double> @merge_4f64_f64_34uz_volatile(double* %ptr) nounwind uwtable noinline ssp { -; AVX1-LABEL: merge_4f64_f64_34uz_volatile: -; AVX1: # BB#0: -; AVX1-NEXT: vmovsd {{.*#+}} xmm0 = mem[0],zero -; AVX1-NEXT: vmovhpd {{.*#+}} xmm0 = xmm0[0],mem[0] -; AVX1-NEXT: vxorps %xmm1, %xmm1, %xmm1 -; AVX1-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm0 -; AVX1-NEXT: retq -; -; AVX2-LABEL: merge_4f64_f64_34uz_volatile: -; AVX2: # BB#0: -; AVX2-NEXT: vmovsd {{.*#+}} xmm0 = mem[0],zero -; AVX2-NEXT: vmovhpd {{.*#+}} xmm0 = xmm0[0],mem[0] -; AVX2-NEXT: vxorpd %xmm1, %xmm1, %xmm1 -; AVX2-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm0 -; AVX2-NEXT: retq -; -; AVX512F-LABEL: merge_4f64_f64_34uz_volatile: -; AVX512F: # BB#0: -; AVX512F-NEXT: vmovsd {{.*#+}} xmm0 = mem[0],zero -; AVX512F-NEXT: vmovhpd {{.*#+}} xmm0 = xmm0[0],mem[0] -; AVX512F-NEXT: vxorpd %xmm1, %xmm1, %xmm1 -; AVX512F-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm0 -; AVX512F-NEXT: retq +; AVX-LABEL: merge_4f64_f64_34uz_volatile: +; AVX: # %bb.0: +; AVX-NEXT: vmovsd {{.*#+}} xmm0 = mem[0],zero +; AVX-NEXT: vmovhpd {{.*#+}} xmm0 = xmm0[0],mem[0] +; AVX-NEXT: vmovapd %xmm0, %xmm0 +; AVX-NEXT: retq ; ; X32-AVX-LABEL: merge_4f64_f64_34uz_volatile: -; X32-AVX: # BB#0: +; X32-AVX: # %bb.0: ; X32-AVX-NEXT: movl {{[0-9]+}}(%esp), %eax ; X32-AVX-NEXT: vmovsd {{.*#+}} xmm0 = mem[0],zero ; X32-AVX-NEXT: vmovhpd {{.*#+}} xmm0 = xmm0[0],mem[0] -; X32-AVX-NEXT: vxorps %xmm1, %xmm1, %xmm1 -; X32-AVX-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm0 +; X32-AVX-NEXT: vmovapd %xmm0, %xmm0 ; X32-AVX-NEXT: retl %ptr0 = getelementptr inbounds double, double* %ptr, i64 3 %ptr1 = getelementptr inbounds double, double* %ptr, i64 4 @@ -665,7 +619,7 @@ define <4 x double> @merge_4f64_f64_34uz_volatile(double* %ptr) nounwind uwtable define <16 x i16> @merge_16i16_i16_0uu3zzuuuuuzCuEF_volatile(i16* %ptr) nounwind uwtable noinline ssp { ; AVX1-LABEL: merge_16i16_i16_0uu3zzuuuuuzCuEF_volatile: -; AVX1: # BB#0: +; AVX1: # %bb.0: ; AVX1-NEXT: vpxor %xmm0, %xmm0, %xmm0 ; AVX1-NEXT: vpinsrw $0, (%rdi), %xmm0, %xmm1 ; AVX1-NEXT: vpinsrw $4, 24(%rdi), %xmm0, %xmm0 @@ -676,7 +630,7 @@ define <16 x i16> @merge_16i16_i16_0uu3zzuuuuuzCuEF_volatile(i16* %ptr) nounwind ; AVX1-NEXT: retq ; ; AVX2-LABEL: merge_16i16_i16_0uu3zzuuuuuzCuEF_volatile: -; AVX2: # BB#0: +; AVX2: # %bb.0: ; AVX2-NEXT: vpxor %xmm0, %xmm0, %xmm0 ; AVX2-NEXT: vpinsrw $0, (%rdi), %xmm0, %xmm1 ; AVX2-NEXT: vpinsrw $4, 24(%rdi), %xmm0, %xmm0 @@ -687,7 +641,7 @@ define <16 x i16> @merge_16i16_i16_0uu3zzuuuuuzCuEF_volatile(i16* %ptr) nounwind ; AVX2-NEXT: retq ; ; AVX512F-LABEL: merge_16i16_i16_0uu3zzuuuuuzCuEF_volatile: -; AVX512F: # BB#0: +; AVX512F: # %bb.0: ; AVX512F-NEXT: vpxor %xmm0, %xmm0, %xmm0 ; AVX512F-NEXT: vpinsrw $0, (%rdi), %xmm0, %xmm1 ; AVX512F-NEXT: vpinsrw $4, 24(%rdi), %xmm0, %xmm0 @@ -698,7 +652,7 @@ define <16 x i16> @merge_16i16_i16_0uu3zzuuuuuzCuEF_volatile(i16* %ptr) nounwind ; AVX512F-NEXT: retq ; ; X32-AVX-LABEL: merge_16i16_i16_0uu3zzuuuuuzCuEF_volatile: -; X32-AVX: # BB#0: +; X32-AVX: # %bb.0: ; X32-AVX-NEXT: movl {{[0-9]+}}(%esp), %eax ; X32-AVX-NEXT: vpxor %xmm0, %xmm0, %xmm0 ; X32-AVX-NEXT: vpinsrw $0, (%eax), %xmm0, %xmm1 |
