From daf083f8707836321206c6e4b7cc231f0d3b6fbf Mon Sep 17 00:00:00 2001 From: Clark Coleman <clc@zephyr-software.com> Date: Fri, 23 Oct 2020 08:37:15 -0400 Subject: [PATCH] SPARK: Handle wide operands (128+ bits). --- src/base/SMPInstr.cpp | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/src/base/SMPInstr.cpp b/src/base/SMPInstr.cpp index 80d84585..8a742f84 100644 --- a/src/base/SMPInstr.cpp +++ b/src/base/SMPInstr.cpp @@ -474,6 +474,15 @@ void GetSPARKMemWriteProcString(std::size_t OpndByteWidth, char *MemWriteString) else if (OpndByteWidth == 10) { SMP_snprintf(MemWriteString, 30, "X86.WriteMem80(Unsigned64("); } + else if (OpndByteWidth == 16) { + SMP_snprintf(MemWriteString, 30, "X86.WriteMem128(Unsigned64("); + } + else if (OpndByteWidth == 32) { + SMP_snprintf(MemWriteString, 30, "X86.WriteMem256(Unsigned64("); + } + else if (OpndByteWidth == 64) { + SMP_snprintf(MemWriteString, 30, "X86.WriteMem512(Unsigned64("); + } return; } // end of GetSPARKMemWriteProcString() @@ -495,6 +504,15 @@ void GetSPARKMemReadProcString(std::size_t OpndByteWidth, char *MemReadString) { else if (OpndByteWidth == 10) { SMP_snprintf(MemReadString, 30, "X86.ReadMem80(Unsigned64("); } + else if (OpndByteWidth == 16) { + SMP_snprintf(MemReadString, 30, "X86.ReadMem128(Unsigned64("); + } + else if (OpndByteWidth == 32) { + SMP_snprintf(MemReadString, 30, "X86.ReadMem256(Unsigned64("); + } + else if (OpndByteWidth == 64) { + SMP_snprintf(MemReadString, 30, "X86.ReadMem512(Unsigned64("); + } return; } // end of GetSPARKMemReadProcString() @@ -516,6 +534,15 @@ void GetSPARKWidthSignedCastString(std::size_t OpndByteWidth, char *CastString) else if (OpndByteWidth == 10) { SMP_snprintf(CastString, 15, "Signed80"); } + else if (OpndByteWidth == 16) { + SMP_snprintf(CastString, 15, "Signed128"); + } + else if (OpndByteWidth == 32) { + SMP_snprintf(CastString, 15, "Signed256"); + } + else if (OpndByteWidth == 64) { + SMP_snprintf(CastString, 15, "Signed512"); + } return; @@ -538,6 +565,15 @@ void GetSPARKWidthCastString(std::size_t OpndByteWidth, char *CastString) { else if (OpndByteWidth == 10) { SMP_snprintf(CastString, 15, "Unsigned80"); } + else if (OpndByteWidth == 16) { + SMP_snprintf(CastString, 15, "Unsigned128"); + } + else if (OpndByteWidth == 32) { + SMP_snprintf(CastString, 15, "Unsigned256"); + } + else if (OpndByteWidth == 64) { + SMP_snprintf(CastString, 15, "Unsigned512"); + } return; -- GitLab