[mips] Add movep for microMIPS32R6 and fix microMIPS32r3 version
authorSimon Dardis <simon.dardis@mips.com>
Mon, 6 Nov 2017 12:59:53 +0000 (12:59 +0000)
committerSimon Dardis <simon.dardis@mips.com>
Mon, 6 Nov 2017 12:59:53 +0000 (12:59 +0000)
commit169df4e24b2d95892fc9841786d4fec224a8eeab
treef6af89ff2dc558cd9226793479448d923e9019b3
parenta68e048233d7e9e0102ce4864138d187f8de88d0
[mips] Add movep for microMIPS32R6 and fix microMIPS32r3 version

Previously, the 'movep' instruction was defined for microMIPS32r3 and
shared that definition with microMIPS32R6. 'movep' was re-encoded for
microMIPS32r6, so this patch provides the correct encoding.

Secondly, correct the encoding of the 'rs' and 'rt' operands which have
an instruction specific encoding for the registers those operands accept.

Finally, correct the decoding of the 'dst_regs' operand which was extracting
the relevant field from the instruction, but was actually extracting the
field from the alreadly extracted field.

Reviewers: atanasyan

Differential Revision: https://reviews.llvm.org/D39495

llvm-svn: 317475
14 files changed:
llvm/lib/Target/Mips/Disassembler/MipsDisassembler.cpp
llvm/lib/Target/Mips/MCTargetDesc/MipsMCCodeEmitter.cpp
llvm/lib/Target/Mips/MCTargetDesc/MipsMCCodeEmitter.h
llvm/lib/Target/Mips/MicroMips32r6InstrFormats.td
llvm/lib/Target/Mips/MicroMips32r6InstrInfo.td
llvm/lib/Target/Mips/MicroMipsInstrInfo.td
llvm/lib/Target/Mips/MipsRegisterInfo.td
llvm/lib/Target/Mips/MipsScheduleGeneric.td
llvm/test/MC/Disassembler/Mips/micromips32r3/valid-el.txt
llvm/test/MC/Disassembler/Mips/micromips32r3/valid.txt
llvm/test/MC/Disassembler/Mips/micromips32r6/valid.txt
llvm/test/MC/Disassembler/Mips/micromips64r6/valid.txt
llvm/test/MC/Mips/micromips32r6/valid.s
llvm/test/MC/Mips/micromips64r6/valid.s