From 7b3adadb3824e2995eca5097c806dcb303933911 Mon Sep 17 00:00:00 2001 From: Dirk Steinke Date: Wed, 30 Jul 2014 12:02:15 +0200 Subject: [PATCH] Add all asm files to test. Unfortunately, it crashes again. Will investigate. --- tests/test_allinstructions.cpp | 80 +++++++++++++++++++++++++++++++++++------- 1 file changed, 67 insertions(+), 13 deletions(-) diff --git a/tests/test_allinstructions.cpp b/tests/test_allinstructions.cpp index f382eff..69beb83 100644 --- a/tests/test_allinstructions.cpp +++ b/tests/test_allinstructions.cpp @@ -9,6 +9,7 @@ #include "jitcs_int_machine.h" #include "jitcs_int_bitfuncs.h" #include "test_asm_x86_32.h" +#include "test_asm_x86_64.h" #include @@ -25,25 +26,78 @@ static void test(UnitTest& t) { std::string path = "data/"; #endif { - RefCounter mi = GetX86_32WinMachineInfo(); - TestAssemblerX86_32 asm_win32(mgr, alloc, mi); + std::vector x86as_files; + x86as_files.push_back("mov_set"); + x86as_files.push_back("arith"); + x86as_files.push_back("other"); + x86as_files.push_back("other_vex"); + x86as_files.push_back("simd_mov"); + x86as_files.push_back("simd_arith"); + x86as_files.push_back("simd_blend"); + x86as_files.push_back("simd_cvt"); + x86as_files.push_back("simd_insext"); + x86as_files.push_back("simd_shuffle"); + x86as_files.push_back("simd_mov_vex"); + x86as_files.push_back("simd_arith_vex"); + x86as_files.push_back("simd_blend_vex"); + x86as_files.push_back("simd_cvt_vex"); + x86as_files.push_back("simd_insext_vex"); + x86as_files.push_back("simd_shuffle_vex"); + std::unordered_set allins; std::unordered_set allins_compressed; + { + std::string prefix = path + "x86_32_"; + + RefCounter mi = GetX86_32WinMachineInfo(); + TestAssemblerX86_32 asm_win32(mgr, alloc, mi); + allins.clear(); + allins_compressed.clear(); + + for (auto fn: x86as_files) + asm_win32.checkFile(t, prefix + fn + ".as", &allins, + prefix + fn + ".bin"); - asm_win32.checkFile(t, path + "x86_32_arith.as", &allins, path + "x86_32_arith.bin"); + for (auto v: allins) { + allins_compressed.insert(((v >> x86_32::ICL_NonMainBits) << x86_32::ICL_SubBits) + + (v & x86_32::ICL_SubMask)); + } + + size_t n = 0; + for (u32 i = x86_32::ICL_First; i < x86_32::ICL_Last; ++i) { + n += popcnt(x86_32::ToValidMask(static_cast(i))); + } + char buffer[128]; + sprintf(buffer, "x86_32/completeness: %d ins available, %d ins handled", n, allins_compressed.size()); + t.check(buffer, n == allins_compressed.size()); + } - for (auto v: allins) { - allins_compressed.insert(((v >> x86_32::ICL_NonMainBits) << x86_32::ICL_SubBits) - + (v & x86_32::ICL_SubMask)); - } + { + std::string prefix = path + "x86_64_"; - size_t n = 0; - for (u32 i = x86_32::ICL_First; i < x86_32::ICL_Last; ++i) { - n += popcnt(x86_32::ToValidMask(static_cast(i))); + RefCounter mi = GetX86_64WinMachineInfo(); + TestAssemblerX86_64 asm_win64(mgr, alloc, mi); + allins.clear(); + allins_compressed.clear(); + + for (auto fn: x86as_files) + asm_win64.checkFile(t, prefix + fn + ".as", &allins, + prefix + fn + ".bin"); + + for (auto v: allins) { + allins_compressed.insert + (((v >> x86_32::ICL_NonMainBits) << x86_32::ICL_SubBits) + + (v & x86_32::ICL_SubMask)); + } + + size_t n = 0; + for (u32 i = x86_32::ICL_First; i < x86_32::ICL_Last; ++i) { + n += popcnt(x86_32::ToValidMask(static_cast(i))); + } + char buffer[128]; + sprintf(buffer, "x86_64/completeness: %d ins available, %d ins handled", n, allins_compressed.size()); + t.check(buffer, n == allins_compressed.size()); } - char buffer[128]; - sprintf(buffer, "x86_32/completeness: %d ins available, %d ins handled", n, allins_compressed.size()); - t.check(buffer, n == allins_compressed.size()); } } -- 2.11.4.GIT