Reviewers: Benedikt Meurer, dstence, michael_dawson,
Description:
PPC: [turbofan] Add TruncationMode for TruncateFloat64ToInt32.
Port 4b38c15817033ccd9a65efbb3d038ae2423293c2
Original commit message:
We actually need round to zero truncation to implement the counterpart
of LDoubleToI in TurboFan, which tries to convert a double to an integer
as required for keyed load/store optimizations.
Drive-by-cleanup: Reduce some code duplication in the
InstructionSelector
implementations.
[email protected], [email protected], [email protected]
BUG=
Please review this at https://codereview.chromium.org/1220373003/
Base URL: https://chromium.googlesource.com/v8/v8.git@master
Affected files (+14, -9 lines):
M src/compiler/ppc/instruction-selector-ppc.cc
Index: src/compiler/ppc/instruction-selector-ppc.cc
diff --git a/src/compiler/ppc/instruction-selector-ppc.cc
b/src/compiler/ppc/instruction-selector-ppc.cc
index
e9e6a758ec35744959557ef42ac4f6e02c47356c..0fe2acb369bbec610c182371f255cb1658f770f6
100644
--- a/src/compiler/ppc/instruction-selector-ppc.cc
+++ b/src/compiler/ppc/instruction-selector-ppc.cc
@@ -874,26 +874,31 @@ void
InstructionSelector::VisitChangeInt32ToInt64(Node* node) {
void InstructionSelector::VisitChangeUint32ToUint64(Node* node) {
// TODO(mbrandy): inspect input to see if nop is appropriate.
- PPCOperandGenerator g(this);
- Emit(kPPC_Uint32ToUint64, g.DefineAsRegister(node),
- g.UseRegister(node->InputAt(0)));
+ VisitRR(this, kPPC_Uint32ToUint64, node);
}
#endif
void InstructionSelector::VisitTruncateFloat64ToFloat32(Node* node) {
- PPCOperandGenerator g(this);
- Emit(kPPC_DoubleToFloat32, g.DefineAsRegister(node),
- g.UseRegister(node->InputAt(0)));
+ VisitRR(this, kPPC_DoubleToFloat32, node);
+}
+
+
+void InstructionSelector::VisitTruncateFloat64ToInt32(Node* node) {
+ switch (TruncationModeOf(node->op())) {
+ case TruncationMode::kJavaScript:
+ return VisitRR(this, kArchTruncateDoubleToI, node);
+ case TruncationMode::kRoundToZero:
+ return VisitRR(this, kPPC_DoubleToInt32, node);
+ }
+ UNREACHABLE();
}
#if V8_TARGET_ARCH_PPC64
void InstructionSelector::VisitTruncateInt64ToInt32(Node* node) {
- PPCOperandGenerator g(this);
// TODO(mbrandy): inspect input to see if nop is appropriate.
- Emit(kPPC_Int64ToInt32, g.DefineAsRegister(node),
- g.UseRegister(node->InputAt(0)));
+ VisitRR(this, kPPC_Int64ToInt32, node);
}
#endif
--
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
---
You received this message because you are subscribed to the Google Groups "v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.