diff --git a/crates/cranelift/src/func_environ/stack_switching/instructions.rs b/crates/cranelift/src/func_environ/stack_switching/instructions.rs index f4b77a6e0c89..8432b7b416fd 100644 --- a/crates/cranelift/src/func_environ/stack_switching/instructions.rs +++ b/crates/cranelift/src/func_environ/stack_switching/instructions.rs @@ -1,12 +1,12 @@ -use cranelift_codegen::ir::BlockArg; -use itertools::{Either, Itertools}; - +use crate::translate::set_block_params; use crate::trap::TranslateTrap; +use cranelift_codegen::ir::BlockArg; use cranelift_codegen::ir::condcodes::*; use cranelift_codegen::ir::types::*; use cranelift_codegen::ir::{self, MemFlagsData}; use cranelift_codegen::ir::{Block, BlockCall, InstBuilder, JumpTableData}; use cranelift_frontend::FunctionBuilder; +use itertools::{Either, Itertools}; use wasmtime_environ::{PtrSize, TagIndex, TypeIndex, WasmResult, WasmValType, wasm_unsupported}; fn control_context_size(triple: &target_lexicon::Triple) -> WasmResult { @@ -1522,23 +1522,21 @@ pub(crate) fn translate_resume<'a>( .collect(); let values = suspended_contref.values(env, builder); - let mut suspend_args: Vec = values - .load_data_entries(env, builder, ¶m_types) - .into_iter() - .map(|v| BlockArg::Value(v)) - .collect(); + let mut suspend_args: Vec = + values.load_data_entries(env, builder, ¶m_types); // At the suspend site, we store the suspend args in the the // `values` buffer of the VMContRef that was active at the time that // the suspend instruction was performed. - suspend_args.push(BlockArg::Value(suspended_contobj)); + suspend_args.push(suspended_contobj); // We clear the suspend args. This is mostly for consistency. Note // that we don't zero out the data buffer, we still need it for the values.clear(env, builder, false); - builder.ins().jump(target_block, &suspend_args); + set_block_params(env, builder, target_block, &suspend_args); + builder.ins().jump(target_block, &[]); } preamble_blocks diff --git a/crates/cranelift/src/translate/code_translator.rs b/crates/cranelift/src/translate/code_translator.rs index 1035afabfbc3..4424b185ada3 100644 --- a/crates/cranelift/src/translate/code_translator.rs +++ b/crates/cranelift/src/translate/code_translator.rs @@ -78,15 +78,15 @@ use crate::translate::TargetEnvironment; use crate::translate::environ::StructFieldsVec; use crate::translate::stack::{ControlStackFrame, ElseData}; use crate::translate::translation_utils::{ - block_with_params, blocktype_params_results, f32_translation, f64_translation, + block_with_params, blocktype_params_results, f32_translation, f64_translation, set_block_params, }; use crate::trap::TranslateTrap; use cranelift_codegen::ir::condcodes::{FloatCC, IntCC}; use cranelift_codegen::ir::immediates::Offset32; use cranelift_codegen::ir::{ self, AtomicRmwOp, ExceptionTag, InstBuilder, JumpTableData, MemFlagsData, Value, ValueLabel, + types::*, }; -use cranelift_codegen::ir::{BlockArg, types::*}; use cranelift_codegen::packed_option::ReservedValue; use cranelift_frontend::{FunctionBuilder, Variable}; use itertools::Itertools; @@ -128,7 +128,7 @@ pub fn translate_operator( log::trace!("Translating Wasm opcode: {op:?}"); if !environ.is_reachable() { - translate_unreachable_operator(validator, &op, builder, environ)?; + translate_unreachable_operator(&op, builder, environ)?; return Ok(()); } @@ -269,20 +269,22 @@ pub fn translate_operator( let (params, results) = blocktype_params_results(validator, *blockty)?; let loop_body = block_with_params(builder, params.clone(), environ)?; let next = block_with_params(builder, results.clone(), environ)?; - canonicalise_then_jump(builder, loop_body, environ.stacks.peekn(params.len())); + canonicalise_then_jump( + environ, + builder, + loop_body, + environ.stacks.peekn(params.len()), + ); environ .stacks .push_loop(loop_body, next, params.len(), results.len()); - // Pop the initial `Block` actuals and replace them with the `Block`'s - // params since control flow joins at the top of the loop. + // Pop the initial `Block` actuals and replace them with the loop + // header's parameters since control flow joins at the top of the + // loop. environ.stacks.popn(params.len()); - environ - .stacks - .stack - .extend_from_slice(builder.block_params(loop_body)); - builder.switch_to_block(loop_body); + push_block_params(environ, builder, loop_body); environ.translate_loop_header(builder)?; } Operator::If { blockty } => { @@ -302,6 +304,7 @@ pub fn translate_operator( // and go back and patch the jump. let destination = block_with_params(builder, results.clone(), environ)?; let branch_inst = canonicalise_brif( + environ, builder, val, next_block, @@ -320,15 +323,8 @@ pub fn translate_operator( // The `if` type signature is not valid without an `else` block, // so we eagerly allocate the `else` block here. let destination = block_with_params(builder, results.clone(), environ)?; - let else_block = block_with_params(builder, params.clone(), environ)?; - canonicalise_brif( - builder, - val, - next_block, - &[], - else_block, - environ.stacks.peekn(params.len()), - ); + let else_block = builder.create_block(); + canonicalise_brif(environ, builder, val, next_block, &[], else_block, &[]); builder.seal_block(else_block); (destination, ElseData::WithElse { else_block }) }; @@ -402,9 +398,9 @@ pub fn translate_operator( let (params, _results) = blocktype_params_results(validator, blocktype)?; debug_assert_eq!(params.len(), num_return_values); - let else_block = - block_with_params(builder, params.clone(), environ)?; + let else_block = builder.create_block(); canonicalise_then_jump( + environ, builder, destination, environ.stacks.peekn(params.len()), @@ -421,6 +417,7 @@ pub fn translate_operator( } ElseData::WithElse { else_block } => { canonicalise_then_jump( + environ, builder, destination, environ.stacks.peekn(num_return_values), @@ -459,9 +456,13 @@ pub fn translate_operator( let frame = environ.stacks.control_stack.pop().unwrap(); let next_block = frame.following_code(); let return_count = frame.num_return_values(); - let return_args = environ.stacks.peekn_mut(return_count); - canonicalise_then_jump(builder, next_block, return_args); + canonicalise_then_jump( + environ, + builder, + next_block, + environ.stacks.peekn(return_count), + ); // You might expect that if we just finished an `if` block that // didn't have a corresponding `else` block, then we would clean // up our duplicate set of parameters that we pushed earlier @@ -483,10 +484,7 @@ pub fn translate_operator( &mut environ.stacks.stack, &mut environ.stacks.stack_shape, ); - environ - .stacks - .stack - .extend_from_slice(builder.block_params(next_block)); + push_block_params(environ, builder, next_block); } /**************************** Branch instructions ********************************* * The branch instructions all have as arguments a target nesting level, which @@ -522,8 +520,12 @@ pub fn translate_operator( }; (return_count, frame.br_destination()) }; - let destination_args = environ.stacks.peekn_mut(return_count); - canonicalise_then_jump(builder, br_destination, destination_args); + canonicalise_then_jump( + environ, + builder, + br_destination, + environ.stacks.peekn(return_count), + ); environ.stacks.popn(return_count); environ.stacks.reachable = false; } @@ -607,8 +609,12 @@ pub fn translate_operator( frame.set_branched_to_exit(); frame.br_destination() }; - let destination_args = environ.stacks.peekn_mut(return_count); - canonicalise_then_jump(builder, real_dest_block, destination_args); + canonicalise_then_jump( + environ, + builder, + real_dest_block, + environ.stacks.peekn(return_count), + ); } environ.stacks.popn(return_count); } @@ -2641,7 +2647,15 @@ pub fn translate_operator( let is_null = environ.translate_ref_is_null(builder.cursor(), r, r_ty)?; let (br_destination, inputs) = translate_br_if_args(*relative_depth, environ); let else_block = builder.create_block(); - canonicalise_brif(builder, is_null, br_destination, inputs, else_block, &[]); + canonicalise_brif( + environ, + builder, + is_null, + br_destination, + &inputs, + else_block, + &[], + ); builder.seal_block(else_block); // The only predecessor is the current block. builder.switch_to_block(else_block); @@ -2660,10 +2674,17 @@ pub fn translate_operator( }; let r_ty = *r_ty; let (br_destination, inputs) = translate_br_if_args(*relative_depth, environ); - let inputs = inputs.to_vec(); let is_null = environ.translate_ref_is_null(builder.cursor(), r, r_ty)?; let else_block = builder.create_block(); - canonicalise_brif(builder, is_null, else_block, &[], br_destination, &inputs); + canonicalise_brif( + environ, + builder, + is_null, + else_block, + &[], + br_destination, + &inputs, + ); // In the null case, pop the ref environ.stacks.pop1(); @@ -3048,10 +3069,11 @@ pub fn translate_operator( let (cast_succeeds_block, inputs) = translate_br_if_args(*relative_depth, environ); let cast_fails_block = builder.create_block(); canonicalise_brif( + environ, builder, cast_is_okay, cast_succeeds_block, - inputs, + &inputs, cast_fails_block, &[ // NB: the `cast_fails_block` is dominated by the current @@ -3082,6 +3104,7 @@ pub fn translate_operator( let (cast_fails_block, inputs) = translate_br_if_args(*relative_depth, environ); let cast_succeeds_block = builder.create_block(); canonicalise_brif( + environ, builder, cast_is_okay, cast_succeeds_block, @@ -3090,7 +3113,7 @@ pub fn translate_operator( // block, and therefore doesn't need any block params. ], cast_fails_block, - inputs, + &inputs, ); // The only predecessor is the current block. @@ -3355,7 +3378,6 @@ pub fn translate_operator( /// are dropped but special ones like `End` or `Else` signal the potential end of the unreachable /// portion so the translation state must be updated accordingly. fn translate_unreachable_operator( - validator: &FuncValidator, op: &Operator, builder: &mut FunctionBuilder, environ: &mut FuncEnvironment<'_>, @@ -3390,7 +3412,6 @@ fn translate_unreachable_operator( ref else_data, head_is_reachable, ref mut consequent_ends_reachable, - blocktype, .. } => { debug_assert!(consequent_ends_reachable.is_none()); @@ -3405,9 +3426,7 @@ fn translate_unreachable_operator( branch_inst, placeholder, } => { - let (params, _results) = - blocktype_params_results(validator, blocktype)?; - let else_block = block_with_params(builder, params, environ)?; + let else_block = builder.create_block(); let frame = environ.stacks.control_stack.last().unwrap(); frame.truncate_value_stack_to_else_params( &mut environ.stacks.stack, @@ -3445,15 +3464,15 @@ fn translate_unreachable_operator( } } Operator::End => { - let value_stack = &mut environ.stacks.stack; - let stack_shape = &mut environ.stacks.stack_shape; - let control_stack = &mut environ.stacks.control_stack; - let frame = control_stack.pop().unwrap(); + let frame = environ.stacks.control_stack.pop().unwrap(); frame.restore_catch_handlers(&mut environ.stacks.handlers, builder); // Pop unused parameters from stack. - frame.truncate_value_stack_to_original_size(value_stack, stack_shape); + frame.truncate_value_stack_to_original_size( + &mut environ.stacks.stack, + &mut environ.stacks.stack_shape, + ); let reachable_anyway = match frame { // If it is a loop we also have to seal the body loop block @@ -3485,12 +3504,13 @@ fn translate_unreachable_operator( }; if frame.exit_is_branched_to() || reachable_anyway { - builder.switch_to_block(frame.following_code()); - builder.seal_block(frame.following_code()); + let next_block = frame.following_code(); + builder.switch_to_block(next_block); + builder.seal_block(next_block); // And add the return values of the block but only if the next block is reachable // (which corresponds to testing if the stack depth is 1) - value_stack.extend_from_slice(builder.block_params(frame.following_code())); + push_block_params(environ, builder, next_block); environ.stacks.reachable = true; } } @@ -4036,16 +4056,16 @@ fn translate_br_if( }); } - canonicalise_brif(builder, val, br_destination, inputs, next_block, &[]); + canonicalise_brif(env, builder, val, br_destination, &inputs, next_block, &[]); builder.seal_block(next_block); // The only predecessor is the current block. builder.switch_to_block(next_block); } -fn translate_br_if_args<'a>( +fn translate_br_if_args( relative_depth: u32, - env: &'a mut FuncEnvironment<'_>, -) -> (ir::Block, &'a mut [ir::Value]) { + env: &mut FuncEnvironment<'_>, +) -> (ir::Block, SmallVec<[ir::Value; 8]>) { let i = env.stacks.control_stack.len() - 1 - (relative_depth as usize); let (return_count, br_destination) = { let frame = &mut env.stacks.control_stack[i]; @@ -4059,7 +4079,10 @@ fn translate_br_if_args<'a>( }; (return_count, frame.br_destination()) }; - let inputs = env.stacks.peekn_mut(return_count); + // Copy the branch arguments off the operand stack into an owned buffer so + // that callers can subsequently borrow `env` (e.g. to look up the + // destination's parameter variables) without conflicting with this borrow. + let inputs = env.stacks.peekn(return_count).to_smallvec(); (br_destination, inputs) } @@ -4311,12 +4334,20 @@ fn is_non_canonical_v128(ty: ir::Type) -> bool { /// actually necessary, and if not, the original slice is returned. Otherwise the cast values /// are returned in a slice that belongs to the caller-supplied `SmallVec`. fn canonicalise_v128_values<'a>( - tmp_canonicalised: &'a mut SmallVec<[BlockArg; 16]>, + tmp_canonicalised: &'a mut SmallVec<[ir::Value; 16]>, builder: &mut FunctionBuilder, values: &'a [ir::Value], -) -> &'a [BlockArg] { +) -> &'a [ir::Value] { debug_assert!(tmp_canonicalised.is_empty()); - // Cast, and push the resulting `Value`s into `canonicalised`. + // If no value needs canonicalising, we can avoid any work and return the + // original slice unchanged. + if values + .iter() + .all(|v| !is_non_canonical_v128(builder.func.dfg.value_type(*v))) + { + return values; + } + // Otherwise cast as necessary, and push the resulting `Value`s into `canonicalised`. for v in values { let value = if is_non_canonical_v128(builder.func.dfg.value_type(*v)) { let mut flags = MemFlagsData::new(); @@ -4325,26 +4356,50 @@ fn canonicalise_v128_values<'a>( } else { *v }; - tmp_canonicalised.push(BlockArg::from(value)); + tmp_canonicalised.push(value); } tmp_canonicalised.as_slice() } +/// Recover the Wasm stack parameters of `block` and push them onto the operand +/// stack as we begin translating that block. +/// +/// The caller must have already switched to `block`. +/// +/// Every block whose Wasm parameters we recover this way (a Wasm control-flow +/// target or the function exit block) has associated parameter `Variable`s, so +/// we `use_var` each of them. +fn push_block_params( + environ: &mut FuncEnvironment<'_>, + builder: &mut FunctionBuilder, + block: ir::Block, +) { + debug_assert_eq!(builder.current_block(), Some(block)); + let vars = &environ.stacks.block_param_vars[block]; + for var in vars { + let val = builder.use_var(*var); + environ.stacks.stack.push(val); + } +} + /// Generate a `jump` instruction, but first cast all 128-bit vector values to I8X16 if they /// don't have that type. This is done in somewhat roundabout way so as to ensure that we /// almost never have to do any heap allocation. fn canonicalise_then_jump( + environ: &FuncEnvironment<'_>, builder: &mut FunctionBuilder, destination: ir::Block, params: &[ir::Value], ) -> ir::Inst { - let mut tmp_canonicalised = SmallVec::<[_; 16]>::new(); - let canonicalised = canonicalise_v128_values(&mut tmp_canonicalised, builder, params); - builder.ins().jump(destination, canonicalised) + let mut canonicalised = SmallVec::<[_; 16]>::new(); + let canonicalised = canonicalise_v128_values(&mut canonicalised, builder, params); + set_block_params(environ, builder, destination, canonicalised); + builder.ins().jump(destination, &[]) } -/// The same but for a `brif` instruction. +/// The same as `canonicalise_then_jump` but for a `brif` instruction. fn canonicalise_brif( + environ: &FuncEnvironment<'_>, builder: &mut FunctionBuilder, cond: ir::Value, block_then: ir::Block, @@ -4352,19 +4407,17 @@ fn canonicalise_brif( block_else: ir::Block, params_else: &[ir::Value], ) -> ir::Inst { - let mut tmp_canonicalised_then = SmallVec::<[_; 16]>::new(); + let mut canonicalised_then = SmallVec::<[_; 16]>::new(); let canonicalised_then = - canonicalise_v128_values(&mut tmp_canonicalised_then, builder, params_then); - let mut tmp_canonicalised_else = SmallVec::<[_; 16]>::new(); + canonicalise_v128_values(&mut canonicalised_then, builder, params_then); + set_block_params(environ, builder, block_then, canonicalised_then); + + let mut canonicalised_else = SmallVec::<[_; 16]>::new(); let canonicalised_else = - canonicalise_v128_values(&mut tmp_canonicalised_else, builder, params_else); - builder.ins().brif( - cond, - block_then, - canonicalised_then, - block_else, - canonicalised_else, - ) + canonicalise_v128_values(&mut canonicalised_else, builder, params_else); + set_block_params(environ, builder, block_else, canonicalised_else); + + builder.ins().brif(cond, block_then, &[], block_else, &[]) } /// A helper for popping and bitcasting a single value; since SIMD values can lose their type by @@ -4501,14 +4554,18 @@ fn create_catch_block( // are compiling a `*Ref` variant. let (exn_ref_ty, needs_stack_map) = environ.reference_type(WasmHeapType::Exn); - let (exn_payload_wasm_ty, exn_payload_ty) = match environ.pointer_type().bits() { - 32 => (wasmparser::ValType::I32, I32), - 64 => (wasmparser::ValType::I64, I64), + let exn_payload_ty = match environ.pointer_type().bits() { + 32 => I32, + 64 => I64, _ => panic!("Unsupported pointer width"), }; - let block = block_with_params(builder, [exn_payload_wasm_ty], environ)?; + // Unlike Wasm control-flow targets, a catch block's single parameter is a + // real CLIF block parameter: it is filled in by the exception ABI (the + // `try_call`'s exception table), not by an ordinary branch. So create it + // directly rather than going through `block_with_params`. + let block = builder.create_block(); + let exn_ref = builder.append_block_param(block, exn_payload_ty); builder.switch_to_block(block); - let exn_ref = builder.func.dfg.block_params(block)[0]; debug_assert!(exn_ref_ty.bits() <= exn_payload_ty.bits()); let exn_ref = if exn_ref_ty.bits() < exn_payload_ty.bits() { builder.ins().ireduce(exn_ref_ty, exn_ref) @@ -4543,7 +4600,8 @@ fn create_catch_block( let i = environ.stacks.control_stack.len() - 1 - (label as usize); let frame = &mut environ.stacks.control_stack[i]; frame.set_branched_to_exit(); - canonicalise_then_jump(builder, frame.br_destination(), ¶ms); + let br_destination = frame.br_destination(); + canonicalise_then_jump(environ, builder, br_destination, ¶ms); Ok(block) } diff --git a/crates/cranelift/src/translate/func_translator.rs b/crates/cranelift/src/translate/func_translator.rs index 7fba0b1c4199..f01647bfd976 100644 --- a/crates/cranelift/src/translate/func_translator.rs +++ b/crates/cranelift/src/translate/func_translator.rs @@ -11,7 +11,8 @@ use crate::translate::translation_utils::get_vmctx_value_label; use cranelift_codegen::entity::EntityRef; use cranelift_codegen::ir::{self, Block, InstBuilder, ValueLabel}; use cranelift_codegen::timing; -use cranelift_frontend::{FunctionBuilder, FunctionBuilderContext}; +use cranelift_frontend::{FunctionBuilder, FunctionBuilderContext, Variable}; +use smallvec::SmallVec; use wasmparser::{BinaryReader, FuncValidator, FunctionBody, OperatorsReader, WasmModuleResources}; use wasmtime_environ::{TypeConvert, WasmResult}; @@ -84,12 +85,34 @@ impl FuncTranslator { // Set up the translation state with a single pushed control block representing the whole // function and its return values. let exit_block = builder.create_block(); - builder.append_block_params_for_function_returns(exit_block); environ .stacks .initialize(&builder.func.signature, exit_block); parse_local_decls(&mut reader, &mut builder, num_params, environ, validator)?; + + // Represent the function's return values as `Variable`s, exactly like + // Wasm block parameters, rather than as real CLIF block parameters. + // + // Note this must happen *after* `parse_local_decls`: the Wasm locals' + // `Variable`s must be indexed contiguously after the parameters, so we + // can only declare these additional variables once all locals exist. + let return_types: SmallVec<[ir::Type; 6]> = builder + .func + .signature + .returns + .iter() + .map(|ret| ret.value_type) + .collect(); + let return_vars: SmallVec<[Variable; 6]> = return_types + .iter() + .map(|ty| builder.declare_var(*ty)) + .collect(); + environ + .stacks + .block_param_vars + .insert(exit_block, return_vars); + parse_function_body(validator, reader, &mut builder, environ)?; builder.finalize(environ.target_config()); diff --git a/crates/cranelift/src/translate/stack.rs b/crates/cranelift/src/translate/stack.rs index 95250df682f7..8fb6a676963d 100644 --- a/crates/cranelift/src/translate/stack.rs +++ b/crates/cranelift/src/translate/stack.rs @@ -5,7 +5,9 @@ //! a single function. use cranelift_codegen::ir::{self, Block, ExceptionTag, Inst, Value}; -use cranelift_frontend::FunctionBuilder; +use cranelift_entity::SecondaryMap; +use cranelift_frontend::{FunctionBuilder, Variable}; +use smallvec::SmallVec; use std::vec::Vec; use wasmtime_environ::FrameStackShape; @@ -267,6 +269,24 @@ pub struct FuncTranslationStacks { pub(crate) stack_shape: Vec, /// A stack of active control flow operations at this point in the input wasm function. pub(crate) control_stack: Vec, + /// Maps a CLIF block representing a Wasm control-flow target to the + /// `Variable`s that hold its Wasm stack parameters. + /// + /// Rather than giving these blocks CLIF block parameters and passing the + /// Wasm operand stack values as block arguments when branching to them, we + /// represent each Wasm stack parameter as a `Variable`. When branching to + /// such a block we `def_var` the variables and emit an argument-less + /// branch; when we begin translating the block we `use_var` each variable + /// and push the results onto the operand stack. This lets + /// `cranelift-frontend`'s SSA construction decide whether a real block + /// parameter is actually needed (i.e. only when multiple predecessors pass + /// differing values) instead of pessimistically creating one for every + /// Wasm block. + /// + /// The only blocks with real CLIF block parameters are the entry block + /// (function parameters) and `try_table` catch blocks (the exception + /// payload, filled in by the exception ABI). + pub(crate) block_param_vars: SecondaryMap>, /// Exception handler state, updated as we enter and exit /// `try_table` scopes and attached to each call that we make. pub(crate) handlers: HandlerState, @@ -291,6 +311,7 @@ impl FuncTranslationStacks { stack: Vec::new(), stack_shape: Vec::new(), control_stack: Vec::new(), + block_param_vars: SecondaryMap::new(), handlers: HandlerState::default(), reachable: true, } @@ -301,6 +322,7 @@ impl FuncTranslationStacks { debug_assert!(self.stack_shape.is_empty()); debug_assert!(self.control_stack.is_empty()); debug_assert!(self.handlers.is_empty()); + self.block_param_vars.clear(); self.reachable = true; } @@ -432,13 +454,6 @@ impl FuncTranslationStacks { &self.stack[self.stack.len() - n..] } - /// Peek at the top `n` values on the stack in the order they were pushed. - pub(crate) fn peekn_mut(&mut self, n: usize) -> &mut [Value] { - self.ensure_length_is_at_least(n); - let len = self.stack.len(); - &mut self.stack[len - n..] - } - fn push_block_impl( &mut self, following_code: Block, diff --git a/crates/cranelift/src/translate/translation_utils.rs b/crates/cranelift/src/translate/translation_utils.rs index d7595911bab9..d6f1ee0495aa 100644 --- a/crates/cranelift/src/translate/translation_utils.rs +++ b/crates/cranelift/src/translate/translation_utils.rs @@ -1,10 +1,12 @@ //! Helper functions and structures for the translation. +use crate::func_environ::FuncEnvironment; use crate::translate::environ::TargetEnvironment; use core::u32; use cranelift_codegen::ir; use cranelift_frontend::FunctionBuilder; +use smallvec::SmallVec; use wasmparser::{FuncValidator, WasmModuleResources}; -use wasmtime_environ::WasmResult; +use wasmtime_environ::{TypeConvert, WasmResult}; /// Get the parameter and result types for the given Wasm blocktype. pub fn blocktype_params_results<'a, T>( @@ -41,40 +43,55 @@ where }); } -/// Create a `Block` with the given Wasm parameters. -pub fn block_with_params( +/// Set the parameter `Variable`s of `destination` to `values` ahead of an +/// argument-less branch to that block. +pub fn set_block_params( + environ: &FuncEnvironment<'_>, + builder: &mut FunctionBuilder, + destination: ir::Block, + values: &[ir::Value], +) { + let vars = &environ.stacks.block_param_vars[destination]; + debug_assert_eq!(vars.len(), values.len()); + for (var, val) in vars.iter().zip(values) { + builder.def_var(*var, *val); + } +} + +/// Create a `Block` representing a Wasm control-flow target with the given Wasm +/// stack parameters. +/// +/// Rather than giving the block CLIF block parameters, we create a +/// `cranelift_frontend::Variable` for each Wasm stack parameter and record the +/// block-to-variables mapping in `environ.stacks.block_param_vars`. See the +/// `block_param_vars` docs for more details. +pub fn block_with_params( builder: &mut FunctionBuilder, params: impl IntoIterator, - environ: &PE, + environ: &mut FuncEnvironment<'_>, ) -> WasmResult { let block = builder.create_block(); + let mut vars = SmallVec::<[_; 6]>::new(); for ty in params { - match ty { - wasmparser::ValType::I32 => { - builder.append_block_param(block, ir::types::I32); - } - wasmparser::ValType::I64 => { - builder.append_block_param(block, ir::types::I64); - } - wasmparser::ValType::F32 => { - builder.append_block_param(block, ir::types::F32); - } - wasmparser::ValType::F64 => { - builder.append_block_param(block, ir::types::F64); - } + let (clif_ty, needs_stack_map) = match ty { + wasmparser::ValType::I32 => (ir::types::I32, false), + wasmparser::ValType::I64 => (ir::types::I64, false), + wasmparser::ValType::F32 => (ir::types::F32, false), + wasmparser::ValType::F64 => (ir::types::F64, false), wasmparser::ValType::Ref(rt) => { let hty = environ.convert_heap_type(rt.heap_type())?; - let (ty, needs_stack_map) = environ.reference_type(hty); - let val = builder.append_block_param(block, ty); - if needs_stack_map { - builder.declare_value_needs_stack_map(val); - } - } - wasmparser::ValType::V128 => { - builder.append_block_param(block, ir::types::I8X16); + environ.reference_type(hty) } + wasmparser::ValType::V128 => (ir::types::I8X16, false), + }; + let var = builder.declare_var(clif_ty); + if needs_stack_map { + builder.declare_var_needs_stack_map(var); } + vars.push(var); } + let old = environ.stacks.block_param_vars.insert(block, vars); + debug_assert!(old.is_none()); Ok(block) } diff --git a/tests/disas/alias-region-globals.wat b/tests/disas/alias-region-globals.wat index 8f55d34dcc8c..6991348a880d 100644 --- a/tests/disas/alias-region-globals.wat +++ b/tests/disas/alias-region-globals.wat @@ -26,8 +26,8 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i32): -;; @0039 v4 = load.i64 notrap aligned readonly can_move region2 v0+48 -;; @0039 store notrap aligned region3 v2, v4 +;; @0039 v3 = load.i64 notrap aligned readonly can_move region2 v0+48 +;; @0039 store notrap aligned region3 v2, v3 ;; @003d store notrap aligned region4 v2, v0+80 ;; @0041 jump block1 ;; diff --git a/tests/disas/alias-region-memories.wat b/tests/disas/alias-region-memories.wat index d596c93f71e5..dacabc365836 100644 --- a/tests/disas/alias-region-memories.wat +++ b/tests/disas/alias-region-memories.wat @@ -28,14 +28,14 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i32, v3: i32): -;; @003b v6 = load.i64 notrap aligned readonly can_move region2 v0+48 -;; @003b v7 = load.i64 notrap aligned readonly can_move region3 v6 -;; @003b v5 = uextend.i64 v2 -;; @003b v8 = iadd v7, v5 -;; @003b store little region5 v3, v8 -;; @0042 v10 = load.i64 notrap aligned readonly can_move region3 v0+80 -;; @0042 v11 = iadd v10, v5 -;; @0042 store little region6 v3, v11 +;; @003b v5 = load.i64 notrap aligned readonly can_move region2 v0+48 +;; @003b v6 = load.i64 notrap aligned readonly can_move region3 v5 +;; @003b v4 = uextend.i64 v2 +;; @003b v7 = iadd v6, v4 +;; @003b store little region5 v3, v7 +;; @0042 v9 = load.i64 notrap aligned readonly can_move region3 v0+80 +;; @0042 v10 = iadd v9, v4 +;; @0042 store little region6 v3, v10 ;; @004b jump block1 ;; ;; block1: diff --git a/tests/disas/alias-region-tables.wat b/tests/disas/alias-region-tables.wat index 94e03b5cea57..89bdef84eb2c 100644 --- a/tests/disas/alias-region-tables.wat +++ b/tests/disas/alias-region-tables.wat @@ -33,47 +33,47 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i32, v3: i64): -;; @0043 v5 = load.i64 notrap aligned readonly can_move region2 v0+48 -;; @0043 v6 = load.i64 notrap aligned region4 v5+8 -;; @0043 v11 = load.i64 notrap aligned region3 v5 -;; @0043 v17 = iconst.i64 1 -;; @0043 v18 = bor v3, v17 ; v17 = 1 -;; @0043 v7 = ireduce.i32 v6 -;; @0043 v8 = icmp uge v2, v7 -;; @0043 v15 = iconst.i64 0 -;; @0043 v9 = uextend.i64 v2 -;; @0043 v12 = iconst.i64 3 -;; @0043 v13 = ishl v9, v12 ; v12 = 3 -;; @0043 v14 = iadd v11, v13 -;; @0043 v16 = select_spectre_guard v8, v15, v14 ; v15 = 0 -;; @0043 store user6 aligned region5 v18, v16 -;; @0049 v19 = load.i64 notrap aligned region4 v0+80 -;; @0049 v23 = load.i64 notrap aligned region3 v0+72 -;; @0049 v20 = ireduce.i32 v19 -;; @0049 v21 = icmp uge v2, v20 -;; @0049 v26 = iadd v23, v13 -;; @0049 v28 = select_spectre_guard v21, v15, v26 ; v15 = 0 -;; @0049 store user6 aligned region6 v18, v28 -;; @004d v44 = iconst.i64 -2 -;; @004d v45 = band v18, v44 ; v44 = -2 -;; @004d brif v18, block3(v45), block2 +;; @0043 v4 = load.i64 notrap aligned readonly can_move region2 v0+48 +;; @0043 v5 = load.i64 notrap aligned region4 v4+8 +;; @0043 v10 = load.i64 notrap aligned region3 v4 +;; @0043 v16 = iconst.i64 1 +;; @0043 v17 = bor v3, v16 ; v16 = 1 +;; @0043 v6 = ireduce.i32 v5 +;; @0043 v7 = icmp uge v2, v6 +;; @0043 v14 = iconst.i64 0 +;; @0043 v8 = uextend.i64 v2 +;; @0043 v11 = iconst.i64 3 +;; @0043 v12 = ishl v8, v11 ; v11 = 3 +;; @0043 v13 = iadd v10, v12 +;; @0043 v15 = select_spectre_guard v7, v14, v13 ; v14 = 0 +;; @0043 store user6 aligned region5 v17, v15 +;; @0049 v18 = load.i64 notrap aligned region4 v0+80 +;; @0049 v22 = load.i64 notrap aligned region3 v0+72 +;; @0049 v19 = ireduce.i32 v18 +;; @0049 v20 = icmp uge v2, v19 +;; @0049 v25 = iadd v22, v12 +;; @0049 v27 = select_spectre_guard v20, v14, v25 ; v14 = 0 +;; @0049 store user6 aligned region6 v17, v27 +;; @004d v43 = iconst.i64 -2 +;; @004d v44 = band v17, v43 ; v43 = -2 +;; @004d brif v17, block3(v44), block2 ;; ;; block2 cold: -;; @004d v47 = iconst.i32 0 -;; @004d v49 = call fn0(v0, v47, v9) ; v47 = 0 -;; @004d jump block3(v49) +;; @004d v46 = iconst.i32 0 +;; @004d v48 = call fn0(v0, v46, v8) ; v46 = 0 +;; @004d jump block3(v48) ;; -;; block3(v46: i64): -;; @004d v52 = load.i32 user7 aligned readonly v46+16 -;; @004d v50 = load.i64 notrap aligned readonly can_move region7 v0+40 -;; @004d v51 = load.i32 notrap aligned readonly can_move v50 -;; @004d v53 = icmp eq v52, v51 -;; @004d trapz v53, user8 -;; @004d v55 = load.i64 notrap aligned readonly v46+8 -;; @004d v56 = load.i64 notrap aligned readonly v46+24 -;; @004d v57 = call_indirect sig0, v55(v56, v0) +;; block3(v45: i64): +;; @004d v51 = load.i32 user7 aligned readonly v45+16 +;; @004d v49 = load.i64 notrap aligned readonly can_move region7 v0+40 +;; @004d v50 = load.i32 notrap aligned readonly can_move v49 +;; @004d v52 = icmp eq v51, v50 +;; @004d trapz v52, user8 +;; @004d v54 = load.i64 notrap aligned readonly v45+8 +;; @004d v55 = load.i64 notrap aligned readonly v45+24 +;; @004d v56 = call_indirect sig0, v54(v55, v0) ;; @0050 jump block1 ;; ;; block1: -;; @0050 return v57 +;; @0050 return v56 ;; } diff --git a/tests/disas/basic-wat-test.wat b/tests/disas/basic-wat-test.wat index 0003c3a87e78..ddf00c5a56b3 100644 --- a/tests/disas/basic-wat-test.wat +++ b/tests/disas/basic-wat-test.wat @@ -21,17 +21,17 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i32, v3: i32): -;; @0021 v5 = uextend.i64 v2 -;; @0021 v6 = load.i64 notrap aligned readonly can_move region2 v0+56 -;; @0021 v7 = iadd v6, v5 -;; @0021 v8 = load.i32 little region4 v7 -;; @0026 v9 = uextend.i64 v3 -;; @0026 v10 = load.i64 notrap aligned readonly can_move region2 v0+56 -;; @0026 v11 = iadd v10, v9 -;; @0026 v12 = load.i32 little region4 v11 -;; @0029 v13 = iadd v8, v12 +;; @0021 v4 = uextend.i64 v2 +;; @0021 v5 = load.i64 notrap aligned readonly can_move region2 v0+56 +;; @0021 v6 = iadd v5, v4 +;; @0021 v7 = load.i32 little region4 v6 +;; @0026 v8 = uextend.i64 v3 +;; @0026 v9 = load.i64 notrap aligned readonly can_move region2 v0+56 +;; @0026 v10 = iadd v9, v8 +;; @0026 v11 = load.i32 little region4 v10 +;; @0029 v12 = iadd v7, v11 ;; @002a jump block1 ;; ;; block1: -;; @002a return v13 +;; @002a return v12 ;; } diff --git a/tests/disas/block-params-br_if-single-pred.wat b/tests/disas/block-params-br_if-single-pred.wat new file mode 100644 index 000000000000..27175747ed7a --- /dev/null +++ b/tests/disas/block-params-br_if-single-pred.wat @@ -0,0 +1,61 @@ +;;! target = "x86_64" + +;; A `br_if` to a block whose only reachable predecessor is that `br_if` (the +;; fall-through path ends in `unreachable`) does not need block parameters for +;; the branched-with values. + +(module + (import "" "f" (func $f (result i32))) + (import "" "g" (func $g (param i32 i32))) + (import "" "h" (func $h (param i32 i32))) + (func + block (result i32 i32) + i32.const 1 + i32.const 2 + call $f + br_if 0 + call $g + unreachable + end + call $h + ) +) +;; function u0:0(i64 vmctx, i64) tail { +;; region0 = 8 "VMContext+0x8" +;; region1 = 268435480 "VMStoreContext+0x18" +;; region2 = 72 "VMContext+0x48" +;; region3 = 56 "VMContext+0x38" +;; region4 = 104 "VMContext+0x68" +;; region5 = 88 "VMContext+0x58" +;; region6 = 136 "VMContext+0x88" +;; region7 = 120 "VMContext+0x78" +;; gv0 = vmctx +;; gv1 = load.i64 notrap aligned readonly can_move region0 gv0+8 +;; gv2 = load.i64 notrap aligned region1 gv1+24 +;; sig0 = (i64 vmctx, i64) -> i32 tail +;; sig1 = (i64 vmctx, i64, i32, i32) tail +;; stack_limit = gv2 +;; +;; block0(v0: i64, v1: i64): +;; @0039 v2 = iconst.i32 1 +;; @003b v3 = iconst.i32 2 +;; @003d v4 = load.i64 notrap aligned readonly can_move region2 v0+72 +;; @003d v5 = load.i64 notrap aligned readonly can_move region3 v0+56 +;; @003d v6 = call_indirect sig0, v5(v4, v0) +;; @003f brif v6, block2, block3 +;; +;; block3: +;; @0041 v7 = load.i64 notrap aligned readonly can_move region4 v0+104 +;; @0041 v8 = load.i64 notrap aligned readonly can_move region5 v0+88 +;; @0041 call_indirect sig1, v8(v7, v0, v2, v3) ; v2 = 1, v3 = 2 +;; @0043 trap user12 +;; +;; block2: +;; @0045 v9 = load.i64 notrap aligned readonly can_move region6 v0+136 +;; @0045 v10 = load.i64 notrap aligned readonly can_move region7 v0+120 +;; @0045 call_indirect sig1, v10(v9, v0, v2, v3) ; v2 = 1, v3 = 2 +;; @0047 jump block1 +;; +;; block1: +;; @0047 return +;; } diff --git a/tests/disas/block-params-if-else-same-values.wat b/tests/disas/block-params-if-else-same-values.wat new file mode 100644 index 000000000000..39089eebfaad --- /dev/null +++ b/tests/disas/block-params-if-else-same-values.wat @@ -0,0 +1,56 @@ +;;! target = "x86_64" + +;; The control-flow join after an if/else diamond has two predecessors, but when +;; both the consequent and the alternative pass the same values, no block +;; parameter is needed. + +(module + (import "" "f" (func $f)) + (import "" "g" (func $g)) + (func (param i32 i32 i32) (result i32 i32) + local.get 0 + if (result i32 i32) + call $f + local.get 1 + local.get 2 + else + call $g + local.get 1 + local.get 2 + end + ) +) +;; function u0:0(i64 vmctx, i64, i32, i32, i32) -> i32, i32 tail { +;; region0 = 8 "VMContext+0x8" +;; region1 = 268435480 "VMStoreContext+0x18" +;; region2 = 72 "VMContext+0x48" +;; region3 = 56 "VMContext+0x38" +;; region4 = 104 "VMContext+0x68" +;; region5 = 88 "VMContext+0x58" +;; gv0 = vmctx +;; gv1 = load.i64 notrap aligned readonly can_move region0 gv0+8 +;; gv2 = load.i64 notrap aligned region1 gv1+24 +;; sig0 = (i64 vmctx, i64) tail +;; stack_limit = gv2 +;; +;; block0(v0: i64, v1: i64, v2: i32, v3: i32, v4: i32): +;; @0033 brif v2, block2, block4 +;; +;; block2: +;; @0035 v5 = load.i64 notrap aligned readonly can_move region2 v0+72 +;; @0035 v6 = load.i64 notrap aligned readonly can_move region3 v0+56 +;; @0035 call_indirect sig0, v6(v5, v0) +;; @003b jump block3 +;; +;; block4: +;; @003c v7 = load.i64 notrap aligned readonly can_move region4 v0+104 +;; @003c v8 = load.i64 notrap aligned readonly can_move region5 v0+88 +;; @003c call_indirect sig0, v8(v7, v0) +;; @0042 jump block3 +;; +;; block3: +;; @0043 jump block1 +;; +;; block1: +;; @0043 return v3, v4 +;; } diff --git a/tests/disas/block-params-loop-single-iteration.wat b/tests/disas/block-params-loop-single-iteration.wat new file mode 100644 index 000000000000..5ad02e6391e5 --- /dev/null +++ b/tests/disas/block-params-loop-single-iteration.wat @@ -0,0 +1,37 @@ +;;! target = "x86_64" + +;; A `loop` that never branches back to the loop header only ever runs a single +;; iteration, so its header block has just one predecessor and should have no +;; block parameters. + +(module + (func (param i32) (result i32) + local.get 0 + (loop (param i32) (result i32) + i32.const 1 + i32.add + ) + ) +) +;; function u0:0(i64 vmctx, i64, i32) -> i32 tail { +;; region0 = 8 "VMContext+0x8" +;; region1 = 268435480 "VMStoreContext+0x18" +;; gv0 = vmctx +;; gv1 = load.i64 notrap aligned readonly can_move region0 gv0+8 +;; gv2 = load.i64 notrap aligned region1 gv1+24 +;; stack_limit = gv2 +;; +;; block0(v0: i64, v1: i64, v2: i32): +;; @001b jump block2 +;; +;; block2: +;; @001d v4 = iconst.i32 1 +;; @001f v5 = iadd.i32 v2, v4 ; v4 = 1 +;; @0020 jump block3 +;; +;; block3: +;; @0021 jump block1 +;; +;; block1: +;; @0021 return v5 +;; } diff --git a/tests/disas/br_table.wat b/tests/disas/br_table.wat index 2aadd71d0e9b..99ac505a16d8 100644 --- a/tests/disas/br_table.wat +++ b/tests/disas/br_table.wat @@ -40,9 +40,9 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64): -;; @0021 v6 = iconst.i32 42 -;; @0023 v7 = iconst.i32 0 -;; @0025 br_table v7, block8, [block5, block6, block7] ; v7 = 0 +;; @0021 v2 = iconst.i32 42 +;; @0023 v3 = iconst.i32 0 +;; @0025 br_table v3, block8, [block5, block6, block7] ; v3 = 0 ;; ;; block5: ;; @0025 jump block4 @@ -66,7 +66,7 @@ ;; @002e jump block1 ;; ;; block1: -;; @002e return v6 ; v6 = 42 +;; @002e return v2 ; v2 = 42 ;; } ;; ;; function u0:1(i64 vmctx, i64) -> i32 tail { @@ -78,9 +78,9 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64): -;; @0037 v6 = iconst.i32 42 -;; @0039 v7 = iconst.i32 0 -;; @003b br_table v7, block8, [block5, block6, block7] ; v7 = 0 +;; @0037 v2 = iconst.i32 42 +;; @0039 v3 = iconst.i32 0 +;; @003b br_table v3, block8, [block5, block6, block7] ; v3 = 0 ;; ;; block5: ;; @003b jump block1 @@ -104,7 +104,7 @@ ;; @0044 jump block1 ;; ;; block1: -;; @0044 return v6 ; v6 = 42 +;; @0044 return v2 ; v2 = 42 ;; } ;; ;; function u0:2(i64 vmctx, i64) -> i32 tail { @@ -116,9 +116,9 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64): -;; @0049 v4 = iconst.i32 42 -;; @004b v5 = iconst.i32 0 -;; @004d br_table v5, block4, [block3, block3, block4] ; v5 = 0 +;; @0049 v2 = iconst.i32 42 +;; @004b v3 = iconst.i32 0 +;; @004d br_table v3, block4, [block3, block3, block4] ; v3 = 0 ;; ;; block3: ;; @004d jump block2 @@ -130,7 +130,7 @@ ;; @0054 jump block1 ;; ;; block1: -;; @0054 return v4 ; v4 = 42 +;; @0054 return v2 ; v2 = 42 ;; } ;; ;; function u0:3(i64 vmctx, i64) -> i32 tail { @@ -142,9 +142,9 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64): -;; @0059 v4 = iconst.i32 42 -;; @005b v5 = iconst.i32 0 -;; @005d br_table v5, block4, [block3, block3, block4] ; v5 = 0 +;; @0059 v2 = iconst.i32 42 +;; @005b v3 = iconst.i32 0 +;; @005d br_table v3, block4, [block3, block3, block4] ; v3 = 0 ;; ;; block3: ;; @005d jump block1 @@ -156,5 +156,5 @@ ;; @0064 jump block1 ;; ;; block1: -;; @0064 return v4 ; v4 = 42 +;; @0064 return v2 ; v2 = 42 ;; } diff --git a/tests/disas/branch-hinting-disabled.wat b/tests/disas/branch-hinting-disabled.wat index 4435a37bc017..59c89ca47b96 100644 --- a/tests/disas/branch-hinting-disabled.wat +++ b/tests/disas/branch-hinting-disabled.wat @@ -39,18 +39,18 @@ ;; @0043 brif v2, block2, block4 ;; ;; block2: -;; @0045 v5 = iconst.i32 1 -;; @0047 jump block3(v5) ; v5 = 1 +;; @0045 v3 = iconst.i32 1 +;; @0047 jump block3(v3) ; v3 = 1 ;; ;; block4: -;; @0048 v6 = iconst.i32 2 -;; @004a jump block3(v6) ; v6 = 2 +;; @0048 v4 = iconst.i32 2 +;; @004a jump block3(v4) ; v4 = 2 ;; -;; block3(v4: i32): -;; @004b jump block1(v4) +;; block3(v5: i32): +;; @004b jump block1 ;; -;; block1(v3: i32): -;; @004b return v3 +;; block1: +;; @004b return v5 ;; } ;; ;; function u0:1(i64 vmctx, i64, i32) -> i32 tail { @@ -65,13 +65,13 @@ ;; @0052 brif v2, block2, block3 ;; ;; block3: -;; @0054 v4 = iconst.i32 1 -;; @0056 return v4 ; v4 = 1 +;; @0054 v3 = iconst.i32 1 +;; @0056 return v3 ; v3 = 1 ;; ;; block2: ;; @005a jump block1 ;; ;; block1: -;; @0058 v5 = iconst.i32 2 -;; @005a return v5 ; v5 = 2 +;; @0058 v4 = iconst.i32 2 +;; @005a return v4 ; v4 = 2 ;; } diff --git a/tests/disas/branch-hinting.wat b/tests/disas/branch-hinting.wat index e92ad164460b..64332244644d 100644 --- a/tests/disas/branch-hinting.wat +++ b/tests/disas/branch-hinting.wat @@ -84,15 +84,15 @@ ;; @0063 brif v2, block2, block3 ;; ;; block3: -;; @0065 v4 = iconst.i32 1 -;; @0067 return v4 ; v4 = 1 +;; @0065 v3 = iconst.i32 1 +;; @0067 return v3 ; v3 = 1 ;; ;; block2 cold: ;; @006b jump block1 ;; ;; block1: -;; @0069 v5 = iconst.i32 2 -;; @006b return v5 ; v5 = 2 +;; @0069 v4 = iconst.i32 2 +;; @006b return v4 ; v4 = 2 ;; } ;; ;; function u0:1(i64 vmctx, i64, i32) -> i32 tail { @@ -107,15 +107,15 @@ ;; @0072 brif v2, block2, block3 ;; ;; block3 cold: -;; @0074 v4 = iconst.i32 1 -;; @0076 return v4 ; v4 = 1 +;; @0074 v3 = iconst.i32 1 +;; @0076 return v3 ; v3 = 1 ;; ;; block2: ;; @007a jump block1 ;; ;; block1: -;; @0078 v5 = iconst.i32 2 -;; @007a return v5 ; v5 = 2 +;; @0078 v4 = iconst.i32 2 +;; @007a return v4 ; v4 = 2 ;; } ;; ;; function u0:2(i64 vmctx, i64, i32) -> i32 tail { @@ -130,18 +130,18 @@ ;; @007f brif v2, block2, block4 ;; ;; block2 cold: -;; @0081 v5 = iconst.i32 1 -;; @0083 jump block3(v5) ; v5 = 1 +;; @0081 v3 = iconst.i32 1 +;; @0083 jump block3(v3) ; v3 = 1 ;; ;; block4: -;; @0084 v6 = iconst.i32 2 -;; @0086 jump block3(v6) ; v6 = 2 +;; @0084 v4 = iconst.i32 2 +;; @0086 jump block3(v4) ; v4 = 2 ;; -;; block3(v4: i32): -;; @0087 jump block1(v4) +;; block3(v5: i32): +;; @0087 jump block1 ;; -;; block1(v3: i32): -;; @0087 return v3 +;; block1: +;; @0087 return v5 ;; } ;; ;; function u0:3(i64 vmctx, i64, i32) -> i32 tail { @@ -156,18 +156,18 @@ ;; @008c brif v2, block2, block4 ;; ;; block2: -;; @008e v5 = iconst.i32 1 -;; @0090 jump block3(v5) ; v5 = 1 +;; @008e v3 = iconst.i32 1 +;; @0090 jump block3(v3) ; v3 = 1 ;; ;; block4 cold: -;; @0091 v6 = iconst.i32 2 -;; @0093 jump block3(v6) ; v6 = 2 +;; @0091 v4 = iconst.i32 2 +;; @0093 jump block3(v4) ; v4 = 2 ;; -;; block3(v4: i32): -;; @0094 jump block1(v4) +;; block3(v5: i32): +;; @0094 jump block1 ;; -;; block1(v3: i32): -;; @0094 return v3 +;; block1: +;; @0094 return v5 ;; } ;; ;; function u0:4(i64 vmctx, i64, i32) tail { diff --git a/tests/disas/byteswap.wat b/tests/disas/byteswap.wat index b8232981ecae..7d7e87dae4bf 100644 --- a/tests/disas/byteswap.wat +++ b/tests/disas/byteswap.wat @@ -83,8 +83,8 @@ ;; @0057 jump block1 ;; ;; block1: -;; v19 = bswap.i32 v2 -;; @0057 return v19 +;; v18 = bswap.i32 v2 +;; @0057 return v18 ;; } ;; ;; function u0:1(i64 vmctx, i64, i64) -> i64 tail { @@ -99,6 +99,6 @@ ;; @00ad jump block1 ;; ;; block1: -;; v39 = bswap.i64 v2 -;; @00ad return v39 +;; v38 = bswap.i64 v2 +;; @00ad return v38 ;; } diff --git a/tests/disas/call-indirect-with-gc.wat b/tests/disas/call-indirect-with-gc.wat index fcf69d4c626d..e0a6408c1a6a 100644 --- a/tests/disas/call-indirect-with-gc.wat +++ b/tests/disas/call-indirect-with-gc.wat @@ -25,37 +25,37 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i32, v3: i32): -;; @0035 v5 = load.i64 notrap aligned region3 v0+56 -;; @0035 v9 = load.i64 notrap aligned region2 v0+48 -;; @0035 v6 = ireduce.i32 v5 -;; @0035 v7 = icmp uge v3, v6 -;; @0035 v13 = iconst.i64 0 -;; @0035 v8 = uextend.i64 v3 -;; @0035 v10 = iconst.i64 3 -;; @0035 v11 = ishl v8, v10 ; v10 = 3 -;; @0035 v12 = iadd v9, v11 -;; @0035 v14 = select_spectre_guard v7, v13, v12 ; v13 = 0 -;; @0035 v15 = load.i64 user6 aligned region4 v14 -;; @0035 v16 = iconst.i64 -2 -;; @0035 v17 = band v15, v16 ; v16 = -2 -;; @0035 brif v15, block3(v17), block2 +;; @0035 v4 = load.i64 notrap aligned region3 v0+56 +;; @0035 v8 = load.i64 notrap aligned region2 v0+48 +;; @0035 v5 = ireduce.i32 v4 +;; @0035 v6 = icmp uge v3, v5 +;; @0035 v12 = iconst.i64 0 +;; @0035 v7 = uextend.i64 v3 +;; @0035 v9 = iconst.i64 3 +;; @0035 v10 = ishl v7, v9 ; v9 = 3 +;; @0035 v11 = iadd v8, v10 +;; @0035 v13 = select_spectre_guard v6, v12, v11 ; v12 = 0 +;; @0035 v14 = load.i64 user6 aligned region4 v13 +;; @0035 v15 = iconst.i64 -2 +;; @0035 v16 = band v14, v15 ; v15 = -2 +;; @0035 brif v14, block3(v16), block2 ;; ;; block2 cold: -;; @0035 v19 = iconst.i32 0 -;; @0035 v21 = call fn0(v0, v19, v8) ; v19 = 0 -;; @0035 jump block3(v21) +;; @0035 v18 = iconst.i32 0 +;; @0035 v20 = call fn0(v0, v18, v7) ; v18 = 0 +;; @0035 jump block3(v20) ;; -;; block3(v18: i64): -;; @0035 v24 = load.i32 user7 aligned readonly v18+16 -;; @0035 v22 = load.i64 notrap aligned readonly can_move region5 v0+40 -;; @0035 v23 = load.i32 notrap aligned readonly can_move v22+4 -;; @0035 v25 = icmp eq v24, v23 -;; @0035 trapz v25, user8 -;; @0035 v27 = load.i64 notrap aligned readonly v18+8 -;; @0035 v28 = load.i64 notrap aligned readonly v18+24 -;; @0035 v29 = call_indirect sig0, v27(v28, v0, v2) +;; block3(v17: i64): +;; @0035 v23 = load.i32 user7 aligned readonly v17+16 +;; @0035 v21 = load.i64 notrap aligned readonly can_move region5 v0+40 +;; @0035 v22 = load.i32 notrap aligned readonly can_move v21+4 +;; @0035 v24 = icmp eq v23, v22 +;; @0035 trapz v24, user8 +;; @0035 v26 = load.i64 notrap aligned readonly v17+8 +;; @0035 v27 = load.i64 notrap aligned readonly v17+24 +;; @0035 v28 = call_indirect sig0, v26(v27, v0, v2) ;; @0038 jump block1 ;; ;; block1: -;; @0038 return v29 +;; @0038 return v28 ;; } diff --git a/tests/disas/call-indirect-without-gc.wat b/tests/disas/call-indirect-without-gc.wat index 00dfe8e5c97d..8d091c1760ab 100644 --- a/tests/disas/call-indirect-without-gc.wat +++ b/tests/disas/call-indirect-without-gc.wat @@ -25,37 +25,37 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i32, v3: i32): -;; @0035 v5 = load.i64 notrap aligned region3 v0+56 -;; @0035 v9 = load.i64 notrap aligned region2 v0+48 -;; @0035 v6 = ireduce.i32 v5 -;; @0035 v7 = icmp uge v3, v6 -;; @0035 v13 = iconst.i64 0 -;; @0035 v8 = uextend.i64 v3 -;; @0035 v10 = iconst.i64 3 -;; @0035 v11 = ishl v8, v10 ; v10 = 3 -;; @0035 v12 = iadd v9, v11 -;; @0035 v14 = select_spectre_guard v7, v13, v12 ; v13 = 0 -;; @0035 v15 = load.i64 user6 aligned region4 v14 -;; @0035 v16 = iconst.i64 -2 -;; @0035 v17 = band v15, v16 ; v16 = -2 -;; @0035 brif v15, block3(v17), block2 +;; @0035 v4 = load.i64 notrap aligned region3 v0+56 +;; @0035 v8 = load.i64 notrap aligned region2 v0+48 +;; @0035 v5 = ireduce.i32 v4 +;; @0035 v6 = icmp uge v3, v5 +;; @0035 v12 = iconst.i64 0 +;; @0035 v7 = uextend.i64 v3 +;; @0035 v9 = iconst.i64 3 +;; @0035 v10 = ishl v7, v9 ; v9 = 3 +;; @0035 v11 = iadd v8, v10 +;; @0035 v13 = select_spectre_guard v6, v12, v11 ; v12 = 0 +;; @0035 v14 = load.i64 user6 aligned region4 v13 +;; @0035 v15 = iconst.i64 -2 +;; @0035 v16 = band v14, v15 ; v15 = -2 +;; @0035 brif v14, block3(v16), block2 ;; ;; block2 cold: -;; @0035 v19 = iconst.i32 0 -;; @0035 v21 = call fn0(v0, v19, v8) ; v19 = 0 -;; @0035 jump block3(v21) +;; @0035 v18 = iconst.i32 0 +;; @0035 v20 = call fn0(v0, v18, v7) ; v18 = 0 +;; @0035 jump block3(v20) ;; -;; block3(v18: i64): -;; @0035 v24 = load.i32 user7 aligned readonly v18+16 -;; @0035 v22 = load.i64 notrap aligned readonly can_move region5 v0+40 -;; @0035 v23 = load.i32 notrap aligned readonly can_move v22+4 -;; @0035 v25 = icmp eq v24, v23 -;; @0035 trapz v25, user8 -;; @0035 v27 = load.i64 notrap aligned readonly v18+8 -;; @0035 v28 = load.i64 notrap aligned readonly v18+24 -;; @0035 v29 = call_indirect sig0, v27(v28, v0, v2) +;; block3(v17: i64): +;; @0035 v23 = load.i32 user7 aligned readonly v17+16 +;; @0035 v21 = load.i64 notrap aligned readonly can_move region5 v0+40 +;; @0035 v22 = load.i32 notrap aligned readonly can_move v21+4 +;; @0035 v24 = icmp eq v23, v22 +;; @0035 trapz v24, user8 +;; @0035 v26 = load.i64 notrap aligned readonly v17+8 +;; @0035 v27 = load.i64 notrap aligned readonly v17+24 +;; @0035 v28 = call_indirect sig0, v26(v27, v0, v2) ;; @0038 jump block1 ;; ;; block1: -;; @0038 return v29 +;; @0038 return v28 ;; } diff --git a/tests/disas/call-indirect.wat b/tests/disas/call-indirect.wat index 2d5a16aeeb46..e6fb44cf957a 100644 --- a/tests/disas/call-indirect.wat +++ b/tests/disas/call-indirect.wat @@ -23,39 +23,39 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i32, v3: i32): -;; @0035 v5 = load.i64 notrap aligned region3 v0+56 -;; @0035 v6 = ireduce.i32 v5 -;; @0035 v7 = icmp uge v3, v6 -;; @0035 v8 = uextend.i64 v3 -;; @0035 v9 = load.i64 notrap aligned region2 v0+48 -;; @0035 v10 = iconst.i64 3 -;; @0035 v11 = ishl v8, v10 ; v10 = 3 -;; @0035 v12 = iadd v9, v11 -;; @0035 v13 = iconst.i64 0 -;; @0035 v14 = select_spectre_guard v7, v13, v12 ; v13 = 0 -;; @0035 v15 = load.i64 user6 aligned region4 v14 -;; @0035 v16 = iconst.i64 -2 -;; @0035 v17 = band v15, v16 ; v16 = -2 -;; @0035 brif v15, block3(v17), block2 +;; @0035 v4 = load.i64 notrap aligned region3 v0+56 +;; @0035 v5 = ireduce.i32 v4 +;; @0035 v6 = icmp uge v3, v5 +;; @0035 v7 = uextend.i64 v3 +;; @0035 v8 = load.i64 notrap aligned region2 v0+48 +;; @0035 v9 = iconst.i64 3 +;; @0035 v10 = ishl v7, v9 ; v9 = 3 +;; @0035 v11 = iadd v8, v10 +;; @0035 v12 = iconst.i64 0 +;; @0035 v13 = select_spectre_guard v6, v12, v11 ; v12 = 0 +;; @0035 v14 = load.i64 user6 aligned region4 v13 +;; @0035 v15 = iconst.i64 -2 +;; @0035 v16 = band v14, v15 ; v15 = -2 +;; @0035 brif v14, block3(v16), block2 ;; ;; block2 cold: -;; @0035 v19 = iconst.i32 0 -;; @0035 v20 = uextend.i64 v3 -;; @0035 v21 = call fn0(v0, v19, v20) ; v19 = 0 -;; @0035 jump block3(v21) +;; @0035 v18 = iconst.i32 0 +;; @0035 v19 = uextend.i64 v3 +;; @0035 v20 = call fn0(v0, v18, v19) ; v18 = 0 +;; @0035 jump block3(v20) ;; -;; block3(v18: i64): -;; @0035 v22 = load.i64 notrap aligned readonly can_move region5 v0+40 -;; @0035 v23 = load.i32 notrap aligned readonly can_move v22+4 -;; @0035 v24 = load.i32 user7 aligned readonly v18+16 -;; @0035 v25 = icmp eq v24, v23 -;; @0035 v26 = uextend.i32 v25 -;; @0035 trapz v26, user8 -;; @0035 v27 = load.i64 notrap aligned readonly v18+8 -;; @0035 v28 = load.i64 notrap aligned readonly v18+24 -;; @0035 v29 = call_indirect sig0, v27(v28, v0, v2) +;; block3(v17: i64): +;; @0035 v21 = load.i64 notrap aligned readonly can_move region5 v0+40 +;; @0035 v22 = load.i32 notrap aligned readonly can_move v21+4 +;; @0035 v23 = load.i32 user7 aligned readonly v17+16 +;; @0035 v24 = icmp eq v23, v22 +;; @0035 v25 = uextend.i32 v24 +;; @0035 trapz v25, user8 +;; @0035 v26 = load.i64 notrap aligned readonly v17+8 +;; @0035 v27 = load.i64 notrap aligned readonly v17+24 +;; @0035 v28 = call_indirect sig0, v26(v27, v0, v2) ;; @0038 jump block1 ;; ;; block1: -;; @0038 return v29 +;; @0038 return v28 ;; } diff --git a/tests/disas/call-simd.wat b/tests/disas/call-simd.wat index 52f348484b1d..f54335da379b 100644 --- a/tests/disas/call-simd.wat +++ b/tests/disas/call-simd.wat @@ -45,12 +45,12 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i8x16, v3: i8x16): -;; @004f v5 = bitcast.i32x4 little v2 -;; @004f v6 = bitcast.i32x4 little v3 -;; @004f v7 = iadd v5, v6 -;; @0052 v8 = bitcast.i8x16 little v7 +;; @004f v4 = bitcast.i32x4 little v2 +;; @004f v5 = bitcast.i32x4 little v3 +;; @004f v6 = iadd v4, v5 +;; @0052 v7 = bitcast.i8x16 little v6 ;; @0052 jump block1 ;; ;; block1: -;; @0052 return v8 +;; @0052 return v7 ;; } diff --git a/tests/disas/call.wat b/tests/disas/call.wat index 11ccf5e8dbbd..6d86665ce8c7 100644 --- a/tests/disas/call.wat +++ b/tests/disas/call.wat @@ -40,9 +40,9 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64): -;; @002b v3 = iconst.i32 1 +;; @002b v2 = iconst.i32 1 ;; @002d jump block1 ;; ;; block1: -;; @002d return v3 ; v3 = 1 +;; @002d return v2 ; v2 = 1 ;; } diff --git a/tests/disas/component-model/direct-adapter-calls-inlining.wat b/tests/disas/component-model/direct-adapter-calls-inlining.wat index d5663715aa89..dd020c1cea83 100644 --- a/tests/disas/component-model/direct-adapter-calls-inlining.wat +++ b/tests/disas/component-model/direct-adapter-calls-inlining.wat @@ -85,32 +85,32 @@ ;; block2: ;; jump block6 ;; -;; block8(v9: i64): +;; block8(v5: i64): ;; jump block5 ;; ;; block6: -;; @00ee v4 = load.i64 notrap aligned readonly can_move region2 v0+72 -;; v14 = load.i64 notrap aligned readonly can_move region3 v4+136 -;; v15 = load.i32 notrap aligned region4 v14 -;; v13 = iconst.i32 0 -;; v17 = icmp eq v15, v13 ; v13 = 0 -;; brif v17, block9, block10 +;; @00ee v3 = load.i64 notrap aligned readonly can_move region2 v0+72 +;; v9 = load.i64 notrap aligned readonly can_move region3 v3+136 +;; v10 = load.i32 notrap aligned region4 v9 +;; v8 = iconst.i32 0 +;; v12 = icmp eq v10, v8 ; v8 = 0 +;; brif v12, block9, block10 ;; ;; block9: -;; v21 = load.i64 notrap aligned readonly can_move region6 v4+88 -;; v20 = load.i64 notrap aligned readonly can_move region5 v4+104 -;; v19 = iconst.i32 23 -;; try_call_indirect v21(v20, v4, v19), sig1, block11, [ context v4, default: block8(exn0) ] ; v19 = 23 +;; v16 = load.i64 notrap aligned readonly can_move region6 v3+88 +;; v15 = load.i64 notrap aligned readonly can_move region5 v3+104 +;; v14 = iconst.i32 23 +;; try_call_indirect v16(v15, v3, v14), sig1, block11, [ context v3, default: block8(exn0) ] ; v14 = 23 ;; ;; block11: ;; trap user12 ;; ;; block10: -;; v26 = load.i64 notrap aligned readonly can_move region7 v4+112 -;; v27 = load.i32 notrap aligned region4 v26 -;; v43 = iconst.i32 0 -;; store notrap aligned region4 v43, v26 ; v43 = 0 -;; store notrap aligned region4 v27, v26 +;; v21 = load.i64 notrap aligned readonly can_move region7 v3+112 +;; v22 = load.i32 notrap aligned region4 v21 +;; v38 = iconst.i32 0 +;; store notrap aligned region4 v38, v21 ; v38 = 0 +;; store notrap aligned region4 v22, v21 ;; jump block13 ;; ;; block13: @@ -120,17 +120,17 @@ ;; jump block12 ;; ;; block12: -;; v44 = iconst.i32 0 -;; store notrap aligned region4 v44, v14 ; v44 = 0 -;; store.i32 notrap aligned region4 v15, v14 +;; v39 = iconst.i32 0 +;; store notrap aligned region4 v39, v9 ; v39 = 0 +;; store.i32 notrap aligned region4 v10, v9 ;; jump block7 ;; ;; block7: ;; jump block4 ;; ;; block5: -;; v23 = iconst.i32 49 -;; call_indirect.i64 sig1, v21(v20, v4, v23) ; v23 = 49 +;; v18 = iconst.i32 49 +;; call_indirect.i64 sig1, v16(v15, v3, v18) ; v18 = 49 ;; trap user12 ;; ;; block4: @@ -143,6 +143,6 @@ ;; @00f0 jump block1 ;; ;; block1: -;; v37 = iconst.i32 1276 -;; @00f0 return v37 ; v37 = 1276 +;; v32 = iconst.i32 1276 +;; @00f0 return v32 ; v32 = 1276 ;; } diff --git a/tests/disas/component-model/direct-adapter-calls.wat b/tests/disas/component-model/direct-adapter-calls.wat index 2dc06561d0f1..0825e243a037 100644 --- a/tests/disas/component-model/direct-adapter-calls.wat +++ b/tests/disas/component-model/direct-adapter-calls.wat @@ -69,9 +69,9 @@ ;; @003b jump block1 ;; ;; block1: -;; @0038 v4 = iconst.i32 42 -;; v5 = iadd.i32 v2, v4 ; v4 = 42 -;; @003b return v5 +;; @0038 v3 = iconst.i32 42 +;; v4 = iadd.i32 v2, v3 ; v3 = 42 +;; @003b return v4 ;; } ;; ;; function u1:0(i64 vmctx, i64) -> i32 tail { @@ -86,13 +86,13 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64): -;; @00ee v4 = load.i64 notrap aligned readonly can_move region2 v0+72 -;; @00eb v3 = iconst.i32 1234 -;; @00ee v5 = call fn0(v4, v0, v3) ; v3 = 1234 +;; @00ee v3 = load.i64 notrap aligned readonly can_move region2 v0+72 +;; @00eb v2 = iconst.i32 1234 +;; @00ee v4 = call fn0(v3, v0, v2) ; v2 = 1234 ;; @00f0 jump block1 ;; ;; block1: -;; @00f0 return v5 +;; @00f0 return v4 ;; } ;; ;; function u2:0(i64 vmctx, i64, i32) -> i32 tail { @@ -115,53 +115,53 @@ ;; block0(v0: i64, v1: i64, v2: i32): ;; @007b jump block4 ;; -;; block6(v7: i64): +;; block6(v4: i64): ;; @007b jump block3 ;; ;; block4: -;; @0080 v9 = load.i64 notrap aligned readonly can_move region2 v0+136 -;; @0080 v10 = load.i32 notrap aligned region3 v9 -;; @0075 v4 = iconst.i32 0 -;; @0084 v12 = icmp eq v10, v4 ; v4 = 0 -;; @0085 brif v12, block7, block8 +;; @0080 v6 = load.i64 notrap aligned readonly can_move region2 v0+136 +;; @0080 v7 = load.i32 notrap aligned region3 v6 +;; @0075 v3 = iconst.i32 0 +;; @0084 v9 = icmp eq v7, v3 ; v3 = 0 +;; @0085 brif v9, block7, block8 ;; ;; block7: -;; @0089 v16 = load.i64 notrap aligned readonly can_move region5 v0+88 -;; @0089 v15 = load.i64 notrap aligned readonly can_move region4 v0+104 -;; @0087 v14 = iconst.i32 23 -;; @0089 try_call_indirect v16(v15, v0, v14), sig0, block9, [ context v0, default: block6(exn0) ] ; v14 = 23 +;; @0089 v13 = load.i64 notrap aligned readonly can_move region5 v0+88 +;; @0089 v12 = load.i64 notrap aligned readonly can_move region4 v0+104 +;; @0087 v11 = iconst.i32 23 +;; @0089 try_call_indirect v13(v12, v0, v11), sig0, block9, [ context v0, default: block6(exn0) ] ; v11 = 23 ;; ;; block9: ;; @008b trap user12 ;; ;; block8: -;; @008d v17 = load.i64 notrap aligned readonly can_move region6 v0+112 -;; @008d v18 = load.i32 notrap aligned region3 v17 -;; v30 = iconst.i32 0 -;; @0093 store notrap aligned region3 v30, v17 ; v30 = 0 -;; @0099 store notrap aligned region3 v18, v17 -;; @009b v22 = load.i64 notrap aligned readonly can_move region7 v0+72 -;; @009b try_call fn0(v22, v0, v2), sig1, block10(ret0), [ context v0, default: block6(exn0) ] -;; -;; block10(v23: i32): -;; v31 = iconst.i32 0 -;; @00a1 store notrap aligned region3 v31, v9 ; v31 = 0 -;; @00a7 store.i32 notrap aligned region3 v10, v9 -;; @00a9 jump block5(v23) -;; -;; block5(v6: i32): -;; @00aa jump block2(v6) +;; @008d v14 = load.i64 notrap aligned readonly can_move region6 v0+112 +;; @008d v15 = load.i32 notrap aligned region3 v14 +;; v27 = iconst.i32 0 +;; @0093 store notrap aligned region3 v27, v14 ; v27 = 0 +;; @0099 store notrap aligned region3 v15, v14 +;; @009b v19 = load.i64 notrap aligned readonly can_move region7 v0+72 +;; @009b try_call fn0(v19, v0, v2), sig1, block10(ret0), [ context v0, default: block6(exn0) ] +;; +;; block10(v20: i32): +;; v28 = iconst.i32 0 +;; @00a1 store notrap aligned region3 v28, v6 ; v28 = 0 +;; @00a7 store.i32 notrap aligned region3 v7, v6 +;; @00a9 jump block5 +;; +;; block5: +;; @00aa jump block2 ;; ;; block3: -;; v32 = load.i64 notrap aligned readonly can_move region5 v0+88 -;; v33 = load.i64 notrap aligned readonly can_move region4 v0+104 -;; @00ad v27 = iconst.i32 49 -;; @00af call_indirect sig0, v32(v33, v0, v27) ; v27 = 49 +;; v29 = load.i64 notrap aligned readonly can_move region5 v0+88 +;; v30 = load.i64 notrap aligned readonly can_move region4 v0+104 +;; @00ad v24 = iconst.i32 49 +;; @00af call_indirect sig0, v29(v30, v0, v24) ; v24 = 49 ;; @00b1 trap user12 ;; -;; block2(v5: i32): -;; @00b3 jump block1(v5) +;; block2: +;; @00b3 jump block1 ;; -;; block1(v3: i32): -;; @00b3 return v3 +;; block1: +;; @00b3 return v20 ;; } diff --git a/tests/disas/component-model/exported-module-makes-adapters-indirect.wat b/tests/disas/component-model/exported-module-makes-adapters-indirect.wat index 5e625de65393..9cd5515d7d32 100644 --- a/tests/disas/component-model/exported-module-makes-adapters-indirect.wat +++ b/tests/disas/component-model/exported-module-makes-adapters-indirect.wat @@ -70,12 +70,12 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64): -;; @00ee v5 = load.i64 notrap aligned readonly can_move region3 v0+56 -;; @00ee v4 = load.i64 notrap aligned readonly can_move region2 v0+72 -;; @00eb v3 = iconst.i32 1234 -;; @00ee v6 = call_indirect sig0, v5(v4, v0, v3) ; v3 = 1234 +;; @00ee v4 = load.i64 notrap aligned readonly can_move region3 v0+56 +;; @00ee v3 = load.i64 notrap aligned readonly can_move region2 v0+72 +;; @00eb v2 = iconst.i32 1234 +;; @00ee v5 = call_indirect sig0, v4(v3, v0, v2) ; v2 = 1234 ;; @00f0 jump block1 ;; ;; block1: -;; @00f0 return v6 +;; @00f0 return v5 ;; } diff --git a/tests/disas/component-model/inlining-bug.wat b/tests/disas/component-model/inlining-bug.wat index 5851ac778590..6a9cf5df1d47 100644 --- a/tests/disas/component-model/inlining-bug.wat +++ b/tests/disas/component-model/inlining-bug.wat @@ -63,9 +63,9 @@ ;; jump block4 ;; ;; block4: -;; @00d4 v3 = load.i64 notrap aligned readonly can_move region2 v0+72 -;; v9 = load.i64 notrap aligned readonly can_move region3 v3+104 -;; call fn2(v9, v9) +;; @00d4 v2 = load.i64 notrap aligned readonly can_move region2 v0+72 +;; v6 = load.i64 notrap aligned readonly can_move region3 v2+104 +;; call fn2(v6, v6) ;; jump block5 ;; ;; block5: @@ -81,6 +81,6 @@ ;; @00d6 jump block1 ;; ;; block1: -;; v10 = iconst.i32 1 -;; @00d6 return v10 ; v10 = 1 +;; v7 = iconst.i32 1 +;; @00d6 return v7 ; v7 = 1 ;; } diff --git a/tests/disas/component-model/inlining-fuzz-bug.wat b/tests/disas/component-model/inlining-fuzz-bug.wat index 98829eb61eeb..88b8265d9564 100644 --- a/tests/disas/component-model/inlining-fuzz-bug.wat +++ b/tests/disas/component-model/inlining-fuzz-bug.wat @@ -92,6 +92,6 @@ ;; @00c6 jump block1 ;; ;; block1: -;; v24 = iconst.i32 301 -;; @00c6 return v24 ; v24 = 301 +;; v20 = iconst.i32 301 +;; @00c6 return v20 ; v20 = 301 ;; } diff --git a/tests/disas/component-model/issue-11458.wat b/tests/disas/component-model/issue-11458.wat index e5fd628c3b76..bb5e0505c7fb 100644 --- a/tests/disas/component-model/issue-11458.wat +++ b/tests/disas/component-model/issue-11458.wat @@ -39,14 +39,14 @@ ;; @006f jump block2 ;; ;; block2: -;; @006f v5 = load.i64 notrap aligned readonly can_move region2 v0+72 -;; v9 = iconst.i32 1 -;; v11 = call fn1(v5, v5, v9) ; v9 = 1 +;; @006f v4 = load.i64 notrap aligned readonly can_move region2 v0+72 +;; v7 = iconst.i32 1 +;; v9 = call fn1(v4, v4, v7) ; v7 = 1 ;; jump block4 ;; ;; block4: ;; @0071 jump block1 ;; ;; block1: -;; @0071 return v11 +;; @0071 return v9 ;; } diff --git a/tests/disas/component-model/multiple-instantiations-makes-adapters-indirect.wat b/tests/disas/component-model/multiple-instantiations-makes-adapters-indirect.wat index aa592249e6b6..5a3979ceedd0 100644 --- a/tests/disas/component-model/multiple-instantiations-makes-adapters-indirect.wat +++ b/tests/disas/component-model/multiple-instantiations-makes-adapters-indirect.wat @@ -76,12 +76,12 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64): -;; @00ee v5 = load.i64 notrap aligned readonly can_move region3 v0+56 -;; @00ee v4 = load.i64 notrap aligned readonly can_move region2 v0+72 -;; @00eb v3 = iconst.i32 1234 -;; @00ee v6 = call_indirect sig0, v5(v4, v0, v3) ; v3 = 1234 +;; @00ee v4 = load.i64 notrap aligned readonly can_move region3 v0+56 +;; @00ee v3 = load.i64 notrap aligned readonly can_move region2 v0+72 +;; @00eb v2 = iconst.i32 1234 +;; @00ee v5 = call_indirect sig0, v4(v3, v0, v2) ; v2 = 1234 ;; @00f0 jump block1 ;; ;; block1: -;; @00f0 return v6 +;; @00f0 return v5 ;; } diff --git a/tests/disas/ctz-clz-bool-condition.wat b/tests/disas/ctz-clz-bool-condition.wat index 67e17de4ca23..67caeff226a1 100644 --- a/tests/disas/ctz-clz-bool-condition.wat +++ b/tests/disas/ctz-clz-bool-condition.wat @@ -272,9 +272,9 @@ ;; pushq %rbp ;; movq %rsp, %rbp ;; movl $0x20, %esi -;; bsfl %edx, %r9d -;; cmovel %esi, %r9d -;; cmpl $4, %r9d +;; bsfl %edx, %r8d +;; cmovel %esi, %r8d +;; cmpl $4, %r8d ;; je 0x345 ;; 33b: movl $0xc8, %eax ;; jmp 0x34a diff --git a/tests/disas/dead-code.wat b/tests/disas/dead-code.wat index 896cb58058bd..f351c1708c29 100644 --- a/tests/disas/dead-code.wat +++ b/tests/disas/dead-code.wat @@ -87,6 +87,6 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i32): -;; @0042 v4 = iconst.i32 1 -;; @0044 return v4 ; v4 = 1 +;; @0042 v3 = iconst.i32 1 +;; @0044 return v3 ; v3 = 1 ;; } diff --git a/tests/disas/duplicate-function-types.wat b/tests/disas/duplicate-function-types.wat index 7c7349b9f2d2..ca96cd521df3 100644 --- a/tests/disas/duplicate-function-types.wat +++ b/tests/disas/duplicate-function-types.wat @@ -33,74 +33,74 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i32): -;; @002d v5 = load.i64 notrap aligned readonly can_move region2 v0+48 -;; @002d v6 = load.i64 notrap aligned region4 v5+8 -;; @002d v7 = ireduce.i32 v6 -;; @002d v8 = icmp uge v2, v7 -;; @002d v9 = uextend.i64 v2 -;; @002d v10 = load.i64 notrap aligned readonly can_move region2 v0+48 -;; @002d v11 = load.i64 notrap aligned region3 v10 -;; @002d v12 = iconst.i64 3 -;; @002d v13 = ishl v9, v12 ; v12 = 3 -;; @002d v14 = iadd v11, v13 -;; @002d v15 = iconst.i64 0 -;; @002d v16 = select_spectre_guard v8, v15, v14 ; v15 = 0 -;; @002d v17 = load.i64 user6 aligned region5 v16 -;; @002d v18 = iconst.i64 -2 -;; @002d v19 = band v17, v18 ; v18 = -2 -;; @002d brif v17, block3(v19), block2 +;; @002d v3 = load.i64 notrap aligned readonly can_move region2 v0+48 +;; @002d v4 = load.i64 notrap aligned region4 v3+8 +;; @002d v5 = ireduce.i32 v4 +;; @002d v6 = icmp uge v2, v5 +;; @002d v7 = uextend.i64 v2 +;; @002d v8 = load.i64 notrap aligned readonly can_move region2 v0+48 +;; @002d v9 = load.i64 notrap aligned region3 v8 +;; @002d v10 = iconst.i64 3 +;; @002d v11 = ishl v7, v10 ; v10 = 3 +;; @002d v12 = iadd v9, v11 +;; @002d v13 = iconst.i64 0 +;; @002d v14 = select_spectre_guard v6, v13, v12 ; v13 = 0 +;; @002d v15 = load.i64 user6 aligned region5 v14 +;; @002d v16 = iconst.i64 -2 +;; @002d v17 = band v15, v16 ; v16 = -2 +;; @002d brif v15, block3(v17), block2 ;; ;; block2 cold: -;; @002d v21 = iconst.i32 0 -;; @002d v22 = uextend.i64 v2 -;; @002d v23 = call fn0(v0, v21, v22) ; v21 = 0 -;; @002d jump block3(v23) +;; @002d v19 = iconst.i32 0 +;; @002d v20 = uextend.i64 v2 +;; @002d v21 = call fn0(v0, v19, v20) ; v19 = 0 +;; @002d jump block3(v21) ;; -;; block3(v20: i64): -;; @002d v24 = load.i64 notrap aligned readonly can_move region6 v0+40 -;; @002d v25 = load.i32 notrap aligned readonly can_move v24 -;; @002d v26 = load.i32 user7 aligned readonly v20+16 -;; @002d v27 = icmp eq v26, v25 -;; @002d v28 = uextend.i32 v27 -;; @002d trapz v28, user8 -;; @002d v29 = load.i64 notrap aligned readonly v20+8 -;; @002d v30 = load.i64 notrap aligned readonly v20+24 -;; @002d v31 = call_indirect sig0, v29(v30, v0) -;; @0032 v33 = load.i64 notrap aligned readonly can_move region2 v0+48 -;; @0032 v34 = load.i64 notrap aligned region4 v33+8 -;; @0032 v35 = ireduce.i32 v34 -;; @0032 v36 = icmp.i32 uge v2, v35 -;; @0032 v37 = uextend.i64 v2 -;; @0032 v38 = load.i64 notrap aligned readonly can_move region2 v0+48 -;; @0032 v39 = load.i64 notrap aligned region3 v38 -;; @0032 v40 = iconst.i64 3 -;; @0032 v41 = ishl v37, v40 ; v40 = 3 -;; @0032 v42 = iadd v39, v41 -;; @0032 v43 = iconst.i64 0 -;; @0032 v44 = select_spectre_guard v36, v43, v42 ; v43 = 0 -;; @0032 v45 = load.i64 user6 aligned region5 v44 -;; @0032 v46 = iconst.i64 -2 -;; @0032 v47 = band v45, v46 ; v46 = -2 -;; @0032 brif v45, block5(v47), block4 +;; block3(v18: i64): +;; @002d v22 = load.i64 notrap aligned readonly can_move region6 v0+40 +;; @002d v23 = load.i32 notrap aligned readonly can_move v22 +;; @002d v24 = load.i32 user7 aligned readonly v18+16 +;; @002d v25 = icmp eq v24, v23 +;; @002d v26 = uextend.i32 v25 +;; @002d trapz v26, user8 +;; @002d v27 = load.i64 notrap aligned readonly v18+8 +;; @002d v28 = load.i64 notrap aligned readonly v18+24 +;; @002d v29 = call_indirect sig0, v27(v28, v0) +;; @0032 v31 = load.i64 notrap aligned readonly can_move region2 v0+48 +;; @0032 v32 = load.i64 notrap aligned region4 v31+8 +;; @0032 v33 = ireduce.i32 v32 +;; @0032 v34 = icmp.i32 uge v2, v33 +;; @0032 v35 = uextend.i64 v2 +;; @0032 v36 = load.i64 notrap aligned readonly can_move region2 v0+48 +;; @0032 v37 = load.i64 notrap aligned region3 v36 +;; @0032 v38 = iconst.i64 3 +;; @0032 v39 = ishl v35, v38 ; v38 = 3 +;; @0032 v40 = iadd v37, v39 +;; @0032 v41 = iconst.i64 0 +;; @0032 v42 = select_spectre_guard v34, v41, v40 ; v41 = 0 +;; @0032 v43 = load.i64 user6 aligned region5 v42 +;; @0032 v44 = iconst.i64 -2 +;; @0032 v45 = band v43, v44 ; v44 = -2 +;; @0032 brif v43, block5(v45), block4 ;; ;; block4 cold: -;; @0032 v49 = iconst.i32 0 -;; @0032 v50 = uextend.i64 v2 -;; @0032 v51 = call fn0(v0, v49, v50) ; v49 = 0 -;; @0032 jump block5(v51) +;; @0032 v47 = iconst.i32 0 +;; @0032 v48 = uextend.i64 v2 +;; @0032 v49 = call fn0(v0, v47, v48) ; v47 = 0 +;; @0032 jump block5(v49) ;; -;; block5(v48: i64): -;; @0032 v52 = load.i64 notrap aligned readonly can_move region6 v0+40 -;; @0032 v53 = load.i32 notrap aligned readonly can_move v52 -;; @0032 v54 = load.i32 user7 aligned readonly v48+16 -;; @0032 v55 = icmp eq v54, v53 -;; @0032 v56 = uextend.i32 v55 -;; @0032 trapz v56, user8 -;; @0032 v57 = load.i64 notrap aligned readonly v48+8 -;; @0032 v58 = load.i64 notrap aligned readonly v48+24 -;; @0032 v59 = call_indirect sig0, v57(v58, v0) +;; block5(v46: i64): +;; @0032 v50 = load.i64 notrap aligned readonly can_move region6 v0+40 +;; @0032 v51 = load.i32 notrap aligned readonly can_move v50 +;; @0032 v52 = load.i32 user7 aligned readonly v46+16 +;; @0032 v53 = icmp eq v52, v51 +;; @0032 v54 = uextend.i32 v53 +;; @0032 trapz v54, user8 +;; @0032 v55 = load.i64 notrap aligned readonly v46+8 +;; @0032 v56 = load.i64 notrap aligned readonly v46+24 +;; @0032 v57 = call_indirect sig0, v55(v56, v0) ;; @0035 jump block1 ;; ;; block1: -;; @0035 return v31, v59 +;; @0035 return v29, v57 ;; } diff --git a/tests/disas/duplicate-loads-dynamic-memory.wat b/tests/disas/duplicate-loads-dynamic-memory.wat index 5dbf45cad7e1..9044e1b73b59 100644 --- a/tests/disas/duplicate-loads-dynamic-memory.wat +++ b/tests/disas/duplicate-loads-dynamic-memory.wat @@ -34,18 +34,18 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i32): -;; @0057 v6 = load.i64 notrap aligned region3 v0+64 -;; @0057 v8 = load.i64 notrap aligned can_move region2 v0+56 -;; @0057 v5 = uextend.i64 v2 -;; @0057 v7 = icmp ugt v5, v6 -;; @0057 v10 = iconst.i64 0 -;; @0057 v9 = iadd v8, v5 -;; @0057 v11 = select_spectre_guard v7, v10, v9 ; v10 = 0 -;; @0057 v12 = load.i32 little region4 v11 +;; @0057 v4 = load.i64 notrap aligned region3 v0+64 +;; @0057 v6 = load.i64 notrap aligned can_move region2 v0+56 +;; @0057 v3 = uextend.i64 v2 +;; @0057 v5 = icmp ugt v3, v4 +;; @0057 v8 = iconst.i64 0 +;; @0057 v7 = iadd v6, v3 +;; @0057 v9 = select_spectre_guard v5, v8, v7 ; v8 = 0 +;; @0057 v10 = load.i32 little region4 v9 ;; @005f jump block1 ;; ;; block1: -;; @005f return v12, v12 +;; @005f return v10, v10 ;; } ;; ;; function u0:1(i64 vmctx, i64, i32) -> i32, i32 tail { @@ -60,18 +60,18 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i32): -;; @0064 v6 = load.i64 notrap aligned region3 v0+64 -;; @0064 v8 = load.i64 notrap aligned can_move region2 v0+56 -;; @0064 v5 = uextend.i64 v2 -;; @0064 v7 = icmp ugt v5, v6 -;; @0064 v12 = iconst.i64 0 -;; @0064 v9 = iadd v8, v5 -;; @0064 v10 = iconst.i64 1234 -;; @0064 v11 = iadd v9, v10 ; v10 = 1234 -;; @0064 v13 = select_spectre_guard v7, v12, v11 ; v12 = 0 -;; @0064 v14 = load.i32 little region4 v13 +;; @0064 v4 = load.i64 notrap aligned region3 v0+64 +;; @0064 v6 = load.i64 notrap aligned can_move region2 v0+56 +;; @0064 v3 = uextend.i64 v2 +;; @0064 v5 = icmp ugt v3, v4 +;; @0064 v10 = iconst.i64 0 +;; @0064 v7 = iadd v6, v3 +;; @0064 v8 = iconst.i64 1234 +;; @0064 v9 = iadd v7, v8 ; v8 = 1234 +;; @0064 v11 = select_spectre_guard v5, v10, v9 ; v10 = 0 +;; @0064 v12 = load.i32 little region4 v11 ;; @006e jump block1 ;; ;; block1: -;; @006e return v14, v14 +;; @006e return v12, v12 ;; } diff --git a/tests/disas/duplicate-loads-static-memory.wat b/tests/disas/duplicate-loads-static-memory.wat index 40513b41ae41..685ffea82408 100644 --- a/tests/disas/duplicate-loads-static-memory.wat +++ b/tests/disas/duplicate-loads-static-memory.wat @@ -29,14 +29,14 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i32): -;; @0057 v6 = load.i64 notrap aligned readonly can_move region2 v0+56 -;; @0057 v5 = uextend.i64 v2 -;; @0057 v7 = iadd v6, v5 -;; @0057 v8 = load.i32 little region4 v7 +;; @0057 v4 = load.i64 notrap aligned readonly can_move region2 v0+56 +;; @0057 v3 = uextend.i64 v2 +;; @0057 v5 = iadd v4, v3 +;; @0057 v6 = load.i32 little region4 v5 ;; @005f jump block1 ;; ;; block1: -;; @005f return v8, v8 +;; @005f return v6, v6 ;; } ;; ;; function u0:1(i64 vmctx, i64, i32) -> i32, i32 tail { @@ -51,14 +51,14 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i32): -;; @0064 v6 = load.i64 notrap aligned readonly can_move region2 v0+56 -;; @0064 v5 = uextend.i64 v2 -;; @0064 v7 = iadd v6, v5 -;; @0064 v8 = iconst.i64 1234 -;; @0064 v9 = iadd v7, v8 ; v8 = 1234 -;; @0064 v10 = load.i32 little region4 v9 +;; @0064 v4 = load.i64 notrap aligned readonly can_move region2 v0+56 +;; @0064 v3 = uextend.i64 v2 +;; @0064 v5 = iadd v4, v3 +;; @0064 v6 = iconst.i64 1234 +;; @0064 v7 = iadd v5, v6 ; v6 = 1234 +;; @0064 v8 = load.i32 little region4 v7 ;; @006e jump block1 ;; ;; block1: -;; @006e return v10, v10 +;; @006e return v8, v8 ;; } diff --git a/tests/disas/dynamic-memory-no-spectre-access-same-index-different-offsets.wat b/tests/disas/dynamic-memory-no-spectre-access-same-index-different-offsets.wat index a8fdeab697bb..d5584ed5103f 100644 --- a/tests/disas/dynamic-memory-no-spectre-access-same-index-different-offsets.wat +++ b/tests/disas/dynamic-memory-no-spectre-access-same-index-different-offsets.wat @@ -47,27 +47,27 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i32): -;; @0047 v7 = load.i64 notrap aligned region3 v0+64 -;; @0047 v6 = uextend.i64 v2 -;; @0047 v8 = icmp ugt v6, v7 -;; @0047 trapnz v8, heap_oob -;; @0047 v9 = load.i64 notrap aligned can_move region2 v0+56 -;; @0047 v10 = iadd v9, v6 -;; @0047 v11 = load.i32 little region4 v10 -;; @004c v17 = iconst.i64 4 -;; @004c v18 = iadd v10, v17 ; v17 = 4 -;; @004c v19 = load.i32 little region4 v18 -;; @0051 v21 = iconst.i64 0x0010_0003 -;; @0051 v22 = uadd_overflow_trap v6, v21, heap_oob ; v21 = 0x0010_0003 -;; @0051 v24 = icmp ugt v22, v7 -;; @0051 trapnz v24, heap_oob -;; @0051 v27 = iconst.i64 0x000f_ffff -;; @0051 v28 = iadd v10, v27 ; v27 = 0x000f_ffff -;; @0051 v29 = load.i32 little region4 v28 +;; @0047 v4 = load.i64 notrap aligned region3 v0+64 +;; @0047 v3 = uextend.i64 v2 +;; @0047 v5 = icmp ugt v3, v4 +;; @0047 trapnz v5, heap_oob +;; @0047 v6 = load.i64 notrap aligned can_move region2 v0+56 +;; @0047 v7 = iadd v6, v3 +;; @0047 v8 = load.i32 little region4 v7 +;; @004c v14 = iconst.i64 4 +;; @004c v15 = iadd v7, v14 ; v14 = 4 +;; @004c v16 = load.i32 little region4 v15 +;; @0051 v18 = iconst.i64 0x0010_0003 +;; @0051 v19 = uadd_overflow_trap v3, v18, heap_oob ; v18 = 0x0010_0003 +;; @0051 v21 = icmp ugt v19, v4 +;; @0051 trapnz v21, heap_oob +;; @0051 v24 = iconst.i64 0x000f_ffff +;; @0051 v25 = iadd v7, v24 ; v24 = 0x000f_ffff +;; @0051 v26 = load.i32 little region4 v25 ;; @0056 jump block1 ;; ;; block1: -;; @0056 return v11, v19, v29 +;; @0056 return v8, v16, v26 ;; } ;; ;; function u0:1(i64 vmctx, i64, i32, i32, i32, i32) tail { diff --git a/tests/disas/dynamic-memory-yes-spectre-access-same-index-different-offsets.wat b/tests/disas/dynamic-memory-yes-spectre-access-same-index-different-offsets.wat index 2320e9932bae..70cca70f8477 100644 --- a/tests/disas/dynamic-memory-yes-spectre-access-same-index-different-offsets.wat +++ b/tests/disas/dynamic-memory-yes-spectre-access-same-index-different-offsets.wat @@ -43,29 +43,29 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i32): -;; @0047 v7 = load.i64 notrap aligned region3 v0+64 -;; @0047 v9 = load.i64 notrap aligned can_move region2 v0+56 -;; @0047 v6 = uextend.i64 v2 -;; @0047 v8 = icmp ugt v6, v7 -;; @0047 v11 = iconst.i64 0 -;; @0047 v10 = iadd v9, v6 -;; @0047 v12 = select_spectre_guard v8, v11, v10 ; v11 = 0 -;; @0047 v13 = load.i32 little region4 v12 -;; @004c v19 = iconst.i64 4 -;; @004c v20 = iadd v10, v19 ; v19 = 4 -;; @004c v22 = select_spectre_guard v8, v11, v20 ; v11 = 0 -;; @004c v23 = load.i32 little region4 v22 -;; @0051 v25 = iconst.i64 0x0010_0003 -;; @0051 v26 = uadd_overflow_trap v6, v25, heap_oob ; v25 = 0x0010_0003 -;; @0051 v28 = icmp ugt v26, v7 -;; @0051 v31 = iconst.i64 0x000f_ffff -;; @0051 v32 = iadd v10, v31 ; v31 = 0x000f_ffff -;; @0051 v34 = select_spectre_guard v28, v11, v32 ; v11 = 0 -;; @0051 v35 = load.i32 little region4 v34 +;; @0047 v4 = load.i64 notrap aligned region3 v0+64 +;; @0047 v6 = load.i64 notrap aligned can_move region2 v0+56 +;; @0047 v3 = uextend.i64 v2 +;; @0047 v5 = icmp ugt v3, v4 +;; @0047 v8 = iconst.i64 0 +;; @0047 v7 = iadd v6, v3 +;; @0047 v9 = select_spectre_guard v5, v8, v7 ; v8 = 0 +;; @0047 v10 = load.i32 little region4 v9 +;; @004c v16 = iconst.i64 4 +;; @004c v17 = iadd v7, v16 ; v16 = 4 +;; @004c v19 = select_spectre_guard v5, v8, v17 ; v8 = 0 +;; @004c v20 = load.i32 little region4 v19 +;; @0051 v22 = iconst.i64 0x0010_0003 +;; @0051 v23 = uadd_overflow_trap v3, v22, heap_oob ; v22 = 0x0010_0003 +;; @0051 v25 = icmp ugt v23, v4 +;; @0051 v28 = iconst.i64 0x000f_ffff +;; @0051 v29 = iadd v7, v28 ; v28 = 0x000f_ffff +;; @0051 v31 = select_spectre_guard v25, v8, v29 ; v8 = 0 +;; @0051 v32 = load.i32 little region4 v31 ;; @0056 jump block1 ;; ;; block1: -;; @0056 return v13, v23, v35 +;; @0056 return v10, v20, v32 ;; } ;; ;; function u0:1(i64 vmctx, i64, i32, i32, i32, i32) tail { diff --git a/tests/disas/f32-load.wat b/tests/disas/f32-load.wat index e4dd4640e88e..a909b3ba15f0 100644 --- a/tests/disas/f32-load.wat +++ b/tests/disas/f32-load.wat @@ -18,12 +18,12 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i32): -;; @002e v4 = uextend.i64 v2 -;; @002e v5 = load.i64 notrap aligned readonly can_move region2 v0+56 -;; @002e v6 = iadd v5, v4 -;; @002e v7 = load.f32 little region4 v6 +;; @002e v3 = uextend.i64 v2 +;; @002e v4 = load.i64 notrap aligned readonly can_move region2 v0+56 +;; @002e v5 = iadd v4, v3 +;; @002e v6 = load.f32 little region4 v5 ;; @0031 jump block1 ;; ;; block1: -;; @0031 return v7 +;; @0031 return v6 ;; } diff --git a/tests/disas/f64-load.wat b/tests/disas/f64-load.wat index 2079225d2db4..3fe2092cd89e 100644 --- a/tests/disas/f64-load.wat +++ b/tests/disas/f64-load.wat @@ -20,12 +20,12 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i32): -;; @002e v4 = uextend.i64 v2 -;; @002e v5 = load.i64 notrap aligned readonly can_move region2 v0+56 -;; @002e v6 = iadd v5, v4 -;; @002e v7 = load.f64 little region4 v6 +;; @002e v3 = uextend.i64 v2 +;; @002e v4 = load.i64 notrap aligned readonly can_move region2 v0+56 +;; @002e v5 = iadd v4, v3 +;; @002e v6 = load.f64 little region4 v5 ;; @0031 jump block1 ;; ;; block1: -;; @0031 return v7 +;; @0031 return v6 ;; } diff --git a/tests/disas/fac-multi-value.wat b/tests/disas/fac-multi-value.wat index e0855fdc0559..3b3de8eec5e9 100644 --- a/tests/disas/fac-multi-value.wat +++ b/tests/disas/fac-multi-value.wat @@ -63,22 +63,22 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i64): -;; @004c v4 = iconst.i64 1 -;; @0050 jump block2(v4, v2) ; v4 = 1 +;; @004c v3 = iconst.i64 1 +;; @0050 jump block2(v3, v2) ; v3 = 1 ;; -;; block2(v5: i64, v6: i64): -;; @0052 v8, v9, v10 = call fn0(v0, v0, v5, v6) -;; @0054 v11, v12, v13 = call fn0(v0, v0, v9, v10) -;; @0056 v14 = imul v12, v13 -;; @0057 v15, v16, v17 = call fn0(v0, v0, v11, v14) -;; @0059 v18 = iconst.i64 1 -;; @005b v19 = isub v17, v18 ; v18 = 1 -;; @005c v20, v21 = call fn1(v0, v0, v19) -;; @005e v22 = iconst.i64 0 -;; @0060 v23 = icmp ugt v21, v22 ; v22 = 0 -;; @0060 v24 = uextend.i32 v23 -;; @0061 brif v24, block2(v16, v20), block4 +;; block2(v4: i64, v5: i64): +;; @0052 v6, v7, v8 = call fn0(v0, v0, v4, v5) +;; @0054 v9, v10, v11 = call fn0(v0, v0, v7, v8) +;; @0056 v12 = imul v10, v11 +;; @0057 v13, v14, v15 = call fn0(v0, v0, v9, v12) +;; @0059 v16 = iconst.i64 1 +;; @005b v17 = isub v15, v16 ; v16 = 1 +;; @005c v18, v19 = call fn1(v0, v0, v17) +;; @005e v20 = iconst.i64 0 +;; @0060 v21 = icmp ugt v19, v20 ; v20 = 0 +;; @0060 v22 = uextend.i32 v21 +;; @0061 brif v22, block2(v14, v18), block4 ;; ;; block4: -;; @0064 return v16 +;; @0064 return v14 ;; } diff --git a/tests/disas/fixed-size-memory.wat b/tests/disas/fixed-size-memory.wat index b19530f58e54..f586433815bc 100644 --- a/tests/disas/fixed-size-memory.wat +++ b/tests/disas/fixed-size-memory.wat @@ -57,15 +57,15 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i32): -;; @0049 v4 = uextend.i64 v2 -;; @0049 v5 = iconst.i64 0x0001_0000 -;; @0049 v6 = icmp uge v4, v5 ; v5 = 0x0001_0000 -;; @0049 trapnz v6, heap_oob -;; @0049 v7 = load.i64 notrap aligned readonly can_move region2 v0+56 -;; @0049 v8 = iadd v7, v4 -;; @0049 v9 = uload8.i32 little region4 v8 +;; @0049 v3 = uextend.i64 v2 +;; @0049 v4 = iconst.i64 0x0001_0000 +;; @0049 v5 = icmp uge v3, v4 ; v4 = 0x0001_0000 +;; @0049 trapnz v5, heap_oob +;; @0049 v6 = load.i64 notrap aligned readonly can_move region2 v0+56 +;; @0049 v7 = iadd v6, v3 +;; @0049 v8 = uload8.i32 little region4 v7 ;; @004c jump block1 ;; ;; block1: -;; @004c return v9 +;; @004c return v8 ;; } diff --git a/tests/disas/foo.wat b/tests/disas/foo.wat index d73a1b6840c0..9c5a2753c503 100644 --- a/tests/disas/foo.wat +++ b/tests/disas/foo.wat @@ -34,70 +34,70 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i32, v3: i32): -;; @0040 v7 = load.i64 notrap aligned readonly can_move region2 v0+56 -;; @0040 v6 = uextend.i64 v3 -;; @0040 v8 = iadd v7, v6 -;; @0040 v9 = load.i32 little region4 v8 -;; @0043 v10 = load.i64 notrap aligned readonly can_move region5 v0+72 -;; @0043 v11 = load.i64 notrap aligned region7 v10+8 -;; @0043 v16 = load.i64 notrap aligned region6 v10 -;; @0043 v12 = ireduce.i32 v11 -;; @0043 v13 = icmp uge v9, v12 -;; @0043 v20 = iconst.i64 0 -;; @0043 v14 = uextend.i64 v9 -;; @0043 v17 = iconst.i64 3 -;; @0043 v18 = ishl v14, v17 ; v17 = 3 -;; @0043 v19 = iadd v16, v18 -;; @0043 v21 = select_spectre_guard v13, v20, v19 ; v20 = 0 -;; @0043 v22 = load.i64 user6 aligned region8 v21 -;; @0043 v23 = iconst.i64 -2 -;; @0043 v24 = band v22, v23 ; v23 = -2 -;; @0043 brif v22, block3(v24), block2 +;; @0040 v5 = load.i64 notrap aligned readonly can_move region2 v0+56 +;; @0040 v4 = uextend.i64 v3 +;; @0040 v6 = iadd v5, v4 +;; @0040 v7 = load.i32 little region4 v6 +;; @0043 v8 = load.i64 notrap aligned readonly can_move region5 v0+72 +;; @0043 v9 = load.i64 notrap aligned region7 v8+8 +;; @0043 v14 = load.i64 notrap aligned region6 v8 +;; @0043 v10 = ireduce.i32 v9 +;; @0043 v11 = icmp uge v7, v10 +;; @0043 v18 = iconst.i64 0 +;; @0043 v12 = uextend.i64 v7 +;; @0043 v15 = iconst.i64 3 +;; @0043 v16 = ishl v12, v15 ; v15 = 3 +;; @0043 v17 = iadd v14, v16 +;; @0043 v19 = select_spectre_guard v11, v18, v17 ; v18 = 0 +;; @0043 v20 = load.i64 user6 aligned region8 v19 +;; @0043 v21 = iconst.i64 -2 +;; @0043 v22 = band v20, v21 ; v21 = -2 +;; @0043 brif v20, block3(v22), block2 ;; ;; block2 cold: -;; @0043 v26 = iconst.i32 0 -;; @0043 v28 = call fn0(v0, v26, v14) ; v26 = 0 -;; @0043 jump block3(v28) +;; @0043 v24 = iconst.i32 0 +;; @0043 v26 = call fn0(v0, v24, v12) ; v24 = 0 +;; @0043 jump block3(v26) ;; -;; block3(v25: i64): -;; @0043 v31 = load.i32 user7 aligned readonly v25+16 -;; @0043 v29 = load.i64 notrap aligned readonly can_move region9 v0+40 -;; @0043 v30 = load.i32 notrap aligned readonly can_move v29+4 -;; @0043 v32 = icmp eq v31, v30 -;; @0043 trapz v32, user8 -;; @0043 v34 = load.i64 notrap aligned readonly v25+8 -;; @0043 v35 = load.i64 notrap aligned readonly v25+24 -;; @0043 v36 = call_indirect sig0, v34(v35, v0, v2) -;; @004a v42 = load.i32 little region4 v8 -;; @004d v44 = load.i64 notrap aligned region7 v10+8 -;; @004d v49 = load.i64 notrap aligned region6 v10 -;; @004d v45 = ireduce.i32 v44 -;; @004d v46 = icmp uge v42, v45 -;; @004d v47 = uextend.i64 v42 -;; v70 = iconst.i64 3 -;; v71 = ishl v47, v70 ; v70 = 3 -;; @004d v52 = iadd v49, v71 -;; v72 = iconst.i64 0 -;; v73 = select_spectre_guard v46, v72, v52 ; v72 = 0 -;; @004d v55 = load.i64 user6 aligned region8 v73 -;; v74 = iconst.i64 -2 -;; v75 = band v55, v74 ; v74 = -2 -;; @004d brif v55, block5(v75), block4 +;; block3(v23: i64): +;; @0043 v29 = load.i32 user7 aligned readonly v23+16 +;; @0043 v27 = load.i64 notrap aligned readonly can_move region9 v0+40 +;; @0043 v28 = load.i32 notrap aligned readonly can_move v27+4 +;; @0043 v30 = icmp eq v29, v28 +;; @0043 trapz v30, user8 +;; @0043 v32 = load.i64 notrap aligned readonly v23+8 +;; @0043 v33 = load.i64 notrap aligned readonly v23+24 +;; @0043 v34 = call_indirect sig0, v32(v33, v0, v2) +;; @004a v40 = load.i32 little region4 v6 +;; @004d v42 = load.i64 notrap aligned region7 v8+8 +;; @004d v47 = load.i64 notrap aligned region6 v8 +;; @004d v43 = ireduce.i32 v42 +;; @004d v44 = icmp uge v40, v43 +;; @004d v45 = uextend.i64 v40 +;; v68 = iconst.i64 3 +;; v69 = ishl v45, v68 ; v68 = 3 +;; @004d v50 = iadd v47, v69 +;; v70 = iconst.i64 0 +;; v71 = select_spectre_guard v44, v70, v50 ; v70 = 0 +;; @004d v53 = load.i64 user6 aligned region8 v71 +;; v72 = iconst.i64 -2 +;; v73 = band v53, v72 ; v72 = -2 +;; @004d brif v53, block5(v73), block4 ;; ;; block4 cold: -;; v76 = iconst.i32 0 -;; @004d v61 = call fn0(v0, v76, v47) ; v76 = 0 -;; @004d jump block5(v61) +;; v74 = iconst.i32 0 +;; @004d v59 = call fn0(v0, v74, v45) ; v74 = 0 +;; @004d jump block5(v59) ;; -;; block5(v58: i64): -;; @004d v64 = load.i32 user7 aligned readonly v58+16 -;; @004d v65 = icmp eq v64, v30 -;; @004d trapz v65, user8 -;; @004d v67 = load.i64 notrap aligned readonly v58+8 -;; @004d v68 = load.i64 notrap aligned readonly v58+24 -;; @004d v69 = call_indirect sig0, v67(v68, v0, v2) +;; block5(v56: i64): +;; @004d v62 = load.i32 user7 aligned readonly v56+16 +;; @004d v63 = icmp eq v62, v28 +;; @004d trapz v63, user8 +;; @004d v65 = load.i64 notrap aligned readonly v56+8 +;; @004d v66 = load.i64 notrap aligned readonly v56+24 +;; @004d v67 = call_indirect sig0, v65(v66, v0, v2) ;; @0050 jump block1 ;; ;; block1: -;; @0050 return v36, v69 +;; @0050 return v34, v67 ;; } diff --git a/tests/disas/gc/array-new-data.wat b/tests/disas/gc/array-new-data.wat index c0fdf606b54c..e80bd7264c42 100644 --- a/tests/disas/gc/array-new-data.wat +++ b/tests/disas/gc/array-new-data.wat @@ -96,97 +96,97 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i32, v3: i32): -;; @0025 v5 = load.i32 notrap aligned region2 v0+56 -;; @0025 v7 = uextend.i64 v2 -;; @0025 v8 = uextend.i64 v3 -;; @0025 v11 = iadd v7, v8 -;; @0025 v6 = uextend.i64 v5 -;; @0025 v12 = icmp ugt v11, v6 -;; @0025 trapnz v12, heap_oob -;; @0025 v13 = load.i64 notrap aligned region3 v0+48 -;; @0025 v20 = iconst.i64 32 -;; @0025 v21 = ushr v8, v20 ; v20 = 32 -;; @0025 trapnz v21, user18 -;; @0025 v16 = iconst.i32 20 -;; @0025 v23 = uadd_overflow_trap v16, v3, user18 ; v16 = 20 -;; @0025 v24 = load.i64 notrap aligned readonly can_move region4 v0+32 -;; @0025 v25 = load.i32 notrap aligned v24 -;; @0025 v26 = load.i32 notrap aligned v24+4 -;; @0025 v32 = uextend.i64 v25 -;; @0025 v27 = uextend.i64 v23 -;; @0025 v28 = iconst.i64 15 -;; @0025 v30 = iadd v27, v28 ; v28 = 15 -;; @0025 v29 = iconst.i64 -16 -;; @0025 v31 = band v30, v29 ; v29 = -16 -;; @0025 v33 = iadd v32, v31 -;; @0025 v34 = uextend.i64 v26 -;; @0025 v35 = icmp ule v33, v34 -;; @0025 brif v35, block2, block3 +;; @0025 v4 = load.i32 notrap aligned region2 v0+56 +;; @0025 v6 = uextend.i64 v2 +;; @0025 v7 = uextend.i64 v3 +;; @0025 v10 = iadd v6, v7 +;; @0025 v5 = uextend.i64 v4 +;; @0025 v11 = icmp ugt v10, v5 +;; @0025 trapnz v11, heap_oob +;; @0025 v12 = load.i64 notrap aligned region3 v0+48 +;; @0025 v19 = iconst.i64 32 +;; @0025 v20 = ushr v7, v19 ; v19 = 32 +;; @0025 trapnz v20, user18 +;; @0025 v15 = iconst.i32 20 +;; @0025 v22 = uadd_overflow_trap v15, v3, user18 ; v15 = 20 +;; @0025 v23 = load.i64 notrap aligned readonly can_move region4 v0+32 +;; @0025 v24 = load.i32 notrap aligned v23 +;; @0025 v25 = load.i32 notrap aligned v23+4 +;; @0025 v31 = uextend.i64 v24 +;; @0025 v26 = uextend.i64 v22 +;; @0025 v27 = iconst.i64 15 +;; @0025 v29 = iadd v26, v27 ; v27 = 15 +;; @0025 v28 = iconst.i64 -16 +;; @0025 v30 = band v29, v28 ; v28 = -16 +;; @0025 v32 = iadd v31, v30 +;; @0025 v33 = uextend.i64 v25 +;; @0025 v34 = icmp ule v32, v33 +;; @0025 brif v34, block2, block3 ;; ;; block2: -;; v121 = iconst.i32 15 -;; v122 = iadd.i32 v23, v121 ; v121 = 15 -;; v125 = iconst.i32 -16 -;; v126 = band v122, v125 ; v125 = -16 -;; v128 = iadd.i32 v25, v126 -;; @0025 store notrap aligned v128, v24 -;; v142 = iconst.i32 -1476395002 -;; v143 = load.i64 notrap aligned readonly can_move region0 v0+8 -;; v144 = load.i64 notrap aligned readonly can_move region6 v143+32 -;; @0025 v49 = iadd v144, v32 -;; @0025 store notrap aligned v142, v49 ; v142 = -1476395002 -;; v145 = load.i64 notrap aligned readonly can_move region5 v0+40 -;; v146 = load.i32 notrap aligned readonly can_move v145 -;; @0025 store notrap aligned v146, v49+4 -;; v147 = band.i64 v30, v29 ; v29 = -16 -;; @0025 istore32 notrap aligned v147, v49+8 -;; @0025 jump block4(v25, v49) +;; v120 = iconst.i32 15 +;; v121 = iadd.i32 v22, v120 ; v120 = 15 +;; v124 = iconst.i32 -16 +;; v125 = band v121, v124 ; v124 = -16 +;; v127 = iadd.i32 v24, v125 +;; @0025 store notrap aligned v127, v23 +;; v141 = iconst.i32 -1476395002 +;; v142 = load.i64 notrap aligned readonly can_move region0 v0+8 +;; v143 = load.i64 notrap aligned readonly can_move region6 v142+32 +;; @0025 v48 = iadd v143, v31 +;; @0025 store notrap aligned v141, v48 ; v141 = -1476395002 +;; v144 = load.i64 notrap aligned readonly can_move region5 v0+40 +;; v145 = load.i32 notrap aligned readonly can_move v144 +;; @0025 store notrap aligned v145, v48+4 +;; v146 = band.i64 v29, v28 ; v28 = -16 +;; @0025 istore32 notrap aligned v146, v48+8 +;; @0025 jump block4(v24, v48) ;; ;; block3 cold: -;; @0025 v36 = iconst.i32 -1476395002 -;; @0025 v37 = load.i64 notrap aligned readonly can_move region5 v0+40 -;; @0025 v38 = load.i32 notrap aligned readonly can_move v37 -;; @0025 v39 = iconst.i32 16 -;; @0025 v40 = call fn0(v0, v36, v38, v23, v39) ; v36 = -1476395002, v39 = 16 -;; @0025 v41 = load.i64 notrap aligned readonly can_move region0 v0+8 -;; @0025 v42 = load.i64 notrap aligned readonly can_move region6 v41+32 -;; @0025 v43 = uextend.i64 v40 -;; @0025 v44 = iadd v42, v43 -;; @0025 jump block4(v40, v44) +;; @0025 v35 = iconst.i32 -1476395002 +;; @0025 v36 = load.i64 notrap aligned readonly can_move region5 v0+40 +;; @0025 v37 = load.i32 notrap aligned readonly can_move v36 +;; @0025 v38 = iconst.i32 16 +;; @0025 v39 = call fn0(v0, v35, v37, v22, v38) ; v35 = -1476395002, v38 = 16 +;; @0025 v40 = load.i64 notrap aligned readonly can_move region0 v0+8 +;; @0025 v41 = load.i64 notrap aligned readonly can_move region6 v40+32 +;; @0025 v42 = uextend.i64 v39 +;; @0025 v43 = iadd v41, v42 +;; @0025 jump block4(v39, v43) ;; -;; block4(v53: i32, v54: i64): -;; v113 = stack_addr.i64 ss0 -;; store notrap v53, v113 -;; @0025 v55 = iconst.i64 16 -;; @0025 v56 = iadd v54, v55 ; v55 = 16 -;; @0025 store.i32 user2 region7 v3, v56 -;; @0025 trapz v53, user16 -;; v148 = load.i64 notrap aligned readonly can_move region0 v0+8 -;; v149 = load.i64 notrap aligned readonly can_move region6 v148+32 -;; @0025 v58 = uextend.i64 v53 -;; @0025 v61 = iadd v149, v58 -;; @0025 v63 = iadd v61, v55 ; v55 = 16 -;; @0025 v64 = load.i32 user2 readonly region7 v63 -;; @0025 v65 = uextend.i64 v64 -;; @0025 v71 = icmp.i64 ugt v8, v65 -;; @0025 trapnz v71, user17 -;; @0025 v82 = load.i32 notrap aligned region2 v0+56 -;; @0025 v83 = uextend.i64 v82 -;; @0025 v89 = icmp.i64 ugt v11, v83 -;; @0025 trapnz v89, heap_oob -;; @0025 v90 = load.i64 notrap aligned region3 v0+48 -;; @0025 v101 = load.i64 notrap aligned region8 v148+40 -;; @0025 v76 = iconst.i64 20 -;; @0025 v77 = iadd v61, v76 ; v76 = 20 -;; @0025 v103 = uadd_overflow_trap v77, v8, user2 -;; @0025 v102 = iadd v149, v101 -;; @0025 v104 = icmp ugt v103, v102 -;; @0025 trapnz v104, user2 -;; @0025 v92 = iadd v90, v7 -;; @0025 call fn1(v0, v77, v92, v8), stack_map=[i32 @ ss0+0] -;; v106 = load.i32 notrap v113 +;; block4(v52: i32, v53: i64): +;; v112 = stack_addr.i64 ss0 +;; store notrap v52, v112 +;; @0025 v54 = iconst.i64 16 +;; @0025 v55 = iadd v53, v54 ; v54 = 16 +;; @0025 store.i32 user2 region7 v3, v55 +;; @0025 trapz v52, user16 +;; v147 = load.i64 notrap aligned readonly can_move region0 v0+8 +;; v148 = load.i64 notrap aligned readonly can_move region6 v147+32 +;; @0025 v57 = uextend.i64 v52 +;; @0025 v60 = iadd v148, v57 +;; @0025 v62 = iadd v60, v54 ; v54 = 16 +;; @0025 v63 = load.i32 user2 readonly region7 v62 +;; @0025 v64 = uextend.i64 v63 +;; @0025 v70 = icmp.i64 ugt v7, v64 +;; @0025 trapnz v70, user17 +;; @0025 v81 = load.i32 notrap aligned region2 v0+56 +;; @0025 v82 = uextend.i64 v81 +;; @0025 v88 = icmp.i64 ugt v10, v82 +;; @0025 trapnz v88, heap_oob +;; @0025 v89 = load.i64 notrap aligned region3 v0+48 +;; @0025 v100 = load.i64 notrap aligned region8 v147+40 +;; @0025 v75 = iconst.i64 20 +;; @0025 v76 = iadd v60, v75 ; v75 = 20 +;; @0025 v102 = uadd_overflow_trap v76, v7, user2 +;; @0025 v101 = iadd v148, v100 +;; @0025 v103 = icmp ugt v102, v101 +;; @0025 trapnz v103, user2 +;; @0025 v91 = iadd v89, v6 +;; @0025 call fn1(v0, v76, v91, v7), stack_map=[i32 @ ss0+0] ;; @0029 jump block1 ;; ;; block1: -;; @0029 return v106 +;; v105 = load.i32 notrap v112 +;; @0029 return v105 ;; } diff --git a/tests/disas/gc/array-new-default-anyref.wat b/tests/disas/gc/array-new-default-anyref.wat index 926fb2dd18a9..fa63b08ad726 100644 --- a/tests/disas/gc/array-new-default-anyref.wat +++ b/tests/disas/gc/array-new-default-anyref.wat @@ -25,100 +25,100 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i32): -;; @001f v5 = uextend.i64 v2 -;; v88 = iconst.i64 2 -;; v89 = ishl v5, v88 ; v88 = 2 -;; @001f v8 = iconst.i64 32 -;; @001f v9 = ushr v89, v8 ; v8 = 32 -;; @001f trapnz v9, user18 -;; @001f v4 = iconst.i32 20 -;; v95 = iconst.i32 2 -;; v96 = ishl v2, v95 ; v95 = 2 -;; @001f v11 = uadd_overflow_trap v4, v96, user18 ; v4 = 20 -;; @001f v12 = load.i64 notrap aligned readonly can_move region2 v0+32 -;; @001f v13 = load.i32 notrap aligned v12 -;; @001f v14 = load.i32 notrap aligned v12+4 -;; @001f v20 = uextend.i64 v13 -;; @001f v15 = uextend.i64 v11 -;; @001f v16 = iconst.i64 15 -;; @001f v18 = iadd v15, v16 ; v16 = 15 -;; @001f v17 = iconst.i64 -16 -;; @001f v19 = band v18, v17 ; v17 = -16 -;; @001f v21 = iadd v20, v19 -;; @001f v22 = uextend.i64 v14 -;; @001f v23 = icmp ule v21, v22 -;; @001f brif v23, block2, block3 +;; @001f v4 = uextend.i64 v2 +;; v87 = iconst.i64 2 +;; v88 = ishl v4, v87 ; v87 = 2 +;; @001f v7 = iconst.i64 32 +;; @001f v8 = ushr v88, v7 ; v7 = 32 +;; @001f trapnz v8, user18 +;; @001f v3 = iconst.i32 20 +;; v94 = iconst.i32 2 +;; v95 = ishl v2, v94 ; v94 = 2 +;; @001f v10 = uadd_overflow_trap v3, v95, user18 ; v3 = 20 +;; @001f v11 = load.i64 notrap aligned readonly can_move region2 v0+32 +;; @001f v12 = load.i32 notrap aligned v11 +;; @001f v13 = load.i32 notrap aligned v11+4 +;; @001f v19 = uextend.i64 v12 +;; @001f v14 = uextend.i64 v10 +;; @001f v15 = iconst.i64 15 +;; @001f v17 = iadd v14, v15 ; v15 = 15 +;; @001f v16 = iconst.i64 -16 +;; @001f v18 = band v17, v16 ; v16 = -16 +;; @001f v20 = iadd v19, v18 +;; @001f v21 = uextend.i64 v13 +;; @001f v22 = icmp ule v20, v21 +;; @001f brif v22, block2, block3 ;; ;; block2: -;; v104 = iconst.i32 15 -;; v105 = iadd.i32 v11, v104 ; v104 = 15 -;; v108 = iconst.i32 -16 -;; v109 = band v105, v108 ; v108 = -16 -;; v111 = iadd.i32 v13, v109 -;; @001f store notrap aligned v111, v12 -;; v127 = iconst.i32 -1476394994 -;; v128 = load.i64 notrap aligned readonly can_move region0 v0+8 -;; v129 = load.i64 notrap aligned readonly can_move region4 v128+32 -;; @001f v37 = iadd v129, v20 -;; @001f store notrap aligned v127, v37 ; v127 = -1476394994 -;; v130 = load.i64 notrap aligned readonly can_move region3 v0+40 -;; v131 = load.i32 notrap aligned readonly can_move v130 -;; @001f store notrap aligned v131, v37+4 -;; v132 = band.i64 v18, v17 ; v17 = -16 -;; @001f istore32 notrap aligned v132, v37+8 -;; @001f jump block4(v13, v37) +;; v103 = iconst.i32 15 +;; v104 = iadd.i32 v10, v103 ; v103 = 15 +;; v107 = iconst.i32 -16 +;; v108 = band v104, v107 ; v107 = -16 +;; v110 = iadd.i32 v12, v108 +;; @001f store notrap aligned v110, v11 +;; v126 = iconst.i32 -1476394994 +;; v127 = load.i64 notrap aligned readonly can_move region0 v0+8 +;; v128 = load.i64 notrap aligned readonly can_move region4 v127+32 +;; @001f v36 = iadd v128, v19 +;; @001f store notrap aligned v126, v36 ; v126 = -1476394994 +;; v129 = load.i64 notrap aligned readonly can_move region3 v0+40 +;; v130 = load.i32 notrap aligned readonly can_move v129 +;; @001f store notrap aligned v130, v36+4 +;; v131 = band.i64 v17, v16 ; v16 = -16 +;; @001f istore32 notrap aligned v131, v36+8 +;; @001f jump block4(v12, v36) ;; ;; block3 cold: -;; @001f v24 = iconst.i32 -1476394994 -;; @001f v25 = load.i64 notrap aligned readonly can_move region3 v0+40 -;; @001f v26 = load.i32 notrap aligned readonly can_move v25 -;; @001f v27 = iconst.i32 16 -;; @001f v28 = call fn0(v0, v24, v26, v11, v27) ; v24 = -1476394994, v27 = 16 -;; @001f v29 = load.i64 notrap aligned readonly can_move region0 v0+8 -;; @001f v30 = load.i64 notrap aligned readonly can_move region4 v29+32 -;; @001f v31 = uextend.i64 v28 -;; @001f v32 = iadd v30, v31 -;; @001f jump block4(v28, v32) +;; @001f v23 = iconst.i32 -1476394994 +;; @001f v24 = load.i64 notrap aligned readonly can_move region3 v0+40 +;; @001f v25 = load.i32 notrap aligned readonly can_move v24 +;; @001f v26 = iconst.i32 16 +;; @001f v27 = call fn0(v0, v23, v25, v10, v26) ; v23 = -1476394994, v26 = 16 +;; @001f v28 = load.i64 notrap aligned readonly can_move region0 v0+8 +;; @001f v29 = load.i64 notrap aligned readonly can_move region4 v28+32 +;; @001f v30 = uextend.i64 v27 +;; @001f v31 = iadd v29, v30 +;; @001f jump block4(v27, v31) ;; -;; block4(v41: i32, v42: i64): -;; @001f v43 = iconst.i64 16 -;; @001f v44 = iadd v42, v43 ; v43 = 16 -;; @001f store.i32 user2 region5 v2, v44 -;; @001f trapz v41, user16 -;; v133 = load.i64 notrap aligned readonly can_move region0 v0+8 -;; v134 = load.i64 notrap aligned readonly can_move region4 v133+32 -;; @001f v47 = uextend.i64 v41 -;; @001f v50 = iadd v134, v47 -;; @001f v52 = iadd v50, v43 ; v43 = 16 -;; @001f v53 = load.i32 user2 readonly region5 v52 -;; @001f v54 = uextend.i64 v53 -;; @001f v60 = icmp.i64 ugt v5, v54 -;; @001f trapnz v60, user17 -;; @001f v77 = load.i64 notrap aligned region6 v133+40 -;; @001f v65 = iconst.i64 20 -;; @001f v66 = iadd v50, v65 ; v65 = 20 -;; @001f v79 = uadd_overflow_trap v66, v89, user2 -;; @001f v78 = iadd v134, v77 -;; @001f v80 = icmp ugt v79, v78 -;; @001f trapnz v80, user2 -;; v113 = iconst.i64 0 -;; @001f v83 = icmp.i64 eq v5, v113 ; v113 = 0 -;; @001f v45 = iconst.i32 0 -;; @001f v6 = iconst.i64 4 -;; @001f v81 = iadd v66, v89 -;; @001f brif v83, block6, block5(v66) +;; block4(v40: i32, v41: i64): +;; @001f v42 = iconst.i64 16 +;; @001f v43 = iadd v41, v42 ; v42 = 16 +;; @001f store.i32 user2 region5 v2, v43 +;; @001f trapz v40, user16 +;; v132 = load.i64 notrap aligned readonly can_move region0 v0+8 +;; v133 = load.i64 notrap aligned readonly can_move region4 v132+32 +;; @001f v46 = uextend.i64 v40 +;; @001f v49 = iadd v133, v46 +;; @001f v51 = iadd v49, v42 ; v42 = 16 +;; @001f v52 = load.i32 user2 readonly region5 v51 +;; @001f v53 = uextend.i64 v52 +;; @001f v59 = icmp.i64 ugt v4, v53 +;; @001f trapnz v59, user17 +;; @001f v76 = load.i64 notrap aligned region6 v132+40 +;; @001f v64 = iconst.i64 20 +;; @001f v65 = iadd v49, v64 ; v64 = 20 +;; @001f v78 = uadd_overflow_trap v65, v88, user2 +;; @001f v77 = iadd v133, v76 +;; @001f v79 = icmp ugt v78, v77 +;; @001f trapnz v79, user2 +;; v112 = iconst.i64 0 +;; @001f v82 = icmp.i64 eq v4, v112 ; v112 = 0 +;; @001f v44 = iconst.i32 0 +;; @001f v5 = iconst.i64 4 +;; @001f v80 = iadd v65, v88 +;; @001f brif v82, block6, block5(v65) ;; -;; block5(v84: i64): -;; v135 = iconst.i32 0 -;; @001f store user2 little region5 v135, v84 ; v135 = 0 -;; v136 = iconst.i64 4 -;; v137 = iadd v84, v136 ; v136 = 4 -;; @001f v87 = icmp eq v137, v81 -;; @001f brif v87, block6, block5(v137) +;; block5(v83: i64): +;; v134 = iconst.i32 0 +;; @001f store user2 little region5 v134, v83 ; v134 = 0 +;; v135 = iconst.i64 4 +;; v136 = iadd v83, v135 ; v135 = 4 +;; @001f v86 = icmp eq v136, v80 +;; @001f brif v86, block6, block5(v136) ;; ;; block6: -;; @0022 jump block1(v41) +;; @0022 jump block1 ;; -;; block1(v3: i32): -;; @0022 return v3 +;; block1: +;; @0022 return v40 ;; } diff --git a/tests/disas/gc/array-new-default-exnref.wat b/tests/disas/gc/array-new-default-exnref.wat index 7c453c266710..fc74c4cdb8d6 100644 --- a/tests/disas/gc/array-new-default-exnref.wat +++ b/tests/disas/gc/array-new-default-exnref.wat @@ -25,100 +25,100 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i32): -;; @001f v5 = uextend.i64 v2 -;; v88 = iconst.i64 2 -;; v89 = ishl v5, v88 ; v88 = 2 -;; @001f v8 = iconst.i64 32 -;; @001f v9 = ushr v89, v8 ; v8 = 32 -;; @001f trapnz v9, user18 -;; @001f v4 = iconst.i32 20 -;; v95 = iconst.i32 2 -;; v96 = ishl v2, v95 ; v95 = 2 -;; @001f v11 = uadd_overflow_trap v4, v96, user18 ; v4 = 20 -;; @001f v12 = load.i64 notrap aligned readonly can_move region2 v0+32 -;; @001f v13 = load.i32 notrap aligned v12 -;; @001f v14 = load.i32 notrap aligned v12+4 -;; @001f v20 = uextend.i64 v13 -;; @001f v15 = uextend.i64 v11 -;; @001f v16 = iconst.i64 15 -;; @001f v18 = iadd v15, v16 ; v16 = 15 -;; @001f v17 = iconst.i64 -16 -;; @001f v19 = band v18, v17 ; v17 = -16 -;; @001f v21 = iadd v20, v19 -;; @001f v22 = uextend.i64 v14 -;; @001f v23 = icmp ule v21, v22 -;; @001f brif v23, block2, block3 +;; @001f v4 = uextend.i64 v2 +;; v87 = iconst.i64 2 +;; v88 = ishl v4, v87 ; v87 = 2 +;; @001f v7 = iconst.i64 32 +;; @001f v8 = ushr v88, v7 ; v7 = 32 +;; @001f trapnz v8, user18 +;; @001f v3 = iconst.i32 20 +;; v94 = iconst.i32 2 +;; v95 = ishl v2, v94 ; v94 = 2 +;; @001f v10 = uadd_overflow_trap v3, v95, user18 ; v3 = 20 +;; @001f v11 = load.i64 notrap aligned readonly can_move region2 v0+32 +;; @001f v12 = load.i32 notrap aligned v11 +;; @001f v13 = load.i32 notrap aligned v11+4 +;; @001f v19 = uextend.i64 v12 +;; @001f v14 = uextend.i64 v10 +;; @001f v15 = iconst.i64 15 +;; @001f v17 = iadd v14, v15 ; v15 = 15 +;; @001f v16 = iconst.i64 -16 +;; @001f v18 = band v17, v16 ; v16 = -16 +;; @001f v20 = iadd v19, v18 +;; @001f v21 = uextend.i64 v13 +;; @001f v22 = icmp ule v20, v21 +;; @001f brif v22, block2, block3 ;; ;; block2: -;; v104 = iconst.i32 15 -;; v105 = iadd.i32 v11, v104 ; v104 = 15 -;; v108 = iconst.i32 -16 -;; v109 = band v105, v108 ; v108 = -16 -;; v111 = iadd.i32 v13, v109 -;; @001f store notrap aligned v111, v12 -;; v127 = iconst.i32 -1476394994 -;; v128 = load.i64 notrap aligned readonly can_move region0 v0+8 -;; v129 = load.i64 notrap aligned readonly can_move region4 v128+32 -;; @001f v37 = iadd v129, v20 -;; @001f store notrap aligned v127, v37 ; v127 = -1476394994 -;; v130 = load.i64 notrap aligned readonly can_move region3 v0+40 -;; v131 = load.i32 notrap aligned readonly can_move v130 -;; @001f store notrap aligned v131, v37+4 -;; v132 = band.i64 v18, v17 ; v17 = -16 -;; @001f istore32 notrap aligned v132, v37+8 -;; @001f jump block4(v13, v37) +;; v103 = iconst.i32 15 +;; v104 = iadd.i32 v10, v103 ; v103 = 15 +;; v107 = iconst.i32 -16 +;; v108 = band v104, v107 ; v107 = -16 +;; v110 = iadd.i32 v12, v108 +;; @001f store notrap aligned v110, v11 +;; v126 = iconst.i32 -1476394994 +;; v127 = load.i64 notrap aligned readonly can_move region0 v0+8 +;; v128 = load.i64 notrap aligned readonly can_move region4 v127+32 +;; @001f v36 = iadd v128, v19 +;; @001f store notrap aligned v126, v36 ; v126 = -1476394994 +;; v129 = load.i64 notrap aligned readonly can_move region3 v0+40 +;; v130 = load.i32 notrap aligned readonly can_move v129 +;; @001f store notrap aligned v130, v36+4 +;; v131 = band.i64 v17, v16 ; v16 = -16 +;; @001f istore32 notrap aligned v131, v36+8 +;; @001f jump block4(v12, v36) ;; ;; block3 cold: -;; @001f v24 = iconst.i32 -1476394994 -;; @001f v25 = load.i64 notrap aligned readonly can_move region3 v0+40 -;; @001f v26 = load.i32 notrap aligned readonly can_move v25 -;; @001f v27 = iconst.i32 16 -;; @001f v28 = call fn0(v0, v24, v26, v11, v27) ; v24 = -1476394994, v27 = 16 -;; @001f v29 = load.i64 notrap aligned readonly can_move region0 v0+8 -;; @001f v30 = load.i64 notrap aligned readonly can_move region4 v29+32 -;; @001f v31 = uextend.i64 v28 -;; @001f v32 = iadd v30, v31 -;; @001f jump block4(v28, v32) +;; @001f v23 = iconst.i32 -1476394994 +;; @001f v24 = load.i64 notrap aligned readonly can_move region3 v0+40 +;; @001f v25 = load.i32 notrap aligned readonly can_move v24 +;; @001f v26 = iconst.i32 16 +;; @001f v27 = call fn0(v0, v23, v25, v10, v26) ; v23 = -1476394994, v26 = 16 +;; @001f v28 = load.i64 notrap aligned readonly can_move region0 v0+8 +;; @001f v29 = load.i64 notrap aligned readonly can_move region4 v28+32 +;; @001f v30 = uextend.i64 v27 +;; @001f v31 = iadd v29, v30 +;; @001f jump block4(v27, v31) ;; -;; block4(v41: i32, v42: i64): -;; @001f v43 = iconst.i64 16 -;; @001f v44 = iadd v42, v43 ; v43 = 16 -;; @001f store.i32 user2 region5 v2, v44 -;; @001f trapz v41, user16 -;; v133 = load.i64 notrap aligned readonly can_move region0 v0+8 -;; v134 = load.i64 notrap aligned readonly can_move region4 v133+32 -;; @001f v47 = uextend.i64 v41 -;; @001f v50 = iadd v134, v47 -;; @001f v52 = iadd v50, v43 ; v43 = 16 -;; @001f v53 = load.i32 user2 readonly region5 v52 -;; @001f v54 = uextend.i64 v53 -;; @001f v60 = icmp.i64 ugt v5, v54 -;; @001f trapnz v60, user17 -;; @001f v77 = load.i64 notrap aligned region6 v133+40 -;; @001f v65 = iconst.i64 20 -;; @001f v66 = iadd v50, v65 ; v65 = 20 -;; @001f v79 = uadd_overflow_trap v66, v89, user2 -;; @001f v78 = iadd v134, v77 -;; @001f v80 = icmp ugt v79, v78 -;; @001f trapnz v80, user2 -;; v113 = iconst.i64 0 -;; @001f v83 = icmp.i64 eq v5, v113 ; v113 = 0 -;; @001f v45 = iconst.i32 0 -;; @001f v6 = iconst.i64 4 -;; @001f v81 = iadd v66, v89 -;; @001f brif v83, block6, block5(v66) +;; block4(v40: i32, v41: i64): +;; @001f v42 = iconst.i64 16 +;; @001f v43 = iadd v41, v42 ; v42 = 16 +;; @001f store.i32 user2 region5 v2, v43 +;; @001f trapz v40, user16 +;; v132 = load.i64 notrap aligned readonly can_move region0 v0+8 +;; v133 = load.i64 notrap aligned readonly can_move region4 v132+32 +;; @001f v46 = uextend.i64 v40 +;; @001f v49 = iadd v133, v46 +;; @001f v51 = iadd v49, v42 ; v42 = 16 +;; @001f v52 = load.i32 user2 readonly region5 v51 +;; @001f v53 = uextend.i64 v52 +;; @001f v59 = icmp.i64 ugt v4, v53 +;; @001f trapnz v59, user17 +;; @001f v76 = load.i64 notrap aligned region6 v132+40 +;; @001f v64 = iconst.i64 20 +;; @001f v65 = iadd v49, v64 ; v64 = 20 +;; @001f v78 = uadd_overflow_trap v65, v88, user2 +;; @001f v77 = iadd v133, v76 +;; @001f v79 = icmp ugt v78, v77 +;; @001f trapnz v79, user2 +;; v112 = iconst.i64 0 +;; @001f v82 = icmp.i64 eq v4, v112 ; v112 = 0 +;; @001f v44 = iconst.i32 0 +;; @001f v5 = iconst.i64 4 +;; @001f v80 = iadd v65, v88 +;; @001f brif v82, block6, block5(v65) ;; -;; block5(v84: i64): -;; v135 = iconst.i32 0 -;; @001f store user2 little region5 v135, v84 ; v135 = 0 -;; v136 = iconst.i64 4 -;; v137 = iadd v84, v136 ; v136 = 4 -;; @001f v87 = icmp eq v137, v81 -;; @001f brif v87, block6, block5(v137) +;; block5(v83: i64): +;; v134 = iconst.i32 0 +;; @001f store user2 little region5 v134, v83 ; v134 = 0 +;; v135 = iconst.i64 4 +;; v136 = iadd v83, v135 ; v135 = 4 +;; @001f v86 = icmp eq v136, v80 +;; @001f brif v86, block6, block5(v136) ;; ;; block6: -;; @0022 jump block1(v41) +;; @0022 jump block1 ;; -;; block1(v3: i32): -;; @0022 return v3 +;; block1: +;; @0022 return v40 ;; } diff --git a/tests/disas/gc/array-new-default-externref.wat b/tests/disas/gc/array-new-default-externref.wat index 30666655e7ad..40ab7029e0b5 100644 --- a/tests/disas/gc/array-new-default-externref.wat +++ b/tests/disas/gc/array-new-default-externref.wat @@ -25,100 +25,100 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i32): -;; @001f v5 = uextend.i64 v2 -;; v88 = iconst.i64 2 -;; v89 = ishl v5, v88 ; v88 = 2 -;; @001f v8 = iconst.i64 32 -;; @001f v9 = ushr v89, v8 ; v8 = 32 -;; @001f trapnz v9, user18 -;; @001f v4 = iconst.i32 20 -;; v95 = iconst.i32 2 -;; v96 = ishl v2, v95 ; v95 = 2 -;; @001f v11 = uadd_overflow_trap v4, v96, user18 ; v4 = 20 -;; @001f v12 = load.i64 notrap aligned readonly can_move region2 v0+32 -;; @001f v13 = load.i32 notrap aligned v12 -;; @001f v14 = load.i32 notrap aligned v12+4 -;; @001f v20 = uextend.i64 v13 -;; @001f v15 = uextend.i64 v11 -;; @001f v16 = iconst.i64 15 -;; @001f v18 = iadd v15, v16 ; v16 = 15 -;; @001f v17 = iconst.i64 -16 -;; @001f v19 = band v18, v17 ; v17 = -16 -;; @001f v21 = iadd v20, v19 -;; @001f v22 = uextend.i64 v14 -;; @001f v23 = icmp ule v21, v22 -;; @001f brif v23, block2, block3 +;; @001f v4 = uextend.i64 v2 +;; v87 = iconst.i64 2 +;; v88 = ishl v4, v87 ; v87 = 2 +;; @001f v7 = iconst.i64 32 +;; @001f v8 = ushr v88, v7 ; v7 = 32 +;; @001f trapnz v8, user18 +;; @001f v3 = iconst.i32 20 +;; v94 = iconst.i32 2 +;; v95 = ishl v2, v94 ; v94 = 2 +;; @001f v10 = uadd_overflow_trap v3, v95, user18 ; v3 = 20 +;; @001f v11 = load.i64 notrap aligned readonly can_move region2 v0+32 +;; @001f v12 = load.i32 notrap aligned v11 +;; @001f v13 = load.i32 notrap aligned v11+4 +;; @001f v19 = uextend.i64 v12 +;; @001f v14 = uextend.i64 v10 +;; @001f v15 = iconst.i64 15 +;; @001f v17 = iadd v14, v15 ; v15 = 15 +;; @001f v16 = iconst.i64 -16 +;; @001f v18 = band v17, v16 ; v16 = -16 +;; @001f v20 = iadd v19, v18 +;; @001f v21 = uextend.i64 v13 +;; @001f v22 = icmp ule v20, v21 +;; @001f brif v22, block2, block3 ;; ;; block2: -;; v104 = iconst.i32 15 -;; v105 = iadd.i32 v11, v104 ; v104 = 15 -;; v108 = iconst.i32 -16 -;; v109 = band v105, v108 ; v108 = -16 -;; v111 = iadd.i32 v13, v109 -;; @001f store notrap aligned v111, v12 -;; v127 = iconst.i32 -1476394994 -;; v128 = load.i64 notrap aligned readonly can_move region0 v0+8 -;; v129 = load.i64 notrap aligned readonly can_move region4 v128+32 -;; @001f v37 = iadd v129, v20 -;; @001f store notrap aligned v127, v37 ; v127 = -1476394994 -;; v130 = load.i64 notrap aligned readonly can_move region3 v0+40 -;; v131 = load.i32 notrap aligned readonly can_move v130 -;; @001f store notrap aligned v131, v37+4 -;; v132 = band.i64 v18, v17 ; v17 = -16 -;; @001f istore32 notrap aligned v132, v37+8 -;; @001f jump block4(v13, v37) +;; v103 = iconst.i32 15 +;; v104 = iadd.i32 v10, v103 ; v103 = 15 +;; v107 = iconst.i32 -16 +;; v108 = band v104, v107 ; v107 = -16 +;; v110 = iadd.i32 v12, v108 +;; @001f store notrap aligned v110, v11 +;; v126 = iconst.i32 -1476394994 +;; v127 = load.i64 notrap aligned readonly can_move region0 v0+8 +;; v128 = load.i64 notrap aligned readonly can_move region4 v127+32 +;; @001f v36 = iadd v128, v19 +;; @001f store notrap aligned v126, v36 ; v126 = -1476394994 +;; v129 = load.i64 notrap aligned readonly can_move region3 v0+40 +;; v130 = load.i32 notrap aligned readonly can_move v129 +;; @001f store notrap aligned v130, v36+4 +;; v131 = band.i64 v17, v16 ; v16 = -16 +;; @001f istore32 notrap aligned v131, v36+8 +;; @001f jump block4(v12, v36) ;; ;; block3 cold: -;; @001f v24 = iconst.i32 -1476394994 -;; @001f v25 = load.i64 notrap aligned readonly can_move region3 v0+40 -;; @001f v26 = load.i32 notrap aligned readonly can_move v25 -;; @001f v27 = iconst.i32 16 -;; @001f v28 = call fn0(v0, v24, v26, v11, v27) ; v24 = -1476394994, v27 = 16 -;; @001f v29 = load.i64 notrap aligned readonly can_move region0 v0+8 -;; @001f v30 = load.i64 notrap aligned readonly can_move region4 v29+32 -;; @001f v31 = uextend.i64 v28 -;; @001f v32 = iadd v30, v31 -;; @001f jump block4(v28, v32) +;; @001f v23 = iconst.i32 -1476394994 +;; @001f v24 = load.i64 notrap aligned readonly can_move region3 v0+40 +;; @001f v25 = load.i32 notrap aligned readonly can_move v24 +;; @001f v26 = iconst.i32 16 +;; @001f v27 = call fn0(v0, v23, v25, v10, v26) ; v23 = -1476394994, v26 = 16 +;; @001f v28 = load.i64 notrap aligned readonly can_move region0 v0+8 +;; @001f v29 = load.i64 notrap aligned readonly can_move region4 v28+32 +;; @001f v30 = uextend.i64 v27 +;; @001f v31 = iadd v29, v30 +;; @001f jump block4(v27, v31) ;; -;; block4(v41: i32, v42: i64): -;; @001f v43 = iconst.i64 16 -;; @001f v44 = iadd v42, v43 ; v43 = 16 -;; @001f store.i32 user2 region5 v2, v44 -;; @001f trapz v41, user16 -;; v133 = load.i64 notrap aligned readonly can_move region0 v0+8 -;; v134 = load.i64 notrap aligned readonly can_move region4 v133+32 -;; @001f v47 = uextend.i64 v41 -;; @001f v50 = iadd v134, v47 -;; @001f v52 = iadd v50, v43 ; v43 = 16 -;; @001f v53 = load.i32 user2 readonly region5 v52 -;; @001f v54 = uextend.i64 v53 -;; @001f v60 = icmp.i64 ugt v5, v54 -;; @001f trapnz v60, user17 -;; @001f v77 = load.i64 notrap aligned region6 v133+40 -;; @001f v65 = iconst.i64 20 -;; @001f v66 = iadd v50, v65 ; v65 = 20 -;; @001f v79 = uadd_overflow_trap v66, v89, user2 -;; @001f v78 = iadd v134, v77 -;; @001f v80 = icmp ugt v79, v78 -;; @001f trapnz v80, user2 -;; v113 = iconst.i64 0 -;; @001f v83 = icmp.i64 eq v5, v113 ; v113 = 0 -;; @001f v45 = iconst.i32 0 -;; @001f v6 = iconst.i64 4 -;; @001f v81 = iadd v66, v89 -;; @001f brif v83, block6, block5(v66) +;; block4(v40: i32, v41: i64): +;; @001f v42 = iconst.i64 16 +;; @001f v43 = iadd v41, v42 ; v42 = 16 +;; @001f store.i32 user2 region5 v2, v43 +;; @001f trapz v40, user16 +;; v132 = load.i64 notrap aligned readonly can_move region0 v0+8 +;; v133 = load.i64 notrap aligned readonly can_move region4 v132+32 +;; @001f v46 = uextend.i64 v40 +;; @001f v49 = iadd v133, v46 +;; @001f v51 = iadd v49, v42 ; v42 = 16 +;; @001f v52 = load.i32 user2 readonly region5 v51 +;; @001f v53 = uextend.i64 v52 +;; @001f v59 = icmp.i64 ugt v4, v53 +;; @001f trapnz v59, user17 +;; @001f v76 = load.i64 notrap aligned region6 v132+40 +;; @001f v64 = iconst.i64 20 +;; @001f v65 = iadd v49, v64 ; v64 = 20 +;; @001f v78 = uadd_overflow_trap v65, v88, user2 +;; @001f v77 = iadd v133, v76 +;; @001f v79 = icmp ugt v78, v77 +;; @001f trapnz v79, user2 +;; v112 = iconst.i64 0 +;; @001f v82 = icmp.i64 eq v4, v112 ; v112 = 0 +;; @001f v44 = iconst.i32 0 +;; @001f v5 = iconst.i64 4 +;; @001f v80 = iadd v65, v88 +;; @001f brif v82, block6, block5(v65) ;; -;; block5(v84: i64): -;; v135 = iconst.i32 0 -;; @001f store user2 little region5 v135, v84 ; v135 = 0 -;; v136 = iconst.i64 4 -;; v137 = iadd v84, v136 ; v136 = 4 -;; @001f v87 = icmp eq v137, v81 -;; @001f brif v87, block6, block5(v137) +;; block5(v83: i64): +;; v134 = iconst.i32 0 +;; @001f store user2 little region5 v134, v83 ; v134 = 0 +;; v135 = iconst.i64 4 +;; v136 = iadd v83, v135 ; v135 = 4 +;; @001f v86 = icmp eq v136, v80 +;; @001f brif v86, block6, block5(v136) ;; ;; block6: -;; @0022 jump block1(v41) +;; @0022 jump block1 ;; -;; block1(v3: i32): -;; @0022 return v3 +;; block1: +;; @0022 return v40 ;; } diff --git a/tests/disas/gc/array-new-default-f32.wat b/tests/disas/gc/array-new-default-f32.wat index 7b4845e5cd44..ef88e66e905a 100644 --- a/tests/disas/gc/array-new-default-f32.wat +++ b/tests/disas/gc/array-new-default-f32.wat @@ -28,89 +28,89 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i32): -;; @001f v5 = uextend.i64 v2 -;; v91 = iconst.i64 2 -;; v92 = ishl v5, v91 ; v91 = 2 -;; @001f v8 = iconst.i64 32 -;; @001f v9 = ushr v92, v8 ; v8 = 32 -;; @001f trapnz v9, user18 -;; @001f v4 = iconst.i32 20 -;; v98 = iconst.i32 2 -;; v99 = ishl v2, v98 ; v98 = 2 -;; @001f v11 = uadd_overflow_trap v4, v99, user18 ; v4 = 20 -;; @001f v12 = load.i64 notrap aligned readonly can_move region2 v0+32 -;; @001f v13 = load.i32 notrap aligned v12 -;; @001f v14 = load.i32 notrap aligned v12+4 -;; @001f v20 = uextend.i64 v13 -;; @001f v15 = uextend.i64 v11 -;; @001f v16 = iconst.i64 15 -;; @001f v18 = iadd v15, v16 ; v16 = 15 -;; @001f v17 = iconst.i64 -16 -;; @001f v19 = band v18, v17 ; v17 = -16 -;; @001f v21 = iadd v20, v19 -;; @001f v22 = uextend.i64 v14 -;; @001f v23 = icmp ule v21, v22 -;; @001f brif v23, block2, block3 +;; @001f v4 = uextend.i64 v2 +;; v90 = iconst.i64 2 +;; v91 = ishl v4, v90 ; v90 = 2 +;; @001f v7 = iconst.i64 32 +;; @001f v8 = ushr v91, v7 ; v7 = 32 +;; @001f trapnz v8, user18 +;; @001f v3 = iconst.i32 20 +;; v97 = iconst.i32 2 +;; v98 = ishl v2, v97 ; v97 = 2 +;; @001f v10 = uadd_overflow_trap v3, v98, user18 ; v3 = 20 +;; @001f v11 = load.i64 notrap aligned readonly can_move region2 v0+32 +;; @001f v12 = load.i32 notrap aligned v11 +;; @001f v13 = load.i32 notrap aligned v11+4 +;; @001f v19 = uextend.i64 v12 +;; @001f v14 = uextend.i64 v10 +;; @001f v15 = iconst.i64 15 +;; @001f v17 = iadd v14, v15 ; v15 = 15 +;; @001f v16 = iconst.i64 -16 +;; @001f v18 = band v17, v16 ; v16 = -16 +;; @001f v20 = iadd v19, v18 +;; @001f v21 = uextend.i64 v13 +;; @001f v22 = icmp ule v20, v21 +;; @001f brif v22, block2, block3 ;; ;; block2: -;; v107 = iconst.i32 15 -;; v108 = iadd.i32 v11, v107 ; v107 = 15 -;; v111 = iconst.i32 -16 -;; v112 = band v108, v111 ; v111 = -16 -;; v114 = iadd.i32 v13, v112 -;; @001f store notrap aligned v114, v12 -;; v130 = iconst.i32 -1476395002 -;; v131 = load.i64 notrap aligned readonly can_move region0 v0+8 -;; v132 = load.i64 notrap aligned readonly can_move region4 v131+32 -;; @001f v37 = iadd v132, v20 -;; @001f store notrap aligned v130, v37 ; v130 = -1476395002 -;; v133 = load.i64 notrap aligned readonly can_move region3 v0+40 -;; v134 = load.i32 notrap aligned readonly can_move v133 -;; @001f store notrap aligned v134, v37+4 -;; v135 = band.i64 v18, v17 ; v17 = -16 -;; @001f istore32 notrap aligned v135, v37+8 -;; @001f jump block4(v13, v37) +;; v106 = iconst.i32 15 +;; v107 = iadd.i32 v10, v106 ; v106 = 15 +;; v110 = iconst.i32 -16 +;; v111 = band v107, v110 ; v110 = -16 +;; v113 = iadd.i32 v12, v111 +;; @001f store notrap aligned v113, v11 +;; v129 = iconst.i32 -1476395002 +;; v130 = load.i64 notrap aligned readonly can_move region0 v0+8 +;; v131 = load.i64 notrap aligned readonly can_move region4 v130+32 +;; @001f v36 = iadd v131, v19 +;; @001f store notrap aligned v129, v36 ; v129 = -1476395002 +;; v132 = load.i64 notrap aligned readonly can_move region3 v0+40 +;; v133 = load.i32 notrap aligned readonly can_move v132 +;; @001f store notrap aligned v133, v36+4 +;; v134 = band.i64 v17, v16 ; v16 = -16 +;; @001f istore32 notrap aligned v134, v36+8 +;; @001f jump block4(v12, v36) ;; ;; block3 cold: -;; @001f v24 = iconst.i32 -1476395002 -;; @001f v25 = load.i64 notrap aligned readonly can_move region3 v0+40 -;; @001f v26 = load.i32 notrap aligned readonly can_move v25 -;; @001f v27 = iconst.i32 16 -;; @001f v28 = call fn0(v0, v24, v26, v11, v27) ; v24 = -1476395002, v27 = 16 -;; @001f v29 = load.i64 notrap aligned readonly can_move region0 v0+8 -;; @001f v30 = load.i64 notrap aligned readonly can_move region4 v29+32 -;; @001f v31 = uextend.i64 v28 -;; @001f v32 = iadd v30, v31 -;; @001f jump block4(v28, v32) +;; @001f v23 = iconst.i32 -1476395002 +;; @001f v24 = load.i64 notrap aligned readonly can_move region3 v0+40 +;; @001f v25 = load.i32 notrap aligned readonly can_move v24 +;; @001f v26 = iconst.i32 16 +;; @001f v27 = call fn0(v0, v23, v25, v10, v26) ; v23 = -1476395002, v26 = 16 +;; @001f v28 = load.i64 notrap aligned readonly can_move region0 v0+8 +;; @001f v29 = load.i64 notrap aligned readonly can_move region4 v28+32 +;; @001f v30 = uextend.i64 v27 +;; @001f v31 = iadd v29, v30 +;; @001f jump block4(v27, v31) ;; -;; block4(v41: i32, v42: i64): -;; v90 = stack_addr.i64 ss0 -;; store notrap v41, v90 -;; @001f v43 = iconst.i64 16 -;; @001f v44 = iadd v42, v43 ; v43 = 16 -;; @001f store.i32 user2 region5 v2, v44 -;; @001f trapz v41, user16 -;; v136 = load.i64 notrap aligned readonly can_move region0 v0+8 -;; v137 = load.i64 notrap aligned readonly can_move region4 v136+32 -;; @001f v47 = uextend.i64 v41 -;; @001f v50 = iadd v137, v47 -;; @001f v52 = iadd v50, v43 ; v43 = 16 -;; @001f v53 = load.i32 user2 readonly region5 v52 -;; @001f v54 = uextend.i64 v53 -;; @001f v60 = icmp.i64 ugt v5, v54 -;; @001f trapnz v60, user17 -;; @001f v77 = load.i64 notrap aligned region6 v136+40 -;; @001f v65 = iconst.i64 20 -;; @001f v66 = iadd v50, v65 ; v65 = 20 -;; @001f v79 = uadd_overflow_trap v66, v92, user2 -;; @001f v78 = iadd v137, v77 -;; @001f v80 = icmp ugt v79, v78 -;; @001f trapnz v80, user2 -;; @001f v46 = iconst.i32 0 -;; @001f call fn1(v0, v66, v46, v92), stack_map=[i32 @ ss0+0] ; v46 = 0 -;; v83 = load.i32 notrap v90 +;; block4(v40: i32, v41: i64): +;; v89 = stack_addr.i64 ss0 +;; store notrap v40, v89 +;; @001f v42 = iconst.i64 16 +;; @001f v43 = iadd v41, v42 ; v42 = 16 +;; @001f store.i32 user2 region5 v2, v43 +;; @001f trapz v40, user16 +;; v135 = load.i64 notrap aligned readonly can_move region0 v0+8 +;; v136 = load.i64 notrap aligned readonly can_move region4 v135+32 +;; @001f v46 = uextend.i64 v40 +;; @001f v49 = iadd v136, v46 +;; @001f v51 = iadd v49, v42 ; v42 = 16 +;; @001f v52 = load.i32 user2 readonly region5 v51 +;; @001f v53 = uextend.i64 v52 +;; @001f v59 = icmp.i64 ugt v4, v53 +;; @001f trapnz v59, user17 +;; @001f v76 = load.i64 notrap aligned region6 v135+40 +;; @001f v64 = iconst.i64 20 +;; @001f v65 = iadd v49, v64 ; v64 = 20 +;; @001f v78 = uadd_overflow_trap v65, v91, user2 +;; @001f v77 = iadd v136, v76 +;; @001f v79 = icmp ugt v78, v77 +;; @001f trapnz v79, user2 +;; @001f v45 = iconst.i32 0 +;; @001f call fn1(v0, v65, v45, v91), stack_map=[i32 @ ss0+0] ; v45 = 0 ;; @0022 jump block1 ;; ;; block1: -;; @0022 return v83 +;; v82 = load.i32 notrap v89 +;; @0022 return v82 ;; } diff --git a/tests/disas/gc/array-new-default-f64.wat b/tests/disas/gc/array-new-default-f64.wat index 695f11f6e1f6..824dc658ea15 100644 --- a/tests/disas/gc/array-new-default-f64.wat +++ b/tests/disas/gc/array-new-default-f64.wat @@ -28,89 +28,89 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i32): -;; @001f v5 = uextend.i64 v2 -;; v91 = iconst.i64 3 -;; v92 = ishl v5, v91 ; v91 = 3 -;; @001f v8 = iconst.i64 32 -;; @001f v9 = ushr v92, v8 ; v8 = 32 -;; @001f trapnz v9, user18 -;; @001f v4 = iconst.i32 24 -;; v98 = iconst.i32 3 -;; v99 = ishl v2, v98 ; v98 = 3 -;; @001f v11 = uadd_overflow_trap v4, v99, user18 ; v4 = 24 -;; @001f v12 = load.i64 notrap aligned readonly can_move region2 v0+32 -;; @001f v13 = load.i32 notrap aligned v12 -;; @001f v14 = load.i32 notrap aligned v12+4 -;; @001f v20 = uextend.i64 v13 -;; @001f v15 = uextend.i64 v11 -;; @001f v16 = iconst.i64 15 -;; @001f v18 = iadd v15, v16 ; v16 = 15 -;; @001f v17 = iconst.i64 -16 -;; @001f v19 = band v18, v17 ; v17 = -16 -;; @001f v21 = iadd v20, v19 -;; @001f v22 = uextend.i64 v14 -;; @001f v23 = icmp ule v21, v22 -;; @001f brif v23, block2, block3 +;; @001f v4 = uextend.i64 v2 +;; v90 = iconst.i64 3 +;; v91 = ishl v4, v90 ; v90 = 3 +;; @001f v7 = iconst.i64 32 +;; @001f v8 = ushr v91, v7 ; v7 = 32 +;; @001f trapnz v8, user18 +;; @001f v3 = iconst.i32 24 +;; v97 = iconst.i32 3 +;; v98 = ishl v2, v97 ; v97 = 3 +;; @001f v10 = uadd_overflow_trap v3, v98, user18 ; v3 = 24 +;; @001f v11 = load.i64 notrap aligned readonly can_move region2 v0+32 +;; @001f v12 = load.i32 notrap aligned v11 +;; @001f v13 = load.i32 notrap aligned v11+4 +;; @001f v19 = uextend.i64 v12 +;; @001f v14 = uextend.i64 v10 +;; @001f v15 = iconst.i64 15 +;; @001f v17 = iadd v14, v15 ; v15 = 15 +;; @001f v16 = iconst.i64 -16 +;; @001f v18 = band v17, v16 ; v16 = -16 +;; @001f v20 = iadd v19, v18 +;; @001f v21 = uextend.i64 v13 +;; @001f v22 = icmp ule v20, v21 +;; @001f brif v22, block2, block3 ;; ;; block2: -;; v107 = iconst.i32 15 -;; v108 = iadd.i32 v11, v107 ; v107 = 15 -;; v111 = iconst.i32 -16 -;; v112 = band v108, v111 ; v111 = -16 -;; v114 = iadd.i32 v13, v112 -;; @001f store notrap aligned v114, v12 -;; v130 = iconst.i32 -1476395002 -;; v131 = load.i64 notrap aligned readonly can_move region0 v0+8 -;; v132 = load.i64 notrap aligned readonly can_move region4 v131+32 -;; @001f v37 = iadd v132, v20 -;; @001f store notrap aligned v130, v37 ; v130 = -1476395002 -;; v133 = load.i64 notrap aligned readonly can_move region3 v0+40 -;; v134 = load.i32 notrap aligned readonly can_move v133 -;; @001f store notrap aligned v134, v37+4 -;; v135 = band.i64 v18, v17 ; v17 = -16 -;; @001f istore32 notrap aligned v135, v37+8 -;; @001f jump block4(v13, v37) +;; v106 = iconst.i32 15 +;; v107 = iadd.i32 v10, v106 ; v106 = 15 +;; v110 = iconst.i32 -16 +;; v111 = band v107, v110 ; v110 = -16 +;; v113 = iadd.i32 v12, v111 +;; @001f store notrap aligned v113, v11 +;; v129 = iconst.i32 -1476395002 +;; v130 = load.i64 notrap aligned readonly can_move region0 v0+8 +;; v131 = load.i64 notrap aligned readonly can_move region4 v130+32 +;; @001f v36 = iadd v131, v19 +;; @001f store notrap aligned v129, v36 ; v129 = -1476395002 +;; v132 = load.i64 notrap aligned readonly can_move region3 v0+40 +;; v133 = load.i32 notrap aligned readonly can_move v132 +;; @001f store notrap aligned v133, v36+4 +;; v134 = band.i64 v17, v16 ; v16 = -16 +;; @001f istore32 notrap aligned v134, v36+8 +;; @001f jump block4(v12, v36) ;; ;; block3 cold: -;; @001f v24 = iconst.i32 -1476395002 -;; @001f v25 = load.i64 notrap aligned readonly can_move region3 v0+40 -;; @001f v26 = load.i32 notrap aligned readonly can_move v25 -;; @001f v27 = iconst.i32 16 -;; @001f v28 = call fn0(v0, v24, v26, v11, v27) ; v24 = -1476395002, v27 = 16 -;; @001f v29 = load.i64 notrap aligned readonly can_move region0 v0+8 -;; @001f v30 = load.i64 notrap aligned readonly can_move region4 v29+32 -;; @001f v31 = uextend.i64 v28 -;; @001f v32 = iadd v30, v31 -;; @001f jump block4(v28, v32) +;; @001f v23 = iconst.i32 -1476395002 +;; @001f v24 = load.i64 notrap aligned readonly can_move region3 v0+40 +;; @001f v25 = load.i32 notrap aligned readonly can_move v24 +;; @001f v26 = iconst.i32 16 +;; @001f v27 = call fn0(v0, v23, v25, v10, v26) ; v23 = -1476395002, v26 = 16 +;; @001f v28 = load.i64 notrap aligned readonly can_move region0 v0+8 +;; @001f v29 = load.i64 notrap aligned readonly can_move region4 v28+32 +;; @001f v30 = uextend.i64 v27 +;; @001f v31 = iadd v29, v30 +;; @001f jump block4(v27, v31) ;; -;; block4(v41: i32, v42: i64): -;; v90 = stack_addr.i64 ss0 -;; store notrap v41, v90 -;; @001f v43 = iconst.i64 16 -;; @001f v44 = iadd v42, v43 ; v43 = 16 -;; @001f store.i32 user2 region5 v2, v44 -;; @001f trapz v41, user16 -;; v136 = load.i64 notrap aligned readonly can_move region0 v0+8 -;; v137 = load.i64 notrap aligned readonly can_move region4 v136+32 -;; @001f v47 = uextend.i64 v41 -;; @001f v50 = iadd v137, v47 -;; @001f v52 = iadd v50, v43 ; v43 = 16 -;; @001f v53 = load.i32 user2 readonly region5 v52 -;; @001f v54 = uextend.i64 v53 -;; @001f v60 = icmp.i64 ugt v5, v54 -;; @001f trapnz v60, user17 -;; @001f v77 = load.i64 notrap aligned region6 v136+40 -;; @001f v65 = iconst.i64 24 -;; @001f v66 = iadd v50, v65 ; v65 = 24 -;; @001f v79 = uadd_overflow_trap v66, v92, user2 -;; @001f v78 = iadd v137, v77 -;; @001f v80 = icmp ugt v79, v78 -;; @001f trapnz v80, user2 -;; @001f v46 = iconst.i32 0 -;; @001f call fn1(v0, v66, v46, v92), stack_map=[i32 @ ss0+0] ; v46 = 0 -;; v83 = load.i32 notrap v90 +;; block4(v40: i32, v41: i64): +;; v89 = stack_addr.i64 ss0 +;; store notrap v40, v89 +;; @001f v42 = iconst.i64 16 +;; @001f v43 = iadd v41, v42 ; v42 = 16 +;; @001f store.i32 user2 region5 v2, v43 +;; @001f trapz v40, user16 +;; v135 = load.i64 notrap aligned readonly can_move region0 v0+8 +;; v136 = load.i64 notrap aligned readonly can_move region4 v135+32 +;; @001f v46 = uextend.i64 v40 +;; @001f v49 = iadd v136, v46 +;; @001f v51 = iadd v49, v42 ; v42 = 16 +;; @001f v52 = load.i32 user2 readonly region5 v51 +;; @001f v53 = uextend.i64 v52 +;; @001f v59 = icmp.i64 ugt v4, v53 +;; @001f trapnz v59, user17 +;; @001f v76 = load.i64 notrap aligned region6 v135+40 +;; @001f v64 = iconst.i64 24 +;; @001f v65 = iadd v49, v64 ; v64 = 24 +;; @001f v78 = uadd_overflow_trap v65, v91, user2 +;; @001f v77 = iadd v136, v76 +;; @001f v79 = icmp ugt v78, v77 +;; @001f trapnz v79, user2 +;; @001f v45 = iconst.i32 0 +;; @001f call fn1(v0, v65, v45, v91), stack_map=[i32 @ ss0+0] ; v45 = 0 ;; @0022 jump block1 ;; ;; block1: -;; @0022 return v83 +;; v82 = load.i32 notrap v89 +;; @0022 return v82 ;; } diff --git a/tests/disas/gc/array-new-default-funcref.wat b/tests/disas/gc/array-new-default-funcref.wat index cb38e525740a..ca8de01db153 100644 --- a/tests/disas/gc/array-new-default-funcref.wat +++ b/tests/disas/gc/array-new-default-funcref.wat @@ -28,103 +28,103 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i32): -;; @001f v5 = uextend.i64 v2 -;; v99 = iconst.i64 2 -;; v100 = ishl v5, v99 ; v99 = 2 -;; @001f v8 = iconst.i64 32 -;; @001f v9 = ushr v100, v8 ; v8 = 32 -;; @001f trapnz v9, user18 -;; @001f v4 = iconst.i32 20 -;; v106 = iconst.i32 2 -;; v107 = ishl v2, v106 ; v106 = 2 -;; @001f v11 = uadd_overflow_trap v4, v107, user18 ; v4 = 20 -;; @001f v12 = load.i64 notrap aligned readonly can_move region2 v0+32 -;; @001f v13 = load.i32 notrap aligned v12 -;; @001f v14 = load.i32 notrap aligned v12+4 -;; @001f v20 = uextend.i64 v13 -;; @001f v15 = uextend.i64 v11 -;; @001f v16 = iconst.i64 15 -;; @001f v18 = iadd v15, v16 ; v16 = 15 -;; @001f v17 = iconst.i64 -16 -;; @001f v19 = band v18, v17 ; v17 = -16 -;; @001f v21 = iadd v20, v19 -;; @001f v22 = uextend.i64 v14 -;; @001f v23 = icmp ule v21, v22 -;; @001f brif v23, block2, block3 +;; @001f v4 = uextend.i64 v2 +;; v98 = iconst.i64 2 +;; v99 = ishl v4, v98 ; v98 = 2 +;; @001f v7 = iconst.i64 32 +;; @001f v8 = ushr v99, v7 ; v7 = 32 +;; @001f trapnz v8, user18 +;; @001f v3 = iconst.i32 20 +;; v105 = iconst.i32 2 +;; v106 = ishl v2, v105 ; v105 = 2 +;; @001f v10 = uadd_overflow_trap v3, v106, user18 ; v3 = 20 +;; @001f v11 = load.i64 notrap aligned readonly can_move region2 v0+32 +;; @001f v12 = load.i32 notrap aligned v11 +;; @001f v13 = load.i32 notrap aligned v11+4 +;; @001f v19 = uextend.i64 v12 +;; @001f v14 = uextend.i64 v10 +;; @001f v15 = iconst.i64 15 +;; @001f v17 = iadd v14, v15 ; v15 = 15 +;; @001f v16 = iconst.i64 -16 +;; @001f v18 = band v17, v16 ; v16 = -16 +;; @001f v20 = iadd v19, v18 +;; @001f v21 = uextend.i64 v13 +;; @001f v22 = icmp ule v20, v21 +;; @001f brif v22, block2, block3 ;; ;; block2: -;; v115 = iconst.i32 15 -;; v116 = iadd.i32 v11, v115 ; v115 = 15 -;; v119 = iconst.i32 -16 -;; v120 = band v116, v119 ; v119 = -16 -;; v122 = iadd.i32 v13, v120 -;; @001f store notrap aligned v122, v12 -;; v137 = iconst.i32 -1476395002 -;; v138 = load.i64 notrap aligned readonly can_move region0 v0+8 -;; v139 = load.i64 notrap aligned readonly can_move region4 v138+32 -;; @001f v37 = iadd v139, v20 -;; @001f store notrap aligned v137, v37 ; v137 = -1476395002 -;; v140 = load.i64 notrap aligned readonly can_move region3 v0+40 -;; v141 = load.i32 notrap aligned readonly can_move v140 -;; @001f store notrap aligned v141, v37+4 -;; v142 = band.i64 v18, v17 ; v17 = -16 -;; @001f istore32 notrap aligned v142, v37+8 -;; @001f jump block4(v13, v37) +;; v114 = iconst.i32 15 +;; v115 = iadd.i32 v10, v114 ; v114 = 15 +;; v118 = iconst.i32 -16 +;; v119 = band v115, v118 ; v118 = -16 +;; v121 = iadd.i32 v12, v119 +;; @001f store notrap aligned v121, v11 +;; v136 = iconst.i32 -1476395002 +;; v137 = load.i64 notrap aligned readonly can_move region0 v0+8 +;; v138 = load.i64 notrap aligned readonly can_move region4 v137+32 +;; @001f v36 = iadd v138, v19 +;; @001f store notrap aligned v136, v36 ; v136 = -1476395002 +;; v139 = load.i64 notrap aligned readonly can_move region3 v0+40 +;; v140 = load.i32 notrap aligned readonly can_move v139 +;; @001f store notrap aligned v140, v36+4 +;; v141 = band.i64 v17, v16 ; v16 = -16 +;; @001f istore32 notrap aligned v141, v36+8 +;; @001f jump block4(v12, v36) ;; ;; block3 cold: -;; @001f v24 = iconst.i32 -1476395002 -;; @001f v25 = load.i64 notrap aligned readonly can_move region3 v0+40 -;; @001f v26 = load.i32 notrap aligned readonly can_move v25 -;; @001f v27 = iconst.i32 16 -;; @001f v28 = call fn0(v0, v24, v26, v11, v27) ; v24 = -1476395002, v27 = 16 -;; @001f v29 = load.i64 notrap aligned readonly can_move region0 v0+8 -;; @001f v30 = load.i64 notrap aligned readonly can_move region4 v29+32 -;; @001f v31 = uextend.i64 v28 -;; @001f v32 = iadd v30, v31 -;; @001f jump block4(v28, v32) +;; @001f v23 = iconst.i32 -1476395002 +;; @001f v24 = load.i64 notrap aligned readonly can_move region3 v0+40 +;; @001f v25 = load.i32 notrap aligned readonly can_move v24 +;; @001f v26 = iconst.i32 16 +;; @001f v27 = call fn0(v0, v23, v25, v10, v26) ; v23 = -1476395002, v26 = 16 +;; @001f v28 = load.i64 notrap aligned readonly can_move region0 v0+8 +;; @001f v29 = load.i64 notrap aligned readonly can_move region4 v28+32 +;; @001f v30 = uextend.i64 v27 +;; @001f v31 = iadd v29, v30 +;; @001f jump block4(v27, v31) ;; -;; block4(v41: i32, v42: i64): -;; v98 = stack_addr.i64 ss0 -;; store notrap v41, v98 -;; @001f v43 = iconst.i64 16 -;; @001f v44 = iadd v42, v43 ; v43 = 16 -;; @001f store.i32 user2 region5 v2, v44 -;; @001f trapz v41, user16 -;; v143 = load.i64 notrap aligned readonly can_move region0 v0+8 -;; v144 = load.i64 notrap aligned readonly can_move region4 v143+32 -;; @001f v47 = uextend.i64 v41 -;; @001f v50 = iadd v144, v47 -;; @001f v52 = iadd v50, v43 ; v43 = 16 -;; @001f v53 = load.i32 user2 readonly region5 v52 -;; @001f v54 = uextend.i64 v53 -;; @001f v60 = icmp.i64 ugt v5, v54 -;; @001f trapnz v60, user17 -;; @001f v77 = load.i64 notrap aligned region6 v143+40 -;; @001f v65 = iconst.i64 20 -;; @001f v66 = iadd v50, v65 ; v65 = 20 -;; @001f v79 = uadd_overflow_trap v66, v100, user2 -;; @001f v78 = iadd v144, v77 -;; @001f v80 = icmp ugt v79, v78 -;; @001f trapnz v80, user2 -;; @001f v45 = iconst.i64 0 -;; @001f v81 = call fn1(v0, v45), stack_map=[i32 @ ss0+0] ; v45 = 0 -;; @001f v85 = icmp.i64 eq v5, v45 ; v45 = 0 -;; @001f v82 = ireduce.i32 v81 -;; @001f v6 = iconst.i64 4 -;; @001f v83 = iadd v66, v100 -;; @001f brif v85, block6, block5(v66) +;; block4(v40: i32, v41: i64): +;; v97 = stack_addr.i64 ss0 +;; store notrap v40, v97 +;; @001f v42 = iconst.i64 16 +;; @001f v43 = iadd v41, v42 ; v42 = 16 +;; @001f store.i32 user2 region5 v2, v43 +;; @001f trapz v40, user16 +;; v142 = load.i64 notrap aligned readonly can_move region0 v0+8 +;; v143 = load.i64 notrap aligned readonly can_move region4 v142+32 +;; @001f v46 = uextend.i64 v40 +;; @001f v49 = iadd v143, v46 +;; @001f v51 = iadd v49, v42 ; v42 = 16 +;; @001f v52 = load.i32 user2 readonly region5 v51 +;; @001f v53 = uextend.i64 v52 +;; @001f v59 = icmp.i64 ugt v4, v53 +;; @001f trapnz v59, user17 +;; @001f v76 = load.i64 notrap aligned region6 v142+40 +;; @001f v64 = iconst.i64 20 +;; @001f v65 = iadd v49, v64 ; v64 = 20 +;; @001f v78 = uadd_overflow_trap v65, v99, user2 +;; @001f v77 = iadd v143, v76 +;; @001f v79 = icmp ugt v78, v77 +;; @001f trapnz v79, user2 +;; @001f v44 = iconst.i64 0 +;; @001f v80 = call fn1(v0, v44), stack_map=[i32 @ ss0+0] ; v44 = 0 +;; @001f v84 = icmp.i64 eq v4, v44 ; v44 = 0 +;; @001f v81 = ireduce.i32 v80 +;; @001f v5 = iconst.i64 4 +;; @001f v82 = iadd v65, v99 +;; @001f brif v84, block6, block5(v65) ;; -;; block5(v86: i64): -;; @001f store.i32 notrap aligned little v82, v86 -;; v145 = iconst.i64 4 -;; v146 = iadd v86, v145 ; v145 = 4 -;; @001f v89 = icmp eq v146, v83 -;; @001f brif v89, block6, block5(v146) +;; block5(v85: i64): +;; @001f store.i32 notrap aligned little v81, v85 +;; v144 = iconst.i64 4 +;; v145 = iadd v85, v144 ; v144 = 4 +;; @001f v88 = icmp eq v145, v82 +;; @001f brif v88, block6, block5(v145) ;; ;; block6: -;; v91 = load.i32 notrap v98 ;; @0022 jump block1 ;; ;; block1: -;; @0022 return v91 +;; v90 = load.i32 notrap v97 +;; @0022 return v90 ;; } diff --git a/tests/disas/gc/array-new-default-i16.wat b/tests/disas/gc/array-new-default-i16.wat index 204bbf884927..a8536e728d8e 100644 --- a/tests/disas/gc/array-new-default-i16.wat +++ b/tests/disas/gc/array-new-default-i16.wat @@ -28,88 +28,88 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i32): -;; @001f v5 = uextend.i64 v2 -;; v92 = iconst.i64 1 -;; v93 = ishl v5, v92 ; v92 = 1 -;; @001f v8 = iconst.i64 32 -;; @001f v9 = ushr v93, v8 ; v8 = 32 -;; @001f trapnz v9, user18 -;; @001f v4 = iconst.i32 20 -;; v97 = iadd v2, v2 -;; @001f v11 = uadd_overflow_trap v4, v97, user18 ; v4 = 20 -;; @001f v12 = load.i64 notrap aligned readonly can_move region2 v0+32 -;; @001f v13 = load.i32 notrap aligned v12 -;; @001f v14 = load.i32 notrap aligned v12+4 -;; @001f v20 = uextend.i64 v13 -;; @001f v15 = uextend.i64 v11 -;; @001f v16 = iconst.i64 15 -;; @001f v18 = iadd v15, v16 ; v16 = 15 -;; @001f v17 = iconst.i64 -16 -;; @001f v19 = band v18, v17 ; v17 = -16 -;; @001f v21 = iadd v20, v19 -;; @001f v22 = uextend.i64 v14 -;; @001f v23 = icmp ule v21, v22 -;; @001f brif v23, block2, block3 +;; @001f v4 = uextend.i64 v2 +;; v91 = iconst.i64 1 +;; v92 = ishl v4, v91 ; v91 = 1 +;; @001f v7 = iconst.i64 32 +;; @001f v8 = ushr v92, v7 ; v7 = 32 +;; @001f trapnz v8, user18 +;; @001f v3 = iconst.i32 20 +;; v96 = iadd v2, v2 +;; @001f v10 = uadd_overflow_trap v3, v96, user18 ; v3 = 20 +;; @001f v11 = load.i64 notrap aligned readonly can_move region2 v0+32 +;; @001f v12 = load.i32 notrap aligned v11 +;; @001f v13 = load.i32 notrap aligned v11+4 +;; @001f v19 = uextend.i64 v12 +;; @001f v14 = uextend.i64 v10 +;; @001f v15 = iconst.i64 15 +;; @001f v17 = iadd v14, v15 ; v15 = 15 +;; @001f v16 = iconst.i64 -16 +;; @001f v18 = band v17, v16 ; v16 = -16 +;; @001f v20 = iadd v19, v18 +;; @001f v21 = uextend.i64 v13 +;; @001f v22 = icmp ule v20, v21 +;; @001f brif v22, block2, block3 ;; ;; block2: -;; v112 = iconst.i32 15 -;; v113 = iadd.i32 v11, v112 ; v112 = 15 -;; v116 = iconst.i32 -16 -;; v117 = band v113, v116 ; v116 = -16 -;; v119 = iadd.i32 v13, v117 -;; @001f store notrap aligned v119, v12 -;; v140 = iconst.i32 -1476395002 -;; v141 = load.i64 notrap aligned readonly can_move region0 v0+8 -;; v142 = load.i64 notrap aligned readonly can_move region4 v141+32 -;; @001f v37 = iadd v142, v20 -;; @001f store notrap aligned v140, v37 ; v140 = -1476395002 -;; v143 = load.i64 notrap aligned readonly can_move region3 v0+40 -;; v144 = load.i32 notrap aligned readonly can_move v143 -;; @001f store notrap aligned v144, v37+4 -;; v145 = band.i64 v18, v17 ; v17 = -16 -;; @001f istore32 notrap aligned v145, v37+8 -;; @001f jump block4(v13, v37) +;; v111 = iconst.i32 15 +;; v112 = iadd.i32 v10, v111 ; v111 = 15 +;; v115 = iconst.i32 -16 +;; v116 = band v112, v115 ; v115 = -16 +;; v118 = iadd.i32 v12, v116 +;; @001f store notrap aligned v118, v11 +;; v139 = iconst.i32 -1476395002 +;; v140 = load.i64 notrap aligned readonly can_move region0 v0+8 +;; v141 = load.i64 notrap aligned readonly can_move region4 v140+32 +;; @001f v36 = iadd v141, v19 +;; @001f store notrap aligned v139, v36 ; v139 = -1476395002 +;; v142 = load.i64 notrap aligned readonly can_move region3 v0+40 +;; v143 = load.i32 notrap aligned readonly can_move v142 +;; @001f store notrap aligned v143, v36+4 +;; v144 = band.i64 v17, v16 ; v16 = -16 +;; @001f istore32 notrap aligned v144, v36+8 +;; @001f jump block4(v12, v36) ;; ;; block3 cold: -;; @001f v24 = iconst.i32 -1476395002 -;; @001f v25 = load.i64 notrap aligned readonly can_move region3 v0+40 -;; @001f v26 = load.i32 notrap aligned readonly can_move v25 -;; @001f v27 = iconst.i32 16 -;; @001f v28 = call fn0(v0, v24, v26, v11, v27) ; v24 = -1476395002, v27 = 16 -;; @001f v29 = load.i64 notrap aligned readonly can_move region0 v0+8 -;; @001f v30 = load.i64 notrap aligned readonly can_move region4 v29+32 -;; @001f v31 = uextend.i64 v28 -;; @001f v32 = iadd v30, v31 -;; @001f jump block4(v28, v32) +;; @001f v23 = iconst.i32 -1476395002 +;; @001f v24 = load.i64 notrap aligned readonly can_move region3 v0+40 +;; @001f v25 = load.i32 notrap aligned readonly can_move v24 +;; @001f v26 = iconst.i32 16 +;; @001f v27 = call fn0(v0, v23, v25, v10, v26) ; v23 = -1476395002, v26 = 16 +;; @001f v28 = load.i64 notrap aligned readonly can_move region0 v0+8 +;; @001f v29 = load.i64 notrap aligned readonly can_move region4 v28+32 +;; @001f v30 = uextend.i64 v27 +;; @001f v31 = iadd v29, v30 +;; @001f jump block4(v27, v31) ;; -;; block4(v41: i32, v42: i64): -;; v90 = stack_addr.i64 ss0 -;; store notrap v41, v90 -;; @001f v43 = iconst.i64 16 -;; @001f v44 = iadd v42, v43 ; v43 = 16 -;; @001f store.i32 user2 region5 v2, v44 -;; @001f trapz v41, user16 -;; v146 = load.i64 notrap aligned readonly can_move region0 v0+8 -;; v147 = load.i64 notrap aligned readonly can_move region4 v146+32 -;; @001f v47 = uextend.i64 v41 -;; @001f v50 = iadd v147, v47 -;; @001f v52 = iadd v50, v43 ; v43 = 16 -;; @001f v53 = load.i32 user2 readonly region5 v52 -;; @001f v54 = uextend.i64 v53 -;; @001f v60 = icmp.i64 ugt v5, v54 -;; @001f trapnz v60, user17 -;; @001f v77 = load.i64 notrap aligned region6 v146+40 -;; @001f v65 = iconst.i64 20 -;; @001f v66 = iadd v50, v65 ; v65 = 20 -;; @001f v79 = uadd_overflow_trap v66, v93, user2 -;; @001f v78 = iadd v147, v77 -;; @001f v80 = icmp ugt v79, v78 -;; @001f trapnz v80, user2 -;; @001f v45 = iconst.i32 0 -;; @001f call fn1(v0, v66, v45, v93), stack_map=[i32 @ ss0+0] ; v45 = 0 -;; v83 = load.i32 notrap v90 +;; block4(v40: i32, v41: i64): +;; v89 = stack_addr.i64 ss0 +;; store notrap v40, v89 +;; @001f v42 = iconst.i64 16 +;; @001f v43 = iadd v41, v42 ; v42 = 16 +;; @001f store.i32 user2 region5 v2, v43 +;; @001f trapz v40, user16 +;; v145 = load.i64 notrap aligned readonly can_move region0 v0+8 +;; v146 = load.i64 notrap aligned readonly can_move region4 v145+32 +;; @001f v46 = uextend.i64 v40 +;; @001f v49 = iadd v146, v46 +;; @001f v51 = iadd v49, v42 ; v42 = 16 +;; @001f v52 = load.i32 user2 readonly region5 v51 +;; @001f v53 = uextend.i64 v52 +;; @001f v59 = icmp.i64 ugt v4, v53 +;; @001f trapnz v59, user17 +;; @001f v76 = load.i64 notrap aligned region6 v145+40 +;; @001f v64 = iconst.i64 20 +;; @001f v65 = iadd v49, v64 ; v64 = 20 +;; @001f v78 = uadd_overflow_trap v65, v92, user2 +;; @001f v77 = iadd v146, v76 +;; @001f v79 = icmp ugt v78, v77 +;; @001f trapnz v79, user2 +;; @001f v44 = iconst.i32 0 +;; @001f call fn1(v0, v65, v44, v92), stack_map=[i32 @ ss0+0] ; v44 = 0 ;; @0022 jump block1 ;; ;; block1: -;; @0022 return v83 +;; v82 = load.i32 notrap v89 +;; @0022 return v82 ;; } diff --git a/tests/disas/gc/array-new-default-i32.wat b/tests/disas/gc/array-new-default-i32.wat index 1abc274eb805..6ea4a88ddb8e 100644 --- a/tests/disas/gc/array-new-default-i32.wat +++ b/tests/disas/gc/array-new-default-i32.wat @@ -28,89 +28,89 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i32): -;; @001f v5 = uextend.i64 v2 -;; v91 = iconst.i64 2 -;; v92 = ishl v5, v91 ; v91 = 2 -;; @001f v8 = iconst.i64 32 -;; @001f v9 = ushr v92, v8 ; v8 = 32 -;; @001f trapnz v9, user18 -;; @001f v4 = iconst.i32 20 -;; v98 = iconst.i32 2 -;; v99 = ishl v2, v98 ; v98 = 2 -;; @001f v11 = uadd_overflow_trap v4, v99, user18 ; v4 = 20 -;; @001f v12 = load.i64 notrap aligned readonly can_move region2 v0+32 -;; @001f v13 = load.i32 notrap aligned v12 -;; @001f v14 = load.i32 notrap aligned v12+4 -;; @001f v20 = uextend.i64 v13 -;; @001f v15 = uextend.i64 v11 -;; @001f v16 = iconst.i64 15 -;; @001f v18 = iadd v15, v16 ; v16 = 15 -;; @001f v17 = iconst.i64 -16 -;; @001f v19 = band v18, v17 ; v17 = -16 -;; @001f v21 = iadd v20, v19 -;; @001f v22 = uextend.i64 v14 -;; @001f v23 = icmp ule v21, v22 -;; @001f brif v23, block2, block3 +;; @001f v4 = uextend.i64 v2 +;; v90 = iconst.i64 2 +;; v91 = ishl v4, v90 ; v90 = 2 +;; @001f v7 = iconst.i64 32 +;; @001f v8 = ushr v91, v7 ; v7 = 32 +;; @001f trapnz v8, user18 +;; @001f v3 = iconst.i32 20 +;; v97 = iconst.i32 2 +;; v98 = ishl v2, v97 ; v97 = 2 +;; @001f v10 = uadd_overflow_trap v3, v98, user18 ; v3 = 20 +;; @001f v11 = load.i64 notrap aligned readonly can_move region2 v0+32 +;; @001f v12 = load.i32 notrap aligned v11 +;; @001f v13 = load.i32 notrap aligned v11+4 +;; @001f v19 = uextend.i64 v12 +;; @001f v14 = uextend.i64 v10 +;; @001f v15 = iconst.i64 15 +;; @001f v17 = iadd v14, v15 ; v15 = 15 +;; @001f v16 = iconst.i64 -16 +;; @001f v18 = band v17, v16 ; v16 = -16 +;; @001f v20 = iadd v19, v18 +;; @001f v21 = uextend.i64 v13 +;; @001f v22 = icmp ule v20, v21 +;; @001f brif v22, block2, block3 ;; ;; block2: -;; v107 = iconst.i32 15 -;; v108 = iadd.i32 v11, v107 ; v107 = 15 -;; v111 = iconst.i32 -16 -;; v112 = band v108, v111 ; v111 = -16 -;; v114 = iadd.i32 v13, v112 -;; @001f store notrap aligned v114, v12 -;; v130 = iconst.i32 -1476395002 -;; v131 = load.i64 notrap aligned readonly can_move region0 v0+8 -;; v132 = load.i64 notrap aligned readonly can_move region4 v131+32 -;; @001f v37 = iadd v132, v20 -;; @001f store notrap aligned v130, v37 ; v130 = -1476395002 -;; v133 = load.i64 notrap aligned readonly can_move region3 v0+40 -;; v134 = load.i32 notrap aligned readonly can_move v133 -;; @001f store notrap aligned v134, v37+4 -;; v135 = band.i64 v18, v17 ; v17 = -16 -;; @001f istore32 notrap aligned v135, v37+8 -;; @001f jump block4(v13, v37) +;; v106 = iconst.i32 15 +;; v107 = iadd.i32 v10, v106 ; v106 = 15 +;; v110 = iconst.i32 -16 +;; v111 = band v107, v110 ; v110 = -16 +;; v113 = iadd.i32 v12, v111 +;; @001f store notrap aligned v113, v11 +;; v129 = iconst.i32 -1476395002 +;; v130 = load.i64 notrap aligned readonly can_move region0 v0+8 +;; v131 = load.i64 notrap aligned readonly can_move region4 v130+32 +;; @001f v36 = iadd v131, v19 +;; @001f store notrap aligned v129, v36 ; v129 = -1476395002 +;; v132 = load.i64 notrap aligned readonly can_move region3 v0+40 +;; v133 = load.i32 notrap aligned readonly can_move v132 +;; @001f store notrap aligned v133, v36+4 +;; v134 = band.i64 v17, v16 ; v16 = -16 +;; @001f istore32 notrap aligned v134, v36+8 +;; @001f jump block4(v12, v36) ;; ;; block3 cold: -;; @001f v24 = iconst.i32 -1476395002 -;; @001f v25 = load.i64 notrap aligned readonly can_move region3 v0+40 -;; @001f v26 = load.i32 notrap aligned readonly can_move v25 -;; @001f v27 = iconst.i32 16 -;; @001f v28 = call fn0(v0, v24, v26, v11, v27) ; v24 = -1476395002, v27 = 16 -;; @001f v29 = load.i64 notrap aligned readonly can_move region0 v0+8 -;; @001f v30 = load.i64 notrap aligned readonly can_move region4 v29+32 -;; @001f v31 = uextend.i64 v28 -;; @001f v32 = iadd v30, v31 -;; @001f jump block4(v28, v32) +;; @001f v23 = iconst.i32 -1476395002 +;; @001f v24 = load.i64 notrap aligned readonly can_move region3 v0+40 +;; @001f v25 = load.i32 notrap aligned readonly can_move v24 +;; @001f v26 = iconst.i32 16 +;; @001f v27 = call fn0(v0, v23, v25, v10, v26) ; v23 = -1476395002, v26 = 16 +;; @001f v28 = load.i64 notrap aligned readonly can_move region0 v0+8 +;; @001f v29 = load.i64 notrap aligned readonly can_move region4 v28+32 +;; @001f v30 = uextend.i64 v27 +;; @001f v31 = iadd v29, v30 +;; @001f jump block4(v27, v31) ;; -;; block4(v41: i32, v42: i64): -;; v90 = stack_addr.i64 ss0 -;; store notrap v41, v90 -;; @001f v43 = iconst.i64 16 -;; @001f v44 = iadd v42, v43 ; v43 = 16 -;; @001f store.i32 user2 region5 v2, v44 -;; @001f trapz v41, user16 -;; v136 = load.i64 notrap aligned readonly can_move region0 v0+8 -;; v137 = load.i64 notrap aligned readonly can_move region4 v136+32 -;; @001f v47 = uextend.i64 v41 -;; @001f v50 = iadd v137, v47 -;; @001f v52 = iadd v50, v43 ; v43 = 16 -;; @001f v53 = load.i32 user2 readonly region5 v52 -;; @001f v54 = uextend.i64 v53 -;; @001f v60 = icmp.i64 ugt v5, v54 -;; @001f trapnz v60, user17 -;; @001f v77 = load.i64 notrap aligned region6 v136+40 -;; @001f v65 = iconst.i64 20 -;; @001f v66 = iadd v50, v65 ; v65 = 20 -;; @001f v79 = uadd_overflow_trap v66, v92, user2 -;; @001f v78 = iadd v137, v77 -;; @001f v80 = icmp ugt v79, v78 -;; @001f trapnz v80, user2 -;; @001f v45 = iconst.i32 0 -;; @001f call fn1(v0, v66, v45, v92), stack_map=[i32 @ ss0+0] ; v45 = 0 -;; v83 = load.i32 notrap v90 +;; block4(v40: i32, v41: i64): +;; v89 = stack_addr.i64 ss0 +;; store notrap v40, v89 +;; @001f v42 = iconst.i64 16 +;; @001f v43 = iadd v41, v42 ; v42 = 16 +;; @001f store.i32 user2 region5 v2, v43 +;; @001f trapz v40, user16 +;; v135 = load.i64 notrap aligned readonly can_move region0 v0+8 +;; v136 = load.i64 notrap aligned readonly can_move region4 v135+32 +;; @001f v46 = uextend.i64 v40 +;; @001f v49 = iadd v136, v46 +;; @001f v51 = iadd v49, v42 ; v42 = 16 +;; @001f v52 = load.i32 user2 readonly region5 v51 +;; @001f v53 = uextend.i64 v52 +;; @001f v59 = icmp.i64 ugt v4, v53 +;; @001f trapnz v59, user17 +;; @001f v76 = load.i64 notrap aligned region6 v135+40 +;; @001f v64 = iconst.i64 20 +;; @001f v65 = iadd v49, v64 ; v64 = 20 +;; @001f v78 = uadd_overflow_trap v65, v91, user2 +;; @001f v77 = iadd v136, v76 +;; @001f v79 = icmp ugt v78, v77 +;; @001f trapnz v79, user2 +;; @001f v44 = iconst.i32 0 +;; @001f call fn1(v0, v65, v44, v91), stack_map=[i32 @ ss0+0] ; v44 = 0 ;; @0022 jump block1 ;; ;; block1: -;; @0022 return v83 +;; v82 = load.i32 notrap v89 +;; @0022 return v82 ;; } diff --git a/tests/disas/gc/array-new-default-i64.wat b/tests/disas/gc/array-new-default-i64.wat index 630634736c11..4c2d26e5d15c 100644 --- a/tests/disas/gc/array-new-default-i64.wat +++ b/tests/disas/gc/array-new-default-i64.wat @@ -28,89 +28,89 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i32): -;; @001f v5 = uextend.i64 v2 -;; v91 = iconst.i64 3 -;; v92 = ishl v5, v91 ; v91 = 3 -;; @001f v8 = iconst.i64 32 -;; @001f v9 = ushr v92, v8 ; v8 = 32 -;; @001f trapnz v9, user18 -;; @001f v4 = iconst.i32 24 -;; v98 = iconst.i32 3 -;; v99 = ishl v2, v98 ; v98 = 3 -;; @001f v11 = uadd_overflow_trap v4, v99, user18 ; v4 = 24 -;; @001f v12 = load.i64 notrap aligned readonly can_move region2 v0+32 -;; @001f v13 = load.i32 notrap aligned v12 -;; @001f v14 = load.i32 notrap aligned v12+4 -;; @001f v20 = uextend.i64 v13 -;; @001f v15 = uextend.i64 v11 -;; @001f v16 = iconst.i64 15 -;; @001f v18 = iadd v15, v16 ; v16 = 15 -;; @001f v17 = iconst.i64 -16 -;; @001f v19 = band v18, v17 ; v17 = -16 -;; @001f v21 = iadd v20, v19 -;; @001f v22 = uextend.i64 v14 -;; @001f v23 = icmp ule v21, v22 -;; @001f brif v23, block2, block3 +;; @001f v4 = uextend.i64 v2 +;; v90 = iconst.i64 3 +;; v91 = ishl v4, v90 ; v90 = 3 +;; @001f v7 = iconst.i64 32 +;; @001f v8 = ushr v91, v7 ; v7 = 32 +;; @001f trapnz v8, user18 +;; @001f v3 = iconst.i32 24 +;; v97 = iconst.i32 3 +;; v98 = ishl v2, v97 ; v97 = 3 +;; @001f v10 = uadd_overflow_trap v3, v98, user18 ; v3 = 24 +;; @001f v11 = load.i64 notrap aligned readonly can_move region2 v0+32 +;; @001f v12 = load.i32 notrap aligned v11 +;; @001f v13 = load.i32 notrap aligned v11+4 +;; @001f v19 = uextend.i64 v12 +;; @001f v14 = uextend.i64 v10 +;; @001f v15 = iconst.i64 15 +;; @001f v17 = iadd v14, v15 ; v15 = 15 +;; @001f v16 = iconst.i64 -16 +;; @001f v18 = band v17, v16 ; v16 = -16 +;; @001f v20 = iadd v19, v18 +;; @001f v21 = uextend.i64 v13 +;; @001f v22 = icmp ule v20, v21 +;; @001f brif v22, block2, block3 ;; ;; block2: -;; v107 = iconst.i32 15 -;; v108 = iadd.i32 v11, v107 ; v107 = 15 -;; v111 = iconst.i32 -16 -;; v112 = band v108, v111 ; v111 = -16 -;; v114 = iadd.i32 v13, v112 -;; @001f store notrap aligned v114, v12 -;; v129 = iconst.i32 -1476395002 -;; v130 = load.i64 notrap aligned readonly can_move region0 v0+8 -;; v131 = load.i64 notrap aligned readonly can_move region4 v130+32 -;; @001f v37 = iadd v131, v20 -;; @001f store notrap aligned v129, v37 ; v129 = -1476395002 -;; v132 = load.i64 notrap aligned readonly can_move region3 v0+40 -;; v133 = load.i32 notrap aligned readonly can_move v132 -;; @001f store notrap aligned v133, v37+4 -;; v134 = band.i64 v18, v17 ; v17 = -16 -;; @001f istore32 notrap aligned v134, v37+8 -;; @001f jump block4(v13, v37) +;; v106 = iconst.i32 15 +;; v107 = iadd.i32 v10, v106 ; v106 = 15 +;; v110 = iconst.i32 -16 +;; v111 = band v107, v110 ; v110 = -16 +;; v113 = iadd.i32 v12, v111 +;; @001f store notrap aligned v113, v11 +;; v128 = iconst.i32 -1476395002 +;; v129 = load.i64 notrap aligned readonly can_move region0 v0+8 +;; v130 = load.i64 notrap aligned readonly can_move region4 v129+32 +;; @001f v36 = iadd v130, v19 +;; @001f store notrap aligned v128, v36 ; v128 = -1476395002 +;; v131 = load.i64 notrap aligned readonly can_move region3 v0+40 +;; v132 = load.i32 notrap aligned readonly can_move v131 +;; @001f store notrap aligned v132, v36+4 +;; v133 = band.i64 v17, v16 ; v16 = -16 +;; @001f istore32 notrap aligned v133, v36+8 +;; @001f jump block4(v12, v36) ;; ;; block3 cold: -;; @001f v24 = iconst.i32 -1476395002 -;; @001f v25 = load.i64 notrap aligned readonly can_move region3 v0+40 -;; @001f v26 = load.i32 notrap aligned readonly can_move v25 -;; @001f v27 = iconst.i32 16 -;; @001f v28 = call fn0(v0, v24, v26, v11, v27) ; v24 = -1476395002, v27 = 16 -;; @001f v29 = load.i64 notrap aligned readonly can_move region0 v0+8 -;; @001f v30 = load.i64 notrap aligned readonly can_move region4 v29+32 -;; @001f v31 = uextend.i64 v28 -;; @001f v32 = iadd v30, v31 -;; @001f jump block4(v28, v32) +;; @001f v23 = iconst.i32 -1476395002 +;; @001f v24 = load.i64 notrap aligned readonly can_move region3 v0+40 +;; @001f v25 = load.i32 notrap aligned readonly can_move v24 +;; @001f v26 = iconst.i32 16 +;; @001f v27 = call fn0(v0, v23, v25, v10, v26) ; v23 = -1476395002, v26 = 16 +;; @001f v28 = load.i64 notrap aligned readonly can_move region0 v0+8 +;; @001f v29 = load.i64 notrap aligned readonly can_move region4 v28+32 +;; @001f v30 = uextend.i64 v27 +;; @001f v31 = iadd v29, v30 +;; @001f jump block4(v27, v31) ;; -;; block4(v41: i32, v42: i64): -;; v90 = stack_addr.i64 ss0 -;; store notrap v41, v90 -;; @001f v43 = iconst.i64 16 -;; @001f v44 = iadd v42, v43 ; v43 = 16 -;; @001f store.i32 user2 region5 v2, v44 -;; @001f trapz v41, user16 -;; v135 = load.i64 notrap aligned readonly can_move region0 v0+8 -;; v136 = load.i64 notrap aligned readonly can_move region4 v135+32 -;; @001f v47 = uextend.i64 v41 -;; @001f v50 = iadd v136, v47 -;; @001f v52 = iadd v50, v43 ; v43 = 16 -;; @001f v53 = load.i32 user2 readonly region5 v52 -;; @001f v54 = uextend.i64 v53 -;; @001f v60 = icmp.i64 ugt v5, v54 -;; @001f trapnz v60, user17 -;; @001f v77 = load.i64 notrap aligned region6 v135+40 -;; @001f v65 = iconst.i64 24 -;; @001f v66 = iadd v50, v65 ; v65 = 24 -;; @001f v79 = uadd_overflow_trap v66, v92, user2 -;; @001f v78 = iadd v136, v77 -;; @001f v80 = icmp ugt v79, v78 -;; @001f trapnz v80, user2 -;; @001f v46 = iconst.i32 0 -;; @001f call fn1(v0, v66, v46, v92), stack_map=[i32 @ ss0+0] ; v46 = 0 -;; v83 = load.i32 notrap v90 +;; block4(v40: i32, v41: i64): +;; v89 = stack_addr.i64 ss0 +;; store notrap v40, v89 +;; @001f v42 = iconst.i64 16 +;; @001f v43 = iadd v41, v42 ; v42 = 16 +;; @001f store.i32 user2 region5 v2, v43 +;; @001f trapz v40, user16 +;; v134 = load.i64 notrap aligned readonly can_move region0 v0+8 +;; v135 = load.i64 notrap aligned readonly can_move region4 v134+32 +;; @001f v46 = uextend.i64 v40 +;; @001f v49 = iadd v135, v46 +;; @001f v51 = iadd v49, v42 ; v42 = 16 +;; @001f v52 = load.i32 user2 readonly region5 v51 +;; @001f v53 = uextend.i64 v52 +;; @001f v59 = icmp.i64 ugt v4, v53 +;; @001f trapnz v59, user17 +;; @001f v76 = load.i64 notrap aligned region6 v134+40 +;; @001f v64 = iconst.i64 24 +;; @001f v65 = iadd v49, v64 ; v64 = 24 +;; @001f v78 = uadd_overflow_trap v65, v91, user2 +;; @001f v77 = iadd v135, v76 +;; @001f v79 = icmp ugt v78, v77 +;; @001f trapnz v79, user2 +;; @001f v45 = iconst.i32 0 +;; @001f call fn1(v0, v65, v45, v91), stack_map=[i32 @ ss0+0] ; v45 = 0 ;; @0022 jump block1 ;; ;; block1: -;; @0022 return v83 +;; v82 = load.i32 notrap v89 +;; @0022 return v82 ;; } diff --git a/tests/disas/gc/array-new-default-i8.wat b/tests/disas/gc/array-new-default-i8.wat index ecc6ede2a866..5ee2be597a7c 100644 --- a/tests/disas/gc/array-new-default-i8.wat +++ b/tests/disas/gc/array-new-default-i8.wat @@ -28,85 +28,85 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i32): -;; @001f v5 = uextend.i64 v2 -;; @001f v8 = iconst.i64 32 -;; @001f v9 = ushr v5, v8 ; v8 = 32 -;; @001f trapnz v9, user18 -;; @001f v4 = iconst.i32 20 -;; @001f v11 = uadd_overflow_trap v4, v2, user18 ; v4 = 20 -;; @001f v12 = load.i64 notrap aligned readonly can_move region2 v0+32 -;; @001f v13 = load.i32 notrap aligned v12 -;; @001f v14 = load.i32 notrap aligned v12+4 -;; @001f v20 = uextend.i64 v13 -;; @001f v15 = uextend.i64 v11 -;; @001f v16 = iconst.i64 15 -;; @001f v18 = iadd v15, v16 ; v16 = 15 -;; @001f v17 = iconst.i64 -16 -;; @001f v19 = band v18, v17 ; v17 = -16 -;; @001f v21 = iadd v20, v19 -;; @001f v22 = uextend.i64 v14 -;; @001f v23 = icmp ule v21, v22 -;; @001f brif v23, block2, block3 +;; @001f v4 = uextend.i64 v2 +;; @001f v7 = iconst.i64 32 +;; @001f v8 = ushr v4, v7 ; v7 = 32 +;; @001f trapnz v8, user18 +;; @001f v3 = iconst.i32 20 +;; @001f v10 = uadd_overflow_trap v3, v2, user18 ; v3 = 20 +;; @001f v11 = load.i64 notrap aligned readonly can_move region2 v0+32 +;; @001f v12 = load.i32 notrap aligned v11 +;; @001f v13 = load.i32 notrap aligned v11+4 +;; @001f v19 = uextend.i64 v12 +;; @001f v14 = uextend.i64 v10 +;; @001f v15 = iconst.i64 15 +;; @001f v17 = iadd v14, v15 ; v15 = 15 +;; @001f v16 = iconst.i64 -16 +;; @001f v18 = band v17, v16 ; v16 = -16 +;; @001f v20 = iadd v19, v18 +;; @001f v21 = uextend.i64 v13 +;; @001f v22 = icmp ule v20, v21 +;; @001f brif v22, block2, block3 ;; ;; block2: -;; v97 = iconst.i32 15 -;; v98 = iadd.i32 v11, v97 ; v97 = 15 -;; v101 = iconst.i32 -16 -;; v102 = band v98, v101 ; v101 = -16 -;; v104 = iadd.i32 v13, v102 -;; @001f store notrap aligned v104, v12 -;; v118 = iconst.i32 -1476395002 -;; v119 = load.i64 notrap aligned readonly can_move region0 v0+8 -;; v120 = load.i64 notrap aligned readonly can_move region4 v119+32 -;; @001f v37 = iadd v120, v20 -;; @001f store notrap aligned v118, v37 ; v118 = -1476395002 -;; v121 = load.i64 notrap aligned readonly can_move region3 v0+40 -;; v122 = load.i32 notrap aligned readonly can_move v121 -;; @001f store notrap aligned v122, v37+4 -;; v123 = band.i64 v18, v17 ; v17 = -16 -;; @001f istore32 notrap aligned v123, v37+8 -;; @001f jump block4(v13, v37) +;; v96 = iconst.i32 15 +;; v97 = iadd.i32 v10, v96 ; v96 = 15 +;; v100 = iconst.i32 -16 +;; v101 = band v97, v100 ; v100 = -16 +;; v103 = iadd.i32 v12, v101 +;; @001f store notrap aligned v103, v11 +;; v117 = iconst.i32 -1476395002 +;; v118 = load.i64 notrap aligned readonly can_move region0 v0+8 +;; v119 = load.i64 notrap aligned readonly can_move region4 v118+32 +;; @001f v36 = iadd v119, v19 +;; @001f store notrap aligned v117, v36 ; v117 = -1476395002 +;; v120 = load.i64 notrap aligned readonly can_move region3 v0+40 +;; v121 = load.i32 notrap aligned readonly can_move v120 +;; @001f store notrap aligned v121, v36+4 +;; v122 = band.i64 v17, v16 ; v16 = -16 +;; @001f istore32 notrap aligned v122, v36+8 +;; @001f jump block4(v12, v36) ;; ;; block3 cold: -;; @001f v24 = iconst.i32 -1476395002 -;; @001f v25 = load.i64 notrap aligned readonly can_move region3 v0+40 -;; @001f v26 = load.i32 notrap aligned readonly can_move v25 -;; @001f v27 = iconst.i32 16 -;; @001f v28 = call fn0(v0, v24, v26, v11, v27) ; v24 = -1476395002, v27 = 16 -;; @001f v29 = load.i64 notrap aligned readonly can_move region0 v0+8 -;; @001f v30 = load.i64 notrap aligned readonly can_move region4 v29+32 -;; @001f v31 = uextend.i64 v28 -;; @001f v32 = iadd v30, v31 -;; @001f jump block4(v28, v32) +;; @001f v23 = iconst.i32 -1476395002 +;; @001f v24 = load.i64 notrap aligned readonly can_move region3 v0+40 +;; @001f v25 = load.i32 notrap aligned readonly can_move v24 +;; @001f v26 = iconst.i32 16 +;; @001f v27 = call fn0(v0, v23, v25, v10, v26) ; v23 = -1476395002, v26 = 16 +;; @001f v28 = load.i64 notrap aligned readonly can_move region0 v0+8 +;; @001f v29 = load.i64 notrap aligned readonly can_move region4 v28+32 +;; @001f v30 = uextend.i64 v27 +;; @001f v31 = iadd v29, v30 +;; @001f jump block4(v27, v31) ;; -;; block4(v41: i32, v42: i64): -;; v89 = stack_addr.i64 ss0 -;; store notrap v41, v89 -;; @001f v43 = iconst.i64 16 -;; @001f v44 = iadd v42, v43 ; v43 = 16 -;; @001f store.i32 user2 region5 v2, v44 -;; @001f trapz v41, user16 -;; v124 = load.i64 notrap aligned readonly can_move region0 v0+8 -;; v125 = load.i64 notrap aligned readonly can_move region4 v124+32 -;; @001f v47 = uextend.i64 v41 -;; @001f v50 = iadd v125, v47 -;; @001f v52 = iadd v50, v43 ; v43 = 16 -;; @001f v53 = load.i32 user2 readonly region5 v52 -;; @001f v54 = uextend.i64 v53 -;; @001f v60 = icmp.i64 ugt v5, v54 -;; @001f trapnz v60, user17 -;; @001f v77 = load.i64 notrap aligned region6 v124+40 -;; @001f v65 = iconst.i64 20 -;; @001f v66 = iadd v50, v65 ; v65 = 20 -;; @001f v79 = uadd_overflow_trap v66, v5, user2 -;; @001f v78 = iadd v125, v77 -;; @001f v80 = icmp ugt v79, v78 -;; @001f trapnz v80, user2 -;; @001f v45 = iconst.i32 0 -;; @001f call fn1(v0, v66, v45, v5), stack_map=[i32 @ ss0+0] ; v45 = 0 -;; v82 = load.i32 notrap v89 +;; block4(v40: i32, v41: i64): +;; v88 = stack_addr.i64 ss0 +;; store notrap v40, v88 +;; @001f v42 = iconst.i64 16 +;; @001f v43 = iadd v41, v42 ; v42 = 16 +;; @001f store.i32 user2 region5 v2, v43 +;; @001f trapz v40, user16 +;; v123 = load.i64 notrap aligned readonly can_move region0 v0+8 +;; v124 = load.i64 notrap aligned readonly can_move region4 v123+32 +;; @001f v46 = uextend.i64 v40 +;; @001f v49 = iadd v124, v46 +;; @001f v51 = iadd v49, v42 ; v42 = 16 +;; @001f v52 = load.i32 user2 readonly region5 v51 +;; @001f v53 = uextend.i64 v52 +;; @001f v59 = icmp.i64 ugt v4, v53 +;; @001f trapnz v59, user17 +;; @001f v76 = load.i64 notrap aligned region6 v123+40 +;; @001f v64 = iconst.i64 20 +;; @001f v65 = iadd v49, v64 ; v64 = 20 +;; @001f v78 = uadd_overflow_trap v65, v4, user2 +;; @001f v77 = iadd v124, v76 +;; @001f v79 = icmp ugt v78, v77 +;; @001f trapnz v79, user2 +;; @001f v44 = iconst.i32 0 +;; @001f call fn1(v0, v65, v44, v4), stack_map=[i32 @ ss0+0] ; v44 = 0 ;; @0022 jump block1 ;; ;; block1: -;; @0022 return v82 +;; v81 = load.i32 notrap v88 +;; @0022 return v81 ;; } diff --git a/tests/disas/gc/call-indirect-final-type.wat b/tests/disas/gc/call-indirect-final-type.wat index ae8689420551..77b4b79f202c 100644 --- a/tests/disas/gc/call-indirect-final-type.wat +++ b/tests/disas/gc/call-indirect-final-type.wat @@ -31,39 +31,39 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i32, v3: i32): -;; @002b v5 = load.i64 notrap aligned region3 v0+56 -;; @002b v9 = load.i64 notrap aligned region2 v0+48 -;; @002b v6 = ireduce.i32 v5 -;; @002b v7 = icmp uge v3, v6 -;; @002b v13 = iconst.i64 0 -;; @002b v8 = uextend.i64 v3 -;; @002b v10 = iconst.i64 3 -;; @002b v11 = ishl v8, v10 ; v10 = 3 -;; @002b v12 = iadd v9, v11 -;; @002b v14 = select_spectre_guard v7, v13, v12 ; v13 = 0 -;; @002b v15 = load.i64 user6 aligned region4 v14 -;; @002b v16 = iconst.i64 -2 -;; @002b v17 = band v15, v16 ; v16 = -2 -;; @002b brif v15, block3(v17), block2 +;; @002b v4 = load.i64 notrap aligned region3 v0+56 +;; @002b v8 = load.i64 notrap aligned region2 v0+48 +;; @002b v5 = ireduce.i32 v4 +;; @002b v6 = icmp uge v3, v5 +;; @002b v12 = iconst.i64 0 +;; @002b v7 = uextend.i64 v3 +;; @002b v9 = iconst.i64 3 +;; @002b v10 = ishl v7, v9 ; v9 = 3 +;; @002b v11 = iadd v8, v10 +;; @002b v13 = select_spectre_guard v6, v12, v11 ; v12 = 0 +;; @002b v14 = load.i64 user6 aligned region4 v13 +;; @002b v15 = iconst.i64 -2 +;; @002b v16 = band v14, v15 ; v15 = -2 +;; @002b brif v14, block3(v16), block2 ;; ;; block2 cold: -;; @002b v19 = iconst.i32 0 -;; @002b v21 = call fn0(v0, v19, v8) ; v19 = 0 -;; @002b jump block3(v21) +;; @002b v18 = iconst.i32 0 +;; @002b v20 = call fn0(v0, v18, v7) ; v18 = 0 +;; @002b jump block3(v20) ;; -;; block3(v18: i64): -;; @002b v24 = load.i32 user7 aligned readonly v18+16 -;; @002b v22 = load.i64 notrap aligned readonly can_move region5 v0+40 -;; @002b v23 = load.i32 notrap aligned readonly can_move v22 -;; @002b v25 = icmp eq v24, v23 -;; @002b trapz v25, user8 -;; @002b v27 = load.i64 notrap aligned readonly v18+8 -;; @002b v28 = load.i64 notrap aligned readonly v18+24 -;; @002b v29 = call_indirect sig0, v27(v28, v0, v2) +;; block3(v17: i64): +;; @002b v23 = load.i32 user7 aligned readonly v17+16 +;; @002b v21 = load.i64 notrap aligned readonly can_move region5 v0+40 +;; @002b v22 = load.i32 notrap aligned readonly can_move v21 +;; @002b v24 = icmp eq v23, v22 +;; @002b trapz v24, user8 +;; @002b v26 = load.i64 notrap aligned readonly v17+8 +;; @002b v27 = load.i64 notrap aligned readonly v17+24 +;; @002b v28 = call_indirect sig0, v26(v27, v0, v2) ;; @002e jump block1 ;; ;; block1: -;; @002e return v29 +;; @002e return v28 ;; } ;; ;; function u0:1(i64 vmctx, i64, i32, i32) -> i32 tail { @@ -82,33 +82,33 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i32, v3: i32): -;; @0035 v5 = load.i64 notrap aligned region3 v0+56 -;; @0035 v9 = load.i64 notrap aligned region2 v0+48 -;; @0035 v6 = ireduce.i32 v5 -;; @0035 v7 = icmp uge v3, v6 -;; @0035 v13 = iconst.i64 0 -;; @0035 v8 = uextend.i64 v3 -;; @0035 v10 = iconst.i64 3 -;; @0035 v11 = ishl v8, v10 ; v10 = 3 -;; @0035 v12 = iadd v9, v11 -;; @0035 v14 = select_spectre_guard v7, v13, v12 ; v13 = 0 -;; @0035 v15 = load.i64 user6 aligned region4 v14 -;; @0035 v16 = iconst.i64 -2 -;; @0035 v17 = band v15, v16 ; v16 = -2 -;; @0035 brif v15, block3(v17), block2 +;; @0035 v4 = load.i64 notrap aligned region3 v0+56 +;; @0035 v8 = load.i64 notrap aligned region2 v0+48 +;; @0035 v5 = ireduce.i32 v4 +;; @0035 v6 = icmp uge v3, v5 +;; @0035 v12 = iconst.i64 0 +;; @0035 v7 = uextend.i64 v3 +;; @0035 v9 = iconst.i64 3 +;; @0035 v10 = ishl v7, v9 ; v9 = 3 +;; @0035 v11 = iadd v8, v10 +;; @0035 v13 = select_spectre_guard v6, v12, v11 ; v12 = 0 +;; @0035 v14 = load.i64 user6 aligned region4 v13 +;; @0035 v15 = iconst.i64 -2 +;; @0035 v16 = band v14, v15 ; v15 = -2 +;; @0035 brif v14, block3(v16), block2 ;; ;; block2 cold: -;; @0035 v19 = iconst.i32 0 -;; @0035 v21 = call fn0(v0, v19, v8) ; v19 = 0 -;; @0035 jump block3(v21) +;; @0035 v18 = iconst.i32 0 +;; @0035 v20 = call fn0(v0, v18, v7) ; v18 = 0 +;; @0035 jump block3(v20) ;; -;; block3(v18: i64): -;; @0035 v24 = load.i32 user7 aligned readonly v18+16 -;; @0035 v22 = load.i64 notrap aligned readonly can_move region5 v0+40 -;; @0035 v23 = load.i32 notrap aligned readonly can_move v22 -;; @0035 v25 = icmp eq v24, v23 -;; @0035 trapz v25, user8 -;; @0035 v27 = load.i64 notrap aligned readonly v18+8 -;; @0035 v28 = load.i64 notrap aligned readonly v18+24 -;; @0035 return_call_indirect sig0, v27(v28, v0, v2) +;; block3(v17: i64): +;; @0035 v23 = load.i32 user7 aligned readonly v17+16 +;; @0035 v21 = load.i64 notrap aligned readonly can_move region5 v0+40 +;; @0035 v22 = load.i32 notrap aligned readonly can_move v21 +;; @0035 v24 = icmp eq v23, v22 +;; @0035 trapz v24, user8 +;; @0035 v26 = load.i64 notrap aligned readonly v17+8 +;; @0035 v27 = load.i64 notrap aligned readonly v17+24 +;; @0035 return_call_indirect sig0, v26(v27, v0, v2) ;; } diff --git a/tests/disas/gc/copying/array-get-s.wat b/tests/disas/gc/copying/array-get-s.wat index af1fba7faaff..36566081ef8c 100644 --- a/tests/disas/gc/copying/array-get-s.wat +++ b/tests/disas/gc/copying/array-get-s.wat @@ -21,32 +21,32 @@ ;; ;; block0(v0: i64, v1: i64, v2: i32, v3: i32): ;; @0022 trapz v2, user16 -;; @0022 v6 = load.i64 notrap aligned readonly can_move region0 v0+8 -;; @0022 v7 = load.i64 notrap aligned readonly can_move region2 v6+32 -;; @0022 v5 = uextend.i64 v2 -;; @0022 v8 = iadd v7, v5 -;; @0022 v9 = iconst.i64 16 -;; @0022 v10 = iadd v8, v9 ; v9 = 16 -;; @0022 v11 = load.i32 user2 readonly region4 v10 -;; @0022 v12 = icmp ult v3, v11 -;; @0022 trapz v12, user17 -;; @0022 v14 = uextend.i64 v11 -;; @0022 v16 = iconst.i64 32 -;; @0022 v17 = ushr v14, v16 ; v16 = 32 -;; @0022 trapnz v17, user2 -;; @0022 v19 = iconst.i32 20 -;; @0022 v20 = uadd_overflow_trap v11, v19, user2 ; v19 = 20 -;; @0022 v24 = uadd_overflow_trap v2, v20, user2 -;; @0022 v25 = uextend.i64 v24 -;; @0022 v28 = iadd v7, v25 -;; @0022 v23 = iadd v3, v19 ; v19 = 20 -;; @0022 v29 = isub v20, v23 -;; @0022 v30 = uextend.i64 v29 -;; @0022 v31 = isub v28, v30 -;; @0022 v32 = load.i8 user2 little region4 v31 +;; @0022 v5 = load.i64 notrap aligned readonly can_move region0 v0+8 +;; @0022 v6 = load.i64 notrap aligned readonly can_move region2 v5+32 +;; @0022 v4 = uextend.i64 v2 +;; @0022 v7 = iadd v6, v4 +;; @0022 v8 = iconst.i64 16 +;; @0022 v9 = iadd v7, v8 ; v8 = 16 +;; @0022 v10 = load.i32 user2 readonly region4 v9 +;; @0022 v11 = icmp ult v3, v10 +;; @0022 trapz v11, user17 +;; @0022 v13 = uextend.i64 v10 +;; @0022 v15 = iconst.i64 32 +;; @0022 v16 = ushr v13, v15 ; v15 = 32 +;; @0022 trapnz v16, user2 +;; @0022 v18 = iconst.i32 20 +;; @0022 v19 = uadd_overflow_trap v10, v18, user2 ; v18 = 20 +;; @0022 v23 = uadd_overflow_trap v2, v19, user2 +;; @0022 v24 = uextend.i64 v23 +;; @0022 v27 = iadd v6, v24 +;; @0022 v22 = iadd v3, v18 ; v18 = 20 +;; @0022 v28 = isub v19, v22 +;; @0022 v29 = uextend.i64 v28 +;; @0022 v30 = isub v27, v29 +;; @0022 v31 = load.i8 user2 little region4 v30 ;; @0025 jump block1 ;; ;; block1: -;; @0022 v33 = sextend.i32 v32 -;; @0025 return v33 +;; @0022 v32 = sextend.i32 v31 +;; @0025 return v32 ;; } diff --git a/tests/disas/gc/copying/array-get-u.wat b/tests/disas/gc/copying/array-get-u.wat index 5974396d8695..c03bfaa2f144 100644 --- a/tests/disas/gc/copying/array-get-u.wat +++ b/tests/disas/gc/copying/array-get-u.wat @@ -21,32 +21,32 @@ ;; ;; block0(v0: i64, v1: i64, v2: i32, v3: i32): ;; @0022 trapz v2, user16 -;; @0022 v6 = load.i64 notrap aligned readonly can_move region0 v0+8 -;; @0022 v7 = load.i64 notrap aligned readonly can_move region2 v6+32 -;; @0022 v5 = uextend.i64 v2 -;; @0022 v8 = iadd v7, v5 -;; @0022 v9 = iconst.i64 16 -;; @0022 v10 = iadd v8, v9 ; v9 = 16 -;; @0022 v11 = load.i32 user2 readonly region4 v10 -;; @0022 v12 = icmp ult v3, v11 -;; @0022 trapz v12, user17 -;; @0022 v14 = uextend.i64 v11 -;; @0022 v16 = iconst.i64 32 -;; @0022 v17 = ushr v14, v16 ; v16 = 32 -;; @0022 trapnz v17, user2 -;; @0022 v19 = iconst.i32 20 -;; @0022 v20 = uadd_overflow_trap v11, v19, user2 ; v19 = 20 -;; @0022 v24 = uadd_overflow_trap v2, v20, user2 -;; @0022 v25 = uextend.i64 v24 -;; @0022 v28 = iadd v7, v25 -;; @0022 v23 = iadd v3, v19 ; v19 = 20 -;; @0022 v29 = isub v20, v23 -;; @0022 v30 = uextend.i64 v29 -;; @0022 v31 = isub v28, v30 -;; @0022 v32 = load.i8 user2 little region4 v31 +;; @0022 v5 = load.i64 notrap aligned readonly can_move region0 v0+8 +;; @0022 v6 = load.i64 notrap aligned readonly can_move region2 v5+32 +;; @0022 v4 = uextend.i64 v2 +;; @0022 v7 = iadd v6, v4 +;; @0022 v8 = iconst.i64 16 +;; @0022 v9 = iadd v7, v8 ; v8 = 16 +;; @0022 v10 = load.i32 user2 readonly region4 v9 +;; @0022 v11 = icmp ult v3, v10 +;; @0022 trapz v11, user17 +;; @0022 v13 = uextend.i64 v10 +;; @0022 v15 = iconst.i64 32 +;; @0022 v16 = ushr v13, v15 ; v15 = 32 +;; @0022 trapnz v16, user2 +;; @0022 v18 = iconst.i32 20 +;; @0022 v19 = uadd_overflow_trap v10, v18, user2 ; v18 = 20 +;; @0022 v23 = uadd_overflow_trap v2, v19, user2 +;; @0022 v24 = uextend.i64 v23 +;; @0022 v27 = iadd v6, v24 +;; @0022 v22 = iadd v3, v18 ; v18 = 20 +;; @0022 v28 = isub v19, v22 +;; @0022 v29 = uextend.i64 v28 +;; @0022 v30 = isub v27, v29 +;; @0022 v31 = load.i8 user2 little region4 v30 ;; @0025 jump block1 ;; ;; block1: -;; @0022 v33 = uextend.i32 v32 -;; @0025 return v33 +;; @0022 v32 = uextend.i32 v31 +;; @0025 return v32 ;; } diff --git a/tests/disas/gc/copying/array-get.wat b/tests/disas/gc/copying/array-get.wat index a74ef55524be..e2a042190030 100644 --- a/tests/disas/gc/copying/array-get.wat +++ b/tests/disas/gc/copying/array-get.wat @@ -21,36 +21,36 @@ ;; ;; block0(v0: i64, v1: i64, v2: i32, v3: i32): ;; @0022 trapz v2, user16 -;; @0022 v6 = load.i64 notrap aligned readonly can_move region0 v0+8 -;; @0022 v7 = load.i64 notrap aligned readonly can_move region2 v6+32 -;; @0022 v5 = uextend.i64 v2 -;; @0022 v8 = iadd v7, v5 -;; @0022 v9 = iconst.i64 16 -;; @0022 v10 = iadd v8, v9 ; v9 = 16 -;; @0022 v11 = load.i32 user2 readonly region4 v10 -;; @0022 v12 = icmp ult v3, v11 -;; @0022 trapz v12, user17 -;; @0022 v14 = uextend.i64 v11 -;; v33 = iconst.i64 3 -;; v34 = ishl v14, v33 ; v33 = 3 -;; @0022 v16 = iconst.i64 32 -;; @0022 v17 = ushr v34, v16 ; v16 = 32 -;; @0022 trapnz v17, user2 -;; v43 = iconst.i32 3 -;; v44 = ishl v11, v43 ; v43 = 3 -;; @0022 v19 = iconst.i32 24 -;; @0022 v20 = uadd_overflow_trap v44, v19, user2 ; v19 = 24 -;; @0022 v24 = uadd_overflow_trap v2, v20, user2 -;; @0022 v25 = uextend.i64 v24 -;; @0022 v28 = iadd v7, v25 -;; v50 = ishl v3, v43 ; v43 = 3 -;; @0022 v23 = iadd v50, v19 ; v19 = 24 -;; @0022 v29 = isub v20, v23 -;; @0022 v30 = uextend.i64 v29 -;; @0022 v31 = isub v28, v30 -;; @0022 v32 = load.i64 user2 little region4 v31 +;; @0022 v5 = load.i64 notrap aligned readonly can_move region0 v0+8 +;; @0022 v6 = load.i64 notrap aligned readonly can_move region2 v5+32 +;; @0022 v4 = uextend.i64 v2 +;; @0022 v7 = iadd v6, v4 +;; @0022 v8 = iconst.i64 16 +;; @0022 v9 = iadd v7, v8 ; v8 = 16 +;; @0022 v10 = load.i32 user2 readonly region4 v9 +;; @0022 v11 = icmp ult v3, v10 +;; @0022 trapz v11, user17 +;; @0022 v13 = uextend.i64 v10 +;; v32 = iconst.i64 3 +;; v33 = ishl v13, v32 ; v32 = 3 +;; @0022 v15 = iconst.i64 32 +;; @0022 v16 = ushr v33, v15 ; v15 = 32 +;; @0022 trapnz v16, user2 +;; v42 = iconst.i32 3 +;; v43 = ishl v10, v42 ; v42 = 3 +;; @0022 v18 = iconst.i32 24 +;; @0022 v19 = uadd_overflow_trap v43, v18, user2 ; v18 = 24 +;; @0022 v23 = uadd_overflow_trap v2, v19, user2 +;; @0022 v24 = uextend.i64 v23 +;; @0022 v27 = iadd v6, v24 +;; v49 = ishl v3, v42 ; v42 = 3 +;; @0022 v22 = iadd v49, v18 ; v18 = 24 +;; @0022 v28 = isub v19, v22 +;; @0022 v29 = uextend.i64 v28 +;; @0022 v30 = isub v27, v29 +;; @0022 v31 = load.i64 user2 little region4 v30 ;; @0025 jump block1 ;; ;; block1: -;; @0025 return v32 +;; @0025 return v31 ;; } diff --git a/tests/disas/gc/copying/array-len.wat b/tests/disas/gc/copying/array-len.wat index fab40cd14297..6ae63964e402 100644 --- a/tests/disas/gc/copying/array-len.wat +++ b/tests/disas/gc/copying/array-len.wat @@ -21,15 +21,15 @@ ;; ;; block0(v0: i64, v1: i64, v2: i32): ;; @001f trapz v2, user16 -;; @001f v5 = load.i64 notrap aligned readonly can_move region0 v0+8 -;; @001f v6 = load.i64 notrap aligned readonly can_move region2 v5+32 -;; @001f v4 = uextend.i64 v2 -;; @001f v7 = iadd v6, v4 -;; @001f v8 = iconst.i64 16 -;; @001f v9 = iadd v7, v8 ; v8 = 16 -;; @001f v10 = load.i32 user2 readonly region4 v9 +;; @001f v4 = load.i64 notrap aligned readonly can_move region0 v0+8 +;; @001f v5 = load.i64 notrap aligned readonly can_move region2 v4+32 +;; @001f v3 = uextend.i64 v2 +;; @001f v6 = iadd v5, v3 +;; @001f v7 = iconst.i64 16 +;; @001f v8 = iadd v6, v7 ; v7 = 16 +;; @001f v9 = load.i32 user2 readonly region4 v8 ;; @0021 jump block1 ;; ;; block1: -;; @0021 return v10 +;; @0021 return v9 ;; } diff --git a/tests/disas/gc/copying/array-new-fixed-of-gc-refs.wat b/tests/disas/gc/copying/array-new-fixed-of-gc-refs.wat index 54df071b6b65..8187dc98a9ee 100644 --- a/tests/disas/gc/copying/array-new-fixed-of-gc-refs.wat +++ b/tests/disas/gc/copying/array-new-fixed-of-gc-refs.wat @@ -27,121 +27,121 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i32, v3: i32, v4: i32): -;; v138 = stack_addr.i64 ss2 -;; store notrap v2, v138 -;; v139 = stack_addr.i64 ss1 -;; store notrap v3, v139 -;; v140 = stack_addr.i64 ss0 -;; store notrap v4, v140 -;; @0025 v15 = load.i64 notrap aligned readonly can_move region2 v0+32 -;; @0025 v16 = load.i32 notrap aligned v15 -;; @0025 v17 = load.i32 notrap aligned v15+4 -;; @0025 v23 = uextend.i64 v16 -;; @0025 v11 = iconst.i64 32 -;; @0025 v24 = iadd v23, v11 ; v11 = 32 -;; @0025 v25 = uextend.i64 v17 -;; @0025 v26 = icmp ule v24, v25 -;; @0025 brif v26, block2, block3 +;; v137 = stack_addr.i64 ss2 +;; store notrap v2, v137 +;; v138 = stack_addr.i64 ss1 +;; store notrap v3, v138 +;; v139 = stack_addr.i64 ss0 +;; store notrap v4, v139 +;; @0025 v14 = load.i64 notrap aligned readonly can_move region2 v0+32 +;; @0025 v15 = load.i32 notrap aligned v14 +;; @0025 v16 = load.i32 notrap aligned v14+4 +;; @0025 v22 = uextend.i64 v15 +;; @0025 v10 = iconst.i64 32 +;; @0025 v23 = iadd v22, v10 ; v10 = 32 +;; @0025 v24 = uextend.i64 v16 +;; @0025 v25 = icmp ule v23, v24 +;; @0025 brif v25, block2, block3 ;; ;; block2: -;; v260 = iconst.i32 32 -;; v166 = iadd.i32 v16, v260 ; v260 = 32 -;; @0025 store notrap aligned v166, v15 -;; v261 = iconst.i32 -1476394994 -;; v262 = load.i64 notrap aligned readonly can_move region0 v0+8 -;; v263 = load.i64 notrap aligned readonly can_move region4 v262+32 -;; @0025 v40 = iadd v263, v23 -;; @0025 store notrap aligned v261, v40 ; v261 = -1476394994 -;; v264 = load.i64 notrap aligned readonly can_move region3 v0+40 -;; v265 = load.i32 notrap aligned readonly can_move v264 -;; @0025 store notrap aligned v265, v40+4 -;; v266 = iconst.i64 32 -;; @0025 istore32 notrap aligned v266, v40+8 ; v266 = 32 -;; @0025 jump block4(v16, v40) +;; v259 = iconst.i32 32 +;; v165 = iadd.i32 v15, v259 ; v259 = 32 +;; @0025 store notrap aligned v165, v14 +;; v260 = iconst.i32 -1476394994 +;; v261 = load.i64 notrap aligned readonly can_move region0 v0+8 +;; v262 = load.i64 notrap aligned readonly can_move region4 v261+32 +;; @0025 v39 = iadd v262, v22 +;; @0025 store notrap aligned v260, v39 ; v260 = -1476394994 +;; v263 = load.i64 notrap aligned readonly can_move region3 v0+40 +;; v264 = load.i32 notrap aligned readonly can_move v263 +;; @0025 store notrap aligned v264, v39+4 +;; v265 = iconst.i64 32 +;; @0025 istore32 notrap aligned v265, v39+8 ; v265 = 32 +;; @0025 jump block4(v15, v39) ;; ;; block3 cold: -;; @0025 v27 = iconst.i32 -1476394994 -;; @0025 v28 = load.i64 notrap aligned readonly can_move region3 v0+40 -;; @0025 v29 = load.i32 notrap aligned readonly can_move v28 -;; v152 = iconst.i32 32 -;; @0025 v30 = iconst.i32 16 -;; @0025 v31 = call fn0(v0, v27, v29, v152, v30), stack_map=[i32 @ ss2+0, i32 @ ss1+0, i32 @ ss0+0] ; v27 = -1476394994, v152 = 32, v30 = 16 -;; @0025 v32 = load.i64 notrap aligned readonly can_move region0 v0+8 -;; @0025 v33 = load.i64 notrap aligned readonly can_move region4 v32+32 -;; @0025 v34 = uextend.i64 v31 -;; @0025 v35 = iadd v33, v34 -;; @0025 jump block4(v31, v35) +;; @0025 v26 = iconst.i32 -1476394994 +;; @0025 v27 = load.i64 notrap aligned readonly can_move region3 v0+40 +;; @0025 v28 = load.i32 notrap aligned readonly can_move v27 +;; v151 = iconst.i32 32 +;; @0025 v29 = iconst.i32 16 +;; @0025 v30 = call fn0(v0, v26, v28, v151, v29), stack_map=[i32 @ ss2+0, i32 @ ss1+0, i32 @ ss0+0] ; v26 = -1476394994, v151 = 32, v29 = 16 +;; @0025 v31 = load.i64 notrap aligned readonly can_move region0 v0+8 +;; @0025 v32 = load.i64 notrap aligned readonly can_move region4 v31+32 +;; @0025 v33 = uextend.i64 v30 +;; @0025 v34 = iadd v32, v33 +;; @0025 jump block4(v30, v34) ;; -;; block4(v44: i32, v45: i64): -;; @0025 v6 = iconst.i32 3 -;; @0025 v46 = iconst.i64 16 -;; @0025 v47 = iadd v45, v46 ; v46 = 16 -;; @0025 store user2 region5 v6, v47 ; v6 = 3 -;; @0025 trapz v44, user16 -;; v267 = load.i64 notrap aligned readonly can_move region0 v0+8 -;; v268 = load.i64 notrap aligned readonly can_move region4 v267+32 -;; @0025 v49 = uextend.i64 v44 -;; @0025 v52 = iadd v268, v49 -;; @0025 v54 = iadd v52, v46 ; v46 = 16 -;; @0025 v55 = load.i32 user2 readonly region5 v54 -;; @0025 trapz v55, user17 -;; @0025 v58 = uextend.i64 v55 -;; v143 = iconst.i64 2 -;; v172 = ishl v58, v143 ; v143 = 2 -;; v269 = iconst.i64 32 -;; v270 = ushr v172, v269 ; v269 = 32 +;; block4(v43: i32, v44: i64): +;; @0025 v5 = iconst.i32 3 +;; @0025 v45 = iconst.i64 16 +;; @0025 v46 = iadd v44, v45 ; v45 = 16 +;; @0025 store user2 region5 v5, v46 ; v5 = 3 +;; @0025 trapz v43, user16 +;; v266 = load.i64 notrap aligned readonly can_move region0 v0+8 +;; v267 = load.i64 notrap aligned readonly can_move region4 v266+32 +;; @0025 v48 = uextend.i64 v43 +;; @0025 v51 = iadd v267, v48 +;; @0025 v53 = iadd v51, v45 ; v45 = 16 +;; @0025 v54 = load.i32 user2 readonly region5 v53 +;; @0025 trapz v54, user17 +;; @0025 v57 = uextend.i64 v54 +;; v142 = iconst.i64 2 +;; v171 = ishl v57, v142 ; v142 = 2 +;; v268 = iconst.i64 32 +;; v269 = ushr v171, v268 ; v268 = 32 +;; @0025 trapnz v269, user2 +;; v180 = iconst.i32 2 +;; v181 = ishl v54, v180 ; v180 = 2 +;; @0025 v6 = iconst.i32 20 +;; @0025 v63 = uadd_overflow_trap v181, v6, user2 ; v6 = 20 +;; @0025 v67 = uadd_overflow_trap v43, v63, user2 +;; v136 = load.i32 notrap v137 +;; @0025 v68 = uextend.i64 v67 +;; @0025 v71 = iadd v267, v68 +;; @0025 v72 = isub v63, v6 ; v6 = 20 +;; @0025 v73 = uextend.i64 v72 +;; @0025 v74 = isub v71, v73 +;; @0025 store user2 little region5 v136, v74 +;; @0025 v82 = load.i32 user2 readonly region5 v53 +;; @0025 v75 = iconst.i32 1 +;; v198 = icmp ugt v82, v75 ; v75 = 1 +;; @0025 trapz v198, user17 +;; @0025 v85 = uextend.i64 v82 +;; v200 = ishl v85, v142 ; v142 = 2 +;; v270 = ushr v200, v268 ; v268 = 32 ;; @0025 trapnz v270, user2 -;; v181 = iconst.i32 2 -;; v182 = ishl v55, v181 ; v181 = 2 -;; @0025 v7 = iconst.i32 20 -;; @0025 v64 = uadd_overflow_trap v182, v7, user2 ; v7 = 20 -;; @0025 v68 = uadd_overflow_trap v44, v64, user2 -;; v137 = load.i32 notrap v138 -;; @0025 v69 = uextend.i64 v68 -;; @0025 v72 = iadd v268, v69 -;; @0025 v73 = isub v64, v7 ; v7 = 20 -;; @0025 v74 = uextend.i64 v73 -;; @0025 v75 = isub v72, v74 -;; @0025 store user2 little region5 v137, v75 -;; @0025 v83 = load.i32 user2 readonly region5 v54 -;; @0025 v76 = iconst.i32 1 -;; v199 = icmp ugt v83, v76 ; v76 = 1 -;; @0025 trapz v199, user17 -;; @0025 v86 = uextend.i64 v83 -;; v201 = ishl v86, v143 ; v143 = 2 -;; v271 = ushr v201, v269 ; v269 = 32 +;; v207 = ishl v82, v180 ; v180 = 2 +;; @0025 v91 = uadd_overflow_trap v207, v6, user2 ; v6 = 20 +;; @0025 v95 = uadd_overflow_trap v43, v91, user2 +;; v134 = load.i32 notrap v138 +;; @0025 v96 = uextend.i64 v95 +;; @0025 v99 = iadd v267, v96 +;; v220 = iconst.i32 24 +;; @0025 v100 = isub v91, v220 ; v220 = 24 +;; @0025 v101 = uextend.i64 v100 +;; @0025 v102 = isub v99, v101 +;; @0025 store user2 little region5 v134, v102 +;; @0025 v110 = load.i32 user2 readonly region5 v53 +;; v226 = icmp ugt v110, v180 ; v180 = 2 +;; @0025 trapz v226, user17 +;; @0025 v113 = uextend.i64 v110 +;; v228 = ishl v113, v142 ; v142 = 2 +;; v271 = ushr v228, v268 ; v268 = 32 ;; @0025 trapnz v271, user2 -;; v208 = ishl v83, v181 ; v181 = 2 -;; @0025 v92 = uadd_overflow_trap v208, v7, user2 ; v7 = 20 -;; @0025 v96 = uadd_overflow_trap v44, v92, user2 -;; v135 = load.i32 notrap v139 -;; @0025 v97 = uextend.i64 v96 -;; @0025 v100 = iadd v268, v97 -;; v221 = iconst.i32 24 -;; @0025 v101 = isub v92, v221 ; v221 = 24 -;; @0025 v102 = uextend.i64 v101 -;; @0025 v103 = isub v100, v102 -;; @0025 store user2 little region5 v135, v103 -;; @0025 v111 = load.i32 user2 readonly region5 v54 -;; v227 = icmp ugt v111, v181 ; v181 = 2 -;; @0025 trapz v227, user17 -;; @0025 v114 = uextend.i64 v111 -;; v229 = ishl v114, v143 ; v143 = 2 -;; v272 = ushr v229, v269 ; v269 = 32 -;; @0025 trapnz v272, user2 -;; v236 = ishl v111, v181 ; v181 = 2 -;; @0025 v120 = uadd_overflow_trap v236, v7, user2 ; v7 = 20 -;; @0025 v124 = uadd_overflow_trap v44, v120, user2 -;; v133 = load.i32 notrap v140 -;; @0025 v125 = uextend.i64 v124 -;; @0025 v128 = iadd v268, v125 -;; v254 = iconst.i32 28 -;; @0025 v129 = isub v120, v254 ; v254 = 28 -;; @0025 v130 = uextend.i64 v129 -;; @0025 v131 = isub v128, v130 -;; @0025 store user2 little region5 v133, v131 -;; @0029 jump block1(v44) +;; v235 = ishl v110, v180 ; v180 = 2 +;; @0025 v119 = uadd_overflow_trap v235, v6, user2 ; v6 = 20 +;; @0025 v123 = uadd_overflow_trap v43, v119, user2 +;; v132 = load.i32 notrap v139 +;; @0025 v124 = uextend.i64 v123 +;; @0025 v127 = iadd v267, v124 +;; v253 = iconst.i32 28 +;; @0025 v128 = isub v119, v253 ; v253 = 28 +;; @0025 v129 = uextend.i64 v128 +;; @0025 v130 = isub v127, v129 +;; @0025 store user2 little region5 v132, v130 +;; @0029 jump block1 ;; -;; block1(v5: i32): -;; @0029 return v5 +;; block1: +;; @0029 return v43 ;; } diff --git a/tests/disas/gc/copying/array-new-fixed.wat b/tests/disas/gc/copying/array-new-fixed.wat index 531feedce10b..dc9c31e9de50 100644 --- a/tests/disas/gc/copying/array-new-fixed.wat +++ b/tests/disas/gc/copying/array-new-fixed.wat @@ -24,112 +24,112 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i64, v3: i64, v4: i64): -;; @0025 v15 = load.i64 notrap aligned readonly can_move region2 v0+32 -;; @0025 v16 = load.i32 notrap aligned v15 -;; @0025 v17 = load.i32 notrap aligned v15+4 -;; @0025 v23 = uextend.i64 v16 -;; v142 = iconst.i64 48 -;; @0025 v24 = iadd v23, v142 ; v142 = 48 -;; @0025 v25 = uextend.i64 v17 -;; @0025 v26 = icmp ule v24, v25 -;; @0025 brif v26, block2, block3 +;; @0025 v14 = load.i64 notrap aligned readonly can_move region2 v0+32 +;; @0025 v15 = load.i32 notrap aligned v14 +;; @0025 v16 = load.i32 notrap aligned v14+4 +;; @0025 v22 = uextend.i64 v15 +;; v141 = iconst.i64 48 +;; @0025 v23 = iadd v22, v141 ; v141 = 48 +;; @0025 v24 = uextend.i64 v16 +;; @0025 v25 = icmp ule v23, v24 +;; @0025 brif v25, block2, block3 ;; ;; block2: -;; v248 = iconst.i32 48 -;; v156 = iadd.i32 v16, v248 ; v248 = 48 -;; @0025 store notrap aligned v156, v15 -;; v249 = iconst.i32 -1476395002 -;; v250 = load.i64 notrap aligned readonly can_move region0 v0+8 -;; v251 = load.i64 notrap aligned readonly can_move region4 v250+32 -;; @0025 v40 = iadd v251, v23 -;; @0025 store notrap aligned v249, v40 ; v249 = -1476395002 -;; v252 = load.i64 notrap aligned readonly can_move region3 v0+40 -;; v253 = load.i32 notrap aligned readonly can_move v252 -;; @0025 store notrap aligned v253, v40+4 -;; v254 = iconst.i64 48 -;; @0025 istore32 notrap aligned v254, v40+8 ; v254 = 48 -;; @0025 jump block4(v16, v40) +;; v247 = iconst.i32 48 +;; v155 = iadd.i32 v15, v247 ; v247 = 48 +;; @0025 store notrap aligned v155, v14 +;; v248 = iconst.i32 -1476395002 +;; v249 = load.i64 notrap aligned readonly can_move region0 v0+8 +;; v250 = load.i64 notrap aligned readonly can_move region4 v249+32 +;; @0025 v39 = iadd v250, v22 +;; @0025 store notrap aligned v248, v39 ; v248 = -1476395002 +;; v251 = load.i64 notrap aligned readonly can_move region3 v0+40 +;; v252 = load.i32 notrap aligned readonly can_move v251 +;; @0025 store notrap aligned v252, v39+4 +;; v253 = iconst.i64 48 +;; @0025 istore32 notrap aligned v253, v39+8 ; v253 = 48 +;; @0025 jump block4(v15, v39) ;; ;; block3 cold: -;; @0025 v27 = iconst.i32 -1476395002 -;; @0025 v28 = load.i64 notrap aligned readonly can_move region3 v0+40 -;; @0025 v29 = load.i32 notrap aligned readonly can_move v28 -;; v141 = iconst.i32 48 -;; @0025 v30 = iconst.i32 16 -;; @0025 v31 = call fn0(v0, v27, v29, v141, v30) ; v27 = -1476395002, v141 = 48, v30 = 16 -;; @0025 v32 = load.i64 notrap aligned readonly can_move region0 v0+8 -;; @0025 v33 = load.i64 notrap aligned readonly can_move region4 v32+32 -;; @0025 v34 = uextend.i64 v31 -;; @0025 v35 = iadd v33, v34 -;; @0025 jump block4(v31, v35) +;; @0025 v26 = iconst.i32 -1476395002 +;; @0025 v27 = load.i64 notrap aligned readonly can_move region3 v0+40 +;; @0025 v28 = load.i32 notrap aligned readonly can_move v27 +;; v140 = iconst.i32 48 +;; @0025 v29 = iconst.i32 16 +;; @0025 v30 = call fn0(v0, v26, v28, v140, v29) ; v26 = -1476395002, v140 = 48, v29 = 16 +;; @0025 v31 = load.i64 notrap aligned readonly can_move region0 v0+8 +;; @0025 v32 = load.i64 notrap aligned readonly can_move region4 v31+32 +;; @0025 v33 = uextend.i64 v30 +;; @0025 v34 = iadd v32, v33 +;; @0025 jump block4(v30, v34) ;; -;; block4(v44: i32, v45: i64): -;; @0025 v6 = iconst.i32 3 -;; @0025 v46 = iconst.i64 16 -;; @0025 v47 = iadd v45, v46 ; v46 = 16 -;; @0025 store user2 region5 v6, v47 ; v6 = 3 -;; @0025 trapz v44, user16 -;; v255 = load.i64 notrap aligned readonly can_move region0 v0+8 -;; v256 = load.i64 notrap aligned readonly can_move region4 v255+32 -;; @0025 v49 = uextend.i64 v44 -;; @0025 v52 = iadd v256, v49 -;; @0025 v54 = iadd v52, v46 ; v46 = 16 -;; @0025 v55 = load.i32 user2 readonly region5 v54 -;; @0025 trapz v55, user17 -;; @0025 v58 = uextend.i64 v55 -;; v132 = iconst.i64 3 -;; v162 = ishl v58, v132 ; v132 = 3 -;; @0025 v11 = iconst.i64 32 -;; @0025 v61 = ushr v162, v11 ; v11 = 32 -;; @0025 trapnz v61, user2 -;; v171 = ishl v55, v6 ; v6 = 3 -;; @0025 v7 = iconst.i32 24 -;; @0025 v64 = uadd_overflow_trap v171, v7, user2 ; v7 = 24 -;; @0025 v68 = uadd_overflow_trap v44, v64, user2 -;; @0025 v69 = uextend.i64 v68 -;; @0025 v72 = iadd v256, v69 -;; @0025 v73 = isub v64, v7 ; v7 = 24 -;; @0025 v74 = uextend.i64 v73 -;; @0025 v75 = isub v72, v74 -;; @0025 store.i64 user2 little region5 v2, v75 -;; @0025 v83 = load.i32 user2 readonly region5 v54 -;; @0025 v76 = iconst.i32 1 -;; v188 = icmp ugt v83, v76 ; v76 = 1 -;; @0025 trapz v188, user17 -;; @0025 v86 = uextend.i64 v83 -;; v190 = ishl v86, v132 ; v132 = 3 -;; @0025 v89 = ushr v190, v11 ; v11 = 32 -;; @0025 trapnz v89, user2 -;; v197 = ishl v83, v6 ; v6 = 3 -;; @0025 v92 = uadd_overflow_trap v197, v7, user2 ; v7 = 24 -;; @0025 v96 = uadd_overflow_trap v44, v92, user2 -;; @0025 v97 = uextend.i64 v96 -;; @0025 v100 = iadd v256, v97 -;; v210 = iconst.i32 32 -;; @0025 v101 = isub v92, v210 ; v210 = 32 -;; @0025 v102 = uextend.i64 v101 -;; @0025 v103 = isub v100, v102 -;; @0025 store.i64 user2 little region5 v3, v103 -;; @0025 v111 = load.i32 user2 readonly region5 v54 -;; @0025 v104 = iconst.i32 2 -;; v216 = icmp ugt v111, v104 ; v104 = 2 -;; @0025 trapz v216, user17 -;; @0025 v114 = uextend.i64 v111 -;; v218 = ishl v114, v132 ; v132 = 3 -;; @0025 v117 = ushr v218, v11 ; v11 = 32 -;; @0025 trapnz v117, user2 -;; v225 = ishl v111, v6 ; v6 = 3 -;; @0025 v120 = uadd_overflow_trap v225, v7, user2 ; v7 = 24 -;; @0025 v124 = uadd_overflow_trap v44, v120, user2 -;; @0025 v125 = uextend.i64 v124 -;; @0025 v128 = iadd v256, v125 -;; v242 = iconst.i32 40 -;; @0025 v129 = isub v120, v242 ; v242 = 40 -;; @0025 v130 = uextend.i64 v129 -;; @0025 v131 = isub v128, v130 -;; @0025 store.i64 user2 little region5 v4, v131 -;; @0029 jump block1(v44) +;; block4(v43: i32, v44: i64): +;; @0025 v5 = iconst.i32 3 +;; @0025 v45 = iconst.i64 16 +;; @0025 v46 = iadd v44, v45 ; v45 = 16 +;; @0025 store user2 region5 v5, v46 ; v5 = 3 +;; @0025 trapz v43, user16 +;; v254 = load.i64 notrap aligned readonly can_move region0 v0+8 +;; v255 = load.i64 notrap aligned readonly can_move region4 v254+32 +;; @0025 v48 = uextend.i64 v43 +;; @0025 v51 = iadd v255, v48 +;; @0025 v53 = iadd v51, v45 ; v45 = 16 +;; @0025 v54 = load.i32 user2 readonly region5 v53 +;; @0025 trapz v54, user17 +;; @0025 v57 = uextend.i64 v54 +;; v131 = iconst.i64 3 +;; v161 = ishl v57, v131 ; v131 = 3 +;; @0025 v10 = iconst.i64 32 +;; @0025 v60 = ushr v161, v10 ; v10 = 32 +;; @0025 trapnz v60, user2 +;; v170 = ishl v54, v5 ; v5 = 3 +;; @0025 v6 = iconst.i32 24 +;; @0025 v63 = uadd_overflow_trap v170, v6, user2 ; v6 = 24 +;; @0025 v67 = uadd_overflow_trap v43, v63, user2 +;; @0025 v68 = uextend.i64 v67 +;; @0025 v71 = iadd v255, v68 +;; @0025 v72 = isub v63, v6 ; v6 = 24 +;; @0025 v73 = uextend.i64 v72 +;; @0025 v74 = isub v71, v73 +;; @0025 store.i64 user2 little region5 v2, v74 +;; @0025 v82 = load.i32 user2 readonly region5 v53 +;; @0025 v75 = iconst.i32 1 +;; v187 = icmp ugt v82, v75 ; v75 = 1 +;; @0025 trapz v187, user17 +;; @0025 v85 = uextend.i64 v82 +;; v189 = ishl v85, v131 ; v131 = 3 +;; @0025 v88 = ushr v189, v10 ; v10 = 32 +;; @0025 trapnz v88, user2 +;; v196 = ishl v82, v5 ; v5 = 3 +;; @0025 v91 = uadd_overflow_trap v196, v6, user2 ; v6 = 24 +;; @0025 v95 = uadd_overflow_trap v43, v91, user2 +;; @0025 v96 = uextend.i64 v95 +;; @0025 v99 = iadd v255, v96 +;; v209 = iconst.i32 32 +;; @0025 v100 = isub v91, v209 ; v209 = 32 +;; @0025 v101 = uextend.i64 v100 +;; @0025 v102 = isub v99, v101 +;; @0025 store.i64 user2 little region5 v3, v102 +;; @0025 v110 = load.i32 user2 readonly region5 v53 +;; @0025 v103 = iconst.i32 2 +;; v215 = icmp ugt v110, v103 ; v103 = 2 +;; @0025 trapz v215, user17 +;; @0025 v113 = uextend.i64 v110 +;; v217 = ishl v113, v131 ; v131 = 3 +;; @0025 v116 = ushr v217, v10 ; v10 = 32 +;; @0025 trapnz v116, user2 +;; v224 = ishl v110, v5 ; v5 = 3 +;; @0025 v119 = uadd_overflow_trap v224, v6, user2 ; v6 = 24 +;; @0025 v123 = uadd_overflow_trap v43, v119, user2 +;; @0025 v124 = uextend.i64 v123 +;; @0025 v127 = iadd v255, v124 +;; v241 = iconst.i32 40 +;; @0025 v128 = isub v119, v241 ; v241 = 40 +;; @0025 v129 = uextend.i64 v128 +;; @0025 v130 = isub v127, v129 +;; @0025 store.i64 user2 little region5 v4, v130 +;; @0029 jump block1 ;; -;; block1(v5: i32): -;; @0029 return v5 +;; block1: +;; @0029 return v43 ;; } diff --git a/tests/disas/gc/copying/array-new.wat b/tests/disas/gc/copying/array-new.wat index 9e1f2c829045..a2e9fa26e5f5 100644 --- a/tests/disas/gc/copying/array-new.wat +++ b/tests/disas/gc/copying/array-new.wat @@ -24,98 +24,98 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i64, v3: i32): -;; @0022 v6 = uextend.i64 v3 -;; v88 = iconst.i64 3 -;; v89 = ishl v6, v88 ; v88 = 3 -;; @0022 v9 = iconst.i64 32 -;; @0022 v10 = ushr v89, v9 ; v9 = 32 -;; @0022 trapnz v10, user18 -;; @0022 v5 = iconst.i32 24 -;; v95 = iconst.i32 3 -;; v96 = ishl v3, v95 ; v95 = 3 -;; @0022 v12 = uadd_overflow_trap v5, v96, user18 ; v5 = 24 -;; @0022 v13 = load.i64 notrap aligned readonly can_move region2 v0+32 -;; @0022 v14 = load.i32 notrap aligned v13 -;; @0022 v15 = load.i32 notrap aligned v13+4 -;; @0022 v21 = uextend.i64 v14 -;; @0022 v16 = uextend.i64 v12 -;; @0022 v17 = iconst.i64 15 -;; @0022 v19 = iadd v16, v17 ; v17 = 15 -;; @0022 v18 = iconst.i64 -16 -;; @0022 v20 = band v19, v18 ; v18 = -16 -;; @0022 v22 = iadd v21, v20 -;; @0022 v23 = uextend.i64 v15 -;; @0022 v24 = icmp ule v22, v23 -;; @0022 brif v24, block2, block3 +;; @0022 v5 = uextend.i64 v3 +;; v87 = iconst.i64 3 +;; v88 = ishl v5, v87 ; v87 = 3 +;; @0022 v8 = iconst.i64 32 +;; @0022 v9 = ushr v88, v8 ; v8 = 32 +;; @0022 trapnz v9, user18 +;; @0022 v4 = iconst.i32 24 +;; v94 = iconst.i32 3 +;; v95 = ishl v3, v94 ; v94 = 3 +;; @0022 v11 = uadd_overflow_trap v4, v95, user18 ; v4 = 24 +;; @0022 v12 = load.i64 notrap aligned readonly can_move region2 v0+32 +;; @0022 v13 = load.i32 notrap aligned v12 +;; @0022 v14 = load.i32 notrap aligned v12+4 +;; @0022 v20 = uextend.i64 v13 +;; @0022 v15 = uextend.i64 v11 +;; @0022 v16 = iconst.i64 15 +;; @0022 v18 = iadd v15, v16 ; v16 = 15 +;; @0022 v17 = iconst.i64 -16 +;; @0022 v19 = band v18, v17 ; v17 = -16 +;; @0022 v21 = iadd v20, v19 +;; @0022 v22 = uextend.i64 v14 +;; @0022 v23 = icmp ule v21, v22 +;; @0022 brif v23, block2, block3 ;; ;; block2: -;; v104 = iconst.i32 15 -;; v105 = iadd.i32 v12, v104 ; v104 = 15 -;; v108 = iconst.i32 -16 -;; v109 = band v105, v108 ; v108 = -16 -;; v111 = iadd.i32 v14, v109 -;; @0022 store notrap aligned v111, v13 -;; v127 = iconst.i32 -1476395002 -;; v128 = load.i64 notrap aligned readonly can_move region0 v0+8 -;; v129 = load.i64 notrap aligned readonly can_move region4 v128+32 -;; @0022 v38 = iadd v129, v21 -;; @0022 store notrap aligned v127, v38 ; v127 = -1476395002 -;; v130 = load.i64 notrap aligned readonly can_move region3 v0+40 -;; v131 = load.i32 notrap aligned readonly can_move v130 -;; @0022 store notrap aligned v131, v38+4 -;; v132 = band.i64 v19, v18 ; v18 = -16 -;; @0022 istore32 notrap aligned v132, v38+8 -;; @0022 jump block4(v14, v38) +;; v103 = iconst.i32 15 +;; v104 = iadd.i32 v11, v103 ; v103 = 15 +;; v107 = iconst.i32 -16 +;; v108 = band v104, v107 ; v107 = -16 +;; v110 = iadd.i32 v13, v108 +;; @0022 store notrap aligned v110, v12 +;; v126 = iconst.i32 -1476395002 +;; v127 = load.i64 notrap aligned readonly can_move region0 v0+8 +;; v128 = load.i64 notrap aligned readonly can_move region4 v127+32 +;; @0022 v37 = iadd v128, v20 +;; @0022 store notrap aligned v126, v37 ; v126 = -1476395002 +;; v129 = load.i64 notrap aligned readonly can_move region3 v0+40 +;; v130 = load.i32 notrap aligned readonly can_move v129 +;; @0022 store notrap aligned v130, v37+4 +;; v131 = band.i64 v18, v17 ; v17 = -16 +;; @0022 istore32 notrap aligned v131, v37+8 +;; @0022 jump block4(v13, v37) ;; ;; block3 cold: -;; @0022 v25 = iconst.i32 -1476395002 -;; @0022 v26 = load.i64 notrap aligned readonly can_move region3 v0+40 -;; @0022 v27 = load.i32 notrap aligned readonly can_move v26 -;; @0022 v28 = iconst.i32 16 -;; @0022 v29 = call fn0(v0, v25, v27, v12, v28) ; v25 = -1476395002, v28 = 16 -;; @0022 v30 = load.i64 notrap aligned readonly can_move region0 v0+8 -;; @0022 v31 = load.i64 notrap aligned readonly can_move region4 v30+32 -;; @0022 v32 = uextend.i64 v29 -;; @0022 v33 = iadd v31, v32 -;; @0022 jump block4(v29, v33) +;; @0022 v24 = iconst.i32 -1476395002 +;; @0022 v25 = load.i64 notrap aligned readonly can_move region3 v0+40 +;; @0022 v26 = load.i32 notrap aligned readonly can_move v25 +;; @0022 v27 = iconst.i32 16 +;; @0022 v28 = call fn0(v0, v24, v26, v11, v27) ; v24 = -1476395002, v27 = 16 +;; @0022 v29 = load.i64 notrap aligned readonly can_move region0 v0+8 +;; @0022 v30 = load.i64 notrap aligned readonly can_move region4 v29+32 +;; @0022 v31 = uextend.i64 v28 +;; @0022 v32 = iadd v30, v31 +;; @0022 jump block4(v28, v32) ;; -;; block4(v42: i32, v43: i64): -;; @0022 v44 = iconst.i64 16 -;; @0022 v45 = iadd v43, v44 ; v44 = 16 -;; @0022 store.i32 user2 region5 v3, v45 -;; @0022 trapz v42, user16 -;; v133 = load.i64 notrap aligned readonly can_move region0 v0+8 -;; v134 = load.i64 notrap aligned readonly can_move region4 v133+32 -;; @0022 v47 = uextend.i64 v42 -;; @0022 v50 = iadd v134, v47 -;; @0022 v52 = iadd v50, v44 ; v44 = 16 -;; @0022 v53 = load.i32 user2 readonly region5 v52 -;; @0022 v54 = uextend.i64 v53 -;; @0022 v60 = icmp.i64 ugt v6, v54 -;; @0022 trapnz v60, user17 -;; @0022 v77 = load.i64 notrap aligned region6 v133+40 -;; @0022 v65 = iconst.i64 24 -;; @0022 v66 = iadd v50, v65 ; v65 = 24 -;; @0022 v79 = uadd_overflow_trap v66, v89, user2 -;; @0022 v78 = iadd v134, v77 -;; @0022 v80 = icmp ugt v79, v78 -;; @0022 trapnz v80, user2 -;; v113 = iconst.i64 0 -;; @0022 v83 = icmp.i64 eq v6, v113 ; v113 = 0 -;; @0022 v7 = iconst.i64 8 -;; @0022 v81 = iadd v66, v89 -;; @0022 brif v83, block6, block5(v66) +;; block4(v41: i32, v42: i64): +;; @0022 v43 = iconst.i64 16 +;; @0022 v44 = iadd v42, v43 ; v43 = 16 +;; @0022 store.i32 user2 region5 v3, v44 +;; @0022 trapz v41, user16 +;; v132 = load.i64 notrap aligned readonly can_move region0 v0+8 +;; v133 = load.i64 notrap aligned readonly can_move region4 v132+32 +;; @0022 v46 = uextend.i64 v41 +;; @0022 v49 = iadd v133, v46 +;; @0022 v51 = iadd v49, v43 ; v43 = 16 +;; @0022 v52 = load.i32 user2 readonly region5 v51 +;; @0022 v53 = uextend.i64 v52 +;; @0022 v59 = icmp.i64 ugt v5, v53 +;; @0022 trapnz v59, user17 +;; @0022 v76 = load.i64 notrap aligned region6 v132+40 +;; @0022 v64 = iconst.i64 24 +;; @0022 v65 = iadd v49, v64 ; v64 = 24 +;; @0022 v78 = uadd_overflow_trap v65, v88, user2 +;; @0022 v77 = iadd v133, v76 +;; @0022 v79 = icmp ugt v78, v77 +;; @0022 trapnz v79, user2 +;; v112 = iconst.i64 0 +;; @0022 v82 = icmp.i64 eq v5, v112 ; v112 = 0 +;; @0022 v6 = iconst.i64 8 +;; @0022 v80 = iadd v65, v88 +;; @0022 brif v82, block6, block5(v65) ;; -;; block5(v84: i64): -;; @0022 store.i64 user2 little region5 v2, v84 -;; v135 = iconst.i64 8 -;; v136 = iadd v84, v135 ; v135 = 8 -;; @0022 v87 = icmp eq v136, v81 -;; @0022 brif v87, block6, block5(v136) +;; block5(v83: i64): +;; @0022 store.i64 user2 little region5 v2, v83 +;; v134 = iconst.i64 8 +;; v135 = iadd v83, v134 ; v134 = 8 +;; @0022 v86 = icmp eq v135, v80 +;; @0022 brif v86, block6, block5(v135) ;; ;; block6: -;; @0025 jump block1(v42) +;; @0025 jump block1 ;; -;; block1(v4: i32): -;; @0025 return v4 +;; block1: +;; @0025 return v41 ;; } diff --git a/tests/disas/gc/copying/br-on-cast-fail.wat b/tests/disas/gc/copying/br-on-cast-fail.wat index 168a7f40ad50..630d4e76c0ce 100644 --- a/tests/disas/gc/copying/br-on-cast-fail.wat +++ b/tests/disas/gc/copying/br-on-cast-fail.wat @@ -33,42 +33,42 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i32): -;; @002e v4 = iconst.i32 0 -;; @002e v5 = icmp eq v2, v4 ; v4 = 0 -;; @002e brif v5, block5(v4), block3 ; v4 = 0 +;; @002e v3 = iconst.i32 0 +;; @002e v4 = icmp eq v2, v3 ; v3 = 0 +;; @002e brif v4, block5(v3), block3 ; v3 = 0 ;; ;; block3: -;; @002e v8 = iconst.i32 1 -;; @002e v9 = band.i32 v2, v8 ; v8 = 1 -;; v27 = iconst.i32 0 -;; @002e brif v9, block5(v27), block4 ; v27 = 0 +;; @002e v7 = iconst.i32 1 +;; @002e v8 = band.i32 v2, v7 ; v7 = 1 +;; v26 = iconst.i32 0 +;; @002e brif v8, block5(v26), block4 ; v26 = 0 ;; ;; block4: -;; @002e v14 = load.i64 notrap aligned readonly can_move region0 v0+8 -;; @002e v15 = load.i64 notrap aligned readonly can_move region3 v14+32 -;; @002e v13 = uextend.i64 v2 -;; @002e v16 = iadd v15, v13 -;; @002e v17 = iconst.i64 4 -;; @002e v18 = iadd v16, v17 ; v17 = 4 -;; @002e v19 = load.i32 user2 readonly region5 v18 -;; @002e v11 = load.i64 notrap aligned readonly can_move region2 v0+40 -;; @002e v12 = load.i32 notrap aligned readonly can_move v11 -;; @002e v20 = icmp eq v19, v12 -;; @002e v21 = uextend.i32 v20 -;; @002e jump block5(v21) +;; @002e v13 = load.i64 notrap aligned readonly can_move region0 v0+8 +;; @002e v14 = load.i64 notrap aligned readonly can_move region3 v13+32 +;; @002e v12 = uextend.i64 v2 +;; @002e v15 = iadd v14, v12 +;; @002e v16 = iconst.i64 4 +;; @002e v17 = iadd v15, v16 ; v16 = 4 +;; @002e v18 = load.i32 user2 readonly region5 v17 +;; @002e v10 = load.i64 notrap aligned readonly can_move region2 v0+40 +;; @002e v11 = load.i32 notrap aligned readonly can_move v10 +;; @002e v19 = icmp eq v18, v11 +;; @002e v20 = uextend.i32 v19 +;; @002e jump block5(v20) ;; -;; block5(v22: i32): -;; @002e brif v22, block6, block2 +;; block5(v21: i32): +;; @002e brif v21, block6, block2 ;; ;; block6: -;; @0034 v24 = load.i64 notrap aligned readonly can_move region7 v0+56 -;; @0034 v23 = load.i64 notrap aligned readonly can_move region6 v0+72 -;; @0034 call_indirect sig0, v24(v23, v0) +;; @0034 v23 = load.i64 notrap aligned readonly can_move region7 v0+56 +;; @0034 v22 = load.i64 notrap aligned readonly can_move region6 v0+72 +;; @0034 call_indirect sig0, v23(v22, v0) ;; @0036 return ;; ;; block2: -;; @0038 v26 = load.i64 notrap aligned readonly can_move region9 v0+88 -;; @0038 v25 = load.i64 notrap aligned readonly can_move region8 v0+104 -;; @0038 call_indirect sig0, v26(v25, v0) +;; @0038 v25 = load.i64 notrap aligned readonly can_move region9 v0+88 +;; @0038 v24 = load.i64 notrap aligned readonly can_move region8 v0+104 +;; @0038 call_indirect sig0, v25(v24, v0) ;; @003a return ;; } diff --git a/tests/disas/gc/copying/br-on-cast.wat b/tests/disas/gc/copying/br-on-cast.wat index 1da60977423f..1248a092a5ca 100644 --- a/tests/disas/gc/copying/br-on-cast.wat +++ b/tests/disas/gc/copying/br-on-cast.wat @@ -33,42 +33,42 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i32): -;; @002f v4 = iconst.i32 0 -;; @002f v5 = icmp eq v2, v4 ; v4 = 0 -;; @002f brif v5, block5(v4), block3 ; v4 = 0 +;; @002f v3 = iconst.i32 0 +;; @002f v4 = icmp eq v2, v3 ; v3 = 0 +;; @002f brif v4, block5(v3), block3 ; v3 = 0 ;; ;; block3: -;; @002f v8 = iconst.i32 1 -;; @002f v9 = band.i32 v2, v8 ; v8 = 1 -;; v27 = iconst.i32 0 -;; @002f brif v9, block5(v27), block4 ; v27 = 0 +;; @002f v7 = iconst.i32 1 +;; @002f v8 = band.i32 v2, v7 ; v7 = 1 +;; v26 = iconst.i32 0 +;; @002f brif v8, block5(v26), block4 ; v26 = 0 ;; ;; block4: -;; @002f v14 = load.i64 notrap aligned readonly can_move region0 v0+8 -;; @002f v15 = load.i64 notrap aligned readonly can_move region3 v14+32 -;; @002f v13 = uextend.i64 v2 -;; @002f v16 = iadd v15, v13 -;; @002f v17 = iconst.i64 4 -;; @002f v18 = iadd v16, v17 ; v17 = 4 -;; @002f v19 = load.i32 user2 readonly region5 v18 -;; @002f v11 = load.i64 notrap aligned readonly can_move region2 v0+40 -;; @002f v12 = load.i32 notrap aligned readonly can_move v11 -;; @002f v20 = icmp eq v19, v12 -;; @002f v21 = uextend.i32 v20 -;; @002f jump block5(v21) +;; @002f v13 = load.i64 notrap aligned readonly can_move region0 v0+8 +;; @002f v14 = load.i64 notrap aligned readonly can_move region3 v13+32 +;; @002f v12 = uextend.i64 v2 +;; @002f v15 = iadd v14, v12 +;; @002f v16 = iconst.i64 4 +;; @002f v17 = iadd v15, v16 ; v16 = 4 +;; @002f v18 = load.i32 user2 readonly region5 v17 +;; @002f v10 = load.i64 notrap aligned readonly can_move region2 v0+40 +;; @002f v11 = load.i32 notrap aligned readonly can_move v10 +;; @002f v19 = icmp eq v18, v11 +;; @002f v20 = uextend.i32 v19 +;; @002f jump block5(v20) ;; -;; block5(v22: i32): -;; @002f brif v22, block2, block6 +;; block5(v21: i32): +;; @002f brif v21, block2, block6 ;; ;; block6: -;; @0035 v24 = load.i64 notrap aligned readonly can_move region7 v0+56 -;; @0035 v23 = load.i64 notrap aligned readonly can_move region6 v0+72 -;; @0035 call_indirect sig0, v24(v23, v0) +;; @0035 v23 = load.i64 notrap aligned readonly can_move region7 v0+56 +;; @0035 v22 = load.i64 notrap aligned readonly can_move region6 v0+72 +;; @0035 call_indirect sig0, v23(v22, v0) ;; @0037 return ;; ;; block2: -;; @0039 v26 = load.i64 notrap aligned readonly can_move region9 v0+88 -;; @0039 v25 = load.i64 notrap aligned readonly can_move region8 v0+104 -;; @0039 call_indirect sig0, v26(v25, v0) +;; @0039 v25 = load.i64 notrap aligned readonly can_move region9 v0+88 +;; @0039 v24 = load.i64 notrap aligned readonly can_move region8 v0+104 +;; @0039 call_indirect sig0, v25(v24, v0) ;; @003b return ;; } diff --git a/tests/disas/gc/copying/externref-globals.wat b/tests/disas/gc/copying/externref-globals.wat index bcdf518359b9..9f6fe427cd06 100644 --- a/tests/disas/gc/copying/externref-globals.wat +++ b/tests/disas/gc/copying/externref-globals.wat @@ -20,13 +20,13 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64): -;; @0034 v3 = iconst.i64 48 -;; @0034 v4 = iadd v0, v3 ; v3 = 48 -;; @0034 v5 = load.i32 notrap aligned region2 v4 +;; @0034 v2 = iconst.i64 48 +;; @0034 v3 = iadd v0, v2 ; v2 = 48 +;; @0034 v4 = load.i32 notrap aligned region2 v3 ;; @0036 jump block1 ;; ;; block1: -;; @0036 return v5 +;; @0036 return v4 ;; } ;; ;; function u0:1(i64 vmctx, i64, i32) tail { diff --git a/tests/disas/gc/copying/funcref-in-gc-heap-get.wat b/tests/disas/gc/copying/funcref-in-gc-heap-get.wat index 3a9d9d7885b3..f0643434aa17 100644 --- a/tests/disas/gc/copying/funcref-in-gc-heap-get.wat +++ b/tests/disas/gc/copying/funcref-in-gc-heap-get.wat @@ -23,17 +23,17 @@ ;; ;; block0(v0: i64, v1: i64, v2: i32): ;; @0020 trapz v2, user16 -;; @0020 v5 = load.i64 notrap aligned readonly can_move region0 v0+8 -;; @0020 v6 = load.i64 notrap aligned readonly can_move region2 v5+32 -;; @0020 v4 = uextend.i64 v2 -;; @0020 v7 = iadd v6, v4 -;; @0020 v8 = iconst.i64 16 -;; @0020 v9 = iadd v7, v8 ; v8 = 16 -;; @0020 v11 = load.i32 user2 little region4 v9 -;; @0020 v10 = iconst.i32 -1 -;; @0020 v12 = call fn0(v0, v11, v10) ; v10 = -1 +;; @0020 v4 = load.i64 notrap aligned readonly can_move region0 v0+8 +;; @0020 v5 = load.i64 notrap aligned readonly can_move region2 v4+32 +;; @0020 v3 = uextend.i64 v2 +;; @0020 v6 = iadd v5, v3 +;; @0020 v7 = iconst.i64 16 +;; @0020 v8 = iadd v6, v7 ; v7 = 16 +;; @0020 v10 = load.i32 user2 little region4 v8 +;; @0020 v9 = iconst.i32 -1 +;; @0020 v11 = call fn0(v0, v10, v9) ; v9 = -1 ;; @0024 jump block1 ;; ;; block1: -;; @0024 return v12 +;; @0024 return v11 ;; } diff --git a/tests/disas/gc/copying/funcref-in-gc-heap-new.wat b/tests/disas/gc/copying/funcref-in-gc-heap-new.wat index 7d404a3b4ad4..3369a700dd34 100644 --- a/tests/disas/gc/copying/funcref-in-gc-heap-new.wat +++ b/tests/disas/gc/copying/funcref-in-gc-heap-new.wat @@ -26,56 +26,56 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i64): -;; @0020 v5 = load.i64 notrap aligned readonly can_move region2 v0+32 -;; @0020 v6 = load.i32 notrap aligned v5 -;; @0020 v7 = load.i32 notrap aligned v5+4 -;; @0020 v13 = uextend.i64 v6 -;; v43 = iconst.i64 32 -;; @0020 v14 = iadd v13, v43 ; v43 = 32 -;; @0020 v15 = uextend.i64 v7 -;; @0020 v16 = icmp ule v14, v15 -;; @0020 brif v16, block2, block3 +;; @0020 v4 = load.i64 notrap aligned readonly can_move region2 v0+32 +;; @0020 v5 = load.i32 notrap aligned v4 +;; @0020 v6 = load.i32 notrap aligned v4+4 +;; @0020 v12 = uextend.i64 v5 +;; v42 = iconst.i64 32 +;; @0020 v13 = iadd v12, v42 ; v42 = 32 +;; @0020 v14 = uextend.i64 v6 +;; @0020 v15 = icmp ule v13, v14 +;; @0020 brif v15, block2, block3 ;; ;; block2: -;; v59 = iconst.i32 32 -;; v57 = iadd.i32 v6, v59 ; v59 = 32 -;; @0020 store notrap aligned v57, v5 -;; v60 = iconst.i32 -1342177278 -;; v61 = load.i64 notrap aligned readonly can_move region0 v0+8 -;; v62 = load.i64 notrap aligned readonly can_move region4 v61+32 -;; @0020 v30 = iadd v62, v13 -;; @0020 store notrap aligned v60, v30 ; v60 = -1342177278 -;; v63 = load.i64 notrap aligned readonly can_move region3 v0+40 -;; v64 = load.i32 notrap aligned readonly can_move v63 -;; @0020 store notrap aligned v64, v30+4 -;; v65 = iconst.i64 32 -;; @0020 istore32 notrap aligned v65, v30+8 ; v65 = 32 -;; @0020 jump block4(v6, v30) +;; v58 = iconst.i32 32 +;; v56 = iadd.i32 v5, v58 ; v58 = 32 +;; @0020 store notrap aligned v56, v4 +;; v59 = iconst.i32 -1342177278 +;; v60 = load.i64 notrap aligned readonly can_move region0 v0+8 +;; v61 = load.i64 notrap aligned readonly can_move region4 v60+32 +;; @0020 v29 = iadd v61, v12 +;; @0020 store notrap aligned v59, v29 ; v59 = -1342177278 +;; v62 = load.i64 notrap aligned readonly can_move region3 v0+40 +;; v63 = load.i32 notrap aligned readonly can_move v62 +;; @0020 store notrap aligned v63, v29+4 +;; v64 = iconst.i64 32 +;; @0020 istore32 notrap aligned v64, v29+8 ; v64 = 32 +;; @0020 jump block4(v5, v29) ;; ;; block3 cold: -;; @0020 v17 = iconst.i32 -1342177278 -;; @0020 v18 = load.i64 notrap aligned readonly can_move region3 v0+40 -;; @0020 v19 = load.i32 notrap aligned readonly can_move v18 -;; @0020 v4 = iconst.i32 32 -;; @0020 v20 = iconst.i32 16 -;; @0020 v21 = call fn0(v0, v17, v19, v4, v20) ; v17 = -1342177278, v4 = 32, v20 = 16 -;; @0020 v22 = load.i64 notrap aligned readonly can_move region0 v0+8 -;; @0020 v23 = load.i64 notrap aligned readonly can_move region4 v22+32 -;; @0020 v24 = uextend.i64 v21 -;; @0020 v25 = iadd v23, v24 -;; @0020 jump block4(v21, v25) +;; @0020 v16 = iconst.i32 -1342177278 +;; @0020 v17 = load.i64 notrap aligned readonly can_move region3 v0+40 +;; @0020 v18 = load.i32 notrap aligned readonly can_move v17 +;; @0020 v3 = iconst.i32 32 +;; @0020 v19 = iconst.i32 16 +;; @0020 v20 = call fn0(v0, v16, v18, v3, v19) ; v16 = -1342177278, v3 = 32, v19 = 16 +;; @0020 v21 = load.i64 notrap aligned readonly can_move region0 v0+8 +;; @0020 v22 = load.i64 notrap aligned readonly can_move region4 v21+32 +;; @0020 v23 = uextend.i64 v20 +;; @0020 v24 = iadd v22, v23 +;; @0020 jump block4(v20, v24) ;; -;; block4(v34: i32, v35: i64): -;; v42 = stack_addr.i64 ss0 -;; store notrap v34, v42 -;; @0020 v38 = call fn1(v0, v2), stack_map=[i32 @ ss0+0] -;; @0020 v39 = ireduce.i32 v38 -;; @0020 v36 = iconst.i64 16 -;; @0020 v37 = iadd v35, v36 ; v36 = 16 -;; @0020 store user2 little region5 v39, v37 -;; v41 = load.i32 notrap v42 +;; block4(v33: i32, v34: i64): +;; v41 = stack_addr.i64 ss0 +;; store notrap v33, v41 +;; @0020 v37 = call fn1(v0, v2), stack_map=[i32 @ ss0+0] +;; @0020 v38 = ireduce.i32 v37 +;; @0020 v35 = iconst.i64 16 +;; @0020 v36 = iadd v34, v35 ; v35 = 16 +;; @0020 store user2 little region5 v38, v36 ;; @0023 jump block1 ;; ;; block1: -;; @0023 return v41 +;; v40 = load.i32 notrap v41 +;; @0023 return v40 ;; } diff --git a/tests/disas/gc/copying/i31ref-globals.wat b/tests/disas/gc/copying/i31ref-globals.wat index 648f4b02fcd9..b951f3454f3f 100644 --- a/tests/disas/gc/copying/i31ref-globals.wat +++ b/tests/disas/gc/copying/i31ref-globals.wat @@ -20,13 +20,13 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64): -;; @0036 v3 = iconst.i64 48 -;; @0036 v4 = iadd v0, v3 ; v3 = 48 -;; @0036 v5 = load.i32 notrap aligned region2 v4 +;; @0036 v2 = iconst.i64 48 +;; @0036 v3 = iadd v0, v2 ; v2 = 48 +;; @0036 v4 = load.i32 notrap aligned region2 v3 ;; @0038 jump block1 ;; ;; block1: -;; @0038 return v5 +;; @0038 return v4 ;; } ;; ;; function u0:1(i64 vmctx, i64, i32) tail { diff --git a/tests/disas/gc/copying/multiple-array-get.wat b/tests/disas/gc/copying/multiple-array-get.wat index 03cd4b748221..2ff375bc1e06 100644 --- a/tests/disas/gc/copying/multiple-array-get.wat +++ b/tests/disas/gc/copying/multiple-array-get.wat @@ -22,44 +22,44 @@ ;; ;; block0(v0: i64, v1: i64, v2: i32, v3: i32, v4: i32): ;; @0024 trapz v2, user16 -;; @0024 v8 = load.i64 notrap aligned readonly can_move region0 v0+8 -;; @0024 v9 = load.i64 notrap aligned readonly can_move region2 v8+32 -;; @0024 v7 = uextend.i64 v2 -;; @0024 v10 = iadd v9, v7 -;; @0024 v11 = iconst.i64 16 -;; @0024 v12 = iadd v10, v11 ; v11 = 16 -;; @0024 v13 = load.i32 user2 readonly region4 v12 -;; @0024 v14 = icmp ult v3, v13 -;; @0024 trapz v14, user17 -;; @0024 v16 = uextend.i64 v13 -;; v63 = iconst.i64 3 -;; v64 = ishl v16, v63 ; v63 = 3 -;; @0024 v18 = iconst.i64 32 -;; @0024 v19 = ushr v64, v18 ; v18 = 32 -;; @0024 trapnz v19, user2 -;; v73 = iconst.i32 3 -;; v74 = ishl v13, v73 ; v73 = 3 -;; @0024 v21 = iconst.i32 24 -;; @0024 v22 = uadd_overflow_trap v74, v21, user2 ; v21 = 24 -;; @0024 v26 = uadd_overflow_trap v2, v22, user2 -;; @0024 v27 = uextend.i64 v26 -;; @0024 v30 = iadd v9, v27 -;; v80 = ishl v3, v73 ; v73 = 3 -;; @0024 v25 = iadd v80, v21 ; v21 = 24 -;; @0024 v31 = isub v22, v25 -;; @0024 v32 = uextend.i64 v31 -;; @0024 v33 = isub v30, v32 -;; @0024 v34 = load.i64 user2 little region4 v33 -;; @002b v42 = icmp ult v4, v13 -;; @002b trapz v42, user17 -;; v82 = ishl v4, v73 ; v73 = 3 -;; @002b v53 = iadd v82, v21 ; v21 = 24 -;; @002b v59 = isub v22, v53 -;; @002b v60 = uextend.i64 v59 -;; @002b v61 = isub v30, v60 -;; @002b v62 = load.i64 user2 little region4 v61 +;; @0024 v6 = load.i64 notrap aligned readonly can_move region0 v0+8 +;; @0024 v7 = load.i64 notrap aligned readonly can_move region2 v6+32 +;; @0024 v5 = uextend.i64 v2 +;; @0024 v8 = iadd v7, v5 +;; @0024 v9 = iconst.i64 16 +;; @0024 v10 = iadd v8, v9 ; v9 = 16 +;; @0024 v11 = load.i32 user2 readonly region4 v10 +;; @0024 v12 = icmp ult v3, v11 +;; @0024 trapz v12, user17 +;; @0024 v14 = uextend.i64 v11 +;; v61 = iconst.i64 3 +;; v62 = ishl v14, v61 ; v61 = 3 +;; @0024 v16 = iconst.i64 32 +;; @0024 v17 = ushr v62, v16 ; v16 = 32 +;; @0024 trapnz v17, user2 +;; v71 = iconst.i32 3 +;; v72 = ishl v11, v71 ; v71 = 3 +;; @0024 v19 = iconst.i32 24 +;; @0024 v20 = uadd_overflow_trap v72, v19, user2 ; v19 = 24 +;; @0024 v24 = uadd_overflow_trap v2, v20, user2 +;; @0024 v25 = uextend.i64 v24 +;; @0024 v28 = iadd v7, v25 +;; v78 = ishl v3, v71 ; v71 = 3 +;; @0024 v23 = iadd v78, v19 ; v19 = 24 +;; @0024 v29 = isub v20, v23 +;; @0024 v30 = uextend.i64 v29 +;; @0024 v31 = isub v28, v30 +;; @0024 v32 = load.i64 user2 little region4 v31 +;; @002b v40 = icmp ult v4, v11 +;; @002b trapz v40, user17 +;; v80 = ishl v4, v71 ; v71 = 3 +;; @002b v51 = iadd v80, v19 ; v19 = 24 +;; @002b v57 = isub v20, v51 +;; @002b v58 = uextend.i64 v57 +;; @002b v59 = isub v28, v58 +;; @002b v60 = load.i64 user2 little region4 v59 ;; @002e jump block1 ;; ;; block1: -;; @002e return v34, v62 +;; @002e return v32, v60 ;; } diff --git a/tests/disas/gc/copying/multiple-struct-get.wat b/tests/disas/gc/copying/multiple-struct-get.wat index e621810cd039..b907cd60f440 100644 --- a/tests/disas/gc/copying/multiple-struct-get.wat +++ b/tests/disas/gc/copying/multiple-struct-get.wat @@ -23,19 +23,19 @@ ;; ;; block0(v0: i64, v1: i64, v2: i32): ;; @0023 trapz v2, user16 -;; @0023 v6 = load.i64 notrap aligned readonly can_move region0 v0+8 -;; @0023 v7 = load.i64 notrap aligned readonly can_move region2 v6+32 -;; @0023 v5 = uextend.i64 v2 -;; @0023 v8 = iadd v7, v5 -;; @0023 v9 = iconst.i64 16 -;; @0023 v10 = iadd v8, v9 ; v9 = 16 -;; @0023 v11 = load.f32 user2 little region4 v10 -;; @0029 v16 = iconst.i64 20 -;; @0029 v17 = iadd v8, v16 ; v16 = 20 -;; @0029 v18 = load.i8 user2 little region4 v17 +;; @0023 v4 = load.i64 notrap aligned readonly can_move region0 v0+8 +;; @0023 v5 = load.i64 notrap aligned readonly can_move region2 v4+32 +;; @0023 v3 = uextend.i64 v2 +;; @0023 v6 = iadd v5, v3 +;; @0023 v7 = iconst.i64 16 +;; @0023 v8 = iadd v6, v7 ; v7 = 16 +;; @0023 v9 = load.f32 user2 little region4 v8 +;; @0029 v14 = iconst.i64 20 +;; @0029 v15 = iadd v6, v14 ; v14 = 20 +;; @0029 v16 = load.i8 user2 little region4 v15 ;; @002d jump block1 ;; ;; block1: -;; @0029 v19 = sextend.i32 v18 -;; @002d return v11, v19 +;; @0029 v17 = sextend.i32 v16 +;; @002d return v9, v17 ;; } diff --git a/tests/disas/gc/copying/ref-cast.wat b/tests/disas/gc/copying/ref-cast.wat index 55e87c092f69..b4caf74ac540 100644 --- a/tests/disas/gc/copying/ref-cast.wat +++ b/tests/disas/gc/copying/ref-cast.wat @@ -20,32 +20,32 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i32): -;; @001e v4 = iconst.i32 0 -;; @001e v5 = icmp eq v2, v4 ; v4 = 0 -;; @001e brif v5, block4(v4), block2 ; v4 = 0 +;; @001e v3 = iconst.i32 0 +;; @001e v4 = icmp eq v2, v3 ; v3 = 0 +;; @001e brif v4, block4(v3), block2 ; v3 = 0 ;; ;; block2: -;; @001e v8 = iconst.i32 1 -;; @001e v9 = band.i32 v2, v8 ; v8 = 1 -;; v23 = iconst.i32 0 -;; @001e brif v9, block4(v23), block3 ; v23 = 0 +;; @001e v7 = iconst.i32 1 +;; @001e v8 = band.i32 v2, v7 ; v7 = 1 +;; v22 = iconst.i32 0 +;; @001e brif v8, block4(v22), block3 ; v22 = 0 ;; ;; block3: -;; @001e v14 = load.i64 notrap aligned readonly can_move region0 v0+8 -;; @001e v15 = load.i64 notrap aligned readonly can_move region3 v14+32 -;; @001e v13 = uextend.i64 v2 -;; @001e v16 = iadd v15, v13 -;; @001e v17 = iconst.i64 4 -;; @001e v18 = iadd v16, v17 ; v17 = 4 -;; @001e v19 = load.i32 user2 readonly region5 v18 -;; @001e v11 = load.i64 notrap aligned readonly can_move region2 v0+40 -;; @001e v12 = load.i32 notrap aligned readonly can_move v11 -;; @001e v20 = icmp eq v19, v12 -;; @001e v21 = uextend.i32 v20 -;; @001e jump block4(v21) +;; @001e v13 = load.i64 notrap aligned readonly can_move region0 v0+8 +;; @001e v14 = load.i64 notrap aligned readonly can_move region3 v13+32 +;; @001e v12 = uextend.i64 v2 +;; @001e v15 = iadd v14, v12 +;; @001e v16 = iconst.i64 4 +;; @001e v17 = iadd v15, v16 ; v16 = 4 +;; @001e v18 = load.i32 user2 readonly region5 v17 +;; @001e v10 = load.i64 notrap aligned readonly can_move region2 v0+40 +;; @001e v11 = load.i32 notrap aligned readonly can_move v10 +;; @001e v19 = icmp eq v18, v11 +;; @001e v20 = uextend.i32 v19 +;; @001e jump block4(v20) ;; -;; block4(v22: i32): -;; @001e trapz v22, user19 +;; block4(v21: i32): +;; @001e trapz v21, user19 ;; @0021 jump block1 ;; ;; block1: diff --git a/tests/disas/gc/copying/ref-is-null.wat b/tests/disas/gc/copying/ref-is-null.wat index 18e0fadd146d..613b41ab0bdd 100644 --- a/tests/disas/gc/copying/ref-is-null.wat +++ b/tests/disas/gc/copying/ref-is-null.wat @@ -21,10 +21,10 @@ ;; @0023 jump block1 ;; ;; block1: -;; v4 = iconst.i32 0 -;; v5 = icmp.i32 eq v2, v4 ; v4 = 0 -;; v6 = uextend.i32 v5 -;; @0023 return v6 +;; v3 = iconst.i32 0 +;; v4 = icmp.i32 eq v2, v3 ; v3 = 0 +;; v5 = uextend.i32 v4 +;; @0023 return v5 ;; } ;; ;; function u0:1(i64 vmctx, i64, i32) -> i32 tail { @@ -39,6 +39,6 @@ ;; @0029 jump block1 ;; ;; block1: -;; v4 = iconst.i32 0 -;; @0029 return v4 ; v4 = 0 +;; v3 = iconst.i32 0 +;; @0029 return v3 ; v3 = 0 ;; } diff --git a/tests/disas/gc/copying/ref-test-any.wat b/tests/disas/gc/copying/ref-test-any.wat index c68521ca5592..d1523a359df8 100644 --- a/tests/disas/gc/copying/ref-test-any.wat +++ b/tests/disas/gc/copying/ref-test-any.wat @@ -21,10 +21,10 @@ ;; @0025 jump block1 ;; ;; block1: -;; @0022 v8 = iconst.i32 1 -;; @0022 v4 = iconst.i32 0 -;; v14 = select v2, v8, v4 ; v8 = 1, v4 = 0 -;; @0025 return v14 +;; @0022 v7 = iconst.i32 1 +;; @0022 v3 = iconst.i32 0 +;; v13 = select v2, v7, v3 ; v7 = 1, v3 = 0 +;; @0025 return v13 ;; } ;; ;; function u0:1(i64 vmctx, i64, i32) -> i32 tail { @@ -39,6 +39,6 @@ ;; @002d jump block1 ;; ;; block1: -;; @002a v6 = iconst.i32 1 -;; @002d return v6 ; v6 = 1 +;; @002a v5 = iconst.i32 1 +;; @002d return v5 ; v5 = 1 ;; } diff --git a/tests/disas/gc/copying/ref-test-array.wat b/tests/disas/gc/copying/ref-test-array.wat index 79d8bcfae831..0faef58a75a6 100644 --- a/tests/disas/gc/copying/ref-test-array.wat +++ b/tests/disas/gc/copying/ref-test-array.wat @@ -18,31 +18,31 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i32): -;; @001b v4 = iconst.i32 0 -;; @001b v5 = icmp eq v2, v4 ; v4 = 0 -;; @001b brif v5, block4(v4), block2 ; v4 = 0 +;; @001b v3 = iconst.i32 0 +;; @001b v4 = icmp eq v2, v3 ; v3 = 0 +;; @001b brif v4, block4(v3), block2 ; v3 = 0 ;; ;; block2: -;; @001b v8 = iconst.i32 1 -;; @001b v9 = band.i32 v2, v8 ; v8 = 1 -;; v23 = iconst.i32 0 -;; @001b brif v9, block4(v23), block3 ; v23 = 0 +;; @001b v7 = iconst.i32 1 +;; @001b v8 = band.i32 v2, v7 ; v7 = 1 +;; v22 = iconst.i32 0 +;; @001b brif v8, block4(v22), block3 ; v22 = 0 ;; ;; block3: -;; @001b v12 = load.i64 notrap aligned readonly can_move region0 v0+8 -;; @001b v13 = load.i64 notrap aligned readonly can_move region2 v12+32 -;; @001b v11 = uextend.i64 v2 -;; @001b v14 = iadd v13, v11 -;; @001b v17 = load.i32 user2 readonly region4 v14 -;; @001b v18 = iconst.i32 -1476395008 -;; @001b v19 = band v17, v18 ; v18 = -1476395008 -;; @001b v20 = icmp eq v19, v18 ; v18 = -1476395008 -;; @001b v21 = uextend.i32 v20 -;; @001b jump block4(v21) +;; @001b v11 = load.i64 notrap aligned readonly can_move region0 v0+8 +;; @001b v12 = load.i64 notrap aligned readonly can_move region2 v11+32 +;; @001b v10 = uextend.i64 v2 +;; @001b v13 = iadd v12, v10 +;; @001b v16 = load.i32 user2 readonly region4 v13 +;; @001b v17 = iconst.i32 -1476395008 +;; @001b v18 = band v16, v17 ; v17 = -1476395008 +;; @001b v19 = icmp eq v18, v17 ; v17 = -1476395008 +;; @001b v20 = uextend.i32 v19 +;; @001b jump block4(v20) ;; -;; block4(v22: i32): -;; @001e jump block1(v22) +;; block4(v21: i32): +;; @001e jump block1 ;; -;; block1(v3: i32): -;; @001e return v3 +;; block1: +;; @001e return v21 ;; } diff --git a/tests/disas/gc/copying/ref-test-concrete-func-type.wat b/tests/disas/gc/copying/ref-test-concrete-func-type.wat index 42c1ec015c7d..08138e42759a 100644 --- a/tests/disas/gc/copying/ref-test-concrete-func-type.wat +++ b/tests/disas/gc/copying/ref-test-concrete-func-type.wat @@ -18,25 +18,25 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i64): -;; @0020 v4 = iconst.i64 0 -;; @0020 v5 = icmp eq v2, v4 ; v4 = 0 -;; @0020 v7 = iconst.i32 0 -;; @0020 brif v5, block4(v7), block2 ; v7 = 0 +;; @0020 v3 = iconst.i64 0 +;; @0020 v4 = icmp eq v2, v3 ; v3 = 0 +;; @0020 v6 = iconst.i32 0 +;; @0020 brif v4, block4(v6), block2 ; v6 = 0 ;; ;; block2: ;; @0020 jump block3 ;; ;; block3: -;; @0020 v10 = load.i32 user2 readonly region3 v2+16 -;; @0020 v8 = load.i64 notrap aligned readonly can_move region2 v0+40 -;; @0020 v9 = load.i32 notrap aligned readonly can_move v8 -;; @0020 v11 = icmp eq v10, v9 -;; @0020 v12 = uextend.i32 v11 -;; @0020 jump block4(v12) +;; @0020 v9 = load.i32 user2 readonly region3 v2+16 +;; @0020 v7 = load.i64 notrap aligned readonly can_move region2 v0+40 +;; @0020 v8 = load.i32 notrap aligned readonly can_move v7 +;; @0020 v10 = icmp eq v9, v8 +;; @0020 v11 = uextend.i32 v10 +;; @0020 jump block4(v11) ;; -;; block4(v13: i32): -;; @0023 jump block1(v13) +;; block4(v12: i32): +;; @0023 jump block1 ;; -;; block1(v3: i32): -;; @0023 return v3 +;; block1: +;; @0023 return v12 ;; } diff --git a/tests/disas/gc/copying/ref-test-concrete-type.wat b/tests/disas/gc/copying/ref-test-concrete-type.wat index b256c600a2bf..01d40a180648 100644 --- a/tests/disas/gc/copying/ref-test-concrete-type.wat +++ b/tests/disas/gc/copying/ref-test-concrete-type.wat @@ -20,33 +20,33 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i32): -;; @001d v4 = iconst.i32 0 -;; @001d v5 = icmp eq v2, v4 ; v4 = 0 -;; @001d brif v5, block4(v4), block2 ; v4 = 0 +;; @001d v3 = iconst.i32 0 +;; @001d v4 = icmp eq v2, v3 ; v3 = 0 +;; @001d brif v4, block4(v3), block2 ; v3 = 0 ;; ;; block2: -;; @001d v8 = iconst.i32 1 -;; @001d v9 = band.i32 v2, v8 ; v8 = 1 -;; v23 = iconst.i32 0 -;; @001d brif v9, block4(v23), block3 ; v23 = 0 +;; @001d v7 = iconst.i32 1 +;; @001d v8 = band.i32 v2, v7 ; v7 = 1 +;; v22 = iconst.i32 0 +;; @001d brif v8, block4(v22), block3 ; v22 = 0 ;; ;; block3: -;; @001d v14 = load.i64 notrap aligned readonly can_move region0 v0+8 -;; @001d v15 = load.i64 notrap aligned readonly can_move region3 v14+32 -;; @001d v13 = uextend.i64 v2 -;; @001d v16 = iadd v15, v13 -;; @001d v17 = iconst.i64 4 -;; @001d v18 = iadd v16, v17 ; v17 = 4 -;; @001d v19 = load.i32 user2 readonly region5 v18 -;; @001d v11 = load.i64 notrap aligned readonly can_move region2 v0+40 -;; @001d v12 = load.i32 notrap aligned readonly can_move v11 -;; @001d v20 = icmp eq v19, v12 -;; @001d v21 = uextend.i32 v20 -;; @001d jump block4(v21) +;; @001d v13 = load.i64 notrap aligned readonly can_move region0 v0+8 +;; @001d v14 = load.i64 notrap aligned readonly can_move region3 v13+32 +;; @001d v12 = uextend.i64 v2 +;; @001d v15 = iadd v14, v12 +;; @001d v16 = iconst.i64 4 +;; @001d v17 = iadd v15, v16 ; v16 = 4 +;; @001d v18 = load.i32 user2 readonly region5 v17 +;; @001d v10 = load.i64 notrap aligned readonly can_move region2 v0+40 +;; @001d v11 = load.i32 notrap aligned readonly can_move v10 +;; @001d v19 = icmp eq v18, v11 +;; @001d v20 = uextend.i32 v19 +;; @001d jump block4(v20) ;; -;; block4(v22: i32): -;; @0020 jump block1(v22) +;; block4(v21: i32): +;; @0020 jump block1 ;; -;; block1(v3: i32): -;; @0020 return v3 +;; block1: +;; @0020 return v21 ;; } diff --git a/tests/disas/gc/copying/ref-test-eq.wat b/tests/disas/gc/copying/ref-test-eq.wat index 5ceeb87c15c1..4d87517ac508 100644 --- a/tests/disas/gc/copying/ref-test-eq.wat +++ b/tests/disas/gc/copying/ref-test-eq.wat @@ -18,30 +18,30 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i32): -;; @001b v4 = iconst.i32 0 -;; @001b v5 = icmp eq v2, v4 ; v4 = 0 -;; @001b brif v5, block4(v4), block2 ; v4 = 0 +;; @001b v3 = iconst.i32 0 +;; @001b v4 = icmp eq v2, v3 ; v3 = 0 +;; @001b brif v4, block4(v3), block2 ; v3 = 0 ;; ;; block2: -;; @001b v8 = iconst.i32 1 -;; @001b v9 = band.i32 v2, v8 ; v8 = 1 -;; @001b brif v9, block4(v8), block3 ; v8 = 1 +;; @001b v7 = iconst.i32 1 +;; @001b v8 = band.i32 v2, v7 ; v7 = 1 +;; @001b brif v8, block4(v7), block3 ; v7 = 1 ;; ;; block3: -;; @001b v12 = load.i64 notrap aligned readonly can_move region0 v0+8 -;; @001b v13 = load.i64 notrap aligned readonly can_move region2 v12+32 -;; @001b v11 = uextend.i64 v2 -;; @001b v14 = iadd v13, v11 -;; @001b v17 = load.i32 user2 readonly region4 v14 -;; @001b v18 = iconst.i32 -1610612736 -;; @001b v19 = band v17, v18 ; v18 = -1610612736 -;; @001b v20 = icmp eq v19, v18 ; v18 = -1610612736 -;; @001b v21 = uextend.i32 v20 -;; @001b jump block4(v21) +;; @001b v11 = load.i64 notrap aligned readonly can_move region0 v0+8 +;; @001b v12 = load.i64 notrap aligned readonly can_move region2 v11+32 +;; @001b v10 = uextend.i64 v2 +;; @001b v13 = iadd v12, v10 +;; @001b v16 = load.i32 user2 readonly region4 v13 +;; @001b v17 = iconst.i32 -1610612736 +;; @001b v18 = band v16, v17 ; v17 = -1610612736 +;; @001b v19 = icmp eq v18, v17 ; v17 = -1610612736 +;; @001b v20 = uextend.i32 v19 +;; @001b jump block4(v20) ;; -;; block4(v22: i32): -;; @001e jump block1(v22) +;; block4(v21: i32): +;; @001e jump block1 ;; -;; block1(v3: i32): -;; @001e return v3 +;; block1: +;; @001e return v21 ;; } diff --git a/tests/disas/gc/copying/ref-test-i31.wat b/tests/disas/gc/copying/ref-test-i31.wat index b0928819e63f..fe1978754f8d 100644 --- a/tests/disas/gc/copying/ref-test-i31.wat +++ b/tests/disas/gc/copying/ref-test-i31.wat @@ -18,7 +18,7 @@ ;; @001e jump block1 ;; ;; block1: -;; @001b v4 = iconst.i32 1 -;; @001b v5 = band.i32 v2, v4 ; v4 = 1 -;; @001e return v5 +;; @001b v3 = iconst.i32 1 +;; @001b v4 = band.i32 v2, v3 ; v3 = 1 +;; @001e return v4 ;; } diff --git a/tests/disas/gc/copying/ref-test-none.wat b/tests/disas/gc/copying/ref-test-none.wat index 11e6d70ad76d..a01b3519298c 100644 --- a/tests/disas/gc/copying/ref-test-none.wat +++ b/tests/disas/gc/copying/ref-test-none.wat @@ -21,8 +21,8 @@ ;; @001f jump block1 ;; ;; block1: -;; @001c v4 = iconst.i32 0 -;; @001f return v4 ; v4 = 0 +;; @001c v3 = iconst.i32 0 +;; @001f return v3 ; v3 = 0 ;; } ;; ;; function u0:1(i64 vmctx, i64, i32) -> i32 tail { @@ -37,8 +37,8 @@ ;; @0027 jump block1 ;; ;; block1: -;; @0024 v4 = iconst.i32 0 -;; @0024 v5 = icmp.i32 eq v2, v4 ; v4 = 0 -;; @0024 v6 = uextend.i32 v5 -;; @0027 return v6 +;; @0024 v3 = iconst.i32 0 +;; @0024 v4 = icmp.i32 eq v2, v3 ; v3 = 0 +;; @0024 v5 = uextend.i32 v4 +;; @0027 return v5 ;; } diff --git a/tests/disas/gc/copying/ref-test-struct.wat b/tests/disas/gc/copying/ref-test-struct.wat index fcc64f3c65ec..c974b5d2219e 100644 --- a/tests/disas/gc/copying/ref-test-struct.wat +++ b/tests/disas/gc/copying/ref-test-struct.wat @@ -18,31 +18,31 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i32): -;; @001b v4 = iconst.i32 0 -;; @001b v5 = icmp eq v2, v4 ; v4 = 0 -;; @001b brif v5, block4(v4), block2 ; v4 = 0 +;; @001b v3 = iconst.i32 0 +;; @001b v4 = icmp eq v2, v3 ; v3 = 0 +;; @001b brif v4, block4(v3), block2 ; v3 = 0 ;; ;; block2: -;; @001b v8 = iconst.i32 1 -;; @001b v9 = band.i32 v2, v8 ; v8 = 1 -;; v23 = iconst.i32 0 -;; @001b brif v9, block4(v23), block3 ; v23 = 0 +;; @001b v7 = iconst.i32 1 +;; @001b v8 = band.i32 v2, v7 ; v7 = 1 +;; v22 = iconst.i32 0 +;; @001b brif v8, block4(v22), block3 ; v22 = 0 ;; ;; block3: -;; @001b v12 = load.i64 notrap aligned readonly can_move region0 v0+8 -;; @001b v13 = load.i64 notrap aligned readonly can_move region2 v12+32 -;; @001b v11 = uextend.i64 v2 -;; @001b v14 = iadd v13, v11 -;; @001b v17 = load.i32 user2 readonly region4 v14 -;; @001b v18 = iconst.i32 -1342177280 -;; @001b v19 = band v17, v18 ; v18 = -1342177280 -;; @001b v20 = icmp eq v19, v18 ; v18 = -1342177280 -;; @001b v21 = uextend.i32 v20 -;; @001b jump block4(v21) +;; @001b v11 = load.i64 notrap aligned readonly can_move region0 v0+8 +;; @001b v12 = load.i64 notrap aligned readonly can_move region2 v11+32 +;; @001b v10 = uextend.i64 v2 +;; @001b v13 = iadd v12, v10 +;; @001b v16 = load.i32 user2 readonly region4 v13 +;; @001b v17 = iconst.i32 -1342177280 +;; @001b v18 = band v16, v17 ; v17 = -1342177280 +;; @001b v19 = icmp eq v18, v17 ; v17 = -1342177280 +;; @001b v20 = uextend.i32 v19 +;; @001b jump block4(v20) ;; -;; block4(v22: i32): -;; @001e jump block1(v22) +;; block4(v21: i32): +;; @001e jump block1 ;; -;; block1(v3: i32): -;; @001e return v3 +;; block1: +;; @001e return v21 ;; } diff --git a/tests/disas/gc/copying/struct-get.wat b/tests/disas/gc/copying/struct-get.wat index 674e2ac7f835..8162fd4250fb 100644 --- a/tests/disas/gc/copying/struct-get.wat +++ b/tests/disas/gc/copying/struct-get.wat @@ -35,17 +35,17 @@ ;; ;; block0(v0: i64, v1: i64, v2: i32): ;; @0033 trapz v2, user16 -;; @0033 v5 = load.i64 notrap aligned readonly can_move region0 v0+8 -;; @0033 v6 = load.i64 notrap aligned readonly can_move region2 v5+32 -;; @0033 v4 = uextend.i64 v2 -;; @0033 v7 = iadd v6, v4 -;; @0033 v8 = iconst.i64 16 -;; @0033 v9 = iadd v7, v8 ; v8 = 16 -;; @0033 v10 = load.f32 user2 little region4 v9 +;; @0033 v4 = load.i64 notrap aligned readonly can_move region0 v0+8 +;; @0033 v5 = load.i64 notrap aligned readonly can_move region2 v4+32 +;; @0033 v3 = uextend.i64 v2 +;; @0033 v6 = iadd v5, v3 +;; @0033 v7 = iconst.i64 16 +;; @0033 v8 = iadd v6, v7 ; v7 = 16 +;; @0033 v9 = load.f32 user2 little region4 v8 ;; @0037 jump block1 ;; ;; block1: -;; @0037 return v10 +;; @0037 return v9 ;; } ;; ;; function u0:1(i64 vmctx, i64, i32) -> i32 tail { @@ -61,18 +61,18 @@ ;; ;; block0(v0: i64, v1: i64, v2: i32): ;; @003c trapz v2, user16 -;; @003c v5 = load.i64 notrap aligned readonly can_move region0 v0+8 -;; @003c v6 = load.i64 notrap aligned readonly can_move region2 v5+32 -;; @003c v4 = uextend.i64 v2 -;; @003c v7 = iadd v6, v4 -;; @003c v8 = iconst.i64 20 -;; @003c v9 = iadd v7, v8 ; v8 = 20 -;; @003c v10 = load.i8 user2 little region4 v9 +;; @003c v4 = load.i64 notrap aligned readonly can_move region0 v0+8 +;; @003c v5 = load.i64 notrap aligned readonly can_move region2 v4+32 +;; @003c v3 = uextend.i64 v2 +;; @003c v6 = iadd v5, v3 +;; @003c v7 = iconst.i64 20 +;; @003c v8 = iadd v6, v7 ; v7 = 20 +;; @003c v9 = load.i8 user2 little region4 v8 ;; @0040 jump block1 ;; ;; block1: -;; @003c v11 = sextend.i32 v10 -;; @0040 return v11 +;; @003c v10 = sextend.i32 v9 +;; @0040 return v10 ;; } ;; ;; function u0:2(i64 vmctx, i64, i32) -> i32 tail { @@ -88,18 +88,18 @@ ;; ;; block0(v0: i64, v1: i64, v2: i32): ;; @0045 trapz v2, user16 -;; @0045 v5 = load.i64 notrap aligned readonly can_move region0 v0+8 -;; @0045 v6 = load.i64 notrap aligned readonly can_move region2 v5+32 -;; @0045 v4 = uextend.i64 v2 -;; @0045 v7 = iadd v6, v4 -;; @0045 v8 = iconst.i64 20 -;; @0045 v9 = iadd v7, v8 ; v8 = 20 -;; @0045 v10 = load.i8 user2 little region4 v9 +;; @0045 v4 = load.i64 notrap aligned readonly can_move region0 v0+8 +;; @0045 v5 = load.i64 notrap aligned readonly can_move region2 v4+32 +;; @0045 v3 = uextend.i64 v2 +;; @0045 v6 = iadd v5, v3 +;; @0045 v7 = iconst.i64 20 +;; @0045 v8 = iadd v6, v7 ; v7 = 20 +;; @0045 v9 = load.i8 user2 little region4 v8 ;; @0049 jump block1 ;; ;; block1: -;; @0045 v11 = uextend.i32 v10 -;; @0049 return v11 +;; @0045 v10 = uextend.i32 v9 +;; @0049 return v10 ;; } ;; ;; function u0:3(i64 vmctx, i64, i32) -> i32 tail { @@ -115,15 +115,15 @@ ;; ;; block0(v0: i64, v1: i64, v2: i32): ;; @004e trapz v2, user16 -;; @004e v5 = load.i64 notrap aligned readonly can_move region0 v0+8 -;; @004e v6 = load.i64 notrap aligned readonly can_move region2 v5+32 -;; @004e v4 = uextend.i64 v2 -;; @004e v7 = iadd v6, v4 -;; @004e v8 = iconst.i64 24 -;; @004e v9 = iadd v7, v8 ; v8 = 24 -;; @004e v10 = load.i32 user2 little region4 v9 +;; @004e v4 = load.i64 notrap aligned readonly can_move region0 v0+8 +;; @004e v5 = load.i64 notrap aligned readonly can_move region2 v4+32 +;; @004e v3 = uextend.i64 v2 +;; @004e v6 = iadd v5, v3 +;; @004e v7 = iconst.i64 24 +;; @004e v8 = iadd v6, v7 ; v7 = 24 +;; @004e v9 = load.i32 user2 little region4 v8 ;; @0052 jump block1 ;; ;; block1: -;; @0052 return v10 +;; @0052 return v9 ;; } diff --git a/tests/disas/gc/copying/struct-new-default.wat b/tests/disas/gc/copying/struct-new-default.wat index 73114a5aed62..4196cc6ee684 100644 --- a/tests/disas/gc/copying/struct-new-default.wat +++ b/tests/disas/gc/copying/struct-new-default.wat @@ -25,59 +25,59 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64): -;; @0021 v7 = load.i64 notrap aligned readonly can_move region2 v0+32 -;; @0021 v8 = load.i32 notrap aligned v7 -;; @0021 v9 = load.i32 notrap aligned v7+4 -;; @0021 v15 = uextend.i64 v8 -;; v44 = iconst.i64 32 -;; @0021 v16 = iadd v15, v44 ; v44 = 32 -;; @0021 v17 = uextend.i64 v9 -;; @0021 v18 = icmp ule v16, v17 -;; @0021 brif v18, block2, block3 +;; @0021 v6 = load.i64 notrap aligned readonly can_move region2 v0+32 +;; @0021 v7 = load.i32 notrap aligned v6 +;; @0021 v8 = load.i32 notrap aligned v6+4 +;; @0021 v14 = uextend.i64 v7 +;; v43 = iconst.i64 32 +;; @0021 v15 = iadd v14, v43 ; v43 = 32 +;; @0021 v16 = uextend.i64 v8 +;; @0021 v17 = icmp ule v15, v16 +;; @0021 brif v17, block2, block3 ;; ;; block2: -;; v60 = iconst.i32 32 -;; v58 = iadd.i32 v8, v60 ; v60 = 32 -;; @0021 store notrap aligned v58, v7 -;; v61 = iconst.i32 -1342177246 -;; v62 = load.i64 notrap aligned readonly can_move region0 v0+8 -;; v63 = load.i64 notrap aligned readonly can_move region4 v62+32 -;; @0021 v32 = iadd v63, v15 -;; @0021 store notrap aligned v61, v32 ; v61 = -1342177246 -;; v64 = load.i64 notrap aligned readonly can_move region3 v0+40 -;; v65 = load.i32 notrap aligned readonly can_move v64 -;; @0021 store notrap aligned v65, v32+4 -;; v66 = iconst.i64 32 -;; @0021 istore32 notrap aligned v66, v32+8 ; v66 = 32 -;; @0021 jump block4(v8, v32) +;; v59 = iconst.i32 32 +;; v57 = iadd.i32 v7, v59 ; v59 = 32 +;; @0021 store notrap aligned v57, v6 +;; v60 = iconst.i32 -1342177246 +;; v61 = load.i64 notrap aligned readonly can_move region0 v0+8 +;; v62 = load.i64 notrap aligned readonly can_move region4 v61+32 +;; @0021 v31 = iadd v62, v14 +;; @0021 store notrap aligned v60, v31 ; v60 = -1342177246 +;; v63 = load.i64 notrap aligned readonly can_move region3 v0+40 +;; v64 = load.i32 notrap aligned readonly can_move v63 +;; @0021 store notrap aligned v64, v31+4 +;; v65 = iconst.i64 32 +;; @0021 istore32 notrap aligned v65, v31+8 ; v65 = 32 +;; @0021 jump block4(v7, v31) ;; ;; block3 cold: -;; @0021 v19 = iconst.i32 -1342177246 -;; @0021 v20 = load.i64 notrap aligned readonly can_move region3 v0+40 -;; @0021 v21 = load.i32 notrap aligned readonly can_move v20 -;; @0021 v6 = iconst.i32 32 -;; @0021 v22 = iconst.i32 16 -;; @0021 v23 = call fn0(v0, v19, v21, v6, v22) ; v19 = -1342177246, v6 = 32, v22 = 16 -;; @0021 v24 = load.i64 notrap aligned readonly can_move region0 v0+8 -;; @0021 v25 = load.i64 notrap aligned readonly can_move region4 v24+32 -;; @0021 v26 = uextend.i64 v23 -;; @0021 v27 = iadd v25, v26 -;; @0021 jump block4(v23, v27) +;; @0021 v18 = iconst.i32 -1342177246 +;; @0021 v19 = load.i64 notrap aligned readonly can_move region3 v0+40 +;; @0021 v20 = load.i32 notrap aligned readonly can_move v19 +;; @0021 v5 = iconst.i32 32 +;; @0021 v21 = iconst.i32 16 +;; @0021 v22 = call fn0(v0, v18, v20, v5, v21) ; v18 = -1342177246, v5 = 32, v21 = 16 +;; @0021 v23 = load.i64 notrap aligned readonly can_move region0 v0+8 +;; @0021 v24 = load.i64 notrap aligned readonly can_move region4 v23+32 +;; @0021 v25 = uextend.i64 v22 +;; @0021 v26 = iadd v24, v25 +;; @0021 jump block4(v22, v26) ;; -;; block4(v36: i32, v37: i64): -;; @0021 v3 = f32const 0.0 -;; @0021 v38 = iconst.i64 16 -;; @0021 v39 = iadd v37, v38 ; v38 = 16 -;; @0021 store user2 little region5 v3, v39 ; v3 = 0.0 -;; @0021 v4 = iconst.i32 0 -;; @0021 v40 = iconst.i64 20 -;; @0021 v41 = iadd v37, v40 ; v40 = 20 -;; @0021 istore8 user2 little region5 v4, v41 ; v4 = 0 -;; @0021 v42 = iconst.i64 24 -;; @0021 v43 = iadd v37, v42 ; v42 = 24 -;; @0021 store user2 little region5 v4, v43 ; v4 = 0 -;; @0024 jump block1(v36) +;; block4(v35: i32, v36: i64): +;; @0021 v2 = f32const 0.0 +;; @0021 v37 = iconst.i64 16 +;; @0021 v38 = iadd v36, v37 ; v37 = 16 +;; @0021 store user2 little region5 v2, v38 ; v2 = 0.0 +;; @0021 v3 = iconst.i32 0 +;; @0021 v39 = iconst.i64 20 +;; @0021 v40 = iadd v36, v39 ; v39 = 20 +;; @0021 istore8 user2 little region5 v3, v40 ; v3 = 0 +;; @0021 v41 = iconst.i64 24 +;; @0021 v42 = iadd v36, v41 ; v41 = 24 +;; @0021 store user2 little region5 v3, v42 ; v3 = 0 +;; @0024 jump block1 ;; -;; block1(v2: i32): -;; @0024 return v2 +;; block1: +;; @0024 return v35 ;; } diff --git a/tests/disas/gc/copying/struct-new.wat b/tests/disas/gc/copying/struct-new.wat index 11a1addfa984..2829b9e13bb3 100644 --- a/tests/disas/gc/copying/struct-new.wat +++ b/tests/disas/gc/copying/struct-new.wat @@ -26,60 +26,60 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: f32, v3: i32, v4: i32): -;; v46 = stack_addr.i64 ss0 -;; store notrap v4, v46 -;; @002a v7 = load.i64 notrap aligned readonly can_move region2 v0+32 -;; @002a v8 = load.i32 notrap aligned v7 -;; @002a v9 = load.i32 notrap aligned v7+4 -;; @002a v15 = uextend.i64 v8 -;; v47 = iconst.i64 32 -;; @002a v16 = iadd v15, v47 ; v47 = 32 -;; @002a v17 = uextend.i64 v9 -;; @002a v18 = icmp ule v16, v17 -;; @002a brif v18, block2, block3 +;; v45 = stack_addr.i64 ss0 +;; store notrap v4, v45 +;; @002a v6 = load.i64 notrap aligned readonly can_move region2 v0+32 +;; @002a v7 = load.i32 notrap aligned v6 +;; @002a v8 = load.i32 notrap aligned v6+4 +;; @002a v14 = uextend.i64 v7 +;; v46 = iconst.i64 32 +;; @002a v15 = iadd v14, v46 ; v46 = 32 +;; @002a v16 = uextend.i64 v8 +;; @002a v17 = icmp ule v15, v16 +;; @002a brif v17, block2, block3 ;; ;; block2: -;; v63 = iconst.i32 32 -;; v61 = iadd.i32 v8, v63 ; v63 = 32 -;; @002a store notrap aligned v61, v7 -;; v64 = iconst.i32 -1342177246 -;; v65 = load.i64 notrap aligned readonly can_move region0 v0+8 -;; v66 = load.i64 notrap aligned readonly can_move region4 v65+32 -;; @002a v32 = iadd v66, v15 -;; @002a store notrap aligned v64, v32 ; v64 = -1342177246 -;; v67 = load.i64 notrap aligned readonly can_move region3 v0+40 -;; v68 = load.i32 notrap aligned readonly can_move v67 -;; @002a store notrap aligned v68, v32+4 -;; v69 = iconst.i64 32 -;; @002a istore32 notrap aligned v69, v32+8 ; v69 = 32 -;; @002a jump block4(v8, v32) +;; v62 = iconst.i32 32 +;; v60 = iadd.i32 v7, v62 ; v62 = 32 +;; @002a store notrap aligned v60, v6 +;; v63 = iconst.i32 -1342177246 +;; v64 = load.i64 notrap aligned readonly can_move region0 v0+8 +;; v65 = load.i64 notrap aligned readonly can_move region4 v64+32 +;; @002a v31 = iadd v65, v14 +;; @002a store notrap aligned v63, v31 ; v63 = -1342177246 +;; v66 = load.i64 notrap aligned readonly can_move region3 v0+40 +;; v67 = load.i32 notrap aligned readonly can_move v66 +;; @002a store notrap aligned v67, v31+4 +;; v68 = iconst.i64 32 +;; @002a istore32 notrap aligned v68, v31+8 ; v68 = 32 +;; @002a jump block4(v7, v31) ;; ;; block3 cold: -;; @002a v19 = iconst.i32 -1342177246 -;; @002a v20 = load.i64 notrap aligned readonly can_move region3 v0+40 -;; @002a v21 = load.i32 notrap aligned readonly can_move v20 -;; @002a v6 = iconst.i32 32 -;; @002a v22 = iconst.i32 16 -;; @002a v23 = call fn0(v0, v19, v21, v6, v22), stack_map=[i32 @ ss0+0] ; v19 = -1342177246, v6 = 32, v22 = 16 -;; @002a v24 = load.i64 notrap aligned readonly can_move region0 v0+8 -;; @002a v25 = load.i64 notrap aligned readonly can_move region4 v24+32 -;; @002a v26 = uextend.i64 v23 -;; @002a v27 = iadd v25, v26 -;; @002a jump block4(v23, v27) +;; @002a v18 = iconst.i32 -1342177246 +;; @002a v19 = load.i64 notrap aligned readonly can_move region3 v0+40 +;; @002a v20 = load.i32 notrap aligned readonly can_move v19 +;; @002a v5 = iconst.i32 32 +;; @002a v21 = iconst.i32 16 +;; @002a v22 = call fn0(v0, v18, v20, v5, v21), stack_map=[i32 @ ss0+0] ; v18 = -1342177246, v5 = 32, v21 = 16 +;; @002a v23 = load.i64 notrap aligned readonly can_move region0 v0+8 +;; @002a v24 = load.i64 notrap aligned readonly can_move region4 v23+32 +;; @002a v25 = uextend.i64 v22 +;; @002a v26 = iadd v24, v25 +;; @002a jump block4(v22, v26) ;; -;; block4(v36: i32, v37: i64): -;; @002a v38 = iconst.i64 16 -;; @002a v39 = iadd v37, v38 ; v38 = 16 -;; @002a store.f32 user2 little region5 v2, v39 -;; @002a v40 = iconst.i64 20 -;; @002a v41 = iadd v37, v40 ; v40 = 20 -;; @002a istore8.i32 user2 little region5 v3, v41 -;; v45 = load.i32 notrap v46 -;; @002a v42 = iconst.i64 24 -;; @002a v43 = iadd v37, v42 ; v42 = 24 -;; @002a store user2 little region5 v45, v43 -;; @002d jump block1(v36) +;; block4(v35: i32, v36: i64): +;; @002a v37 = iconst.i64 16 +;; @002a v38 = iadd v36, v37 ; v37 = 16 +;; @002a store.f32 user2 little region5 v2, v38 +;; @002a v39 = iconst.i64 20 +;; @002a v40 = iadd v36, v39 ; v39 = 20 +;; @002a istore8.i32 user2 little region5 v3, v40 +;; v44 = load.i32 notrap v45 +;; @002a v41 = iconst.i64 24 +;; @002a v42 = iadd v36, v41 ; v41 = 24 +;; @002a store user2 little region5 v44, v42 +;; @002d jump block1 ;; -;; block1(v5: i32): -;; @002d return v5 +;; block1: +;; @002d return v35 ;; } diff --git a/tests/disas/gc/copying/v128-fields.wat b/tests/disas/gc/copying/v128-fields.wat index 53652aebd62f..e43f9cc0b2a3 100644 --- a/tests/disas/gc/copying/v128-fields.wat +++ b/tests/disas/gc/copying/v128-fields.wat @@ -23,16 +23,16 @@ ;; ;; block0(v0: i64, v1: i64, v2: i32): ;; @0022 trapz v2, user16 -;; @0022 v5 = load.i64 notrap aligned readonly can_move region0 v0+8 -;; @0022 v6 = load.i64 notrap aligned readonly can_move region2 v5+32 -;; @0022 v4 = uextend.i64 v2 -;; @0022 v7 = iadd v6, v4 -;; @0022 v8 = iconst.i64 16 -;; @0022 v9 = iadd v7, v8 ; v8 = 16 -;; @0022 v10 = load.i8x16 user2 little region4 v9 +;; @0022 v4 = load.i64 notrap aligned readonly can_move region0 v0+8 +;; @0022 v5 = load.i64 notrap aligned readonly can_move region2 v4+32 +;; @0022 v3 = uextend.i64 v2 +;; @0022 v6 = iadd v5, v3 +;; @0022 v7 = iconst.i64 16 +;; @0022 v8 = iadd v6, v7 ; v7 = 16 +;; @0022 v9 = load.i8x16 user2 little region4 v8 ;; @002e jump block1 ;; ;; block1: -;; @002c v18 = bxor.i8x16 v10, v10 -;; @002e return v18 +;; @002c v17 = bxor.i8x16 v9, v9 +;; @002e return v17 ;; } diff --git a/tests/disas/gc/drc/array-get-s.wat b/tests/disas/gc/drc/array-get-s.wat index 772bed0aa45c..6b3b03e6d477 100644 --- a/tests/disas/gc/drc/array-get-s.wat +++ b/tests/disas/gc/drc/array-get-s.wat @@ -22,32 +22,32 @@ ;; ;; block0(v0: i64, v1: i64, v2: i32, v3: i32): ;; @0022 trapz v2, user16 -;; @0022 v6 = load.i64 notrap aligned readonly can_move region0 v0+8 -;; @0022 v7 = load.i64 notrap aligned readonly can_move region2 v6+32 -;; @0022 v5 = uextend.i64 v2 -;; @0022 v8 = iadd v7, v5 -;; @0022 v9 = iconst.i64 24 -;; @0022 v10 = iadd v8, v9 ; v9 = 24 -;; @0022 v11 = load.i32 user2 readonly region4 v10 -;; @0022 v12 = icmp ult v3, v11 -;; @0022 trapz v12, user17 -;; @0022 v14 = uextend.i64 v11 -;; @0022 v16 = iconst.i64 32 -;; @0022 v17 = ushr v14, v16 ; v16 = 32 -;; @0022 trapnz v17, user2 -;; @0022 v19 = iconst.i32 28 -;; @0022 v20 = uadd_overflow_trap v11, v19, user2 ; v19 = 28 -;; @0022 v24 = uadd_overflow_trap v2, v20, user2 -;; @0022 v25 = uextend.i64 v24 -;; @0022 v28 = iadd v7, v25 -;; @0022 v23 = iadd v3, v19 ; v19 = 28 -;; @0022 v29 = isub v20, v23 -;; @0022 v30 = uextend.i64 v29 -;; @0022 v31 = isub v28, v30 -;; @0022 v32 = load.i8 user2 little region4 v31 +;; @0022 v5 = load.i64 notrap aligned readonly can_move region0 v0+8 +;; @0022 v6 = load.i64 notrap aligned readonly can_move region2 v5+32 +;; @0022 v4 = uextend.i64 v2 +;; @0022 v7 = iadd v6, v4 +;; @0022 v8 = iconst.i64 24 +;; @0022 v9 = iadd v7, v8 ; v8 = 24 +;; @0022 v10 = load.i32 user2 readonly region4 v9 +;; @0022 v11 = icmp ult v3, v10 +;; @0022 trapz v11, user17 +;; @0022 v13 = uextend.i64 v10 +;; @0022 v15 = iconst.i64 32 +;; @0022 v16 = ushr v13, v15 ; v15 = 32 +;; @0022 trapnz v16, user2 +;; @0022 v18 = iconst.i32 28 +;; @0022 v19 = uadd_overflow_trap v10, v18, user2 ; v18 = 28 +;; @0022 v23 = uadd_overflow_trap v2, v19, user2 +;; @0022 v24 = uextend.i64 v23 +;; @0022 v27 = iadd v6, v24 +;; @0022 v22 = iadd v3, v18 ; v18 = 28 +;; @0022 v28 = isub v19, v22 +;; @0022 v29 = uextend.i64 v28 +;; @0022 v30 = isub v27, v29 +;; @0022 v31 = load.i8 user2 little region4 v30 ;; @0025 jump block1 ;; ;; block1: -;; @0022 v33 = sextend.i32 v32 -;; @0025 return v33 +;; @0022 v32 = sextend.i32 v31 +;; @0025 return v32 ;; } diff --git a/tests/disas/gc/drc/array-get-u.wat b/tests/disas/gc/drc/array-get-u.wat index 837318f498d5..2aaf832f3443 100644 --- a/tests/disas/gc/drc/array-get-u.wat +++ b/tests/disas/gc/drc/array-get-u.wat @@ -22,32 +22,32 @@ ;; ;; block0(v0: i64, v1: i64, v2: i32, v3: i32): ;; @0022 trapz v2, user16 -;; @0022 v6 = load.i64 notrap aligned readonly can_move region0 v0+8 -;; @0022 v7 = load.i64 notrap aligned readonly can_move region2 v6+32 -;; @0022 v5 = uextend.i64 v2 -;; @0022 v8 = iadd v7, v5 -;; @0022 v9 = iconst.i64 24 -;; @0022 v10 = iadd v8, v9 ; v9 = 24 -;; @0022 v11 = load.i32 user2 readonly region4 v10 -;; @0022 v12 = icmp ult v3, v11 -;; @0022 trapz v12, user17 -;; @0022 v14 = uextend.i64 v11 -;; @0022 v16 = iconst.i64 32 -;; @0022 v17 = ushr v14, v16 ; v16 = 32 -;; @0022 trapnz v17, user2 -;; @0022 v19 = iconst.i32 28 -;; @0022 v20 = uadd_overflow_trap v11, v19, user2 ; v19 = 28 -;; @0022 v24 = uadd_overflow_trap v2, v20, user2 -;; @0022 v25 = uextend.i64 v24 -;; @0022 v28 = iadd v7, v25 -;; @0022 v23 = iadd v3, v19 ; v19 = 28 -;; @0022 v29 = isub v20, v23 -;; @0022 v30 = uextend.i64 v29 -;; @0022 v31 = isub v28, v30 -;; @0022 v32 = load.i8 user2 little region4 v31 +;; @0022 v5 = load.i64 notrap aligned readonly can_move region0 v0+8 +;; @0022 v6 = load.i64 notrap aligned readonly can_move region2 v5+32 +;; @0022 v4 = uextend.i64 v2 +;; @0022 v7 = iadd v6, v4 +;; @0022 v8 = iconst.i64 24 +;; @0022 v9 = iadd v7, v8 ; v8 = 24 +;; @0022 v10 = load.i32 user2 readonly region4 v9 +;; @0022 v11 = icmp ult v3, v10 +;; @0022 trapz v11, user17 +;; @0022 v13 = uextend.i64 v10 +;; @0022 v15 = iconst.i64 32 +;; @0022 v16 = ushr v13, v15 ; v15 = 32 +;; @0022 trapnz v16, user2 +;; @0022 v18 = iconst.i32 28 +;; @0022 v19 = uadd_overflow_trap v10, v18, user2 ; v18 = 28 +;; @0022 v23 = uadd_overflow_trap v2, v19, user2 +;; @0022 v24 = uextend.i64 v23 +;; @0022 v27 = iadd v6, v24 +;; @0022 v22 = iadd v3, v18 ; v18 = 28 +;; @0022 v28 = isub v19, v22 +;; @0022 v29 = uextend.i64 v28 +;; @0022 v30 = isub v27, v29 +;; @0022 v31 = load.i8 user2 little region4 v30 ;; @0025 jump block1 ;; ;; block1: -;; @0022 v33 = uextend.i32 v32 -;; @0025 return v33 +;; @0022 v32 = uextend.i32 v31 +;; @0025 return v32 ;; } diff --git a/tests/disas/gc/drc/array-get.wat b/tests/disas/gc/drc/array-get.wat index 5ad5368721a5..3e127bbf8f6c 100644 --- a/tests/disas/gc/drc/array-get.wat +++ b/tests/disas/gc/drc/array-get.wat @@ -22,36 +22,36 @@ ;; ;; block0(v0: i64, v1: i64, v2: i32, v3: i32): ;; @0022 trapz v2, user16 -;; @0022 v6 = load.i64 notrap aligned readonly can_move region0 v0+8 -;; @0022 v7 = load.i64 notrap aligned readonly can_move region2 v6+32 -;; @0022 v5 = uextend.i64 v2 -;; @0022 v8 = iadd v7, v5 -;; @0022 v9 = iconst.i64 24 -;; @0022 v10 = iadd v8, v9 ; v9 = 24 -;; @0022 v11 = load.i32 user2 readonly region4 v10 -;; @0022 v12 = icmp ult v3, v11 -;; @0022 trapz v12, user17 -;; @0022 v14 = uextend.i64 v11 -;; v33 = iconst.i64 3 -;; v34 = ishl v14, v33 ; v33 = 3 -;; @0022 v16 = iconst.i64 32 -;; @0022 v17 = ushr v34, v16 ; v16 = 32 -;; @0022 trapnz v17, user2 -;; v43 = iconst.i32 3 -;; v44 = ishl v11, v43 ; v43 = 3 -;; @0022 v19 = iconst.i32 32 -;; @0022 v20 = uadd_overflow_trap v44, v19, user2 ; v19 = 32 -;; @0022 v24 = uadd_overflow_trap v2, v20, user2 -;; @0022 v25 = uextend.i64 v24 -;; @0022 v28 = iadd v7, v25 -;; v50 = ishl v3, v43 ; v43 = 3 -;; @0022 v23 = iadd v50, v19 ; v19 = 32 -;; @0022 v29 = isub v20, v23 -;; @0022 v30 = uextend.i64 v29 -;; @0022 v31 = isub v28, v30 -;; @0022 v32 = load.i64 user2 little region4 v31 +;; @0022 v5 = load.i64 notrap aligned readonly can_move region0 v0+8 +;; @0022 v6 = load.i64 notrap aligned readonly can_move region2 v5+32 +;; @0022 v4 = uextend.i64 v2 +;; @0022 v7 = iadd v6, v4 +;; @0022 v8 = iconst.i64 24 +;; @0022 v9 = iadd v7, v8 ; v8 = 24 +;; @0022 v10 = load.i32 user2 readonly region4 v9 +;; @0022 v11 = icmp ult v3, v10 +;; @0022 trapz v11, user17 +;; @0022 v13 = uextend.i64 v10 +;; v32 = iconst.i64 3 +;; v33 = ishl v13, v32 ; v32 = 3 +;; @0022 v15 = iconst.i64 32 +;; @0022 v16 = ushr v33, v15 ; v15 = 32 +;; @0022 trapnz v16, user2 +;; v42 = iconst.i32 3 +;; v43 = ishl v10, v42 ; v42 = 3 +;; @0022 v18 = iconst.i32 32 +;; @0022 v19 = uadd_overflow_trap v43, v18, user2 ; v18 = 32 +;; @0022 v23 = uadd_overflow_trap v2, v19, user2 +;; @0022 v24 = uextend.i64 v23 +;; @0022 v27 = iadd v6, v24 +;; v49 = ishl v3, v42 ; v42 = 3 +;; @0022 v22 = iadd v49, v18 ; v18 = 32 +;; @0022 v28 = isub v19, v22 +;; @0022 v29 = uextend.i64 v28 +;; @0022 v30 = isub v27, v29 +;; @0022 v31 = load.i64 user2 little region4 v30 ;; @0025 jump block1 ;; ;; block1: -;; @0025 return v32 +;; @0025 return v31 ;; } diff --git a/tests/disas/gc/drc/array-len.wat b/tests/disas/gc/drc/array-len.wat index 8ba9b35c39c5..60c59b095aeb 100644 --- a/tests/disas/gc/drc/array-len.wat +++ b/tests/disas/gc/drc/array-len.wat @@ -22,15 +22,15 @@ ;; ;; block0(v0: i64, v1: i64, v2: i32): ;; @001f trapz v2, user16 -;; @001f v5 = load.i64 notrap aligned readonly can_move region0 v0+8 -;; @001f v6 = load.i64 notrap aligned readonly can_move region2 v5+32 -;; @001f v4 = uextend.i64 v2 -;; @001f v7 = iadd v6, v4 -;; @001f v8 = iconst.i64 24 -;; @001f v9 = iadd v7, v8 ; v8 = 24 -;; @001f v10 = load.i32 user2 readonly region4 v9 +;; @001f v4 = load.i64 notrap aligned readonly can_move region0 v0+8 +;; @001f v5 = load.i64 notrap aligned readonly can_move region2 v4+32 +;; @001f v3 = uextend.i64 v2 +;; @001f v6 = iadd v5, v3 +;; @001f v7 = iconst.i64 24 +;; @001f v8 = iadd v6, v7 ; v7 = 24 +;; @001f v9 = load.i32 user2 readonly region4 v8 ;; @0021 jump block1 ;; ;; block1: -;; @0021 return v10 +;; @0021 return v9 ;; } diff --git a/tests/disas/gc/drc/array-new-fixed-of-gc-refs.wat b/tests/disas/gc/drc/array-new-fixed-of-gc-refs.wat index 928c639ad35b..cc2e2d7f8521 100644 --- a/tests/disas/gc/drc/array-new-fixed-of-gc-refs.wat +++ b/tests/disas/gc/drc/array-new-fixed-of-gc-refs.wat @@ -27,148 +27,148 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i32, v3: i32, v4: i32): -;; v203 = stack_addr.i64 ss2 -;; store notrap v2, v203 -;; v204 = stack_addr.i64 ss1 -;; store notrap v3, v204 -;; v205 = stack_addr.i64 ss0 -;; store notrap v4, v205 -;; @0025 v15 = iconst.i32 -1476395008 -;; @0025 v16 = load.i64 notrap aligned readonly can_move region2 v0+40 -;; @0025 v17 = load.i32 notrap aligned readonly can_move v16 -;; v217 = iconst.i32 40 -;; @0025 v18 = iconst.i32 8 -;; @0025 v19 = call fn0(v0, v15, v17, v217, v18), stack_map=[i32 @ ss2+0, i32 @ ss1+0, i32 @ ss0+0] ; v15 = -1476395008, v217 = 40, v18 = 8 -;; @0025 v6 = iconst.i32 3 -;; @0025 v20 = load.i64 notrap aligned readonly can_move region0 v0+8 -;; @0025 v21 = load.i64 notrap aligned readonly can_move region3 v20+32 -;; @0025 v22 = uextend.i64 v19 -;; @0025 v23 = iadd v21, v22 -;; @0025 v24 = iconst.i64 24 -;; @0025 v25 = iadd v23, v24 ; v24 = 24 -;; @0025 store user2 region4 v6, v25 ; v6 = 3 -;; @0025 trapz v19, user16 -;; @0025 v46 = uadd_overflow_trap v19, v217, user2 ; v217 = 40 -;; v202 = load.i32 notrap v203 -;; @0025 v54 = iconst.i32 1 -;; @0025 v55 = band v202, v54 ; v54 = 1 -;; @0025 v26 = iconst.i32 0 -;; @0025 v57 = icmp eq v202, v26 ; v26 = 0 -;; @0025 v58 = uextend.i32 v57 -;; @0025 v59 = bor v55, v58 -;; @0025 brif v59, block3, block2 +;; v202 = stack_addr.i64 ss2 +;; store notrap v2, v202 +;; v203 = stack_addr.i64 ss1 +;; store notrap v3, v203 +;; v204 = stack_addr.i64 ss0 +;; store notrap v4, v204 +;; @0025 v14 = iconst.i32 -1476395008 +;; @0025 v15 = load.i64 notrap aligned readonly can_move region2 v0+40 +;; @0025 v16 = load.i32 notrap aligned readonly can_move v15 +;; v216 = iconst.i32 40 +;; @0025 v17 = iconst.i32 8 +;; @0025 v18 = call fn0(v0, v14, v16, v216, v17), stack_map=[i32 @ ss2+0, i32 @ ss1+0, i32 @ ss0+0] ; v14 = -1476395008, v216 = 40, v17 = 8 +;; @0025 v5 = iconst.i32 3 +;; @0025 v19 = load.i64 notrap aligned readonly can_move region0 v0+8 +;; @0025 v20 = load.i64 notrap aligned readonly can_move region3 v19+32 +;; @0025 v21 = uextend.i64 v18 +;; @0025 v22 = iadd v20, v21 +;; @0025 v23 = iconst.i64 24 +;; @0025 v24 = iadd v22, v23 ; v23 = 24 +;; @0025 store user2 region4 v5, v24 ; v5 = 3 +;; @0025 trapz v18, user16 +;; @0025 v45 = uadd_overflow_trap v18, v216, user2 ; v216 = 40 +;; v201 = load.i32 notrap v202 +;; @0025 v53 = iconst.i32 1 +;; @0025 v54 = band v201, v53 ; v53 = 1 +;; @0025 v25 = iconst.i32 0 +;; @0025 v56 = icmp eq v201, v25 ; v25 = 0 +;; @0025 v57 = uextend.i32 v56 +;; @0025 v58 = bor v54, v57 +;; @0025 brif v58, block3, block2 ;; ;; block2: -;; v198 = load.i32 notrap v203 -;; @0025 v60 = uextend.i64 v198 -;; @0025 v63 = iadd.i64 v21, v60 -;; @0025 v64 = iconst.i64 8 -;; @0025 v65 = iadd v63, v64 ; v64 = 8 -;; @0025 v66 = load.i64 user2 region4 v65 -;; @0025 v67 = iconst.i64 1 -;; @0025 v68 = iadd v66, v67 ; v67 = 1 -;; @0025 store user2 region4 v68, v65 +;; v197 = load.i32 notrap v202 +;; @0025 v59 = uextend.i64 v197 +;; @0025 v62 = iadd.i64 v20, v59 +;; @0025 v63 = iconst.i64 8 +;; @0025 v64 = iadd v62, v63 ; v63 = 8 +;; @0025 v65 = load.i64 user2 region4 v64 +;; @0025 v66 = iconst.i64 1 +;; @0025 v67 = iadd v65, v66 ; v66 = 1 +;; @0025 store user2 region4 v67, v64 ;; @0025 jump block3 ;; ;; block3: -;; v194 = load.i32 notrap v203 -;; @0025 v47 = uextend.i64 v46 -;; @0025 v50 = iadd.i64 v21, v47 -;; v207 = iconst.i64 12 -;; @0025 v53 = isub v50, v207 ; v207 = 12 -;; @0025 store user2 little region4 v194, v53 -;; v310 = iadd.i64 v23, v24 ; v24 = 24 -;; @0025 v82 = load.i32 user2 readonly region4 v310 -;; v311 = iconst.i32 1 -;; v312 = icmp ugt v82, v311 ; v311 = 1 -;; @0025 trapz v312, user17 -;; @0025 v85 = uextend.i64 v82 -;; v208 = iconst.i64 2 -;; v252 = ishl v85, v208 ; v208 = 2 -;; @0025 v11 = iconst.i64 32 -;; @0025 v88 = ushr v252, v11 ; v11 = 32 -;; @0025 trapnz v88, user2 -;; v229 = iconst.i32 2 -;; v259 = ishl v82, v229 ; v229 = 2 -;; @0025 v7 = iconst.i32 28 -;; @0025 v91 = uadd_overflow_trap v259, v7, user2 ; v7 = 28 -;; @0025 v95 = uadd_overflow_trap.i32 v19, v91, user2 -;; v192 = load.i32 notrap v204 -;; v313 = band v192, v311 ; v311 = 1 -;; v314 = iconst.i32 0 -;; v315 = icmp eq v192, v314 ; v314 = 0 -;; @0025 v107 = uextend.i32 v315 -;; @0025 v108 = bor v313, v107 -;; @0025 brif v108, block5, block4 +;; v193 = load.i32 notrap v202 +;; @0025 v46 = uextend.i64 v45 +;; @0025 v49 = iadd.i64 v20, v46 +;; v206 = iconst.i64 12 +;; @0025 v52 = isub v49, v206 ; v206 = 12 +;; @0025 store user2 little region4 v193, v52 +;; v309 = iadd.i64 v22, v23 ; v23 = 24 +;; @0025 v81 = load.i32 user2 readonly region4 v309 +;; v310 = iconst.i32 1 +;; v311 = icmp ugt v81, v310 ; v310 = 1 +;; @0025 trapz v311, user17 +;; @0025 v84 = uextend.i64 v81 +;; v207 = iconst.i64 2 +;; v251 = ishl v84, v207 ; v207 = 2 +;; @0025 v10 = iconst.i64 32 +;; @0025 v87 = ushr v251, v10 ; v10 = 32 +;; @0025 trapnz v87, user2 +;; v228 = iconst.i32 2 +;; v258 = ishl v81, v228 ; v228 = 2 +;; @0025 v6 = iconst.i32 28 +;; @0025 v90 = uadd_overflow_trap v258, v6, user2 ; v6 = 28 +;; @0025 v94 = uadd_overflow_trap.i32 v18, v90, user2 +;; v191 = load.i32 notrap v203 +;; v312 = band v191, v310 ; v310 = 1 +;; v313 = iconst.i32 0 +;; v314 = icmp eq v191, v313 ; v313 = 0 +;; @0025 v106 = uextend.i32 v314 +;; @0025 v107 = bor v312, v106 +;; @0025 brif v107, block5, block4 ;; ;; block4: -;; v188 = load.i32 notrap v204 -;; @0025 v109 = uextend.i64 v188 -;; @0025 v112 = iadd.i64 v21, v109 -;; v316 = iconst.i64 8 -;; @0025 v114 = iadd v112, v316 ; v316 = 8 -;; @0025 v115 = load.i64 user2 region4 v114 -;; v317 = iconst.i64 1 -;; @0025 v117 = iadd v115, v317 ; v317 = 1 -;; @0025 store user2 region4 v117, v114 +;; v187 = load.i32 notrap v203 +;; @0025 v108 = uextend.i64 v187 +;; @0025 v111 = iadd.i64 v20, v108 +;; v315 = iconst.i64 8 +;; @0025 v113 = iadd v111, v315 ; v315 = 8 +;; @0025 v114 = load.i64 user2 region4 v113 +;; v316 = iconst.i64 1 +;; @0025 v116 = iadd v114, v316 ; v316 = 1 +;; @0025 store user2 region4 v116, v113 ;; @0025 jump block5 ;; ;; block5: -;; v184 = load.i32 notrap v204 -;; @0025 v96 = uextend.i64 v95 -;; @0025 v99 = iadd.i64 v21, v96 -;; v272 = iconst.i32 32 -;; @0025 v100 = isub.i32 v91, v272 ; v272 = 32 -;; @0025 v101 = uextend.i64 v100 -;; @0025 v102 = isub v99, v101 -;; @0025 store user2 little region4 v184, v102 -;; v318 = iadd.i64 v23, v24 ; v24 = 24 -;; @0025 v131 = load.i32 user2 readonly region4 v318 -;; v319 = iconst.i32 2 -;; v320 = icmp ugt v131, v319 ; v319 = 2 -;; @0025 trapz v320, user17 -;; @0025 v134 = uextend.i64 v131 -;; v321 = iconst.i64 2 -;; v322 = ishl v134, v321 ; v321 = 2 -;; v323 = iconst.i64 32 -;; v324 = ushr v322, v323 ; v323 = 32 -;; @0025 trapnz v324, user2 -;; v325 = ishl v131, v319 ; v319 = 2 -;; v326 = iconst.i32 28 -;; @0025 v140 = uadd_overflow_trap v325, v326, user2 ; v326 = 28 -;; @0025 v144 = uadd_overflow_trap.i32 v19, v140, user2 -;; v182 = load.i32 notrap v205 -;; v327 = iconst.i32 1 -;; v328 = band v182, v327 ; v327 = 1 -;; v329 = iconst.i32 0 -;; v330 = icmp eq v182, v329 ; v329 = 0 -;; @0025 v156 = uextend.i32 v330 -;; @0025 v157 = bor v328, v156 -;; @0025 brif v157, block7, block6 +;; v183 = load.i32 notrap v203 +;; @0025 v95 = uextend.i64 v94 +;; @0025 v98 = iadd.i64 v20, v95 +;; v271 = iconst.i32 32 +;; @0025 v99 = isub.i32 v90, v271 ; v271 = 32 +;; @0025 v100 = uextend.i64 v99 +;; @0025 v101 = isub v98, v100 +;; @0025 store user2 little region4 v183, v101 +;; v317 = iadd.i64 v22, v23 ; v23 = 24 +;; @0025 v130 = load.i32 user2 readonly region4 v317 +;; v318 = iconst.i32 2 +;; v319 = icmp ugt v130, v318 ; v318 = 2 +;; @0025 trapz v319, user17 +;; @0025 v133 = uextend.i64 v130 +;; v320 = iconst.i64 2 +;; v321 = ishl v133, v320 ; v320 = 2 +;; v322 = iconst.i64 32 +;; v323 = ushr v321, v322 ; v322 = 32 +;; @0025 trapnz v323, user2 +;; v324 = ishl v130, v318 ; v318 = 2 +;; v325 = iconst.i32 28 +;; @0025 v139 = uadd_overflow_trap v324, v325, user2 ; v325 = 28 +;; @0025 v143 = uadd_overflow_trap.i32 v18, v139, user2 +;; v181 = load.i32 notrap v204 +;; v326 = iconst.i32 1 +;; v327 = band v181, v326 ; v326 = 1 +;; v328 = iconst.i32 0 +;; v329 = icmp eq v181, v328 ; v328 = 0 +;; @0025 v155 = uextend.i32 v329 +;; @0025 v156 = bor v327, v155 +;; @0025 brif v156, block7, block6 ;; ;; block6: -;; v178 = load.i32 notrap v205 -;; @0025 v158 = uextend.i64 v178 -;; @0025 v161 = iadd.i64 v21, v158 -;; v331 = iconst.i64 8 -;; @0025 v163 = iadd v161, v331 ; v331 = 8 -;; @0025 v164 = load.i64 user2 region4 v163 -;; v332 = iconst.i64 1 -;; @0025 v166 = iadd v164, v332 ; v332 = 1 -;; @0025 store user2 region4 v166, v163 +;; v177 = load.i32 notrap v204 +;; @0025 v157 = uextend.i64 v177 +;; @0025 v160 = iadd.i64 v20, v157 +;; v330 = iconst.i64 8 +;; @0025 v162 = iadd v160, v330 ; v330 = 8 +;; @0025 v163 = load.i64 user2 region4 v162 +;; v331 = iconst.i64 1 +;; @0025 v165 = iadd v163, v331 ; v331 = 1 +;; @0025 store user2 region4 v165, v162 ;; @0025 jump block7 ;; ;; block7: -;; v174 = load.i32 notrap v205 -;; @0025 v145 = uextend.i64 v144 -;; @0025 v148 = iadd.i64 v21, v145 -;; v304 = iconst.i32 36 -;; @0025 v149 = isub.i32 v140, v304 ; v304 = 36 -;; @0025 v150 = uextend.i64 v149 -;; @0025 v151 = isub v148, v150 -;; @0025 store user2 little region4 v174, v151 +;; v173 = load.i32 notrap v204 +;; @0025 v144 = uextend.i64 v143 +;; @0025 v147 = iadd.i64 v20, v144 +;; v303 = iconst.i32 36 +;; @0025 v148 = isub.i32 v139, v303 ; v303 = 36 +;; @0025 v149 = uextend.i64 v148 +;; @0025 v150 = isub v147, v149 +;; @0025 store user2 little region4 v173, v150 ;; @0029 jump block1 ;; ;; block1: -;; @0029 return v19 +;; @0029 return v18 ;; } diff --git a/tests/disas/gc/drc/array-new-fixed.wat b/tests/disas/gc/drc/array-new-fixed.wat index eef94db228ec..d0a293e3e07d 100644 --- a/tests/disas/gc/drc/array-new-fixed.wat +++ b/tests/disas/gc/drc/array-new-fixed.wat @@ -24,67 +24,67 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i64, v3: i64, v4: i64): -;; @0025 v15 = iconst.i32 -1476395008 -;; @0025 v16 = load.i64 notrap aligned readonly can_move region2 v0+40 -;; @0025 v17 = load.i32 notrap aligned readonly can_move v16 -;; v120 = iconst.i32 56 -;; @0025 v18 = iconst.i32 8 -;; @0025 v19 = call fn0(v0, v15, v17, v120, v18) ; v15 = -1476395008, v120 = 56, v18 = 8 -;; @0025 v6 = iconst.i32 3 -;; @0025 v20 = load.i64 notrap aligned readonly can_move region0 v0+8 -;; @0025 v21 = load.i64 notrap aligned readonly can_move region3 v20+32 -;; @0025 v22 = uextend.i64 v19 -;; @0025 v23 = iadd v21, v22 -;; v111 = iconst.i64 24 -;; @0025 v25 = iadd v23, v111 ; v111 = 24 -;; @0025 store user2 region4 v6, v25 ; v6 = 3 -;; @0025 trapz v19, user16 -;; @0025 v46 = uadd_overflow_trap v19, v120, user2 ; v120 = 56 -;; @0025 v47 = uextend.i64 v46 -;; @0025 v50 = iadd v21, v47 -;; @0025 v53 = isub v50, v111 ; v111 = 24 -;; @0025 store user2 little region4 v2, v53 -;; @0025 v61 = load.i32 user2 readonly region4 v25 -;; @0025 v54 = iconst.i32 1 -;; v151 = icmp ugt v61, v54 ; v54 = 1 -;; @0025 trapz v151, user17 -;; @0025 v64 = uextend.i64 v61 -;; v110 = iconst.i64 3 -;; v153 = ishl v64, v110 ; v110 = 3 -;; @0025 v11 = iconst.i64 32 -;; @0025 v67 = ushr v153, v11 ; v11 = 32 -;; @0025 trapnz v67, user2 -;; v160 = ishl v61, v6 ; v6 = 3 -;; @0025 v7 = iconst.i32 32 -;; @0025 v70 = uadd_overflow_trap v160, v7, user2 ; v7 = 32 -;; @0025 v74 = uadd_overflow_trap v19, v70, user2 -;; @0025 v75 = uextend.i64 v74 -;; @0025 v78 = iadd v21, v75 -;; v173 = iconst.i32 40 -;; @0025 v79 = isub v70, v173 ; v173 = 40 -;; @0025 v80 = uextend.i64 v79 -;; @0025 v81 = isub v78, v80 -;; @0025 store user2 little region4 v3, v81 -;; @0025 v89 = load.i32 user2 readonly region4 v25 -;; @0025 v82 = iconst.i32 2 -;; v179 = icmp ugt v89, v82 ; v82 = 2 -;; @0025 trapz v179, user17 -;; @0025 v92 = uextend.i64 v89 -;; v181 = ishl v92, v110 ; v110 = 3 -;; @0025 v95 = ushr v181, v11 ; v11 = 32 -;; @0025 trapnz v95, user2 -;; v188 = ishl v89, v6 ; v6 = 3 -;; @0025 v98 = uadd_overflow_trap v188, v7, user2 ; v7 = 32 -;; @0025 v102 = uadd_overflow_trap v19, v98, user2 -;; @0025 v103 = uextend.i64 v102 -;; @0025 v106 = iadd v21, v103 -;; v206 = iconst.i32 48 -;; @0025 v107 = isub v98, v206 ; v206 = 48 -;; @0025 v108 = uextend.i64 v107 -;; @0025 v109 = isub v106, v108 -;; @0025 store user2 little region4 v4, v109 +;; @0025 v14 = iconst.i32 -1476395008 +;; @0025 v15 = load.i64 notrap aligned readonly can_move region2 v0+40 +;; @0025 v16 = load.i32 notrap aligned readonly can_move v15 +;; v119 = iconst.i32 56 +;; @0025 v17 = iconst.i32 8 +;; @0025 v18 = call fn0(v0, v14, v16, v119, v17) ; v14 = -1476395008, v119 = 56, v17 = 8 +;; @0025 v5 = iconst.i32 3 +;; @0025 v19 = load.i64 notrap aligned readonly can_move region0 v0+8 +;; @0025 v20 = load.i64 notrap aligned readonly can_move region3 v19+32 +;; @0025 v21 = uextend.i64 v18 +;; @0025 v22 = iadd v20, v21 +;; v110 = iconst.i64 24 +;; @0025 v24 = iadd v22, v110 ; v110 = 24 +;; @0025 store user2 region4 v5, v24 ; v5 = 3 +;; @0025 trapz v18, user16 +;; @0025 v45 = uadd_overflow_trap v18, v119, user2 ; v119 = 56 +;; @0025 v46 = uextend.i64 v45 +;; @0025 v49 = iadd v20, v46 +;; @0025 v52 = isub v49, v110 ; v110 = 24 +;; @0025 store user2 little region4 v2, v52 +;; @0025 v60 = load.i32 user2 readonly region4 v24 +;; @0025 v53 = iconst.i32 1 +;; v150 = icmp ugt v60, v53 ; v53 = 1 +;; @0025 trapz v150, user17 +;; @0025 v63 = uextend.i64 v60 +;; v109 = iconst.i64 3 +;; v152 = ishl v63, v109 ; v109 = 3 +;; @0025 v10 = iconst.i64 32 +;; @0025 v66 = ushr v152, v10 ; v10 = 32 +;; @0025 trapnz v66, user2 +;; v159 = ishl v60, v5 ; v5 = 3 +;; @0025 v6 = iconst.i32 32 +;; @0025 v69 = uadd_overflow_trap v159, v6, user2 ; v6 = 32 +;; @0025 v73 = uadd_overflow_trap v18, v69, user2 +;; @0025 v74 = uextend.i64 v73 +;; @0025 v77 = iadd v20, v74 +;; v172 = iconst.i32 40 +;; @0025 v78 = isub v69, v172 ; v172 = 40 +;; @0025 v79 = uextend.i64 v78 +;; @0025 v80 = isub v77, v79 +;; @0025 store user2 little region4 v3, v80 +;; @0025 v88 = load.i32 user2 readonly region4 v24 +;; @0025 v81 = iconst.i32 2 +;; v178 = icmp ugt v88, v81 ; v81 = 2 +;; @0025 trapz v178, user17 +;; @0025 v91 = uextend.i64 v88 +;; v180 = ishl v91, v109 ; v109 = 3 +;; @0025 v94 = ushr v180, v10 ; v10 = 32 +;; @0025 trapnz v94, user2 +;; v187 = ishl v88, v5 ; v5 = 3 +;; @0025 v97 = uadd_overflow_trap v187, v6, user2 ; v6 = 32 +;; @0025 v101 = uadd_overflow_trap v18, v97, user2 +;; @0025 v102 = uextend.i64 v101 +;; @0025 v105 = iadd v20, v102 +;; v205 = iconst.i32 48 +;; @0025 v106 = isub v97, v205 ; v205 = 48 +;; @0025 v107 = uextend.i64 v106 +;; @0025 v108 = isub v105, v107 +;; @0025 store user2 little region4 v4, v108 ;; @0029 jump block1 ;; ;; block1: -;; @0029 return v19 +;; @0029 return v18 ;; } diff --git a/tests/disas/gc/drc/array-new.wat b/tests/disas/gc/drc/array-new.wat index 42189b4d754a..e734a1204dc0 100644 --- a/tests/disas/gc/drc/array-new.wat +++ b/tests/disas/gc/drc/array-new.wat @@ -24,51 +24,51 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i64, v3: i32): -;; @0022 v6 = uextend.i64 v3 -;; v66 = iconst.i64 3 -;; v67 = ishl v6, v66 ; v66 = 3 -;; @0022 v9 = iconst.i64 32 -;; @0022 v10 = ushr v67, v9 ; v9 = 32 -;; @0022 trapnz v10, user18 -;; @0022 v5 = iconst.i32 32 -;; v73 = iconst.i32 3 -;; v74 = ishl v3, v73 ; v73 = 3 -;; @0022 v12 = uadd_overflow_trap v5, v74, user18 ; v5 = 32 -;; @0022 v13 = iconst.i32 -1476395008 -;; @0022 v14 = load.i64 notrap aligned readonly can_move region2 v0+40 -;; @0022 v15 = load.i32 notrap aligned readonly can_move v14 -;; v71 = iconst.i32 8 -;; @0022 v17 = call fn0(v0, v13, v15, v12, v71) ; v13 = -1476395008, v71 = 8 -;; @0022 v18 = load.i64 notrap aligned readonly can_move region0 v0+8 -;; @0022 v19 = load.i64 notrap aligned readonly can_move region3 v18+32 -;; @0022 v20 = uextend.i64 v17 -;; @0022 v21 = iadd v19, v20 -;; @0022 v22 = iconst.i64 24 -;; @0022 v23 = iadd v21, v22 ; v22 = 24 -;; @0022 store user2 region4 v3, v23 -;; @0022 trapz v17, user16 -;; @0022 v55 = load.i64 notrap aligned region5 v18+40 -;; @0022 v44 = iadd v21, v9 ; v9 = 32 -;; @0022 v57 = uadd_overflow_trap v44, v67, user2 -;; @0022 v56 = iadd v19, v55 -;; @0022 v58 = icmp ugt v57, v56 -;; @0022 trapnz v58, user2 -;; v77 = iconst.i64 0 -;; @0022 v61 = icmp eq v6, v77 ; v77 = 0 -;; @0022 v7 = iconst.i64 8 -;; @0022 v59 = iadd v44, v67 -;; @0022 brif v61, block3, block2(v44) +;; @0022 v5 = uextend.i64 v3 +;; v65 = iconst.i64 3 +;; v66 = ishl v5, v65 ; v65 = 3 +;; @0022 v8 = iconst.i64 32 +;; @0022 v9 = ushr v66, v8 ; v8 = 32 +;; @0022 trapnz v9, user18 +;; @0022 v4 = iconst.i32 32 +;; v72 = iconst.i32 3 +;; v73 = ishl v3, v72 ; v72 = 3 +;; @0022 v11 = uadd_overflow_trap v4, v73, user18 ; v4 = 32 +;; @0022 v12 = iconst.i32 -1476395008 +;; @0022 v13 = load.i64 notrap aligned readonly can_move region2 v0+40 +;; @0022 v14 = load.i32 notrap aligned readonly can_move v13 +;; v70 = iconst.i32 8 +;; @0022 v16 = call fn0(v0, v12, v14, v11, v70) ; v12 = -1476395008, v70 = 8 +;; @0022 v17 = load.i64 notrap aligned readonly can_move region0 v0+8 +;; @0022 v18 = load.i64 notrap aligned readonly can_move region3 v17+32 +;; @0022 v19 = uextend.i64 v16 +;; @0022 v20 = iadd v18, v19 +;; @0022 v21 = iconst.i64 24 +;; @0022 v22 = iadd v20, v21 ; v21 = 24 +;; @0022 store user2 region4 v3, v22 +;; @0022 trapz v16, user16 +;; @0022 v54 = load.i64 notrap aligned region5 v17+40 +;; @0022 v43 = iadd v20, v8 ; v8 = 32 +;; @0022 v56 = uadd_overflow_trap v43, v66, user2 +;; @0022 v55 = iadd v18, v54 +;; @0022 v57 = icmp ugt v56, v55 +;; @0022 trapnz v57, user2 +;; v76 = iconst.i64 0 +;; @0022 v60 = icmp eq v5, v76 ; v76 = 0 +;; @0022 v6 = iconst.i64 8 +;; @0022 v58 = iadd v43, v66 +;; @0022 brif v60, block3, block2(v43) ;; -;; block2(v62: i64): -;; @0022 store.i64 user2 little region4 v2, v62 -;; v92 = iconst.i64 8 -;; v93 = iadd v62, v92 ; v92 = 8 -;; @0022 v65 = icmp eq v93, v59 -;; @0022 brif v65, block3, block2(v93) +;; block2(v61: i64): +;; @0022 store.i64 user2 little region4 v2, v61 +;; v91 = iconst.i64 8 +;; v92 = iadd v61, v91 ; v91 = 8 +;; @0022 v64 = icmp eq v92, v58 +;; @0022 brif v64, block3, block2(v92) ;; ;; block3: ;; @0025 jump block1 ;; ;; block1: -;; @0025 return v17 +;; @0025 return v16 ;; } diff --git a/tests/disas/gc/drc/br-on-cast-fail.wat b/tests/disas/gc/drc/br-on-cast-fail.wat index 48e01543760e..e6763e9efc2f 100644 --- a/tests/disas/gc/drc/br-on-cast-fail.wat +++ b/tests/disas/gc/drc/br-on-cast-fail.wat @@ -34,42 +34,42 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i32): -;; @002e v4 = iconst.i32 0 -;; @002e v5 = icmp eq v2, v4 ; v4 = 0 -;; @002e brif v5, block5(v4), block3 ; v4 = 0 +;; @002e v3 = iconst.i32 0 +;; @002e v4 = icmp eq v2, v3 ; v3 = 0 +;; @002e brif v4, block5(v3), block3 ; v3 = 0 ;; ;; block3: -;; @002e v8 = iconst.i32 1 -;; @002e v9 = band.i32 v2, v8 ; v8 = 1 -;; v27 = iconst.i32 0 -;; @002e brif v9, block5(v27), block4 ; v27 = 0 +;; @002e v7 = iconst.i32 1 +;; @002e v8 = band.i32 v2, v7 ; v7 = 1 +;; v26 = iconst.i32 0 +;; @002e brif v8, block5(v26), block4 ; v26 = 0 ;; ;; block4: -;; @002e v14 = load.i64 notrap aligned readonly can_move region0 v0+8 -;; @002e v15 = load.i64 notrap aligned readonly can_move region3 v14+32 -;; @002e v13 = uextend.i64 v2 -;; @002e v16 = iadd v15, v13 -;; @002e v17 = iconst.i64 4 -;; @002e v18 = iadd v16, v17 ; v17 = 4 -;; @002e v19 = load.i32 user2 readonly region5 v18 -;; @002e v11 = load.i64 notrap aligned readonly can_move region2 v0+40 -;; @002e v12 = load.i32 notrap aligned readonly can_move v11 -;; @002e v20 = icmp eq v19, v12 -;; @002e v21 = uextend.i32 v20 -;; @002e jump block5(v21) +;; @002e v13 = load.i64 notrap aligned readonly can_move region0 v0+8 +;; @002e v14 = load.i64 notrap aligned readonly can_move region3 v13+32 +;; @002e v12 = uextend.i64 v2 +;; @002e v15 = iadd v14, v12 +;; @002e v16 = iconst.i64 4 +;; @002e v17 = iadd v15, v16 ; v16 = 4 +;; @002e v18 = load.i32 user2 readonly region5 v17 +;; @002e v10 = load.i64 notrap aligned readonly can_move region2 v0+40 +;; @002e v11 = load.i32 notrap aligned readonly can_move v10 +;; @002e v19 = icmp eq v18, v11 +;; @002e v20 = uextend.i32 v19 +;; @002e jump block5(v20) ;; -;; block5(v22: i32): -;; @002e brif v22, block6, block2 +;; block5(v21: i32): +;; @002e brif v21, block6, block2 ;; ;; block6: -;; @0034 v24 = load.i64 notrap aligned readonly can_move region7 v0+56 -;; @0034 v23 = load.i64 notrap aligned readonly can_move region6 v0+72 -;; @0034 call_indirect sig0, v24(v23, v0) +;; @0034 v23 = load.i64 notrap aligned readonly can_move region7 v0+56 +;; @0034 v22 = load.i64 notrap aligned readonly can_move region6 v0+72 +;; @0034 call_indirect sig0, v23(v22, v0) ;; @0036 return ;; ;; block2: -;; @0038 v26 = load.i64 notrap aligned readonly can_move region9 v0+88 -;; @0038 v25 = load.i64 notrap aligned readonly can_move region8 v0+104 -;; @0038 call_indirect sig0, v26(v25, v0) +;; @0038 v25 = load.i64 notrap aligned readonly can_move region9 v0+88 +;; @0038 v24 = load.i64 notrap aligned readonly can_move region8 v0+104 +;; @0038 call_indirect sig0, v25(v24, v0) ;; @003a return ;; } diff --git a/tests/disas/gc/drc/br-on-cast.wat b/tests/disas/gc/drc/br-on-cast.wat index 90aa42eaebb8..cd4ddcb5c4e0 100644 --- a/tests/disas/gc/drc/br-on-cast.wat +++ b/tests/disas/gc/drc/br-on-cast.wat @@ -34,42 +34,42 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i32): -;; @002f v4 = iconst.i32 0 -;; @002f v5 = icmp eq v2, v4 ; v4 = 0 -;; @002f brif v5, block5(v4), block3 ; v4 = 0 +;; @002f v3 = iconst.i32 0 +;; @002f v4 = icmp eq v2, v3 ; v3 = 0 +;; @002f brif v4, block5(v3), block3 ; v3 = 0 ;; ;; block3: -;; @002f v8 = iconst.i32 1 -;; @002f v9 = band.i32 v2, v8 ; v8 = 1 -;; v27 = iconst.i32 0 -;; @002f brif v9, block5(v27), block4 ; v27 = 0 +;; @002f v7 = iconst.i32 1 +;; @002f v8 = band.i32 v2, v7 ; v7 = 1 +;; v26 = iconst.i32 0 +;; @002f brif v8, block5(v26), block4 ; v26 = 0 ;; ;; block4: -;; @002f v14 = load.i64 notrap aligned readonly can_move region0 v0+8 -;; @002f v15 = load.i64 notrap aligned readonly can_move region3 v14+32 -;; @002f v13 = uextend.i64 v2 -;; @002f v16 = iadd v15, v13 -;; @002f v17 = iconst.i64 4 -;; @002f v18 = iadd v16, v17 ; v17 = 4 -;; @002f v19 = load.i32 user2 readonly region5 v18 -;; @002f v11 = load.i64 notrap aligned readonly can_move region2 v0+40 -;; @002f v12 = load.i32 notrap aligned readonly can_move v11 -;; @002f v20 = icmp eq v19, v12 -;; @002f v21 = uextend.i32 v20 -;; @002f jump block5(v21) +;; @002f v13 = load.i64 notrap aligned readonly can_move region0 v0+8 +;; @002f v14 = load.i64 notrap aligned readonly can_move region3 v13+32 +;; @002f v12 = uextend.i64 v2 +;; @002f v15 = iadd v14, v12 +;; @002f v16 = iconst.i64 4 +;; @002f v17 = iadd v15, v16 ; v16 = 4 +;; @002f v18 = load.i32 user2 readonly region5 v17 +;; @002f v10 = load.i64 notrap aligned readonly can_move region2 v0+40 +;; @002f v11 = load.i32 notrap aligned readonly can_move v10 +;; @002f v19 = icmp eq v18, v11 +;; @002f v20 = uextend.i32 v19 +;; @002f jump block5(v20) ;; -;; block5(v22: i32): -;; @002f brif v22, block2, block6 +;; block5(v21: i32): +;; @002f brif v21, block2, block6 ;; ;; block6: -;; @0035 v24 = load.i64 notrap aligned readonly can_move region7 v0+56 -;; @0035 v23 = load.i64 notrap aligned readonly can_move region6 v0+72 -;; @0035 call_indirect sig0, v24(v23, v0) +;; @0035 v23 = load.i64 notrap aligned readonly can_move region7 v0+56 +;; @0035 v22 = load.i64 notrap aligned readonly can_move region6 v0+72 +;; @0035 call_indirect sig0, v23(v22, v0) ;; @0037 return ;; ;; block2: -;; @0039 v26 = load.i64 notrap aligned readonly can_move region9 v0+88 -;; @0039 v25 = load.i64 notrap aligned readonly can_move region8 v0+104 -;; @0039 call_indirect sig0, v26(v25, v0) +;; @0039 v25 = load.i64 notrap aligned readonly can_move region9 v0+88 +;; @0039 v24 = load.i64 notrap aligned readonly can_move region8 v0+104 +;; @0039 call_indirect sig0, v25(v24, v0) ;; @003b return ;; } diff --git a/tests/disas/gc/drc/externref-globals.wat b/tests/disas/gc/drc/externref-globals.wat index 0d7ac4872b51..b129c8bba5eb 100644 --- a/tests/disas/gc/drc/externref-globals.wat +++ b/tests/disas/gc/drc/externref-globals.wat @@ -29,69 +29,69 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64): -;; @0034 v3 = iconst.i64 48 -;; @0034 v4 = iadd v0, v3 ; v3 = 48 -;; @0034 v5 = load.i32 notrap aligned region2 v4 -;; v80 = stack_addr.i64 ss0 -;; store notrap v5, v80 -;; @0034 v6 = iconst.i32 1 -;; @0034 v7 = band v5, v6 ; v6 = 1 -;; @0034 v8 = iconst.i32 0 -;; @0034 v9 = icmp eq v5, v8 ; v8 = 0 -;; @0034 v10 = uextend.i32 v9 -;; @0034 v11 = bor v7, v10 -;; @0034 brif v11, block4, block2 +;; @0034 v2 = iconst.i64 48 +;; @0034 v3 = iadd v0, v2 ; v2 = 48 +;; @0034 v4 = load.i32 notrap aligned region2 v3 +;; v79 = stack_addr.i64 ss0 +;; store notrap v4, v79 +;; @0034 v5 = iconst.i32 1 +;; @0034 v6 = band v4, v5 ; v5 = 1 +;; @0034 v7 = iconst.i32 0 +;; @0034 v8 = icmp eq v4, v7 ; v7 = 0 +;; @0034 v9 = uextend.i32 v8 +;; @0034 v10 = bor v6, v9 +;; @0034 brif v10, block4, block2 ;; ;; block2: -;; @0034 v13 = load.i64 notrap aligned readonly can_move region0 v0+8 -;; @0034 v14 = load.i64 notrap aligned readonly can_move region3 v13+32 -;; @0034 v12 = uextend.i64 v5 -;; @0034 v15 = iadd v14, v12 -;; @0034 v16 = load.i32 user2 region5 v15 -;; @0034 v17 = iconst.i32 2 -;; @0034 v18 = band v16, v17 ; v17 = 2 -;; @0034 brif v18, block4, block3 +;; @0034 v12 = load.i64 notrap aligned readonly can_move region0 v0+8 +;; @0034 v13 = load.i64 notrap aligned readonly can_move region3 v12+32 +;; @0034 v11 = uextend.i64 v4 +;; @0034 v14 = iadd v13, v11 +;; @0034 v15 = load.i32 user2 region5 v14 +;; @0034 v16 = iconst.i32 2 +;; @0034 v17 = band v15, v16 ; v16 = 2 +;; @0034 brif v17, block4, block3 ;; ;; block3: -;; @0034 v19 = load.i64 notrap aligned readonly can_move region6 v0+32 -;; @0034 v20 = load.i32 user2 region5 v19 -;; @0034 v25 = iconst.i64 16 -;; @0034 v26 = iadd.i64 v15, v25 ; v25 = 16 -;; @0034 store user2 region5 v20, v26 -;; v81 = iconst.i32 2 -;; v82 = bor.i32 v16, v81 ; v81 = 2 -;; @0034 store user2 region5 v82, v15 -;; @0034 v37 = iconst.i64 8 -;; @0034 v38 = iadd.i64 v15, v37 ; v37 = 8 -;; @0034 v39 = load.i64 user2 region5 v38 -;; @0034 v40 = iconst.i64 1 -;; @0034 v41 = iadd v39, v40 ; v40 = 1 -;; @0034 store user2 region5 v41, v38 -;; @0034 store.i32 user2 region5 v5, v19 -;; @0034 v49 = load.i32 notrap aligned v19+4 -;; v83 = iconst.i32 1 -;; v84 = iadd v49, v83 ; v83 = 1 -;; @0034 store notrap aligned v84, v19+4 -;; @0034 v56 = load.i32 notrap aligned v19+8 -;; @0034 v57 = iadd v56, v56 -;; @0034 v58 = iconst.i32 1024 -;; @0034 v59 = umax v57, v58 ; v58 = 1024 -;; @0034 v60 = icmp uge v84, v59 -;; @0034 brif v60, block5, block6 +;; @0034 v18 = load.i64 notrap aligned readonly can_move region6 v0+32 +;; @0034 v19 = load.i32 user2 region5 v18 +;; @0034 v24 = iconst.i64 16 +;; @0034 v25 = iadd.i64 v14, v24 ; v24 = 16 +;; @0034 store user2 region5 v19, v25 +;; v80 = iconst.i32 2 +;; v81 = bor.i32 v15, v80 ; v80 = 2 +;; @0034 store user2 region5 v81, v14 +;; @0034 v36 = iconst.i64 8 +;; @0034 v37 = iadd.i64 v14, v36 ; v36 = 8 +;; @0034 v38 = load.i64 user2 region5 v37 +;; @0034 v39 = iconst.i64 1 +;; @0034 v40 = iadd v38, v39 ; v39 = 1 +;; @0034 store user2 region5 v40, v37 +;; @0034 store.i32 user2 region5 v4, v18 +;; @0034 v48 = load.i32 notrap aligned v18+4 +;; v82 = iconst.i32 1 +;; v83 = iadd v48, v82 ; v82 = 1 +;; @0034 store notrap aligned v83, v18+4 +;; @0034 v55 = load.i32 notrap aligned v18+8 +;; @0034 v56 = iadd v55, v55 +;; @0034 v57 = iconst.i32 1024 +;; @0034 v58 = umax v56, v57 ; v57 = 1024 +;; @0034 v59 = icmp uge v83, v58 +;; @0034 brif v59, block5, block6 ;; ;; block5 cold: -;; @0034 v61 = call fn0(v0), stack_map=[i32 @ ss0+0] +;; @0034 v60 = call fn0(v0), stack_map=[i32 @ ss0+0] ;; @0034 jump block6 ;; ;; block6: ;; @0034 jump block4 ;; ;; block4: -;; v63 = load.i32 notrap v80 ;; @0036 jump block1 ;; ;; block1: -;; @0036 return v63 +;; v62 = load.i32 notrap v79 +;; @0036 return v62 ;; } ;; ;; function u0:1(i64 vmctx, i64, i32) tail { diff --git a/tests/disas/gc/drc/funcref-in-gc-heap-get.wat b/tests/disas/gc/drc/funcref-in-gc-heap-get.wat index ea7731428f95..7cf84a6c38c8 100644 --- a/tests/disas/gc/drc/funcref-in-gc-heap-get.wat +++ b/tests/disas/gc/drc/funcref-in-gc-heap-get.wat @@ -24,17 +24,17 @@ ;; ;; block0(v0: i64, v1: i64, v2: i32): ;; @0020 trapz v2, user16 -;; @0020 v5 = load.i64 notrap aligned readonly can_move region0 v0+8 -;; @0020 v6 = load.i64 notrap aligned readonly can_move region2 v5+32 -;; @0020 v4 = uextend.i64 v2 -;; @0020 v7 = iadd v6, v4 -;; @0020 v8 = iconst.i64 24 -;; @0020 v9 = iadd v7, v8 ; v8 = 24 -;; @0020 v11 = load.i32 user2 little region4 v9 -;; @0020 v10 = iconst.i32 -1 -;; @0020 v12 = call fn0(v0, v11, v10) ; v10 = -1 +;; @0020 v4 = load.i64 notrap aligned readonly can_move region0 v0+8 +;; @0020 v5 = load.i64 notrap aligned readonly can_move region2 v4+32 +;; @0020 v3 = uextend.i64 v2 +;; @0020 v6 = iadd v5, v3 +;; @0020 v7 = iconst.i64 24 +;; @0020 v8 = iadd v6, v7 ; v7 = 24 +;; @0020 v10 = load.i32 user2 little region4 v8 +;; @0020 v9 = iconst.i32 -1 +;; @0020 v11 = call fn0(v0, v10, v9) ; v9 = -1 ;; @0024 jump block1 ;; ;; block1: -;; @0024 return v12 +;; @0024 return v11 ;; } diff --git a/tests/disas/gc/drc/funcref-in-gc-heap-new.wat b/tests/disas/gc/drc/funcref-in-gc-heap-new.wat index 2f2186ef84bd..a0fd7685f441 100644 --- a/tests/disas/gc/drc/funcref-in-gc-heap-new.wat +++ b/tests/disas/gc/drc/funcref-in-gc-heap-new.wat @@ -26,26 +26,26 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i64): -;; @0020 v5 = iconst.i32 -1342177280 -;; @0020 v6 = load.i64 notrap aligned readonly can_move region2 v0+40 -;; @0020 v7 = load.i32 notrap aligned readonly can_move v6 -;; @0020 v4 = iconst.i32 32 -;; @0020 v8 = iconst.i32 8 -;; @0020 v9 = call fn0(v0, v5, v7, v4, v8) ; v5 = -1342177280, v4 = 32, v8 = 8 -;; v22 = stack_addr.i64 ss0 -;; store notrap v9, v22 -;; @0020 v16 = call fn1(v0, v2), stack_map=[i32 @ ss0+0] -;; @0020 v17 = ireduce.i32 v16 -;; @0020 v10 = load.i64 notrap aligned readonly can_move region0 v0+8 -;; @0020 v11 = load.i64 notrap aligned readonly can_move region3 v10+32 -;; @0020 v12 = uextend.i64 v9 -;; @0020 v13 = iadd v11, v12 -;; @0020 v14 = iconst.i64 24 -;; @0020 v15 = iadd v13, v14 ; v14 = 24 -;; @0020 store user2 little region4 v17, v15 -;; v19 = load.i32 notrap v22 +;; @0020 v4 = iconst.i32 -1342177280 +;; @0020 v5 = load.i64 notrap aligned readonly can_move region2 v0+40 +;; @0020 v6 = load.i32 notrap aligned readonly can_move v5 +;; @0020 v3 = iconst.i32 32 +;; @0020 v7 = iconst.i32 8 +;; @0020 v8 = call fn0(v0, v4, v6, v3, v7) ; v4 = -1342177280, v3 = 32, v7 = 8 +;; v21 = stack_addr.i64 ss0 +;; store notrap v8, v21 +;; @0020 v15 = call fn1(v0, v2), stack_map=[i32 @ ss0+0] +;; @0020 v16 = ireduce.i32 v15 +;; @0020 v9 = load.i64 notrap aligned readonly can_move region0 v0+8 +;; @0020 v10 = load.i64 notrap aligned readonly can_move region3 v9+32 +;; @0020 v11 = uextend.i64 v8 +;; @0020 v12 = iadd v10, v11 +;; @0020 v13 = iconst.i64 24 +;; @0020 v14 = iadd v12, v13 ; v13 = 24 +;; @0020 store user2 little region4 v16, v14 ;; @0023 jump block1 ;; ;; block1: -;; @0023 return v19 +;; v18 = load.i32 notrap v21 +;; @0023 return v18 ;; } diff --git a/tests/disas/gc/drc/i31ref-globals.wat b/tests/disas/gc/drc/i31ref-globals.wat index 7856dcf82ad6..97d4e0993027 100644 --- a/tests/disas/gc/drc/i31ref-globals.wat +++ b/tests/disas/gc/drc/i31ref-globals.wat @@ -22,13 +22,13 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64): -;; @0036 v3 = iconst.i64 48 -;; @0036 v4 = iadd v0, v3 ; v3 = 48 -;; @0036 v5 = load.i32 notrap aligned region2 v4 +;; @0036 v2 = iconst.i64 48 +;; @0036 v3 = iadd v0, v2 ; v2 = 48 +;; @0036 v4 = load.i32 notrap aligned region2 v3 ;; @0038 jump block1 ;; ;; block1: -;; @0038 return v5 +;; @0038 return v4 ;; } ;; ;; function u0:1(i64 vmctx, i64, i32) tail { diff --git a/tests/disas/gc/drc/multiple-array-get.wat b/tests/disas/gc/drc/multiple-array-get.wat index bd10a54019b1..3c627e8d4496 100644 --- a/tests/disas/gc/drc/multiple-array-get.wat +++ b/tests/disas/gc/drc/multiple-array-get.wat @@ -23,44 +23,44 @@ ;; ;; block0(v0: i64, v1: i64, v2: i32, v3: i32, v4: i32): ;; @0024 trapz v2, user16 -;; @0024 v8 = load.i64 notrap aligned readonly can_move region0 v0+8 -;; @0024 v9 = load.i64 notrap aligned readonly can_move region2 v8+32 -;; @0024 v7 = uextend.i64 v2 -;; @0024 v10 = iadd v9, v7 -;; @0024 v11 = iconst.i64 24 -;; @0024 v12 = iadd v10, v11 ; v11 = 24 -;; @0024 v13 = load.i32 user2 readonly region4 v12 -;; @0024 v14 = icmp ult v3, v13 -;; @0024 trapz v14, user17 -;; @0024 v16 = uextend.i64 v13 -;; v63 = iconst.i64 3 -;; v64 = ishl v16, v63 ; v63 = 3 -;; @0024 v18 = iconst.i64 32 -;; @0024 v19 = ushr v64, v18 ; v18 = 32 -;; @0024 trapnz v19, user2 -;; v73 = iconst.i32 3 -;; v74 = ishl v13, v73 ; v73 = 3 -;; @0024 v21 = iconst.i32 32 -;; @0024 v22 = uadd_overflow_trap v74, v21, user2 ; v21 = 32 -;; @0024 v26 = uadd_overflow_trap v2, v22, user2 -;; @0024 v27 = uextend.i64 v26 -;; @0024 v30 = iadd v9, v27 -;; v80 = ishl v3, v73 ; v73 = 3 -;; @0024 v25 = iadd v80, v21 ; v21 = 32 -;; @0024 v31 = isub v22, v25 -;; @0024 v32 = uextend.i64 v31 -;; @0024 v33 = isub v30, v32 -;; @0024 v34 = load.i64 user2 little region4 v33 -;; @002b v42 = icmp ult v4, v13 -;; @002b trapz v42, user17 -;; v82 = ishl v4, v73 ; v73 = 3 -;; @002b v53 = iadd v82, v21 ; v21 = 32 -;; @002b v59 = isub v22, v53 -;; @002b v60 = uextend.i64 v59 -;; @002b v61 = isub v30, v60 -;; @002b v62 = load.i64 user2 little region4 v61 +;; @0024 v6 = load.i64 notrap aligned readonly can_move region0 v0+8 +;; @0024 v7 = load.i64 notrap aligned readonly can_move region2 v6+32 +;; @0024 v5 = uextend.i64 v2 +;; @0024 v8 = iadd v7, v5 +;; @0024 v9 = iconst.i64 24 +;; @0024 v10 = iadd v8, v9 ; v9 = 24 +;; @0024 v11 = load.i32 user2 readonly region4 v10 +;; @0024 v12 = icmp ult v3, v11 +;; @0024 trapz v12, user17 +;; @0024 v14 = uextend.i64 v11 +;; v61 = iconst.i64 3 +;; v62 = ishl v14, v61 ; v61 = 3 +;; @0024 v16 = iconst.i64 32 +;; @0024 v17 = ushr v62, v16 ; v16 = 32 +;; @0024 trapnz v17, user2 +;; v71 = iconst.i32 3 +;; v72 = ishl v11, v71 ; v71 = 3 +;; @0024 v19 = iconst.i32 32 +;; @0024 v20 = uadd_overflow_trap v72, v19, user2 ; v19 = 32 +;; @0024 v24 = uadd_overflow_trap v2, v20, user2 +;; @0024 v25 = uextend.i64 v24 +;; @0024 v28 = iadd v7, v25 +;; v78 = ishl v3, v71 ; v71 = 3 +;; @0024 v23 = iadd v78, v19 ; v19 = 32 +;; @0024 v29 = isub v20, v23 +;; @0024 v30 = uextend.i64 v29 +;; @0024 v31 = isub v28, v30 +;; @0024 v32 = load.i64 user2 little region4 v31 +;; @002b v40 = icmp ult v4, v11 +;; @002b trapz v40, user17 +;; v80 = ishl v4, v71 ; v71 = 3 +;; @002b v51 = iadd v80, v19 ; v19 = 32 +;; @002b v57 = isub v20, v51 +;; @002b v58 = uextend.i64 v57 +;; @002b v59 = isub v28, v58 +;; @002b v60 = load.i64 user2 little region4 v59 ;; @002e jump block1 ;; ;; block1: -;; @002e return v34, v62 +;; @002e return v32, v60 ;; } diff --git a/tests/disas/gc/drc/multiple-struct-get.wat b/tests/disas/gc/drc/multiple-struct-get.wat index c8150a9a34ed..c0e4433fd7e6 100644 --- a/tests/disas/gc/drc/multiple-struct-get.wat +++ b/tests/disas/gc/drc/multiple-struct-get.wat @@ -24,19 +24,19 @@ ;; ;; block0(v0: i64, v1: i64, v2: i32): ;; @0023 trapz v2, user16 -;; @0023 v6 = load.i64 notrap aligned readonly can_move region0 v0+8 -;; @0023 v7 = load.i64 notrap aligned readonly can_move region2 v6+32 -;; @0023 v5 = uextend.i64 v2 -;; @0023 v8 = iadd v7, v5 -;; @0023 v9 = iconst.i64 24 -;; @0023 v10 = iadd v8, v9 ; v9 = 24 -;; @0023 v11 = load.f32 user2 little region4 v10 -;; @0029 v16 = iconst.i64 28 -;; @0029 v17 = iadd v8, v16 ; v16 = 28 -;; @0029 v18 = load.i8 user2 little region4 v17 +;; @0023 v4 = load.i64 notrap aligned readonly can_move region0 v0+8 +;; @0023 v5 = load.i64 notrap aligned readonly can_move region2 v4+32 +;; @0023 v3 = uextend.i64 v2 +;; @0023 v6 = iadd v5, v3 +;; @0023 v7 = iconst.i64 24 +;; @0023 v8 = iadd v6, v7 ; v7 = 24 +;; @0023 v9 = load.f32 user2 little region4 v8 +;; @0029 v14 = iconst.i64 28 +;; @0029 v15 = iadd v6, v14 ; v14 = 28 +;; @0029 v16 = load.i8 user2 little region4 v15 ;; @002d jump block1 ;; ;; block1: -;; @0029 v19 = sextend.i32 v18 -;; @002d return v11, v19 +;; @0029 v17 = sextend.i32 v16 +;; @002d return v9, v17 ;; } diff --git a/tests/disas/gc/drc/ref-cast.wat b/tests/disas/gc/drc/ref-cast.wat index 1d90b31fa088..798706685e41 100644 --- a/tests/disas/gc/drc/ref-cast.wat +++ b/tests/disas/gc/drc/ref-cast.wat @@ -21,32 +21,32 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i32): -;; @001e v4 = iconst.i32 0 -;; @001e v5 = icmp eq v2, v4 ; v4 = 0 -;; @001e brif v5, block4(v4), block2 ; v4 = 0 +;; @001e v3 = iconst.i32 0 +;; @001e v4 = icmp eq v2, v3 ; v3 = 0 +;; @001e brif v4, block4(v3), block2 ; v3 = 0 ;; ;; block2: -;; @001e v8 = iconst.i32 1 -;; @001e v9 = band.i32 v2, v8 ; v8 = 1 -;; v23 = iconst.i32 0 -;; @001e brif v9, block4(v23), block3 ; v23 = 0 +;; @001e v7 = iconst.i32 1 +;; @001e v8 = band.i32 v2, v7 ; v7 = 1 +;; v22 = iconst.i32 0 +;; @001e brif v8, block4(v22), block3 ; v22 = 0 ;; ;; block3: -;; @001e v14 = load.i64 notrap aligned readonly can_move region0 v0+8 -;; @001e v15 = load.i64 notrap aligned readonly can_move region3 v14+32 -;; @001e v13 = uextend.i64 v2 -;; @001e v16 = iadd v15, v13 -;; @001e v17 = iconst.i64 4 -;; @001e v18 = iadd v16, v17 ; v17 = 4 -;; @001e v19 = load.i32 user2 readonly region5 v18 -;; @001e v11 = load.i64 notrap aligned readonly can_move region2 v0+40 -;; @001e v12 = load.i32 notrap aligned readonly can_move v11 -;; @001e v20 = icmp eq v19, v12 -;; @001e v21 = uextend.i32 v20 -;; @001e jump block4(v21) +;; @001e v13 = load.i64 notrap aligned readonly can_move region0 v0+8 +;; @001e v14 = load.i64 notrap aligned readonly can_move region3 v13+32 +;; @001e v12 = uextend.i64 v2 +;; @001e v15 = iadd v14, v12 +;; @001e v16 = iconst.i64 4 +;; @001e v17 = iadd v15, v16 ; v16 = 4 +;; @001e v18 = load.i32 user2 readonly region5 v17 +;; @001e v10 = load.i64 notrap aligned readonly can_move region2 v0+40 +;; @001e v11 = load.i32 notrap aligned readonly can_move v10 +;; @001e v19 = icmp eq v18, v11 +;; @001e v20 = uextend.i32 v19 +;; @001e jump block4(v20) ;; -;; block4(v22: i32): -;; @001e trapz v22, user19 +;; block4(v21: i32): +;; @001e trapz v21, user19 ;; @0021 jump block1 ;; ;; block1: diff --git a/tests/disas/gc/drc/ref-is-null.wat b/tests/disas/gc/drc/ref-is-null.wat index f9f30267bdf6..aed940f08935 100644 --- a/tests/disas/gc/drc/ref-is-null.wat +++ b/tests/disas/gc/drc/ref-is-null.wat @@ -22,10 +22,10 @@ ;; @0023 jump block1 ;; ;; block1: -;; v4 = iconst.i32 0 -;; v5 = icmp.i32 eq v2, v4 ; v4 = 0 -;; v6 = uextend.i32 v5 -;; @0023 return v6 +;; v3 = iconst.i32 0 +;; v4 = icmp.i32 eq v2, v3 ; v3 = 0 +;; v5 = uextend.i32 v4 +;; @0023 return v5 ;; } ;; ;; function u0:1(i64 vmctx, i64, i32) -> i32 tail { @@ -40,6 +40,6 @@ ;; @0029 jump block1 ;; ;; block1: -;; v4 = iconst.i32 0 -;; @0029 return v4 ; v4 = 0 +;; v3 = iconst.i32 0 +;; @0029 return v3 ; v3 = 0 ;; } diff --git a/tests/disas/gc/drc/ref-test-any.wat b/tests/disas/gc/drc/ref-test-any.wat index a486099d7344..fd4a7c34d0fa 100644 --- a/tests/disas/gc/drc/ref-test-any.wat +++ b/tests/disas/gc/drc/ref-test-any.wat @@ -22,10 +22,10 @@ ;; @0025 jump block1 ;; ;; block1: -;; @0022 v8 = iconst.i32 1 -;; @0022 v4 = iconst.i32 0 -;; v14 = select v2, v8, v4 ; v8 = 1, v4 = 0 -;; @0025 return v14 +;; @0022 v7 = iconst.i32 1 +;; @0022 v3 = iconst.i32 0 +;; v13 = select v2, v7, v3 ; v7 = 1, v3 = 0 +;; @0025 return v13 ;; } ;; ;; function u0:1(i64 vmctx, i64, i32) -> i32 tail { @@ -40,6 +40,6 @@ ;; @002d jump block1 ;; ;; block1: -;; @002a v6 = iconst.i32 1 -;; @002d return v6 ; v6 = 1 +;; @002a v5 = iconst.i32 1 +;; @002d return v5 ; v5 = 1 ;; } diff --git a/tests/disas/gc/drc/ref-test-array.wat b/tests/disas/gc/drc/ref-test-array.wat index 576655a72704..6245804ebb87 100644 --- a/tests/disas/gc/drc/ref-test-array.wat +++ b/tests/disas/gc/drc/ref-test-array.wat @@ -19,31 +19,31 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i32): -;; @001b v4 = iconst.i32 0 -;; @001b v5 = icmp eq v2, v4 ; v4 = 0 -;; @001b brif v5, block4(v4), block2 ; v4 = 0 +;; @001b v3 = iconst.i32 0 +;; @001b v4 = icmp eq v2, v3 ; v3 = 0 +;; @001b brif v4, block4(v3), block2 ; v3 = 0 ;; ;; block2: -;; @001b v8 = iconst.i32 1 -;; @001b v9 = band.i32 v2, v8 ; v8 = 1 -;; v23 = iconst.i32 0 -;; @001b brif v9, block4(v23), block3 ; v23 = 0 +;; @001b v7 = iconst.i32 1 +;; @001b v8 = band.i32 v2, v7 ; v7 = 1 +;; v22 = iconst.i32 0 +;; @001b brif v8, block4(v22), block3 ; v22 = 0 ;; ;; block3: -;; @001b v12 = load.i64 notrap aligned readonly can_move region0 v0+8 -;; @001b v13 = load.i64 notrap aligned readonly can_move region2 v12+32 -;; @001b v11 = uextend.i64 v2 -;; @001b v14 = iadd v13, v11 -;; @001b v17 = load.i32 user2 readonly region4 v14 -;; @001b v18 = iconst.i32 -1476395008 -;; @001b v19 = band v17, v18 ; v18 = -1476395008 -;; @001b v20 = icmp eq v19, v18 ; v18 = -1476395008 -;; @001b v21 = uextend.i32 v20 -;; @001b jump block4(v21) +;; @001b v11 = load.i64 notrap aligned readonly can_move region0 v0+8 +;; @001b v12 = load.i64 notrap aligned readonly can_move region2 v11+32 +;; @001b v10 = uextend.i64 v2 +;; @001b v13 = iadd v12, v10 +;; @001b v16 = load.i32 user2 readonly region4 v13 +;; @001b v17 = iconst.i32 -1476395008 +;; @001b v18 = band v16, v17 ; v17 = -1476395008 +;; @001b v19 = icmp eq v18, v17 ; v17 = -1476395008 +;; @001b v20 = uextend.i32 v19 +;; @001b jump block4(v20) ;; -;; block4(v22: i32): -;; @001e jump block1(v22) +;; block4(v21: i32): +;; @001e jump block1 ;; -;; block1(v3: i32): -;; @001e return v3 +;; block1: +;; @001e return v21 ;; } diff --git a/tests/disas/gc/drc/ref-test-concrete-func-type.wat b/tests/disas/gc/drc/ref-test-concrete-func-type.wat index c3026319d601..ed9319223dfd 100644 --- a/tests/disas/gc/drc/ref-test-concrete-func-type.wat +++ b/tests/disas/gc/drc/ref-test-concrete-func-type.wat @@ -19,25 +19,25 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i64): -;; @0020 v4 = iconst.i64 0 -;; @0020 v5 = icmp eq v2, v4 ; v4 = 0 -;; @0020 v7 = iconst.i32 0 -;; @0020 brif v5, block4(v7), block2 ; v7 = 0 +;; @0020 v3 = iconst.i64 0 +;; @0020 v4 = icmp eq v2, v3 ; v3 = 0 +;; @0020 v6 = iconst.i32 0 +;; @0020 brif v4, block4(v6), block2 ; v6 = 0 ;; ;; block2: ;; @0020 jump block3 ;; ;; block3: -;; @0020 v10 = load.i32 user2 readonly region3 v2+16 -;; @0020 v8 = load.i64 notrap aligned readonly can_move region2 v0+40 -;; @0020 v9 = load.i32 notrap aligned readonly can_move v8 -;; @0020 v11 = icmp eq v10, v9 -;; @0020 v12 = uextend.i32 v11 -;; @0020 jump block4(v12) +;; @0020 v9 = load.i32 user2 readonly region3 v2+16 +;; @0020 v7 = load.i64 notrap aligned readonly can_move region2 v0+40 +;; @0020 v8 = load.i32 notrap aligned readonly can_move v7 +;; @0020 v10 = icmp eq v9, v8 +;; @0020 v11 = uextend.i32 v10 +;; @0020 jump block4(v11) ;; -;; block4(v13: i32): -;; @0023 jump block1(v13) +;; block4(v12: i32): +;; @0023 jump block1 ;; -;; block1(v3: i32): -;; @0023 return v3 +;; block1: +;; @0023 return v12 ;; } diff --git a/tests/disas/gc/drc/ref-test-concrete-type.wat b/tests/disas/gc/drc/ref-test-concrete-type.wat index 36a2ec952eac..bd5927226199 100644 --- a/tests/disas/gc/drc/ref-test-concrete-type.wat +++ b/tests/disas/gc/drc/ref-test-concrete-type.wat @@ -21,33 +21,33 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i32): -;; @001d v4 = iconst.i32 0 -;; @001d v5 = icmp eq v2, v4 ; v4 = 0 -;; @001d brif v5, block4(v4), block2 ; v4 = 0 +;; @001d v3 = iconst.i32 0 +;; @001d v4 = icmp eq v2, v3 ; v3 = 0 +;; @001d brif v4, block4(v3), block2 ; v3 = 0 ;; ;; block2: -;; @001d v8 = iconst.i32 1 -;; @001d v9 = band.i32 v2, v8 ; v8 = 1 -;; v23 = iconst.i32 0 -;; @001d brif v9, block4(v23), block3 ; v23 = 0 +;; @001d v7 = iconst.i32 1 +;; @001d v8 = band.i32 v2, v7 ; v7 = 1 +;; v22 = iconst.i32 0 +;; @001d brif v8, block4(v22), block3 ; v22 = 0 ;; ;; block3: -;; @001d v14 = load.i64 notrap aligned readonly can_move region0 v0+8 -;; @001d v15 = load.i64 notrap aligned readonly can_move region3 v14+32 -;; @001d v13 = uextend.i64 v2 -;; @001d v16 = iadd v15, v13 -;; @001d v17 = iconst.i64 4 -;; @001d v18 = iadd v16, v17 ; v17 = 4 -;; @001d v19 = load.i32 user2 readonly region5 v18 -;; @001d v11 = load.i64 notrap aligned readonly can_move region2 v0+40 -;; @001d v12 = load.i32 notrap aligned readonly can_move v11 -;; @001d v20 = icmp eq v19, v12 -;; @001d v21 = uextend.i32 v20 -;; @001d jump block4(v21) +;; @001d v13 = load.i64 notrap aligned readonly can_move region0 v0+8 +;; @001d v14 = load.i64 notrap aligned readonly can_move region3 v13+32 +;; @001d v12 = uextend.i64 v2 +;; @001d v15 = iadd v14, v12 +;; @001d v16 = iconst.i64 4 +;; @001d v17 = iadd v15, v16 ; v16 = 4 +;; @001d v18 = load.i32 user2 readonly region5 v17 +;; @001d v10 = load.i64 notrap aligned readonly can_move region2 v0+40 +;; @001d v11 = load.i32 notrap aligned readonly can_move v10 +;; @001d v19 = icmp eq v18, v11 +;; @001d v20 = uextend.i32 v19 +;; @001d jump block4(v20) ;; -;; block4(v22: i32): -;; @0020 jump block1(v22) +;; block4(v21: i32): +;; @0020 jump block1 ;; -;; block1(v3: i32): -;; @0020 return v3 +;; block1: +;; @0020 return v21 ;; } diff --git a/tests/disas/gc/drc/ref-test-eq.wat b/tests/disas/gc/drc/ref-test-eq.wat index 357da1ffe412..a1506a3725e5 100644 --- a/tests/disas/gc/drc/ref-test-eq.wat +++ b/tests/disas/gc/drc/ref-test-eq.wat @@ -19,30 +19,30 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i32): -;; @001b v4 = iconst.i32 0 -;; @001b v5 = icmp eq v2, v4 ; v4 = 0 -;; @001b brif v5, block4(v4), block2 ; v4 = 0 +;; @001b v3 = iconst.i32 0 +;; @001b v4 = icmp eq v2, v3 ; v3 = 0 +;; @001b brif v4, block4(v3), block2 ; v3 = 0 ;; ;; block2: -;; @001b v8 = iconst.i32 1 -;; @001b v9 = band.i32 v2, v8 ; v8 = 1 -;; @001b brif v9, block4(v8), block3 ; v8 = 1 +;; @001b v7 = iconst.i32 1 +;; @001b v8 = band.i32 v2, v7 ; v7 = 1 +;; @001b brif v8, block4(v7), block3 ; v7 = 1 ;; ;; block3: -;; @001b v12 = load.i64 notrap aligned readonly can_move region0 v0+8 -;; @001b v13 = load.i64 notrap aligned readonly can_move region2 v12+32 -;; @001b v11 = uextend.i64 v2 -;; @001b v14 = iadd v13, v11 -;; @001b v17 = load.i32 user2 readonly region4 v14 -;; @001b v18 = iconst.i32 -1610612736 -;; @001b v19 = band v17, v18 ; v18 = -1610612736 -;; @001b v20 = icmp eq v19, v18 ; v18 = -1610612736 -;; @001b v21 = uextend.i32 v20 -;; @001b jump block4(v21) +;; @001b v11 = load.i64 notrap aligned readonly can_move region0 v0+8 +;; @001b v12 = load.i64 notrap aligned readonly can_move region2 v11+32 +;; @001b v10 = uextend.i64 v2 +;; @001b v13 = iadd v12, v10 +;; @001b v16 = load.i32 user2 readonly region4 v13 +;; @001b v17 = iconst.i32 -1610612736 +;; @001b v18 = band v16, v17 ; v17 = -1610612736 +;; @001b v19 = icmp eq v18, v17 ; v17 = -1610612736 +;; @001b v20 = uextend.i32 v19 +;; @001b jump block4(v20) ;; -;; block4(v22: i32): -;; @001e jump block1(v22) +;; block4(v21: i32): +;; @001e jump block1 ;; -;; block1(v3: i32): -;; @001e return v3 +;; block1: +;; @001e return v21 ;; } diff --git a/tests/disas/gc/drc/ref-test-i31.wat b/tests/disas/gc/drc/ref-test-i31.wat index 6c3ecf9eddfd..95a985573056 100644 --- a/tests/disas/gc/drc/ref-test-i31.wat +++ b/tests/disas/gc/drc/ref-test-i31.wat @@ -19,7 +19,7 @@ ;; @001e jump block1 ;; ;; block1: -;; @001b v4 = iconst.i32 1 -;; @001b v5 = band.i32 v2, v4 ; v4 = 1 -;; @001e return v5 +;; @001b v3 = iconst.i32 1 +;; @001b v4 = band.i32 v2, v3 ; v3 = 1 +;; @001e return v4 ;; } diff --git a/tests/disas/gc/drc/ref-test-none.wat b/tests/disas/gc/drc/ref-test-none.wat index ed3d1d49b644..87aff765d537 100644 --- a/tests/disas/gc/drc/ref-test-none.wat +++ b/tests/disas/gc/drc/ref-test-none.wat @@ -22,8 +22,8 @@ ;; @001f jump block1 ;; ;; block1: -;; @001c v4 = iconst.i32 0 -;; @001f return v4 ; v4 = 0 +;; @001c v3 = iconst.i32 0 +;; @001f return v3 ; v3 = 0 ;; } ;; ;; function u0:1(i64 vmctx, i64, i32) -> i32 tail { @@ -38,8 +38,8 @@ ;; @0027 jump block1 ;; ;; block1: -;; @0024 v4 = iconst.i32 0 -;; @0024 v5 = icmp.i32 eq v2, v4 ; v4 = 0 -;; @0024 v6 = uextend.i32 v5 -;; @0027 return v6 +;; @0024 v3 = iconst.i32 0 +;; @0024 v4 = icmp.i32 eq v2, v3 ; v3 = 0 +;; @0024 v5 = uextend.i32 v4 +;; @0027 return v5 ;; } diff --git a/tests/disas/gc/drc/ref-test-struct.wat b/tests/disas/gc/drc/ref-test-struct.wat index 8189087906b8..fef6a2a8d691 100644 --- a/tests/disas/gc/drc/ref-test-struct.wat +++ b/tests/disas/gc/drc/ref-test-struct.wat @@ -19,31 +19,31 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i32): -;; @001b v4 = iconst.i32 0 -;; @001b v5 = icmp eq v2, v4 ; v4 = 0 -;; @001b brif v5, block4(v4), block2 ; v4 = 0 +;; @001b v3 = iconst.i32 0 +;; @001b v4 = icmp eq v2, v3 ; v3 = 0 +;; @001b brif v4, block4(v3), block2 ; v3 = 0 ;; ;; block2: -;; @001b v8 = iconst.i32 1 -;; @001b v9 = band.i32 v2, v8 ; v8 = 1 -;; v23 = iconst.i32 0 -;; @001b brif v9, block4(v23), block3 ; v23 = 0 +;; @001b v7 = iconst.i32 1 +;; @001b v8 = band.i32 v2, v7 ; v7 = 1 +;; v22 = iconst.i32 0 +;; @001b brif v8, block4(v22), block3 ; v22 = 0 ;; ;; block3: -;; @001b v12 = load.i64 notrap aligned readonly can_move region0 v0+8 -;; @001b v13 = load.i64 notrap aligned readonly can_move region2 v12+32 -;; @001b v11 = uextend.i64 v2 -;; @001b v14 = iadd v13, v11 -;; @001b v17 = load.i32 user2 readonly region4 v14 -;; @001b v18 = iconst.i32 -1342177280 -;; @001b v19 = band v17, v18 ; v18 = -1342177280 -;; @001b v20 = icmp eq v19, v18 ; v18 = -1342177280 -;; @001b v21 = uextend.i32 v20 -;; @001b jump block4(v21) +;; @001b v11 = load.i64 notrap aligned readonly can_move region0 v0+8 +;; @001b v12 = load.i64 notrap aligned readonly can_move region2 v11+32 +;; @001b v10 = uextend.i64 v2 +;; @001b v13 = iadd v12, v10 +;; @001b v16 = load.i32 user2 readonly region4 v13 +;; @001b v17 = iconst.i32 -1342177280 +;; @001b v18 = band v16, v17 ; v17 = -1342177280 +;; @001b v19 = icmp eq v18, v17 ; v17 = -1342177280 +;; @001b v20 = uextend.i32 v19 +;; @001b jump block4(v20) ;; -;; block4(v22: i32): -;; @001e jump block1(v22) +;; block4(v21: i32): +;; @001e jump block1 ;; -;; block1(v3: i32): -;; @001e return v3 +;; block1: +;; @001e return v21 ;; } diff --git a/tests/disas/gc/drc/struct-get.wat b/tests/disas/gc/drc/struct-get.wat index 1abcabf47bf6..2ff840aedd2b 100644 --- a/tests/disas/gc/drc/struct-get.wat +++ b/tests/disas/gc/drc/struct-get.wat @@ -36,17 +36,17 @@ ;; ;; block0(v0: i64, v1: i64, v2: i32): ;; @0033 trapz v2, user16 -;; @0033 v5 = load.i64 notrap aligned readonly can_move region0 v0+8 -;; @0033 v6 = load.i64 notrap aligned readonly can_move region2 v5+32 -;; @0033 v4 = uextend.i64 v2 -;; @0033 v7 = iadd v6, v4 -;; @0033 v8 = iconst.i64 24 -;; @0033 v9 = iadd v7, v8 ; v8 = 24 -;; @0033 v10 = load.f32 user2 little region4 v9 +;; @0033 v4 = load.i64 notrap aligned readonly can_move region0 v0+8 +;; @0033 v5 = load.i64 notrap aligned readonly can_move region2 v4+32 +;; @0033 v3 = uextend.i64 v2 +;; @0033 v6 = iadd v5, v3 +;; @0033 v7 = iconst.i64 24 +;; @0033 v8 = iadd v6, v7 ; v7 = 24 +;; @0033 v9 = load.f32 user2 little region4 v8 ;; @0037 jump block1 ;; ;; block1: -;; @0037 return v10 +;; @0037 return v9 ;; } ;; ;; function u0:1(i64 vmctx, i64, i32) -> i32 tail { @@ -62,18 +62,18 @@ ;; ;; block0(v0: i64, v1: i64, v2: i32): ;; @003c trapz v2, user16 -;; @003c v5 = load.i64 notrap aligned readonly can_move region0 v0+8 -;; @003c v6 = load.i64 notrap aligned readonly can_move region2 v5+32 -;; @003c v4 = uextend.i64 v2 -;; @003c v7 = iadd v6, v4 -;; @003c v8 = iconst.i64 28 -;; @003c v9 = iadd v7, v8 ; v8 = 28 -;; @003c v10 = load.i8 user2 little region4 v9 +;; @003c v4 = load.i64 notrap aligned readonly can_move region0 v0+8 +;; @003c v5 = load.i64 notrap aligned readonly can_move region2 v4+32 +;; @003c v3 = uextend.i64 v2 +;; @003c v6 = iadd v5, v3 +;; @003c v7 = iconst.i64 28 +;; @003c v8 = iadd v6, v7 ; v7 = 28 +;; @003c v9 = load.i8 user2 little region4 v8 ;; @0040 jump block1 ;; ;; block1: -;; @003c v11 = sextend.i32 v10 -;; @0040 return v11 +;; @003c v10 = sextend.i32 v9 +;; @0040 return v10 ;; } ;; ;; function u0:2(i64 vmctx, i64, i32) -> i32 tail { @@ -89,18 +89,18 @@ ;; ;; block0(v0: i64, v1: i64, v2: i32): ;; @0045 trapz v2, user16 -;; @0045 v5 = load.i64 notrap aligned readonly can_move region0 v0+8 -;; @0045 v6 = load.i64 notrap aligned readonly can_move region2 v5+32 -;; @0045 v4 = uextend.i64 v2 -;; @0045 v7 = iadd v6, v4 -;; @0045 v8 = iconst.i64 28 -;; @0045 v9 = iadd v7, v8 ; v8 = 28 -;; @0045 v10 = load.i8 user2 little region4 v9 +;; @0045 v4 = load.i64 notrap aligned readonly can_move region0 v0+8 +;; @0045 v5 = load.i64 notrap aligned readonly can_move region2 v4+32 +;; @0045 v3 = uextend.i64 v2 +;; @0045 v6 = iadd v5, v3 +;; @0045 v7 = iconst.i64 28 +;; @0045 v8 = iadd v6, v7 ; v7 = 28 +;; @0045 v9 = load.i8 user2 little region4 v8 ;; @0049 jump block1 ;; ;; block1: -;; @0045 v11 = uextend.i32 v10 -;; @0049 return v11 +;; @0045 v10 = uextend.i32 v9 +;; @0049 return v10 ;; } ;; ;; function u0:3(i64 vmctx, i64, i32) -> i32 tail { @@ -120,69 +120,69 @@ ;; ;; block0(v0: i64, v1: i64, v2: i32): ;; @004e trapz v2, user16 -;; @004e v5 = load.i64 notrap aligned readonly can_move region0 v0+8 -;; @004e v6 = load.i64 notrap aligned readonly can_move region2 v5+32 -;; @004e v4 = uextend.i64 v2 -;; @004e v7 = iadd v6, v4 -;; @004e v8 = iconst.i64 32 -;; @004e v9 = iadd v7, v8 ; v8 = 32 -;; @004e v10 = load.i32 user2 little region4 v9 -;; v85 = stack_addr.i64 ss0 -;; store notrap v10, v85 -;; @004e v11 = iconst.i32 1 -;; @004e v12 = band v10, v11 ; v11 = 1 -;; @004e v13 = iconst.i32 0 -;; @004e v14 = icmp eq v10, v13 ; v13 = 0 -;; @004e v15 = uextend.i32 v14 -;; @004e v16 = bor v12, v15 -;; @004e brif v16, block4, block2 +;; @004e v4 = load.i64 notrap aligned readonly can_move region0 v0+8 +;; @004e v5 = load.i64 notrap aligned readonly can_move region2 v4+32 +;; @004e v3 = uextend.i64 v2 +;; @004e v6 = iadd v5, v3 +;; @004e v7 = iconst.i64 32 +;; @004e v8 = iadd v6, v7 ; v7 = 32 +;; @004e v9 = load.i32 user2 little region4 v8 +;; v84 = stack_addr.i64 ss0 +;; store notrap v9, v84 +;; @004e v10 = iconst.i32 1 +;; @004e v11 = band v9, v10 ; v10 = 1 +;; @004e v12 = iconst.i32 0 +;; @004e v13 = icmp eq v9, v12 ; v12 = 0 +;; @004e v14 = uextend.i32 v13 +;; @004e v15 = bor v11, v14 +;; @004e brif v15, block4, block2 ;; ;; block2: -;; @004e v17 = uextend.i64 v10 -;; @004e v20 = iadd.i64 v6, v17 -;; @004e v21 = load.i32 user2 region4 v20 -;; @004e v22 = iconst.i32 2 -;; @004e v23 = band v21, v22 ; v22 = 2 -;; @004e brif v23, block4, block3 +;; @004e v16 = uextend.i64 v9 +;; @004e v19 = iadd.i64 v5, v16 +;; @004e v20 = load.i32 user2 region4 v19 +;; @004e v21 = iconst.i32 2 +;; @004e v22 = band v20, v21 ; v21 = 2 +;; @004e brif v22, block4, block3 ;; ;; block3: -;; @004e v24 = load.i64 notrap aligned readonly can_move region5 v0+32 -;; @004e v25 = load.i32 user2 region4 v24 -;; @004e v30 = iconst.i64 16 -;; @004e v31 = iadd.i64 v20, v30 ; v30 = 16 -;; @004e store user2 region4 v25, v31 -;; v86 = iconst.i32 2 -;; v87 = bor.i32 v21, v86 ; v86 = 2 -;; @004e store user2 region4 v87, v20 -;; @004e v42 = iconst.i64 8 -;; @004e v43 = iadd.i64 v20, v42 ; v42 = 8 -;; @004e v44 = load.i64 user2 region4 v43 -;; @004e v45 = iconst.i64 1 -;; @004e v46 = iadd v44, v45 ; v45 = 1 -;; @004e store user2 region4 v46, v43 -;; @004e store.i32 user2 region4 v10, v24 -;; @004e v54 = load.i32 notrap aligned v24+4 -;; v88 = iconst.i32 1 -;; v89 = iadd v54, v88 ; v88 = 1 -;; @004e store notrap aligned v89, v24+4 -;; @004e v61 = load.i32 notrap aligned v24+8 -;; @004e v62 = iadd v61, v61 -;; @004e v63 = iconst.i32 1024 -;; @004e v64 = umax v62, v63 ; v63 = 1024 -;; @004e v65 = icmp uge v89, v64 -;; @004e brif v65, block5, block6 +;; @004e v23 = load.i64 notrap aligned readonly can_move region5 v0+32 +;; @004e v24 = load.i32 user2 region4 v23 +;; @004e v29 = iconst.i64 16 +;; @004e v30 = iadd.i64 v19, v29 ; v29 = 16 +;; @004e store user2 region4 v24, v30 +;; v85 = iconst.i32 2 +;; v86 = bor.i32 v20, v85 ; v85 = 2 +;; @004e store user2 region4 v86, v19 +;; @004e v41 = iconst.i64 8 +;; @004e v42 = iadd.i64 v19, v41 ; v41 = 8 +;; @004e v43 = load.i64 user2 region4 v42 +;; @004e v44 = iconst.i64 1 +;; @004e v45 = iadd v43, v44 ; v44 = 1 +;; @004e store user2 region4 v45, v42 +;; @004e store.i32 user2 region4 v9, v23 +;; @004e v53 = load.i32 notrap aligned v23+4 +;; v87 = iconst.i32 1 +;; v88 = iadd v53, v87 ; v87 = 1 +;; @004e store notrap aligned v88, v23+4 +;; @004e v60 = load.i32 notrap aligned v23+8 +;; @004e v61 = iadd v60, v60 +;; @004e v62 = iconst.i32 1024 +;; @004e v63 = umax v61, v62 ; v62 = 1024 +;; @004e v64 = icmp uge v88, v63 +;; @004e brif v64, block5, block6 ;; ;; block5 cold: -;; @004e v66 = call fn0(v0), stack_map=[i32 @ ss0+0] +;; @004e v65 = call fn0(v0), stack_map=[i32 @ ss0+0] ;; @004e jump block6 ;; ;; block6: ;; @004e jump block4 ;; ;; block4: -;; v68 = load.i32 notrap v85 ;; @0052 jump block1 ;; ;; block1: -;; @0052 return v68 +;; v67 = load.i32 notrap v84 +;; @0052 return v67 ;; } diff --git a/tests/disas/gc/drc/struct-new-default.wat b/tests/disas/gc/drc/struct-new-default.wat index 500ad58e943c..9409754ce35b 100644 --- a/tests/disas/gc/drc/struct-new-default.wat +++ b/tests/disas/gc/drc/struct-new-default.wat @@ -26,33 +26,33 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64): -;; @0021 v7 = iconst.i32 -1342177280 -;; @0021 v8 = load.i64 notrap aligned readonly can_move region2 v0+40 -;; @0021 v9 = load.i32 notrap aligned readonly can_move v8 -;; @0021 v6 = iconst.i32 40 -;; @0021 v10 = iconst.i32 8 -;; @0021 v11 = call fn0(v0, v7, v9, v6, v10) ; v7 = -1342177280, v6 = 40, v10 = 8 -;; @0021 v3 = f32const 0.0 -;; @0021 v12 = load.i64 notrap aligned readonly can_move region0 v0+8 -;; @0021 v13 = load.i64 notrap aligned readonly can_move region3 v12+32 -;; @0021 v14 = uextend.i64 v11 -;; @0021 v15 = iadd v13, v14 -;; @0021 v16 = iconst.i64 24 -;; @0021 v17 = iadd v15, v16 ; v16 = 24 -;; @0021 store user2 little region4 v3, v17 ; v3 = 0.0 -;; @0021 v4 = iconst.i32 0 -;; @0021 v18 = iconst.i64 28 -;; @0021 v19 = iadd v15, v18 ; v18 = 28 -;; @0021 istore8 user2 little region4 v4, v19 ; v4 = 0 +;; @0021 v6 = iconst.i32 -1342177280 +;; @0021 v7 = load.i64 notrap aligned readonly can_move region2 v0+40 +;; @0021 v8 = load.i32 notrap aligned readonly can_move v7 +;; @0021 v5 = iconst.i32 40 +;; @0021 v9 = iconst.i32 8 +;; @0021 v10 = call fn0(v0, v6, v8, v5, v9) ; v6 = -1342177280, v5 = 40, v9 = 8 +;; @0021 v2 = f32const 0.0 +;; @0021 v11 = load.i64 notrap aligned readonly can_move region0 v0+8 +;; @0021 v12 = load.i64 notrap aligned readonly can_move region3 v11+32 +;; @0021 v13 = uextend.i64 v10 +;; @0021 v14 = iadd v12, v13 +;; @0021 v15 = iconst.i64 24 +;; @0021 v16 = iadd v14, v15 ; v15 = 24 +;; @0021 store user2 little region4 v2, v16 ; v2 = 0.0 +;; @0021 v3 = iconst.i32 0 +;; @0021 v17 = iconst.i64 28 +;; @0021 v18 = iadd v14, v17 ; v17 = 28 +;; @0021 istore8 user2 little region4 v3, v18 ; v3 = 0 ;; @0021 jump block3 ;; ;; block3: -;; v60 = iconst.i32 0 -;; @0021 v20 = iconst.i64 32 -;; @0021 v21 = iadd.i64 v15, v20 ; v20 = 32 -;; @0021 store user2 little region4 v60, v21 ; v60 = 0 +;; v59 = iconst.i32 0 +;; @0021 v19 = iconst.i64 32 +;; @0021 v20 = iadd.i64 v14, v19 ; v19 = 32 +;; @0021 store user2 little region4 v59, v20 ; v59 = 0 ;; @0024 jump block1 ;; ;; block1: -;; @0024 return v11 +;; @0024 return v10 ;; } diff --git a/tests/disas/gc/drc/struct-new.wat b/tests/disas/gc/drc/struct-new.wat index 492957437990..fb05a540afe9 100644 --- a/tests/disas/gc/drc/struct-new.wat +++ b/tests/disas/gc/drc/struct-new.wat @@ -27,50 +27,50 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: f32, v3: i32, v4: i32): -;; v53 = stack_addr.i64 ss0 -;; store notrap v4, v53 -;; @002a v7 = iconst.i32 -1342177280 -;; @002a v8 = load.i64 notrap aligned readonly can_move region2 v0+40 -;; @002a v9 = load.i32 notrap aligned readonly can_move v8 -;; @002a v6 = iconst.i32 40 -;; @002a v10 = iconst.i32 8 -;; @002a v11 = call fn0(v0, v7, v9, v6, v10), stack_map=[i32 @ ss0+0] ; v7 = -1342177280, v6 = 40, v10 = 8 -;; @002a v12 = load.i64 notrap aligned readonly can_move region0 v0+8 -;; @002a v13 = load.i64 notrap aligned readonly can_move region3 v12+32 -;; @002a v14 = uextend.i64 v11 -;; @002a v15 = iadd v13, v14 -;; @002a v16 = iconst.i64 24 -;; @002a v17 = iadd v15, v16 ; v16 = 24 -;; @002a store user2 little region4 v2, v17 -;; @002a v18 = iconst.i64 28 -;; @002a v19 = iadd v15, v18 ; v18 = 28 -;; @002a istore8 user2 little region4 v3, v19 -;; v52 = load.i32 notrap v53 -;; @002a v22 = iconst.i32 1 -;; @002a v23 = band v52, v22 ; v22 = 1 -;; @002a v24 = iconst.i32 0 -;; @002a v25 = icmp eq v52, v24 ; v24 = 0 -;; @002a v26 = uextend.i32 v25 -;; @002a v27 = bor v23, v26 -;; @002a brif v27, block3, block2 +;; v52 = stack_addr.i64 ss0 +;; store notrap v4, v52 +;; @002a v6 = iconst.i32 -1342177280 +;; @002a v7 = load.i64 notrap aligned readonly can_move region2 v0+40 +;; @002a v8 = load.i32 notrap aligned readonly can_move v7 +;; @002a v5 = iconst.i32 40 +;; @002a v9 = iconst.i32 8 +;; @002a v10 = call fn0(v0, v6, v8, v5, v9), stack_map=[i32 @ ss0+0] ; v6 = -1342177280, v5 = 40, v9 = 8 +;; @002a v11 = load.i64 notrap aligned readonly can_move region0 v0+8 +;; @002a v12 = load.i64 notrap aligned readonly can_move region3 v11+32 +;; @002a v13 = uextend.i64 v10 +;; @002a v14 = iadd v12, v13 +;; @002a v15 = iconst.i64 24 +;; @002a v16 = iadd v14, v15 ; v15 = 24 +;; @002a store user2 little region4 v2, v16 +;; @002a v17 = iconst.i64 28 +;; @002a v18 = iadd v14, v17 ; v17 = 28 +;; @002a istore8 user2 little region4 v3, v18 +;; v51 = load.i32 notrap v52 +;; @002a v21 = iconst.i32 1 +;; @002a v22 = band v51, v21 ; v21 = 1 +;; @002a v23 = iconst.i32 0 +;; @002a v24 = icmp eq v51, v23 ; v23 = 0 +;; @002a v25 = uextend.i32 v24 +;; @002a v26 = bor v22, v25 +;; @002a brif v26, block3, block2 ;; ;; block2: -;; @002a v28 = uextend.i64 v52 -;; @002a v31 = iadd.i64 v13, v28 -;; @002a v32 = iconst.i64 8 -;; @002a v33 = iadd v31, v32 ; v32 = 8 -;; @002a v34 = load.i64 user2 region4 v33 -;; @002a v35 = iconst.i64 1 -;; @002a v36 = iadd v34, v35 ; v35 = 1 -;; @002a store user2 region4 v36, v33 +;; @002a v27 = uextend.i64 v51 +;; @002a v30 = iadd.i64 v12, v27 +;; @002a v31 = iconst.i64 8 +;; @002a v32 = iadd v30, v31 ; v31 = 8 +;; @002a v33 = load.i64 user2 region4 v32 +;; @002a v34 = iconst.i64 1 +;; @002a v35 = iadd v33, v34 ; v34 = 1 +;; @002a store user2 region4 v35, v32 ;; @002a jump block3 ;; ;; block3: -;; @002a v20 = iconst.i64 32 -;; @002a v21 = iadd.i64 v15, v20 ; v20 = 32 -;; @002a store.i32 user2 little region4 v52, v21 +;; @002a v19 = iconst.i64 32 +;; @002a v20 = iadd.i64 v14, v19 ; v19 = 32 +;; @002a store.i32 user2 little region4 v51, v20 ;; @002d jump block1 ;; ;; block1: -;; @002d return v11 +;; @002d return v10 ;; } diff --git a/tests/disas/gc/null/array-get-s.wat b/tests/disas/gc/null/array-get-s.wat index 1c3f1f718de3..f7a4d1769bce 100644 --- a/tests/disas/gc/null/array-get-s.wat +++ b/tests/disas/gc/null/array-get-s.wat @@ -22,32 +22,32 @@ ;; ;; block0(v0: i64, v1: i64, v2: i32, v3: i32): ;; @0022 trapz v2, user16 -;; @0022 v6 = load.i64 notrap aligned readonly can_move region0 v0+8 -;; @0022 v7 = load.i64 notrap aligned readonly can_move region2 v6+32 -;; @0022 v5 = uextend.i64 v2 -;; @0022 v8 = iadd v7, v5 -;; @0022 v9 = iconst.i64 8 -;; @0022 v10 = iadd v8, v9 ; v9 = 8 -;; @0022 v11 = load.i32 user2 readonly region4 v10 -;; @0022 v12 = icmp ult v3, v11 -;; @0022 trapz v12, user17 -;; @0022 v14 = uextend.i64 v11 -;; @0022 v16 = iconst.i64 32 -;; @0022 v17 = ushr v14, v16 ; v16 = 32 -;; @0022 trapnz v17, user2 -;; @0022 v19 = iconst.i32 12 -;; @0022 v20 = uadd_overflow_trap v11, v19, user2 ; v19 = 12 -;; @0022 v24 = uadd_overflow_trap v2, v20, user2 -;; @0022 v25 = uextend.i64 v24 -;; @0022 v28 = iadd v7, v25 -;; @0022 v23 = iadd v3, v19 ; v19 = 12 -;; @0022 v29 = isub v20, v23 -;; @0022 v30 = uextend.i64 v29 -;; @0022 v31 = isub v28, v30 -;; @0022 v32 = load.i8 user2 little region4 v31 +;; @0022 v5 = load.i64 notrap aligned readonly can_move region0 v0+8 +;; @0022 v6 = load.i64 notrap aligned readonly can_move region2 v5+32 +;; @0022 v4 = uextend.i64 v2 +;; @0022 v7 = iadd v6, v4 +;; @0022 v8 = iconst.i64 8 +;; @0022 v9 = iadd v7, v8 ; v8 = 8 +;; @0022 v10 = load.i32 user2 readonly region4 v9 +;; @0022 v11 = icmp ult v3, v10 +;; @0022 trapz v11, user17 +;; @0022 v13 = uextend.i64 v10 +;; @0022 v15 = iconst.i64 32 +;; @0022 v16 = ushr v13, v15 ; v15 = 32 +;; @0022 trapnz v16, user2 +;; @0022 v18 = iconst.i32 12 +;; @0022 v19 = uadd_overflow_trap v10, v18, user2 ; v18 = 12 +;; @0022 v23 = uadd_overflow_trap v2, v19, user2 +;; @0022 v24 = uextend.i64 v23 +;; @0022 v27 = iadd v6, v24 +;; @0022 v22 = iadd v3, v18 ; v18 = 12 +;; @0022 v28 = isub v19, v22 +;; @0022 v29 = uextend.i64 v28 +;; @0022 v30 = isub v27, v29 +;; @0022 v31 = load.i8 user2 little region4 v30 ;; @0025 jump block1 ;; ;; block1: -;; @0022 v33 = sextend.i32 v32 -;; @0025 return v33 +;; @0022 v32 = sextend.i32 v31 +;; @0025 return v32 ;; } diff --git a/tests/disas/gc/null/array-get-u.wat b/tests/disas/gc/null/array-get-u.wat index 7c3d568e5b75..4bcdd6869ce7 100644 --- a/tests/disas/gc/null/array-get-u.wat +++ b/tests/disas/gc/null/array-get-u.wat @@ -22,32 +22,32 @@ ;; ;; block0(v0: i64, v1: i64, v2: i32, v3: i32): ;; @0022 trapz v2, user16 -;; @0022 v6 = load.i64 notrap aligned readonly can_move region0 v0+8 -;; @0022 v7 = load.i64 notrap aligned readonly can_move region2 v6+32 -;; @0022 v5 = uextend.i64 v2 -;; @0022 v8 = iadd v7, v5 -;; @0022 v9 = iconst.i64 8 -;; @0022 v10 = iadd v8, v9 ; v9 = 8 -;; @0022 v11 = load.i32 user2 readonly region4 v10 -;; @0022 v12 = icmp ult v3, v11 -;; @0022 trapz v12, user17 -;; @0022 v14 = uextend.i64 v11 -;; @0022 v16 = iconst.i64 32 -;; @0022 v17 = ushr v14, v16 ; v16 = 32 -;; @0022 trapnz v17, user2 -;; @0022 v19 = iconst.i32 12 -;; @0022 v20 = uadd_overflow_trap v11, v19, user2 ; v19 = 12 -;; @0022 v24 = uadd_overflow_trap v2, v20, user2 -;; @0022 v25 = uextend.i64 v24 -;; @0022 v28 = iadd v7, v25 -;; @0022 v23 = iadd v3, v19 ; v19 = 12 -;; @0022 v29 = isub v20, v23 -;; @0022 v30 = uextend.i64 v29 -;; @0022 v31 = isub v28, v30 -;; @0022 v32 = load.i8 user2 little region4 v31 +;; @0022 v5 = load.i64 notrap aligned readonly can_move region0 v0+8 +;; @0022 v6 = load.i64 notrap aligned readonly can_move region2 v5+32 +;; @0022 v4 = uextend.i64 v2 +;; @0022 v7 = iadd v6, v4 +;; @0022 v8 = iconst.i64 8 +;; @0022 v9 = iadd v7, v8 ; v8 = 8 +;; @0022 v10 = load.i32 user2 readonly region4 v9 +;; @0022 v11 = icmp ult v3, v10 +;; @0022 trapz v11, user17 +;; @0022 v13 = uextend.i64 v10 +;; @0022 v15 = iconst.i64 32 +;; @0022 v16 = ushr v13, v15 ; v15 = 32 +;; @0022 trapnz v16, user2 +;; @0022 v18 = iconst.i32 12 +;; @0022 v19 = uadd_overflow_trap v10, v18, user2 ; v18 = 12 +;; @0022 v23 = uadd_overflow_trap v2, v19, user2 +;; @0022 v24 = uextend.i64 v23 +;; @0022 v27 = iadd v6, v24 +;; @0022 v22 = iadd v3, v18 ; v18 = 12 +;; @0022 v28 = isub v19, v22 +;; @0022 v29 = uextend.i64 v28 +;; @0022 v30 = isub v27, v29 +;; @0022 v31 = load.i8 user2 little region4 v30 ;; @0025 jump block1 ;; ;; block1: -;; @0022 v33 = uextend.i32 v32 -;; @0025 return v33 +;; @0022 v32 = uextend.i32 v31 +;; @0025 return v32 ;; } diff --git a/tests/disas/gc/null/array-get.wat b/tests/disas/gc/null/array-get.wat index cca18c8b38ee..06140890e7c0 100644 --- a/tests/disas/gc/null/array-get.wat +++ b/tests/disas/gc/null/array-get.wat @@ -22,36 +22,36 @@ ;; ;; block0(v0: i64, v1: i64, v2: i32, v3: i32): ;; @0022 trapz v2, user16 -;; @0022 v6 = load.i64 notrap aligned readonly can_move region0 v0+8 -;; @0022 v7 = load.i64 notrap aligned readonly can_move region2 v6+32 -;; @0022 v5 = uextend.i64 v2 -;; @0022 v8 = iadd v7, v5 -;; @0022 v9 = iconst.i64 8 -;; @0022 v10 = iadd v8, v9 ; v9 = 8 -;; @0022 v11 = load.i32 user2 readonly region4 v10 -;; @0022 v12 = icmp ult v3, v11 -;; @0022 trapz v12, user17 -;; @0022 v14 = uextend.i64 v11 -;; v33 = iconst.i64 3 -;; v34 = ishl v14, v33 ; v33 = 3 -;; @0022 v16 = iconst.i64 32 -;; @0022 v17 = ushr v34, v16 ; v16 = 32 -;; @0022 trapnz v17, user2 -;; v43 = iconst.i32 3 -;; v44 = ishl v11, v43 ; v43 = 3 -;; @0022 v19 = iconst.i32 16 -;; @0022 v20 = uadd_overflow_trap v44, v19, user2 ; v19 = 16 -;; @0022 v24 = uadd_overflow_trap v2, v20, user2 -;; @0022 v25 = uextend.i64 v24 -;; @0022 v28 = iadd v7, v25 -;; v50 = ishl v3, v43 ; v43 = 3 -;; @0022 v23 = iadd v50, v19 ; v19 = 16 -;; @0022 v29 = isub v20, v23 -;; @0022 v30 = uextend.i64 v29 -;; @0022 v31 = isub v28, v30 -;; @0022 v32 = load.i64 user2 little region4 v31 +;; @0022 v5 = load.i64 notrap aligned readonly can_move region0 v0+8 +;; @0022 v6 = load.i64 notrap aligned readonly can_move region2 v5+32 +;; @0022 v4 = uextend.i64 v2 +;; @0022 v7 = iadd v6, v4 +;; @0022 v8 = iconst.i64 8 +;; @0022 v9 = iadd v7, v8 ; v8 = 8 +;; @0022 v10 = load.i32 user2 readonly region4 v9 +;; @0022 v11 = icmp ult v3, v10 +;; @0022 trapz v11, user17 +;; @0022 v13 = uextend.i64 v10 +;; v32 = iconst.i64 3 +;; v33 = ishl v13, v32 ; v32 = 3 +;; @0022 v15 = iconst.i64 32 +;; @0022 v16 = ushr v33, v15 ; v15 = 32 +;; @0022 trapnz v16, user2 +;; v42 = iconst.i32 3 +;; v43 = ishl v10, v42 ; v42 = 3 +;; @0022 v18 = iconst.i32 16 +;; @0022 v19 = uadd_overflow_trap v43, v18, user2 ; v18 = 16 +;; @0022 v23 = uadd_overflow_trap v2, v19, user2 +;; @0022 v24 = uextend.i64 v23 +;; @0022 v27 = iadd v6, v24 +;; v49 = ishl v3, v42 ; v42 = 3 +;; @0022 v22 = iadd v49, v18 ; v18 = 16 +;; @0022 v28 = isub v19, v22 +;; @0022 v29 = uextend.i64 v28 +;; @0022 v30 = isub v27, v29 +;; @0022 v31 = load.i64 user2 little region4 v30 ;; @0025 jump block1 ;; ;; block1: -;; @0025 return v32 +;; @0025 return v31 ;; } diff --git a/tests/disas/gc/null/array-len.wat b/tests/disas/gc/null/array-len.wat index dd5b0dadc9cf..56c30fb0ef58 100644 --- a/tests/disas/gc/null/array-len.wat +++ b/tests/disas/gc/null/array-len.wat @@ -22,15 +22,15 @@ ;; ;; block0(v0: i64, v1: i64, v2: i32): ;; @001f trapz v2, user16 -;; @001f v5 = load.i64 notrap aligned readonly can_move region0 v0+8 -;; @001f v6 = load.i64 notrap aligned readonly can_move region2 v5+32 -;; @001f v4 = uextend.i64 v2 -;; @001f v7 = iadd v6, v4 -;; @001f v8 = iconst.i64 8 -;; @001f v9 = iadd v7, v8 ; v8 = 8 -;; @001f v10 = load.i32 user2 readonly region4 v9 +;; @001f v4 = load.i64 notrap aligned readonly can_move region0 v0+8 +;; @001f v5 = load.i64 notrap aligned readonly can_move region2 v4+32 +;; @001f v3 = uextend.i64 v2 +;; @001f v6 = iadd v5, v3 +;; @001f v7 = iconst.i64 8 +;; @001f v8 = iadd v6, v7 ; v7 = 8 +;; @001f v9 = load.i32 user2 readonly region4 v8 ;; @0021 jump block1 ;; ;; block1: -;; @0021 return v10 +;; @0021 return v9 ;; } diff --git a/tests/disas/gc/null/array-new-fixed-of-gc-refs.wat b/tests/disas/gc/null/array-new-fixed-of-gc-refs.wat index d31c470b8a14..1f73b6592f0f 100644 --- a/tests/disas/gc/null/array-new-fixed-of-gc-refs.wat +++ b/tests/disas/gc/null/array-new-fixed-of-gc-refs.wat @@ -28,99 +28,99 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i32, v3: i32, v4: i32): -;; v132 = stack_addr.i64 ss2 -;; store notrap v2, v132 -;; v133 = stack_addr.i64 ss1 -;; store notrap v3, v133 -;; v134 = stack_addr.i64 ss0 -;; store notrap v4, v134 -;; @0025 v18 = load.i64 notrap aligned readonly can_move region2 v0+32 -;; @0025 v19 = load.i32 user2 region3 v18 -;; v152 = iconst.i32 7 -;; @0025 v22 = uadd_overflow_trap v19, v152, user18 ; v152 = 7 -;; v158 = iconst.i32 -8 -;; @0025 v24 = band v22, v158 ; v158 = -8 -;; v145 = iconst.i32 24 -;; @0025 v25 = uadd_overflow_trap v24, v145, user18 ; v145 = 24 -;; @0025 v27 = load.i64 notrap aligned readonly can_move region0 v0+8 -;; @0025 v28 = load.i64 notrap aligned region4 v27+40 -;; @0025 v26 = uextend.i64 v25 -;; @0025 v29 = icmp ule v26, v28 -;; @0025 brif v29, block2, block3 +;; v131 = stack_addr.i64 ss2 +;; store notrap v2, v131 +;; v132 = stack_addr.i64 ss1 +;; store notrap v3, v132 +;; v133 = stack_addr.i64 ss0 +;; store notrap v4, v133 +;; @0025 v17 = load.i64 notrap aligned readonly can_move region2 v0+32 +;; @0025 v18 = load.i32 user2 region3 v17 +;; v151 = iconst.i32 7 +;; @0025 v21 = uadd_overflow_trap v18, v151, user18 ; v151 = 7 +;; v157 = iconst.i32 -8 +;; @0025 v23 = band v21, v157 ; v157 = -8 +;; v144 = iconst.i32 24 +;; @0025 v24 = uadd_overflow_trap v23, v144, user18 ; v144 = 24 +;; @0025 v26 = load.i64 notrap aligned readonly can_move region0 v0+8 +;; @0025 v27 = load.i64 notrap aligned region4 v26+40 +;; @0025 v25 = uextend.i64 v24 +;; @0025 v28 = icmp ule v25, v27 +;; @0025 brif v28, block2, block3 ;; ;; block2: -;; v159 = iconst.i32 -1476394984 -;; @0025 v33 = load.i64 notrap aligned readonly can_move region5 v27+32 -;; v257 = band.i32 v22, v158 ; v158 = -8 -;; v258 = uextend.i64 v257 -;; @0025 v35 = iadd v33, v258 -;; @0025 store user2 region3 v159, v35 ; v159 = -1476394984 -;; @0025 v38 = load.i64 notrap aligned readonly can_move region6 v0+40 -;; @0025 v39 = load.i32 notrap aligned readonly can_move v38 -;; @0025 store user2 region3 v39, v35+4 -;; @0025 store.i32 user2 region3 v25, v18 -;; @0025 v6 = iconst.i32 3 -;; @0025 v40 = iconst.i64 8 -;; @0025 v41 = iadd v35, v40 ; v40 = 8 -;; @0025 store user2 region3 v6, v41 ; v6 = 3 -;; @0025 trapz v257, user16 -;; v259 = iconst.i32 24 -;; @0025 v62 = uadd_overflow_trap v257, v259, user2 ; v259 = 24 -;; v131 = load.i32 notrap v132 -;; @0025 v63 = uextend.i64 v62 -;; @0025 v66 = iadd v33, v63 -;; v136 = iconst.i64 12 -;; @0025 v69 = isub v66, v136 ; v136 = 12 -;; @0025 store user2 little region3 v131, v69 -;; @0025 v77 = load.i32 user2 readonly region3 v41 -;; @0025 v70 = iconst.i32 1 -;; v197 = icmp ugt v77, v70 ; v70 = 1 -;; @0025 trapz v197, user17 -;; @0025 v80 = uextend.i64 v77 -;; v137 = iconst.i64 2 -;; v199 = ishl v80, v137 ; v137 = 2 -;; @0025 v11 = iconst.i64 32 -;; @0025 v83 = ushr v199, v11 ; v11 = 32 -;; @0025 trapnz v83, user2 -;; v176 = iconst.i32 2 -;; v206 = ishl v77, v176 ; v176 = 2 -;; @0025 v7 = iconst.i32 12 -;; @0025 v86 = uadd_overflow_trap v206, v7, user2 ; v7 = 12 -;; @0025 v90 = uadd_overflow_trap v257, v86, user2 -;; v129 = load.i32 notrap v133 -;; @0025 v91 = uextend.i64 v90 -;; @0025 v94 = iadd v33, v91 -;; v219 = iconst.i32 16 -;; @0025 v95 = isub v86, v219 ; v219 = 16 -;; @0025 v96 = uextend.i64 v95 -;; @0025 v97 = isub v94, v96 -;; @0025 store user2 little region3 v129, v97 -;; @0025 v105 = load.i32 user2 readonly region3 v41 -;; v225 = icmp ugt v105, v176 ; v176 = 2 -;; @0025 trapz v225, user17 -;; @0025 v108 = uextend.i64 v105 -;; v227 = ishl v108, v137 ; v137 = 2 -;; @0025 v111 = ushr v227, v11 ; v11 = 32 -;; @0025 trapnz v111, user2 -;; v234 = ishl v105, v176 ; v176 = 2 -;; @0025 v114 = uadd_overflow_trap v234, v7, user2 ; v7 = 12 -;; @0025 v118 = uadd_overflow_trap v257, v114, user2 -;; v127 = load.i32 notrap v134 -;; @0025 v119 = uextend.i64 v118 -;; @0025 v122 = iadd v33, v119 -;; v251 = iconst.i32 20 -;; @0025 v123 = isub v114, v251 ; v251 = 20 -;; @0025 v124 = uextend.i64 v123 -;; @0025 v125 = isub v122, v124 -;; @0025 store user2 little region3 v127, v125 +;; v158 = iconst.i32 -1476394984 +;; @0025 v32 = load.i64 notrap aligned readonly can_move region5 v26+32 +;; v256 = band.i32 v21, v157 ; v157 = -8 +;; v257 = uextend.i64 v256 +;; @0025 v34 = iadd v32, v257 +;; @0025 store user2 region3 v158, v34 ; v158 = -1476394984 +;; @0025 v37 = load.i64 notrap aligned readonly can_move region6 v0+40 +;; @0025 v38 = load.i32 notrap aligned readonly can_move v37 +;; @0025 store user2 region3 v38, v34+4 +;; @0025 store.i32 user2 region3 v24, v17 +;; @0025 v5 = iconst.i32 3 +;; @0025 v39 = iconst.i64 8 +;; @0025 v40 = iadd v34, v39 ; v39 = 8 +;; @0025 store user2 region3 v5, v40 ; v5 = 3 +;; @0025 trapz v256, user16 +;; v258 = iconst.i32 24 +;; @0025 v61 = uadd_overflow_trap v256, v258, user2 ; v258 = 24 +;; v130 = load.i32 notrap v131 +;; @0025 v62 = uextend.i64 v61 +;; @0025 v65 = iadd v32, v62 +;; v135 = iconst.i64 12 +;; @0025 v68 = isub v65, v135 ; v135 = 12 +;; @0025 store user2 little region3 v130, v68 +;; @0025 v76 = load.i32 user2 readonly region3 v40 +;; @0025 v69 = iconst.i32 1 +;; v196 = icmp ugt v76, v69 ; v69 = 1 +;; @0025 trapz v196, user17 +;; @0025 v79 = uextend.i64 v76 +;; v136 = iconst.i64 2 +;; v198 = ishl v79, v136 ; v136 = 2 +;; @0025 v10 = iconst.i64 32 +;; @0025 v82 = ushr v198, v10 ; v10 = 32 +;; @0025 trapnz v82, user2 +;; v175 = iconst.i32 2 +;; v205 = ishl v76, v175 ; v175 = 2 +;; @0025 v6 = iconst.i32 12 +;; @0025 v85 = uadd_overflow_trap v205, v6, user2 ; v6 = 12 +;; @0025 v89 = uadd_overflow_trap v256, v85, user2 +;; v128 = load.i32 notrap v132 +;; @0025 v90 = uextend.i64 v89 +;; @0025 v93 = iadd v32, v90 +;; v218 = iconst.i32 16 +;; @0025 v94 = isub v85, v218 ; v218 = 16 +;; @0025 v95 = uextend.i64 v94 +;; @0025 v96 = isub v93, v95 +;; @0025 store user2 little region3 v128, v96 +;; @0025 v104 = load.i32 user2 readonly region3 v40 +;; v224 = icmp ugt v104, v175 ; v175 = 2 +;; @0025 trapz v224, user17 +;; @0025 v107 = uextend.i64 v104 +;; v226 = ishl v107, v136 ; v136 = 2 +;; @0025 v110 = ushr v226, v10 ; v10 = 32 +;; @0025 trapnz v110, user2 +;; v233 = ishl v104, v175 ; v175 = 2 +;; @0025 v113 = uadd_overflow_trap v233, v6, user2 ; v6 = 12 +;; @0025 v117 = uadd_overflow_trap v256, v113, user2 +;; v126 = load.i32 notrap v133 +;; @0025 v118 = uextend.i64 v117 +;; @0025 v121 = iadd v32, v118 +;; v250 = iconst.i32 20 +;; @0025 v122 = isub v113, v250 ; v250 = 20 +;; @0025 v123 = uextend.i64 v122 +;; @0025 v124 = isub v121, v123 +;; @0025 store user2 little region3 v126, v124 ;; @0029 jump block1 ;; ;; block3 cold: -;; @0025 v30 = isub.i64 v26, v28 -;; @0025 v31 = call fn0(v0, v30), stack_map=[i32 @ ss2+0, i32 @ ss1+0, i32 @ ss0+0] +;; @0025 v29 = isub.i64 v25, v27 +;; @0025 v30 = call fn0(v0, v29), stack_map=[i32 @ ss2+0, i32 @ ss1+0, i32 @ ss0+0] ;; @0025 jump block2 ;; ;; block1: -;; v260 = band.i32 v22, v158 ; v158 = -8 -;; @0029 return v260 +;; v259 = band.i32 v21, v157 ; v157 = -8 +;; @0029 return v259 ;; } diff --git a/tests/disas/gc/null/array-new-fixed.wat b/tests/disas/gc/null/array-new-fixed.wat index 0fa4a82a70d5..46e9c0c43cbe 100644 --- a/tests/disas/gc/null/array-new-fixed.wat +++ b/tests/disas/gc/null/array-new-fixed.wat @@ -25,90 +25,90 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i64, v3: i64, v4: i64): -;; @0025 v18 = load.i64 notrap aligned readonly can_move region2 v0+32 -;; @0025 v19 = load.i32 user2 region3 v18 -;; v143 = iconst.i32 7 -;; @0025 v22 = uadd_overflow_trap v19, v143, user18 ; v143 = 7 -;; v149 = iconst.i32 -8 -;; @0025 v24 = band v22, v149 ; v149 = -8 -;; v136 = iconst.i32 40 -;; @0025 v25 = uadd_overflow_trap v24, v136, user18 ; v136 = 40 -;; @0025 v27 = load.i64 notrap aligned readonly can_move region0 v0+8 -;; @0025 v28 = load.i64 notrap aligned region4 v27+40 -;; @0025 v26 = uextend.i64 v25 -;; @0025 v29 = icmp ule v26, v28 -;; @0025 brif v29, block2, block3 +;; @0025 v17 = load.i64 notrap aligned readonly can_move region2 v0+32 +;; @0025 v18 = load.i32 user2 region3 v17 +;; v142 = iconst.i32 7 +;; @0025 v21 = uadd_overflow_trap v18, v142, user18 ; v142 = 7 +;; v148 = iconst.i32 -8 +;; @0025 v23 = band v21, v148 ; v148 = -8 +;; v135 = iconst.i32 40 +;; @0025 v24 = uadd_overflow_trap v23, v135, user18 ; v135 = 40 +;; @0025 v26 = load.i64 notrap aligned readonly can_move region0 v0+8 +;; @0025 v27 = load.i64 notrap aligned region4 v26+40 +;; @0025 v25 = uextend.i64 v24 +;; @0025 v28 = icmp ule v25, v27 +;; @0025 brif v28, block2, block3 ;; ;; block2: -;; v150 = iconst.i32 -1476394968 -;; @0025 v33 = load.i64 notrap aligned readonly can_move region5 v27+32 -;; v245 = band.i32 v22, v149 ; v149 = -8 -;; v246 = uextend.i64 v245 -;; @0025 v35 = iadd v33, v246 -;; @0025 store user2 region3 v150, v35 ; v150 = -1476394968 -;; @0025 v38 = load.i64 notrap aligned readonly can_move region6 v0+40 -;; @0025 v39 = load.i32 notrap aligned readonly can_move v38 -;; @0025 store user2 region3 v39, v35+4 -;; @0025 store.i32 user2 region3 v25, v18 -;; @0025 v6 = iconst.i32 3 -;; @0025 v9 = iconst.i64 8 -;; @0025 v41 = iadd v35, v9 ; v9 = 8 -;; @0025 store user2 region3 v6, v41 ; v6 = 3 -;; @0025 trapz v245, user16 -;; v247 = iconst.i32 40 -;; @0025 v62 = uadd_overflow_trap v245, v247, user2 ; v247 = 40 -;; @0025 v63 = uextend.i64 v62 -;; @0025 v66 = iadd v33, v63 -;; v127 = iconst.i64 24 -;; @0025 v69 = isub v66, v127 ; v127 = 24 -;; @0025 store.i64 user2 little region3 v2, v69 -;; @0025 v77 = load.i32 user2 readonly region3 v41 -;; @0025 v70 = iconst.i32 1 -;; v186 = icmp ugt v77, v70 ; v70 = 1 -;; @0025 trapz v186, user17 -;; @0025 v80 = uextend.i64 v77 -;; v126 = iconst.i64 3 -;; v188 = ishl v80, v126 ; v126 = 3 -;; @0025 v11 = iconst.i64 32 -;; @0025 v83 = ushr v188, v11 ; v11 = 32 -;; @0025 trapnz v83, user2 -;; v195 = ishl v77, v6 ; v6 = 3 -;; @0025 v7 = iconst.i32 16 -;; @0025 v86 = uadd_overflow_trap v195, v7, user2 ; v7 = 16 -;; @0025 v90 = uadd_overflow_trap v245, v86, user2 -;; @0025 v91 = uextend.i64 v90 -;; @0025 v94 = iadd v33, v91 -;; v135 = iconst.i32 24 -;; @0025 v95 = isub v86, v135 ; v135 = 24 -;; @0025 v96 = uextend.i64 v95 -;; @0025 v97 = isub v94, v96 -;; @0025 store.i64 user2 little region3 v3, v97 -;; @0025 v105 = load.i32 user2 readonly region3 v41 -;; @0025 v98 = iconst.i32 2 -;; v213 = icmp ugt v105, v98 ; v98 = 2 -;; @0025 trapz v213, user17 -;; @0025 v108 = uextend.i64 v105 -;; v215 = ishl v108, v126 ; v126 = 3 -;; @0025 v111 = ushr v215, v11 ; v11 = 32 -;; @0025 trapnz v111, user2 -;; v222 = ishl v105, v6 ; v6 = 3 -;; @0025 v114 = uadd_overflow_trap v222, v7, user2 ; v7 = 16 -;; @0025 v118 = uadd_overflow_trap v245, v114, user2 -;; @0025 v119 = uextend.i64 v118 -;; @0025 v122 = iadd v33, v119 -;; v239 = iconst.i32 32 -;; @0025 v123 = isub v114, v239 ; v239 = 32 -;; @0025 v124 = uextend.i64 v123 -;; @0025 v125 = isub v122, v124 -;; @0025 store.i64 user2 little region3 v4, v125 +;; v149 = iconst.i32 -1476394968 +;; @0025 v32 = load.i64 notrap aligned readonly can_move region5 v26+32 +;; v244 = band.i32 v21, v148 ; v148 = -8 +;; v245 = uextend.i64 v244 +;; @0025 v34 = iadd v32, v245 +;; @0025 store user2 region3 v149, v34 ; v149 = -1476394968 +;; @0025 v37 = load.i64 notrap aligned readonly can_move region6 v0+40 +;; @0025 v38 = load.i32 notrap aligned readonly can_move v37 +;; @0025 store user2 region3 v38, v34+4 +;; @0025 store.i32 user2 region3 v24, v17 +;; @0025 v5 = iconst.i32 3 +;; @0025 v8 = iconst.i64 8 +;; @0025 v40 = iadd v34, v8 ; v8 = 8 +;; @0025 store user2 region3 v5, v40 ; v5 = 3 +;; @0025 trapz v244, user16 +;; v246 = iconst.i32 40 +;; @0025 v61 = uadd_overflow_trap v244, v246, user2 ; v246 = 40 +;; @0025 v62 = uextend.i64 v61 +;; @0025 v65 = iadd v32, v62 +;; v126 = iconst.i64 24 +;; @0025 v68 = isub v65, v126 ; v126 = 24 +;; @0025 store.i64 user2 little region3 v2, v68 +;; @0025 v76 = load.i32 user2 readonly region3 v40 +;; @0025 v69 = iconst.i32 1 +;; v185 = icmp ugt v76, v69 ; v69 = 1 +;; @0025 trapz v185, user17 +;; @0025 v79 = uextend.i64 v76 +;; v125 = iconst.i64 3 +;; v187 = ishl v79, v125 ; v125 = 3 +;; @0025 v10 = iconst.i64 32 +;; @0025 v82 = ushr v187, v10 ; v10 = 32 +;; @0025 trapnz v82, user2 +;; v194 = ishl v76, v5 ; v5 = 3 +;; @0025 v6 = iconst.i32 16 +;; @0025 v85 = uadd_overflow_trap v194, v6, user2 ; v6 = 16 +;; @0025 v89 = uadd_overflow_trap v244, v85, user2 +;; @0025 v90 = uextend.i64 v89 +;; @0025 v93 = iadd v32, v90 +;; v134 = iconst.i32 24 +;; @0025 v94 = isub v85, v134 ; v134 = 24 +;; @0025 v95 = uextend.i64 v94 +;; @0025 v96 = isub v93, v95 +;; @0025 store.i64 user2 little region3 v3, v96 +;; @0025 v104 = load.i32 user2 readonly region3 v40 +;; @0025 v97 = iconst.i32 2 +;; v212 = icmp ugt v104, v97 ; v97 = 2 +;; @0025 trapz v212, user17 +;; @0025 v107 = uextend.i64 v104 +;; v214 = ishl v107, v125 ; v125 = 3 +;; @0025 v110 = ushr v214, v10 ; v10 = 32 +;; @0025 trapnz v110, user2 +;; v221 = ishl v104, v5 ; v5 = 3 +;; @0025 v113 = uadd_overflow_trap v221, v6, user2 ; v6 = 16 +;; @0025 v117 = uadd_overflow_trap v244, v113, user2 +;; @0025 v118 = uextend.i64 v117 +;; @0025 v121 = iadd v32, v118 +;; v238 = iconst.i32 32 +;; @0025 v122 = isub v113, v238 ; v238 = 32 +;; @0025 v123 = uextend.i64 v122 +;; @0025 v124 = isub v121, v123 +;; @0025 store.i64 user2 little region3 v4, v124 ;; @0029 jump block1 ;; ;; block3 cold: -;; @0025 v30 = isub.i64 v26, v28 -;; @0025 v31 = call fn0(v0, v30) +;; @0025 v29 = isub.i64 v25, v27 +;; @0025 v30 = call fn0(v0, v29) ;; @0025 jump block2 ;; ;; block1: -;; v248 = band.i32 v22, v149 ; v149 = -8 -;; @0029 return v248 +;; v247 = band.i32 v21, v148 ; v148 = -8 +;; @0029 return v247 ;; } diff --git a/tests/disas/gc/null/array-new.wat b/tests/disas/gc/null/array-new.wat index 1e07fe68bbd8..c8093eee8cb3 100644 --- a/tests/disas/gc/null/array-new.wat +++ b/tests/disas/gc/null/array-new.wat @@ -25,76 +25,76 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i64, v3: i32): -;; @0022 v6 = uextend.i64 v3 -;; v82 = iconst.i64 3 -;; v83 = ishl v6, v82 ; v82 = 3 -;; @0022 v9 = iconst.i64 32 -;; @0022 v10 = ushr v83, v9 ; v9 = 32 -;; @0022 trapnz v10, user18 -;; @0022 v5 = iconst.i32 16 -;; v89 = iconst.i32 3 -;; v90 = ishl v3, v89 ; v89 = 3 -;; @0022 v12 = uadd_overflow_trap v5, v90, user18 ; v5 = 16 -;; @0022 v14 = iconst.i32 -67108864 -;; @0022 v15 = band v12, v14 ; v14 = -67108864 -;; @0022 trapnz v15, user18 -;; @0022 v16 = load.i64 notrap aligned readonly can_move region2 v0+32 -;; @0022 v17 = load.i32 user2 region3 v16 -;; v93 = iconst.i32 7 -;; @0022 v20 = uadd_overflow_trap v17, v93, user18 ; v93 = 7 -;; v99 = iconst.i32 -8 -;; @0022 v22 = band v20, v99 ; v99 = -8 -;; @0022 v23 = uadd_overflow_trap v22, v12, user18 -;; @0022 v25 = load.i64 notrap aligned readonly can_move region0 v0+8 -;; @0022 v26 = load.i64 notrap aligned region4 v25+40 -;; @0022 v24 = uextend.i64 v23 -;; @0022 v27 = icmp ule v24, v26 -;; @0022 brif v27, block2, block3 +;; @0022 v5 = uextend.i64 v3 +;; v81 = iconst.i64 3 +;; v82 = ishl v5, v81 ; v81 = 3 +;; @0022 v8 = iconst.i64 32 +;; @0022 v9 = ushr v82, v8 ; v8 = 32 +;; @0022 trapnz v9, user18 +;; @0022 v4 = iconst.i32 16 +;; v88 = iconst.i32 3 +;; v89 = ishl v3, v88 ; v88 = 3 +;; @0022 v11 = uadd_overflow_trap v4, v89, user18 ; v4 = 16 +;; @0022 v13 = iconst.i32 -67108864 +;; @0022 v14 = band v11, v13 ; v13 = -67108864 +;; @0022 trapnz v14, user18 +;; @0022 v15 = load.i64 notrap aligned readonly can_move region2 v0+32 +;; @0022 v16 = load.i32 user2 region3 v15 +;; v92 = iconst.i32 7 +;; @0022 v19 = uadd_overflow_trap v16, v92, user18 ; v92 = 7 +;; v98 = iconst.i32 -8 +;; @0022 v21 = band v19, v98 ; v98 = -8 +;; @0022 v22 = uadd_overflow_trap v21, v11, user18 +;; @0022 v24 = load.i64 notrap aligned readonly can_move region0 v0+8 +;; @0022 v25 = load.i64 notrap aligned region4 v24+40 +;; @0022 v23 = uextend.i64 v22 +;; @0022 v26 = icmp ule v23, v25 +;; @0022 brif v26, block2, block3 ;; ;; block2: -;; @0022 v34 = iconst.i32 -1476395008 -;; v100 = bor.i32 v12, v34 ; v34 = -1476395008 -;; @0022 v31 = load.i64 notrap aligned readonly can_move region5 v25+32 -;; v117 = band.i32 v20, v99 ; v99 = -8 -;; v118 = uextend.i64 v117 -;; @0022 v33 = iadd v31, v118 -;; @0022 store user2 region3 v100, v33 -;; @0022 v36 = load.i64 notrap aligned readonly can_move region6 v0+40 -;; @0022 v37 = load.i32 notrap aligned readonly can_move v36 -;; @0022 store user2 region3 v37, v33+4 -;; @0022 store.i32 user2 region3 v23, v16 -;; @0022 v7 = iconst.i64 8 -;; @0022 v39 = iadd v33, v7 ; v7 = 8 -;; @0022 store.i32 user2 region3 v3, v39 -;; @0022 trapz v117, user16 -;; @0022 v71 = load.i64 notrap aligned region4 v25+40 -;; @0022 v59 = iconst.i64 16 -;; @0022 v60 = iadd v33, v59 ; v59 = 16 -;; @0022 v73 = uadd_overflow_trap v60, v83, user2 -;; @0022 v72 = iadd v31, v71 -;; @0022 v74 = icmp ugt v73, v72 -;; @0022 trapnz v74, user2 -;; v102 = iconst.i64 0 -;; @0022 v77 = icmp.i64 eq v6, v102 ; v102 = 0 -;; @0022 v75 = iadd v60, v83 -;; @0022 brif v77, block5, block4(v60) +;; @0022 v33 = iconst.i32 -1476395008 +;; v99 = bor.i32 v11, v33 ; v33 = -1476395008 +;; @0022 v30 = load.i64 notrap aligned readonly can_move region5 v24+32 +;; v116 = band.i32 v19, v98 ; v98 = -8 +;; v117 = uextend.i64 v116 +;; @0022 v32 = iadd v30, v117 +;; @0022 store user2 region3 v99, v32 +;; @0022 v35 = load.i64 notrap aligned readonly can_move region6 v0+40 +;; @0022 v36 = load.i32 notrap aligned readonly can_move v35 +;; @0022 store user2 region3 v36, v32+4 +;; @0022 store.i32 user2 region3 v22, v15 +;; @0022 v6 = iconst.i64 8 +;; @0022 v38 = iadd v32, v6 ; v6 = 8 +;; @0022 store.i32 user2 region3 v3, v38 +;; @0022 trapz v116, user16 +;; @0022 v70 = load.i64 notrap aligned region4 v24+40 +;; @0022 v58 = iconst.i64 16 +;; @0022 v59 = iadd v32, v58 ; v58 = 16 +;; @0022 v72 = uadd_overflow_trap v59, v82, user2 +;; @0022 v71 = iadd v30, v70 +;; @0022 v73 = icmp ugt v72, v71 +;; @0022 trapnz v73, user2 +;; v101 = iconst.i64 0 +;; @0022 v76 = icmp.i64 eq v5, v101 ; v101 = 0 +;; @0022 v74 = iadd v59, v82 +;; @0022 brif v76, block5, block4(v59) ;; -;; block4(v78: i64): -;; @0022 store.i64 user2 little region3 v2, v78 -;; v119 = iconst.i64 8 -;; v120 = iadd v78, v119 ; v119 = 8 -;; @0022 v81 = icmp eq v120, v75 -;; @0022 brif v81, block5, block4(v120) +;; block4(v77: i64): +;; @0022 store.i64 user2 little region3 v2, v77 +;; v118 = iconst.i64 8 +;; v119 = iadd v77, v118 ; v118 = 8 +;; @0022 v80 = icmp eq v119, v74 +;; @0022 brif v80, block5, block4(v119) ;; ;; block5: ;; @0025 jump block1 ;; ;; block3 cold: -;; @0022 v28 = isub.i64 v24, v26 -;; @0022 v29 = call fn0(v0, v28) +;; @0022 v27 = isub.i64 v23, v25 +;; @0022 v28 = call fn0(v0, v27) ;; @0022 jump block2 ;; ;; block1: -;; v121 = band.i32 v20, v99 ; v99 = -8 -;; @0025 return v121 +;; v120 = band.i32 v19, v98 ; v98 = -8 +;; @0025 return v120 ;; } diff --git a/tests/disas/gc/null/br-on-cast-fail.wat b/tests/disas/gc/null/br-on-cast-fail.wat index 9df6d68d37ee..4647b112b070 100644 --- a/tests/disas/gc/null/br-on-cast-fail.wat +++ b/tests/disas/gc/null/br-on-cast-fail.wat @@ -34,42 +34,42 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i32): -;; @002e v4 = iconst.i32 0 -;; @002e v5 = icmp eq v2, v4 ; v4 = 0 -;; @002e brif v5, block5(v4), block3 ; v4 = 0 +;; @002e v3 = iconst.i32 0 +;; @002e v4 = icmp eq v2, v3 ; v3 = 0 +;; @002e brif v4, block5(v3), block3 ; v3 = 0 ;; ;; block3: -;; @002e v8 = iconst.i32 1 -;; @002e v9 = band.i32 v2, v8 ; v8 = 1 -;; v27 = iconst.i32 0 -;; @002e brif v9, block5(v27), block4 ; v27 = 0 +;; @002e v7 = iconst.i32 1 +;; @002e v8 = band.i32 v2, v7 ; v7 = 1 +;; v26 = iconst.i32 0 +;; @002e brif v8, block5(v26), block4 ; v26 = 0 ;; ;; block4: -;; @002e v14 = load.i64 notrap aligned readonly can_move region0 v0+8 -;; @002e v15 = load.i64 notrap aligned readonly can_move region3 v14+32 -;; @002e v13 = uextend.i64 v2 -;; @002e v16 = iadd v15, v13 -;; @002e v17 = iconst.i64 4 -;; @002e v18 = iadd v16, v17 ; v17 = 4 -;; @002e v19 = load.i32 user2 readonly region5 v18 -;; @002e v11 = load.i64 notrap aligned readonly can_move region2 v0+40 -;; @002e v12 = load.i32 notrap aligned readonly can_move v11 -;; @002e v20 = icmp eq v19, v12 -;; @002e v21 = uextend.i32 v20 -;; @002e jump block5(v21) +;; @002e v13 = load.i64 notrap aligned readonly can_move region0 v0+8 +;; @002e v14 = load.i64 notrap aligned readonly can_move region3 v13+32 +;; @002e v12 = uextend.i64 v2 +;; @002e v15 = iadd v14, v12 +;; @002e v16 = iconst.i64 4 +;; @002e v17 = iadd v15, v16 ; v16 = 4 +;; @002e v18 = load.i32 user2 readonly region5 v17 +;; @002e v10 = load.i64 notrap aligned readonly can_move region2 v0+40 +;; @002e v11 = load.i32 notrap aligned readonly can_move v10 +;; @002e v19 = icmp eq v18, v11 +;; @002e v20 = uextend.i32 v19 +;; @002e jump block5(v20) ;; -;; block5(v22: i32): -;; @002e brif v22, block6, block2 +;; block5(v21: i32): +;; @002e brif v21, block6, block2 ;; ;; block6: -;; @0034 v24 = load.i64 notrap aligned readonly can_move region7 v0+56 -;; @0034 v23 = load.i64 notrap aligned readonly can_move region6 v0+72 -;; @0034 call_indirect sig0, v24(v23, v0) +;; @0034 v23 = load.i64 notrap aligned readonly can_move region7 v0+56 +;; @0034 v22 = load.i64 notrap aligned readonly can_move region6 v0+72 +;; @0034 call_indirect sig0, v23(v22, v0) ;; @0036 return ;; ;; block2: -;; @0038 v26 = load.i64 notrap aligned readonly can_move region9 v0+88 -;; @0038 v25 = load.i64 notrap aligned readonly can_move region8 v0+104 -;; @0038 call_indirect sig0, v26(v25, v0) +;; @0038 v25 = load.i64 notrap aligned readonly can_move region9 v0+88 +;; @0038 v24 = load.i64 notrap aligned readonly can_move region8 v0+104 +;; @0038 call_indirect sig0, v25(v24, v0) ;; @003a return ;; } diff --git a/tests/disas/gc/null/br-on-cast.wat b/tests/disas/gc/null/br-on-cast.wat index 8058bd4d2623..64b081b385ea 100644 --- a/tests/disas/gc/null/br-on-cast.wat +++ b/tests/disas/gc/null/br-on-cast.wat @@ -34,42 +34,42 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i32): -;; @002f v4 = iconst.i32 0 -;; @002f v5 = icmp eq v2, v4 ; v4 = 0 -;; @002f brif v5, block5(v4), block3 ; v4 = 0 +;; @002f v3 = iconst.i32 0 +;; @002f v4 = icmp eq v2, v3 ; v3 = 0 +;; @002f brif v4, block5(v3), block3 ; v3 = 0 ;; ;; block3: -;; @002f v8 = iconst.i32 1 -;; @002f v9 = band.i32 v2, v8 ; v8 = 1 -;; v27 = iconst.i32 0 -;; @002f brif v9, block5(v27), block4 ; v27 = 0 +;; @002f v7 = iconst.i32 1 +;; @002f v8 = band.i32 v2, v7 ; v7 = 1 +;; v26 = iconst.i32 0 +;; @002f brif v8, block5(v26), block4 ; v26 = 0 ;; ;; block4: -;; @002f v14 = load.i64 notrap aligned readonly can_move region0 v0+8 -;; @002f v15 = load.i64 notrap aligned readonly can_move region3 v14+32 -;; @002f v13 = uextend.i64 v2 -;; @002f v16 = iadd v15, v13 -;; @002f v17 = iconst.i64 4 -;; @002f v18 = iadd v16, v17 ; v17 = 4 -;; @002f v19 = load.i32 user2 readonly region5 v18 -;; @002f v11 = load.i64 notrap aligned readonly can_move region2 v0+40 -;; @002f v12 = load.i32 notrap aligned readonly can_move v11 -;; @002f v20 = icmp eq v19, v12 -;; @002f v21 = uextend.i32 v20 -;; @002f jump block5(v21) +;; @002f v13 = load.i64 notrap aligned readonly can_move region0 v0+8 +;; @002f v14 = load.i64 notrap aligned readonly can_move region3 v13+32 +;; @002f v12 = uextend.i64 v2 +;; @002f v15 = iadd v14, v12 +;; @002f v16 = iconst.i64 4 +;; @002f v17 = iadd v15, v16 ; v16 = 4 +;; @002f v18 = load.i32 user2 readonly region5 v17 +;; @002f v10 = load.i64 notrap aligned readonly can_move region2 v0+40 +;; @002f v11 = load.i32 notrap aligned readonly can_move v10 +;; @002f v19 = icmp eq v18, v11 +;; @002f v20 = uextend.i32 v19 +;; @002f jump block5(v20) ;; -;; block5(v22: i32): -;; @002f brif v22, block2, block6 +;; block5(v21: i32): +;; @002f brif v21, block2, block6 ;; ;; block6: -;; @0035 v24 = load.i64 notrap aligned readonly can_move region7 v0+56 -;; @0035 v23 = load.i64 notrap aligned readonly can_move region6 v0+72 -;; @0035 call_indirect sig0, v24(v23, v0) +;; @0035 v23 = load.i64 notrap aligned readonly can_move region7 v0+56 +;; @0035 v22 = load.i64 notrap aligned readonly can_move region6 v0+72 +;; @0035 call_indirect sig0, v23(v22, v0) ;; @0037 return ;; ;; block2: -;; @0039 v26 = load.i64 notrap aligned readonly can_move region9 v0+88 -;; @0039 v25 = load.i64 notrap aligned readonly can_move region8 v0+104 -;; @0039 call_indirect sig0, v26(v25, v0) +;; @0039 v25 = load.i64 notrap aligned readonly can_move region9 v0+88 +;; @0039 v24 = load.i64 notrap aligned readonly can_move region8 v0+104 +;; @0039 call_indirect sig0, v25(v24, v0) ;; @003b return ;; } diff --git a/tests/disas/gc/null/externref-globals.wat b/tests/disas/gc/null/externref-globals.wat index 76d5cc8dc04f..ab39795001a1 100644 --- a/tests/disas/gc/null/externref-globals.wat +++ b/tests/disas/gc/null/externref-globals.wat @@ -22,13 +22,13 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64): -;; @0034 v3 = iconst.i64 48 -;; @0034 v4 = iadd v0, v3 ; v3 = 48 -;; @0034 v5 = load.i32 notrap aligned region2 v4 +;; @0034 v2 = iconst.i64 48 +;; @0034 v3 = iadd v0, v2 ; v2 = 48 +;; @0034 v4 = load.i32 notrap aligned region2 v3 ;; @0036 jump block1 ;; ;; block1: -;; @0036 return v5 +;; @0036 return v4 ;; } ;; ;; function u0:1(i64 vmctx, i64, i32) tail { diff --git a/tests/disas/gc/null/funcref-in-gc-heap-get.wat b/tests/disas/gc/null/funcref-in-gc-heap-get.wat index 39697fe02804..189d32632e8d 100644 --- a/tests/disas/gc/null/funcref-in-gc-heap-get.wat +++ b/tests/disas/gc/null/funcref-in-gc-heap-get.wat @@ -24,17 +24,17 @@ ;; ;; block0(v0: i64, v1: i64, v2: i32): ;; @0020 trapz v2, user16 -;; @0020 v5 = load.i64 notrap aligned readonly can_move region0 v0+8 -;; @0020 v6 = load.i64 notrap aligned readonly can_move region2 v5+32 -;; @0020 v4 = uextend.i64 v2 -;; @0020 v7 = iadd v6, v4 -;; @0020 v8 = iconst.i64 8 -;; @0020 v9 = iadd v7, v8 ; v8 = 8 -;; @0020 v11 = load.i32 user2 little region4 v9 -;; @0020 v10 = iconst.i32 -1 -;; @0020 v12 = call fn0(v0, v11, v10) ; v10 = -1 +;; @0020 v4 = load.i64 notrap aligned readonly can_move region0 v0+8 +;; @0020 v5 = load.i64 notrap aligned readonly can_move region2 v4+32 +;; @0020 v3 = uextend.i64 v2 +;; @0020 v6 = iadd v5, v3 +;; @0020 v7 = iconst.i64 8 +;; @0020 v8 = iadd v6, v7 ; v7 = 8 +;; @0020 v10 = load.i32 user2 little region4 v8 +;; @0020 v9 = iconst.i32 -1 +;; @0020 v11 = call fn0(v0, v10, v9) ; v9 = -1 ;; @0024 jump block1 ;; ;; block1: -;; @0024 return v12 +;; @0024 return v11 ;; } diff --git a/tests/disas/gc/null/funcref-in-gc-heap-new.wat b/tests/disas/gc/null/funcref-in-gc-heap-new.wat index 1694928b0208..9a25b163d802 100644 --- a/tests/disas/gc/null/funcref-in-gc-heap-new.wat +++ b/tests/disas/gc/null/funcref-in-gc-heap-new.wat @@ -27,44 +27,44 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i64): -;; @0020 v8 = load.i64 notrap aligned readonly can_move region2 v0+32 -;; @0020 v9 = load.i32 user2 region3 v8 -;; v40 = iconst.i32 7 -;; @0020 v12 = uadd_overflow_trap v9, v40, user18 ; v40 = 7 -;; v46 = iconst.i32 -8 -;; @0020 v14 = band v12, v46 ; v46 = -8 -;; @0020 v4 = iconst.i32 16 -;; @0020 v15 = uadd_overflow_trap v14, v4, user18 ; v4 = 16 -;; @0020 v17 = load.i64 notrap aligned readonly can_move region0 v0+8 -;; @0020 v18 = load.i64 notrap aligned region4 v17+40 -;; @0020 v16 = uextend.i64 v15 -;; @0020 v19 = icmp ule v16, v18 -;; @0020 brif v19, block2, block3 +;; @0020 v7 = load.i64 notrap aligned readonly can_move region2 v0+32 +;; @0020 v8 = load.i32 user2 region3 v7 +;; v39 = iconst.i32 7 +;; @0020 v11 = uadd_overflow_trap v8, v39, user18 ; v39 = 7 +;; v45 = iconst.i32 -8 +;; @0020 v13 = band v11, v45 ; v45 = -8 +;; @0020 v3 = iconst.i32 16 +;; @0020 v14 = uadd_overflow_trap v13, v3, user18 ; v3 = 16 +;; @0020 v16 = load.i64 notrap aligned readonly can_move region0 v0+8 +;; @0020 v17 = load.i64 notrap aligned region4 v16+40 +;; @0020 v15 = uextend.i64 v14 +;; @0020 v18 = icmp ule v15, v17 +;; @0020 brif v18, block2, block3 ;; ;; block2: -;; v47 = iconst.i32 -1342177264 -;; @0020 v23 = load.i64 notrap aligned readonly can_move region5 v17+32 -;; v53 = band.i32 v12, v46 ; v46 = -8 -;; v54 = uextend.i64 v53 -;; @0020 v25 = iadd v23, v54 -;; @0020 store user2 region3 v47, v25 ; v47 = -1342177264 -;; @0020 v28 = load.i64 notrap aligned readonly can_move region6 v0+40 -;; @0020 v29 = load.i32 notrap aligned readonly can_move v28 -;; @0020 store user2 region3 v29, v25+4 -;; @0020 store.i32 user2 region3 v15, v8 -;; @0020 v32 = call fn1(v0, v2) -;; @0020 v33 = ireduce.i32 v32 -;; @0020 v30 = iconst.i64 8 -;; @0020 v31 = iadd v25, v30 ; v30 = 8 -;; @0020 store user2 little region3 v33, v31 +;; v46 = iconst.i32 -1342177264 +;; @0020 v22 = load.i64 notrap aligned readonly can_move region5 v16+32 +;; v52 = band.i32 v11, v45 ; v45 = -8 +;; v53 = uextend.i64 v52 +;; @0020 v24 = iadd v22, v53 +;; @0020 store user2 region3 v46, v24 ; v46 = -1342177264 +;; @0020 v27 = load.i64 notrap aligned readonly can_move region6 v0+40 +;; @0020 v28 = load.i32 notrap aligned readonly can_move v27 +;; @0020 store user2 region3 v28, v24+4 +;; @0020 store.i32 user2 region3 v14, v7 +;; @0020 v31 = call fn1(v0, v2) +;; @0020 v32 = ireduce.i32 v31 +;; @0020 v29 = iconst.i64 8 +;; @0020 v30 = iadd v24, v29 ; v29 = 8 +;; @0020 store user2 little region3 v32, v30 ;; @0023 jump block1 ;; ;; block3 cold: -;; @0020 v20 = isub.i64 v16, v18 -;; @0020 v21 = call fn0(v0, v20) +;; @0020 v19 = isub.i64 v15, v17 +;; @0020 v20 = call fn0(v0, v19) ;; @0020 jump block2 ;; ;; block1: -;; v55 = band.i32 v12, v46 ; v46 = -8 -;; @0023 return v55 +;; v54 = band.i32 v11, v45 ; v45 = -8 +;; @0023 return v54 ;; } diff --git a/tests/disas/gc/null/i31ref-globals.wat b/tests/disas/gc/null/i31ref-globals.wat index 7e60496175aa..35701aded92d 100644 --- a/tests/disas/gc/null/i31ref-globals.wat +++ b/tests/disas/gc/null/i31ref-globals.wat @@ -22,13 +22,13 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64): -;; @0036 v3 = iconst.i64 48 -;; @0036 v4 = iadd v0, v3 ; v3 = 48 -;; @0036 v5 = load.i32 notrap aligned region2 v4 +;; @0036 v2 = iconst.i64 48 +;; @0036 v3 = iadd v0, v2 ; v2 = 48 +;; @0036 v4 = load.i32 notrap aligned region2 v3 ;; @0038 jump block1 ;; ;; block1: -;; @0038 return v5 +;; @0038 return v4 ;; } ;; ;; function u0:1(i64 vmctx, i64, i32) tail { diff --git a/tests/disas/gc/null/multiple-array-get.wat b/tests/disas/gc/null/multiple-array-get.wat index 3d611ec9d1c9..9ebcc25260ae 100644 --- a/tests/disas/gc/null/multiple-array-get.wat +++ b/tests/disas/gc/null/multiple-array-get.wat @@ -23,44 +23,44 @@ ;; ;; block0(v0: i64, v1: i64, v2: i32, v3: i32, v4: i32): ;; @0024 trapz v2, user16 -;; @0024 v8 = load.i64 notrap aligned readonly can_move region0 v0+8 -;; @0024 v9 = load.i64 notrap aligned readonly can_move region2 v8+32 -;; @0024 v7 = uextend.i64 v2 -;; @0024 v10 = iadd v9, v7 -;; @0024 v11 = iconst.i64 8 -;; @0024 v12 = iadd v10, v11 ; v11 = 8 -;; @0024 v13 = load.i32 user2 readonly region4 v12 -;; @0024 v14 = icmp ult v3, v13 -;; @0024 trapz v14, user17 -;; @0024 v16 = uextend.i64 v13 -;; v63 = iconst.i64 3 -;; v64 = ishl v16, v63 ; v63 = 3 -;; @0024 v18 = iconst.i64 32 -;; @0024 v19 = ushr v64, v18 ; v18 = 32 -;; @0024 trapnz v19, user2 -;; v73 = iconst.i32 3 -;; v74 = ishl v13, v73 ; v73 = 3 -;; @0024 v21 = iconst.i32 16 -;; @0024 v22 = uadd_overflow_trap v74, v21, user2 ; v21 = 16 -;; @0024 v26 = uadd_overflow_trap v2, v22, user2 -;; @0024 v27 = uextend.i64 v26 -;; @0024 v30 = iadd v9, v27 -;; v80 = ishl v3, v73 ; v73 = 3 -;; @0024 v25 = iadd v80, v21 ; v21 = 16 -;; @0024 v31 = isub v22, v25 -;; @0024 v32 = uextend.i64 v31 -;; @0024 v33 = isub v30, v32 -;; @0024 v34 = load.i64 user2 little region4 v33 -;; @002b v42 = icmp ult v4, v13 -;; @002b trapz v42, user17 -;; v82 = ishl v4, v73 ; v73 = 3 -;; @002b v53 = iadd v82, v21 ; v21 = 16 -;; @002b v59 = isub v22, v53 -;; @002b v60 = uextend.i64 v59 -;; @002b v61 = isub v30, v60 -;; @002b v62 = load.i64 user2 little region4 v61 +;; @0024 v6 = load.i64 notrap aligned readonly can_move region0 v0+8 +;; @0024 v7 = load.i64 notrap aligned readonly can_move region2 v6+32 +;; @0024 v5 = uextend.i64 v2 +;; @0024 v8 = iadd v7, v5 +;; @0024 v9 = iconst.i64 8 +;; @0024 v10 = iadd v8, v9 ; v9 = 8 +;; @0024 v11 = load.i32 user2 readonly region4 v10 +;; @0024 v12 = icmp ult v3, v11 +;; @0024 trapz v12, user17 +;; @0024 v14 = uextend.i64 v11 +;; v61 = iconst.i64 3 +;; v62 = ishl v14, v61 ; v61 = 3 +;; @0024 v16 = iconst.i64 32 +;; @0024 v17 = ushr v62, v16 ; v16 = 32 +;; @0024 trapnz v17, user2 +;; v71 = iconst.i32 3 +;; v72 = ishl v11, v71 ; v71 = 3 +;; @0024 v19 = iconst.i32 16 +;; @0024 v20 = uadd_overflow_trap v72, v19, user2 ; v19 = 16 +;; @0024 v24 = uadd_overflow_trap v2, v20, user2 +;; @0024 v25 = uextend.i64 v24 +;; @0024 v28 = iadd v7, v25 +;; v78 = ishl v3, v71 ; v71 = 3 +;; @0024 v23 = iadd v78, v19 ; v19 = 16 +;; @0024 v29 = isub v20, v23 +;; @0024 v30 = uextend.i64 v29 +;; @0024 v31 = isub v28, v30 +;; @0024 v32 = load.i64 user2 little region4 v31 +;; @002b v40 = icmp ult v4, v11 +;; @002b trapz v40, user17 +;; v80 = ishl v4, v71 ; v71 = 3 +;; @002b v51 = iadd v80, v19 ; v19 = 16 +;; @002b v57 = isub v20, v51 +;; @002b v58 = uextend.i64 v57 +;; @002b v59 = isub v28, v58 +;; @002b v60 = load.i64 user2 little region4 v59 ;; @002e jump block1 ;; ;; block1: -;; @002e return v34, v62 +;; @002e return v32, v60 ;; } diff --git a/tests/disas/gc/null/multiple-struct-get.wat b/tests/disas/gc/null/multiple-struct-get.wat index d30ceb087995..dc4e3713114b 100644 --- a/tests/disas/gc/null/multiple-struct-get.wat +++ b/tests/disas/gc/null/multiple-struct-get.wat @@ -24,19 +24,19 @@ ;; ;; block0(v0: i64, v1: i64, v2: i32): ;; @0023 trapz v2, user16 -;; @0023 v6 = load.i64 notrap aligned readonly can_move region0 v0+8 -;; @0023 v7 = load.i64 notrap aligned readonly can_move region2 v6+32 -;; @0023 v5 = uextend.i64 v2 -;; @0023 v8 = iadd v7, v5 -;; @0023 v9 = iconst.i64 8 -;; @0023 v10 = iadd v8, v9 ; v9 = 8 -;; @0023 v11 = load.f32 user2 little region4 v10 -;; @0029 v16 = iconst.i64 12 -;; @0029 v17 = iadd v8, v16 ; v16 = 12 -;; @0029 v18 = load.i8 user2 little region4 v17 +;; @0023 v4 = load.i64 notrap aligned readonly can_move region0 v0+8 +;; @0023 v5 = load.i64 notrap aligned readonly can_move region2 v4+32 +;; @0023 v3 = uextend.i64 v2 +;; @0023 v6 = iadd v5, v3 +;; @0023 v7 = iconst.i64 8 +;; @0023 v8 = iadd v6, v7 ; v7 = 8 +;; @0023 v9 = load.f32 user2 little region4 v8 +;; @0029 v14 = iconst.i64 12 +;; @0029 v15 = iadd v6, v14 ; v14 = 12 +;; @0029 v16 = load.i8 user2 little region4 v15 ;; @002d jump block1 ;; ;; block1: -;; @0029 v19 = sextend.i32 v18 -;; @002d return v11, v19 +;; @0029 v17 = sextend.i32 v16 +;; @002d return v9, v17 ;; } diff --git a/tests/disas/gc/null/ref-cast.wat b/tests/disas/gc/null/ref-cast.wat index 9fe42a8ae3b4..23744b21465a 100644 --- a/tests/disas/gc/null/ref-cast.wat +++ b/tests/disas/gc/null/ref-cast.wat @@ -21,32 +21,32 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i32): -;; @001e v4 = iconst.i32 0 -;; @001e v5 = icmp eq v2, v4 ; v4 = 0 -;; @001e brif v5, block4(v4), block2 ; v4 = 0 +;; @001e v3 = iconst.i32 0 +;; @001e v4 = icmp eq v2, v3 ; v3 = 0 +;; @001e brif v4, block4(v3), block2 ; v3 = 0 ;; ;; block2: -;; @001e v8 = iconst.i32 1 -;; @001e v9 = band.i32 v2, v8 ; v8 = 1 -;; v23 = iconst.i32 0 -;; @001e brif v9, block4(v23), block3 ; v23 = 0 +;; @001e v7 = iconst.i32 1 +;; @001e v8 = band.i32 v2, v7 ; v7 = 1 +;; v22 = iconst.i32 0 +;; @001e brif v8, block4(v22), block3 ; v22 = 0 ;; ;; block3: -;; @001e v14 = load.i64 notrap aligned readonly can_move region0 v0+8 -;; @001e v15 = load.i64 notrap aligned readonly can_move region3 v14+32 -;; @001e v13 = uextend.i64 v2 -;; @001e v16 = iadd v15, v13 -;; @001e v17 = iconst.i64 4 -;; @001e v18 = iadd v16, v17 ; v17 = 4 -;; @001e v19 = load.i32 user2 readonly region5 v18 -;; @001e v11 = load.i64 notrap aligned readonly can_move region2 v0+40 -;; @001e v12 = load.i32 notrap aligned readonly can_move v11 -;; @001e v20 = icmp eq v19, v12 -;; @001e v21 = uextend.i32 v20 -;; @001e jump block4(v21) +;; @001e v13 = load.i64 notrap aligned readonly can_move region0 v0+8 +;; @001e v14 = load.i64 notrap aligned readonly can_move region3 v13+32 +;; @001e v12 = uextend.i64 v2 +;; @001e v15 = iadd v14, v12 +;; @001e v16 = iconst.i64 4 +;; @001e v17 = iadd v15, v16 ; v16 = 4 +;; @001e v18 = load.i32 user2 readonly region5 v17 +;; @001e v10 = load.i64 notrap aligned readonly can_move region2 v0+40 +;; @001e v11 = load.i32 notrap aligned readonly can_move v10 +;; @001e v19 = icmp eq v18, v11 +;; @001e v20 = uextend.i32 v19 +;; @001e jump block4(v20) ;; -;; block4(v22: i32): -;; @001e trapz v22, user19 +;; block4(v21: i32): +;; @001e trapz v21, user19 ;; @0021 jump block1 ;; ;; block1: diff --git a/tests/disas/gc/null/ref-is-null.wat b/tests/disas/gc/null/ref-is-null.wat index 790d3337593e..1f9dd1f45400 100644 --- a/tests/disas/gc/null/ref-is-null.wat +++ b/tests/disas/gc/null/ref-is-null.wat @@ -22,10 +22,10 @@ ;; @0023 jump block1 ;; ;; block1: -;; v4 = iconst.i32 0 -;; v5 = icmp.i32 eq v2, v4 ; v4 = 0 -;; v6 = uextend.i32 v5 -;; @0023 return v6 +;; v3 = iconst.i32 0 +;; v4 = icmp.i32 eq v2, v3 ; v3 = 0 +;; v5 = uextend.i32 v4 +;; @0023 return v5 ;; } ;; ;; function u0:1(i64 vmctx, i64, i32) -> i32 tail { @@ -40,6 +40,6 @@ ;; @0029 jump block1 ;; ;; block1: -;; v4 = iconst.i32 0 -;; @0029 return v4 ; v4 = 0 +;; v3 = iconst.i32 0 +;; @0029 return v3 ; v3 = 0 ;; } diff --git a/tests/disas/gc/null/ref-test-any.wat b/tests/disas/gc/null/ref-test-any.wat index 46efa460ca4d..06dd72c603a9 100644 --- a/tests/disas/gc/null/ref-test-any.wat +++ b/tests/disas/gc/null/ref-test-any.wat @@ -22,10 +22,10 @@ ;; @0025 jump block1 ;; ;; block1: -;; @0022 v8 = iconst.i32 1 -;; @0022 v4 = iconst.i32 0 -;; v14 = select v2, v8, v4 ; v8 = 1, v4 = 0 -;; @0025 return v14 +;; @0022 v7 = iconst.i32 1 +;; @0022 v3 = iconst.i32 0 +;; v13 = select v2, v7, v3 ; v7 = 1, v3 = 0 +;; @0025 return v13 ;; } ;; ;; function u0:1(i64 vmctx, i64, i32) -> i32 tail { @@ -40,6 +40,6 @@ ;; @002d jump block1 ;; ;; block1: -;; @002a v6 = iconst.i32 1 -;; @002d return v6 ; v6 = 1 +;; @002a v5 = iconst.i32 1 +;; @002d return v5 ; v5 = 1 ;; } diff --git a/tests/disas/gc/null/ref-test-array.wat b/tests/disas/gc/null/ref-test-array.wat index f61434ed5d5d..e8add45f167b 100644 --- a/tests/disas/gc/null/ref-test-array.wat +++ b/tests/disas/gc/null/ref-test-array.wat @@ -19,31 +19,31 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i32): -;; @001b v4 = iconst.i32 0 -;; @001b v5 = icmp eq v2, v4 ; v4 = 0 -;; @001b brif v5, block4(v4), block2 ; v4 = 0 +;; @001b v3 = iconst.i32 0 +;; @001b v4 = icmp eq v2, v3 ; v3 = 0 +;; @001b brif v4, block4(v3), block2 ; v3 = 0 ;; ;; block2: -;; @001b v8 = iconst.i32 1 -;; @001b v9 = band.i32 v2, v8 ; v8 = 1 -;; v23 = iconst.i32 0 -;; @001b brif v9, block4(v23), block3 ; v23 = 0 +;; @001b v7 = iconst.i32 1 +;; @001b v8 = band.i32 v2, v7 ; v7 = 1 +;; v22 = iconst.i32 0 +;; @001b brif v8, block4(v22), block3 ; v22 = 0 ;; ;; block3: -;; @001b v12 = load.i64 notrap aligned readonly can_move region0 v0+8 -;; @001b v13 = load.i64 notrap aligned readonly can_move region2 v12+32 -;; @001b v11 = uextend.i64 v2 -;; @001b v14 = iadd v13, v11 -;; @001b v17 = load.i32 user2 readonly region4 v14 -;; @001b v18 = iconst.i32 -1476395008 -;; @001b v19 = band v17, v18 ; v18 = -1476395008 -;; @001b v20 = icmp eq v19, v18 ; v18 = -1476395008 -;; @001b v21 = uextend.i32 v20 -;; @001b jump block4(v21) +;; @001b v11 = load.i64 notrap aligned readonly can_move region0 v0+8 +;; @001b v12 = load.i64 notrap aligned readonly can_move region2 v11+32 +;; @001b v10 = uextend.i64 v2 +;; @001b v13 = iadd v12, v10 +;; @001b v16 = load.i32 user2 readonly region4 v13 +;; @001b v17 = iconst.i32 -1476395008 +;; @001b v18 = band v16, v17 ; v17 = -1476395008 +;; @001b v19 = icmp eq v18, v17 ; v17 = -1476395008 +;; @001b v20 = uextend.i32 v19 +;; @001b jump block4(v20) ;; -;; block4(v22: i32): -;; @001e jump block1(v22) +;; block4(v21: i32): +;; @001e jump block1 ;; -;; block1(v3: i32): -;; @001e return v3 +;; block1: +;; @001e return v21 ;; } diff --git a/tests/disas/gc/null/ref-test-concrete-func-type.wat b/tests/disas/gc/null/ref-test-concrete-func-type.wat index e276c4e6779b..d453491c0b6c 100644 --- a/tests/disas/gc/null/ref-test-concrete-func-type.wat +++ b/tests/disas/gc/null/ref-test-concrete-func-type.wat @@ -19,25 +19,25 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i64): -;; @0020 v4 = iconst.i64 0 -;; @0020 v5 = icmp eq v2, v4 ; v4 = 0 -;; @0020 v7 = iconst.i32 0 -;; @0020 brif v5, block4(v7), block2 ; v7 = 0 +;; @0020 v3 = iconst.i64 0 +;; @0020 v4 = icmp eq v2, v3 ; v3 = 0 +;; @0020 v6 = iconst.i32 0 +;; @0020 brif v4, block4(v6), block2 ; v6 = 0 ;; ;; block2: ;; @0020 jump block3 ;; ;; block3: -;; @0020 v10 = load.i32 user2 readonly region3 v2+16 -;; @0020 v8 = load.i64 notrap aligned readonly can_move region2 v0+40 -;; @0020 v9 = load.i32 notrap aligned readonly can_move v8 -;; @0020 v11 = icmp eq v10, v9 -;; @0020 v12 = uextend.i32 v11 -;; @0020 jump block4(v12) +;; @0020 v9 = load.i32 user2 readonly region3 v2+16 +;; @0020 v7 = load.i64 notrap aligned readonly can_move region2 v0+40 +;; @0020 v8 = load.i32 notrap aligned readonly can_move v7 +;; @0020 v10 = icmp eq v9, v8 +;; @0020 v11 = uextend.i32 v10 +;; @0020 jump block4(v11) ;; -;; block4(v13: i32): -;; @0023 jump block1(v13) +;; block4(v12: i32): +;; @0023 jump block1 ;; -;; block1(v3: i32): -;; @0023 return v3 +;; block1: +;; @0023 return v12 ;; } diff --git a/tests/disas/gc/null/ref-test-concrete-type.wat b/tests/disas/gc/null/ref-test-concrete-type.wat index 45b09636027a..1a357d894138 100644 --- a/tests/disas/gc/null/ref-test-concrete-type.wat +++ b/tests/disas/gc/null/ref-test-concrete-type.wat @@ -21,33 +21,33 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i32): -;; @001d v4 = iconst.i32 0 -;; @001d v5 = icmp eq v2, v4 ; v4 = 0 -;; @001d brif v5, block4(v4), block2 ; v4 = 0 +;; @001d v3 = iconst.i32 0 +;; @001d v4 = icmp eq v2, v3 ; v3 = 0 +;; @001d brif v4, block4(v3), block2 ; v3 = 0 ;; ;; block2: -;; @001d v8 = iconst.i32 1 -;; @001d v9 = band.i32 v2, v8 ; v8 = 1 -;; v23 = iconst.i32 0 -;; @001d brif v9, block4(v23), block3 ; v23 = 0 +;; @001d v7 = iconst.i32 1 +;; @001d v8 = band.i32 v2, v7 ; v7 = 1 +;; v22 = iconst.i32 0 +;; @001d brif v8, block4(v22), block3 ; v22 = 0 ;; ;; block3: -;; @001d v14 = load.i64 notrap aligned readonly can_move region0 v0+8 -;; @001d v15 = load.i64 notrap aligned readonly can_move region3 v14+32 -;; @001d v13 = uextend.i64 v2 -;; @001d v16 = iadd v15, v13 -;; @001d v17 = iconst.i64 4 -;; @001d v18 = iadd v16, v17 ; v17 = 4 -;; @001d v19 = load.i32 user2 readonly region5 v18 -;; @001d v11 = load.i64 notrap aligned readonly can_move region2 v0+40 -;; @001d v12 = load.i32 notrap aligned readonly can_move v11 -;; @001d v20 = icmp eq v19, v12 -;; @001d v21 = uextend.i32 v20 -;; @001d jump block4(v21) +;; @001d v13 = load.i64 notrap aligned readonly can_move region0 v0+8 +;; @001d v14 = load.i64 notrap aligned readonly can_move region3 v13+32 +;; @001d v12 = uextend.i64 v2 +;; @001d v15 = iadd v14, v12 +;; @001d v16 = iconst.i64 4 +;; @001d v17 = iadd v15, v16 ; v16 = 4 +;; @001d v18 = load.i32 user2 readonly region5 v17 +;; @001d v10 = load.i64 notrap aligned readonly can_move region2 v0+40 +;; @001d v11 = load.i32 notrap aligned readonly can_move v10 +;; @001d v19 = icmp eq v18, v11 +;; @001d v20 = uextend.i32 v19 +;; @001d jump block4(v20) ;; -;; block4(v22: i32): -;; @0020 jump block1(v22) +;; block4(v21: i32): +;; @0020 jump block1 ;; -;; block1(v3: i32): -;; @0020 return v3 +;; block1: +;; @0020 return v21 ;; } diff --git a/tests/disas/gc/null/ref-test-eq.wat b/tests/disas/gc/null/ref-test-eq.wat index c50bd19308e2..36e7359e43f7 100644 --- a/tests/disas/gc/null/ref-test-eq.wat +++ b/tests/disas/gc/null/ref-test-eq.wat @@ -19,30 +19,30 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i32): -;; @001b v4 = iconst.i32 0 -;; @001b v5 = icmp eq v2, v4 ; v4 = 0 -;; @001b brif v5, block4(v4), block2 ; v4 = 0 +;; @001b v3 = iconst.i32 0 +;; @001b v4 = icmp eq v2, v3 ; v3 = 0 +;; @001b brif v4, block4(v3), block2 ; v3 = 0 ;; ;; block2: -;; @001b v8 = iconst.i32 1 -;; @001b v9 = band.i32 v2, v8 ; v8 = 1 -;; @001b brif v9, block4(v8), block3 ; v8 = 1 +;; @001b v7 = iconst.i32 1 +;; @001b v8 = band.i32 v2, v7 ; v7 = 1 +;; @001b brif v8, block4(v7), block3 ; v7 = 1 ;; ;; block3: -;; @001b v12 = load.i64 notrap aligned readonly can_move region0 v0+8 -;; @001b v13 = load.i64 notrap aligned readonly can_move region2 v12+32 -;; @001b v11 = uextend.i64 v2 -;; @001b v14 = iadd v13, v11 -;; @001b v17 = load.i32 user2 readonly region4 v14 -;; @001b v18 = iconst.i32 -1610612736 -;; @001b v19 = band v17, v18 ; v18 = -1610612736 -;; @001b v20 = icmp eq v19, v18 ; v18 = -1610612736 -;; @001b v21 = uextend.i32 v20 -;; @001b jump block4(v21) +;; @001b v11 = load.i64 notrap aligned readonly can_move region0 v0+8 +;; @001b v12 = load.i64 notrap aligned readonly can_move region2 v11+32 +;; @001b v10 = uextend.i64 v2 +;; @001b v13 = iadd v12, v10 +;; @001b v16 = load.i32 user2 readonly region4 v13 +;; @001b v17 = iconst.i32 -1610612736 +;; @001b v18 = band v16, v17 ; v17 = -1610612736 +;; @001b v19 = icmp eq v18, v17 ; v17 = -1610612736 +;; @001b v20 = uextend.i32 v19 +;; @001b jump block4(v20) ;; -;; block4(v22: i32): -;; @001e jump block1(v22) +;; block4(v21: i32): +;; @001e jump block1 ;; -;; block1(v3: i32): -;; @001e return v3 +;; block1: +;; @001e return v21 ;; } diff --git a/tests/disas/gc/null/ref-test-i31.wat b/tests/disas/gc/null/ref-test-i31.wat index 9665d9c8809f..1e9325ae8f35 100644 --- a/tests/disas/gc/null/ref-test-i31.wat +++ b/tests/disas/gc/null/ref-test-i31.wat @@ -19,7 +19,7 @@ ;; @001e jump block1 ;; ;; block1: -;; @001b v4 = iconst.i32 1 -;; @001b v5 = band.i32 v2, v4 ; v4 = 1 -;; @001e return v5 +;; @001b v3 = iconst.i32 1 +;; @001b v4 = band.i32 v2, v3 ; v3 = 1 +;; @001e return v4 ;; } diff --git a/tests/disas/gc/null/ref-test-none.wat b/tests/disas/gc/null/ref-test-none.wat index ea6e3d6476ff..6032928d760d 100644 --- a/tests/disas/gc/null/ref-test-none.wat +++ b/tests/disas/gc/null/ref-test-none.wat @@ -22,8 +22,8 @@ ;; @001f jump block1 ;; ;; block1: -;; @001c v4 = iconst.i32 0 -;; @001f return v4 ; v4 = 0 +;; @001c v3 = iconst.i32 0 +;; @001f return v3 ; v3 = 0 ;; } ;; ;; function u0:1(i64 vmctx, i64, i32) -> i32 tail { @@ -38,8 +38,8 @@ ;; @0027 jump block1 ;; ;; block1: -;; @0024 v4 = iconst.i32 0 -;; @0024 v5 = icmp.i32 eq v2, v4 ; v4 = 0 -;; @0024 v6 = uextend.i32 v5 -;; @0027 return v6 +;; @0024 v3 = iconst.i32 0 +;; @0024 v4 = icmp.i32 eq v2, v3 ; v3 = 0 +;; @0024 v5 = uextend.i32 v4 +;; @0027 return v5 ;; } diff --git a/tests/disas/gc/null/ref-test-struct.wat b/tests/disas/gc/null/ref-test-struct.wat index 86d39546a863..b15a5b10d5cc 100644 --- a/tests/disas/gc/null/ref-test-struct.wat +++ b/tests/disas/gc/null/ref-test-struct.wat @@ -19,31 +19,31 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i32): -;; @001b v4 = iconst.i32 0 -;; @001b v5 = icmp eq v2, v4 ; v4 = 0 -;; @001b brif v5, block4(v4), block2 ; v4 = 0 +;; @001b v3 = iconst.i32 0 +;; @001b v4 = icmp eq v2, v3 ; v3 = 0 +;; @001b brif v4, block4(v3), block2 ; v3 = 0 ;; ;; block2: -;; @001b v8 = iconst.i32 1 -;; @001b v9 = band.i32 v2, v8 ; v8 = 1 -;; v23 = iconst.i32 0 -;; @001b brif v9, block4(v23), block3 ; v23 = 0 +;; @001b v7 = iconst.i32 1 +;; @001b v8 = band.i32 v2, v7 ; v7 = 1 +;; v22 = iconst.i32 0 +;; @001b brif v8, block4(v22), block3 ; v22 = 0 ;; ;; block3: -;; @001b v12 = load.i64 notrap aligned readonly can_move region0 v0+8 -;; @001b v13 = load.i64 notrap aligned readonly can_move region2 v12+32 -;; @001b v11 = uextend.i64 v2 -;; @001b v14 = iadd v13, v11 -;; @001b v17 = load.i32 user2 readonly region4 v14 -;; @001b v18 = iconst.i32 -1342177280 -;; @001b v19 = band v17, v18 ; v18 = -1342177280 -;; @001b v20 = icmp eq v19, v18 ; v18 = -1342177280 -;; @001b v21 = uextend.i32 v20 -;; @001b jump block4(v21) +;; @001b v11 = load.i64 notrap aligned readonly can_move region0 v0+8 +;; @001b v12 = load.i64 notrap aligned readonly can_move region2 v11+32 +;; @001b v10 = uextend.i64 v2 +;; @001b v13 = iadd v12, v10 +;; @001b v16 = load.i32 user2 readonly region4 v13 +;; @001b v17 = iconst.i32 -1342177280 +;; @001b v18 = band v16, v17 ; v17 = -1342177280 +;; @001b v19 = icmp eq v18, v17 ; v17 = -1342177280 +;; @001b v20 = uextend.i32 v19 +;; @001b jump block4(v20) ;; -;; block4(v22: i32): -;; @001e jump block1(v22) +;; block4(v21: i32): +;; @001e jump block1 ;; -;; block1(v3: i32): -;; @001e return v3 +;; block1: +;; @001e return v21 ;; } diff --git a/tests/disas/gc/null/struct-get-guard-pages.wat b/tests/disas/gc/null/struct-get-guard-pages.wat index fa447373e751..baeee69eb129 100644 --- a/tests/disas/gc/null/struct-get-guard-pages.wat +++ b/tests/disas/gc/null/struct-get-guard-pages.wat @@ -36,17 +36,17 @@ ;; ;; block0(v0: i64, v1: i64, v2: i32): ;; @0033 trapz v2, user16 -;; @0033 v5 = load.i64 notrap aligned readonly can_move region0 v0+8 -;; @0033 v6 = load.i64 notrap aligned readonly can_move region2 v5+32 -;; @0033 v4 = uextend.i64 v2 -;; @0033 v7 = iadd v6, v4 -;; @0033 v8 = iconst.i64 8 -;; @0033 v9 = iadd v7, v8 ; v8 = 8 -;; @0033 v10 = load.f32 user2 little region4 v9 +;; @0033 v4 = load.i64 notrap aligned readonly can_move region0 v0+8 +;; @0033 v5 = load.i64 notrap aligned readonly can_move region2 v4+32 +;; @0033 v3 = uextend.i64 v2 +;; @0033 v6 = iadd v5, v3 +;; @0033 v7 = iconst.i64 8 +;; @0033 v8 = iadd v6, v7 ; v7 = 8 +;; @0033 v9 = load.f32 user2 little region4 v8 ;; @0037 jump block1 ;; ;; block1: -;; @0037 return v10 +;; @0037 return v9 ;; } ;; ;; function u0:1(i64 vmctx, i64, i32) -> i32 tail { @@ -62,18 +62,18 @@ ;; ;; block0(v0: i64, v1: i64, v2: i32): ;; @003c trapz v2, user16 -;; @003c v5 = load.i64 notrap aligned readonly can_move region0 v0+8 -;; @003c v6 = load.i64 notrap aligned readonly can_move region2 v5+32 -;; @003c v4 = uextend.i64 v2 -;; @003c v7 = iadd v6, v4 -;; @003c v8 = iconst.i64 12 -;; @003c v9 = iadd v7, v8 ; v8 = 12 -;; @003c v10 = load.i8 user2 little region4 v9 +;; @003c v4 = load.i64 notrap aligned readonly can_move region0 v0+8 +;; @003c v5 = load.i64 notrap aligned readonly can_move region2 v4+32 +;; @003c v3 = uextend.i64 v2 +;; @003c v6 = iadd v5, v3 +;; @003c v7 = iconst.i64 12 +;; @003c v8 = iadd v6, v7 ; v7 = 12 +;; @003c v9 = load.i8 user2 little region4 v8 ;; @0040 jump block1 ;; ;; block1: -;; @003c v11 = sextend.i32 v10 -;; @0040 return v11 +;; @003c v10 = sextend.i32 v9 +;; @0040 return v10 ;; } ;; ;; function u0:2(i64 vmctx, i64, i32) -> i32 tail { @@ -89,18 +89,18 @@ ;; ;; block0(v0: i64, v1: i64, v2: i32): ;; @0045 trapz v2, user16 -;; @0045 v5 = load.i64 notrap aligned readonly can_move region0 v0+8 -;; @0045 v6 = load.i64 notrap aligned readonly can_move region2 v5+32 -;; @0045 v4 = uextend.i64 v2 -;; @0045 v7 = iadd v6, v4 -;; @0045 v8 = iconst.i64 12 -;; @0045 v9 = iadd v7, v8 ; v8 = 12 -;; @0045 v10 = load.i8 user2 little region4 v9 +;; @0045 v4 = load.i64 notrap aligned readonly can_move region0 v0+8 +;; @0045 v5 = load.i64 notrap aligned readonly can_move region2 v4+32 +;; @0045 v3 = uextend.i64 v2 +;; @0045 v6 = iadd v5, v3 +;; @0045 v7 = iconst.i64 12 +;; @0045 v8 = iadd v6, v7 ; v7 = 12 +;; @0045 v9 = load.i8 user2 little region4 v8 ;; @0049 jump block1 ;; ;; block1: -;; @0045 v11 = uextend.i32 v10 -;; @0049 return v11 +;; @0045 v10 = uextend.i32 v9 +;; @0049 return v10 ;; } ;; ;; function u0:3(i64 vmctx, i64, i32) -> i32 tail { @@ -116,15 +116,15 @@ ;; ;; block0(v0: i64, v1: i64, v2: i32): ;; @004e trapz v2, user16 -;; @004e v5 = load.i64 notrap aligned readonly can_move region0 v0+8 -;; @004e v6 = load.i64 notrap aligned readonly can_move region2 v5+32 -;; @004e v4 = uextend.i64 v2 -;; @004e v7 = iadd v6, v4 -;; @004e v8 = iconst.i64 16 -;; @004e v9 = iadd v7, v8 ; v8 = 16 -;; @004e v10 = load.i32 user2 little region4 v9 +;; @004e v4 = load.i64 notrap aligned readonly can_move region0 v0+8 +;; @004e v5 = load.i64 notrap aligned readonly can_move region2 v4+32 +;; @004e v3 = uextend.i64 v2 +;; @004e v6 = iadd v5, v3 +;; @004e v7 = iconst.i64 16 +;; @004e v8 = iadd v6, v7 ; v7 = 16 +;; @004e v9 = load.i32 user2 little region4 v8 ;; @0052 jump block1 ;; ;; block1: -;; @0052 return v10 +;; @0052 return v9 ;; } diff --git a/tests/disas/gc/null/struct-get-no-guard-pages.wat b/tests/disas/gc/null/struct-get-no-guard-pages.wat index dd5fddae61a7..b461d59a500f 100644 --- a/tests/disas/gc/null/struct-get-no-guard-pages.wat +++ b/tests/disas/gc/null/struct-get-no-guard-pages.wat @@ -36,23 +36,23 @@ ;; ;; block0(v0: i64, v1: i64, v2: i32): ;; @0033 trapz v2, user16 -;; @0033 v4 = uextend.i64 v2 -;; @0033 v5 = iconst.i64 24 -;; @0033 v6 = uadd_overflow_trap v4, v5, user2 ; v5 = 24 -;; @0033 v7 = load.i64 notrap aligned readonly can_move region0 v0+8 -;; @0033 v8 = load.i64 notrap aligned region3 v7+40 -;; @0033 v11 = load.i64 notrap aligned region2 v7+32 -;; @0033 v9 = icmp ugt v6, v8 -;; @0033 v13 = iconst.i64 0 -;; @0033 v12 = iadd v11, v4 -;; @0033 v14 = select_spectre_guard v9, v13, v12 ; v13 = 0 -;; @0033 v15 = iconst.i64 8 -;; @0033 v16 = iadd v14, v15 ; v15 = 8 -;; @0033 v17 = load.f32 user2 little region4 v16 +;; @0033 v3 = uextend.i64 v2 +;; @0033 v4 = iconst.i64 24 +;; @0033 v5 = uadd_overflow_trap v3, v4, user2 ; v4 = 24 +;; @0033 v6 = load.i64 notrap aligned readonly can_move region0 v0+8 +;; @0033 v7 = load.i64 notrap aligned region3 v6+40 +;; @0033 v10 = load.i64 notrap aligned region2 v6+32 +;; @0033 v8 = icmp ugt v5, v7 +;; @0033 v12 = iconst.i64 0 +;; @0033 v11 = iadd v10, v3 +;; @0033 v13 = select_spectre_guard v8, v12, v11 ; v12 = 0 +;; @0033 v14 = iconst.i64 8 +;; @0033 v15 = iadd v13, v14 ; v14 = 8 +;; @0033 v16 = load.f32 user2 little region4 v15 ;; @0037 jump block1 ;; ;; block1: -;; @0037 return v17 +;; @0037 return v16 ;; } ;; ;; function u0:1(i64 vmctx, i64, i32) -> i32 tail { @@ -68,24 +68,24 @@ ;; ;; block0(v0: i64, v1: i64, v2: i32): ;; @003c trapz v2, user16 -;; @003c v4 = uextend.i64 v2 -;; @003c v5 = iconst.i64 24 -;; @003c v6 = uadd_overflow_trap v4, v5, user2 ; v5 = 24 -;; @003c v7 = load.i64 notrap aligned readonly can_move region0 v0+8 -;; @003c v8 = load.i64 notrap aligned region3 v7+40 -;; @003c v11 = load.i64 notrap aligned region2 v7+32 -;; @003c v9 = icmp ugt v6, v8 -;; @003c v13 = iconst.i64 0 -;; @003c v12 = iadd v11, v4 -;; @003c v14 = select_spectre_guard v9, v13, v12 ; v13 = 0 -;; @003c v15 = iconst.i64 12 -;; @003c v16 = iadd v14, v15 ; v15 = 12 -;; @003c v17 = load.i8 user2 little region4 v16 +;; @003c v3 = uextend.i64 v2 +;; @003c v4 = iconst.i64 24 +;; @003c v5 = uadd_overflow_trap v3, v4, user2 ; v4 = 24 +;; @003c v6 = load.i64 notrap aligned readonly can_move region0 v0+8 +;; @003c v7 = load.i64 notrap aligned region3 v6+40 +;; @003c v10 = load.i64 notrap aligned region2 v6+32 +;; @003c v8 = icmp ugt v5, v7 +;; @003c v12 = iconst.i64 0 +;; @003c v11 = iadd v10, v3 +;; @003c v13 = select_spectre_guard v8, v12, v11 ; v12 = 0 +;; @003c v14 = iconst.i64 12 +;; @003c v15 = iadd v13, v14 ; v14 = 12 +;; @003c v16 = load.i8 user2 little region4 v15 ;; @0040 jump block1 ;; ;; block1: -;; @003c v18 = sextend.i32 v17 -;; @0040 return v18 +;; @003c v17 = sextend.i32 v16 +;; @0040 return v17 ;; } ;; ;; function u0:2(i64 vmctx, i64, i32) -> i32 tail { @@ -101,24 +101,24 @@ ;; ;; block0(v0: i64, v1: i64, v2: i32): ;; @0045 trapz v2, user16 -;; @0045 v4 = uextend.i64 v2 -;; @0045 v5 = iconst.i64 24 -;; @0045 v6 = uadd_overflow_trap v4, v5, user2 ; v5 = 24 -;; @0045 v7 = load.i64 notrap aligned readonly can_move region0 v0+8 -;; @0045 v8 = load.i64 notrap aligned region3 v7+40 -;; @0045 v11 = load.i64 notrap aligned region2 v7+32 -;; @0045 v9 = icmp ugt v6, v8 -;; @0045 v13 = iconst.i64 0 -;; @0045 v12 = iadd v11, v4 -;; @0045 v14 = select_spectre_guard v9, v13, v12 ; v13 = 0 -;; @0045 v15 = iconst.i64 12 -;; @0045 v16 = iadd v14, v15 ; v15 = 12 -;; @0045 v17 = load.i8 user2 little region4 v16 +;; @0045 v3 = uextend.i64 v2 +;; @0045 v4 = iconst.i64 24 +;; @0045 v5 = uadd_overflow_trap v3, v4, user2 ; v4 = 24 +;; @0045 v6 = load.i64 notrap aligned readonly can_move region0 v0+8 +;; @0045 v7 = load.i64 notrap aligned region3 v6+40 +;; @0045 v10 = load.i64 notrap aligned region2 v6+32 +;; @0045 v8 = icmp ugt v5, v7 +;; @0045 v12 = iconst.i64 0 +;; @0045 v11 = iadd v10, v3 +;; @0045 v13 = select_spectre_guard v8, v12, v11 ; v12 = 0 +;; @0045 v14 = iconst.i64 12 +;; @0045 v15 = iadd v13, v14 ; v14 = 12 +;; @0045 v16 = load.i8 user2 little region4 v15 ;; @0049 jump block1 ;; ;; block1: -;; @0045 v18 = uextend.i32 v17 -;; @0049 return v18 +;; @0045 v17 = uextend.i32 v16 +;; @0049 return v17 ;; } ;; ;; function u0:3(i64 vmctx, i64, i32) -> i32 tail { @@ -134,21 +134,21 @@ ;; ;; block0(v0: i64, v1: i64, v2: i32): ;; @004e trapz v2, user16 -;; @004e v4 = uextend.i64 v2 -;; @004e v5 = iconst.i64 24 -;; @004e v6 = uadd_overflow_trap v4, v5, user2 ; v5 = 24 -;; @004e v7 = load.i64 notrap aligned readonly can_move region0 v0+8 -;; @004e v8 = load.i64 notrap aligned region3 v7+40 -;; @004e v11 = load.i64 notrap aligned region2 v7+32 -;; @004e v9 = icmp ugt v6, v8 -;; @004e v13 = iconst.i64 0 -;; @004e v12 = iadd v11, v4 -;; @004e v14 = select_spectre_guard v9, v13, v12 ; v13 = 0 -;; @004e v15 = iconst.i64 16 -;; @004e v16 = iadd v14, v15 ; v15 = 16 -;; @004e v17 = load.i32 user2 little region4 v16 +;; @004e v3 = uextend.i64 v2 +;; @004e v4 = iconst.i64 24 +;; @004e v5 = uadd_overflow_trap v3, v4, user2 ; v4 = 24 +;; @004e v6 = load.i64 notrap aligned readonly can_move region0 v0+8 +;; @004e v7 = load.i64 notrap aligned region3 v6+40 +;; @004e v10 = load.i64 notrap aligned region2 v6+32 +;; @004e v8 = icmp ugt v5, v7 +;; @004e v12 = iconst.i64 0 +;; @004e v11 = iadd v10, v3 +;; @004e v13 = select_spectre_guard v8, v12, v11 ; v12 = 0 +;; @004e v14 = iconst.i64 16 +;; @004e v15 = iadd v13, v14 ; v14 = 16 +;; @004e v16 = load.i32 user2 little region4 v15 ;; @0052 jump block1 ;; ;; block1: -;; @0052 return v17 +;; @0052 return v16 ;; } diff --git a/tests/disas/gc/null/struct-get.wat b/tests/disas/gc/null/struct-get.wat index 8399f7a50e08..611c398dd06e 100644 --- a/tests/disas/gc/null/struct-get.wat +++ b/tests/disas/gc/null/struct-get.wat @@ -36,17 +36,17 @@ ;; ;; block0(v0: i64, v1: i64, v2: i32): ;; @0033 trapz v2, user16 -;; @0033 v5 = load.i64 notrap aligned readonly can_move region0 v0+8 -;; @0033 v6 = load.i64 notrap aligned readonly can_move region2 v5+32 -;; @0033 v4 = uextend.i64 v2 -;; @0033 v7 = iadd v6, v4 -;; @0033 v8 = iconst.i64 8 -;; @0033 v9 = iadd v7, v8 ; v8 = 8 -;; @0033 v10 = load.f32 user2 little region4 v9 +;; @0033 v4 = load.i64 notrap aligned readonly can_move region0 v0+8 +;; @0033 v5 = load.i64 notrap aligned readonly can_move region2 v4+32 +;; @0033 v3 = uextend.i64 v2 +;; @0033 v6 = iadd v5, v3 +;; @0033 v7 = iconst.i64 8 +;; @0033 v8 = iadd v6, v7 ; v7 = 8 +;; @0033 v9 = load.f32 user2 little region4 v8 ;; @0037 jump block1 ;; ;; block1: -;; @0037 return v10 +;; @0037 return v9 ;; } ;; ;; function u0:1(i64 vmctx, i64, i32) -> i32 tail { @@ -62,18 +62,18 @@ ;; ;; block0(v0: i64, v1: i64, v2: i32): ;; @003c trapz v2, user16 -;; @003c v5 = load.i64 notrap aligned readonly can_move region0 v0+8 -;; @003c v6 = load.i64 notrap aligned readonly can_move region2 v5+32 -;; @003c v4 = uextend.i64 v2 -;; @003c v7 = iadd v6, v4 -;; @003c v8 = iconst.i64 12 -;; @003c v9 = iadd v7, v8 ; v8 = 12 -;; @003c v10 = load.i8 user2 little region4 v9 +;; @003c v4 = load.i64 notrap aligned readonly can_move region0 v0+8 +;; @003c v5 = load.i64 notrap aligned readonly can_move region2 v4+32 +;; @003c v3 = uextend.i64 v2 +;; @003c v6 = iadd v5, v3 +;; @003c v7 = iconst.i64 12 +;; @003c v8 = iadd v6, v7 ; v7 = 12 +;; @003c v9 = load.i8 user2 little region4 v8 ;; @0040 jump block1 ;; ;; block1: -;; @003c v11 = sextend.i32 v10 -;; @0040 return v11 +;; @003c v10 = sextend.i32 v9 +;; @0040 return v10 ;; } ;; ;; function u0:2(i64 vmctx, i64, i32) -> i32 tail { @@ -89,18 +89,18 @@ ;; ;; block0(v0: i64, v1: i64, v2: i32): ;; @0045 trapz v2, user16 -;; @0045 v5 = load.i64 notrap aligned readonly can_move region0 v0+8 -;; @0045 v6 = load.i64 notrap aligned readonly can_move region2 v5+32 -;; @0045 v4 = uextend.i64 v2 -;; @0045 v7 = iadd v6, v4 -;; @0045 v8 = iconst.i64 12 -;; @0045 v9 = iadd v7, v8 ; v8 = 12 -;; @0045 v10 = load.i8 user2 little region4 v9 +;; @0045 v4 = load.i64 notrap aligned readonly can_move region0 v0+8 +;; @0045 v5 = load.i64 notrap aligned readonly can_move region2 v4+32 +;; @0045 v3 = uextend.i64 v2 +;; @0045 v6 = iadd v5, v3 +;; @0045 v7 = iconst.i64 12 +;; @0045 v8 = iadd v6, v7 ; v7 = 12 +;; @0045 v9 = load.i8 user2 little region4 v8 ;; @0049 jump block1 ;; ;; block1: -;; @0045 v11 = uextend.i32 v10 -;; @0049 return v11 +;; @0045 v10 = uextend.i32 v9 +;; @0049 return v10 ;; } ;; ;; function u0:3(i64 vmctx, i64, i32) -> i32 tail { @@ -116,15 +116,15 @@ ;; ;; block0(v0: i64, v1: i64, v2: i32): ;; @004e trapz v2, user16 -;; @004e v5 = load.i64 notrap aligned readonly can_move region0 v0+8 -;; @004e v6 = load.i64 notrap aligned readonly can_move region2 v5+32 -;; @004e v4 = uextend.i64 v2 -;; @004e v7 = iadd v6, v4 -;; @004e v8 = iconst.i64 16 -;; @004e v9 = iadd v7, v8 ; v8 = 16 -;; @004e v10 = load.i32 user2 little region4 v9 +;; @004e v4 = load.i64 notrap aligned readonly can_move region0 v0+8 +;; @004e v5 = load.i64 notrap aligned readonly can_move region2 v4+32 +;; @004e v3 = uextend.i64 v2 +;; @004e v6 = iadd v5, v3 +;; @004e v7 = iconst.i64 16 +;; @004e v8 = iadd v6, v7 ; v7 = 16 +;; @004e v9 = load.i32 user2 little region4 v8 ;; @0052 jump block1 ;; ;; block1: -;; @0052 return v10 +;; @0052 return v9 ;; } diff --git a/tests/disas/gc/null/struct-new-default.wat b/tests/disas/gc/null/struct-new-default.wat index 31554bad5298..e430c44133f2 100644 --- a/tests/disas/gc/null/struct-new-default.wat +++ b/tests/disas/gc/null/struct-new-default.wat @@ -27,50 +27,50 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64): -;; @0021 v10 = load.i64 notrap aligned readonly can_move region2 v0+32 -;; @0021 v11 = load.i32 user2 region3 v10 -;; v43 = iconst.i32 7 -;; @0021 v14 = uadd_overflow_trap v11, v43, user18 ; v43 = 7 -;; v49 = iconst.i32 -8 -;; @0021 v16 = band v14, v49 ; v49 = -8 -;; @0021 v6 = iconst.i32 24 -;; @0021 v17 = uadd_overflow_trap v16, v6, user18 ; v6 = 24 -;; @0021 v19 = load.i64 notrap aligned readonly can_move region0 v0+8 -;; @0021 v20 = load.i64 notrap aligned region4 v19+40 -;; @0021 v18 = uextend.i64 v17 -;; @0021 v21 = icmp ule v18, v20 -;; @0021 brif v21, block2, block3 +;; @0021 v9 = load.i64 notrap aligned readonly can_move region2 v0+32 +;; @0021 v10 = load.i32 user2 region3 v9 +;; v42 = iconst.i32 7 +;; @0021 v13 = uadd_overflow_trap v10, v42, user18 ; v42 = 7 +;; v48 = iconst.i32 -8 +;; @0021 v15 = band v13, v48 ; v48 = -8 +;; @0021 v5 = iconst.i32 24 +;; @0021 v16 = uadd_overflow_trap v15, v5, user18 ; v5 = 24 +;; @0021 v18 = load.i64 notrap aligned readonly can_move region0 v0+8 +;; @0021 v19 = load.i64 notrap aligned region4 v18+40 +;; @0021 v17 = uextend.i64 v16 +;; @0021 v20 = icmp ule v17, v19 +;; @0021 brif v20, block2, block3 ;; ;; block2: -;; v50 = iconst.i32 -1342177256 -;; @0021 v25 = load.i64 notrap aligned readonly can_move region5 v19+32 -;; v56 = band.i32 v14, v49 ; v49 = -8 -;; v57 = uextend.i64 v56 -;; @0021 v27 = iadd v25, v57 -;; @0021 store user2 region3 v50, v27 ; v50 = -1342177256 -;; @0021 v30 = load.i64 notrap aligned readonly can_move region6 v0+40 -;; @0021 v31 = load.i32 notrap aligned readonly can_move v30 -;; @0021 store user2 region3 v31, v27+4 -;; @0021 store.i32 user2 region3 v17, v10 -;; @0021 v3 = f32const 0.0 -;; @0021 v32 = iconst.i64 8 -;; @0021 v33 = iadd v27, v32 ; v32 = 8 -;; @0021 store user2 little region3 v3, v33 ; v3 = 0.0 -;; @0021 v4 = iconst.i32 0 -;; @0021 v34 = iconst.i64 12 -;; @0021 v35 = iadd v27, v34 ; v34 = 12 -;; @0021 istore8 user2 little region3 v4, v35 ; v4 = 0 -;; @0021 v36 = iconst.i64 16 -;; @0021 v37 = iadd v27, v36 ; v36 = 16 -;; @0021 store user2 little region3 v4, v37 ; v4 = 0 +;; v49 = iconst.i32 -1342177256 +;; @0021 v24 = load.i64 notrap aligned readonly can_move region5 v18+32 +;; v55 = band.i32 v13, v48 ; v48 = -8 +;; v56 = uextend.i64 v55 +;; @0021 v26 = iadd v24, v56 +;; @0021 store user2 region3 v49, v26 ; v49 = -1342177256 +;; @0021 v29 = load.i64 notrap aligned readonly can_move region6 v0+40 +;; @0021 v30 = load.i32 notrap aligned readonly can_move v29 +;; @0021 store user2 region3 v30, v26+4 +;; @0021 store.i32 user2 region3 v16, v9 +;; @0021 v2 = f32const 0.0 +;; @0021 v31 = iconst.i64 8 +;; @0021 v32 = iadd v26, v31 ; v31 = 8 +;; @0021 store user2 little region3 v2, v32 ; v2 = 0.0 +;; @0021 v3 = iconst.i32 0 +;; @0021 v33 = iconst.i64 12 +;; @0021 v34 = iadd v26, v33 ; v33 = 12 +;; @0021 istore8 user2 little region3 v3, v34 ; v3 = 0 +;; @0021 v35 = iconst.i64 16 +;; @0021 v36 = iadd v26, v35 ; v35 = 16 +;; @0021 store user2 little region3 v3, v36 ; v3 = 0 ;; @0024 jump block1 ;; ;; block3 cold: -;; @0021 v22 = isub.i64 v18, v20 -;; @0021 v23 = call fn0(v0, v22) +;; @0021 v21 = isub.i64 v17, v19 +;; @0021 v22 = call fn0(v0, v21) ;; @0021 jump block2 ;; ;; block1: -;; v58 = band.i32 v14, v49 ; v49 = -8 -;; @0024 return v58 +;; v57 = band.i32 v13, v48 ; v48 = -8 +;; @0024 return v57 ;; } diff --git a/tests/disas/gc/null/struct-new.wat b/tests/disas/gc/null/struct-new.wat index 95a76bf928b7..dbca63fff785 100644 --- a/tests/disas/gc/null/struct-new.wat +++ b/tests/disas/gc/null/struct-new.wat @@ -28,51 +28,51 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: f32, v3: i32, v4: i32): -;; v40 = stack_addr.i64 ss0 -;; store notrap v4, v40 -;; @002a v10 = load.i64 notrap aligned readonly can_move region2 v0+32 -;; @002a v11 = load.i32 user2 region3 v10 -;; v47 = iconst.i32 7 -;; @002a v14 = uadd_overflow_trap v11, v47, user18 ; v47 = 7 -;; v53 = iconst.i32 -8 -;; @002a v16 = band v14, v53 ; v53 = -8 -;; @002a v6 = iconst.i32 24 -;; @002a v17 = uadd_overflow_trap v16, v6, user18 ; v6 = 24 -;; @002a v19 = load.i64 notrap aligned readonly can_move region0 v0+8 -;; @002a v20 = load.i64 notrap aligned region4 v19+40 -;; @002a v18 = uextend.i64 v17 -;; @002a v21 = icmp ule v18, v20 -;; @002a brif v21, block2, block3 +;; v39 = stack_addr.i64 ss0 +;; store notrap v4, v39 +;; @002a v9 = load.i64 notrap aligned readonly can_move region2 v0+32 +;; @002a v10 = load.i32 user2 region3 v9 +;; v46 = iconst.i32 7 +;; @002a v13 = uadd_overflow_trap v10, v46, user18 ; v46 = 7 +;; v52 = iconst.i32 -8 +;; @002a v15 = band v13, v52 ; v52 = -8 +;; @002a v5 = iconst.i32 24 +;; @002a v16 = uadd_overflow_trap v15, v5, user18 ; v5 = 24 +;; @002a v18 = load.i64 notrap aligned readonly can_move region0 v0+8 +;; @002a v19 = load.i64 notrap aligned region4 v18+40 +;; @002a v17 = uextend.i64 v16 +;; @002a v20 = icmp ule v17, v19 +;; @002a brif v20, block2, block3 ;; ;; block2: -;; v54 = iconst.i32 -1342177256 -;; @002a v25 = load.i64 notrap aligned readonly can_move region5 v19+32 -;; v60 = band.i32 v14, v53 ; v53 = -8 -;; v61 = uextend.i64 v60 -;; @002a v27 = iadd v25, v61 -;; @002a store user2 region3 v54, v27 ; v54 = -1342177256 -;; @002a v30 = load.i64 notrap aligned readonly can_move region6 v0+40 -;; @002a v31 = load.i32 notrap aligned readonly can_move v30 -;; @002a store user2 region3 v31, v27+4 -;; @002a store.i32 user2 region3 v17, v10 -;; @002a v32 = iconst.i64 8 -;; @002a v33 = iadd v27, v32 ; v32 = 8 -;; @002a store.f32 user2 little region3 v2, v33 -;; @002a v34 = iconst.i64 12 -;; @002a v35 = iadd v27, v34 ; v34 = 12 -;; @002a istore8.i32 user2 little region3 v3, v35 -;; v39 = load.i32 notrap v40 -;; @002a v36 = iconst.i64 16 -;; @002a v37 = iadd v27, v36 ; v36 = 16 -;; @002a store user2 little region3 v39, v37 +;; v53 = iconst.i32 -1342177256 +;; @002a v24 = load.i64 notrap aligned readonly can_move region5 v18+32 +;; v59 = band.i32 v13, v52 ; v52 = -8 +;; v60 = uextend.i64 v59 +;; @002a v26 = iadd v24, v60 +;; @002a store user2 region3 v53, v26 ; v53 = -1342177256 +;; @002a v29 = load.i64 notrap aligned readonly can_move region6 v0+40 +;; @002a v30 = load.i32 notrap aligned readonly can_move v29 +;; @002a store user2 region3 v30, v26+4 +;; @002a store.i32 user2 region3 v16, v9 +;; @002a v31 = iconst.i64 8 +;; @002a v32 = iadd v26, v31 ; v31 = 8 +;; @002a store.f32 user2 little region3 v2, v32 +;; @002a v33 = iconst.i64 12 +;; @002a v34 = iadd v26, v33 ; v33 = 12 +;; @002a istore8.i32 user2 little region3 v3, v34 +;; v38 = load.i32 notrap v39 +;; @002a v35 = iconst.i64 16 +;; @002a v36 = iadd v26, v35 ; v35 = 16 +;; @002a store user2 little region3 v38, v36 ;; @002d jump block1 ;; ;; block3 cold: -;; @002a v22 = isub.i64 v18, v20 -;; @002a v23 = call fn0(v0, v22), stack_map=[i32 @ ss0+0] +;; @002a v21 = isub.i64 v17, v19 +;; @002a v22 = call fn0(v0, v21), stack_map=[i32 @ ss0+0] ;; @002a jump block2 ;; ;; block1: -;; v62 = band.i32 v14, v53 ; v53 = -8 -;; @002d return v62 +;; v61 = band.i32 v13, v52 ; v52 = -8 +;; @002d return v61 ;; } diff --git a/tests/disas/gc/null/v128-fields.wat b/tests/disas/gc/null/v128-fields.wat index 1f252a9ed3e2..2796f5619da3 100644 --- a/tests/disas/gc/null/v128-fields.wat +++ b/tests/disas/gc/null/v128-fields.wat @@ -24,16 +24,16 @@ ;; ;; block0(v0: i64, v1: i64, v2: i32): ;; @0022 trapz v2, user16 -;; @0022 v5 = load.i64 notrap aligned readonly can_move region0 v0+8 -;; @0022 v6 = load.i64 notrap aligned readonly can_move region2 v5+32 -;; @0022 v4 = uextend.i64 v2 -;; @0022 v7 = iadd v6, v4 -;; @0022 v8 = iconst.i64 16 -;; @0022 v9 = iadd v7, v8 ; v8 = 16 -;; @0022 v10 = load.i8x16 user2 little region4 v9 +;; @0022 v4 = load.i64 notrap aligned readonly can_move region0 v0+8 +;; @0022 v5 = load.i64 notrap aligned readonly can_move region2 v4+32 +;; @0022 v3 = uextend.i64 v2 +;; @0022 v6 = iadd v5, v3 +;; @0022 v7 = iconst.i64 16 +;; @0022 v8 = iadd v6, v7 ; v7 = 16 +;; @0022 v9 = load.i8x16 user2 little region4 v8 ;; @002e jump block1 ;; ;; block1: -;; @002c v18 = bxor.i8x16 v10, v10 -;; @002e return v18 +;; @002c v17 = bxor.i8x16 v9, v9 +;; @002e return v17 ;; } diff --git a/tests/disas/gc/ref-test-cast-final-type.wat b/tests/disas/gc/ref-test-cast-final-type.wat index cada0f2ad7c4..4da044f508ac 100644 --- a/tests/disas/gc/ref-test-cast-final-type.wat +++ b/tests/disas/gc/ref-test-cast-final-type.wat @@ -27,35 +27,35 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i32): -;; @0024 v4 = iconst.i32 0 -;; @0024 v5 = icmp eq v2, v4 ; v4 = 0 -;; @0024 brif v5, block4(v4), block2 ; v4 = 0 +;; @0024 v3 = iconst.i32 0 +;; @0024 v4 = icmp eq v2, v3 ; v3 = 0 +;; @0024 brif v4, block4(v3), block2 ; v3 = 0 ;; ;; block2: -;; @0024 v8 = iconst.i32 1 -;; @0024 v9 = band.i32 v2, v8 ; v8 = 1 -;; v23 = iconst.i32 0 -;; @0024 brif v9, block4(v23), block3 ; v23 = 0 +;; @0024 v7 = iconst.i32 1 +;; @0024 v8 = band.i32 v2, v7 ; v7 = 1 +;; v22 = iconst.i32 0 +;; @0024 brif v8, block4(v22), block3 ; v22 = 0 ;; ;; block3: -;; @0024 v14 = load.i64 notrap aligned readonly can_move region0 v0+8 -;; @0024 v15 = load.i64 notrap aligned readonly can_move region3 v14+32 -;; @0024 v13 = uextend.i64 v2 -;; @0024 v16 = iadd v15, v13 -;; @0024 v17 = iconst.i64 4 -;; @0024 v18 = iadd v16, v17 ; v17 = 4 -;; @0024 v19 = load.i32 user2 readonly region5 v18 -;; @0024 v11 = load.i64 notrap aligned readonly can_move region2 v0+40 -;; @0024 v12 = load.i32 notrap aligned readonly can_move v11 -;; @0024 v20 = icmp eq v19, v12 -;; @0024 v21 = uextend.i32 v20 -;; @0024 jump block4(v21) +;; @0024 v13 = load.i64 notrap aligned readonly can_move region0 v0+8 +;; @0024 v14 = load.i64 notrap aligned readonly can_move region3 v13+32 +;; @0024 v12 = uextend.i64 v2 +;; @0024 v15 = iadd v14, v12 +;; @0024 v16 = iconst.i64 4 +;; @0024 v17 = iadd v15, v16 ; v16 = 4 +;; @0024 v18 = load.i32 user2 readonly region5 v17 +;; @0024 v10 = load.i64 notrap aligned readonly can_move region2 v0+40 +;; @0024 v11 = load.i32 notrap aligned readonly can_move v10 +;; @0024 v19 = icmp eq v18, v11 +;; @0024 v20 = uextend.i32 v19 +;; @0024 jump block4(v20) ;; -;; block4(v22: i32): -;; @0027 jump block1(v22) +;; block4(v21: i32): +;; @0027 jump block1 ;; -;; block1(v3: i32): -;; @0027 return v3 +;; block1: +;; @0027 return v21 ;; } ;; ;; function u0:1(i64 vmctx, i64, i32) -> i32 tail { @@ -71,32 +71,32 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i32): -;; @002c v4 = iconst.i32 0 -;; @002c v5 = icmp eq v2, v4 ; v4 = 0 -;; @002c brif v5, block4(v4), block2 ; v4 = 0 +;; @002c v3 = iconst.i32 0 +;; @002c v4 = icmp eq v2, v3 ; v3 = 0 +;; @002c brif v4, block4(v3), block2 ; v3 = 0 ;; ;; block2: -;; @002c v8 = iconst.i32 1 -;; @002c v9 = band.i32 v2, v8 ; v8 = 1 -;; v23 = iconst.i32 0 -;; @002c brif v9, block4(v23), block3 ; v23 = 0 +;; @002c v7 = iconst.i32 1 +;; @002c v8 = band.i32 v2, v7 ; v7 = 1 +;; v22 = iconst.i32 0 +;; @002c brif v8, block4(v22), block3 ; v22 = 0 ;; ;; block3: -;; @002c v14 = load.i64 notrap aligned readonly can_move region0 v0+8 -;; @002c v15 = load.i64 notrap aligned readonly can_move region3 v14+32 -;; @002c v13 = uextend.i64 v2 -;; @002c v16 = iadd v15, v13 -;; @002c v17 = iconst.i64 4 -;; @002c v18 = iadd v16, v17 ; v17 = 4 -;; @002c v19 = load.i32 user2 readonly region5 v18 -;; @002c v11 = load.i64 notrap aligned readonly can_move region2 v0+40 -;; @002c v12 = load.i32 notrap aligned readonly can_move v11 -;; @002c v20 = icmp eq v19, v12 -;; @002c v21 = uextend.i32 v20 -;; @002c jump block4(v21) +;; @002c v13 = load.i64 notrap aligned readonly can_move region0 v0+8 +;; @002c v14 = load.i64 notrap aligned readonly can_move region3 v13+32 +;; @002c v12 = uextend.i64 v2 +;; @002c v15 = iadd v14, v12 +;; @002c v16 = iconst.i64 4 +;; @002c v17 = iadd v15, v16 ; v16 = 4 +;; @002c v18 = load.i32 user2 readonly region5 v17 +;; @002c v10 = load.i64 notrap aligned readonly can_move region2 v0+40 +;; @002c v11 = load.i32 notrap aligned readonly can_move v10 +;; @002c v19 = icmp eq v18, v11 +;; @002c v20 = uextend.i32 v19 +;; @002c jump block4(v20) ;; -;; block4(v22: i32): -;; @002c trapz v22, user19 +;; block4(v21: i32): +;; @002c trapz v21, user19 ;; @002f jump block1 ;; ;; block1: diff --git a/tests/disas/gc/struct-new-default.wat b/tests/disas/gc/struct-new-default.wat index 4d07b0efdf13..2b6da6b26d4b 100644 --- a/tests/disas/gc/struct-new-default.wat +++ b/tests/disas/gc/struct-new-default.wat @@ -28,63 +28,63 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64): -;; @0023 v8 = load.i64 notrap aligned readonly can_move region2 v0+32 -;; @0023 v9 = load.i32 notrap aligned v8 -;; @0023 v10 = load.i32 notrap aligned v8+4 -;; @0023 v16 = uextend.i64 v9 -;; v47 = iconst.i64 48 -;; @0023 v17 = iadd v16, v47 ; v47 = 48 -;; @0023 v18 = uextend.i64 v10 -;; @0023 v19 = icmp ule v17, v18 -;; @0023 brif v19, block2, block3 +;; @0023 v7 = load.i64 notrap aligned readonly can_move region2 v0+32 +;; @0023 v8 = load.i32 notrap aligned v7 +;; @0023 v9 = load.i32 notrap aligned v7+4 +;; @0023 v15 = uextend.i64 v8 +;; v46 = iconst.i64 48 +;; @0023 v16 = iadd v15, v46 ; v46 = 48 +;; @0023 v17 = uextend.i64 v9 +;; @0023 v18 = icmp ule v16, v17 +;; @0023 brif v18, block2, block3 ;; ;; block2: -;; v63 = iconst.i32 48 -;; v61 = iadd.i32 v9, v63 ; v63 = 48 -;; @0023 store notrap aligned v61, v8 -;; v64 = iconst.i32 -1342177246 -;; v65 = load.i64 notrap aligned readonly can_move region0 v0+8 -;; v66 = load.i64 notrap aligned readonly can_move region4 v65+32 -;; @0023 v33 = iadd v66, v16 -;; @0023 store notrap aligned v64, v33 ; v64 = -1342177246 -;; v67 = load.i64 notrap aligned readonly can_move region3 v0+40 -;; v68 = load.i32 notrap aligned readonly can_move v67 -;; @0023 store notrap aligned v68, v33+4 -;; v69 = iconst.i64 48 -;; @0023 istore32 notrap aligned v69, v33+8 ; v69 = 48 -;; @0023 jump block4(v9, v33) +;; v62 = iconst.i32 48 +;; v60 = iadd.i32 v8, v62 ; v62 = 48 +;; @0023 store notrap aligned v60, v7 +;; v63 = iconst.i32 -1342177246 +;; v64 = load.i64 notrap aligned readonly can_move region0 v0+8 +;; v65 = load.i64 notrap aligned readonly can_move region4 v64+32 +;; @0023 v32 = iadd v65, v15 +;; @0023 store notrap aligned v63, v32 ; v63 = -1342177246 +;; v66 = load.i64 notrap aligned readonly can_move region3 v0+40 +;; v67 = load.i32 notrap aligned readonly can_move v66 +;; @0023 store notrap aligned v67, v32+4 +;; v68 = iconst.i64 48 +;; @0023 istore32 notrap aligned v68, v32+8 ; v68 = 48 +;; @0023 jump block4(v8, v32) ;; ;; block3 cold: -;; @0023 v20 = iconst.i32 -1342177246 -;; @0023 v21 = load.i64 notrap aligned readonly can_move region3 v0+40 -;; @0023 v22 = load.i32 notrap aligned readonly can_move v21 -;; @0023 v7 = iconst.i32 48 -;; @0023 v23 = iconst.i32 16 -;; @0023 v24 = call fn0(v0, v20, v22, v7, v23) ; v20 = -1342177246, v7 = 48, v23 = 16 -;; @0023 v25 = load.i64 notrap aligned readonly can_move region0 v0+8 -;; @0023 v26 = load.i64 notrap aligned readonly can_move region4 v25+32 -;; @0023 v27 = uextend.i64 v24 -;; @0023 v28 = iadd v26, v27 -;; @0023 jump block4(v24, v28) +;; @0023 v19 = iconst.i32 -1342177246 +;; @0023 v20 = load.i64 notrap aligned readonly can_move region3 v0+40 +;; @0023 v21 = load.i32 notrap aligned readonly can_move v20 +;; @0023 v6 = iconst.i32 48 +;; @0023 v22 = iconst.i32 16 +;; @0023 v23 = call fn0(v0, v19, v21, v6, v22) ; v19 = -1342177246, v6 = 48, v22 = 16 +;; @0023 v24 = load.i64 notrap aligned readonly can_move region0 v0+8 +;; @0023 v25 = load.i64 notrap aligned readonly can_move region4 v24+32 +;; @0023 v26 = uextend.i64 v23 +;; @0023 v27 = iadd v25, v26 +;; @0023 jump block4(v23, v27) ;; -;; block4(v37: i32, v38: i64): -;; @0023 v3 = f32const 0.0 -;; @0023 v39 = iconst.i64 16 -;; @0023 v40 = iadd v38, v39 ; v39 = 16 -;; @0023 store user2 little region5 v3, v40 ; v3 = 0.0 -;; @0023 v4 = iconst.i32 0 -;; @0023 v41 = iconst.i64 20 -;; @0023 v42 = iadd v38, v41 ; v41 = 20 -;; @0023 istore8 user2 little region5 v4, v42 ; v4 = 0 -;; @0023 v43 = iconst.i64 24 -;; @0023 v44 = iadd v38, v43 ; v43 = 24 -;; @0023 store user2 little region5 v4, v44 ; v4 = 0 -;; @0023 v6 = vconst.i8x16 const0 -;; @0023 v45 = iconst.i64 32 -;; @0023 v46 = iadd v38, v45 ; v45 = 32 -;; @0023 store user2 little region5 v6, v46 ; v6 = const0 -;; @0026 jump block1(v37) +;; block4(v36: i32, v37: i64): +;; @0023 v2 = f32const 0.0 +;; @0023 v38 = iconst.i64 16 +;; @0023 v39 = iadd v37, v38 ; v38 = 16 +;; @0023 store user2 little region5 v2, v39 ; v2 = 0.0 +;; @0023 v3 = iconst.i32 0 +;; @0023 v40 = iconst.i64 20 +;; @0023 v41 = iadd v37, v40 ; v40 = 20 +;; @0023 istore8 user2 little region5 v3, v41 ; v3 = 0 +;; @0023 v42 = iconst.i64 24 +;; @0023 v43 = iadd v37, v42 ; v42 = 24 +;; @0023 store user2 little region5 v3, v43 ; v3 = 0 +;; @0023 v5 = vconst.i8x16 const0 +;; @0023 v44 = iconst.i64 32 +;; @0023 v45 = iadd v37, v44 ; v44 = 32 +;; @0023 store user2 little region5 v5, v45 ; v5 = const0 +;; @0026 jump block1 ;; -;; block1(v2: i32): -;; @0026 return v2 +;; block1: +;; @0026 return v36 ;; } diff --git a/tests/disas/gc/struct-new.wat b/tests/disas/gc/struct-new.wat index a0b96bd1e67f..206a613d460f 100644 --- a/tests/disas/gc/struct-new.wat +++ b/tests/disas/gc/struct-new.wat @@ -27,60 +27,60 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: f32, v3: i32, v4: i32): -;; v46 = stack_addr.i64 ss0 -;; store notrap v4, v46 -;; @002a v7 = load.i64 notrap aligned readonly can_move region2 v0+32 -;; @002a v8 = load.i32 notrap aligned v7 -;; @002a v9 = load.i32 notrap aligned v7+4 -;; @002a v15 = uextend.i64 v8 -;; v47 = iconst.i64 32 -;; @002a v16 = iadd v15, v47 ; v47 = 32 -;; @002a v17 = uextend.i64 v9 -;; @002a v18 = icmp ule v16, v17 -;; @002a brif v18, block2, block3 +;; v45 = stack_addr.i64 ss0 +;; store notrap v4, v45 +;; @002a v6 = load.i64 notrap aligned readonly can_move region2 v0+32 +;; @002a v7 = load.i32 notrap aligned v6 +;; @002a v8 = load.i32 notrap aligned v6+4 +;; @002a v14 = uextend.i64 v7 +;; v46 = iconst.i64 32 +;; @002a v15 = iadd v14, v46 ; v46 = 32 +;; @002a v16 = uextend.i64 v8 +;; @002a v17 = icmp ule v15, v16 +;; @002a brif v17, block2, block3 ;; ;; block2: -;; v63 = iconst.i32 32 -;; v61 = iadd.i32 v8, v63 ; v63 = 32 -;; @002a store notrap aligned v61, v7 -;; v64 = iconst.i32 -1342177246 -;; v65 = load.i64 notrap aligned readonly can_move region0 v0+8 -;; v66 = load.i64 notrap aligned readonly can_move region4 v65+32 -;; @002a v32 = iadd v66, v15 -;; @002a store notrap aligned v64, v32 ; v64 = -1342177246 -;; v67 = load.i64 notrap aligned readonly can_move region3 v0+40 -;; v68 = load.i32 notrap aligned readonly can_move v67 -;; @002a store notrap aligned v68, v32+4 -;; v69 = iconst.i64 32 -;; @002a istore32 notrap aligned v69, v32+8 ; v69 = 32 -;; @002a jump block4(v8, v32) +;; v62 = iconst.i32 32 +;; v60 = iadd.i32 v7, v62 ; v62 = 32 +;; @002a store notrap aligned v60, v6 +;; v63 = iconst.i32 -1342177246 +;; v64 = load.i64 notrap aligned readonly can_move region0 v0+8 +;; v65 = load.i64 notrap aligned readonly can_move region4 v64+32 +;; @002a v31 = iadd v65, v14 +;; @002a store notrap aligned v63, v31 ; v63 = -1342177246 +;; v66 = load.i64 notrap aligned readonly can_move region3 v0+40 +;; v67 = load.i32 notrap aligned readonly can_move v66 +;; @002a store notrap aligned v67, v31+4 +;; v68 = iconst.i64 32 +;; @002a istore32 notrap aligned v68, v31+8 ; v68 = 32 +;; @002a jump block4(v7, v31) ;; ;; block3 cold: -;; @002a v19 = iconst.i32 -1342177246 -;; @002a v20 = load.i64 notrap aligned readonly can_move region3 v0+40 -;; @002a v21 = load.i32 notrap aligned readonly can_move v20 -;; @002a v6 = iconst.i32 32 -;; @002a v22 = iconst.i32 16 -;; @002a v23 = call fn0(v0, v19, v21, v6, v22), stack_map=[i32 @ ss0+0] ; v19 = -1342177246, v6 = 32, v22 = 16 -;; @002a v24 = load.i64 notrap aligned readonly can_move region0 v0+8 -;; @002a v25 = load.i64 notrap aligned readonly can_move region4 v24+32 -;; @002a v26 = uextend.i64 v23 -;; @002a v27 = iadd v25, v26 -;; @002a jump block4(v23, v27) +;; @002a v18 = iconst.i32 -1342177246 +;; @002a v19 = load.i64 notrap aligned readonly can_move region3 v0+40 +;; @002a v20 = load.i32 notrap aligned readonly can_move v19 +;; @002a v5 = iconst.i32 32 +;; @002a v21 = iconst.i32 16 +;; @002a v22 = call fn0(v0, v18, v20, v5, v21), stack_map=[i32 @ ss0+0] ; v18 = -1342177246, v5 = 32, v21 = 16 +;; @002a v23 = load.i64 notrap aligned readonly can_move region0 v0+8 +;; @002a v24 = load.i64 notrap aligned readonly can_move region4 v23+32 +;; @002a v25 = uextend.i64 v22 +;; @002a v26 = iadd v24, v25 +;; @002a jump block4(v22, v26) ;; -;; block4(v36: i32, v37: i64): -;; @002a v38 = iconst.i64 16 -;; @002a v39 = iadd v37, v38 ; v38 = 16 -;; @002a store.f32 user2 little region5 v2, v39 -;; @002a v40 = iconst.i64 20 -;; @002a v41 = iadd v37, v40 ; v40 = 20 -;; @002a istore8.i32 user2 little region5 v3, v41 -;; v45 = load.i32 notrap v46 -;; @002a v42 = iconst.i64 24 -;; @002a v43 = iadd v37, v42 ; v42 = 24 -;; @002a store user2 little region5 v45, v43 -;; @002d jump block1(v36) +;; block4(v35: i32, v36: i64): +;; @002a v37 = iconst.i64 16 +;; @002a v38 = iadd v36, v37 ; v37 = 16 +;; @002a store.f32 user2 little region5 v2, v38 +;; @002a v39 = iconst.i64 20 +;; @002a v40 = iadd v36, v39 ; v39 = 20 +;; @002a istore8.i32 user2 little region5 v3, v40 +;; v44 = load.i32 notrap v45 +;; @002a v41 = iconst.i64 24 +;; @002a v42 = iadd v36, v41 ; v41 = 24 +;; @002a store user2 little region5 v44, v42 +;; @002d jump block1 ;; -;; block1(v5: i32): -;; @002d return v5 +;; block1: +;; @002d return v35 ;; } diff --git a/tests/disas/global-get.wat b/tests/disas/global-get.wat index 038d868d432c..a613c04224f8 100644 --- a/tests/disas/global-get.wat +++ b/tests/disas/global-get.wat @@ -41,12 +41,12 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64): -;; @003d v3 = load.i64 notrap aligned readonly can_move region2 v0+48 -;; @003d v4 = load.i32 notrap aligned region3 v3 +;; @003d v2 = load.i64 notrap aligned readonly can_move region2 v0+48 +;; @003d v3 = load.i32 notrap aligned region3 v2 ;; @003f jump block1 ;; ;; block1: -;; @003f return v4 +;; @003f return v3 ;; } ;; ;; function u0:1(i64 vmctx, i64) -> i32 tail { @@ -60,12 +60,12 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64): -;; @0042 v3 = load.i64 notrap aligned readonly can_move region2 v0+72 -;; @0042 v4 = load.i32 notrap aligned region3 v3 +;; @0042 v2 = load.i64 notrap aligned readonly can_move region2 v0+72 +;; @0042 v3 = load.i32 notrap aligned region3 v2 ;; @0044 jump block1 ;; ;; block1: -;; @0044 return v4 +;; @0044 return v3 ;; } ;; ;; function u0:2(i64 vmctx, i64) -> i32 tail { @@ -77,11 +77,11 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64): -;; @0047 v3 = iconst.i32 42 +;; @0047 v2 = iconst.i32 42 ;; @0049 jump block1 ;; ;; block1: -;; @0049 return v3 ; v3 = 42 +;; @0049 return v2 ; v2 = 42 ;; } ;; ;; function u0:3(i64 vmctx, i64) -> i32 tail { @@ -94,9 +94,9 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64): -;; @004c v3 = load.i32 notrap aligned region2 v0+112 +;; @004c v2 = load.i32 notrap aligned region2 v0+112 ;; @004e jump block1 ;; ;; block1: -;; @004e return v3 +;; @004e return v2 ;; } diff --git a/tests/disas/i128-cmp.wat b/tests/disas/i128-cmp.wat index e9864309f6fc..7c5d8146ecaa 100644 --- a/tests/disas/i128-cmp.wat +++ b/tests/disas/i128-cmp.wat @@ -111,11 +111,11 @@ ;; @0034 jump block1 ;; ;; block1: -;; v16 = iconcat.i64 v2, v3 -;; v17 = iconcat.i64 v4, v5 -;; v18 = icmp slt v16, v17 -;; v24 = uextend.i32 v18 -;; @0034 return v24 +;; v15 = iconcat.i64 v2, v3 +;; v16 = iconcat.i64 v4, v5 +;; v17 = icmp slt v15, v16 +;; v23 = uextend.i32 v17 +;; @0034 return v23 ;; } ;; ;; function u0:1(i64 vmctx, i64, i64, i64, i64, i64) -> i32 tail { @@ -130,11 +130,11 @@ ;; @0047 jump block1 ;; ;; block1: -;; v16 = iconcat.i64 v2, v3 -;; v17 = iconcat.i64 v4, v5 -;; v18 = icmp ult v16, v17 -;; v24 = uextend.i32 v18 -;; @0047 return v24 +;; v15 = iconcat.i64 v2, v3 +;; v16 = iconcat.i64 v4, v5 +;; v17 = icmp ult v15, v16 +;; v23 = uextend.i32 v17 +;; @0047 return v23 ;; } ;; ;; function u0:2(i64 vmctx, i64, i64, i64, i64, i64) -> i32 tail { @@ -149,11 +149,11 @@ ;; @005a jump block1 ;; ;; block1: -;; v16 = iconcat.i64 v2, v3 -;; v17 = iconcat.i64 v4, v5 -;; v18 = icmp sle v16, v17 -;; v24 = uextend.i32 v18 -;; @005a return v24 +;; v15 = iconcat.i64 v2, v3 +;; v16 = iconcat.i64 v4, v5 +;; v17 = icmp sle v15, v16 +;; v23 = uextend.i32 v17 +;; @005a return v23 ;; } ;; ;; function u0:3(i64 vmctx, i64, i64, i64, i64, i64) -> i32 tail { @@ -168,11 +168,11 @@ ;; @006d jump block1 ;; ;; block1: -;; v16 = iconcat.i64 v2, v3 -;; v17 = iconcat.i64 v4, v5 -;; v18 = icmp ule v16, v17 -;; v24 = uextend.i32 v18 -;; @006d return v24 +;; v15 = iconcat.i64 v2, v3 +;; v16 = iconcat.i64 v4, v5 +;; v17 = icmp ule v15, v16 +;; v23 = uextend.i32 v17 +;; @006d return v23 ;; } ;; ;; function u0:4(i64 vmctx, i64, i64, i64, i64, i64) -> i32 tail { @@ -187,11 +187,11 @@ ;; @0080 jump block1 ;; ;; block1: -;; v16 = iconcat.i64 v2, v3 -;; v17 = iconcat.i64 v4, v5 -;; v18 = icmp sgt v16, v17 -;; v24 = uextend.i32 v18 -;; @0080 return v24 +;; v15 = iconcat.i64 v2, v3 +;; v16 = iconcat.i64 v4, v5 +;; v17 = icmp sgt v15, v16 +;; v23 = uextend.i32 v17 +;; @0080 return v23 ;; } ;; ;; function u0:5(i64 vmctx, i64, i64, i64, i64, i64) -> i32 tail { @@ -206,11 +206,11 @@ ;; @0093 jump block1 ;; ;; block1: -;; v16 = iconcat.i64 v2, v3 -;; v17 = iconcat.i64 v4, v5 -;; v18 = icmp ugt v16, v17 -;; v24 = uextend.i32 v18 -;; @0093 return v24 +;; v15 = iconcat.i64 v2, v3 +;; v16 = iconcat.i64 v4, v5 +;; v17 = icmp ugt v15, v16 +;; v23 = uextend.i32 v17 +;; @0093 return v23 ;; } ;; ;; function u0:6(i64 vmctx, i64, i64, i64, i64, i64) -> i32 tail { @@ -225,11 +225,11 @@ ;; @00a6 jump block1 ;; ;; block1: -;; v16 = iconcat.i64 v2, v3 -;; v17 = iconcat.i64 v4, v5 -;; v18 = icmp sge v16, v17 -;; v24 = uextend.i32 v18 -;; @00a6 return v24 +;; v15 = iconcat.i64 v2, v3 +;; v16 = iconcat.i64 v4, v5 +;; v17 = icmp sge v15, v16 +;; v23 = uextend.i32 v17 +;; @00a6 return v23 ;; } ;; ;; function u0:7(i64 vmctx, i64, i64, i64, i64, i64) -> i32 tail { @@ -244,9 +244,9 @@ ;; @00b9 jump block1 ;; ;; block1: -;; v16 = iconcat.i64 v2, v3 -;; v17 = iconcat.i64 v4, v5 -;; v18 = icmp uge v16, v17 -;; v24 = uextend.i32 v18 -;; @00b9 return v24 +;; v15 = iconcat.i64 v2, v3 +;; v16 = iconcat.i64 v4, v5 +;; v17 = icmp uge v15, v16 +;; v23 = uextend.i32 v17 +;; @00b9 return v23 ;; } diff --git a/tests/disas/i32-load.wat b/tests/disas/i32-load.wat index 2c8a1b3cb3f9..0d49182ab0ef 100644 --- a/tests/disas/i32-load.wat +++ b/tests/disas/i32-load.wat @@ -20,12 +20,12 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i32): -;; @002e v4 = uextend.i64 v2 -;; @002e v5 = load.i64 notrap aligned readonly can_move region2 v0+56 -;; @002e v6 = iadd v5, v4 -;; @002e v7 = load.i32 little region4 v6 +;; @002e v3 = uextend.i64 v2 +;; @002e v4 = load.i64 notrap aligned readonly can_move region2 v0+56 +;; @002e v5 = iadd v4, v3 +;; @002e v6 = load.i32 little region4 v5 ;; @0031 jump block1 ;; ;; block1: -;; @0031 return v7 +;; @0031 return v6 ;; } diff --git a/tests/disas/i32-load16-s.wat b/tests/disas/i32-load16-s.wat index e1a28bd8081f..58d5b542f959 100644 --- a/tests/disas/i32-load16-s.wat +++ b/tests/disas/i32-load16-s.wat @@ -20,12 +20,12 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i32): -;; @0032 v4 = uextend.i64 v2 -;; @0032 v5 = load.i64 notrap aligned readonly can_move region2 v0+56 -;; @0032 v6 = iadd v5, v4 -;; @0032 v7 = sload16.i32 little region4 v6 +;; @0032 v3 = uextend.i64 v2 +;; @0032 v4 = load.i64 notrap aligned readonly can_move region2 v0+56 +;; @0032 v5 = iadd v4, v3 +;; @0032 v6 = sload16.i32 little region4 v5 ;; @0035 jump block1 ;; ;; block1: -;; @0035 return v7 +;; @0035 return v6 ;; } diff --git a/tests/disas/i32-load16-u.wat b/tests/disas/i32-load16-u.wat index 60048ea0ae94..b0676d60eea1 100644 --- a/tests/disas/i32-load16-u.wat +++ b/tests/disas/i32-load16-u.wat @@ -20,12 +20,12 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i32): -;; @0032 v4 = uextend.i64 v2 -;; @0032 v5 = load.i64 notrap aligned readonly can_move region2 v0+56 -;; @0032 v6 = iadd v5, v4 -;; @0032 v7 = uload16.i32 little region4 v6 +;; @0032 v3 = uextend.i64 v2 +;; @0032 v4 = load.i64 notrap aligned readonly can_move region2 v0+56 +;; @0032 v5 = iadd v4, v3 +;; @0032 v6 = uload16.i32 little region4 v5 ;; @0035 jump block1 ;; ;; block1: -;; @0035 return v7 +;; @0035 return v6 ;; } diff --git a/tests/disas/i32-load8-s.wat b/tests/disas/i32-load8-s.wat index dca926060dd3..c44916cbc23c 100644 --- a/tests/disas/i32-load8-s.wat +++ b/tests/disas/i32-load8-s.wat @@ -20,12 +20,12 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i32): -;; @0031 v4 = uextend.i64 v2 -;; @0031 v5 = load.i64 notrap aligned readonly can_move region2 v0+56 -;; @0031 v6 = iadd v5, v4 -;; @0031 v7 = sload8.i32 little region4 v6 +;; @0031 v3 = uextend.i64 v2 +;; @0031 v4 = load.i64 notrap aligned readonly can_move region2 v0+56 +;; @0031 v5 = iadd v4, v3 +;; @0031 v6 = sload8.i32 little region4 v5 ;; @0034 jump block1 ;; ;; block1: -;; @0034 return v7 +;; @0034 return v6 ;; } diff --git a/tests/disas/i32-load8-u.wat b/tests/disas/i32-load8-u.wat index c9cdb17cbd74..ed1124132b77 100644 --- a/tests/disas/i32-load8-u.wat +++ b/tests/disas/i32-load8-u.wat @@ -20,12 +20,12 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i32): -;; @0031 v4 = uextend.i64 v2 -;; @0031 v5 = load.i64 notrap aligned readonly can_move region2 v0+56 -;; @0031 v6 = iadd v5, v4 -;; @0031 v7 = uload8.i32 little region4 v6 +;; @0031 v3 = uextend.i64 v2 +;; @0031 v4 = load.i64 notrap aligned readonly can_move region2 v0+56 +;; @0031 v5 = iadd v4, v3 +;; @0031 v6 = uload8.i32 little region4 v5 ;; @0034 jump block1 ;; ;; block1: -;; @0034 return v7 +;; @0034 return v6 ;; } diff --git a/tests/disas/i64-load.wat b/tests/disas/i64-load.wat index f23d6d478593..62933b55da09 100644 --- a/tests/disas/i64-load.wat +++ b/tests/disas/i64-load.wat @@ -20,12 +20,12 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i32): -;; @002e v4 = uextend.i64 v2 -;; @002e v5 = load.i64 notrap aligned readonly can_move region2 v0+56 -;; @002e v6 = iadd v5, v4 -;; @002e v7 = load.i64 little region4 v6 +;; @002e v3 = uextend.i64 v2 +;; @002e v4 = load.i64 notrap aligned readonly can_move region2 v0+56 +;; @002e v5 = iadd v4, v3 +;; @002e v6 = load.i64 little region4 v5 ;; @0031 jump block1 ;; ;; block1: -;; @0031 return v7 +;; @0031 return v6 ;; } diff --git a/tests/disas/i64-load16-s.wat b/tests/disas/i64-load16-s.wat index af5d42bde37d..0fe1dbaeb020 100644 --- a/tests/disas/i64-load16-s.wat +++ b/tests/disas/i64-load16-s.wat @@ -20,12 +20,12 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i32): -;; @0032 v4 = uextend.i64 v2 -;; @0032 v5 = load.i64 notrap aligned readonly can_move region2 v0+56 -;; @0032 v6 = iadd v5, v4 -;; @0032 v7 = sload16.i64 little region4 v6 +;; @0032 v3 = uextend.i64 v2 +;; @0032 v4 = load.i64 notrap aligned readonly can_move region2 v0+56 +;; @0032 v5 = iadd v4, v3 +;; @0032 v6 = sload16.i64 little region4 v5 ;; @0035 jump block1 ;; ;; block1: -;; @0035 return v7 +;; @0035 return v6 ;; } diff --git a/tests/disas/i64-load16-u.wat b/tests/disas/i64-load16-u.wat index c042cac2c7d3..d8fe9f5eced6 100644 --- a/tests/disas/i64-load16-u.wat +++ b/tests/disas/i64-load16-u.wat @@ -20,12 +20,12 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i32): -;; @0032 v4 = uextend.i64 v2 -;; @0032 v5 = load.i64 notrap aligned readonly can_move region2 v0+56 -;; @0032 v6 = iadd v5, v4 -;; @0032 v7 = uload16.i64 little region4 v6 +;; @0032 v3 = uextend.i64 v2 +;; @0032 v4 = load.i64 notrap aligned readonly can_move region2 v0+56 +;; @0032 v5 = iadd v4, v3 +;; @0032 v6 = uload16.i64 little region4 v5 ;; @0035 jump block1 ;; ;; block1: -;; @0035 return v7 +;; @0035 return v6 ;; } diff --git a/tests/disas/i64-load8-s.wat b/tests/disas/i64-load8-s.wat index cbb3ff332d33..08265416324f 100644 --- a/tests/disas/i64-load8-s.wat +++ b/tests/disas/i64-load8-s.wat @@ -20,12 +20,12 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i32): -;; @0031 v4 = uextend.i64 v2 -;; @0031 v5 = load.i64 notrap aligned readonly can_move region2 v0+56 -;; @0031 v6 = iadd v5, v4 -;; @0031 v7 = sload8.i64 little region4 v6 +;; @0031 v3 = uextend.i64 v2 +;; @0031 v4 = load.i64 notrap aligned readonly can_move region2 v0+56 +;; @0031 v5 = iadd v4, v3 +;; @0031 v6 = sload8.i64 little region4 v5 ;; @0034 jump block1 ;; ;; block1: -;; @0034 return v7 +;; @0034 return v6 ;; } diff --git a/tests/disas/i64-load8-u.wat b/tests/disas/i64-load8-u.wat index 0f86592db4fb..b1e6d4a172b5 100644 --- a/tests/disas/i64-load8-u.wat +++ b/tests/disas/i64-load8-u.wat @@ -20,12 +20,12 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i32): -;; @0031 v4 = uextend.i64 v2 -;; @0031 v5 = load.i64 notrap aligned readonly can_move region2 v0+56 -;; @0031 v6 = iadd v5, v4 -;; @0031 v7 = uload8.i64 little region4 v6 +;; @0031 v3 = uextend.i64 v2 +;; @0031 v4 = load.i64 notrap aligned readonly can_move region2 v0+56 +;; @0031 v5 = iadd v4, v3 +;; @0031 v6 = uload8.i64 little region4 v5 ;; @0034 jump block1 ;; ;; block1: -;; @0034 return v7 +;; @0034 return v6 ;; } diff --git a/tests/disas/icall-simd.wat b/tests/disas/icall-simd.wat index 54b6a253993a..d9db0de9333b 100644 --- a/tests/disas/icall-simd.wat +++ b/tests/disas/icall-simd.wat @@ -23,38 +23,38 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i32, v3: i8x16): -;; @0033 v5 = iconst.i32 23 -;; @0033 v6 = icmp uge v2, v5 ; v5 = 23 -;; @0033 v7 = uextend.i64 v2 -;; @0033 v8 = load.i64 notrap aligned readonly can_move region2 v0+48 -;; @0033 v9 = iconst.i64 3 -;; @0033 v10 = ishl v7, v9 ; v9 = 3 -;; @0033 v11 = iadd v8, v10 -;; @0033 v12 = iconst.i64 0 -;; @0033 v13 = select_spectre_guard v6, v12, v11 ; v12 = 0 -;; @0033 v14 = load.i64 user6 aligned region3 v13 -;; @0033 v15 = iconst.i64 -2 -;; @0033 v16 = band v14, v15 ; v15 = -2 -;; @0033 brif v14, block3(v16), block2 +;; @0033 v4 = iconst.i32 23 +;; @0033 v5 = icmp uge v2, v4 ; v4 = 23 +;; @0033 v6 = uextend.i64 v2 +;; @0033 v7 = load.i64 notrap aligned readonly can_move region2 v0+48 +;; @0033 v8 = iconst.i64 3 +;; @0033 v9 = ishl v6, v8 ; v8 = 3 +;; @0033 v10 = iadd v7, v9 +;; @0033 v11 = iconst.i64 0 +;; @0033 v12 = select_spectre_guard v5, v11, v10 ; v11 = 0 +;; @0033 v13 = load.i64 user6 aligned region3 v12 +;; @0033 v14 = iconst.i64 -2 +;; @0033 v15 = band v13, v14 ; v14 = -2 +;; @0033 brif v13, block3(v15), block2 ;; ;; block2 cold: -;; @0033 v18 = iconst.i32 0 -;; @0033 v19 = uextend.i64 v2 -;; @0033 v20 = call fn0(v0, v18, v19) ; v18 = 0 -;; @0033 jump block3(v20) +;; @0033 v17 = iconst.i32 0 +;; @0033 v18 = uextend.i64 v2 +;; @0033 v19 = call fn0(v0, v17, v18) ; v17 = 0 +;; @0033 jump block3(v19) ;; -;; block3(v17: i64): -;; @0033 v21 = load.i64 notrap aligned readonly can_move region4 v0+40 -;; @0033 v22 = load.i32 notrap aligned readonly can_move v21 -;; @0033 v23 = load.i32 user7 aligned readonly v17+16 -;; @0033 v24 = icmp eq v23, v22 -;; @0033 v25 = uextend.i32 v24 -;; @0033 trapz v25, user8 -;; @0033 v26 = load.i64 notrap aligned readonly v17+8 -;; @0033 v27 = load.i64 notrap aligned readonly v17+24 -;; @0033 v28 = call_indirect sig0, v26(v27, v0, v3) +;; block3(v16: i64): +;; @0033 v20 = load.i64 notrap aligned readonly can_move region4 v0+40 +;; @0033 v21 = load.i32 notrap aligned readonly can_move v20 +;; @0033 v22 = load.i32 user7 aligned readonly v16+16 +;; @0033 v23 = icmp eq v22, v21 +;; @0033 v24 = uextend.i32 v23 +;; @0033 trapz v24, user8 +;; @0033 v25 = load.i64 notrap aligned readonly v16+8 +;; @0033 v26 = load.i64 notrap aligned readonly v16+24 +;; @0033 v27 = call_indirect sig0, v25(v26, v0, v3) ;; @0036 jump block1 ;; ;; block1: -;; @0036 return v28 +;; @0036 return v27 ;; } diff --git a/tests/disas/icall.wat b/tests/disas/icall.wat index d3cac126ba4e..9a3556df4ebc 100644 --- a/tests/disas/icall.wat +++ b/tests/disas/icall.wat @@ -23,38 +23,38 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i32, v3: f32): -;; @0033 v5 = iconst.i32 23 -;; @0033 v6 = icmp uge v2, v5 ; v5 = 23 -;; @0033 v7 = uextend.i64 v2 -;; @0033 v8 = load.i64 notrap aligned readonly can_move region2 v0+48 -;; @0033 v9 = iconst.i64 3 -;; @0033 v10 = ishl v7, v9 ; v9 = 3 -;; @0033 v11 = iadd v8, v10 -;; @0033 v12 = iconst.i64 0 -;; @0033 v13 = select_spectre_guard v6, v12, v11 ; v12 = 0 -;; @0033 v14 = load.i64 user6 aligned region3 v13 -;; @0033 v15 = iconst.i64 -2 -;; @0033 v16 = band v14, v15 ; v15 = -2 -;; @0033 brif v14, block3(v16), block2 +;; @0033 v4 = iconst.i32 23 +;; @0033 v5 = icmp uge v2, v4 ; v4 = 23 +;; @0033 v6 = uextend.i64 v2 +;; @0033 v7 = load.i64 notrap aligned readonly can_move region2 v0+48 +;; @0033 v8 = iconst.i64 3 +;; @0033 v9 = ishl v6, v8 ; v8 = 3 +;; @0033 v10 = iadd v7, v9 +;; @0033 v11 = iconst.i64 0 +;; @0033 v12 = select_spectre_guard v5, v11, v10 ; v11 = 0 +;; @0033 v13 = load.i64 user6 aligned region3 v12 +;; @0033 v14 = iconst.i64 -2 +;; @0033 v15 = band v13, v14 ; v14 = -2 +;; @0033 brif v13, block3(v15), block2 ;; ;; block2 cold: -;; @0033 v18 = iconst.i32 0 -;; @0033 v19 = uextend.i64 v2 -;; @0033 v20 = call fn0(v0, v18, v19) ; v18 = 0 -;; @0033 jump block3(v20) +;; @0033 v17 = iconst.i32 0 +;; @0033 v18 = uextend.i64 v2 +;; @0033 v19 = call fn0(v0, v17, v18) ; v17 = 0 +;; @0033 jump block3(v19) ;; -;; block3(v17: i64): -;; @0033 v21 = load.i64 notrap aligned readonly can_move region4 v0+40 -;; @0033 v22 = load.i32 notrap aligned readonly can_move v21 -;; @0033 v23 = load.i32 user7 aligned readonly v17+16 -;; @0033 v24 = icmp eq v23, v22 -;; @0033 v25 = uextend.i32 v24 -;; @0033 trapz v25, user8 -;; @0033 v26 = load.i64 notrap aligned readonly v17+8 -;; @0033 v27 = load.i64 notrap aligned readonly v17+24 -;; @0033 v28 = call_indirect sig0, v26(v27, v0, v3) +;; block3(v16: i64): +;; @0033 v20 = load.i64 notrap aligned readonly can_move region4 v0+40 +;; @0033 v21 = load.i32 notrap aligned readonly can_move v20 +;; @0033 v22 = load.i32 user7 aligned readonly v16+16 +;; @0033 v23 = icmp eq v22, v21 +;; @0033 v24 = uextend.i32 v23 +;; @0033 trapz v24, user8 +;; @0033 v25 = load.i64 notrap aligned readonly v16+8 +;; @0033 v26 = load.i64 notrap aligned readonly v16+24 +;; @0033 v27 = call_indirect sig0, v25(v26, v0, v3) ;; @0036 jump block1 ;; ;; block1: -;; @0036 return v28 +;; @0036 return v27 ;; } diff --git a/tests/disas/if-reachability-translation-1.wat b/tests/disas/if-reachability-translation-1.wat index 9927388fc0cc..20778eb7911a 100644 --- a/tests/disas/if-reachability-translation-1.wat +++ b/tests/disas/if-reachability-translation-1.wat @@ -31,9 +31,9 @@ ;; @0020 jump block3 ;; ;; block3: -;; @0021 v4 = iconst.i32 0 +;; @0021 v3 = iconst.i32 0 ;; @0023 jump block1 ;; ;; block1: -;; @0023 return v4 ; v4 = 0 +;; @0023 return v3 ; v3 = 0 ;; } diff --git a/tests/disas/if-reachability-translation-2.wat b/tests/disas/if-reachability-translation-2.wat index d0537025edf0..4721d37e8bd7 100644 --- a/tests/disas/if-reachability-translation-2.wat +++ b/tests/disas/if-reachability-translation-2.wat @@ -31,9 +31,9 @@ ;; @0020 jump block3 ;; ;; block3: -;; @0021 v4 = iconst.i32 0 +;; @0021 v3 = iconst.i32 0 ;; @0023 jump block1 ;; ;; block1: -;; @0023 return v4 ; v4 = 0 +;; @0023 return v3 ; v3 = 0 ;; } diff --git a/tests/disas/if-reachability-translation-3.wat b/tests/disas/if-reachability-translation-3.wat index 0cf8f6ff4bc5..b70b23bc93fe 100644 --- a/tests/disas/if-reachability-translation-3.wat +++ b/tests/disas/if-reachability-translation-3.wat @@ -31,9 +31,9 @@ ;; @001f trap user12 ;; ;; block3: -;; @0021 v4 = iconst.i32 0 +;; @0021 v3 = iconst.i32 0 ;; @0023 jump block1 ;; ;; block1: -;; @0023 return v4 ; v4 = 0 +;; @0023 return v3 ; v3 = 0 ;; } diff --git a/tests/disas/if-reachability-translation-5.wat b/tests/disas/if-reachability-translation-5.wat index 9bb409436f3e..f669b4799b69 100644 --- a/tests/disas/if-reachability-translation-5.wat +++ b/tests/disas/if-reachability-translation-5.wat @@ -36,9 +36,9 @@ ;; @0024 trap user12 ;; ;; block3: -;; @0026 v5 = iconst.i32 0 +;; @0026 v4 = iconst.i32 0 ;; @0028 jump block1 ;; ;; block1: -;; @0028 return v5 ; v5 = 0 +;; @0028 return v4 ; v4 = 0 ;; } diff --git a/tests/disas/if-reachability-translation-6.wat b/tests/disas/if-reachability-translation-6.wat index 2b3ba1c7dec6..81be35618316 100644 --- a/tests/disas/if-reachability-translation-6.wat +++ b/tests/disas/if-reachability-translation-6.wat @@ -36,9 +36,9 @@ ;; @0024 trap user12 ;; ;; block3: -;; @0026 v5 = iconst.i32 0 +;; @0026 v4 = iconst.i32 0 ;; @0028 jump block1 ;; ;; block1: -;; @0028 return v5 ; v5 = 0 +;; @0028 return v4 ; v4 = 0 ;; } diff --git a/tests/disas/if-unreachable-else-params-2.wat b/tests/disas/if-unreachable-else-params-2.wat index 349794c2d849..8862bbf64393 100644 --- a/tests/disas/if-unreachable-else-params-2.wat +++ b/tests/disas/if-unreachable-else-params-2.wat @@ -31,14 +31,14 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i32, v3: i32): -;; @0049 v5 = f64const 0x1.0000000000000p0 +;; @0049 v4 = f64const 0x1.0000000000000p0 ;; @0056 brif v3, block2, block4 ;; ;; block2: -;; @0058 v7 = uextend.i64 v2 -;; @0058 v8 = load.i64 notrap aligned readonly can_move region2 v0+56 -;; @0058 v9 = iadd v8, v7 -;; @0058 v10 = sload16.i64 little region4 v9 +;; @0058 v5 = uextend.i64 v2 +;; @0058 v6 = load.i64 notrap aligned readonly can_move region2 v0+56 +;; @0058 v7 = iadd v6, v5 +;; @0058 v8 = sload16.i64 little region4 v7 ;; @005c jump block3 ;; ;; block4: @@ -48,5 +48,5 @@ ;; @005f jump block1 ;; ;; block1: -;; @005f return v5 ; v5 = 0x1.0000000000000p0 +;; @005f return v4 ; v4 = 0x1.0000000000000p0 ;; } diff --git a/tests/disas/if-unreachable-else-params.wat b/tests/disas/if-unreachable-else-params.wat index 57de84282a10..9f6ebd830f18 100644 --- a/tests/disas/if-unreachable-else-params.wat +++ b/tests/disas/if-unreachable-else-params.wat @@ -61,13 +61,13 @@ ;; @0049 brif.i32 v2, block4, block6 ;; ;; block4: -;; @004b v7 = uextend.i64 v3 ; v3 = 35 -;; @004b v8 = load.i64 notrap aligned readonly can_move region2 v0+56 -;; @004b v9 = iadd v8, v7 -;; @004b v10 = sload16.i64 little region4 v9 +;; @004b v6 = uextend.i64 v3 ; v3 = 35 +;; @004b v7 = load.i64 notrap aligned readonly can_move region2 v0+56 +;; @004b v8 = iadd v7, v6 +;; @004b v9 = sload16.i64 little region4 v8 ;; @004e trap user12 ;; ;; block6: -;; @005d v11 = popcnt.i32 v3 ; v3 = 35 +;; @005d v10 = popcnt.i32 v3 ; v3 = 35 ;; @0060 return ;; } diff --git a/tests/disas/indirect-call-no-caching.wat b/tests/disas/indirect-call-no-caching.wat index b5f4608ef757..01d7d3f19dee 100644 --- a/tests/disas/indirect-call-no-caching.wat +++ b/tests/disas/indirect-call-no-caching.wat @@ -29,11 +29,11 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64): -;; @003f v3 = iconst.i32 1 +;; @003f v2 = iconst.i32 1 ;; @0041 jump block1 ;; ;; block1: -;; @0041 return v3 ; v3 = 1 +;; @0041 return v2 ; v2 = 1 ;; } ;; ;; function u0:1(i64 vmctx, i64) -> i32 tail { @@ -45,11 +45,11 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64): -;; @0044 v3 = iconst.i32 2 +;; @0044 v2 = iconst.i32 2 ;; @0046 jump block1 ;; ;; block1: -;; @0046 return v3 ; v3 = 2 +;; @0046 return v2 ; v2 = 2 ;; } ;; ;; function u0:2(i64 vmctx, i64) -> i32 tail { @@ -61,11 +61,11 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64): -;; @0049 v3 = iconst.i32 3 +;; @0049 v2 = iconst.i32 3 ;; @004b jump block1 ;; ;; block1: -;; @004b return v3 ; v3 = 3 +;; @004b return v2 ; v2 = 3 ;; } ;; ;; function u0:3(i64 vmctx, i64, i32) -> i32 tail { @@ -83,38 +83,38 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i32): -;; @0050 v4 = iconst.i32 10 -;; @0050 v5 = icmp uge v2, v4 ; v4 = 10 -;; @0050 v6 = uextend.i64 v2 -;; @0050 v7 = load.i64 notrap aligned readonly can_move region2 v0+48 -;; @0050 v8 = iconst.i64 3 -;; @0050 v9 = ishl v6, v8 ; v8 = 3 -;; @0050 v10 = iadd v7, v9 -;; @0050 v11 = iconst.i64 0 -;; @0050 v12 = select_spectre_guard v5, v11, v10 ; v11 = 0 -;; @0050 v13 = load.i64 user6 aligned region3 v12 -;; @0050 v14 = iconst.i64 -2 -;; @0050 v15 = band v13, v14 ; v14 = -2 -;; @0050 brif v13, block3(v15), block2 +;; @0050 v3 = iconst.i32 10 +;; @0050 v4 = icmp uge v2, v3 ; v3 = 10 +;; @0050 v5 = uextend.i64 v2 +;; @0050 v6 = load.i64 notrap aligned readonly can_move region2 v0+48 +;; @0050 v7 = iconst.i64 3 +;; @0050 v8 = ishl v5, v7 ; v7 = 3 +;; @0050 v9 = iadd v6, v8 +;; @0050 v10 = iconst.i64 0 +;; @0050 v11 = select_spectre_guard v4, v10, v9 ; v10 = 0 +;; @0050 v12 = load.i64 user6 aligned region3 v11 +;; @0050 v13 = iconst.i64 -2 +;; @0050 v14 = band v12, v13 ; v13 = -2 +;; @0050 brif v12, block3(v14), block2 ;; ;; block2 cold: -;; @0050 v17 = iconst.i32 0 -;; @0050 v18 = uextend.i64 v2 -;; @0050 v19 = call fn0(v0, v17, v18) ; v17 = 0 -;; @0050 jump block3(v19) +;; @0050 v16 = iconst.i32 0 +;; @0050 v17 = uextend.i64 v2 +;; @0050 v18 = call fn0(v0, v16, v17) ; v16 = 0 +;; @0050 jump block3(v18) ;; -;; block3(v16: i64): -;; @0050 v20 = load.i64 notrap aligned readonly can_move region4 v0+40 -;; @0050 v21 = load.i32 notrap aligned readonly can_move v20 -;; @0050 v22 = load.i32 user7 aligned readonly v16+16 -;; @0050 v23 = icmp eq v22, v21 -;; @0050 v24 = uextend.i32 v23 -;; @0050 trapz v24, user8 -;; @0050 v25 = load.i64 notrap aligned readonly v16+8 -;; @0050 v26 = load.i64 notrap aligned readonly v16+24 -;; @0050 v27 = call_indirect sig0, v25(v26, v0) +;; block3(v15: i64): +;; @0050 v19 = load.i64 notrap aligned readonly can_move region4 v0+40 +;; @0050 v20 = load.i32 notrap aligned readonly can_move v19 +;; @0050 v21 = load.i32 user7 aligned readonly v15+16 +;; @0050 v22 = icmp eq v21, v20 +;; @0050 v23 = uextend.i32 v22 +;; @0050 trapz v23, user8 +;; @0050 v24 = load.i64 notrap aligned readonly v15+8 +;; @0050 v25 = load.i64 notrap aligned readonly v15+24 +;; @0050 v26 = call_indirect sig0, v24(v25, v0) ;; @0053 jump block1 ;; ;; block1: -;; @0053 return v27 +;; @0053 return v26 ;; } diff --git a/tests/disas/intra-module-inlining.wat b/tests/disas/intra-module-inlining.wat index 6ae5be9fb0ea..8023c5281a62 100644 --- a/tests/disas/intra-module-inlining.wat +++ b/tests/disas/intra-module-inlining.wat @@ -21,8 +21,8 @@ ;; @001b jump block1 ;; ;; block1: -;; @0019 v3 = iconst.i32 42 -;; @001b return v3 ; v3 = 42 +;; @0019 v2 = iconst.i32 42 +;; @001b return v2 ; v2 = 42 ;; } ;; ;; function u0:1(i64 vmctx, i64) -> i32 tail { @@ -51,6 +51,6 @@ ;; @0020 jump block1 ;; ;; block1: -;; v6 = iconst.i32 42 -;; @0020 return v6 ; v6 = 42 +;; v4 = iconst.i32 42 +;; @0020 return v4 ; v4 = 42 ;; } diff --git a/tests/disas/issue-10929-v128-icmp-egraphs.wat b/tests/disas/issue-10929-v128-icmp-egraphs.wat index 3e126a9fc8de..dab6c06c19e9 100644 --- a/tests/disas/issue-10929-v128-icmp-egraphs.wat +++ b/tests/disas/issue-10929-v128-icmp-egraphs.wat @@ -23,7 +23,7 @@ ;; @0025 jump block1 ;; ;; block1: -;; v9 = vconst.i8x16 const0 -;; @0023 v6 = icmp.i8x16 ne v2, v9 ; v9 = const0 -;; @0025 return v6 +;; v8 = vconst.i8x16 const0 +;; @0023 v5 = icmp.i8x16 ne v2, v8 ; v8 = const0 +;; @0025 return v5 ;; } diff --git a/tests/disas/issue-5696.wat b/tests/disas/issue-5696.wat index e92d2f9a5f2d..9b937055d4da 100644 --- a/tests/disas/issue-5696.wat +++ b/tests/disas/issue-5696.wat @@ -21,6 +21,6 @@ ;; @001e jump block1 ;; ;; block1: -;; v7 = iconst.i64 0 -;; @001e return v7 ; v7 = 0 +;; v6 = iconst.i64 0 +;; @001e return v6 ; v6 = 0 ;; } diff --git a/tests/disas/load-store/load_store_dynamic_kind_i32_index_0_guard_no_spectre_i32_access_0_offset.wat b/tests/disas/load-store/load_store_dynamic_kind_i32_index_0_guard_no_spectre_i32_access_0_offset.wat index 2646b5f2abbf..8a0a42dc130c 100644 --- a/tests/disas/load-store/load_store_dynamic_kind_i32_index_0_guard_no_spectre_i32_access_0_offset.wat +++ b/tests/disas/load-store/load_store_dynamic_kind_i32_index_0_guard_no_spectre_i32_access_0_offset.wat @@ -57,17 +57,17 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i32): -;; @0048 v4 = uextend.i64 v2 -;; @0048 v5 = load.i64 notrap aligned region3 v0+64 -;; @0048 v6 = iconst.i64 4 -;; @0048 v7 = isub v5, v6 ; v6 = 4 -;; @0048 v8 = icmp ugt v4, v7 -;; @0048 trapnz v8, heap_oob -;; @0048 v9 = load.i64 notrap aligned can_move region2 v0+56 -;; @0048 v10 = iadd v9, v4 -;; @0048 v11 = load.i32 little region4 v10 +;; @0048 v3 = uextend.i64 v2 +;; @0048 v4 = load.i64 notrap aligned region3 v0+64 +;; @0048 v5 = iconst.i64 4 +;; @0048 v6 = isub v4, v5 ; v5 = 4 +;; @0048 v7 = icmp ugt v3, v6 +;; @0048 trapnz v7, heap_oob +;; @0048 v8 = load.i64 notrap aligned can_move region2 v0+56 +;; @0048 v9 = iadd v8, v3 +;; @0048 v10 = load.i32 little region4 v9 ;; @004b jump block1 ;; ;; block1: -;; @004b return v11 +;; @004b return v10 ;; } diff --git a/tests/disas/load-store/load_store_dynamic_kind_i32_index_0_guard_no_spectre_i32_access_0x1000_offset.wat b/tests/disas/load-store/load_store_dynamic_kind_i32_index_0_guard_no_spectre_i32_access_0x1000_offset.wat index 441a6a3213e1..64da5e68244b 100644 --- a/tests/disas/load-store/load_store_dynamic_kind_i32_index_0_guard_no_spectre_i32_access_0x1000_offset.wat +++ b/tests/disas/load-store/load_store_dynamic_kind_i32_index_0_guard_no_spectre_i32_access_0x1000_offset.wat @@ -59,19 +59,19 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i32): -;; @0049 v4 = uextend.i64 v2 -;; @0049 v5 = load.i64 notrap aligned region3 v0+64 -;; @0049 v6 = iconst.i64 4100 -;; @0049 v7 = isub v5, v6 ; v6 = 4100 -;; @0049 v8 = icmp ugt v4, v7 -;; @0049 trapnz v8, heap_oob -;; @0049 v9 = load.i64 notrap aligned can_move region2 v0+56 -;; @0049 v10 = iadd v9, v4 -;; @0049 v11 = iconst.i64 4096 -;; @0049 v12 = iadd v10, v11 ; v11 = 4096 -;; @0049 v13 = load.i32 little region4 v12 +;; @0049 v3 = uextend.i64 v2 +;; @0049 v4 = load.i64 notrap aligned region3 v0+64 +;; @0049 v5 = iconst.i64 4100 +;; @0049 v6 = isub v4, v5 ; v5 = 4100 +;; @0049 v7 = icmp ugt v3, v6 +;; @0049 trapnz v7, heap_oob +;; @0049 v8 = load.i64 notrap aligned can_move region2 v0+56 +;; @0049 v9 = iadd v8, v3 +;; @0049 v10 = iconst.i64 4096 +;; @0049 v11 = iadd v9, v10 ; v10 = 4096 +;; @0049 v12 = load.i32 little region4 v11 ;; @004d jump block1 ;; ;; block1: -;; @004d return v13 +;; @004d return v12 ;; } diff --git a/tests/disas/load-store/load_store_dynamic_kind_i32_index_0_guard_no_spectre_i32_access_0xffff0000_offset.wat b/tests/disas/load-store/load_store_dynamic_kind_i32_index_0_guard_no_spectre_i32_access_0xffff0000_offset.wat index 58d782cc2b07..904b2903f147 100644 --- a/tests/disas/load-store/load_store_dynamic_kind_i32_index_0_guard_no_spectre_i32_access_0xffff0000_offset.wat +++ b/tests/disas/load-store/load_store_dynamic_kind_i32_index_0_guard_no_spectre_i32_access_0xffff0000_offset.wat @@ -59,19 +59,19 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i32): -;; @004c v4 = uextend.i64 v2 -;; @004c v5 = iconst.i64 0xffff_0004 -;; @004c v6 = uadd_overflow_trap v4, v5, heap_oob ; v5 = 0xffff_0004 -;; @004c v7 = load.i64 notrap aligned region3 v0+64 -;; @004c v8 = icmp ugt v6, v7 -;; @004c trapnz v8, heap_oob -;; @004c v9 = load.i64 notrap aligned can_move region2 v0+56 -;; @004c v10 = iadd v9, v4 -;; @004c v11 = iconst.i64 0xffff_0000 -;; @004c v12 = iadd v10, v11 ; v11 = 0xffff_0000 -;; @004c v13 = load.i32 little region4 v12 +;; @004c v3 = uextend.i64 v2 +;; @004c v4 = iconst.i64 0xffff_0004 +;; @004c v5 = uadd_overflow_trap v3, v4, heap_oob ; v4 = 0xffff_0004 +;; @004c v6 = load.i64 notrap aligned region3 v0+64 +;; @004c v7 = icmp ugt v5, v6 +;; @004c trapnz v7, heap_oob +;; @004c v8 = load.i64 notrap aligned can_move region2 v0+56 +;; @004c v9 = iadd v8, v3 +;; @004c v10 = iconst.i64 0xffff_0000 +;; @004c v11 = iadd v9, v10 ; v10 = 0xffff_0000 +;; @004c v12 = load.i32 little region4 v11 ;; @0053 jump block1 ;; ;; block1: -;; @0053 return v13 +;; @0053 return v12 ;; } diff --git a/tests/disas/load-store/load_store_dynamic_kind_i32_index_0_guard_no_spectre_i8_access_0_offset.wat b/tests/disas/load-store/load_store_dynamic_kind_i32_index_0_guard_no_spectre_i8_access_0_offset.wat index ec2feff46d2f..50469e3de634 100644 --- a/tests/disas/load-store/load_store_dynamic_kind_i32_index_0_guard_no_spectre_i8_access_0_offset.wat +++ b/tests/disas/load-store/load_store_dynamic_kind_i32_index_0_guard_no_spectre_i8_access_0_offset.wat @@ -55,15 +55,15 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i32): -;; @0048 v4 = uextend.i64 v2 -;; @0048 v5 = load.i64 notrap aligned region3 v0+64 -;; @0048 v6 = icmp uge v4, v5 -;; @0048 trapnz v6, heap_oob -;; @0048 v7 = load.i64 notrap aligned can_move region2 v0+56 -;; @0048 v8 = iadd v7, v4 -;; @0048 v9 = uload8.i32 little region4 v8 +;; @0048 v3 = uextend.i64 v2 +;; @0048 v4 = load.i64 notrap aligned region3 v0+64 +;; @0048 v5 = icmp uge v3, v4 +;; @0048 trapnz v5, heap_oob +;; @0048 v6 = load.i64 notrap aligned can_move region2 v0+56 +;; @0048 v7 = iadd v6, v3 +;; @0048 v8 = uload8.i32 little region4 v7 ;; @004b jump block1 ;; ;; block1: -;; @004b return v9 +;; @004b return v8 ;; } diff --git a/tests/disas/load-store/load_store_dynamic_kind_i32_index_0_guard_no_spectre_i8_access_0x1000_offset.wat b/tests/disas/load-store/load_store_dynamic_kind_i32_index_0_guard_no_spectre_i8_access_0x1000_offset.wat index 68db627f6e23..b9063f3a600e 100644 --- a/tests/disas/load-store/load_store_dynamic_kind_i32_index_0_guard_no_spectre_i8_access_0x1000_offset.wat +++ b/tests/disas/load-store/load_store_dynamic_kind_i32_index_0_guard_no_spectre_i8_access_0x1000_offset.wat @@ -59,19 +59,19 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i32): -;; @0049 v4 = uextend.i64 v2 -;; @0049 v5 = load.i64 notrap aligned region3 v0+64 -;; @0049 v6 = iconst.i64 4097 -;; @0049 v7 = isub v5, v6 ; v6 = 4097 -;; @0049 v8 = icmp ugt v4, v7 -;; @0049 trapnz v8, heap_oob -;; @0049 v9 = load.i64 notrap aligned can_move region2 v0+56 -;; @0049 v10 = iadd v9, v4 -;; @0049 v11 = iconst.i64 4096 -;; @0049 v12 = iadd v10, v11 ; v11 = 4096 -;; @0049 v13 = uload8.i32 little region4 v12 +;; @0049 v3 = uextend.i64 v2 +;; @0049 v4 = load.i64 notrap aligned region3 v0+64 +;; @0049 v5 = iconst.i64 4097 +;; @0049 v6 = isub v4, v5 ; v5 = 4097 +;; @0049 v7 = icmp ugt v3, v6 +;; @0049 trapnz v7, heap_oob +;; @0049 v8 = load.i64 notrap aligned can_move region2 v0+56 +;; @0049 v9 = iadd v8, v3 +;; @0049 v10 = iconst.i64 4096 +;; @0049 v11 = iadd v9, v10 ; v10 = 4096 +;; @0049 v12 = uload8.i32 little region4 v11 ;; @004d jump block1 ;; ;; block1: -;; @004d return v13 +;; @004d return v12 ;; } diff --git a/tests/disas/load-store/load_store_dynamic_kind_i32_index_0_guard_no_spectre_i8_access_0xffff0000_offset.wat b/tests/disas/load-store/load_store_dynamic_kind_i32_index_0_guard_no_spectre_i8_access_0xffff0000_offset.wat index f4c87b91b9bd..e3d204ea36c2 100644 --- a/tests/disas/load-store/load_store_dynamic_kind_i32_index_0_guard_no_spectre_i8_access_0xffff0000_offset.wat +++ b/tests/disas/load-store/load_store_dynamic_kind_i32_index_0_guard_no_spectre_i8_access_0xffff0000_offset.wat @@ -59,19 +59,19 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i32): -;; @004c v4 = uextend.i64 v2 -;; @004c v5 = iconst.i64 0xffff_0001 -;; @004c v6 = uadd_overflow_trap v4, v5, heap_oob ; v5 = 0xffff_0001 -;; @004c v7 = load.i64 notrap aligned region3 v0+64 -;; @004c v8 = icmp ugt v6, v7 -;; @004c trapnz v8, heap_oob -;; @004c v9 = load.i64 notrap aligned can_move region2 v0+56 -;; @004c v10 = iadd v9, v4 -;; @004c v11 = iconst.i64 0xffff_0000 -;; @004c v12 = iadd v10, v11 ; v11 = 0xffff_0000 -;; @004c v13 = uload8.i32 little region4 v12 +;; @004c v3 = uextend.i64 v2 +;; @004c v4 = iconst.i64 0xffff_0001 +;; @004c v5 = uadd_overflow_trap v3, v4, heap_oob ; v4 = 0xffff_0001 +;; @004c v6 = load.i64 notrap aligned region3 v0+64 +;; @004c v7 = icmp ugt v5, v6 +;; @004c trapnz v7, heap_oob +;; @004c v8 = load.i64 notrap aligned can_move region2 v0+56 +;; @004c v9 = iadd v8, v3 +;; @004c v10 = iconst.i64 0xffff_0000 +;; @004c v11 = iadd v9, v10 ; v10 = 0xffff_0000 +;; @004c v12 = uload8.i32 little region4 v11 ;; @0053 jump block1 ;; ;; block1: -;; @0053 return v13 +;; @0053 return v12 ;; } diff --git a/tests/disas/load-store/load_store_dynamic_kind_i32_index_0_guard_yes_spectre_i32_access_0_offset.wat b/tests/disas/load-store/load_store_dynamic_kind_i32_index_0_guard_yes_spectre_i32_access_0_offset.wat index 537d33baf392..80e92a0ce323 100644 --- a/tests/disas/load-store/load_store_dynamic_kind_i32_index_0_guard_yes_spectre_i32_access_0_offset.wat +++ b/tests/disas/load-store/load_store_dynamic_kind_i32_index_0_guard_yes_spectre_i32_access_0_offset.wat @@ -58,18 +58,18 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i32): -;; @0048 v4 = uextend.i64 v2 -;; @0048 v5 = load.i64 notrap aligned region3 v0+64 -;; @0048 v6 = iconst.i64 4 -;; @0048 v7 = isub v5, v6 ; v6 = 4 -;; @0048 v8 = icmp ugt v4, v7 -;; @0048 v9 = load.i64 notrap aligned can_move region2 v0+56 -;; @0048 v10 = iadd v9, v4 -;; @0048 v11 = iconst.i64 0 -;; @0048 v12 = select_spectre_guard v8, v11, v10 ; v11 = 0 -;; @0048 v13 = load.i32 little region4 v12 +;; @0048 v3 = uextend.i64 v2 +;; @0048 v4 = load.i64 notrap aligned region3 v0+64 +;; @0048 v5 = iconst.i64 4 +;; @0048 v6 = isub v4, v5 ; v5 = 4 +;; @0048 v7 = icmp ugt v3, v6 +;; @0048 v8 = load.i64 notrap aligned can_move region2 v0+56 +;; @0048 v9 = iadd v8, v3 +;; @0048 v10 = iconst.i64 0 +;; @0048 v11 = select_spectre_guard v7, v10, v9 ; v10 = 0 +;; @0048 v12 = load.i32 little region4 v11 ;; @004b jump block1 ;; ;; block1: -;; @004b return v13 +;; @004b return v12 ;; } diff --git a/tests/disas/load-store/load_store_dynamic_kind_i32_index_0_guard_yes_spectre_i32_access_0x1000_offset.wat b/tests/disas/load-store/load_store_dynamic_kind_i32_index_0_guard_yes_spectre_i32_access_0x1000_offset.wat index 118ee8b1ff87..fac9ebac2ceb 100644 --- a/tests/disas/load-store/load_store_dynamic_kind_i32_index_0_guard_yes_spectre_i32_access_0x1000_offset.wat +++ b/tests/disas/load-store/load_store_dynamic_kind_i32_index_0_guard_yes_spectre_i32_access_0x1000_offset.wat @@ -60,20 +60,20 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i32): -;; @0049 v4 = uextend.i64 v2 -;; @0049 v5 = load.i64 notrap aligned region3 v0+64 -;; @0049 v6 = iconst.i64 4100 -;; @0049 v7 = isub v5, v6 ; v6 = 4100 -;; @0049 v8 = icmp ugt v4, v7 -;; @0049 v9 = load.i64 notrap aligned can_move region2 v0+56 -;; @0049 v10 = iadd v9, v4 -;; @0049 v11 = iconst.i64 4096 -;; @0049 v12 = iadd v10, v11 ; v11 = 4096 -;; @0049 v13 = iconst.i64 0 -;; @0049 v14 = select_spectre_guard v8, v13, v12 ; v13 = 0 -;; @0049 v15 = load.i32 little region4 v14 +;; @0049 v3 = uextend.i64 v2 +;; @0049 v4 = load.i64 notrap aligned region3 v0+64 +;; @0049 v5 = iconst.i64 4100 +;; @0049 v6 = isub v4, v5 ; v5 = 4100 +;; @0049 v7 = icmp ugt v3, v6 +;; @0049 v8 = load.i64 notrap aligned can_move region2 v0+56 +;; @0049 v9 = iadd v8, v3 +;; @0049 v10 = iconst.i64 4096 +;; @0049 v11 = iadd v9, v10 ; v10 = 4096 +;; @0049 v12 = iconst.i64 0 +;; @0049 v13 = select_spectre_guard v7, v12, v11 ; v12 = 0 +;; @0049 v14 = load.i32 little region4 v13 ;; @004d jump block1 ;; ;; block1: -;; @004d return v15 +;; @004d return v14 ;; } diff --git a/tests/disas/load-store/load_store_dynamic_kind_i32_index_0_guard_yes_spectre_i32_access_0xffff0000_offset.wat b/tests/disas/load-store/load_store_dynamic_kind_i32_index_0_guard_yes_spectre_i32_access_0xffff0000_offset.wat index 2e877ddac36f..7433a48cde3b 100644 --- a/tests/disas/load-store/load_store_dynamic_kind_i32_index_0_guard_yes_spectre_i32_access_0xffff0000_offset.wat +++ b/tests/disas/load-store/load_store_dynamic_kind_i32_index_0_guard_yes_spectre_i32_access_0xffff0000_offset.wat @@ -60,20 +60,20 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i32): -;; @004c v4 = uextend.i64 v2 -;; @004c v5 = iconst.i64 0xffff_0004 -;; @004c v6 = uadd_overflow_trap v4, v5, heap_oob ; v5 = 0xffff_0004 -;; @004c v7 = load.i64 notrap aligned region3 v0+64 -;; @004c v8 = icmp ugt v6, v7 -;; @004c v9 = load.i64 notrap aligned can_move region2 v0+56 -;; @004c v10 = iadd v9, v4 -;; @004c v11 = iconst.i64 0xffff_0000 -;; @004c v12 = iadd v10, v11 ; v11 = 0xffff_0000 -;; @004c v13 = iconst.i64 0 -;; @004c v14 = select_spectre_guard v8, v13, v12 ; v13 = 0 -;; @004c v15 = load.i32 little region4 v14 +;; @004c v3 = uextend.i64 v2 +;; @004c v4 = iconst.i64 0xffff_0004 +;; @004c v5 = uadd_overflow_trap v3, v4, heap_oob ; v4 = 0xffff_0004 +;; @004c v6 = load.i64 notrap aligned region3 v0+64 +;; @004c v7 = icmp ugt v5, v6 +;; @004c v8 = load.i64 notrap aligned can_move region2 v0+56 +;; @004c v9 = iadd v8, v3 +;; @004c v10 = iconst.i64 0xffff_0000 +;; @004c v11 = iadd v9, v10 ; v10 = 0xffff_0000 +;; @004c v12 = iconst.i64 0 +;; @004c v13 = select_spectre_guard v7, v12, v11 ; v12 = 0 +;; @004c v14 = load.i32 little region4 v13 ;; @0053 jump block1 ;; ;; block1: -;; @0053 return v15 +;; @0053 return v14 ;; } diff --git a/tests/disas/load-store/load_store_dynamic_kind_i32_index_0_guard_yes_spectre_i8_access_0_offset.wat b/tests/disas/load-store/load_store_dynamic_kind_i32_index_0_guard_yes_spectre_i8_access_0_offset.wat index 2a7e3b83a5f3..ccc9199224d5 100644 --- a/tests/disas/load-store/load_store_dynamic_kind_i32_index_0_guard_yes_spectre_i8_access_0_offset.wat +++ b/tests/disas/load-store/load_store_dynamic_kind_i32_index_0_guard_yes_spectre_i8_access_0_offset.wat @@ -56,16 +56,16 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i32): -;; @0048 v4 = uextend.i64 v2 -;; @0048 v5 = load.i64 notrap aligned region3 v0+64 -;; @0048 v6 = icmp uge v4, v5 -;; @0048 v7 = load.i64 notrap aligned can_move region2 v0+56 -;; @0048 v8 = iadd v7, v4 -;; @0048 v9 = iconst.i64 0 -;; @0048 v10 = select_spectre_guard v6, v9, v8 ; v9 = 0 -;; @0048 v11 = uload8.i32 little region4 v10 +;; @0048 v3 = uextend.i64 v2 +;; @0048 v4 = load.i64 notrap aligned region3 v0+64 +;; @0048 v5 = icmp uge v3, v4 +;; @0048 v6 = load.i64 notrap aligned can_move region2 v0+56 +;; @0048 v7 = iadd v6, v3 +;; @0048 v8 = iconst.i64 0 +;; @0048 v9 = select_spectre_guard v5, v8, v7 ; v8 = 0 +;; @0048 v10 = uload8.i32 little region4 v9 ;; @004b jump block1 ;; ;; block1: -;; @004b return v11 +;; @004b return v10 ;; } diff --git a/tests/disas/load-store/load_store_dynamic_kind_i32_index_0_guard_yes_spectre_i8_access_0x1000_offset.wat b/tests/disas/load-store/load_store_dynamic_kind_i32_index_0_guard_yes_spectre_i8_access_0x1000_offset.wat index 98918c204d26..2b606d0684a7 100644 --- a/tests/disas/load-store/load_store_dynamic_kind_i32_index_0_guard_yes_spectre_i8_access_0x1000_offset.wat +++ b/tests/disas/load-store/load_store_dynamic_kind_i32_index_0_guard_yes_spectre_i8_access_0x1000_offset.wat @@ -60,20 +60,20 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i32): -;; @0049 v4 = uextend.i64 v2 -;; @0049 v5 = load.i64 notrap aligned region3 v0+64 -;; @0049 v6 = iconst.i64 4097 -;; @0049 v7 = isub v5, v6 ; v6 = 4097 -;; @0049 v8 = icmp ugt v4, v7 -;; @0049 v9 = load.i64 notrap aligned can_move region2 v0+56 -;; @0049 v10 = iadd v9, v4 -;; @0049 v11 = iconst.i64 4096 -;; @0049 v12 = iadd v10, v11 ; v11 = 4096 -;; @0049 v13 = iconst.i64 0 -;; @0049 v14 = select_spectre_guard v8, v13, v12 ; v13 = 0 -;; @0049 v15 = uload8.i32 little region4 v14 +;; @0049 v3 = uextend.i64 v2 +;; @0049 v4 = load.i64 notrap aligned region3 v0+64 +;; @0049 v5 = iconst.i64 4097 +;; @0049 v6 = isub v4, v5 ; v5 = 4097 +;; @0049 v7 = icmp ugt v3, v6 +;; @0049 v8 = load.i64 notrap aligned can_move region2 v0+56 +;; @0049 v9 = iadd v8, v3 +;; @0049 v10 = iconst.i64 4096 +;; @0049 v11 = iadd v9, v10 ; v10 = 4096 +;; @0049 v12 = iconst.i64 0 +;; @0049 v13 = select_spectre_guard v7, v12, v11 ; v12 = 0 +;; @0049 v14 = uload8.i32 little region4 v13 ;; @004d jump block1 ;; ;; block1: -;; @004d return v15 +;; @004d return v14 ;; } diff --git a/tests/disas/load-store/load_store_dynamic_kind_i32_index_0_guard_yes_spectre_i8_access_0xffff0000_offset.wat b/tests/disas/load-store/load_store_dynamic_kind_i32_index_0_guard_yes_spectre_i8_access_0xffff0000_offset.wat index c0732433aba0..0fd0093afe41 100644 --- a/tests/disas/load-store/load_store_dynamic_kind_i32_index_0_guard_yes_spectre_i8_access_0xffff0000_offset.wat +++ b/tests/disas/load-store/load_store_dynamic_kind_i32_index_0_guard_yes_spectre_i8_access_0xffff0000_offset.wat @@ -60,20 +60,20 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i32): -;; @004c v4 = uextend.i64 v2 -;; @004c v5 = iconst.i64 0xffff_0001 -;; @004c v6 = uadd_overflow_trap v4, v5, heap_oob ; v5 = 0xffff_0001 -;; @004c v7 = load.i64 notrap aligned region3 v0+64 -;; @004c v8 = icmp ugt v6, v7 -;; @004c v9 = load.i64 notrap aligned can_move region2 v0+56 -;; @004c v10 = iadd v9, v4 -;; @004c v11 = iconst.i64 0xffff_0000 -;; @004c v12 = iadd v10, v11 ; v11 = 0xffff_0000 -;; @004c v13 = iconst.i64 0 -;; @004c v14 = select_spectre_guard v8, v13, v12 ; v13 = 0 -;; @004c v15 = uload8.i32 little region4 v14 +;; @004c v3 = uextend.i64 v2 +;; @004c v4 = iconst.i64 0xffff_0001 +;; @004c v5 = uadd_overflow_trap v3, v4, heap_oob ; v4 = 0xffff_0001 +;; @004c v6 = load.i64 notrap aligned region3 v0+64 +;; @004c v7 = icmp ugt v5, v6 +;; @004c v8 = load.i64 notrap aligned can_move region2 v0+56 +;; @004c v9 = iadd v8, v3 +;; @004c v10 = iconst.i64 0xffff_0000 +;; @004c v11 = iadd v9, v10 ; v10 = 0xffff_0000 +;; @004c v12 = iconst.i64 0 +;; @004c v13 = select_spectre_guard v7, v12, v11 ; v12 = 0 +;; @004c v14 = uload8.i32 little region4 v13 ;; @0053 jump block1 ;; ;; block1: -;; @0053 return v15 +;; @0053 return v14 ;; } diff --git a/tests/disas/load-store/load_store_dynamic_kind_i32_index_0xffffffff_guard_no_spectre_i32_access_0_offset.wat b/tests/disas/load-store/load_store_dynamic_kind_i32_index_0xffffffff_guard_no_spectre_i32_access_0_offset.wat index f04f4c796e1e..09488dc07b9b 100644 --- a/tests/disas/load-store/load_store_dynamic_kind_i32_index_0xffffffff_guard_no_spectre_i32_access_0_offset.wat +++ b/tests/disas/load-store/load_store_dynamic_kind_i32_index_0xffffffff_guard_no_spectre_i32_access_0_offset.wat @@ -55,15 +55,15 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i32): -;; @0048 v4 = uextend.i64 v2 -;; @0048 v5 = load.i64 notrap aligned region3 v0+64 -;; @0048 v6 = icmp ugt v4, v5 -;; @0048 trapnz v6, heap_oob -;; @0048 v7 = load.i64 notrap aligned can_move region2 v0+56 -;; @0048 v8 = iadd v7, v4 -;; @0048 v9 = load.i32 little region4 v8 +;; @0048 v3 = uextend.i64 v2 +;; @0048 v4 = load.i64 notrap aligned region3 v0+64 +;; @0048 v5 = icmp ugt v3, v4 +;; @0048 trapnz v5, heap_oob +;; @0048 v6 = load.i64 notrap aligned can_move region2 v0+56 +;; @0048 v7 = iadd v6, v3 +;; @0048 v8 = load.i32 little region4 v7 ;; @004b jump block1 ;; ;; block1: -;; @004b return v9 +;; @004b return v8 ;; } diff --git a/tests/disas/load-store/load_store_dynamic_kind_i32_index_0xffffffff_guard_no_spectre_i32_access_0x1000_offset.wat b/tests/disas/load-store/load_store_dynamic_kind_i32_index_0xffffffff_guard_no_spectre_i32_access_0x1000_offset.wat index 782dd81a903c..5e0a76b48085 100644 --- a/tests/disas/load-store/load_store_dynamic_kind_i32_index_0xffffffff_guard_no_spectre_i32_access_0x1000_offset.wat +++ b/tests/disas/load-store/load_store_dynamic_kind_i32_index_0xffffffff_guard_no_spectre_i32_access_0x1000_offset.wat @@ -57,17 +57,17 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i32): -;; @0049 v4 = uextend.i64 v2 -;; @0049 v5 = load.i64 notrap aligned region3 v0+64 -;; @0049 v6 = icmp ugt v4, v5 -;; @0049 trapnz v6, heap_oob -;; @0049 v7 = load.i64 notrap aligned can_move region2 v0+56 -;; @0049 v8 = iadd v7, v4 -;; @0049 v9 = iconst.i64 4096 -;; @0049 v10 = iadd v8, v9 ; v9 = 4096 -;; @0049 v11 = load.i32 little region4 v10 +;; @0049 v3 = uextend.i64 v2 +;; @0049 v4 = load.i64 notrap aligned region3 v0+64 +;; @0049 v5 = icmp ugt v3, v4 +;; @0049 trapnz v5, heap_oob +;; @0049 v6 = load.i64 notrap aligned can_move region2 v0+56 +;; @0049 v7 = iadd v6, v3 +;; @0049 v8 = iconst.i64 4096 +;; @0049 v9 = iadd v7, v8 ; v8 = 4096 +;; @0049 v10 = load.i32 little region4 v9 ;; @004d jump block1 ;; ;; block1: -;; @004d return v11 +;; @004d return v10 ;; } diff --git a/tests/disas/load-store/load_store_dynamic_kind_i32_index_0xffffffff_guard_no_spectre_i32_access_0xffff0000_offset.wat b/tests/disas/load-store/load_store_dynamic_kind_i32_index_0xffffffff_guard_no_spectre_i32_access_0xffff0000_offset.wat index 11f7674c75b9..df46ab7e9493 100644 --- a/tests/disas/load-store/load_store_dynamic_kind_i32_index_0xffffffff_guard_no_spectre_i32_access_0xffff0000_offset.wat +++ b/tests/disas/load-store/load_store_dynamic_kind_i32_index_0xffffffff_guard_no_spectre_i32_access_0xffff0000_offset.wat @@ -57,17 +57,17 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i32): -;; @004c v4 = uextend.i64 v2 -;; @004c v5 = load.i64 notrap aligned region3 v0+64 -;; @004c v6 = icmp ugt v4, v5 -;; @004c trapnz v6, heap_oob -;; @004c v7 = load.i64 notrap aligned can_move region2 v0+56 -;; @004c v8 = iadd v7, v4 -;; @004c v9 = iconst.i64 0xffff_0000 -;; @004c v10 = iadd v8, v9 ; v9 = 0xffff_0000 -;; @004c v11 = load.i32 little region4 v10 +;; @004c v3 = uextend.i64 v2 +;; @004c v4 = load.i64 notrap aligned region3 v0+64 +;; @004c v5 = icmp ugt v3, v4 +;; @004c trapnz v5, heap_oob +;; @004c v6 = load.i64 notrap aligned can_move region2 v0+56 +;; @004c v7 = iadd v6, v3 +;; @004c v8 = iconst.i64 0xffff_0000 +;; @004c v9 = iadd v7, v8 ; v8 = 0xffff_0000 +;; @004c v10 = load.i32 little region4 v9 ;; @0053 jump block1 ;; ;; block1: -;; @0053 return v11 +;; @0053 return v10 ;; } diff --git a/tests/disas/load-store/load_store_dynamic_kind_i32_index_0xffffffff_guard_no_spectre_i8_access_0_offset.wat b/tests/disas/load-store/load_store_dynamic_kind_i32_index_0xffffffff_guard_no_spectre_i8_access_0_offset.wat index e524a02e96ff..398bd76dacba 100644 --- a/tests/disas/load-store/load_store_dynamic_kind_i32_index_0xffffffff_guard_no_spectre_i8_access_0_offset.wat +++ b/tests/disas/load-store/load_store_dynamic_kind_i32_index_0xffffffff_guard_no_spectre_i8_access_0_offset.wat @@ -55,15 +55,15 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i32): -;; @0048 v4 = uextend.i64 v2 -;; @0048 v5 = load.i64 notrap aligned region3 v0+64 -;; @0048 v6 = icmp uge v4, v5 -;; @0048 trapnz v6, heap_oob -;; @0048 v7 = load.i64 notrap aligned can_move region2 v0+56 -;; @0048 v8 = iadd v7, v4 -;; @0048 v9 = uload8.i32 little region4 v8 +;; @0048 v3 = uextend.i64 v2 +;; @0048 v4 = load.i64 notrap aligned region3 v0+64 +;; @0048 v5 = icmp uge v3, v4 +;; @0048 trapnz v5, heap_oob +;; @0048 v6 = load.i64 notrap aligned can_move region2 v0+56 +;; @0048 v7 = iadd v6, v3 +;; @0048 v8 = uload8.i32 little region4 v7 ;; @004b jump block1 ;; ;; block1: -;; @004b return v9 +;; @004b return v8 ;; } diff --git a/tests/disas/load-store/load_store_dynamic_kind_i32_index_0xffffffff_guard_no_spectre_i8_access_0x1000_offset.wat b/tests/disas/load-store/load_store_dynamic_kind_i32_index_0xffffffff_guard_no_spectre_i8_access_0x1000_offset.wat index 598422ba3312..8b0d24833cc6 100644 --- a/tests/disas/load-store/load_store_dynamic_kind_i32_index_0xffffffff_guard_no_spectre_i8_access_0x1000_offset.wat +++ b/tests/disas/load-store/load_store_dynamic_kind_i32_index_0xffffffff_guard_no_spectre_i8_access_0x1000_offset.wat @@ -57,17 +57,17 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i32): -;; @0049 v4 = uextend.i64 v2 -;; @0049 v5 = load.i64 notrap aligned region3 v0+64 -;; @0049 v6 = icmp ugt v4, v5 -;; @0049 trapnz v6, heap_oob -;; @0049 v7 = load.i64 notrap aligned can_move region2 v0+56 -;; @0049 v8 = iadd v7, v4 -;; @0049 v9 = iconst.i64 4096 -;; @0049 v10 = iadd v8, v9 ; v9 = 4096 -;; @0049 v11 = uload8.i32 little region4 v10 +;; @0049 v3 = uextend.i64 v2 +;; @0049 v4 = load.i64 notrap aligned region3 v0+64 +;; @0049 v5 = icmp ugt v3, v4 +;; @0049 trapnz v5, heap_oob +;; @0049 v6 = load.i64 notrap aligned can_move region2 v0+56 +;; @0049 v7 = iadd v6, v3 +;; @0049 v8 = iconst.i64 4096 +;; @0049 v9 = iadd v7, v8 ; v8 = 4096 +;; @0049 v10 = uload8.i32 little region4 v9 ;; @004d jump block1 ;; ;; block1: -;; @004d return v11 +;; @004d return v10 ;; } diff --git a/tests/disas/load-store/load_store_dynamic_kind_i32_index_0xffffffff_guard_no_spectre_i8_access_0xffff0000_offset.wat b/tests/disas/load-store/load_store_dynamic_kind_i32_index_0xffffffff_guard_no_spectre_i8_access_0xffff0000_offset.wat index 50912d79378e..cce2570fbaae 100644 --- a/tests/disas/load-store/load_store_dynamic_kind_i32_index_0xffffffff_guard_no_spectre_i8_access_0xffff0000_offset.wat +++ b/tests/disas/load-store/load_store_dynamic_kind_i32_index_0xffffffff_guard_no_spectre_i8_access_0xffff0000_offset.wat @@ -57,17 +57,17 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i32): -;; @004c v4 = uextend.i64 v2 -;; @004c v5 = load.i64 notrap aligned region3 v0+64 -;; @004c v6 = icmp ugt v4, v5 -;; @004c trapnz v6, heap_oob -;; @004c v7 = load.i64 notrap aligned can_move region2 v0+56 -;; @004c v8 = iadd v7, v4 -;; @004c v9 = iconst.i64 0xffff_0000 -;; @004c v10 = iadd v8, v9 ; v9 = 0xffff_0000 -;; @004c v11 = uload8.i32 little region4 v10 +;; @004c v3 = uextend.i64 v2 +;; @004c v4 = load.i64 notrap aligned region3 v0+64 +;; @004c v5 = icmp ugt v3, v4 +;; @004c trapnz v5, heap_oob +;; @004c v6 = load.i64 notrap aligned can_move region2 v0+56 +;; @004c v7 = iadd v6, v3 +;; @004c v8 = iconst.i64 0xffff_0000 +;; @004c v9 = iadd v7, v8 ; v8 = 0xffff_0000 +;; @004c v10 = uload8.i32 little region4 v9 ;; @0053 jump block1 ;; ;; block1: -;; @0053 return v11 +;; @0053 return v10 ;; } diff --git a/tests/disas/load-store/load_store_dynamic_kind_i32_index_0xffffffff_guard_yes_spectre_i32_access_0_offset.wat b/tests/disas/load-store/load_store_dynamic_kind_i32_index_0xffffffff_guard_yes_spectre_i32_access_0_offset.wat index c0adcb7401a4..fa2358668c8d 100644 --- a/tests/disas/load-store/load_store_dynamic_kind_i32_index_0xffffffff_guard_yes_spectre_i32_access_0_offset.wat +++ b/tests/disas/load-store/load_store_dynamic_kind_i32_index_0xffffffff_guard_yes_spectre_i32_access_0_offset.wat @@ -56,16 +56,16 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i32): -;; @0048 v4 = uextend.i64 v2 -;; @0048 v5 = load.i64 notrap aligned region3 v0+64 -;; @0048 v6 = icmp ugt v4, v5 -;; @0048 v7 = load.i64 notrap aligned can_move region2 v0+56 -;; @0048 v8 = iadd v7, v4 -;; @0048 v9 = iconst.i64 0 -;; @0048 v10 = select_spectre_guard v6, v9, v8 ; v9 = 0 -;; @0048 v11 = load.i32 little region4 v10 +;; @0048 v3 = uextend.i64 v2 +;; @0048 v4 = load.i64 notrap aligned region3 v0+64 +;; @0048 v5 = icmp ugt v3, v4 +;; @0048 v6 = load.i64 notrap aligned can_move region2 v0+56 +;; @0048 v7 = iadd v6, v3 +;; @0048 v8 = iconst.i64 0 +;; @0048 v9 = select_spectre_guard v5, v8, v7 ; v8 = 0 +;; @0048 v10 = load.i32 little region4 v9 ;; @004b jump block1 ;; ;; block1: -;; @004b return v11 +;; @004b return v10 ;; } diff --git a/tests/disas/load-store/load_store_dynamic_kind_i32_index_0xffffffff_guard_yes_spectre_i32_access_0x1000_offset.wat b/tests/disas/load-store/load_store_dynamic_kind_i32_index_0xffffffff_guard_yes_spectre_i32_access_0x1000_offset.wat index bea943c8f697..8980cc9176ed 100644 --- a/tests/disas/load-store/load_store_dynamic_kind_i32_index_0xffffffff_guard_yes_spectre_i32_access_0x1000_offset.wat +++ b/tests/disas/load-store/load_store_dynamic_kind_i32_index_0xffffffff_guard_yes_spectre_i32_access_0x1000_offset.wat @@ -58,18 +58,18 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i32): -;; @0049 v4 = uextend.i64 v2 -;; @0049 v5 = load.i64 notrap aligned region3 v0+64 -;; @0049 v6 = icmp ugt v4, v5 -;; @0049 v7 = load.i64 notrap aligned can_move region2 v0+56 -;; @0049 v8 = iadd v7, v4 -;; @0049 v9 = iconst.i64 4096 -;; @0049 v10 = iadd v8, v9 ; v9 = 4096 -;; @0049 v11 = iconst.i64 0 -;; @0049 v12 = select_spectre_guard v6, v11, v10 ; v11 = 0 -;; @0049 v13 = load.i32 little region4 v12 +;; @0049 v3 = uextend.i64 v2 +;; @0049 v4 = load.i64 notrap aligned region3 v0+64 +;; @0049 v5 = icmp ugt v3, v4 +;; @0049 v6 = load.i64 notrap aligned can_move region2 v0+56 +;; @0049 v7 = iadd v6, v3 +;; @0049 v8 = iconst.i64 4096 +;; @0049 v9 = iadd v7, v8 ; v8 = 4096 +;; @0049 v10 = iconst.i64 0 +;; @0049 v11 = select_spectre_guard v5, v10, v9 ; v10 = 0 +;; @0049 v12 = load.i32 little region4 v11 ;; @004d jump block1 ;; ;; block1: -;; @004d return v13 +;; @004d return v12 ;; } diff --git a/tests/disas/load-store/load_store_dynamic_kind_i32_index_0xffffffff_guard_yes_spectre_i32_access_0xffff0000_offset.wat b/tests/disas/load-store/load_store_dynamic_kind_i32_index_0xffffffff_guard_yes_spectre_i32_access_0xffff0000_offset.wat index ff2a0ad97553..c7e5c3ae5aec 100644 --- a/tests/disas/load-store/load_store_dynamic_kind_i32_index_0xffffffff_guard_yes_spectre_i32_access_0xffff0000_offset.wat +++ b/tests/disas/load-store/load_store_dynamic_kind_i32_index_0xffffffff_guard_yes_spectre_i32_access_0xffff0000_offset.wat @@ -58,18 +58,18 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i32): -;; @004c v4 = uextend.i64 v2 -;; @004c v5 = load.i64 notrap aligned region3 v0+64 -;; @004c v6 = icmp ugt v4, v5 -;; @004c v7 = load.i64 notrap aligned can_move region2 v0+56 -;; @004c v8 = iadd v7, v4 -;; @004c v9 = iconst.i64 0xffff_0000 -;; @004c v10 = iadd v8, v9 ; v9 = 0xffff_0000 -;; @004c v11 = iconst.i64 0 -;; @004c v12 = select_spectre_guard v6, v11, v10 ; v11 = 0 -;; @004c v13 = load.i32 little region4 v12 +;; @004c v3 = uextend.i64 v2 +;; @004c v4 = load.i64 notrap aligned region3 v0+64 +;; @004c v5 = icmp ugt v3, v4 +;; @004c v6 = load.i64 notrap aligned can_move region2 v0+56 +;; @004c v7 = iadd v6, v3 +;; @004c v8 = iconst.i64 0xffff_0000 +;; @004c v9 = iadd v7, v8 ; v8 = 0xffff_0000 +;; @004c v10 = iconst.i64 0 +;; @004c v11 = select_spectre_guard v5, v10, v9 ; v10 = 0 +;; @004c v12 = load.i32 little region4 v11 ;; @0053 jump block1 ;; ;; block1: -;; @0053 return v13 +;; @0053 return v12 ;; } diff --git a/tests/disas/load-store/load_store_dynamic_kind_i32_index_0xffffffff_guard_yes_spectre_i8_access_0_offset.wat b/tests/disas/load-store/load_store_dynamic_kind_i32_index_0xffffffff_guard_yes_spectre_i8_access_0_offset.wat index cada2983ec01..007fe0966bb9 100644 --- a/tests/disas/load-store/load_store_dynamic_kind_i32_index_0xffffffff_guard_yes_spectre_i8_access_0_offset.wat +++ b/tests/disas/load-store/load_store_dynamic_kind_i32_index_0xffffffff_guard_yes_spectre_i8_access_0_offset.wat @@ -56,16 +56,16 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i32): -;; @0048 v4 = uextend.i64 v2 -;; @0048 v5 = load.i64 notrap aligned region3 v0+64 -;; @0048 v6 = icmp uge v4, v5 -;; @0048 v7 = load.i64 notrap aligned can_move region2 v0+56 -;; @0048 v8 = iadd v7, v4 -;; @0048 v9 = iconst.i64 0 -;; @0048 v10 = select_spectre_guard v6, v9, v8 ; v9 = 0 -;; @0048 v11 = uload8.i32 little region4 v10 +;; @0048 v3 = uextend.i64 v2 +;; @0048 v4 = load.i64 notrap aligned region3 v0+64 +;; @0048 v5 = icmp uge v3, v4 +;; @0048 v6 = load.i64 notrap aligned can_move region2 v0+56 +;; @0048 v7 = iadd v6, v3 +;; @0048 v8 = iconst.i64 0 +;; @0048 v9 = select_spectre_guard v5, v8, v7 ; v8 = 0 +;; @0048 v10 = uload8.i32 little region4 v9 ;; @004b jump block1 ;; ;; block1: -;; @004b return v11 +;; @004b return v10 ;; } diff --git a/tests/disas/load-store/load_store_dynamic_kind_i32_index_0xffffffff_guard_yes_spectre_i8_access_0x1000_offset.wat b/tests/disas/load-store/load_store_dynamic_kind_i32_index_0xffffffff_guard_yes_spectre_i8_access_0x1000_offset.wat index 714dffbc0e6a..b9186bc4f4e1 100644 --- a/tests/disas/load-store/load_store_dynamic_kind_i32_index_0xffffffff_guard_yes_spectre_i8_access_0x1000_offset.wat +++ b/tests/disas/load-store/load_store_dynamic_kind_i32_index_0xffffffff_guard_yes_spectre_i8_access_0x1000_offset.wat @@ -58,18 +58,18 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i32): -;; @0049 v4 = uextend.i64 v2 -;; @0049 v5 = load.i64 notrap aligned region3 v0+64 -;; @0049 v6 = icmp ugt v4, v5 -;; @0049 v7 = load.i64 notrap aligned can_move region2 v0+56 -;; @0049 v8 = iadd v7, v4 -;; @0049 v9 = iconst.i64 4096 -;; @0049 v10 = iadd v8, v9 ; v9 = 4096 -;; @0049 v11 = iconst.i64 0 -;; @0049 v12 = select_spectre_guard v6, v11, v10 ; v11 = 0 -;; @0049 v13 = uload8.i32 little region4 v12 +;; @0049 v3 = uextend.i64 v2 +;; @0049 v4 = load.i64 notrap aligned region3 v0+64 +;; @0049 v5 = icmp ugt v3, v4 +;; @0049 v6 = load.i64 notrap aligned can_move region2 v0+56 +;; @0049 v7 = iadd v6, v3 +;; @0049 v8 = iconst.i64 4096 +;; @0049 v9 = iadd v7, v8 ; v8 = 4096 +;; @0049 v10 = iconst.i64 0 +;; @0049 v11 = select_spectre_guard v5, v10, v9 ; v10 = 0 +;; @0049 v12 = uload8.i32 little region4 v11 ;; @004d jump block1 ;; ;; block1: -;; @004d return v13 +;; @004d return v12 ;; } diff --git a/tests/disas/load-store/load_store_dynamic_kind_i32_index_0xffffffff_guard_yes_spectre_i8_access_0xffff0000_offset.wat b/tests/disas/load-store/load_store_dynamic_kind_i32_index_0xffffffff_guard_yes_spectre_i8_access_0xffff0000_offset.wat index 25735a4feb53..2596cea6f89d 100644 --- a/tests/disas/load-store/load_store_dynamic_kind_i32_index_0xffffffff_guard_yes_spectre_i8_access_0xffff0000_offset.wat +++ b/tests/disas/load-store/load_store_dynamic_kind_i32_index_0xffffffff_guard_yes_spectre_i8_access_0xffff0000_offset.wat @@ -58,18 +58,18 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i32): -;; @004c v4 = uextend.i64 v2 -;; @004c v5 = load.i64 notrap aligned region3 v0+64 -;; @004c v6 = icmp ugt v4, v5 -;; @004c v7 = load.i64 notrap aligned can_move region2 v0+56 -;; @004c v8 = iadd v7, v4 -;; @004c v9 = iconst.i64 0xffff_0000 -;; @004c v10 = iadd v8, v9 ; v9 = 0xffff_0000 -;; @004c v11 = iconst.i64 0 -;; @004c v12 = select_spectre_guard v6, v11, v10 ; v11 = 0 -;; @004c v13 = uload8.i32 little region4 v12 +;; @004c v3 = uextend.i64 v2 +;; @004c v4 = load.i64 notrap aligned region3 v0+64 +;; @004c v5 = icmp ugt v3, v4 +;; @004c v6 = load.i64 notrap aligned can_move region2 v0+56 +;; @004c v7 = iadd v6, v3 +;; @004c v8 = iconst.i64 0xffff_0000 +;; @004c v9 = iadd v7, v8 ; v8 = 0xffff_0000 +;; @004c v10 = iconst.i64 0 +;; @004c v11 = select_spectre_guard v5, v10, v9 ; v10 = 0 +;; @004c v12 = uload8.i32 little region4 v11 ;; @0053 jump block1 ;; ;; block1: -;; @0053 return v13 +;; @0053 return v12 ;; } diff --git a/tests/disas/load-store/load_store_dynamic_kind_i64_index_0_guard_no_spectre_i32_access_0_offset.wat b/tests/disas/load-store/load_store_dynamic_kind_i64_index_0_guard_no_spectre_i32_access_0_offset.wat index 07c9a853442b..e88e3ebb780c 100644 --- a/tests/disas/load-store/load_store_dynamic_kind_i64_index_0_guard_no_spectre_i32_access_0_offset.wat +++ b/tests/disas/load-store/load_store_dynamic_kind_i64_index_0_guard_no_spectre_i32_access_0_offset.wat @@ -56,16 +56,16 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i64): -;; @0048 v4 = load.i64 notrap aligned region3 v0+64 -;; @0048 v5 = iconst.i64 4 -;; @0048 v6 = isub v4, v5 ; v5 = 4 -;; @0048 v7 = icmp ugt v2, v6 -;; @0048 trapnz v7, heap_oob -;; @0048 v8 = load.i64 notrap aligned can_move region2 v0+56 -;; @0048 v9 = iadd v8, v2 -;; @0048 v10 = load.i32 little region4 v9 +;; @0048 v3 = load.i64 notrap aligned region3 v0+64 +;; @0048 v4 = iconst.i64 4 +;; @0048 v5 = isub v3, v4 ; v4 = 4 +;; @0048 v6 = icmp ugt v2, v5 +;; @0048 trapnz v6, heap_oob +;; @0048 v7 = load.i64 notrap aligned can_move region2 v0+56 +;; @0048 v8 = iadd v7, v2 +;; @0048 v9 = load.i32 little region4 v8 ;; @004b jump block1 ;; ;; block1: -;; @004b return v10 +;; @004b return v9 ;; } diff --git a/tests/disas/load-store/load_store_dynamic_kind_i64_index_0_guard_no_spectre_i32_access_0x1000_offset.wat b/tests/disas/load-store/load_store_dynamic_kind_i64_index_0_guard_no_spectre_i32_access_0x1000_offset.wat index e851ad263b84..e93375e5a361 100644 --- a/tests/disas/load-store/load_store_dynamic_kind_i64_index_0_guard_no_spectre_i32_access_0x1000_offset.wat +++ b/tests/disas/load-store/load_store_dynamic_kind_i64_index_0_guard_no_spectre_i32_access_0x1000_offset.wat @@ -58,18 +58,18 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i64): -;; @0049 v4 = load.i64 notrap aligned region3 v0+64 -;; @0049 v5 = iconst.i64 4100 -;; @0049 v6 = isub v4, v5 ; v5 = 4100 -;; @0049 v7 = icmp ugt v2, v6 -;; @0049 trapnz v7, heap_oob -;; @0049 v8 = load.i64 notrap aligned can_move region2 v0+56 -;; @0049 v9 = iadd v8, v2 -;; @0049 v10 = iconst.i64 4096 -;; @0049 v11 = iadd v9, v10 ; v10 = 4096 -;; @0049 v12 = load.i32 little region4 v11 +;; @0049 v3 = load.i64 notrap aligned region3 v0+64 +;; @0049 v4 = iconst.i64 4100 +;; @0049 v5 = isub v3, v4 ; v4 = 4100 +;; @0049 v6 = icmp ugt v2, v5 +;; @0049 trapnz v6, heap_oob +;; @0049 v7 = load.i64 notrap aligned can_move region2 v0+56 +;; @0049 v8 = iadd v7, v2 +;; @0049 v9 = iconst.i64 4096 +;; @0049 v10 = iadd v8, v9 ; v9 = 4096 +;; @0049 v11 = load.i32 little region4 v10 ;; @004d jump block1 ;; ;; block1: -;; @004d return v12 +;; @004d return v11 ;; } diff --git a/tests/disas/load-store/load_store_dynamic_kind_i64_index_0_guard_no_spectre_i32_access_0xffff0000_offset.wat b/tests/disas/load-store/load_store_dynamic_kind_i64_index_0_guard_no_spectre_i32_access_0xffff0000_offset.wat index 40a4d13a1202..83cefdaa0ad6 100644 --- a/tests/disas/load-store/load_store_dynamic_kind_i64_index_0_guard_no_spectre_i32_access_0xffff0000_offset.wat +++ b/tests/disas/load-store/load_store_dynamic_kind_i64_index_0_guard_no_spectre_i32_access_0xffff0000_offset.wat @@ -58,18 +58,18 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i64): -;; @004c v4 = iconst.i64 0xffff_0004 -;; @004c v5 = uadd_overflow_trap v2, v4, heap_oob ; v4 = 0xffff_0004 -;; @004c v6 = load.i64 notrap aligned region3 v0+64 -;; @004c v7 = icmp ugt v5, v6 -;; @004c trapnz v7, heap_oob -;; @004c v8 = load.i64 notrap aligned can_move region2 v0+56 -;; @004c v9 = iadd v8, v2 -;; @004c v10 = iconst.i64 0xffff_0000 -;; @004c v11 = iadd v9, v10 ; v10 = 0xffff_0000 -;; @004c v12 = load.i32 little region4 v11 +;; @004c v3 = iconst.i64 0xffff_0004 +;; @004c v4 = uadd_overflow_trap v2, v3, heap_oob ; v3 = 0xffff_0004 +;; @004c v5 = load.i64 notrap aligned region3 v0+64 +;; @004c v6 = icmp ugt v4, v5 +;; @004c trapnz v6, heap_oob +;; @004c v7 = load.i64 notrap aligned can_move region2 v0+56 +;; @004c v8 = iadd v7, v2 +;; @004c v9 = iconst.i64 0xffff_0000 +;; @004c v10 = iadd v8, v9 ; v9 = 0xffff_0000 +;; @004c v11 = load.i32 little region4 v10 ;; @0053 jump block1 ;; ;; block1: -;; @0053 return v12 +;; @0053 return v11 ;; } diff --git a/tests/disas/load-store/load_store_dynamic_kind_i64_index_0_guard_no_spectre_i8_access_0_offset.wat b/tests/disas/load-store/load_store_dynamic_kind_i64_index_0_guard_no_spectre_i8_access_0_offset.wat index 58cea09c8032..0bc5e82560e7 100644 --- a/tests/disas/load-store/load_store_dynamic_kind_i64_index_0_guard_no_spectre_i8_access_0_offset.wat +++ b/tests/disas/load-store/load_store_dynamic_kind_i64_index_0_guard_no_spectre_i8_access_0_offset.wat @@ -54,14 +54,14 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i64): -;; @0048 v4 = load.i64 notrap aligned region3 v0+64 -;; @0048 v5 = icmp uge v2, v4 -;; @0048 trapnz v5, heap_oob -;; @0048 v6 = load.i64 notrap aligned can_move region2 v0+56 -;; @0048 v7 = iadd v6, v2 -;; @0048 v8 = uload8.i32 little region4 v7 +;; @0048 v3 = load.i64 notrap aligned region3 v0+64 +;; @0048 v4 = icmp uge v2, v3 +;; @0048 trapnz v4, heap_oob +;; @0048 v5 = load.i64 notrap aligned can_move region2 v0+56 +;; @0048 v6 = iadd v5, v2 +;; @0048 v7 = uload8.i32 little region4 v6 ;; @004b jump block1 ;; ;; block1: -;; @004b return v8 +;; @004b return v7 ;; } diff --git a/tests/disas/load-store/load_store_dynamic_kind_i64_index_0_guard_no_spectre_i8_access_0x1000_offset.wat b/tests/disas/load-store/load_store_dynamic_kind_i64_index_0_guard_no_spectre_i8_access_0x1000_offset.wat index 79fa15377ad0..03f3baef5d28 100644 --- a/tests/disas/load-store/load_store_dynamic_kind_i64_index_0_guard_no_spectre_i8_access_0x1000_offset.wat +++ b/tests/disas/load-store/load_store_dynamic_kind_i64_index_0_guard_no_spectre_i8_access_0x1000_offset.wat @@ -58,18 +58,18 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i64): -;; @0049 v4 = load.i64 notrap aligned region3 v0+64 -;; @0049 v5 = iconst.i64 4097 -;; @0049 v6 = isub v4, v5 ; v5 = 4097 -;; @0049 v7 = icmp ugt v2, v6 -;; @0049 trapnz v7, heap_oob -;; @0049 v8 = load.i64 notrap aligned can_move region2 v0+56 -;; @0049 v9 = iadd v8, v2 -;; @0049 v10 = iconst.i64 4096 -;; @0049 v11 = iadd v9, v10 ; v10 = 4096 -;; @0049 v12 = uload8.i32 little region4 v11 +;; @0049 v3 = load.i64 notrap aligned region3 v0+64 +;; @0049 v4 = iconst.i64 4097 +;; @0049 v5 = isub v3, v4 ; v4 = 4097 +;; @0049 v6 = icmp ugt v2, v5 +;; @0049 trapnz v6, heap_oob +;; @0049 v7 = load.i64 notrap aligned can_move region2 v0+56 +;; @0049 v8 = iadd v7, v2 +;; @0049 v9 = iconst.i64 4096 +;; @0049 v10 = iadd v8, v9 ; v9 = 4096 +;; @0049 v11 = uload8.i32 little region4 v10 ;; @004d jump block1 ;; ;; block1: -;; @004d return v12 +;; @004d return v11 ;; } diff --git a/tests/disas/load-store/load_store_dynamic_kind_i64_index_0_guard_no_spectre_i8_access_0xffff0000_offset.wat b/tests/disas/load-store/load_store_dynamic_kind_i64_index_0_guard_no_spectre_i8_access_0xffff0000_offset.wat index eaa79aa406ce..83cf29f6ad97 100644 --- a/tests/disas/load-store/load_store_dynamic_kind_i64_index_0_guard_no_spectre_i8_access_0xffff0000_offset.wat +++ b/tests/disas/load-store/load_store_dynamic_kind_i64_index_0_guard_no_spectre_i8_access_0xffff0000_offset.wat @@ -58,18 +58,18 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i64): -;; @004c v4 = iconst.i64 0xffff_0001 -;; @004c v5 = uadd_overflow_trap v2, v4, heap_oob ; v4 = 0xffff_0001 -;; @004c v6 = load.i64 notrap aligned region3 v0+64 -;; @004c v7 = icmp ugt v5, v6 -;; @004c trapnz v7, heap_oob -;; @004c v8 = load.i64 notrap aligned can_move region2 v0+56 -;; @004c v9 = iadd v8, v2 -;; @004c v10 = iconst.i64 0xffff_0000 -;; @004c v11 = iadd v9, v10 ; v10 = 0xffff_0000 -;; @004c v12 = uload8.i32 little region4 v11 +;; @004c v3 = iconst.i64 0xffff_0001 +;; @004c v4 = uadd_overflow_trap v2, v3, heap_oob ; v3 = 0xffff_0001 +;; @004c v5 = load.i64 notrap aligned region3 v0+64 +;; @004c v6 = icmp ugt v4, v5 +;; @004c trapnz v6, heap_oob +;; @004c v7 = load.i64 notrap aligned can_move region2 v0+56 +;; @004c v8 = iadd v7, v2 +;; @004c v9 = iconst.i64 0xffff_0000 +;; @004c v10 = iadd v8, v9 ; v9 = 0xffff_0000 +;; @004c v11 = uload8.i32 little region4 v10 ;; @0053 jump block1 ;; ;; block1: -;; @0053 return v12 +;; @0053 return v11 ;; } diff --git a/tests/disas/load-store/load_store_dynamic_kind_i64_index_0_guard_yes_spectre_i32_access_0_offset.wat b/tests/disas/load-store/load_store_dynamic_kind_i64_index_0_guard_yes_spectre_i32_access_0_offset.wat index 5c7275cdc174..97b104e4cb4c 100644 --- a/tests/disas/load-store/load_store_dynamic_kind_i64_index_0_guard_yes_spectre_i32_access_0_offset.wat +++ b/tests/disas/load-store/load_store_dynamic_kind_i64_index_0_guard_yes_spectre_i32_access_0_offset.wat @@ -57,17 +57,17 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i64): -;; @0048 v4 = load.i64 notrap aligned region3 v0+64 -;; @0048 v5 = iconst.i64 4 -;; @0048 v6 = isub v4, v5 ; v5 = 4 -;; @0048 v7 = icmp ugt v2, v6 -;; @0048 v8 = load.i64 notrap aligned can_move region2 v0+56 -;; @0048 v9 = iadd v8, v2 -;; @0048 v10 = iconst.i64 0 -;; @0048 v11 = select_spectre_guard v7, v10, v9 ; v10 = 0 -;; @0048 v12 = load.i32 little region4 v11 +;; @0048 v3 = load.i64 notrap aligned region3 v0+64 +;; @0048 v4 = iconst.i64 4 +;; @0048 v5 = isub v3, v4 ; v4 = 4 +;; @0048 v6 = icmp ugt v2, v5 +;; @0048 v7 = load.i64 notrap aligned can_move region2 v0+56 +;; @0048 v8 = iadd v7, v2 +;; @0048 v9 = iconst.i64 0 +;; @0048 v10 = select_spectre_guard v6, v9, v8 ; v9 = 0 +;; @0048 v11 = load.i32 little region4 v10 ;; @004b jump block1 ;; ;; block1: -;; @004b return v12 +;; @004b return v11 ;; } diff --git a/tests/disas/load-store/load_store_dynamic_kind_i64_index_0_guard_yes_spectre_i32_access_0x1000_offset.wat b/tests/disas/load-store/load_store_dynamic_kind_i64_index_0_guard_yes_spectre_i32_access_0x1000_offset.wat index ca5d369bfcc2..afa719133a55 100644 --- a/tests/disas/load-store/load_store_dynamic_kind_i64_index_0_guard_yes_spectre_i32_access_0x1000_offset.wat +++ b/tests/disas/load-store/load_store_dynamic_kind_i64_index_0_guard_yes_spectre_i32_access_0x1000_offset.wat @@ -59,19 +59,19 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i64): -;; @0049 v4 = load.i64 notrap aligned region3 v0+64 -;; @0049 v5 = iconst.i64 4100 -;; @0049 v6 = isub v4, v5 ; v5 = 4100 -;; @0049 v7 = icmp ugt v2, v6 -;; @0049 v8 = load.i64 notrap aligned can_move region2 v0+56 -;; @0049 v9 = iadd v8, v2 -;; @0049 v10 = iconst.i64 4096 -;; @0049 v11 = iadd v9, v10 ; v10 = 4096 -;; @0049 v12 = iconst.i64 0 -;; @0049 v13 = select_spectre_guard v7, v12, v11 ; v12 = 0 -;; @0049 v14 = load.i32 little region4 v13 +;; @0049 v3 = load.i64 notrap aligned region3 v0+64 +;; @0049 v4 = iconst.i64 4100 +;; @0049 v5 = isub v3, v4 ; v4 = 4100 +;; @0049 v6 = icmp ugt v2, v5 +;; @0049 v7 = load.i64 notrap aligned can_move region2 v0+56 +;; @0049 v8 = iadd v7, v2 +;; @0049 v9 = iconst.i64 4096 +;; @0049 v10 = iadd v8, v9 ; v9 = 4096 +;; @0049 v11 = iconst.i64 0 +;; @0049 v12 = select_spectre_guard v6, v11, v10 ; v11 = 0 +;; @0049 v13 = load.i32 little region4 v12 ;; @004d jump block1 ;; ;; block1: -;; @004d return v14 +;; @004d return v13 ;; } diff --git a/tests/disas/load-store/load_store_dynamic_kind_i64_index_0_guard_yes_spectre_i32_access_0xffff0000_offset.wat b/tests/disas/load-store/load_store_dynamic_kind_i64_index_0_guard_yes_spectre_i32_access_0xffff0000_offset.wat index 5be8934f4c7e..0e327708b726 100644 --- a/tests/disas/load-store/load_store_dynamic_kind_i64_index_0_guard_yes_spectre_i32_access_0xffff0000_offset.wat +++ b/tests/disas/load-store/load_store_dynamic_kind_i64_index_0_guard_yes_spectre_i32_access_0xffff0000_offset.wat @@ -59,19 +59,19 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i64): -;; @004c v4 = iconst.i64 0xffff_0004 -;; @004c v5 = uadd_overflow_trap v2, v4, heap_oob ; v4 = 0xffff_0004 -;; @004c v6 = load.i64 notrap aligned region3 v0+64 -;; @004c v7 = icmp ugt v5, v6 -;; @004c v8 = load.i64 notrap aligned can_move region2 v0+56 -;; @004c v9 = iadd v8, v2 -;; @004c v10 = iconst.i64 0xffff_0000 -;; @004c v11 = iadd v9, v10 ; v10 = 0xffff_0000 -;; @004c v12 = iconst.i64 0 -;; @004c v13 = select_spectre_guard v7, v12, v11 ; v12 = 0 -;; @004c v14 = load.i32 little region4 v13 +;; @004c v3 = iconst.i64 0xffff_0004 +;; @004c v4 = uadd_overflow_trap v2, v3, heap_oob ; v3 = 0xffff_0004 +;; @004c v5 = load.i64 notrap aligned region3 v0+64 +;; @004c v6 = icmp ugt v4, v5 +;; @004c v7 = load.i64 notrap aligned can_move region2 v0+56 +;; @004c v8 = iadd v7, v2 +;; @004c v9 = iconst.i64 0xffff_0000 +;; @004c v10 = iadd v8, v9 ; v9 = 0xffff_0000 +;; @004c v11 = iconst.i64 0 +;; @004c v12 = select_spectre_guard v6, v11, v10 ; v11 = 0 +;; @004c v13 = load.i32 little region4 v12 ;; @0053 jump block1 ;; ;; block1: -;; @0053 return v14 +;; @0053 return v13 ;; } diff --git a/tests/disas/load-store/load_store_dynamic_kind_i64_index_0_guard_yes_spectre_i8_access_0_offset.wat b/tests/disas/load-store/load_store_dynamic_kind_i64_index_0_guard_yes_spectre_i8_access_0_offset.wat index 7b5127e26569..e54ad4a9a53c 100644 --- a/tests/disas/load-store/load_store_dynamic_kind_i64_index_0_guard_yes_spectre_i8_access_0_offset.wat +++ b/tests/disas/load-store/load_store_dynamic_kind_i64_index_0_guard_yes_spectre_i8_access_0_offset.wat @@ -55,15 +55,15 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i64): -;; @0048 v4 = load.i64 notrap aligned region3 v0+64 -;; @0048 v5 = icmp uge v2, v4 -;; @0048 v6 = load.i64 notrap aligned can_move region2 v0+56 -;; @0048 v7 = iadd v6, v2 -;; @0048 v8 = iconst.i64 0 -;; @0048 v9 = select_spectre_guard v5, v8, v7 ; v8 = 0 -;; @0048 v10 = uload8.i32 little region4 v9 +;; @0048 v3 = load.i64 notrap aligned region3 v0+64 +;; @0048 v4 = icmp uge v2, v3 +;; @0048 v5 = load.i64 notrap aligned can_move region2 v0+56 +;; @0048 v6 = iadd v5, v2 +;; @0048 v7 = iconst.i64 0 +;; @0048 v8 = select_spectre_guard v4, v7, v6 ; v7 = 0 +;; @0048 v9 = uload8.i32 little region4 v8 ;; @004b jump block1 ;; ;; block1: -;; @004b return v10 +;; @004b return v9 ;; } diff --git a/tests/disas/load-store/load_store_dynamic_kind_i64_index_0_guard_yes_spectre_i8_access_0x1000_offset.wat b/tests/disas/load-store/load_store_dynamic_kind_i64_index_0_guard_yes_spectre_i8_access_0x1000_offset.wat index a07868c20f57..6d0894c29f98 100644 --- a/tests/disas/load-store/load_store_dynamic_kind_i64_index_0_guard_yes_spectre_i8_access_0x1000_offset.wat +++ b/tests/disas/load-store/load_store_dynamic_kind_i64_index_0_guard_yes_spectre_i8_access_0x1000_offset.wat @@ -59,19 +59,19 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i64): -;; @0049 v4 = load.i64 notrap aligned region3 v0+64 -;; @0049 v5 = iconst.i64 4097 -;; @0049 v6 = isub v4, v5 ; v5 = 4097 -;; @0049 v7 = icmp ugt v2, v6 -;; @0049 v8 = load.i64 notrap aligned can_move region2 v0+56 -;; @0049 v9 = iadd v8, v2 -;; @0049 v10 = iconst.i64 4096 -;; @0049 v11 = iadd v9, v10 ; v10 = 4096 -;; @0049 v12 = iconst.i64 0 -;; @0049 v13 = select_spectre_guard v7, v12, v11 ; v12 = 0 -;; @0049 v14 = uload8.i32 little region4 v13 +;; @0049 v3 = load.i64 notrap aligned region3 v0+64 +;; @0049 v4 = iconst.i64 4097 +;; @0049 v5 = isub v3, v4 ; v4 = 4097 +;; @0049 v6 = icmp ugt v2, v5 +;; @0049 v7 = load.i64 notrap aligned can_move region2 v0+56 +;; @0049 v8 = iadd v7, v2 +;; @0049 v9 = iconst.i64 4096 +;; @0049 v10 = iadd v8, v9 ; v9 = 4096 +;; @0049 v11 = iconst.i64 0 +;; @0049 v12 = select_spectre_guard v6, v11, v10 ; v11 = 0 +;; @0049 v13 = uload8.i32 little region4 v12 ;; @004d jump block1 ;; ;; block1: -;; @004d return v14 +;; @004d return v13 ;; } diff --git a/tests/disas/load-store/load_store_dynamic_kind_i64_index_0_guard_yes_spectre_i8_access_0xffff0000_offset.wat b/tests/disas/load-store/load_store_dynamic_kind_i64_index_0_guard_yes_spectre_i8_access_0xffff0000_offset.wat index 3a89b876e24c..79d385514cb1 100644 --- a/tests/disas/load-store/load_store_dynamic_kind_i64_index_0_guard_yes_spectre_i8_access_0xffff0000_offset.wat +++ b/tests/disas/load-store/load_store_dynamic_kind_i64_index_0_guard_yes_spectre_i8_access_0xffff0000_offset.wat @@ -59,19 +59,19 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i64): -;; @004c v4 = iconst.i64 0xffff_0001 -;; @004c v5 = uadd_overflow_trap v2, v4, heap_oob ; v4 = 0xffff_0001 -;; @004c v6 = load.i64 notrap aligned region3 v0+64 -;; @004c v7 = icmp ugt v5, v6 -;; @004c v8 = load.i64 notrap aligned can_move region2 v0+56 -;; @004c v9 = iadd v8, v2 -;; @004c v10 = iconst.i64 0xffff_0000 -;; @004c v11 = iadd v9, v10 ; v10 = 0xffff_0000 -;; @004c v12 = iconst.i64 0 -;; @004c v13 = select_spectre_guard v7, v12, v11 ; v12 = 0 -;; @004c v14 = uload8.i32 little region4 v13 +;; @004c v3 = iconst.i64 0xffff_0001 +;; @004c v4 = uadd_overflow_trap v2, v3, heap_oob ; v3 = 0xffff_0001 +;; @004c v5 = load.i64 notrap aligned region3 v0+64 +;; @004c v6 = icmp ugt v4, v5 +;; @004c v7 = load.i64 notrap aligned can_move region2 v0+56 +;; @004c v8 = iadd v7, v2 +;; @004c v9 = iconst.i64 0xffff_0000 +;; @004c v10 = iadd v8, v9 ; v9 = 0xffff_0000 +;; @004c v11 = iconst.i64 0 +;; @004c v12 = select_spectre_guard v6, v11, v10 ; v11 = 0 +;; @004c v13 = uload8.i32 little region4 v12 ;; @0053 jump block1 ;; ;; block1: -;; @0053 return v14 +;; @0053 return v13 ;; } diff --git a/tests/disas/load-store/load_store_dynamic_kind_i64_index_0xffffffff_guard_no_spectre_i32_access_0_offset.wat b/tests/disas/load-store/load_store_dynamic_kind_i64_index_0xffffffff_guard_no_spectre_i32_access_0_offset.wat index 7c2ea1f1f326..8edb5120801c 100644 --- a/tests/disas/load-store/load_store_dynamic_kind_i64_index_0xffffffff_guard_no_spectre_i32_access_0_offset.wat +++ b/tests/disas/load-store/load_store_dynamic_kind_i64_index_0xffffffff_guard_no_spectre_i32_access_0_offset.wat @@ -54,14 +54,14 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i64): -;; @0048 v4 = load.i64 notrap aligned region3 v0+64 -;; @0048 v5 = icmp ugt v2, v4 -;; @0048 trapnz v5, heap_oob -;; @0048 v6 = load.i64 notrap aligned can_move region2 v0+56 -;; @0048 v7 = iadd v6, v2 -;; @0048 v8 = load.i32 little region4 v7 +;; @0048 v3 = load.i64 notrap aligned region3 v0+64 +;; @0048 v4 = icmp ugt v2, v3 +;; @0048 trapnz v4, heap_oob +;; @0048 v5 = load.i64 notrap aligned can_move region2 v0+56 +;; @0048 v6 = iadd v5, v2 +;; @0048 v7 = load.i32 little region4 v6 ;; @004b jump block1 ;; ;; block1: -;; @004b return v8 +;; @004b return v7 ;; } diff --git a/tests/disas/load-store/load_store_dynamic_kind_i64_index_0xffffffff_guard_no_spectre_i32_access_0x1000_offset.wat b/tests/disas/load-store/load_store_dynamic_kind_i64_index_0xffffffff_guard_no_spectre_i32_access_0x1000_offset.wat index da65e1c803ae..d62ede7011c6 100644 --- a/tests/disas/load-store/load_store_dynamic_kind_i64_index_0xffffffff_guard_no_spectre_i32_access_0x1000_offset.wat +++ b/tests/disas/load-store/load_store_dynamic_kind_i64_index_0xffffffff_guard_no_spectre_i32_access_0x1000_offset.wat @@ -56,16 +56,16 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i64): -;; @0049 v4 = load.i64 notrap aligned region3 v0+64 -;; @0049 v5 = icmp ugt v2, v4 -;; @0049 trapnz v5, heap_oob -;; @0049 v6 = load.i64 notrap aligned can_move region2 v0+56 -;; @0049 v7 = iadd v6, v2 -;; @0049 v8 = iconst.i64 4096 -;; @0049 v9 = iadd v7, v8 ; v8 = 4096 -;; @0049 v10 = load.i32 little region4 v9 +;; @0049 v3 = load.i64 notrap aligned region3 v0+64 +;; @0049 v4 = icmp ugt v2, v3 +;; @0049 trapnz v4, heap_oob +;; @0049 v5 = load.i64 notrap aligned can_move region2 v0+56 +;; @0049 v6 = iadd v5, v2 +;; @0049 v7 = iconst.i64 4096 +;; @0049 v8 = iadd v6, v7 ; v7 = 4096 +;; @0049 v9 = load.i32 little region4 v8 ;; @004d jump block1 ;; ;; block1: -;; @004d return v10 +;; @004d return v9 ;; } diff --git a/tests/disas/load-store/load_store_dynamic_kind_i64_index_0xffffffff_guard_no_spectre_i32_access_0xffff0000_offset.wat b/tests/disas/load-store/load_store_dynamic_kind_i64_index_0xffffffff_guard_no_spectre_i32_access_0xffff0000_offset.wat index 30ce284e9cc6..0a04207acbc0 100644 --- a/tests/disas/load-store/load_store_dynamic_kind_i64_index_0xffffffff_guard_no_spectre_i32_access_0xffff0000_offset.wat +++ b/tests/disas/load-store/load_store_dynamic_kind_i64_index_0xffffffff_guard_no_spectre_i32_access_0xffff0000_offset.wat @@ -56,16 +56,16 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i64): -;; @004c v4 = load.i64 notrap aligned region3 v0+64 -;; @004c v5 = icmp ugt v2, v4 -;; @004c trapnz v5, heap_oob -;; @004c v6 = load.i64 notrap aligned can_move region2 v0+56 -;; @004c v7 = iadd v6, v2 -;; @004c v8 = iconst.i64 0xffff_0000 -;; @004c v9 = iadd v7, v8 ; v8 = 0xffff_0000 -;; @004c v10 = load.i32 little region4 v9 +;; @004c v3 = load.i64 notrap aligned region3 v0+64 +;; @004c v4 = icmp ugt v2, v3 +;; @004c trapnz v4, heap_oob +;; @004c v5 = load.i64 notrap aligned can_move region2 v0+56 +;; @004c v6 = iadd v5, v2 +;; @004c v7 = iconst.i64 0xffff_0000 +;; @004c v8 = iadd v6, v7 ; v7 = 0xffff_0000 +;; @004c v9 = load.i32 little region4 v8 ;; @0053 jump block1 ;; ;; block1: -;; @0053 return v10 +;; @0053 return v9 ;; } diff --git a/tests/disas/load-store/load_store_dynamic_kind_i64_index_0xffffffff_guard_no_spectre_i8_access_0_offset.wat b/tests/disas/load-store/load_store_dynamic_kind_i64_index_0xffffffff_guard_no_spectre_i8_access_0_offset.wat index ab65976314c0..8ae6c482f2bb 100644 --- a/tests/disas/load-store/load_store_dynamic_kind_i64_index_0xffffffff_guard_no_spectre_i8_access_0_offset.wat +++ b/tests/disas/load-store/load_store_dynamic_kind_i64_index_0xffffffff_guard_no_spectre_i8_access_0_offset.wat @@ -54,14 +54,14 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i64): -;; @0048 v4 = load.i64 notrap aligned region3 v0+64 -;; @0048 v5 = icmp uge v2, v4 -;; @0048 trapnz v5, heap_oob -;; @0048 v6 = load.i64 notrap aligned can_move region2 v0+56 -;; @0048 v7 = iadd v6, v2 -;; @0048 v8 = uload8.i32 little region4 v7 +;; @0048 v3 = load.i64 notrap aligned region3 v0+64 +;; @0048 v4 = icmp uge v2, v3 +;; @0048 trapnz v4, heap_oob +;; @0048 v5 = load.i64 notrap aligned can_move region2 v0+56 +;; @0048 v6 = iadd v5, v2 +;; @0048 v7 = uload8.i32 little region4 v6 ;; @004b jump block1 ;; ;; block1: -;; @004b return v8 +;; @004b return v7 ;; } diff --git a/tests/disas/load-store/load_store_dynamic_kind_i64_index_0xffffffff_guard_no_spectre_i8_access_0x1000_offset.wat b/tests/disas/load-store/load_store_dynamic_kind_i64_index_0xffffffff_guard_no_spectre_i8_access_0x1000_offset.wat index 64ed783da803..71a1babca5e4 100644 --- a/tests/disas/load-store/load_store_dynamic_kind_i64_index_0xffffffff_guard_no_spectre_i8_access_0x1000_offset.wat +++ b/tests/disas/load-store/load_store_dynamic_kind_i64_index_0xffffffff_guard_no_spectre_i8_access_0x1000_offset.wat @@ -56,16 +56,16 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i64): -;; @0049 v4 = load.i64 notrap aligned region3 v0+64 -;; @0049 v5 = icmp ugt v2, v4 -;; @0049 trapnz v5, heap_oob -;; @0049 v6 = load.i64 notrap aligned can_move region2 v0+56 -;; @0049 v7 = iadd v6, v2 -;; @0049 v8 = iconst.i64 4096 -;; @0049 v9 = iadd v7, v8 ; v8 = 4096 -;; @0049 v10 = uload8.i32 little region4 v9 +;; @0049 v3 = load.i64 notrap aligned region3 v0+64 +;; @0049 v4 = icmp ugt v2, v3 +;; @0049 trapnz v4, heap_oob +;; @0049 v5 = load.i64 notrap aligned can_move region2 v0+56 +;; @0049 v6 = iadd v5, v2 +;; @0049 v7 = iconst.i64 4096 +;; @0049 v8 = iadd v6, v7 ; v7 = 4096 +;; @0049 v9 = uload8.i32 little region4 v8 ;; @004d jump block1 ;; ;; block1: -;; @004d return v10 +;; @004d return v9 ;; } diff --git a/tests/disas/load-store/load_store_dynamic_kind_i64_index_0xffffffff_guard_no_spectre_i8_access_0xffff0000_offset.wat b/tests/disas/load-store/load_store_dynamic_kind_i64_index_0xffffffff_guard_no_spectre_i8_access_0xffff0000_offset.wat index 2b159db5cb6d..e904fdbe7a18 100644 --- a/tests/disas/load-store/load_store_dynamic_kind_i64_index_0xffffffff_guard_no_spectre_i8_access_0xffff0000_offset.wat +++ b/tests/disas/load-store/load_store_dynamic_kind_i64_index_0xffffffff_guard_no_spectre_i8_access_0xffff0000_offset.wat @@ -56,16 +56,16 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i64): -;; @004c v4 = load.i64 notrap aligned region3 v0+64 -;; @004c v5 = icmp ugt v2, v4 -;; @004c trapnz v5, heap_oob -;; @004c v6 = load.i64 notrap aligned can_move region2 v0+56 -;; @004c v7 = iadd v6, v2 -;; @004c v8 = iconst.i64 0xffff_0000 -;; @004c v9 = iadd v7, v8 ; v8 = 0xffff_0000 -;; @004c v10 = uload8.i32 little region4 v9 +;; @004c v3 = load.i64 notrap aligned region3 v0+64 +;; @004c v4 = icmp ugt v2, v3 +;; @004c trapnz v4, heap_oob +;; @004c v5 = load.i64 notrap aligned can_move region2 v0+56 +;; @004c v6 = iadd v5, v2 +;; @004c v7 = iconst.i64 0xffff_0000 +;; @004c v8 = iadd v6, v7 ; v7 = 0xffff_0000 +;; @004c v9 = uload8.i32 little region4 v8 ;; @0053 jump block1 ;; ;; block1: -;; @0053 return v10 +;; @0053 return v9 ;; } diff --git a/tests/disas/load-store/load_store_dynamic_kind_i64_index_0xffffffff_guard_yes_spectre_i32_access_0_offset.wat b/tests/disas/load-store/load_store_dynamic_kind_i64_index_0xffffffff_guard_yes_spectre_i32_access_0_offset.wat index e8833bb0ff82..332205156333 100644 --- a/tests/disas/load-store/load_store_dynamic_kind_i64_index_0xffffffff_guard_yes_spectre_i32_access_0_offset.wat +++ b/tests/disas/load-store/load_store_dynamic_kind_i64_index_0xffffffff_guard_yes_spectre_i32_access_0_offset.wat @@ -55,15 +55,15 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i64): -;; @0048 v4 = load.i64 notrap aligned region3 v0+64 -;; @0048 v5 = icmp ugt v2, v4 -;; @0048 v6 = load.i64 notrap aligned can_move region2 v0+56 -;; @0048 v7 = iadd v6, v2 -;; @0048 v8 = iconst.i64 0 -;; @0048 v9 = select_spectre_guard v5, v8, v7 ; v8 = 0 -;; @0048 v10 = load.i32 little region4 v9 +;; @0048 v3 = load.i64 notrap aligned region3 v0+64 +;; @0048 v4 = icmp ugt v2, v3 +;; @0048 v5 = load.i64 notrap aligned can_move region2 v0+56 +;; @0048 v6 = iadd v5, v2 +;; @0048 v7 = iconst.i64 0 +;; @0048 v8 = select_spectre_guard v4, v7, v6 ; v7 = 0 +;; @0048 v9 = load.i32 little region4 v8 ;; @004b jump block1 ;; ;; block1: -;; @004b return v10 +;; @004b return v9 ;; } diff --git a/tests/disas/load-store/load_store_dynamic_kind_i64_index_0xffffffff_guard_yes_spectre_i32_access_0x1000_offset.wat b/tests/disas/load-store/load_store_dynamic_kind_i64_index_0xffffffff_guard_yes_spectre_i32_access_0x1000_offset.wat index 2a07883493cc..719b43970412 100644 --- a/tests/disas/load-store/load_store_dynamic_kind_i64_index_0xffffffff_guard_yes_spectre_i32_access_0x1000_offset.wat +++ b/tests/disas/load-store/load_store_dynamic_kind_i64_index_0xffffffff_guard_yes_spectre_i32_access_0x1000_offset.wat @@ -57,17 +57,17 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i64): -;; @0049 v4 = load.i64 notrap aligned region3 v0+64 -;; @0049 v5 = icmp ugt v2, v4 -;; @0049 v6 = load.i64 notrap aligned can_move region2 v0+56 -;; @0049 v7 = iadd v6, v2 -;; @0049 v8 = iconst.i64 4096 -;; @0049 v9 = iadd v7, v8 ; v8 = 4096 -;; @0049 v10 = iconst.i64 0 -;; @0049 v11 = select_spectre_guard v5, v10, v9 ; v10 = 0 -;; @0049 v12 = load.i32 little region4 v11 +;; @0049 v3 = load.i64 notrap aligned region3 v0+64 +;; @0049 v4 = icmp ugt v2, v3 +;; @0049 v5 = load.i64 notrap aligned can_move region2 v0+56 +;; @0049 v6 = iadd v5, v2 +;; @0049 v7 = iconst.i64 4096 +;; @0049 v8 = iadd v6, v7 ; v7 = 4096 +;; @0049 v9 = iconst.i64 0 +;; @0049 v10 = select_spectre_guard v4, v9, v8 ; v9 = 0 +;; @0049 v11 = load.i32 little region4 v10 ;; @004d jump block1 ;; ;; block1: -;; @004d return v12 +;; @004d return v11 ;; } diff --git a/tests/disas/load-store/load_store_dynamic_kind_i64_index_0xffffffff_guard_yes_spectre_i32_access_0xffff0000_offset.wat b/tests/disas/load-store/load_store_dynamic_kind_i64_index_0xffffffff_guard_yes_spectre_i32_access_0xffff0000_offset.wat index d9b151526f62..9adc1b732f40 100644 --- a/tests/disas/load-store/load_store_dynamic_kind_i64_index_0xffffffff_guard_yes_spectre_i32_access_0xffff0000_offset.wat +++ b/tests/disas/load-store/load_store_dynamic_kind_i64_index_0xffffffff_guard_yes_spectre_i32_access_0xffff0000_offset.wat @@ -57,17 +57,17 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i64): -;; @004c v4 = load.i64 notrap aligned region3 v0+64 -;; @004c v5 = icmp ugt v2, v4 -;; @004c v6 = load.i64 notrap aligned can_move region2 v0+56 -;; @004c v7 = iadd v6, v2 -;; @004c v8 = iconst.i64 0xffff_0000 -;; @004c v9 = iadd v7, v8 ; v8 = 0xffff_0000 -;; @004c v10 = iconst.i64 0 -;; @004c v11 = select_spectre_guard v5, v10, v9 ; v10 = 0 -;; @004c v12 = load.i32 little region4 v11 +;; @004c v3 = load.i64 notrap aligned region3 v0+64 +;; @004c v4 = icmp ugt v2, v3 +;; @004c v5 = load.i64 notrap aligned can_move region2 v0+56 +;; @004c v6 = iadd v5, v2 +;; @004c v7 = iconst.i64 0xffff_0000 +;; @004c v8 = iadd v6, v7 ; v7 = 0xffff_0000 +;; @004c v9 = iconst.i64 0 +;; @004c v10 = select_spectre_guard v4, v9, v8 ; v9 = 0 +;; @004c v11 = load.i32 little region4 v10 ;; @0053 jump block1 ;; ;; block1: -;; @0053 return v12 +;; @0053 return v11 ;; } diff --git a/tests/disas/load-store/load_store_dynamic_kind_i64_index_0xffffffff_guard_yes_spectre_i8_access_0_offset.wat b/tests/disas/load-store/load_store_dynamic_kind_i64_index_0xffffffff_guard_yes_spectre_i8_access_0_offset.wat index 2bdc00007ee5..95bcc96b05aa 100644 --- a/tests/disas/load-store/load_store_dynamic_kind_i64_index_0xffffffff_guard_yes_spectre_i8_access_0_offset.wat +++ b/tests/disas/load-store/load_store_dynamic_kind_i64_index_0xffffffff_guard_yes_spectre_i8_access_0_offset.wat @@ -55,15 +55,15 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i64): -;; @0048 v4 = load.i64 notrap aligned region3 v0+64 -;; @0048 v5 = icmp uge v2, v4 -;; @0048 v6 = load.i64 notrap aligned can_move region2 v0+56 -;; @0048 v7 = iadd v6, v2 -;; @0048 v8 = iconst.i64 0 -;; @0048 v9 = select_spectre_guard v5, v8, v7 ; v8 = 0 -;; @0048 v10 = uload8.i32 little region4 v9 +;; @0048 v3 = load.i64 notrap aligned region3 v0+64 +;; @0048 v4 = icmp uge v2, v3 +;; @0048 v5 = load.i64 notrap aligned can_move region2 v0+56 +;; @0048 v6 = iadd v5, v2 +;; @0048 v7 = iconst.i64 0 +;; @0048 v8 = select_spectre_guard v4, v7, v6 ; v7 = 0 +;; @0048 v9 = uload8.i32 little region4 v8 ;; @004b jump block1 ;; ;; block1: -;; @004b return v10 +;; @004b return v9 ;; } diff --git a/tests/disas/load-store/load_store_dynamic_kind_i64_index_0xffffffff_guard_yes_spectre_i8_access_0x1000_offset.wat b/tests/disas/load-store/load_store_dynamic_kind_i64_index_0xffffffff_guard_yes_spectre_i8_access_0x1000_offset.wat index 14b79be2e30d..5f9db40163e9 100644 --- a/tests/disas/load-store/load_store_dynamic_kind_i64_index_0xffffffff_guard_yes_spectre_i8_access_0x1000_offset.wat +++ b/tests/disas/load-store/load_store_dynamic_kind_i64_index_0xffffffff_guard_yes_spectre_i8_access_0x1000_offset.wat @@ -57,17 +57,17 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i64): -;; @0049 v4 = load.i64 notrap aligned region3 v0+64 -;; @0049 v5 = icmp ugt v2, v4 -;; @0049 v6 = load.i64 notrap aligned can_move region2 v0+56 -;; @0049 v7 = iadd v6, v2 -;; @0049 v8 = iconst.i64 4096 -;; @0049 v9 = iadd v7, v8 ; v8 = 4096 -;; @0049 v10 = iconst.i64 0 -;; @0049 v11 = select_spectre_guard v5, v10, v9 ; v10 = 0 -;; @0049 v12 = uload8.i32 little region4 v11 +;; @0049 v3 = load.i64 notrap aligned region3 v0+64 +;; @0049 v4 = icmp ugt v2, v3 +;; @0049 v5 = load.i64 notrap aligned can_move region2 v0+56 +;; @0049 v6 = iadd v5, v2 +;; @0049 v7 = iconst.i64 4096 +;; @0049 v8 = iadd v6, v7 ; v7 = 4096 +;; @0049 v9 = iconst.i64 0 +;; @0049 v10 = select_spectre_guard v4, v9, v8 ; v9 = 0 +;; @0049 v11 = uload8.i32 little region4 v10 ;; @004d jump block1 ;; ;; block1: -;; @004d return v12 +;; @004d return v11 ;; } diff --git a/tests/disas/load-store/load_store_dynamic_kind_i64_index_0xffffffff_guard_yes_spectre_i8_access_0xffff0000_offset.wat b/tests/disas/load-store/load_store_dynamic_kind_i64_index_0xffffffff_guard_yes_spectre_i8_access_0xffff0000_offset.wat index 7caee9a669a9..a36284823c59 100644 --- a/tests/disas/load-store/load_store_dynamic_kind_i64_index_0xffffffff_guard_yes_spectre_i8_access_0xffff0000_offset.wat +++ b/tests/disas/load-store/load_store_dynamic_kind_i64_index_0xffffffff_guard_yes_spectre_i8_access_0xffff0000_offset.wat @@ -57,17 +57,17 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i64): -;; @004c v4 = load.i64 notrap aligned region3 v0+64 -;; @004c v5 = icmp ugt v2, v4 -;; @004c v6 = load.i64 notrap aligned can_move region2 v0+56 -;; @004c v7 = iadd v6, v2 -;; @004c v8 = iconst.i64 0xffff_0000 -;; @004c v9 = iadd v7, v8 ; v8 = 0xffff_0000 -;; @004c v10 = iconst.i64 0 -;; @004c v11 = select_spectre_guard v5, v10, v9 ; v10 = 0 -;; @004c v12 = uload8.i32 little region4 v11 +;; @004c v3 = load.i64 notrap aligned region3 v0+64 +;; @004c v4 = icmp ugt v2, v3 +;; @004c v5 = load.i64 notrap aligned can_move region2 v0+56 +;; @004c v6 = iadd v5, v2 +;; @004c v7 = iconst.i64 0xffff_0000 +;; @004c v8 = iadd v6, v7 ; v7 = 0xffff_0000 +;; @004c v9 = iconst.i64 0 +;; @004c v10 = select_spectre_guard v4, v9, v8 ; v9 = 0 +;; @004c v11 = uload8.i32 little region4 v10 ;; @0053 jump block1 ;; ;; block1: -;; @0053 return v12 +;; @0053 return v11 ;; } diff --git a/tests/disas/load-store/load_store_static_kind_i32_index_0_guard_no_spectre_i32_access_0_offset.wat b/tests/disas/load-store/load_store_static_kind_i32_index_0_guard_no_spectre_i32_access_0_offset.wat index c7c073beabb6..a1dca9c0e611 100644 --- a/tests/disas/load-store/load_store_static_kind_i32_index_0_guard_no_spectre_i32_access_0_offset.wat +++ b/tests/disas/load-store/load_store_static_kind_i32_index_0_guard_no_spectre_i32_access_0_offset.wat @@ -55,15 +55,15 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i32): -;; @0048 v4 = uextend.i64 v2 -;; @0048 v5 = iconst.i64 0xffff_fffc -;; @0048 v6 = icmp ugt v4, v5 ; v5 = 0xffff_fffc -;; @0048 trapnz v6, heap_oob -;; @0048 v7 = load.i64 notrap aligned readonly can_move region2 v0+56 -;; @0048 v8 = iadd v7, v4 -;; @0048 v9 = load.i32 little region4 v8 +;; @0048 v3 = uextend.i64 v2 +;; @0048 v4 = iconst.i64 0xffff_fffc +;; @0048 v5 = icmp ugt v3, v4 ; v4 = 0xffff_fffc +;; @0048 trapnz v5, heap_oob +;; @0048 v6 = load.i64 notrap aligned readonly can_move region2 v0+56 +;; @0048 v7 = iadd v6, v3 +;; @0048 v8 = load.i32 little region4 v7 ;; @004b jump block1 ;; ;; block1: -;; @004b return v9 +;; @004b return v8 ;; } diff --git a/tests/disas/load-store/load_store_static_kind_i32_index_0_guard_no_spectre_i32_access_0x1000_offset.wat b/tests/disas/load-store/load_store_static_kind_i32_index_0_guard_no_spectre_i32_access_0x1000_offset.wat index a70a1acab28d..d675d7eeba1e 100644 --- a/tests/disas/load-store/load_store_static_kind_i32_index_0_guard_no_spectre_i32_access_0x1000_offset.wat +++ b/tests/disas/load-store/load_store_static_kind_i32_index_0_guard_no_spectre_i32_access_0x1000_offset.wat @@ -57,17 +57,17 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i32): -;; @0049 v4 = uextend.i64 v2 -;; @0049 v5 = iconst.i64 0xffff_effc -;; @0049 v6 = icmp ugt v4, v5 ; v5 = 0xffff_effc -;; @0049 trapnz v6, heap_oob -;; @0049 v7 = load.i64 notrap aligned readonly can_move region2 v0+56 -;; @0049 v8 = iadd v7, v4 -;; @0049 v9 = iconst.i64 4096 -;; @0049 v10 = iadd v8, v9 ; v9 = 4096 -;; @0049 v11 = load.i32 little region4 v10 +;; @0049 v3 = uextend.i64 v2 +;; @0049 v4 = iconst.i64 0xffff_effc +;; @0049 v5 = icmp ugt v3, v4 ; v4 = 0xffff_effc +;; @0049 trapnz v5, heap_oob +;; @0049 v6 = load.i64 notrap aligned readonly can_move region2 v0+56 +;; @0049 v7 = iadd v6, v3 +;; @0049 v8 = iconst.i64 4096 +;; @0049 v9 = iadd v7, v8 ; v8 = 4096 +;; @0049 v10 = load.i32 little region4 v9 ;; @004d jump block1 ;; ;; block1: -;; @004d return v11 +;; @004d return v10 ;; } diff --git a/tests/disas/load-store/load_store_static_kind_i32_index_0_guard_no_spectre_i32_access_0xffff0000_offset.wat b/tests/disas/load-store/load_store_static_kind_i32_index_0_guard_no_spectre_i32_access_0xffff0000_offset.wat index e5e7aaa9be43..b15ee949a759 100644 --- a/tests/disas/load-store/load_store_static_kind_i32_index_0_guard_no_spectre_i32_access_0xffff0000_offset.wat +++ b/tests/disas/load-store/load_store_static_kind_i32_index_0_guard_no_spectre_i32_access_0xffff0000_offset.wat @@ -57,17 +57,17 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i32): -;; @004c v4 = uextend.i64 v2 -;; @004c v5 = iconst.i64 0xfffc -;; @004c v6 = icmp ugt v4, v5 ; v5 = 0xfffc -;; @004c trapnz v6, heap_oob -;; @004c v7 = load.i64 notrap aligned readonly can_move region2 v0+56 -;; @004c v8 = iadd v7, v4 -;; @004c v9 = iconst.i64 0xffff_0000 -;; @004c v10 = iadd v8, v9 ; v9 = 0xffff_0000 -;; @004c v11 = load.i32 little region4 v10 +;; @004c v3 = uextend.i64 v2 +;; @004c v4 = iconst.i64 0xfffc +;; @004c v5 = icmp ugt v3, v4 ; v4 = 0xfffc +;; @004c trapnz v5, heap_oob +;; @004c v6 = load.i64 notrap aligned readonly can_move region2 v0+56 +;; @004c v7 = iadd v6, v3 +;; @004c v8 = iconst.i64 0xffff_0000 +;; @004c v9 = iadd v7, v8 ; v8 = 0xffff_0000 +;; @004c v10 = load.i32 little region4 v9 ;; @0053 jump block1 ;; ;; block1: -;; @0053 return v11 +;; @0053 return v10 ;; } diff --git a/tests/disas/load-store/load_store_static_kind_i32_index_0_guard_no_spectre_i8_access_0_offset.wat b/tests/disas/load-store/load_store_static_kind_i32_index_0_guard_no_spectre_i8_access_0_offset.wat index d810910863a3..a7bc1aca9100 100644 --- a/tests/disas/load-store/load_store_static_kind_i32_index_0_guard_no_spectre_i8_access_0_offset.wat +++ b/tests/disas/load-store/load_store_static_kind_i32_index_0_guard_no_spectre_i8_access_0_offset.wat @@ -52,12 +52,12 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i32): -;; @0048 v4 = uextend.i64 v2 -;; @0048 v5 = load.i64 notrap aligned readonly can_move region2 v0+56 -;; @0048 v6 = iadd v5, v4 -;; @0048 v7 = uload8.i32 little region4 v6 +;; @0048 v3 = uextend.i64 v2 +;; @0048 v4 = load.i64 notrap aligned readonly can_move region2 v0+56 +;; @0048 v5 = iadd v4, v3 +;; @0048 v6 = uload8.i32 little region4 v5 ;; @004b jump block1 ;; ;; block1: -;; @004b return v7 +;; @004b return v6 ;; } diff --git a/tests/disas/load-store/load_store_static_kind_i32_index_0_guard_no_spectre_i8_access_0x1000_offset.wat b/tests/disas/load-store/load_store_static_kind_i32_index_0_guard_no_spectre_i8_access_0x1000_offset.wat index 17d4e4454c72..40cfcf99544e 100644 --- a/tests/disas/load-store/load_store_static_kind_i32_index_0_guard_no_spectre_i8_access_0x1000_offset.wat +++ b/tests/disas/load-store/load_store_static_kind_i32_index_0_guard_no_spectre_i8_access_0x1000_offset.wat @@ -57,17 +57,17 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i32): -;; @0049 v4 = uextend.i64 v2 -;; @0049 v5 = iconst.i64 0xffff_efff -;; @0049 v6 = icmp ugt v4, v5 ; v5 = 0xffff_efff -;; @0049 trapnz v6, heap_oob -;; @0049 v7 = load.i64 notrap aligned readonly can_move region2 v0+56 -;; @0049 v8 = iadd v7, v4 -;; @0049 v9 = iconst.i64 4096 -;; @0049 v10 = iadd v8, v9 ; v9 = 4096 -;; @0049 v11 = uload8.i32 little region4 v10 +;; @0049 v3 = uextend.i64 v2 +;; @0049 v4 = iconst.i64 0xffff_efff +;; @0049 v5 = icmp ugt v3, v4 ; v4 = 0xffff_efff +;; @0049 trapnz v5, heap_oob +;; @0049 v6 = load.i64 notrap aligned readonly can_move region2 v0+56 +;; @0049 v7 = iadd v6, v3 +;; @0049 v8 = iconst.i64 4096 +;; @0049 v9 = iadd v7, v8 ; v8 = 4096 +;; @0049 v10 = uload8.i32 little region4 v9 ;; @004d jump block1 ;; ;; block1: -;; @004d return v11 +;; @004d return v10 ;; } diff --git a/tests/disas/load-store/load_store_static_kind_i32_index_0_guard_no_spectre_i8_access_0xffff0000_offset.wat b/tests/disas/load-store/load_store_static_kind_i32_index_0_guard_no_spectre_i8_access_0xffff0000_offset.wat index e245f04a40c8..387f7cabab87 100644 --- a/tests/disas/load-store/load_store_static_kind_i32_index_0_guard_no_spectre_i8_access_0xffff0000_offset.wat +++ b/tests/disas/load-store/load_store_static_kind_i32_index_0_guard_no_spectre_i8_access_0xffff0000_offset.wat @@ -57,17 +57,17 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i32): -;; @004c v4 = uextend.i64 v2 -;; @004c v5 = iconst.i64 0xffff -;; @004c v6 = icmp ugt v4, v5 ; v5 = 0xffff -;; @004c trapnz v6, heap_oob -;; @004c v7 = load.i64 notrap aligned readonly can_move region2 v0+56 -;; @004c v8 = iadd v7, v4 -;; @004c v9 = iconst.i64 0xffff_0000 -;; @004c v10 = iadd v8, v9 ; v9 = 0xffff_0000 -;; @004c v11 = uload8.i32 little region4 v10 +;; @004c v3 = uextend.i64 v2 +;; @004c v4 = iconst.i64 0xffff +;; @004c v5 = icmp ugt v3, v4 ; v4 = 0xffff +;; @004c trapnz v5, heap_oob +;; @004c v6 = load.i64 notrap aligned readonly can_move region2 v0+56 +;; @004c v7 = iadd v6, v3 +;; @004c v8 = iconst.i64 0xffff_0000 +;; @004c v9 = iadd v7, v8 ; v8 = 0xffff_0000 +;; @004c v10 = uload8.i32 little region4 v9 ;; @0053 jump block1 ;; ;; block1: -;; @0053 return v11 +;; @0053 return v10 ;; } diff --git a/tests/disas/load-store/load_store_static_kind_i32_index_0_guard_yes_spectre_i32_access_0_offset.wat b/tests/disas/load-store/load_store_static_kind_i32_index_0_guard_yes_spectre_i32_access_0_offset.wat index a50354e39102..f3e7c71a22b1 100644 --- a/tests/disas/load-store/load_store_static_kind_i32_index_0_guard_yes_spectre_i32_access_0_offset.wat +++ b/tests/disas/load-store/load_store_static_kind_i32_index_0_guard_yes_spectre_i32_access_0_offset.wat @@ -56,16 +56,16 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i32): -;; @0048 v4 = uextend.i64 v2 -;; @0048 v5 = iconst.i64 0xffff_fffc -;; @0048 v6 = icmp ugt v4, v5 ; v5 = 0xffff_fffc -;; @0048 v7 = load.i64 notrap aligned readonly can_move region2 v0+56 -;; @0048 v8 = iadd v7, v4 -;; @0048 v9 = iconst.i64 0 -;; @0048 v10 = select_spectre_guard v6, v9, v8 ; v9 = 0 -;; @0048 v11 = load.i32 little region4 v10 +;; @0048 v3 = uextend.i64 v2 +;; @0048 v4 = iconst.i64 0xffff_fffc +;; @0048 v5 = icmp ugt v3, v4 ; v4 = 0xffff_fffc +;; @0048 v6 = load.i64 notrap aligned readonly can_move region2 v0+56 +;; @0048 v7 = iadd v6, v3 +;; @0048 v8 = iconst.i64 0 +;; @0048 v9 = select_spectre_guard v5, v8, v7 ; v8 = 0 +;; @0048 v10 = load.i32 little region4 v9 ;; @004b jump block1 ;; ;; block1: -;; @004b return v11 +;; @004b return v10 ;; } diff --git a/tests/disas/load-store/load_store_static_kind_i32_index_0_guard_yes_spectre_i32_access_0x1000_offset.wat b/tests/disas/load-store/load_store_static_kind_i32_index_0_guard_yes_spectre_i32_access_0x1000_offset.wat index ab03e21f3986..f51e908b061a 100644 --- a/tests/disas/load-store/load_store_static_kind_i32_index_0_guard_yes_spectre_i32_access_0x1000_offset.wat +++ b/tests/disas/load-store/load_store_static_kind_i32_index_0_guard_yes_spectre_i32_access_0x1000_offset.wat @@ -58,18 +58,18 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i32): -;; @0049 v4 = uextend.i64 v2 -;; @0049 v5 = iconst.i64 0xffff_effc -;; @0049 v6 = icmp ugt v4, v5 ; v5 = 0xffff_effc -;; @0049 v7 = load.i64 notrap aligned readonly can_move region2 v0+56 -;; @0049 v8 = iadd v7, v4 -;; @0049 v9 = iconst.i64 4096 -;; @0049 v10 = iadd v8, v9 ; v9 = 4096 -;; @0049 v11 = iconst.i64 0 -;; @0049 v12 = select_spectre_guard v6, v11, v10 ; v11 = 0 -;; @0049 v13 = load.i32 little region4 v12 +;; @0049 v3 = uextend.i64 v2 +;; @0049 v4 = iconst.i64 0xffff_effc +;; @0049 v5 = icmp ugt v3, v4 ; v4 = 0xffff_effc +;; @0049 v6 = load.i64 notrap aligned readonly can_move region2 v0+56 +;; @0049 v7 = iadd v6, v3 +;; @0049 v8 = iconst.i64 4096 +;; @0049 v9 = iadd v7, v8 ; v8 = 4096 +;; @0049 v10 = iconst.i64 0 +;; @0049 v11 = select_spectre_guard v5, v10, v9 ; v10 = 0 +;; @0049 v12 = load.i32 little region4 v11 ;; @004d jump block1 ;; ;; block1: -;; @004d return v13 +;; @004d return v12 ;; } diff --git a/tests/disas/load-store/load_store_static_kind_i32_index_0_guard_yes_spectre_i32_access_0xffff0000_offset.wat b/tests/disas/load-store/load_store_static_kind_i32_index_0_guard_yes_spectre_i32_access_0xffff0000_offset.wat index e916bbd361db..eba601279ac6 100644 --- a/tests/disas/load-store/load_store_static_kind_i32_index_0_guard_yes_spectre_i32_access_0xffff0000_offset.wat +++ b/tests/disas/load-store/load_store_static_kind_i32_index_0_guard_yes_spectre_i32_access_0xffff0000_offset.wat @@ -58,18 +58,18 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i32): -;; @004c v4 = uextend.i64 v2 -;; @004c v5 = iconst.i64 0xfffc -;; @004c v6 = icmp ugt v4, v5 ; v5 = 0xfffc -;; @004c v7 = load.i64 notrap aligned readonly can_move region2 v0+56 -;; @004c v8 = iadd v7, v4 -;; @004c v9 = iconst.i64 0xffff_0000 -;; @004c v10 = iadd v8, v9 ; v9 = 0xffff_0000 -;; @004c v11 = iconst.i64 0 -;; @004c v12 = select_spectre_guard v6, v11, v10 ; v11 = 0 -;; @004c v13 = load.i32 little region4 v12 +;; @004c v3 = uextend.i64 v2 +;; @004c v4 = iconst.i64 0xfffc +;; @004c v5 = icmp ugt v3, v4 ; v4 = 0xfffc +;; @004c v6 = load.i64 notrap aligned readonly can_move region2 v0+56 +;; @004c v7 = iadd v6, v3 +;; @004c v8 = iconst.i64 0xffff_0000 +;; @004c v9 = iadd v7, v8 ; v8 = 0xffff_0000 +;; @004c v10 = iconst.i64 0 +;; @004c v11 = select_spectre_guard v5, v10, v9 ; v10 = 0 +;; @004c v12 = load.i32 little region4 v11 ;; @0053 jump block1 ;; ;; block1: -;; @0053 return v13 +;; @0053 return v12 ;; } diff --git a/tests/disas/load-store/load_store_static_kind_i32_index_0_guard_yes_spectre_i8_access_0_offset.wat b/tests/disas/load-store/load_store_static_kind_i32_index_0_guard_yes_spectre_i8_access_0_offset.wat index cac4a19f6517..2483b72d4ebf 100644 --- a/tests/disas/load-store/load_store_static_kind_i32_index_0_guard_yes_spectre_i8_access_0_offset.wat +++ b/tests/disas/load-store/load_store_static_kind_i32_index_0_guard_yes_spectre_i8_access_0_offset.wat @@ -52,12 +52,12 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i32): -;; @0048 v4 = uextend.i64 v2 -;; @0048 v5 = load.i64 notrap aligned readonly can_move region2 v0+56 -;; @0048 v6 = iadd v5, v4 -;; @0048 v7 = uload8.i32 little region4 v6 +;; @0048 v3 = uextend.i64 v2 +;; @0048 v4 = load.i64 notrap aligned readonly can_move region2 v0+56 +;; @0048 v5 = iadd v4, v3 +;; @0048 v6 = uload8.i32 little region4 v5 ;; @004b jump block1 ;; ;; block1: -;; @004b return v7 +;; @004b return v6 ;; } diff --git a/tests/disas/load-store/load_store_static_kind_i32_index_0_guard_yes_spectre_i8_access_0x1000_offset.wat b/tests/disas/load-store/load_store_static_kind_i32_index_0_guard_yes_spectre_i8_access_0x1000_offset.wat index b2205c047234..dc384c306451 100644 --- a/tests/disas/load-store/load_store_static_kind_i32_index_0_guard_yes_spectre_i8_access_0x1000_offset.wat +++ b/tests/disas/load-store/load_store_static_kind_i32_index_0_guard_yes_spectre_i8_access_0x1000_offset.wat @@ -58,18 +58,18 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i32): -;; @0049 v4 = uextend.i64 v2 -;; @0049 v5 = iconst.i64 0xffff_efff -;; @0049 v6 = icmp ugt v4, v5 ; v5 = 0xffff_efff -;; @0049 v7 = load.i64 notrap aligned readonly can_move region2 v0+56 -;; @0049 v8 = iadd v7, v4 -;; @0049 v9 = iconst.i64 4096 -;; @0049 v10 = iadd v8, v9 ; v9 = 4096 -;; @0049 v11 = iconst.i64 0 -;; @0049 v12 = select_spectre_guard v6, v11, v10 ; v11 = 0 -;; @0049 v13 = uload8.i32 little region4 v12 +;; @0049 v3 = uextend.i64 v2 +;; @0049 v4 = iconst.i64 0xffff_efff +;; @0049 v5 = icmp ugt v3, v4 ; v4 = 0xffff_efff +;; @0049 v6 = load.i64 notrap aligned readonly can_move region2 v0+56 +;; @0049 v7 = iadd v6, v3 +;; @0049 v8 = iconst.i64 4096 +;; @0049 v9 = iadd v7, v8 ; v8 = 4096 +;; @0049 v10 = iconst.i64 0 +;; @0049 v11 = select_spectre_guard v5, v10, v9 ; v10 = 0 +;; @0049 v12 = uload8.i32 little region4 v11 ;; @004d jump block1 ;; ;; block1: -;; @004d return v13 +;; @004d return v12 ;; } diff --git a/tests/disas/load-store/load_store_static_kind_i32_index_0_guard_yes_spectre_i8_access_0xffff0000_offset.wat b/tests/disas/load-store/load_store_static_kind_i32_index_0_guard_yes_spectre_i8_access_0xffff0000_offset.wat index bcaaf4e3a702..ef74d3ff405e 100644 --- a/tests/disas/load-store/load_store_static_kind_i32_index_0_guard_yes_spectre_i8_access_0xffff0000_offset.wat +++ b/tests/disas/load-store/load_store_static_kind_i32_index_0_guard_yes_spectre_i8_access_0xffff0000_offset.wat @@ -58,18 +58,18 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i32): -;; @004c v4 = uextend.i64 v2 -;; @004c v5 = iconst.i64 0xffff -;; @004c v6 = icmp ugt v4, v5 ; v5 = 0xffff -;; @004c v7 = load.i64 notrap aligned readonly can_move region2 v0+56 -;; @004c v8 = iadd v7, v4 -;; @004c v9 = iconst.i64 0xffff_0000 -;; @004c v10 = iadd v8, v9 ; v9 = 0xffff_0000 -;; @004c v11 = iconst.i64 0 -;; @004c v12 = select_spectre_guard v6, v11, v10 ; v11 = 0 -;; @004c v13 = uload8.i32 little region4 v12 +;; @004c v3 = uextend.i64 v2 +;; @004c v4 = iconst.i64 0xffff +;; @004c v5 = icmp ugt v3, v4 ; v4 = 0xffff +;; @004c v6 = load.i64 notrap aligned readonly can_move region2 v0+56 +;; @004c v7 = iadd v6, v3 +;; @004c v8 = iconst.i64 0xffff_0000 +;; @004c v9 = iadd v7, v8 ; v8 = 0xffff_0000 +;; @004c v10 = iconst.i64 0 +;; @004c v11 = select_spectre_guard v5, v10, v9 ; v10 = 0 +;; @004c v12 = uload8.i32 little region4 v11 ;; @0053 jump block1 ;; ;; block1: -;; @0053 return v13 +;; @0053 return v12 ;; } diff --git a/tests/disas/load-store/load_store_static_kind_i32_index_0xffffffff_guard_no_spectre_i32_access_0_offset.wat b/tests/disas/load-store/load_store_static_kind_i32_index_0xffffffff_guard_no_spectre_i32_access_0_offset.wat index 1113ab06791c..4ebcd4a5dce4 100644 --- a/tests/disas/load-store/load_store_static_kind_i32_index_0xffffffff_guard_no_spectre_i32_access_0_offset.wat +++ b/tests/disas/load-store/load_store_static_kind_i32_index_0xffffffff_guard_no_spectre_i32_access_0_offset.wat @@ -52,12 +52,12 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i32): -;; @0048 v4 = uextend.i64 v2 -;; @0048 v5 = load.i64 notrap aligned readonly can_move region2 v0+56 -;; @0048 v6 = iadd v5, v4 -;; @0048 v7 = load.i32 little region4 v6 +;; @0048 v3 = uextend.i64 v2 +;; @0048 v4 = load.i64 notrap aligned readonly can_move region2 v0+56 +;; @0048 v5 = iadd v4, v3 +;; @0048 v6 = load.i32 little region4 v5 ;; @004b jump block1 ;; ;; block1: -;; @004b return v7 +;; @004b return v6 ;; } diff --git a/tests/disas/load-store/load_store_static_kind_i32_index_0xffffffff_guard_no_spectre_i32_access_0x1000_offset.wat b/tests/disas/load-store/load_store_static_kind_i32_index_0xffffffff_guard_no_spectre_i32_access_0x1000_offset.wat index 8e0a88731c70..7e48a278c606 100644 --- a/tests/disas/load-store/load_store_static_kind_i32_index_0xffffffff_guard_no_spectre_i32_access_0x1000_offset.wat +++ b/tests/disas/load-store/load_store_static_kind_i32_index_0xffffffff_guard_no_spectre_i32_access_0x1000_offset.wat @@ -54,14 +54,14 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i32): -;; @0049 v4 = uextend.i64 v2 -;; @0049 v5 = load.i64 notrap aligned readonly can_move region2 v0+56 -;; @0049 v6 = iadd v5, v4 -;; @0049 v7 = iconst.i64 4096 -;; @0049 v8 = iadd v6, v7 ; v7 = 4096 -;; @0049 v9 = load.i32 little region4 v8 +;; @0049 v3 = uextend.i64 v2 +;; @0049 v4 = load.i64 notrap aligned readonly can_move region2 v0+56 +;; @0049 v5 = iadd v4, v3 +;; @0049 v6 = iconst.i64 4096 +;; @0049 v7 = iadd v5, v6 ; v6 = 4096 +;; @0049 v8 = load.i32 little region4 v7 ;; @004d jump block1 ;; ;; block1: -;; @004d return v9 +;; @004d return v8 ;; } diff --git a/tests/disas/load-store/load_store_static_kind_i32_index_0xffffffff_guard_no_spectre_i32_access_0xffff0000_offset.wat b/tests/disas/load-store/load_store_static_kind_i32_index_0xffffffff_guard_no_spectre_i32_access_0xffff0000_offset.wat index 2ce67589a2ea..281c3d62bbcc 100644 --- a/tests/disas/load-store/load_store_static_kind_i32_index_0xffffffff_guard_no_spectre_i32_access_0xffff0000_offset.wat +++ b/tests/disas/load-store/load_store_static_kind_i32_index_0xffffffff_guard_no_spectre_i32_access_0xffff0000_offset.wat @@ -54,14 +54,14 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i32): -;; @004c v4 = uextend.i64 v2 -;; @004c v5 = load.i64 notrap aligned readonly can_move region2 v0+56 -;; @004c v6 = iadd v5, v4 -;; @004c v7 = iconst.i64 0xffff_0000 -;; @004c v8 = iadd v6, v7 ; v7 = 0xffff_0000 -;; @004c v9 = load.i32 little region4 v8 +;; @004c v3 = uextend.i64 v2 +;; @004c v4 = load.i64 notrap aligned readonly can_move region2 v0+56 +;; @004c v5 = iadd v4, v3 +;; @004c v6 = iconst.i64 0xffff_0000 +;; @004c v7 = iadd v5, v6 ; v6 = 0xffff_0000 +;; @004c v8 = load.i32 little region4 v7 ;; @0053 jump block1 ;; ;; block1: -;; @0053 return v9 +;; @0053 return v8 ;; } diff --git a/tests/disas/load-store/load_store_static_kind_i32_index_0xffffffff_guard_no_spectre_i8_access_0_offset.wat b/tests/disas/load-store/load_store_static_kind_i32_index_0xffffffff_guard_no_spectre_i8_access_0_offset.wat index 858de248776b..4a3bcfaa8934 100644 --- a/tests/disas/load-store/load_store_static_kind_i32_index_0xffffffff_guard_no_spectre_i8_access_0_offset.wat +++ b/tests/disas/load-store/load_store_static_kind_i32_index_0xffffffff_guard_no_spectre_i8_access_0_offset.wat @@ -52,12 +52,12 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i32): -;; @0048 v4 = uextend.i64 v2 -;; @0048 v5 = load.i64 notrap aligned readonly can_move region2 v0+56 -;; @0048 v6 = iadd v5, v4 -;; @0048 v7 = uload8.i32 little region4 v6 +;; @0048 v3 = uextend.i64 v2 +;; @0048 v4 = load.i64 notrap aligned readonly can_move region2 v0+56 +;; @0048 v5 = iadd v4, v3 +;; @0048 v6 = uload8.i32 little region4 v5 ;; @004b jump block1 ;; ;; block1: -;; @004b return v7 +;; @004b return v6 ;; } diff --git a/tests/disas/load-store/load_store_static_kind_i32_index_0xffffffff_guard_no_spectre_i8_access_0x1000_offset.wat b/tests/disas/load-store/load_store_static_kind_i32_index_0xffffffff_guard_no_spectre_i8_access_0x1000_offset.wat index 6641c9c97cdc..2102ad4216bd 100644 --- a/tests/disas/load-store/load_store_static_kind_i32_index_0xffffffff_guard_no_spectre_i8_access_0x1000_offset.wat +++ b/tests/disas/load-store/load_store_static_kind_i32_index_0xffffffff_guard_no_spectre_i8_access_0x1000_offset.wat @@ -54,14 +54,14 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i32): -;; @0049 v4 = uextend.i64 v2 -;; @0049 v5 = load.i64 notrap aligned readonly can_move region2 v0+56 -;; @0049 v6 = iadd v5, v4 -;; @0049 v7 = iconst.i64 4096 -;; @0049 v8 = iadd v6, v7 ; v7 = 4096 -;; @0049 v9 = uload8.i32 little region4 v8 +;; @0049 v3 = uextend.i64 v2 +;; @0049 v4 = load.i64 notrap aligned readonly can_move region2 v0+56 +;; @0049 v5 = iadd v4, v3 +;; @0049 v6 = iconst.i64 4096 +;; @0049 v7 = iadd v5, v6 ; v6 = 4096 +;; @0049 v8 = uload8.i32 little region4 v7 ;; @004d jump block1 ;; ;; block1: -;; @004d return v9 +;; @004d return v8 ;; } diff --git a/tests/disas/load-store/load_store_static_kind_i32_index_0xffffffff_guard_no_spectre_i8_access_0xffff0000_offset.wat b/tests/disas/load-store/load_store_static_kind_i32_index_0xffffffff_guard_no_spectre_i8_access_0xffff0000_offset.wat index 4c18c5a3cac7..2a3086e17517 100644 --- a/tests/disas/load-store/load_store_static_kind_i32_index_0xffffffff_guard_no_spectre_i8_access_0xffff0000_offset.wat +++ b/tests/disas/load-store/load_store_static_kind_i32_index_0xffffffff_guard_no_spectre_i8_access_0xffff0000_offset.wat @@ -54,14 +54,14 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i32): -;; @004c v4 = uextend.i64 v2 -;; @004c v5 = load.i64 notrap aligned readonly can_move region2 v0+56 -;; @004c v6 = iadd v5, v4 -;; @004c v7 = iconst.i64 0xffff_0000 -;; @004c v8 = iadd v6, v7 ; v7 = 0xffff_0000 -;; @004c v9 = uload8.i32 little region4 v8 +;; @004c v3 = uextend.i64 v2 +;; @004c v4 = load.i64 notrap aligned readonly can_move region2 v0+56 +;; @004c v5 = iadd v4, v3 +;; @004c v6 = iconst.i64 0xffff_0000 +;; @004c v7 = iadd v5, v6 ; v6 = 0xffff_0000 +;; @004c v8 = uload8.i32 little region4 v7 ;; @0053 jump block1 ;; ;; block1: -;; @0053 return v9 +;; @0053 return v8 ;; } diff --git a/tests/disas/load-store/load_store_static_kind_i32_index_0xffffffff_guard_yes_spectre_i32_access_0_offset.wat b/tests/disas/load-store/load_store_static_kind_i32_index_0xffffffff_guard_yes_spectre_i32_access_0_offset.wat index 64cf19221f58..09fc7ad06f5e 100644 --- a/tests/disas/load-store/load_store_static_kind_i32_index_0xffffffff_guard_yes_spectre_i32_access_0_offset.wat +++ b/tests/disas/load-store/load_store_static_kind_i32_index_0xffffffff_guard_yes_spectre_i32_access_0_offset.wat @@ -52,12 +52,12 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i32): -;; @0048 v4 = uextend.i64 v2 -;; @0048 v5 = load.i64 notrap aligned readonly can_move region2 v0+56 -;; @0048 v6 = iadd v5, v4 -;; @0048 v7 = load.i32 little region4 v6 +;; @0048 v3 = uextend.i64 v2 +;; @0048 v4 = load.i64 notrap aligned readonly can_move region2 v0+56 +;; @0048 v5 = iadd v4, v3 +;; @0048 v6 = load.i32 little region4 v5 ;; @004b jump block1 ;; ;; block1: -;; @004b return v7 +;; @004b return v6 ;; } diff --git a/tests/disas/load-store/load_store_static_kind_i32_index_0xffffffff_guard_yes_spectre_i32_access_0x1000_offset.wat b/tests/disas/load-store/load_store_static_kind_i32_index_0xffffffff_guard_yes_spectre_i32_access_0x1000_offset.wat index 1f23e43ce2ed..b8c8d8212dd0 100644 --- a/tests/disas/load-store/load_store_static_kind_i32_index_0xffffffff_guard_yes_spectre_i32_access_0x1000_offset.wat +++ b/tests/disas/load-store/load_store_static_kind_i32_index_0xffffffff_guard_yes_spectre_i32_access_0x1000_offset.wat @@ -54,14 +54,14 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i32): -;; @0049 v4 = uextend.i64 v2 -;; @0049 v5 = load.i64 notrap aligned readonly can_move region2 v0+56 -;; @0049 v6 = iadd v5, v4 -;; @0049 v7 = iconst.i64 4096 -;; @0049 v8 = iadd v6, v7 ; v7 = 4096 -;; @0049 v9 = load.i32 little region4 v8 +;; @0049 v3 = uextend.i64 v2 +;; @0049 v4 = load.i64 notrap aligned readonly can_move region2 v0+56 +;; @0049 v5 = iadd v4, v3 +;; @0049 v6 = iconst.i64 4096 +;; @0049 v7 = iadd v5, v6 ; v6 = 4096 +;; @0049 v8 = load.i32 little region4 v7 ;; @004d jump block1 ;; ;; block1: -;; @004d return v9 +;; @004d return v8 ;; } diff --git a/tests/disas/load-store/load_store_static_kind_i32_index_0xffffffff_guard_yes_spectre_i32_access_0xffff0000_offset.wat b/tests/disas/load-store/load_store_static_kind_i32_index_0xffffffff_guard_yes_spectre_i32_access_0xffff0000_offset.wat index a94885381bdb..c3ac51fb013e 100644 --- a/tests/disas/load-store/load_store_static_kind_i32_index_0xffffffff_guard_yes_spectre_i32_access_0xffff0000_offset.wat +++ b/tests/disas/load-store/load_store_static_kind_i32_index_0xffffffff_guard_yes_spectre_i32_access_0xffff0000_offset.wat @@ -54,14 +54,14 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i32): -;; @004c v4 = uextend.i64 v2 -;; @004c v5 = load.i64 notrap aligned readonly can_move region2 v0+56 -;; @004c v6 = iadd v5, v4 -;; @004c v7 = iconst.i64 0xffff_0000 -;; @004c v8 = iadd v6, v7 ; v7 = 0xffff_0000 -;; @004c v9 = load.i32 little region4 v8 +;; @004c v3 = uextend.i64 v2 +;; @004c v4 = load.i64 notrap aligned readonly can_move region2 v0+56 +;; @004c v5 = iadd v4, v3 +;; @004c v6 = iconst.i64 0xffff_0000 +;; @004c v7 = iadd v5, v6 ; v6 = 0xffff_0000 +;; @004c v8 = load.i32 little region4 v7 ;; @0053 jump block1 ;; ;; block1: -;; @0053 return v9 +;; @0053 return v8 ;; } diff --git a/tests/disas/load-store/load_store_static_kind_i32_index_0xffffffff_guard_yes_spectre_i8_access_0_offset.wat b/tests/disas/load-store/load_store_static_kind_i32_index_0xffffffff_guard_yes_spectre_i8_access_0_offset.wat index fb0ce829373d..da994a2708be 100644 --- a/tests/disas/load-store/load_store_static_kind_i32_index_0xffffffff_guard_yes_spectre_i8_access_0_offset.wat +++ b/tests/disas/load-store/load_store_static_kind_i32_index_0xffffffff_guard_yes_spectre_i8_access_0_offset.wat @@ -52,12 +52,12 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i32): -;; @0048 v4 = uextend.i64 v2 -;; @0048 v5 = load.i64 notrap aligned readonly can_move region2 v0+56 -;; @0048 v6 = iadd v5, v4 -;; @0048 v7 = uload8.i32 little region4 v6 +;; @0048 v3 = uextend.i64 v2 +;; @0048 v4 = load.i64 notrap aligned readonly can_move region2 v0+56 +;; @0048 v5 = iadd v4, v3 +;; @0048 v6 = uload8.i32 little region4 v5 ;; @004b jump block1 ;; ;; block1: -;; @004b return v7 +;; @004b return v6 ;; } diff --git a/tests/disas/load-store/load_store_static_kind_i32_index_0xffffffff_guard_yes_spectre_i8_access_0x1000_offset.wat b/tests/disas/load-store/load_store_static_kind_i32_index_0xffffffff_guard_yes_spectre_i8_access_0x1000_offset.wat index 156717b19286..27ba0a710050 100644 --- a/tests/disas/load-store/load_store_static_kind_i32_index_0xffffffff_guard_yes_spectre_i8_access_0x1000_offset.wat +++ b/tests/disas/load-store/load_store_static_kind_i32_index_0xffffffff_guard_yes_spectre_i8_access_0x1000_offset.wat @@ -54,14 +54,14 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i32): -;; @0049 v4 = uextend.i64 v2 -;; @0049 v5 = load.i64 notrap aligned readonly can_move region2 v0+56 -;; @0049 v6 = iadd v5, v4 -;; @0049 v7 = iconst.i64 4096 -;; @0049 v8 = iadd v6, v7 ; v7 = 4096 -;; @0049 v9 = uload8.i32 little region4 v8 +;; @0049 v3 = uextend.i64 v2 +;; @0049 v4 = load.i64 notrap aligned readonly can_move region2 v0+56 +;; @0049 v5 = iadd v4, v3 +;; @0049 v6 = iconst.i64 4096 +;; @0049 v7 = iadd v5, v6 ; v6 = 4096 +;; @0049 v8 = uload8.i32 little region4 v7 ;; @004d jump block1 ;; ;; block1: -;; @004d return v9 +;; @004d return v8 ;; } diff --git a/tests/disas/load-store/load_store_static_kind_i32_index_0xffffffff_guard_yes_spectre_i8_access_0xffff0000_offset.wat b/tests/disas/load-store/load_store_static_kind_i32_index_0xffffffff_guard_yes_spectre_i8_access_0xffff0000_offset.wat index 615103822256..3d818ca7cfd1 100644 --- a/tests/disas/load-store/load_store_static_kind_i32_index_0xffffffff_guard_yes_spectre_i8_access_0xffff0000_offset.wat +++ b/tests/disas/load-store/load_store_static_kind_i32_index_0xffffffff_guard_yes_spectre_i8_access_0xffff0000_offset.wat @@ -54,14 +54,14 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i32): -;; @004c v4 = uextend.i64 v2 -;; @004c v5 = load.i64 notrap aligned readonly can_move region2 v0+56 -;; @004c v6 = iadd v5, v4 -;; @004c v7 = iconst.i64 0xffff_0000 -;; @004c v8 = iadd v6, v7 ; v7 = 0xffff_0000 -;; @004c v9 = uload8.i32 little region4 v8 +;; @004c v3 = uextend.i64 v2 +;; @004c v4 = load.i64 notrap aligned readonly can_move region2 v0+56 +;; @004c v5 = iadd v4, v3 +;; @004c v6 = iconst.i64 0xffff_0000 +;; @004c v7 = iadd v5, v6 ; v6 = 0xffff_0000 +;; @004c v8 = uload8.i32 little region4 v7 ;; @0053 jump block1 ;; ;; block1: -;; @0053 return v9 +;; @0053 return v8 ;; } diff --git a/tests/disas/load-store/load_store_static_kind_i64_index_0_guard_no_spectre_i32_access_0_offset.wat b/tests/disas/load-store/load_store_static_kind_i64_index_0_guard_no_spectre_i32_access_0_offset.wat index be294289ebfe..0ae0fe68d487 100644 --- a/tests/disas/load-store/load_store_static_kind_i64_index_0_guard_no_spectre_i32_access_0_offset.wat +++ b/tests/disas/load-store/load_store_static_kind_i64_index_0_guard_no_spectre_i32_access_0_offset.wat @@ -54,14 +54,14 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i64): -;; @0048 v4 = iconst.i64 0xffff_fffc -;; @0048 v5 = icmp ugt v2, v4 ; v4 = 0xffff_fffc -;; @0048 trapnz v5, heap_oob -;; @0048 v6 = load.i64 notrap aligned readonly can_move region2 v0+56 -;; @0048 v7 = iadd v6, v2 -;; @0048 v8 = load.i32 little region4 v7 +;; @0048 v3 = iconst.i64 0xffff_fffc +;; @0048 v4 = icmp ugt v2, v3 ; v3 = 0xffff_fffc +;; @0048 trapnz v4, heap_oob +;; @0048 v5 = load.i64 notrap aligned readonly can_move region2 v0+56 +;; @0048 v6 = iadd v5, v2 +;; @0048 v7 = load.i32 little region4 v6 ;; @004b jump block1 ;; ;; block1: -;; @004b return v8 +;; @004b return v7 ;; } diff --git a/tests/disas/load-store/load_store_static_kind_i64_index_0_guard_no_spectre_i32_access_0x1000_offset.wat b/tests/disas/load-store/load_store_static_kind_i64_index_0_guard_no_spectre_i32_access_0x1000_offset.wat index c14d4239d70c..71e9874583b9 100644 --- a/tests/disas/load-store/load_store_static_kind_i64_index_0_guard_no_spectre_i32_access_0x1000_offset.wat +++ b/tests/disas/load-store/load_store_static_kind_i64_index_0_guard_no_spectre_i32_access_0x1000_offset.wat @@ -56,16 +56,16 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i64): -;; @0049 v4 = iconst.i64 0xffff_effc -;; @0049 v5 = icmp ugt v2, v4 ; v4 = 0xffff_effc -;; @0049 trapnz v5, heap_oob -;; @0049 v6 = load.i64 notrap aligned readonly can_move region2 v0+56 -;; @0049 v7 = iadd v6, v2 -;; @0049 v8 = iconst.i64 4096 -;; @0049 v9 = iadd v7, v8 ; v8 = 4096 -;; @0049 v10 = load.i32 little region4 v9 +;; @0049 v3 = iconst.i64 0xffff_effc +;; @0049 v4 = icmp ugt v2, v3 ; v3 = 0xffff_effc +;; @0049 trapnz v4, heap_oob +;; @0049 v5 = load.i64 notrap aligned readonly can_move region2 v0+56 +;; @0049 v6 = iadd v5, v2 +;; @0049 v7 = iconst.i64 4096 +;; @0049 v8 = iadd v6, v7 ; v7 = 4096 +;; @0049 v9 = load.i32 little region4 v8 ;; @004d jump block1 ;; ;; block1: -;; @004d return v10 +;; @004d return v9 ;; } diff --git a/tests/disas/load-store/load_store_static_kind_i64_index_0_guard_no_spectre_i32_access_0xffff0000_offset.wat b/tests/disas/load-store/load_store_static_kind_i64_index_0_guard_no_spectre_i32_access_0xffff0000_offset.wat index 9e684ca84724..ebabeb4b2ad5 100644 --- a/tests/disas/load-store/load_store_static_kind_i64_index_0_guard_no_spectre_i32_access_0xffff0000_offset.wat +++ b/tests/disas/load-store/load_store_static_kind_i64_index_0_guard_no_spectre_i32_access_0xffff0000_offset.wat @@ -56,16 +56,16 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i64): -;; @004c v4 = iconst.i64 0xfffc -;; @004c v5 = icmp ugt v2, v4 ; v4 = 0xfffc -;; @004c trapnz v5, heap_oob -;; @004c v6 = load.i64 notrap aligned readonly can_move region2 v0+56 -;; @004c v7 = iadd v6, v2 -;; @004c v8 = iconst.i64 0xffff_0000 -;; @004c v9 = iadd v7, v8 ; v8 = 0xffff_0000 -;; @004c v10 = load.i32 little region4 v9 +;; @004c v3 = iconst.i64 0xfffc +;; @004c v4 = icmp ugt v2, v3 ; v3 = 0xfffc +;; @004c trapnz v4, heap_oob +;; @004c v5 = load.i64 notrap aligned readonly can_move region2 v0+56 +;; @004c v6 = iadd v5, v2 +;; @004c v7 = iconst.i64 0xffff_0000 +;; @004c v8 = iadd v6, v7 ; v7 = 0xffff_0000 +;; @004c v9 = load.i32 little region4 v8 ;; @0053 jump block1 ;; ;; block1: -;; @0053 return v10 +;; @0053 return v9 ;; } diff --git a/tests/disas/load-store/load_store_static_kind_i64_index_0_guard_no_spectre_i8_access_0_offset.wat b/tests/disas/load-store/load_store_static_kind_i64_index_0_guard_no_spectre_i8_access_0_offset.wat index cebb7af407cd..8f250a6c8d4b 100644 --- a/tests/disas/load-store/load_store_static_kind_i64_index_0_guard_no_spectre_i8_access_0_offset.wat +++ b/tests/disas/load-store/load_store_static_kind_i64_index_0_guard_no_spectre_i8_access_0_offset.wat @@ -54,14 +54,14 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i64): -;; @0048 v4 = iconst.i64 0xffff_ffff -;; @0048 v5 = icmp ugt v2, v4 ; v4 = 0xffff_ffff -;; @0048 trapnz v5, heap_oob -;; @0048 v6 = load.i64 notrap aligned readonly can_move region2 v0+56 -;; @0048 v7 = iadd v6, v2 -;; @0048 v8 = uload8.i32 little region4 v7 +;; @0048 v3 = iconst.i64 0xffff_ffff +;; @0048 v4 = icmp ugt v2, v3 ; v3 = 0xffff_ffff +;; @0048 trapnz v4, heap_oob +;; @0048 v5 = load.i64 notrap aligned readonly can_move region2 v0+56 +;; @0048 v6 = iadd v5, v2 +;; @0048 v7 = uload8.i32 little region4 v6 ;; @004b jump block1 ;; ;; block1: -;; @004b return v8 +;; @004b return v7 ;; } diff --git a/tests/disas/load-store/load_store_static_kind_i64_index_0_guard_no_spectre_i8_access_0x1000_offset.wat b/tests/disas/load-store/load_store_static_kind_i64_index_0_guard_no_spectre_i8_access_0x1000_offset.wat index 1576c3008bfe..a975ae4b8803 100644 --- a/tests/disas/load-store/load_store_static_kind_i64_index_0_guard_no_spectre_i8_access_0x1000_offset.wat +++ b/tests/disas/load-store/load_store_static_kind_i64_index_0_guard_no_spectre_i8_access_0x1000_offset.wat @@ -56,16 +56,16 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i64): -;; @0049 v4 = iconst.i64 0xffff_efff -;; @0049 v5 = icmp ugt v2, v4 ; v4 = 0xffff_efff -;; @0049 trapnz v5, heap_oob -;; @0049 v6 = load.i64 notrap aligned readonly can_move region2 v0+56 -;; @0049 v7 = iadd v6, v2 -;; @0049 v8 = iconst.i64 4096 -;; @0049 v9 = iadd v7, v8 ; v8 = 4096 -;; @0049 v10 = uload8.i32 little region4 v9 +;; @0049 v3 = iconst.i64 0xffff_efff +;; @0049 v4 = icmp ugt v2, v3 ; v3 = 0xffff_efff +;; @0049 trapnz v4, heap_oob +;; @0049 v5 = load.i64 notrap aligned readonly can_move region2 v0+56 +;; @0049 v6 = iadd v5, v2 +;; @0049 v7 = iconst.i64 4096 +;; @0049 v8 = iadd v6, v7 ; v7 = 4096 +;; @0049 v9 = uload8.i32 little region4 v8 ;; @004d jump block1 ;; ;; block1: -;; @004d return v10 +;; @004d return v9 ;; } diff --git a/tests/disas/load-store/load_store_static_kind_i64_index_0_guard_no_spectre_i8_access_0xffff0000_offset.wat b/tests/disas/load-store/load_store_static_kind_i64_index_0_guard_no_spectre_i8_access_0xffff0000_offset.wat index 7db04b050a11..a997cd24194e 100644 --- a/tests/disas/load-store/load_store_static_kind_i64_index_0_guard_no_spectre_i8_access_0xffff0000_offset.wat +++ b/tests/disas/load-store/load_store_static_kind_i64_index_0_guard_no_spectre_i8_access_0xffff0000_offset.wat @@ -56,16 +56,16 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i64): -;; @004c v4 = iconst.i64 0xffff -;; @004c v5 = icmp ugt v2, v4 ; v4 = 0xffff -;; @004c trapnz v5, heap_oob -;; @004c v6 = load.i64 notrap aligned readonly can_move region2 v0+56 -;; @004c v7 = iadd v6, v2 -;; @004c v8 = iconst.i64 0xffff_0000 -;; @004c v9 = iadd v7, v8 ; v8 = 0xffff_0000 -;; @004c v10 = uload8.i32 little region4 v9 +;; @004c v3 = iconst.i64 0xffff +;; @004c v4 = icmp ugt v2, v3 ; v3 = 0xffff +;; @004c trapnz v4, heap_oob +;; @004c v5 = load.i64 notrap aligned readonly can_move region2 v0+56 +;; @004c v6 = iadd v5, v2 +;; @004c v7 = iconst.i64 0xffff_0000 +;; @004c v8 = iadd v6, v7 ; v7 = 0xffff_0000 +;; @004c v9 = uload8.i32 little region4 v8 ;; @0053 jump block1 ;; ;; block1: -;; @0053 return v10 +;; @0053 return v9 ;; } diff --git a/tests/disas/load-store/load_store_static_kind_i64_index_0_guard_yes_spectre_i32_access_0_offset.wat b/tests/disas/load-store/load_store_static_kind_i64_index_0_guard_yes_spectre_i32_access_0_offset.wat index d3ea9ab4cce0..54e0a1c78897 100644 --- a/tests/disas/load-store/load_store_static_kind_i64_index_0_guard_yes_spectre_i32_access_0_offset.wat +++ b/tests/disas/load-store/load_store_static_kind_i64_index_0_guard_yes_spectre_i32_access_0_offset.wat @@ -55,15 +55,15 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i64): -;; @0048 v4 = iconst.i64 0xffff_fffc -;; @0048 v5 = icmp ugt v2, v4 ; v4 = 0xffff_fffc -;; @0048 v6 = load.i64 notrap aligned readonly can_move region2 v0+56 -;; @0048 v7 = iadd v6, v2 -;; @0048 v8 = iconst.i64 0 -;; @0048 v9 = select_spectre_guard v5, v8, v7 ; v8 = 0 -;; @0048 v10 = load.i32 little region4 v9 +;; @0048 v3 = iconst.i64 0xffff_fffc +;; @0048 v4 = icmp ugt v2, v3 ; v3 = 0xffff_fffc +;; @0048 v5 = load.i64 notrap aligned readonly can_move region2 v0+56 +;; @0048 v6 = iadd v5, v2 +;; @0048 v7 = iconst.i64 0 +;; @0048 v8 = select_spectre_guard v4, v7, v6 ; v7 = 0 +;; @0048 v9 = load.i32 little region4 v8 ;; @004b jump block1 ;; ;; block1: -;; @004b return v10 +;; @004b return v9 ;; } diff --git a/tests/disas/load-store/load_store_static_kind_i64_index_0_guard_yes_spectre_i32_access_0x1000_offset.wat b/tests/disas/load-store/load_store_static_kind_i64_index_0_guard_yes_spectre_i32_access_0x1000_offset.wat index ba806139b01e..85651587739a 100644 --- a/tests/disas/load-store/load_store_static_kind_i64_index_0_guard_yes_spectre_i32_access_0x1000_offset.wat +++ b/tests/disas/load-store/load_store_static_kind_i64_index_0_guard_yes_spectre_i32_access_0x1000_offset.wat @@ -57,17 +57,17 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i64): -;; @0049 v4 = iconst.i64 0xffff_effc -;; @0049 v5 = icmp ugt v2, v4 ; v4 = 0xffff_effc -;; @0049 v6 = load.i64 notrap aligned readonly can_move region2 v0+56 -;; @0049 v7 = iadd v6, v2 -;; @0049 v8 = iconst.i64 4096 -;; @0049 v9 = iadd v7, v8 ; v8 = 4096 -;; @0049 v10 = iconst.i64 0 -;; @0049 v11 = select_spectre_guard v5, v10, v9 ; v10 = 0 -;; @0049 v12 = load.i32 little region4 v11 +;; @0049 v3 = iconst.i64 0xffff_effc +;; @0049 v4 = icmp ugt v2, v3 ; v3 = 0xffff_effc +;; @0049 v5 = load.i64 notrap aligned readonly can_move region2 v0+56 +;; @0049 v6 = iadd v5, v2 +;; @0049 v7 = iconst.i64 4096 +;; @0049 v8 = iadd v6, v7 ; v7 = 4096 +;; @0049 v9 = iconst.i64 0 +;; @0049 v10 = select_spectre_guard v4, v9, v8 ; v9 = 0 +;; @0049 v11 = load.i32 little region4 v10 ;; @004d jump block1 ;; ;; block1: -;; @004d return v12 +;; @004d return v11 ;; } diff --git a/tests/disas/load-store/load_store_static_kind_i64_index_0_guard_yes_spectre_i32_access_0xffff0000_offset.wat b/tests/disas/load-store/load_store_static_kind_i64_index_0_guard_yes_spectre_i32_access_0xffff0000_offset.wat index 9fde1c4d990a..8159ecdec24c 100644 --- a/tests/disas/load-store/load_store_static_kind_i64_index_0_guard_yes_spectre_i32_access_0xffff0000_offset.wat +++ b/tests/disas/load-store/load_store_static_kind_i64_index_0_guard_yes_spectre_i32_access_0xffff0000_offset.wat @@ -57,17 +57,17 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i64): -;; @004c v4 = iconst.i64 0xfffc -;; @004c v5 = icmp ugt v2, v4 ; v4 = 0xfffc -;; @004c v6 = load.i64 notrap aligned readonly can_move region2 v0+56 -;; @004c v7 = iadd v6, v2 -;; @004c v8 = iconst.i64 0xffff_0000 -;; @004c v9 = iadd v7, v8 ; v8 = 0xffff_0000 -;; @004c v10 = iconst.i64 0 -;; @004c v11 = select_spectre_guard v5, v10, v9 ; v10 = 0 -;; @004c v12 = load.i32 little region4 v11 +;; @004c v3 = iconst.i64 0xfffc +;; @004c v4 = icmp ugt v2, v3 ; v3 = 0xfffc +;; @004c v5 = load.i64 notrap aligned readonly can_move region2 v0+56 +;; @004c v6 = iadd v5, v2 +;; @004c v7 = iconst.i64 0xffff_0000 +;; @004c v8 = iadd v6, v7 ; v7 = 0xffff_0000 +;; @004c v9 = iconst.i64 0 +;; @004c v10 = select_spectre_guard v4, v9, v8 ; v9 = 0 +;; @004c v11 = load.i32 little region4 v10 ;; @0053 jump block1 ;; ;; block1: -;; @0053 return v12 +;; @0053 return v11 ;; } diff --git a/tests/disas/load-store/load_store_static_kind_i64_index_0_guard_yes_spectre_i8_access_0_offset.wat b/tests/disas/load-store/load_store_static_kind_i64_index_0_guard_yes_spectre_i8_access_0_offset.wat index fc17944fff4e..83104f792248 100644 --- a/tests/disas/load-store/load_store_static_kind_i64_index_0_guard_yes_spectre_i8_access_0_offset.wat +++ b/tests/disas/load-store/load_store_static_kind_i64_index_0_guard_yes_spectre_i8_access_0_offset.wat @@ -55,15 +55,15 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i64): -;; @0048 v4 = iconst.i64 0xffff_ffff -;; @0048 v5 = icmp ugt v2, v4 ; v4 = 0xffff_ffff -;; @0048 v6 = load.i64 notrap aligned readonly can_move region2 v0+56 -;; @0048 v7 = iadd v6, v2 -;; @0048 v8 = iconst.i64 0 -;; @0048 v9 = select_spectre_guard v5, v8, v7 ; v8 = 0 -;; @0048 v10 = uload8.i32 little region4 v9 +;; @0048 v3 = iconst.i64 0xffff_ffff +;; @0048 v4 = icmp ugt v2, v3 ; v3 = 0xffff_ffff +;; @0048 v5 = load.i64 notrap aligned readonly can_move region2 v0+56 +;; @0048 v6 = iadd v5, v2 +;; @0048 v7 = iconst.i64 0 +;; @0048 v8 = select_spectre_guard v4, v7, v6 ; v7 = 0 +;; @0048 v9 = uload8.i32 little region4 v8 ;; @004b jump block1 ;; ;; block1: -;; @004b return v10 +;; @004b return v9 ;; } diff --git a/tests/disas/load-store/load_store_static_kind_i64_index_0_guard_yes_spectre_i8_access_0x1000_offset.wat b/tests/disas/load-store/load_store_static_kind_i64_index_0_guard_yes_spectre_i8_access_0x1000_offset.wat index f8255cfc67f5..6ba2d27d2d31 100644 --- a/tests/disas/load-store/load_store_static_kind_i64_index_0_guard_yes_spectre_i8_access_0x1000_offset.wat +++ b/tests/disas/load-store/load_store_static_kind_i64_index_0_guard_yes_spectre_i8_access_0x1000_offset.wat @@ -57,17 +57,17 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i64): -;; @0049 v4 = iconst.i64 0xffff_efff -;; @0049 v5 = icmp ugt v2, v4 ; v4 = 0xffff_efff -;; @0049 v6 = load.i64 notrap aligned readonly can_move region2 v0+56 -;; @0049 v7 = iadd v6, v2 -;; @0049 v8 = iconst.i64 4096 -;; @0049 v9 = iadd v7, v8 ; v8 = 4096 -;; @0049 v10 = iconst.i64 0 -;; @0049 v11 = select_spectre_guard v5, v10, v9 ; v10 = 0 -;; @0049 v12 = uload8.i32 little region4 v11 +;; @0049 v3 = iconst.i64 0xffff_efff +;; @0049 v4 = icmp ugt v2, v3 ; v3 = 0xffff_efff +;; @0049 v5 = load.i64 notrap aligned readonly can_move region2 v0+56 +;; @0049 v6 = iadd v5, v2 +;; @0049 v7 = iconst.i64 4096 +;; @0049 v8 = iadd v6, v7 ; v7 = 4096 +;; @0049 v9 = iconst.i64 0 +;; @0049 v10 = select_spectre_guard v4, v9, v8 ; v9 = 0 +;; @0049 v11 = uload8.i32 little region4 v10 ;; @004d jump block1 ;; ;; block1: -;; @004d return v12 +;; @004d return v11 ;; } diff --git a/tests/disas/load-store/load_store_static_kind_i64_index_0_guard_yes_spectre_i8_access_0xffff0000_offset.wat b/tests/disas/load-store/load_store_static_kind_i64_index_0_guard_yes_spectre_i8_access_0xffff0000_offset.wat index 532077c18ed3..582fffaa01cd 100644 --- a/tests/disas/load-store/load_store_static_kind_i64_index_0_guard_yes_spectre_i8_access_0xffff0000_offset.wat +++ b/tests/disas/load-store/load_store_static_kind_i64_index_0_guard_yes_spectre_i8_access_0xffff0000_offset.wat @@ -57,17 +57,17 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i64): -;; @004c v4 = iconst.i64 0xffff -;; @004c v5 = icmp ugt v2, v4 ; v4 = 0xffff -;; @004c v6 = load.i64 notrap aligned readonly can_move region2 v0+56 -;; @004c v7 = iadd v6, v2 -;; @004c v8 = iconst.i64 0xffff_0000 -;; @004c v9 = iadd v7, v8 ; v8 = 0xffff_0000 -;; @004c v10 = iconst.i64 0 -;; @004c v11 = select_spectre_guard v5, v10, v9 ; v10 = 0 -;; @004c v12 = uload8.i32 little region4 v11 +;; @004c v3 = iconst.i64 0xffff +;; @004c v4 = icmp ugt v2, v3 ; v3 = 0xffff +;; @004c v5 = load.i64 notrap aligned readonly can_move region2 v0+56 +;; @004c v6 = iadd v5, v2 +;; @004c v7 = iconst.i64 0xffff_0000 +;; @004c v8 = iadd v6, v7 ; v7 = 0xffff_0000 +;; @004c v9 = iconst.i64 0 +;; @004c v10 = select_spectre_guard v4, v9, v8 ; v9 = 0 +;; @004c v11 = uload8.i32 little region4 v10 ;; @0053 jump block1 ;; ;; block1: -;; @0053 return v12 +;; @0053 return v11 ;; } diff --git a/tests/disas/load-store/load_store_static_kind_i64_index_0xffffffff_guard_no_spectre_i32_access_0_offset.wat b/tests/disas/load-store/load_store_static_kind_i64_index_0xffffffff_guard_no_spectre_i32_access_0_offset.wat index 50f2e48dd51e..007926dc4991 100644 --- a/tests/disas/load-store/load_store_static_kind_i64_index_0xffffffff_guard_no_spectre_i32_access_0_offset.wat +++ b/tests/disas/load-store/load_store_static_kind_i64_index_0xffffffff_guard_no_spectre_i32_access_0_offset.wat @@ -54,14 +54,14 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i64): -;; @0048 v4 = iconst.i64 0xffff_fffc -;; @0048 v5 = icmp ugt v2, v4 ; v4 = 0xffff_fffc -;; @0048 trapnz v5, heap_oob -;; @0048 v6 = load.i64 notrap aligned readonly can_move region2 v0+56 -;; @0048 v7 = iadd v6, v2 -;; @0048 v8 = load.i32 little region4 v7 +;; @0048 v3 = iconst.i64 0xffff_fffc +;; @0048 v4 = icmp ugt v2, v3 ; v3 = 0xffff_fffc +;; @0048 trapnz v4, heap_oob +;; @0048 v5 = load.i64 notrap aligned readonly can_move region2 v0+56 +;; @0048 v6 = iadd v5, v2 +;; @0048 v7 = load.i32 little region4 v6 ;; @004b jump block1 ;; ;; block1: -;; @004b return v8 +;; @004b return v7 ;; } diff --git a/tests/disas/load-store/load_store_static_kind_i64_index_0xffffffff_guard_no_spectre_i32_access_0x1000_offset.wat b/tests/disas/load-store/load_store_static_kind_i64_index_0xffffffff_guard_no_spectre_i32_access_0x1000_offset.wat index 169d0f052f76..d819f2857f1f 100644 --- a/tests/disas/load-store/load_store_static_kind_i64_index_0xffffffff_guard_no_spectre_i32_access_0x1000_offset.wat +++ b/tests/disas/load-store/load_store_static_kind_i64_index_0xffffffff_guard_no_spectre_i32_access_0x1000_offset.wat @@ -56,16 +56,16 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i64): -;; @0049 v4 = iconst.i64 0xffff_effc -;; @0049 v5 = icmp ugt v2, v4 ; v4 = 0xffff_effc -;; @0049 trapnz v5, heap_oob -;; @0049 v6 = load.i64 notrap aligned readonly can_move region2 v0+56 -;; @0049 v7 = iadd v6, v2 -;; @0049 v8 = iconst.i64 4096 -;; @0049 v9 = iadd v7, v8 ; v8 = 4096 -;; @0049 v10 = load.i32 little region4 v9 +;; @0049 v3 = iconst.i64 0xffff_effc +;; @0049 v4 = icmp ugt v2, v3 ; v3 = 0xffff_effc +;; @0049 trapnz v4, heap_oob +;; @0049 v5 = load.i64 notrap aligned readonly can_move region2 v0+56 +;; @0049 v6 = iadd v5, v2 +;; @0049 v7 = iconst.i64 4096 +;; @0049 v8 = iadd v6, v7 ; v7 = 4096 +;; @0049 v9 = load.i32 little region4 v8 ;; @004d jump block1 ;; ;; block1: -;; @004d return v10 +;; @004d return v9 ;; } diff --git a/tests/disas/load-store/load_store_static_kind_i64_index_0xffffffff_guard_no_spectre_i32_access_0xffff0000_offset.wat b/tests/disas/load-store/load_store_static_kind_i64_index_0xffffffff_guard_no_spectre_i32_access_0xffff0000_offset.wat index dedd140f5af2..625fb5507e05 100644 --- a/tests/disas/load-store/load_store_static_kind_i64_index_0xffffffff_guard_no_spectre_i32_access_0xffff0000_offset.wat +++ b/tests/disas/load-store/load_store_static_kind_i64_index_0xffffffff_guard_no_spectre_i32_access_0xffff0000_offset.wat @@ -56,16 +56,16 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i64): -;; @004c v4 = iconst.i64 0xfffc -;; @004c v5 = icmp ugt v2, v4 ; v4 = 0xfffc -;; @004c trapnz v5, heap_oob -;; @004c v6 = load.i64 notrap aligned readonly can_move region2 v0+56 -;; @004c v7 = iadd v6, v2 -;; @004c v8 = iconst.i64 0xffff_0000 -;; @004c v9 = iadd v7, v8 ; v8 = 0xffff_0000 -;; @004c v10 = load.i32 little region4 v9 +;; @004c v3 = iconst.i64 0xfffc +;; @004c v4 = icmp ugt v2, v3 ; v3 = 0xfffc +;; @004c trapnz v4, heap_oob +;; @004c v5 = load.i64 notrap aligned readonly can_move region2 v0+56 +;; @004c v6 = iadd v5, v2 +;; @004c v7 = iconst.i64 0xffff_0000 +;; @004c v8 = iadd v6, v7 ; v7 = 0xffff_0000 +;; @004c v9 = load.i32 little region4 v8 ;; @0053 jump block1 ;; ;; block1: -;; @0053 return v10 +;; @0053 return v9 ;; } diff --git a/tests/disas/load-store/load_store_static_kind_i64_index_0xffffffff_guard_no_spectre_i8_access_0_offset.wat b/tests/disas/load-store/load_store_static_kind_i64_index_0xffffffff_guard_no_spectre_i8_access_0_offset.wat index 52ea91f3cb54..c5d934deb8e4 100644 --- a/tests/disas/load-store/load_store_static_kind_i64_index_0xffffffff_guard_no_spectre_i8_access_0_offset.wat +++ b/tests/disas/load-store/load_store_static_kind_i64_index_0xffffffff_guard_no_spectre_i8_access_0_offset.wat @@ -54,14 +54,14 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i64): -;; @0048 v4 = iconst.i64 0xffff_ffff -;; @0048 v5 = icmp ugt v2, v4 ; v4 = 0xffff_ffff -;; @0048 trapnz v5, heap_oob -;; @0048 v6 = load.i64 notrap aligned readonly can_move region2 v0+56 -;; @0048 v7 = iadd v6, v2 -;; @0048 v8 = uload8.i32 little region4 v7 +;; @0048 v3 = iconst.i64 0xffff_ffff +;; @0048 v4 = icmp ugt v2, v3 ; v3 = 0xffff_ffff +;; @0048 trapnz v4, heap_oob +;; @0048 v5 = load.i64 notrap aligned readonly can_move region2 v0+56 +;; @0048 v6 = iadd v5, v2 +;; @0048 v7 = uload8.i32 little region4 v6 ;; @004b jump block1 ;; ;; block1: -;; @004b return v8 +;; @004b return v7 ;; } diff --git a/tests/disas/load-store/load_store_static_kind_i64_index_0xffffffff_guard_no_spectre_i8_access_0x1000_offset.wat b/tests/disas/load-store/load_store_static_kind_i64_index_0xffffffff_guard_no_spectre_i8_access_0x1000_offset.wat index bd30114ab117..f0b97bd21146 100644 --- a/tests/disas/load-store/load_store_static_kind_i64_index_0xffffffff_guard_no_spectre_i8_access_0x1000_offset.wat +++ b/tests/disas/load-store/load_store_static_kind_i64_index_0xffffffff_guard_no_spectre_i8_access_0x1000_offset.wat @@ -56,16 +56,16 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i64): -;; @0049 v4 = iconst.i64 0xffff_efff -;; @0049 v5 = icmp ugt v2, v4 ; v4 = 0xffff_efff -;; @0049 trapnz v5, heap_oob -;; @0049 v6 = load.i64 notrap aligned readonly can_move region2 v0+56 -;; @0049 v7 = iadd v6, v2 -;; @0049 v8 = iconst.i64 4096 -;; @0049 v9 = iadd v7, v8 ; v8 = 4096 -;; @0049 v10 = uload8.i32 little region4 v9 +;; @0049 v3 = iconst.i64 0xffff_efff +;; @0049 v4 = icmp ugt v2, v3 ; v3 = 0xffff_efff +;; @0049 trapnz v4, heap_oob +;; @0049 v5 = load.i64 notrap aligned readonly can_move region2 v0+56 +;; @0049 v6 = iadd v5, v2 +;; @0049 v7 = iconst.i64 4096 +;; @0049 v8 = iadd v6, v7 ; v7 = 4096 +;; @0049 v9 = uload8.i32 little region4 v8 ;; @004d jump block1 ;; ;; block1: -;; @004d return v10 +;; @004d return v9 ;; } diff --git a/tests/disas/load-store/load_store_static_kind_i64_index_0xffffffff_guard_no_spectre_i8_access_0xffff0000_offset.wat b/tests/disas/load-store/load_store_static_kind_i64_index_0xffffffff_guard_no_spectre_i8_access_0xffff0000_offset.wat index 91ae35e31ee0..17835694ee12 100644 --- a/tests/disas/load-store/load_store_static_kind_i64_index_0xffffffff_guard_no_spectre_i8_access_0xffff0000_offset.wat +++ b/tests/disas/load-store/load_store_static_kind_i64_index_0xffffffff_guard_no_spectre_i8_access_0xffff0000_offset.wat @@ -56,16 +56,16 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i64): -;; @004c v4 = iconst.i64 0xffff -;; @004c v5 = icmp ugt v2, v4 ; v4 = 0xffff -;; @004c trapnz v5, heap_oob -;; @004c v6 = load.i64 notrap aligned readonly can_move region2 v0+56 -;; @004c v7 = iadd v6, v2 -;; @004c v8 = iconst.i64 0xffff_0000 -;; @004c v9 = iadd v7, v8 ; v8 = 0xffff_0000 -;; @004c v10 = uload8.i32 little region4 v9 +;; @004c v3 = iconst.i64 0xffff +;; @004c v4 = icmp ugt v2, v3 ; v3 = 0xffff +;; @004c trapnz v4, heap_oob +;; @004c v5 = load.i64 notrap aligned readonly can_move region2 v0+56 +;; @004c v6 = iadd v5, v2 +;; @004c v7 = iconst.i64 0xffff_0000 +;; @004c v8 = iadd v6, v7 ; v7 = 0xffff_0000 +;; @004c v9 = uload8.i32 little region4 v8 ;; @0053 jump block1 ;; ;; block1: -;; @0053 return v10 +;; @0053 return v9 ;; } diff --git a/tests/disas/load-store/load_store_static_kind_i64_index_0xffffffff_guard_yes_spectre_i32_access_0_offset.wat b/tests/disas/load-store/load_store_static_kind_i64_index_0xffffffff_guard_yes_spectre_i32_access_0_offset.wat index a50774512224..29712bdeba23 100644 --- a/tests/disas/load-store/load_store_static_kind_i64_index_0xffffffff_guard_yes_spectre_i32_access_0_offset.wat +++ b/tests/disas/load-store/load_store_static_kind_i64_index_0xffffffff_guard_yes_spectre_i32_access_0_offset.wat @@ -55,15 +55,15 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i64): -;; @0048 v4 = iconst.i64 0xffff_fffc -;; @0048 v5 = icmp ugt v2, v4 ; v4 = 0xffff_fffc -;; @0048 v6 = load.i64 notrap aligned readonly can_move region2 v0+56 -;; @0048 v7 = iadd v6, v2 -;; @0048 v8 = iconst.i64 0 -;; @0048 v9 = select_spectre_guard v5, v8, v7 ; v8 = 0 -;; @0048 v10 = load.i32 little region4 v9 +;; @0048 v3 = iconst.i64 0xffff_fffc +;; @0048 v4 = icmp ugt v2, v3 ; v3 = 0xffff_fffc +;; @0048 v5 = load.i64 notrap aligned readonly can_move region2 v0+56 +;; @0048 v6 = iadd v5, v2 +;; @0048 v7 = iconst.i64 0 +;; @0048 v8 = select_spectre_guard v4, v7, v6 ; v7 = 0 +;; @0048 v9 = load.i32 little region4 v8 ;; @004b jump block1 ;; ;; block1: -;; @004b return v10 +;; @004b return v9 ;; } diff --git a/tests/disas/load-store/load_store_static_kind_i64_index_0xffffffff_guard_yes_spectre_i32_access_0x1000_offset.wat b/tests/disas/load-store/load_store_static_kind_i64_index_0xffffffff_guard_yes_spectre_i32_access_0x1000_offset.wat index 580f3d2542a5..d0e03071711d 100644 --- a/tests/disas/load-store/load_store_static_kind_i64_index_0xffffffff_guard_yes_spectre_i32_access_0x1000_offset.wat +++ b/tests/disas/load-store/load_store_static_kind_i64_index_0xffffffff_guard_yes_spectre_i32_access_0x1000_offset.wat @@ -57,17 +57,17 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i64): -;; @0049 v4 = iconst.i64 0xffff_effc -;; @0049 v5 = icmp ugt v2, v4 ; v4 = 0xffff_effc -;; @0049 v6 = load.i64 notrap aligned readonly can_move region2 v0+56 -;; @0049 v7 = iadd v6, v2 -;; @0049 v8 = iconst.i64 4096 -;; @0049 v9 = iadd v7, v8 ; v8 = 4096 -;; @0049 v10 = iconst.i64 0 -;; @0049 v11 = select_spectre_guard v5, v10, v9 ; v10 = 0 -;; @0049 v12 = load.i32 little region4 v11 +;; @0049 v3 = iconst.i64 0xffff_effc +;; @0049 v4 = icmp ugt v2, v3 ; v3 = 0xffff_effc +;; @0049 v5 = load.i64 notrap aligned readonly can_move region2 v0+56 +;; @0049 v6 = iadd v5, v2 +;; @0049 v7 = iconst.i64 4096 +;; @0049 v8 = iadd v6, v7 ; v7 = 4096 +;; @0049 v9 = iconst.i64 0 +;; @0049 v10 = select_spectre_guard v4, v9, v8 ; v9 = 0 +;; @0049 v11 = load.i32 little region4 v10 ;; @004d jump block1 ;; ;; block1: -;; @004d return v12 +;; @004d return v11 ;; } diff --git a/tests/disas/load-store/load_store_static_kind_i64_index_0xffffffff_guard_yes_spectre_i32_access_0xffff0000_offset.wat b/tests/disas/load-store/load_store_static_kind_i64_index_0xffffffff_guard_yes_spectre_i32_access_0xffff0000_offset.wat index 9c0f4960dd99..668bfadbbf69 100644 --- a/tests/disas/load-store/load_store_static_kind_i64_index_0xffffffff_guard_yes_spectre_i32_access_0xffff0000_offset.wat +++ b/tests/disas/load-store/load_store_static_kind_i64_index_0xffffffff_guard_yes_spectre_i32_access_0xffff0000_offset.wat @@ -57,17 +57,17 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i64): -;; @004c v4 = iconst.i64 0xfffc -;; @004c v5 = icmp ugt v2, v4 ; v4 = 0xfffc -;; @004c v6 = load.i64 notrap aligned readonly can_move region2 v0+56 -;; @004c v7 = iadd v6, v2 -;; @004c v8 = iconst.i64 0xffff_0000 -;; @004c v9 = iadd v7, v8 ; v8 = 0xffff_0000 -;; @004c v10 = iconst.i64 0 -;; @004c v11 = select_spectre_guard v5, v10, v9 ; v10 = 0 -;; @004c v12 = load.i32 little region4 v11 +;; @004c v3 = iconst.i64 0xfffc +;; @004c v4 = icmp ugt v2, v3 ; v3 = 0xfffc +;; @004c v5 = load.i64 notrap aligned readonly can_move region2 v0+56 +;; @004c v6 = iadd v5, v2 +;; @004c v7 = iconst.i64 0xffff_0000 +;; @004c v8 = iadd v6, v7 ; v7 = 0xffff_0000 +;; @004c v9 = iconst.i64 0 +;; @004c v10 = select_spectre_guard v4, v9, v8 ; v9 = 0 +;; @004c v11 = load.i32 little region4 v10 ;; @0053 jump block1 ;; ;; block1: -;; @0053 return v12 +;; @0053 return v11 ;; } diff --git a/tests/disas/load-store/load_store_static_kind_i64_index_0xffffffff_guard_yes_spectre_i8_access_0_offset.wat b/tests/disas/load-store/load_store_static_kind_i64_index_0xffffffff_guard_yes_spectre_i8_access_0_offset.wat index 672e66a01bfc..a028b3735997 100644 --- a/tests/disas/load-store/load_store_static_kind_i64_index_0xffffffff_guard_yes_spectre_i8_access_0_offset.wat +++ b/tests/disas/load-store/load_store_static_kind_i64_index_0xffffffff_guard_yes_spectre_i8_access_0_offset.wat @@ -55,15 +55,15 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i64): -;; @0048 v4 = iconst.i64 0xffff_ffff -;; @0048 v5 = icmp ugt v2, v4 ; v4 = 0xffff_ffff -;; @0048 v6 = load.i64 notrap aligned readonly can_move region2 v0+56 -;; @0048 v7 = iadd v6, v2 -;; @0048 v8 = iconst.i64 0 -;; @0048 v9 = select_spectre_guard v5, v8, v7 ; v8 = 0 -;; @0048 v10 = uload8.i32 little region4 v9 +;; @0048 v3 = iconst.i64 0xffff_ffff +;; @0048 v4 = icmp ugt v2, v3 ; v3 = 0xffff_ffff +;; @0048 v5 = load.i64 notrap aligned readonly can_move region2 v0+56 +;; @0048 v6 = iadd v5, v2 +;; @0048 v7 = iconst.i64 0 +;; @0048 v8 = select_spectre_guard v4, v7, v6 ; v7 = 0 +;; @0048 v9 = uload8.i32 little region4 v8 ;; @004b jump block1 ;; ;; block1: -;; @004b return v10 +;; @004b return v9 ;; } diff --git a/tests/disas/load-store/load_store_static_kind_i64_index_0xffffffff_guard_yes_spectre_i8_access_0x1000_offset.wat b/tests/disas/load-store/load_store_static_kind_i64_index_0xffffffff_guard_yes_spectre_i8_access_0x1000_offset.wat index 28ac4299a65d..fd5465fb184b 100644 --- a/tests/disas/load-store/load_store_static_kind_i64_index_0xffffffff_guard_yes_spectre_i8_access_0x1000_offset.wat +++ b/tests/disas/load-store/load_store_static_kind_i64_index_0xffffffff_guard_yes_spectre_i8_access_0x1000_offset.wat @@ -57,17 +57,17 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i64): -;; @0049 v4 = iconst.i64 0xffff_efff -;; @0049 v5 = icmp ugt v2, v4 ; v4 = 0xffff_efff -;; @0049 v6 = load.i64 notrap aligned readonly can_move region2 v0+56 -;; @0049 v7 = iadd v6, v2 -;; @0049 v8 = iconst.i64 4096 -;; @0049 v9 = iadd v7, v8 ; v8 = 4096 -;; @0049 v10 = iconst.i64 0 -;; @0049 v11 = select_spectre_guard v5, v10, v9 ; v10 = 0 -;; @0049 v12 = uload8.i32 little region4 v11 +;; @0049 v3 = iconst.i64 0xffff_efff +;; @0049 v4 = icmp ugt v2, v3 ; v3 = 0xffff_efff +;; @0049 v5 = load.i64 notrap aligned readonly can_move region2 v0+56 +;; @0049 v6 = iadd v5, v2 +;; @0049 v7 = iconst.i64 4096 +;; @0049 v8 = iadd v6, v7 ; v7 = 4096 +;; @0049 v9 = iconst.i64 0 +;; @0049 v10 = select_spectre_guard v4, v9, v8 ; v9 = 0 +;; @0049 v11 = uload8.i32 little region4 v10 ;; @004d jump block1 ;; ;; block1: -;; @004d return v12 +;; @004d return v11 ;; } diff --git a/tests/disas/load-store/load_store_static_kind_i64_index_0xffffffff_guard_yes_spectre_i8_access_0xffff0000_offset.wat b/tests/disas/load-store/load_store_static_kind_i64_index_0xffffffff_guard_yes_spectre_i8_access_0xffff0000_offset.wat index 26623e31c389..361d1f26d320 100644 --- a/tests/disas/load-store/load_store_static_kind_i64_index_0xffffffff_guard_yes_spectre_i8_access_0xffff0000_offset.wat +++ b/tests/disas/load-store/load_store_static_kind_i64_index_0xffffffff_guard_yes_spectre_i8_access_0xffff0000_offset.wat @@ -57,17 +57,17 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i64): -;; @004c v4 = iconst.i64 0xffff -;; @004c v5 = icmp ugt v2, v4 ; v4 = 0xffff -;; @004c v6 = load.i64 notrap aligned readonly can_move region2 v0+56 -;; @004c v7 = iadd v6, v2 -;; @004c v8 = iconst.i64 0xffff_0000 -;; @004c v9 = iadd v7, v8 ; v8 = 0xffff_0000 -;; @004c v10 = iconst.i64 0 -;; @004c v11 = select_spectre_guard v5, v10, v9 ; v10 = 0 -;; @004c v12 = uload8.i32 little region4 v11 +;; @004c v3 = iconst.i64 0xffff +;; @004c v4 = icmp ugt v2, v3 ; v3 = 0xffff +;; @004c v5 = load.i64 notrap aligned readonly can_move region2 v0+56 +;; @004c v6 = iadd v5, v2 +;; @004c v7 = iconst.i64 0xffff_0000 +;; @004c v8 = iadd v6, v7 ; v7 = 0xffff_0000 +;; @004c v9 = iconst.i64 0 +;; @004c v10 = select_spectre_guard v4, v9, v8 ; v9 = 0 +;; @004c v11 = uload8.i32 little region4 v10 ;; @0053 jump block1 ;; ;; block1: -;; @0053 return v12 +;; @0053 return v11 ;; } diff --git a/tests/disas/multi-1.wat b/tests/disas/multi-1.wat index 2f44d90c2485..30ca7374bb8b 100644 --- a/tests/disas/multi-1.wat +++ b/tests/disas/multi-1.wat @@ -16,12 +16,12 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i64, v3: i32): -;; @003a v10 = f64const 0x1.34a0000000000p10 +;; @003a v4 = f64const 0x1.34a0000000000p10 ;; @0043 jump block2 ;; ;; block2: ;; @0044 jump block1 ;; ;; block1: -;; @0044 return v3, v2, v10 ; v10 = 0x1.34a0000000000p10 +;; @0044 return v3, v2, v4 ; v4 = 0x1.34a0000000000p10 ;; } diff --git a/tests/disas/multi-10.wat b/tests/disas/multi-10.wat index 08ab623d03e7..1927457f8529 100644 --- a/tests/disas/multi-10.wat +++ b/tests/disas/multi-10.wat @@ -23,16 +23,16 @@ ;; @002c brif v3, block2, block4 ;; ;; block2: -;; @002e v9 = iconst.i64 -1 -;; @0030 jump block3(v9) ; v9 = -1 +;; @002e v4 = iconst.i64 -1 +;; @0030 jump block3(v4) ; v4 = -1 ;; ;; block4: -;; @0031 v10 = iconst.i64 -2 -;; @0033 jump block3(v10) ; v10 = -2 +;; @0031 v5 = iconst.i64 -2 +;; @0033 jump block3(v5) ; v5 = -2 ;; ;; block3(v7: i64): -;; @0034 jump block1(v7) +;; @0034 jump block1 ;; -;; block1(v5: i64): -;; @0034 return v2, v5 +;; block1: +;; @0034 return v2, v7 ;; } diff --git a/tests/disas/multi-11.wat b/tests/disas/multi-11.wat index c54cd5d6404f..937cccbab759 100644 --- a/tests/disas/multi-11.wat +++ b/tests/disas/multi-11.wat @@ -20,6 +20,6 @@ ;; @002b jump block2 ;; ;; block2: -;; @002d v8 = iconst.i64 42 -;; @002f return v2, v8 ; v8 = 42 +;; @002d v4 = iconst.i64 42 +;; @002f return v2, v4 ; v4 = 42 ;; } diff --git a/tests/disas/multi-13.wat b/tests/disas/multi-13.wat index 66f0cf5760ba..03444ee7696f 100644 --- a/tests/disas/multi-13.wat +++ b/tests/disas/multi-13.wat @@ -23,8 +23,8 @@ ;; @002e brif v2, block3, block5 ;; ;; block3: -;; @0030 v7 = iconst.i32 3 -;; @0032 jump block2(v7) ; v7 = 3 +;; @0030 v4 = iconst.i32 3 +;; @0032 jump block2(v4) ; v4 = 3 ;; ;; block5: ;; @0037 jump block4 @@ -33,8 +33,8 @@ ;; @0038 jump block2(v3) ;; ;; block2(v5: i32): -;; @0039 jump block1(v5) +;; @0039 jump block1 ;; -;; block1(v4: i32): -;; @0039 return v4 +;; block1: +;; @0039 return v5 ;; } diff --git a/tests/disas/multi-14.wat b/tests/disas/multi-14.wat index d00938b5f3fd..480f0530f5d3 100644 --- a/tests/disas/multi-14.wat +++ b/tests/disas/multi-14.wat @@ -26,15 +26,15 @@ ;; @0032 jump block4 ;; ;; block5: -;; @0033 v7 = iconst.i32 4 -;; @0035 jump block2(v7) ; v7 = 4 +;; @0033 v4 = iconst.i32 4 +;; @0035 jump block2(v4) ; v4 = 4 ;; ;; block4: ;; @0038 jump block2(v3) ;; ;; block2(v5: i32): -;; @0039 jump block1(v5) +;; @0039 jump block1 ;; -;; block1(v4: i32): -;; @0039 return v4 +;; block1: +;; @0039 return v5 ;; } diff --git a/tests/disas/multi-16.wat b/tests/disas/multi-16.wat index 11a6d48a730c..23c348ac6b50 100644 --- a/tests/disas/multi-16.wat +++ b/tests/disas/multi-16.wat @@ -19,22 +19,22 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i32): -;; @0024 v4 = iconst.i32 1 +;; @0024 v3 = iconst.i32 1 ;; @0028 brif v2, block2, block4 ;; ;; block2: -;; @002a v6 = iconst.i32 2 -;; @002c v7 = iadd.i32 v4, v6 ; v4 = 1, v6 = 2 -;; @002d jump block3(v7) +;; @002a v4 = iconst.i32 2 +;; @002c v5 = iadd.i32 v3, v4 ; v3 = 1, v4 = 2 +;; @002d jump block3(v5) ;; ;; block4: -;; @002e v9 = iconst.i32 -2 -;; @0030 v10 = iadd.i32 v4, v9 ; v4 = 1, v9 = -2 -;; @0031 jump block3(v10) +;; @002e v6 = iconst.i32 -2 +;; @0030 v7 = iadd.i32 v3, v6 ; v3 = 1, v6 = -2 +;; @0031 jump block3(v7) ;; -;; block3(v5: i32): -;; @0032 jump block1(v5) +;; block3(v8: i32): +;; @0032 jump block1 ;; -;; block1(v3: i32): -;; @0032 return v3 +;; block1: +;; @0032 return v8 ;; } diff --git a/tests/disas/multi-17.wat b/tests/disas/multi-17.wat index 0758a69f39a5..2b2dc30f6f37 100644 --- a/tests/disas/multi-17.wat +++ b/tests/disas/multi-17.wat @@ -38,34 +38,34 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i32, v3: i32, v4: i32): -;; @0025 v6 = iconst.i32 0 -;; @0027 v7 = iconst.i32 0 -;; @0029 v8 = iconst.i32 0 -;; @002b v9 = iconst.i32 0 -;; @002d v10 = iconst.i32 0 -;; @002f brif v10, block2, block4 ; v10 = 0 +;; @0025 v5 = iconst.i32 0 +;; @0027 v6 = iconst.i32 0 +;; @0029 v7 = iconst.i32 0 +;; @002b v8 = iconst.i32 0 +;; @002d v9 = iconst.i32 0 +;; @002f brif v9, block2, block4 ; v9 = 0 ;; ;; block2: -;; @0031 jump block3(v9) ; v9 = 0 +;; @0031 jump block3(v8) ; v8 = 0 ;; ;; block4: -;; @0034 v15 = call fn0(v0, v0, v7, v8, v9) ; v7 = 0, v8 = 0, v9 = 0 -;; @0036 jump block3(v15) +;; @0034 v10 = call fn0(v0, v0, v6, v7, v8) ; v6 = 0, v7 = 0, v8 = 0 +;; @0036 jump block3(v10) ;; ;; block3(v11: i32): -;; @0037 v16 = iconst.i32 0 -;; @0039 v17 = iconst.i32 0 -;; @003b brif v17, block5, block7(v11) ; v17 = 0 +;; @0037 v12 = iconst.i32 0 +;; @0039 v13 = iconst.i32 0 +;; @003b brif v13, block5, block7 ; v13 = 0 ;; ;; block5: ;; @003f jump block6 ;; -;; block7(v20: i32): +;; block7: ;; @0042 jump block6 ;; ;; block6: ;; @0043 jump block1 ;; ;; block1: -;; @0043 return v6 ; v6 = 0 +;; @0043 return v5 ; v5 = 0 ;; } diff --git a/tests/disas/multi-3.wat b/tests/disas/multi-3.wat index d27a5daef8d1..e68f001ecbe1 100644 --- a/tests/disas/multi-3.wat +++ b/tests/disas/multi-3.wat @@ -29,13 +29,13 @@ ;; @0038 return v4, v3 ;; ;; block4: -;; @003c v11 = iconst.i64 0 -;; @003e v12 = iconst.i64 0 +;; @003c v5 = iconst.i64 0 +;; @003e v6 = iconst.i64 0 ;; @0040 jump block3 ;; ;; block3: ;; @0041 jump block1 ;; ;; block1: -;; @0041 return v11, v12 ; v11 = 0, v12 = 0 +;; @0041 return v5, v6 ; v5 = 0, v6 = 0 ;; } diff --git a/tests/disas/multi-4.wat b/tests/disas/multi-4.wat index 05ced50556f6..50a51d702754 100644 --- a/tests/disas/multi-4.wat +++ b/tests/disas/multi-4.wat @@ -26,18 +26,18 @@ ;; @0037 brif v2, block2, block4 ;; ;; block2: -;; @0039 v9 = iadd.i64 v4, v3 -;; @003a v10 = iconst.i64 1 -;; @003c jump block3(v9, v10) ; v10 = 1 +;; @0039 v5 = iadd.i64 v4, v3 +;; @003a v6 = iconst.i64 1 +;; @003c jump block3(v5, v6) ; v6 = 1 ;; ;; block4: -;; @003d v13 = isub.i64 v4, v3 -;; @003e v14 = iconst.i64 2 -;; @0040 jump block3(v13, v14) ; v14 = 2 +;; @003d v7 = isub.i64 v4, v3 +;; @003e v8 = iconst.i64 2 +;; @0040 jump block3(v7, v8) ; v8 = 2 ;; -;; block3(v7: i64, v8: i64): -;; @0041 jump block1(v7, v8) +;; block3(v9: i64, v10: i64): +;; @0041 jump block1 ;; -;; block1(v5: i64, v6: i64): -;; @0041 return v5, v6 +;; block1: +;; @0041 return v9, v10 ;; } diff --git a/tests/disas/multi-6.wat b/tests/disas/multi-6.wat index 0e5479cbc5e4..f378d60dd5d8 100644 --- a/tests/disas/multi-6.wat +++ b/tests/disas/multi-6.wat @@ -22,7 +22,7 @@ ;; ;; block0(v0: i64, v1: i64): ;; @0026 v2 = iconst.i32 1 -;; @002a v5 = iconst.i64 2 +;; @002a v3 = iconst.i64 2 ;; @002c jump block2 ;; ;; block2: diff --git a/tests/disas/multi-7.wat b/tests/disas/multi-7.wat index c0b85c063572..a58c414fa4fc 100644 --- a/tests/disas/multi-7.wat +++ b/tests/disas/multi-7.wat @@ -22,12 +22,12 @@ ;; @002a brif v3, block2, block3(v2) ;; ;; block2: -;; @002d v6 = iconst.i64 -1 -;; @002f jump block3(v6) ; v6 = -1 +;; @002d v4 = iconst.i64 -1 +;; @002f jump block3(v4) ; v4 = -1 ;; ;; block3(v5: i64): -;; @0030 jump block1(v5) +;; @0030 jump block1 ;; -;; block1(v4: i64): -;; @0030 return v4 +;; block1: +;; @0030 return v5 ;; } diff --git a/tests/disas/multi-8.wat b/tests/disas/multi-8.wat index 0600909c4059..e875644cde98 100644 --- a/tests/disas/multi-8.wat +++ b/tests/disas/multi-8.wat @@ -25,16 +25,16 @@ ;; @002a brif v3, block2, block4 ;; ;; block2: -;; @002d v6 = iconst.i64 -1 -;; @002f jump block3(v6) ; v6 = -1 +;; @002d v4 = iconst.i64 -1 +;; @002f jump block3(v4) ; v4 = -1 ;; ;; block4: -;; @0031 v8 = iconst.i64 -2 -;; @0033 jump block3(v8) ; v8 = -2 +;; @0031 v5 = iconst.i64 -2 +;; @0033 jump block3(v5) ; v5 = -2 ;; -;; block3(v5: i64): -;; @0034 jump block1(v5) +;; block3(v6: i64): +;; @0034 jump block1 ;; -;; block1(v4: i64): -;; @0034 return v4 +;; block1: +;; @0034 return v6 ;; } diff --git a/tests/disas/multi-9.wat b/tests/disas/multi-9.wat index 58caed4daab2..b5f3909bf483 100644 --- a/tests/disas/multi-9.wat +++ b/tests/disas/multi-9.wat @@ -28,16 +28,16 @@ ;; @0027 brif v3, block2, block4 ;; ;; block2: -;; @002b v8 = iconst.i64 -1 -;; @002d jump block3(v8) ; v8 = -1 +;; @002b v4 = iconst.i64 -1 +;; @002d jump block3(v4) ; v4 = -1 ;; ;; block4: -;; @0030 v9 = iconst.i64 -2 -;; @0032 jump block3(v9) ; v9 = -2 +;; @0030 v5 = iconst.i64 -2 +;; @0032 jump block3(v5) ; v5 = -2 ;; -;; block3(v5: i64): -;; @0033 jump block1(v5) +;; block3(v6: i64): +;; @0033 jump block1 ;; -;; block1(v4: i64): -;; @0033 return v4 +;; block1: +;; @0033 return v6 ;; } diff --git a/tests/disas/non-fixed-size-memory.wat b/tests/disas/non-fixed-size-memory.wat index 755af39f0ce3..cf49464d11e1 100644 --- a/tests/disas/non-fixed-size-memory.wat +++ b/tests/disas/non-fixed-size-memory.wat @@ -57,15 +57,15 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i32): -;; @0049 v4 = uextend.i64 v2 -;; @0049 v5 = load.i64 notrap aligned region3 v0+64 -;; @0049 v6 = icmp uge v4, v5 -;; @0049 trapnz v6, heap_oob -;; @0049 v7 = load.i64 notrap aligned can_move region2 v0+56 -;; @0049 v8 = iadd v7, v4 -;; @0049 v9 = uload8.i32 little region4 v8 +;; @0049 v3 = uextend.i64 v2 +;; @0049 v4 = load.i64 notrap aligned region3 v0+64 +;; @0049 v5 = icmp uge v3, v4 +;; @0049 trapnz v5, heap_oob +;; @0049 v6 = load.i64 notrap aligned can_move region2 v0+56 +;; @0049 v7 = iadd v6, v3 +;; @0049 v8 = uload8.i32 little region4 v7 ;; @004c jump block1 ;; ;; block1: -;; @004c return v9 +;; @004c return v8 ;; } diff --git a/tests/disas/nullref.wat b/tests/disas/nullref.wat index dc09e898f378..64315a79b996 100644 --- a/tests/disas/nullref.wat +++ b/tests/disas/nullref.wat @@ -21,11 +21,11 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64): -;; @0019 v3 = iconst.i32 0 +;; @0019 v2 = iconst.i32 0 ;; @001b jump block1 ;; ;; block1: -;; @001b return v3 ; v3 = 0 +;; @001b return v2 ; v2 = 0 ;; } ;; ;; function u0:1(i64 vmctx, i64) -> i32 tail { @@ -37,12 +37,12 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64): -;; @0020 v4 = iconst.i32 0 +;; @0020 v2 = iconst.i32 0 ;; @0022 jump block2 ;; ;; block2: ;; @0023 jump block1 ;; ;; block1: -;; @0023 return v4 ; v4 = 0 +;; @0023 return v2 ; v2 = 0 ;; } diff --git a/tests/disas/pic.wat b/tests/disas/pic.wat index 9ca96f7c754f..db1d34acf31a 100644 --- a/tests/disas/pic.wat +++ b/tests/disas/pic.wat @@ -59,14 +59,14 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64): -;; @005e v7 = load.i64 notrap aligned readonly can_move region2 v0+56 -;; v15 = iconst.i64 0x0010_0000 -;; @005e v8 = iadd v7, v15 ; v15 = 0x0010_0000 -;; @005e v9 = load.i32 little region4 v8 +;; @005e v6 = load.i64 notrap aligned readonly can_move region2 v0+56 +;; v14 = iconst.i64 0x0010_0000 +;; @005e v7 = iadd v6, v14 ; v14 = 0x0010_0000 +;; @005e v8 = load.i32 little region4 v7 ;; @0061 jump block1 ;; ;; block1: -;; @0061 return v9 +;; @0061 return v8 ;; } ;; ;; function u0:1(i64 vmctx, i64, i32) -> i32 tail { @@ -85,30 +85,30 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i32): -;; @0066 v5 = load.i32 notrap aligned region2 v0+128 -;; @0068 v6 = iconst.i32 16 -;; @006a v7 = isub v5, v6 ; v6 = 16 -;; @006d store notrap aligned region2 v7, v0+128 -;; @0073 v9 = load.i64 notrap aligned readonly can_move region3 v0+56 -;; @0073 v8 = uextend.i64 v2 -;; @0073 v10 = iadd v9, v8 -;; @0073 v11 = load.i32 little region5 v10 -;; @0078 v12 = uextend.i64 v7 -;; @0078 v14 = iadd v9, v12 -;; @0078 v15 = iconst.i64 12 -;; @0078 v16 = iadd v14, v15 ; v15 = 12 -;; @0078 store little region5 v11, v16 -;; @0084 v21 = load.i64 notrap aligned readonly can_move region7 v0+80 -;; @0084 v20 = load.i64 notrap aligned readonly can_move region6 v0+96 -;; v29 = iconst.i32 -4 -;; v30 = iadd v5, v29 ; v29 = -4 -;; @0084 call_indirect sig0, v21(v20, v0, v30) -;; v37 = iconst.i64 0x0010_0000 -;; @0090 v26 = iadd v9, v37 ; v37 = 0x0010_0000 -;; @0090 store little region5 v11, v26 -;; @0098 store notrap aligned region2 v5, v0+128 +;; @0066 v4 = load.i32 notrap aligned region2 v0+128 +;; @0068 v5 = iconst.i32 16 +;; @006a v6 = isub v4, v5 ; v5 = 16 +;; @006d store notrap aligned region2 v6, v0+128 +;; @0073 v8 = load.i64 notrap aligned readonly can_move region3 v0+56 +;; @0073 v7 = uextend.i64 v2 +;; @0073 v9 = iadd v8, v7 +;; @0073 v10 = load.i32 little region5 v9 +;; @0078 v11 = uextend.i64 v6 +;; @0078 v13 = iadd v8, v11 +;; @0078 v14 = iconst.i64 12 +;; @0078 v15 = iadd v13, v14 ; v14 = 12 +;; @0078 store little region5 v10, v15 +;; @0084 v20 = load.i64 notrap aligned readonly can_move region7 v0+80 +;; @0084 v19 = load.i64 notrap aligned readonly can_move region6 v0+96 +;; v28 = iconst.i32 -4 +;; v29 = iadd v4, v28 ; v28 = -4 +;; @0084 call_indirect sig0, v20(v19, v0, v29) +;; v36 = iconst.i64 0x0010_0000 +;; @0090 v25 = iadd v8, v36 ; v36 = 0x0010_0000 +;; @0090 store little region5 v10, v25 +;; @0098 store notrap aligned region2 v4, v0+128 ;; @009c jump block1 ;; ;; block1: -;; @009c return v11 +;; @009c return v10 ;; } diff --git a/tests/disas/pr2303.wat b/tests/disas/pr2303.wat index 3c852a98a729..ab5809db445b 100644 --- a/tests/disas/pr2303.wat +++ b/tests/disas/pr2303.wat @@ -42,37 +42,37 @@ ;; @0046 brif v2, block2, block4 ;; ;; block2: -;; @0048 v16 = bitcast.i64x2 little v8 -;; @0048 v17 = bitcast.i64x2 little v13 -;; @0048 v18 = iadd v16, v17 -;; @004b v19 = iconst.i32 32 -;; @004d v20 = uextend.i64 v19 ; v19 = 32 -;; @004d v21 = load.i64 notrap aligned readonly can_move region2 v0+56 -;; @004d v22 = iadd v21, v20 -;; @004d v23 = load.i8x16 little region4 v22 -;; @0051 v26 = bitcast.i8x16 little v18 -;; @0051 jump block3(v26, v23) +;; @0048 v14 = bitcast.i64x2 little v8 +;; @0048 v15 = bitcast.i64x2 little v13 +;; @0048 v16 = iadd v14, v15 +;; @004b v17 = iconst.i32 32 +;; @004d v18 = uextend.i64 v17 ; v17 = 32 +;; @004d v19 = load.i64 notrap aligned readonly can_move region2 v0+56 +;; @004d v20 = iadd v19, v18 +;; @004d v21 = load.i8x16 little region4 v20 +;; @0051 v22 = bitcast.i8x16 little v16 +;; @0051 jump block3(v22, v21) ;; ;; block4: -;; @0052 v27 = bitcast.i32x4 little v8 -;; @0052 v28 = bitcast.i32x4 little v13 -;; @0052 v29 = isub v27, v28 -;; @0055 v30 = iconst.i32 0 -;; @0057 v31 = uextend.i64 v30 ; v30 = 0 -;; @0057 v32 = load.i64 notrap aligned readonly can_move region2 v0+56 -;; @0057 v33 = iadd v32, v31 -;; @0057 v34 = load.i8x16 little region4 v33 -;; @005b v35 = bitcast.i8x16 little v29 -;; @005b jump block3(v35, v34) +;; @0052 v23 = bitcast.i32x4 little v8 +;; @0052 v24 = bitcast.i32x4 little v13 +;; @0052 v25 = isub v23, v24 +;; @0055 v26 = iconst.i32 0 +;; @0057 v27 = uextend.i64 v26 ; v26 = 0 +;; @0057 v28 = load.i64 notrap aligned readonly can_move region2 v0+56 +;; @0057 v29 = iadd v28, v27 +;; @0057 v30 = load.i8x16 little region4 v29 +;; @005b v31 = bitcast.i8x16 little v25 +;; @005b jump block3(v31, v30) ;; -;; block3(v14: i8x16, v15: i8x16): -;; @005c v36 = bitcast.i16x8 little v14 -;; @005c v37 = bitcast.i16x8 little v15 -;; @005c v38 = imul v36, v37 -;; @005f v39 = uextend.i64 v3 ; v3 = 48 -;; @005f v40 = load.i64 notrap aligned readonly can_move region2 v0+56 -;; @005f v41 = iadd v40, v39 -;; @005f store little region4 v38, v41 +;; block3(v32: i8x16, v33: i8x16): +;; @005c v34 = bitcast.i16x8 little v32 +;; @005c v35 = bitcast.i16x8 little v33 +;; @005c v36 = imul v34, v35 +;; @005f v37 = uextend.i64 v3 ; v3 = 48 +;; @005f v38 = load.i64 notrap aligned readonly can_move region2 v0+56 +;; @005f v39 = iadd v38, v37 +;; @005f store little region4 v36, v39 ;; @0063 jump block1 ;; ;; block1: diff --git a/tests/disas/pr2559.wat b/tests/disas/pr2559.wat index 9ce26a5be4d3..5089b82c4cd5 100644 --- a/tests/disas/pr2559.wat +++ b/tests/disas/pr2559.wat @@ -63,35 +63,35 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64): -;; @002e v5, v6, v7 = call fn0(v0, v0) -;; @0030 v8 = iadd v6, v7 -;; @0032 v9, v10, v11 = call fn0(v0, v0) -;; @0034 v12 = icmp uge v10, v11 -;; @0036 v13 = bitcast.i16x8 little v9 -;; @0036 v14 = bitcast.i16x8 little v12 -;; @0036 v15 = icmp ne v13, v14 -;; @0038 v16 = iconst.i32 13 -;; @003a v17 = bitcast.i8x16 little v15 -;; @003a brif v16, block1(v17), block2 ; v16 = 13 +;; @002e v2, v3, v4 = call fn0(v0, v0) +;; @0030 v5 = iadd v3, v4 +;; @0032 v6, v7, v8 = call fn0(v0, v0) +;; @0034 v9 = icmp uge v7, v8 +;; @0036 v10 = bitcast.i16x8 little v6 +;; @0036 v11 = bitcast.i16x8 little v9 +;; @0036 v12 = icmp ne v10, v11 +;; @0038 v13 = iconst.i32 13 +;; @003a v14 = bitcast.i8x16 little v12 +;; @003a brif v13, block1(v14), block2 ; v13 = 13 ;; ;; block2: -;; @003c v18 = iconst.i32 43 -;; @003e v19 = bitcast.i8x16 little v15 -;; @003e brif v18, block1(v19), block3 ; v18 = 43 +;; @003c v15 = iconst.i32 43 +;; @003e v16 = bitcast.i8x16 little v12 +;; @003e brif v15, block1(v16), block3 ; v15 = 43 ;; ;; block3: -;; @0040 v20 = iconst.i32 13 -;; @0042 v21 = bitcast.i8x16 little v15 -;; @0042 brif v20, block1(v21), block4 ; v20 = 13 +;; @0040 v17 = iconst.i32 13 +;; @0042 v18 = bitcast.i8x16 little v12 +;; @0042 brif v17, block1(v18), block4 ; v17 = 13 ;; ;; block4: -;; @0044 v22 = iconst.i32 87 -;; @0047 v23 = bitcast.i8x16 little v15 -;; @0047 v24 = select.i8x16 v22, v8, v23 ; v22 = 87 +;; @0044 v19 = iconst.i32 87 +;; @0047 v20 = bitcast.i8x16 little v12 +;; @0047 v21 = select.i8x16 v19, v5, v20 ; v19 = 87 ;; @0048 trap user12 ;; -;; block1(v4: i8x16): -;; @0055 return v5, v8, v4 +;; block1(v24: i8x16): +;; @0055 return v2, v5, v24 ;; } ;; ;; function u0:1(i64 vmctx, i64) -> i8x16, i8x16, i8x16 tail { @@ -105,33 +105,33 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64): -;; @0058 v5, v6, v7 = call fn0(v0, v0) -;; @005a v8 = iadd v6, v7 -;; @005c v9, v10, v11 = call fn0(v0, v0) -;; @005e v12 = icmp uge v10, v11 -;; @0060 v13 = bitcast.i16x8 little v9 -;; @0060 v14 = bitcast.i16x8 little v12 -;; @0060 v15 = icmp ne v13, v14 -;; @0062 v16 = iconst.i32 13 -;; @0064 v17 = bitcast.i8x16 little v15 -;; @0064 brif v16, block1(v17), block2 ; v16 = 13 +;; @0058 v2, v3, v4 = call fn0(v0, v0) +;; @005a v5 = iadd v3, v4 +;; @005c v6, v7, v8 = call fn0(v0, v0) +;; @005e v9 = icmp uge v7, v8 +;; @0060 v10 = bitcast.i16x8 little v6 +;; @0060 v11 = bitcast.i16x8 little v9 +;; @0060 v12 = icmp ne v10, v11 +;; @0062 v13 = iconst.i32 13 +;; @0064 v14 = bitcast.i8x16 little v12 +;; @0064 brif v13, block1(v14), block2 ; v13 = 13 ;; ;; block2: -;; @0066 v18 = iconst.i32 43 -;; @0068 v19 = bitcast.i8x16 little v15 -;; @0068 brif v18, block1(v19), block3 ; v18 = 43 +;; @0066 v15 = iconst.i32 43 +;; @0068 v16 = bitcast.i8x16 little v12 +;; @0068 brif v15, block1(v16), block3 ; v15 = 43 ;; ;; block3: -;; @006a v20 = iconst.i32 13 -;; @006c v21 = bitcast.i8x16 little v15 -;; @006c brif v20, block1(v21), block4 ; v20 = 13 +;; @006a v17 = iconst.i32 13 +;; @006c v18 = bitcast.i8x16 little v12 +;; @006c brif v17, block1(v18), block4 ; v17 = 13 ;; ;; block4: -;; @006e v22 = iconst.i32 87 -;; @0071 v23 = bitcast.i8x16 little v15 -;; @0071 v24 = select.i8x16 v22, v8, v23 ; v22 = 87 +;; @006e v19 = iconst.i32 87 +;; @0071 v20 = bitcast.i8x16 little v12 +;; @0071 v21 = select.i8x16 v19, v5, v20 ; v19 = 87 ;; @0074 trap user12 ;; -;; block1(v4: i8x16): -;; @0081 return v5, v8, v4 +;; block1(v24: i8x16): +;; @0081 return v2, v5, v24 ;; } diff --git a/tests/disas/pulley/fib.wat b/tests/disas/pulley/fib.wat index 98e0960766ab..8e794913b2e6 100644 --- a/tests/disas/pulley/fib.wat +++ b/tests/disas/pulley/fib.wat @@ -49,23 +49,23 @@ ) ) ;; wasm[0]::function[0]::fib: -;; push_frame_save 16, x16, x22 +;; push_frame_save 16, x16, x21 ;; br_if_xeq32_i8 x2, 0, 0x47 // target = 0x4c ;; br_if_xeq32_i8 x2, 1, 0x39 // target = 0x45 -;; 13: xsub32_u8 x14, x2, 1 +;; 13: xsub32_u8 x13, x2, 1 ;; xmov x16, x2 -;; xmov x22, x0 -;; call3 x22, x22, x14, -0x1d // target = 0x0 +;; xmov x21, x0 +;; call3 x21, x21, x13, -0x1d // target = 0x0 ;; xmov x2, x16 ;; xmov x16, x0 -;; xmov x0, x22 -;; xsub32_u8 x14, x2, 2 -;; call3 x0, x0, x14, -0x32 // target = 0x0 +;; xmov x0, x21 +;; xsub32_u8 x13, x2, 2 +;; call3 x0, x0, x13, -0x32 // target = 0x0 ;; xmov x1, x16 ;; xadd32 x0, x1, x0 ;; jump 0xe // target = 0x4e ;; 45: xone x0 ;; jump 0x7 // target = 0x4e ;; 4c: xone x0 -;; pop_frame_restore 16, x16, x22 +;; pop_frame_restore 16, x16, x21 ;; ret diff --git a/tests/disas/readonly-heap-base-pointer1.wat b/tests/disas/readonly-heap-base-pointer1.wat index 47c76389fe9d..78850876a03b 100644 --- a/tests/disas/readonly-heap-base-pointer1.wat +++ b/tests/disas/readonly-heap-base-pointer1.wat @@ -19,16 +19,16 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i32): -;; @0020 v4 = uextend.i64 v2 -;; @0020 v5 = iconst.i64 0x0001_fffc -;; @0020 v6 = icmp ugt v4, v5 ; v5 = 0x0001_fffc -;; @0020 v9 = iconst.i64 0 -;; @0020 v7 = load.i64 notrap aligned readonly can_move region2 v0+56 -;; @0020 v8 = iadd v7, v4 -;; @0020 v10 = select_spectre_guard v6, v9, v8 ; v9 = 0 -;; @0020 v11 = load.i32 little region4 v10 +;; @0020 v3 = uextend.i64 v2 +;; @0020 v4 = iconst.i64 0x0001_fffc +;; @0020 v5 = icmp ugt v3, v4 ; v4 = 0x0001_fffc +;; @0020 v8 = iconst.i64 0 +;; @0020 v6 = load.i64 notrap aligned readonly can_move region2 v0+56 +;; @0020 v7 = iadd v6, v3 +;; @0020 v9 = select_spectre_guard v5, v8, v7 ; v8 = 0 +;; @0020 v10 = load.i32 little region4 v9 ;; @0023 jump block1 ;; ;; block1: -;; @0023 return v11 +;; @0023 return v10 ;; } diff --git a/tests/disas/readonly-heap-base-pointer2.wat b/tests/disas/readonly-heap-base-pointer2.wat index b5b122a48169..0c63e2bb80cd 100644 --- a/tests/disas/readonly-heap-base-pointer2.wat +++ b/tests/disas/readonly-heap-base-pointer2.wat @@ -20,17 +20,17 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i32): -;; @0022 v4 = uextend.i64 v2 -;; @0022 v5 = iconst.i64 0x0001_fffc -;; @0022 v6 = icmp ugt v4, v5 ; v5 = 0x0001_fffc -;; @0022 v10 = iconst.i64 0 -;; @0022 v7 = load.i64 notrap aligned readonly can_move region2 v0+48 -;; @0022 v8 = load.i64 notrap aligned readonly can_move region3 v7 -;; @0022 v9 = iadd v8, v4 -;; @0022 v11 = select_spectre_guard v6, v10, v9 ; v10 = 0 -;; @0022 v12 = load.i32 little region5 v11 +;; @0022 v3 = uextend.i64 v2 +;; @0022 v4 = iconst.i64 0x0001_fffc +;; @0022 v5 = icmp ugt v3, v4 ; v4 = 0x0001_fffc +;; @0022 v9 = iconst.i64 0 +;; @0022 v6 = load.i64 notrap aligned readonly can_move region2 v0+48 +;; @0022 v7 = load.i64 notrap aligned readonly can_move region3 v6 +;; @0022 v8 = iadd v7, v3 +;; @0022 v10 = select_spectre_guard v5, v9, v8 ; v9 = 0 +;; @0022 v11 = load.i32 little region5 v10 ;; @0025 jump block1 ;; ;; block1: -;; @0025 return v12 +;; @0025 return v11 ;; } diff --git a/tests/disas/readonly-heap-base-pointer3.wat b/tests/disas/readonly-heap-base-pointer3.wat index 91217255c95f..09b29bc02474 100644 --- a/tests/disas/readonly-heap-base-pointer3.wat +++ b/tests/disas/readonly-heap-base-pointer3.wat @@ -19,15 +19,15 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i64): -;; @0020 v4 = iconst.i64 0xffff_fffc -;; @0020 v5 = icmp ugt v2, v4 ; v4 = 0xffff_fffc -;; @0020 v8 = iconst.i64 0 -;; @0020 v6 = load.i64 notrap aligned readonly can_move region2 v0+56 -;; @0020 v7 = iadd v6, v2 -;; @0020 v9 = select_spectre_guard v5, v8, v7 ; v8 = 0 -;; @0020 v10 = load.i32 little region4 v9 +;; @0020 v3 = iconst.i64 0xffff_fffc +;; @0020 v4 = icmp ugt v2, v3 ; v3 = 0xffff_fffc +;; @0020 v7 = iconst.i64 0 +;; @0020 v5 = load.i64 notrap aligned readonly can_move region2 v0+56 +;; @0020 v6 = iadd v5, v2 +;; @0020 v8 = select_spectre_guard v4, v7, v6 ; v7 = 0 +;; @0020 v9 = load.i32 little region4 v8 ;; @0023 jump block1 ;; ;; block1: -;; @0023 return v10 +;; @0023 return v9 ;; } diff --git a/tests/disas/ref-func-0.wat b/tests/disas/ref-func-0.wat index f3c94ebe3fa3..5c99075f62d8 100644 --- a/tests/disas/ref-func-0.wat +++ b/tests/disas/ref-func-0.wat @@ -23,16 +23,16 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64): -;; @008f v6 = iconst.i64 80 -;; @008f v7 = iadd v0, v6 ; v6 = 80 -;; @008f v8 = load.i32 notrap aligned region2 v7 -;; @0091 v9 = iconst.i64 96 -;; @0091 v10 = iadd v0, v9 ; v9 = 96 -;; @0091 v11 = load.i32 notrap aligned region2 v10 -;; @0093 v12 = load.i64 notrap aligned region2 v0+112 -;; @0095 v13 = load.i64 notrap aligned region2 v0+128 +;; @008f v2 = iconst.i64 80 +;; @008f v3 = iadd v0, v2 ; v2 = 80 +;; @008f v4 = load.i32 notrap aligned region2 v3 +;; @0091 v5 = iconst.i64 96 +;; @0091 v6 = iadd v0, v5 ; v5 = 96 +;; @0091 v7 = load.i32 notrap aligned region2 v6 +;; @0093 v8 = load.i64 notrap aligned region2 v0+112 +;; @0095 v9 = load.i64 notrap aligned region2 v0+128 ;; @0097 jump block1 ;; ;; block1: -;; @0097 return v8, v11, v12, v13 +;; @0097 return v4, v7, v8, v9 ;; } diff --git a/tests/disas/select.wat b/tests/disas/select.wat index 62b036335147..e1450eb34d7c 100644 --- a/tests/disas/select.wat +++ b/tests/disas/select.wat @@ -29,14 +29,14 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64): -;; @0023 v3 = iconst.i32 42 -;; @0025 v4 = iconst.i32 24 -;; @0027 v5 = iconst.i32 1 -;; @0029 v6 = select v5, v3, v4 ; v5 = 1, v3 = 42, v4 = 24 +;; @0023 v2 = iconst.i32 42 +;; @0025 v3 = iconst.i32 24 +;; @0027 v4 = iconst.i32 1 +;; @0029 v5 = select v4, v2, v3 ; v4 = 1, v2 = 42, v3 = 24 ;; @002a jump block1 ;; ;; block1: -;; @002a return v6 +;; @002a return v5 ;; } ;; ;; function u0:1(i64 vmctx, i64) -> i32 tail { @@ -48,14 +48,14 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64): -;; @002d v3 = iconst.i32 0 -;; @002f v4 = iconst.i32 0 -;; @0031 v5 = iconst.i32 1 -;; @0033 v6 = select v5, v3, v4 ; v5 = 1, v3 = 0, v4 = 0 +;; @002d v2 = iconst.i32 0 +;; @002f v3 = iconst.i32 0 +;; @0031 v4 = iconst.i32 1 +;; @0033 v5 = select v4, v2, v3 ; v4 = 1, v2 = 0, v3 = 0 ;; @0036 jump block1 ;; ;; block1: -;; @0036 return v6 +;; @0036 return v5 ;; } ;; ;; function u0:2(i64 vmctx, i64, i32) -> i32 tail { @@ -67,11 +67,11 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i32): -;; @0039 v4 = iconst.i32 0 -;; @003d v5 = iconst.i32 1 -;; @003f v6 = select v5, v4, v2 ; v5 = 1, v4 = 0 +;; @0039 v3 = iconst.i32 0 +;; @003d v4 = iconst.i32 1 +;; @003f v5 = select v4, v3, v2 ; v4 = 1, v3 = 0 ;; @0042 jump block1 ;; ;; block1: -;; @0042 return v6 +;; @0042 return v5 ;; } diff --git a/tests/disas/simd.wat b/tests/disas/simd.wat index 80af5bbaca6c..fbbf1262e11a 100644 --- a/tests/disas/simd.wat +++ b/tests/disas/simd.wat @@ -39,13 +39,13 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64): -;; @004e v3 = iconst.i32 42 -;; @0050 v4 = splat.i32x4 v3 ; v3 = 42 -;; @0052 v5 = extractlane v4, 0 +;; @004e v2 = iconst.i32 42 +;; @0050 v3 = splat.i32x4 v2 ; v2 = 42 +;; @0052 v4 = extractlane v3, 0 ;; @0055 jump block1 ;; ;; block1: -;; @0055 return v5 +;; @0055 return v4 ;; } ;; ;; function u0:1(i64 vmctx, i64) -> i32 tail { @@ -58,15 +58,15 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64): -;; @0058 v3 = vconst.i8x16 const0 -;; @006a v4 = iconst.i32 99 -;; @006d v5 = bitcast.i32x4 little v3 ; v3 = const0 -;; @006d v6 = insertlane v5, v4, 1 ; v4 = 99 -;; @0070 v7 = extractlane v6, 1 +;; @0058 v2 = vconst.i8x16 const0 +;; @006a v3 = iconst.i32 99 +;; @006d v4 = bitcast.i32x4 little v2 ; v2 = const0 +;; @006d v5 = insertlane v4, v3, 1 ; v3 = 99 +;; @0070 v6 = extractlane v5, 1 ;; @0073 jump block1 ;; ;; block1: -;; @0073 return v7 +;; @0073 return v6 ;; } ;; ;; function u0:2(i64 vmctx, i64) -> i32 tail { @@ -79,13 +79,13 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64): -;; @0076 v3 = vconst.i8x16 const0 -;; @0088 v4 = bitcast.i32x4 little v3 ; v3 = const0 -;; @0088 v5 = extractlane v4, 3 +;; @0076 v2 = vconst.i8x16 const0 +;; @0088 v3 = bitcast.i32x4 little v2 ; v2 = const0 +;; @0088 v4 = extractlane v3, 3 ;; @008b jump block1 ;; ;; block1: -;; @008b return v5 +;; @008b return v4 ;; } ;; ;; function u0:3(i64 vmctx, i64) tail { diff --git a/tests/disas/simple.wat b/tests/disas/simple.wat index 304b3557b6a3..c7a5a8952731 100644 --- a/tests/disas/simple.wat +++ b/tests/disas/simple.wat @@ -27,12 +27,12 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i32): -;; @0021 v4 = iconst.i32 1 -;; @0023 v5 = iadd v2, v4 ; v4 = 1 +;; @0021 v3 = iconst.i32 1 +;; @0023 v4 = iadd v2, v3 ; v3 = 1 ;; @0024 jump block1 ;; ;; block1: -;; @0024 return v5 +;; @0024 return v4 ;; } ;; ;; function u0:1(i64 vmctx, i64, i32) -> i32 tail { @@ -44,9 +44,9 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i32): -;; @0029 v4 = iconst.i32 1 -;; @002b v5 = iadd v2, v4 ; v4 = 1 -;; @002c return v5 +;; @0029 v3 = iconst.i32 1 +;; @002b v4 = iadd v2, v3 ; v3 = 1 +;; @002c return v4 ;; } ;; ;; function u0:2(i64 vmctx, i64) -> i32 tail { @@ -58,11 +58,11 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64): -;; @0030 v3 = iconst.i32 0 -;; @0032 jump block2(v3) ; v3 = 0 +;; @0030 v2 = iconst.i32 0 +;; @0032 jump block2(v2) ; v2 = 0 ;; -;; block2(v5: i32): -;; @0036 v6 = iconst.i32 1 -;; @0038 v7 = iadd v5, v6 ; v6 = 1 -;; @003b jump block2(v7) +;; block2(v3: i32): +;; @0036 v4 = iconst.i32 1 +;; @0038 v5 = iadd v3, v4 ; v4 = 1 +;; @003b jump block2(v5) ;; } diff --git a/tests/disas/stack-switching/resume-suspend-data-passing.wat b/tests/disas/stack-switching/resume-suspend-data-passing.wat index e20d8c86f356..2b6bab901080 100644 --- a/tests/disas/stack-switching/resume-suspend-data-passing.wat +++ b/tests/disas/stack-switching/resume-suspend-data-passing.wat @@ -169,145 +169,145 @@ ;; @0058 v7 = load.i64 notrap aligned v6+72 ;; @0058 v9 = uextend.i128 v7 ;; @0058 v10 = iconst.i64 64 -;; v117 = ishl v9, v10 ; v10 = 64 +;; v115 = ishl v9, v10 ; v10 = 64 ;; @0058 v8 = uextend.i128 v6 -;; @0058 v13 = bor v117, v8 -;; @0062 v24 = iconst.i64 1 -;; @0062 v27 = load.i64 notrap aligned readonly can_move region0 v0+8 -;; @0062 v30 = iconst.i64 0 -;; @0062 v31 = iconst.i64 2 -;; @0062 v35 = iconst.i32 1 -;; @0062 v36 = iconst.i64 16 -;; @0062 v38 = iconst.i32 2 -;; @0062 v50 = iconst.i64 24 -;; @0062 v53 = stack_addr.i64 ss0 -;; @0062 v54 = iconst.i64 48 -;; @0062 v55 = iadd v0, v54 ; v54 = 48 -;; @0062 v62 = iconst.i64 80 -;; @0062 v65 = iconst.i64 -24 -;; v121 = iconst.i64 0x0001_0000_0000 -;; @0062 v60 = iconst.i64 32 +;; @0058 v13 = bor v115, v8 +;; @0062 v22 = iconst.i64 1 +;; @0062 v25 = load.i64 notrap aligned readonly can_move region0 v0+8 +;; @0062 v28 = iconst.i64 0 +;; @0062 v29 = iconst.i64 2 +;; @0062 v33 = iconst.i32 1 +;; @0062 v34 = iconst.i64 16 +;; @0062 v36 = iconst.i32 2 +;; @0062 v48 = iconst.i64 24 +;; @0062 v51 = stack_addr.i64 ss0 +;; @0062 v52 = iconst.i64 48 +;; @0062 v53 = iadd v0, v52 ; v52 = 48 +;; @0062 v60 = iconst.i64 80 +;; @0062 v63 = iconst.i64 -24 +;; v119 = iconst.i64 0x0001_0000_0000 +;; @0062 v58 = iconst.i64 32 ;; @005c jump block2(v13) ;; -;; block2(v16: i128): +;; block2(v14: i128): ;; @0062 jump block5 ;; ;; block5: -;; @0062 v17 = ireduce.i64 v16 -;; @0062 trapz v17, user16 -;; @0062 v22 = load.i64 notrap aligned v17+72 -;; v124 = iconst.i64 64 -;; v125 = ushr.i128 v16, v124 ; v124 = 64 -;; @0062 v21 = ireduce.i64 v125 -;; @0062 v23 = icmp eq v22, v21 -;; @0062 trapz v23, user23 -;; v126 = iconst.i64 1 -;; v127 = iadd v22, v126 ; v126 = 1 -;; @0062 store notrap aligned v127, v17+72 -;; @0062 v26 = load.i64 notrap aligned v17+64 -;; @0062 v28 = load.i64 notrap aligned region2 v27+88 -;; @0062 v29 = load.i64 notrap aligned region2 v27+96 -;; @0062 store notrap aligned v28, v26+48 -;; @0062 store notrap aligned v29, v26+56 -;; v128 = iconst.i64 0 -;; @0062 store notrap aligned v128, v17+64 ; v128 = 0 -;; v129 = iconst.i64 2 -;; @0062 store notrap aligned region2 v129, v27+88 ; v129 = 2 -;; @0062 store notrap aligned region2 v17, v27+96 -;; v130 = iconst.i32 1 -;; v131 = iconst.i64 16 -;; v132 = iadd v17, v131 ; v131 = 16 -;; @0062 store notrap aligned v130, v132 ; v130 = 1 -;; v133 = iconst.i32 2 -;; v134 = iadd v29, v131 ; v131 = 16 -;; @0062 store notrap aligned v133, v134 ; v133 = 2 -;; @0062 v44 = load.i64 notrap aligned region3 v27+72 -;; @0062 store notrap aligned v44, v29+8 -;; @0062 v45 = load.i64 notrap aligned region1 v27+24 -;; @0062 store notrap aligned v45, v29 -;; @0062 v48 = load.i64 notrap aligned v17 -;; @0062 store notrap aligned region1 v48, v27+24 -;; @0062 v49 = load.i64 notrap aligned v17+8 -;; @0062 store notrap aligned region3 v49, v27+72 -;; v135 = iconst.i64 24 -;; v136 = iadd v29, v135 ; v135 = 24 -;; @0062 store notrap aligned v130, v136+4 ; v130 = 1 -;; @0062 store.i64 notrap aligned v53, v136+8 -;; v137 = iadd.i64 v0, v54 ; v54 = 48 -;; @0062 store notrap aligned v137, v53 -;; @0062 store notrap aligned v130, v136 ; v130 = 1 -;; @0062 store notrap aligned v130, v29+40 ; v130 = 1 -;; v138 = iconst.i64 80 -;; v139 = iadd v26, v138 ; v138 = 80 -;; @0062 v64 = load.i64 notrap aligned v139 -;; v140 = iconst.i64 -24 -;; v141 = iadd v64, v140 ; v140 = -24 -;; v142 = iconst.i64 0x0001_0000_0000 -;; @0062 v67 = stack_switch v141, v141, v142 ; v142 = 0x0001_0000_0000 -;; @0062 v69 = load.i64 notrap aligned region2 v27+88 -;; @0062 v70 = load.i64 notrap aligned region2 v27+96 -;; @0062 store notrap aligned region2 v28, v27+88 -;; @0062 store notrap aligned region2 v29, v27+96 -;; @0062 store notrap aligned v130, v134 ; v130 = 1 -;; v143 = iconst.i32 0 -;; @0062 store notrap aligned v143, v136 ; v143 = 0 -;; @0062 store notrap aligned v143, v136+4 ; v143 = 0 -;; @0062 store notrap aligned v128, v136+8 ; v128 = 0 -;; @0062 store notrap aligned v128, v29+40 ; v128 = 0 -;; v144 = iconst.i64 32 -;; v145 = ushr v67, v144 ; v144 = 32 -;; @0062 brif v145, block7, block6 +;; @0062 v15 = ireduce.i64 v14 +;; @0062 trapz v15, user16 +;; @0062 v20 = load.i64 notrap aligned v15+72 +;; v122 = iconst.i64 64 +;; v123 = ushr.i128 v14, v122 ; v122 = 64 +;; @0062 v19 = ireduce.i64 v123 +;; @0062 v21 = icmp eq v20, v19 +;; @0062 trapz v21, user23 +;; v124 = iconst.i64 1 +;; v125 = iadd v20, v124 ; v124 = 1 +;; @0062 store notrap aligned v125, v15+72 +;; @0062 v24 = load.i64 notrap aligned v15+64 +;; @0062 v26 = load.i64 notrap aligned region2 v25+88 +;; @0062 v27 = load.i64 notrap aligned region2 v25+96 +;; @0062 store notrap aligned v26, v24+48 +;; @0062 store notrap aligned v27, v24+56 +;; v126 = iconst.i64 0 +;; @0062 store notrap aligned v126, v15+64 ; v126 = 0 +;; v127 = iconst.i64 2 +;; @0062 store notrap aligned region2 v127, v25+88 ; v127 = 2 +;; @0062 store notrap aligned region2 v15, v25+96 +;; v128 = iconst.i32 1 +;; v129 = iconst.i64 16 +;; v130 = iadd v15, v129 ; v129 = 16 +;; @0062 store notrap aligned v128, v130 ; v128 = 1 +;; v131 = iconst.i32 2 +;; v132 = iadd v27, v129 ; v129 = 16 +;; @0062 store notrap aligned v131, v132 ; v131 = 2 +;; @0062 v42 = load.i64 notrap aligned region3 v25+72 +;; @0062 store notrap aligned v42, v27+8 +;; @0062 v43 = load.i64 notrap aligned region1 v25+24 +;; @0062 store notrap aligned v43, v27 +;; @0062 v46 = load.i64 notrap aligned v15 +;; @0062 store notrap aligned region1 v46, v25+24 +;; @0062 v47 = load.i64 notrap aligned v15+8 +;; @0062 store notrap aligned region3 v47, v25+72 +;; v133 = iconst.i64 24 +;; v134 = iadd v27, v133 ; v133 = 24 +;; @0062 store notrap aligned v128, v134+4 ; v128 = 1 +;; @0062 store.i64 notrap aligned v51, v134+8 +;; v135 = iadd.i64 v0, v52 ; v52 = 48 +;; @0062 store notrap aligned v135, v51 +;; @0062 store notrap aligned v128, v134 ; v128 = 1 +;; @0062 store notrap aligned v128, v27+40 ; v128 = 1 +;; v136 = iconst.i64 80 +;; v137 = iadd v24, v136 ; v136 = 80 +;; @0062 v62 = load.i64 notrap aligned v137 +;; v138 = iconst.i64 -24 +;; v139 = iadd v62, v138 ; v138 = -24 +;; v140 = iconst.i64 0x0001_0000_0000 +;; @0062 v65 = stack_switch v139, v139, v140 ; v140 = 0x0001_0000_0000 +;; @0062 v67 = load.i64 notrap aligned region2 v25+88 +;; @0062 v68 = load.i64 notrap aligned region2 v25+96 +;; @0062 store notrap aligned region2 v26, v25+88 +;; @0062 store notrap aligned region2 v27, v25+96 +;; @0062 store notrap aligned v128, v132 ; v128 = 1 +;; v141 = iconst.i32 0 +;; @0062 store notrap aligned v141, v134 ; v141 = 0 +;; @0062 store notrap aligned v141, v134+4 ; v141 = 0 +;; @0062 store notrap aligned v126, v134+8 ; v126 = 0 +;; @0062 store notrap aligned v126, v27+40 ; v126 = 0 +;; v142 = iconst.i64 32 +;; v143 = ushr v65, v142 ; v142 = 32 +;; @0062 brif v143, block7, block6 ;; ;; block7: -;; @0062 v84 = load.i64 notrap aligned region3 v27+72 -;; @0062 store notrap aligned v84, v70+8 -;; @0062 v87 = load.i64 notrap aligned v29 -;; @0062 store notrap aligned region1 v87, v27+24 -;; @0062 v88 = load.i64 notrap aligned v29+8 -;; @0062 store notrap aligned region3 v88, v27+72 -;; @0062 v90 = load.i64 notrap aligned v70+72 +;; @0062 v82 = load.i64 notrap aligned region3 v25+72 +;; @0062 store notrap aligned v82, v68+8 +;; @0062 v85 = load.i64 notrap aligned v27 +;; @0062 store notrap aligned region1 v85, v25+24 +;; @0062 v86 = load.i64 notrap aligned v27+8 +;; @0062 store notrap aligned region3 v86, v25+72 +;; @0062 v88 = load.i64 notrap aligned v68+72 ;; @0062 jump block8 ;; ;; block9 cold: ;; @0062 trap user12 ;; ;; block10: -;; @0062 v97 = iconst.i64 120 -;; @0062 v98 = iadd.i64 v70, v97 ; v97 = 120 -;; @0062 v99 = load.i64 notrap aligned v98+8 -;; @0062 v100 = load.i32 notrap aligned v99 -;; v150 = iconst.i32 0 -;; @0062 store notrap aligned v150, v98 ; v150 = 0 +;; @0062 v95 = iconst.i64 120 +;; @0062 v96 = iadd.i64 v68, v95 ; v95 = 120 +;; @0062 v97 = load.i64 notrap aligned v96+8 +;; @0062 v98 = load.i32 notrap aligned v97 +;; v148 = iconst.i32 0 +;; @0062 store notrap aligned v148, v96 ; v148 = 0 ;; @0062 jump block4 ;; ;; block8: -;; @0062 v89 = ireduce.i32 v67 -;; @0062 br_table v89, block9, [block10] +;; @0062 v87 = ireduce.i32 v65 +;; @0062 br_table v87, block9, [block10] ;; ;; block6: -;; @0062 v104 = load.i64 notrap aligned v29 -;; @0062 store notrap aligned region1 v104, v27+24 -;; @0062 v105 = load.i64 notrap aligned v29+8 -;; @0062 store notrap aligned region3 v105, v27+72 -;; @0062 v108 = iconst.i32 4 -;; v146 = iconst.i64 16 -;; v147 = iadd.i64 v70, v146 ; v146 = 16 -;; @0062 store notrap aligned v108, v147 ; v108 = 4 -;; @0062 v111 = iconst.i64 104 -;; @0062 v112 = iadd.i64 v70, v111 ; v111 = 104 -;; @0062 v113 = load.i64 notrap aligned v112+8 -;; v148 = iconst.i32 0 -;; @0062 store notrap aligned v148, v112 ; v148 = 0 -;; @0062 store notrap aligned v148, v112+4 ; v148 = 0 -;; v149 = iconst.i64 0 -;; @0062 store notrap aligned v149, v112+8 ; v149 = 0 +;; @0062 v102 = load.i64 notrap aligned v27 +;; @0062 store notrap aligned region1 v102, v25+24 +;; @0062 v103 = load.i64 notrap aligned v27+8 +;; @0062 store notrap aligned region3 v103, v25+72 +;; @0062 v106 = iconst.i32 4 +;; v144 = iconst.i64 16 +;; v145 = iadd.i64 v68, v144 ; v144 = 16 +;; @0062 store notrap aligned v106, v145 ; v106 = 4 +;; @0062 v109 = iconst.i64 104 +;; @0062 v110 = iadd.i64 v68, v109 ; v109 = 104 +;; @0062 v111 = load.i64 notrap aligned v110+8 +;; v146 = iconst.i32 0 +;; @0062 store notrap aligned v146, v110 ; v146 = 0 +;; @0062 store notrap aligned v146, v110+4 ; v146 = 0 +;; v147 = iconst.i64 0 +;; @0062 store notrap aligned v147, v110+8 ; v147 = 0 ;; @0068 return ;; ;; block4: -;; @0062 v92 = uextend.i128 v90 -;; v151 = iconst.i64 64 -;; v152 = ishl v92, v151 ; v151 = 64 -;; @0062 v91 = uextend.i128 v70 -;; @0062 v96 = bor v152, v91 -;; @006d jump block2(v96) +;; @0062 v90 = uextend.i128 v88 +;; v149 = iconst.i64 64 +;; v150 = ishl v90, v149 ; v149 = 64 +;; @0062 v89 = uextend.i128 v68 +;; @0062 v94 = bor v150, v89 +;; @006d jump block2(v94) ;; } diff --git a/tests/disas/stack-switching/resume-suspend.wat b/tests/disas/stack-switching/resume-suspend.wat index 648f513e39e5..c5eee27179b7 100644 --- a/tests/disas/stack-switching/resume-suspend.wat +++ b/tests/disas/stack-switching/resume-suspend.wat @@ -137,127 +137,127 @@ ;; v132 = ireduce.i64 v130 ;; v134 = bor v132, v13 ;; @004e trapz v134, user16 -;; @004e v27 = load.i64 notrap aligned v134+72 +;; @004e v26 = load.i64 notrap aligned v134+72 ;; @0045 v15 = uextend.i128 v13 ;; @0045 v20 = bor v130, v15 ;; v136 = ushr v20, v5 ; v5 = 64 -;; @004e v26 = ireduce.i64 v136 -;; @004e v28 = icmp eq v27, v26 -;; @004e trapz v28, user23 -;; @004e v29 = iconst.i64 1 -;; @004e v30 = iadd v27, v29 ; v29 = 1 -;; @004e store notrap aligned v30, v134+72 -;; @004e v31 = load.i64 notrap aligned v134+64 -;; @004e v32 = load.i64 notrap aligned readonly can_move region0 v0+8 -;; @004e v33 = load.i64 notrap aligned region2 v32+88 -;; @004e v34 = load.i64 notrap aligned region2 v32+96 -;; @004e store notrap aligned v33, v31+48 -;; @004e store notrap aligned v34, v31+56 +;; @004e v25 = ireduce.i64 v136 +;; @004e v27 = icmp eq v26, v25 +;; @004e trapz v27, user23 +;; @004e v28 = iconst.i64 1 +;; @004e v29 = iadd v26, v28 ; v28 = 1 +;; @004e store notrap aligned v29, v134+72 +;; @004e v30 = load.i64 notrap aligned v134+64 +;; @004e v31 = load.i64 notrap aligned readonly can_move region0 v0+8 +;; @004e v32 = load.i64 notrap aligned region2 v31+88 +;; @004e v33 = load.i64 notrap aligned region2 v31+96 +;; @004e store notrap aligned v32, v30+48 +;; @004e store notrap aligned v33, v30+56 ;; @0040 v2 = iconst.i64 0 ;; @004e store notrap aligned v2, v134+64 ; v2 = 0 -;; @004e v36 = iconst.i64 2 -;; @004e store notrap aligned region2 v36, v32+88 ; v36 = 2 -;; @004e store notrap aligned region2 v134, v32+96 -;; @004e v40 = iconst.i32 1 -;; @004e v41 = iconst.i64 16 -;; @004e v42 = iadd v134, v41 ; v41 = 16 -;; @004e store notrap aligned v40, v42 ; v40 = 1 -;; @004e v43 = iconst.i32 2 -;; @004e v45 = iadd v34, v41 ; v41 = 16 -;; @004e store notrap aligned v43, v45 ; v43 = 2 -;; @004e v49 = load.i64 notrap aligned region3 v32+72 -;; @004e store notrap aligned v49, v34+8 -;; @004e v50 = load.i64 notrap aligned region1 v32+24 -;; @004e store notrap aligned v50, v34 -;; @004e v53 = load.i64 notrap aligned v134 -;; @004e store notrap aligned region1 v53, v32+24 -;; @004e v54 = load.i64 notrap aligned v134+8 -;; @004e store notrap aligned region3 v54, v32+72 -;; @004e v55 = iconst.i64 24 -;; @004e v56 = iadd v34, v55 ; v55 = 24 -;; @004e store notrap aligned v40, v56+4 ; v40 = 1 -;; @004e v58 = stack_addr.i64 ss0 -;; @004e store notrap aligned v58, v56+8 -;; @004e v59 = iconst.i64 48 -;; @004e v60 = iadd.i64 v0, v59 ; v59 = 48 -;; @004e store notrap aligned v60, v58 -;; @004e store notrap aligned v40, v56 ; v40 = 1 -;; @004e store notrap aligned v40, v34+40 ; v40 = 1 -;; @004e v67 = iconst.i64 80 -;; @004e v68 = iadd v31, v67 ; v67 = 80 -;; @004e v69 = load.i64 notrap aligned v68 -;; @004e v70 = iconst.i64 -24 -;; @004e v71 = iadd v69, v70 ; v70 = -24 +;; @004e v35 = iconst.i64 2 +;; @004e store notrap aligned region2 v35, v31+88 ; v35 = 2 +;; @004e store notrap aligned region2 v134, v31+96 +;; @004e v39 = iconst.i32 1 +;; @004e v40 = iconst.i64 16 +;; @004e v41 = iadd v134, v40 ; v40 = 16 +;; @004e store notrap aligned v39, v41 ; v39 = 1 +;; @004e v42 = iconst.i32 2 +;; @004e v44 = iadd v33, v40 ; v40 = 16 +;; @004e store notrap aligned v42, v44 ; v42 = 2 +;; @004e v48 = load.i64 notrap aligned region3 v31+72 +;; @004e store notrap aligned v48, v33+8 +;; @004e v49 = load.i64 notrap aligned region1 v31+24 +;; @004e store notrap aligned v49, v33 +;; @004e v52 = load.i64 notrap aligned v134 +;; @004e store notrap aligned region1 v52, v31+24 +;; @004e v53 = load.i64 notrap aligned v134+8 +;; @004e store notrap aligned region3 v53, v31+72 +;; @004e v54 = iconst.i64 24 +;; @004e v55 = iadd v33, v54 ; v54 = 24 +;; @004e store notrap aligned v39, v55+4 ; v39 = 1 +;; @004e v57 = stack_addr.i64 ss0 +;; @004e store notrap aligned v57, v55+8 +;; @004e v58 = iconst.i64 48 +;; @004e v59 = iadd.i64 v0, v58 ; v58 = 48 +;; @004e store notrap aligned v59, v57 +;; @004e store notrap aligned v39, v55 ; v39 = 1 +;; @004e store notrap aligned v39, v33+40 ; v39 = 1 +;; @004e v66 = iconst.i64 80 +;; @004e v67 = iadd v30, v66 ; v66 = 80 +;; @004e v68 = load.i64 notrap aligned v67 +;; @004e v69 = iconst.i64 -24 +;; @004e v70 = iadd v68, v69 ; v69 = -24 ;; v138 = iconst.i64 0x0001_0000_0000 -;; @004e v72 = stack_switch v71, v71, v138 ; v138 = 0x0001_0000_0000 -;; @004e v74 = load.i64 notrap aligned region2 v32+88 -;; @004e v75 = load.i64 notrap aligned region2 v32+96 -;; @004e store notrap aligned region2 v33, v32+88 -;; @004e store notrap aligned region2 v34, v32+96 -;; @004e store notrap aligned v40, v45 ; v40 = 1 +;; @004e v71 = stack_switch v70, v70, v138 ; v138 = 0x0001_0000_0000 +;; @004e v73 = load.i64 notrap aligned region2 v31+88 +;; @004e v74 = load.i64 notrap aligned region2 v31+96 +;; @004e store notrap aligned region2 v32, v31+88 +;; @004e store notrap aligned region2 v33, v31+96 +;; @004e store notrap aligned v39, v44 ; v39 = 1 ;; v141 = iconst.i32 0 -;; @004e store notrap aligned v141, v56 ; v141 = 0 -;; @004e store notrap aligned v141, v56+4 ; v141 = 0 -;; @004e store notrap aligned v2, v56+8 ; v2 = 0 -;; @004e store notrap aligned v2, v34+40 ; v2 = 0 -;; @004e v65 = iconst.i64 32 -;; @004e v84 = ushr v72, v65 ; v65 = 32 -;; @004e brif v84, block5, block4 +;; @004e store notrap aligned v141, v55 ; v141 = 0 +;; @004e store notrap aligned v141, v55+4 ; v141 = 0 +;; @004e store notrap aligned v2, v55+8 ; v2 = 0 +;; @004e store notrap aligned v2, v33+40 ; v2 = 0 +;; @004e v64 = iconst.i64 32 +;; @004e v83 = ushr v71, v64 ; v64 = 32 +;; @004e brif v83, block5, block4 ;; ;; block5: -;; @004e v89 = load.i64 notrap aligned region3 v32+72 -;; @004e store notrap aligned v89, v75+8 -;; @004e v92 = load.i64 notrap aligned v34 -;; @004e store notrap aligned region1 v92, v32+24 -;; @004e v93 = load.i64 notrap aligned v34+8 -;; @004e store notrap aligned region3 v93, v32+72 -;; @004e v95 = load.i64 notrap aligned v75+72 +;; @004e v88 = load.i64 notrap aligned region3 v31+72 +;; @004e store notrap aligned v88, v74+8 +;; @004e v91 = load.i64 notrap aligned v33 +;; @004e store notrap aligned region1 v91, v31+24 +;; @004e v92 = load.i64 notrap aligned v33+8 +;; @004e store notrap aligned region3 v92, v31+72 +;; @004e v94 = load.i64 notrap aligned v74+72 ;; @004e jump block6 ;; ;; block7 cold: ;; @004e trap user12 ;; ;; block8: -;; @004e v102 = iconst.i64 120 -;; @004e v103 = iadd.i64 v75, v102 ; v102 = 120 -;; @004e v104 = load.i64 notrap aligned v103+8 +;; @004e v101 = iconst.i64 120 +;; @004e v102 = iadd.i64 v74, v101 ; v101 = 120 +;; @004e v103 = load.i64 notrap aligned v102+8 ;; v149 = iconst.i32 0 -;; @004e store notrap aligned v149, v103 ; v149 = 0 -;; @004e v97 = uextend.i128 v95 +;; @004e store notrap aligned v149, v102 ; v149 = 0 +;; @004e v96 = uextend.i128 v94 ;; v150 = iconst.i64 64 -;; v151 = ishl v97, v150 ; v150 = 64 -;; @004e v96 = uextend.i128 v75 -;; @004e v101 = bor v151, v96 -;; @004e jump block2(v101) +;; v151 = ishl v96, v150 ; v150 = 64 +;; @004e v95 = uextend.i128 v74 +;; @004e v100 = bor v151, v95 +;; @004e jump block2(v100) ;; ;; block6: -;; @004e v94 = ireduce.i32 v72 -;; @004e br_table v94, block7, [block8] +;; @004e v93 = ireduce.i32 v71 +;; @004e br_table v93, block7, [block8] ;; ;; block4: -;; @004e v108 = load.i64 notrap aligned v34 -;; @004e store notrap aligned region1 v108, v32+24 -;; @004e v109 = load.i64 notrap aligned v34+8 -;; @004e store notrap aligned region3 v109, v32+72 -;; @004e v112 = iconst.i32 4 +;; @004e v107 = load.i64 notrap aligned v33 +;; @004e store notrap aligned region1 v107, v31+24 +;; @004e v108 = load.i64 notrap aligned v33+8 +;; @004e store notrap aligned region3 v108, v31+72 +;; @004e v111 = iconst.i32 4 ;; v142 = iconst.i64 16 -;; v143 = iadd.i64 v75, v142 ; v142 = 16 -;; @004e store notrap aligned v112, v143 ; v112 = 4 -;; @004e v115 = iconst.i64 104 -;; @004e v116 = iadd.i64 v75, v115 ; v115 = 104 -;; @004e v117 = load.i64 notrap aligned v116+8 +;; v143 = iadd.i64 v74, v142 ; v142 = 16 +;; @004e store notrap aligned v111, v143 ; v111 = 4 +;; @004e v114 = iconst.i64 104 +;; @004e v115 = iadd.i64 v74, v114 ; v114 = 104 +;; @004e v116 = load.i64 notrap aligned v115+8 ;; v144 = iconst.i32 0 -;; @004e store notrap aligned v144, v116 ; v144 = 0 -;; @004e store notrap aligned v144, v116+4 ; v144 = 0 +;; @004e store notrap aligned v144, v115 ; v144 = 0 +;; @004e store notrap aligned v144, v115+4 ; v144 = 0 ;; v145 = iconst.i64 0 -;; @004e store notrap aligned v145, v116+8 ; v145 = 0 +;; @004e store notrap aligned v145, v115+8 ; v145 = 0 ;; v146 = uextend.i128 v145 ; v145 = 0 ;; v147 = iconst.i64 64 ;; v148 = ishl v146, v147 ; v147 = 64 ;; @0040 v8 = bor v148, v146 ;; @0056 jump block2(v8) ;; -;; block2(v21: i128): +;; block2(v127: i128): ;; @0058 jump block1 ;; ;; block1: diff --git a/tests/disas/table-copy.wat b/tests/disas/table-copy.wat index dcbac4f305a1..91ad6598d9c3 100644 --- a/tests/disas/table-copy.wat +++ b/tests/disas/table-copy.wat @@ -83,126 +83,126 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i32, v3: i32, v4: i32, v5: i32): -;; @0090 v7 = load.i64 notrap aligned readonly can_move region2 v0+48 -;; @0090 v8 = load.i64 notrap aligned region4 v7+8 -;; @0090 v9 = ireduce.i32 v8 -;; @0090 v10 = uextend.i64 v9 -;; @0090 v11 = uextend.i64 v3 -;; @0090 v12 = uextend.i64 v5 -;; @0090 v13 = iconst.i64 1 -;; @0090 v14 = imul v12, v13 ; v13 = 1 -;; @0090 v15 = iadd v11, v14 -;; @0090 v16 = icmp ugt v15, v10 -;; @0090 trapnz v16, user6 -;; @0090 v17 = load.i64 notrap aligned readonly can_move region2 v0+48 -;; @0090 v18 = load.i64 notrap aligned region3 v17 -;; @0090 v19 = uextend.i64 v3 -;; @0090 v20 = iconst.i64 8 -;; @0090 v21 = imul v19, v20 ; v20 = 8 -;; @0090 v22 = iadd v18, v21 -;; @0090 v23 = iconst.i32 6 -;; @0090 v24 = uextend.i64 v23 ; v23 = 6 -;; @0090 v25 = uextend.i64 v4 -;; @0090 v26 = uextend.i64 v5 -;; @0090 v27 = iconst.i64 1 -;; @0090 v28 = imul v26, v27 ; v27 = 1 -;; @0090 v29 = iadd v25, v28 -;; @0090 v30 = icmp ugt v29, v24 -;; @0090 trapnz v30, user6 -;; @0090 v31 = load.i64 notrap aligned readonly can_move region3 v0+72 -;; @0090 v32 = uextend.i64 v4 -;; @0090 v33 = iconst.i64 8 -;; @0090 v34 = imul v32, v33 ; v33 = 8 -;; @0090 v35 = iadd v31, v34 -;; @0090 v36 = uextend.i64 v5 -;; @0090 v37 = iconst.i64 8 -;; @0090 v38 = imul v36, v37 ; v37 = 8 -;; @0090 v39 = iconst.i64 8 -;; @0090 v40 = imul v36, v39 ; v39 = 8 -;; @0090 brif v36, block2, block5 +;; @0090 v6 = load.i64 notrap aligned readonly can_move region2 v0+48 +;; @0090 v7 = load.i64 notrap aligned region4 v6+8 +;; @0090 v8 = ireduce.i32 v7 +;; @0090 v9 = uextend.i64 v8 +;; @0090 v10 = uextend.i64 v3 +;; @0090 v11 = uextend.i64 v5 +;; @0090 v12 = iconst.i64 1 +;; @0090 v13 = imul v11, v12 ; v12 = 1 +;; @0090 v14 = iadd v10, v13 +;; @0090 v15 = icmp ugt v14, v9 +;; @0090 trapnz v15, user6 +;; @0090 v16 = load.i64 notrap aligned readonly can_move region2 v0+48 +;; @0090 v17 = load.i64 notrap aligned region3 v16 +;; @0090 v18 = uextend.i64 v3 +;; @0090 v19 = iconst.i64 8 +;; @0090 v20 = imul v18, v19 ; v19 = 8 +;; @0090 v21 = iadd v17, v20 +;; @0090 v22 = iconst.i32 6 +;; @0090 v23 = uextend.i64 v22 ; v22 = 6 +;; @0090 v24 = uextend.i64 v4 +;; @0090 v25 = uextend.i64 v5 +;; @0090 v26 = iconst.i64 1 +;; @0090 v27 = imul v25, v26 ; v26 = 1 +;; @0090 v28 = iadd v24, v27 +;; @0090 v29 = icmp ugt v28, v23 +;; @0090 trapnz v29, user6 +;; @0090 v30 = load.i64 notrap aligned readonly can_move region3 v0+72 +;; @0090 v31 = uextend.i64 v4 +;; @0090 v32 = iconst.i64 8 +;; @0090 v33 = imul v31, v32 ; v32 = 8 +;; @0090 v34 = iadd v30, v33 +;; @0090 v35 = uextend.i64 v5 +;; @0090 v36 = iconst.i64 8 +;; @0090 v37 = imul v35, v36 ; v36 = 8 +;; @0090 v38 = iconst.i64 8 +;; @0090 v39 = imul v35, v38 ; v38 = 8 +;; @0090 brif v35, block2, block5 ;; ;; block2: -;; @0090 v41 = icmp.i64 ult v22, v35 -;; @0090 v42 = iconst.i64 8 -;; @0090 v43 = imul.i64 v36, v42 ; v42 = 8 -;; @0090 v44 = iconst.i64 8 -;; @0090 v45 = imul.i64 v36, v44 ; v44 = 8 -;; @0090 v46 = iadd.i64 v22, v43 -;; @0090 v47 = iadd.i64 v35, v45 -;; @0090 v48 = ireduce.i32 v36 -;; @0090 v49 = iadd.i32 v4, v48 -;; @0090 brif v41, block3(v22, v35, v4), block4(v46, v47, v49) +;; @0090 v40 = icmp.i64 ult v21, v34 +;; @0090 v41 = iconst.i64 8 +;; @0090 v42 = imul.i64 v35, v41 ; v41 = 8 +;; @0090 v43 = iconst.i64 8 +;; @0090 v44 = imul.i64 v35, v43 ; v43 = 8 +;; @0090 v45 = iadd.i64 v21, v42 +;; @0090 v46 = iadd.i64 v34, v44 +;; @0090 v47 = ireduce.i32 v35 +;; @0090 v48 = iadd.i32 v4, v47 +;; @0090 brif v40, block3(v21, v34, v4), block4(v45, v46, v48) ;; -;; block3(v50: i64, v51: i64, v52: i32): -;; @0090 v53 = iconst.i32 6 -;; @0090 v54 = icmp uge v52, v53 ; v53 = 6 -;; @0090 v55 = uextend.i64 v52 -;; @0090 v56 = load.i64 notrap aligned readonly can_move region3 v0+72 -;; @0090 v57 = iconst.i64 3 -;; @0090 v58 = ishl v55, v57 ; v57 = 3 -;; @0090 v59 = iadd v56, v58 -;; @0090 v60 = iconst.i64 0 -;; @0090 v61 = select_spectre_guard v54, v60, v59 ; v60 = 0 -;; @0090 v62 = load.i64 user6 aligned region5 v61 -;; @0090 v63 = iconst.i64 -2 -;; @0090 v64 = band v62, v63 ; v63 = -2 -;; @0090 brif v62, block7(v64), block6 +;; block3(v49: i64, v50: i64, v51: i32): +;; @0090 v52 = iconst.i32 6 +;; @0090 v53 = icmp uge v51, v52 ; v52 = 6 +;; @0090 v54 = uextend.i64 v51 +;; @0090 v55 = load.i64 notrap aligned readonly can_move region3 v0+72 +;; @0090 v56 = iconst.i64 3 +;; @0090 v57 = ishl v54, v56 ; v56 = 3 +;; @0090 v58 = iadd v55, v57 +;; @0090 v59 = iconst.i64 0 +;; @0090 v60 = select_spectre_guard v53, v59, v58 ; v59 = 0 +;; @0090 v61 = load.i64 user6 aligned region5 v60 +;; @0090 v62 = iconst.i64 -2 +;; @0090 v63 = band v61, v62 ; v62 = -2 +;; @0090 brif v61, block7(v63), block6 ;; -;; block4(v78: i64, v79: i64, v80: i32): -;; @0090 v81 = iconst.i64 8 -;; @0090 v82 = isub v78, v81 ; v81 = 8 -;; @0090 v83 = iconst.i64 8 -;; @0090 v84 = isub v79, v83 ; v83 = 8 -;; @0090 v85 = iconst.i32 1 -;; @0090 v86 = isub v80, v85 ; v85 = 1 -;; @0090 v87 = iconst.i32 6 -;; @0090 v88 = icmp uge v86, v87 ; v87 = 6 -;; @0090 v89 = uextend.i64 v86 -;; @0090 v90 = load.i64 notrap aligned readonly can_move region3 v0+72 -;; @0090 v91 = iconst.i64 3 -;; @0090 v92 = ishl v89, v91 ; v91 = 3 -;; @0090 v93 = iadd v90, v92 -;; @0090 v94 = iconst.i64 0 -;; @0090 v95 = select_spectre_guard v88, v94, v93 ; v94 = 0 -;; @0090 v96 = load.i64 user6 aligned region5 v95 -;; @0090 v97 = iconst.i64 -2 -;; @0090 v98 = band v96, v97 ; v97 = -2 -;; @0090 brif v96, block9(v98), block8 +;; block4(v77: i64, v78: i64, v79: i32): +;; @0090 v80 = iconst.i64 8 +;; @0090 v81 = isub v77, v80 ; v80 = 8 +;; @0090 v82 = iconst.i64 8 +;; @0090 v83 = isub v78, v82 ; v82 = 8 +;; @0090 v84 = iconst.i32 1 +;; @0090 v85 = isub v79, v84 ; v84 = 1 +;; @0090 v86 = iconst.i32 6 +;; @0090 v87 = icmp uge v85, v86 ; v86 = 6 +;; @0090 v88 = uextend.i64 v85 +;; @0090 v89 = load.i64 notrap aligned readonly can_move region3 v0+72 +;; @0090 v90 = iconst.i64 3 +;; @0090 v91 = ishl v88, v90 ; v90 = 3 +;; @0090 v92 = iadd v89, v91 +;; @0090 v93 = iconst.i64 0 +;; @0090 v94 = select_spectre_guard v87, v93, v92 ; v93 = 0 +;; @0090 v95 = load.i64 user6 aligned region5 v94 +;; @0090 v96 = iconst.i64 -2 +;; @0090 v97 = band v95, v96 ; v96 = -2 +;; @0090 brif v95, block9(v97), block8 ;; ;; block5: ;; @0094 jump block1 ;; ;; block6 cold: -;; @0090 v66 = iconst.i32 1 -;; @0090 v67 = uextend.i64 v52 -;; @0090 v68 = call fn0(v0, v66, v67) ; v66 = 1 -;; @0090 jump block7(v68) +;; @0090 v65 = iconst.i32 1 +;; @0090 v66 = uextend.i64 v51 +;; @0090 v67 = call fn0(v0, v65, v66) ; v65 = 1 +;; @0090 jump block7(v67) ;; -;; block7(v65: i64): -;; @0090 v69 = iconst.i64 1 -;; @0090 v70 = bor v65, v69 ; v69 = 1 -;; @0090 store notrap aligned region5 v70, v50 -;; @0090 v71 = iconst.i64 8 -;; @0090 v72 = iadd.i64 v50, v71 ; v71 = 8 -;; @0090 v73 = iconst.i64 8 -;; @0090 v74 = iadd.i64 v51, v73 ; v73 = 8 -;; @0090 v75 = iconst.i32 1 -;; @0090 v76 = iadd.i32 v52, v75 ; v75 = 1 -;; @0090 v77 = icmp eq v74, v47 -;; @0090 brif v77, block5, block3(v72, v74, v76) +;; block7(v64: i64): +;; @0090 v68 = iconst.i64 1 +;; @0090 v69 = bor v64, v68 ; v68 = 1 +;; @0090 store notrap aligned region5 v69, v49 +;; @0090 v70 = iconst.i64 8 +;; @0090 v71 = iadd.i64 v49, v70 ; v70 = 8 +;; @0090 v72 = iconst.i64 8 +;; @0090 v73 = iadd.i64 v50, v72 ; v72 = 8 +;; @0090 v74 = iconst.i32 1 +;; @0090 v75 = iadd.i32 v51, v74 ; v74 = 1 +;; @0090 v76 = icmp eq v73, v46 +;; @0090 brif v76, block5, block3(v71, v73, v75) ;; ;; block8 cold: -;; @0090 v100 = iconst.i32 1 -;; @0090 v101 = uextend.i64 v86 -;; @0090 v102 = call fn0(v0, v100, v101) ; v100 = 1 -;; @0090 jump block9(v102) +;; @0090 v99 = iconst.i32 1 +;; @0090 v100 = uextend.i64 v85 +;; @0090 v101 = call fn0(v0, v99, v100) ; v99 = 1 +;; @0090 jump block9(v101) ;; -;; block9(v99: i64): -;; @0090 v103 = iconst.i64 1 -;; @0090 v104 = bor v99, v103 ; v103 = 1 -;; @0090 store notrap aligned region5 v104, v82 -;; @0090 v105 = icmp.i64 eq v84, v35 -;; @0090 brif v105, block5, block4(v82, v84, v86) +;; block9(v98: i64): +;; @0090 v102 = iconst.i64 1 +;; @0090 v103 = bor v98, v102 ; v102 = 1 +;; @0090 store notrap aligned region5 v103, v81 +;; @0090 v104 = icmp.i64 eq v83, v34 +;; @0090 brif v104, block5, block4(v81, v83, v85) ;; ;; block1: ;; @0094 return v2 @@ -223,132 +223,132 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i32, v3: i32, v4: i32, v5: i32): -;; @009f v7 = iconst.i32 6 -;; @009f v8 = uextend.i64 v7 ; v7 = 6 -;; @009f v9 = uextend.i64 v3 -;; @009f v10 = uextend.i64 v5 -;; @009f v11 = iconst.i64 1 -;; @009f v12 = imul v10, v11 ; v11 = 1 -;; @009f v13 = iadd v9, v12 -;; @009f v14 = icmp ugt v13, v8 -;; @009f trapnz v14, user6 -;; @009f v15 = load.i64 notrap aligned readonly can_move region2 v0+72 -;; @009f v16 = uextend.i64 v3 -;; @009f v17 = iconst.i64 8 -;; @009f v18 = imul v16, v17 ; v17 = 8 -;; @009f v19 = iadd v15, v18 -;; @009f v20 = load.i64 notrap aligned readonly can_move region3 v0+48 -;; @009f v21 = load.i64 notrap aligned region4 v20+8 -;; @009f v22 = ireduce.i32 v21 -;; @009f v23 = uextend.i64 v22 -;; @009f v24 = uextend.i64 v4 -;; @009f v25 = uextend.i64 v5 -;; @009f v26 = iconst.i64 1 -;; @009f v27 = imul v25, v26 ; v26 = 1 -;; @009f v28 = iadd v24, v27 -;; @009f v29 = icmp ugt v28, v23 -;; @009f trapnz v29, user6 -;; @009f v30 = load.i64 notrap aligned readonly can_move region3 v0+48 -;; @009f v31 = load.i64 notrap aligned region2 v30 -;; @009f v32 = uextend.i64 v4 -;; @009f v33 = iconst.i64 8 -;; @009f v34 = imul v32, v33 ; v33 = 8 -;; @009f v35 = iadd v31, v34 -;; @009f v36 = uextend.i64 v5 -;; @009f v37 = iconst.i64 8 -;; @009f v38 = imul v36, v37 ; v37 = 8 -;; @009f v39 = iconst.i64 8 -;; @009f v40 = imul v36, v39 ; v39 = 8 -;; @009f brif v36, block2, block5 +;; @009f v6 = iconst.i32 6 +;; @009f v7 = uextend.i64 v6 ; v6 = 6 +;; @009f v8 = uextend.i64 v3 +;; @009f v9 = uextend.i64 v5 +;; @009f v10 = iconst.i64 1 +;; @009f v11 = imul v9, v10 ; v10 = 1 +;; @009f v12 = iadd v8, v11 +;; @009f v13 = icmp ugt v12, v7 +;; @009f trapnz v13, user6 +;; @009f v14 = load.i64 notrap aligned readonly can_move region2 v0+72 +;; @009f v15 = uextend.i64 v3 +;; @009f v16 = iconst.i64 8 +;; @009f v17 = imul v15, v16 ; v16 = 8 +;; @009f v18 = iadd v14, v17 +;; @009f v19 = load.i64 notrap aligned readonly can_move region3 v0+48 +;; @009f v20 = load.i64 notrap aligned region4 v19+8 +;; @009f v21 = ireduce.i32 v20 +;; @009f v22 = uextend.i64 v21 +;; @009f v23 = uextend.i64 v4 +;; @009f v24 = uextend.i64 v5 +;; @009f v25 = iconst.i64 1 +;; @009f v26 = imul v24, v25 ; v25 = 1 +;; @009f v27 = iadd v23, v26 +;; @009f v28 = icmp ugt v27, v22 +;; @009f trapnz v28, user6 +;; @009f v29 = load.i64 notrap aligned readonly can_move region3 v0+48 +;; @009f v30 = load.i64 notrap aligned region2 v29 +;; @009f v31 = uextend.i64 v4 +;; @009f v32 = iconst.i64 8 +;; @009f v33 = imul v31, v32 ; v32 = 8 +;; @009f v34 = iadd v30, v33 +;; @009f v35 = uextend.i64 v5 +;; @009f v36 = iconst.i64 8 +;; @009f v37 = imul v35, v36 ; v36 = 8 +;; @009f v38 = iconst.i64 8 +;; @009f v39 = imul v35, v38 ; v38 = 8 +;; @009f brif v35, block2, block5 ;; ;; block2: -;; @009f v41 = icmp.i64 ult v19, v35 -;; @009f v42 = iconst.i64 8 -;; @009f v43 = imul.i64 v36, v42 ; v42 = 8 -;; @009f v44 = iconst.i64 8 -;; @009f v45 = imul.i64 v36, v44 ; v44 = 8 -;; @009f v46 = iadd.i64 v19, v43 -;; @009f v47 = iadd.i64 v35, v45 -;; @009f v48 = ireduce.i32 v36 -;; @009f v49 = iadd.i32 v4, v48 -;; @009f brif v41, block3(v19, v35, v4), block4(v46, v47, v49) +;; @009f v40 = icmp.i64 ult v18, v34 +;; @009f v41 = iconst.i64 8 +;; @009f v42 = imul.i64 v35, v41 ; v41 = 8 +;; @009f v43 = iconst.i64 8 +;; @009f v44 = imul.i64 v35, v43 ; v43 = 8 +;; @009f v45 = iadd.i64 v18, v42 +;; @009f v46 = iadd.i64 v34, v44 +;; @009f v47 = ireduce.i32 v35 +;; @009f v48 = iadd.i32 v4, v47 +;; @009f brif v40, block3(v18, v34, v4), block4(v45, v46, v48) ;; -;; block3(v50: i64, v51: i64, v52: i32): -;; @009f v53 = load.i64 notrap aligned readonly can_move region3 v0+48 -;; @009f v54 = load.i64 notrap aligned region4 v53+8 -;; @009f v55 = ireduce.i32 v54 -;; @009f v56 = icmp uge v52, v55 -;; @009f v57 = uextend.i64 v52 -;; @009f v58 = load.i64 notrap aligned readonly can_move region3 v0+48 -;; @009f v59 = load.i64 notrap aligned region2 v58 -;; @009f v60 = iconst.i64 3 -;; @009f v61 = ishl v57, v60 ; v60 = 3 -;; @009f v62 = iadd v59, v61 -;; @009f v63 = iconst.i64 0 -;; @009f v64 = select_spectre_guard v56, v63, v62 ; v63 = 0 -;; @009f v65 = load.i64 user6 aligned region5 v64 -;; @009f v66 = iconst.i64 -2 -;; @009f v67 = band v65, v66 ; v66 = -2 -;; @009f brif v65, block7(v67), block6 +;; block3(v49: i64, v50: i64, v51: i32): +;; @009f v52 = load.i64 notrap aligned readonly can_move region3 v0+48 +;; @009f v53 = load.i64 notrap aligned region4 v52+8 +;; @009f v54 = ireduce.i32 v53 +;; @009f v55 = icmp uge v51, v54 +;; @009f v56 = uextend.i64 v51 +;; @009f v57 = load.i64 notrap aligned readonly can_move region3 v0+48 +;; @009f v58 = load.i64 notrap aligned region2 v57 +;; @009f v59 = iconst.i64 3 +;; @009f v60 = ishl v56, v59 ; v59 = 3 +;; @009f v61 = iadd v58, v60 +;; @009f v62 = iconst.i64 0 +;; @009f v63 = select_spectre_guard v55, v62, v61 ; v62 = 0 +;; @009f v64 = load.i64 user6 aligned region5 v63 +;; @009f v65 = iconst.i64 -2 +;; @009f v66 = band v64, v65 ; v65 = -2 +;; @009f brif v64, block7(v66), block6 ;; -;; block4(v81: i64, v82: i64, v83: i32): -;; @009f v84 = iconst.i64 8 -;; @009f v85 = isub v81, v84 ; v84 = 8 -;; @009f v86 = iconst.i64 8 -;; @009f v87 = isub v82, v86 ; v86 = 8 -;; @009f v88 = iconst.i32 1 -;; @009f v89 = isub v83, v88 ; v88 = 1 -;; @009f v90 = load.i64 notrap aligned readonly can_move region3 v0+48 -;; @009f v91 = load.i64 notrap aligned region4 v90+8 -;; @009f v92 = ireduce.i32 v91 -;; @009f v93 = icmp uge v89, v92 -;; @009f v94 = uextend.i64 v89 -;; @009f v95 = load.i64 notrap aligned readonly can_move region3 v0+48 -;; @009f v96 = load.i64 notrap aligned region2 v95 -;; @009f v97 = iconst.i64 3 -;; @009f v98 = ishl v94, v97 ; v97 = 3 -;; @009f v99 = iadd v96, v98 -;; @009f v100 = iconst.i64 0 -;; @009f v101 = select_spectre_guard v93, v100, v99 ; v100 = 0 -;; @009f v102 = load.i64 user6 aligned region5 v101 -;; @009f v103 = iconst.i64 -2 -;; @009f v104 = band v102, v103 ; v103 = -2 -;; @009f brif v102, block9(v104), block8 +;; block4(v80: i64, v81: i64, v82: i32): +;; @009f v83 = iconst.i64 8 +;; @009f v84 = isub v80, v83 ; v83 = 8 +;; @009f v85 = iconst.i64 8 +;; @009f v86 = isub v81, v85 ; v85 = 8 +;; @009f v87 = iconst.i32 1 +;; @009f v88 = isub v82, v87 ; v87 = 1 +;; @009f v89 = load.i64 notrap aligned readonly can_move region3 v0+48 +;; @009f v90 = load.i64 notrap aligned region4 v89+8 +;; @009f v91 = ireduce.i32 v90 +;; @009f v92 = icmp uge v88, v91 +;; @009f v93 = uextend.i64 v88 +;; @009f v94 = load.i64 notrap aligned readonly can_move region3 v0+48 +;; @009f v95 = load.i64 notrap aligned region2 v94 +;; @009f v96 = iconst.i64 3 +;; @009f v97 = ishl v93, v96 ; v96 = 3 +;; @009f v98 = iadd v95, v97 +;; @009f v99 = iconst.i64 0 +;; @009f v100 = select_spectre_guard v92, v99, v98 ; v99 = 0 +;; @009f v101 = load.i64 user6 aligned region5 v100 +;; @009f v102 = iconst.i64 -2 +;; @009f v103 = band v101, v102 ; v102 = -2 +;; @009f brif v101, block9(v103), block8 ;; ;; block5: ;; @00a3 jump block1 ;; ;; block6 cold: -;; @009f v69 = iconst.i32 0 -;; @009f v70 = uextend.i64 v52 -;; @009f v71 = call fn0(v0, v69, v70) ; v69 = 0 -;; @009f jump block7(v71) +;; @009f v68 = iconst.i32 0 +;; @009f v69 = uextend.i64 v51 +;; @009f v70 = call fn0(v0, v68, v69) ; v68 = 0 +;; @009f jump block7(v70) ;; -;; block7(v68: i64): -;; @009f v72 = iconst.i64 1 -;; @009f v73 = bor v68, v72 ; v72 = 1 -;; @009f store notrap aligned region5 v73, v50 -;; @009f v74 = iconst.i64 8 -;; @009f v75 = iadd.i64 v50, v74 ; v74 = 8 -;; @009f v76 = iconst.i64 8 -;; @009f v77 = iadd.i64 v51, v76 ; v76 = 8 -;; @009f v78 = iconst.i32 1 -;; @009f v79 = iadd.i32 v52, v78 ; v78 = 1 -;; @009f v80 = icmp eq v77, v47 -;; @009f brif v80, block5, block3(v75, v77, v79) +;; block7(v67: i64): +;; @009f v71 = iconst.i64 1 +;; @009f v72 = bor v67, v71 ; v71 = 1 +;; @009f store notrap aligned region5 v72, v49 +;; @009f v73 = iconst.i64 8 +;; @009f v74 = iadd.i64 v49, v73 ; v73 = 8 +;; @009f v75 = iconst.i64 8 +;; @009f v76 = iadd.i64 v50, v75 ; v75 = 8 +;; @009f v77 = iconst.i32 1 +;; @009f v78 = iadd.i32 v51, v77 ; v77 = 1 +;; @009f v79 = icmp eq v76, v46 +;; @009f brif v79, block5, block3(v74, v76, v78) ;; ;; block8 cold: -;; @009f v106 = iconst.i32 0 -;; @009f v107 = uextend.i64 v89 -;; @009f v108 = call fn0(v0, v106, v107) ; v106 = 0 -;; @009f jump block9(v108) +;; @009f v105 = iconst.i32 0 +;; @009f v106 = uextend.i64 v88 +;; @009f v107 = call fn0(v0, v105, v106) ; v105 = 0 +;; @009f jump block9(v107) ;; -;; block9(v105: i64): -;; @009f v109 = iconst.i64 1 -;; @009f v110 = bor v105, v109 ; v109 = 1 -;; @009f store notrap aligned region5 v110, v85 -;; @009f v111 = icmp.i64 eq v87, v35 -;; @009f brif v111, block5, block4(v85, v87, v89) +;; block9(v104: i64): +;; @009f v108 = iconst.i64 1 +;; @009f v109 = bor v104, v108 ; v108 = 1 +;; @009f store notrap aligned region5 v109, v84 +;; @009f v110 = icmp.i64 eq v86, v34 +;; @009f brif v110, block5, block4(v84, v86, v88) ;; ;; block1: ;; @00a3 return v2 diff --git a/tests/disas/table-get-fixed-size.wat b/tests/disas/table-get-fixed-size.wat index bc6decea93a5..3f8de3fb4e6e 100644 --- a/tests/disas/table-get-fixed-size.wat +++ b/tests/disas/table-get-fixed-size.wat @@ -26,21 +26,21 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64): -;; @0052 v3 = iconst.i32 0 -;; @0054 v4 = iconst.i32 7 -;; @0054 v5 = icmp uge v3, v4 ; v3 = 0, v4 = 7 -;; @0054 v6 = uextend.i64 v3 ; v3 = 0 -;; @0054 v7 = load.i64 notrap aligned readonly can_move region2 v0+48 -;; @0054 v8 = iconst.i64 2 -;; @0054 v9 = ishl v6, v8 ; v8 = 2 -;; @0054 v10 = iadd v7, v9 -;; @0054 v11 = iconst.i64 0 -;; @0054 v12 = select_spectre_guard v5, v11, v10 ; v11 = 0 -;; @0054 v13 = load.i32 user6 aligned region3 v12 +;; @0052 v2 = iconst.i32 0 +;; @0054 v3 = iconst.i32 7 +;; @0054 v4 = icmp uge v2, v3 ; v2 = 0, v3 = 7 +;; @0054 v5 = uextend.i64 v2 ; v2 = 0 +;; @0054 v6 = load.i64 notrap aligned readonly can_move region2 v0+48 +;; @0054 v7 = iconst.i64 2 +;; @0054 v8 = ishl v5, v7 ; v7 = 2 +;; @0054 v9 = iadd v6, v8 +;; @0054 v10 = iconst.i64 0 +;; @0054 v11 = select_spectre_guard v4, v10, v9 ; v10 = 0 +;; @0054 v12 = load.i32 user6 aligned region3 v11 ;; @0056 jump block1 ;; ;; block1: -;; @0056 return v13 +;; @0056 return v12 ;; } ;; ;; function u0:1(i64 vmctx, i64, i32) -> i32 tail { @@ -54,18 +54,18 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i32): -;; @005b v4 = iconst.i32 7 -;; @005b v5 = icmp uge v2, v4 ; v4 = 7 -;; @005b v6 = uextend.i64 v2 -;; @005b v7 = load.i64 notrap aligned readonly can_move region2 v0+48 -;; @005b v8 = iconst.i64 2 -;; @005b v9 = ishl v6, v8 ; v8 = 2 -;; @005b v10 = iadd v7, v9 -;; @005b v11 = iconst.i64 0 -;; @005b v12 = select_spectre_guard v5, v11, v10 ; v11 = 0 -;; @005b v13 = load.i32 user6 aligned region3 v12 +;; @005b v3 = iconst.i32 7 +;; @005b v4 = icmp uge v2, v3 ; v3 = 7 +;; @005b v5 = uextend.i64 v2 +;; @005b v6 = load.i64 notrap aligned readonly can_move region2 v0+48 +;; @005b v7 = iconst.i64 2 +;; @005b v8 = ishl v5, v7 ; v7 = 2 +;; @005b v9 = iadd v6, v8 +;; @005b v10 = iconst.i64 0 +;; @005b v11 = select_spectre_guard v4, v10, v9 ; v10 = 0 +;; @005b v12 = load.i32 user6 aligned region3 v11 ;; @005d jump block1 ;; ;; block1: -;; @005d return v13 +;; @005d return v12 ;; } diff --git a/tests/disas/table-get.wat b/tests/disas/table-get.wat index 0221f0f95824..8d9af0320005 100644 --- a/tests/disas/table-get.wat +++ b/tests/disas/table-get.wat @@ -26,22 +26,22 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64): -;; @0051 v3 = iconst.i32 0 -;; @0053 v4 = load.i64 notrap aligned region3 v0+56 -;; @0053 v5 = ireduce.i32 v4 -;; @0053 v6 = icmp uge v3, v5 ; v3 = 0 -;; @0053 v7 = uextend.i64 v3 ; v3 = 0 -;; @0053 v8 = load.i64 notrap aligned region2 v0+48 -;; @0053 v9 = iconst.i64 2 -;; @0053 v10 = ishl v7, v9 ; v9 = 2 -;; @0053 v11 = iadd v8, v10 -;; @0053 v12 = iconst.i64 0 -;; @0053 v13 = select_spectre_guard v6, v12, v11 ; v12 = 0 -;; @0053 v14 = load.i32 user6 aligned region4 v13 +;; @0051 v2 = iconst.i32 0 +;; @0053 v3 = load.i64 notrap aligned region3 v0+56 +;; @0053 v4 = ireduce.i32 v3 +;; @0053 v5 = icmp uge v2, v4 ; v2 = 0 +;; @0053 v6 = uextend.i64 v2 ; v2 = 0 +;; @0053 v7 = load.i64 notrap aligned region2 v0+48 +;; @0053 v8 = iconst.i64 2 +;; @0053 v9 = ishl v6, v8 ; v8 = 2 +;; @0053 v10 = iadd v7, v9 +;; @0053 v11 = iconst.i64 0 +;; @0053 v12 = select_spectre_guard v5, v11, v10 ; v11 = 0 +;; @0053 v13 = load.i32 user6 aligned region4 v12 ;; @0055 jump block1 ;; ;; block1: -;; @0055 return v14 +;; @0055 return v13 ;; } ;; ;; function u0:1(i64 vmctx, i64, i32) -> i32 tail { @@ -56,19 +56,19 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i32): -;; @005a v4 = load.i64 notrap aligned region3 v0+56 -;; @005a v5 = ireduce.i32 v4 -;; @005a v6 = icmp uge v2, v5 -;; @005a v7 = uextend.i64 v2 -;; @005a v8 = load.i64 notrap aligned region2 v0+48 -;; @005a v9 = iconst.i64 2 -;; @005a v10 = ishl v7, v9 ; v9 = 2 -;; @005a v11 = iadd v8, v10 -;; @005a v12 = iconst.i64 0 -;; @005a v13 = select_spectre_guard v6, v12, v11 ; v12 = 0 -;; @005a v14 = load.i32 user6 aligned region4 v13 +;; @005a v3 = load.i64 notrap aligned region3 v0+56 +;; @005a v4 = ireduce.i32 v3 +;; @005a v5 = icmp uge v2, v4 +;; @005a v6 = uextend.i64 v2 +;; @005a v7 = load.i64 notrap aligned region2 v0+48 +;; @005a v8 = iconst.i64 2 +;; @005a v9 = ishl v6, v8 ; v8 = 2 +;; @005a v10 = iadd v7, v9 +;; @005a v11 = iconst.i64 0 +;; @005a v12 = select_spectre_guard v5, v11, v10 ; v11 = 0 +;; @005a v13 = load.i32 user6 aligned region4 v12 ;; @005c jump block1 ;; ;; block1: -;; @005c return v14 +;; @005c return v13 ;; } diff --git a/tests/disas/typed-funcrefs-eager-init.wat b/tests/disas/typed-funcrefs-eager-init.wat index 2723e22cc7b2..6e04853f51db 100644 --- a/tests/disas/typed-funcrefs-eager-init.wat +++ b/tests/disas/typed-funcrefs-eager-init.wat @@ -140,24 +140,24 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i32, v3: i32, v4: i32, v5: i32): -;; @0048 v12 = load.i64 notrap aligned readonly can_move region2 v0+48 -;; v45 = iconst.i64 8 -;; @0048 v15 = iadd v12, v45 ; v45 = 8 -;; @0048 v18 = load.i64 user6 aligned region3 v15 -;; @004a v19 = load.i64 user16 aligned readonly v18+8 -;; @004a v20 = load.i64 notrap aligned readonly v18+24 -;; @004a v21 = call_indirect sig0, v19(v20, v0, v2, v3, v4, v5) -;; v52 = iconst.i64 16 -;; @005b v30 = iadd v12, v52 ; v52 = 16 -;; @005b v33 = load.i64 user6 aligned region3 v30 -;; @005d v34 = load.i64 user16 aligned readonly v33+8 -;; @005d v35 = load.i64 notrap aligned readonly v33+24 -;; @005d v36 = call_indirect sig0, v34(v35, v0, v2, v3, v4, v5) +;; @0048 v11 = load.i64 notrap aligned readonly can_move region2 v0+48 +;; v44 = iconst.i64 8 +;; @0048 v14 = iadd v11, v44 ; v44 = 8 +;; @0048 v17 = load.i64 user6 aligned region3 v14 +;; @004a v18 = load.i64 user16 aligned readonly v17+8 +;; @004a v19 = load.i64 notrap aligned readonly v17+24 +;; @004a v20 = call_indirect sig0, v18(v19, v0, v2, v3, v4, v5) +;; v51 = iconst.i64 16 +;; @005b v29 = iadd v11, v51 ; v51 = 16 +;; @005b v32 = load.i64 user6 aligned region3 v29 +;; @005d v33 = load.i64 user16 aligned readonly v32+8 +;; @005d v34 = load.i64 notrap aligned readonly v32+24 +;; @005d v35 = call_indirect sig0, v33(v34, v0, v2, v3, v4, v5) ;; @0066 jump block1 ;; ;; block1: -;; @0061 v37 = iadd.i32 v36, v21 -;; @0066 return v37 +;; @0061 v36 = iadd.i32 v35, v20 +;; @0066 return v36 ;; } ;; ;; function u0:2(i64 vmctx, i64, i32, i32, i32, i32) -> i32 tail { @@ -172,24 +172,24 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i32, v3: i32, v4: i32, v5: i32): -;; @0075 v12 = load.i64 notrap aligned readonly can_move region2 v0+48 -;; v45 = iconst.i64 8 -;; @0075 v15 = iadd v12, v45 ; v45 = 8 -;; @0075 v18 = load.i64 user6 aligned region3 v15 -;; @0075 v19 = load.i64 user7 aligned readonly v18+8 -;; @0075 v20 = load.i64 notrap aligned readonly v18+24 -;; @0075 v21 = call_indirect sig0, v19(v20, v0, v2, v3, v4, v5) -;; v52 = iconst.i64 16 -;; @0087 v30 = iadd v12, v52 ; v52 = 16 -;; @0087 v33 = load.i64 user6 aligned region3 v30 -;; @0087 v34 = load.i64 user7 aligned readonly v33+8 -;; @0087 v35 = load.i64 notrap aligned readonly v33+24 -;; @0087 v36 = call_indirect sig0, v34(v35, v0, v2, v3, v4, v5) +;; @0075 v11 = load.i64 notrap aligned readonly can_move region2 v0+48 +;; v44 = iconst.i64 8 +;; @0075 v14 = iadd v11, v44 ; v44 = 8 +;; @0075 v17 = load.i64 user6 aligned region3 v14 +;; @0075 v18 = load.i64 user7 aligned readonly v17+8 +;; @0075 v19 = load.i64 notrap aligned readonly v17+24 +;; @0075 v20 = call_indirect sig0, v18(v19, v0, v2, v3, v4, v5) +;; v51 = iconst.i64 16 +;; @0087 v29 = iadd v11, v51 ; v51 = 16 +;; @0087 v32 = load.i64 user6 aligned region3 v29 +;; @0087 v33 = load.i64 user7 aligned readonly v32+8 +;; @0087 v34 = load.i64 notrap aligned readonly v32+24 +;; @0087 v35 = call_indirect sig0, v33(v34, v0, v2, v3, v4, v5) ;; @0091 jump block1 ;; ;; block1: -;; @008c v37 = iadd.i32 v36, v21 -;; @0091 return v37 +;; @008c v36 = iadd.i32 v35, v20 +;; @0091 return v36 ;; } ;; ;; function u0:3(i64 vmctx, i64, i32, i32, i32, i32) -> i32 tail { @@ -204,17 +204,17 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i32, v3: i32, v4: i32, v5: i32): -;; @009e v8 = load.i64 notrap aligned region2 v0+64 -;; @00a0 v9 = load.i64 user16 aligned readonly v8+8 -;; @00a0 v10 = load.i64 notrap aligned readonly v8+24 -;; @00a0 v11 = call_indirect sig0, v9(v10, v0, v2, v3, v4, v5) -;; @00af v13 = load.i64 notrap aligned region3 v0+80 -;; @00b1 v14 = load.i64 user16 aligned readonly v13+8 -;; @00b1 v15 = load.i64 notrap aligned readonly v13+24 -;; @00b1 v16 = call_indirect sig0, v14(v15, v0, v2, v3, v4, v5) +;; @009e v7 = load.i64 notrap aligned region2 v0+64 +;; @00a0 v8 = load.i64 user16 aligned readonly v7+8 +;; @00a0 v9 = load.i64 notrap aligned readonly v7+24 +;; @00a0 v10 = call_indirect sig0, v8(v9, v0, v2, v3, v4, v5) +;; @00af v12 = load.i64 notrap aligned region3 v0+80 +;; @00b1 v13 = load.i64 user16 aligned readonly v12+8 +;; @00b1 v14 = load.i64 notrap aligned readonly v12+24 +;; @00b1 v15 = call_indirect sig0, v13(v14, v0, v2, v3, v4, v5) ;; @00ba jump block1 ;; ;; block1: -;; @00b5 v17 = iadd.i32 v16, v11 -;; @00ba return v17 +;; @00b5 v16 = iadd.i32 v15, v10 +;; @00ba return v16 ;; } diff --git a/tests/disas/typed-funcrefs.wat b/tests/disas/typed-funcrefs.wat index d8a195dcd657..a09c448397b8 100644 --- a/tests/disas/typed-funcrefs.wat +++ b/tests/disas/typed-funcrefs.wat @@ -142,46 +142,46 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i32, v3: i32, v4: i32, v5: i32): -;; @0048 v12 = load.i64 notrap aligned readonly can_move region2 v0+48 -;; v63 = iconst.i64 8 -;; @0048 v15 = iadd v12, v63 ; v63 = 8 -;; @0048 v18 = load.i64 user6 aligned region3 v15 -;; @0048 v19 = iconst.i64 -2 -;; @0048 v20 = band v18, v19 ; v19 = -2 -;; @0048 brif v18, block3(v20), block2 +;; @0048 v11 = load.i64 notrap aligned readonly can_move region2 v0+48 +;; v62 = iconst.i64 8 +;; @0048 v14 = iadd v11, v62 ; v62 = 8 +;; @0048 v17 = load.i64 user6 aligned region3 v14 +;; @0048 v18 = iconst.i64 -2 +;; @0048 v19 = band v17, v18 ; v18 = -2 +;; @0048 brif v17, block3(v19), block2 ;; ;; block2 cold: -;; @003c v7 = iconst.i32 0 -;; v62 = iconst.i64 1 -;; @0048 v24 = call fn0(v0, v7, v62) ; v7 = 0, v62 = 1 -;; @0048 jump block3(v24) +;; @003c v6 = iconst.i32 0 +;; v61 = iconst.i64 1 +;; @0048 v23 = call fn0(v0, v6, v61) ; v6 = 0, v61 = 1 +;; @0048 jump block3(v23) ;; -;; block3(v21: i64): -;; @004a v25 = load.i64 user16 aligned readonly v21+8 -;; @004a v26 = load.i64 notrap aligned readonly v21+24 -;; @004a v27 = call_indirect sig1, v25(v26, v0, v2, v3, v4, v5) -;; v70 = iconst.i64 16 -;; @005b v41 = iadd.i64 v12, v70 ; v70 = 16 -;; @005b v44 = load.i64 user6 aligned region3 v41 -;; v71 = iconst.i64 -2 -;; v72 = band v44, v71 ; v71 = -2 -;; @005b brif v44, block5(v72), block4 +;; block3(v20: i64): +;; @004a v24 = load.i64 user16 aligned readonly v20+8 +;; @004a v25 = load.i64 notrap aligned readonly v20+24 +;; @004a v26 = call_indirect sig1, v24(v25, v0, v2, v3, v4, v5) +;; v69 = iconst.i64 16 +;; @005b v40 = iadd.i64 v11, v69 ; v69 = 16 +;; @005b v43 = load.i64 user6 aligned region3 v40 +;; v70 = iconst.i64 -2 +;; v71 = band v43, v70 ; v70 = -2 +;; @005b brif v43, block5(v71), block4 ;; ;; block4 cold: -;; v73 = iconst.i32 0 -;; v69 = iconst.i64 2 -;; @005b v50 = call fn0(v0, v73, v69) ; v73 = 0, v69 = 2 -;; @005b jump block5(v50) +;; v72 = iconst.i32 0 +;; v68 = iconst.i64 2 +;; @005b v49 = call fn0(v0, v72, v68) ; v72 = 0, v68 = 2 +;; @005b jump block5(v49) ;; -;; block5(v47: i64): -;; @005d v51 = load.i64 user16 aligned readonly v47+8 -;; @005d v52 = load.i64 notrap aligned readonly v47+24 -;; @005d v53 = call_indirect sig1, v51(v52, v0, v2, v3, v4, v5) +;; block5(v46: i64): +;; @005d v50 = load.i64 user16 aligned readonly v46+8 +;; @005d v51 = load.i64 notrap aligned readonly v46+24 +;; @005d v52 = call_indirect sig1, v50(v51, v0, v2, v3, v4, v5) ;; @0066 jump block1 ;; ;; block1: -;; @0061 v55 = iadd.i32 v53, v27 -;; @0066 return v55 +;; @0061 v54 = iadd.i32 v52, v26 +;; @0066 return v54 ;; } ;; ;; function u0:2(i64 vmctx, i64, i32, i32, i32, i32) -> i32 tail { @@ -198,46 +198,46 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i32, v3: i32, v4: i32, v5: i32): -;; @0075 v12 = load.i64 notrap aligned readonly can_move region2 v0+48 -;; v63 = iconst.i64 8 -;; @0075 v15 = iadd v12, v63 ; v63 = 8 -;; @0075 v18 = load.i64 user6 aligned region3 v15 -;; @0075 v19 = iconst.i64 -2 -;; @0075 v20 = band v18, v19 ; v19 = -2 -;; @0075 brif v18, block3(v20), block2 +;; @0075 v11 = load.i64 notrap aligned readonly can_move region2 v0+48 +;; v62 = iconst.i64 8 +;; @0075 v14 = iadd v11, v62 ; v62 = 8 +;; @0075 v17 = load.i64 user6 aligned region3 v14 +;; @0075 v18 = iconst.i64 -2 +;; @0075 v19 = band v17, v18 ; v18 = -2 +;; @0075 brif v17, block3(v19), block2 ;; ;; block2 cold: -;; @0069 v7 = iconst.i32 0 -;; v62 = iconst.i64 1 -;; @0075 v24 = call fn0(v0, v7, v62) ; v7 = 0, v62 = 1 -;; @0075 jump block3(v24) +;; @0069 v6 = iconst.i32 0 +;; v61 = iconst.i64 1 +;; @0075 v23 = call fn0(v0, v6, v61) ; v6 = 0, v61 = 1 +;; @0075 jump block3(v23) ;; -;; block3(v21: i64): -;; @0075 v25 = load.i64 user7 aligned readonly v21+8 -;; @0075 v26 = load.i64 notrap aligned readonly v21+24 -;; @0075 v27 = call_indirect sig0, v25(v26, v0, v2, v3, v4, v5) -;; v70 = iconst.i64 16 -;; @0087 v41 = iadd.i64 v12, v70 ; v70 = 16 -;; @0087 v44 = load.i64 user6 aligned region3 v41 -;; v71 = iconst.i64 -2 -;; v72 = band v44, v71 ; v71 = -2 -;; @0087 brif v44, block5(v72), block4 +;; block3(v20: i64): +;; @0075 v24 = load.i64 user7 aligned readonly v20+8 +;; @0075 v25 = load.i64 notrap aligned readonly v20+24 +;; @0075 v26 = call_indirect sig0, v24(v25, v0, v2, v3, v4, v5) +;; v69 = iconst.i64 16 +;; @0087 v40 = iadd.i64 v11, v69 ; v69 = 16 +;; @0087 v43 = load.i64 user6 aligned region3 v40 +;; v70 = iconst.i64 -2 +;; v71 = band v43, v70 ; v70 = -2 +;; @0087 brif v43, block5(v71), block4 ;; ;; block4 cold: -;; v73 = iconst.i32 0 -;; v69 = iconst.i64 2 -;; @0087 v50 = call fn0(v0, v73, v69) ; v73 = 0, v69 = 2 -;; @0087 jump block5(v50) +;; v72 = iconst.i32 0 +;; v68 = iconst.i64 2 +;; @0087 v49 = call fn0(v0, v72, v68) ; v72 = 0, v68 = 2 +;; @0087 jump block5(v49) ;; -;; block5(v47: i64): -;; @0087 v51 = load.i64 user7 aligned readonly v47+8 -;; @0087 v52 = load.i64 notrap aligned readonly v47+24 -;; @0087 v53 = call_indirect sig0, v51(v52, v0, v2, v3, v4, v5) +;; block5(v46: i64): +;; @0087 v50 = load.i64 user7 aligned readonly v46+8 +;; @0087 v51 = load.i64 notrap aligned readonly v46+24 +;; @0087 v52 = call_indirect sig0, v50(v51, v0, v2, v3, v4, v5) ;; @0091 jump block1 ;; ;; block1: -;; @008c v55 = iadd.i32 v53, v27 -;; @0091 return v55 +;; @008c v54 = iadd.i32 v52, v26 +;; @0091 return v54 ;; } ;; ;; function u0:3(i64 vmctx, i64, i32, i32, i32, i32) -> i32 tail { @@ -252,17 +252,17 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i32, v3: i32, v4: i32, v5: i32): -;; @009e v8 = load.i64 notrap aligned region2 v0+64 -;; @00a0 v9 = load.i64 user16 aligned readonly v8+8 -;; @00a0 v10 = load.i64 notrap aligned readonly v8+24 -;; @00a0 v11 = call_indirect sig0, v9(v10, v0, v2, v3, v4, v5) -;; @00af v13 = load.i64 notrap aligned region3 v0+80 -;; @00b1 v14 = load.i64 user16 aligned readonly v13+8 -;; @00b1 v15 = load.i64 notrap aligned readonly v13+24 -;; @00b1 v16 = call_indirect sig0, v14(v15, v0, v2, v3, v4, v5) +;; @009e v7 = load.i64 notrap aligned region2 v0+64 +;; @00a0 v8 = load.i64 user16 aligned readonly v7+8 +;; @00a0 v9 = load.i64 notrap aligned readonly v7+24 +;; @00a0 v10 = call_indirect sig0, v8(v9, v0, v2, v3, v4, v5) +;; @00af v12 = load.i64 notrap aligned region3 v0+80 +;; @00b1 v13 = load.i64 user16 aligned readonly v12+8 +;; @00b1 v14 = load.i64 notrap aligned readonly v12+24 +;; @00b1 v15 = call_indirect sig0, v13(v14, v0, v2, v3, v4, v5) ;; @00ba jump block1 ;; ;; block1: -;; @00b5 v17 = iadd.i32 v16, v11 -;; @00ba return v17 +;; @00b5 v16 = iadd.i32 v15, v10 +;; @00ba return v16 ;; } diff --git a/tests/disas/unreachable_code.wat b/tests/disas/unreachable_code.wat index 8c7f45a542dd..c674d76ce099 100644 --- a/tests/disas/unreachable_code.wat +++ b/tests/disas/unreachable_code.wat @@ -114,8 +114,8 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64): -;; @0061 v4 = iconst.i32 1 -;; @0063 brif v4, block6, block13 ; v4 = 1 +;; @0061 v2 = iconst.i32 1 +;; @0063 brif v2, block6, block13 ; v2 = 1 ;; ;; block6: ;; @006a jump block9 @@ -148,7 +148,7 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64): -;; @0095 v4 = iconst.i32 1 +;; @0095 v2 = iconst.i32 1 ;; @0097 jump block2 ;; ;; block2: diff --git a/tests/disas/x64-simd-round-without-sse41.wat b/tests/disas/x64-simd-round-without-sse41.wat index 060ab9fa12d5..d17e34f458f4 100644 --- a/tests/disas/x64-simd-round-without-sse41.wat +++ b/tests/disas/x64-simd-round-without-sse41.wat @@ -23,25 +23,25 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i8x16): -;; @0023 v4 = bitcast.f32x4 little v2 -;; @0023 v5 = vconst.f32x4 const0 -;; @0023 v6 = extractlane v4, 0 -;; @0023 v7 = call fn0(v0, v6) -;; @0023 v8 = insertlane v5, v7, 0 ; v5 = const0 -;; @0023 v9 = extractlane v4, 1 -;; @0023 v10 = call fn0(v0, v9) -;; @0023 v11 = insertlane v8, v10, 1 -;; @0023 v12 = extractlane v4, 2 -;; @0023 v13 = call fn0(v0, v12) -;; @0023 v14 = insertlane v11, v13, 2 -;; @0023 v15 = extractlane v4, 3 -;; @0023 v16 = call fn0(v0, v15) -;; @0023 v17 = insertlane v14, v16, 3 -;; @0025 v18 = bitcast.i8x16 little v17 +;; @0023 v3 = bitcast.f32x4 little v2 +;; @0023 v4 = vconst.f32x4 const0 +;; @0023 v5 = extractlane v3, 0 +;; @0023 v6 = call fn0(v0, v5) +;; @0023 v7 = insertlane v4, v6, 0 ; v4 = const0 +;; @0023 v8 = extractlane v3, 1 +;; @0023 v9 = call fn0(v0, v8) +;; @0023 v10 = insertlane v7, v9, 1 +;; @0023 v11 = extractlane v3, 2 +;; @0023 v12 = call fn0(v0, v11) +;; @0023 v13 = insertlane v10, v12, 2 +;; @0023 v14 = extractlane v3, 3 +;; @0023 v15 = call fn0(v0, v14) +;; @0023 v16 = insertlane v13, v15, 3 +;; @0025 v17 = bitcast.i8x16 little v16 ;; @0025 jump block1 ;; ;; block1: -;; @0025 return v18 +;; @0025 return v17 ;; } ;; ;; function u0:1(i64 vmctx, i64, i8x16) -> i8x16 tail { @@ -56,25 +56,25 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i8x16): -;; @002a v4 = bitcast.f32x4 little v2 -;; @002a v5 = vconst.f32x4 const0 -;; @002a v6 = extractlane v4, 0 -;; @002a v7 = call fn0(v0, v6) -;; @002a v8 = insertlane v5, v7, 0 ; v5 = const0 -;; @002a v9 = extractlane v4, 1 -;; @002a v10 = call fn0(v0, v9) -;; @002a v11 = insertlane v8, v10, 1 -;; @002a v12 = extractlane v4, 2 -;; @002a v13 = call fn0(v0, v12) -;; @002a v14 = insertlane v11, v13, 2 -;; @002a v15 = extractlane v4, 3 -;; @002a v16 = call fn0(v0, v15) -;; @002a v17 = insertlane v14, v16, 3 -;; @002c v18 = bitcast.i8x16 little v17 +;; @002a v3 = bitcast.f32x4 little v2 +;; @002a v4 = vconst.f32x4 const0 +;; @002a v5 = extractlane v3, 0 +;; @002a v6 = call fn0(v0, v5) +;; @002a v7 = insertlane v4, v6, 0 ; v4 = const0 +;; @002a v8 = extractlane v3, 1 +;; @002a v9 = call fn0(v0, v8) +;; @002a v10 = insertlane v7, v9, 1 +;; @002a v11 = extractlane v3, 2 +;; @002a v12 = call fn0(v0, v11) +;; @002a v13 = insertlane v10, v12, 2 +;; @002a v14 = extractlane v3, 3 +;; @002a v15 = call fn0(v0, v14) +;; @002a v16 = insertlane v13, v15, 3 +;; @002c v17 = bitcast.i8x16 little v16 ;; @002c jump block1 ;; ;; block1: -;; @002c return v18 +;; @002c return v17 ;; } ;; ;; function u0:2(i64 vmctx, i64, i8x16) -> i8x16 tail { @@ -89,25 +89,25 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i8x16): -;; @0031 v4 = bitcast.f32x4 little v2 -;; @0031 v5 = vconst.f32x4 const0 -;; @0031 v6 = extractlane v4, 0 -;; @0031 v7 = call fn0(v0, v6) -;; @0031 v8 = insertlane v5, v7, 0 ; v5 = const0 -;; @0031 v9 = extractlane v4, 1 -;; @0031 v10 = call fn0(v0, v9) -;; @0031 v11 = insertlane v8, v10, 1 -;; @0031 v12 = extractlane v4, 2 -;; @0031 v13 = call fn0(v0, v12) -;; @0031 v14 = insertlane v11, v13, 2 -;; @0031 v15 = extractlane v4, 3 -;; @0031 v16 = call fn0(v0, v15) -;; @0031 v17 = insertlane v14, v16, 3 -;; @0033 v18 = bitcast.i8x16 little v17 +;; @0031 v3 = bitcast.f32x4 little v2 +;; @0031 v4 = vconst.f32x4 const0 +;; @0031 v5 = extractlane v3, 0 +;; @0031 v6 = call fn0(v0, v5) +;; @0031 v7 = insertlane v4, v6, 0 ; v4 = const0 +;; @0031 v8 = extractlane v3, 1 +;; @0031 v9 = call fn0(v0, v8) +;; @0031 v10 = insertlane v7, v9, 1 +;; @0031 v11 = extractlane v3, 2 +;; @0031 v12 = call fn0(v0, v11) +;; @0031 v13 = insertlane v10, v12, 2 +;; @0031 v14 = extractlane v3, 3 +;; @0031 v15 = call fn0(v0, v14) +;; @0031 v16 = insertlane v13, v15, 3 +;; @0033 v17 = bitcast.i8x16 little v16 ;; @0033 jump block1 ;; ;; block1: -;; @0033 return v18 +;; @0033 return v17 ;; } ;; ;; function u0:3(i64 vmctx, i64, i8x16) -> i8x16 tail { @@ -122,25 +122,25 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i8x16): -;; @0038 v4 = bitcast.f32x4 little v2 -;; @0038 v5 = vconst.f32x4 const0 -;; @0038 v6 = extractlane v4, 0 -;; @0038 v7 = call fn0(v0, v6) -;; @0038 v8 = insertlane v5, v7, 0 ; v5 = const0 -;; @0038 v9 = extractlane v4, 1 -;; @0038 v10 = call fn0(v0, v9) -;; @0038 v11 = insertlane v8, v10, 1 -;; @0038 v12 = extractlane v4, 2 -;; @0038 v13 = call fn0(v0, v12) -;; @0038 v14 = insertlane v11, v13, 2 -;; @0038 v15 = extractlane v4, 3 -;; @0038 v16 = call fn0(v0, v15) -;; @0038 v17 = insertlane v14, v16, 3 -;; @003a v18 = bitcast.i8x16 little v17 +;; @0038 v3 = bitcast.f32x4 little v2 +;; @0038 v4 = vconst.f32x4 const0 +;; @0038 v5 = extractlane v3, 0 +;; @0038 v6 = call fn0(v0, v5) +;; @0038 v7 = insertlane v4, v6, 0 ; v4 = const0 +;; @0038 v8 = extractlane v3, 1 +;; @0038 v9 = call fn0(v0, v8) +;; @0038 v10 = insertlane v7, v9, 1 +;; @0038 v11 = extractlane v3, 2 +;; @0038 v12 = call fn0(v0, v11) +;; @0038 v13 = insertlane v10, v12, 2 +;; @0038 v14 = extractlane v3, 3 +;; @0038 v15 = call fn0(v0, v14) +;; @0038 v16 = insertlane v13, v15, 3 +;; @003a v17 = bitcast.i8x16 little v16 ;; @003a jump block1 ;; ;; block1: -;; @003a return v18 +;; @003a return v17 ;; } ;; ;; function u0:4(i64 vmctx, i64, i8x16) -> i8x16 tail { @@ -155,19 +155,19 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i8x16): -;; @003f v4 = bitcast.f64x2 little v2 -;; @003f v5 = vconst.f64x2 const0 -;; @003f v6 = extractlane v4, 0 -;; @003f v7 = call fn0(v0, v6) -;; @003f v8 = insertlane v5, v7, 0 ; v5 = const0 -;; @003f v9 = extractlane v4, 1 -;; @003f v10 = call fn0(v0, v9) -;; @003f v11 = insertlane v8, v10, 1 -;; @0041 v12 = bitcast.i8x16 little v11 +;; @003f v3 = bitcast.f64x2 little v2 +;; @003f v4 = vconst.f64x2 const0 +;; @003f v5 = extractlane v3, 0 +;; @003f v6 = call fn0(v0, v5) +;; @003f v7 = insertlane v4, v6, 0 ; v4 = const0 +;; @003f v8 = extractlane v3, 1 +;; @003f v9 = call fn0(v0, v8) +;; @003f v10 = insertlane v7, v9, 1 +;; @0041 v11 = bitcast.i8x16 little v10 ;; @0041 jump block1 ;; ;; block1: -;; @0041 return v12 +;; @0041 return v11 ;; } ;; ;; function u0:5(i64 vmctx, i64, i8x16) -> i8x16 tail { @@ -182,19 +182,19 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i8x16): -;; @0046 v4 = bitcast.f64x2 little v2 -;; @0046 v5 = vconst.f64x2 const0 -;; @0046 v6 = extractlane v4, 0 -;; @0046 v7 = call fn0(v0, v6) -;; @0046 v8 = insertlane v5, v7, 0 ; v5 = const0 -;; @0046 v9 = extractlane v4, 1 -;; @0046 v10 = call fn0(v0, v9) -;; @0046 v11 = insertlane v8, v10, 1 -;; @0048 v12 = bitcast.i8x16 little v11 +;; @0046 v3 = bitcast.f64x2 little v2 +;; @0046 v4 = vconst.f64x2 const0 +;; @0046 v5 = extractlane v3, 0 +;; @0046 v6 = call fn0(v0, v5) +;; @0046 v7 = insertlane v4, v6, 0 ; v4 = const0 +;; @0046 v8 = extractlane v3, 1 +;; @0046 v9 = call fn0(v0, v8) +;; @0046 v10 = insertlane v7, v9, 1 +;; @0048 v11 = bitcast.i8x16 little v10 ;; @0048 jump block1 ;; ;; block1: -;; @0048 return v12 +;; @0048 return v11 ;; } ;; ;; function u0:6(i64 vmctx, i64, i8x16) -> i8x16 tail { @@ -209,19 +209,19 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i8x16): -;; @004d v4 = bitcast.f64x2 little v2 -;; @004d v5 = vconst.f64x2 const0 -;; @004d v6 = extractlane v4, 0 -;; @004d v7 = call fn0(v0, v6) -;; @004d v8 = insertlane v5, v7, 0 ; v5 = const0 -;; @004d v9 = extractlane v4, 1 -;; @004d v10 = call fn0(v0, v9) -;; @004d v11 = insertlane v8, v10, 1 -;; @004f v12 = bitcast.i8x16 little v11 +;; @004d v3 = bitcast.f64x2 little v2 +;; @004d v4 = vconst.f64x2 const0 +;; @004d v5 = extractlane v3, 0 +;; @004d v6 = call fn0(v0, v5) +;; @004d v7 = insertlane v4, v6, 0 ; v4 = const0 +;; @004d v8 = extractlane v3, 1 +;; @004d v9 = call fn0(v0, v8) +;; @004d v10 = insertlane v7, v9, 1 +;; @004f v11 = bitcast.i8x16 little v10 ;; @004f jump block1 ;; ;; block1: -;; @004f return v12 +;; @004f return v11 ;; } ;; ;; function u0:7(i64 vmctx, i64, i8x16) -> i8x16 tail { @@ -236,19 +236,19 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i8x16): -;; @0054 v4 = bitcast.f64x2 little v2 -;; @0054 v5 = vconst.f64x2 const0 -;; @0054 v6 = extractlane v4, 0 -;; @0054 v7 = call fn0(v0, v6) -;; @0054 v8 = insertlane v5, v7, 0 ; v5 = const0 -;; @0054 v9 = extractlane v4, 1 -;; @0054 v10 = call fn0(v0, v9) -;; @0054 v11 = insertlane v8, v10, 1 -;; @0057 v12 = bitcast.i8x16 little v11 +;; @0054 v3 = bitcast.f64x2 little v2 +;; @0054 v4 = vconst.f64x2 const0 +;; @0054 v5 = extractlane v3, 0 +;; @0054 v6 = call fn0(v0, v5) +;; @0054 v7 = insertlane v4, v6, 0 ; v4 = const0 +;; @0054 v8 = extractlane v3, 1 +;; @0054 v9 = call fn0(v0, v8) +;; @0054 v10 = insertlane v7, v9, 1 +;; @0057 v11 = bitcast.i8x16 little v10 ;; @0057 jump block1 ;; ;; block1: -;; @0057 return v12 +;; @0057 return v11 ;; } ;; ;; function u0:8(i64 vmctx, i64, i8x16) -> i8x16 tail { @@ -261,17 +261,17 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i8x16): -;; @005c v4 = bitcast.f64x2 little v2 -;; @005c v5 = extractlane v4, 0 -;; @005c v6 = extractlane v4, 1 +;; @005c v3 = bitcast.f64x2 little v2 +;; @005c v4 = extractlane v3, 0 +;; @005c v5 = extractlane v3, 1 +;; @005c v6 = fcvt_to_uint_sat.i32 v4 ;; @005c v7 = fcvt_to_uint_sat.i32 v5 -;; @005c v8 = fcvt_to_uint_sat.i32 v6 -;; @005c v9 = vconst.i32x4 const0 -;; @005c v10 = insertlane v9, v7, 0 ; v9 = const0 -;; @005c v11 = insertlane v10, v8, 1 -;; @005f v12 = bitcast.i8x16 little v11 +;; @005c v8 = vconst.i32x4 const0 +;; @005c v9 = insertlane v8, v6, 0 ; v8 = const0 +;; @005c v10 = insertlane v9, v7, 1 +;; @005f v11 = bitcast.i8x16 little v10 ;; @005f jump block1 ;; ;; block1: -;; @005f return v12 +;; @005f return v11 ;; } diff --git a/tests/disas/x64-simd-test-and-branch.wat b/tests/disas/x64-simd-test-and-branch.wat index 533ec98927f2..b88c218ea5d4 100644 --- a/tests/disas/x64-simd-test-and-branch.wat +++ b/tests/disas/x64-simd-test-and-branch.wat @@ -56,8 +56,8 @@ ;; wasm[0]::function[0]::i8x16.all_true: ;; pushq %rbp ;; movq %rsp, %rbp -;; pxor %xmm7, %xmm7 -;; pcmpeqb %xmm7, %xmm0 +;; pxor %xmm6, %xmm6 +;; pcmpeqb %xmm6, %xmm0 ;; ptest %xmm0, %xmm0 ;; je 0x21 ;; 17: movl $0xc8, %eax @@ -70,8 +70,8 @@ ;; wasm[0]::function[1]::i16x8.all_true: ;; pushq %rbp ;; movq %rsp, %rbp -;; pxor %xmm7, %xmm7 -;; pcmpeqw %xmm7, %xmm0 +;; pxor %xmm6, %xmm6 +;; pcmpeqw %xmm6, %xmm0 ;; ptest %xmm0, %xmm0 ;; je 0x61 ;; 57: movl $0xc8, %eax @@ -84,8 +84,8 @@ ;; wasm[0]::function[2]::i32x4.all_true: ;; pushq %rbp ;; movq %rsp, %rbp -;; pxor %xmm7, %xmm7 -;; pcmpeqd %xmm7, %xmm0 +;; pxor %xmm6, %xmm6 +;; pcmpeqd %xmm6, %xmm0 ;; ptest %xmm0, %xmm0 ;; je 0xa1 ;; 97: movl $0xc8, %eax @@ -98,8 +98,8 @@ ;; wasm[0]::function[3]::i64x2.all_true: ;; pushq %rbp ;; movq %rsp, %rbp -;; pxor %xmm7, %xmm7 -;; pcmpeqq %xmm7, %xmm0 +;; pxor %xmm6, %xmm6 +;; pcmpeqq %xmm6, %xmm0 ;; ptest %xmm0, %xmm0 ;; je 0xe2 ;; d8: movl $0xc8, %eax