Reduce arm64 Inst enum size

This reduces the size of the Inst enum from 112 bytes to 48 bytes.

Using DHAT on a regex-rs.wasm benchmark, `valgrind --tool=dhat clif-util compile --target aarch64`

The total number of allocated bytes, drops by around 170 MB.
At t-gmax drops by 3 MB.

Using `perf stat clif-util compile --target aarch64`, the instructions count dropped by 0.6%. Cache misses dropped by 6%. Cycles dropped by 2.3%.
This commit is contained in:
Joey Gouly
2020-05-14 15:45:55 +01:00
parent 5987cf5cda
commit f418b7a700
5 changed files with 41 additions and 31 deletions

View File

@@ -3,6 +3,7 @@ use crate::isa::aarch64::inst::*;
use crate::isa::test_utils;
use crate::settings;
use alloc::boxed::Box;
use alloc::vec::Vec;
#[test]
@@ -2112,9 +2113,9 @@ fn test_aarch64_binemit() {
insns.push((
Inst::Call {
dest: ExternalName::testcase("test0"),
uses: Set::empty(),
defs: Set::empty(),
dest: Box::new(ExternalName::testcase("test0")),
uses: Box::new(Set::empty()),
defs: Box::new(Set::empty()),
loc: SourceLoc::default(),
opcode: Opcode::Call,
},
@@ -2125,8 +2126,8 @@ fn test_aarch64_binemit() {
insns.push((
Inst::CallInd {
rn: xreg(10),
uses: Set::empty(),
defs: Set::empty(),
uses: Box::new(Set::empty()),
defs: Box::new(Set::empty()),
loc: SourceLoc::default(),
opcode: Opcode::CallIndirect,
},