Permit explicit $fcc<X> operand in c.cond.fmt instruction.
Add c.cond.fmt to the MIPS to microMIPS instruction mapping table.
Check that $fcc1 - $fcc7 are unusable for MIPS-I to MIPS-III for
c.cond.fmt, bc1t, bc1f.
Paths
| Differential D24510
[mips] Correct c.cond.fmt instruction definition. ClosedPublic Authored by sdardis on Sep 13 2016, 8:20 AM.
Details
Summary Permit explicit $fcc<X> operand in c.cond.fmt instruction. Add c.cond.fmt to the MIPS to microMIPS instruction mapping table. Check that $fcc1 - $fcc7 are unusable for MIPS-I to MIPS-III for
Diff Detail
Event Timelinesdardis updated this object. This revision is now accepted and ready to land.Sep 26 2016, 6:57 AM Comment Actions Hi Sean, is your intention to LGTM this patch by accepting it, or to convey that it's working fine for *BSDs? Comment Actions
I had hoped to express that it is an improvement to our FreeBSD toolchain. I cannot comment reliably on quality outside of style or the ability to be able to apply this review to a trunk checkout. Comment Actions
Ok, thanks! I'll take a look then. vkalintiris edited edge metadata. Comment ActionsI'm getting a few test failures from the LLVM test-suite for MIPS32R2. Can you take a look at what's going wrong and update the patch before I review it? Given the symmetry of the code I'd expect, more or less, the same test failures to happen for microMIPS32R2 too but I'm not sure. This revision now requires changes to proceed.Sep 27 2016, 9:20 AM sdardis edited edge metadata. Comment ActionsUpdated failing tests (xfailed disassembler test is now gone, illegal use of register is fixed) zoran.jovanovic edited edge metadata. Comment ActionsLGTM with a nit.
sdardis edited edge metadata. sdardis marked an inline comment as done. Comment ActionsFix undiscovered bug in the handling of FCMP & friends. Internally generated c.cond.fmt were using the low bits of the register number to also select the fcc register. Cleaned up error messages. Addressed comments from reviewer. This revision is now accepted and ready to land.Jan 11 2017, 4:42 AM Closed by commit rL292117: [mips] Correct c.cond.fmt instruction definition. (authored by sdardis). · Explain WhyJan 16 2017, 6:07 AM This revision was automatically updated to reflect the committed changes. sdardis marked 3 inline comments as done.
Revision Contents
Diff 83638 lib/Target/Mips/AsmParser/MipsAsmParser.cpp
lib/Target/Mips/MCTargetDesc/MipsBaseInfo.h
lib/Target/Mips/MicroMipsInstrFPU.td
lib/Target/Mips/MicroMipsInstrFormats.td
lib/Target/Mips/MipsFastISel.cpp
lib/Target/Mips/MipsInstrFPU.td
lib/Target/Mips/MipsInstrFormats.td
test/MC/Disassembler/Mips/mips4/valid-xfail-mips4.txt
test/MC/Mips/micromips/valid.s
test/MC/Mips/mips1/invalid-mips4-wrong-error.s
test/MC/Mips/mips1/invalid-mips4.s
test/MC/Mips/mips1/invalid-mips5-wrong-error.s
test/MC/Mips/mips1/invalid-mips5.s
test/MC/Mips/mips2/invalid-mips32.s
test/MC/Mips/mips2/invalid-mips32r2.s
test/MC/Mips/mips2/invalid-mips4-wrong-error.s
test/MC/Mips/mips2/invalid-mips4.s
test/MC/Mips/mips2/invalid-mips5.s
test/MC/Mips/mips3/invalid-mips4-wrong-error.s
test/MC/Mips/mips3/invalid-mips4.s
test/MC/Mips/mips3/invalid-mips5-wrong-error.s
test/MC/Mips/mips3/invalid-mips5.s
test/MC/Mips/mips32/valid-xfail.s
test/MC/Mips/mips32/valid.s
test/MC/Mips/mips32r2/valid-xfail.s
test/MC/Mips/mips32r2/valid.s
test/MC/Mips/mips32r3/valid-xfail.s
test/MC/Mips/mips32r3/valid.s
test/MC/Mips/mips32r5/valid-xfail.s
test/MC/Mips/mips32r5/valid.s
test/MC/Mips/mips4/valid-xfail.s
test/MC/Mips/mips4/valid.s
test/MC/Mips/mips5/valid-xfail.s
test/MC/Mips/mips5/valid.s
test/MC/Mips/mips64/valid-xfail.s
test/MC/Mips/mips64/valid.s
test/MC/Mips/mips64r2/valid-xfail.s
test/MC/Mips/mips64r2/valid.s
test/MC/Mips/mips64r3/valid-xfail.s
test/MC/Mips/mips64r3/valid.s
test/MC/Mips/mips64r5/valid-xfail.s
test/MC/Mips/mips64r5/valid.s
|
Parenthesizing the sub-expressions would make this a little bit easier to read.