Commit b0f09fc8 by Srdjan Obucina Committed by Jim Stichnoth

Subzero, MIPS32: MOVZ instruction encoding

Implements MOVZ instruction encoding R=stichnot@chromium.org Review URL: https://codereview.chromium.org/2377783002 . Patch from Srdjan Obucina <Srdjan.Obucina@imgtec.com>.
parent 6163c62f
......@@ -709,6 +709,12 @@ void AssemblerMIPS32::movz_d(const Operand *OpFd, const Operand *OpFs,
emitCOP1FmtFtFsFd(Opcode, SinglePrecision, OpFd, OpFs, OpFt, "movz.d");
}
void AssemblerMIPS32::movz(const Operand *OpRd, const Operand *OpRs,
const Operand *OpRt) {
static constexpr IValueT Opcode = 0x0000000A;
emitRdRsRt(Opcode, OpRd, OpRs, OpRt, "movz");
}
void AssemblerMIPS32::movz_s(const Operand *OpFd, const Operand *OpFs,
const Operand *OpFt) {
static constexpr IValueT Opcode = 0x44000012;
......
......@@ -191,6 +191,8 @@ public:
void movt(const Operand *OpRd, const Operand *OpRs, const Operand *OpCc);
void movz(const Operand *OpRd, const Operand *OpRs, const Operand *OpRt);
void movz_d(const Operand *OpFd, const Operand *OpFs, const Operand *OpFt);
void movz_s(const Operand *OpFd, const Operand *OpFs, const Operand *OpFt);
......
......@@ -994,6 +994,11 @@ template <> void InstMIPS32Movt::emitIAS(const Cfg *Func) const {
Asm->movt(getDest(), getSrc(1), getSrc(2));
}
template <> void InstMIPS32Movz::emitIAS(const Cfg *Func) const {
auto *Asm = Func->getAssembler<MIPS32::AssemblerMIPS32>();
Asm->movz(getDest(), getSrc(0), getSrc(1));
}
template <> void InstMIPS32Movz_d::emitIAS(const Cfg *Func) const {
auto *Asm = Func->getAssembler<MIPS32::AssemblerMIPS32>();
Asm->movz_d(getDest(), getSrc(0), getSrc(1));
......
......@@ -1286,6 +1286,7 @@ template <> void InstMIPS32Movn::emitIAS(const Cfg *Func) const;
template <> void InstMIPS32Movn_d::emitIAS(const Cfg *Func) const;
template <> void InstMIPS32Movn_s::emitIAS(const Cfg *Func) const;
template <> void InstMIPS32Movt::emitIAS(const Cfg *Func) const;
template <> void InstMIPS32Movz::emitIAS(const Cfg *Func) const;
template <> void InstMIPS32Movz_d::emitIAS(const Cfg *Func) const;
template <> void InstMIPS32Movz_s::emitIAS(const Cfg *Func) const;
template <> void InstMIPS32Mtc1::emit(const Cfg *Func) const;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment