Use complex load-extend instructions in optimize_complex_addresses; fixes #1186
This commit is contained in:
@@ -271,6 +271,42 @@ fn optimize_complex_addresses(pos: &mut EncCursor, inst: Inst, isa: &dyn TargetI
|
|||||||
.replace(inst)
|
.replace(inst)
|
||||||
.sload32_complex(info.flags, &args, info.offset);
|
.sload32_complex(info.flags, &args, info.offset);
|
||||||
}
|
}
|
||||||
|
Opcode::Uload8x8 => {
|
||||||
|
pos.func
|
||||||
|
.dfg
|
||||||
|
.replace(inst)
|
||||||
|
.uload8x8_complex(info.flags, &args, info.offset);
|
||||||
|
}
|
||||||
|
Opcode::Sload8x8 => {
|
||||||
|
pos.func
|
||||||
|
.dfg
|
||||||
|
.replace(inst)
|
||||||
|
.sload8x8_complex(info.flags, &args, info.offset);
|
||||||
|
}
|
||||||
|
Opcode::Uload16x4 => {
|
||||||
|
pos.func
|
||||||
|
.dfg
|
||||||
|
.replace(inst)
|
||||||
|
.uload16x4_complex(info.flags, &args, info.offset);
|
||||||
|
}
|
||||||
|
Opcode::Sload16x4 => {
|
||||||
|
pos.func
|
||||||
|
.dfg
|
||||||
|
.replace(inst)
|
||||||
|
.sload16x4_complex(info.flags, &args, info.offset);
|
||||||
|
}
|
||||||
|
Opcode::Uload32x2 => {
|
||||||
|
pos.func
|
||||||
|
.dfg
|
||||||
|
.replace(inst)
|
||||||
|
.uload32x2_complex(info.flags, &args, info.offset);
|
||||||
|
}
|
||||||
|
Opcode::Sload32x2 => {
|
||||||
|
pos.func
|
||||||
|
.dfg
|
||||||
|
.replace(inst)
|
||||||
|
.sload32x2_complex(info.flags, &args, info.offset);
|
||||||
|
}
|
||||||
Opcode::Store => {
|
Opcode::Store => {
|
||||||
pos.func.dfg.replace(inst).store_complex(
|
pos.func.dfg.replace(inst).store_complex(
|
||||||
info.flags,
|
info.flags,
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
use std::path::Path;
|
use std::path::Path;
|
||||||
use wasmtime::{Config, Engine, OptLevel, Store, Strategy};
|
use wasmtime::{Config, Engine, Store, Strategy};
|
||||||
use wasmtime_wast::WastContext;
|
use wasmtime_wast::WastContext;
|
||||||
|
|
||||||
include!(concat!(env!("OUT_DIR"), "/wast_testsuite_tests.rs"));
|
include!(concat!(env!("OUT_DIR"), "/wast_testsuite_tests.rs"));
|
||||||
@@ -28,11 +28,6 @@ fn run_wast(wast: &str, strategy: Strategy) -> anyhow::Result<()> {
|
|||||||
.strategy(strategy)?
|
.strategy(strategy)?
|
||||||
.cranelift_debug_verifier(true);
|
.cranelift_debug_verifier(true);
|
||||||
|
|
||||||
// FIXME: https://github.com/bytecodealliance/wasmtime/issues/1186
|
|
||||||
if simd {
|
|
||||||
cfg.cranelift_opt_level(OptLevel::None);
|
|
||||||
}
|
|
||||||
|
|
||||||
let store = Store::new(&Engine::new(&cfg));
|
let store = Store::new(&Engine::new(&cfg));
|
||||||
let mut wast_context = WastContext::new(store);
|
let mut wast_context = WastContext::new(store);
|
||||||
wast_context.register_spectest()?;
|
wast_context.register_spectest()?;
|
||||||
|
|||||||
Reference in New Issue
Block a user