diff options
Diffstat (limited to 'test/CodeGen/X86/sse2-schedule.ll')
-rw-r--r-- | test/CodeGen/X86/sse2-schedule.ll | 58 |
1 files changed, 52 insertions, 6 deletions
diff --git a/test/CodeGen/X86/sse2-schedule.ll b/test/CodeGen/X86/sse2-schedule.ll index 33a4f413b6832..14c155c8c6c09 100644 --- a/test/CodeGen/X86/sse2-schedule.ll +++ b/test/CodeGen/X86/sse2-schedule.ll @@ -1808,32 +1808,32 @@ define i32 @test_movd(<4 x i32> %a0, i32 %a1, i32 *%a2) { define i64 @test_movd_64(<2 x i64> %a0, i64 %a1, i64 *%a2) { ; GENERIC-LABEL: test_movd_64: ; GENERIC: # BB#0: -; GENERIC-NEXT: movd %rdi, %xmm1 +; GENERIC-NEXT: movq %rdi, %xmm1 ; GENERIC-NEXT: movq {{.*#+}} xmm2 = mem[0],zero ; GENERIC-NEXT: paddq %xmm0, %xmm1 ; GENERIC-NEXT: paddq %xmm0, %xmm2 -; GENERIC-NEXT: movd %xmm2, %rax +; GENERIC-NEXT: movq %xmm2, %rax ; GENERIC-NEXT: movq %xmm1, (%rsi) ; GENERIC-NEXT: retq ; ; ATOM-LABEL: test_movd_64: ; ATOM: # BB#0: ; ATOM-NEXT: movq {{.*#+}} xmm1 = mem[0],zero -; ATOM-NEXT: movd %rdi, %xmm2 +; ATOM-NEXT: movq %rdi, %xmm2 ; ATOM-NEXT: paddq %xmm0, %xmm2 ; ATOM-NEXT: paddq %xmm0, %xmm1 ; ATOM-NEXT: movq %xmm2, (%rsi) -; ATOM-NEXT: movd %xmm1, %rax +; ATOM-NEXT: movq %xmm1, %rax ; ATOM-NEXT: retq ; ; SLM-LABEL: test_movd_64: ; SLM: # BB#0: ; SLM-NEXT: movq {{.*#+}} xmm2 = mem[0],zero sched: [3:1.00] -; SLM-NEXT: movd %rdi, %xmm1 # sched: [1:0.50] +; SLM-NEXT: movq %rdi, %xmm1 # sched: [1:0.50] ; SLM-NEXT: paddq %xmm0, %xmm1 # sched: [1:0.50] ; SLM-NEXT: movq %xmm1, (%rsi) # sched: [1:1.00] ; SLM-NEXT: paddq %xmm0, %xmm2 # sched: [1:0.50] -; SLM-NEXT: movd %xmm2, %rax # sched: [1:0.50] +; SLM-NEXT: movq %xmm2, %rax # sched: [1:0.50] ; SLM-NEXT: retq # sched: [4:1.00] ; ; SANDY-LABEL: test_movd_64: @@ -3545,6 +3545,52 @@ define i16 @test_pextrw(<8 x i16> %a0) { ret i16 %1 } +define <8 x i16> @test_pinsrw(<8 x i16> %a0, i16 %a1, i16 *%a2) { +; GENERIC-LABEL: test_pinsrw: +; GENERIC: # BB#0: +; GENERIC-NEXT: pinsrw $1, %edi, %xmm0 +; GENERIC-NEXT: pinsrw $3, (%rsi), %xmm0 +; GENERIC-NEXT: retq +; +; ATOM-LABEL: test_pinsrw: +; ATOM: # BB#0: +; ATOM-NEXT: pinsrw $1, %edi, %xmm0 +; ATOM-NEXT: pinsrw $3, (%rsi), %xmm0 +; ATOM-NEXT: nop +; ATOM-NEXT: nop +; ATOM-NEXT: nop +; ATOM-NEXT: nop +; ATOM-NEXT: retq +; +; SLM-LABEL: test_pinsrw: +; SLM: # BB#0: +; SLM-NEXT: pinsrw $1, %edi, %xmm0 # sched: [1:1.00] +; SLM-NEXT: pinsrw $3, (%rsi), %xmm0 # sched: [4:1.00] +; SLM-NEXT: retq # sched: [4:1.00] +; +; SANDY-LABEL: test_pinsrw: +; SANDY: # BB#0: +; SANDY-NEXT: vpinsrw $1, %edi, %xmm0, %xmm0 # sched: [1:0.50] +; SANDY-NEXT: vpinsrw $3, (%rsi), %xmm0, %xmm0 # sched: [5:0.50] +; SANDY-NEXT: retq # sched: [5:1.00] +; +; HASWELL-LABEL: test_pinsrw: +; HASWELL: # BB#0: +; HASWELL-NEXT: vpinsrw $1, %edi, %xmm0, %xmm0 # sched: [1:1.00] +; HASWELL-NEXT: vpinsrw $3, (%rsi), %xmm0, %xmm0 # sched: [5:1.00] +; HASWELL-NEXT: retq # sched: [1:1.00] +; +; BTVER2-LABEL: test_pinsrw: +; BTVER2: # BB#0: +; BTVER2-NEXT: vpinsrw $1, %edi, %xmm0, %xmm0 # sched: [1:0.50] +; BTVER2-NEXT: vpinsrw $3, (%rsi), %xmm0, %xmm0 # sched: [6:1.00] +; BTVER2-NEXT: retq # sched: [4:1.00] + %1 = insertelement <8 x i16> %a0, i16 %a1, i32 1 + %2 = load i16, i16 *%a2 + %3 = insertelement <8 x i16> %1, i16 %2, i32 3 + ret <8 x i16> %3 +} + define <4 x i32> @test_pmaddwd(<8 x i16> %a0, <8 x i16> %a1, <8 x i16> *%a2) { ; GENERIC-LABEL: test_pmaddwd: ; GENERIC: # BB#0: |