summaryrefslogtreecommitdiff
path: root/compiler/utils/assembler_test.h
diff options
context:
space:
mode:
author Aart Bik <ajcbik@google.com> 2017-09-13 13:10:12 -0700
committer Aart Bik <ajcbik@google.com> 2017-09-13 14:12:18 -0700
commit5dafb3c796b16718ff0599ea46277f291aee190d (patch)
tree18f82de4ebfc982db30796607ec4949bbd5a663b /compiler/utils/assembler_test.h
parent6b411fc9fd94da3c552d8b96cee14f6414e7b734 (diff)
Test assembler driver utilities.
Rationale: Quis custodiet ipsos custodes? Therefore, it is good to make sure that the drivers used to test the assembler are doing what is expected. This also prepares some upcoming improvements wrt. addressing modes and different register sizes. Bug: 18380245 Bug: 18380559 Bug: 18380245 Test: assembler_x86[_64]_test Change-Id: Iadc269c14cb9e15941ec66c362d59d42e9017001
Diffstat (limited to 'compiler/utils/assembler_test.h')
-rw-r--r--compiler/utils/assembler_test.h44
1 files changed, 33 insertions, 11 deletions
diff --git a/compiler/utils/assembler_test.h b/compiler/utils/assembler_test.h
index ef53d7237c..5ab558b256 100644
--- a/compiler/utils/assembler_test.h
+++ b/compiler/utils/assembler_test.h
@@ -159,7 +159,9 @@ class AssemblerTest : public testing::Test {
for (auto reg2 : reg2_registers) {
for (int64_t imm : imms) {
ImmType new_imm = CreateImmediate(imm);
- (assembler_.get()->*f)(*reg1, *reg2, new_imm * multiplier + bias);
+ if (f != nullptr) {
+ (assembler_.get()->*f)(*reg1, *reg2, new_imm * multiplier + bias);
+ }
std::string base = fmt;
std::string reg1_string = (this->*GetName1)(*reg1);
@@ -213,7 +215,9 @@ class AssemblerTest : public testing::Test {
for (auto reg3 : reg3_registers) {
for (int64_t imm : imms) {
ImmType new_imm = CreateImmediate(imm);
- (assembler_.get()->*f)(*reg1, *reg2, *reg3, new_imm + bias);
+ if (f != nullptr) {
+ (assembler_.get()->*f)(*reg1, *reg2, *reg3, new_imm + bias);
+ }
std::string base = fmt;
std::string reg1_string = (this->*GetName1)(*reg1);
@@ -272,7 +276,9 @@ class AssemblerTest : public testing::Test {
for (auto reg2 : reg2_registers) {
for (int64_t imm : imms) {
ImmType new_imm = CreateImmediate(imm);
- (assembler_.get()->*f)(new_imm, *reg1, *reg2);
+ if (f != nullptr) {
+ (assembler_.get()->*f)(new_imm, *reg1, *reg2);
+ }
std::string base = fmt;
std::string reg1_string = (this->*GetName1)(*reg1);
@@ -320,7 +326,9 @@ class AssemblerTest : public testing::Test {
for (auto reg : registers) {
for (int64_t imm : imms) {
ImmType new_imm = CreateImmediate(imm);
- (assembler_.get()->*f)(*reg, new_imm + bias);
+ if (f != nullptr) {
+ (assembler_.get()->*f)(*reg, new_imm + bias);
+ }
std::string base = fmt;
std::string reg_string = (this->*GetName)(*reg);
@@ -522,7 +530,9 @@ class AssemblerTest : public testing::Test {
for (int64_t imm : imms) {
Imm new_imm = CreateImmediate(imm);
- (assembler_.get()->*f)(new_imm);
+ if (f != nullptr) {
+ (assembler_.get()->*f)(new_imm);
+ }
std::string base = fmt;
size_t imm_index = base.find(IMM_TOKEN);
@@ -835,7 +845,9 @@ class AssemblerTest : public testing::Test {
const std::string& fmt) {
std::string str;
for (auto reg : registers) {
- (assembler_.get()->*f)(*reg);
+ if (f != nullptr) {
+ (assembler_.get()->*f)(*reg);
+ }
std::string base = fmt;
std::string reg_string = (this->*GetName)(*reg);
@@ -866,7 +878,9 @@ class AssemblerTest : public testing::Test {
std::string str;
for (auto reg1 : reg1_registers) {
for (auto reg2 : reg2_registers) {
- (assembler_.get()->*f)(*reg1, *reg2);
+ if (f != nullptr) {
+ (assembler_.get()->*f)(*reg1, *reg2);
+ }
std::string base = fmt;
std::string reg1_string = (this->*GetName1)(*reg1);
@@ -905,7 +919,9 @@ class AssemblerTest : public testing::Test {
for (auto reg1 : reg1_registers) {
for (auto reg2 : reg2_registers) {
if (reg1 == reg2) continue;
- (assembler_.get()->*f)(*reg1, *reg2);
+ if (f != nullptr) {
+ (assembler_.get()->*f)(*reg1, *reg2);
+ }
std::string base = fmt;
std::string reg1_string = (this->*GetName1)(*reg1);
@@ -944,7 +960,9 @@ class AssemblerTest : public testing::Test {
for (auto reg1 : reg1_registers) {
for (auto reg2 : reg2_registers) {
for (auto reg3 : reg3_registers) {
- (assembler_.get()->*f)(*reg1, *reg2, *reg3);
+ if (f != nullptr) {
+ (assembler_.get()->*f)(*reg1, *reg2, *reg3);
+ }
std::string base = fmt;
std::string reg1_string = (this->*GetName1)(*reg1);
@@ -993,7 +1011,9 @@ class AssemblerTest : public testing::Test {
for (auto reg2 : reg2_registers) {
for (int64_t imm : imms) {
Imm new_imm = CreateImmediate(imm);
- (assembler_.get()->*f)(*reg1, *reg2, new_imm);
+ if (f != nullptr) {
+ (assembler_.get()->*f)(*reg1, *reg2, new_imm);
+ }
std::string base = fmt;
std::string reg1_string = (this->*GetName1)(*reg1);
@@ -1094,7 +1114,9 @@ class AssemblerTest : public testing::Test {
for (auto reg : registers) {
for (int64_t imm : imms) {
Imm new_imm = CreateImmediate(imm);
- (assembler_.get()->*f)(*reg, new_imm);
+ if (f != nullptr) {
+ (assembler_.get()->*f)(*reg, new_imm);
+ }
std::string base = fmt;
std::string reg_string = GetRegName<kRegView>(*reg);