diff options
Diffstat (limited to 'backend/src/backend/gen_insn_selection.cpp')
-rw-r--r-- | backend/src/backend/gen_insn_selection.cpp | 16 |
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; |