MIPS64: Fix code generator for load and store data

For load and store operations, the code generator for MIPS64 used simple
instructions. In this CL, these instructions are substituted with
corresponding macro-instructions.

TEST=mjsunit/asm/poppler/poppler,
     mjsunit/asm/sqlite3/sqlite,
     mjsunit/asm/sqlite3/sqlite-pointer-masking

BUG=

Change-Id: I1a15be880cd32046b9e5eeea49e5c81ebd2f3138
Reviewed-on: https://chromium-review.googlesource.com/608975
Reviewed-by: Miran Karić <Miran.Karic@imgtec.com>
Commit-Queue: Miran Karić <Miran.Karic@imgtec.com>
Cr-Commit-Position: refs/heads/master@{#47279}
This commit is contained in:
Ilija Pavlovic 2017-08-10 13:33:46 +02:00 committed by Commit Bot
parent 14b8db68bf
commit ef3ad19b63

View File

@ -1814,70 +1814,70 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction(
break;
}
case kCheckedLoadInt8:
ASSEMBLE_CHECKED_LOAD_INTEGER(lb);
ASSEMBLE_CHECKED_LOAD_INTEGER(Lb);
break;
case kCheckedLoadUint8:
ASSEMBLE_CHECKED_LOAD_INTEGER(lbu);
ASSEMBLE_CHECKED_LOAD_INTEGER(Lbu);
break;
case kCheckedLoadInt16:
ASSEMBLE_CHECKED_LOAD_INTEGER(lh);
ASSEMBLE_CHECKED_LOAD_INTEGER(Lh);
break;
case kCheckedLoadUint16:
ASSEMBLE_CHECKED_LOAD_INTEGER(lhu);
ASSEMBLE_CHECKED_LOAD_INTEGER(Lhu);
break;
case kCheckedLoadWord32:
ASSEMBLE_CHECKED_LOAD_INTEGER(lw);
ASSEMBLE_CHECKED_LOAD_INTEGER(Lw);
break;
case kCheckedLoadWord64:
ASSEMBLE_CHECKED_LOAD_INTEGER(ld);
ASSEMBLE_CHECKED_LOAD_INTEGER(Ld);
break;
case kCheckedLoadFloat32:
ASSEMBLE_CHECKED_LOAD_FLOAT(Single, lwc1);
ASSEMBLE_CHECKED_LOAD_FLOAT(Single, Lwc1);
break;
case kCheckedLoadFloat64:
ASSEMBLE_CHECKED_LOAD_FLOAT(Double, ldc1);
ASSEMBLE_CHECKED_LOAD_FLOAT(Double, Ldc1);
break;
case kCheckedStoreWord8:
ASSEMBLE_CHECKED_STORE_INTEGER(sb);
ASSEMBLE_CHECKED_STORE_INTEGER(Sb);
break;
case kCheckedStoreWord16:
ASSEMBLE_CHECKED_STORE_INTEGER(sh);
ASSEMBLE_CHECKED_STORE_INTEGER(Sh);
break;
case kCheckedStoreWord32:
ASSEMBLE_CHECKED_STORE_INTEGER(sw);
ASSEMBLE_CHECKED_STORE_INTEGER(Sw);
break;
case kCheckedStoreWord64:
ASSEMBLE_CHECKED_STORE_INTEGER(sd);
ASSEMBLE_CHECKED_STORE_INTEGER(Sd);
break;
case kCheckedStoreFloat32:
ASSEMBLE_CHECKED_STORE_FLOAT(Single, swc1);
ASSEMBLE_CHECKED_STORE_FLOAT(Single, Swc1);
break;
case kCheckedStoreFloat64:
ASSEMBLE_CHECKED_STORE_FLOAT(Double, sdc1);
ASSEMBLE_CHECKED_STORE_FLOAT(Double, Sdc1);
break;
case kAtomicLoadInt8:
ASSEMBLE_ATOMIC_LOAD_INTEGER(lb);
ASSEMBLE_ATOMIC_LOAD_INTEGER(Lb);
break;
case kAtomicLoadUint8:
ASSEMBLE_ATOMIC_LOAD_INTEGER(lbu);
ASSEMBLE_ATOMIC_LOAD_INTEGER(Lbu);
break;
case kAtomicLoadInt16:
ASSEMBLE_ATOMIC_LOAD_INTEGER(lh);
ASSEMBLE_ATOMIC_LOAD_INTEGER(Lh);
break;
case kAtomicLoadUint16:
ASSEMBLE_ATOMIC_LOAD_INTEGER(lhu);
ASSEMBLE_ATOMIC_LOAD_INTEGER(Lhu);
break;
case kAtomicLoadWord32:
ASSEMBLE_ATOMIC_LOAD_INTEGER(lw);
ASSEMBLE_ATOMIC_LOAD_INTEGER(Lw);
break;
case kAtomicStoreWord8:
ASSEMBLE_ATOMIC_STORE_INTEGER(sb);
ASSEMBLE_ATOMIC_STORE_INTEGER(Sb);
break;
case kAtomicStoreWord16:
ASSEMBLE_ATOMIC_STORE_INTEGER(sh);
ASSEMBLE_ATOMIC_STORE_INTEGER(Sh);
break;
case kAtomicStoreWord32:
ASSEMBLE_ATOMIC_STORE_INTEGER(sw);
ASSEMBLE_ATOMIC_STORE_INTEGER(Sw);
break;
case kAtomicExchangeInt8:
case kAtomicExchangeUint8: