Expand Up
@@ -178,7 +178,7 @@ define void @test5(half %x, ptr %y) {
;
; X86-LABEL: test5:
; X86: # %bb.0:
; X86-NEXT: vmovsh {{[0-9] +}}(%esp), % xmm0
; X86-NEXT: vmovsh {{.*# +}} xmm0 = mem[0],zero,zero,zero,zero,zero,zero,zero
; X86-NEXT: movl {{[0-9]+}}(%esp), %eax
; X86-NEXT: vmovsh %xmm0, (%eax)
; X86-NEXT: retl
Expand All
@@ -189,13 +189,13 @@ define void @test5(half %x, ptr %y) {
define half @test7 (ptr %x ) {
; X64-LABEL: test7:
; X64: # %bb.0:
; X64-NEXT: vmovsh (%rdi), % xmm0
; X64-NEXT: vmovsh {{.*#+}} xmm0 = mem[0],zero,zero,zero,zero,zero,zero,zero
; X64-NEXT: retq
;
; X86-LABEL: test7:
; X86: # %bb.0:
; X86-NEXT: movl {{[0-9]+}}(%esp), %eax
; X86-NEXT: vmovsh (%eax), % xmm0
; X86-NEXT: vmovsh {{.*#+}} xmm0 = mem[0],zero,zero,zero,zero,zero,zero,zero
; X86-NEXT: retl
%y = load i16 , ptr %x
%res = bitcast i16 %y to half
Expand Down
Expand Up
@@ -253,13 +253,13 @@ define <32 x i16> @test10c(ptr %x) {
define <8 x half > @test11 (ptr %x ) {
; X64-LABEL: test11:
; X64: # %bb.0:
; X64-NEXT: vmovsh (%rdi), % xmm0
; X64-NEXT: vmovsh {{.*#+}} xmm0 = mem[0],zero,zero,zero,zero,zero,zero,zero
; X64-NEXT: retq
;
; X86-LABEL: test11:
; X86: # %bb.0:
; X86-NEXT: movl {{[0-9]+}}(%esp), %eax
; X86-NEXT: vmovsh (%eax), % xmm0
; X86-NEXT: vmovsh {{.*#+}} xmm0 = mem[0],zero,zero,zero,zero,zero,zero,zero
; X86-NEXT: retl
%y = load half , ptr %x , align 2
%res = insertelement <8 x half >zeroinitializer , half %y , i32 0
Expand All
@@ -269,13 +269,13 @@ define <8 x half> @test11(ptr %x) {
define <16 x half > @test11b (ptr %x ) {
; X64-LABEL: test11b:
; X64: # %bb.0:
; X64-NEXT: vmovsh (%rdi), % xmm0
; X64-NEXT: vmovsh {{.*#+}} xmm0 = mem[0],zero,zero,zero,zero,zero,zero,zero
; X64-NEXT: retq
;
; X86-LABEL: test11b:
; X86: # %bb.0:
; X86-NEXT: movl {{[0-9]+}}(%esp), %eax
; X86-NEXT: vmovsh (%eax), % xmm0
; X86-NEXT: vmovsh {{.*#+}} xmm0 = mem[0],zero,zero,zero,zero,zero,zero,zero
; X86-NEXT: retl
%y = load half , ptr %x , align 2
%res = insertelement <16 x half >zeroinitializer , half %y , i32 0
Expand All
@@ -285,13 +285,13 @@ define <16 x half> @test11b(ptr %x) {
define <32 x half > @test11c (ptr %x ) {
; X64-LABEL: test11c:
; X64: # %bb.0:
; X64-NEXT: vmovsh (%rdi), % xmm0
; X64-NEXT: vmovsh {{.*#+}} xmm0 = mem[0],zero,zero,zero,zero,zero,zero,zero
; X64-NEXT: retq
;
; X86-LABEL: test11c:
; X86: # %bb.0:
; X86-NEXT: movl {{[0-9]+}}(%esp), %eax
; X86-NEXT: vmovsh (%eax), % xmm0
; X86-NEXT: vmovsh {{.*#+}} xmm0 = mem[0],zero,zero,zero,zero,zero,zero,zero
; X86-NEXT: retl
%y = load half , ptr %x , align 2
%res = insertelement <32 x half >zeroinitializer , half %y , i32 0
Expand All
@@ -307,7 +307,7 @@ define <8 x half> @test14(half %x) {
;
; X86-LABEL: test14:
; X86: # %bb.0:
; X86-NEXT: vmovsh {{[0-9] +}}(%esp), % xmm0
; X86-NEXT: vmovsh {{.*# +}} xmm0 = mem[0],zero,zero,zero,zero,zero,zero,zero
; X86-NEXT: retl
%res = insertelement <8 x half >zeroinitializer , half %x , i32 0
ret <8 x half >%res
Expand All
@@ -322,7 +322,7 @@ define <16 x half> @test14b(half %x) {
;
; X86-LABEL: test14b:
; X86: # %bb.0:
; X86-NEXT: vmovsh {{[0-9] +}}(%esp), % xmm0
; X86-NEXT: vmovsh {{.*# +}} xmm0 = mem[0],zero,zero,zero,zero,zero,zero,zero
; X86-NEXT: retl
%res = insertelement <16 x half >zeroinitializer , half %x , i32 0
ret <16 x half >%res
Expand All
@@ -337,7 +337,7 @@ define <32 x half> @test14c(half %x) {
;
; X86-LABEL: test14c:
; X86: # %bb.0:
; X86-NEXT: vmovsh {{[0-9] +}}(%esp), % xmm0
; X86-NEXT: vmovsh {{.*# +}} xmm0 = mem[0],zero,zero,zero,zero,zero,zero,zero
; X86-NEXT: retl
%res = insertelement <32 x half >zeroinitializer , half %x , i32 0
ret <32 x half >%res
Expand Down
Expand Up
@@ -1253,7 +1253,7 @@ define half @test_movw2(i16 %x) {
;
; X86-LABEL: test_movw2:
; X86: # %bb.0:
; X86-NEXT: vmovsh {{[0-9] +}}(%esp), % xmm0
; X86-NEXT: vmovsh {{.*# +}} xmm0 = mem[0],zero,zero,zero,zero,zero,zero,zero
; X86-NEXT: retl
%res = bitcast i16 %x to half
ret half %res
Expand Down
Expand Up
@@ -1358,7 +1358,7 @@ define half @extract_f16_8(<32 x half> %x, i64 %idx) nounwind {
; X64-NEXT: subq $128, %rsp
; X64-NEXT: andl $31, %edi
; X64-NEXT: vmovaps %zmm0, (%rsp)
; X64-NEXT: vmovsh (%rsp,%rdi,2), %xmm0
; X64-NEXT: vmovsh {{.*#+}} xmm0 = mem[0],zero,zero,zero,zero,zero,zero,zero
; X64-NEXT: movq %rbp, %rsp
; X64-NEXT: popq %rbp
; X64-NEXT: vzeroupper
Expand All
@@ -1373,7 +1373,7 @@ define half @extract_f16_8(<32 x half> %x, i64 %idx) nounwind {
; X86-NEXT: movl 8(%ebp), %eax
; X86-NEXT: andl $31, %eax
; X86-NEXT: vmovaps %zmm0, (%esp)
; X86-NEXT: vmovsh (%esp,%eax,2), %xmm0
; X86-NEXT: vmovsh {{.*#+}} xmm0 = mem[0],zero,zero,zero,zero,zero,zero,zero
; X86-NEXT: movl %ebp, %esp
; X86-NEXT: popl %ebp
; X86-NEXT: vzeroupper
Expand All
@@ -1392,7 +1392,7 @@ define half @extract_f16_9(<64 x half> %x, i64 %idx) nounwind {
; X64-NEXT: andl $63, %edi
; X64-NEXT: vmovaps %zmm1, {{[0-9]+}}(%rsp)
; X64-NEXT: vmovaps %zmm0, (%rsp)
; X64-NEXT: vmovsh (%rsp,%rdi,2), %xmm0
; X64-NEXT: vmovsh {{.*#+}} xmm0 = mem[0],zero,zero,zero,zero,zero,zero,zero
; X64-NEXT: movq %rbp, %rsp
; X64-NEXT: popq %rbp
; X64-NEXT: vzeroupper
Expand All
@@ -1408,7 +1408,7 @@ define half @extract_f16_9(<64 x half> %x, i64 %idx) nounwind {
; X86-NEXT: andl $63, %eax
; X86-NEXT: vmovaps %zmm1, {{[0-9]+}}(%esp)
; X86-NEXT: vmovaps %zmm0, (%esp)
; X86-NEXT: vmovsh (%esp,%eax,2), %xmm0
; X86-NEXT: vmovsh {{.*#+}} xmm0 = mem[0],zero,zero,zero,zero,zero,zero,zero
; X86-NEXT: movl %ebp, %esp
; X86-NEXT: popl %ebp
; X86-NEXT: vzeroupper
Expand Down
Expand Up
@@ -1797,11 +1797,11 @@ define <8 x half> @build_vector_xxxxuuuu(half %a0, half %a1, half %a2, half %a3)
;
; X86-LABEL: build_vector_xxxxuuuu:
; X86: # %bb.0:
; X86-NEXT: vmovsh {{[0-9] +}}(%esp), % xmm0
; X86-NEXT: vmovsh {{[0-9] +}}(%esp), % xmm1
; X86-NEXT: vmovsh {{.*# +}} xmm0 = mem[0],zero,zero,zero,zero,zero,zero,zero
; X86-NEXT: vmovsh {{.*# +}} xmm1 = mem[0],zero,zero,zero,zero,zero,zero,zero
; X86-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3]
; X86-NEXT: vmovsh {{[0-9] +}}(%esp), % xmm1
; X86-NEXT: vmovsh {{[0-9] +}}(%esp), % xmm2
; X86-NEXT: vmovsh {{.*# +}} xmm1 = mem[0],zero,zero,zero,zero,zero,zero,zero
; X86-NEXT: vmovsh {{.*# +}} xmm2 = mem[0],zero,zero,zero,zero,zero,zero,zero
; X86-NEXT: vpunpcklwd {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1],xmm1[2],xmm2[2],xmm1[3],xmm2[3]
; X86-NEXT: vinsertps {{.*#+}} xmm0 = xmm0[0],xmm1[0],zero,zero
; X86-NEXT: retl
Expand All
@@ -1823,11 +1823,11 @@ define <8 x half> @build_vector_uuuuxxxx(half %a0, half %a1, half %a2, half %a3)
;
; X86-LABEL: build_vector_uuuuxxxx:
; X86: # %bb.0:
; X86-NEXT: vmovsh {{[0-9] +}}(%esp), % xmm0
; X86-NEXT: vmovsh {{[0-9] +}}(%esp), % xmm1
; X86-NEXT: vmovsh {{.*# +}} xmm0 = mem[0],zero,zero,zero,zero,zero,zero,zero
; X86-NEXT: vmovsh {{.*# +}} xmm1 = mem[0],zero,zero,zero,zero,zero,zero,zero
; X86-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3]
; X86-NEXT: vmovsh {{[0-9] +}}(%esp), % xmm1
; X86-NEXT: vmovsh {{[0-9] +}}(%esp), % xmm2
; X86-NEXT: vmovsh {{.*# +}} xmm1 = mem[0],zero,zero,zero,zero,zero,zero,zero
; X86-NEXT: vmovsh {{.*# +}} xmm2 = mem[0],zero,zero,zero,zero,zero,zero,zero
; X86-NEXT: vpunpcklwd {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1],xmm1[2],xmm2[2],xmm1[3],xmm2[3]
; X86-NEXT: vpunpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
; X86-NEXT: vpbroadcastq %xmm0, %xmm0
Expand All
@@ -1853,18 +1853,18 @@ define <8 x half> @build_vector_xxxxxxxx(half %a0, half %a1, half %a2, half %a3,
;
; X86-LABEL: build_vector_xxxxxxxx:
; X86: # %bb.0:
; X86-NEXT: vmovsh {{[0-9] +}}(%esp), % xmm0
; X86-NEXT: vmovsh {{[0-9] +}}(%esp), % xmm1
; X86-NEXT: vmovsh {{.*# +}} xmm0 = mem[0],zero,zero,zero,zero,zero,zero,zero
; X86-NEXT: vmovsh {{.*# +}} xmm1 = mem[0],zero,zero,zero,zero,zero,zero,zero
; X86-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3]
; X86-NEXT: vmovsh {{[0-9] +}}(%esp), % xmm1
; X86-NEXT: vmovsh {{[0-9] +}}(%esp), % xmm2
; X86-NEXT: vmovsh {{.*# +}} xmm1 = mem[0],zero,zero,zero,zero,zero,zero,zero
; X86-NEXT: vmovsh {{.*# +}} xmm2 = mem[0],zero,zero,zero,zero,zero,zero,zero
; X86-NEXT: vpunpcklwd {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1],xmm1[2],xmm2[2],xmm1[3],xmm2[3]
; X86-NEXT: vpunpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
; X86-NEXT: vmovsh {{[0-9] +}}(%esp), % xmm1
; X86-NEXT: vmovsh {{[0-9] +}}(%esp), % xmm2
; X86-NEXT: vmovsh {{.*# +}} xmm1 = mem[0],zero,zero,zero,zero,zero,zero,zero
; X86-NEXT: vmovsh {{.*# +}} xmm2 = mem[0],zero,zero,zero,zero,zero,zero,zero
; X86-NEXT: vpunpcklwd {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1],xmm1[2],xmm2[2],xmm1[3],xmm2[3]
; X86-NEXT: vmovsh {{[0-9] +}}(%esp), % xmm2
; X86-NEXT: vmovsh {{[0-9] +}}(%esp), % xmm3
; X86-NEXT: vmovsh {{.*# +}} xmm2 = mem[0],zero,zero,zero,zero,zero,zero,zero
; X86-NEXT: vmovsh {{.*# +}} xmm3 = mem[0],zero,zero,zero,zero,zero,zero,zero
; X86-NEXT: vpunpcklwd {{.*#+}} xmm2 = xmm2[0],xmm3[0],xmm2[1],xmm3[1],xmm2[2],xmm3[2],xmm2[3],xmm3[3]
; X86-NEXT: vpunpckldq {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]
; X86-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]
Expand Down
Expand Up
@@ -1895,18 +1895,18 @@ define <16 x half> @build_vector_xxxxuuuuuuuuxxxx(half %a0, half %a1, half %a2,
;
; X86-LABEL: build_vector_xxxxuuuuuuuuxxxx:
; X86: # %bb.0:
; X86-NEXT: vmovsh {{[0-9] +}}(%esp), % xmm0
; X86-NEXT: vmovsh {{[0-9] +}}(%esp), % xmm1
; X86-NEXT: vmovsh {{.*# +}} xmm0 = mem[0],zero,zero,zero,zero,zero,zero,zero
; X86-NEXT: vmovsh {{.*# +}} xmm1 = mem[0],zero,zero,zero,zero,zero,zero,zero
; X86-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3]
; X86-NEXT: vmovsh {{[0-9] +}}(%esp), % xmm1
; X86-NEXT: vmovsh {{[0-9] +}}(%esp), % xmm2
; X86-NEXT: vmovsh {{.*# +}} xmm1 = mem[0],zero,zero,zero,zero,zero,zero,zero
; X86-NEXT: vmovsh {{.*# +}} xmm2 = mem[0],zero,zero,zero,zero,zero,zero,zero
; X86-NEXT: vpunpcklwd {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1],xmm1[2],xmm2[2],xmm1[3],xmm2[3]
; X86-NEXT: vpunpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
; X86-NEXT: vmovsh {{[0-9] +}}(%esp), % xmm1
; X86-NEXT: vmovsh {{[0-9] +}}(%esp), % xmm2
; X86-NEXT: vmovsh {{.*# +}} xmm1 = mem[0],zero,zero,zero,zero,zero,zero,zero
; X86-NEXT: vmovsh {{.*# +}} xmm2 = mem[0],zero,zero,zero,zero,zero,zero,zero
; X86-NEXT: vpunpcklwd {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1],xmm1[2],xmm2[2],xmm1[3],xmm2[3]
; X86-NEXT: vmovsh {{[0-9] +}}(%esp), % xmm2
; X86-NEXT: vmovsh {{[0-9] +}}(%esp), % xmm3
; X86-NEXT: vmovsh {{.*# +}} xmm2 = mem[0],zero,zero,zero,zero,zero,zero,zero
; X86-NEXT: vmovsh {{.*# +}} xmm3 = mem[0],zero,zero,zero,zero,zero,zero,zero
; X86-NEXT: vpunpcklwd {{.*#+}} xmm2 = xmm2[0],xmm3[0],xmm2[1],xmm3[1],xmm2[2],xmm3[2],xmm2[3],xmm3[3]
; X86-NEXT: vinsertps {{.*#+}} xmm1 = xmm1[0],xmm2[0],zero,zero
; X86-NEXT: vpbroadcastq %xmm0, %xmm0
Expand Down
Expand Up
@@ -2006,10 +2006,10 @@ define <8 x half> @test21(half %a, half %b, half %c) nounwind {
;
; X86-LABEL: test21:
; X86: # %bb.0:
; X86-NEXT: vmovsh {{[0-9] +}}(%esp), % xmm0
; X86-NEXT: vmovsh {{[0-9] +}}(%esp), % xmm1
; X86-NEXT: vmovsh {{.*# +}} xmm0 = mem[0],zero,zero,zero,zero,zero,zero,zero
; X86-NEXT: vmovsh {{.*# +}} xmm1 = mem[0],zero,zero,zero,zero,zero,zero,zero
; X86-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3]
; X86-NEXT: vmovsh {{[0-9] +}}(%esp), % xmm1
; X86-NEXT: vmovsh {{.*# +}} xmm1 = mem[0],zero,zero,zero,zero,zero,zero,zero
; X86-NEXT: vpunpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
; X86-NEXT: vpxor %xmm1, %xmm1, %xmm1
; X86-NEXT: vpbroadcastw %xmm1, %xmm1
Expand Down