This is an archive of the discontinued LLVM Phabricator instance.

[mips][microMIPS] Implement DVP, EVP and JALRC.HB instructions
ClosedPublic

Authored by zbuljan on Apr 1 2016, 1:46 AM.

Details

Summary

The patch implements microMIPSr6 DVP, EVP and JALRC.HB instructions.

Diff Detail

Repository
rL LLVM

Event Timeline

zbuljan updated this revision to Diff 52337.Apr 1 2016, 1:46 AM
zbuljan retitled this revision from to [mips][microMIPS] Implement DVP, EVP and JALRC.HB instructions.
zbuljan updated this object.
zbuljan added subscribers: petarj, llvm-commits.
sdardis accepted this revision.Apr 13 2016, 8:19 AM
sdardis added a reviewer: sdardis.

LGTM with some nits (inlined).

The isCTI is only required for MIPSR6 instructions which cannot be placed in a forbidden slot. Since microMIPSR6 doesn't have forbidden slots and cannot be mixed inside MIPSR6 code without going through an ISA change it isn't required.

lib/Target/Mips/AsmParser/MipsAsmParser.cpp
3653 ↗(On Diff #52337)

Add a note here that it also applies to microMIPSR6.

lib/Target/Mips/MicroMips32r6InstrInfo.td
1020 ↗(On Diff #52337)

The 'isCTI' bit isn't required. The only code that cares about the 'isCTI' bit is the SafeInForbiddenSlot predicate which is only used for MIPSR6, not microMIPSR6.

test/MC/Mips/micromips32r6/invalid.s
118 ↗(On Diff #52337)

Add evp and dvp with immediate operands here to test that they are rejected.

test/MC/Mips/micromips64r6/invalid.s
148 ↗(On Diff #52337)

Here as well.

This revision is now accepted and ready to land.Apr 13 2016, 8:19 AM
This revision was automatically updated to reflect the committed changes.