Index: src/IceInstX8632.cpp |
diff --git a/src/IceInstX8632.cpp b/src/IceInstX8632.cpp |
index 776a8708b8a31ccf89ec250629bac6fd42f30f44..478735e77362273384565ea1aae3059d54b56d53 100644 |
--- a/src/IceInstX8632.cpp |
+++ b/src/IceInstX8632.cpp |
@@ -943,6 +943,7 @@ template <> const char *InstX8632Psll::Opcode = "psll"; |
template <> const char *InstX8632Shr::Opcode = "shr"; |
template <> const char *InstX8632Sar::Opcode = "sar"; |
template <> const char *InstX8632Psra::Opcode = "psra"; |
+template <> const char *InstX8632Psrl::Opcode = "psrl"; |
template <> const char *InstX8632Pcmpeq::Opcode = "pcmpeq"; |
template <> const char *InstX8632Pcmpgt::Opcode = "pcmpgt"; |
template <> const char *InstX8632MovssRegs::Opcode = "movss"; |
@@ -1090,6 +1091,10 @@ template <> |
const x86::AssemblerX86::XmmEmitterShiftOp InstX8632Psra::Emitter = { |
&x86::AssemblerX86::psra, &x86::AssemblerX86::psra, |
&x86::AssemblerX86::psra}; |
+template <> |
+const x86::AssemblerX86::XmmEmitterShiftOp InstX8632Psrl::Emitter = { |
+ &x86::AssemblerX86::psrl, &x86::AssemblerX86::psrl, |
+ &x86::AssemblerX86::psrl}; |
template <> void InstX8632Sqrtss::emit(const Cfg *Func) const { |
if (!ALLOW_DUMP) |
@@ -2679,6 +2684,15 @@ template <> void InstX8632Psra::emit(const Cfg *Func) const { |
emitTwoAddress(buf, this, Func); |
} |
+template <> void InstX8632Psrl::emit(const Cfg *Func) const { |
+ if (!ALLOW_DUMP) |
+ return; |
+ char buf[30]; |
+ snprintf(buf, llvm::array_lengthof(buf), "psrl%s", |
+ TypeX8632Attributes[getDest()->getType()].PackString); |
+ emitTwoAddress(buf, this, Func); |
+} |
+ |
void InstX8632Ret::emit(const Cfg *Func) const { |
if (!ALLOW_DUMP) |
return; |