| Index: src/IceInstX86Base.h
|
| diff --git a/src/IceInstX86Base.h b/src/IceInstX86Base.h
|
| index 9b0b5fc72e8e439f07e656bb2c5adcceb61ebf25..36b34ac9e22dce3d476c5cd7d9076680e2f5c20a 100644
|
| --- a/src/IceInstX86Base.h
|
| +++ b/src/IceInstX86Base.h
|
| @@ -68,6 +68,7 @@ public:
|
| Icmp,
|
| Idiv,
|
| Imul,
|
| + ImulImm,
|
| Insertps,
|
| Jmp,
|
| Label,
|
| @@ -1622,6 +1623,25 @@ private:
|
| };
|
|
|
| template <class Machine>
|
| +class InstX86ImulImm
|
| + : public InstX86BaseThreeAddressop<Machine, InstX86Base<Machine>::ImulImm> {
|
| +public:
|
| + static InstX86ImulImm *create(Cfg *Func, Variable *Dest, Operand *Source0,
|
| + Operand *Source1) {
|
| + return new (Func->allocate<InstX86ImulImm>())
|
| + InstX86ImulImm(Func, Dest, Source0, Source1);
|
| + }
|
| +
|
| + void emit(const Cfg *Func) const override;
|
| + void emitIAS(const Cfg *Func) const override;
|
| +
|
| +private:
|
| + InstX86ImulImm(Cfg *Func, Variable *Dest, Operand *Source0, Operand *Source1)
|
| + : InstX86BaseThreeAddressop<Machine, InstX86Base<Machine>::ImulImm>(
|
| + Func, Dest, Source0, Source1) {}
|
| +};
|
| +
|
| +template <class Machine>
|
| class InstX86Mulps
|
| : public InstX86BaseBinopXmm<Machine, InstX86Base<Machine>::Mulps, true> {
|
| public:
|
| @@ -2790,6 +2810,7 @@ template <class Machine> struct Insts {
|
| using XorRMW = InstX86XorRMW<Machine>;
|
| using Pxor = InstX86Pxor<Machine>;
|
| using Imul = InstX86Imul<Machine>;
|
| + using ImulImm = InstX86ImulImm<Machine>;
|
| using Mulps = InstX86Mulps<Machine>;
|
| using Mulss = InstX86Mulss<Machine>;
|
| using Pmull = InstX86Pmull<Machine>;
|
| @@ -2897,6 +2918,7 @@ template <class Machine> struct Insts {
|
| template <> const char *InstX86XorRMW<Machine>::Base::Opcode = "xor"; \
|
| template <> const char *InstX86Pxor<Machine>::Base::Opcode = "pxor"; \
|
| template <> const char *InstX86Imul<Machine>::Base::Opcode = "imul"; \
|
| + template <> const char *InstX86ImulImm<Machine>::Base::Opcode = "imul"; \
|
| template <> const char *InstX86Mulps<Machine>::Base::Opcode = "mulps"; \
|
| template <> const char *InstX86Mulss<Machine>::Base::Opcode = "mulss"; \
|
| template <> const char *InstX86Pmull<Machine>::Base::Opcode = "pmull"; \
|
|
|