[mips][ias] Range check uimm5 operands and fix several bugs this revealed.
authorDaniel Sanders <daniel.sanders@imgtec.com>
Thu, 26 Nov 2015 16:35:41 +0000 (16:35 +0000)
committerDaniel Sanders <daniel.sanders@imgtec.com>
Thu, 26 Nov 2015 16:35:41 +0000 (16:35 +0000)
commit9edb4236ccec1318e4463c29ec2280de7b1e439d
treeb717f911d9537fc18018880c94479cbdf8f6bf94
parenta890b48abb3675c03cc14716abddb7bfe734c609
[mips][ias] Range check uimm5 operands and fix several bugs this revealed.

Summary:
The bugs were:
* append, prepend, and balign were not tested
* balign takes a uimm2 not a uimm5.
* drotr32 was correctly implemented with a uimm5 but the tests expected
  '52' to be valid.
* li/la were implemented with a uimm5 instead of simm32. simm32 isn't
  completely correct either but I'll fix that when I get to simm32.

A notable omission are some of the shift instructions. Several of these
have been implemented using a single uimm6 instruction (rather than two
uimm5 instructions and a CodeGen-only uimm6 pseudo). These will be updated
in the uimm6 patch.

Reviewers: vkalintiris

Subscribers: llvm-commits, dsanders

Differential Revision: http://reviews.llvm.org/D14712

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@254164 91177308-0d34-0410-b5e6-96231b3b80d8
23 files changed:
lib/Target/Mips/AsmParser/MipsAsmParser.cpp
lib/Target/Mips/MicroMipsInstrInfo.td
lib/Target/Mips/Mips64InstrInfo.td
lib/Target/Mips/MipsDSPInstrInfo.td
lib/Target/Mips/MipsInstrInfo.td
test/MC/Mips/cnmips/invalid.s [new file with mode: 0644]
test/MC/Mips/dspr2/invalid.s
test/MC/Mips/dspr2/valid.s
test/MC/Mips/eva/invalid.s [new file with mode: 0644]
test/MC/Mips/micromips-invalid.s
test/MC/Mips/micromips/invalid.s
test/MC/Mips/micromips32r6/invalid.s
test/MC/Mips/micromips64r6/invalid.s
test/MC/Mips/mips32r2/invalid.s
test/MC/Mips/mips32r3/invalid.s
test/MC/Mips/mips32r5/invalid.s
test/MC/Mips/mips32r6/invalid.s
test/MC/Mips/mips64-alu-instructions.s
test/MC/Mips/mips64r2/invalid.s
test/MC/Mips/mips64r3/invalid.s
test/MC/Mips/mips64r5/invalid.s
test/MC/Mips/mips64r6/invalid.s
test/MC/Mips/msa/invalid.s