mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-14 11:32:34 +00:00
Unaligned loads should use the VMOVUPS opcode.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177130 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
cacff672dd
commit
dd7a300c10
@ -1009,7 +1009,7 @@ let Predicates = [HasAVX] in {
|
||||
(VMOVUPSmr addr:$dst, (v4i32 (EXTRACT_SUBREG VR256:$src,sub_xmm)))>;
|
||||
def : Pat<(store (v8i16 (extract_subvector
|
||||
(v16i16 VR256:$src), (iPTR 0))), addr:$dst),
|
||||
(VMOVAPSmr addr:$dst, (v8i16 (EXTRACT_SUBREG VR256:$src,sub_xmm)))>;
|
||||
(VMOVUPSmr addr:$dst, (v8i16 (EXTRACT_SUBREG VR256:$src,sub_xmm)))>;
|
||||
def : Pat<(store (v16i8 (extract_subvector
|
||||
(v32i8 VR256:$src), (iPTR 0))), addr:$dst),
|
||||
(VMOVUPSmr addr:$dst, (v16i8 (EXTRACT_SUBREG VR256:$src,sub_xmm)))>;
|
||||
|
@ -55,7 +55,7 @@ define void @storev16i16(<16 x i16> %a) nounwind {
|
||||
|
||||
; CHECK: storev16i16_01
|
||||
; CHECK: vextractf128
|
||||
; CHECK: vmovaps %xmm
|
||||
; CHECK: vmovups %xmm
|
||||
define void @storev16i16_01(<16 x i16> %a) nounwind {
|
||||
store <16 x i16> %a, <16 x i16>* undef, align 4
|
||||
unreachable
|
||||
|
11
test/CodeGen/X86/vec_align_i256.ll
Normal file
11
test/CodeGen/X86/vec_align_i256.ll
Normal file
@ -0,0 +1,11 @@
|
||||
; RUN: llc < %s -mcpu=corei7-avx | FileCheck %s
|
||||
|
||||
; Make sure that we are not generating a movaps because the vector is aligned to 1.
|
||||
;CHECK: @foo
|
||||
;CHECK: xor
|
||||
;CHECK-NEXT: vmovups
|
||||
;CHECK-NEXT: ret
|
||||
define void @foo() {
|
||||
store <16 x i16> zeroinitializer, <16 x i16>* undef, align 1
|
||||
ret void
|
||||
}
|
Loading…
Reference in New Issue
Block a user