mirror of
https://github.com/open-goal/jak-project
synced 2026-08-18 21:57:54 -04:00
goalc: replicate tests for the majority of ARM64 non-simd cases (#4377)
- Adds `capstone` as a disassembling library that could eventually replace Zydis (for now left that alone) - Replicates all of the existing x86 tests to ARM64, fixed a bunch of underlying issues along the way - There are a very small handful of tests remaining that need to be enabled / fixed
This commit is contained in:
@@ -225,18 +225,14 @@ TEST(CodeTester, execute_push_pop_simd_x86) {
|
||||
tester.emit_pop_all_simd();
|
||||
tester.emit_return();
|
||||
EXPECT_EQ(
|
||||
tester.dump_to_hex_string(),
|
||||
"48 83 ec 08 48 83 ec 10 66 0f 7f 04 24 48 83 ec 10 66 0f 7f 0c 24 48 83 ec 10 66 0f 7f 14 "
|
||||
"24 48 83 ec 10 66 0f 7f 1c 24 48 83 ec 10 66 0f 7f 24 24 48 83 ec 10 66 0f 7f 2c 24 48 83 "
|
||||
"ec 10 66 0f 7f 34 24 48 83 ec 10 66 0f 7f 3c 24 48 83 ec 10 66 44 0f 7f 04 24 48 83 ec 10 "
|
||||
"66 44 0f 7f 0c 24 48 83 ec 10 66 44 0f 7f 14 24 48 83 ec 10 66 44 0f 7f 1c 24 48 83 ec 10 "
|
||||
"66 44 0f 7f 24 24 48 83 ec 10 66 44 0f 7f 2c 24 48 83 ec 10 66 44 0f 7f 34 24 48 83 ec 10 "
|
||||
"66 44 0f 7f 3c 24 66 0f 6f 04 24 48 83 c4 10 66 0f 6f 0c 24 48 83 c4 10 66 0f 6f 14 24 48 "
|
||||
"83 c4 10 66 0f 6f 1c 24 48 83 c4 10 66 0f 6f 24 24 48 83 c4 10 66 0f 6f 2c 24 48 83 c4 10 "
|
||||
"66 0f 6f 34 24 48 83 c4 10 66 0f 6f 3c 24 48 83 c4 10 66 44 0f 6f 04 24 48 83 c4 10 66 44 "
|
||||
"0f 6f 0c 24 48 83 c4 10 66 44 0f 6f 14 24 48 83 c4 10 66 44 0f 6f 1c 24 48 83 c4 10 66 44 "
|
||||
"0f 6f 24 24 48 83 c4 10 66 44 0f 6f 2c 24 48 83 c4 10 66 44 0f 6f 34 24 48 83 c4 10 66 44 "
|
||||
"0f 6f 3c 24 48 83 c4 10 48 83 c4 08 c3");
|
||||
tester.dump_to_hex_string(true),
|
||||
"4883EC084883EC10660F7F04244883EC10660F7F0C244883EC10660F7F14244883EC10660F7F1C244883EC10660F"
|
||||
"7F24244883EC10660F7F2C244883EC10660F7F34244883EC10660F7F3C244883EC1066440F7F04244883EC106644"
|
||||
"0F7F0C244883EC1066440F7F14244883EC1066440F7F1C244883EC1066440F7F24244883EC1066440F7F2C244883"
|
||||
"EC1066440F7F34244883EC1066440F7F3C2466440F6F3C244883C41066440F6F34244883C41066440F6F2C244883"
|
||||
"C41066440F6F24244883C41066440F6F1C244883C41066440F6F14244883C41066440F6F0C244883C41066440F6F"
|
||||
"04244883C410660F6F3C244883C410660F6F34244883C410660F6F2C244883C410660F6F24244883C410660F6F1C"
|
||||
"244883C410660F6F14244883C410660F6F0C244883C410660F6F04244883C4104883C408C3");
|
||||
execute_tester(tester);
|
||||
}
|
||||
|
||||
@@ -247,16 +243,13 @@ TEST(CodeTester, execute_push_pop_simd_arm64) {
|
||||
tester.emit_pop_all_simd();
|
||||
tester.emit_return();
|
||||
EXPECT_EQ(
|
||||
tester.dump_to_hex_string(),
|
||||
"ff 43 00 d1 e0 03 80 3d ff 43 00 d1 e1 03 80 3d ff 43 00 d1 e2 03 80 3d ff 43 00 d1 e3 03 "
|
||||
"80 3d ff 43 00 d1 e4 03 80 3d ff 43 00 d1 e5 03 80 3d ff 43 00 d1 e6 03 80 3d ff 43 00 d1 "
|
||||
"e7 03 80 3d ff 43 00 d1 e8 03 80 3d ff 43 00 d1 e9 03 80 3d ff 43 00 d1 ea 03 80 3d ff 43 "
|
||||
"00 d1 eb 03 80 3d ff 43 00 d1 ec 03 80 3d ff 43 00 d1 ed 03 80 3d ff 43 00 d1 ee 03 80 3d "
|
||||
"ff 43 00 d1 ef 03 80 3d e0 03 c0 3d ff 43 00 91 e1 03 c0 3d ff 43 00 91 e2 03 c0 3d ff 43 "
|
||||
"00 91 e3 03 c0 3d ff 43 00 91 e4 03 c0 3d ff 43 00 91 e5 03 c0 3d ff 43 00 91 e6 03 c0 3d "
|
||||
"ff 43 00 91 e7 03 c0 3d ff 43 00 91 e8 03 c0 3d ff 43 00 91 e9 03 c0 3d ff 43 00 91 ea 03 "
|
||||
"c0 3d ff 43 00 91 eb 03 c0 3d ff 43 00 91 ec 03 c0 3d ff 43 00 91 ed 03 c0 3d ff 43 00 91 "
|
||||
"ee 03 c0 3d ff 43 00 91 ef 03 c0 3d ff 43 00 91 c0 03 5f d6");
|
||||
tester.dump_to_hex_string(true),
|
||||
"FF4300D1E003803DFF4300D1E103803DFF4300D1E203803DFF4300D1E303803DFF4300D1E403803DFF4300D1E503"
|
||||
"803DFF4300D1E603803DFF4300D1E703803DFF4300D1E803803DFF4300D1E903803DFF4300D1EA03803DFF4300D1"
|
||||
"EB03803DFF4300D1EC03803DFF4300D1ED03803DFF4300D1EE03803DFF4300D1EF03803DEF03C03DFF430091EE03"
|
||||
"C03DFF430091ED03C03DFF430091EC03C03DFF430091EB03C03DFF430091EA03C03DFF430091E903C03DFF430091"
|
||||
"E803C03DFF430091E703C03DFF430091E603C03DFF430091E503C03DFF430091E403C03DFF430091E303C03DFF43"
|
||||
"0091E203C03DFF430091E103C03DFF430091E003C03DFF430091C0035FD6");
|
||||
execute_tester(tester);
|
||||
}
|
||||
|
||||
@@ -270,20 +263,16 @@ TEST(CodeTester, execute_push_pop_all_the_things_x86) {
|
||||
tester.emit_pop_all_gprs();
|
||||
tester.emit_pop_all_simd();
|
||||
tester.emit_return();
|
||||
EXPECT_EQ(tester.dump_to_hex_string(),
|
||||
"48 83 ec 08 48 83 ec 10 66 0f 7f 04 24 48 83 ec 10 66 0f 7f 0c 24 48 83 ec 10 66 0f "
|
||||
"7f 14 24 48 83 ec 10 66 0f 7f 1c 24 48 83 ec 10 66 0f 7f 24 24 48 83 ec 10 66 0f 7f "
|
||||
"2c 24 48 83 ec 10 66 0f 7f 34 24 48 83 ec 10 66 0f 7f 3c 24 48 83 ec 10 66 44 0f 7f "
|
||||
"04 24 48 83 ec 10 66 44 0f 7f 0c 24 48 83 ec 10 66 44 0f 7f 14 24 48 83 ec 10 66 44 "
|
||||
"0f 7f 1c 24 48 83 ec 10 66 44 0f 7f 24 24 48 83 ec 10 66 44 0f 7f 2c 24 48 83 ec 10 "
|
||||
"66 44 0f 7f 34 24 48 83 ec 10 66 44 0f 7f 3c 24 50 51 52 53 54 55 56 57 41 50 41 51 "
|
||||
"41 52 41 53 41 54 41 55 41 56 41 57 41 5f 41 5e 41 5d 41 5c 41 5b 41 5a 41 59 41 58 "
|
||||
"5f 5e 5d 5c 5b 5a 59 58 66 0f 6f 04 24 48 83 c4 10 66 0f 6f 0c 24 48 83 c4 10 66 0f "
|
||||
"6f 14 24 48 83 c4 10 66 0f 6f 1c 24 48 83 c4 10 66 0f 6f 24 24 48 83 c4 10 66 0f 6f "
|
||||
"2c 24 48 83 c4 10 66 0f 6f 34 24 48 83 c4 10 66 0f 6f 3c 24 48 83 c4 10 66 44 0f 6f "
|
||||
"04 24 48 83 c4 10 66 44 0f 6f 0c 24 48 83 c4 10 66 44 0f 6f 14 24 48 83 c4 10 66 44 "
|
||||
"0f 6f 1c 24 48 83 c4 10 66 44 0f 6f 24 24 48 83 c4 10 66 44 0f 6f 2c 24 48 83 c4 10 "
|
||||
"66 44 0f 6f 34 24 48 83 c4 10 66 44 0f 6f 3c 24 48 83 c4 10 48 83 c4 08 c3");
|
||||
EXPECT_EQ(
|
||||
tester.dump_to_hex_string(true),
|
||||
"4883EC084883EC10660F7F04244883EC10660F7F0C244883EC10660F7F14244883EC10660F7F1C244883EC10660F"
|
||||
"7F24244883EC10660F7F2C244883EC10660F7F34244883EC10660F7F3C244883EC1066440F7F04244883EC106644"
|
||||
"0F7F0C244883EC1066440F7F14244883EC1066440F7F1C244883EC1066440F7F24244883EC1066440F7F2C244883"
|
||||
"EC1066440F7F34244883EC1066440F7F3C24505152535455565741504151415241534154415541564157415F415E"
|
||||
"415D415C415B415A415941585F5E5D5C5B5A595866440F6F3C244883C41066440F6F34244883C41066440F6F2C24"
|
||||
"4883C41066440F6F24244883C41066440F6F1C244883C41066440F6F14244883C41066440F6F0C244883C4106644"
|
||||
"0F6F04244883C410660F6F3C244883C410660F6F34244883C410660F6F2C244883C410660F6F24244883C410660F"
|
||||
"6F1C244883C410660F6F14244883C410660F6F0C244883C410660F6F04244883C4104883C408C3");
|
||||
execute_tester(tester);
|
||||
}
|
||||
|
||||
@@ -297,25 +286,19 @@ TEST(CodeTester, execute_push_pop_all_the_things_arm64) {
|
||||
tester.emit_pop_all_gprs();
|
||||
tester.emit_pop_all_simd();
|
||||
tester.emit_return();
|
||||
EXPECT_EQ(
|
||||
tester.dump_to_hex_string(),
|
||||
"ff 43 00 d1 e0 03 80 3d ff 43 00 d1 e1 03 80 3d ff 43 00 d1 e2 03 80 3d ff 43 00 d1 e3 03 "
|
||||
"80 3d ff 43 00 d1 e4 03 80 3d ff 43 00 d1 e5 03 80 3d ff 43 00 d1 e6 03 80 3d ff 43 00 d1 "
|
||||
"e7 03 80 3d ff 43 00 d1 e8 03 80 3d ff 43 00 d1 e9 03 80 3d ff 43 00 d1 ea 03 80 3d ff 43 "
|
||||
"00 d1 eb 03 80 3d ff 43 00 d1 ec 03 80 3d ff 43 00 d1 ed 03 80 3d ff 43 00 d1 ee 03 80 3d "
|
||||
"ff 43 00 d1 ef 03 80 3d e0 0f 1f f8 e1 0f 1f f8 e2 0f 1f f8 e3 0f 1f f8 e4 0f 1f f8 e5 0f "
|
||||
"1f f8 e6 0f 1f f8 e7 0f 1f f8 e8 0f 1f f8 e9 0f 1f f8 ea 0f 1f f8 eb 0f 1f f8 ec 0f 1f f8 "
|
||||
"ed 0f 1f f8 ee 0f 1f f8 ef 0f 1f f8 f0 0f 1f f8 f1 0f 1f f8 f2 0f 1f f8 f3 0f 1f f8 f4 0f "
|
||||
"1f f8 f5 0f 1f f8 f6 0f 1f f8 f7 0f 1f f8 f8 0f 1f f8 f9 0f 1f f8 fa 0f 1f f8 fb 0f 1f f8 "
|
||||
"fc 0f 1f f8 fd 0f 1f f8 fe 0f 1f f8 fe 07 41 f8 fd 07 41 f8 fc 07 41 f8 fb 07 41 f8 fa 07 "
|
||||
"41 f8 f9 07 41 f8 f8 07 41 f8 f7 07 41 f8 f6 07 41 f8 f5 07 41 f8 f4 07 41 f8 f3 07 41 f8 "
|
||||
"f2 07 41 f8 f1 07 41 f8 f0 07 41 f8 ef 07 41 f8 ee 07 41 f8 ed 07 41 f8 ec 07 41 f8 eb 07 "
|
||||
"41 f8 ea 07 41 f8 e9 07 41 f8 e8 07 41 f8 e7 07 41 f8 e6 07 41 f8 e5 07 41 f8 e4 07 41 f8 "
|
||||
"e3 07 41 f8 e2 07 41 f8 e1 07 41 f8 e0 07 41 f8 e0 03 c0 3d ff 43 00 91 e1 03 c0 3d ff 43 "
|
||||
"00 91 e2 03 c0 3d ff 43 00 91 e3 03 c0 3d ff 43 00 91 e4 03 c0 3d ff 43 00 91 e5 03 c0 3d "
|
||||
"ff 43 00 91 e6 03 c0 3d ff 43 00 91 e7 03 c0 3d ff 43 00 91 e8 03 c0 3d ff 43 00 91 e9 03 "
|
||||
"c0 3d ff 43 00 91 ea 03 c0 3d ff 43 00 91 eb 03 c0 3d ff 43 00 91 ec 03 c0 3d ff 43 00 91 "
|
||||
"ed 03 c0 3d ff 43 00 91 ee 03 c0 3d ff 43 00 91 ef 03 c0 3d ff 43 00 91 c0 03 5f d6");
|
||||
EXPECT_EQ(tester.dump_to_hex_string(true),
|
||||
"FF4300D1E003803DFF4300D1E103803DFF4300D1E203803DFF4300D1E303803DFF4300D1E403803DFF4300"
|
||||
"D1E503803DFF4300D1E603803DFF4300D1E703803DFF4300D1E803803DFF4300D1E903803DFF4300D1EA03"
|
||||
"803DFF4300D1EB03803DFF4300D1EC03803DFF4300D1ED03803DFF4300D1EE03803DFF4300D1EF03803DE0"
|
||||
"0F1FF8E10F1FF8E20F1FF8E30F1FF8E40F1FF8E50F1FF8E60F1FF8E70F1FF8E80F1FF8E90F1FF8EA0F1FF8"
|
||||
"EB0F1FF8EC0F1FF8ED0F1FF8EE0F1FF8EF0F1FF8F00F1FF8F10F1FF8F20F1FF8F30F1FF8F40F1FF8F50F1F"
|
||||
"F8F60F1FF8F70F1FF8F80F1FF8F90F1FF8FA0F1FF8FB0F1FF8FC0F1FF8FD0F1FF8FE0F1FF8FE0741F8FD07"
|
||||
"41F8FC0741F8FB0741F8FA0741F8F90741F8F80741F8F70741F8F60741F8F50741F8F40741F8F30741F8F2"
|
||||
"0741F8F10741F8F00741F8EF0741F8EE0741F8ED0741F8EC0741F8EB0741F8EA0741F8E90741F8E80741F8"
|
||||
"E70741F8E60741F8E50741F8E40741F8E30741F8E20741F8E10741F8E00741F8EF03C03DFF430091EE03C0"
|
||||
"3DFF430091ED03C03DFF430091EC03C03DFF430091EB03C03DFF430091EA03C03DFF430091E903C03DFF43"
|
||||
"0091E803C03DFF430091E703C03DFF430091E603C03DFF430091E503C03DFF430091E403C03DFF430091E3"
|
||||
"03C03DFF430091E203C03DFF430091E103C03DFF430091E003C03DFF430091C0035FD6");
|
||||
execute_tester(tester);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user