re-arrange AVX/XOP table to avoid redundant multiplication in decode. TODO: compress the tables 2x using aliases
This commit is contained in:
parent
bb695fd5f5
commit
2f957bf142
@ -1409,7 +1409,7 @@ fetch_b1:
|
||||
if (b1 < 256 || b1 >= 1024) goto decode_done;
|
||||
has_modrm = (b1 != 0x177); // if not VZEROUPPER/VZEROALL opcode
|
||||
|
||||
OpcodeInfoPtr = &BxOpcodeTableAVX[(b1-256) + 768*vex_l];
|
||||
OpcodeInfoPtr = &BxOpcodeTableAVX[(b1-256)*2 + vex_l];
|
||||
}
|
||||
else if (b1 == 0x8f && (*iptr & 0xc8) == 0xc8) {
|
||||
// 3 byte XOP prefix
|
||||
@ -1442,7 +1442,7 @@ fetch_b1:
|
||||
has_modrm = 1;
|
||||
b1 += 256 * xop_opcext;
|
||||
|
||||
OpcodeInfoPtr = &BxOpcodeTableXOP[b1 + 768*vex_l];
|
||||
OpcodeInfoPtr = &BxOpcodeTableXOP[b1*2 + vex_l];
|
||||
}
|
||||
else
|
||||
#endif
|
||||
|
@ -1875,7 +1875,7 @@ fetch_b1:
|
||||
goto decode_done;
|
||||
has_modrm = (b1 != 0x177); // if not VZEROUPPER/VZEROALL opcode
|
||||
|
||||
OpcodeInfoPtr = &BxOpcodeTableAVX[(b1-256) + 768*vex_l];
|
||||
OpcodeInfoPtr = &BxOpcodeTableAVX[(b1-256)*2 + vex_l];
|
||||
}
|
||||
else if (b1 == 0x8f && (*iptr & 0x08) == 0x08) {
|
||||
// 3 byte XOP prefix
|
||||
@ -1917,7 +1917,7 @@ fetch_b1:
|
||||
has_modrm = 1;
|
||||
b1 += 256 * xop_opcext;
|
||||
|
||||
OpcodeInfoPtr = &BxOpcodeTableXOP[b1 + 768*vex_l];
|
||||
OpcodeInfoPtr = &BxOpcodeTableXOP[b1*2 + vex_l];
|
||||
}
|
||||
else
|
||||
#endif
|
||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user