summaryrefslogtreecommitdiff
path: root/backend/src/backend/gen_insn_selection.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'backend/src/backend/gen_insn_selection.cpp')
-rw-r--r--backend/src/backend/gen_insn_selection.cpp16
1 files changed, 16 insertions, 0 deletions
diff --git a/backend/src/backend/gen_insn_selection.cpp b/backend/src/backend/gen_insn_selection.cpp
index aeb5da38..5b336b29 100644
--- a/backend/src/backend/gen_insn_selection.cpp
+++ b/backend/src/backend/gen_insn_selection.cpp
@@ -594,6 +594,10 @@ namespace gbe
void UNPACK_BYTE(const GenRegister *dst, const GenRegister src, uint32_t elemSize, uint32_t elemNum);
/*! pack the charN to uint */
void PACK_BYTE(const GenRegister dst, const GenRegister *src, uint32_t elemSize, uint32_t elemNum);
+ /*! Unpack the uint to charN */
+ void UNPACK_LONG(const GenRegister dst, const GenRegister src);
+ /*! pack the charN to uint */
+ void PACK_LONG(const GenRegister dst, const GenRegister src);
/*! Extended math function (2 arguments) */
void MATH(Reg dst, uint32_t function, Reg src0, Reg src1);
/*! Extended math function (1 argument) */
@@ -1346,6 +1350,18 @@ namespace gbe
insn->dst(0) = dst;
}
+ void Selection::Opaque::UNPACK_LONG(const GenRegister dst, const GenRegister src) {
+ SelectionInstruction *insn = this->appendInsn(SEL_OP_UNPACK_LONG, 1, 1);
+ insn->src(0) = src;
+ insn->dst(0) = dst;
+ }
+
+ void Selection::Opaque::PACK_LONG(const GenRegister dst, const GenRegister src) {
+ SelectionInstruction *insn = this->appendInsn(SEL_OP_PACK_LONG, 1, 1);
+ insn->src(0) = src;
+ insn->dst(0) = dst;
+ }
+
void Selection::Opaque::MATH(Reg dst, uint32_t function, Reg src0, Reg src1) {
SelectionInstruction *insn = this->appendInsn(SEL_OP_MATH, 1, 2);
insn->dst(0) = dst;