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

Side by Side Diff: test/cctest/compiler/test-run-machops.cc

Issue 1694183002: [test] Add test for RunLoadImmIndex<float> and RunLoadImmIndex<double>. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 4 years, 10 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 unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 the V8 project authors. All rights reserved. Use of this 1 // Copyright 2014 the V8 project authors. All rights reserved. Use of this
2 // source code is governed by a BSD-style license that can be found in the 2 // source code is governed by a BSD-style license that can be found in the
3 // LICENSE file. 3 // LICENSE file.
4 4
5 #include <cmath> 5 #include <cmath>
6 #include <functional> 6 #include <functional>
7 #include <limits> 7 #include <limits>
8 8
9 #include "src/base/bits.h" 9 #include "src/base/bits.h"
10 #include "src/base/utils/random-number-generator.h" 10 #include "src/base/utils/random-number-generator.h"
(...skipping 3515 matching lines...) Expand 10 before | Expand all | Expand 10 after
3526 CHECK_EQ(constant, m.Call(1, 1)); 3526 CHECK_EQ(constant, m.Call(1, 1));
3527 } 3527 }
3528 } 3528 }
3529 3529
3530 3530
3531 template <typename Type> 3531 template <typename Type>
3532 static void RunLoadImmIndex(MachineType rep) { 3532 static void RunLoadImmIndex(MachineType rep) {
3533 const int kNumElems = 3; 3533 const int kNumElems = 3;
3534 Type buffer[kNumElems]; 3534 Type buffer[kNumElems];
3535 3535
3536 // initialize the buffer with raw data. 3536 // initialize the buffer with some raw data.
3537 byte* raw = reinterpret_cast<byte*>(buffer); 3537 byte* raw = reinterpret_cast<byte*>(buffer);
3538 for (size_t i = 0; i < sizeof(buffer); i++) { 3538 for (size_t i = 0; i < sizeof(buffer); i++) {
3539 raw[i] = static_cast<byte>((i + sizeof(buffer)) ^ 0xAA); 3539 raw[i] = static_cast<byte>((i + sizeof(buffer)) ^ 0xAA);
3540 } 3540 }
3541 3541
3542 // Test with various large and small offsets. 3542 // Test with various large and small offsets.
3543 for (int offset = -1; offset <= 200000; offset *= -5) { 3543 for (int offset = -1; offset <= 200000; offset *= -5) {
3544 for (int i = 0; i < kNumElems; i++) { 3544 for (int i = 0; i < kNumElems; i++) {
3545 RawMachineAssemblerTester<Type> m; 3545 BufferedRawMachineAssemblerTester<Type> m;
3546 Node* base = m.PointerConstant(buffer - offset); 3546 Node* base = m.PointerConstant(buffer - offset);
3547 Node* index = m.Int32Constant((offset + i) * sizeof(buffer[0])); 3547 Node* index = m.Int32Constant((offset + i) * sizeof(buffer[0]));
3548 m.Return(m.Load(rep, base, index)); 3548 m.Return(m.Load(rep, base, index));
3549 3549
3550 Type expected = buffer[i]; 3550 volatile Type expected = buffer[i];
3551 Type actual = m.Call(); 3551 volatile Type actual = m.Call();
3552 CHECK(expected == actual); 3552 CHECK_EQ(expected, actual);
3553 } 3553 }
3554 } 3554 }
3555 } 3555 }
3556 3556
3557 3557
3558 TEST(RunLoadImmIndex) { 3558 TEST(RunLoadImmIndex) {
3559 RunLoadImmIndex<int8_t>(MachineType::Int8()); 3559 RunLoadImmIndex<int8_t>(MachineType::Int8());
3560 RunLoadImmIndex<uint8_t>(MachineType::Uint8()); 3560 RunLoadImmIndex<uint8_t>(MachineType::Uint8());
3561 RunLoadImmIndex<int16_t>(MachineType::Int16()); 3561 RunLoadImmIndex<int16_t>(MachineType::Int16());
3562 RunLoadImmIndex<uint16_t>(MachineType::Uint16()); 3562 RunLoadImmIndex<uint16_t>(MachineType::Uint16());
3563 RunLoadImmIndex<int32_t>(MachineType::Int32()); 3563 RunLoadImmIndex<int32_t>(MachineType::Int32());
3564 RunLoadImmIndex<uint32_t>(MachineType::Uint32()); 3564 RunLoadImmIndex<uint32_t>(MachineType::Uint32());
3565 RunLoadImmIndex<int32_t*>(MachineType::AnyTagged()); 3565 RunLoadImmIndex<int32_t*>(MachineType::AnyTagged());
3566 3566 RunLoadImmIndex<float>(MachineType::Float32());
3567 // TODO(titzer): test kRepBit loads 3567 RunLoadImmIndex<double>(MachineType::Float64());
3568 // TODO(titzer): test MachineType::Float64() loads 3568 if (kPointerSize == 8) {
3569 RunLoadImmIndex<int64_t>(MachineType::Int64());
3570 }
3569 // TODO(titzer): test various indexing modes. 3571 // TODO(titzer): test various indexing modes.
3570 } 3572 }
3571 3573
3572 3574
3573 template <typename CType> 3575 template <typename CType>
3574 static void RunLoadStore(MachineType rep) { 3576 static void RunLoadStore(MachineType rep) {
3575 const int kNumElems = 4; 3577 const int kNumElems = 4;
3576 CType buffer[kNumElems]; 3578 CType buffer[kNumElems];
3577 3579
3578 for (int32_t x = 0; x < kNumElems; x++) { 3580 for (int32_t x = 0; x < kNumElems; x++) {
(...skipping 2611 matching lines...) Expand 10 before | Expand all | Expand 10 after
6190 Node* call = r.AddNode(r.common()->Call(desc), phi); 6192 Node* call = r.AddNode(r.common()->Call(desc), phi);
6191 r.Return(call); 6193 r.Return(call);
6192 6194
6193 CHECK_EQ(33, r.Call(1)); 6195 CHECK_EQ(33, r.Call(1));
6194 CHECK_EQ(44, r.Call(0)); 6196 CHECK_EQ(44, r.Call(0));
6195 } 6197 }
6196 6198
6197 } // namespace compiler 6199 } // namespace compiler
6198 } // namespace internal 6200 } // namespace internal
6199 } // namespace v8 6201 } // namespace v8
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698