summaryrefslogtreecommitdiffstatshomepage
path: root/3rdparty/asmjit/test/asmjit_bench_x86.cpp
diff options
context:
space:
mode:
author Patrick Mackinlay <pmackinlay@hotmail.com>2020-06-12 11:55:10 +0700
committer Patrick Mackinlay <pmackinlay@hotmail.com>2020-06-12 11:55:10 +0700
commit19214dd8e6528e056166a37b441568a9a264b086 (patch)
tree7403411d6d536153d1df6d8923f7594ace8b9a4f /3rdparty/asmjit/test/asmjit_bench_x86.cpp
parent7b6dbd7a1442d6a77f3b410966fdc41769e417b5 (diff)
asmjist: sync with upstream (nw)
Diffstat (limited to '3rdparty/asmjit/test/asmjit_bench_x86.cpp')
-rw-r--r--3rdparty/asmjit/test/asmjit_bench_x86.cpp36
1 files changed, 20 insertions, 16 deletions
diff --git a/3rdparty/asmjit/test/asmjit_bench_x86.cpp b/3rdparty/asmjit/test/asmjit_bench_x86.cpp
index 95f792d0c03..40d90088c01 100644
--- a/3rdparty/asmjit/test/asmjit_bench_x86.cpp
+++ b/3rdparty/asmjit/test/asmjit_bench_x86.cpp
@@ -37,7 +37,7 @@ using namespace asmjit;
// [Configuration]
// ============================================================================
-static constexpr uint32_t kNumRepeats = 25;
+static constexpr uint32_t kNumRepeats = 20;
static constexpr uint32_t kNumIterations = 1000;
// ============================================================================
@@ -80,12 +80,12 @@ namespace BenchUtils {
}
template<typename EmitterT, typename FuncT>
- static void bench(CodeHolder& code, uint32_t archId, const char* testName, const FuncT& func) noexcept {
+ static void bench(CodeHolder& code, uint32_t arch, const char* testName, const FuncT& func) noexcept {
EmitterT emitter;
const char* archName =
- archId == ArchInfo::kIdX86 ? "X86" :
- archId == ArchInfo::kIdX64 ? "X64" : "???";
+ arch == Environment::kArchX86 ? "X86" :
+ arch == Environment::kArchX64 ? "X64" : "???";
const char* emitterName =
emitter.isAssembler() ? "Assembler" :
@@ -95,14 +95,13 @@ namespace BenchUtils {
Performance perf;
uint64_t codeSize = 0;
- CodeInfo codeInfo(archId);
- codeInfo.setCdeclCallConv(archId == ArchInfo::kIdX86 ? CallConv::kIdX86CDecl : CallConv::kIdX86SysV64);
+ Environment env(arch);
for (uint32_t r = 0; r < kNumRepeats; r++) {
perf.start();
codeSize = 0;
for (uint32_t i = 0; i < kNumIterations; i++) {
- code.init(codeInfo);
+ code.init(env);
code.attach(&emitter);
func(emitter);
@@ -113,7 +112,7 @@ namespace BenchUtils {
perf.end();
}
- printf("[%s] %-9s %-8s | Time:%6u [ms] | ", archName, emitterName, testName, perf.best);
+ printf("[%s] %-9s %-10s | Time:%6u [ms] | ", archName, emitterName, testName, perf.best);
if (codeSize)
printf("Speed: %7.3f [MB/s]", mbps(perf.best, codeSize));
else
@@ -127,30 +126,35 @@ namespace BenchUtils {
// ============================================================================
#ifdef ASMJIT_BUILD_X86
-static void benchX86(uint32_t archId) noexcept {
+static void benchX86(uint32_t arch) noexcept {
CodeHolder code;
- BenchUtils::bench<x86::Assembler>(code, archId, "[raw]", [](x86::Assembler& a) {
+ BenchUtils::bench<x86::Assembler>(code, arch, "[fast]", [](x86::Assembler& a) {
+ asmtest::generateOpcodes(a.as<x86::Emitter>());
+ });
+
+ BenchUtils::bench<x86::Assembler>(code, arch, "[validate]", [](x86::Assembler& a) {
+ a.addValidationOptions(BaseEmitter::kValidationOptionAssembler);
asmtest::generateOpcodes(a.as<x86::Emitter>());
});
#ifndef ASMJIT_NO_BUILDER
- BenchUtils::bench<x86::Builder>(code, archId, "[raw]", [](x86::Builder& cb) {
+ BenchUtils::bench<x86::Builder>(code, arch, "[no-asm]", [](x86::Builder& cb) {
asmtest::generateOpcodes(cb.as<x86::Emitter>());
});
- BenchUtils::bench<x86::Builder>(code, archId, "[final]", [](x86::Builder& cb) {
+ BenchUtils::bench<x86::Builder>(code, arch, "[asm]", [](x86::Builder& cb) {
asmtest::generateOpcodes(cb.as<x86::Emitter>());
cb.finalize();
});
#endif
#ifndef ASMJIT_NO_COMPILER
- BenchUtils::bench<x86::Compiler>(code, archId, "[raw]", [](x86::Compiler& cc) {
+ BenchUtils::bench<x86::Compiler>(code, arch, "[no-asm]", [](x86::Compiler& cc) {
asmtest::generateAlphaBlend(cc);
});
- BenchUtils::bench<x86::Compiler>(code, archId, "[final]", [](x86::Compiler& cc) {
+ BenchUtils::bench<x86::Compiler>(code, arch, "[asm]", [](x86::Compiler& cc) {
asmtest::generateAlphaBlend(cc);
cc.finalize();
});
@@ -160,8 +164,8 @@ static void benchX86(uint32_t archId) noexcept {
int main() {
#ifdef ASMJIT_BUILD_X86
- benchX86(ArchInfo::kIdX86);
- benchX86(ArchInfo::kIdX64);
+ benchX86(Environment::kArchX86);
+ benchX86(Environment::kArchX64);
#endif
return 0;