OpcodeDispatcher: Handle VCVTSD2SI

This commit is contained in:
lioncash 2022-12-29 10:32:50 +00:00
parent 31e332bd61
commit 3ebe141032
3 changed files with 43 additions and 1 deletions

View File

@ -5833,6 +5833,7 @@ void OpDispatchBuilder::InstallHostSpecificOpcodeHandlers() {
{OPD(1, 0b10, 0x2C), 1, &OpDispatchBuilder::CVTFPR_To_GPR<4, false>},
{OPD(1, 0b10, 0x2D), 1, &OpDispatchBuilder::CVTFPR_To_GPR<4, true>},
{OPD(1, 0b11, 0x2D), 1, &OpDispatchBuilder::CVTFPR_To_GPR<8, true>},
{OPD(1, 0b00, 0x2E), 1, &OpDispatchBuilder::UCOMISxOp<4>},
{OPD(1, 0b01, 0x2E), 1, &OpDispatchBuilder::UCOMISxOp<8>},

View File

@ -128,7 +128,7 @@ void InitializeVEXTables() {
{OPD(1, 0b11, 0x2C), 1, X86InstInfo{"VCVTTSD2SI", TYPE_UNDEC, FLAGS_NONE, 0, nullptr}},
{OPD(1, 0b10, 0x2D), 1, X86InstInfo{"VCVTSS2SI", TYPE_INST, FLAGS_MODRM | FLAGS_XMM_FLAGS | FLAGS_SF_DST_GPR, 0, nullptr}},
{OPD(1, 0b11, 0x2D), 1, X86InstInfo{"VCVTSD2SI", TYPE_UNDEC, FLAGS_NONE, 0, nullptr}},
{OPD(1, 0b11, 0x2D), 1, X86InstInfo{"VCVTSD2SI", TYPE_INST, GenFlagsSameSize(SIZE_64BITDEF) | FLAGS_MODRM | FLAGS_XMM_FLAGS | FLAGS_SF_DST_GPR, 0, nullptr}},
{OPD(1, 0b00, 0x2E), 1, X86InstInfo{"VUCOMISS", TYPE_INST, GenFlagsSizes(SIZE_128BIT, SIZE_32BIT) | FLAGS_MODRM | FLAGS_XMM_FLAGS, 0, nullptr}},
{OPD(1, 0b01, 0x2E), 1, X86InstInfo{"VUCOMISD", TYPE_INST, GenFlagsSizes(SIZE_128BIT, SIZE_64BIT) | FLAGS_MODRM | FLAGS_XMM_FLAGS, 0, nullptr}},

View File

@ -0,0 +1,41 @@
%ifdef CONFIG
{
"HostFeatures": ["AVX"],
"RegData": {
"RAX": "0x0000000000000001",
"RBX": "0x0000000000000002",
"RCX": "0x0000000000000003",
"RDX": "0x0000000000000004"
},
"MemoryRegions": {
"0x100000000": "4096"
}
}
%endif
lea rdx, [rel .data]
vmovapd xmm0, [rdx + 8 * 0]
vmovapd xmm1, [rdx + 8 * 2]
vcvtsd2si eax, xmm0
vcvtsd2si rbx, xmm1
vcvtsd2si ecx, [rdx + 8 * 4]
vcvtsd2si rdx, [rdx + 8 * 6]
hlt
align 32
.data:
dq 0x3FF0000000000000
dq 0x5152535455565758
dq 0x4000000000000000
dq 0x5152535455565758
dq 0x4008000000000000
dq 0x5152535455565758
dq 0x4010000000000000
dq 0x5152535455565758