mirror of
https://github.com/herumi/xbyak
synced 2024-11-20 16:06:14 -07:00
mov opAVX10ZeroExt into private
This commit is contained in:
parent
3ee31be62d
commit
8f2e151b17
1 changed files with 24 additions and 24 deletions
|
@ -2794,6 +2794,30 @@ private:
|
||||||
}
|
}
|
||||||
opSSE(x, op, type1, code1, isXMM_XMMorMEM, imm);
|
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:
|
public:
|
||||||
unsigned int getVersion() const { return VERSION; }
|
unsigned int getVersion() const { return VERSION; }
|
||||||
using CodeArray::db;
|
using CodeArray::db;
|
||||||
|
@ -3203,30 +3227,6 @@ public:
|
||||||
}
|
}
|
||||||
db(0xC8 + (idx & 7));
|
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)
|
void vmovd(const Operand& op1, const Operand& op2, PreferredEncoding enc = DefaultEncoding)
|
||||||
{
|
{
|
||||||
const uint64_t typeTbl[] = {
|
const uint64_t typeTbl[] = {
|
||||||
|
|
Loading…
Reference in a new issue