This is an archive of the discontinued LLVM Phabricator instance.

[mips][msa] Remove copy_u.d and move copy_u.w to MSA64.
ClosedPublic

Authored by dsanders on Oct 6 2015, 7:06 AM.

Details

Summary

The forwards compatibility strategy employed by MIPS is to consider registers
to be infinitely sign-extended. Then on ISA's with a wider register, the result
of existing instructions are sign-extended to register width and zero-extended
counterparts are added. copy_u.w on MSA32 and copy_u.w on MSA64 violate this
strategy and we have therefore corrected the MSA specs to fix this.

We still keep track of sign/zero-extension during legalization but we now
match copy_s.[wd] where required.

Diff Detail

Event Timeline

dsanders updated this revision to Diff 36621.Oct 6 2015, 7:06 AM
dsanders retitled this revision from to [mips][msa] Remove copy_u.d and move copy_u.w to MSA64..
dsanders updated this object.
dsanders added a reviewer: vkalintiris.
dsanders added a subscriber: llvm-commits.
vkalintiris accepted this revision.Oct 20 2015, 5:18 AM
vkalintiris edited edge metadata.

LGTM. Can you mention in the commit message that no change is required in the Clang frontend, as __builtin_msa_copy_u_w will "automatically" map to copy.s.w?

test/MC/Mips/msa/test_elm.s
6–15

There's extra white space at the of these lines.

This revision is now accepted and ready to land.Oct 20 2015, 5:18 AM
dsanders closed this revision.Oct 21 2015, 3:00 AM
dsanders marked an inline comment as done.Oct 21 2015, 3:02 AM
dsanders added inline comments.
test/MC/Mips/msa/test_elm.s
6–15

Fixed in commit