mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-01 15:33:33 +00:00
29c353b9c3
check more strict, breaking some cases not checked in the testsuite, but also exposes some foldings not done before, as this example: movaps (%rdi), %xmm0 movaps (%rax), %xmm1 movaps %xmm0, %xmm2 movss %xmm1, %xmm2 shufps $36, %xmm2, %xmm0 now is generated as: movaps (%rdi), %xmm0 movaps %xmm0, %xmm1 movlps (%rax), %xmm1 shufps $36, %xmm1, %xmm0 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112753 91177308-0d34-0410-b5e6-96231b3b80d8
15 lines
434 B
LLVM
15 lines
434 B
LLVM
; RUN: llc < %s -march=x86-64 | FileCheck %s
|
|
|
|
define <4 x i32> @t00(<4 x i32>* %a0) nounwind ssp {
|
|
entry:
|
|
; CHECK: movaps (%rdi), %xmm0
|
|
; CHECK-NEXT: movaps %xmm0, %xmm1
|
|
; CHECK-NEXT: movlps (%rax), %xmm1
|
|
; CHECK-NEXT: shufps $36, %xmm1, %xmm0
|
|
%0 = load <4 x i32>* undef, align 16
|
|
%1 = load <4 x i32>* %a0, align 16
|
|
%2 = shufflevector <4 x i32> %1, <4 x i32> %0, <4 x i32> <i32 0, i32 1, i32 2, i32 4>
|
|
ret <4 x i32> %2
|
|
}
|
|
|