X86: Make sure immediate values are truncated properly.
Register values will be "picked" which will assure they don't have junk beyond the part we're using. Immediate values don't go through a similar process, so we should truncate them explicitly.
This commit is contained in:
parent
ef3896d851
commit
e2e0ae576a
|
@ -525,7 +525,7 @@ let {{
|
|||
uint64_t hiResult;
|
||||
uint64_t psrc1_h = psrc1 / shifter;
|
||||
uint64_t psrc1_l = psrc1 & mask(halfSize);
|
||||
uint64_t psrc2_h = op2 / shifter;
|
||||
uint64_t psrc2_h = (op2 / shifter) & mask(halfSize);
|
||||
uint64_t psrc2_l = op2 & mask(halfSize);
|
||||
hiResult = ((psrc1_l * psrc2_h + psrc1_h * psrc2_l +
|
||||
((psrc1_l * psrc2_l) / shifter)) /shifter) +
|
||||
|
@ -545,7 +545,7 @@ let {{
|
|||
uint64_t shifter = (1ULL << halfSize);
|
||||
uint64_t psrc1_h = psrc1 / shifter;
|
||||
uint64_t psrc1_l = psrc1 & mask(halfSize);
|
||||
uint64_t psrc2_h = op2 / shifter;
|
||||
uint64_t psrc2_h = (op2 / shifter) & mask(halfSize);
|
||||
uint64_t psrc2_l = op2 & mask(halfSize);
|
||||
ProdHi = ((psrc1_l * psrc2_h + psrc1_h * psrc2_l +
|
||||
((psrc1_l * psrc2_l) / shifter)) / shifter) +
|
||||
|
|
Loading…
Reference in a new issue