diff options
author | MITSUNARI Shigeo <[email protected]> | 2024-10-15 13:58:17 +0900 |
---|---|---|
committer | MITSUNARI Shigeo <[email protected]> | 2024-10-15 13:58:17 +0900 |
commit | 8f2e151b17f571f643e901678948d6533cded38b (patch) | |
tree | fac2a9c11a14a7c8f3ae4240398adc1eb59cbafe | |
parent | 3ee31be62de4d3cc07289724da8baaddb3083834 (diff) | |
download | xbyak-8f2e151b17f571f643e901678948d6533cded38b.tar.gz xbyak-8f2e151b17f571f643e901678948d6533cded38b.zip |
mov opAVX10ZeroExt into private
-rw-r--r-- | xbyak/xbyak.h | 48 |
1 files changed, 24 insertions, 24 deletions
diff --git a/xbyak/xbyak.h b/xbyak/xbyak.h index c0bd83e..b3a4df8 100644 --- a/xbyak/xbyak.h +++ b/xbyak/xbyak.h @@ -2794,6 +2794,30 @@ private: } opSSE(x, op, type1, code1, isXMM_XMMorMEM, imm); } + // AVX10 zero-extending for vmovd, vmovw + void opAVX10ZeroExt(const Operand& op1, const Operand& op2, const uint64_t typeTbl[4], const int codeTbl[4], PreferredEncoding enc, int bit) + { + const Operand *p1 = &op1; + const Operand *p2 = &op2; + bool rev = false; + if (p1->isMEM()) { + std::swap(p1, p2); + rev = true; + } + if (p1->isMEM()) XBYAK_THROW(ERR_BAD_COMBINATION) + if (p1->isXMM()) { + std::swap(p1, p2); + rev = !rev; + } + int sel = -1; + if (getEncoding(enc, 1) == AVX10v2Encoding) { + if ((p1->isXMM() || p1->isMEM()) && p2->isXMM()) sel = 2 + int(rev); + } else { + if ((p1->isREG(bit) || p1->isMEM()) && p2->isXMM()) sel = int(rev); + } + if (sel == -1) XBYAK_THROW(ERR_BAD_COMBINATION) + opAVX_X_X_XM(*static_cast<const Xmm*>(p2), xm0, *p1, typeTbl[sel], codeTbl[sel]); + } public: unsigned int getVersion() const { return VERSION; } using CodeArray::db; @@ -3203,30 +3227,6 @@ public: } db(0xC8 + (idx & 7)); } - // AVX10 zero-extending for vmovd, vmovw - void opAVX10ZeroExt(const Operand& op1, const Operand& op2, const uint64_t typeTbl[4], const int codeTbl[4], PreferredEncoding enc, int bit) - { - const Operand *p1 = &op1; - const Operand *p2 = &op2; - bool rev = false; - if (p1->isMEM()) { - std::swap(p1, p2); - rev = true; - } - if (p1->isMEM()) XBYAK_THROW(ERR_BAD_COMBINATION) - if (p1->isXMM()) { - std::swap(p1, p2); - rev = !rev; - } - int sel = -1; - if (getEncoding(enc, 1) == AVX10v2Encoding) { - if ((p1->isXMM() || p1->isMEM()) && p2->isXMM()) sel = 2 + int(rev); - } else { - if ((p1->isREG(bit) || p1->isMEM()) && p2->isXMM()) sel = int(rev); - } - if (sel == -1) XBYAK_THROW(ERR_BAD_COMBINATION) - opAVX_X_X_XM(*static_cast<const Xmm*>(p2), xm0, *p1, typeTbl[sel], codeTbl[sel]); - } void vmovd(const Operand& op1, const Operand& op2, PreferredEncoding enc = DefaultEncoding) { const uint64_t typeTbl[] = { |