[PATCH] D15446: [mips] Range check uimm16 and fix several bugs this revealed.

Daniel Sanders via llvm-commits llvm-commits at lists.llvm.org
Fri Dec 11 03:14:38 PST 2015


dsanders created this revision.
dsanders added a reviewer: vkalintiris.
dsanders added a subscriber: llvm-commits.
Herald added a subscriber: dsanders.

The bugs were:
* teq and similar take 4-bit unsigned immediates on microMIPS.
* teqi and similar have side-effects like teq do.
* shll_s.w and shra_r.w take 5-bit unsigned immediates.
* The various DSP ext* instructions take a 5-bit immediate.
* repl.qh takes an 8-bit unsigned immediate.
* repl.ph takes a 10-bit unsigned immediate.
* rddsp/wrdsp take a 10-bit unsigned immediate.
* teqi and similar take signed 16-bit immediates (10-bit for microMIPS).
* lui takes a signed 16-bit immediate.
* Out-of-range immediate macros for or/xor take a simm32/simm64 depending
  on architecture. I'll fix the simm64 case properly when I reach simm32.

http://reviews.llvm.org/D15446

Files:
  lib/Target/Mips/AsmParser/MipsAsmParser.cpp
  lib/Target/Mips/MicroMips32r6InstrInfo.td
  lib/Target/Mips/MicroMipsDSPInstrInfo.td
  lib/Target/Mips/MicroMipsInstrInfo.td
  lib/Target/Mips/Mips64InstrInfo.td
  lib/Target/Mips/MipsDSPInstrInfo.td
  lib/Target/Mips/MipsInstrInfo.td
  test/CodeGen/Mips/eh-dwarf-cfa.ll
  test/CodeGen/Mips/largeimm1.ll
  test/CodeGen/Mips/largeimmprinting.ll
  test/CodeGen/Mips/mips64imm.ll
  test/MC/Disassembler/Mips/mips2/valid-mips2-el.txt
  test/MC/Disassembler/Mips/mips2/valid-mips2.txt
  test/MC/Disassembler/Mips/mips3/valid-mips3-el.txt
  test/MC/Disassembler/Mips/mips3/valid-mips3.txt
  test/MC/Disassembler/Mips/mips32/valid-mips32.txt
  test/MC/Disassembler/Mips/mips32r2/valid-mips32r2.txt
  test/MC/Disassembler/Mips/mips32r3/valid-mips32r3.txt
  test/MC/Disassembler/Mips/mips32r5/valid-mips32r5.txt
  test/MC/Disassembler/Mips/mips4/valid-mips4-el.txt
  test/MC/Disassembler/Mips/mips4/valid-mips4.txt
  test/MC/Disassembler/Mips/mips64/valid-mips64.txt
  test/MC/Disassembler/Mips/mips64r2/valid-mips64r2.txt
  test/MC/Disassembler/Mips/mips64r3/valid-mips64r3.txt
  test/MC/Disassembler/Mips/mips64r5/valid-mips64r5.txt
  test/MC/Mips/dsp/invalid.s
  test/MC/Mips/micromips32r6/invalid-wrong-error.s
  test/MC/Mips/micromips32r6/invalid.s
  test/MC/Mips/micromips64r6/invalid-wrong-error.s
  test/MC/Mips/micromips64r6/invalid.s
  test/MC/Mips/mips32r2/invalid-dsp.s
  test/MC/Mips/mips32r2/invalid-dspr2.s
  test/MC/Mips/mips32r2/invalid.s

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D15446.42513.patch
Type: text/x-patch
Size: 54228 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20151211/54b3e0cf/attachment.bin>


More information about the llvm-commits mailing list