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

Unified Diff: test/cctest/compiler/test-representation-change.cc

Issue 1571263004: [turbofan] Replace MachineSemantic with Type in simplified lowering. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Rename upper -> type Created 4 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 | « src/compiler/simplified-lowering.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: test/cctest/compiler/test-representation-change.cc
diff --git a/test/cctest/compiler/test-representation-change.cc b/test/cctest/compiler/test-representation-change.cc
index 7755c13f3dadb8e19dbb292871188d04514706c6..7353e167d9f6c45d2e435348da27a5c994a73bb5 100644
--- a/test/cctest/compiler/test-representation-change.cc
+++ b/test/cctest/compiler/test-representation-change.cc
@@ -83,18 +83,20 @@ class RepresentationChangerTester : public HandleAndZoneScope,
return n;
}
- void CheckTypeError(MachineType from, MachineRepresentation to) {
+ void CheckTypeError(MachineRepresentation from, Type* from_type,
+ MachineRepresentation to) {
changer()->testing_type_errors_ = true;
changer()->type_error_ = false;
Node* n = Parameter(0);
- Node* c = changer()->GetRepresentationFor(n, from, to);
+ Node* c = changer()->GetRepresentationFor(n, from, from_type, to);
CHECK(changer()->type_error_);
CHECK_EQ(n, c);
}
- void CheckNop(MachineType from, MachineRepresentation to) {
+ void CheckNop(MachineRepresentation from, Type* from_type,
+ MachineRepresentation to) {
Node* n = Parameter(0);
- Node* c = changer()->GetRepresentationFor(n, from, to);
+ Node* c = changer()->GetRepresentationFor(n, from, from_type, to);
CHECK_EQ(n, c);
}
};
@@ -112,12 +114,14 @@ TEST(BoolToBit_constant) {
Node* true_node = r.jsgraph()->TrueConstant();
Node* true_bit = r.changer()->GetRepresentationFor(
- true_node, MachineType::RepTagged(), MachineRepresentation::kBit);
+ true_node, MachineRepresentation::kTagged, Type::None(),
+ MachineRepresentation::kBit);
r.CheckInt32Constant(true_bit, 1);
Node* false_node = r.jsgraph()->FalseConstant();
Node* false_bit = r.changer()->GetRepresentationFor(
- false_node, MachineType::RepTagged(), MachineRepresentation::kBit);
+ false_node, MachineRepresentation::kTagged, Type::None(),
+ MachineRepresentation::kBit);
r.CheckInt32Constant(false_bit, 0);
}
@@ -128,7 +132,8 @@ TEST(BitToBool_constant) {
for (int i = -5; i < 5; i++) {
Node* node = r.jsgraph()->Int32Constant(i);
Node* val = r.changer()->GetRepresentationFor(
- node, MachineType::RepBit(), MachineRepresentation::kTagged);
+ node, MachineRepresentation::kBit, Type::Boolean(),
+ MachineRepresentation::kTagged);
r.CheckHeapConstant(val, i == 0 ? r.isolate()->heap()->false_value()
: r.isolate()->heap()->true_value());
}
@@ -142,7 +147,8 @@ TEST(ToTagged_constant) {
FOR_FLOAT64_INPUTS(i) {
Node* n = r.jsgraph()->Float64Constant(*i);
Node* c = r.changer()->GetRepresentationFor(
- n, MachineType::RepFloat64(), MachineRepresentation::kTagged);
+ n, MachineRepresentation::kFloat64, Type::None(),
+ MachineRepresentation::kTagged);
r.CheckNumberConstant(c, *i);
}
}
@@ -151,7 +157,8 @@ TEST(ToTagged_constant) {
FOR_FLOAT64_INPUTS(i) {
Node* n = r.jsgraph()->Constant(*i);
Node* c = r.changer()->GetRepresentationFor(
- n, MachineType::RepFloat64(), MachineRepresentation::kTagged);
+ n, MachineRepresentation::kFloat64, Type::None(),
+ MachineRepresentation::kTagged);
r.CheckNumberConstant(c, *i);
}
}
@@ -160,7 +167,8 @@ TEST(ToTagged_constant) {
FOR_FLOAT32_INPUTS(i) {
Node* n = r.jsgraph()->Float32Constant(*i);
Node* c = r.changer()->GetRepresentationFor(
- n, MachineType::RepFloat32(), MachineRepresentation::kTagged);
+ n, MachineRepresentation::kFloat32, Type::None(),
+ MachineRepresentation::kTagged);
r.CheckNumberConstant(c, *i);
}
}
@@ -169,7 +177,8 @@ TEST(ToTagged_constant) {
FOR_INT32_INPUTS(i) {
Node* n = r.jsgraph()->Int32Constant(*i);
Node* c = r.changer()->GetRepresentationFor(
- n, MachineType::Int32(), MachineRepresentation::kTagged);
+ n, MachineRepresentation::kWord32, Type::Signed32(),
+ MachineRepresentation::kTagged);
r.CheckNumberConstant(c, *i);
}
}
@@ -178,7 +187,8 @@ TEST(ToTagged_constant) {
FOR_UINT32_INPUTS(i) {
Node* n = r.jsgraph()->Int32Constant(*i);
Node* c = r.changer()->GetRepresentationFor(
- n, MachineType::Uint32(), MachineRepresentation::kTagged);
+ n, MachineRepresentation::kWord32, Type::Unsigned32(),
+ MachineRepresentation::kTagged);
r.CheckNumberConstant(c, *i);
}
}
@@ -192,7 +202,8 @@ TEST(ToFloat64_constant) {
FOR_FLOAT64_INPUTS(i) {
Node* n = r.jsgraph()->Float64Constant(*i);
Node* c = r.changer()->GetRepresentationFor(
- n, MachineType::RepFloat64(), MachineRepresentation::kFloat64);
+ n, MachineRepresentation::kFloat64, Type::None(),
+ MachineRepresentation::kFloat64);
CHECK_EQ(n, c);
}
}
@@ -201,7 +212,8 @@ TEST(ToFloat64_constant) {
FOR_FLOAT64_INPUTS(i) {
Node* n = r.jsgraph()->Constant(*i);
Node* c = r.changer()->GetRepresentationFor(
- n, MachineType::RepTagged(), MachineRepresentation::kFloat64);
+ n, MachineRepresentation::kTagged, Type::None(),
+ MachineRepresentation::kFloat64);
r.CheckFloat64Constant(c, *i);
}
}
@@ -210,7 +222,8 @@ TEST(ToFloat64_constant) {
FOR_FLOAT32_INPUTS(i) {
Node* n = r.jsgraph()->Float32Constant(*i);
Node* c = r.changer()->GetRepresentationFor(
- n, MachineType::RepFloat32(), MachineRepresentation::kFloat64);
+ n, MachineRepresentation::kFloat32, Type::None(),
+ MachineRepresentation::kFloat64);
r.CheckFloat64Constant(c, *i);
}
}
@@ -219,7 +232,8 @@ TEST(ToFloat64_constant) {
FOR_INT32_INPUTS(i) {
Node* n = r.jsgraph()->Int32Constant(*i);
Node* c = r.changer()->GetRepresentationFor(
- n, MachineType::Int32(), MachineRepresentation::kFloat64);
+ n, MachineRepresentation::kWord32, Type::Signed32(),
+ MachineRepresentation::kFloat64);
r.CheckFloat64Constant(c, *i);
}
}
@@ -228,7 +242,8 @@ TEST(ToFloat64_constant) {
FOR_UINT32_INPUTS(i) {
Node* n = r.jsgraph()->Int32Constant(*i);
Node* c = r.changer()->GetRepresentationFor(
- n, MachineType::Uint32(), MachineRepresentation::kFloat64);
+ n, MachineRepresentation::kWord32, Type::Unsigned32(),
+ MachineRepresentation::kFloat64);
r.CheckFloat64Constant(c, *i);
}
}
@@ -250,7 +265,8 @@ TEST(ToFloat32_constant) {
FOR_FLOAT32_INPUTS(i) {
Node* n = r.jsgraph()->Float32Constant(*i);
Node* c = r.changer()->GetRepresentationFor(
- n, MachineType::RepFloat32(), MachineRepresentation::kFloat32);
+ n, MachineRepresentation::kFloat32, Type::None(),
+ MachineRepresentation::kFloat32);
CHECK_EQ(n, c);
}
}
@@ -259,7 +275,8 @@ TEST(ToFloat32_constant) {
FOR_FLOAT32_INPUTS(i) {
Node* n = r.jsgraph()->Constant(*i);
Node* c = r.changer()->GetRepresentationFor(
- n, MachineType::RepTagged(), MachineRepresentation::kFloat32);
+ n, MachineRepresentation::kTagged, Type::None(),
+ MachineRepresentation::kFloat32);
r.CheckFloat32Constant(c, *i);
}
}
@@ -268,7 +285,8 @@ TEST(ToFloat32_constant) {
FOR_FLOAT32_INPUTS(i) {
Node* n = r.jsgraph()->Float64Constant(*i);
Node* c = r.changer()->GetRepresentationFor(
- n, MachineType::RepFloat64(), MachineRepresentation::kFloat32);
+ n, MachineRepresentation::kFloat64, Type::None(),
+ MachineRepresentation::kFloat32);
r.CheckFloat32Constant(c, *i);
}
}
@@ -278,7 +296,8 @@ TEST(ToFloat32_constant) {
if (!IsFloat32Int32(*i)) continue;
Node* n = r.jsgraph()->Int32Constant(*i);
Node* c = r.changer()->GetRepresentationFor(
- n, MachineType::Int32(), MachineRepresentation::kFloat32);
+ n, MachineRepresentation::kWord32, Type::Signed32(),
+ MachineRepresentation::kFloat32);
r.CheckFloat32Constant(c, static_cast<float>(*i));
}
}
@@ -288,7 +307,8 @@ TEST(ToFloat32_constant) {
if (!IsFloat32Uint32(*i)) continue;
Node* n = r.jsgraph()->Int32Constant(*i);
Node* c = r.changer()->GetRepresentationFor(
- n, MachineType::Uint32(), MachineRepresentation::kFloat32);
+ n, MachineRepresentation::kWord32, Type::Unsigned32(),
+ MachineRepresentation::kFloat32);
r.CheckFloat32Constant(c, static_cast<float>(*i));
}
}
@@ -302,7 +322,8 @@ TEST(ToInt32_constant) {
FOR_INT32_INPUTS(i) {
Node* n = r.jsgraph()->Int32Constant(*i);
Node* c = r.changer()->GetRepresentationFor(
- n, MachineType::Int32(), MachineRepresentation::kWord32);
+ n, MachineRepresentation::kWord32, Type::Signed32(),
+ MachineRepresentation::kWord32);
r.CheckInt32Constant(c, *i);
}
}
@@ -312,8 +333,7 @@ TEST(ToInt32_constant) {
if (!IsFloat32Int32(*i)) continue;
Node* n = r.jsgraph()->Float32Constant(static_cast<float>(*i));
Node* c = r.changer()->GetRepresentationFor(
- n,
- MachineType(MachineRepresentation::kFloat32, MachineSemantic::kInt32),
+ n, MachineRepresentation::kFloat32, Type::Signed32(),
MachineRepresentation::kWord32);
r.CheckInt32Constant(c, *i);
}
@@ -323,8 +343,7 @@ TEST(ToInt32_constant) {
FOR_INT32_INPUTS(i) {
Node* n = r.jsgraph()->Float64Constant(*i);
Node* c = r.changer()->GetRepresentationFor(
- n,
- MachineType(MachineRepresentation::kFloat64, MachineSemantic::kInt32),
+ n, MachineRepresentation::kFloat64, Type::Signed32(),
MachineRepresentation::kWord32);
r.CheckInt32Constant(c, *i);
}
@@ -334,8 +353,7 @@ TEST(ToInt32_constant) {
FOR_INT32_INPUTS(i) {
Node* n = r.jsgraph()->Constant(*i);
Node* c = r.changer()->GetRepresentationFor(
- n,
- MachineType(MachineRepresentation::kTagged, MachineSemantic::kInt32),
+ n, MachineRepresentation::kTagged, Type::Signed32(),
MachineRepresentation::kWord32);
r.CheckInt32Constant(c, *i);
}
@@ -350,7 +368,8 @@ TEST(ToUint32_constant) {
FOR_UINT32_INPUTS(i) {
Node* n = r.jsgraph()->Int32Constant(*i);
Node* c = r.changer()->GetRepresentationFor(
- n, MachineType::Uint32(), MachineRepresentation::kWord32);
+ n, MachineRepresentation::kWord32, Type::Unsigned32(),
+ MachineRepresentation::kWord32);
r.CheckUint32Constant(c, *i);
}
}
@@ -360,8 +379,7 @@ TEST(ToUint32_constant) {
if (!IsFloat32Uint32(*i)) continue;
Node* n = r.jsgraph()->Float32Constant(static_cast<float>(*i));
Node* c = r.changer()->GetRepresentationFor(
- n, MachineType(MachineRepresentation::kFloat32,
- MachineSemantic::kUint32),
+ n, MachineRepresentation::kFloat32, Type::Unsigned32(),
MachineRepresentation::kWord32);
r.CheckUint32Constant(c, *i);
}
@@ -371,8 +389,7 @@ TEST(ToUint32_constant) {
FOR_UINT32_INPUTS(i) {
Node* n = r.jsgraph()->Float64Constant(*i);
Node* c = r.changer()->GetRepresentationFor(
- n, MachineType(MachineRepresentation::kFloat64,
- MachineSemantic::kUint32),
+ n, MachineRepresentation::kFloat64, Type::Unsigned32(),
MachineRepresentation::kWord32);
r.CheckUint32Constant(c, *i);
}
@@ -382,8 +399,7 @@ TEST(ToUint32_constant) {
FOR_UINT32_INPUTS(i) {
Node* n = r.jsgraph()->Constant(static_cast<double>(*i));
Node* c = r.changer()->GetRepresentationFor(
- n,
- MachineType(MachineRepresentation::kTagged, MachineSemantic::kUint32),
+ n, MachineRepresentation::kTagged, Type::Unsigned32(),
MachineRepresentation::kWord32);
r.CheckUint32Constant(c, *i);
}
@@ -391,12 +407,12 @@ TEST(ToUint32_constant) {
}
-static void CheckChange(IrOpcode::Value expected, MachineType from,
- MachineRepresentation to) {
+static void CheckChange(IrOpcode::Value expected, MachineRepresentation from,
+ Type* from_type, MachineRepresentation to) {
RepresentationChangerTester r;
Node* n = r.Parameter();
- Node* c = r.changer()->GetRepresentationFor(n, from, to);
+ Node* c = r.changer()->GetRepresentationFor(n, from, from_type, to);
CHECK_NE(c, n);
CHECK_EQ(expected, c->opcode());
@@ -405,12 +421,13 @@ static void CheckChange(IrOpcode::Value expected, MachineType from,
static void CheckTwoChanges(IrOpcode::Value expected2,
- IrOpcode::Value expected1, MachineType from,
+ IrOpcode::Value expected1,
+ MachineRepresentation from, Type* from_type,
MachineRepresentation to) {
RepresentationChangerTester r;
Node* n = r.Parameter();
- Node* c1 = r.changer()->GetRepresentationFor(n, from, to);
+ Node* c1 = r.changer()->GetRepresentationFor(n, from, from_type, to);
CHECK_NE(c1, n);
CHECK_EQ(expected1, c1->opcode());
@@ -422,68 +439,65 @@ static void CheckTwoChanges(IrOpcode::Value expected2,
TEST(SingleChanges) {
- CheckChange(IrOpcode::kChangeBoolToBit, MachineType::RepTagged(),
- MachineRepresentation::kBit);
- CheckChange(IrOpcode::kChangeBitToBool, MachineType::RepBit(),
- MachineRepresentation::kTagged);
-
- CheckChange(IrOpcode::kChangeInt32ToTagged, MachineType::Int32(),
- MachineRepresentation::kTagged);
- CheckChange(IrOpcode::kChangeUint32ToTagged, MachineType::Uint32(),
- MachineRepresentation::kTagged);
- CheckChange(IrOpcode::kChangeFloat64ToTagged, MachineType::RepFloat64(),
- MachineRepresentation::kTagged);
-
- CheckChange(
- IrOpcode::kChangeTaggedToInt32,
- MachineType(MachineRepresentation::kTagged, MachineSemantic::kInt32),
- MachineRepresentation::kWord32);
- CheckChange(
- IrOpcode::kChangeTaggedToUint32,
- MachineType(MachineRepresentation::kTagged, MachineSemantic::kUint32),
- MachineRepresentation::kWord32);
- CheckChange(IrOpcode::kChangeTaggedToFloat64, MachineType::RepTagged(),
- MachineRepresentation::kFloat64);
+ CheckChange(IrOpcode::kChangeBoolToBit, MachineRepresentation::kTagged,
+ Type::None(), MachineRepresentation::kBit);
+ CheckChange(IrOpcode::kChangeBitToBool, MachineRepresentation::kBit,
+ Type::None(), MachineRepresentation::kTagged);
+
+ CheckChange(IrOpcode::kChangeInt32ToTagged, MachineRepresentation::kWord32,
+ Type::Signed32(), MachineRepresentation::kTagged);
+ CheckChange(IrOpcode::kChangeUint32ToTagged, MachineRepresentation::kWord32,
+ Type::Unsigned32(), MachineRepresentation::kTagged);
+ CheckChange(IrOpcode::kChangeFloat64ToTagged, MachineRepresentation::kFloat64,
+ Type::None(), MachineRepresentation::kTagged);
+
+ CheckChange(IrOpcode::kChangeTaggedToInt32, MachineRepresentation::kTagged,
+ Type::Signed32(), MachineRepresentation::kWord32);
+ CheckChange(IrOpcode::kChangeTaggedToUint32, MachineRepresentation::kTagged,
+ Type::Unsigned32(), MachineRepresentation::kWord32);
+ CheckChange(IrOpcode::kChangeTaggedToFloat64, MachineRepresentation::kTagged,
+ Type::None(), MachineRepresentation::kFloat64);
// Int32,Uint32 <-> Float64 are actually machine conversions.
- CheckChange(IrOpcode::kChangeInt32ToFloat64, MachineType::Int32(),
- MachineRepresentation::kFloat64);
- CheckChange(IrOpcode::kChangeUint32ToFloat64, MachineType::Uint32(),
- MachineRepresentation::kFloat64);
- CheckChange(
- IrOpcode::kChangeFloat64ToInt32,
- MachineType(MachineRepresentation::kFloat64, MachineSemantic::kInt32),
- MachineRepresentation::kWord32);
- CheckChange(
- IrOpcode::kChangeFloat64ToUint32,
- MachineType(MachineRepresentation::kFloat64, MachineSemantic::kUint32),
- MachineRepresentation::kWord32);
-
- CheckChange(IrOpcode::kTruncateFloat64ToFloat32, MachineType::RepFloat64(),
+ CheckChange(IrOpcode::kChangeInt32ToFloat64, MachineRepresentation::kWord32,
+ Type::Signed32(), MachineRepresentation::kFloat64);
+ CheckChange(IrOpcode::kChangeUint32ToFloat64, MachineRepresentation::kWord32,
+ Type::Unsigned32(), MachineRepresentation::kFloat64);
+ CheckChange(IrOpcode::kChangeFloat64ToInt32, MachineRepresentation::kFloat64,
+ Type::Signed32(), MachineRepresentation::kWord32);
+ CheckChange(IrOpcode::kChangeFloat64ToUint32, MachineRepresentation::kFloat64,
+ Type::Unsigned32(), MachineRepresentation::kWord32);
+
+ CheckChange(IrOpcode::kTruncateFloat64ToFloat32,
+ MachineRepresentation::kFloat64, Type::None(),
MachineRepresentation::kFloat32);
// Int32,Uint32 <-> Float32 require two changes.
CheckTwoChanges(IrOpcode::kChangeInt32ToFloat64,
- IrOpcode::kTruncateFloat64ToFloat32, MachineType::Int32(),
+ IrOpcode::kTruncateFloat64ToFloat32,
+ MachineRepresentation::kWord32, Type::Signed32(),
MachineRepresentation::kFloat32);
CheckTwoChanges(IrOpcode::kChangeUint32ToFloat64,
- IrOpcode::kTruncateFloat64ToFloat32, MachineType::Uint32(),
+ IrOpcode::kTruncateFloat64ToFloat32,
+ MachineRepresentation::kWord32, Type::Unsigned32(),
MachineRepresentation::kFloat32);
- CheckTwoChanges(
- IrOpcode::kChangeFloat32ToFloat64, IrOpcode::kChangeFloat64ToInt32,
- MachineType(MachineRepresentation::kFloat32, MachineSemantic::kInt32),
- MachineRepresentation::kWord32);
- CheckTwoChanges(
- IrOpcode::kChangeFloat32ToFloat64, IrOpcode::kChangeFloat64ToUint32,
- MachineType(MachineRepresentation::kFloat32, MachineSemantic::kUint32),
- MachineRepresentation::kWord32);
+ CheckTwoChanges(IrOpcode::kChangeFloat32ToFloat64,
+ IrOpcode::kChangeFloat64ToInt32,
+ MachineRepresentation::kFloat32, Type::Signed32(),
+ MachineRepresentation::kWord32);
+ CheckTwoChanges(IrOpcode::kChangeFloat32ToFloat64,
+ IrOpcode::kChangeFloat64ToUint32,
+ MachineRepresentation::kFloat32, Type::Unsigned32(),
+ MachineRepresentation::kWord32);
// Float32 <-> Tagged require two changes.
CheckTwoChanges(IrOpcode::kChangeFloat32ToFloat64,
- IrOpcode::kChangeFloat64ToTagged, MachineType::RepFloat32(),
+ IrOpcode::kChangeFloat64ToTagged,
+ MachineRepresentation::kFloat32, Type::None(),
MachineRepresentation::kTagged);
CheckTwoChanges(IrOpcode::kChangeTaggedToFloat64,
- IrOpcode::kTruncateFloat64ToFloat32, MachineType::RepTagged(),
+ IrOpcode::kTruncateFloat64ToFloat32,
+ MachineRepresentation::kTagged, Type::None(),
MachineRepresentation::kFloat32);
}
@@ -491,28 +505,25 @@ TEST(SingleChanges) {
TEST(SignednessInWord32) {
RepresentationChangerTester r;
- CheckChange(
- IrOpcode::kChangeTaggedToInt32,
- MachineType(MachineRepresentation::kTagged, MachineSemantic::kInt32),
- MachineRepresentation::kWord32);
- CheckChange(
- IrOpcode::kChangeTaggedToUint32,
- MachineType(MachineRepresentation::kTagged, MachineSemantic::kUint32),
- MachineRepresentation::kWord32);
- CheckChange(IrOpcode::kChangeInt32ToFloat64, MachineType::RepWord32(),
- MachineRepresentation::kFloat64);
- CheckChange(
- IrOpcode::kChangeFloat64ToInt32,
- MachineType(MachineRepresentation::kFloat64, MachineSemantic::kInt32),
- MachineRepresentation::kWord32);
- CheckChange(IrOpcode::kTruncateFloat64ToInt32, MachineType::RepFloat64(),
+ CheckChange(IrOpcode::kChangeTaggedToInt32, MachineRepresentation::kTagged,
+ Type::Signed32(), MachineRepresentation::kWord32);
+ CheckChange(IrOpcode::kChangeTaggedToUint32, MachineRepresentation::kTagged,
+ Type::Unsigned32(), MachineRepresentation::kWord32);
+ CheckChange(IrOpcode::kChangeInt32ToFloat64, MachineRepresentation::kWord32,
+ Type::None(), MachineRepresentation::kFloat64);
+ CheckChange(IrOpcode::kChangeFloat64ToInt32, MachineRepresentation::kFloat64,
+ Type::Signed32(), MachineRepresentation::kWord32);
+ CheckChange(IrOpcode::kTruncateFloat64ToInt32,
+ MachineRepresentation::kFloat64, Type::Number(),
MachineRepresentation::kWord32);
CheckTwoChanges(IrOpcode::kChangeInt32ToFloat64,
- IrOpcode::kTruncateFloat64ToFloat32, MachineType::RepWord32(),
+ IrOpcode::kTruncateFloat64ToFloat32,
+ MachineRepresentation::kWord32, Type::None(),
MachineRepresentation::kFloat32);
CheckTwoChanges(IrOpcode::kChangeFloat32ToFloat64,
- IrOpcode::kTruncateFloat64ToInt32, MachineType::RepFloat32(),
+ IrOpcode::kTruncateFloat64ToInt32,
+ MachineRepresentation::kFloat32, Type::Number(),
MachineRepresentation::kWord32);
}
@@ -522,31 +533,47 @@ TEST(Nops) {
// X -> X is always a nop for any single representation X.
for (size_t i = 0; i < arraysize(kMachineTypes); i++) {
- r.CheckNop(kMachineTypes[i], kMachineTypes[i].representation());
+ r.CheckNop(kMachineTypes[i].representation(), Type::None(),
+ kMachineTypes[i].representation());
}
// 32-bit floats.
- r.CheckNop(MachineType::RepFloat32(), MachineRepresentation::kFloat32);
- r.CheckNop(MachineType::Float32(), MachineRepresentation::kFloat32);
+ r.CheckNop(MachineRepresentation::kFloat32, Type::None(),
+ MachineRepresentation::kFloat32);
+ r.CheckNop(MachineRepresentation::kFloat32, Type::Number(),
+ MachineRepresentation::kFloat32);
// 32-bit words can be used as smaller word sizes and vice versa, because
// loads from memory implicitly sign or zero extend the value to the
// full machine word size, and stores implicitly truncate.
- r.CheckNop(MachineType::Int32(), MachineRepresentation::kWord8);
- r.CheckNop(MachineType::Int32(), MachineRepresentation::kWord16);
- r.CheckNop(MachineType::Int32(), MachineRepresentation::kWord32);
- r.CheckNop(MachineType::Int8(), MachineRepresentation::kWord32);
- r.CheckNop(MachineType::Int16(), MachineRepresentation::kWord32);
+ r.CheckNop(MachineRepresentation::kWord32, Type::Signed32(),
+ MachineRepresentation::kWord8);
+ r.CheckNop(MachineRepresentation::kWord32, Type::Signed32(),
+ MachineRepresentation::kWord16);
+ r.CheckNop(MachineRepresentation::kWord32, Type::Signed32(),
+ MachineRepresentation::kWord32);
+ r.CheckNop(MachineRepresentation::kWord8, Type::Signed32(),
+ MachineRepresentation::kWord32);
+ r.CheckNop(MachineRepresentation::kWord16, Type::Signed32(),
+ MachineRepresentation::kWord32);
// kRepBit (result of comparison) is implicitly a wordish thing.
- r.CheckNop(MachineType::RepBit(), MachineRepresentation::kWord8);
- r.CheckNop(MachineType::RepBit(), MachineRepresentation::kWord16);
- r.CheckNop(MachineType::RepBit(), MachineRepresentation::kWord32);
- r.CheckNop(MachineType::RepBit(), MachineRepresentation::kWord64);
- r.CheckNop(MachineType::Bool(), MachineRepresentation::kWord8);
- r.CheckNop(MachineType::Bool(), MachineRepresentation::kWord16);
- r.CheckNop(MachineType::Bool(), MachineRepresentation::kWord32);
- r.CheckNop(MachineType::Bool(), MachineRepresentation::kWord64);
+ r.CheckNop(MachineRepresentation::kBit, Type::None(),
+ MachineRepresentation::kWord8);
+ r.CheckNop(MachineRepresentation::kBit, Type::None(),
+ MachineRepresentation::kWord16);
+ r.CheckNop(MachineRepresentation::kBit, Type::None(),
+ MachineRepresentation::kWord32);
+ r.CheckNop(MachineRepresentation::kBit, Type::None(),
+ MachineRepresentation::kWord64);
+ r.CheckNop(MachineRepresentation::kBit, Type::Boolean(),
+ MachineRepresentation::kWord8);
+ r.CheckNop(MachineRepresentation::kBit, Type::Boolean(),
+ MachineRepresentation::kWord16);
+ r.CheckNop(MachineRepresentation::kBit, Type::Boolean(),
+ MachineRepresentation::kWord32);
+ r.CheckNop(MachineRepresentation::kBit, Type::Boolean(),
+ MachineRepresentation::kWord64);
}
@@ -554,31 +581,48 @@ TEST(TypeErrors) {
RepresentationChangerTester r;
// Wordish cannot be implicitly converted to/from comparison conditions.
- r.CheckTypeError(MachineType::RepWord8(), MachineRepresentation::kBit);
- r.CheckTypeError(MachineType::RepWord16(), MachineRepresentation::kBit);
- r.CheckTypeError(MachineType::RepWord32(), MachineRepresentation::kBit);
- r.CheckTypeError(MachineType::RepWord64(), MachineRepresentation::kBit);
+ r.CheckTypeError(MachineRepresentation::kWord8, Type::None(),
+ MachineRepresentation::kBit);
+ r.CheckTypeError(MachineRepresentation::kWord16, Type::None(),
+ MachineRepresentation::kBit);
+ r.CheckTypeError(MachineRepresentation::kWord32, Type::None(),
+ MachineRepresentation::kBit);
+ r.CheckTypeError(MachineRepresentation::kWord64, Type::None(),
+ MachineRepresentation::kBit);
// Floats cannot be implicitly converted to/from comparison conditions.
- r.CheckTypeError(MachineType::RepFloat64(), MachineRepresentation::kBit);
- r.CheckTypeError(MachineType::RepBit(), MachineRepresentation::kFloat64);
- r.CheckTypeError(MachineType::Bool(), MachineRepresentation::kFloat64);
+ r.CheckTypeError(MachineRepresentation::kFloat64, Type::None(),
+ MachineRepresentation::kBit);
+ r.CheckTypeError(MachineRepresentation::kBit, Type::None(),
+ MachineRepresentation::kFloat64);
+ r.CheckTypeError(MachineRepresentation::kBit, Type::Boolean(),
+ MachineRepresentation::kFloat64);
// Floats cannot be implicitly converted to/from comparison conditions.
- r.CheckTypeError(MachineType::RepFloat32(), MachineRepresentation::kBit);
- r.CheckTypeError(MachineType::RepBit(), MachineRepresentation::kFloat32);
- r.CheckTypeError(MachineType::Bool(), MachineRepresentation::kFloat32);
+ r.CheckTypeError(MachineRepresentation::kFloat32, Type::None(),
+ MachineRepresentation::kBit);
+ r.CheckTypeError(MachineRepresentation::kBit, Type::None(),
+ MachineRepresentation::kFloat32);
+ r.CheckTypeError(MachineRepresentation::kBit, Type::Boolean(),
+ MachineRepresentation::kFloat32);
// Word64 is internal and shouldn't be implicitly converted.
- r.CheckTypeError(MachineType::RepWord64(), MachineRepresentation::kTagged);
- r.CheckTypeError(MachineType::RepTagged(), MachineRepresentation::kWord64);
- r.CheckTypeError(MachineType::TaggedBool(), MachineRepresentation::kWord64);
+ r.CheckTypeError(MachineRepresentation::kWord64, Type::None(),
+ MachineRepresentation::kTagged);
+ r.CheckTypeError(MachineRepresentation::kTagged, Type::None(),
+ MachineRepresentation::kWord64);
+ r.CheckTypeError(MachineRepresentation::kTagged, Type::Boolean(),
+ MachineRepresentation::kWord64);
// Word64 / Word32 shouldn't be implicitly converted.
- r.CheckTypeError(MachineType::RepWord64(), MachineRepresentation::kWord32);
- r.CheckTypeError(MachineType::RepWord32(), MachineRepresentation::kWord64);
- r.CheckTypeError(MachineType::Int32(), MachineRepresentation::kWord64);
- r.CheckTypeError(MachineType::Uint32(), MachineRepresentation::kWord64);
+ r.CheckTypeError(MachineRepresentation::kWord64, Type::None(),
+ MachineRepresentation::kWord32);
+ r.CheckTypeError(MachineRepresentation::kWord32, Type::None(),
+ MachineRepresentation::kWord64);
+ r.CheckTypeError(MachineRepresentation::kWord32, Type::Signed32(),
+ MachineRepresentation::kWord64);
+ r.CheckTypeError(MachineRepresentation::kWord32, Type::Unsigned32(),
+ MachineRepresentation::kWord64);
}
} // namespace compiler
« no previous file with comments | « src/compiler/simplified-lowering.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698