Chromium Code Reviews| Index: test/cctest/test-heap.cc |
| diff --git a/test/cctest/test-heap.cc b/test/cctest/test-heap.cc |
| index 9e3c80ec39b766ec35892dba25cbe134d2b21cc2..c41c407e19f3f80aaefed34d0ba71ef06481984c 100644 |
| --- a/test/cctest/test-heap.cc |
| +++ b/test/cctest/test-heap.cc |
| @@ -59,6 +59,7 @@ TEST(HeapMaps) { |
| Heap* heap = CcTest::heap(); |
| CheckMap(heap->meta_map(), MAP_TYPE, Map::kSize); |
| CheckMap(heap->heap_number_map(), HEAP_NUMBER_TYPE, HeapNumber::kSize); |
| + CheckMap(heap->float32x4_map(), FLOAT32X4_TYPE, Float32x4::kSize); |
| CheckMap(heap->fixed_array_map(), FIXED_ARRAY_TYPE, kVariableSizeSentinel); |
| CheckMap(heap->string_map(), STRING_TYPE, kVariableSizeSentinel); |
| } |
| @@ -213,6 +214,41 @@ TEST(HeapObjects) { |
| } |
| +TEST(SimdObjects) { |
| + CcTest::InitializeVM(); |
| + Isolate* isolate = CcTest::i_isolate(); |
| + Factory* factory = isolate->factory(); |
| + |
| + HandleScope sc(isolate); |
| + |
| + Handle<Object> value = factory->NewFloat32x4(1, 2, 3, 4); |
| + CHECK(value->IsFloat32x4()); |
| + CHECK(value->BooleanValue()); // SIMD values map to true. |
| + Float32x4* float32x4 = *Handle<Float32x4>::cast(value); |
| + CHECK_EQ(1, float32x4->get_lane(0)); |
| + CHECK_EQ(2, float32x4->get_lane(1)); |
| + CHECK_EQ(3, float32x4->get_lane(2)); |
| + CHECK_EQ(4, float32x4->get_lane(3)); |
| + float32x4->set_lane(3, 5); |
| + CHECK_EQ(5, float32x4->get_lane(3)); |
| + |
| + // Check ToString for SIMD values. |
| + // TODO(bbudge): Switch to Check* style function to test ToString(). |
| + std::ostringstream os; |
| + float32x4->Float32x4Print(os); |
| + CHECK_EQ("1, 2, 3, 5", os.str()); |
| + |
| + float32x4->set_lane(0, -0.0); |
| + CHECK_EQ(-0.0, float32x4->get_lane(0)); |
| + float quiet_NaN = std::numeric_limits<float>::quiet_NaN(); |
| + float signaling_NaN = std::numeric_limits<float>::signaling_NaN(); |
| + float32x4->set_lane(1, quiet_NaN); |
| + CHECK(std::isnan(float32x4->get_lane(1))); |
| + float32x4->set_lane(2, signaling_NaN); |
| + CHECK(std::isnan(float32x4->get_lane(2))); |
|
titzer
2015/06/03 20:34:40
Can we also check that writing to one lane doesn't
bbudge
2015/06/03 21:32:52
Done. I added a templated function to do the lane
|
| +} |
| + |
| + |
| TEST(Tagging) { |
| CcTest::InitializeVM(); |
| int request = 24; |