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/machine-operator.cc

Issue 668173002: Add Float64Round operator. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Remove comma at end of enumerator list. Created 6 years, 2 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
Index: src/compiler/machine-operator.cc
diff --git a/src/compiler/machine-operator.cc b/src/compiler/machine-operator.cc
index b5da8297e1d2c62e73d06866f50d8eaa489ea071..33ada6e92274c121c5ee0e00e7e9b3699c86fef0 100644
--- a/src/compiler/machine-operator.cc
+++ b/src/compiler/machine-operator.cc
@@ -181,6 +181,22 @@ struct MachineOperatorBuilderImpl {
Store##Type##FullWriteBarrier##Operator k##Store##Type##FullWriteBarrier;
MACHINE_TYPE_LIST(STORE)
#undef STORE
+
+ struct Float64RoundOperator FINAL : public Operator1<Float64RoundMode> {
+ explicit Float64RoundOperator(Float64RoundMode mode)
+ : Operator1(IrOpcode::kFloat64Round, Operator::kPure, 1, 1,
+ "Float64Round", mode) {}
+ };
+ Float64RoundOperator kFloat64RoundDown;
+ Float64RoundOperator kFloat64RoundUp;
+ Float64RoundOperator kFloat64RoundAway;
+ Float64RoundOperator kFloat64RoundTowards;
+
+ MachineOperatorBuilderImpl()
+ : kFloat64RoundDown(kRoundDown),
+ kFloat64RoundUp(kRoundUp),
+ kFloat64RoundAway(kRoundAway),
+ kFloat64RoundTowards(kRoundTowards) {}
};
@@ -188,8 +204,9 @@ static base::LazyInstance<MachineOperatorBuilderImpl>::type kImpl =
LAZY_INSTANCE_INITIALIZER;
-MachineOperatorBuilder::MachineOperatorBuilder(MachineType word)
- : impl_(kImpl.Get()), word_(word) {
+MachineOperatorBuilder::MachineOperatorBuilder(
+ MachineType word, SupportedOperators supportedOperators)
+ : impl_(kImpl.Get()), word_(word), supportedOperators_(supportedOperators) {
DCHECK(word == kRepWord32 || word == kRepWord64);
}
@@ -237,6 +254,25 @@ const Operator* MachineOperatorBuilder::Store(StoreRepresentation rep) {
return NULL;
}
+
+const Operator* MachineOperatorBuilder::Float64Round(Float64RoundMode mode) {
+ switch (mode) {
+ case kRoundDown:
+ DCHECK(HasFloat64Floor());
+ return &impl_.kFloat64RoundDown;
+ case kRoundUp:
+ DCHECK(HasFloat64Ceil());
+ return &impl_.kFloat64RoundUp;
+ case kRoundAway:
+ DCHECK(HasFloat64RoundTiesAway());
+ return &impl_.kFloat64RoundAway;
+ case kRoundTowards:
+ DCHECK(HasFloat64RoundTiesTowards());
+ return &impl_.kFloat64RoundTowards;
+ }
+ UNREACHABLE();
+ return NULL;
+}
} // namespace compiler
} // namespace internal
} // namespace v8

Powered by Google App Engine
This is Rietveld 408576698