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; |