[PATCH] D73644: [Mips] Add intrinsics for 4-byte and 8-byte MSA loads/stores.
Mirko Brkusanin via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Thu Jan 30 07:55:04 PST 2020
mbrkusanin added a comment.
We could do that for loads. For example on Mips32r5 (where we need most instructions) for intrinsic **ldr_d** instead of:
lwr $1, 16($5)
lwl $1, 19($5)
lwr $2, 20($5)
lwl $2, 23($5)
fill.w $w0, $1
insert.w $w0[1], $2
We could use already available **ld.d** and then fix up **$w0[2]** and **$w0[3]** manually (when working with **MSA128WRegClass** / **v4i32**). **ld.d** has no alignment restrictions.
ld.d $w0, 16($5)
copy_s.w $1, $w0[0]
insert.w $w0[2], $1
insert.w $w0[3], $1
Optionally if we don't care what values are loaded in elements other then first we could just use **ld.d** and **ld.w** for **ldr_d** and **ldrq_w** respectively.
For stores however we cannot use **st.d** or **st.w** because we would write to memory we are not supposed to (we write to void* not necessarily v2i64 or v4i32).
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D73644/new/
https://reviews.llvm.org/D73644
More information about the cfe-commits
mailing list