mirror of
https://github.com/RPCS3/llvm.git
synced 2025-04-02 13:21:43 +00:00
Lift alignment restrictions on load/store folding of VEXTRACTI128/VINSERTI128.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191073 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
f45edcc381
commit
333983d0c2
@ -8329,22 +8329,22 @@ def : Pat<(vinsert128_insert:$ins (v16i16 VR256:$src1), (v8i16 VR128:$src2),
|
||||
(VINSERTI128rr VR256:$src1, VR128:$src2,
|
||||
(INSERT_get_vinsert128_imm VR256:$ins))>;
|
||||
|
||||
def : Pat<(vinsert128_insert:$ins (v4i64 VR256:$src1), (memopv2i64 addr:$src2),
|
||||
def : Pat<(vinsert128_insert:$ins (v4i64 VR256:$src1), (loadv2i64 addr:$src2),
|
||||
(iPTR imm)),
|
||||
(VINSERTI128rm VR256:$src1, addr:$src2,
|
||||
(INSERT_get_vinsert128_imm VR256:$ins))>;
|
||||
def : Pat<(vinsert128_insert:$ins (v8i32 VR256:$src1),
|
||||
(bc_v4i32 (memopv2i64 addr:$src2)),
|
||||
(bc_v4i32 (loadv2i64 addr:$src2)),
|
||||
(iPTR imm)),
|
||||
(VINSERTI128rm VR256:$src1, addr:$src2,
|
||||
(INSERT_get_vinsert128_imm VR256:$ins))>;
|
||||
def : Pat<(vinsert128_insert:$ins (v32i8 VR256:$src1),
|
||||
(bc_v16i8 (memopv2i64 addr:$src2)),
|
||||
(bc_v16i8 (loadv2i64 addr:$src2)),
|
||||
(iPTR imm)),
|
||||
(VINSERTI128rm VR256:$src1, addr:$src2,
|
||||
(INSERT_get_vinsert128_imm VR256:$ins))>;
|
||||
def : Pat<(vinsert128_insert:$ins (v16i16 VR256:$src1),
|
||||
(bc_v8i16 (memopv2i64 addr:$src2)),
|
||||
(bc_v8i16 (loadv2i64 addr:$src2)),
|
||||
(iPTR imm)),
|
||||
(VINSERTI128rm VR256:$src1, addr:$src2,
|
||||
(INSERT_get_vinsert128_imm VR256:$ins))>;
|
||||
@ -8383,20 +8383,20 @@ def : Pat<(vextract128_extract:$ext VR256:$src1, (iPTR imm)),
|
||||
(v32i8 VR256:$src1),
|
||||
(EXTRACT_get_vextract128_imm VR128:$ext)))>;
|
||||
|
||||
def : Pat<(alignedstore (v2i64 (vextract128_extract:$ext (v4i64 VR256:$src1),
|
||||
(iPTR imm))), addr:$dst),
|
||||
def : Pat<(store (v2i64 (vextract128_extract:$ext (v4i64 VR256:$src1),
|
||||
(iPTR imm))), addr:$dst),
|
||||
(VEXTRACTI128mr addr:$dst, VR256:$src1,
|
||||
(EXTRACT_get_vextract128_imm VR128:$ext))>;
|
||||
def : Pat<(alignedstore (v4i32 (vextract128_extract:$ext (v8i32 VR256:$src1),
|
||||
(iPTR imm))), addr:$dst),
|
||||
def : Pat<(store (v4i32 (vextract128_extract:$ext (v8i32 VR256:$src1),
|
||||
(iPTR imm))), addr:$dst),
|
||||
(VEXTRACTI128mr addr:$dst, VR256:$src1,
|
||||
(EXTRACT_get_vextract128_imm VR128:$ext))>;
|
||||
def : Pat<(alignedstore (v8i16 (vextract128_extract:$ext (v16i16 VR256:$src1),
|
||||
(iPTR imm))), addr:$dst),
|
||||
def : Pat<(store (v8i16 (vextract128_extract:$ext (v16i16 VR256:$src1),
|
||||
(iPTR imm))), addr:$dst),
|
||||
(VEXTRACTI128mr addr:$dst, VR256:$src1,
|
||||
(EXTRACT_get_vextract128_imm VR128:$ext))>;
|
||||
def : Pat<(alignedstore (v16i8 (vextract128_extract:$ext (v32i8 VR256:$src1),
|
||||
(iPTR imm))), addr:$dst),
|
||||
def : Pat<(store (v16i8 (vextract128_extract:$ext (v32i8 VR256:$src1),
|
||||
(iPTR imm))), addr:$dst),
|
||||
(VEXTRACTI128mr addr:$dst, VR256:$src1,
|
||||
(EXTRACT_get_vextract128_imm VR128:$ext))>;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user