S390X: [turbofan] Fix checked loads/stores.
This refines 6382a61059
-- as we still
require clean up of the uint index register.
TEST=mjsunit/asm/float32array-negative-offset
R=joransiu@ca.ibm.com, mbrandy@us.ibm.com, michael_dawson@ca.ibm.com, bjaideep@ca.ibm.com
BUG=
Conflicts:
src/compiler/s390/code-generator-s390.cc
Review-Url: https://codereview.chromium.org/1921073003
Cr-Commit-Position: refs/heads/master@{#35879}
This commit is contained in:
parent
38e7d1fb1a
commit
3e9924f6dd
@ -466,6 +466,7 @@ Condition FlagsConditionToCondition(FlagsCondition condition, ArchOpcode op) {
|
||||
} \
|
||||
auto ool = new (zone()) OutOfLineLoadNAN##width(this, result); \
|
||||
__ bge(ool->entry()); \
|
||||
__ CleanUInt32(offset); \
|
||||
__ asm_instr(result, operand); \
|
||||
__ bind(ool->exit()); \
|
||||
} while (0)
|
||||
@ -484,6 +485,7 @@ Condition FlagsConditionToCondition(FlagsCondition condition, ArchOpcode op) {
|
||||
} \
|
||||
auto ool = new (zone()) OutOfLineLoadZero(this, result); \
|
||||
__ bge(ool->entry()); \
|
||||
__ CleanUInt32(offset); \
|
||||
__ asm_instr(result, operand); \
|
||||
__ bind(ool->exit()); \
|
||||
} while (0)
|
||||
@ -502,6 +504,7 @@ Condition FlagsConditionToCondition(FlagsCondition condition, ArchOpcode op) {
|
||||
} \
|
||||
__ bge(&done); \
|
||||
DoubleRegister value = i.InputDoubleRegister(3); \
|
||||
__ CleanUInt32(offset); \
|
||||
__ StoreFloat32(value, operand); \
|
||||
__ bind(&done); \
|
||||
} while (0)
|
||||
@ -521,6 +524,7 @@ Condition FlagsConditionToCondition(FlagsCondition condition, ArchOpcode op) {
|
||||
} \
|
||||
__ bge(&done); \
|
||||
DoubleRegister value = i.InputDoubleRegister(3); \
|
||||
__ CleanUInt32(offset); \
|
||||
__ StoreDouble(value, operand); \
|
||||
__ bind(&done); \
|
||||
} while (0)
|
||||
@ -539,6 +543,7 @@ Condition FlagsConditionToCondition(FlagsCondition condition, ArchOpcode op) {
|
||||
} \
|
||||
__ bge(&done); \
|
||||
Register value = i.InputRegister(3); \
|
||||
__ CleanUInt32(offset); \
|
||||
__ asm_instr(value, operand); \
|
||||
__ bind(&done); \
|
||||
} while (0)
|
||||
|
@ -412,6 +412,12 @@ class MacroAssembler : public Assembler {
|
||||
|
||||
void mov(Register dst, const Operand& src);
|
||||
|
||||
void CleanUInt32(Register x) {
|
||||
#ifdef V8_TARGET_ARCH_S390X
|
||||
llgfr(x, x);
|
||||
#endif
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
// GC Support
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user