Chromium Code Reviews| 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[]) { |