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

Unified Diff: src/trusted/validator_arm/gen/arm32_decode_data_processing_register_tests.cc

Issue 12095039: Add testing of generated (ARM) baseline decoders using hand-written decoders. (Closed) Base URL: svn://svn.chromium.org/native_client/trunk/src/native_client/
Patch Set: Created 7 years, 11 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 side-by-side diff with in-line comments
Download patch
Index: src/trusted/validator_arm/gen/arm32_decode_data_processing_register_tests.cc
===================================================================
--- src/trusted/validator_arm/gen/arm32_decode_data_processing_register_tests.cc (revision 10678)
+++ src/trusted/validator_arm/gen/arm32_decode_data_processing_register_tests.cc (working copy)
@@ -13,6 +13,7 @@
#include "gtest/gtest.h"
#include "native_client/src/trusted/validator_arm/actual_vs_baseline.h"
+#include "native_client/src/trusted/validator_arm/baseline_vs_baseline.h"
#include "native_client/src/trusted/validator_arm/actual_classes.h"
#include "native_client/src/trusted/validator_arm/baseline_classes.h"
#include "native_client/src/trusted/validator_arm/inst_classes_testers.h"
@@ -2806,6 +2807,596 @@
a_vs_b_tester.Test("cccc0001111s0000ddddiiiiitt0mmmm");
}
+// op1(24:20)=10001 & $pattern(31:0)=xxxxxxxxxxxxxxxx0000xxxxxxxxxxxx
Karl 2013/01/29 20:54:06 Note: This is the only test file that has any real
+// = {NZCV: 16,
+// None: 32,
+// Rm: Rm(3:0),
+// Rn: Rn(19:16),
+// S: S(20),
+// actual: Actual_CMN_register_cccc00010111nnnn0000iiiiitt0mmmm_case_1,
+// baseline: Binary2RegisterImmedShiftedTest,
+// constraints: ,
+// defs: {NZCV
+// if S
+// else None},
+// fields: [S(20), Rn(19:16), Rm(3:0)],
+// generated_baseline: TST_register_cccc00010001nnnn0000iiiiitt0mmmm_case_0,
+// pattern: cccc00010001nnnn0000iiiiitt0mmmm,
+// rule: TST_register,
+// uses: {Rn, Rm}}
+TEST_F(Arm32DecoderStateTests,
+ BvB_Binary2RegisterImmedShiftedTestTester_Case0_TestCase0) {
+ Binary2RegisterImmedShiftedTestTester_Case0 old_baseline_tester;
+ NamedTST_register_cccc00010001nnnn0000iiiiitt0mmmm_case_0 gen_baseline;
+ BaselineVsBaselineTester b_vs_b_tester(gen_baseline, old_baseline_tester);
+ b_vs_b_tester.Test("cccc00010001nnnn0000iiiiitt0mmmm");
+}
+
+// op1(24:20)=10011 & $pattern(31:0)=xxxxxxxxxxxxxxxx0000xxxxxxxxxxxx
+// = {NZCV: 16,
+// None: 32,
+// Rm: Rm(3:0),
+// Rn: Rn(19:16),
+// S: S(20),
+// actual: Actual_CMN_register_cccc00010111nnnn0000iiiiitt0mmmm_case_1,
+// baseline: Binary2RegisterImmedShiftedTest,
+// constraints: ,
+// defs: {NZCV
+// if S
+// else None},
+// fields: [S(20), Rn(19:16), Rm(3:0)],
+// generated_baseline: TEQ_register_cccc00010011nnnn0000iiiiitt0mmmm_case_0,
+// pattern: cccc00010011nnnn0000iiiiitt0mmmm,
+// rule: TEQ_register,
+// uses: {Rn, Rm}}
+TEST_F(Arm32DecoderStateTests,
+ BvB_Binary2RegisterImmedShiftedTestTester_Case1_TestCase1) {
+ Binary2RegisterImmedShiftedTestTester_Case1 old_baseline_tester;
+ NamedTEQ_register_cccc00010011nnnn0000iiiiitt0mmmm_case_0 gen_baseline;
+ BaselineVsBaselineTester b_vs_b_tester(gen_baseline, old_baseline_tester);
+ b_vs_b_tester.Test("cccc00010011nnnn0000iiiiitt0mmmm");
+}
+
+// op1(24:20)=10101 & $pattern(31:0)=xxxxxxxxxxxxxxxx0000xxxxxxxxxxxx
+// = {NZCV: 16,
+// None: 32,
+// Rm: Rm(3:0),
+// Rn: Rn(19:16),
+// S: S(20),
+// actual: Actual_CMN_register_cccc00010111nnnn0000iiiiitt0mmmm_case_1,
+// baseline: Binary2RegisterImmedShiftedTest,
+// constraints: ,
+// defs: {NZCV
+// if S
+// else None},
+// fields: [S(20), Rn(19:16), Rm(3:0)],
+// generated_baseline: CMP_register_cccc00010101nnnn0000iiiiitt0mmmm_case_0,
+// pattern: cccc00010101nnnn0000iiiiitt0mmmm,
+// rule: CMP_register,
+// uses: {Rn, Rm}}
+TEST_F(Arm32DecoderStateTests,
+ BvB_Binary2RegisterImmedShiftedTestTester_Case2_TestCase2) {
+ Binary2RegisterImmedShiftedTestTester_Case2 old_baseline_tester;
+ NamedCMP_register_cccc00010101nnnn0000iiiiitt0mmmm_case_0 gen_baseline;
+ BaselineVsBaselineTester b_vs_b_tester(gen_baseline, old_baseline_tester);
+ b_vs_b_tester.Test("cccc00010101nnnn0000iiiiitt0mmmm");
+}
+
+// op1(24:20)=10111 & $pattern(31:0)=xxxxxxxxxxxxxxxx0000xxxxxxxxxxxx
+// = {NZCV: 16,
+// None: 32,
+// Rm: Rm(3:0),
+// Rn: Rn(19:16),
+// S: S(20),
+// actual: Actual_CMN_register_cccc00010111nnnn0000iiiiitt0mmmm_case_1,
+// baseline: Binary2RegisterImmedShiftedTest,
+// constraints: ,
+// defs: {NZCV
+// if S
+// else None},
+// fields: [S(20), Rn(19:16), Rm(3:0)],
+// generated_baseline: CMN_register_cccc00010111nnnn0000iiiiitt0mmmm_case_0,
+// pattern: cccc00010111nnnn0000iiiiitt0mmmm,
+// rule: CMN_register,
+// uses: {Rn, Rm}}
+TEST_F(Arm32DecoderStateTests,
+ BvB_Binary2RegisterImmedShiftedTestTester_Case3_TestCase3) {
+ Binary2RegisterImmedShiftedTestTester_Case3 old_baseline_tester;
+ NamedCMN_register_cccc00010111nnnn0000iiiiitt0mmmm_case_0 gen_baseline;
+ BaselineVsBaselineTester b_vs_b_tester(gen_baseline, old_baseline_tester);
+ b_vs_b_tester.Test("cccc00010111nnnn0000iiiiitt0mmmm");
+}
+
+// op1(24:20)=0000x
+// = {NZCV: 16,
+// None: 32,
+// Rd: Rd(15:12),
+// Rm: Rm(3:0),
+// Rn: Rn(19:16),
+// S: S(20),
+// actual: Actual_ADC_register_cccc0000101snnnnddddiiiiitt0mmmm_case_1,
+// baseline: Binary3RegisterShiftedOp,
+// constraints: ,
+// defs: {Rd, NZCV
+// if S
+// else None},
+// fields: [S(20), Rn(19:16), Rd(15:12), Rm(3:0)],
+// generated_baseline: AND_register_cccc0000000snnnnddddiiiiitt0mmmm_case_0,
+// pattern: cccc0000000snnnnddddiiiiitt0mmmm,
+// rule: AND_register,
+// safety: [(Rd(15:12)=1111 &&
+// S(20)=1) => DECODER_ERROR,
+// Rd(15:12)=1111 => FORBIDDEN_OPERANDS],
+// uses: {Rn, Rm}}
+TEST_F(Arm32DecoderStateTests,
+ BvB_Binary3RegisterShiftedOpTester_Case4_TestCase4) {
+ Binary3RegisterShiftedOpTester_Case4 old_baseline_tester;
+ NamedAND_register_cccc0000000snnnnddddiiiiitt0mmmm_case_0 gen_baseline;
+ BaselineVsBaselineTester b_vs_b_tester(gen_baseline, old_baseline_tester);
+ b_vs_b_tester.Test("cccc0000000snnnnddddiiiiitt0mmmm");
+}
+
+// op1(24:20)=0001x
+// = {NZCV: 16,
+// None: 32,
+// Rd: Rd(15:12),
+// Rm: Rm(3:0),
+// Rn: Rn(19:16),
+// S: S(20),
+// actual: Actual_ADC_register_cccc0000101snnnnddddiiiiitt0mmmm_case_1,
+// baseline: Binary3RegisterShiftedOp,
+// constraints: ,
+// defs: {Rd, NZCV
+// if S
+// else None},
+// fields: [S(20), Rn(19:16), Rd(15:12), Rm(3:0)],
+// generated_baseline: EOR_register_cccc0000001snnnnddddiiiiitt0mmmm_case_0,
+// pattern: cccc0000001snnnnddddiiiiitt0mmmm,
+// rule: EOR_register,
+// safety: [(Rd(15:12)=1111 &&
+// S(20)=1) => DECODER_ERROR,
+// Rd(15:12)=1111 => FORBIDDEN_OPERANDS],
+// uses: {Rn, Rm}}
+TEST_F(Arm32DecoderStateTests,
+ BvB_Binary3RegisterShiftedOpTester_Case5_TestCase5) {
+ Binary3RegisterShiftedOpTester_Case5 old_baseline_tester;
+ NamedEOR_register_cccc0000001snnnnddddiiiiitt0mmmm_case_0 gen_baseline;
+ BaselineVsBaselineTester b_vs_b_tester(gen_baseline, old_baseline_tester);
+ b_vs_b_tester.Test("cccc0000001snnnnddddiiiiitt0mmmm");
+}
+
+// op1(24:20)=0010x
+// = {NZCV: 16,
+// None: 32,
+// Rd: Rd(15:12),
+// Rm: Rm(3:0),
+// Rn: Rn(19:16),
+// S: S(20),
+// actual: Actual_ADC_register_cccc0000101snnnnddddiiiiitt0mmmm_case_1,
+// baseline: Binary3RegisterShiftedOp,
+// constraints: ,
+// defs: {Rd, NZCV
+// if S
+// else None},
+// fields: [S(20), Rn(19:16), Rd(15:12), Rm(3:0)],
+// generated_baseline: SUB_register_cccc0000010snnnnddddiiiiitt0mmmm_case_0,
+// pattern: cccc0000010snnnnddddiiiiitt0mmmm,
+// rule: SUB_register,
+// safety: [(Rd(15:12)=1111 &&
+// S(20)=1) => DECODER_ERROR,
+// Rd(15:12)=1111 => FORBIDDEN_OPERANDS],
+// uses: {Rn, Rm}}
+TEST_F(Arm32DecoderStateTests,
+ BvB_Binary3RegisterShiftedOpTester_Case6_TestCase6) {
+ Binary3RegisterShiftedOpTester_Case6 old_baseline_tester;
+ NamedSUB_register_cccc0000010snnnnddddiiiiitt0mmmm_case_0 gen_baseline;
+ BaselineVsBaselineTester b_vs_b_tester(gen_baseline, old_baseline_tester);
+ b_vs_b_tester.Test("cccc0000010snnnnddddiiiiitt0mmmm");
+}
+
+// op1(24:20)=0011x
+// = {NZCV: 16,
+// None: 32,
+// Rd: Rd(15:12),
+// Rm: Rm(3:0),
+// Rn: Rn(19:16),
+// S: S(20),
+// actual: Actual_ADC_register_cccc0000101snnnnddddiiiiitt0mmmm_case_1,
+// baseline: Binary3RegisterShiftedOp,
+// constraints: ,
+// defs: {Rd, NZCV
+// if S
+// else None},
+// fields: [S(20), Rn(19:16), Rd(15:12), Rm(3:0)],
+// generated_baseline: RSB_register_cccc0000011snnnnddddiiiiitt0mmmm_case_0,
+// pattern: cccc0000011snnnnddddiiiiitt0mmmm,
+// rule: RSB_register,
+// safety: [(Rd(15:12)=1111 &&
+// S(20)=1) => DECODER_ERROR,
+// Rd(15:12)=1111 => FORBIDDEN_OPERANDS],
+// uses: {Rn, Rm}}
+TEST_F(Arm32DecoderStateTests,
+ BvB_Binary3RegisterShiftedOpTester_Case7_TestCase7) {
+ Binary3RegisterShiftedOpTester_Case7 old_baseline_tester;
+ NamedRSB_register_cccc0000011snnnnddddiiiiitt0mmmm_case_0 gen_baseline;
+ BaselineVsBaselineTester b_vs_b_tester(gen_baseline, old_baseline_tester);
+ b_vs_b_tester.Test("cccc0000011snnnnddddiiiiitt0mmmm");
+}
+
+// op1(24:20)=0100x
+// = {NZCV: 16,
+// None: 32,
+// Rd: Rd(15:12),
+// Rm: Rm(3:0),
+// Rn: Rn(19:16),
+// S: S(20),
+// actual: Actual_ADC_register_cccc0000101snnnnddddiiiiitt0mmmm_case_1,
+// baseline: Binary3RegisterShiftedOp,
+// constraints: ,
+// defs: {Rd, NZCV
+// if S
+// else None},
+// fields: [S(20), Rn(19:16), Rd(15:12), Rm(3:0)],
+// generated_baseline: ADD_register_cccc0000100snnnnddddiiiiitt0mmmm_case_0,
+// pattern: cccc0000100snnnnddddiiiiitt0mmmm,
+// rule: ADD_register,
+// safety: [(Rd(15:12)=1111 &&
+// S(20)=1) => DECODER_ERROR,
+// Rd(15:12)=1111 => FORBIDDEN_OPERANDS],
+// uses: {Rn, Rm}}
+TEST_F(Arm32DecoderStateTests,
+ BvB_Binary3RegisterShiftedOpTester_Case8_TestCase8) {
+ Binary3RegisterShiftedOpTester_Case8 old_baseline_tester;
+ NamedADD_register_cccc0000100snnnnddddiiiiitt0mmmm_case_0 gen_baseline;
+ BaselineVsBaselineTester b_vs_b_tester(gen_baseline, old_baseline_tester);
+ b_vs_b_tester.Test("cccc0000100snnnnddddiiiiitt0mmmm");
+}
+
+// op1(24:20)=0101x
+// = {NZCV: 16,
+// None: 32,
+// Rd: Rd(15:12),
+// Rm: Rm(3:0),
+// Rn: Rn(19:16),
+// S: S(20),
+// actual: Actual_ADC_register_cccc0000101snnnnddddiiiiitt0mmmm_case_1,
+// baseline: Binary3RegisterShiftedOp,
+// constraints: ,
+// defs: {Rd, NZCV
+// if S
+// else None},
+// fields: [S(20), Rn(19:16), Rd(15:12), Rm(3:0)],
+// generated_baseline: ADC_register_cccc0000101snnnnddddiiiiitt0mmmm_case_0,
+// pattern: cccc0000101snnnnddddiiiiitt0mmmm,
+// rule: ADC_register,
+// safety: [(Rd(15:12)=1111 &&
+// S(20)=1) => DECODER_ERROR,
+// Rd(15:12)=1111 => FORBIDDEN_OPERANDS],
+// uses: {Rn, Rm}}
+TEST_F(Arm32DecoderStateTests,
+ BvB_Binary3RegisterShiftedOpTester_Case9_TestCase9) {
+ Binary3RegisterShiftedOpTester_Case9 old_baseline_tester;
+ NamedADC_register_cccc0000101snnnnddddiiiiitt0mmmm_case_0 gen_baseline;
+ BaselineVsBaselineTester b_vs_b_tester(gen_baseline, old_baseline_tester);
+ b_vs_b_tester.Test("cccc0000101snnnnddddiiiiitt0mmmm");
+}
+
+// op1(24:20)=0110x
+// = {NZCV: 16,
+// None: 32,
+// Rd: Rd(15:12),
+// Rm: Rm(3:0),
+// Rn: Rn(19:16),
+// S: S(20),
+// actual: Actual_ADC_register_cccc0000101snnnnddddiiiiitt0mmmm_case_1,
+// baseline: Binary3RegisterShiftedOp,
+// constraints: ,
+// defs: {Rd, NZCV
+// if S
+// else None},
+// fields: [S(20), Rn(19:16), Rd(15:12), Rm(3:0)],
+// generated_baseline: SBC_register_cccc0000110snnnnddddiiiiitt0mmmm_case_0,
+// pattern: cccc0000110snnnnddddiiiiitt0mmmm,
+// rule: SBC_register,
+// safety: [(Rd(15:12)=1111 &&
+// S(20)=1) => DECODER_ERROR,
+// Rd(15:12)=1111 => FORBIDDEN_OPERANDS],
+// uses: {Rn, Rm}}
+TEST_F(Arm32DecoderStateTests,
+ BvB_Binary3RegisterShiftedOpTester_Case10_TestCase10) {
+ Binary3RegisterShiftedOpTester_Case10 old_baseline_tester;
+ NamedSBC_register_cccc0000110snnnnddddiiiiitt0mmmm_case_0 gen_baseline;
+ BaselineVsBaselineTester b_vs_b_tester(gen_baseline, old_baseline_tester);
+ b_vs_b_tester.Test("cccc0000110snnnnddddiiiiitt0mmmm");
+}
+
+// op1(24:20)=0111x
+// = {NZCV: 16,
+// None: 32,
+// Rd: Rd(15:12),
+// Rm: Rm(3:0),
+// Rn: Rn(19:16),
+// S: S(20),
+// actual: Actual_ADC_register_cccc0000101snnnnddddiiiiitt0mmmm_case_1,
+// baseline: Binary3RegisterShiftedOp,
+// constraints: ,
+// defs: {Rd, NZCV
+// if S
+// else None},
+// fields: [S(20), Rn(19:16), Rd(15:12), Rm(3:0)],
+// generated_baseline: RSC_register_cccc0000111snnnnddddiiiiitt0mmmm_case_0,
+// pattern: cccc0000111snnnnddddiiiiitt0mmmm,
+// rule: RSC_register,
+// safety: [(Rd(15:12)=1111 &&
+// S(20)=1) => DECODER_ERROR,
+// Rd(15:12)=1111 => FORBIDDEN_OPERANDS],
+// uses: {Rn, Rm}}
+TEST_F(Arm32DecoderStateTests,
+ BvB_Binary3RegisterShiftedOpTester_Case11_TestCase11) {
+ Binary3RegisterShiftedOpTester_Case11 old_baseline_tester;
+ NamedRSC_register_cccc0000111snnnnddddiiiiitt0mmmm_case_0 gen_baseline;
+ BaselineVsBaselineTester b_vs_b_tester(gen_baseline, old_baseline_tester);
+ b_vs_b_tester.Test("cccc0000111snnnnddddiiiiitt0mmmm");
+}
+
+// op1(24:20)=1100x
+// = {NZCV: 16,
+// None: 32,
+// Rd: Rd(15:12),
+// Rm: Rm(3:0),
+// Rn: Rn(19:16),
+// S: S(20),
+// actual: Actual_ADC_register_cccc0000101snnnnddddiiiiitt0mmmm_case_1,
+// baseline: Binary3RegisterShiftedOp,
+// constraints: ,
+// defs: {Rd, NZCV
+// if S
+// else None},
+// fields: [S(20), Rn(19:16), Rd(15:12), Rm(3:0)],
+// generated_baseline: ORR_register_cccc0001100snnnnddddiiiiitt0mmmm_case_0,
+// pattern: cccc0001100snnnnddddiiiiitt0mmmm,
+// rule: ORR_register,
+// safety: [(Rd(15:12)=1111 &&
+// S(20)=1) => DECODER_ERROR,
+// Rd(15:12)=1111 => FORBIDDEN_OPERANDS],
+// uses: {Rn, Rm}}
+TEST_F(Arm32DecoderStateTests,
+ BvB_Binary3RegisterShiftedOpTester_Case12_TestCase12) {
+ Binary3RegisterShiftedOpTester_Case12 old_baseline_tester;
+ NamedORR_register_cccc0001100snnnnddddiiiiitt0mmmm_case_0 gen_baseline;
+ BaselineVsBaselineTester b_vs_b_tester(gen_baseline, old_baseline_tester);
+ b_vs_b_tester.Test("cccc0001100snnnnddddiiiiitt0mmmm");
+}
+
+// op1(24:20)=1101x & op2(11:7)=~00000 & op3(6:5)=00 & $pattern(31:0)=xxxxxxxxxxxx0000xxxxxxxxxxxxxxxx
+// = {NZCV: 16,
+// None: 32,
+// Rd: Rd(15:12),
+// Rm: Rm(3:0),
+// S: S(20),
+// actual: Actual_LSL_immediate_cccc0001101s0000ddddiiiii000mmmm_case_1,
+// baseline: Unary2RegisterShiftedOpImmNotZero,
+// constraints: ,
+// defs: {Rd, NZCV
+// if S
+// else None},
+// fields: [S(20), Rd(15:12), imm5(11:7), Rm(3:0)],
+// generated_baseline: LSL_immediate_cccc0001101s0000ddddiiiii000mmmm_case_0,
+// imm5: imm5(11:7),
+// pattern: cccc0001101s0000ddddiiiii000mmmm,
+// rule: LSL_immediate,
+// safety: [(Rd(15:12)=1111 &&
+// S(20)=1) => DECODER_ERROR,
+// imm5(11:7)=00000 => DECODER_ERROR,
+// Rd(15:12)=1111 => FORBIDDEN_OPERANDS],
+// uses: {Rm}}
+TEST_F(Arm32DecoderStateTests,
+ BvB_Unary2RegisterShiftedOpImmNotZeroTester_Case13_TestCase13) {
+ Unary2RegisterShiftedOpImmNotZeroTester_Case13 old_baseline_tester;
+ NamedLSL_immediate_cccc0001101s0000ddddiiiii000mmmm_case_0 gen_baseline;
+ BaselineVsBaselineTester b_vs_b_tester(gen_baseline, old_baseline_tester);
+ b_vs_b_tester.Test("cccc0001101s0000ddddiiiii000mmmm");
+}
+
+// op1(24:20)=1101x & op2(11:7)=~00000 & op3(6:5)=11 & $pattern(31:0)=xxxxxxxxxxxx0000xxxxxxxxxxxxxxxx
+// = {NZCV: 16,
+// None: 32,
+// Rd: Rd(15:12),
+// Rm: Rm(3:0),
+// S: S(20),
+// actual: Actual_LSL_immediate_cccc0001101s0000ddddiiiii000mmmm_case_1,
+// baseline: Unary2RegisterShiftedOpImmNotZero,
+// constraints: ,
+// defs: {Rd, NZCV
+// if S
+// else None},
+// fields: [S(20), Rd(15:12), imm5(11:7), Rm(3:0)],
+// generated_baseline: ROR_immediate_cccc0001101s0000ddddiiiii110mmmm_case_0,
+// imm5: imm5(11:7),
+// pattern: cccc0001101s0000ddddiiiii110mmmm,
+// rule: ROR_immediate,
+// safety: [(Rd(15:12)=1111 &&
+// S(20)=1) => DECODER_ERROR,
+// imm5(11:7)=00000 => DECODER_ERROR,
+// Rd(15:12)=1111 => FORBIDDEN_OPERANDS],
+// uses: {Rm}}
+TEST_F(Arm32DecoderStateTests,
+ BvB_Unary2RegisterShiftedOpImmNotZeroTester_Case14_TestCase14) {
+ Unary2RegisterShiftedOpImmNotZeroTester_Case14 old_baseline_tester;
+ NamedROR_immediate_cccc0001101s0000ddddiiiii110mmmm_case_0 gen_baseline;
+ BaselineVsBaselineTester b_vs_b_tester(gen_baseline, old_baseline_tester);
+ b_vs_b_tester.Test("cccc0001101s0000ddddiiiii110mmmm");
+}
+
+// op1(24:20)=1101x & op2(11:7)=00000 & op3(6:5)=00 & $pattern(31:0)=xxxxxxxxxxxx0000xxxxxxxxxxxxxxxx
+// = {NZCV: 16,
+// None: 32,
+// Rd: Rd(15:12),
+// Rm: Rm(3:0),
+// S: S(20),
+// actual: Actual_ASR_immediate_cccc0001101s0000ddddiiiii100mmmm_case_1,
+// baseline: Unary2RegisterOp,
+// constraints: ,
+// defs: {Rd, NZCV
+// if S
+// else None},
+// fields: [S(20), Rd(15:12), Rm(3:0)],
+// generated_baseline: MOV_register_cccc0001101s0000dddd00000000mmmm_case_0,
+// pattern: cccc0001101s0000dddd00000000mmmm,
+// rule: MOV_register,
+// safety: [(Rd(15:12)=1111 &&
+// S(20)=1) => DECODER_ERROR,
+// Rd(15:12)=1111 => FORBIDDEN_OPERANDS],
+// uses: {Rm}}
+TEST_F(Arm32DecoderStateTests,
+ BvB_Unary2RegisterOpTester_Case15_TestCase15) {
+ Unary2RegisterOpTester_Case15 old_baseline_tester;
+ NamedMOV_register_cccc0001101s0000dddd00000000mmmm_case_0 gen_baseline;
+ BaselineVsBaselineTester b_vs_b_tester(gen_baseline, old_baseline_tester);
+ b_vs_b_tester.Test("cccc0001101s0000dddd00000000mmmm");
+}
+
+// op1(24:20)=1101x & op2(11:7)=00000 & op3(6:5)=11 & $pattern(31:0)=xxxxxxxxxxxx0000xxxxxxxxxxxxxxxx
+// = {NZCV: 16,
+// None: 32,
+// Rd: Rd(15:12),
+// Rm: Rm(3:0),
+// S: S(20),
+// actual: Actual_ASR_immediate_cccc0001101s0000ddddiiiii100mmmm_case_1,
+// baseline: Unary2RegisterOp,
+// constraints: ,
+// defs: {Rd, NZCV
+// if S
+// else None},
+// fields: [S(20), Rd(15:12), Rm(3:0)],
+// generated_baseline: RRX_cccc0001101s0000dddd00000110mmmm_case_0,
+// pattern: cccc0001101s0000dddd00000110mmmm,
+// rule: RRX,
+// safety: [(Rd(15:12)=1111 &&
+// S(20)=1) => DECODER_ERROR,
+// Rd(15:12)=1111 => FORBIDDEN_OPERANDS],
+// uses: {Rm}}
+TEST_F(Arm32DecoderStateTests,
+ BvB_Unary2RegisterOpTester_Case16_TestCase16) {
+ Unary2RegisterOpTester_Case16 old_baseline_tester;
+ NamedRRX_cccc0001101s0000dddd00000110mmmm_case_0 gen_baseline;
+ BaselineVsBaselineTester b_vs_b_tester(gen_baseline, old_baseline_tester);
+ b_vs_b_tester.Test("cccc0001101s0000dddd00000110mmmm");
+}
+
+// op1(24:20)=1101x & op3(6:5)=01 & $pattern(31:0)=xxxxxxxxxxxx0000xxxxxxxxxxxxxxxx
+// = {NZCV: 16,
+// None: 32,
+// Rd: Rd(15:12),
+// Rm: Rm(3:0),
+// S: S(20),
+// actual: Actual_ASR_immediate_cccc0001101s0000ddddiiiii100mmmm_case_1,
+// baseline: Unary2RegisterShiftedOp,
+// constraints: ,
+// defs: {Rd, NZCV
+// if S
+// else None},
+// fields: [S(20), Rd(15:12), Rm(3:0)],
+// generated_baseline: LSR_immediate_cccc0001101s0000ddddiiiii010mmmm_case_0,
+// pattern: cccc0001101s0000ddddiiiii010mmmm,
+// rule: LSR_immediate,
+// safety: [(Rd(15:12)=1111 &&
+// S(20)=1) => DECODER_ERROR,
+// Rd(15:12)=1111 => FORBIDDEN_OPERANDS],
+// uses: {Rm}}
+TEST_F(Arm32DecoderStateTests,
+ BvB_Unary2RegisterShiftedOpTester_Case17_TestCase17) {
+ Unary2RegisterShiftedOpTester_Case17 old_baseline_tester;
+ NamedLSR_immediate_cccc0001101s0000ddddiiiii010mmmm_case_0 gen_baseline;
+ BaselineVsBaselineTester b_vs_b_tester(gen_baseline, old_baseline_tester);
+ b_vs_b_tester.Test("cccc0001101s0000ddddiiiii010mmmm");
+}
+
+// op1(24:20)=1101x & op3(6:5)=10 & $pattern(31:0)=xxxxxxxxxxxx0000xxxxxxxxxxxxxxxx
+// = {NZCV: 16,
+// None: 32,
+// Rd: Rd(15:12),
+// Rm: Rm(3:0),
+// S: S(20),
+// actual: Actual_ASR_immediate_cccc0001101s0000ddddiiiii100mmmm_case_1,
+// baseline: Unary2RegisterShiftedOp,
+// constraints: ,
+// defs: {Rd, NZCV
+// if S
+// else None},
+// fields: [S(20), Rd(15:12), Rm(3:0)],
+// generated_baseline: ASR_immediate_cccc0001101s0000ddddiiiii100mmmm_case_0,
+// pattern: cccc0001101s0000ddddiiiii100mmmm,
+// rule: ASR_immediate,
+// safety: [(Rd(15:12)=1111 &&
+// S(20)=1) => DECODER_ERROR,
+// Rd(15:12)=1111 => FORBIDDEN_OPERANDS],
+// uses: {Rm}}
+TEST_F(Arm32DecoderStateTests,
+ BvB_Unary2RegisterShiftedOpTester_Case18_TestCase18) {
+ Unary2RegisterShiftedOpTester_Case18 old_baseline_tester;
+ NamedASR_immediate_cccc0001101s0000ddddiiiii100mmmm_case_0 gen_baseline;
+ BaselineVsBaselineTester b_vs_b_tester(gen_baseline, old_baseline_tester);
+ b_vs_b_tester.Test("cccc0001101s0000ddddiiiii100mmmm");
+}
+
+// op1(24:20)=1110x
+// = {NZCV: 16,
+// None: 32,
+// Rd: Rd(15:12),
+// Rm: Rm(3:0),
+// Rn: Rn(19:16),
+// S: S(20),
+// actual: Actual_ADC_register_cccc0000101snnnnddddiiiiitt0mmmm_case_1,
+// baseline: Binary3RegisterShiftedOp,
+// constraints: ,
+// defs: {Rd, NZCV
+// if S
+// else None},
+// fields: [S(20), Rn(19:16), Rd(15:12), Rm(3:0)],
+// generated_baseline: BIC_register_cccc0001110snnnnddddiiiiitt0mmmm_case_0,
+// pattern: cccc0001110snnnnddddiiiiitt0mmmm,
+// rule: BIC_register,
+// safety: [(Rd(15:12)=1111 &&
+// S(20)=1) => DECODER_ERROR,
+// Rd(15:12)=1111 => FORBIDDEN_OPERANDS],
+// uses: {Rn, Rm}}
+TEST_F(Arm32DecoderStateTests,
+ BvB_Binary3RegisterShiftedOpTester_Case19_TestCase19) {
+ Binary3RegisterShiftedOpTester_Case19 old_baseline_tester;
+ NamedBIC_register_cccc0001110snnnnddddiiiiitt0mmmm_case_0 gen_baseline;
+ BaselineVsBaselineTester b_vs_b_tester(gen_baseline, old_baseline_tester);
+ b_vs_b_tester.Test("cccc0001110snnnnddddiiiiitt0mmmm");
+}
+
+// op1(24:20)=1111x & $pattern(31:0)=xxxxxxxxxxxx0000xxxxxxxxxxxxxxxx
+// = {NZCV: 16,
+// None: 32,
+// Rd: Rd(15:12),
+// Rm: Rm(3:0),
+// S: S(20),
+// actual: Actual_ASR_immediate_cccc0001101s0000ddddiiiii100mmmm_case_1,
+// baseline: Unary2RegisterShiftedOp,
+// constraints: ,
+// defs: {Rd, NZCV
+// if S
+// else None},
+// fields: [S(20), Rd(15:12), Rm(3:0)],
+// generated_baseline: MVN_register_cccc0001111s0000ddddiiiiitt0mmmm_case_0,
+// pattern: cccc0001111s0000ddddiiiiitt0mmmm,
+// rule: MVN_register,
+// safety: [(Rd(15:12)=1111 &&
+// S(20)=1) => DECODER_ERROR,
+// Rd(15:12)=1111 => FORBIDDEN_OPERANDS],
+// uses: {Rm}}
+TEST_F(Arm32DecoderStateTests,
+ BvB_Unary2RegisterShiftedOpTester_Case20_TestCase20) {
+ Unary2RegisterShiftedOpTester_Case20 old_baseline_tester;
+ NamedMVN_register_cccc0001111s0000ddddiiiiitt0mmmm_case_0 gen_baseline;
+ BaselineVsBaselineTester b_vs_b_tester(gen_baseline, old_baseline_tester);
+ b_vs_b_tester.Test("cccc0001111s0000ddddiiiiitt0mmmm");
+}
+
} // namespace nacl_arm_test
int main(int argc, char* argv[]) {

Powered by Google App Engine
This is Rietveld 408576698