Merge pull request #154 from Sonicadvance1/more_satalu

Implements six more saturating arithmetic instructions
This commit is contained in:
Ryan Houdek authored and GitHub committed 2020-04-29 12:27:10 -07:00
commit 536eb7ec3e
7 files changed
+198

No files matched your search

@@ -5812,8 +5812,12 @@ void InstallOpcodeHandlers() {
{0xD5, 1, &OpDispatchBuilder::PMULOp<2, true>},
{0xD6, 1, &OpDispatchBuilder::MOVQOp},
{0xD7, 1, &OpDispatchBuilder::MOVMSKOp<1>}, // PMOVMSKB
{0xD8, 1, &OpDispatchBuilder::VectorALUOp<IR::OP_VUQSUB, 1>},
{0xD9, 1, &OpDispatchBuilder::VectorALUOp<IR::OP_VUQSUB, 2>},
{0xDA, 1, &OpDispatchBuilder::PMINUOp<1>},
{0xDB, 1, &OpDispatchBuilder::VectorALUOp<IR::OP_VAND, 16>},
{0xDC, 1, &OpDispatchBuilder::VectorALUOp<IR::OP_VUQADD, 1>},
{0xDD, 1, &OpDispatchBuilder::VectorALUOp<IR::OP_VUQADD, 2>},
{0xDE, 1, &OpDispatchBuilder::PMAXUOp<1>},
{0xDF, 1, &OpDispatchBuilder::ANDNOp},
{0xE1, 1, &OpDispatchBuilder::PSRAOp<2, true, 0>},
@@ -5822,6 +5826,8 @@ void InstallOpcodeHandlers() {
{0xE5, 1, &OpDispatchBuilder::PMULHW<true>},
{0xE6, 1, &OpDispatchBuilder::Vector_CVT_Float_To_Int<8, true, true>},
{0xE7, 1, &OpDispatchBuilder::MOVVectorOp},
{0xE8, 1, &OpDispatchBuilder::VectorALUOp<IR::OP_VSQSUB, 1>},
{0xE9, 1, &OpDispatchBuilder::VectorALUOp<IR::OP_VSQSUB, 2>},
{0xEA, 1, &OpDispatchBuilder::PMINSWOp},
{0xEB, 1, &OpDispatchBuilder::VectorALUOp<IR::OP_VOR, 16>},
{0xEC, 1, &OpDispatchBuilder::VectorALUOp<IR::OP_VSQADD, 1>},
+32
View File
@@ -0,0 +1,32 @@
%ifdef CONFIG
{
"RegData": {
"XMM0": ["0x2020202000000000", "0x0"],
"XMM1": ["0x2020202000000000", "0x0"]
},
"MemoryRegions": {
"0x100000000": "4096"
}
}
%endif
mov rdx, 0xe0000000
mov rax, 0x6162636445464748
mov [rdx + 8 * 0], rax
mov rax, 0x5152535455565758
mov [rdx + 8 * 1], rax
mov rax, 0x4142434465666768
mov [rdx + 8 * 2], rax
mov rax, 0x7172737475767778
mov [rdx + 8 * 3], rax
movaps xmm0, [rdx + 8 * 0]
movaps xmm1, [rdx + 8 * 0]
movaps xmm2, [rdx + 8 * 2]
psubusb xmm0, xmm2
psubusb xmm1, [rdx + 8 * 2]
hlt
+32
View File
@@ -0,0 +1,32 @@
%ifdef CONFIG
{
"RegData": {
"XMM0": ["0x2020202000000000", "0x0"],
"XMM1": ["0x2020202000000000", "0x0"]
},
"MemoryRegions": {
"0x100000000": "4096"
}
}
%endif
mov rdx, 0xe0000000
mov rax, 0x6162636445464748
mov [rdx + 8 * 0], rax
mov rax, 0x5152535455565758
mov [rdx + 8 * 1], rax
mov rax, 0x4142434465666768
mov [rdx + 8 * 2], rax
mov rax, 0x7172737475767778
mov [rdx + 8 * 3], rax
movaps xmm0, [rdx + 8 * 0]
movaps xmm1, [rdx + 8 * 0]
movaps xmm2, [rdx + 8 * 2]
psubusw xmm0, xmm2
psubusw xmm1, [rdx + 8 * 2]
hlt
+32
View File
@@ -0,0 +1,32 @@
%ifdef CONFIG
{
"RegData": {
"XMM0": ["0xA2A4A6A8AAACAEB0", "0xC2C4C6C8CACCCED0"],
"XMM1": ["0xA2A4A6A8AAACAEB0", "0xC2C4C6C8CACCCED0"]
},
"MemoryRegions": {
"0x100000000": "4096"
}
}
%endif
mov rdx, 0xe0000000
mov rax, 0x4142434445464748
mov [rdx + 8 * 0], rax
mov rax, 0x5152535455565758
mov [rdx + 8 * 1], rax
mov rax, 0x6162636465666768
mov [rdx + 8 * 2], rax
mov rax, 0x7172737475767778
mov [rdx + 8 * 3], rax
movaps xmm0, [rdx + 8 * 0]
movaps xmm1, [rdx + 8 * 0]
movaps xmm2, [rdx + 8 * 2]
paddusb xmm0, xmm2
paddusb xmm1, [rdx + 8 * 2]
hlt
+32
View File
@@ -0,0 +1,32 @@
%ifdef CONFIG
{
"RegData": {
"XMM0": ["0xA2A4A6A8AAACAEB0", "0xC2C4C6C8CACCCED0"],
"XMM1": ["0xA2A4A6A8AAACAEB0", "0xC2C4C6C8CACCCED0"]
},
"MemoryRegions": {
"0x100000000": "4096"
}
}
%endif
mov rdx, 0xe0000000
mov rax, 0x4142434445464748
mov [rdx + 8 * 0], rax
mov rax, 0x5152535455565758
mov [rdx + 8 * 1], rax
mov rax, 0x6162636465666768
mov [rdx + 8 * 2], rax
mov rax, 0x7172737475767778
mov [rdx + 8 * 3], rax
movaps xmm0, [rdx + 8 * 0]
movaps xmm1, [rdx + 8 * 0]
movaps xmm2, [rdx + 8 * 2]
paddusw xmm0, xmm2
paddusw xmm1, [rdx + 8 * 2]
hlt
+32
View File
@@ -0,0 +1,32 @@
%ifdef CONFIG
{
"RegData": {
"XMM0": ["0xE0E0E0E0E0E0E0E0", "0xE0E0E0E0E0E0E0E0"],
"XMM1": ["0xE0E0E0E0E0E0E0E0", "0xE0E0E0E0E0E0E0E0"]
},
"MemoryRegions": {
"0x100000000": "4096"
}
}
%endif
mov rdx, 0xe0000000
mov rax, 0x4142434445464748
mov [rdx + 8 * 0], rax
mov rax, 0x5152535455565758
mov [rdx + 8 * 1], rax
mov rax, 0x6162636465666768
mov [rdx + 8 * 2], rax
mov rax, 0x7172737475767778
mov [rdx + 8 * 3], rax
movaps xmm0, [rdx + 8 * 0]
movaps xmm1, [rdx + 8 * 0]
movaps xmm2, [rdx + 8 * 2]
psubsb xmm0, xmm2
psubsb xmm1, [rdx + 8 * 2]
hlt
+32
View File
@@ -0,0 +1,32 @@
%ifdef CONFIG
{
"RegData": {
"XMM0": ["0xDFE0DFE0DFE0DFE0", "0xDFE0DFE0DFE0DFE0"],
"XMM1": ["0xDFE0DFE0DFE0DFE0", "0xDFE0DFE0DFE0DFE0"]
},
"MemoryRegions": {
"0x100000000": "4096"
}
}
%endif
mov rdx, 0xe0000000
mov rax, 0x4142434445464748
mov [rdx + 8 * 0], rax
mov rax, 0x5152535455565758
mov [rdx + 8 * 1], rax
mov rax, 0x6162636465666768
mov [rdx + 8 * 2], rax
mov rax, 0x7172737475767778
mov [rdx + 8 * 3], rax
movaps xmm0, [rdx + 8 * 0]
movaps xmm1, [rdx + 8 * 0]
movaps xmm2, [rdx + 8 * 2]
psubsw xmm0, xmm2
psubsw xmm1, [rdx + 8 * 2]
hlt