Index: test/cctest/compiler/test-run-machops.cc |
diff --git a/test/cctest/compiler/test-run-machops.cc b/test/cctest/compiler/test-run-machops.cc |
index 449766b18b0ee739c6b318b53e79fb62ced60d7e..6bd00c2ca5a4d581bf78064720c5ec5fb8ce8e2f 100644 |
--- a/test/cctest/compiler/test-run-machops.cc |
+++ b/test/cctest/compiler/test-run-machops.cc |
@@ -1207,94 +1207,6 @@ TEST(RunSwitch4) { |
} |
-TEST(RunLoadInt32) { |
- RawMachineAssemblerTester<int32_t> m; |
- |
- int32_t p1 = 0; // loads directly from this location. |
- m.Return(m.LoadFromPointer(&p1, MachineType::Int32())); |
- |
- FOR_INT32_INPUTS(i) { |
- p1 = *i; |
- CHECK_EQ(p1, m.Call()); |
- } |
-} |
- |
- |
-TEST(RunLoadInt32Offset) { |
- int32_t p1 = 0; // loads directly from this location. |
- |
- int32_t offsets[] = {-2000000, -100, -101, 1, 3, |
- 7, 120, 2000, 2000000000, 0xff}; |
- |
- for (size_t i = 0; i < arraysize(offsets); i++) { |
- RawMachineAssemblerTester<int32_t> m; |
- int32_t offset = offsets[i]; |
- byte* pointer = reinterpret_cast<byte*>(&p1) - offset; |
- // generate load [#base + #index] |
- m.Return(m.LoadFromPointer(pointer, MachineType::Int32(), offset)); |
- |
- FOR_INT32_INPUTS(j) { |
- p1 = *j; |
- CHECK_EQ(p1, m.Call()); |
- } |
- } |
-} |
- |
- |
-TEST(RunLoadStoreFloat32Offset) { |
- float p1 = 0.0f; // loads directly from this location. |
- float p2 = 0.0f; // and stores directly into this location. |
- |
- FOR_INT32_INPUTS(i) { |
- int32_t magic = 0x2342aabb + *i * 3; |
- RawMachineAssemblerTester<int32_t> m; |
- int32_t offset = *i; |
- byte* from = reinterpret_cast<byte*>(&p1) - offset; |
- byte* to = reinterpret_cast<byte*>(&p2) - offset; |
- // generate load [#base + #index] |
- Node* load = m.Load(MachineType::Float32(), m.PointerConstant(from), |
- m.IntPtrConstant(offset)); |
- m.Store(MachineRepresentation::kFloat32, m.PointerConstant(to), |
- m.IntPtrConstant(offset), load, kNoWriteBarrier); |
- m.Return(m.Int32Constant(magic)); |
- |
- FOR_FLOAT32_INPUTS(j) { |
- p1 = *j; |
- p2 = *j - 5; |
- CHECK_EQ(magic, m.Call()); |
- CHECK_DOUBLE_EQ(p1, p2); |
- } |
- } |
-} |
- |
- |
-TEST(RunLoadStoreFloat64Offset) { |
- double p1 = 0; // loads directly from this location. |
- double p2 = 0; // and stores directly into this location. |
- |
- FOR_INT32_INPUTS(i) { |
- int32_t magic = 0x2342aabb + *i * 3; |
- RawMachineAssemblerTester<int32_t> m; |
- int32_t offset = *i; |
- byte* from = reinterpret_cast<byte*>(&p1) - offset; |
- byte* to = reinterpret_cast<byte*>(&p2) - offset; |
- // generate load [#base + #index] |
- Node* load = m.Load(MachineType::Float64(), m.PointerConstant(from), |
- m.IntPtrConstant(offset)); |
- m.Store(MachineRepresentation::kFloat64, m.PointerConstant(to), |
- m.IntPtrConstant(offset), load, kNoWriteBarrier); |
- m.Return(m.Int32Constant(magic)); |
- |
- FOR_FLOAT64_INPUTS(j) { |
- p1 = *j; |
- p2 = *j - 5; |
- CHECK_EQ(magic, m.Call()); |
- CHECK_DOUBLE_EQ(p1, p2); |
- } |
- } |
-} |
- |
- |
TEST(RunInt32AddP) { |
RawMachineAssemblerTester<int32_t> m; |
Int32BinopTester bt(&m); |
@@ -3635,92 +3547,6 @@ TEST(RunDeadInt32Binops) { |
} |
-template <typename Type> |
-static void RunLoadImmIndex(MachineType rep) { |
- const int kNumElems = 3; |
- Type buffer[kNumElems]; |
- |
- // initialize the buffer with some raw data. |
- byte* raw = reinterpret_cast<byte*>(buffer); |
- for (size_t i = 0; i < sizeof(buffer); i++) { |
- raw[i] = static_cast<byte>((i + sizeof(buffer)) ^ 0xAA); |
- } |
- |
- // Test with various large and small offsets. |
- for (int offset = -1; offset <= 200000; offset *= -5) { |
- for (int i = 0; i < kNumElems; i++) { |
- BufferedRawMachineAssemblerTester<Type> m; |
- Node* base = m.PointerConstant(buffer - offset); |
- Node* index = m.Int32Constant((offset + i) * sizeof(buffer[0])); |
- m.Return(m.Load(rep, base, index)); |
- |
- volatile Type expected = buffer[i]; |
- volatile Type actual = m.Call(); |
- CHECK_EQ(expected, actual); |
- } |
- } |
-} |
- |
- |
-TEST(RunLoadImmIndex) { |
- RunLoadImmIndex<int8_t>(MachineType::Int8()); |
- RunLoadImmIndex<uint8_t>(MachineType::Uint8()); |
- RunLoadImmIndex<int16_t>(MachineType::Int16()); |
- RunLoadImmIndex<uint16_t>(MachineType::Uint16()); |
- RunLoadImmIndex<int32_t>(MachineType::Int32()); |
- RunLoadImmIndex<uint32_t>(MachineType::Uint32()); |
- RunLoadImmIndex<int32_t*>(MachineType::AnyTagged()); |
- RunLoadImmIndex<float>(MachineType::Float32()); |
- RunLoadImmIndex<double>(MachineType::Float64()); |
- if (kPointerSize == 8) { |
- RunLoadImmIndex<int64_t>(MachineType::Int64()); |
- } |
- // TODO(titzer): test various indexing modes. |
-} |
- |
- |
-template <typename CType> |
-static void RunLoadStore(MachineType rep) { |
- const int kNumElems = 4; |
- CType buffer[kNumElems]; |
- |
- for (int32_t x = 0; x < kNumElems; x++) { |
- int32_t y = kNumElems - x - 1; |
- // initialize the buffer with raw data. |
- byte* raw = reinterpret_cast<byte*>(buffer); |
- for (size_t i = 0; i < sizeof(buffer); i++) { |
- raw[i] = static_cast<byte>((i + sizeof(buffer)) ^ 0xAA); |
- } |
- |
- RawMachineAssemblerTester<int32_t> m; |
- int32_t OK = 0x29000 + x; |
- Node* base = m.PointerConstant(buffer); |
- Node* index0 = m.IntPtrConstant(x * sizeof(buffer[0])); |
- Node* load = m.Load(rep, base, index0); |
- Node* index1 = m.IntPtrConstant(y * sizeof(buffer[0])); |
- m.Store(rep.representation(), base, index1, load, kNoWriteBarrier); |
- m.Return(m.Int32Constant(OK)); |
- |
- CHECK(buffer[x] != buffer[y]); |
- CHECK_EQ(OK, m.Call()); |
- CHECK(buffer[x] == buffer[y]); |
- } |
-} |
- |
- |
-TEST(RunLoadStore) { |
- RunLoadStore<int8_t>(MachineType::Int8()); |
- RunLoadStore<uint8_t>(MachineType::Uint8()); |
- RunLoadStore<int16_t>(MachineType::Int16()); |
- RunLoadStore<uint16_t>(MachineType::Uint16()); |
- RunLoadStore<int32_t>(MachineType::Int32()); |
- RunLoadStore<uint32_t>(MachineType::Uint32()); |
- RunLoadStore<void*>(MachineType::AnyTagged()); |
- RunLoadStore<float>(MachineType::Float32()); |
- RunLoadStore<double>(MachineType::Float64()); |
-} |
- |
- |
TEST(RunFloat32Add) { |
BufferedRawMachineAssemblerTester<float> m(MachineType::Float32(), |
MachineType::Float32()); |
@@ -5087,45 +4913,6 @@ TEST(RunFloat64LessThan) { |
} |
-template <typename IntType> |
-static void LoadStoreTruncation(MachineType kRepresentation) { |
- IntType input; |
- |
- RawMachineAssemblerTester<int32_t> m; |
- Node* a = m.LoadFromPointer(&input, kRepresentation); |
- Node* ap1 = m.Int32Add(a, m.Int32Constant(1)); |
- m.StoreToPointer(&input, kRepresentation.representation(), ap1); |
- m.Return(ap1); |
- |
- const IntType max = std::numeric_limits<IntType>::max(); |
- const IntType min = std::numeric_limits<IntType>::min(); |
- |
- // Test upper bound. |
- input = max; |
- CHECK_EQ(max + 1, m.Call()); |
- CHECK_EQ(min, input); |
- |
- // Test lower bound. |
- input = min; |
- CHECK_EQ(static_cast<IntType>(max + 2), m.Call()); |
- CHECK_EQ(min + 1, input); |
- |
- // Test all one byte values that are not one byte bounds. |
- for (int i = -127; i < 127; i++) { |
- input = i; |
- int expected = i >= 0 ? i + 1 : max + (i - min) + 2; |
- CHECK_EQ(static_cast<IntType>(expected), m.Call()); |
- CHECK_EQ(static_cast<IntType>(i + 1), input); |
- } |
-} |
- |
- |
-TEST(RunLoadStoreTruncation) { |
- LoadStoreTruncation<int8_t>(MachineType::Int8()); |
- LoadStoreTruncation<int16_t>(MachineType::Int16()); |
-} |
- |
- |
static void IntPtrCompare(intptr_t left, intptr_t right) { |
for (int test = 0; test < 7; test++) { |
RawMachineAssemblerTester<bool> m(MachineType::Pointer(), |
@@ -5973,50 +5760,6 @@ TEST(RunCallCFunction8) { |
#if V8_TARGET_ARCH_64_BIT |
// TODO(titzer): run int64 tests on all platforms when supported. |
-TEST(RunCheckedLoadInt64) { |
- int64_t buffer[] = {0x66bbccddeeff0011LL, 0x1122334455667788LL}; |
- RawMachineAssemblerTester<int64_t> m(MachineType::Int32()); |
- Node* base = m.PointerConstant(buffer); |
- Node* index = m.Parameter(0); |
- Node* length = m.Int32Constant(16); |
- Node* load = m.AddNode(m.machine()->CheckedLoad(MachineType::Int64()), base, |
- index, length); |
- m.Return(load); |
- |
- CHECK_EQ(buffer[0], m.Call(0)); |
- CHECK_EQ(buffer[1], m.Call(8)); |
- CHECK_EQ(0, m.Call(16)); |
-} |
- |
- |
-TEST(RunCheckedStoreInt64) { |
- const int64_t write = 0x5566778899aabbLL; |
- const int64_t before = 0x33bbccddeeff0011LL; |
- int64_t buffer[] = {before, before}; |
- RawMachineAssemblerTester<int32_t> m(MachineType::Int32()); |
- Node* base = m.PointerConstant(buffer); |
- Node* index = m.Parameter(0); |
- Node* length = m.Int32Constant(16); |
- Node* value = m.Int64Constant(write); |
- Node* store = |
- m.AddNode(m.machine()->CheckedStore(MachineRepresentation::kWord64), base, |
- index, length, value); |
- USE(store); |
- m.Return(m.Int32Constant(11)); |
- |
- CHECK_EQ(11, m.Call(16)); |
- CHECK_EQ(before, buffer[0]); |
- CHECK_EQ(before, buffer[1]); |
- |
- CHECK_EQ(11, m.Call(0)); |
- CHECK_EQ(write, buffer[0]); |
- CHECK_EQ(before, buffer[1]); |
- |
- CHECK_EQ(11, m.Call(8)); |
- CHECK_EQ(write, buffer[0]); |
- CHECK_EQ(write, buffer[1]); |
-} |
- |
TEST(RunBitcastInt64ToFloat64) { |
int64_t input = 1; |