Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(116)

Unified Diff: src/compiler/s390/code-generator-s390.cc

Issue 2649113007: s390: TF Codegen Optimization (Closed)
Patch Set: remove 2 unnecessary unreachables Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | src/compiler/s390/instruction-codes-s390.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/compiler/s390/code-generator-s390.cc
diff --git a/src/compiler/s390/code-generator-s390.cc b/src/compiler/s390/code-generator-s390.cc
index 2cc39911065bdce198bb5cb9207753c31963f746..942042456a728931b2830f63bf33340e1d9ad0fd 100644
--- a/src/compiler/s390/code-generator-s390.cc
+++ b/src/compiler/s390/code-generator-s390.cc
@@ -302,8 +302,176 @@ Condition FlagsConditionToCondition(FlagsCondition condition, ArchOpcode op) {
return kNoCondition;
}
+typedef void (MacroAssembler::*RRTypeInstr)(Register, Register);
+typedef void (MacroAssembler::*RMTypeInstr)(Register, const MemOperand&);
+typedef void (MacroAssembler::*RITypeInstr)(Register, const Operand&);
+typedef void (MacroAssembler::*RRRTypeInstr)(Register, Register, Register);
+typedef void (MacroAssembler::*RRMTypeInstr)(Register, Register,
+ const MemOperand&);
+typedef void (MacroAssembler::*RRITypeInstr)(Register, Register,
+ const Operand&);
+
+#define CHECK_AND_ZERO_EXT_OUTPUT(num) \
+ { \
+ CHECK(HasImmediateInput(instr, (num))); \
+ int doZeroExt = i.InputInt32(num); \
+ if (doZeroExt) masm->LoadlW(i.OutputRegister(), i.OutputRegister()); \
+ }
+
+void AssembleBinOp(S390OperandConverter& i, MacroAssembler* masm,
+ Instruction* instr, RRTypeInstr rr_instr,
+ RMTypeInstr rm_instr, RITypeInstr ri_instr) {
+ CHECK(i.OutputRegister().is(i.InputRegister(0)));
+ AddressingMode mode = AddressingModeField::decode(instr->opcode());
+ int zeroExtIndex = 2;
+ if (mode != kMode_None) {
+ size_t first_index = 1;
+ MemOperand operand = i.MemoryOperand(&mode, &first_index);
+ zeroExtIndex = first_index;
+ CHECK(rm_instr != NULL);
+ (masm->*rm_instr)(i.OutputRegister(), operand);
+ } else if (HasRegisterInput(instr, 1)) {
+ (masm->*rr_instr)(i.OutputRegister(), i.InputRegister(1));
+ } else if (HasImmediateInput(instr, 1)) {
+ (masm->*ri_instr)(i.OutputRegister(), i.InputImmediate(1));
+ } else if (HasStackSlotInput(instr, 1)) {
+ (masm->*rm_instr)(i.OutputRegister(), i.InputStackSlot32(1));
+ } else {
+ UNREACHABLE();
+ }
+ CHECK_AND_ZERO_EXT_OUTPUT(zeroExtIndex);
+}
+
+void AssembleBinOp(S390OperandConverter& i, MacroAssembler* masm,
+ Instruction* instr, RRRTypeInstr rrr_instr,
+ RMTypeInstr rm_instr, RITypeInstr ri_instr) {
+ AddressingMode mode = AddressingModeField::decode(instr->opcode());
+ int zeroExtIndex = 2;
+ if (mode != kMode_None) {
+ CHECK(i.OutputRegister().is(i.InputRegister(0)));
+ size_t first_index = 1;
+ MemOperand operand = i.MemoryOperand(&mode, &first_index);
+ zeroExtIndex = first_index;
+ CHECK(rm_instr != NULL);
+ (masm->*rm_instr)(i.OutputRegister(), operand);
+ } else if (HasRegisterInput(instr, 1)) {
+ (masm->*rrr_instr)(i.OutputRegister(), i.InputRegister(0),
+ i.InputRegister(1));
+ } else if (HasImmediateInput(instr, 1)) {
+ CHECK(i.OutputRegister().is(i.InputRegister(0)));
+ (masm->*ri_instr)(i.OutputRegister(), i.InputImmediate(1));
+ } else if (HasStackSlotInput(instr, 1)) {
+ CHECK(i.OutputRegister().is(i.InputRegister(0)));
+ (masm->*rm_instr)(i.OutputRegister(), i.InputStackSlot32(1));
+ } else {
+ UNREACHABLE();
+ }
+ CHECK_AND_ZERO_EXT_OUTPUT(zeroExtIndex);
+}
+
+void AssembleBinOp(S390OperandConverter& i, MacroAssembler* masm,
+ Instruction* instr, RRRTypeInstr rrr_instr,
+ RMTypeInstr rm_instr, RRITypeInstr rri_instr) {
+ AddressingMode mode = AddressingModeField::decode(instr->opcode());
+ int zeroExtIndex = 2;
+ if (mode != kMode_None) {
+ CHECK(i.OutputRegister().is(i.InputRegister(0)));
+ size_t first_index = 1;
+ MemOperand operand = i.MemoryOperand(&mode, &first_index);
+ zeroExtIndex = first_index;
+ CHECK(rm_instr != NULL);
+ (masm->*rm_instr)(i.OutputRegister(), operand);
+ } else if (HasRegisterInput(instr, 1)) {
+ (masm->*rrr_instr)(i.OutputRegister(), i.InputRegister(0),
+ i.InputRegister(1));
+ } else if (HasImmediateInput(instr, 1)) {
+ (masm->*rri_instr)(i.OutputRegister(), i.InputRegister(0),
+ i.InputImmediate(1));
+ } else if (HasStackSlotInput(instr, 1)) {
+ CHECK(i.OutputRegister().is(i.InputRegister(0)));
+ (masm->*rm_instr)(i.OutputRegister(), i.InputStackSlot32(1));
+ } else {
+ UNREACHABLE();
+ }
+ CHECK_AND_ZERO_EXT_OUTPUT(zeroExtIndex);
+}
+
+void AssembleBinOp(S390OperandConverter& i, MacroAssembler* masm,
+ Instruction* instr, RRRTypeInstr rrr_instr,
+ RRMTypeInstr rrm_instr, RRITypeInstr rri_instr) {
+ AddressingMode mode = AddressingModeField::decode(instr->opcode());
+ int zeroExtIndex = 2;
+ if (mode != kMode_None) {
+ size_t first_index = 1;
+ MemOperand operand = i.MemoryOperand(&mode, &first_index);
+ zeroExtIndex = first_index;
+ CHECK(rrm_instr != NULL);
+ (masm->*rrm_instr)(i.OutputRegister(), i.InputRegister(0), operand);
+ } else if (HasRegisterInput(instr, 1)) {
+ (masm->*rrr_instr)(i.OutputRegister(), i.InputRegister(0),
+ i.InputRegister(1));
+ } else if (HasImmediateInput(instr, 1)) {
+ (masm->*rri_instr)(i.OutputRegister(), i.InputRegister(0),
+ i.InputImmediate(1));
+ } else if (HasStackSlotInput(instr, 1)) {
+ (masm->*rrm_instr)(i.OutputRegister(), i.InputRegister(0),
+ i.InputStackSlot32(1));
+ } else {
+ UNREACHABLE();
+ }
+ CHECK_AND_ZERO_EXT_OUTPUT(zeroExtIndex);
+}
+
+void AssembleBinOp(S390OperandConverter& i, MacroAssembler* masm,
+ Instruction* instr, RRRTypeInstr rrr_instr,
+ RRITypeInstr rri_instr) {
+ AddressingMode mode = AddressingModeField::decode(instr->opcode());
+ CHECK(mode == kMode_None);
+ int zeroExtIndex = 2;
+ if (HasRegisterInput(instr, 1)) {
+ (masm->*rrr_instr)(i.OutputRegister(), i.InputRegister(0),
+ i.InputRegister(1));
+ } else if (HasImmediateInput(instr, 1)) {
+ (masm->*rri_instr)(i.OutputRegister(), i.InputRegister(0),
+ i.InputImmediate(1));
+ } else {
+ UNREACHABLE();
+ }
+ CHECK_AND_ZERO_EXT_OUTPUT(zeroExtIndex);
+}
+
+void AssembleBinOp(S390OperandConverter& i, MacroAssembler* masm,
+ Instruction* instr, RRTypeInstr rr_instr,
+ RITypeInstr ri_instr) {
+ AddressingMode mode = AddressingModeField::decode(instr->opcode());
+ CHECK(mode == kMode_None);
+ CHECK(i.OutputRegister().is(i.InputRegister(0)));
+ int zeroExtIndex = 2;
+ if (HasRegisterInput(instr, 1)) {
+ (masm->*rr_instr)(i.OutputRegister(), i.InputRegister(1));
+ } else if (HasImmediateInput(instr, 1)) {
+ (masm->*ri_instr)(i.OutputRegister(), i.InputImmediate(1));
+ } else {
+ UNREACHABLE();
+ }
+ CHECK_AND_ZERO_EXT_OUTPUT(zeroExtIndex);
+}
+
+#define ASSEMBLE_BIN_OP(instr1, instr2, instr3) \
+ AssembleBinOp(i, masm(), instr, &MacroAssembler::instr1, \
+ &MacroAssembler::instr2, &MacroAssembler::instr3)
+
+#undef CHECK_AND_ZERO_EXT_OUTPUT
+
} // namespace
+#define CHECK_AND_ZERO_EXT_OUTPUT(num) \
+ { \
+ CHECK(HasImmediateInput(instr, (num))); \
+ int doZeroExt = i.InputInt32(num); \
+ if (doZeroExt) __ LoadlW(i.OutputRegister(), i.OutputRegister()); \
+ }
+
#define ASSEMBLE_FLOAT_UNOP(asm_instr) \
do { \
__ asm_instr(i.OutputDoubleRegister(), i.InputDoubleRegister(0)); \
@@ -359,7 +527,7 @@ Condition FlagsConditionToCondition(FlagsCondition condition, ArchOpcode op) {
__ LoadRR(r0, i.InputRegister(0)); \
__ shift_instr(r0, Operand(32)); \
__ div_instr(r0, i.InputRegister(1)); \
- __ ltr(i.OutputRegister(), r0); \
+ __ LoadlW(i.OutputRegister(), r0); \
} while (0)
#define ASSEMBLE_FLOAT_MODULO() \
@@ -1058,35 +1226,43 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction(
break;
}
case kS390_And32:
- ASSEMBLE_BINOP(And);
+ if (CpuFeatures::IsSupported(DISTINCT_OPS)) {
+ ASSEMBLE_BIN_OP(nrk, And, nilf);
+ } else {
+ ASSEMBLE_BIN_OP(nr, And, nilf);
+ }
break;
case kS390_And64:
ASSEMBLE_BINOP(AndP);
break;
case kS390_Or32:
- ASSEMBLE_BINOP(Or);
+ if (CpuFeatures::IsSupported(DISTINCT_OPS)) {
+ ASSEMBLE_BIN_OP(ork, Or, oilf);
+ } else {
+ ASSEMBLE_BIN_OP(or_z, Or, oilf);
+ }
+ break;
case kS390_Or64:
ASSEMBLE_BINOP(OrP);
break;
case kS390_Xor32:
- ASSEMBLE_BINOP(Xor);
+ if (CpuFeatures::IsSupported(DISTINCT_OPS)) {
+ ASSEMBLE_BIN_OP(xrk, Xor, xilf);
+ } else {
+ ASSEMBLE_BIN_OP(xr, Xor, xilf);
+ }
break;
case kS390_Xor64:
ASSEMBLE_BINOP(XorP);
break;
case kS390_ShiftLeft32:
- if (HasRegisterInput(instr, 1)) {
- if (i.OutputRegister().is(i.InputRegister(1)) &&
- !CpuFeatures::IsSupported(DISTINCT_OPS)) {
- __ LoadRR(kScratchReg, i.InputRegister(1));
- __ ShiftLeft(i.OutputRegister(), i.InputRegister(0), kScratchReg);
- } else {
- ASSEMBLE_BINOP(ShiftLeft);
- }
+ if (CpuFeatures::IsSupported(DISTINCT_OPS)) {
+ AssembleBinOp(i, masm(), instr, &MacroAssembler::sllk,
+ &MacroAssembler::sllk);
} else {
- ASSEMBLE_BINOP(ShiftLeft);
+ AssembleBinOp(i, masm(), instr, &MacroAssembler::sll,
+ &MacroAssembler::sll);
}
- __ LoadlW(i.OutputRegister(0), i.OutputRegister(0));
break;
#if V8_TARGET_ARCH_S390X
case kS390_ShiftLeft64:
@@ -1094,18 +1270,13 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction(
break;
#endif
case kS390_ShiftRight32:
- if (HasRegisterInput(instr, 1)) {
- if (i.OutputRegister().is(i.InputRegister(1)) &&
- !CpuFeatures::IsSupported(DISTINCT_OPS)) {
- __ LoadRR(kScratchReg, i.InputRegister(1));
- __ ShiftRight(i.OutputRegister(), i.InputRegister(0), kScratchReg);
- } else {
- ASSEMBLE_BINOP(ShiftRight);
- }
+ if (CpuFeatures::IsSupported(DISTINCT_OPS)) {
+ AssembleBinOp(i, masm(), instr, &MacroAssembler::srlk,
+ &MacroAssembler::srlk);
} else {
- ASSEMBLE_BINOP(ShiftRight);
+ AssembleBinOp(i, masm(), instr, &MacroAssembler::srl,
+ &MacroAssembler::srl);
}
- __ LoadlW(i.OutputRegister(0), i.OutputRegister(0));
break;
#if V8_TARGET_ARCH_S390X
case kS390_ShiftRight64:
@@ -1113,19 +1284,13 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction(
break;
#endif
case kS390_ShiftRightArith32:
- if (HasRegisterInput(instr, 1)) {
- if (i.OutputRegister().is(i.InputRegister(1)) &&
- !CpuFeatures::IsSupported(DISTINCT_OPS)) {
- __ LoadRR(kScratchReg, i.InputRegister(1));
- __ ShiftRightArith(i.OutputRegister(), i.InputRegister(0),
- kScratchReg);
- } else {
- ASSEMBLE_BINOP(ShiftRightArith);
- }
+ if (CpuFeatures::IsSupported(DISTINCT_OPS)) {
+ AssembleBinOp(i, masm(), instr, &MacroAssembler::srak,
+ &MacroAssembler::srak);
} else {
- ASSEMBLE_BINOP(ShiftRightArith);
+ AssembleBinOp(i, masm(), instr, &MacroAssembler::sra,
+ &MacroAssembler::sra);
}
- __ LoadlW(i.OutputRegister(), i.OutputRegister());
break;
#if V8_TARGET_ARCH_S390X
case kS390_ShiftRightArith64:
@@ -1207,7 +1372,7 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction(
break;
}
#endif
- case kS390_RotRight32:
+ case kS390_RotRight32: {
if (HasRegisterInput(instr, 1)) {
__ LoadComplementRR(kScratchReg, i.InputRegister(1));
__ rll(i.OutputRegister(), i.InputRegister(0), kScratchReg);
@@ -1215,7 +1380,9 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction(
__ rll(i.OutputRegister(), i.InputRegister(0),
Operand(32 - i.InputInt32(1)));
}
+ CHECK_AND_ZERO_EXT_OUTPUT(2);
break;
+ }
#if V8_TARGET_ARCH_S390X
case kS390_RotRight64:
if (HasRegisterInput(instr, 1)) {
@@ -1226,14 +1393,6 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction(
Operand(64 - i.InputInt32(1)));
}
break;
-#endif
- case kS390_Not32:
- __ Not32(i.OutputRegister(), i.InputRegister(0));
- break;
- case kS390_Not64:
- __ Not64(i.OutputRegister(), i.InputRegister(0));
- break;
-#if V8_TARGET_ARCH_S390X
case kS390_RotLeftAndClear64:
if (CpuFeatures::IsSupported(GENERAL_INSTR_EXT)) {
int shiftAmount = i.InputInt32(1);
@@ -1282,10 +1441,14 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction(
}
break;
#endif
- case kS390_Add32:
- ASSEMBLE_BINOP(Add32);
- __ LoadW(i.OutputRegister(), i.OutputRegister());
+ case kS390_Add32: {
+ if (CpuFeatures::IsSupported(DISTINCT_OPS)) {
+ ASSEMBLE_BIN_OP(ark, Add32, Add32_RRI);
+ } else {
+ ASSEMBLE_BIN_OP(ar, Add32, Add32_RI);
+ }
break;
+ }
case kS390_Add64:
ASSEMBLE_BINOP(AddP);
break;
@@ -1310,8 +1473,11 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction(
}
break;
case kS390_Sub32:
- ASSEMBLE_BINOP(Sub32);
- __ LoadW(i.OutputRegister(), i.OutputRegister());
+ if (CpuFeatures::IsSupported(DISTINCT_OPS)) {
+ ASSEMBLE_BIN_OP(srk, Sub32, Sub32_RRI);
+ } else {
+ ASSEMBLE_BIN_OP(sr, Sub32, Sub32_RI);
+ }
break;
case kS390_Sub64:
ASSEMBLE_BINOP(SubP);
@@ -1343,17 +1509,15 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction(
}
break;
case kS390_Mul32:
- if (HasRegisterInput(instr, 1)) {
- __ Mul32(i.InputRegister(0), i.InputRegister(1));
- } else if (HasImmediateInput(instr, 1)) {
- __ Mul32(i.InputRegister(0), i.InputImmediate(1));
- } else if (HasStackSlotInput(instr, 1)) {
- __ Mul32(i.InputRegister(0), i.InputStackSlot32(1));
- } else {
- UNIMPLEMENTED();
- }
+ ASSEMBLE_BIN_OP(Mul32, Mul32, Mul32);
+ break;
+ case kS390_Mul32WithOverflow:
+ ASSEMBLE_BIN_OP(Mul32WithOverflowIfCCUnequal,
+ Mul32WithOverflowIfCCUnequal,
+ Mul32WithOverflowIfCCUnequal);
break;
case kS390_Mul64:
+ CHECK(i.OutputRegister().is(i.InputRegister(0)));
if (HasRegisterInput(instr, 1)) {
__ Mul64(i.InputRegister(0), i.InputRegister(1));
} else if (HasImmediateInput(instr, 1)) {
@@ -1365,15 +1529,7 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction(
}
break;
case kS390_MulHigh32:
- __ LoadRR(r1, i.InputRegister(0));
- if (HasRegisterInput(instr, 1)) {
- __ mr_z(r0, i.InputRegister(1));
- } else if (HasStackSlotInput(instr, 1)) {
- __ mfy(r0, i.InputStackSlot32(1));
- } else {
- UNIMPLEMENTED();
- }
- __ LoadW(i.OutputRegister(), r0);
+ ASSEMBLE_BIN_OP(MulHigh32, MulHigh32, MulHigh32);
break;
case kS390_Mul32WithHigh32:
__ LoadRR(r1, i.InputRegister(0));
@@ -1419,13 +1575,23 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction(
__ ltgr(i.OutputRegister(), r1); // Copy R1: Quotient to output
break;
#endif
- case kS390_Div32:
- __ LoadRR(r0, i.InputRegister(0));
- __ srda(r0, Operand(32));
- __ dr(r0, i.InputRegister(1));
- __ LoadAndTestP_ExtendSrc(i.OutputRegister(),
- r1); // Copy R1: Quotient to output
+ case kS390_Div32: {
+ AddressingMode mode = AddressingModeField::decode(instr->opcode());
+ __ lgfr(r1, i.InputRegister(0));
+ if (mode != kMode_None) {
+ size_t first_index = 1;
+ MemOperand operand = i.MemoryOperand(&mode, &first_index);
+ __ dsgf(r0, operand);
+ } else if (HasRegisterInput(instr, 1)) {
+ __ dsgfr(r0, i.InputRegister(1));
+ } else if (HasStackSlotInput(instr, 1)) {
+ __ dsgf(r0, i.InputStackSlot32(1));
+ } else {
+ UNREACHABLE();
+ }
+ __ LoadlW(i.OutputRegister(), r1);
break;
+ }
#if V8_TARGET_ARCH_S390X
case kS390_DivU64:
__ LoadRR(r1, i.InputRegister(0));
@@ -1434,14 +1600,24 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction(
__ ltgr(i.OutputRegister(), r1); // Copy R1: Quotient to output
break;
#endif
- case kS390_DivU32:
- __ LoadRR(r0, i.InputRegister(0));
+ case kS390_DivU32: {
+ __ lr(r0, i.InputRegister(0));
__ srdl(r0, Operand(32));
- __ dlr(r0, i.InputRegister(1)); // R0:R1: Dividend
- __ LoadlW(i.OutputRegister(), r1); // Copy R1: Quotient to output
- __ LoadAndTestP_ExtendSrc(r1, r1);
+ AddressingMode mode = AddressingModeField::decode(instr->opcode());
+ if (mode != kMode_None) {
+ size_t first_index = 1;
+ MemOperand operand = i.MemoryOperand(&mode, &first_index);
+ __ dl(r0, operand);
+ } else if (HasRegisterInput(instr, 1)) {
+ __ dlr(r0, i.InputRegister(1));
+ } else if (HasStackSlotInput(instr, 1)) {
+ __ dl(r0, i.InputStackSlot32(1));
+ } else {
+ UNREACHABLE();
+ }
+ __ LoadlW(i.OutputRegister(), r1);
break;
-
+ }
case kS390_DivFloat:
// InputDoubleRegister(1)=InputDoubleRegister(0)/InputDoubleRegister(1)
if (i.OutputDoubleRegister().is(i.InputDoubleRegister(1))) {
@@ -1575,7 +1751,7 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction(
}
case kS390_Neg32:
__ lcr(i.OutputRegister(), i.InputRegister(0));
- __ LoadW(i.OutputRegister(), i.OutputRegister());
+ CHECK_AND_ZERO_EXT_OUTPUT(1);
break;
case kS390_Neg64:
__ lcgr(i.OutputRegister(), i.InputRegister(0));
@@ -1731,18 +1907,12 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction(
break;
}
case kS390_ExtendSignWord8:
-#if V8_TARGET_ARCH_S390X
- __ lgbr(i.OutputRegister(), i.InputRegister(0));
-#else
__ lbr(i.OutputRegister(), i.InputRegister(0));
-#endif
+ CHECK_AND_ZERO_EXT_OUTPUT(1);
break;
case kS390_ExtendSignWord16:
-#if V8_TARGET_ARCH_S390X
- __ lghr(i.OutputRegister(), i.InputRegister(0));
-#else
__ lhr(i.OutputRegister(), i.InputRegister(0));
-#endif
+ CHECK_AND_ZERO_EXT_OUTPUT(1);
break;
#if V8_TARGET_ARCH_S390X
case kS390_ExtendSignWord32:
@@ -2013,6 +2183,9 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction(
case kS390_StoreDouble:
ASSEMBLE_STORE_DOUBLE();
break;
+ case kS390_Lay:
+ __ lay(i.OutputRegister(), i.MemoryOperand());
+ break;
case kCheckedLoadInt8:
ASSEMBLE_CHECKED_LOAD_INTEGER(LoadlB);
#if V8_TARGET_ARCH_S390X
@@ -2361,7 +2534,7 @@ void CodeGenerator::AssembleMove(InstructionOperand* source,
#endif
__ mov(dst, Operand(src.ToInt32(), src.rmode()));
} else {
- __ mov(dst, Operand(src.ToInt32()));
+ __ Load(dst, Operand(src.ToInt32()));
}
break;
case Constant::kInt64:
@@ -2370,7 +2543,7 @@ void CodeGenerator::AssembleMove(InstructionOperand* source,
__ mov(dst, Operand(src.ToInt64(), src.rmode()));
} else {
DCHECK(!RelocInfo::IsWasmSizeReference(src.rmode()));
- __ mov(dst, Operand(src.ToInt64()));
+ __ Load(dst, Operand(src.ToInt64()));
}
#else
__ mov(dst, Operand(src.ToInt64()));
« no previous file with comments | « no previous file | src/compiler/s390/instruction-codes-s390.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698