diff --git a/cranelift/codegen/meta/src/shared/formats.rs b/cranelift/codegen/meta/src/shared/formats.rs index c7c70bcf23..b44ecb83e2 100644 --- a/cranelift/codegen/meta/src/shared/formats.rs +++ b/cranelift/codegen/meta/src/shared/formats.rs @@ -8,9 +8,8 @@ pub(crate) struct Formats { pub(crate) binary: Rc, pub(crate) binary_imm8: Rc, pub(crate) binary_imm64: Rc, - pub(crate) brif: Rc, - pub(crate) branch: Rc, pub(crate) branch_table: Rc, + pub(crate) brif: Rc, pub(crate) call: Rc, pub(crate) call_indirect: Rc, pub(crate) cond_trap: Rc, @@ -114,8 +113,6 @@ impl Formats { jump: Builder::new("Jump").block().build(), - branch: Builder::new("Branch").value().block().build(), - brif: Builder::new("Brif").value().block().block().build(), branch_table: Builder::new("BranchTable") diff --git a/cranelift/codegen/meta/src/shared/instructions.rs b/cranelift/codegen/meta/src/shared/instructions.rs index a96f84861f..cdba18eb43 100755 --- a/cranelift/codegen/meta/src/shared/instructions.rs +++ b/cranelift/codegen/meta/src/shared/instructions.rs @@ -65,38 +65,6 @@ fn define_control_flow( ); } - { - let c = &Operand::new("c", ScalarTruthy).with_doc("Controlling value to test"); - - ig.push( - Inst::new( - "brz", - r#" - Branch when zero. - - Take the branch when ``c = 0``. - "#, - &formats.branch, - ) - .operands_in(vec![c, block_call]) - .is_branch(true), - ); - - ig.push( - Inst::new( - "brnz", - r#" - Branch when non-zero. - - Take the branch when ``c != 0``. - "#, - &formats.branch, - ) - .operands_in(vec![c, block_call]) - .is_branch(true), - ); - } - { let _i32 = &TypeVar::new( "i32", diff --git a/cranelift/codegen/src/cfg_printer.rs b/cranelift/codegen/src/cfg_printer.rs index 843b66f277..7b906d19e7 100644 --- a/cranelift/codegen/src/cfg_printer.rs +++ b/cranelift/codegen/src/cfg_printer.rs @@ -53,7 +53,7 @@ impl<'a> CFGPrinter<'a> { write!(w, " {} [shape=record, label=\"{{", block)?; crate::write::write_block_header(w, self.func, block, 4)?; // Add all outgoing branch instructions to the label. - for inst in self.func.layout.block_likely_branches(block) { + if let Some(inst) = self.func.layout.last_inst(block) { write!(w, " | <{}>", inst)?; PlainWriter.write_instruction(w, self.func, &aliases, inst, 0)?; } diff --git a/cranelift/codegen/src/context.rs b/cranelift/codegen/src/context.rs index 4da6cbe04a..62154558d0 100644 --- a/cranelift/codegen/src/context.rs +++ b/cranelift/codegen/src/context.rs @@ -285,7 +285,7 @@ impl Context { /// Perform pre-legalization rewrites on the function. pub fn preopt(&mut self, isa: &dyn TargetIsa) -> CodegenResult<()> { - do_preopt(&mut self.func, &mut self.cfg, isa); + do_preopt(&mut self.func, isa); self.verify_if(isa)?; Ok(()) } diff --git a/cranelift/codegen/src/dominator_tree.rs b/cranelift/codegen/src/dominator_tree.rs index 9c2e6e3627..0df5951075 100644 --- a/cranelift/codegen/src/dominator_tree.rs +++ b/cranelift/codegen/src/dominator_tree.rs @@ -351,7 +351,7 @@ impl DominatorTree { /// post-order. Split-invariant means that if a block is split in two, we get the same /// post-order except for the insertion of the new block header at the split point. fn push_successors(&mut self, func: &Function, block: Block) { - for inst in func.layout.block_likely_branches(block) { + if let Some(inst) = func.layout.last_inst(block) { match func.dfg.analyze_branch(inst) { BranchInfo::SingleDest(succ) => { self.push_if_unseen(succ.block(&func.dfg.value_lists)) @@ -653,11 +653,14 @@ mod tests { let v0 = func.dfg.append_block_param(block0, I32); let block1 = func.dfg.make_block(); let block2 = func.dfg.make_block(); + let trap_block = func.dfg.make_block(); let mut cur = FuncCursor::new(&mut func); cur.insert_block(block0); - cur.ins().brnz(v0, block2, &[]); + cur.ins().brif(v0, block2, &[], trap_block, &[]); + + cur.insert_block(trap_block); cur.ins().trap(TrapCode::User(0)); cur.insert_block(block1); @@ -674,13 +677,13 @@ mod tests { // Fall-through-first, prune-at-source DFT: // // block0 { - // brnz block2 { + // brif block2 { // trap // block2 { // return // } block2 // } block0 - assert_eq!(dt.cfg_postorder(), &[block2, block0]); + assert_eq!(dt.cfg_postorder(), &[trap_block, block2, block0]); let v2_def = cur.func.dfg.value_def(v2).unwrap_inst(); assert!(!dt.dominates(v2_def, block0, &cur.func.layout)); @@ -714,8 +717,7 @@ mod tests { let jmp_block3_block1 = cur.ins().jump(block1, &[]); cur.insert_block(block1); - let br_block1_block0 = cur.ins().brnz(cond, block0, &[]); - let jmp_block1_block2 = cur.ins().jump(block2, &[]); + let br_block1_block0_block2 = cur.ins().brif(cond, block0, &[], block2, &[]); cur.insert_block(block2); cur.ins().jump(block0, &[]); @@ -730,7 +732,7 @@ mod tests { // block3 { // block3:jump block1 { // block1 { - // block1:brnz block0 { + // block1:brif block0 { // block1:jump block2 { // block2 { // block2:jump block0 (seen) @@ -738,7 +740,7 @@ mod tests { // } block1:jump block2 // block0 { // } block0 - // } block1:brnz block0 + // } block1:brif block0 // } block1 // } block3:jump block1 // } block3 @@ -748,12 +750,16 @@ mod tests { assert_eq!(cur.func.layout.entry_block().unwrap(), block3); assert_eq!(dt.idom(block3), None); assert_eq!(dt.idom(block1).unwrap(), jmp_block3_block1); - assert_eq!(dt.idom(block2).unwrap(), jmp_block1_block2); - assert_eq!(dt.idom(block0).unwrap(), br_block1_block0); + assert_eq!(dt.idom(block2).unwrap(), br_block1_block0_block2); + assert_eq!(dt.idom(block0).unwrap(), br_block1_block0_block2); - assert!(dt.dominates(br_block1_block0, br_block1_block0, &cur.func.layout)); - assert!(!dt.dominates(br_block1_block0, jmp_block3_block1, &cur.func.layout)); - assert!(dt.dominates(jmp_block3_block1, br_block1_block0, &cur.func.layout)); + assert!(dt.dominates( + br_block1_block0_block2, + br_block1_block0_block2, + &cur.func.layout + )); + assert!(!dt.dominates(br_block1_block0_block2, jmp_block3_block1, &cur.func.layout)); + assert!(dt.dominates(jmp_block3_block1, br_block1_block0_block2, &cur.func.layout)); assert_eq!( dt.rpo_cmp(block3, block3, &cur.func.layout), @@ -765,7 +771,7 @@ mod tests { Ordering::Less ); assert_eq!( - dt.rpo_cmp(jmp_block3_block1, jmp_block1_block2, &cur.func.layout), + dt.rpo_cmp(jmp_block3_block1, br_block1_block0_block2, &cur.func.layout), Ordering::Less ); } diff --git a/cranelift/codegen/src/egraph/elaborate.rs b/cranelift/codegen/src/egraph/elaborate.rs index 4d308b5f2e..68f4238cfb 100644 --- a/cranelift/codegen/src/egraph/elaborate.rs +++ b/cranelift/codegen/src/egraph/elaborate.rs @@ -465,11 +465,7 @@ impl<'a> Elaborator<'a> { )); // Determine the instruction at which we // insert in `data.hoist_block`. - let before = self - .func - .layout - .canonical_branch_inst(&self.func.dfg, data.hoist_block) - .unwrap(); + let before = self.func.layout.last_inst(data.hoist_block).unwrap(); (data.scope_depth as usize, before, data.hoist_block) }; diff --git a/cranelift/codegen/src/flowgraph.rs b/cranelift/codegen/src/flowgraph.rs index 1c6c4fc563..ead9cba2f3 100644 --- a/cranelift/codegen/src/flowgraph.rs +++ b/cranelift/codegen/src/flowgraph.rs @@ -11,17 +11,14 @@ //! //! ... //! -//! brz vx, Block1 ; end of basic block +//! brif vx, Block1, Block2 ; end of basic block //! -//! ... ; beginning of basic block -//! -//! ... -//! -//! jmp Block2 ; end of basic block +//! Block1: +//! jump block3 //! ``` //! -//! Here `Block1` and `Block2` would each have a single predecessor denoted as `(Block0, brz)` -//! and `(Block0, jmp Block2)` respectively. +//! Here `Block1` and `Block2` would each have a single predecessor denoted as `(Block0, brif)`, +//! while `Block3` would have a single predecessor denoted as `(Block1, jump block3)`. use crate::bforest; use crate::entity::SecondaryMap; @@ -120,7 +117,7 @@ impl ControlFlowGraph { } fn compute_block(&mut self, func: &Function, block: Block) { - for inst in func.layout.block_likely_branches(block) { + if let Some(inst) = func.layout.last_inst(block) { match func.dfg.analyze_branch(inst) { BranchInfo::SingleDest(dest) => { self.add_edge(block, inst, dest.block(&func.dfg.value_lists)); @@ -253,21 +250,17 @@ mod tests { let block1 = func.dfg.make_block(); let block2 = func.dfg.make_block(); - let br_block0_block2; - let br_block1_block1; - let jmp_block0_block1; - let jmp_block1_block2; + let br_block0_block2_block1; + let br_block1_block1_block2; { let mut cur = FuncCursor::new(&mut func); cur.insert_block(block0); - br_block0_block2 = cur.ins().brnz(cond, block2, &[]); - jmp_block0_block1 = cur.ins().jump(block1, &[]); + br_block0_block2_block1 = cur.ins().brif(cond, block2, &[], block1, &[]); cur.insert_block(block1); - br_block1_block1 = cur.ins().brnz(cond, block1, &[]); - jmp_block1_block2 = cur.ins().jump(block2, &[]); + br_block1_block1_block2 = cur.ins().brif(cond, block1, &[], block2, &[]); cur.insert_block(block2); } @@ -288,19 +281,23 @@ mod tests { assert_eq!(block2_predecessors.len(), 2); assert_eq!( - block1_predecessors.contains(&BlockPredecessor::new(block0, jmp_block0_block1)), + block1_predecessors + .contains(&BlockPredecessor::new(block0, br_block0_block2_block1)), true ); assert_eq!( - block1_predecessors.contains(&BlockPredecessor::new(block1, br_block1_block1)), + block1_predecessors + .contains(&BlockPredecessor::new(block1, br_block1_block1_block2)), true ); assert_eq!( - block2_predecessors.contains(&BlockPredecessor::new(block0, br_block0_block2)), + block2_predecessors + .contains(&BlockPredecessor::new(block0, br_block0_block2_block1)), true ); assert_eq!( - block2_predecessors.contains(&BlockPredecessor::new(block1, jmp_block1_block2)), + block2_predecessors + .contains(&BlockPredecessor::new(block1, br_block1_block1_block2)), true ); @@ -309,11 +306,22 @@ mod tests { assert_eq!(block2_successors, []); } - // Change some instructions and recompute block0 - func.dfg.replace(br_block0_block2).brnz(cond, block1, &[]); - func.dfg.replace(jmp_block0_block1).return_(&[]); + // Add a new block to hold a return instruction + let ret_block = func.dfg.make_block(); + + { + let mut cur = FuncCursor::new(&mut func); + cur.insert_block(ret_block); + cur.ins().return_(&[]); + } + + // Change some instructions and recompute block0 and ret_block + func.dfg + .replace(br_block0_block2_block1) + .brif(cond, block1, &[], ret_block, &[]); cfg.recompute_block(&mut func, block0); - let br_block0_block1 = br_block0_block2; + cfg.recompute_block(&mut func, ret_block); + let br_block0_block1_ret_block = br_block0_block2_block1; { let block0_predecessors = cfg.pred_iter(block0).collect::>(); @@ -329,23 +337,27 @@ mod tests { assert_eq!(block2_predecessors.len(), 1); assert_eq!( - block1_predecessors.contains(&BlockPredecessor::new(block0, br_block0_block1)), + block1_predecessors + .contains(&BlockPredecessor::new(block0, br_block0_block1_ret_block)), true ); assert_eq!( - block1_predecessors.contains(&BlockPredecessor::new(block1, br_block1_block1)), + block1_predecessors + .contains(&BlockPredecessor::new(block1, br_block1_block1_block2)), true ); assert_eq!( - block2_predecessors.contains(&BlockPredecessor::new(block0, br_block0_block2)), + block2_predecessors + .contains(&BlockPredecessor::new(block0, br_block0_block1_ret_block)), false ); assert_eq!( - block2_predecessors.contains(&BlockPredecessor::new(block1, jmp_block1_block2)), + block2_predecessors + .contains(&BlockPredecessor::new(block1, br_block1_block1_block2)), true ); - assert_eq!(block0_successors.collect::>(), [block1]); + assert_eq!(block0_successors.collect::>(), [block1, ret_block]); assert_eq!(block1_successors.collect::>(), [block1, block2]); assert_eq!(block2_successors.collect::>(), []); } diff --git a/cranelift/codegen/src/inst_predicates.rs b/cranelift/codegen/src/inst_predicates.rs index d18e4b80b4..eb8a53202b 100644 --- a/cranelift/codegen/src/inst_predicates.rs +++ b/cranelift/codegen/src/inst_predicates.rs @@ -175,7 +175,7 @@ pub(crate) fn visit_block_succs( block: Block, mut visit: F, ) { - for inst in f.layout.block_likely_branches(block) { + if let Some(inst) = f.layout.last_inst(block) { match f.dfg.insts[inst].analyze_branch() { BranchInfo::NotABranch => {} BranchInfo::SingleDest(dest) => { diff --git a/cranelift/codegen/src/ir/instructions.rs b/cranelift/codegen/src/ir/instructions.rs index e805aaca94..0edb2daf3f 100644 --- a/cranelift/codegen/src/ir/instructions.rs +++ b/cranelift/codegen/src/ir/instructions.rs @@ -270,7 +270,6 @@ impl InstructionData { pub fn analyze_branch(&self) -> BranchInfo { match *self { Self::Jump { destination, .. } => BranchInfo::SingleDest(destination), - Self::Branch { destination, .. } => BranchInfo::SingleDest(destination), Self::Brif { blocks: [block_then, block_else], .. @@ -292,9 +291,6 @@ impl InstructionData { match self { Self::Jump { ref destination, .. - } - | Self::Branch { - ref destination, .. } => std::slice::from_ref(destination), Self::Brif { blocks, .. } => blocks, Self::BranchTable { .. } => &[], @@ -313,10 +309,6 @@ impl InstructionData { Self::Jump { ref mut destination, .. - } - | Self::Branch { - ref mut destination, - .. } => std::slice::from_mut(destination), Self::Brif { blocks, .. } => blocks, Self::BranchTable { .. } => &mut [], diff --git a/cranelift/codegen/src/ir/layout.rs b/cranelift/codegen/src/ir/layout.rs index 866e3ff8a5..644665bab5 100644 --- a/cranelift/codegen/src/ir/layout.rs +++ b/cranelift/codegen/src/ir/layout.rs @@ -4,7 +4,6 @@ //! determined by the `Layout` data structure defined in this module. use crate::entity::SecondaryMap; -use crate::ir::dfg::DataFlowGraph; use crate::ir::progpoint::{ExpandedProgramPoint, ProgramOrder}; use crate::ir::{Block, Inst}; use crate::packed_option::PackedOption; @@ -594,19 +593,6 @@ impl Layout { self.insts[inst].prev.expand() } - /// Fetch the first instruction in a block's terminal branch group. - pub fn canonical_branch_inst(&self, dfg: &DataFlowGraph, block: Block) -> Option { - // Basic blocks permit at most two terminal branch instructions. - // If two, the former is conditional and the latter is unconditional. - let last = self.last_inst(block)?; - if let Some(prev) = self.prev_inst(last) { - if dfg.insts[prev].opcode().is_branch() { - return Some(prev); - } - } - Some(last) - } - /// Insert `inst` before the instruction `before` in the same block. pub fn insert_inst(&mut self, inst: Inst, before: Inst) { debug_assert_eq!(self.inst_block(inst), None); @@ -662,24 +648,6 @@ impl Layout { } } - /// Iterate over a limited set of instruction which are likely the branches of `block` in layout - /// order. Any instruction not visited by this iterator is not a branch, but an instruction visited by this may not be a branch. - pub fn block_likely_branches(&self, block: Block) -> Insts { - // Note: Checking whether an instruction is a branch or not while walking backward might add - // extra overhead. However, we know that the number of branches is limited to 2 at the end of - // each block, and therefore we can just iterate over the last 2 instructions. - let mut iter = self.block_insts(block); - let head = iter.head; - let tail = iter.tail; - iter.next_back(); - let head = iter.next_back().or(head); - Insts { - layout: self, - head, - tail, - } - } - /// Split the block containing `before` in two. /// /// Insert `new_block` after the old block and move `before` and the following instructions to diff --git a/cranelift/codegen/src/isa/aarch64/inst/unwind/systemv.rs b/cranelift/codegen/src/isa/aarch64/inst/unwind/systemv.rs index 6ff9f10d3b..f3b69597f9 100644 --- a/cranelift/codegen/src/isa/aarch64/inst/unwind/systemv.rs +++ b/cranelift/codegen/src/isa/aarch64/inst/unwind/systemv.rs @@ -160,8 +160,7 @@ mod tests { let mut pos = FuncCursor::new(&mut func); pos.insert_block(block0); - pos.ins().brnz(v0, block2, &[]); - pos.ins().jump(block1, &[]); + pos.ins().brif(v0, block2, &[], block1, &[]); pos.insert_block(block1); pos.ins().return_(&[]); diff --git a/cranelift/codegen/src/isa/aarch64/lower.isle b/cranelift/codegen/src/isa/aarch64/lower.isle index 14b5c04044..1238f463aa 100644 --- a/cranelift/codegen/src/isa/aarch64/lower.isle +++ b/cranelift/codegen/src/isa/aarch64/lower.isle @@ -2507,93 +2507,6 @@ (with_flags_side_effect flags (cond_br taken not_taken (cond_br_not_zero rt)))))) -;;; Rules for `brz`/`brnz` ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - -;; `brz` following `icmp` -(rule (lower_branch (brz (maybe_uextend (icmp cc x @ (value_type ty) y)) _) targets) - (let ((comparison FlagsAndCC (lower_icmp_into_flags cc x y ty)) - ;; Negate the condition for `brz`. - (cond Cond (invert_cond (cond_code (flags_and_cc_cc comparison)))) - (taken BranchTarget (branch_target targets 0)) - (not_taken BranchTarget (branch_target targets 1))) - (emit_side_effect - (with_flags_side_effect (flags_and_cc_flags comparison) - (cond_br taken - not_taken - (cond_br_cond cond)))))) -;; `brnz` following `icmp` -(rule (lower_branch (brnz (maybe_uextend (icmp cc x @ (value_type ty) y)) _) targets) - (let ((comparison FlagsAndCC (lower_icmp_into_flags cc x y ty)) - (cond Cond (cond_code (flags_and_cc_cc comparison))) - (taken BranchTarget (branch_target targets 0)) - (not_taken BranchTarget (branch_target targets 1))) - (emit_side_effect - (with_flags_side_effect (flags_and_cc_flags comparison) - (cond_br taken - not_taken - (cond_br_cond cond)))))) -;; `brz` following `fcmp` -(rule (lower_branch (brz (maybe_uextend (fcmp cc x @ (value_type (ty_scalar_float ty)) y)) _) targets) - (let ((cond Cond (fp_cond_code cc)) - (cond Cond (invert_cond cond)) ;; negate for `brz` - (taken BranchTarget (branch_target targets 0)) - (not_taken BranchTarget (branch_target targets 1))) - (emit_side_effect - (with_flags_side_effect (fpu_cmp (scalar_size ty) x y) - (cond_br taken not_taken - (cond_br_cond cond)))))) -;; `brnz` following `fcmp` -(rule (lower_branch (brnz (maybe_uextend (fcmp cc x @ (value_type (ty_scalar_float ty)) y)) _) targets) - (let ((cond Cond (fp_cond_code cc)) - (taken BranchTarget (branch_target targets 0)) - (not_taken BranchTarget (branch_target targets 1))) - (emit_side_effect - (with_flags_side_effect (fpu_cmp (scalar_size ty) x y) - (cond_br taken not_taken - (cond_br_cond cond)))))) -;; standard `brz` -(rule -1 (lower_branch (brz c @ (value_type $I128) _) targets) - (let ((flags ProducesFlags (flags_to_producesflags c)) - (c ValueRegs (put_in_regs c)) - (c_lo Reg (value_regs_get c 0)) - (c_hi Reg (value_regs_get c 1)) - (rt Reg (orr $I64 c_lo c_hi)) - (taken BranchTarget (branch_target targets 0)) - (not_taken BranchTarget (branch_target targets 1))) - (emit_side_effect - (with_flags_side_effect flags - (cond_br taken not_taken (cond_br_zero rt)))))) -(rule -2 (lower_branch (brz c @ (value_type ty) _) targets) - (if (ty_int_ref_scalar_64 ty)) - (let ((flags ProducesFlags (flags_to_producesflags c)) - (rt Reg (put_in_reg_zext64 c)) - (taken BranchTarget (branch_target targets 0)) - (not_taken BranchTarget (branch_target targets 1))) - (emit_side_effect - (with_flags_side_effect flags - (cond_br taken not_taken (cond_br_zero rt)))))) -;; standard `brnz` -(rule -1 (lower_branch (brnz c @ (value_type $I128) _) targets) - (let ((flags ProducesFlags (flags_to_producesflags c)) - (c ValueRegs (put_in_regs c)) - (c_lo Reg (value_regs_get c 0)) - (c_hi Reg (value_regs_get c 1)) - (rt Reg (orr $I64 c_lo c_hi)) - (taken BranchTarget (branch_target targets 0)) - (not_taken BranchTarget (branch_target targets 1))) - (emit_side_effect - (with_flags_side_effect flags - (cond_br taken not_taken (cond_br_not_zero rt)))))) -(rule -2 (lower_branch (brnz c @ (value_type ty) _) targets) - (if (ty_int_ref_scalar_64 ty)) - (let ((flags ProducesFlags (flags_to_producesflags c)) - (rt Reg (put_in_reg_zext64 c)) - (taken BranchTarget (branch_target targets 0)) - (not_taken BranchTarget (branch_target targets 1))) - (emit_side_effect - (with_flags_side_effect flags - (cond_br taken not_taken (cond_br_not_zero rt)))))) - ;;; Rules for `jump` ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (rule (lower_branch (jump _) targets) diff --git a/cranelift/codegen/src/isa/aarch64/mod.rs b/cranelift/codegen/src/isa/aarch64/mod.rs index e1e1d4f9e9..d7a2630ae8 100644 --- a/cranelift/codegen/src/isa/aarch64/mod.rs +++ b/cranelift/codegen/src/isa/aarch64/mod.rs @@ -293,15 +293,12 @@ mod test { pos.insert_block(bb0); let v0 = pos.ins().iconst(I32, 0x1234); let v1 = pos.ins().iadd(arg0, v0); - pos.ins().brnz(v1, bb1, &[]); - pos.ins().jump(bb2, &[]); + pos.ins().brif(v1, bb1, &[], bb2, &[]); pos.insert_block(bb1); - pos.ins().brnz(v1, bb2, &[]); - pos.ins().jump(bb3, &[]); + pos.ins().brif(v1, bb2, &[], bb3, &[]); pos.insert_block(bb2); let v2 = pos.ins().iadd(v1, v0); - pos.ins().brnz(v2, bb2, &[]); - pos.ins().jump(bb1, &[]); + pos.ins().brif(v2, bb2, &[], bb1, &[]); pos.insert_block(bb3); let v3 = pos.ins().isub(v1, v0); pos.ins().return_(&[v3]); diff --git a/cranelift/codegen/src/isa/riscv64/inst.isle b/cranelift/codegen/src/isa/riscv64/inst.isle index 40169ffbb9..cf7ce9570d 100644 --- a/cranelift/codegen/src/isa/riscv64/inst.isle +++ b/cranelift/codegen/src/isa/riscv64/inst.isle @@ -1868,8 +1868,8 @@ (decl int_zero_reg (Type) ValueRegs) (extern constructor int_zero_reg int_zero_reg) -(decl lower_brz_or_nz (IntCC ValueRegs VecMachLabel Type) Unit) -(extern constructor lower_brz_or_nz lower_brz_or_nz) +(decl lower_cond_br (IntCC ValueRegs VecMachLabel Type) Unit) +(extern constructor lower_cond_br lower_cond_br) ;; Normalize a value for comparision. ;; @@ -1901,14 +1901,14 @@ ;; Default behavior for branching based on an input value. (rule (lower_branch (brif v @ (value_type ty) _ _) targets) - (lower_brz_or_nz (IntCC.NotEqual) (normalize_cmp_value ty v) targets ty)) + (lower_cond_br (IntCC.NotEqual) (normalize_cmp_value ty v) targets ty)) ;; Special case for SI128 to reify the comparison value and branch on it. (rule 2 (lower_branch (brif v @ (value_type $I128) _ _) targets) (let ((zero ValueRegs (value_regs (zero_reg) (zero_reg))) (cmp Reg (gen_icmp (IntCC.NotEqual) v zero $I128))) - (lower_brz_or_nz (IntCC.NotEqual) cmp targets $I64))) + (lower_cond_br (IntCC.NotEqual) cmp targets $I64))) ;; Branching on the result of an icmp (rule 1 @@ -1930,66 +1930,6 @@ (else BranchTarget (label_to_br_target (vec_label_get targets 1)))) (emit_side_effect (cond_br (emit_fcmp cc ty a b) then else)))) -;;;;; -(rule - (lower_branch (brz v @ (value_type ty) _) targets) - (lower_brz_or_nz (IntCC.Equal) (normalize_cmp_value ty v) targets ty)) - -;; Special case for SI128 to reify the comparison value and branch on it. -(rule 2 - (lower_branch (brz v @ (value_type $I128) _) targets) - (let ((zero ValueRegs (value_regs (zero_reg) (zero_reg))) - (cmp Reg (gen_icmp (IntCC.Equal) v zero $I128))) - (lower_brz_or_nz (IntCC.NotEqual) cmp targets $I64))) - -(rule 1 - (lower_branch (brz (maybe_uextend (icmp cc a @ (value_type ty) b)) _) targets) - (lower_br_icmp (intcc_inverse cc) a b targets ty)) - -(rule 1 - (lower_branch (brz (maybe_uextend (fcmp cc a @ (value_type ty) b)) _) targets) - (if-let $true (floatcc_unordered cc)) - (let ((then BranchTarget (label_to_br_target (vec_label_get targets 0))) - (else BranchTarget (label_to_br_target (vec_label_get targets 1)))) - (emit_side_effect (cond_br (emit_fcmp (floatcc_inverse cc) ty a b) then else)))) - -(rule 1 - (lower_branch (brz (maybe_uextend (fcmp cc a @ (value_type ty) b)) _) targets) - (if-let $false (floatcc_unordered cc)) - (let ((then BranchTarget (label_to_br_target (vec_label_get targets 0))) - (else BranchTarget (label_to_br_target (vec_label_get targets 1)))) - (emit_side_effect (cond_br (emit_fcmp cc ty a b) else then)))) - -;;;; -(rule - (lower_branch (brnz v @ (value_type ty) _) targets) - (lower_brz_or_nz (IntCC.NotEqual) (normalize_cmp_value ty v) targets ty)) - -;; Special case for SI128 to reify the comparison value and branch on it. -(rule 2 - (lower_branch (brnz v @ (value_type $I128) _) targets) - (let ((zero ValueRegs (value_regs (zero_reg) (zero_reg))) - (cmp Reg (gen_icmp (IntCC.NotEqual) v zero $I128))) - (lower_brz_or_nz (IntCC.NotEqual) cmp targets $I64))) - -(rule 1 - (lower_branch (brnz (maybe_uextend (icmp cc a @ (value_type ty) b)) _) targets) - (lower_br_icmp cc a b targets ty)) - -(rule 1 - (lower_branch (brnz (maybe_uextend (fcmp cc a @ (value_type ty) b)) _) targets) - (if-let $true (floatcc_unordered cc)) - (let ((then BranchTarget (label_to_br_target (vec_label_get targets 0))) - (else BranchTarget (label_to_br_target (vec_label_get targets 1)))) - (emit_side_effect (cond_br (emit_fcmp (floatcc_inverse cc) ty a b) else then)))) - -(rule 1 - (lower_branch (brnz (maybe_uextend (fcmp cc a @ (value_type ty) b)) _) targets) - (if-let $false (floatcc_unordered cc)) - (let ((then BranchTarget (label_to_br_target (vec_label_get targets 0))) - (else BranchTarget (label_to_br_target (vec_label_get targets 1)))) - (emit_side_effect (cond_br (emit_fcmp cc ty a b) then else)))) - ;;; (decl lower_br_table (Reg VecMachLabel) Unit) (extern constructor lower_br_table lower_br_table) diff --git a/cranelift/codegen/src/isa/riscv64/inst/args.rs b/cranelift/codegen/src/isa/riscv64/inst/args.rs index 08791062ad..f4bd748d3a 100644 --- a/cranelift/codegen/src/isa/riscv64/inst/args.rs +++ b/cranelift/codegen/src/isa/riscv64/inst/args.rs @@ -118,7 +118,6 @@ impl Into for StackAMode { } /// risc-v always take two register to compare -/// brz can be compare with zero register which has the value 0 #[derive(Clone, Copy, Debug)] pub struct IntegerCompare { pub(crate) kind: IntCC, diff --git a/cranelift/codegen/src/isa/riscv64/inst/unwind/systemv.rs b/cranelift/codegen/src/isa/riscv64/inst/unwind/systemv.rs index 5e965df295..d62d8ba4af 100644 --- a/cranelift/codegen/src/isa/riscv64/inst/unwind/systemv.rs +++ b/cranelift/codegen/src/isa/riscv64/inst/unwind/systemv.rs @@ -159,8 +159,7 @@ mod tests { let mut pos = FuncCursor::new(&mut func); pos.insert_block(block0); - pos.ins().brnz(v0, block2, &[]); - pos.ins().jump(block1, &[]); + pos.ins().brif(v0, block2, &[], block1, &[]); pos.insert_block(block1); pos.ins().return_(&[]); diff --git a/cranelift/codegen/src/isa/riscv64/lower/isle.rs b/cranelift/codegen/src/isa/riscv64/lower/isle.rs index 125f005ae7..d0291e2191 100644 --- a/cranelift/codegen/src/isa/riscv64/lower/isle.rs +++ b/cranelift/codegen/src/isa/riscv64/lower/isle.rs @@ -61,7 +61,7 @@ impl generated_code::Context for IsleContext<'_, '_, MInst, Riscv64Backend> { } } - fn lower_brz_or_nz( + fn lower_cond_br( &mut self, cc: &IntCC, a: ValueRegs, diff --git a/cranelift/codegen/src/isa/s390x/inst/unwind/systemv.rs b/cranelift/codegen/src/isa/s390x/inst/unwind/systemv.rs index 61f557fd25..9f29b7d414 100644 --- a/cranelift/codegen/src/isa/s390x/inst/unwind/systemv.rs +++ b/cranelift/codegen/src/isa/s390x/inst/unwind/systemv.rs @@ -194,8 +194,7 @@ mod tests { let mut pos = FuncCursor::new(&mut func); pos.insert_block(block0); - pos.ins().brnz(v0, block2, &[]); - pos.ins().jump(block1, &[]); + pos.ins().brif(v0, block2, &[], block1, &[]); pos.insert_block(block1); pos.ins().return_(&[]); diff --git a/cranelift/codegen/src/isa/s390x/lower.isle b/cranelift/codegen/src/isa/s390x/lower.isle index 1819d060f8..9bbbc53f6c 100644 --- a/cranelift/codegen/src/isa/s390x/lower.isle +++ b/cranelift/codegen/src/isa/s390x/lower.isle @@ -3761,28 +3761,6 @@ (vec_element targets 1)))) -;;;; Rules for `brz` ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - -;; Two-way conditional branch on zero. `targets` contains: -;; - element 0: target if the condition is true (i.e. value is zero) -;; - element 1: target if the condition is false (i.e. value is nonzero) -(rule (lower_branch (brz val_cond _) targets) - (emit_side_effect (cond_br_bool (invert_bool (value_nonzero val_cond)) - (vec_element targets 0) - (vec_element targets 1)))) - - -;;;; Rules for `brnz` ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - -;; Two-way conditional branch on nonzero. `targets` contains: -;; - element 0: target if the condition is true (i.e. value is nonzero) -;; - element 1: target if the condition is false (i.e. value is zero) -(rule (lower_branch (brnz val_cond _) targets) - (emit_side_effect (cond_br_bool (value_nonzero val_cond) - (vec_element targets 0) - (vec_element targets 1)))) - - ;;;; Rules for `trap` ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (rule (lower (trap trap_code)) diff --git a/cranelift/codegen/src/isa/s390x/mod.rs b/cranelift/codegen/src/isa/s390x/mod.rs index c07a597a43..4e4ff5d44c 100644 --- a/cranelift/codegen/src/isa/s390x/mod.rs +++ b/cranelift/codegen/src/isa/s390x/mod.rs @@ -265,15 +265,12 @@ mod test { pos.insert_block(bb0); let v0 = pos.ins().iconst(I32, 0x1234); let v1 = pos.ins().iadd(arg0, v0); - pos.ins().brnz(v1, bb1, &[]); - pos.ins().jump(bb2, &[]); + pos.ins().brif(v1, bb1, &[], bb2, &[]); pos.insert_block(bb1); - pos.ins().brnz(v1, bb2, &[]); - pos.ins().jump(bb3, &[]); + pos.ins().brif(v1, bb2, &[], bb3, &[]); pos.insert_block(bb2); let v2 = pos.ins().iadd(v1, v0); - pos.ins().brnz(v2, bb2, &[]); - pos.ins().jump(bb1, &[]); + pos.ins().brif(v2, bb2, &[], bb1, &[]); pos.insert_block(bb3); let v3 = pos.ins().isub(v1, v0); pos.ins().return_(&[v3]); diff --git a/cranelift/codegen/src/isa/x64/inst.isle b/cranelift/codegen/src/isa/x64/inst.isle index c0ba9a1171..d18e8682c3 100644 --- a/cranelift/codegen/src/isa/x64/inst.isle +++ b/cranelift/codegen/src/isa/x64/inst.isle @@ -362,7 +362,7 @@ ;; One-way conditional branch: jcond cond target. ;; ;; This instruction is useful when we have conditional jumps depending on - ;; more than two conditions, see for instance the lowering of Brz/brnz + ;; more than two conditions, see for instance the lowering of Brif ;; with Fcmp inputs. ;; ;; A note of caution: in contexts where the branch target is another diff --git a/cranelift/codegen/src/isa/x64/inst/unwind/systemv.rs b/cranelift/codegen/src/isa/x64/inst/unwind/systemv.rs index e49ad27b03..6a11262104 100644 --- a/cranelift/codegen/src/isa/x64/inst/unwind/systemv.rs +++ b/cranelift/codegen/src/isa/x64/inst/unwind/systemv.rs @@ -184,8 +184,7 @@ mod tests { let mut pos = FuncCursor::new(&mut func); pos.insert_block(block0); - pos.ins().brnz(v0, block2, &[]); - pos.ins().jump(block1, &[]); + pos.ins().brif(v0, block2, &[], block1, &[]); pos.insert_block(block1); pos.ins().return_(&[]); diff --git a/cranelift/codegen/src/isa/x64/lower.isle b/cranelift/codegen/src/isa/x64/lower.isle index cc894a0af5..fc031add54 100644 --- a/cranelift/codegen/src/isa/x64/lower.isle +++ b/cranelift/codegen/src/isa/x64/lower.isle @@ -2904,41 +2904,6 @@ (jmp_cond (CC.NZ) then else)))) -;; Rules for `brz` and `brnz` ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - -(rule 2 (lower_branch (brz (maybe_uextend (icmp cc a b)) _) (two_targets taken not_taken)) - (let ((cmp IcmpCondResult (invert_icmp_cond_result (emit_cmp cc a b)))) - (emit_side_effect (jmp_cond_icmp cmp taken not_taken)))) - -(rule 2 (lower_branch (brz (maybe_uextend (fcmp cc a b)) _) (two_targets taken not_taken)) - (let ((cmp FcmpCondResult (emit_fcmp (floatcc_inverse cc) a b))) - (emit_side_effect (jmp_cond_fcmp cmp taken not_taken)))) - -(rule 1 (lower_branch (brz val @ (value_type $I128) _) (two_targets taken not_taken)) - (emit_side_effect (jmp_cond_icmp (cmp_zero_i128 (CC.NZ) val) taken not_taken))) - -(rule 0 (lower_branch (brz val @ (value_type (ty_int_bool_or_ref)) _) (two_targets taken not_taken)) - (emit_side_effect - (with_flags_side_effect (cmp_zero_int_bool_ref val) - (jmp_cond (CC.Z) taken not_taken)))) - - -(rule 2 (lower_branch (brnz (maybe_uextend (icmp cc a b)) _) (two_targets taken not_taken)) - (emit_side_effect (jmp_cond_icmp (emit_cmp cc a b) taken not_taken))) - -(rule 2 (lower_branch (brnz (maybe_uextend (fcmp cc a b)) _) (two_targets taken not_taken)) - (let ((cmp FcmpCondResult (emit_fcmp cc a b))) - (emit_side_effect (jmp_cond_fcmp cmp taken not_taken)))) - -(rule 1 (lower_branch (brnz val @ (value_type $I128) _) (two_targets taken not_taken)) - (emit_side_effect (jmp_cond_icmp (cmp_zero_i128 (CC.Z) val) taken not_taken))) - -(rule 0 (lower_branch (brnz val @ (value_type (ty_int_bool_or_ref)) _) (two_targets taken not_taken)) - (emit_side_effect - (with_flags_side_effect (cmp_zero_int_bool_ref val) - (jmp_cond (CC.NZ) taken not_taken)))) - - ;; Compare an I128 value to zero, returning a flags result suitable for making a ;; jump decision. The comparison is implemented as `(hi == 0) && (low == 0)`, ;; and the result can be interpreted as follows diff --git a/cranelift/codegen/src/isa/x64/mod.rs b/cranelift/codegen/src/isa/x64/mod.rs index 27053ef2de..a567ddf214 100644 --- a/cranelift/codegen/src/isa/x64/mod.rs +++ b/cranelift/codegen/src/isa/x64/mod.rs @@ -261,23 +261,20 @@ mod test { let v0 = pos.ins().iconst(I32, 0x1234); pos.set_srcloc(SourceLoc::new(2)); let v1 = pos.ins().iadd(arg0, v0); - pos.ins().brnz(v1, bb1, &[v1]); - pos.ins().jump(bb2, &[]); + pos.ins().brif(v1, bb1, &[v1], bb2, &[]); pos.insert_block(bb1); pos.set_srcloc(SourceLoc::new(3)); let v2 = pos.ins().isub(v1, v0); pos.set_srcloc(SourceLoc::new(4)); let v3 = pos.ins().iadd(v2, bb1_param); - pos.ins().brnz(v1, bb2, &[]); - pos.ins().jump(bb3, &[v3]); + pos.ins().brif(v1, bb2, &[], bb3, &[v3]); pos.func.layout.set_cold(bb2); pos.insert_block(bb2); pos.set_srcloc(SourceLoc::new(5)); let v4 = pos.ins().iadd(v1, v0); - pos.ins().brnz(v4, bb2, &[]); - pos.ins().jump(bb1, &[v4]); + pos.ins().brif(v4, bb2, &[], bb1, &[v4]); pos.insert_block(bb3); pos.set_srcloc(SourceLoc::new(6)); diff --git a/cranelift/codegen/src/legalizer/mod.rs b/cranelift/codegen/src/legalizer/mod.rs index 66241cde52..af836a0622 100644 --- a/cranelift/codegen/src/legalizer/mod.rs +++ b/cranelift/codegen/src/legalizer/mod.rs @@ -268,8 +268,7 @@ fn expand_cond_trap( // // Becomes: // - // brz arg, new_block_resume - // jump new_block_trap + // brif arg, new_block_trap, new_block_resume // // new_block_trap: // trap @@ -285,17 +284,18 @@ fn expand_cond_trap( // Replace trap instruction by the inverted condition. if trapz { - func.dfg.replace(inst).brnz(arg, new_block_resume, &[]); + func.dfg + .replace(inst) + .brif(arg, new_block_resume, &[], new_block_trap, &[]); } else { - func.dfg.replace(inst).brz(arg, new_block_resume, &[]); + func.dfg + .replace(inst) + .brif(arg, new_block_trap, &[], new_block_resume, &[]); } - // Add jump instruction after the inverted branch. + // Insert the new label and the unconditional trap terminator. let mut pos = FuncCursor::new(func).after_inst(inst); pos.use_srcloc(inst); - pos.ins().jump(new_block_trap, &[]); - - // Insert the new label and the unconditional trap terminator. pos.insert_block(new_block_trap); match opcode { diff --git a/cranelift/codegen/src/loop_analysis.rs b/cranelift/codegen/src/loop_analysis.rs index f93e6ce87e..8b135b48fa 100644 --- a/cranelift/codegen/src/loop_analysis.rs +++ b/cranelift/codegen/src/loop_analysis.rs @@ -330,6 +330,7 @@ mod tests { let block1 = func.dfg.make_block(); let block2 = func.dfg.make_block(); let block3 = func.dfg.make_block(); + let block4 = func.dfg.make_block(); let cond = func.dfg.append_block_param(block0, types::I32); { @@ -342,11 +343,13 @@ mod tests { cur.ins().jump(block2, &[]); cur.insert_block(block2); - cur.ins().brnz(cond, block1, &[]); - cur.ins().jump(block3, &[]); + cur.ins().brif(cond, block1, &[], block3, &[]); cur.insert_block(block3); - cur.ins().brnz(cond, block0, &[]); + cur.ins().brif(cond, block0, &[], block4, &[]); + + cur.insert_block(block4); + cur.ins().return_(&[]); } let mut loop_analysis = LoopAnalysis::new(); @@ -385,31 +388,32 @@ mod tests { let block3 = func.dfg.make_block(); let block4 = func.dfg.make_block(); let block5 = func.dfg.make_block(); + let block6 = func.dfg.make_block(); let cond = func.dfg.append_block_param(block0, types::I32); { let mut cur = FuncCursor::new(&mut func); cur.insert_block(block0); - cur.ins().brnz(cond, block1, &[]); - cur.ins().jump(block3, &[]); + cur.ins().brif(cond, block1, &[], block3, &[]); cur.insert_block(block1); cur.ins().jump(block2, &[]); cur.insert_block(block2); - cur.ins().brnz(cond, block1, &[]); - cur.ins().jump(block5, &[]); + cur.ins().brif(cond, block1, &[], block5, &[]); cur.insert_block(block3); cur.ins().jump(block4, &[]); cur.insert_block(block4); - cur.ins().brnz(cond, block3, &[]); - cur.ins().jump(block5, &[]); + cur.ins().brif(cond, block3, &[], block5, &[]); cur.insert_block(block5); - cur.ins().brnz(cond, block0, &[]); + cur.ins().brif(cond, block0, &[], block6, &[]); + + cur.insert_block(block6); + cur.ins().return_(&[]); } let mut loop_analysis = LoopAnalysis::new(); diff --git a/cranelift/codegen/src/machinst/blockorder.rs b/cranelift/codegen/src/machinst/blockorder.rs index fc8a1d67e3..c176ae4fdb 100644 --- a/cranelift/codegen/src/machinst/blockorder.rs +++ b/cranelift/codegen/src/machinst/blockorder.rs @@ -250,7 +250,7 @@ impl BlockLoweringOrder { let block_succ_end = block_succs.len(); block_succ_range[block] = (block_succ_start, block_succ_end); - for inst in f.layout.block_likely_branches(block) { + if let Some(inst) = f.layout.last_inst(block) { if f.dfg.insts[inst].opcode() == Opcode::Return { // Implicit output edge for any return. block_out_count[block] += 1; @@ -276,7 +276,7 @@ impl BlockLoweringOrder { // could not be, in cases of br_table with no table and just a // default label, for example.) for block in f.layout.blocks() { - for inst in f.layout.block_likely_branches(block) { + if let Some(inst) = f.layout.last_inst(block) { // If the block has a branch with any "fixed args" // (not blockparam args) ... if f.dfg.insts[inst].opcode().is_branch() && f.dfg.inst_fixed_args(inst).len() > 0 { @@ -561,8 +561,8 @@ mod test { } else if succs.len() == 1 { pos.ins().jump(blocks[succs[0]], &[]); } else if succs.len() == 2 { - pos.ins().brnz(arg0, blocks[succs[0]], &[]); - pos.ins().jump(blocks[succs[1]], &[]); + pos.ins() + .brif(arg0, blocks[succs[0]], &[], blocks[succs[1]], &[]); } else { panic!("Too many successors"); } diff --git a/cranelift/codegen/src/remove_constant_phis.rs b/cranelift/codegen/src/remove_constant_phis.rs index 4a9ef40170..71d3981048 100644 --- a/cranelift/codegen/src/remove_constant_phis.rs +++ b/cranelift/codegen/src/remove_constant_phis.rs @@ -16,10 +16,9 @@ use smallvec::SmallVec; // "formal parameters" to mean the `Value`s listed in the block head, and // "actual parameters" to mean the `Value`s passed in a branch or a jump: // -// block4(v16: i32, v18: i32): <-- formal parameters +// block4(v16: i32, v18: i32): <-- formal parameters // ... -// brnz v27, block7(v22, v24) <-- actual parameters -// jump block6 +// brif v27, block7(v22, v24), block6 <-- actual parameters // This transformation pass (conceptually) partitions all values in the // function into two groups: diff --git a/cranelift/codegen/src/simple_preopt.rs b/cranelift/codegen/src/simple_preopt.rs index c8925ab413..f1e05d7e74 100644 --- a/cranelift/codegen/src/simple_preopt.rs +++ b/cranelift/codegen/src/simple_preopt.rs @@ -6,12 +6,11 @@ use crate::cursor::{Cursor, FuncCursor}; use crate::divconst_magic_numbers::{magic_s32, magic_s64, magic_u32, magic_u64}; use crate::divconst_magic_numbers::{MS32, MS64, MU32, MU64}; -use crate::flowgraph::ControlFlowGraph; use crate::ir::{ - condcodes::{CondCode, IntCC}, + condcodes::IntCC, instructions::Opcode, - types::{I128, I32, I64, INVALID}, - Block, DataFlowGraph, Function, Inst, InstBuilder, InstructionData, Type, Value, + types::{I128, I32, I64}, + DataFlowGraph, Function, Inst, InstBuilder, InstructionData, Type, Value, }; use crate::isa::TargetIsa; use crate::timing; @@ -465,71 +464,6 @@ fn do_divrem_transformation(divrem_info: &DivRemByConstInfo, pos: &mut FuncCurso } } -/// Reorder branches to encourage fallthroughs. -/// -/// When a block ends with a conditional branch followed by an unconditional -/// branch, this will reorder them if one of them is branching to the next Block -/// layout-wise. The unconditional jump can then become a fallthrough. -fn branch_order(pos: &mut FuncCursor, cfg: &mut ControlFlowGraph, block: Block, inst: Inst) { - let (term_inst, term_dest, cond_inst, cond_dest, kind, cond_arg) = - match pos.func.dfg.insts[inst] { - InstructionData::Jump { - opcode: Opcode::Jump, - destination, - } => { - let next_block = if let Some(next_block) = pos.func.layout.next_block(block) { - next_block - } else { - return; - }; - - if destination.block(&pos.func.dfg.value_lists) == next_block { - return; - } - - let prev_inst = if let Some(prev_inst) = pos.func.layout.prev_inst(inst) { - prev_inst - } else { - return; - }; - - match &pos.func.dfg.insts[prev_inst] { - &InstructionData::Branch { - opcode, - arg, - destination: cond_dest, - } => { - if cond_dest.block(&pos.func.dfg.value_lists) != next_block { - return; - } - - let kind = match opcode { - Opcode::Brz => Opcode::Brnz, - Opcode::Brnz => Opcode::Brz, - _ => panic!("unexpected opcode"), - }; - - (inst, destination, prev_inst, cond_dest, kind, arg) - } - _ => return, - } - } - - _ => return, - }; - - pos.func - .dfg - .replace(term_inst) - .Jump(Opcode::Jump, INVALID, cond_dest); - pos.func - .dfg - .replace(cond_inst) - .Branch(kind, INVALID, term_dest, cond_arg); - - cfg.recompute_block(pos.func, block); -} - mod simplify { use super::*; use crate::ir::{ @@ -789,12 +723,11 @@ mod simplify { /// Fold comparisons into branch operations when possible. /// /// This matches against operations which compare against zero, then use the - /// result in a `brz` or `brnz` branch. It folds those two operations into a - /// single `brz` or `brnz`. + /// result in a conditional branch. fn branch_opt(pos: &mut FuncCursor, inst: Inst) { - let (cmp_arg, new_opcode) = if let InstructionData::Branch { - opcode: br_opcode, + let (cmp_arg, new_then, new_else) = if let InstructionData::Brif { arg: first_arg, + blocks: [block_then, block_else], .. } = pos.func.dfg.insts[inst] { @@ -817,21 +750,13 @@ mod simplify { return; } - // icmp_imm returns non-zero when the comparison is true. So, if - // we're branching on zero, we need to invert the condition. - let cond = match br_opcode { - Opcode::Brz => cmp_cond.inverse(), - Opcode::Brnz => cmp_cond, + let (new_then, new_else) = match cmp_cond { + IntCC::Equal => (block_else, block_then), + IntCC::NotEqual => (block_then, block_else), _ => return, }; - let new_opcode = match cond { - IntCC::Equal => Opcode::Brz, - IntCC::NotEqual => Opcode::Brnz, - _ => return, - }; - - (cmp_arg, new_opcode) + (cmp_arg, new_then, new_else) } else { return; } @@ -839,9 +764,10 @@ mod simplify { return; }; - if let InstructionData::Branch { opcode, arg, .. } = &mut pos.func.dfg.insts[inst] { - *opcode = new_opcode; + if let InstructionData::Brif { arg, blocks, .. } = &mut pos.func.dfg.insts[inst] { *arg = cmp_arg; + blocks[0] = new_then; + blocks[1] = new_else; } else { unreachable!(); } @@ -849,14 +775,14 @@ mod simplify { } /// The main pre-opt pass. -pub fn do_preopt(func: &mut Function, cfg: &mut ControlFlowGraph, isa: &dyn TargetIsa) { +pub fn do_preopt(func: &mut Function, isa: &dyn TargetIsa) { let _tt = timing::preopt(); let mut pos = FuncCursor::new(func); let native_word_width = isa.pointer_bytes() as u32; let mut optimizer = simplify::peephole_optimizer(isa); - while let Some(block) = pos.next_block() { + while let Some(_) = pos.next_block() { while let Some(inst) = pos.next_inst() { simplify::apply_all(&mut optimizer, &mut pos, inst, native_word_width); @@ -865,8 +791,6 @@ pub fn do_preopt(func: &mut Function, cfg: &mut ControlFlowGraph, isa: &dyn Targ do_divrem_transformation(&divrem_info, &mut pos, inst); continue; } - - branch_order(&mut pos, cfg, block, inst); } } } diff --git a/cranelift/codegen/src/verifier/mod.rs b/cranelift/codegen/src/verifier/mod.rs index 444b45c168..a0a1e01751 100644 --- a/cranelift/codegen/src/verifier/mod.rs +++ b/cranelift/codegen/src/verifier/mod.rs @@ -584,7 +584,7 @@ impl<'a> Verifier<'a> { MultiAry { ref args, .. } => { self.verify_value_list(inst, args, errors)?; } - Jump { destination, .. } | Branch { destination, .. } => { + Jump { destination, .. } => { self.verify_block(inst, destination.block(&self.func.dfg.value_lists), errors)?; } Brif { diff --git a/cranelift/codegen/src/write.rs b/cranelift/codegen/src/write.rs index 34600b25ef..bd9167284a 100644 --- a/cranelift/codegen/src/write.rs +++ b/cranelift/codegen/src/write.rs @@ -428,12 +428,6 @@ pub fn write_operands(w: &mut dyn Write, dfg: &DataFlowGraph, inst: Inst) -> fmt write!(w, ", {}", block_else.block(pool))?; write_block_args(w, block_else.args_slice(pool)) } - Branch { - arg, destination, .. - } => { - write!(w, " {}, {}", arg, destination.block(pool))?; - write_block_args(w, destination.args_slice(pool)) - } BranchTable { arg, destination, diff --git a/cranelift/docs/ir.md b/cranelift/docs/ir.md index 625fd899fc..6568c40e84 100644 --- a/cranelift/docs/ir.md +++ b/cranelift/docs/ir.md @@ -49,8 +49,7 @@ function %average(i32, i32) -> f32 system_v { block1(v0: i32, v1: i32): v2 = f64const 0x0.0 stack_store v2, ss0 - brz v1, block5 ; Handle count == 0. - jump block2 + brif v1, block2, block5 ; Handle count == 0. block2: v3 = iconst.i32 0 @@ -66,8 +65,7 @@ block3(v4: i32): stack_store v10, ss0 v11 = iadd_imm v4, 1 v12 = icmp ult v11, v1 - brnz v12, block3(v11) ; Loop backedge. - jump block4 + brif v12, block3(v11), block4 ; Loop backedge. block4: v13 = stack_load.f64 ss0 @@ -414,8 +412,7 @@ function %gcd(i32 uext, i32 uext) -> i32 uext system_v { fn0 = %divmod(i32 uext, i32 uext) -> i32 uext, i32 uext block1(v0: i32, v1: i32): - brz v1, block3 - jump block2 + brif v1, block2, block3 block2: v2, v3 = call fn0(v0, v1) diff --git a/cranelift/docs/testing.md b/cranelift/docs/testing.md index 1ed87424f1..1f1c32a491 100644 --- a/cranelift/docs/testing.md +++ b/cranelift/docs/testing.md @@ -169,12 +169,12 @@ command: function %nonsense(i32, i32) -> f32 { ; check: digraph %nonsense { ; regex: I=\binst\d+\b - ; check: label="{block0 | <$(BRZ=$I)>brz block2 | <$(JUMP=$I)>jump block1}"] + ; check: label="{block0 | <$(BRIF=$I)>brif v1, block1(v2), block2 }"] block0(v0: i32, v1: i32): - brz v1, block2 ; unordered: block0:$BRZ -> block2 v2 = iconst.i32 0 - jump block1(v2) ; unordered: block0:$JUMP -> block1 + brif v1, block1(v2), block2 ; unordered: block0:$BRIF -> block1 + ; unordered: block0:$BRIF -> block2 block1(v5: i32): return v0 @@ -195,10 +195,9 @@ Compute the dominator tree of each function and validate it against the function %test(i32) { block0(v0: i32): - jump block1 ; dominates: block1 + jump block1 ; dominates: block1 block1: - brz v0, block3 ; dominates: block3 - jump block2 ; dominates: block2 + brif v0, block2, block3 ; dominates: block2, block3 block2: jump block3 block3: diff --git a/cranelift/filetests/filetests/alias/multiple-blocks.clif b/cranelift/filetests/filetests/alias/multiple-blocks.clif index 458e8f00fa..1c4330bd4a 100644 --- a/cranelift/filetests/filetests/alias/multiple-blocks.clif +++ b/cranelift/filetests/filetests/alias/multiple-blocks.clif @@ -11,8 +11,7 @@ function %f0(i64 vmctx, i32) -> i32 { block0(v0: i64, v1: i32): v2 = global_value.i64 gv1 v3 = load.i32 v2+8 - brz v2, block1 - jump block2 + brif v2, block2, block1 block1: v4 = load.i32 v2+8 diff --git a/cranelift/filetests/filetests/alias/partial-redundancy.clif b/cranelift/filetests/filetests/alias/partial-redundancy.clif index 85177ab39f..aac64827f7 100644 --- a/cranelift/filetests/filetests/alias/partial-redundancy.clif +++ b/cranelift/filetests/filetests/alias/partial-redundancy.clif @@ -11,8 +11,7 @@ function %f0(i64 vmctx, i32) -> i32, i32 { fn0 = %g(i64 vmctx) block0(v0: i64, v1: i32): - brz v1, block1 - jump block2 + brif v1, block2, block1 block1: v2 = global_value.i64 gv1 diff --git a/cranelift/filetests/filetests/cfg/loop.clif b/cranelift/filetests/filetests/cfg/loop.clif index a18de9dc31..90a9b530eb 100644 --- a/cranelift/filetests/filetests/cfg/loop.clif +++ b/cranelift/filetests/filetests/cfg/loop.clif @@ -6,15 +6,13 @@ function %nonsense(i32, i32) -> f32 { ; regex: I=\binst\d+\b ; check: digraph "%nonsense" { ; check: block0 [shape=record, label="{block0(v1: i32, v2: i32): -; check: | <$(BRZ=$I)>brz v2, block2 -; nextln: | <$(JUMP0=$I)>jump block3 +; check: | <$(BRIF=$I)>brif v2, block3, block2 ; nextln: }"] ; nextln: block3 [shape=record, label="{block3: ; check: | <$(JUMP3=$I)>jump block1(v4) ; nextln: }"] ; nextln: block1 [shape=record, label="{block1(v5: i32): -; check: | <$(BRNZ1=$I)>brnz v13, block1(v12) -; nextln: | <$(JUMP1=$I)>jump block4 +; check: | <$(BRIF1=$I)>brif v13, block1(v12), block4 ; nextln: }"] ; nextln: block4 [shape=record, label="{block4: ; check: | <$I>return v17 @@ -24,8 +22,8 @@ function %nonsense(i32, i32) -> f32 { ; check:}"] block0(v1: i32, v2: i32): v3 = f64const 0x0.0 - brz v2, block2 ; unordered: block0:$BRZ -> block2 - jump block3 ; unordered: block0:$JUMP0 -> block3 + brif v2, block3, block2 ; unordered: block0:$BRIF -> block2 + ; unordered: block0:$BRIF -> block3 block3: v4 = iconst.i32 0 @@ -40,8 +38,8 @@ block1(v5: i32): v11 = fadd v9, v10 v12 = iadd_imm v5, 1 v13 = icmp ult v12, v2 - brnz v13, block1(v12) ; unordered: block1:$BRNZ1 -> block1 - jump block4 ; unordered: block1:$JUMP1 -> block4 + brif v13, block1(v12), block4 ; unordered: block1:$BRIF1 -> block1 + ; unordered: block1:$BRIF1 -> block4 block4: v14 = f64const 0.0 diff --git a/cranelift/filetests/filetests/cfg/traps_early.clif b/cranelift/filetests/filetests/cfg/traps_early.clif index 33de056e4c..19982adce9 100644 --- a/cranelift/filetests/filetests/cfg/traps_early.clif +++ b/cranelift/filetests/filetests/cfg/traps_early.clif @@ -8,13 +8,13 @@ function %nonsense(i32) { block0(v1: i32): trap user0 ; error: terminator instruction was encountered before the end - brnz v1, block2 ; unordered: block0:inst1 -> block2 - jump block1 ; unordered: block0:inst2 -> block1 + brif v1, block2, block1 ; unordered: block0:inst1 -> block2 + ; unordered: block0:inst1 -> block1 block1: v2 = iconst.i32 0 v3 = iadd v1, v3 - jump block0(v3) ; unordered: block1:inst5 -> block0 + jump block0(v3) ; unordered: block1:inst4 -> block0 block2: return v1 diff --git a/cranelift/filetests/filetests/cfg/unused_node.clif b/cranelift/filetests/filetests/cfg/unused_node.clif index 41f98073fd..7c39be54e2 100644 --- a/cranelift/filetests/filetests/cfg/unused_node.clif +++ b/cranelift/filetests/filetests/cfg/unused_node.clif @@ -4,24 +4,28 @@ test print-cfg function %not_reached(i32) -> i32 { ; check: digraph "%not_reached" { ; check: block0 [shape=record, label="{block0(v0: i32): -; check: | brnz v0, block2 -; check: | trap user0 +; check: | brif v0, block2, block3 ; check: }"] ; check: block1 [shape=record, label="{block1: -; check: | jump block0(v2) +; check: | jump block0(v2) ; check: }"] ; check: block2 [shape=record, label="{block2: -; check: | return v0 +; check: | return v0 +; check: }"] +; check: block3 [shape=record, label="{block3: +; check: | trap user0 ; check: }"] block0(v0: i32): - brnz v0, block2 ; unordered: block0:inst0 -> block2 - trap user0 + brif v0, block2, block3 ; unordered: block0:inst0 -> block2 block1: v1 = iconst.i32 1 v2 = iadd v0, v1 - jump block0(v2) ; unordered: block1:inst4 -> block0 + jump block0(v2) ; unordered: block1:inst3 -> block0 block2: return v0 + +block3: + trap user0 } diff --git a/cranelift/filetests/filetests/dce/basic.clif b/cranelift/filetests/filetests/dce/basic.clif index 0c94926584..b077e13f77 100644 --- a/cranelift/filetests/filetests/dce/basic.clif +++ b/cranelift/filetests/filetests/dce/basic.clif @@ -18,8 +18,7 @@ block0(v0: i32, v1: i32): v4 = iconst.i32 71 v5 = iconst.i32 72 v8 = iconst.i32 73 - brz v0, block1 - jump block2(v8) + brif v0, block2(v8), block1 block1: v2 = iadd v0, v3 @@ -34,8 +33,7 @@ block2(v9: i32): ; nextln: block0(v0: i32, v1: i32): ; nextln: v4 = iconst.i32 71 ; nextln: v8 = iconst.i32 73 -; nextln: brz v0, block1 -; nextln: jump block2(v8) +; nextln: brif v0, block2(v8), block1 ; nextln: ; nextln: block1: ; nextln: return v0 diff --git a/cranelift/filetests/filetests/domtree/basic.clif b/cranelift/filetests/filetests/domtree/basic.clif index 2960ab0e62..b657e4c035 100644 --- a/cranelift/filetests/filetests/domtree/basic.clif +++ b/cranelift/filetests/filetests/domtree/basic.clif @@ -2,24 +2,23 @@ test domtree function %test(i32) { block0(v0: i32): - jump block1 ; dominates: block1 + jump block1 ; dominates: block1 block1: - brz v0, block3 ; dominates: block3 - jump block2 ; dominates: block2 + brif v0, block2, block3 ; dominates: block2 block3 block2: jump block3 block3: return } ; check: cfg_postorder: -; sameln: block2 ; sameln: block3 +; sameln: block2 ; sameln: block1 ; sameln: block0 ; check: domtree_preorder { ; nextln: block0: block1 -; nextln: block1: block3 block2 -; nextln: block3: +; nextln: block1: block2 block3 ; nextln: block2: +; nextln: block3: ; nextln: } diff --git a/cranelift/filetests/filetests/domtree/loops.clif b/cranelift/filetests/filetests/domtree/loops.clif index a2a334e3fa..ec85dec742 100644 --- a/cranelift/filetests/filetests/domtree/loops.clif +++ b/cranelift/filetests/filetests/domtree/loops.clif @@ -2,33 +2,29 @@ test domtree function %test(i32) { block0(v0: i32): - brz v0, block1 ; dominates: block1 block3 block4 block5 - jump block2 ; dominates: block2 + brif v0, block2, block1 ; dominates: block1 block2 block3 block4 block5 block1: jump block3 block2: - brz v0, block4 - jump block5 + brif v0, block5, block4 block3: jump block4 block4: - brz v0, block3 - jump block5 + brif v0, block5, block3 block5: - brz v0, block4 - jump block6 ; dominates: block6 + brif v0, block6, block4 ; dominates: block6 block6: return } ; Fall-through-first, prune-at-source DFT: ; ; block0 { -; block0:brz v0, block1 { +; block0:brif v0, block1 { ; block0:jump block2 { ; block2 { -; block2:brz v2, block2 - -; block2:brz v3, block1 - -; block2:brz v4, block4 { +; block2:brif v2, block2 - +; block2:brif v3, block1 - +; block2:brif v4, block4 { ; block2: jump block5 { ; block5: jump block6 { ; block6 {} @@ -49,42 +45,37 @@ function %test(i32) { ; check: cfg_postorder: ; sameln: block6 ; sameln: block5 -; sameln: block3 ; sameln: block4 -; sameln: block2 +; sameln: block3 ; sameln: block1 +; sameln: block2 ; sameln: block0 ; check: domtree_preorder { -; nextln: block0: block1 block2 block4 block3 block5 -; nextln: block1: +; nextln: block0: block2 block1 block3 block4 block5 ; nextln: block2: -; nextln: block4: +; nextln: block1: ; nextln: block3: +; nextln: block4: ; nextln: block5: block6 ; nextln: block6: ; nextln: } function %loop2(i32) system_v { block0(v0: i32): - brz v0, block1 ; dominates: block1 block3 block4 block5 - jump block2 ; dominates: block2 + brif v0, block2, block1 ; dominates: block2 block1 block3 block4 block5 block1: jump block3 block2: - brz v0, block4 - jump block5 + brif v0, block5, block4 block3: jump block4 block4: - brz v0, block3 - jump block8 ; dominates: block8 + brif v0, block8, block3 ; dominates: block8 block8: - brnz v0, block5 - jump block6 ; dominates: block6 + brif v0, block5, block6 ; dominates: block6 block5: - brz v0, block4 - jump block9 ; dominates: block9 + brif v0, block9, block4 ; dominates: block9 block9: trap user0 block6: @@ -93,26 +84,26 @@ function %loop2(i32) system_v { return } ; check: cfg_postorder: -; sameln: block9 -; sameln: block5 ; sameln: block7 ; sameln: block6 +; sameln: block9 +; sameln: block5 ; sameln: block8 -; sameln: block3 ; sameln: block4 -; sameln: block2 +; sameln: block3 ; sameln: block1 +; sameln: block2 ; sameln: block0 ; check: domtree_preorder { -; nextln: block0: block1 block2 block4 block3 block5 -; nextln: block1: +; nextln: block0: block2 block1 block3 block4 block5 ; nextln: block2: +; nextln: block1: +; nextln: block3: ; nextln: block4: block8 ; nextln: block8: block6 ; nextln: block6: block7 ; nextln: block7: -; nextln: block3: ; nextln: block5: block9 ; nextln: block9: ; nextln: } diff --git a/cranelift/filetests/filetests/domtree/loops2.clif b/cranelift/filetests/filetests/domtree/loops2.clif index 140916bafb..24a91bbbfe 100644 --- a/cranelift/filetests/filetests/domtree/loops2.clif +++ b/cranelift/filetests/filetests/domtree/loops2.clif @@ -2,30 +2,23 @@ test domtree function %loop1(i32) { block0(v0: i32): - brz v0, block1 ; dominates: block1 block6 - jump block10 ; dominates: block10 + brif v0, block10, block1 ; dominates: block10 block1 block6 block10: - brnz v0, block2 ; dominates: block2 block9 - jump block3 ; dominates: block3 + brif v0, block2, block3 ; dominates: block2 block9 block3 block1: jump block6 block2: - brz v0, block4 ; dominates: block4 block7 block8 - jump block5 ; dominates: block5 + brif v0, block5, block4 ; dominates: block5 block4 block7 block8 block3: jump block9 block4: - brz v0, block4 - jump block11 ; dominates: block11 + brif v0, block11, block4 ; dominates: block11 block11: - brnz v0, block6 - jump block7 + brif v0, block6, block7 block5: - brz v0, block7 - jump block12 ; dominates: block12 + brif v0, block12, block7 ; dominates: block12 block12: - brnz v0, block8 - jump block9 + brif v0, block8, block9 block6: return block7: @@ -37,56 +30,52 @@ function %loop1(i32) { } ; check: domtree_preorder { -; nextln: block0: block1 block10 block6 -; nextln: block1: +; nextln: block0: block10 block1 block6 ; nextln: block10: block2 block3 block9 -; nextln: block2: block4 block5 block7 block8 -; nextln: block4: block11 -; nextln: block11: +; nextln: block2: block5 block4 block7 block8 ; nextln: block5: block12 ; nextln: block12: +; nextln: block4: block11 +; nextln: block11: ; nextln: block7: ; nextln: block8: ; nextln: block3: ; nextln: block9: +; nextln: block1: ; nextln: block6: ; nextln: } function %loop2(i32) system_v { block0(v0: i32): - brz v0, block1 ; dominates: block1 block3 block4 block5 - jump block2 ; dominates: block2 + brif v0, block2, block1 ; dominates: block2 block1 block3 block4 block5 block1: jump block3 block2: - brz v0, block4 - jump block5 + brif v0, block5, block4 block3: jump block4 block4: - brz v0, block3 - jump block5 + brif v0, block5, block3 block5: - brz v0, block4 - jump block6 ; dominates: block6 + brif v0, block6, block4 ; dominates: block6 block6: return } ; check: cfg_postorder: ; sameln: block6 ; sameln: block5 -; sameln: block3 ; sameln: block4 -; sameln: block2 +; sameln: block3 ; sameln: block1 +; sameln: block2 ; sameln: block0 ; check: domtree_preorder { -; nextln: block0: block1 block2 block4 block3 block5 -; nextln: block1: +; nextln: block0: block2 block1 block3 block4 block5 ; nextln: block2: -; nextln: block4: +; nextln: block1: ; nextln: block3: +; nextln: block4: ; nextln: block5: block6 ; nextln: block6: ; nextln: } diff --git a/cranelift/filetests/filetests/domtree/tall-tree.clif b/cranelift/filetests/filetests/domtree/tall-tree.clif index 436edc643b..a9a28d66fe 100644 --- a/cranelift/filetests/filetests/domtree/tall-tree.clif +++ b/cranelift/filetests/filetests/domtree/tall-tree.clif @@ -2,11 +2,9 @@ test domtree function %test(i32) { block0(v0: i32): - brz v0, block1 ; dominates: block1 - jump block12 ; dominates: block12 + brif v0, block12, block1 ; dominates: block12 block1 block12: - brnz v0, block2 ; dominates: block2 block5 - jump block3 ; dominates: block3 + brif v0, block2, block3 ; dominates: block2 block5 block3 block1: jump block4 ; dominates: block4 block2: @@ -14,16 +12,13 @@ function %test(i32) { block3: jump block5 block4: - brz v0, block6 ; dominates: block6 block10 - jump block7 ; dominates: block7 + brif v0, block7, block6 ; dominates: block7 block6 block10 block5: return block6: - brz v0, block8 ; dominates: block11 block8 - jump block13 ; dominates: block13 + brif v0, block13, block8 ; dominates: block13 block11 block8 block13: - brnz v0, block9 ; dominates: block9 - jump block10 + brif v0, block9, block10 ; dominates: block9 block7: jump block10 block8: @@ -37,18 +32,18 @@ function %test(i32) { } ; check: domtree_preorder { -; nextln: block0: block1 block12 -; nextln: block1: block4 -; nextln: block4: block6 block7 block10 -; nextln: block6: block8 block13 block11 -; nextln: block8: -; nextln: block13: block9 -; nextln: block9: -; nextln: block11: -; nextln: block7: -; nextln: block10: +; nextln: block0: block12 block1 ; nextln: block12: block2 block3 block5 ; nextln: block2: ; nextln: block3: ; nextln: block5: +; nextln: block1: block4 +; nextln: block4: block7 block6 block10 +; nextln: block7: +; nextln: block6: block13 block8 block11 +; nextln: block13: block9 +; nextln: block9: +; nextln: block8: +; nextln: block11: +; nextln: block10: ; nextln: } diff --git a/cranelift/filetests/filetests/domtree/wide-tree.clif b/cranelift/filetests/filetests/domtree/wide-tree.clif index e118e684f0..f92450a663 100644 --- a/cranelift/filetests/filetests/domtree/wide-tree.clif +++ b/cranelift/filetests/filetests/domtree/wide-tree.clif @@ -2,20 +2,15 @@ test domtree function %test(i32) { block0(v0: i32): - brz v0, block13 ; dominates: block13 - jump block1 ; dominates: block1 + brif v0, block1, block13 ; dominates: block1 block13 block1: - brz v0, block2 ; dominates: block2 block7 - jump block20 ; dominates: block20 + brif v0, block20, block2 ; dominates: block20 block2 block7 block20: - brnz v0, block3 ; dominates: block3 - jump block21 ; dominates: block21 + brif v0, block3, block21 ; dominates: block3 block21 block21: - brz v0, block4 ; dominates: block4 - jump block22 ; dominates: block22 + brif v0, block22, block4 ; dominates: block22 block4 block22: - brnz v0, block5 ; dominates: block5 - jump block6 ; dominates: block6 + brif v0, block5, block6 ; dominates: block5 block6 block2: jump block7 block3: @@ -27,21 +22,17 @@ function %test(i32) { block6: jump block7 block7: - brnz v0, block8 ; dominates: block8 block12 - jump block23 ; dominates: block23 + brif v0, block8, block23 ; dominates: block8 block12 block23 block23: - brz v0, block9 ; dominates: block9 - jump block24 ; dominates: block24 + brif v0, block24, block9 ; dominates: block24 block9 block24: - brnz v0, block10 ; dominates: block10 - jump block11 ; dominates: block11 + brif v0, block10, block11 ; dominates: block10 block11 block8: jump block12 block9: jump block12 block10: - brz v0, block13 - jump block12 + brif v0, block12, block13 block11: jump block13 block12: @@ -51,23 +42,23 @@ function %test(i32) { } ; check: domtree_preorder { -; nextln: block0: block13 block1 -; nextln: block13: -; nextln: block1: block2 block20 block7 -; nextln: block2: +; nextln: block0: block1 block13 +; nextln: block1: block20 block2 block7 ; nextln: block20: block3 block21 ; nextln: block3: -; nextln: block21: block4 block22 -; nextln: block4: +; nextln: block21: block22 block4 ; nextln: block22: block5 block6 ; nextln: block5: ; nextln: block6: +; nextln: block4: +; nextln: block2: ; nextln: block7: block8 block23 block12 ; nextln: block8: -; nextln: block23: block9 block24 -; nextln: block9: +; nextln: block23: block24 block9 ; nextln: block24: block10 block11 ; nextln: block10: ; nextln: block11: +; nextln: block9: ; nextln: block12: +; nextln: block13: ; nextln: } diff --git a/cranelift/filetests/filetests/egraph/basic-gvn.clif b/cranelift/filetests/filetests/egraph/basic-gvn.clif index 823614ea27..3d74a31b1e 100644 --- a/cranelift/filetests/filetests/egraph/basic-gvn.clif +++ b/cranelift/filetests/filetests/egraph/basic-gvn.clif @@ -6,8 +6,7 @@ target x86_64 function %f(i32, i32) -> i32 { block0(v0: i32, v1: i32): v2 = iadd v0, v1 - brnz v2, block1(v0) - jump block2(v1) + brif v2, block1(v0), block2(v1) block1(v3: i32): v4 = iadd v0, v1 diff --git a/cranelift/filetests/filetests/egraph/issue-5437.clif b/cranelift/filetests/filetests/egraph/issue-5437.clif index 0f20d2f5a0..c3c40af43a 100644 --- a/cranelift/filetests/filetests/egraph/issue-5437.clif +++ b/cranelift/filetests/filetests/egraph/issue-5437.clif @@ -17,8 +17,7 @@ function u0:0(i64 vmctx, i64) fast { block0(v0: i64, v1: i64): @0019 v2 = vconst.i8x16 [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] @001b v3 = iconst.i32 0 -@001d brz v3, block2 ; v3 = 0 -@001d jump block3 +@001d brif v3, block3, block2 ; v3 = 0 block3: @001f trap unreachable @@ -30,8 +29,7 @@ function u0:0(i64 vmctx, i64) fast { @0027 v7 = bitcast.i32x4 little v6 @0027 v8 = vhigh_bits.i32 v7 @002a v9 = iconst.i32 0 -@002c brnz v9, block1 ; v9 = 0 -@002c jump block4 +@002c brif v9, block1, block4 ; v9 = 0 block4: @002e call fn0(v0, v0) diff --git a/cranelift/filetests/filetests/egraph/licm.clif b/cranelift/filetests/filetests/egraph/licm.clif index 3b8b625149..7e13392009 100644 --- a/cranelift/filetests/filetests/egraph/licm.clif +++ b/cranelift/filetests/filetests/egraph/licm.clif @@ -14,8 +14,7 @@ block1(v2: i32): v6 = icmp eq v2, v5 v7 = iconst.i32 1 v8 = iadd.i32 v2, v7 - brnz v6, block2(v4) - jump block1(v8) + brif v6, block2(v4), block1(v8) block2(v9: i32): return v9 @@ -30,8 +29,7 @@ block2(v9: i32): ; check: v6 = icmp eq v2, v5 ; check: v3 = iconst.i32 1 ; check: v8 = iadd v2, v3 -; check: brnz v6, block2 -; check: jump block1(v8) +; check: brif v6, block2, block1(v8) ; check: block2: ; check: v10 = iconst.i32 1 diff --git a/cranelift/filetests/filetests/egraph/remat.clif b/cranelift/filetests/filetests/egraph/remat.clif index f1ba8dd206..5d43c71feb 100644 --- a/cranelift/filetests/filetests/egraph/remat.clif +++ b/cranelift/filetests/filetests/egraph/remat.clif @@ -7,8 +7,7 @@ function %f(i32) -> i32 { block0(v0: i32): v1 = iconst.i32 42 v2 = iadd.i32 v0, v1 - brnz v2, block1 - jump block2 + brif v2, block1, block2 block1: v3 = iconst.i32 84 @@ -22,8 +21,7 @@ block2: ; check: block0(v0: i32): ; check: v1 = iconst.i32 42 ; check: v2 = iadd v0, v1 -; check: brnz v2, block1 -; check: jump block2 +; check: brif v2, block1, block2 ; check: block1: ; check: v11 = iconst.i32 126 ; check: v13 = iadd.i32 v0, v11 diff --git a/cranelift/filetests/filetests/isa/aarch64/condbr.clif b/cranelift/filetests/filetests/isa/aarch64/condbr.clif index e23bd61659..95cc32e4b4 100644 --- a/cranelift/filetests/filetests/isa/aarch64/condbr.clif +++ b/cranelift/filetests/filetests/isa/aarch64/condbr.clif @@ -153,8 +153,7 @@ function %f(i64, i64) -> i64 { block0(v0: i64, v1: i64): v2 = icmp eq v0, v1 v3 = uextend.i32 v2 - brnz v3, block1 - jump block2 + brif v3, block1, block2 block1: v4 = iconst.i64 1 @@ -179,8 +178,7 @@ function %f(i64, i64) -> i64 { block0(v0: i64, v1: i64): v2 = icmp eq v0, v1 v3 = uextend.i32 v2 - brnz v3, block1 - jump block1 + brif v3, block1, block1 block1: v4 = iconst.i64 1 @@ -198,10 +196,9 @@ block1: ; movz x0, #1 ; ret -function %i128_brz(i128){ +function %i128_brif_false(i128){ block0(v0: i128): - brz v0, block1 - jump block1 + brif v0, block1, block1 block1: nop @@ -210,7 +207,7 @@ block1: ; block0: ; orr x3, x0, x1 -; cbz x3, label1 ; b label2 +; cbnz x3, label1 ; b label2 ; block1: ; b label3 ; block2: @@ -218,10 +215,9 @@ block1: ; block3: ; ret -function %i128_brnz(i128){ +function %i128_brif_true(i128){ block0(v0: i128): - brnz v0, block1 - jump block1 + brif v0, block1, block1 block1: nop @@ -242,8 +238,7 @@ function %i128_bricmp_eq(i128, i128) { block0(v0: i128, v1: i128): v2 = icmp eq v0, v1 v3 = uextend.i32 v2 - brnz v3, block1 - jump block1 + brif v3, block1, block1 block1: return @@ -264,8 +259,7 @@ function %i128_bricmp_ne(i128, i128) { block0(v0: i128, v1: i128): v2 = icmp ne v0, v1 v3 = uextend.i32 v2 - brnz v3, block1 - jump block1 + brif v3, block1, block1 block1: return @@ -286,8 +280,7 @@ function %i128_bricmp_slt(i128, i128) { block0(v0: i128, v1: i128): v2 = icmp slt v0, v1 v3 = uextend.i32 v2 - brnz v3, block1 - jump block1 + brif v3, block1, block1 block1: return @@ -312,8 +305,7 @@ function %i128_bricmp_ult(i128, i128) { block0(v0: i128, v1: i128): v2 = icmp ult v0, v1 v3 = uextend.i32 v2 - brnz v3, block1 - jump block1 + brif v3, block1, block1 block1: return @@ -338,8 +330,7 @@ function %i128_bricmp_sle(i128, i128) { block0(v0: i128, v1: i128): v2 = icmp sle v0, v1 v3 = uextend.i32 v2 - brnz v3, block1 - jump block1 + brif v3, block1, block1 block1: return @@ -365,8 +356,7 @@ function %i128_bricmp_ule(i128, i128) { block0(v0: i128, v1: i128): v2 = icmp ule v0, v1 v3 = uextend.i32 v2 - brnz v3, block1 - jump block1 + brif v3, block1, block1 block1: return @@ -392,8 +382,7 @@ function %i128_bricmp_sgt(i128, i128) { block0(v0: i128, v1: i128): v2 = icmp sgt v0, v1 v3 = uextend.i32 v2 - brnz v3, block1 - jump block1 + brif v3, block1, block1 block1: return @@ -418,8 +407,7 @@ function %i128_bricmp_ugt(i128, i128) { block0(v0: i128, v1: i128): v2 = icmp ugt v0, v1 v3 = uextend.i32 v2 - brnz v3, block1 - jump block1 + brif v3, block1, block1 block1: return @@ -444,8 +432,7 @@ function %i128_bricmp_sge(i128, i128) { block0(v0: i128, v1: i128): v2 = icmp sge v0, v1 v3 = uextend.i32 v2 - brnz v3, block1 - jump block1 + brif v3, block1, block1 block1: return @@ -471,8 +458,7 @@ function %i128_bricmp_uge(i128, i128) { block0(v0: i128, v1: i128): v2 = icmp uge v0, v1 v3 = uextend.i32 v2 - brnz v3, block1 - jump block1 + brif v3, block1, block1 block1: return diff --git a/cranelift/filetests/filetests/isa/aarch64/reftypes.clif b/cranelift/filetests/filetests/isa/aarch64/reftypes.clif index 3a90970bc2..5b244f8683 100644 --- a/cranelift/filetests/filetests/isa/aarch64/reftypes.clif +++ b/cranelift/filetests/filetests/isa/aarch64/reftypes.clif @@ -49,8 +49,7 @@ function %f4(r64, r64) -> r64, r64, r64 { block0(v0: r64, v1: r64): v2 = call fn0(v0) stack_store.r64 v0, ss0 - brz v2, block1(v1, v0) - jump block2(v0, v1) + brif v2, block2(v0, v1), block1(v1, v0) block1(v3: r64, v4: r64): jump block3(v3, v4) @@ -75,18 +74,18 @@ block3(v7: r64, v8: r64): ; ldr x6, [sp, #8] ; str x6, [x15] ; uxtb w0, w0 -; cbz x0, label1 ; b label3 +; cbnz x0, label1 ; b label3 ; block1: ; b label2 ; block2: -; mov x1, x6 -; ldr x0, [sp, #16] +; mov x0, x6 +; ldr x1, [sp, #16] ; b label5 ; block3: ; b label4 ; block4: -; mov x0, x6 -; ldr x1, [sp, #16] +; mov x1, x6 +; ldr x0, [sp, #16] ; b label5 ; block5: ; mov x2, sp diff --git a/cranelift/filetests/filetests/isa/aarch64/wasm/load_store_dynamic_kind_i32_index_0_guard_no_spectre_i32_access_0_offset.wat b/cranelift/filetests/filetests/isa/aarch64/wasm/load_store_dynamic_kind_i32_index_0_guard_no_spectre_i32_access_0_offset.wat index d4eb6bba53..154dea724c 100644 --- a/cranelift/filetests/filetests/isa/aarch64/wasm/load_store_dynamic_kind_i32_index_0_guard_no_spectre_i32_access_0_offset.wat +++ b/cranelift/filetests/filetests/isa/aarch64/wasm/load_store_dynamic_kind_i32_index_0_guard_no_spectre_i32_access_0_offset.wat @@ -45,14 +45,14 @@ ;; ldr x8, [x2, #8] ;; sub x8, x8, #4 ;; subs xzr, x7, x8 -;; b.ls label1 ; b label3 -;; block1: -;; ldr x9, [x2] -;; str w1, [x9, w0, UXTW] -;; b label2 +;; b.hi label1 ; b label2 ;; block2: -;; ret +;; ldr x10, [x2] +;; str w1, [x10, w0, UXTW] +;; b label3 ;; block3: +;; ret +;; block1: ;; udf #0xc11f ;; ;; function u0:1: @@ -61,12 +61,12 @@ ;; ldr x8, [x1, #8] ;; sub x8, x8, #4 ;; subs xzr, x7, x8 -;; b.ls label1 ; b label3 -;; block1: -;; ldr x9, [x1] -;; ldr w0, [x9, w0, UXTW] -;; b label2 +;; b.hi label1 ; b label2 ;; block2: -;; ret +;; ldr x10, [x1] +;; ldr w0, [x10, w0, UXTW] +;; b label3 ;; block3: -;; udf #0xc11f \ No newline at end of file +;; ret +;; block1: +;; udf #0xc11f diff --git a/cranelift/filetests/filetests/isa/aarch64/wasm/load_store_dynamic_kind_i32_index_0_guard_no_spectre_i32_access_0x1000_offset.wat b/cranelift/filetests/filetests/isa/aarch64/wasm/load_store_dynamic_kind_i32_index_0_guard_no_spectre_i32_access_0x1000_offset.wat index bcd5760a7c..61c28def2a 100644 --- a/cranelift/filetests/filetests/isa/aarch64/wasm/load_store_dynamic_kind_i32_index_0_guard_no_spectre_i32_access_0x1000_offset.wat +++ b/cranelift/filetests/filetests/isa/aarch64/wasm/load_store_dynamic_kind_i32_index_0_guard_no_spectre_i32_access_0x1000_offset.wat @@ -46,15 +46,15 @@ ;; movn x8, #4099 ;; add x10, x10, x8 ;; subs xzr, x9, x10 -;; b.ls label1 ; b label3 -;; block1: -;; ldr x11, [x2] -;; add x11, x11, #4096 -;; str w1, [x11, w0, UXTW] -;; b label2 +;; b.hi label1 ; b label2 ;; block2: -;; ret +;; ldr x12, [x2] +;; add x12, x12, #4096 +;; str w1, [x12, w0, UXTW] +;; b label3 ;; block3: +;; ret +;; block1: ;; udf #0xc11f ;; ;; function u0:1: @@ -64,13 +64,13 @@ ;; movn x8, #4099 ;; add x10, x10, x8 ;; subs xzr, x9, x10 -;; b.ls label1 ; b label3 -;; block1: -;; ldr x11, [x1] -;; add x10, x11, #4096 -;; ldr w0, [x10, w0, UXTW] -;; b label2 +;; b.hi label1 ; b label2 ;; block2: -;; ret +;; ldr x12, [x1] +;; add x11, x12, #4096 +;; ldr w0, [x11, w0, UXTW] +;; b label3 ;; block3: -;; udf #0xc11f \ No newline at end of file +;; ret +;; block1: +;; udf #0xc11f diff --git a/cranelift/filetests/filetests/isa/aarch64/wasm/load_store_dynamic_kind_i32_index_0_guard_no_spectre_i32_access_0xffff0000_offset.wat b/cranelift/filetests/filetests/isa/aarch64/wasm/load_store_dynamic_kind_i32_index_0_guard_no_spectre_i32_access_0xffff0000_offset.wat index 6d0f53cd80..b4f516ce44 100644 --- a/cranelift/filetests/filetests/isa/aarch64/wasm/load_store_dynamic_kind_i32_index_0_guard_no_spectre_i32_access_0xffff0000_offset.wat +++ b/cranelift/filetests/filetests/isa/aarch64/wasm/load_store_dynamic_kind_i32_index_0_guard_no_spectre_i32_access_0xffff0000_offset.wat @@ -47,16 +47,16 @@ ;; b.lo 8 ; udf ;; ldr x12, [x2, #8] ;; subs xzr, x11, x12 -;; b.ls label1 ; b label3 -;; block1: -;; ldr x13, [x2] -;; movz x14, #65535, LSL #16 -;; add x13, x14, x13 -;; str w1, [x13, w0, UXTW] -;; b label2 +;; b.hi label1 ; b label2 ;; block2: -;; ret +;; ldr x14, [x2] +;; movz x15, #65535, LSL #16 +;; add x14, x15, x14 +;; str w1, [x14, w0, UXTW] +;; b label3 ;; block3: +;; ret +;; block1: ;; udf #0xc11f ;; ;; function u0:1: @@ -67,14 +67,14 @@ ;; b.lo 8 ; udf ;; ldr x12, [x1, #8] ;; subs xzr, x11, x12 -;; b.ls label1 ; b label3 -;; block1: -;; ldr x13, [x1] -;; movz x12, #65535, LSL #16 -;; add x12, x12, x13 -;; ldr w0, [x12, w0, UXTW] -;; b label2 +;; b.hi label1 ; b label2 ;; block2: -;; ret +;; ldr x14, [x1] +;; movz x13, #65535, LSL #16 +;; add x13, x13, x14 +;; ldr w0, [x13, w0, UXTW] +;; b label3 ;; block3: -;; udf #0xc11f \ No newline at end of file +;; ret +;; block1: +;; udf #0xc11f diff --git a/cranelift/filetests/filetests/isa/aarch64/wasm/load_store_dynamic_kind_i32_index_0_guard_no_spectre_i8_access_0_offset.wat b/cranelift/filetests/filetests/isa/aarch64/wasm/load_store_dynamic_kind_i32_index_0_guard_no_spectre_i8_access_0_offset.wat index 49420a488d..6aa9336db4 100644 --- a/cranelift/filetests/filetests/isa/aarch64/wasm/load_store_dynamic_kind_i32_index_0_guard_no_spectre_i8_access_0_offset.wat +++ b/cranelift/filetests/filetests/isa/aarch64/wasm/load_store_dynamic_kind_i32_index_0_guard_no_spectre_i8_access_0_offset.wat @@ -44,14 +44,14 @@ ;; mov w6, w0 ;; ldr x7, [x2, #8] ;; subs xzr, x6, x7 -;; b.lo label1 ; b label3 -;; block1: -;; ldr x8, [x2] -;; strb w1, [x8, w0, UXTW] -;; b label2 +;; b.hs label1 ; b label2 ;; block2: -;; ret +;; ldr x9, [x2] +;; strb w1, [x9, w0, UXTW] +;; b label3 ;; block3: +;; ret +;; block1: ;; udf #0xc11f ;; ;; function u0:1: @@ -59,12 +59,12 @@ ;; mov w6, w0 ;; ldr x7, [x1, #8] ;; subs xzr, x6, x7 -;; b.lo label1 ; b label3 -;; block1: -;; ldr x8, [x1] -;; ldrb w0, [x8, w0, UXTW] -;; b label2 +;; b.hs label1 ; b label2 ;; block2: -;; ret +;; ldr x9, [x1] +;; ldrb w0, [x9, w0, UXTW] +;; b label3 ;; block3: -;; udf #0xc11f \ No newline at end of file +;; ret +;; block1: +;; udf #0xc11f diff --git a/cranelift/filetests/filetests/isa/aarch64/wasm/load_store_dynamic_kind_i32_index_0_guard_no_spectre_i8_access_0x1000_offset.wat b/cranelift/filetests/filetests/isa/aarch64/wasm/load_store_dynamic_kind_i32_index_0_guard_no_spectre_i8_access_0x1000_offset.wat index 3fd48e371a..cae5266b60 100644 --- a/cranelift/filetests/filetests/isa/aarch64/wasm/load_store_dynamic_kind_i32_index_0_guard_no_spectre_i8_access_0x1000_offset.wat +++ b/cranelift/filetests/filetests/isa/aarch64/wasm/load_store_dynamic_kind_i32_index_0_guard_no_spectre_i8_access_0x1000_offset.wat @@ -46,15 +46,15 @@ ;; movn x8, #4096 ;; add x10, x10, x8 ;; subs xzr, x9, x10 -;; b.ls label1 ; b label3 -;; block1: -;; ldr x11, [x2] -;; add x11, x11, #4096 -;; strb w1, [x11, w0, UXTW] -;; b label2 +;; b.hi label1 ; b label2 ;; block2: -;; ret +;; ldr x12, [x2] +;; add x12, x12, #4096 +;; strb w1, [x12, w0, UXTW] +;; b label3 ;; block3: +;; ret +;; block1: ;; udf #0xc11f ;; ;; function u0:1: @@ -64,13 +64,13 @@ ;; movn x8, #4096 ;; add x10, x10, x8 ;; subs xzr, x9, x10 -;; b.ls label1 ; b label3 -;; block1: -;; ldr x11, [x1] -;; add x10, x11, #4096 -;; ldrb w0, [x10, w0, UXTW] -;; b label2 +;; b.hi label1 ; b label2 ;; block2: -;; ret +;; ldr x12, [x1] +;; add x11, x12, #4096 +;; ldrb w0, [x11, w0, UXTW] +;; b label3 ;; block3: -;; udf #0xc11f \ No newline at end of file +;; ret +;; block1: +;; udf #0xc11f diff --git a/cranelift/filetests/filetests/isa/aarch64/wasm/load_store_dynamic_kind_i32_index_0_guard_no_spectre_i8_access_0xffff0000_offset.wat b/cranelift/filetests/filetests/isa/aarch64/wasm/load_store_dynamic_kind_i32_index_0_guard_no_spectre_i8_access_0xffff0000_offset.wat index b823b8bc29..c7cd5be617 100644 --- a/cranelift/filetests/filetests/isa/aarch64/wasm/load_store_dynamic_kind_i32_index_0_guard_no_spectre_i8_access_0xffff0000_offset.wat +++ b/cranelift/filetests/filetests/isa/aarch64/wasm/load_store_dynamic_kind_i32_index_0_guard_no_spectre_i8_access_0xffff0000_offset.wat @@ -47,16 +47,16 @@ ;; b.lo 8 ; udf ;; ldr x12, [x2, #8] ;; subs xzr, x11, x12 -;; b.ls label1 ; b label3 -;; block1: -;; ldr x13, [x2] -;; movz x14, #65535, LSL #16 -;; add x13, x14, x13 -;; strb w1, [x13, w0, UXTW] -;; b label2 +;; b.hi label1 ; b label2 ;; block2: -;; ret +;; ldr x14, [x2] +;; movz x15, #65535, LSL #16 +;; add x14, x15, x14 +;; strb w1, [x14, w0, UXTW] +;; b label3 ;; block3: +;; ret +;; block1: ;; udf #0xc11f ;; ;; function u0:1: @@ -67,14 +67,14 @@ ;; b.lo 8 ; udf ;; ldr x12, [x1, #8] ;; subs xzr, x11, x12 -;; b.ls label1 ; b label3 -;; block1: -;; ldr x13, [x1] -;; movz x12, #65535, LSL #16 -;; add x12, x12, x13 -;; ldrb w0, [x12, w0, UXTW] -;; b label2 +;; b.hi label1 ; b label2 ;; block2: -;; ret +;; ldr x14, [x1] +;; movz x13, #65535, LSL #16 +;; add x13, x13, x14 +;; ldrb w0, [x13, w0, UXTW] +;; b label3 ;; block3: -;; udf #0xc11f \ No newline at end of file +;; ret +;; block1: +;; udf #0xc11f diff --git a/cranelift/filetests/filetests/isa/aarch64/wasm/load_store_dynamic_kind_i32_index_0xffffffff_guard_no_spectre_i32_access_0_offset.wat b/cranelift/filetests/filetests/isa/aarch64/wasm/load_store_dynamic_kind_i32_index_0xffffffff_guard_no_spectre_i32_access_0_offset.wat index b6c9dfd757..bf17fae6c1 100644 --- a/cranelift/filetests/filetests/isa/aarch64/wasm/load_store_dynamic_kind_i32_index_0xffffffff_guard_no_spectre_i32_access_0_offset.wat +++ b/cranelift/filetests/filetests/isa/aarch64/wasm/load_store_dynamic_kind_i32_index_0xffffffff_guard_no_spectre_i32_access_0_offset.wat @@ -45,14 +45,14 @@ ;; ldr x8, [x2, #8] ;; sub x8, x8, #4 ;; subs xzr, x7, x8 -;; b.ls label1 ; b label3 -;; block1: -;; ldr x9, [x2] -;; str w1, [x9, w0, UXTW] -;; b label2 +;; b.hi label1 ; b label2 ;; block2: -;; ret +;; ldr x10, [x2] +;; str w1, [x10, w0, UXTW] +;; b label3 ;; block3: +;; ret +;; block1: ;; udf #0xc11f ;; ;; function u0:1: @@ -61,12 +61,12 @@ ;; ldr x8, [x1, #8] ;; sub x8, x8, #4 ;; subs xzr, x7, x8 -;; b.ls label1 ; b label3 -;; block1: -;; ldr x9, [x1] -;; ldr w0, [x9, w0, UXTW] -;; b label2 +;; b.hi label1 ; b label2 ;; block2: -;; ret +;; ldr x10, [x1] +;; ldr w0, [x10, w0, UXTW] +;; b label3 ;; block3: -;; udf #0xc11f \ No newline at end of file +;; ret +;; block1: +;; udf #0xc11f diff --git a/cranelift/filetests/filetests/isa/aarch64/wasm/load_store_dynamic_kind_i32_index_0xffffffff_guard_no_spectre_i32_access_0x1000_offset.wat b/cranelift/filetests/filetests/isa/aarch64/wasm/load_store_dynamic_kind_i32_index_0xffffffff_guard_no_spectre_i32_access_0x1000_offset.wat index c1a2f8e5b2..efdf671ae6 100644 --- a/cranelift/filetests/filetests/isa/aarch64/wasm/load_store_dynamic_kind_i32_index_0xffffffff_guard_no_spectre_i32_access_0x1000_offset.wat +++ b/cranelift/filetests/filetests/isa/aarch64/wasm/load_store_dynamic_kind_i32_index_0xffffffff_guard_no_spectre_i32_access_0x1000_offset.wat @@ -46,15 +46,15 @@ ;; movn x8, #4099 ;; add x10, x10, x8 ;; subs xzr, x9, x10 -;; b.ls label1 ; b label3 -;; block1: -;; ldr x11, [x2] -;; add x11, x11, #4096 -;; str w1, [x11, w0, UXTW] -;; b label2 +;; b.hi label1 ; b label2 ;; block2: -;; ret +;; ldr x12, [x2] +;; add x12, x12, #4096 +;; str w1, [x12, w0, UXTW] +;; b label3 ;; block3: +;; ret +;; block1: ;; udf #0xc11f ;; ;; function u0:1: @@ -64,13 +64,13 @@ ;; movn x8, #4099 ;; add x10, x10, x8 ;; subs xzr, x9, x10 -;; b.ls label1 ; b label3 -;; block1: -;; ldr x11, [x1] -;; add x10, x11, #4096 -;; ldr w0, [x10, w0, UXTW] -;; b label2 +;; b.hi label1 ; b label2 ;; block2: -;; ret +;; ldr x12, [x1] +;; add x11, x12, #4096 +;; ldr w0, [x11, w0, UXTW] +;; b label3 ;; block3: -;; udf #0xc11f \ No newline at end of file +;; ret +;; block1: +;; udf #0xc11f diff --git a/cranelift/filetests/filetests/isa/aarch64/wasm/load_store_dynamic_kind_i32_index_0xffffffff_guard_no_spectre_i32_access_0xffff0000_offset.wat b/cranelift/filetests/filetests/isa/aarch64/wasm/load_store_dynamic_kind_i32_index_0xffffffff_guard_no_spectre_i32_access_0xffff0000_offset.wat index 2ede1a5a2e..09ff6ed51c 100644 --- a/cranelift/filetests/filetests/isa/aarch64/wasm/load_store_dynamic_kind_i32_index_0xffffffff_guard_no_spectre_i32_access_0xffff0000_offset.wat +++ b/cranelift/filetests/filetests/isa/aarch64/wasm/load_store_dynamic_kind_i32_index_0xffffffff_guard_no_spectre_i32_access_0xffff0000_offset.wat @@ -47,16 +47,16 @@ ;; b.lo 8 ; udf ;; ldr x12, [x2, #8] ;; subs xzr, x11, x12 -;; b.ls label1 ; b label3 -;; block1: -;; ldr x13, [x2] -;; movz x14, #65535, LSL #16 -;; add x13, x14, x13 -;; str w1, [x13, w0, UXTW] -;; b label2 +;; b.hi label1 ; b label2 ;; block2: -;; ret +;; ldr x14, [x2] +;; movz x15, #65535, LSL #16 +;; add x14, x15, x14 +;; str w1, [x14, w0, UXTW] +;; b label3 ;; block3: +;; ret +;; block1: ;; udf #0xc11f ;; ;; function u0:1: @@ -67,14 +67,14 @@ ;; b.lo 8 ; udf ;; ldr x12, [x1, #8] ;; subs xzr, x11, x12 -;; b.ls label1 ; b label3 -;; block1: -;; ldr x13, [x1] -;; movz x12, #65535, LSL #16 -;; add x12, x12, x13 -;; ldr w0, [x12, w0, UXTW] -;; b label2 +;; b.hi label1 ; b label2 ;; block2: -;; ret +;; ldr x14, [x1] +;; movz x13, #65535, LSL #16 +;; add x13, x13, x14 +;; ldr w0, [x13, w0, UXTW] +;; b label3 ;; block3: -;; udf #0xc11f \ No newline at end of file +;; ret +;; block1: +;; udf #0xc11f diff --git a/cranelift/filetests/filetests/isa/aarch64/wasm/load_store_dynamic_kind_i32_index_0xffffffff_guard_no_spectre_i8_access_0_offset.wat b/cranelift/filetests/filetests/isa/aarch64/wasm/load_store_dynamic_kind_i32_index_0xffffffff_guard_no_spectre_i8_access_0_offset.wat index c039b6351f..b56297483b 100644 --- a/cranelift/filetests/filetests/isa/aarch64/wasm/load_store_dynamic_kind_i32_index_0xffffffff_guard_no_spectre_i8_access_0_offset.wat +++ b/cranelift/filetests/filetests/isa/aarch64/wasm/load_store_dynamic_kind_i32_index_0xffffffff_guard_no_spectre_i8_access_0_offset.wat @@ -44,14 +44,14 @@ ;; mov w6, w0 ;; ldr x7, [x2, #8] ;; subs xzr, x6, x7 -;; b.lo label1 ; b label3 -;; block1: -;; ldr x8, [x2] -;; strb w1, [x8, w0, UXTW] -;; b label2 +;; b.hs label1 ; b label2 ;; block2: -;; ret +;; ldr x9, [x2] +;; strb w1, [x9, w0, UXTW] +;; b label3 ;; block3: +;; ret +;; block1: ;; udf #0xc11f ;; ;; function u0:1: @@ -59,12 +59,12 @@ ;; mov w6, w0 ;; ldr x7, [x1, #8] ;; subs xzr, x6, x7 -;; b.lo label1 ; b label3 -;; block1: -;; ldr x8, [x1] -;; ldrb w0, [x8, w0, UXTW] -;; b label2 +;; b.hs label1 ; b label2 ;; block2: -;; ret +;; ldr x9, [x1] +;; ldrb w0, [x9, w0, UXTW] +;; b label3 ;; block3: -;; udf #0xc11f \ No newline at end of file +;; ret +;; block1: +;; udf #0xc11f diff --git a/cranelift/filetests/filetests/isa/aarch64/wasm/load_store_dynamic_kind_i32_index_0xffffffff_guard_no_spectre_i8_access_0x1000_offset.wat b/cranelift/filetests/filetests/isa/aarch64/wasm/load_store_dynamic_kind_i32_index_0xffffffff_guard_no_spectre_i8_access_0x1000_offset.wat index 0b2ef270d1..c6b380f25c 100644 --- a/cranelift/filetests/filetests/isa/aarch64/wasm/load_store_dynamic_kind_i32_index_0xffffffff_guard_no_spectre_i8_access_0x1000_offset.wat +++ b/cranelift/filetests/filetests/isa/aarch64/wasm/load_store_dynamic_kind_i32_index_0xffffffff_guard_no_spectre_i8_access_0x1000_offset.wat @@ -46,15 +46,15 @@ ;; movn x8, #4096 ;; add x10, x10, x8 ;; subs xzr, x9, x10 -;; b.ls label1 ; b label3 -;; block1: -;; ldr x11, [x2] -;; add x11, x11, #4096 -;; strb w1, [x11, w0, UXTW] -;; b label2 +;; b.hi label1 ; b label2 ;; block2: -;; ret +;; ldr x12, [x2] +;; add x12, x12, #4096 +;; strb w1, [x12, w0, UXTW] +;; b label3 ;; block3: +;; ret +;; block1: ;; udf #0xc11f ;; ;; function u0:1: @@ -64,13 +64,13 @@ ;; movn x8, #4096 ;; add x10, x10, x8 ;; subs xzr, x9, x10 -;; b.ls label1 ; b label3 -;; block1: -;; ldr x11, [x1] -;; add x10, x11, #4096 -;; ldrb w0, [x10, w0, UXTW] -;; b label2 +;; b.hi label1 ; b label2 ;; block2: -;; ret +;; ldr x12, [x1] +;; add x11, x12, #4096 +;; ldrb w0, [x11, w0, UXTW] +;; b label3 ;; block3: -;; udf #0xc11f \ No newline at end of file +;; ret +;; block1: +;; udf #0xc11f diff --git a/cranelift/filetests/filetests/isa/aarch64/wasm/load_store_dynamic_kind_i32_index_0xffffffff_guard_no_spectre_i8_access_0xffff0000_offset.wat b/cranelift/filetests/filetests/isa/aarch64/wasm/load_store_dynamic_kind_i32_index_0xffffffff_guard_no_spectre_i8_access_0xffff0000_offset.wat index b68345f1b9..000a30855c 100644 --- a/cranelift/filetests/filetests/isa/aarch64/wasm/load_store_dynamic_kind_i32_index_0xffffffff_guard_no_spectre_i8_access_0xffff0000_offset.wat +++ b/cranelift/filetests/filetests/isa/aarch64/wasm/load_store_dynamic_kind_i32_index_0xffffffff_guard_no_spectre_i8_access_0xffff0000_offset.wat @@ -47,16 +47,16 @@ ;; b.lo 8 ; udf ;; ldr x12, [x2, #8] ;; subs xzr, x11, x12 -;; b.ls label1 ; b label3 -;; block1: -;; ldr x13, [x2] -;; movz x14, #65535, LSL #16 -;; add x13, x14, x13 -;; strb w1, [x13, w0, UXTW] -;; b label2 +;; b.hi label1 ; b label2 ;; block2: -;; ret +;; ldr x14, [x2] +;; movz x15, #65535, LSL #16 +;; add x14, x15, x14 +;; strb w1, [x14, w0, UXTW] +;; b label3 ;; block3: +;; ret +;; block1: ;; udf #0xc11f ;; ;; function u0:1: @@ -67,14 +67,14 @@ ;; b.lo 8 ; udf ;; ldr x12, [x1, #8] ;; subs xzr, x11, x12 -;; b.ls label1 ; b label3 -;; block1: -;; ldr x13, [x1] -;; movz x12, #65535, LSL #16 -;; add x12, x12, x13 -;; ldrb w0, [x12, w0, UXTW] -;; b label2 +;; b.hi label1 ; b label2 ;; block2: -;; ret +;; ldr x14, [x1] +;; movz x13, #65535, LSL #16 +;; add x13, x13, x14 +;; ldrb w0, [x13, w0, UXTW] +;; b label3 ;; block3: -;; udf #0xc11f \ No newline at end of file +;; ret +;; block1: +;; udf #0xc11f diff --git a/cranelift/filetests/filetests/isa/aarch64/wasm/load_store_dynamic_kind_i64_index_0_guard_no_spectre_i32_access_0_offset.wat b/cranelift/filetests/filetests/isa/aarch64/wasm/load_store_dynamic_kind_i64_index_0_guard_no_spectre_i32_access_0_offset.wat index 15bba90979..438f57ec2d 100644 --- a/cranelift/filetests/filetests/isa/aarch64/wasm/load_store_dynamic_kind_i64_index_0_guard_no_spectre_i32_access_0_offset.wat +++ b/cranelift/filetests/filetests/isa/aarch64/wasm/load_store_dynamic_kind_i64_index_0_guard_no_spectre_i32_access_0_offset.wat @@ -44,14 +44,14 @@ ;; ldr x6, [x2, #8] ;; sub x6, x6, #4 ;; subs xzr, x0, x6 -;; b.ls label1 ; b label3 -;; block1: -;; ldr x8, [x2] -;; str w1, [x8, x0] -;; b label2 +;; b.hi label1 ; b label2 ;; block2: -;; ret +;; ldr x9, [x2] +;; str w1, [x9, x0] +;; b label3 ;; block3: +;; ret +;; block1: ;; udf #0xc11f ;; ;; function u0:1: @@ -59,12 +59,12 @@ ;; ldr x6, [x1, #8] ;; sub x6, x6, #4 ;; subs xzr, x0, x6 -;; b.ls label1 ; b label3 -;; block1: -;; ldr x8, [x1] -;; ldr w0, [x8, x0] -;; b label2 +;; b.hi label1 ; b label2 ;; block2: -;; ret +;; ldr x9, [x1] +;; ldr w0, [x9, x0] +;; b label3 ;; block3: -;; udf #0xc11f \ No newline at end of file +;; ret +;; block1: +;; udf #0xc11f diff --git a/cranelift/filetests/filetests/isa/aarch64/wasm/load_store_dynamic_kind_i64_index_0_guard_no_spectre_i32_access_0x1000_offset.wat b/cranelift/filetests/filetests/isa/aarch64/wasm/load_store_dynamic_kind_i64_index_0_guard_no_spectre_i32_access_0x1000_offset.wat index cbaae04146..6c8a245680 100644 --- a/cranelift/filetests/filetests/isa/aarch64/wasm/load_store_dynamic_kind_i64_index_0_guard_no_spectre_i32_access_0x1000_offset.wat +++ b/cranelift/filetests/filetests/isa/aarch64/wasm/load_store_dynamic_kind_i64_index_0_guard_no_spectre_i32_access_0x1000_offset.wat @@ -45,15 +45,15 @@ ;; movn x7, #4099 ;; add x9, x8, x7 ;; subs xzr, x0, x9 -;; b.ls label1 ; b label3 -;; block1: -;; ldr x10, [x2] -;; add x11, x0, #4096 -;; str w1, [x11, x10] -;; b label2 +;; b.hi label1 ; b label2 ;; block2: -;; ret +;; ldr x11, [x2] +;; add x12, x0, #4096 +;; str w1, [x12, x11] +;; b label3 ;; block3: +;; ret +;; block1: ;; udf #0xc11f ;; ;; function u0:1: @@ -62,13 +62,13 @@ ;; movn x7, #4099 ;; add x9, x8, x7 ;; subs xzr, x0, x9 -;; b.ls label1 ; b label3 -;; block1: -;; ldr x10, [x1] -;; add x9, x0, #4096 -;; ldr w0, [x9, x10] -;; b label2 +;; b.hi label1 ; b label2 ;; block2: -;; ret +;; ldr x11, [x1] +;; add x10, x0, #4096 +;; ldr w0, [x10, x11] +;; b label3 ;; block3: -;; udf #0xc11f \ No newline at end of file +;; ret +;; block1: +;; udf #0xc11f diff --git a/cranelift/filetests/filetests/isa/aarch64/wasm/load_store_dynamic_kind_i64_index_0_guard_no_spectre_i32_access_0xffff0000_offset.wat b/cranelift/filetests/filetests/isa/aarch64/wasm/load_store_dynamic_kind_i64_index_0_guard_no_spectre_i32_access_0xffff0000_offset.wat index 95d88d8988..22af03a067 100644 --- a/cranelift/filetests/filetests/isa/aarch64/wasm/load_store_dynamic_kind_i64_index_0_guard_no_spectre_i32_access_0xffff0000_offset.wat +++ b/cranelift/filetests/filetests/isa/aarch64/wasm/load_store_dynamic_kind_i64_index_0_guard_no_spectre_i32_access_0xffff0000_offset.wat @@ -46,16 +46,16 @@ ;; b.lo 8 ; udf ;; ldr x11, [x2, #8] ;; subs xzr, x10, x11 -;; b.ls label1 ; b label3 -;; block1: -;; ldr x12, [x2] -;; movz x13, #65535, LSL #16 -;; add x13, x13, x0 -;; str w1, [x13, x12] -;; b label2 +;; b.hi label1 ; b label2 ;; block2: -;; ret +;; ldr x13, [x2] +;; movz x14, #65535, LSL #16 +;; add x14, x14, x0 +;; str w1, [x14, x13] +;; b label3 ;; block3: +;; ret +;; block1: ;; udf #0xc11f ;; ;; function u0:1: @@ -65,14 +65,14 @@ ;; b.lo 8 ; udf ;; ldr x11, [x1, #8] ;; subs xzr, x10, x11 -;; b.ls label1 ; b label3 -;; block1: -;; ldr x12, [x1] -;; movz x11, #65535, LSL #16 -;; add x11, x11, x0 -;; ldr w0, [x11, x12] -;; b label2 +;; b.hi label1 ; b label2 ;; block2: -;; ret +;; ldr x13, [x1] +;; movz x12, #65535, LSL #16 +;; add x12, x12, x0 +;; ldr w0, [x12, x13] +;; b label3 ;; block3: -;; udf #0xc11f \ No newline at end of file +;; ret +;; block1: +;; udf #0xc11f diff --git a/cranelift/filetests/filetests/isa/aarch64/wasm/load_store_dynamic_kind_i64_index_0_guard_no_spectre_i8_access_0_offset.wat b/cranelift/filetests/filetests/isa/aarch64/wasm/load_store_dynamic_kind_i64_index_0_guard_no_spectre_i8_access_0_offset.wat index 4c80c3e4e7..f26d2e046a 100644 --- a/cranelift/filetests/filetests/isa/aarch64/wasm/load_store_dynamic_kind_i64_index_0_guard_no_spectre_i8_access_0_offset.wat +++ b/cranelift/filetests/filetests/isa/aarch64/wasm/load_store_dynamic_kind_i64_index_0_guard_no_spectre_i8_access_0_offset.wat @@ -43,26 +43,26 @@ ;; block0: ;; ldr x5, [x2, #8] ;; subs xzr, x0, x5 -;; b.lo label1 ; b label3 -;; block1: -;; ldr x7, [x2] -;; strb w1, [x7, x0] -;; b label2 +;; b.hs label1 ; b label2 ;; block2: -;; ret +;; ldr x8, [x2] +;; strb w1, [x8, x0] +;; b label3 ;; block3: +;; ret +;; block1: ;; udf #0xc11f ;; ;; function u0:1: ;; block0: ;; ldr x5, [x1, #8] ;; subs xzr, x0, x5 -;; b.lo label1 ; b label3 -;; block1: -;; ldr x7, [x1] -;; ldrb w0, [x7, x0] -;; b label2 +;; b.hs label1 ; b label2 ;; block2: -;; ret +;; ldr x8, [x1] +;; ldrb w0, [x8, x0] +;; b label3 ;; block3: -;; udf #0xc11f \ No newline at end of file +;; ret +;; block1: +;; udf #0xc11f diff --git a/cranelift/filetests/filetests/isa/aarch64/wasm/load_store_dynamic_kind_i64_index_0_guard_no_spectre_i8_access_0x1000_offset.wat b/cranelift/filetests/filetests/isa/aarch64/wasm/load_store_dynamic_kind_i64_index_0_guard_no_spectre_i8_access_0x1000_offset.wat index 0a3c767231..b389961283 100644 --- a/cranelift/filetests/filetests/isa/aarch64/wasm/load_store_dynamic_kind_i64_index_0_guard_no_spectre_i8_access_0x1000_offset.wat +++ b/cranelift/filetests/filetests/isa/aarch64/wasm/load_store_dynamic_kind_i64_index_0_guard_no_spectre_i8_access_0x1000_offset.wat @@ -45,15 +45,15 @@ ;; movn x7, #4096 ;; add x9, x8, x7 ;; subs xzr, x0, x9 -;; b.ls label1 ; b label3 -;; block1: -;; ldr x10, [x2] -;; add x11, x0, #4096 -;; strb w1, [x11, x10] -;; b label2 +;; b.hi label1 ; b label2 ;; block2: -;; ret +;; ldr x11, [x2] +;; add x12, x0, #4096 +;; strb w1, [x12, x11] +;; b label3 ;; block3: +;; ret +;; block1: ;; udf #0xc11f ;; ;; function u0:1: @@ -62,13 +62,13 @@ ;; movn x7, #4096 ;; add x9, x8, x7 ;; subs xzr, x0, x9 -;; b.ls label1 ; b label3 -;; block1: -;; ldr x10, [x1] -;; add x9, x0, #4096 -;; ldrb w0, [x9, x10] -;; b label2 +;; b.hi label1 ; b label2 ;; block2: -;; ret +;; ldr x11, [x1] +;; add x10, x0, #4096 +;; ldrb w0, [x10, x11] +;; b label3 ;; block3: -;; udf #0xc11f \ No newline at end of file +;; ret +;; block1: +;; udf #0xc11f diff --git a/cranelift/filetests/filetests/isa/aarch64/wasm/load_store_dynamic_kind_i64_index_0_guard_no_spectre_i8_access_0xffff0000_offset.wat b/cranelift/filetests/filetests/isa/aarch64/wasm/load_store_dynamic_kind_i64_index_0_guard_no_spectre_i8_access_0xffff0000_offset.wat index be840953c9..93ef95db4e 100644 --- a/cranelift/filetests/filetests/isa/aarch64/wasm/load_store_dynamic_kind_i64_index_0_guard_no_spectre_i8_access_0xffff0000_offset.wat +++ b/cranelift/filetests/filetests/isa/aarch64/wasm/load_store_dynamic_kind_i64_index_0_guard_no_spectre_i8_access_0xffff0000_offset.wat @@ -46,16 +46,16 @@ ;; b.lo 8 ; udf ;; ldr x11, [x2, #8] ;; subs xzr, x10, x11 -;; b.ls label1 ; b label3 -;; block1: -;; ldr x12, [x2] -;; movz x13, #65535, LSL #16 -;; add x13, x13, x0 -;; strb w1, [x13, x12] -;; b label2 +;; b.hi label1 ; b label2 ;; block2: -;; ret +;; ldr x13, [x2] +;; movz x14, #65535, LSL #16 +;; add x14, x14, x0 +;; strb w1, [x14, x13] +;; b label3 ;; block3: +;; ret +;; block1: ;; udf #0xc11f ;; ;; function u0:1: @@ -65,14 +65,14 @@ ;; b.lo 8 ; udf ;; ldr x11, [x1, #8] ;; subs xzr, x10, x11 -;; b.ls label1 ; b label3 -;; block1: -;; ldr x12, [x1] -;; movz x11, #65535, LSL #16 -;; add x11, x11, x0 -;; ldrb w0, [x11, x12] -;; b label2 +;; b.hi label1 ; b label2 ;; block2: -;; ret +;; ldr x13, [x1] +;; movz x12, #65535, LSL #16 +;; add x12, x12, x0 +;; ldrb w0, [x12, x13] +;; b label3 ;; block3: -;; udf #0xc11f \ No newline at end of file +;; ret +;; block1: +;; udf #0xc11f diff --git a/cranelift/filetests/filetests/isa/aarch64/wasm/load_store_dynamic_kind_i64_index_0xffffffff_guard_no_spectre_i32_access_0_offset.wat b/cranelift/filetests/filetests/isa/aarch64/wasm/load_store_dynamic_kind_i64_index_0xffffffff_guard_no_spectre_i32_access_0_offset.wat index 2b5d8c3fc3..f06e64c93b 100644 --- a/cranelift/filetests/filetests/isa/aarch64/wasm/load_store_dynamic_kind_i64_index_0xffffffff_guard_no_spectre_i32_access_0_offset.wat +++ b/cranelift/filetests/filetests/isa/aarch64/wasm/load_store_dynamic_kind_i64_index_0xffffffff_guard_no_spectre_i32_access_0_offset.wat @@ -44,14 +44,14 @@ ;; ldr x6, [x2, #8] ;; sub x6, x6, #4 ;; subs xzr, x0, x6 -;; b.ls label1 ; b label3 -;; block1: -;; ldr x8, [x2] -;; str w1, [x8, x0] -;; b label2 +;; b.hi label1 ; b label2 ;; block2: -;; ret +;; ldr x9, [x2] +;; str w1, [x9, x0] +;; b label3 ;; block3: +;; ret +;; block1: ;; udf #0xc11f ;; ;; function u0:1: @@ -59,12 +59,12 @@ ;; ldr x6, [x1, #8] ;; sub x6, x6, #4 ;; subs xzr, x0, x6 -;; b.ls label1 ; b label3 -;; block1: -;; ldr x8, [x1] -;; ldr w0, [x8, x0] -;; b label2 +;; b.hi label1 ; b label2 ;; block2: -;; ret +;; ldr x9, [x1] +;; ldr w0, [x9, x0] +;; b label3 ;; block3: -;; udf #0xc11f \ No newline at end of file +;; ret +;; block1: +;; udf #0xc11f diff --git a/cranelift/filetests/filetests/isa/aarch64/wasm/load_store_dynamic_kind_i64_index_0xffffffff_guard_no_spectre_i32_access_0x1000_offset.wat b/cranelift/filetests/filetests/isa/aarch64/wasm/load_store_dynamic_kind_i64_index_0xffffffff_guard_no_spectre_i32_access_0x1000_offset.wat index d40999d6e0..b1a4e68fc6 100644 --- a/cranelift/filetests/filetests/isa/aarch64/wasm/load_store_dynamic_kind_i64_index_0xffffffff_guard_no_spectre_i32_access_0x1000_offset.wat +++ b/cranelift/filetests/filetests/isa/aarch64/wasm/load_store_dynamic_kind_i64_index_0xffffffff_guard_no_spectre_i32_access_0x1000_offset.wat @@ -45,15 +45,15 @@ ;; movn x7, #4099 ;; add x9, x8, x7 ;; subs xzr, x0, x9 -;; b.ls label1 ; b label3 -;; block1: -;; ldr x10, [x2] -;; add x11, x0, #4096 -;; str w1, [x11, x10] -;; b label2 +;; b.hi label1 ; b label2 ;; block2: -;; ret +;; ldr x11, [x2] +;; add x12, x0, #4096 +;; str w1, [x12, x11] +;; b label3 ;; block3: +;; ret +;; block1: ;; udf #0xc11f ;; ;; function u0:1: @@ -62,13 +62,13 @@ ;; movn x7, #4099 ;; add x9, x8, x7 ;; subs xzr, x0, x9 -;; b.ls label1 ; b label3 -;; block1: -;; ldr x10, [x1] -;; add x9, x0, #4096 -;; ldr w0, [x9, x10] -;; b label2 +;; b.hi label1 ; b label2 ;; block2: -;; ret +;; ldr x11, [x1] +;; add x10, x0, #4096 +;; ldr w0, [x10, x11] +;; b label3 ;; block3: -;; udf #0xc11f \ No newline at end of file +;; ret +;; block1: +;; udf #0xc11f diff --git a/cranelift/filetests/filetests/isa/aarch64/wasm/load_store_dynamic_kind_i64_index_0xffffffff_guard_no_spectre_i32_access_0xffff0000_offset.wat b/cranelift/filetests/filetests/isa/aarch64/wasm/load_store_dynamic_kind_i64_index_0xffffffff_guard_no_spectre_i32_access_0xffff0000_offset.wat index 8c429cf53a..d3fe4838f8 100644 --- a/cranelift/filetests/filetests/isa/aarch64/wasm/load_store_dynamic_kind_i64_index_0xffffffff_guard_no_spectre_i32_access_0xffff0000_offset.wat +++ b/cranelift/filetests/filetests/isa/aarch64/wasm/load_store_dynamic_kind_i64_index_0xffffffff_guard_no_spectre_i32_access_0xffff0000_offset.wat @@ -46,16 +46,16 @@ ;; b.lo 8 ; udf ;; ldr x11, [x2, #8] ;; subs xzr, x10, x11 -;; b.ls label1 ; b label3 -;; block1: -;; ldr x12, [x2] -;; movz x13, #65535, LSL #16 -;; add x13, x13, x0 -;; str w1, [x13, x12] -;; b label2 +;; b.hi label1 ; b label2 ;; block2: -;; ret +;; ldr x13, [x2] +;; movz x14, #65535, LSL #16 +;; add x14, x14, x0 +;; str w1, [x14, x13] +;; b label3 ;; block3: +;; ret +;; block1: ;; udf #0xc11f ;; ;; function u0:1: @@ -65,14 +65,14 @@ ;; b.lo 8 ; udf ;; ldr x11, [x1, #8] ;; subs xzr, x10, x11 -;; b.ls label1 ; b label3 -;; block1: -;; ldr x12, [x1] -;; movz x11, #65535, LSL #16 -;; add x11, x11, x0 -;; ldr w0, [x11, x12] -;; b label2 +;; b.hi label1 ; b label2 ;; block2: -;; ret +;; ldr x13, [x1] +;; movz x12, #65535, LSL #16 +;; add x12, x12, x0 +;; ldr w0, [x12, x13] +;; b label3 ;; block3: -;; udf #0xc11f \ No newline at end of file +;; ret +;; block1: +;; udf #0xc11f diff --git a/cranelift/filetests/filetests/isa/aarch64/wasm/load_store_dynamic_kind_i64_index_0xffffffff_guard_no_spectre_i8_access_0_offset.wat b/cranelift/filetests/filetests/isa/aarch64/wasm/load_store_dynamic_kind_i64_index_0xffffffff_guard_no_spectre_i8_access_0_offset.wat index 666b88cbbf..843463e71f 100644 --- a/cranelift/filetests/filetests/isa/aarch64/wasm/load_store_dynamic_kind_i64_index_0xffffffff_guard_no_spectre_i8_access_0_offset.wat +++ b/cranelift/filetests/filetests/isa/aarch64/wasm/load_store_dynamic_kind_i64_index_0xffffffff_guard_no_spectre_i8_access_0_offset.wat @@ -43,26 +43,26 @@ ;; block0: ;; ldr x5, [x2, #8] ;; subs xzr, x0, x5 -;; b.lo label1 ; b label3 -;; block1: -;; ldr x7, [x2] -;; strb w1, [x7, x0] -;; b label2 +;; b.hs label1 ; b label2 ;; block2: -;; ret +;; ldr x8, [x2] +;; strb w1, [x8, x0] +;; b label3 ;; block3: +;; ret +;; block1: ;; udf #0xc11f ;; ;; function u0:1: ;; block0: ;; ldr x5, [x1, #8] ;; subs xzr, x0, x5 -;; b.lo label1 ; b label3 -;; block1: -;; ldr x7, [x1] -;; ldrb w0, [x7, x0] -;; b label2 +;; b.hs label1 ; b label2 ;; block2: -;; ret +;; ldr x8, [x1] +;; ldrb w0, [x8, x0] +;; b label3 ;; block3: -;; udf #0xc11f \ No newline at end of file +;; ret +;; block1: +;; udf #0xc11f diff --git a/cranelift/filetests/filetests/isa/aarch64/wasm/load_store_dynamic_kind_i64_index_0xffffffff_guard_no_spectre_i8_access_0x1000_offset.wat b/cranelift/filetests/filetests/isa/aarch64/wasm/load_store_dynamic_kind_i64_index_0xffffffff_guard_no_spectre_i8_access_0x1000_offset.wat index 4488f886e6..e8a41bfdf4 100644 --- a/cranelift/filetests/filetests/isa/aarch64/wasm/load_store_dynamic_kind_i64_index_0xffffffff_guard_no_spectre_i8_access_0x1000_offset.wat +++ b/cranelift/filetests/filetests/isa/aarch64/wasm/load_store_dynamic_kind_i64_index_0xffffffff_guard_no_spectre_i8_access_0x1000_offset.wat @@ -45,15 +45,15 @@ ;; movn x7, #4096 ;; add x9, x8, x7 ;; subs xzr, x0, x9 -;; b.ls label1 ; b label3 -;; block1: -;; ldr x10, [x2] -;; add x11, x0, #4096 -;; strb w1, [x11, x10] -;; b label2 +;; b.hi label1 ; b label2 ;; block2: -;; ret +;; ldr x11, [x2] +;; add x12, x0, #4096 +;; strb w1, [x12, x11] +;; b label3 ;; block3: +;; ret +;; block1: ;; udf #0xc11f ;; ;; function u0:1: @@ -62,13 +62,13 @@ ;; movn x7, #4096 ;; add x9, x8, x7 ;; subs xzr, x0, x9 -;; b.ls label1 ; b label3 -;; block1: -;; ldr x10, [x1] -;; add x9, x0, #4096 -;; ldrb w0, [x9, x10] -;; b label2 +;; b.hi label1 ; b label2 ;; block2: -;; ret +;; ldr x11, [x1] +;; add x10, x0, #4096 +;; ldrb w0, [x10, x11] +;; b label3 ;; block3: -;; udf #0xc11f \ No newline at end of file +;; ret +;; block1: +;; udf #0xc11f diff --git a/cranelift/filetests/filetests/isa/aarch64/wasm/load_store_dynamic_kind_i64_index_0xffffffff_guard_no_spectre_i8_access_0xffff0000_offset.wat b/cranelift/filetests/filetests/isa/aarch64/wasm/load_store_dynamic_kind_i64_index_0xffffffff_guard_no_spectre_i8_access_0xffff0000_offset.wat index 9db0489a4a..f4f25f5ec6 100644 --- a/cranelift/filetests/filetests/isa/aarch64/wasm/load_store_dynamic_kind_i64_index_0xffffffff_guard_no_spectre_i8_access_0xffff0000_offset.wat +++ b/cranelift/filetests/filetests/isa/aarch64/wasm/load_store_dynamic_kind_i64_index_0xffffffff_guard_no_spectre_i8_access_0xffff0000_offset.wat @@ -46,16 +46,16 @@ ;; b.lo 8 ; udf ;; ldr x11, [x2, #8] ;; subs xzr, x10, x11 -;; b.ls label1 ; b label3 -;; block1: -;; ldr x12, [x2] -;; movz x13, #65535, LSL #16 -;; add x13, x13, x0 -;; strb w1, [x13, x12] -;; b label2 +;; b.hi label1 ; b label2 ;; block2: -;; ret +;; ldr x13, [x2] +;; movz x14, #65535, LSL #16 +;; add x14, x14, x0 +;; strb w1, [x14, x13] +;; b label3 ;; block3: +;; ret +;; block1: ;; udf #0xc11f ;; ;; function u0:1: @@ -65,14 +65,14 @@ ;; b.lo 8 ; udf ;; ldr x11, [x1, #8] ;; subs xzr, x10, x11 -;; b.ls label1 ; b label3 -;; block1: -;; ldr x12, [x1] -;; movz x11, #65535, LSL #16 -;; add x11, x11, x0 -;; ldrb w0, [x11, x12] -;; b label2 +;; b.hi label1 ; b label2 ;; block2: -;; ret +;; ldr x13, [x1] +;; movz x12, #65535, LSL #16 +;; add x12, x12, x0 +;; ldrb w0, [x12, x13] +;; b label3 ;; block3: -;; udf #0xc11f \ No newline at end of file +;; ret +;; block1: +;; udf #0xc11f diff --git a/cranelift/filetests/filetests/isa/aarch64/wasm/load_store_static_kind_i32_index_0_guard_no_spectre_i32_access_0_offset.wat b/cranelift/filetests/filetests/isa/aarch64/wasm/load_store_static_kind_i32_index_0_guard_no_spectre_i32_access_0_offset.wat index cfa9c5f81a..fb27dc805f 100644 --- a/cranelift/filetests/filetests/isa/aarch64/wasm/load_store_static_kind_i32_index_0_guard_no_spectre_i32_access_0_offset.wat +++ b/cranelift/filetests/filetests/isa/aarch64/wasm/load_store_static_kind_i32_index_0_guard_no_spectre_i32_access_0_offset.wat @@ -42,14 +42,14 @@ ;; mov w6, w0 ;; orr x7, xzr, #268435452 ;; subs xzr, x6, x7 -;; b.ls label1 ; b label3 -;; block1: -;; ldr x8, [x2] -;; str w1, [x8, w0, UXTW] -;; b label2 +;; b.hi label1 ; b label2 ;; block2: -;; ret +;; ldr x9, [x2] +;; str w1, [x9, w0, UXTW] +;; b label3 ;; block3: +;; ret +;; block1: ;; udf #0xc11f ;; ;; function u0:1: @@ -57,12 +57,12 @@ ;; mov w6, w0 ;; orr x7, xzr, #268435452 ;; subs xzr, x6, x7 -;; b.ls label1 ; b label3 -;; block1: -;; ldr x8, [x1] -;; ldr w0, [x8, w0, UXTW] -;; b label2 +;; b.hi label1 ; b label2 ;; block2: -;; ret +;; ldr x9, [x1] +;; ldr w0, [x9, w0, UXTW] +;; b label3 ;; block3: -;; udf #0xc11f \ No newline at end of file +;; ret +;; block1: +;; udf #0xc11f diff --git a/cranelift/filetests/filetests/isa/aarch64/wasm/load_store_static_kind_i32_index_0_guard_no_spectre_i32_access_0x1000_offset.wat b/cranelift/filetests/filetests/isa/aarch64/wasm/load_store_static_kind_i32_index_0_guard_no_spectre_i32_access_0x1000_offset.wat index c9b271daaf..9303c37c75 100644 --- a/cranelift/filetests/filetests/isa/aarch64/wasm/load_store_static_kind_i32_index_0_guard_no_spectre_i32_access_0x1000_offset.wat +++ b/cranelift/filetests/filetests/isa/aarch64/wasm/load_store_static_kind_i32_index_0_guard_no_spectre_i32_access_0x1000_offset.wat @@ -43,15 +43,15 @@ ;; movz w9, #61436 ;; movk w9, w9, #4095, LSL #16 ;; subs xzr, x8, x9 -;; b.ls label1 ; b label3 -;; block1: -;; ldr x10, [x2] -;; add x10, x10, #4096 -;; str w1, [x10, w0, UXTW] -;; b label2 +;; b.hi label1 ; b label2 ;; block2: -;; ret +;; ldr x11, [x2] +;; add x11, x11, #4096 +;; str w1, [x11, w0, UXTW] +;; b label3 ;; block3: +;; ret +;; block1: ;; udf #0xc11f ;; ;; function u0:1: @@ -60,13 +60,13 @@ ;; movz w9, #61436 ;; movk w9, w9, #4095, LSL #16 ;; subs xzr, x8, x9 -;; b.ls label1 ; b label3 -;; block1: -;; ldr x10, [x1] -;; add x9, x10, #4096 -;; ldr w0, [x9, w0, UXTW] -;; b label2 +;; b.hi label1 ; b label2 ;; block2: -;; ret +;; ldr x11, [x1] +;; add x10, x11, #4096 +;; ldr w0, [x10, w0, UXTW] +;; b label3 ;; block3: -;; udf #0xc11f \ No newline at end of file +;; ret +;; block1: +;; udf #0xc11f diff --git a/cranelift/filetests/filetests/isa/aarch64/wasm/load_store_static_kind_i32_index_0_guard_no_spectre_i8_access_0_offset.wat b/cranelift/filetests/filetests/isa/aarch64/wasm/load_store_static_kind_i32_index_0_guard_no_spectre_i8_access_0_offset.wat index 602626dc09..6ca3fa7af3 100644 --- a/cranelift/filetests/filetests/isa/aarch64/wasm/load_store_static_kind_i32_index_0_guard_no_spectre_i8_access_0_offset.wat +++ b/cranelift/filetests/filetests/isa/aarch64/wasm/load_store_static_kind_i32_index_0_guard_no_spectre_i8_access_0_offset.wat @@ -42,14 +42,14 @@ ;; mov w6, w0 ;; orr x7, xzr, #268435455 ;; subs xzr, x6, x7 -;; b.ls label1 ; b label3 -;; block1: -;; ldr x8, [x2] -;; strb w1, [x8, w0, UXTW] -;; b label2 +;; b.hi label1 ; b label2 ;; block2: -;; ret +;; ldr x9, [x2] +;; strb w1, [x9, w0, UXTW] +;; b label3 ;; block3: +;; ret +;; block1: ;; udf #0xc11f ;; ;; function u0:1: @@ -57,12 +57,12 @@ ;; mov w6, w0 ;; orr x7, xzr, #268435455 ;; subs xzr, x6, x7 -;; b.ls label1 ; b label3 -;; block1: -;; ldr x8, [x1] -;; ldrb w0, [x8, w0, UXTW] -;; b label2 +;; b.hi label1 ; b label2 ;; block2: -;; ret +;; ldr x9, [x1] +;; ldrb w0, [x9, w0, UXTW] +;; b label3 ;; block3: -;; udf #0xc11f \ No newline at end of file +;; ret +;; block1: +;; udf #0xc11f diff --git a/cranelift/filetests/filetests/isa/aarch64/wasm/load_store_static_kind_i32_index_0_guard_no_spectre_i8_access_0x1000_offset.wat b/cranelift/filetests/filetests/isa/aarch64/wasm/load_store_static_kind_i32_index_0_guard_no_spectre_i8_access_0x1000_offset.wat index 60296e3e47..9cb09570d6 100644 --- a/cranelift/filetests/filetests/isa/aarch64/wasm/load_store_static_kind_i32_index_0_guard_no_spectre_i8_access_0x1000_offset.wat +++ b/cranelift/filetests/filetests/isa/aarch64/wasm/load_store_static_kind_i32_index_0_guard_no_spectre_i8_access_0x1000_offset.wat @@ -43,15 +43,15 @@ ;; movz w9, #61439 ;; movk w9, w9, #4095, LSL #16 ;; subs xzr, x8, x9 -;; b.ls label1 ; b label3 -;; block1: -;; ldr x10, [x2] -;; add x10, x10, #4096 -;; strb w1, [x10, w0, UXTW] -;; b label2 +;; b.hi label1 ; b label2 ;; block2: -;; ret +;; ldr x11, [x2] +;; add x11, x11, #4096 +;; strb w1, [x11, w0, UXTW] +;; b label3 ;; block3: +;; ret +;; block1: ;; udf #0xc11f ;; ;; function u0:1: @@ -60,13 +60,13 @@ ;; movz w9, #61439 ;; movk w9, w9, #4095, LSL #16 ;; subs xzr, x8, x9 -;; b.ls label1 ; b label3 -;; block1: -;; ldr x10, [x1] -;; add x9, x10, #4096 -;; ldrb w0, [x9, w0, UXTW] -;; b label2 +;; b.hi label1 ; b label2 ;; block2: -;; ret +;; ldr x11, [x1] +;; add x10, x11, #4096 +;; ldrb w0, [x10, w0, UXTW] +;; b label3 ;; block3: -;; udf #0xc11f \ No newline at end of file +;; ret +;; block1: +;; udf #0xc11f diff --git a/cranelift/filetests/filetests/isa/aarch64/wasm/load_store_static_kind_i64_index_0_guard_no_spectre_i32_access_0_offset.wat b/cranelift/filetests/filetests/isa/aarch64/wasm/load_store_static_kind_i64_index_0_guard_no_spectre_i32_access_0_offset.wat index a827cbd940..1c4c5d00d1 100644 --- a/cranelift/filetests/filetests/isa/aarch64/wasm/load_store_static_kind_i64_index_0_guard_no_spectre_i32_access_0_offset.wat +++ b/cranelift/filetests/filetests/isa/aarch64/wasm/load_store_static_kind_i64_index_0_guard_no_spectre_i32_access_0_offset.wat @@ -41,26 +41,26 @@ ;; block0: ;; orr x5, xzr, #268435452 ;; subs xzr, x0, x5 -;; b.ls label1 ; b label3 -;; block1: -;; ldr x7, [x2] -;; str w1, [x7, x0] -;; b label2 +;; b.hi label1 ; b label2 ;; block2: -;; ret +;; ldr x8, [x2] +;; str w1, [x8, x0] +;; b label3 ;; block3: +;; ret +;; block1: ;; udf #0xc11f ;; ;; function u0:1: ;; block0: ;; orr x5, xzr, #268435452 ;; subs xzr, x0, x5 -;; b.ls label1 ; b label3 -;; block1: -;; ldr x7, [x1] -;; ldr w0, [x7, x0] -;; b label2 +;; b.hi label1 ; b label2 ;; block2: -;; ret +;; ldr x8, [x1] +;; ldr w0, [x8, x0] +;; b label3 ;; block3: -;; udf #0xc11f \ No newline at end of file +;; ret +;; block1: +;; udf #0xc11f diff --git a/cranelift/filetests/filetests/isa/aarch64/wasm/load_store_static_kind_i64_index_0_guard_no_spectre_i32_access_0x1000_offset.wat b/cranelift/filetests/filetests/isa/aarch64/wasm/load_store_static_kind_i64_index_0_guard_no_spectre_i32_access_0x1000_offset.wat index 8e47267332..ca8e2889bc 100644 --- a/cranelift/filetests/filetests/isa/aarch64/wasm/load_store_static_kind_i64_index_0_guard_no_spectre_i32_access_0x1000_offset.wat +++ b/cranelift/filetests/filetests/isa/aarch64/wasm/load_store_static_kind_i64_index_0_guard_no_spectre_i32_access_0x1000_offset.wat @@ -42,15 +42,15 @@ ;; movz w7, #61436 ;; movk w7, w7, #4095, LSL #16 ;; subs xzr, x0, x7 -;; b.ls label1 ; b label3 -;; block1: -;; ldr x9, [x2] -;; add x10, x0, #4096 -;; str w1, [x10, x9] -;; b label2 +;; b.hi label1 ; b label2 ;; block2: -;; ret +;; ldr x10, [x2] +;; add x11, x0, #4096 +;; str w1, [x11, x10] +;; b label3 ;; block3: +;; ret +;; block1: ;; udf #0xc11f ;; ;; function u0:1: @@ -58,13 +58,13 @@ ;; movz w7, #61436 ;; movk w7, w7, #4095, LSL #16 ;; subs xzr, x0, x7 -;; b.ls label1 ; b label3 -;; block1: -;; ldr x9, [x1] -;; add x8, x0, #4096 -;; ldr w0, [x8, x9] -;; b label2 +;; b.hi label1 ; b label2 ;; block2: -;; ret +;; ldr x10, [x1] +;; add x9, x0, #4096 +;; ldr w0, [x9, x10] +;; b label3 ;; block3: -;; udf #0xc11f \ No newline at end of file +;; ret +;; block1: +;; udf #0xc11f diff --git a/cranelift/filetests/filetests/isa/aarch64/wasm/load_store_static_kind_i64_index_0_guard_no_spectre_i8_access_0_offset.wat b/cranelift/filetests/filetests/isa/aarch64/wasm/load_store_static_kind_i64_index_0_guard_no_spectre_i8_access_0_offset.wat index bd897201a3..66f49089fe 100644 --- a/cranelift/filetests/filetests/isa/aarch64/wasm/load_store_static_kind_i64_index_0_guard_no_spectre_i8_access_0_offset.wat +++ b/cranelift/filetests/filetests/isa/aarch64/wasm/load_store_static_kind_i64_index_0_guard_no_spectre_i8_access_0_offset.wat @@ -41,26 +41,26 @@ ;; block0: ;; orr x5, xzr, #268435455 ;; subs xzr, x0, x5 -;; b.ls label1 ; b label3 -;; block1: -;; ldr x7, [x2] -;; strb w1, [x7, x0] -;; b label2 +;; b.hi label1 ; b label2 ;; block2: -;; ret +;; ldr x8, [x2] +;; strb w1, [x8, x0] +;; b label3 ;; block3: +;; ret +;; block1: ;; udf #0xc11f ;; ;; function u0:1: ;; block0: ;; orr x5, xzr, #268435455 ;; subs xzr, x0, x5 -;; b.ls label1 ; b label3 -;; block1: -;; ldr x7, [x1] -;; ldrb w0, [x7, x0] -;; b label2 +;; b.hi label1 ; b label2 ;; block2: -;; ret +;; ldr x8, [x1] +;; ldrb w0, [x8, x0] +;; b label3 ;; block3: -;; udf #0xc11f \ No newline at end of file +;; ret +;; block1: +;; udf #0xc11f diff --git a/cranelift/filetests/filetests/isa/aarch64/wasm/load_store_static_kind_i64_index_0_guard_no_spectre_i8_access_0x1000_offset.wat b/cranelift/filetests/filetests/isa/aarch64/wasm/load_store_static_kind_i64_index_0_guard_no_spectre_i8_access_0x1000_offset.wat index 95f8087302..634de644d1 100644 --- a/cranelift/filetests/filetests/isa/aarch64/wasm/load_store_static_kind_i64_index_0_guard_no_spectre_i8_access_0x1000_offset.wat +++ b/cranelift/filetests/filetests/isa/aarch64/wasm/load_store_static_kind_i64_index_0_guard_no_spectre_i8_access_0x1000_offset.wat @@ -42,15 +42,15 @@ ;; movz w7, #61439 ;; movk w7, w7, #4095, LSL #16 ;; subs xzr, x0, x7 -;; b.ls label1 ; b label3 -;; block1: -;; ldr x9, [x2] -;; add x10, x0, #4096 -;; strb w1, [x10, x9] -;; b label2 +;; b.hi label1 ; b label2 ;; block2: -;; ret +;; ldr x10, [x2] +;; add x11, x0, #4096 +;; strb w1, [x11, x10] +;; b label3 ;; block3: +;; ret +;; block1: ;; udf #0xc11f ;; ;; function u0:1: @@ -58,13 +58,13 @@ ;; movz w7, #61439 ;; movk w7, w7, #4095, LSL #16 ;; subs xzr, x0, x7 -;; b.ls label1 ; b label3 -;; block1: -;; ldr x9, [x1] -;; add x8, x0, #4096 -;; ldrb w0, [x8, x9] -;; b label2 +;; b.hi label1 ; b label2 ;; block2: -;; ret +;; ldr x10, [x1] +;; add x9, x0, #4096 +;; ldrb w0, [x9, x10] +;; b label3 ;; block3: -;; udf #0xc11f \ No newline at end of file +;; ret +;; block1: +;; udf #0xc11f diff --git a/cranelift/filetests/filetests/isa/aarch64/wasm/load_store_static_kind_i64_index_0xffffffff_guard_no_spectre_i32_access_0_offset.wat b/cranelift/filetests/filetests/isa/aarch64/wasm/load_store_static_kind_i64_index_0xffffffff_guard_no_spectre_i32_access_0_offset.wat index 97065ce72e..4c2dc2c6c7 100644 --- a/cranelift/filetests/filetests/isa/aarch64/wasm/load_store_static_kind_i64_index_0xffffffff_guard_no_spectre_i32_access_0_offset.wat +++ b/cranelift/filetests/filetests/isa/aarch64/wasm/load_store_static_kind_i64_index_0xffffffff_guard_no_spectre_i32_access_0_offset.wat @@ -41,26 +41,26 @@ ;; block0: ;; orr x5, xzr, #268435452 ;; subs xzr, x0, x5 -;; b.ls label1 ; b label3 -;; block1: -;; ldr x7, [x2] -;; str w1, [x7, x0] -;; b label2 +;; b.hi label1 ; b label2 ;; block2: -;; ret +;; ldr x8, [x2] +;; str w1, [x8, x0] +;; b label3 ;; block3: +;; ret +;; block1: ;; udf #0xc11f ;; ;; function u0:1: ;; block0: ;; orr x5, xzr, #268435452 ;; subs xzr, x0, x5 -;; b.ls label1 ; b label3 -;; block1: -;; ldr x7, [x1] -;; ldr w0, [x7, x0] -;; b label2 +;; b.hi label1 ; b label2 ;; block2: -;; ret +;; ldr x8, [x1] +;; ldr w0, [x8, x0] +;; b label3 ;; block3: -;; udf #0xc11f \ No newline at end of file +;; ret +;; block1: +;; udf #0xc11f diff --git a/cranelift/filetests/filetests/isa/aarch64/wasm/load_store_static_kind_i64_index_0xffffffff_guard_no_spectre_i32_access_0x1000_offset.wat b/cranelift/filetests/filetests/isa/aarch64/wasm/load_store_static_kind_i64_index_0xffffffff_guard_no_spectre_i32_access_0x1000_offset.wat index 4779c70c24..721179ae3a 100644 --- a/cranelift/filetests/filetests/isa/aarch64/wasm/load_store_static_kind_i64_index_0xffffffff_guard_no_spectre_i32_access_0x1000_offset.wat +++ b/cranelift/filetests/filetests/isa/aarch64/wasm/load_store_static_kind_i64_index_0xffffffff_guard_no_spectre_i32_access_0x1000_offset.wat @@ -42,15 +42,15 @@ ;; movz w7, #61436 ;; movk w7, w7, #4095, LSL #16 ;; subs xzr, x0, x7 -;; b.ls label1 ; b label3 -;; block1: -;; ldr x9, [x2] -;; add x10, x0, #4096 -;; str w1, [x10, x9] -;; b label2 +;; b.hi label1 ; b label2 ;; block2: -;; ret +;; ldr x10, [x2] +;; add x11, x0, #4096 +;; str w1, [x11, x10] +;; b label3 ;; block3: +;; ret +;; block1: ;; udf #0xc11f ;; ;; function u0:1: @@ -58,13 +58,13 @@ ;; movz w7, #61436 ;; movk w7, w7, #4095, LSL #16 ;; subs xzr, x0, x7 -;; b.ls label1 ; b label3 -;; block1: -;; ldr x9, [x1] -;; add x8, x0, #4096 -;; ldr w0, [x8, x9] -;; b label2 +;; b.hi label1 ; b label2 ;; block2: -;; ret +;; ldr x10, [x1] +;; add x9, x0, #4096 +;; ldr w0, [x9, x10] +;; b label3 ;; block3: -;; udf #0xc11f \ No newline at end of file +;; ret +;; block1: +;; udf #0xc11f diff --git a/cranelift/filetests/filetests/isa/aarch64/wasm/load_store_static_kind_i64_index_0xffffffff_guard_no_spectre_i8_access_0_offset.wat b/cranelift/filetests/filetests/isa/aarch64/wasm/load_store_static_kind_i64_index_0xffffffff_guard_no_spectre_i8_access_0_offset.wat index a3fa2d47aa..da33a91b2f 100644 --- a/cranelift/filetests/filetests/isa/aarch64/wasm/load_store_static_kind_i64_index_0xffffffff_guard_no_spectre_i8_access_0_offset.wat +++ b/cranelift/filetests/filetests/isa/aarch64/wasm/load_store_static_kind_i64_index_0xffffffff_guard_no_spectre_i8_access_0_offset.wat @@ -41,26 +41,26 @@ ;; block0: ;; orr x5, xzr, #268435455 ;; subs xzr, x0, x5 -;; b.ls label1 ; b label3 -;; block1: -;; ldr x7, [x2] -;; strb w1, [x7, x0] -;; b label2 +;; b.hi label1 ; b label2 ;; block2: -;; ret +;; ldr x8, [x2] +;; strb w1, [x8, x0] +;; b label3 ;; block3: +;; ret +;; block1: ;; udf #0xc11f ;; ;; function u0:1: ;; block0: ;; orr x5, xzr, #268435455 ;; subs xzr, x0, x5 -;; b.ls label1 ; b label3 -;; block1: -;; ldr x7, [x1] -;; ldrb w0, [x7, x0] -;; b label2 +;; b.hi label1 ; b label2 ;; block2: -;; ret +;; ldr x8, [x1] +;; ldrb w0, [x8, x0] +;; b label3 ;; block3: -;; udf #0xc11f \ No newline at end of file +;; ret +;; block1: +;; udf #0xc11f diff --git a/cranelift/filetests/filetests/isa/aarch64/wasm/load_store_static_kind_i64_index_0xffffffff_guard_no_spectre_i8_access_0x1000_offset.wat b/cranelift/filetests/filetests/isa/aarch64/wasm/load_store_static_kind_i64_index_0xffffffff_guard_no_spectre_i8_access_0x1000_offset.wat index d6718365e2..66e7433338 100644 --- a/cranelift/filetests/filetests/isa/aarch64/wasm/load_store_static_kind_i64_index_0xffffffff_guard_no_spectre_i8_access_0x1000_offset.wat +++ b/cranelift/filetests/filetests/isa/aarch64/wasm/load_store_static_kind_i64_index_0xffffffff_guard_no_spectre_i8_access_0x1000_offset.wat @@ -42,15 +42,15 @@ ;; movz w7, #61439 ;; movk w7, w7, #4095, LSL #16 ;; subs xzr, x0, x7 -;; b.ls label1 ; b label3 -;; block1: -;; ldr x9, [x2] -;; add x10, x0, #4096 -;; strb w1, [x10, x9] -;; b label2 +;; b.hi label1 ; b label2 ;; block2: -;; ret +;; ldr x10, [x2] +;; add x11, x0, #4096 +;; strb w1, [x11, x10] +;; b label3 ;; block3: +;; ret +;; block1: ;; udf #0xc11f ;; ;; function u0:1: @@ -58,13 +58,13 @@ ;; movz w7, #61439 ;; movk w7, w7, #4095, LSL #16 ;; subs xzr, x0, x7 -;; b.ls label1 ; b label3 -;; block1: -;; ldr x9, [x1] -;; add x8, x0, #4096 -;; ldrb w0, [x8, x9] -;; b label2 +;; b.hi label1 ; b label2 ;; block2: -;; ret +;; ldr x10, [x1] +;; add x9, x0, #4096 +;; ldrb w0, [x9, x10] +;; b label3 ;; block3: -;; udf #0xc11f \ No newline at end of file +;; ret +;; block1: +;; udf #0xc11f diff --git a/cranelift/filetests/filetests/isa/riscv64/condbr.clif b/cranelift/filetests/filetests/isa/riscv64/condbr.clif index a04d803902..35b82af8f7 100644 --- a/cranelift/filetests/filetests/isa/riscv64/condbr.clif +++ b/cranelift/filetests/filetests/isa/riscv64/condbr.clif @@ -115,8 +115,7 @@ block0(v0: i128, v1: i128): function %f(i64, i64) -> i64 { block0(v0: i64, v1: i64): v2 = icmp eq v0, v1 - brnz v2, block1 - jump block2 + brif v2, block1, block2 block1: v4 = iconst.i64 1 @@ -140,8 +139,7 @@ block2: function %f(i64, i64) -> i64 { block0(v0: i64, v1: i64): v2 = icmp eq v0, v1 - brnz v2, block1 - jump block1 + brif v2, block1, block1 block1: v4 = iconst.i64 1 @@ -159,30 +157,9 @@ block1: ; li a0,1 ; ret -function %i128_brz(i128){ +function %i128_brif(i128){ block0(v0: i128): - brz v0, block1 - jump block1 - -block1: - nop - return -} - -; block0: -; eq a0,[a0,a1],[zerozero]##ty=i128 -; bne a0,zero,taken(label1),not_taken(label2) -; block1: -; j label3 -; block2: -; j label3 -; block3: -; ret - -function %i128_brnz(i128){ -block0(v0: i128): - brnz v0, block1 - jump block1 + brif v0, block1, block1 block1: nop @@ -202,8 +179,7 @@ block1: function %i128_bricmp_eq(i128, i128) { block0(v0: i128, v1: i128): v2 = icmp eq v0, v1 - brnz v2, block1 - jump block1 + brif v2, block1, block1 block1: return @@ -222,8 +198,7 @@ block1: function %i128_bricmp_ne(i128, i128) { block0(v0: i128, v1: i128): v2 = icmp ne v0, v1 - brnz v2, block1 - jump block1 + brif v2, block1, block1 block1: return @@ -242,8 +217,7 @@ block1: function %i128_bricmp_slt(i128, i128) { block0(v0: i128, v1: i128): v2 = icmp slt v0, v1 - brnz v2, block1 - jump block1 + brif v2, block1, block1 block1: return @@ -262,8 +236,7 @@ block1: function %i128_bricmp_ult(i128, i128) { block0(v0: i128, v1: i128): v2 = icmp ult v0, v1 - brnz v2, block1 - jump block1 + brif v2, block1, block1 block1: return @@ -282,8 +255,7 @@ block1: function %i128_bricmp_sle(i128, i128) { block0(v0: i128, v1: i128): v2 = icmp sle v0, v1 - brnz v2, block1 - jump block1 + brif v2, block1, block1 block1: return @@ -302,8 +274,7 @@ block1: function %i128_bricmp_ule(i128, i128) { block0(v0: i128, v1: i128): v2 = icmp ule v0, v1 - brnz v2, block1 - jump block1 + brif v2, block1, block1 block1: return @@ -322,8 +293,7 @@ block1: function %i128_bricmp_sgt(i128, i128) { block0(v0: i128, v1: i128): v2 = icmp sgt v0, v1 - brnz v2, block1 - jump block1 + brif v2, block1, block1 block1: return @@ -342,8 +312,7 @@ block1: function %i128_bricmp_ugt(i128, i128) { block0(v0: i128, v1: i128): v2 = icmp ugt v0, v1 - brnz v2, block1 - jump block1 + brif v2, block1, block1 block1: return @@ -362,8 +331,7 @@ block1: function %i128_bricmp_sge(i128, i128) { block0(v0: i128, v1: i128): v2 = icmp sge v0, v1 - brnz v2, block1 - jump block1 + brif v2, block1, block1 block1: return @@ -382,8 +350,7 @@ block1: function %i128_bricmp_uge(i128, i128) { block0(v0: i128, v1: i128): v2 = icmp uge v0, v1 - brnz v2, block1 - jump block1 + brif v2, block1, block1 block1: return @@ -401,30 +368,9 @@ block1: -function %i8_brz(i8){ +function %i8_brif(i8){ block0(v0: i8): - brz v0, block1 - jump block1 - -block1: - nop - return -} - -; block0: -; andi t2,a0,255 -; beq t2,zero,taken(label1),not_taken(label2) -; block1: -; j label3 -; block2: -; j label3 -; block3: -; ret - -function %i8_brnz(i8){ -block0(v0: i8): - brnz v0, block1 - jump block1 + brif v0, block1, block1 block1: nop @@ -441,32 +387,9 @@ block1: ; block3: ; ret -function %i16_brz(i16){ +function %i16_brif(i16){ block0(v0: i16): - brz v0, block1 - jump block1 - -block1: - nop - return -} - -; block0: -; lui a1,16 -; addi a1,a1,4095 -; and a3,a0,a1 -; beq a3,zero,taken(label1),not_taken(label2) -; block1: -; j label3 -; block2: -; j label3 -; block3: -; ret - -function %i16_brnz(i16){ -block0(v0: i16): - brnz v0, block1 - jump block1 + brif v0, block1, block1 block1: nop @@ -485,30 +408,9 @@ block1: ; block3: ; ret -function %i32_brz(i32){ +function %i32_brif(i32){ block0(v0: i32): - brz v0, block1 - jump block1 - -block1: - nop - return -} - -; block0: -; addiw t2,a0,0 -; beq t2,zero,taken(label1),not_taken(label2) -; block1: -; j label3 -; block2: -; j label3 -; block3: -; ret - -function %i32_brnz(i32){ -block0(v0: i32): - brnz v0, block1 - jump block1 + brif v0, block1, block1 block1: nop @@ -525,29 +427,9 @@ block1: ; block3: ; ret -function %i64_brz(i64){ +function %i64_brif(i64){ block0(v0: i64): - brz v0, block1 - jump block1 - -block1: - nop - return -} - -; block0: -; beq a0,zero,taken(label1),not_taken(label2) -; block1: -; j label3 -; block2: -; j label3 -; block3: -; ret - -function %i64_brnz(i64){ -block0(v0: i64): - brnz v0, block1 - jump block1 + brif v0, block1, block1 block1: nop diff --git a/cranelift/filetests/filetests/isa/riscv64/fcmp.clif b/cranelift/filetests/filetests/isa/riscv64/fcmp.clif index 5f6be2cb9d..98f47dfa0b 100644 --- a/cranelift/filetests/filetests/isa/riscv64/fcmp.clif +++ b/cranelift/filetests/filetests/isa/riscv64/fcmp.clif @@ -6,33 +6,31 @@ function %f0() { block0: v0 = f64const 0.0 v1 = fcmp ult v0, v0 - brz v1, block1 - jump block1 - -block1: - return -} - -; block0: -; li t1,0 -; fmv.d.x ft1,t1 -; li a2,0 -; fmv.d.x ft5,a2 -; fle.d a5,ft5,ft1 -; bne a5,zero,taken(label1),not_taken(label2) -; block1: -; j label3 -; block2: -; j label3 -; block3: -; ret - -function %f1() { -block0: - v0 = f64const 0.0 - v1 = fcmp ult v0, v0 - brnz v1, block1 - jump block1 + brif v1, block1, block1 + +block1: + return +} + +; block0: +; li t1,0 +; fmv.d.x ft1,t1 +; li a2,0 +; fmv.d.x ft5,a2 +; fle.d a5,ft5,ft1 +; bne a5,zero,taken(label2),not_taken(label1) +; block1: +; j label3 +; block2: +; j label3 +; block3: +; ret + +function %f1() { +block0: + v0 = f64const 0.0 + v1 = fcmp ult v0, v0 + brif v1, block1, block1 block1: return diff --git a/cranelift/filetests/filetests/isa/riscv64/reftypes.clif b/cranelift/filetests/filetests/isa/riscv64/reftypes.clif index 56cf5b83d6..50751ca5be 100644 --- a/cranelift/filetests/filetests/isa/riscv64/reftypes.clif +++ b/cranelift/filetests/filetests/isa/riscv64/reftypes.clif @@ -47,8 +47,7 @@ function %f4(r64, r64) -> r64, r64, r64 { block0(v0: r64, v1: r64): v2 = call fn0(v0) stack_store.r64 v0, ss0 - brz v2, block1(v1, v0) - jump block2(v0, v1) + brif v2, block2(v0, v1), block1(v1, v0) block1(v3: r64, v4: r64): jump block3(v3, v4) @@ -77,18 +76,18 @@ block3(v7: r64, v8: r64): ; ld t4,8(nominal_sp) ; sd t4,0(a1) ; andi a1,a0,255 -; beq a1,zero,taken(label1),not_taken(label3) +; bne a1,zero,taken(label1),not_taken(label3) ; block1: ; j label2 ; block2: -; mv a1,t4 -; ld a0,16(nominal_sp) +; mv a0,t4 +; ld a1,16(nominal_sp) ; j label5 ; block3: ; j label4 ; block4: -; mv a0,t4 -; ld a1,16(nominal_sp) +; mv a1,t4 +; ld a0,16(nominal_sp) ; j label5 ; block5: ; load_addr a2,nsp+0 diff --git a/cranelift/filetests/filetests/isa/riscv64/traps.clif b/cranelift/filetests/filetests/isa/riscv64/traps.clif index ca3126346e..da61762059 100644 --- a/cranelift/filetests/filetests/isa/riscv64/traps.clif +++ b/cranelift/filetests/filetests/isa/riscv64/traps.clif @@ -20,11 +20,11 @@ block0(v0: i64): ; block0: ; li t2,42 -; ne a1,a0,t2##ty=i64 +; eq a1,a0,t2##ty=i64 ; bne a1,zero,taken(label1),not_taken(label2) -; block1: -; ret ; block2: +; ret +; block1: ; udf##trap_code=user0 function %h() { diff --git a/cranelift/filetests/filetests/isa/riscv64/wasm/load_store_dynamic_kind_i32_index_0_guard_no_spectre_i32_access_0_offset.wat b/cranelift/filetests/filetests/isa/riscv64/wasm/load_store_dynamic_kind_i32_index_0_guard_no_spectre_i32_access_0_offset.wat index 094bcec0e5..6d463f4467 100644 --- a/cranelift/filetests/filetests/isa/riscv64/wasm/load_store_dynamic_kind_i32_index_0_guard_no_spectre_i32_access_0_offset.wat +++ b/cranelift/filetests/filetests/isa/riscv64/wasm/load_store_dynamic_kind_i32_index_0_guard_no_spectre_i32_access_0_offset.wat @@ -44,16 +44,16 @@ ;; uext.w a6,a0 ;; ld a7,8(a2) ;; addi a7,a7,-4 -;; ule a7,a6,a7##ty=i64 -;; bne a7,zero,taken(label1),not_taken(label3) -;; block1: -;; ld a7,0(a2) -;; add a7,a7,a6 -;; sw a1,0(a7) -;; j label2 +;; ugt a7,a6,a7##ty=i64 +;; bne a7,zero,taken(label1),not_taken(label2) ;; block2: -;; ret +;; ld t3,0(a2) +;; add t3,t3,a6 +;; sw a1,0(t3) +;; j label3 ;; block3: +;; ret +;; block1: ;; udf##trap_code=heap_oob ;; ;; function u0:1: @@ -61,14 +61,14 @@ ;; uext.w a6,a0 ;; ld a7,8(a1) ;; addi a7,a7,-4 -;; ule a7,a6,a7##ty=i64 -;; bne a7,zero,taken(label1),not_taken(label3) -;; block1: -;; ld a7,0(a1) -;; add a7,a7,a6 -;; lw a0,0(a7) -;; j label2 +;; ugt a7,a6,a7##ty=i64 +;; bne a7,zero,taken(label1),not_taken(label2) ;; block2: -;; ret +;; ld t3,0(a1) +;; add t3,t3,a6 +;; lw a0,0(t3) +;; j label3 ;; block3: -;; udf##trap_code=heap_oob \ No newline at end of file +;; ret +;; block1: +;; udf##trap_code=heap_oob diff --git a/cranelift/filetests/filetests/isa/riscv64/wasm/load_store_dynamic_kind_i32_index_0_guard_no_spectre_i32_access_0x1000_offset.wat b/cranelift/filetests/filetests/isa/riscv64/wasm/load_store_dynamic_kind_i32_index_0_guard_no_spectre_i32_access_0x1000_offset.wat index 988e99e808..e643ac890c 100644 --- a/cranelift/filetests/filetests/isa/riscv64/wasm/load_store_dynamic_kind_i32_index_0_guard_no_spectre_i32_access_0x1000_offset.wat +++ b/cranelift/filetests/filetests/isa/riscv64/wasm/load_store_dynamic_kind_i32_index_0_guard_no_spectre_i32_access_0x1000_offset.wat @@ -46,18 +46,18 @@ ;; lui t4,1048575 ;; addi t4,t4,4092 ;; add t2,t1,t4 -;; ule t1,t0,t2##ty=i64 -;; bne t1,zero,taken(label1),not_taken(label3) -;; block1: -;; ld t1,0(a2) -;; add t1,t1,t0 -;; lui t0,1 -;; add t2,t1,t0 -;; sw a1,0(t2) -;; j label2 +;; ugt t1,t0,t2##ty=i64 +;; bne t1,zero,taken(label1),not_taken(label2) ;; block2: -;; ret +;; ld t2,0(a2) +;; add t2,t2,t0 +;; lui t1,1 +;; add a0,t2,t1 +;; sw a1,0(a0) +;; j label3 ;; block3: +;; ret +;; block1: ;; udf##trap_code=heap_oob ;; ;; function u0:1: @@ -67,16 +67,16 @@ ;; lui t4,1048575 ;; addi t4,t4,4092 ;; add t2,t1,t4 -;; ule t1,t0,t2##ty=i64 -;; bne t1,zero,taken(label1),not_taken(label3) -;; block1: -;; ld t1,0(a1) -;; add t1,t1,t0 -;; lui t0,1 -;; add t2,t1,t0 -;; lw a0,0(t2) -;; j label2 +;; ugt t1,t0,t2##ty=i64 +;; bne t1,zero,taken(label1),not_taken(label2) ;; block2: -;; ret +;; ld t2,0(a1) +;; add t2,t2,t0 +;; lui t1,1 +;; add a0,t2,t1 +;; lw a0,0(a0) +;; j label3 ;; block3: -;; udf##trap_code=heap_oob \ No newline at end of file +;; ret +;; block1: +;; udf##trap_code=heap_oob diff --git a/cranelift/filetests/filetests/isa/riscv64/wasm/load_store_dynamic_kind_i32_index_0_guard_no_spectre_i32_access_0xffff0000_offset.wat b/cranelift/filetests/filetests/isa/riscv64/wasm/load_store_dynamic_kind_i32_index_0_guard_no_spectre_i32_access_0xffff0000_offset.wat index 8125a69d12..95190756cb 100644 --- a/cranelift/filetests/filetests/isa/riscv64/wasm/load_store_dynamic_kind_i32_index_0_guard_no_spectre_i32_access_0xffff0000_offset.wat +++ b/cranelift/filetests/filetests/isa/riscv64/wasm/load_store_dynamic_kind_i32_index_0_guard_no_spectre_i32_access_0xffff0000_offset.wat @@ -47,18 +47,18 @@ ;; ult t2,t1,t0##ty=i64 ;; trap_if t2,heap_oob ;; ld t2,8(a2) -;; ule t1,t1,t2##ty=i64 -;; bne t1,zero,taken(label1),not_taken(label3) -;; block1: -;; ld t2,0(a2) -;; add t2,t2,t0 -;; auipc t1,0; ld t1,12(t1); j 12; .8byte 0xffff0000 -;; add a0,t2,t1 -;; sw a1,0(a0) -;; j label2 +;; ugt t1,t1,t2##ty=i64 +;; bne t1,zero,taken(label1),not_taken(label2) ;; block2: -;; ret +;; ld a0,0(a2) +;; add a0,a0,t0 +;; auipc t2,0; ld t2,12(t2); j 12; .8byte 0xffff0000 +;; add a2,a0,t2 +;; sw a1,0(a2) +;; j label3 ;; block3: +;; ret +;; block1: ;; udf##trap_code=heap_oob ;; ;; function u0:1: @@ -69,16 +69,16 @@ ;; ult t2,t1,t0##ty=i64 ;; trap_if t2,heap_oob ;; ld t2,8(a1) -;; ule t1,t1,t2##ty=i64 -;; bne t1,zero,taken(label1),not_taken(label3) -;; block1: -;; ld t2,0(a1) -;; add t2,t2,t0 -;; auipc t1,0; ld t1,12(t1); j 12; .8byte 0xffff0000 -;; add a0,t2,t1 -;; lw a0,0(a0) -;; j label2 +;; ugt t1,t1,t2##ty=i64 +;; bne t1,zero,taken(label1),not_taken(label2) ;; block2: -;; ret +;; ld a0,0(a1) +;; add a0,a0,t0 +;; auipc t2,0; ld t2,12(t2); j 12; .8byte 0xffff0000 +;; add a1,a0,t2 +;; lw a0,0(a1) +;; j label3 ;; block3: -;; udf##trap_code=heap_oob \ No newline at end of file +;; ret +;; block1: +;; udf##trap_code=heap_oob diff --git a/cranelift/filetests/filetests/isa/riscv64/wasm/load_store_dynamic_kind_i32_index_0_guard_no_spectre_i8_access_0_offset.wat b/cranelift/filetests/filetests/isa/riscv64/wasm/load_store_dynamic_kind_i32_index_0_guard_no_spectre_i8_access_0_offset.wat index 615bac9516..c39a492fe5 100644 --- a/cranelift/filetests/filetests/isa/riscv64/wasm/load_store_dynamic_kind_i32_index_0_guard_no_spectre_i8_access_0_offset.wat +++ b/cranelift/filetests/filetests/isa/riscv64/wasm/load_store_dynamic_kind_i32_index_0_guard_no_spectre_i8_access_0_offset.wat @@ -43,30 +43,30 @@ ;; block0: ;; uext.w a5,a0 ;; ld a6,8(a2) -;; ult a6,a5,a6##ty=i64 -;; bne a6,zero,taken(label1),not_taken(label3) -;; block1: -;; ld a6,0(a2) -;; add a6,a6,a5 -;; sb a1,0(a6) -;; j label2 +;; uge a6,a5,a6##ty=i64 +;; bne a6,zero,taken(label1),not_taken(label2) ;; block2: -;; ret +;; ld a7,0(a2) +;; add a7,a7,a5 +;; sb a1,0(a7) +;; j label3 ;; block3: +;; ret +;; block1: ;; udf##trap_code=heap_oob ;; ;; function u0:1: ;; block0: ;; uext.w a5,a0 ;; ld a6,8(a1) -;; ult a6,a5,a6##ty=i64 -;; bne a6,zero,taken(label1),not_taken(label3) -;; block1: -;; ld a6,0(a1) -;; add a6,a6,a5 -;; lbu a0,0(a6) -;; j label2 +;; uge a6,a5,a6##ty=i64 +;; bne a6,zero,taken(label1),not_taken(label2) ;; block2: -;; ret +;; ld a7,0(a1) +;; add a7,a7,a5 +;; lbu a0,0(a7) +;; j label3 ;; block3: -;; udf##trap_code=heap_oob \ No newline at end of file +;; ret +;; block1: +;; udf##trap_code=heap_oob diff --git a/cranelift/filetests/filetests/isa/riscv64/wasm/load_store_dynamic_kind_i32_index_0_guard_no_spectre_i8_access_0x1000_offset.wat b/cranelift/filetests/filetests/isa/riscv64/wasm/load_store_dynamic_kind_i32_index_0_guard_no_spectre_i8_access_0x1000_offset.wat index 1d6c2aa3a2..da2bb92080 100644 --- a/cranelift/filetests/filetests/isa/riscv64/wasm/load_store_dynamic_kind_i32_index_0_guard_no_spectre_i8_access_0x1000_offset.wat +++ b/cranelift/filetests/filetests/isa/riscv64/wasm/load_store_dynamic_kind_i32_index_0_guard_no_spectre_i8_access_0x1000_offset.wat @@ -46,18 +46,18 @@ ;; lui t4,1048575 ;; addi t4,t4,4095 ;; add t2,t1,t4 -;; ule t1,t0,t2##ty=i64 -;; bne t1,zero,taken(label1),not_taken(label3) -;; block1: -;; ld t1,0(a2) -;; add t1,t1,t0 -;; lui t0,1 -;; add t2,t1,t0 -;; sb a1,0(t2) -;; j label2 +;; ugt t1,t0,t2##ty=i64 +;; bne t1,zero,taken(label1),not_taken(label2) ;; block2: -;; ret +;; ld t2,0(a2) +;; add t2,t2,t0 +;; lui t1,1 +;; add a0,t2,t1 +;; sb a1,0(a0) +;; j label3 ;; block3: +;; ret +;; block1: ;; udf##trap_code=heap_oob ;; ;; function u0:1: @@ -67,16 +67,16 @@ ;; lui t4,1048575 ;; addi t4,t4,4095 ;; add t2,t1,t4 -;; ule t1,t0,t2##ty=i64 -;; bne t1,zero,taken(label1),not_taken(label3) -;; block1: -;; ld t1,0(a1) -;; add t1,t1,t0 -;; lui t0,1 -;; add t2,t1,t0 -;; lbu a0,0(t2) -;; j label2 +;; ugt t1,t0,t2##ty=i64 +;; bne t1,zero,taken(label1),not_taken(label2) ;; block2: -;; ret +;; ld t2,0(a1) +;; add t2,t2,t0 +;; lui t1,1 +;; add a0,t2,t1 +;; lbu a0,0(a0) +;; j label3 ;; block3: -;; udf##trap_code=heap_oob \ No newline at end of file +;; ret +;; block1: +;; udf##trap_code=heap_oob diff --git a/cranelift/filetests/filetests/isa/riscv64/wasm/load_store_dynamic_kind_i32_index_0_guard_no_spectre_i8_access_0xffff0000_offset.wat b/cranelift/filetests/filetests/isa/riscv64/wasm/load_store_dynamic_kind_i32_index_0_guard_no_spectre_i8_access_0xffff0000_offset.wat index 11170dc238..f3c828510d 100644 --- a/cranelift/filetests/filetests/isa/riscv64/wasm/load_store_dynamic_kind_i32_index_0_guard_no_spectre_i8_access_0xffff0000_offset.wat +++ b/cranelift/filetests/filetests/isa/riscv64/wasm/load_store_dynamic_kind_i32_index_0_guard_no_spectre_i8_access_0xffff0000_offset.wat @@ -47,18 +47,18 @@ ;; ult t2,t1,t0##ty=i64 ;; trap_if t2,heap_oob ;; ld t2,8(a2) -;; ule t1,t1,t2##ty=i64 -;; bne t1,zero,taken(label1),not_taken(label3) -;; block1: -;; ld t2,0(a2) -;; add t2,t2,t0 -;; auipc t1,0; ld t1,12(t1); j 12; .8byte 0xffff0000 -;; add a0,t2,t1 -;; sb a1,0(a0) -;; j label2 +;; ugt t1,t1,t2##ty=i64 +;; bne t1,zero,taken(label1),not_taken(label2) ;; block2: -;; ret +;; ld a0,0(a2) +;; add a0,a0,t0 +;; auipc t2,0; ld t2,12(t2); j 12; .8byte 0xffff0000 +;; add a2,a0,t2 +;; sb a1,0(a2) +;; j label3 ;; block3: +;; ret +;; block1: ;; udf##trap_code=heap_oob ;; ;; function u0:1: @@ -69,16 +69,16 @@ ;; ult t2,t1,t0##ty=i64 ;; trap_if t2,heap_oob ;; ld t2,8(a1) -;; ule t1,t1,t2##ty=i64 -;; bne t1,zero,taken(label1),not_taken(label3) -;; block1: -;; ld t2,0(a1) -;; add t2,t2,t0 -;; auipc t1,0; ld t1,12(t1); j 12; .8byte 0xffff0000 -;; add a0,t2,t1 -;; lbu a0,0(a0) -;; j label2 +;; ugt t1,t1,t2##ty=i64 +;; bne t1,zero,taken(label1),not_taken(label2) ;; block2: -;; ret +;; ld a0,0(a1) +;; add a0,a0,t0 +;; auipc t2,0; ld t2,12(t2); j 12; .8byte 0xffff0000 +;; add a1,a0,t2 +;; lbu a0,0(a1) +;; j label3 ;; block3: -;; udf##trap_code=heap_oob \ No newline at end of file +;; ret +;; block1: +;; udf##trap_code=heap_oob diff --git a/cranelift/filetests/filetests/isa/riscv64/wasm/load_store_dynamic_kind_i32_index_0xffffffff_guard_no_spectre_i32_access_0_offset.wat b/cranelift/filetests/filetests/isa/riscv64/wasm/load_store_dynamic_kind_i32_index_0xffffffff_guard_no_spectre_i32_access_0_offset.wat index d896eadf16..6ee2b335f0 100644 --- a/cranelift/filetests/filetests/isa/riscv64/wasm/load_store_dynamic_kind_i32_index_0xffffffff_guard_no_spectre_i32_access_0_offset.wat +++ b/cranelift/filetests/filetests/isa/riscv64/wasm/load_store_dynamic_kind_i32_index_0xffffffff_guard_no_spectre_i32_access_0_offset.wat @@ -44,16 +44,16 @@ ;; uext.w a6,a0 ;; ld a7,8(a2) ;; addi a7,a7,-4 -;; ule a7,a6,a7##ty=i64 -;; bne a7,zero,taken(label1),not_taken(label3) -;; block1: -;; ld a7,0(a2) -;; add a7,a7,a6 -;; sw a1,0(a7) -;; j label2 +;; ugt a7,a6,a7##ty=i64 +;; bne a7,zero,taken(label1),not_taken(label2) ;; block2: -;; ret +;; ld t3,0(a2) +;; add t3,t3,a6 +;; sw a1,0(t3) +;; j label3 ;; block3: +;; ret +;; block1: ;; udf##trap_code=heap_oob ;; ;; function u0:1: @@ -61,14 +61,14 @@ ;; uext.w a6,a0 ;; ld a7,8(a1) ;; addi a7,a7,-4 -;; ule a7,a6,a7##ty=i64 -;; bne a7,zero,taken(label1),not_taken(label3) -;; block1: -;; ld a7,0(a1) -;; add a7,a7,a6 -;; lw a0,0(a7) -;; j label2 +;; ugt a7,a6,a7##ty=i64 +;; bne a7,zero,taken(label1),not_taken(label2) ;; block2: -;; ret +;; ld t3,0(a1) +;; add t3,t3,a6 +;; lw a0,0(t3) +;; j label3 ;; block3: -;; udf##trap_code=heap_oob \ No newline at end of file +;; ret +;; block1: +;; udf##trap_code=heap_oob diff --git a/cranelift/filetests/filetests/isa/riscv64/wasm/load_store_dynamic_kind_i32_index_0xffffffff_guard_no_spectre_i32_access_0x1000_offset.wat b/cranelift/filetests/filetests/isa/riscv64/wasm/load_store_dynamic_kind_i32_index_0xffffffff_guard_no_spectre_i32_access_0x1000_offset.wat index 1a06a74a1e..aeb8195193 100644 --- a/cranelift/filetests/filetests/isa/riscv64/wasm/load_store_dynamic_kind_i32_index_0xffffffff_guard_no_spectre_i32_access_0x1000_offset.wat +++ b/cranelift/filetests/filetests/isa/riscv64/wasm/load_store_dynamic_kind_i32_index_0xffffffff_guard_no_spectre_i32_access_0x1000_offset.wat @@ -46,18 +46,18 @@ ;; lui t4,1048575 ;; addi t4,t4,4092 ;; add t2,t1,t4 -;; ule t1,t0,t2##ty=i64 -;; bne t1,zero,taken(label1),not_taken(label3) -;; block1: -;; ld t1,0(a2) -;; add t1,t1,t0 -;; lui t0,1 -;; add t2,t1,t0 -;; sw a1,0(t2) -;; j label2 +;; ugt t1,t0,t2##ty=i64 +;; bne t1,zero,taken(label1),not_taken(label2) ;; block2: -;; ret +;; ld t2,0(a2) +;; add t2,t2,t0 +;; lui t1,1 +;; add a0,t2,t1 +;; sw a1,0(a0) +;; j label3 ;; block3: +;; ret +;; block1: ;; udf##trap_code=heap_oob ;; ;; function u0:1: @@ -67,16 +67,16 @@ ;; lui t4,1048575 ;; addi t4,t4,4092 ;; add t2,t1,t4 -;; ule t1,t0,t2##ty=i64 -;; bne t1,zero,taken(label1),not_taken(label3) -;; block1: -;; ld t1,0(a1) -;; add t1,t1,t0 -;; lui t0,1 -;; add t2,t1,t0 -;; lw a0,0(t2) -;; j label2 +;; ugt t1,t0,t2##ty=i64 +;; bne t1,zero,taken(label1),not_taken(label2) ;; block2: -;; ret +;; ld t2,0(a1) +;; add t2,t2,t0 +;; lui t1,1 +;; add a0,t2,t1 +;; lw a0,0(a0) +;; j label3 ;; block3: -;; udf##trap_code=heap_oob \ No newline at end of file +;; ret +;; block1: +;; udf##trap_code=heap_oob diff --git a/cranelift/filetests/filetests/isa/riscv64/wasm/load_store_dynamic_kind_i32_index_0xffffffff_guard_no_spectre_i32_access_0xffff0000_offset.wat b/cranelift/filetests/filetests/isa/riscv64/wasm/load_store_dynamic_kind_i32_index_0xffffffff_guard_no_spectre_i32_access_0xffff0000_offset.wat index e59f6b26e4..c5bbcdc550 100644 --- a/cranelift/filetests/filetests/isa/riscv64/wasm/load_store_dynamic_kind_i32_index_0xffffffff_guard_no_spectre_i32_access_0xffff0000_offset.wat +++ b/cranelift/filetests/filetests/isa/riscv64/wasm/load_store_dynamic_kind_i32_index_0xffffffff_guard_no_spectre_i32_access_0xffff0000_offset.wat @@ -47,18 +47,18 @@ ;; ult t2,t1,t0##ty=i64 ;; trap_if t2,heap_oob ;; ld t2,8(a2) -;; ule t1,t1,t2##ty=i64 -;; bne t1,zero,taken(label1),not_taken(label3) -;; block1: -;; ld t2,0(a2) -;; add t2,t2,t0 -;; auipc t1,0; ld t1,12(t1); j 12; .8byte 0xffff0000 -;; add a0,t2,t1 -;; sw a1,0(a0) -;; j label2 +;; ugt t1,t1,t2##ty=i64 +;; bne t1,zero,taken(label1),not_taken(label2) ;; block2: -;; ret +;; ld a0,0(a2) +;; add a0,a0,t0 +;; auipc t2,0; ld t2,12(t2); j 12; .8byte 0xffff0000 +;; add a2,a0,t2 +;; sw a1,0(a2) +;; j label3 ;; block3: +;; ret +;; block1: ;; udf##trap_code=heap_oob ;; ;; function u0:1: @@ -69,16 +69,16 @@ ;; ult t2,t1,t0##ty=i64 ;; trap_if t2,heap_oob ;; ld t2,8(a1) -;; ule t1,t1,t2##ty=i64 -;; bne t1,zero,taken(label1),not_taken(label3) -;; block1: -;; ld t2,0(a1) -;; add t2,t2,t0 -;; auipc t1,0; ld t1,12(t1); j 12; .8byte 0xffff0000 -;; add a0,t2,t1 -;; lw a0,0(a0) -;; j label2 +;; ugt t1,t1,t2##ty=i64 +;; bne t1,zero,taken(label1),not_taken(label2) ;; block2: -;; ret +;; ld a0,0(a1) +;; add a0,a0,t0 +;; auipc t2,0; ld t2,12(t2); j 12; .8byte 0xffff0000 +;; add a1,a0,t2 +;; lw a0,0(a1) +;; j label3 ;; block3: -;; udf##trap_code=heap_oob \ No newline at end of file +;; ret +;; block1: +;; udf##trap_code=heap_oob diff --git a/cranelift/filetests/filetests/isa/riscv64/wasm/load_store_dynamic_kind_i32_index_0xffffffff_guard_no_spectre_i8_access_0_offset.wat b/cranelift/filetests/filetests/isa/riscv64/wasm/load_store_dynamic_kind_i32_index_0xffffffff_guard_no_spectre_i8_access_0_offset.wat index 5ff0d386c4..f01c6e71c5 100644 --- a/cranelift/filetests/filetests/isa/riscv64/wasm/load_store_dynamic_kind_i32_index_0xffffffff_guard_no_spectre_i8_access_0_offset.wat +++ b/cranelift/filetests/filetests/isa/riscv64/wasm/load_store_dynamic_kind_i32_index_0xffffffff_guard_no_spectre_i8_access_0_offset.wat @@ -43,30 +43,30 @@ ;; block0: ;; uext.w a5,a0 ;; ld a6,8(a2) -;; ult a6,a5,a6##ty=i64 -;; bne a6,zero,taken(label1),not_taken(label3) -;; block1: -;; ld a6,0(a2) -;; add a6,a6,a5 -;; sb a1,0(a6) -;; j label2 +;; uge a6,a5,a6##ty=i64 +;; bne a6,zero,taken(label1),not_taken(label2) ;; block2: -;; ret +;; ld a7,0(a2) +;; add a7,a7,a5 +;; sb a1,0(a7) +;; j label3 ;; block3: +;; ret +;; block1: ;; udf##trap_code=heap_oob ;; ;; function u0:1: ;; block0: ;; uext.w a5,a0 ;; ld a6,8(a1) -;; ult a6,a5,a6##ty=i64 -;; bne a6,zero,taken(label1),not_taken(label3) -;; block1: -;; ld a6,0(a1) -;; add a6,a6,a5 -;; lbu a0,0(a6) -;; j label2 +;; uge a6,a5,a6##ty=i64 +;; bne a6,zero,taken(label1),not_taken(label2) ;; block2: -;; ret +;; ld a7,0(a1) +;; add a7,a7,a5 +;; lbu a0,0(a7) +;; j label3 ;; block3: -;; udf##trap_code=heap_oob \ No newline at end of file +;; ret +;; block1: +;; udf##trap_code=heap_oob diff --git a/cranelift/filetests/filetests/isa/riscv64/wasm/load_store_dynamic_kind_i32_index_0xffffffff_guard_no_spectre_i8_access_0x1000_offset.wat b/cranelift/filetests/filetests/isa/riscv64/wasm/load_store_dynamic_kind_i32_index_0xffffffff_guard_no_spectre_i8_access_0x1000_offset.wat index 1f1ba32605..267b0a25f4 100644 --- a/cranelift/filetests/filetests/isa/riscv64/wasm/load_store_dynamic_kind_i32_index_0xffffffff_guard_no_spectre_i8_access_0x1000_offset.wat +++ b/cranelift/filetests/filetests/isa/riscv64/wasm/load_store_dynamic_kind_i32_index_0xffffffff_guard_no_spectre_i8_access_0x1000_offset.wat @@ -46,18 +46,18 @@ ;; lui t4,1048575 ;; addi t4,t4,4095 ;; add t2,t1,t4 -;; ule t1,t0,t2##ty=i64 -;; bne t1,zero,taken(label1),not_taken(label3) -;; block1: -;; ld t1,0(a2) -;; add t1,t1,t0 -;; lui t0,1 -;; add t2,t1,t0 -;; sb a1,0(t2) -;; j label2 +;; ugt t1,t0,t2##ty=i64 +;; bne t1,zero,taken(label1),not_taken(label2) ;; block2: -;; ret +;; ld t2,0(a2) +;; add t2,t2,t0 +;; lui t1,1 +;; add a0,t2,t1 +;; sb a1,0(a0) +;; j label3 ;; block3: +;; ret +;; block1: ;; udf##trap_code=heap_oob ;; ;; function u0:1: @@ -67,16 +67,16 @@ ;; lui t4,1048575 ;; addi t4,t4,4095 ;; add t2,t1,t4 -;; ule t1,t0,t2##ty=i64 -;; bne t1,zero,taken(label1),not_taken(label3) -;; block1: -;; ld t1,0(a1) -;; add t1,t1,t0 -;; lui t0,1 -;; add t2,t1,t0 -;; lbu a0,0(t2) -;; j label2 +;; ugt t1,t0,t2##ty=i64 +;; bne t1,zero,taken(label1),not_taken(label2) ;; block2: -;; ret +;; ld t2,0(a1) +;; add t2,t2,t0 +;; lui t1,1 +;; add a0,t2,t1 +;; lbu a0,0(a0) +;; j label3 ;; block3: -;; udf##trap_code=heap_oob \ No newline at end of file +;; ret +;; block1: +;; udf##trap_code=heap_oob diff --git a/cranelift/filetests/filetests/isa/riscv64/wasm/load_store_dynamic_kind_i32_index_0xffffffff_guard_no_spectre_i8_access_0xffff0000_offset.wat b/cranelift/filetests/filetests/isa/riscv64/wasm/load_store_dynamic_kind_i32_index_0xffffffff_guard_no_spectre_i8_access_0xffff0000_offset.wat index e50a943411..2e9720df65 100644 --- a/cranelift/filetests/filetests/isa/riscv64/wasm/load_store_dynamic_kind_i32_index_0xffffffff_guard_no_spectre_i8_access_0xffff0000_offset.wat +++ b/cranelift/filetests/filetests/isa/riscv64/wasm/load_store_dynamic_kind_i32_index_0xffffffff_guard_no_spectre_i8_access_0xffff0000_offset.wat @@ -47,18 +47,18 @@ ;; ult t2,t1,t0##ty=i64 ;; trap_if t2,heap_oob ;; ld t2,8(a2) -;; ule t1,t1,t2##ty=i64 -;; bne t1,zero,taken(label1),not_taken(label3) -;; block1: -;; ld t2,0(a2) -;; add t2,t2,t0 -;; auipc t1,0; ld t1,12(t1); j 12; .8byte 0xffff0000 -;; add a0,t2,t1 -;; sb a1,0(a0) -;; j label2 +;; ugt t1,t1,t2##ty=i64 +;; bne t1,zero,taken(label1),not_taken(label2) ;; block2: -;; ret +;; ld a0,0(a2) +;; add a0,a0,t0 +;; auipc t2,0; ld t2,12(t2); j 12; .8byte 0xffff0000 +;; add a2,a0,t2 +;; sb a1,0(a2) +;; j label3 ;; block3: +;; ret +;; block1: ;; udf##trap_code=heap_oob ;; ;; function u0:1: @@ -69,16 +69,16 @@ ;; ult t2,t1,t0##ty=i64 ;; trap_if t2,heap_oob ;; ld t2,8(a1) -;; ule t1,t1,t2##ty=i64 -;; bne t1,zero,taken(label1),not_taken(label3) -;; block1: -;; ld t2,0(a1) -;; add t2,t2,t0 -;; auipc t1,0; ld t1,12(t1); j 12; .8byte 0xffff0000 -;; add a0,t2,t1 -;; lbu a0,0(a0) -;; j label2 +;; ugt t1,t1,t2##ty=i64 +;; bne t1,zero,taken(label1),not_taken(label2) ;; block2: -;; ret +;; ld a0,0(a1) +;; add a0,a0,t0 +;; auipc t2,0; ld t2,12(t2); j 12; .8byte 0xffff0000 +;; add a1,a0,t2 +;; lbu a0,0(a1) +;; j label3 ;; block3: -;; udf##trap_code=heap_oob \ No newline at end of file +;; ret +;; block1: +;; udf##trap_code=heap_oob diff --git a/cranelift/filetests/filetests/isa/riscv64/wasm/load_store_dynamic_kind_i64_index_0_guard_no_spectre_i32_access_0_offset.wat b/cranelift/filetests/filetests/isa/riscv64/wasm/load_store_dynamic_kind_i64_index_0_guard_no_spectre_i32_access_0_offset.wat index 821dee400f..d3abc91edb 100644 --- a/cranelift/filetests/filetests/isa/riscv64/wasm/load_store_dynamic_kind_i64_index_0_guard_no_spectre_i32_access_0_offset.wat +++ b/cranelift/filetests/filetests/isa/riscv64/wasm/load_store_dynamic_kind_i64_index_0_guard_no_spectre_i32_access_0_offset.wat @@ -43,30 +43,30 @@ ;; block0: ;; ld a5,8(a2) ;; addi a5,a5,-4 -;; ule a5,a0,a5##ty=i64 -;; bne a5,zero,taken(label1),not_taken(label3) -;; block1: -;; ld a6,0(a2) -;; add a6,a6,a0 -;; sw a1,0(a6) -;; j label2 +;; ugt a5,a0,a5##ty=i64 +;; bne a5,zero,taken(label1),not_taken(label2) ;; block2: -;; ret +;; ld a7,0(a2) +;; add a7,a7,a0 +;; sw a1,0(a7) +;; j label3 ;; block3: +;; ret +;; block1: ;; udf##trap_code=heap_oob ;; ;; function u0:1: ;; block0: ;; ld a5,8(a1) ;; addi a5,a5,-4 -;; ule a5,a0,a5##ty=i64 -;; bne a5,zero,taken(label1),not_taken(label3) -;; block1: -;; ld a6,0(a1) -;; add a6,a6,a0 -;; lw a0,0(a6) -;; j label2 +;; ugt a5,a0,a5##ty=i64 +;; bne a5,zero,taken(label1),not_taken(label2) ;; block2: -;; ret +;; ld a7,0(a1) +;; add a7,a7,a0 +;; lw a0,0(a7) +;; j label3 ;; block3: -;; udf##trap_code=heap_oob \ No newline at end of file +;; ret +;; block1: +;; udf##trap_code=heap_oob diff --git a/cranelift/filetests/filetests/isa/riscv64/wasm/load_store_dynamic_kind_i64_index_0_guard_no_spectre_i32_access_0x1000_offset.wat b/cranelift/filetests/filetests/isa/riscv64/wasm/load_store_dynamic_kind_i64_index_0_guard_no_spectre_i32_access_0x1000_offset.wat index 863bc69b39..feca48512a 100644 --- a/cranelift/filetests/filetests/isa/riscv64/wasm/load_store_dynamic_kind_i64_index_0_guard_no_spectre_i32_access_0x1000_offset.wat +++ b/cranelift/filetests/filetests/isa/riscv64/wasm/load_store_dynamic_kind_i64_index_0_guard_no_spectre_i32_access_0x1000_offset.wat @@ -45,18 +45,18 @@ ;; lui t3,1048575 ;; addi t3,t3,4092 ;; add t1,t4,t3 -;; ule t4,a0,t1##ty=i64 -;; bne t4,zero,taken(label1),not_taken(label3) -;; block1: -;; ld t0,0(a2) -;; add t0,t0,a0 -;; lui t4,1 -;; add t1,t0,t4 -;; sw a1,0(t1) -;; j label2 +;; ugt t4,a0,t1##ty=i64 +;; bne t4,zero,taken(label1),not_taken(label2) ;; block2: -;; ret +;; ld t1,0(a2) +;; add t1,t1,a0 +;; lui t0,1 +;; add t2,t1,t0 +;; sw a1,0(t2) +;; j label3 ;; block3: +;; ret +;; block1: ;; udf##trap_code=heap_oob ;; ;; function u0:1: @@ -65,16 +65,16 @@ ;; lui t3,1048575 ;; addi t3,t3,4092 ;; add t1,t4,t3 -;; ule t4,a0,t1##ty=i64 -;; bne t4,zero,taken(label1),not_taken(label3) -;; block1: -;; ld t0,0(a1) -;; add t0,t0,a0 -;; lui t4,1 -;; add t1,t0,t4 -;; lw a0,0(t1) -;; j label2 +;; ugt t4,a0,t1##ty=i64 +;; bne t4,zero,taken(label1),not_taken(label2) ;; block2: -;; ret +;; ld t1,0(a1) +;; add t1,t1,a0 +;; lui t0,1 +;; add t2,t1,t0 +;; lw a0,0(t2) +;; j label3 ;; block3: -;; udf##trap_code=heap_oob \ No newline at end of file +;; ret +;; block1: +;; udf##trap_code=heap_oob diff --git a/cranelift/filetests/filetests/isa/riscv64/wasm/load_store_dynamic_kind_i64_index_0_guard_no_spectre_i32_access_0xffff0000_offset.wat b/cranelift/filetests/filetests/isa/riscv64/wasm/load_store_dynamic_kind_i64_index_0_guard_no_spectre_i32_access_0xffff0000_offset.wat index d7629a4711..97e3a89412 100644 --- a/cranelift/filetests/filetests/isa/riscv64/wasm/load_store_dynamic_kind_i64_index_0_guard_no_spectre_i32_access_0xffff0000_offset.wat +++ b/cranelift/filetests/filetests/isa/riscv64/wasm/load_store_dynamic_kind_i64_index_0_guard_no_spectre_i32_access_0xffff0000_offset.wat @@ -46,18 +46,18 @@ ;; ult t1,t4,a0##ty=i64 ;; trap_if t1,heap_oob ;; ld t0,8(a2) -;; ule t0,t4,t0##ty=i64 -;; bne t0,zero,taken(label1),not_taken(label3) -;; block1: -;; ld t1,0(a2) -;; add t1,t1,a0 -;; auipc t0,0; ld t0,12(t0); j 12; .8byte 0xffff0000 -;; add t2,t1,t0 -;; sw a1,0(t2) -;; j label2 +;; ugt t0,t4,t0##ty=i64 +;; bne t0,zero,taken(label1),not_taken(label2) ;; block2: -;; ret +;; ld t2,0(a2) +;; add t2,t2,a0 +;; auipc t1,0; ld t1,12(t1); j 12; .8byte 0xffff0000 +;; add a0,t2,t1 +;; sw a1,0(a0) +;; j label3 ;; block3: +;; ret +;; block1: ;; udf##trap_code=heap_oob ;; ;; function u0:1: @@ -67,16 +67,16 @@ ;; ult t1,t4,a0##ty=i64 ;; trap_if t1,heap_oob ;; ld t0,8(a1) -;; ule t0,t4,t0##ty=i64 -;; bne t0,zero,taken(label1),not_taken(label3) -;; block1: -;; ld t1,0(a1) -;; add t1,t1,a0 -;; auipc t0,0; ld t0,12(t0); j 12; .8byte 0xffff0000 -;; add t2,t1,t0 -;; lw a0,0(t2) -;; j label2 +;; ugt t0,t4,t0##ty=i64 +;; bne t0,zero,taken(label1),not_taken(label2) ;; block2: -;; ret +;; ld t2,0(a1) +;; add t2,t2,a0 +;; auipc t1,0; ld t1,12(t1); j 12; .8byte 0xffff0000 +;; add a0,t2,t1 +;; lw a0,0(a0) +;; j label3 ;; block3: -;; udf##trap_code=heap_oob \ No newline at end of file +;; ret +;; block1: +;; udf##trap_code=heap_oob diff --git a/cranelift/filetests/filetests/isa/riscv64/wasm/load_store_dynamic_kind_i64_index_0_guard_no_spectre_i8_access_0_offset.wat b/cranelift/filetests/filetests/isa/riscv64/wasm/load_store_dynamic_kind_i64_index_0_guard_no_spectre_i8_access_0_offset.wat index 36783cb239..f1b2dc9bec 100644 --- a/cranelift/filetests/filetests/isa/riscv64/wasm/load_store_dynamic_kind_i64_index_0_guard_no_spectre_i8_access_0_offset.wat +++ b/cranelift/filetests/filetests/isa/riscv64/wasm/load_store_dynamic_kind_i64_index_0_guard_no_spectre_i8_access_0_offset.wat @@ -42,29 +42,29 @@ ;; function u0:0: ;; block0: ;; ld a4,8(a2) -;; ult a4,a0,a4##ty=i64 -;; bne a4,zero,taken(label1),not_taken(label3) -;; block1: -;; ld a5,0(a2) -;; add a5,a5,a0 -;; sb a1,0(a5) -;; j label2 +;; uge a4,a0,a4##ty=i64 +;; bne a4,zero,taken(label1),not_taken(label2) ;; block2: -;; ret +;; ld a6,0(a2) +;; add a6,a6,a0 +;; sb a1,0(a6) +;; j label3 ;; block3: +;; ret +;; block1: ;; udf##trap_code=heap_oob ;; ;; function u0:1: ;; block0: ;; ld a4,8(a1) -;; ult a4,a0,a4##ty=i64 -;; bne a4,zero,taken(label1),not_taken(label3) -;; block1: -;; ld a5,0(a1) -;; add a5,a5,a0 -;; lbu a0,0(a5) -;; j label2 +;; uge a4,a0,a4##ty=i64 +;; bne a4,zero,taken(label1),not_taken(label2) ;; block2: -;; ret +;; ld a6,0(a1) +;; add a6,a6,a0 +;; lbu a0,0(a6) +;; j label3 ;; block3: -;; udf##trap_code=heap_oob \ No newline at end of file +;; ret +;; block1: +;; udf##trap_code=heap_oob diff --git a/cranelift/filetests/filetests/isa/riscv64/wasm/load_store_dynamic_kind_i64_index_0_guard_no_spectre_i8_access_0x1000_offset.wat b/cranelift/filetests/filetests/isa/riscv64/wasm/load_store_dynamic_kind_i64_index_0_guard_no_spectre_i8_access_0x1000_offset.wat index 3048a5c0b4..35fd7ca523 100644 --- a/cranelift/filetests/filetests/isa/riscv64/wasm/load_store_dynamic_kind_i64_index_0_guard_no_spectre_i8_access_0x1000_offset.wat +++ b/cranelift/filetests/filetests/isa/riscv64/wasm/load_store_dynamic_kind_i64_index_0_guard_no_spectre_i8_access_0x1000_offset.wat @@ -45,18 +45,18 @@ ;; lui t3,1048575 ;; addi t3,t3,4095 ;; add t1,t4,t3 -;; ule t4,a0,t1##ty=i64 -;; bne t4,zero,taken(label1),not_taken(label3) -;; block1: -;; ld t0,0(a2) -;; add t0,t0,a0 -;; lui t4,1 -;; add t1,t0,t4 -;; sb a1,0(t1) -;; j label2 +;; ugt t4,a0,t1##ty=i64 +;; bne t4,zero,taken(label1),not_taken(label2) ;; block2: -;; ret +;; ld t1,0(a2) +;; add t1,t1,a0 +;; lui t0,1 +;; add t2,t1,t0 +;; sb a1,0(t2) +;; j label3 ;; block3: +;; ret +;; block1: ;; udf##trap_code=heap_oob ;; ;; function u0:1: @@ -65,16 +65,16 @@ ;; lui t3,1048575 ;; addi t3,t3,4095 ;; add t1,t4,t3 -;; ule t4,a0,t1##ty=i64 -;; bne t4,zero,taken(label1),not_taken(label3) -;; block1: -;; ld t0,0(a1) -;; add t0,t0,a0 -;; lui t4,1 -;; add t1,t0,t4 -;; lbu a0,0(t1) -;; j label2 +;; ugt t4,a0,t1##ty=i64 +;; bne t4,zero,taken(label1),not_taken(label2) ;; block2: -;; ret +;; ld t1,0(a1) +;; add t1,t1,a0 +;; lui t0,1 +;; add t2,t1,t0 +;; lbu a0,0(t2) +;; j label3 ;; block3: -;; udf##trap_code=heap_oob \ No newline at end of file +;; ret +;; block1: +;; udf##trap_code=heap_oob diff --git a/cranelift/filetests/filetests/isa/riscv64/wasm/load_store_dynamic_kind_i64_index_0_guard_no_spectre_i8_access_0xffff0000_offset.wat b/cranelift/filetests/filetests/isa/riscv64/wasm/load_store_dynamic_kind_i64_index_0_guard_no_spectre_i8_access_0xffff0000_offset.wat index e73189853d..55f5c0a9c3 100644 --- a/cranelift/filetests/filetests/isa/riscv64/wasm/load_store_dynamic_kind_i64_index_0_guard_no_spectre_i8_access_0xffff0000_offset.wat +++ b/cranelift/filetests/filetests/isa/riscv64/wasm/load_store_dynamic_kind_i64_index_0_guard_no_spectre_i8_access_0xffff0000_offset.wat @@ -46,18 +46,18 @@ ;; ult t1,t4,a0##ty=i64 ;; trap_if t1,heap_oob ;; ld t0,8(a2) -;; ule t0,t4,t0##ty=i64 -;; bne t0,zero,taken(label1),not_taken(label3) -;; block1: -;; ld t1,0(a2) -;; add t1,t1,a0 -;; auipc t0,0; ld t0,12(t0); j 12; .8byte 0xffff0000 -;; add t2,t1,t0 -;; sb a1,0(t2) -;; j label2 +;; ugt t0,t4,t0##ty=i64 +;; bne t0,zero,taken(label1),not_taken(label2) ;; block2: -;; ret +;; ld t2,0(a2) +;; add t2,t2,a0 +;; auipc t1,0; ld t1,12(t1); j 12; .8byte 0xffff0000 +;; add a0,t2,t1 +;; sb a1,0(a0) +;; j label3 ;; block3: +;; ret +;; block1: ;; udf##trap_code=heap_oob ;; ;; function u0:1: @@ -67,16 +67,16 @@ ;; ult t1,t4,a0##ty=i64 ;; trap_if t1,heap_oob ;; ld t0,8(a1) -;; ule t0,t4,t0##ty=i64 -;; bne t0,zero,taken(label1),not_taken(label3) -;; block1: -;; ld t1,0(a1) -;; add t1,t1,a0 -;; auipc t0,0; ld t0,12(t0); j 12; .8byte 0xffff0000 -;; add t2,t1,t0 -;; lbu a0,0(t2) -;; j label2 +;; ugt t0,t4,t0##ty=i64 +;; bne t0,zero,taken(label1),not_taken(label2) ;; block2: -;; ret +;; ld t2,0(a1) +;; add t2,t2,a0 +;; auipc t1,0; ld t1,12(t1); j 12; .8byte 0xffff0000 +;; add a0,t2,t1 +;; lbu a0,0(a0) +;; j label3 ;; block3: -;; udf##trap_code=heap_oob \ No newline at end of file +;; ret +;; block1: +;; udf##trap_code=heap_oob diff --git a/cranelift/filetests/filetests/isa/riscv64/wasm/load_store_dynamic_kind_i64_index_0xffffffff_guard_no_spectre_i32_access_0_offset.wat b/cranelift/filetests/filetests/isa/riscv64/wasm/load_store_dynamic_kind_i64_index_0xffffffff_guard_no_spectre_i32_access_0_offset.wat index 64331034ad..960d987ea5 100644 --- a/cranelift/filetests/filetests/isa/riscv64/wasm/load_store_dynamic_kind_i64_index_0xffffffff_guard_no_spectre_i32_access_0_offset.wat +++ b/cranelift/filetests/filetests/isa/riscv64/wasm/load_store_dynamic_kind_i64_index_0xffffffff_guard_no_spectre_i32_access_0_offset.wat @@ -43,30 +43,30 @@ ;; block0: ;; ld a5,8(a2) ;; addi a5,a5,-4 -;; ule a5,a0,a5##ty=i64 -;; bne a5,zero,taken(label1),not_taken(label3) -;; block1: -;; ld a6,0(a2) -;; add a6,a6,a0 -;; sw a1,0(a6) -;; j label2 +;; ugt a5,a0,a5##ty=i64 +;; bne a5,zero,taken(label1),not_taken(label2) ;; block2: -;; ret +;; ld a7,0(a2) +;; add a7,a7,a0 +;; sw a1,0(a7) +;; j label3 ;; block3: +;; ret +;; block1: ;; udf##trap_code=heap_oob ;; ;; function u0:1: ;; block0: ;; ld a5,8(a1) ;; addi a5,a5,-4 -;; ule a5,a0,a5##ty=i64 -;; bne a5,zero,taken(label1),not_taken(label3) -;; block1: -;; ld a6,0(a1) -;; add a6,a6,a0 -;; lw a0,0(a6) -;; j label2 +;; ugt a5,a0,a5##ty=i64 +;; bne a5,zero,taken(label1),not_taken(label2) ;; block2: -;; ret +;; ld a7,0(a1) +;; add a7,a7,a0 +;; lw a0,0(a7) +;; j label3 ;; block3: -;; udf##trap_code=heap_oob \ No newline at end of file +;; ret +;; block1: +;; udf##trap_code=heap_oob diff --git a/cranelift/filetests/filetests/isa/riscv64/wasm/load_store_dynamic_kind_i64_index_0xffffffff_guard_no_spectre_i32_access_0x1000_offset.wat b/cranelift/filetests/filetests/isa/riscv64/wasm/load_store_dynamic_kind_i64_index_0xffffffff_guard_no_spectre_i32_access_0x1000_offset.wat index d0b5e101f1..55521b3b7f 100644 --- a/cranelift/filetests/filetests/isa/riscv64/wasm/load_store_dynamic_kind_i64_index_0xffffffff_guard_no_spectre_i32_access_0x1000_offset.wat +++ b/cranelift/filetests/filetests/isa/riscv64/wasm/load_store_dynamic_kind_i64_index_0xffffffff_guard_no_spectre_i32_access_0x1000_offset.wat @@ -45,18 +45,18 @@ ;; lui t3,1048575 ;; addi t3,t3,4092 ;; add t1,t4,t3 -;; ule t4,a0,t1##ty=i64 -;; bne t4,zero,taken(label1),not_taken(label3) -;; block1: -;; ld t0,0(a2) -;; add t0,t0,a0 -;; lui t4,1 -;; add t1,t0,t4 -;; sw a1,0(t1) -;; j label2 +;; ugt t4,a0,t1##ty=i64 +;; bne t4,zero,taken(label1),not_taken(label2) ;; block2: -;; ret +;; ld t1,0(a2) +;; add t1,t1,a0 +;; lui t0,1 +;; add t2,t1,t0 +;; sw a1,0(t2) +;; j label3 ;; block3: +;; ret +;; block1: ;; udf##trap_code=heap_oob ;; ;; function u0:1: @@ -65,16 +65,16 @@ ;; lui t3,1048575 ;; addi t3,t3,4092 ;; add t1,t4,t3 -;; ule t4,a0,t1##ty=i64 -;; bne t4,zero,taken(label1),not_taken(label3) -;; block1: -;; ld t0,0(a1) -;; add t0,t0,a0 -;; lui t4,1 -;; add t1,t0,t4 -;; lw a0,0(t1) -;; j label2 +;; ugt t4,a0,t1##ty=i64 +;; bne t4,zero,taken(label1),not_taken(label2) ;; block2: -;; ret +;; ld t1,0(a1) +;; add t1,t1,a0 +;; lui t0,1 +;; add t2,t1,t0 +;; lw a0,0(t2) +;; j label3 ;; block3: -;; udf##trap_code=heap_oob \ No newline at end of file +;; ret +;; block1: +;; udf##trap_code=heap_oob diff --git a/cranelift/filetests/filetests/isa/riscv64/wasm/load_store_dynamic_kind_i64_index_0xffffffff_guard_no_spectre_i32_access_0xffff0000_offset.wat b/cranelift/filetests/filetests/isa/riscv64/wasm/load_store_dynamic_kind_i64_index_0xffffffff_guard_no_spectre_i32_access_0xffff0000_offset.wat index c509b188a0..2f27ee4e0a 100644 --- a/cranelift/filetests/filetests/isa/riscv64/wasm/load_store_dynamic_kind_i64_index_0xffffffff_guard_no_spectre_i32_access_0xffff0000_offset.wat +++ b/cranelift/filetests/filetests/isa/riscv64/wasm/load_store_dynamic_kind_i64_index_0xffffffff_guard_no_spectre_i32_access_0xffff0000_offset.wat @@ -46,18 +46,18 @@ ;; ult t1,t4,a0##ty=i64 ;; trap_if t1,heap_oob ;; ld t0,8(a2) -;; ule t0,t4,t0##ty=i64 -;; bne t0,zero,taken(label1),not_taken(label3) -;; block1: -;; ld t1,0(a2) -;; add t1,t1,a0 -;; auipc t0,0; ld t0,12(t0); j 12; .8byte 0xffff0000 -;; add t2,t1,t0 -;; sw a1,0(t2) -;; j label2 +;; ugt t0,t4,t0##ty=i64 +;; bne t0,zero,taken(label1),not_taken(label2) ;; block2: -;; ret +;; ld t2,0(a2) +;; add t2,t2,a0 +;; auipc t1,0; ld t1,12(t1); j 12; .8byte 0xffff0000 +;; add a0,t2,t1 +;; sw a1,0(a0) +;; j label3 ;; block3: +;; ret +;; block1: ;; udf##trap_code=heap_oob ;; ;; function u0:1: @@ -67,16 +67,16 @@ ;; ult t1,t4,a0##ty=i64 ;; trap_if t1,heap_oob ;; ld t0,8(a1) -;; ule t0,t4,t0##ty=i64 -;; bne t0,zero,taken(label1),not_taken(label3) -;; block1: -;; ld t1,0(a1) -;; add t1,t1,a0 -;; auipc t0,0; ld t0,12(t0); j 12; .8byte 0xffff0000 -;; add t2,t1,t0 -;; lw a0,0(t2) -;; j label2 +;; ugt t0,t4,t0##ty=i64 +;; bne t0,zero,taken(label1),not_taken(label2) ;; block2: -;; ret +;; ld t2,0(a1) +;; add t2,t2,a0 +;; auipc t1,0; ld t1,12(t1); j 12; .8byte 0xffff0000 +;; add a0,t2,t1 +;; lw a0,0(a0) +;; j label3 ;; block3: -;; udf##trap_code=heap_oob \ No newline at end of file +;; ret +;; block1: +;; udf##trap_code=heap_oob diff --git a/cranelift/filetests/filetests/isa/riscv64/wasm/load_store_dynamic_kind_i64_index_0xffffffff_guard_no_spectre_i8_access_0_offset.wat b/cranelift/filetests/filetests/isa/riscv64/wasm/load_store_dynamic_kind_i64_index_0xffffffff_guard_no_spectre_i8_access_0_offset.wat index 5daa2c0be4..e96e59b1d7 100644 --- a/cranelift/filetests/filetests/isa/riscv64/wasm/load_store_dynamic_kind_i64_index_0xffffffff_guard_no_spectre_i8_access_0_offset.wat +++ b/cranelift/filetests/filetests/isa/riscv64/wasm/load_store_dynamic_kind_i64_index_0xffffffff_guard_no_spectre_i8_access_0_offset.wat @@ -42,29 +42,29 @@ ;; function u0:0: ;; block0: ;; ld a4,8(a2) -;; ult a4,a0,a4##ty=i64 -;; bne a4,zero,taken(label1),not_taken(label3) -;; block1: -;; ld a5,0(a2) -;; add a5,a5,a0 -;; sb a1,0(a5) -;; j label2 +;; uge a4,a0,a4##ty=i64 +;; bne a4,zero,taken(label1),not_taken(label2) ;; block2: -;; ret +;; ld a6,0(a2) +;; add a6,a6,a0 +;; sb a1,0(a6) +;; j label3 ;; block3: +;; ret +;; block1: ;; udf##trap_code=heap_oob ;; ;; function u0:1: ;; block0: ;; ld a4,8(a1) -;; ult a4,a0,a4##ty=i64 -;; bne a4,zero,taken(label1),not_taken(label3) -;; block1: -;; ld a5,0(a1) -;; add a5,a5,a0 -;; lbu a0,0(a5) -;; j label2 +;; uge a4,a0,a4##ty=i64 +;; bne a4,zero,taken(label1),not_taken(label2) ;; block2: -;; ret +;; ld a6,0(a1) +;; add a6,a6,a0 +;; lbu a0,0(a6) +;; j label3 ;; block3: -;; udf##trap_code=heap_oob \ No newline at end of file +;; ret +;; block1: +;; udf##trap_code=heap_oob diff --git a/cranelift/filetests/filetests/isa/riscv64/wasm/load_store_dynamic_kind_i64_index_0xffffffff_guard_no_spectre_i8_access_0x1000_offset.wat b/cranelift/filetests/filetests/isa/riscv64/wasm/load_store_dynamic_kind_i64_index_0xffffffff_guard_no_spectre_i8_access_0x1000_offset.wat index 532cf646bb..91e6613bc2 100644 --- a/cranelift/filetests/filetests/isa/riscv64/wasm/load_store_dynamic_kind_i64_index_0xffffffff_guard_no_spectre_i8_access_0x1000_offset.wat +++ b/cranelift/filetests/filetests/isa/riscv64/wasm/load_store_dynamic_kind_i64_index_0xffffffff_guard_no_spectre_i8_access_0x1000_offset.wat @@ -45,18 +45,18 @@ ;; lui t3,1048575 ;; addi t3,t3,4095 ;; add t1,t4,t3 -;; ule t4,a0,t1##ty=i64 -;; bne t4,zero,taken(label1),not_taken(label3) -;; block1: -;; ld t0,0(a2) -;; add t0,t0,a0 -;; lui t4,1 -;; add t1,t0,t4 -;; sb a1,0(t1) -;; j label2 +;; ugt t4,a0,t1##ty=i64 +;; bne t4,zero,taken(label1),not_taken(label2) ;; block2: -;; ret +;; ld t1,0(a2) +;; add t1,t1,a0 +;; lui t0,1 +;; add t2,t1,t0 +;; sb a1,0(t2) +;; j label3 ;; block3: +;; ret +;; block1: ;; udf##trap_code=heap_oob ;; ;; function u0:1: @@ -65,16 +65,16 @@ ;; lui t3,1048575 ;; addi t3,t3,4095 ;; add t1,t4,t3 -;; ule t4,a0,t1##ty=i64 -;; bne t4,zero,taken(label1),not_taken(label3) -;; block1: -;; ld t0,0(a1) -;; add t0,t0,a0 -;; lui t4,1 -;; add t1,t0,t4 -;; lbu a0,0(t1) -;; j label2 +;; ugt t4,a0,t1##ty=i64 +;; bne t4,zero,taken(label1),not_taken(label2) ;; block2: -;; ret +;; ld t1,0(a1) +;; add t1,t1,a0 +;; lui t0,1 +;; add t2,t1,t0 +;; lbu a0,0(t2) +;; j label3 ;; block3: -;; udf##trap_code=heap_oob \ No newline at end of file +;; ret +;; block1: +;; udf##trap_code=heap_oob diff --git a/cranelift/filetests/filetests/isa/riscv64/wasm/load_store_dynamic_kind_i64_index_0xffffffff_guard_no_spectre_i8_access_0xffff0000_offset.wat b/cranelift/filetests/filetests/isa/riscv64/wasm/load_store_dynamic_kind_i64_index_0xffffffff_guard_no_spectre_i8_access_0xffff0000_offset.wat index 05eb78d444..9780b6a6ed 100644 --- a/cranelift/filetests/filetests/isa/riscv64/wasm/load_store_dynamic_kind_i64_index_0xffffffff_guard_no_spectre_i8_access_0xffff0000_offset.wat +++ b/cranelift/filetests/filetests/isa/riscv64/wasm/load_store_dynamic_kind_i64_index_0xffffffff_guard_no_spectre_i8_access_0xffff0000_offset.wat @@ -46,18 +46,18 @@ ;; ult t1,t4,a0##ty=i64 ;; trap_if t1,heap_oob ;; ld t0,8(a2) -;; ule t0,t4,t0##ty=i64 -;; bne t0,zero,taken(label1),not_taken(label3) -;; block1: -;; ld t1,0(a2) -;; add t1,t1,a0 -;; auipc t0,0; ld t0,12(t0); j 12; .8byte 0xffff0000 -;; add t2,t1,t0 -;; sb a1,0(t2) -;; j label2 +;; ugt t0,t4,t0##ty=i64 +;; bne t0,zero,taken(label1),not_taken(label2) ;; block2: -;; ret +;; ld t2,0(a2) +;; add t2,t2,a0 +;; auipc t1,0; ld t1,12(t1); j 12; .8byte 0xffff0000 +;; add a0,t2,t1 +;; sb a1,0(a0) +;; j label3 ;; block3: +;; ret +;; block1: ;; udf##trap_code=heap_oob ;; ;; function u0:1: @@ -67,16 +67,16 @@ ;; ult t1,t4,a0##ty=i64 ;; trap_if t1,heap_oob ;; ld t0,8(a1) -;; ule t0,t4,t0##ty=i64 -;; bne t0,zero,taken(label1),not_taken(label3) -;; block1: -;; ld t1,0(a1) -;; add t1,t1,a0 -;; auipc t0,0; ld t0,12(t0); j 12; .8byte 0xffff0000 -;; add t2,t1,t0 -;; lbu a0,0(t2) -;; j label2 +;; ugt t0,t4,t0##ty=i64 +;; bne t0,zero,taken(label1),not_taken(label2) ;; block2: -;; ret +;; ld t2,0(a1) +;; add t2,t2,a0 +;; auipc t1,0; ld t1,12(t1); j 12; .8byte 0xffff0000 +;; add a0,t2,t1 +;; lbu a0,0(a0) +;; j label3 ;; block3: -;; udf##trap_code=heap_oob \ No newline at end of file +;; ret +;; block1: +;; udf##trap_code=heap_oob diff --git a/cranelift/filetests/filetests/isa/riscv64/wasm/load_store_static_kind_i32_index_0_guard_no_spectre_i32_access_0_offset.wat b/cranelift/filetests/filetests/isa/riscv64/wasm/load_store_static_kind_i32_index_0_guard_no_spectre_i32_access_0_offset.wat index 6af0cbaa67..5d1dd0c4de 100644 --- a/cranelift/filetests/filetests/isa/riscv64/wasm/load_store_static_kind_i32_index_0_guard_no_spectre_i32_access_0_offset.wat +++ b/cranelift/filetests/filetests/isa/riscv64/wasm/load_store_static_kind_i32_index_0_guard_no_spectre_i32_access_0_offset.wat @@ -42,16 +42,16 @@ ;; uext.w a6,a0 ;; lui a5,65536 ;; addi a5,a5,4092 -;; ule t3,a6,a5##ty=i64 -;; bne t3,zero,taken(label1),not_taken(label3) -;; block1: -;; ld a7,0(a2) -;; add a7,a7,a6 -;; sw a1,0(a7) -;; j label2 +;; ugt t3,a6,a5##ty=i64 +;; bne t3,zero,taken(label1),not_taken(label2) ;; block2: -;; ret +;; ld t3,0(a2) +;; add t3,t3,a6 +;; sw a1,0(t3) +;; j label3 ;; block3: +;; ret +;; block1: ;; udf##trap_code=heap_oob ;; ;; function u0:1: @@ -59,14 +59,14 @@ ;; uext.w a6,a0 ;; lui a5,65536 ;; addi a5,a5,4092 -;; ule t3,a6,a5##ty=i64 -;; bne t3,zero,taken(label1),not_taken(label3) -;; block1: -;; ld a7,0(a1) -;; add a7,a7,a6 -;; lw a0,0(a7) -;; j label2 +;; ugt t3,a6,a5##ty=i64 +;; bne t3,zero,taken(label1),not_taken(label2) ;; block2: -;; ret +;; ld t3,0(a1) +;; add t3,t3,a6 +;; lw a0,0(t3) +;; j label3 ;; block3: -;; udf##trap_code=heap_oob \ No newline at end of file +;; ret +;; block1: +;; udf##trap_code=heap_oob diff --git a/cranelift/filetests/filetests/isa/riscv64/wasm/load_store_static_kind_i32_index_0_guard_no_spectre_i32_access_0x1000_offset.wat b/cranelift/filetests/filetests/isa/riscv64/wasm/load_store_static_kind_i32_index_0_guard_no_spectre_i32_access_0x1000_offset.wat index 0c53c31566..43c5b22a86 100644 --- a/cranelift/filetests/filetests/isa/riscv64/wasm/load_store_static_kind_i32_index_0_guard_no_spectre_i32_access_0x1000_offset.wat +++ b/cranelift/filetests/filetests/isa/riscv64/wasm/load_store_static_kind_i32_index_0_guard_no_spectre_i32_access_0x1000_offset.wat @@ -42,18 +42,18 @@ ;; uext.w t3,a0 ;; lui a7,65535 ;; addi a7,a7,4092 -;; ule t0,t3,a7##ty=i64 -;; bne t0,zero,taken(label1),not_taken(label3) -;; block1: -;; ld t4,0(a2) -;; add t4,t4,t3 -;; lui t3,1 -;; add t0,t4,t3 -;; sw a1,0(t0) -;; j label2 +;; ugt t0,t3,a7##ty=i64 +;; bne t0,zero,taken(label1),not_taken(label2) ;; block2: -;; ret +;; ld t0,0(a2) +;; add t0,t0,t3 +;; lui t4,1 +;; add t1,t0,t4 +;; sw a1,0(t1) +;; j label3 ;; block3: +;; ret +;; block1: ;; udf##trap_code=heap_oob ;; ;; function u0:1: @@ -61,16 +61,16 @@ ;; uext.w t3,a0 ;; lui a7,65535 ;; addi a7,a7,4092 -;; ule t0,t3,a7##ty=i64 -;; bne t0,zero,taken(label1),not_taken(label3) -;; block1: -;; ld t4,0(a1) -;; add t4,t4,t3 -;; lui t3,1 -;; add t0,t4,t3 -;; lw a0,0(t0) -;; j label2 +;; ugt t0,t3,a7##ty=i64 +;; bne t0,zero,taken(label1),not_taken(label2) ;; block2: -;; ret +;; ld t0,0(a1) +;; add t0,t0,t3 +;; lui t4,1 +;; add t1,t0,t4 +;; lw a0,0(t1) +;; j label3 ;; block3: -;; udf##trap_code=heap_oob \ No newline at end of file +;; ret +;; block1: +;; udf##trap_code=heap_oob diff --git a/cranelift/filetests/filetests/isa/riscv64/wasm/load_store_static_kind_i32_index_0_guard_no_spectre_i8_access_0_offset.wat b/cranelift/filetests/filetests/isa/riscv64/wasm/load_store_static_kind_i32_index_0_guard_no_spectre_i8_access_0_offset.wat index 1543356ad0..313e81f8cc 100644 --- a/cranelift/filetests/filetests/isa/riscv64/wasm/load_store_static_kind_i32_index_0_guard_no_spectre_i8_access_0_offset.wat +++ b/cranelift/filetests/filetests/isa/riscv64/wasm/load_store_static_kind_i32_index_0_guard_no_spectre_i8_access_0_offset.wat @@ -42,16 +42,16 @@ ;; uext.w a6,a0 ;; lui a5,65536 ;; addi a5,a5,4095 -;; ule t3,a6,a5##ty=i64 -;; bne t3,zero,taken(label1),not_taken(label3) -;; block1: -;; ld a7,0(a2) -;; add a7,a7,a6 -;; sb a1,0(a7) -;; j label2 +;; ugt t3,a6,a5##ty=i64 +;; bne t3,zero,taken(label1),not_taken(label2) ;; block2: -;; ret +;; ld t3,0(a2) +;; add t3,t3,a6 +;; sb a1,0(t3) +;; j label3 ;; block3: +;; ret +;; block1: ;; udf##trap_code=heap_oob ;; ;; function u0:1: @@ -59,14 +59,14 @@ ;; uext.w a6,a0 ;; lui a5,65536 ;; addi a5,a5,4095 -;; ule t3,a6,a5##ty=i64 -;; bne t3,zero,taken(label1),not_taken(label3) -;; block1: -;; ld a7,0(a1) -;; add a7,a7,a6 -;; lbu a0,0(a7) -;; j label2 +;; ugt t3,a6,a5##ty=i64 +;; bne t3,zero,taken(label1),not_taken(label2) ;; block2: -;; ret +;; ld t3,0(a1) +;; add t3,t3,a6 +;; lbu a0,0(t3) +;; j label3 ;; block3: -;; udf##trap_code=heap_oob \ No newline at end of file +;; ret +;; block1: +;; udf##trap_code=heap_oob diff --git a/cranelift/filetests/filetests/isa/riscv64/wasm/load_store_static_kind_i32_index_0_guard_no_spectre_i8_access_0x1000_offset.wat b/cranelift/filetests/filetests/isa/riscv64/wasm/load_store_static_kind_i32_index_0_guard_no_spectre_i8_access_0x1000_offset.wat index da9001913d..f187fb8db6 100644 --- a/cranelift/filetests/filetests/isa/riscv64/wasm/load_store_static_kind_i32_index_0_guard_no_spectre_i8_access_0x1000_offset.wat +++ b/cranelift/filetests/filetests/isa/riscv64/wasm/load_store_static_kind_i32_index_0_guard_no_spectre_i8_access_0x1000_offset.wat @@ -42,18 +42,18 @@ ;; uext.w t3,a0 ;; lui a7,65535 ;; addi a7,a7,4095 -;; ule t0,t3,a7##ty=i64 -;; bne t0,zero,taken(label1),not_taken(label3) -;; block1: -;; ld t4,0(a2) -;; add t4,t4,t3 -;; lui t3,1 -;; add t0,t4,t3 -;; sb a1,0(t0) -;; j label2 +;; ugt t0,t3,a7##ty=i64 +;; bne t0,zero,taken(label1),not_taken(label2) ;; block2: -;; ret +;; ld t0,0(a2) +;; add t0,t0,t3 +;; lui t4,1 +;; add t1,t0,t4 +;; sb a1,0(t1) +;; j label3 ;; block3: +;; ret +;; block1: ;; udf##trap_code=heap_oob ;; ;; function u0:1: @@ -61,16 +61,16 @@ ;; uext.w t3,a0 ;; lui a7,65535 ;; addi a7,a7,4095 -;; ule t0,t3,a7##ty=i64 -;; bne t0,zero,taken(label1),not_taken(label3) -;; block1: -;; ld t4,0(a1) -;; add t4,t4,t3 -;; lui t3,1 -;; add t0,t4,t3 -;; lbu a0,0(t0) -;; j label2 +;; ugt t0,t3,a7##ty=i64 +;; bne t0,zero,taken(label1),not_taken(label2) ;; block2: -;; ret +;; ld t0,0(a1) +;; add t0,t0,t3 +;; lui t4,1 +;; add t1,t0,t4 +;; lbu a0,0(t1) +;; j label3 ;; block3: -;; udf##trap_code=heap_oob \ No newline at end of file +;; ret +;; block1: +;; udf##trap_code=heap_oob diff --git a/cranelift/filetests/filetests/isa/riscv64/wasm/load_store_static_kind_i64_index_0_guard_no_spectre_i32_access_0_offset.wat b/cranelift/filetests/filetests/isa/riscv64/wasm/load_store_static_kind_i64_index_0_guard_no_spectre_i32_access_0_offset.wat index 29856b085f..149be9f522 100644 --- a/cranelift/filetests/filetests/isa/riscv64/wasm/load_store_static_kind_i64_index_0_guard_no_spectre_i32_access_0_offset.wat +++ b/cranelift/filetests/filetests/isa/riscv64/wasm/load_store_static_kind_i64_index_0_guard_no_spectre_i32_access_0_offset.wat @@ -41,30 +41,30 @@ ;; block0: ;; lui a4,65536 ;; addi a4,a4,4092 -;; ule a7,a0,a4##ty=i64 -;; bne a7,zero,taken(label1),not_taken(label3) -;; block1: -;; ld a6,0(a2) -;; add a6,a6,a0 -;; sw a1,0(a6) -;; j label2 +;; ugt a7,a0,a4##ty=i64 +;; bne a7,zero,taken(label1),not_taken(label2) ;; block2: -;; ret +;; ld a7,0(a2) +;; add a7,a7,a0 +;; sw a1,0(a7) +;; j label3 ;; block3: +;; ret +;; block1: ;; udf##trap_code=heap_oob ;; ;; function u0:1: ;; block0: ;; lui a4,65536 ;; addi a4,a4,4092 -;; ule a7,a0,a4##ty=i64 -;; bne a7,zero,taken(label1),not_taken(label3) -;; block1: -;; ld a6,0(a1) -;; add a6,a6,a0 -;; lw a0,0(a6) -;; j label2 +;; ugt a7,a0,a4##ty=i64 +;; bne a7,zero,taken(label1),not_taken(label2) ;; block2: -;; ret +;; ld a7,0(a1) +;; add a7,a7,a0 +;; lw a0,0(a7) +;; j label3 ;; block3: -;; udf##trap_code=heap_oob \ No newline at end of file +;; ret +;; block1: +;; udf##trap_code=heap_oob diff --git a/cranelift/filetests/filetests/isa/riscv64/wasm/load_store_static_kind_i64_index_0_guard_no_spectre_i32_access_0x1000_offset.wat b/cranelift/filetests/filetests/isa/riscv64/wasm/load_store_static_kind_i64_index_0_guard_no_spectre_i32_access_0x1000_offset.wat index 1e95a0c1ea..35578879a4 100644 --- a/cranelift/filetests/filetests/isa/riscv64/wasm/load_store_static_kind_i64_index_0_guard_no_spectre_i32_access_0x1000_offset.wat +++ b/cranelift/filetests/filetests/isa/riscv64/wasm/load_store_static_kind_i64_index_0_guard_no_spectre_i32_access_0x1000_offset.wat @@ -41,34 +41,34 @@ ;; block0: ;; lui a6,65535 ;; addi a6,a6,4092 -;; ule t4,a0,a6##ty=i64 -;; bne t4,zero,taken(label1),not_taken(label3) -;; block1: -;; ld t3,0(a2) -;; add t3,t3,a0 -;; lui a7,1 -;; add t4,t3,a7 -;; sw a1,0(t4) -;; j label2 +;; ugt t4,a0,a6##ty=i64 +;; bne t4,zero,taken(label1),not_taken(label2) ;; block2: -;; ret +;; ld t4,0(a2) +;; add t4,t4,a0 +;; lui t3,1 +;; add t0,t4,t3 +;; sw a1,0(t0) +;; j label3 ;; block3: +;; ret +;; block1: ;; udf##trap_code=heap_oob ;; ;; function u0:1: ;; block0: ;; lui a6,65535 ;; addi a6,a6,4092 -;; ule t4,a0,a6##ty=i64 -;; bne t4,zero,taken(label1),not_taken(label3) -;; block1: -;; ld t3,0(a1) -;; add t3,t3,a0 -;; lui a7,1 -;; add t4,t3,a7 -;; lw a0,0(t4) -;; j label2 +;; ugt t4,a0,a6##ty=i64 +;; bne t4,zero,taken(label1),not_taken(label2) ;; block2: -;; ret +;; ld t4,0(a1) +;; add t4,t4,a0 +;; lui t3,1 +;; add t0,t4,t3 +;; lw a0,0(t0) +;; j label3 ;; block3: -;; udf##trap_code=heap_oob \ No newline at end of file +;; ret +;; block1: +;; udf##trap_code=heap_oob diff --git a/cranelift/filetests/filetests/isa/riscv64/wasm/load_store_static_kind_i64_index_0_guard_no_spectre_i8_access_0_offset.wat b/cranelift/filetests/filetests/isa/riscv64/wasm/load_store_static_kind_i64_index_0_guard_no_spectre_i8_access_0_offset.wat index aa270442d4..e78f96a0ac 100644 --- a/cranelift/filetests/filetests/isa/riscv64/wasm/load_store_static_kind_i64_index_0_guard_no_spectre_i8_access_0_offset.wat +++ b/cranelift/filetests/filetests/isa/riscv64/wasm/load_store_static_kind_i64_index_0_guard_no_spectre_i8_access_0_offset.wat @@ -41,30 +41,30 @@ ;; block0: ;; lui a4,65536 ;; addi a4,a4,4095 -;; ule a7,a0,a4##ty=i64 -;; bne a7,zero,taken(label1),not_taken(label3) -;; block1: -;; ld a6,0(a2) -;; add a6,a6,a0 -;; sb a1,0(a6) -;; j label2 +;; ugt a7,a0,a4##ty=i64 +;; bne a7,zero,taken(label1),not_taken(label2) ;; block2: -;; ret +;; ld a7,0(a2) +;; add a7,a7,a0 +;; sb a1,0(a7) +;; j label3 ;; block3: +;; ret +;; block1: ;; udf##trap_code=heap_oob ;; ;; function u0:1: ;; block0: ;; lui a4,65536 ;; addi a4,a4,4095 -;; ule a7,a0,a4##ty=i64 -;; bne a7,zero,taken(label1),not_taken(label3) -;; block1: -;; ld a6,0(a1) -;; add a6,a6,a0 -;; lbu a0,0(a6) -;; j label2 +;; ugt a7,a0,a4##ty=i64 +;; bne a7,zero,taken(label1),not_taken(label2) ;; block2: -;; ret +;; ld a7,0(a1) +;; add a7,a7,a0 +;; lbu a0,0(a7) +;; j label3 ;; block3: -;; udf##trap_code=heap_oob \ No newline at end of file +;; ret +;; block1: +;; udf##trap_code=heap_oob diff --git a/cranelift/filetests/filetests/isa/riscv64/wasm/load_store_static_kind_i64_index_0_guard_no_spectre_i8_access_0x1000_offset.wat b/cranelift/filetests/filetests/isa/riscv64/wasm/load_store_static_kind_i64_index_0_guard_no_spectre_i8_access_0x1000_offset.wat index a3a6eff4af..94e20e4d3a 100644 --- a/cranelift/filetests/filetests/isa/riscv64/wasm/load_store_static_kind_i64_index_0_guard_no_spectre_i8_access_0x1000_offset.wat +++ b/cranelift/filetests/filetests/isa/riscv64/wasm/load_store_static_kind_i64_index_0_guard_no_spectre_i8_access_0x1000_offset.wat @@ -41,34 +41,34 @@ ;; block0: ;; lui a6,65535 ;; addi a6,a6,4095 -;; ule t4,a0,a6##ty=i64 -;; bne t4,zero,taken(label1),not_taken(label3) -;; block1: -;; ld t3,0(a2) -;; add t3,t3,a0 -;; lui a7,1 -;; add t4,t3,a7 -;; sb a1,0(t4) -;; j label2 +;; ugt t4,a0,a6##ty=i64 +;; bne t4,zero,taken(label1),not_taken(label2) ;; block2: -;; ret +;; ld t4,0(a2) +;; add t4,t4,a0 +;; lui t3,1 +;; add t0,t4,t3 +;; sb a1,0(t0) +;; j label3 ;; block3: +;; ret +;; block1: ;; udf##trap_code=heap_oob ;; ;; function u0:1: ;; block0: ;; lui a6,65535 ;; addi a6,a6,4095 -;; ule t4,a0,a6##ty=i64 -;; bne t4,zero,taken(label1),not_taken(label3) -;; block1: -;; ld t3,0(a1) -;; add t3,t3,a0 -;; lui a7,1 -;; add t4,t3,a7 -;; lbu a0,0(t4) -;; j label2 +;; ugt t4,a0,a6##ty=i64 +;; bne t4,zero,taken(label1),not_taken(label2) ;; block2: -;; ret +;; ld t4,0(a1) +;; add t4,t4,a0 +;; lui t3,1 +;; add t0,t4,t3 +;; lbu a0,0(t0) +;; j label3 ;; block3: -;; udf##trap_code=heap_oob \ No newline at end of file +;; ret +;; block1: +;; udf##trap_code=heap_oob diff --git a/cranelift/filetests/filetests/isa/riscv64/wasm/load_store_static_kind_i64_index_0xffffffff_guard_no_spectre_i32_access_0_offset.wat b/cranelift/filetests/filetests/isa/riscv64/wasm/load_store_static_kind_i64_index_0xffffffff_guard_no_spectre_i32_access_0_offset.wat index 25b7c6fd26..b244ab7a68 100644 --- a/cranelift/filetests/filetests/isa/riscv64/wasm/load_store_static_kind_i64_index_0xffffffff_guard_no_spectre_i32_access_0_offset.wat +++ b/cranelift/filetests/filetests/isa/riscv64/wasm/load_store_static_kind_i64_index_0xffffffff_guard_no_spectre_i32_access_0_offset.wat @@ -41,30 +41,30 @@ ;; block0: ;; lui a4,65536 ;; addi a4,a4,4092 -;; ule a7,a0,a4##ty=i64 -;; bne a7,zero,taken(label1),not_taken(label3) -;; block1: -;; ld a6,0(a2) -;; add a6,a6,a0 -;; sw a1,0(a6) -;; j label2 +;; ugt a7,a0,a4##ty=i64 +;; bne a7,zero,taken(label1),not_taken(label2) ;; block2: -;; ret +;; ld a7,0(a2) +;; add a7,a7,a0 +;; sw a1,0(a7) +;; j label3 ;; block3: +;; ret +;; block1: ;; udf##trap_code=heap_oob ;; ;; function u0:1: ;; block0: ;; lui a4,65536 ;; addi a4,a4,4092 -;; ule a7,a0,a4##ty=i64 -;; bne a7,zero,taken(label1),not_taken(label3) -;; block1: -;; ld a6,0(a1) -;; add a6,a6,a0 -;; lw a0,0(a6) -;; j label2 +;; ugt a7,a0,a4##ty=i64 +;; bne a7,zero,taken(label1),not_taken(label2) ;; block2: -;; ret +;; ld a7,0(a1) +;; add a7,a7,a0 +;; lw a0,0(a7) +;; j label3 ;; block3: -;; udf##trap_code=heap_oob \ No newline at end of file +;; ret +;; block1: +;; udf##trap_code=heap_oob diff --git a/cranelift/filetests/filetests/isa/riscv64/wasm/load_store_static_kind_i64_index_0xffffffff_guard_no_spectre_i32_access_0x1000_offset.wat b/cranelift/filetests/filetests/isa/riscv64/wasm/load_store_static_kind_i64_index_0xffffffff_guard_no_spectre_i32_access_0x1000_offset.wat index 4863723b84..ef057b7d2e 100644 --- a/cranelift/filetests/filetests/isa/riscv64/wasm/load_store_static_kind_i64_index_0xffffffff_guard_no_spectre_i32_access_0x1000_offset.wat +++ b/cranelift/filetests/filetests/isa/riscv64/wasm/load_store_static_kind_i64_index_0xffffffff_guard_no_spectre_i32_access_0x1000_offset.wat @@ -41,34 +41,34 @@ ;; block0: ;; lui a6,65535 ;; addi a6,a6,4092 -;; ule t4,a0,a6##ty=i64 -;; bne t4,zero,taken(label1),not_taken(label3) -;; block1: -;; ld t3,0(a2) -;; add t3,t3,a0 -;; lui a7,1 -;; add t4,t3,a7 -;; sw a1,0(t4) -;; j label2 +;; ugt t4,a0,a6##ty=i64 +;; bne t4,zero,taken(label1),not_taken(label2) ;; block2: -;; ret +;; ld t4,0(a2) +;; add t4,t4,a0 +;; lui t3,1 +;; add t0,t4,t3 +;; sw a1,0(t0) +;; j label3 ;; block3: +;; ret +;; block1: ;; udf##trap_code=heap_oob ;; ;; function u0:1: ;; block0: ;; lui a6,65535 ;; addi a6,a6,4092 -;; ule t4,a0,a6##ty=i64 -;; bne t4,zero,taken(label1),not_taken(label3) -;; block1: -;; ld t3,0(a1) -;; add t3,t3,a0 -;; lui a7,1 -;; add t4,t3,a7 -;; lw a0,0(t4) -;; j label2 +;; ugt t4,a0,a6##ty=i64 +;; bne t4,zero,taken(label1),not_taken(label2) ;; block2: -;; ret +;; ld t4,0(a1) +;; add t4,t4,a0 +;; lui t3,1 +;; add t0,t4,t3 +;; lw a0,0(t0) +;; j label3 ;; block3: -;; udf##trap_code=heap_oob \ No newline at end of file +;; ret +;; block1: +;; udf##trap_code=heap_oob diff --git a/cranelift/filetests/filetests/isa/riscv64/wasm/load_store_static_kind_i64_index_0xffffffff_guard_no_spectre_i8_access_0_offset.wat b/cranelift/filetests/filetests/isa/riscv64/wasm/load_store_static_kind_i64_index_0xffffffff_guard_no_spectre_i8_access_0_offset.wat index 73bc2983d2..73a8cad203 100644 --- a/cranelift/filetests/filetests/isa/riscv64/wasm/load_store_static_kind_i64_index_0xffffffff_guard_no_spectre_i8_access_0_offset.wat +++ b/cranelift/filetests/filetests/isa/riscv64/wasm/load_store_static_kind_i64_index_0xffffffff_guard_no_spectre_i8_access_0_offset.wat @@ -41,30 +41,30 @@ ;; block0: ;; lui a4,65536 ;; addi a4,a4,4095 -;; ule a7,a0,a4##ty=i64 -;; bne a7,zero,taken(label1),not_taken(label3) -;; block1: -;; ld a6,0(a2) -;; add a6,a6,a0 -;; sb a1,0(a6) -;; j label2 +;; ugt a7,a0,a4##ty=i64 +;; bne a7,zero,taken(label1),not_taken(label2) ;; block2: -;; ret +;; ld a7,0(a2) +;; add a7,a7,a0 +;; sb a1,0(a7) +;; j label3 ;; block3: +;; ret +;; block1: ;; udf##trap_code=heap_oob ;; ;; function u0:1: ;; block0: ;; lui a4,65536 ;; addi a4,a4,4095 -;; ule a7,a0,a4##ty=i64 -;; bne a7,zero,taken(label1),not_taken(label3) -;; block1: -;; ld a6,0(a1) -;; add a6,a6,a0 -;; lbu a0,0(a6) -;; j label2 +;; ugt a7,a0,a4##ty=i64 +;; bne a7,zero,taken(label1),not_taken(label2) ;; block2: -;; ret +;; ld a7,0(a1) +;; add a7,a7,a0 +;; lbu a0,0(a7) +;; j label3 ;; block3: -;; udf##trap_code=heap_oob \ No newline at end of file +;; ret +;; block1: +;; udf##trap_code=heap_oob diff --git a/cranelift/filetests/filetests/isa/riscv64/wasm/load_store_static_kind_i64_index_0xffffffff_guard_no_spectre_i8_access_0x1000_offset.wat b/cranelift/filetests/filetests/isa/riscv64/wasm/load_store_static_kind_i64_index_0xffffffff_guard_no_spectre_i8_access_0x1000_offset.wat index b25b88f5b1..0a23114418 100644 --- a/cranelift/filetests/filetests/isa/riscv64/wasm/load_store_static_kind_i64_index_0xffffffff_guard_no_spectre_i8_access_0x1000_offset.wat +++ b/cranelift/filetests/filetests/isa/riscv64/wasm/load_store_static_kind_i64_index_0xffffffff_guard_no_spectre_i8_access_0x1000_offset.wat @@ -41,34 +41,34 @@ ;; block0: ;; lui a6,65535 ;; addi a6,a6,4095 -;; ule t4,a0,a6##ty=i64 -;; bne t4,zero,taken(label1),not_taken(label3) -;; block1: -;; ld t3,0(a2) -;; add t3,t3,a0 -;; lui a7,1 -;; add t4,t3,a7 -;; sb a1,0(t4) -;; j label2 +;; ugt t4,a0,a6##ty=i64 +;; bne t4,zero,taken(label1),not_taken(label2) ;; block2: -;; ret +;; ld t4,0(a2) +;; add t4,t4,a0 +;; lui t3,1 +;; add t0,t4,t3 +;; sb a1,0(t0) +;; j label3 ;; block3: +;; ret +;; block1: ;; udf##trap_code=heap_oob ;; ;; function u0:1: ;; block0: ;; lui a6,65535 ;; addi a6,a6,4095 -;; ule t4,a0,a6##ty=i64 -;; bne t4,zero,taken(label1),not_taken(label3) -;; block1: -;; ld t3,0(a1) -;; add t3,t3,a0 -;; lui a7,1 -;; add t4,t3,a7 -;; lbu a0,0(t4) -;; j label2 +;; ugt t4,a0,a6##ty=i64 +;; bne t4,zero,taken(label1),not_taken(label2) ;; block2: -;; ret +;; ld t4,0(a1) +;; add t4,t4,a0 +;; lui t3,1 +;; add t0,t4,t3 +;; lbu a0,0(t0) +;; j label3 ;; block3: -;; udf##trap_code=heap_oob \ No newline at end of file +;; ret +;; block1: +;; udf##trap_code=heap_oob diff --git a/cranelift/filetests/filetests/isa/s390x/condbr.clif b/cranelift/filetests/filetests/isa/s390x/condbr.clif index f971f7b356..4b83a87906 100644 --- a/cranelift/filetests/filetests/isa/s390x/condbr.clif +++ b/cranelift/filetests/filetests/isa/s390x/condbr.clif @@ -16,8 +16,7 @@ block0(v0: i64, v1: i64): function %f(i64, i64) -> i64 { block0(v0: i64, v1: i64): v2 = icmp eq v0, v1 - brnz v2, block1 - jump block2 + brif v2, block1, block2 block1: v4 = iconst.i64 1 @@ -41,8 +40,7 @@ block2: function %f(i64, i64) -> i64 { block0(v0: i64, v1: i64): v2 = icmp eq v0, v1 - brnz v2, block1 - jump block1 + brif v2, block1, block1 block1: v4 = iconst.i64 1 diff --git a/cranelift/filetests/filetests/isa/s390x/reftypes.clif b/cranelift/filetests/filetests/isa/s390x/reftypes.clif index 1fadf2f452..c8614a3c7c 100644 --- a/cranelift/filetests/filetests/isa/s390x/reftypes.clif +++ b/cranelift/filetests/filetests/isa/s390x/reftypes.clif @@ -51,8 +51,7 @@ function %f4(r64, r64) -> r64, r64, r64 { block0(v0: r64, v1: r64): v2 = call fn0(v0) stack_store.r64 v0, ss0 - brz v2, block1(v1, v0) - jump block2(v0, v1) + brif v2, block2(v0, v1), block1(v1, v0) block1(v3: r64, v4: r64): jump block3(v3, v4) @@ -78,18 +77,18 @@ block3(v7: r64, v8: r64): ; stg %r4, 0(%r5) ; lbr %r2, %r2 ; chi %r2, 0 -; jgnlh label1 ; jg label3 +; jglh label1 ; jg label3 ; block1: ; jg label2 ; block2: -; lgr %r3, %r4 -; lg %r2, 176(%r15) +; lgr %r2, %r4 +; lg %r3, 176(%r15) ; jg label5 ; block3: ; jg label4 ; block4: -; lgr %r2, %r4 -; lg %r3, 176(%r15) +; lgr %r3, %r4 +; lg %r2, 176(%r15) ; jg label5 ; block5: ; la %r4, 160(%r15) diff --git a/cranelift/filetests/filetests/isa/s390x/traps.clif b/cranelift/filetests/filetests/isa/s390x/traps.clif index d6a191b3ea..bf7a15d842 100644 --- a/cranelift/filetests/filetests/isa/s390x/traps.clif +++ b/cranelift/filetests/filetests/isa/s390x/traps.clif @@ -47,10 +47,10 @@ block0(v0: i64): ; block0: ; clgfi %r2, 42 -; jgne label1 ; jg label2 -; block1: -; br %r14 +; jge label1 ; jg label2 ; block2: +; br %r14 +; block1: ; trap function %resumable_trapnz(i64) { @@ -63,10 +63,10 @@ block0(v0: i64): ; block0: ; clgfi %r2, 42 -; jgne label1 ; jg label2 -; block1: -; br %r14 +; jge label1 ; jg label2 ; block2: +; br %r14 +; block1: ; trap function %h() { diff --git a/cranelift/filetests/filetests/isa/s390x/wasm/load_store_dynamic_kind_i32_index_0_guard_no_spectre_i32_access_0_offset.wat b/cranelift/filetests/filetests/isa/s390x/wasm/load_store_dynamic_kind_i32_index_0_guard_no_spectre_i32_access_0_offset.wat index 70be41259e..b33441e9a8 100644 --- a/cranelift/filetests/filetests/isa/s390x/wasm/load_store_dynamic_kind_i32_index_0_guard_no_spectre_i32_access_0_offset.wat +++ b/cranelift/filetests/filetests/isa/s390x/wasm/load_store_dynamic_kind_i32_index_0_guard_no_spectre_i32_access_0_offset.wat @@ -47,14 +47,14 @@ ;; lghi %r2, -4 ;; ag %r2, 8(%r4) ;; clgr %r5, %r2 -;; jgnh label1 ; jg label3 -;; block1: +;; jgh label1 ; jg label2 +;; block2: ;; lg %r4, 0(%r4) ;; strv %r3, 0(%r5,%r4) -;; jg label2 -;; block2: -;; br %r14 +;; jg label3 ;; block3: +;; br %r14 +;; block1: ;; trap ;; ;; function u0:1: @@ -65,12 +65,12 @@ ;; lghi %r2, -4 ;; ag %r2, 8(%r3) ;; clgr %r5, %r2 -;; jgnh label1 ; jg label3 -;; block1: -;; lg %r3, 0(%r3) -;; lrv %r2, 0(%r5,%r3) -;; jg label2 +;; jgh label1 ; jg label2 ;; block2: -;; br %r14 +;; lg %r4, 0(%r3) +;; lrv %r2, 0(%r5,%r4) +;; jg label3 ;; block3: -;; trap \ No newline at end of file +;; br %r14 +;; block1: +;; trap diff --git a/cranelift/filetests/filetests/isa/s390x/wasm/load_store_dynamic_kind_i32_index_0_guard_no_spectre_i32_access_0x1000_offset.wat b/cranelift/filetests/filetests/isa/s390x/wasm/load_store_dynamic_kind_i32_index_0_guard_no_spectre_i32_access_0x1000_offset.wat index 6a783d780b..d3a2bc0dae 100644 --- a/cranelift/filetests/filetests/isa/s390x/wasm/load_store_dynamic_kind_i32_index_0_guard_no_spectre_i32_access_0x1000_offset.wat +++ b/cranelift/filetests/filetests/isa/s390x/wasm/load_store_dynamic_kind_i32_index_0_guard_no_spectre_i32_access_0x1000_offset.wat @@ -48,15 +48,15 @@ ;; lghi %r2, -4100 ;; ag %r2, 8(%r5) ;; clgr %r4, %r2 -;; jgnh label1 ; jg label3 -;; block1: +;; jgh label1 ; jg label2 +;; block2: ;; ag %r4, 0(%r5) ;; lghi %r5, 4096 ;; strv %r3, 0(%r5,%r4) -;; jg label2 -;; block2: -;; br %r14 +;; jg label3 ;; block3: +;; br %r14 +;; block1: ;; trap ;; ;; function u0:1: @@ -69,13 +69,13 @@ ;; lgr %r5, %r4 ;; ag %r2, 8(%r5) ;; clgr %r3, %r2 -;; jgnh label1 ; jg label3 -;; block1: +;; jgh label1 ; jg label2 +;; block2: ;; ag %r3, 0(%r5) ;; lghi %r4, 4096 ;; lrv %r2, 0(%r4,%r3) -;; jg label2 -;; block2: -;; br %r14 +;; jg label3 ;; block3: -;; trap \ No newline at end of file +;; br %r14 +;; block1: +;; trap diff --git a/cranelift/filetests/filetests/isa/s390x/wasm/load_store_dynamic_kind_i32_index_0_guard_no_spectre_i32_access_0xffff0000_offset.wat b/cranelift/filetests/filetests/isa/s390x/wasm/load_store_dynamic_kind_i32_index_0_guard_no_spectre_i32_access_0xffff0000_offset.wat index f0e39bea97..e1fb9af39a 100644 --- a/cranelift/filetests/filetests/isa/s390x/wasm/load_store_dynamic_kind_i32_index_0_guard_no_spectre_i32_access_0xffff0000_offset.wat +++ b/cranelift/filetests/filetests/isa/s390x/wasm/load_store_dynamic_kind_i32_index_0_guard_no_spectre_i32_access_0xffff0000_offset.wat @@ -62,16 +62,16 @@ ;; lgr %r5, %r7 ;; lg %r7, 8(%r5) ;; clgr %r2, %r7 -;; jgnh label1 ; jg label3 -;; block1: -;; ag %r4, 0(%r5) -;; llilh %r2, 65535 -;; strv %r3, 0(%r2,%r4) -;; jg label2 +;; jgh label1 ; jg label2 ;; block2: +;; ag %r4, 0(%r5) +;; llilh %r5, 65535 +;; strv %r3, 0(%r5,%r4) +;; jg label3 +;; block3: ;; lmg %r7, %r15, 56(%r15) ;; br %r14 -;; block3: +;; block1: ;; trap ;; ;; function u0:1: @@ -85,13 +85,13 @@ ;; jle 6 ; trap ;; lg %r2, 8(%r4) ;; clgr %r5, %r2 -;; jgnh label1 ; jg label3 -;; block1: -;; ag %r3, 0(%r4) -;; llilh %r5, 65535 -;; lrv %r2, 0(%r5,%r3) -;; jg label2 +;; jgh label1 ; jg label2 ;; block2: -;; br %r14 +;; ag %r3, 0(%r4) +;; llilh %r2, 65535 +;; lrv %r2, 0(%r2,%r3) +;; jg label3 ;; block3: -;; trap \ No newline at end of file +;; br %r14 +;; block1: +;; trap diff --git a/cranelift/filetests/filetests/isa/s390x/wasm/load_store_dynamic_kind_i32_index_0_guard_no_spectre_i8_access_0_offset.wat b/cranelift/filetests/filetests/isa/s390x/wasm/load_store_dynamic_kind_i32_index_0_guard_no_spectre_i8_access_0_offset.wat index b437d143f8..0c531e9624 100644 --- a/cranelift/filetests/filetests/isa/s390x/wasm/load_store_dynamic_kind_i32_index_0_guard_no_spectre_i8_access_0_offset.wat +++ b/cranelift/filetests/filetests/isa/s390x/wasm/load_store_dynamic_kind_i32_index_0_guard_no_spectre_i8_access_0_offset.wat @@ -48,14 +48,14 @@ ;; lgr %r2, %r5 ;; lg %r5, 8(%r2) ;; clgr %r4, %r5 -;; jgnhe label1 ; jg label3 -;; block1: -;; lg %r2, 0(%r2) -;; stc %r3, 0(%r4,%r2) -;; jg label2 +;; jghe label1 ; jg label2 ;; block2: -;; br %r14 +;; lg %r5, 0(%r2) +;; stc %r3, 0(%r4,%r5) +;; jg label3 ;; block3: +;; br %r14 +;; block1: ;; trap ;; ;; function u0:1: @@ -65,12 +65,12 @@ ;; llgfr %r4, %r2 ;; lg %r5, 8(%r3) ;; clgr %r4, %r5 -;; jgnhe label1 ; jg label3 -;; block1: -;; lg %r2, 0(%r3) -;; llc %r2, 0(%r4,%r2) -;; jg label2 +;; jghe label1 ; jg label2 ;; block2: -;; br %r14 +;; lg %r3, 0(%r3) +;; llc %r2, 0(%r4,%r3) +;; jg label3 ;; block3: -;; trap \ No newline at end of file +;; br %r14 +;; block1: +;; trap diff --git a/cranelift/filetests/filetests/isa/s390x/wasm/load_store_dynamic_kind_i32_index_0_guard_no_spectre_i8_access_0x1000_offset.wat b/cranelift/filetests/filetests/isa/s390x/wasm/load_store_dynamic_kind_i32_index_0_guard_no_spectre_i8_access_0x1000_offset.wat index 5c4a19c52c..f25143eedd 100644 --- a/cranelift/filetests/filetests/isa/s390x/wasm/load_store_dynamic_kind_i32_index_0_guard_no_spectre_i8_access_0x1000_offset.wat +++ b/cranelift/filetests/filetests/isa/s390x/wasm/load_store_dynamic_kind_i32_index_0_guard_no_spectre_i8_access_0x1000_offset.wat @@ -48,15 +48,15 @@ ;; lghi %r2, -4097 ;; ag %r2, 8(%r5) ;; clgr %r4, %r2 -;; jgnh label1 ; jg label3 -;; block1: +;; jgh label1 ; jg label2 +;; block2: ;; ag %r4, 0(%r5) ;; lghi %r5, 4096 ;; stc %r3, 0(%r5,%r4) -;; jg label2 -;; block2: -;; br %r14 +;; jg label3 ;; block3: +;; br %r14 +;; block1: ;; trap ;; ;; function u0:1: @@ -69,13 +69,13 @@ ;; lgr %r5, %r4 ;; ag %r2, 8(%r5) ;; clgr %r3, %r2 -;; jgnh label1 ; jg label3 -;; block1: +;; jgh label1 ; jg label2 +;; block2: ;; ag %r3, 0(%r5) ;; lghi %r4, 4096 ;; llc %r2, 0(%r4,%r3) -;; jg label2 -;; block2: -;; br %r14 +;; jg label3 ;; block3: -;; trap \ No newline at end of file +;; br %r14 +;; block1: +;; trap diff --git a/cranelift/filetests/filetests/isa/s390x/wasm/load_store_dynamic_kind_i32_index_0_guard_no_spectre_i8_access_0xffff0000_offset.wat b/cranelift/filetests/filetests/isa/s390x/wasm/load_store_dynamic_kind_i32_index_0_guard_no_spectre_i8_access_0xffff0000_offset.wat index ddafcac1df..eb43647ea2 100644 --- a/cranelift/filetests/filetests/isa/s390x/wasm/load_store_dynamic_kind_i32_index_0_guard_no_spectre_i8_access_0xffff0000_offset.wat +++ b/cranelift/filetests/filetests/isa/s390x/wasm/load_store_dynamic_kind_i32_index_0_guard_no_spectre_i8_access_0xffff0000_offset.wat @@ -62,16 +62,16 @@ ;; lgr %r5, %r7 ;; lg %r7, 8(%r5) ;; clgr %r2, %r7 -;; jgnh label1 ; jg label3 -;; block1: -;; ag %r4, 0(%r5) -;; llilh %r2, 65535 -;; stc %r3, 0(%r2,%r4) -;; jg label2 +;; jgh label1 ; jg label2 ;; block2: +;; ag %r4, 0(%r5) +;; llilh %r5, 65535 +;; stc %r3, 0(%r5,%r4) +;; jg label3 +;; block3: ;; lmg %r7, %r15, 56(%r15) ;; br %r14 -;; block3: +;; block1: ;; trap ;; ;; function u0:1: @@ -85,13 +85,13 @@ ;; jle 6 ; trap ;; lg %r2, 8(%r4) ;; clgr %r5, %r2 -;; jgnh label1 ; jg label3 -;; block1: -;; ag %r3, 0(%r4) -;; llilh %r5, 65535 -;; llc %r2, 0(%r5,%r3) -;; jg label2 +;; jgh label1 ; jg label2 ;; block2: -;; br %r14 +;; ag %r3, 0(%r4) +;; llilh %r2, 65535 +;; llc %r2, 0(%r2,%r3) +;; jg label3 ;; block3: -;; trap \ No newline at end of file +;; br %r14 +;; block1: +;; trap diff --git a/cranelift/filetests/filetests/isa/s390x/wasm/load_store_dynamic_kind_i32_index_0xffffffff_guard_no_spectre_i32_access_0_offset.wat b/cranelift/filetests/filetests/isa/s390x/wasm/load_store_dynamic_kind_i32_index_0xffffffff_guard_no_spectre_i32_access_0_offset.wat index a62cf9150f..427eec28cc 100644 --- a/cranelift/filetests/filetests/isa/s390x/wasm/load_store_dynamic_kind_i32_index_0xffffffff_guard_no_spectre_i32_access_0_offset.wat +++ b/cranelift/filetests/filetests/isa/s390x/wasm/load_store_dynamic_kind_i32_index_0xffffffff_guard_no_spectre_i32_access_0_offset.wat @@ -47,14 +47,14 @@ ;; lghi %r2, -4 ;; ag %r2, 8(%r4) ;; clgr %r5, %r2 -;; jgnh label1 ; jg label3 -;; block1: +;; jgh label1 ; jg label2 +;; block2: ;; lg %r4, 0(%r4) ;; strv %r3, 0(%r5,%r4) -;; jg label2 -;; block2: -;; br %r14 +;; jg label3 ;; block3: +;; br %r14 +;; block1: ;; trap ;; ;; function u0:1: @@ -65,12 +65,12 @@ ;; lghi %r2, -4 ;; ag %r2, 8(%r3) ;; clgr %r5, %r2 -;; jgnh label1 ; jg label3 -;; block1: -;; lg %r3, 0(%r3) -;; lrv %r2, 0(%r5,%r3) -;; jg label2 +;; jgh label1 ; jg label2 ;; block2: -;; br %r14 +;; lg %r4, 0(%r3) +;; lrv %r2, 0(%r5,%r4) +;; jg label3 ;; block3: -;; trap \ No newline at end of file +;; br %r14 +;; block1: +;; trap diff --git a/cranelift/filetests/filetests/isa/s390x/wasm/load_store_dynamic_kind_i32_index_0xffffffff_guard_no_spectre_i32_access_0x1000_offset.wat b/cranelift/filetests/filetests/isa/s390x/wasm/load_store_dynamic_kind_i32_index_0xffffffff_guard_no_spectre_i32_access_0x1000_offset.wat index 441d99c2b6..c73aa2ffd9 100644 --- a/cranelift/filetests/filetests/isa/s390x/wasm/load_store_dynamic_kind_i32_index_0xffffffff_guard_no_spectre_i32_access_0x1000_offset.wat +++ b/cranelift/filetests/filetests/isa/s390x/wasm/load_store_dynamic_kind_i32_index_0xffffffff_guard_no_spectre_i32_access_0x1000_offset.wat @@ -48,15 +48,15 @@ ;; lghi %r2, -4100 ;; ag %r2, 8(%r5) ;; clgr %r4, %r2 -;; jgnh label1 ; jg label3 -;; block1: +;; jgh label1 ; jg label2 +;; block2: ;; ag %r4, 0(%r5) ;; lghi %r5, 4096 ;; strv %r3, 0(%r5,%r4) -;; jg label2 -;; block2: -;; br %r14 +;; jg label3 ;; block3: +;; br %r14 +;; block1: ;; trap ;; ;; function u0:1: @@ -69,13 +69,13 @@ ;; lgr %r5, %r4 ;; ag %r2, 8(%r5) ;; clgr %r3, %r2 -;; jgnh label1 ; jg label3 -;; block1: +;; jgh label1 ; jg label2 +;; block2: ;; ag %r3, 0(%r5) ;; lghi %r4, 4096 ;; lrv %r2, 0(%r4,%r3) -;; jg label2 -;; block2: -;; br %r14 +;; jg label3 ;; block3: -;; trap \ No newline at end of file +;; br %r14 +;; block1: +;; trap diff --git a/cranelift/filetests/filetests/isa/s390x/wasm/load_store_dynamic_kind_i32_index_0xffffffff_guard_no_spectre_i32_access_0xffff0000_offset.wat b/cranelift/filetests/filetests/isa/s390x/wasm/load_store_dynamic_kind_i32_index_0xffffffff_guard_no_spectre_i32_access_0xffff0000_offset.wat index 5f26642d13..75cb738bfc 100644 --- a/cranelift/filetests/filetests/isa/s390x/wasm/load_store_dynamic_kind_i32_index_0xffffffff_guard_no_spectre_i32_access_0xffff0000_offset.wat +++ b/cranelift/filetests/filetests/isa/s390x/wasm/load_store_dynamic_kind_i32_index_0xffffffff_guard_no_spectre_i32_access_0xffff0000_offset.wat @@ -62,16 +62,16 @@ ;; lgr %r5, %r7 ;; lg %r7, 8(%r5) ;; clgr %r2, %r7 -;; jgnh label1 ; jg label3 -;; block1: -;; ag %r4, 0(%r5) -;; llilh %r2, 65535 -;; strv %r3, 0(%r2,%r4) -;; jg label2 +;; jgh label1 ; jg label2 ;; block2: +;; ag %r4, 0(%r5) +;; llilh %r5, 65535 +;; strv %r3, 0(%r5,%r4) +;; jg label3 +;; block3: ;; lmg %r7, %r15, 56(%r15) ;; br %r14 -;; block3: +;; block1: ;; trap ;; ;; function u0:1: @@ -85,13 +85,13 @@ ;; jle 6 ; trap ;; lg %r2, 8(%r4) ;; clgr %r5, %r2 -;; jgnh label1 ; jg label3 -;; block1: -;; ag %r3, 0(%r4) -;; llilh %r5, 65535 -;; lrv %r2, 0(%r5,%r3) -;; jg label2 +;; jgh label1 ; jg label2 ;; block2: -;; br %r14 +;; ag %r3, 0(%r4) +;; llilh %r2, 65535 +;; lrv %r2, 0(%r2,%r3) +;; jg label3 ;; block3: -;; trap \ No newline at end of file +;; br %r14 +;; block1: +;; trap diff --git a/cranelift/filetests/filetests/isa/s390x/wasm/load_store_dynamic_kind_i32_index_0xffffffff_guard_no_spectre_i8_access_0_offset.wat b/cranelift/filetests/filetests/isa/s390x/wasm/load_store_dynamic_kind_i32_index_0xffffffff_guard_no_spectre_i8_access_0_offset.wat index 18c99848d6..429e8ff9d1 100644 --- a/cranelift/filetests/filetests/isa/s390x/wasm/load_store_dynamic_kind_i32_index_0xffffffff_guard_no_spectre_i8_access_0_offset.wat +++ b/cranelift/filetests/filetests/isa/s390x/wasm/load_store_dynamic_kind_i32_index_0xffffffff_guard_no_spectre_i8_access_0_offset.wat @@ -48,14 +48,14 @@ ;; lgr %r2, %r5 ;; lg %r5, 8(%r2) ;; clgr %r4, %r5 -;; jgnhe label1 ; jg label3 -;; block1: -;; lg %r2, 0(%r2) -;; stc %r3, 0(%r4,%r2) -;; jg label2 +;; jghe label1 ; jg label2 ;; block2: -;; br %r14 +;; lg %r5, 0(%r2) +;; stc %r3, 0(%r4,%r5) +;; jg label3 ;; block3: +;; br %r14 +;; block1: ;; trap ;; ;; function u0:1: @@ -65,12 +65,12 @@ ;; llgfr %r4, %r2 ;; lg %r5, 8(%r3) ;; clgr %r4, %r5 -;; jgnhe label1 ; jg label3 -;; block1: -;; lg %r2, 0(%r3) -;; llc %r2, 0(%r4,%r2) -;; jg label2 +;; jghe label1 ; jg label2 ;; block2: -;; br %r14 +;; lg %r3, 0(%r3) +;; llc %r2, 0(%r4,%r3) +;; jg label3 ;; block3: -;; trap \ No newline at end of file +;; br %r14 +;; block1: +;; trap diff --git a/cranelift/filetests/filetests/isa/s390x/wasm/load_store_dynamic_kind_i32_index_0xffffffff_guard_no_spectre_i8_access_0x1000_offset.wat b/cranelift/filetests/filetests/isa/s390x/wasm/load_store_dynamic_kind_i32_index_0xffffffff_guard_no_spectre_i8_access_0x1000_offset.wat index 4c97ac1fe9..e7e36f52ae 100644 --- a/cranelift/filetests/filetests/isa/s390x/wasm/load_store_dynamic_kind_i32_index_0xffffffff_guard_no_spectre_i8_access_0x1000_offset.wat +++ b/cranelift/filetests/filetests/isa/s390x/wasm/load_store_dynamic_kind_i32_index_0xffffffff_guard_no_spectre_i8_access_0x1000_offset.wat @@ -48,15 +48,15 @@ ;; lghi %r2, -4097 ;; ag %r2, 8(%r5) ;; clgr %r4, %r2 -;; jgnh label1 ; jg label3 -;; block1: +;; jgh label1 ; jg label2 +;; block2: ;; ag %r4, 0(%r5) ;; lghi %r5, 4096 ;; stc %r3, 0(%r5,%r4) -;; jg label2 -;; block2: -;; br %r14 +;; jg label3 ;; block3: +;; br %r14 +;; block1: ;; trap ;; ;; function u0:1: @@ -69,13 +69,13 @@ ;; lgr %r5, %r4 ;; ag %r2, 8(%r5) ;; clgr %r3, %r2 -;; jgnh label1 ; jg label3 -;; block1: +;; jgh label1 ; jg label2 +;; block2: ;; ag %r3, 0(%r5) ;; lghi %r4, 4096 ;; llc %r2, 0(%r4,%r3) -;; jg label2 -;; block2: -;; br %r14 +;; jg label3 ;; block3: -;; trap \ No newline at end of file +;; br %r14 +;; block1: +;; trap diff --git a/cranelift/filetests/filetests/isa/s390x/wasm/load_store_dynamic_kind_i32_index_0xffffffff_guard_no_spectre_i8_access_0xffff0000_offset.wat b/cranelift/filetests/filetests/isa/s390x/wasm/load_store_dynamic_kind_i32_index_0xffffffff_guard_no_spectre_i8_access_0xffff0000_offset.wat index 47ab84f616..e76c6f2ffc 100644 --- a/cranelift/filetests/filetests/isa/s390x/wasm/load_store_dynamic_kind_i32_index_0xffffffff_guard_no_spectre_i8_access_0xffff0000_offset.wat +++ b/cranelift/filetests/filetests/isa/s390x/wasm/load_store_dynamic_kind_i32_index_0xffffffff_guard_no_spectre_i8_access_0xffff0000_offset.wat @@ -62,16 +62,16 @@ ;; lgr %r5, %r7 ;; lg %r7, 8(%r5) ;; clgr %r2, %r7 -;; jgnh label1 ; jg label3 -;; block1: -;; ag %r4, 0(%r5) -;; llilh %r2, 65535 -;; stc %r3, 0(%r2,%r4) -;; jg label2 +;; jgh label1 ; jg label2 ;; block2: +;; ag %r4, 0(%r5) +;; llilh %r5, 65535 +;; stc %r3, 0(%r5,%r4) +;; jg label3 +;; block3: ;; lmg %r7, %r15, 56(%r15) ;; br %r14 -;; block3: +;; block1: ;; trap ;; ;; function u0:1: @@ -85,13 +85,13 @@ ;; jle 6 ; trap ;; lg %r2, 8(%r4) ;; clgr %r5, %r2 -;; jgnh label1 ; jg label3 -;; block1: -;; ag %r3, 0(%r4) -;; llilh %r5, 65535 -;; llc %r2, 0(%r5,%r3) -;; jg label2 +;; jgh label1 ; jg label2 ;; block2: -;; br %r14 +;; ag %r3, 0(%r4) +;; llilh %r2, 65535 +;; llc %r2, 0(%r2,%r3) +;; jg label3 ;; block3: -;; trap \ No newline at end of file +;; br %r14 +;; block1: +;; trap diff --git a/cranelift/filetests/filetests/isa/s390x/wasm/load_store_dynamic_kind_i64_index_0_guard_no_spectre_i32_access_0_offset.wat b/cranelift/filetests/filetests/isa/s390x/wasm/load_store_dynamic_kind_i64_index_0_guard_no_spectre_i32_access_0_offset.wat index 2ed0acb5c0..6ee87bc3af 100644 --- a/cranelift/filetests/filetests/isa/s390x/wasm/load_store_dynamic_kind_i64_index_0_guard_no_spectre_i32_access_0_offset.wat +++ b/cranelift/filetests/filetests/isa/s390x/wasm/load_store_dynamic_kind_i64_index_0_guard_no_spectre_i32_access_0_offset.wat @@ -46,14 +46,14 @@ ;; lghi %r5, -4 ;; ag %r5, 8(%r4) ;; clgr %r2, %r5 -;; jgnh label1 ; jg label3 -;; block1: +;; jgh label1 ; jg label2 +;; block2: ;; lg %r4, 0(%r4) ;; strv %r3, 0(%r2,%r4) -;; jg label2 -;; block2: -;; br %r14 +;; jg label3 ;; block3: +;; br %r14 +;; block1: ;; trap ;; ;; function u0:1: @@ -63,12 +63,12 @@ ;; lghi %r4, -4 ;; ag %r4, 8(%r3) ;; clgr %r2, %r4 -;; jgnh label1 ; jg label3 -;; block1: +;; jgh label1 ; jg label2 +;; block2: ;; lg %r3, 0(%r3) ;; lrv %r2, 0(%r2,%r3) -;; jg label2 -;; block2: -;; br %r14 +;; jg label3 ;; block3: -;; trap \ No newline at end of file +;; br %r14 +;; block1: +;; trap diff --git a/cranelift/filetests/filetests/isa/s390x/wasm/load_store_dynamic_kind_i64_index_0_guard_no_spectre_i32_access_0x1000_offset.wat b/cranelift/filetests/filetests/isa/s390x/wasm/load_store_dynamic_kind_i64_index_0_guard_no_spectre_i32_access_0x1000_offset.wat index 33d89ee1c2..3096dd7deb 100644 --- a/cranelift/filetests/filetests/isa/s390x/wasm/load_store_dynamic_kind_i64_index_0_guard_no_spectre_i32_access_0x1000_offset.wat +++ b/cranelift/filetests/filetests/isa/s390x/wasm/load_store_dynamic_kind_i64_index_0_guard_no_spectre_i32_access_0x1000_offset.wat @@ -46,16 +46,16 @@ ;; lghi %r5, -4100 ;; ag %r5, 8(%r4) ;; clgr %r2, %r5 -;; jgnh label1 ; jg label3 -;; block1: +;; jgh label1 ; jg label2 +;; block2: ;; lgr %r5, %r2 ;; ag %r5, 0(%r4) ;; lghi %r4, 4096 ;; strv %r3, 0(%r4,%r5) -;; jg label2 -;; block2: -;; br %r14 +;; jg label3 ;; block3: +;; br %r14 +;; block1: ;; trap ;; ;; function u0:1: @@ -65,14 +65,14 @@ ;; lghi %r5, -4100 ;; ag %r5, 8(%r3) ;; clgr %r2, %r5 -;; jgnh label1 ; jg label3 -;; block1: +;; jgh label1 ; jg label2 +;; block2: ;; lgr %r4, %r2 ;; ag %r4, 0(%r3) -;; lghi %r2, 4096 -;; lrv %r2, 0(%r2,%r4) -;; jg label2 -;; block2: -;; br %r14 +;; lghi %r3, 4096 +;; lrv %r2, 0(%r3,%r4) +;; jg label3 ;; block3: -;; trap \ No newline at end of file +;; br %r14 +;; block1: +;; trap diff --git a/cranelift/filetests/filetests/isa/s390x/wasm/load_store_dynamic_kind_i64_index_0_guard_no_spectre_i32_access_0xffff0000_offset.wat b/cranelift/filetests/filetests/isa/s390x/wasm/load_store_dynamic_kind_i64_index_0_guard_no_spectre_i32_access_0xffff0000_offset.wat index 3968ab7a81..773bf45fb3 100644 --- a/cranelift/filetests/filetests/isa/s390x/wasm/load_store_dynamic_kind_i64_index_0_guard_no_spectre_i32_access_0xffff0000_offset.wat +++ b/cranelift/filetests/filetests/isa/s390x/wasm/load_store_dynamic_kind_i64_index_0_guard_no_spectre_i32_access_0xffff0000_offset.wat @@ -51,17 +51,17 @@ ;; jle 6 ; trap ;; lg %r14, 8(%r4) ;; clgr %r5, %r14 -;; jgnh label1 ; jg label3 -;; block1: +;; jgh label1 ; jg label2 +;; block2: ;; lgr %r5, %r2 ;; ag %r5, 0(%r4) -;; llilh %r4, 65535 -;; strv %r3, 0(%r4,%r5) -;; jg label2 -;; block2: +;; llilh %r2, 65535 +;; strv %r3, 0(%r2,%r5) +;; jg label3 +;; block3: ;; lmg %r14, %r15, 112(%r15) ;; br %r14 -;; block3: +;; block1: ;; trap ;; ;; function u0:1: @@ -73,14 +73,14 @@ ;; jle 6 ; trap ;; lg %r4, 8(%r3) ;; clgr %r5, %r4 -;; jgnh label1 ; jg label3 -;; block1: -;; lgr %r4, %r2 -;; ag %r4, 0(%r3) -;; llilh %r3, 65535 -;; lrv %r2, 0(%r3,%r4) -;; jg label2 +;; jgh label1 ; jg label2 ;; block2: -;; br %r14 +;; lgr %r5, %r2 +;; ag %r5, 0(%r3) +;; llilh %r4, 65535 +;; lrv %r2, 0(%r4,%r5) +;; jg label3 ;; block3: -;; trap \ No newline at end of file +;; br %r14 +;; block1: +;; trap diff --git a/cranelift/filetests/filetests/isa/s390x/wasm/load_store_dynamic_kind_i64_index_0_guard_no_spectre_i8_access_0_offset.wat b/cranelift/filetests/filetests/isa/s390x/wasm/load_store_dynamic_kind_i64_index_0_guard_no_spectre_i8_access_0_offset.wat index b83b9d40f4..518fc0b90c 100644 --- a/cranelift/filetests/filetests/isa/s390x/wasm/load_store_dynamic_kind_i64_index_0_guard_no_spectre_i8_access_0_offset.wat +++ b/cranelift/filetests/filetests/isa/s390x/wasm/load_store_dynamic_kind_i64_index_0_guard_no_spectre_i8_access_0_offset.wat @@ -45,14 +45,14 @@ ;; block0: ;; lg %r5, 8(%r4) ;; clgr %r2, %r5 -;; jgnhe label1 ; jg label3 -;; block1: -;; lg %r5, 0(%r4) -;; stc %r3, 0(%r2,%r5) -;; jg label2 +;; jghe label1 ; jg label2 ;; block2: -;; br %r14 +;; lg %r4, 0(%r4) +;; stc %r3, 0(%r2,%r4) +;; jg label3 ;; block3: +;; br %r14 +;; block1: ;; trap ;; ;; function u0:1: @@ -61,12 +61,12 @@ ;; block0: ;; lg %r4, 8(%r3) ;; clgr %r2, %r4 -;; jgnhe label1 ; jg label3 -;; block1: -;; lg %r5, 0(%r3) -;; llc %r2, 0(%r2,%r5) -;; jg label2 +;; jghe label1 ; jg label2 ;; block2: -;; br %r14 +;; lg %r3, 0(%r3) +;; llc %r2, 0(%r2,%r3) +;; jg label3 ;; block3: -;; trap \ No newline at end of file +;; br %r14 +;; block1: +;; trap diff --git a/cranelift/filetests/filetests/isa/s390x/wasm/load_store_dynamic_kind_i64_index_0_guard_no_spectre_i8_access_0x1000_offset.wat b/cranelift/filetests/filetests/isa/s390x/wasm/load_store_dynamic_kind_i64_index_0_guard_no_spectre_i8_access_0x1000_offset.wat index d49a9ab7d7..a10b563ba0 100644 --- a/cranelift/filetests/filetests/isa/s390x/wasm/load_store_dynamic_kind_i64_index_0_guard_no_spectre_i8_access_0x1000_offset.wat +++ b/cranelift/filetests/filetests/isa/s390x/wasm/load_store_dynamic_kind_i64_index_0_guard_no_spectre_i8_access_0x1000_offset.wat @@ -46,16 +46,16 @@ ;; lghi %r5, -4097 ;; ag %r5, 8(%r4) ;; clgr %r2, %r5 -;; jgnh label1 ; jg label3 -;; block1: +;; jgh label1 ; jg label2 +;; block2: ;; lgr %r5, %r2 ;; ag %r5, 0(%r4) ;; lghi %r4, 4096 ;; stc %r3, 0(%r4,%r5) -;; jg label2 -;; block2: -;; br %r14 +;; jg label3 ;; block3: +;; br %r14 +;; block1: ;; trap ;; ;; function u0:1: @@ -65,14 +65,14 @@ ;; lghi %r5, -4097 ;; ag %r5, 8(%r3) ;; clgr %r2, %r5 -;; jgnh label1 ; jg label3 -;; block1: +;; jgh label1 ; jg label2 +;; block2: ;; lgr %r4, %r2 ;; ag %r4, 0(%r3) -;; lghi %r2, 4096 -;; llc %r2, 0(%r2,%r4) -;; jg label2 -;; block2: -;; br %r14 +;; lghi %r3, 4096 +;; llc %r2, 0(%r3,%r4) +;; jg label3 ;; block3: -;; trap \ No newline at end of file +;; br %r14 +;; block1: +;; trap diff --git a/cranelift/filetests/filetests/isa/s390x/wasm/load_store_dynamic_kind_i64_index_0_guard_no_spectre_i8_access_0xffff0000_offset.wat b/cranelift/filetests/filetests/isa/s390x/wasm/load_store_dynamic_kind_i64_index_0_guard_no_spectre_i8_access_0xffff0000_offset.wat index 3f9dc4448a..26e50d96e3 100644 --- a/cranelift/filetests/filetests/isa/s390x/wasm/load_store_dynamic_kind_i64_index_0_guard_no_spectre_i8_access_0xffff0000_offset.wat +++ b/cranelift/filetests/filetests/isa/s390x/wasm/load_store_dynamic_kind_i64_index_0_guard_no_spectre_i8_access_0xffff0000_offset.wat @@ -51,17 +51,17 @@ ;; jle 6 ; trap ;; lg %r14, 8(%r4) ;; clgr %r5, %r14 -;; jgnh label1 ; jg label3 -;; block1: +;; jgh label1 ; jg label2 +;; block2: ;; lgr %r5, %r2 ;; ag %r5, 0(%r4) -;; llilh %r4, 65535 -;; stc %r3, 0(%r4,%r5) -;; jg label2 -;; block2: +;; llilh %r2, 65535 +;; stc %r3, 0(%r2,%r5) +;; jg label3 +;; block3: ;; lmg %r14, %r15, 112(%r15) ;; br %r14 -;; block3: +;; block1: ;; trap ;; ;; function u0:1: @@ -73,14 +73,14 @@ ;; jle 6 ; trap ;; lg %r4, 8(%r3) ;; clgr %r5, %r4 -;; jgnh label1 ; jg label3 -;; block1: -;; lgr %r4, %r2 -;; ag %r4, 0(%r3) -;; llilh %r3, 65535 -;; llc %r2, 0(%r3,%r4) -;; jg label2 +;; jgh label1 ; jg label2 ;; block2: -;; br %r14 +;; lgr %r5, %r2 +;; ag %r5, 0(%r3) +;; llilh %r4, 65535 +;; llc %r2, 0(%r4,%r5) +;; jg label3 ;; block3: -;; trap \ No newline at end of file +;; br %r14 +;; block1: +;; trap diff --git a/cranelift/filetests/filetests/isa/s390x/wasm/load_store_dynamic_kind_i64_index_0xffffffff_guard_no_spectre_i32_access_0_offset.wat b/cranelift/filetests/filetests/isa/s390x/wasm/load_store_dynamic_kind_i64_index_0xffffffff_guard_no_spectre_i32_access_0_offset.wat index 541424fcf4..7210247359 100644 --- a/cranelift/filetests/filetests/isa/s390x/wasm/load_store_dynamic_kind_i64_index_0xffffffff_guard_no_spectre_i32_access_0_offset.wat +++ b/cranelift/filetests/filetests/isa/s390x/wasm/load_store_dynamic_kind_i64_index_0xffffffff_guard_no_spectre_i32_access_0_offset.wat @@ -46,14 +46,14 @@ ;; lghi %r5, -4 ;; ag %r5, 8(%r4) ;; clgr %r2, %r5 -;; jgnh label1 ; jg label3 -;; block1: +;; jgh label1 ; jg label2 +;; block2: ;; lg %r4, 0(%r4) ;; strv %r3, 0(%r2,%r4) -;; jg label2 -;; block2: -;; br %r14 +;; jg label3 ;; block3: +;; br %r14 +;; block1: ;; trap ;; ;; function u0:1: @@ -63,12 +63,12 @@ ;; lghi %r4, -4 ;; ag %r4, 8(%r3) ;; clgr %r2, %r4 -;; jgnh label1 ; jg label3 -;; block1: +;; jgh label1 ; jg label2 +;; block2: ;; lg %r3, 0(%r3) ;; lrv %r2, 0(%r2,%r3) -;; jg label2 -;; block2: -;; br %r14 +;; jg label3 ;; block3: -;; trap \ No newline at end of file +;; br %r14 +;; block1: +;; trap diff --git a/cranelift/filetests/filetests/isa/s390x/wasm/load_store_dynamic_kind_i64_index_0xffffffff_guard_no_spectre_i32_access_0x1000_offset.wat b/cranelift/filetests/filetests/isa/s390x/wasm/load_store_dynamic_kind_i64_index_0xffffffff_guard_no_spectre_i32_access_0x1000_offset.wat index bd33018575..b81399df1e 100644 --- a/cranelift/filetests/filetests/isa/s390x/wasm/load_store_dynamic_kind_i64_index_0xffffffff_guard_no_spectre_i32_access_0x1000_offset.wat +++ b/cranelift/filetests/filetests/isa/s390x/wasm/load_store_dynamic_kind_i64_index_0xffffffff_guard_no_spectre_i32_access_0x1000_offset.wat @@ -46,16 +46,16 @@ ;; lghi %r5, -4100 ;; ag %r5, 8(%r4) ;; clgr %r2, %r5 -;; jgnh label1 ; jg label3 -;; block1: +;; jgh label1 ; jg label2 +;; block2: ;; lgr %r5, %r2 ;; ag %r5, 0(%r4) ;; lghi %r4, 4096 ;; strv %r3, 0(%r4,%r5) -;; jg label2 -;; block2: -;; br %r14 +;; jg label3 ;; block3: +;; br %r14 +;; block1: ;; trap ;; ;; function u0:1: @@ -65,14 +65,14 @@ ;; lghi %r5, -4100 ;; ag %r5, 8(%r3) ;; clgr %r2, %r5 -;; jgnh label1 ; jg label3 -;; block1: +;; jgh label1 ; jg label2 +;; block2: ;; lgr %r4, %r2 ;; ag %r4, 0(%r3) -;; lghi %r2, 4096 -;; lrv %r2, 0(%r2,%r4) -;; jg label2 -;; block2: -;; br %r14 +;; lghi %r3, 4096 +;; lrv %r2, 0(%r3,%r4) +;; jg label3 ;; block3: -;; trap \ No newline at end of file +;; br %r14 +;; block1: +;; trap diff --git a/cranelift/filetests/filetests/isa/s390x/wasm/load_store_dynamic_kind_i64_index_0xffffffff_guard_no_spectre_i32_access_0xffff0000_offset.wat b/cranelift/filetests/filetests/isa/s390x/wasm/load_store_dynamic_kind_i64_index_0xffffffff_guard_no_spectre_i32_access_0xffff0000_offset.wat index 23b26ef0ab..c4f1d11141 100644 --- a/cranelift/filetests/filetests/isa/s390x/wasm/load_store_dynamic_kind_i64_index_0xffffffff_guard_no_spectre_i32_access_0xffff0000_offset.wat +++ b/cranelift/filetests/filetests/isa/s390x/wasm/load_store_dynamic_kind_i64_index_0xffffffff_guard_no_spectre_i32_access_0xffff0000_offset.wat @@ -51,17 +51,17 @@ ;; jle 6 ; trap ;; lg %r14, 8(%r4) ;; clgr %r5, %r14 -;; jgnh label1 ; jg label3 -;; block1: +;; jgh label1 ; jg label2 +;; block2: ;; lgr %r5, %r2 ;; ag %r5, 0(%r4) -;; llilh %r4, 65535 -;; strv %r3, 0(%r4,%r5) -;; jg label2 -;; block2: +;; llilh %r2, 65535 +;; strv %r3, 0(%r2,%r5) +;; jg label3 +;; block3: ;; lmg %r14, %r15, 112(%r15) ;; br %r14 -;; block3: +;; block1: ;; trap ;; ;; function u0:1: @@ -73,14 +73,14 @@ ;; jle 6 ; trap ;; lg %r4, 8(%r3) ;; clgr %r5, %r4 -;; jgnh label1 ; jg label3 -;; block1: -;; lgr %r4, %r2 -;; ag %r4, 0(%r3) -;; llilh %r3, 65535 -;; lrv %r2, 0(%r3,%r4) -;; jg label2 +;; jgh label1 ; jg label2 ;; block2: -;; br %r14 +;; lgr %r5, %r2 +;; ag %r5, 0(%r3) +;; llilh %r4, 65535 +;; lrv %r2, 0(%r4,%r5) +;; jg label3 ;; block3: -;; trap \ No newline at end of file +;; br %r14 +;; block1: +;; trap diff --git a/cranelift/filetests/filetests/isa/s390x/wasm/load_store_dynamic_kind_i64_index_0xffffffff_guard_no_spectre_i8_access_0_offset.wat b/cranelift/filetests/filetests/isa/s390x/wasm/load_store_dynamic_kind_i64_index_0xffffffff_guard_no_spectre_i8_access_0_offset.wat index 69473187da..037a7e2415 100644 --- a/cranelift/filetests/filetests/isa/s390x/wasm/load_store_dynamic_kind_i64_index_0xffffffff_guard_no_spectre_i8_access_0_offset.wat +++ b/cranelift/filetests/filetests/isa/s390x/wasm/load_store_dynamic_kind_i64_index_0xffffffff_guard_no_spectre_i8_access_0_offset.wat @@ -45,14 +45,14 @@ ;; block0: ;; lg %r5, 8(%r4) ;; clgr %r2, %r5 -;; jgnhe label1 ; jg label3 -;; block1: -;; lg %r5, 0(%r4) -;; stc %r3, 0(%r2,%r5) -;; jg label2 +;; jghe label1 ; jg label2 ;; block2: -;; br %r14 +;; lg %r4, 0(%r4) +;; stc %r3, 0(%r2,%r4) +;; jg label3 ;; block3: +;; br %r14 +;; block1: ;; trap ;; ;; function u0:1: @@ -61,12 +61,12 @@ ;; block0: ;; lg %r4, 8(%r3) ;; clgr %r2, %r4 -;; jgnhe label1 ; jg label3 -;; block1: -;; lg %r5, 0(%r3) -;; llc %r2, 0(%r2,%r5) -;; jg label2 +;; jghe label1 ; jg label2 ;; block2: -;; br %r14 +;; lg %r3, 0(%r3) +;; llc %r2, 0(%r2,%r3) +;; jg label3 ;; block3: -;; trap \ No newline at end of file +;; br %r14 +;; block1: +;; trap diff --git a/cranelift/filetests/filetests/isa/s390x/wasm/load_store_dynamic_kind_i64_index_0xffffffff_guard_no_spectre_i8_access_0x1000_offset.wat b/cranelift/filetests/filetests/isa/s390x/wasm/load_store_dynamic_kind_i64_index_0xffffffff_guard_no_spectre_i8_access_0x1000_offset.wat index deacfa1e0a..f2522d4984 100644 --- a/cranelift/filetests/filetests/isa/s390x/wasm/load_store_dynamic_kind_i64_index_0xffffffff_guard_no_spectre_i8_access_0x1000_offset.wat +++ b/cranelift/filetests/filetests/isa/s390x/wasm/load_store_dynamic_kind_i64_index_0xffffffff_guard_no_spectre_i8_access_0x1000_offset.wat @@ -46,16 +46,16 @@ ;; lghi %r5, -4097 ;; ag %r5, 8(%r4) ;; clgr %r2, %r5 -;; jgnh label1 ; jg label3 -;; block1: +;; jgh label1 ; jg label2 +;; block2: ;; lgr %r5, %r2 ;; ag %r5, 0(%r4) ;; lghi %r4, 4096 ;; stc %r3, 0(%r4,%r5) -;; jg label2 -;; block2: -;; br %r14 +;; jg label3 ;; block3: +;; br %r14 +;; block1: ;; trap ;; ;; function u0:1: @@ -65,14 +65,14 @@ ;; lghi %r5, -4097 ;; ag %r5, 8(%r3) ;; clgr %r2, %r5 -;; jgnh label1 ; jg label3 -;; block1: +;; jgh label1 ; jg label2 +;; block2: ;; lgr %r4, %r2 ;; ag %r4, 0(%r3) -;; lghi %r2, 4096 -;; llc %r2, 0(%r2,%r4) -;; jg label2 -;; block2: -;; br %r14 +;; lghi %r3, 4096 +;; llc %r2, 0(%r3,%r4) +;; jg label3 ;; block3: -;; trap \ No newline at end of file +;; br %r14 +;; block1: +;; trap diff --git a/cranelift/filetests/filetests/isa/s390x/wasm/load_store_dynamic_kind_i64_index_0xffffffff_guard_no_spectre_i8_access_0xffff0000_offset.wat b/cranelift/filetests/filetests/isa/s390x/wasm/load_store_dynamic_kind_i64_index_0xffffffff_guard_no_spectre_i8_access_0xffff0000_offset.wat index 1484f04906..06f555b288 100644 --- a/cranelift/filetests/filetests/isa/s390x/wasm/load_store_dynamic_kind_i64_index_0xffffffff_guard_no_spectre_i8_access_0xffff0000_offset.wat +++ b/cranelift/filetests/filetests/isa/s390x/wasm/load_store_dynamic_kind_i64_index_0xffffffff_guard_no_spectre_i8_access_0xffff0000_offset.wat @@ -51,17 +51,17 @@ ;; jle 6 ; trap ;; lg %r14, 8(%r4) ;; clgr %r5, %r14 -;; jgnh label1 ; jg label3 -;; block1: +;; jgh label1 ; jg label2 +;; block2: ;; lgr %r5, %r2 ;; ag %r5, 0(%r4) -;; llilh %r4, 65535 -;; stc %r3, 0(%r4,%r5) -;; jg label2 -;; block2: +;; llilh %r2, 65535 +;; stc %r3, 0(%r2,%r5) +;; jg label3 +;; block3: ;; lmg %r14, %r15, 112(%r15) ;; br %r14 -;; block3: +;; block1: ;; trap ;; ;; function u0:1: @@ -73,14 +73,14 @@ ;; jle 6 ; trap ;; lg %r4, 8(%r3) ;; clgr %r5, %r4 -;; jgnh label1 ; jg label3 -;; block1: -;; lgr %r4, %r2 -;; ag %r4, 0(%r3) -;; llilh %r3, 65535 -;; llc %r2, 0(%r3,%r4) -;; jg label2 +;; jgh label1 ; jg label2 ;; block2: -;; br %r14 +;; lgr %r5, %r2 +;; ag %r5, 0(%r3) +;; llilh %r4, 65535 +;; llc %r2, 0(%r4,%r5) +;; jg label3 ;; block3: -;; trap \ No newline at end of file +;; br %r14 +;; block1: +;; trap diff --git a/cranelift/filetests/filetests/isa/s390x/wasm/load_store_static_kind_i32_index_0_guard_no_spectre_i32_access_0_offset.wat b/cranelift/filetests/filetests/isa/s390x/wasm/load_store_static_kind_i32_index_0_guard_no_spectre_i32_access_0_offset.wat index 0352554864..96354cce45 100644 --- a/cranelift/filetests/filetests/isa/s390x/wasm/load_store_static_kind_i32_index_0_guard_no_spectre_i32_access_0_offset.wat +++ b/cranelift/filetests/filetests/isa/s390x/wasm/load_store_static_kind_i32_index_0_guard_no_spectre_i32_access_0_offset.wat @@ -44,14 +44,14 @@ ;; lgr %r5, %r4 ;; llgfr %r4, %r2 ;; clgfi %r4, 268435452 -;; jgnh label1 ; jg label3 -;; block1: -;; lg %r5, 0(%r5) -;; strv %r3, 0(%r4,%r5) -;; jg label2 +;; jgh label1 ; jg label2 ;; block2: -;; br %r14 +;; lg %r2, 0(%r5) +;; strv %r3, 0(%r4,%r2) +;; jg label3 ;; block3: +;; br %r14 +;; block1: ;; trap ;; ;; function u0:1: @@ -61,12 +61,12 @@ ;; lgr %r4, %r3 ;; llgfr %r3, %r2 ;; clgfi %r3, 268435452 -;; jgnh label1 ; jg label3 -;; block1: -;; lg %r5, 0(%r4) -;; lrv %r2, 0(%r3,%r5) -;; jg label2 +;; jgh label1 ; jg label2 ;; block2: -;; br %r14 +;; lg %r2, 0(%r4) +;; lrv %r2, 0(%r3,%r2) +;; jg label3 ;; block3: -;; trap \ No newline at end of file +;; br %r14 +;; block1: +;; trap diff --git a/cranelift/filetests/filetests/isa/s390x/wasm/load_store_static_kind_i32_index_0_guard_no_spectre_i32_access_0x1000_offset.wat b/cranelift/filetests/filetests/isa/s390x/wasm/load_store_static_kind_i32_index_0_guard_no_spectre_i32_access_0x1000_offset.wat index cbe5c2fa53..0f94ae0f72 100644 --- a/cranelift/filetests/filetests/isa/s390x/wasm/load_store_static_kind_i32_index_0_guard_no_spectre_i32_access_0x1000_offset.wat +++ b/cranelift/filetests/filetests/isa/s390x/wasm/load_store_static_kind_i32_index_0_guard_no_spectre_i32_access_0x1000_offset.wat @@ -44,15 +44,15 @@ ;; lgr %r5, %r4 ;; llgfr %r4, %r2 ;; clgfi %r4, 268431356 -;; jgnh label1 ; jg label3 -;; block1: -;; ag %r4, 0(%r5) -;; lghi %r2, 4096 -;; strv %r3, 0(%r2,%r4) -;; jg label2 +;; jgh label1 ; jg label2 ;; block2: -;; br %r14 +;; ag %r4, 0(%r5) +;; lghi %r5, 4096 +;; strv %r3, 0(%r5,%r4) +;; jg label3 ;; block3: +;; br %r14 +;; block1: ;; trap ;; ;; function u0:1: @@ -62,14 +62,13 @@ ;; lgr %r5, %r3 ;; llgfr %r3, %r2 ;; clgfi %r3, 268431356 -;; jgnh label1 ; jg label3 -;; block1: -;; lgr %r4, %r5 -;; ag %r3, 0(%r4) -;; lghi %r5, 4096 -;; lrv %r2, 0(%r5,%r3) -;; jg label2 +;; jgh label1 ; jg label2 ;; block2: -;; br %r14 +;; ag %r3, 0(%r5) +;; lghi %r2, 4096 +;; lrv %r2, 0(%r2,%r3) +;; jg label3 ;; block3: -;; trap \ No newline at end of file +;; br %r14 +;; block1: +;; trap diff --git a/cranelift/filetests/filetests/isa/s390x/wasm/load_store_static_kind_i32_index_0_guard_no_spectre_i8_access_0_offset.wat b/cranelift/filetests/filetests/isa/s390x/wasm/load_store_static_kind_i32_index_0_guard_no_spectre_i8_access_0_offset.wat index d348bb77dd..d28c1b3f84 100644 --- a/cranelift/filetests/filetests/isa/s390x/wasm/load_store_static_kind_i32_index_0_guard_no_spectre_i8_access_0_offset.wat +++ b/cranelift/filetests/filetests/isa/s390x/wasm/load_store_static_kind_i32_index_0_guard_no_spectre_i8_access_0_offset.wat @@ -44,14 +44,14 @@ ;; lgr %r5, %r4 ;; llgfr %r4, %r2 ;; clgfi %r4, 268435455 -;; jgnh label1 ; jg label3 -;; block1: -;; lg %r5, 0(%r5) -;; stc %r3, 0(%r4,%r5) -;; jg label2 +;; jgh label1 ; jg label2 ;; block2: -;; br %r14 +;; lg %r2, 0(%r5) +;; stc %r3, 0(%r4,%r2) +;; jg label3 ;; block3: +;; br %r14 +;; block1: ;; trap ;; ;; function u0:1: @@ -61,12 +61,12 @@ ;; lgr %r4, %r3 ;; llgfr %r3, %r2 ;; clgfi %r3, 268435455 -;; jgnh label1 ; jg label3 -;; block1: -;; lg %r5, 0(%r4) -;; llc %r2, 0(%r3,%r5) -;; jg label2 +;; jgh label1 ; jg label2 ;; block2: -;; br %r14 +;; lg %r2, 0(%r4) +;; llc %r2, 0(%r3,%r2) +;; jg label3 ;; block3: -;; trap \ No newline at end of file +;; br %r14 +;; block1: +;; trap diff --git a/cranelift/filetests/filetests/isa/s390x/wasm/load_store_static_kind_i32_index_0_guard_no_spectre_i8_access_0x1000_offset.wat b/cranelift/filetests/filetests/isa/s390x/wasm/load_store_static_kind_i32_index_0_guard_no_spectre_i8_access_0x1000_offset.wat index 5dc326dd5f..4588d6580c 100644 --- a/cranelift/filetests/filetests/isa/s390x/wasm/load_store_static_kind_i32_index_0_guard_no_spectre_i8_access_0x1000_offset.wat +++ b/cranelift/filetests/filetests/isa/s390x/wasm/load_store_static_kind_i32_index_0_guard_no_spectre_i8_access_0x1000_offset.wat @@ -44,15 +44,15 @@ ;; lgr %r5, %r4 ;; llgfr %r4, %r2 ;; clgfi %r4, 268431359 -;; jgnh label1 ; jg label3 -;; block1: -;; ag %r4, 0(%r5) -;; lghi %r2, 4096 -;; stc %r3, 0(%r2,%r4) -;; jg label2 +;; jgh label1 ; jg label2 ;; block2: -;; br %r14 +;; ag %r4, 0(%r5) +;; lghi %r5, 4096 +;; stc %r3, 0(%r5,%r4) +;; jg label3 ;; block3: +;; br %r14 +;; block1: ;; trap ;; ;; function u0:1: @@ -62,14 +62,13 @@ ;; lgr %r5, %r3 ;; llgfr %r3, %r2 ;; clgfi %r3, 268431359 -;; jgnh label1 ; jg label3 -;; block1: -;; lgr %r4, %r5 -;; ag %r3, 0(%r4) -;; lghi %r5, 4096 -;; llc %r2, 0(%r5,%r3) -;; jg label2 +;; jgh label1 ; jg label2 ;; block2: -;; br %r14 +;; ag %r3, 0(%r5) +;; lghi %r2, 4096 +;; llc %r2, 0(%r2,%r3) +;; jg label3 ;; block3: -;; trap \ No newline at end of file +;; br %r14 +;; block1: +;; trap diff --git a/cranelift/filetests/filetests/isa/s390x/wasm/load_store_static_kind_i64_index_0_guard_no_spectre_i32_access_0_offset.wat b/cranelift/filetests/filetests/isa/s390x/wasm/load_store_static_kind_i64_index_0_guard_no_spectre_i32_access_0_offset.wat index 103dac7c8a..60df2484b2 100644 --- a/cranelift/filetests/filetests/isa/s390x/wasm/load_store_static_kind_i64_index_0_guard_no_spectre_i32_access_0_offset.wat +++ b/cranelift/filetests/filetests/isa/s390x/wasm/load_store_static_kind_i64_index_0_guard_no_spectre_i32_access_0_offset.wat @@ -42,14 +42,14 @@ ;; unwind StackAlloc { size: 0 } ;; block0: ;; clgfi %r2, 268435452 -;; jgnh label1 ; jg label3 -;; block1: -;; lg %r4, 0(%r4) -;; strv %r3, 0(%r2,%r4) -;; jg label2 +;; jgh label1 ; jg label2 ;; block2: -;; br %r14 +;; lg %r5, 0(%r4) +;; strv %r3, 0(%r2,%r5) +;; jg label3 ;; block3: +;; br %r14 +;; block1: ;; trap ;; ;; function u0:1: @@ -57,12 +57,12 @@ ;; unwind StackAlloc { size: 0 } ;; block0: ;; clgfi %r2, 268435452 -;; jgnh label1 ; jg label3 -;; block1: -;; lg %r4, 0(%r3) -;; lrv %r2, 0(%r2,%r4) -;; jg label2 +;; jgh label1 ; jg label2 ;; block2: -;; br %r14 +;; lg %r5, 0(%r3) +;; lrv %r2, 0(%r2,%r5) +;; jg label3 ;; block3: -;; trap \ No newline at end of file +;; br %r14 +;; block1: +;; trap diff --git a/cranelift/filetests/filetests/isa/s390x/wasm/load_store_static_kind_i64_index_0_guard_no_spectre_i32_access_0x1000_offset.wat b/cranelift/filetests/filetests/isa/s390x/wasm/load_store_static_kind_i64_index_0_guard_no_spectre_i32_access_0x1000_offset.wat index 700942042c..a7033ebcb6 100644 --- a/cranelift/filetests/filetests/isa/s390x/wasm/load_store_static_kind_i64_index_0_guard_no_spectre_i32_access_0x1000_offset.wat +++ b/cranelift/filetests/filetests/isa/s390x/wasm/load_store_static_kind_i64_index_0_guard_no_spectre_i32_access_0x1000_offset.wat @@ -42,16 +42,15 @@ ;; unwind StackAlloc { size: 0 } ;; block0: ;; clgfi %r2, 268431356 -;; jgnh label1 ; jg label3 -;; block1: -;; lgr %r5, %r2 -;; ag %r5, 0(%r4) -;; lghi %r2, 4096 -;; strv %r3, 0(%r2,%r5) -;; jg label2 +;; jgh label1 ; jg label2 ;; block2: -;; br %r14 +;; ag %r2, 0(%r4) +;; lghi %r4, 4096 +;; strv %r3, 0(%r4,%r2) +;; jg label3 ;; block3: +;; br %r14 +;; block1: ;; trap ;; ;; function u0:1: @@ -59,14 +58,13 @@ ;; unwind StackAlloc { size: 0 } ;; block0: ;; clgfi %r2, 268431356 -;; jgnh label1 ; jg label3 -;; block1: -;; lgr %r5, %r2 -;; ag %r5, 0(%r3) -;; lghi %r4, 4096 -;; lrv %r2, 0(%r4,%r5) -;; jg label2 +;; jgh label1 ; jg label2 ;; block2: -;; br %r14 +;; ag %r2, 0(%r3) +;; lghi %r5, 4096 +;; lrv %r2, 0(%r5,%r2) +;; jg label3 ;; block3: -;; trap \ No newline at end of file +;; br %r14 +;; block1: +;; trap diff --git a/cranelift/filetests/filetests/isa/s390x/wasm/load_store_static_kind_i64_index_0_guard_no_spectre_i8_access_0_offset.wat b/cranelift/filetests/filetests/isa/s390x/wasm/load_store_static_kind_i64_index_0_guard_no_spectre_i8_access_0_offset.wat index 4f77252b96..ca160d27e0 100644 --- a/cranelift/filetests/filetests/isa/s390x/wasm/load_store_static_kind_i64_index_0_guard_no_spectre_i8_access_0_offset.wat +++ b/cranelift/filetests/filetests/isa/s390x/wasm/load_store_static_kind_i64_index_0_guard_no_spectre_i8_access_0_offset.wat @@ -42,14 +42,14 @@ ;; unwind StackAlloc { size: 0 } ;; block0: ;; clgfi %r2, 268435455 -;; jgnh label1 ; jg label3 -;; block1: -;; lg %r4, 0(%r4) -;; stc %r3, 0(%r2,%r4) -;; jg label2 +;; jgh label1 ; jg label2 ;; block2: -;; br %r14 +;; lg %r5, 0(%r4) +;; stc %r3, 0(%r2,%r5) +;; jg label3 ;; block3: +;; br %r14 +;; block1: ;; trap ;; ;; function u0:1: @@ -57,12 +57,12 @@ ;; unwind StackAlloc { size: 0 } ;; block0: ;; clgfi %r2, 268435455 -;; jgnh label1 ; jg label3 -;; block1: -;; lg %r4, 0(%r3) -;; llc %r2, 0(%r2,%r4) -;; jg label2 +;; jgh label1 ; jg label2 ;; block2: -;; br %r14 +;; lg %r5, 0(%r3) +;; llc %r2, 0(%r2,%r5) +;; jg label3 ;; block3: -;; trap \ No newline at end of file +;; br %r14 +;; block1: +;; trap diff --git a/cranelift/filetests/filetests/isa/s390x/wasm/load_store_static_kind_i64_index_0_guard_no_spectre_i8_access_0x1000_offset.wat b/cranelift/filetests/filetests/isa/s390x/wasm/load_store_static_kind_i64_index_0_guard_no_spectre_i8_access_0x1000_offset.wat index 8b6494f223..938a7926eb 100644 --- a/cranelift/filetests/filetests/isa/s390x/wasm/load_store_static_kind_i64_index_0_guard_no_spectre_i8_access_0x1000_offset.wat +++ b/cranelift/filetests/filetests/isa/s390x/wasm/load_store_static_kind_i64_index_0_guard_no_spectre_i8_access_0x1000_offset.wat @@ -42,16 +42,15 @@ ;; unwind StackAlloc { size: 0 } ;; block0: ;; clgfi %r2, 268431359 -;; jgnh label1 ; jg label3 -;; block1: -;; lgr %r5, %r2 -;; ag %r5, 0(%r4) -;; lghi %r2, 4096 -;; stc %r3, 0(%r2,%r5) -;; jg label2 +;; jgh label1 ; jg label2 ;; block2: -;; br %r14 +;; ag %r2, 0(%r4) +;; lghi %r4, 4096 +;; stc %r3, 0(%r4,%r2) +;; jg label3 ;; block3: +;; br %r14 +;; block1: ;; trap ;; ;; function u0:1: @@ -59,14 +58,13 @@ ;; unwind StackAlloc { size: 0 } ;; block0: ;; clgfi %r2, 268431359 -;; jgnh label1 ; jg label3 -;; block1: -;; lgr %r5, %r2 -;; ag %r5, 0(%r3) -;; lghi %r4, 4096 -;; llc %r2, 0(%r4,%r5) -;; jg label2 +;; jgh label1 ; jg label2 ;; block2: -;; br %r14 +;; ag %r2, 0(%r3) +;; lghi %r5, 4096 +;; llc %r2, 0(%r5,%r2) +;; jg label3 ;; block3: -;; trap \ No newline at end of file +;; br %r14 +;; block1: +;; trap diff --git a/cranelift/filetests/filetests/isa/s390x/wasm/load_store_static_kind_i64_index_0xffffffff_guard_no_spectre_i32_access_0_offset.wat b/cranelift/filetests/filetests/isa/s390x/wasm/load_store_static_kind_i64_index_0xffffffff_guard_no_spectre_i32_access_0_offset.wat index 666eccb08d..a077ad216f 100644 --- a/cranelift/filetests/filetests/isa/s390x/wasm/load_store_static_kind_i64_index_0xffffffff_guard_no_spectre_i32_access_0_offset.wat +++ b/cranelift/filetests/filetests/isa/s390x/wasm/load_store_static_kind_i64_index_0xffffffff_guard_no_spectre_i32_access_0_offset.wat @@ -42,14 +42,14 @@ ;; unwind StackAlloc { size: 0 } ;; block0: ;; clgfi %r2, 268435452 -;; jgnh label1 ; jg label3 -;; block1: -;; lg %r4, 0(%r4) -;; strv %r3, 0(%r2,%r4) -;; jg label2 +;; jgh label1 ; jg label2 ;; block2: -;; br %r14 +;; lg %r5, 0(%r4) +;; strv %r3, 0(%r2,%r5) +;; jg label3 ;; block3: +;; br %r14 +;; block1: ;; trap ;; ;; function u0:1: @@ -57,12 +57,12 @@ ;; unwind StackAlloc { size: 0 } ;; block0: ;; clgfi %r2, 268435452 -;; jgnh label1 ; jg label3 -;; block1: -;; lg %r4, 0(%r3) -;; lrv %r2, 0(%r2,%r4) -;; jg label2 +;; jgh label1 ; jg label2 ;; block2: -;; br %r14 +;; lg %r5, 0(%r3) +;; lrv %r2, 0(%r2,%r5) +;; jg label3 ;; block3: -;; trap \ No newline at end of file +;; br %r14 +;; block1: +;; trap diff --git a/cranelift/filetests/filetests/isa/s390x/wasm/load_store_static_kind_i64_index_0xffffffff_guard_no_spectre_i32_access_0x1000_offset.wat b/cranelift/filetests/filetests/isa/s390x/wasm/load_store_static_kind_i64_index_0xffffffff_guard_no_spectre_i32_access_0x1000_offset.wat index 41733bb2fb..3a997ba9cf 100644 --- a/cranelift/filetests/filetests/isa/s390x/wasm/load_store_static_kind_i64_index_0xffffffff_guard_no_spectre_i32_access_0x1000_offset.wat +++ b/cranelift/filetests/filetests/isa/s390x/wasm/load_store_static_kind_i64_index_0xffffffff_guard_no_spectre_i32_access_0x1000_offset.wat @@ -42,16 +42,15 @@ ;; unwind StackAlloc { size: 0 } ;; block0: ;; clgfi %r2, 268431356 -;; jgnh label1 ; jg label3 -;; block1: -;; lgr %r5, %r2 -;; ag %r5, 0(%r4) -;; lghi %r2, 4096 -;; strv %r3, 0(%r2,%r5) -;; jg label2 +;; jgh label1 ; jg label2 ;; block2: -;; br %r14 +;; ag %r2, 0(%r4) +;; lghi %r4, 4096 +;; strv %r3, 0(%r4,%r2) +;; jg label3 ;; block3: +;; br %r14 +;; block1: ;; trap ;; ;; function u0:1: @@ -59,14 +58,13 @@ ;; unwind StackAlloc { size: 0 } ;; block0: ;; clgfi %r2, 268431356 -;; jgnh label1 ; jg label3 -;; block1: -;; lgr %r5, %r2 -;; ag %r5, 0(%r3) -;; lghi %r4, 4096 -;; lrv %r2, 0(%r4,%r5) -;; jg label2 +;; jgh label1 ; jg label2 ;; block2: -;; br %r14 +;; ag %r2, 0(%r3) +;; lghi %r5, 4096 +;; lrv %r2, 0(%r5,%r2) +;; jg label3 ;; block3: -;; trap \ No newline at end of file +;; br %r14 +;; block1: +;; trap diff --git a/cranelift/filetests/filetests/isa/s390x/wasm/load_store_static_kind_i64_index_0xffffffff_guard_no_spectre_i8_access_0_offset.wat b/cranelift/filetests/filetests/isa/s390x/wasm/load_store_static_kind_i64_index_0xffffffff_guard_no_spectre_i8_access_0_offset.wat index 4b59b9dfe9..f104c7a06c 100644 --- a/cranelift/filetests/filetests/isa/s390x/wasm/load_store_static_kind_i64_index_0xffffffff_guard_no_spectre_i8_access_0_offset.wat +++ b/cranelift/filetests/filetests/isa/s390x/wasm/load_store_static_kind_i64_index_0xffffffff_guard_no_spectre_i8_access_0_offset.wat @@ -42,14 +42,14 @@ ;; unwind StackAlloc { size: 0 } ;; block0: ;; clgfi %r2, 268435455 -;; jgnh label1 ; jg label3 -;; block1: -;; lg %r4, 0(%r4) -;; stc %r3, 0(%r2,%r4) -;; jg label2 +;; jgh label1 ; jg label2 ;; block2: -;; br %r14 +;; lg %r5, 0(%r4) +;; stc %r3, 0(%r2,%r5) +;; jg label3 ;; block3: +;; br %r14 +;; block1: ;; trap ;; ;; function u0:1: @@ -57,12 +57,12 @@ ;; unwind StackAlloc { size: 0 } ;; block0: ;; clgfi %r2, 268435455 -;; jgnh label1 ; jg label3 -;; block1: -;; lg %r4, 0(%r3) -;; llc %r2, 0(%r2,%r4) -;; jg label2 +;; jgh label1 ; jg label2 ;; block2: -;; br %r14 +;; lg %r5, 0(%r3) +;; llc %r2, 0(%r2,%r5) +;; jg label3 ;; block3: -;; trap \ No newline at end of file +;; br %r14 +;; block1: +;; trap diff --git a/cranelift/filetests/filetests/isa/s390x/wasm/load_store_static_kind_i64_index_0xffffffff_guard_no_spectre_i8_access_0x1000_offset.wat b/cranelift/filetests/filetests/isa/s390x/wasm/load_store_static_kind_i64_index_0xffffffff_guard_no_spectre_i8_access_0x1000_offset.wat index 0b60c069b9..1995990cb8 100644 --- a/cranelift/filetests/filetests/isa/s390x/wasm/load_store_static_kind_i64_index_0xffffffff_guard_no_spectre_i8_access_0x1000_offset.wat +++ b/cranelift/filetests/filetests/isa/s390x/wasm/load_store_static_kind_i64_index_0xffffffff_guard_no_spectre_i8_access_0x1000_offset.wat @@ -42,16 +42,15 @@ ;; unwind StackAlloc { size: 0 } ;; block0: ;; clgfi %r2, 268431359 -;; jgnh label1 ; jg label3 -;; block1: -;; lgr %r5, %r2 -;; ag %r5, 0(%r4) -;; lghi %r2, 4096 -;; stc %r3, 0(%r2,%r5) -;; jg label2 +;; jgh label1 ; jg label2 ;; block2: -;; br %r14 +;; ag %r2, 0(%r4) +;; lghi %r4, 4096 +;; stc %r3, 0(%r4,%r2) +;; jg label3 ;; block3: +;; br %r14 +;; block1: ;; trap ;; ;; function u0:1: @@ -59,14 +58,13 @@ ;; unwind StackAlloc { size: 0 } ;; block0: ;; clgfi %r2, 268431359 -;; jgnh label1 ; jg label3 -;; block1: -;; lgr %r5, %r2 -;; ag %r5, 0(%r3) -;; lghi %r4, 4096 -;; llc %r2, 0(%r4,%r5) -;; jg label2 +;; jgh label1 ; jg label2 ;; block2: -;; br %r14 +;; ag %r2, 0(%r3) +;; lghi %r5, 4096 +;; llc %r2, 0(%r5,%r2) +;; jg label3 ;; block3: -;; trap \ No newline at end of file +;; br %r14 +;; block1: +;; trap diff --git a/cranelift/filetests/filetests/isa/x64/atomic-cas-bug.clif b/cranelift/filetests/filetests/isa/x64/atomic-cas-bug.clif index 830b3b4c35..7164a356e1 100644 --- a/cranelift/filetests/filetests/isa/x64/atomic-cas-bug.clif +++ b/cranelift/filetests/filetests/isa/x64/atomic-cas-bug.clif @@ -87,64 +87,53 @@ function u0:31(i64, i32, i32, i8, i8) -> i32, i32 system_v { block2: @0001 v11 = stack_load.i8 ss3+1 @0001 v12 = uextend.i64 v11 -@0005 brz v12, block15 -@0005 jump block3 +@0005 brif v12, block3, block15 block3: @0001 v13 = stack_load.i8 ss3+1 @0001 v14 = uextend.i64 v13 @0005 v15 = icmp_imm eq v14, 3 -@0005 brnz v15, block27 -@0005 jump block38 +@0005 brif v15, block27, block38 block38: @0005 v16 = icmp_imm.i64 eq v14, 1 -@0005 brnz v16, block29 -@0005 jump block8 +@0005 brif v16, block29, block8 block4: @0001 v17 = stack_load.i8 ss3+1 @0001 v18 = uextend.i64 v17 -@0005 brz v18, block11 -@0005 jump block3 +@0005 brif v18, block3, block11 block5: @0001 v19 = stack_load.i8 ss3+1 @0001 v20 = uextend.i64 v19 @0005 v21 = icmp_imm eq v20, 2 -@0005 brnz v21, block9 -@0005 jump block39 +@0005 brif v21, block9, block39 block39: -@0005 brz.i64 v20, block19 -@0005 jump block3 +@0005 brif.i64 v20, block3, block19 block6: @0001 v22 = stack_load.i8 ss3+1 @0001 v23 = uextend.i64 v22 @0005 v24 = icmp_imm eq v23, 2 -@0005 brnz v24, block13 -@0005 jump block40 +@0005 brif v24, block13, block40 block40: -@0005 brz.i64 v23, block21 -@0005 jump block3 +@0005 brif.i64 v23, block3, block21 block7: @0001 v25 = stack_load.i8 ss3+1 @0001 v26 = uextend.i64 v25 @0005 v27 = icmp_imm eq v26, 4 -@0005 brnz v27, block17 -@0005 jump block41 +@0005 brif v27, block17, block41 block41: @0005 v28 = icmp_imm.i64 eq v26, 2 -@0005 brnz v28, block25 -@0005 jump block42 +@0005 brif v28, block25, block42 block42: -@0005 brz.i64 v26, block23 -@0005 jump block3 +@0005 brif.i64 v26, block3, block23 block8: @0007 v29 = global_value.i64 gv0 @@ -266,8 +255,7 @@ function u0:31(i64, i32, i32, i8, i8) -> i32, i32 system_v { block32(v104: i32, v105: i8): v106 -> v104 v110 -> v104 -@0045 brz v105, block34 -@0045 jump block33 +@0045 brif v105, block33, block34 block33: @0048 stack_store.i32 v106, ss0+4 diff --git a/cranelift/filetests/filetests/isa/x64/atomic_cas_const_addr.clif b/cranelift/filetests/filetests/isa/x64/atomic_cas_const_addr.clif index f0000f4cae..b8480318ee 100644 --- a/cranelift/filetests/filetests/isa/x64/atomic_cas_const_addr.clif +++ b/cranelift/filetests/filetests/isa/x64/atomic_cas_const_addr.clif @@ -11,8 +11,7 @@ function u0:31() -> i32, i32 system_v { v1 = iconst.i32 0 v2 = iconst.i32 0 @0004 v28 = iconst.i8 0 -@0005 brnz v28, block25 - jump block1 +@0005 brif v28, block25, block1 block1: @0005 trap unreachable diff --git a/cranelift/filetests/filetests/isa/x64/branches.clif b/cranelift/filetests/filetests/isa/x64/branches.clif index 8ed504d6c7..ed05b5325a 100644 --- a/cranelift/filetests/filetests/isa/x64/branches.clif +++ b/cranelift/filetests/filetests/isa/x64/branches.clif @@ -4,8 +4,7 @@ target x86_64 function %f0(i32, i32) -> i32 { block0(v0: i32, v1: i32): v2 = icmp eq v0, v1 - brnz v2, block1 - jump block2 + brif v2, block1, block2 block1: v3 = iconst.i32 1 @@ -35,8 +34,7 @@ block2: function %f1(i32, i32) -> i32 { block0(v0: i32, v1: i32): v2 = icmp eq v0, v1 - brz v2, block1 - jump block2 + brif v2, block2, block1 block1: v3 = iconst.i32 1 @@ -51,14 +49,14 @@ block2: ; movq %rsp, %rbp ; block0: ; cmpl %esi, %edi -; jnz label1; j label2 +; jz label1; j label2 ; block1: -; movl $1, %eax +; movl $2, %eax ; movq %rbp, %rsp ; popq %rbp ; ret ; block2: -; movl $2, %eax +; movl $1, %eax ; movq %rbp, %rsp ; popq %rbp ; ret @@ -66,8 +64,7 @@ block2: function %f2(i32, i32) -> i32 { block0(v0: i32, v1: i32): v2 = icmp eq v0, v1 - brnz v2, block1 - jump block2 + brif v2, block1, block2 block1: v3 = iconst.i32 1 @@ -97,8 +94,7 @@ block2: function %f3(f32, f32) -> i32 { block0(v0: f32, v1: f32): v2 = fcmp eq v0, v1 - brnz v2, block1 - jump block2 + brif v2, block1, block2 block1: v3 = iconst.i32 1 @@ -129,38 +125,7 @@ block2: function %f4(f32, f32) -> i8 { block0(v0: f32, v1: f32): v2 = fcmp eq v0, v1 - brz v2, block1 - jump block2 -block1: - v3 = iconst.i8 1 - return v3 -block2: - v4 = iconst.i8 0 - return v4 -} - -; pushq %rbp -; movq %rsp, %rbp -; block0: -; ucomiss %xmm1, %xmm0 -; jp label1 -; jnz label1; j label2 -; block1: -; movl $1, %eax -; movq %rbp, %rsp -; popq %rbp -; ret -; block2: -; xorl %eax, %eax, %eax -; movq %rbp, %rsp -; popq %rbp -; ret - -function %f4(f32, f32) -> i8 { -block0(v0: f32, v1: f32): - v2 = fcmp ne v0, v1 - brz v2, block1 - jump block2 + brif v2, block2, block1 block1: v3 = iconst.i8 1 return v3 @@ -176,16 +141,44 @@ block2: ; jp label2 ; jnz label2; j label1 ; block1: -; movl $1, %eax -; movq %rbp, %rsp -; popq %rbp -; ret -; block2: ; xorl %eax, %eax, %eax ; movq %rbp, %rsp ; popq %rbp ; ret +; block2: +; movl $1, %eax +; movq %rbp, %rsp +; popq %rbp +; ret +function %f4(f32, f32) -> i8 { +block0(v0: f32, v1: f32): + v2 = fcmp ne v0, v1 + brif v2, block2, block1 +block1: + v3 = iconst.i8 1 + return v3 +block2: + v4 = iconst.i8 0 + return v4 +} + +; pushq %rbp +; movq %rsp, %rbp +; block0: +; ucomiss %xmm1, %xmm0 +; jp label1 +; jnz label1; j label2 +; block1: +; xorl %eax, %eax, %eax +; movq %rbp, %rsp +; popq %rbp +; ret +; block2: +; movl $1, %eax +; movq %rbp, %rsp +; popq %rbp +; ret function %f5(i32) -> i8 { jt0 = jump_table [block1, block2] @@ -226,8 +219,7 @@ function %f6(i64) -> i8 { block0(v0: i64): v1 = iconst.i64 0 v2 = icmp slt v0, v1 - brnz v2, block1 - jump block2 + brif v2, block1, block2 block1: v3 = iconst.i8 1 return v3 @@ -256,8 +248,7 @@ function %f7(i32) -> i8 { block0(v0: i32): v1 = iconst.i32 0 v2 = icmp slt v0, v1 - brnz v2, block1 - jump block2 + brif v2, block1, block2 block1: v3 = iconst.i8 1 return v3 @@ -286,13 +277,11 @@ function %fflags(f32) { block200(v0: f32): v1 = f32const 0x34.0p0 v2 = fcmp eq v0, v1 - brnz v2, block201 - jump block400 + brif v2, block201, block400 block400: v3 = fcmp ord v0, v1 - brnz v3, block202 - jump block201 + brif v3, block202, block201 block401: return @@ -333,8 +322,7 @@ function %br_i8_icmp(i32, i32) -> i32 { block0(v0: i32, v1: i32): v2 = icmp eq v0, v1 v3 = uextend.i32 v2 - brnz v3, block1 - jump block2 + brif v3, block1, block2 block1: v4 = iconst.i32 1 @@ -365,8 +353,7 @@ function %br_i8_fcmp(f32, f32) -> i32 { block0(v0: f32, v1: f32): v2 = fcmp eq v0, v1 v3 = uextend.i32 v2 - brnz v3, block1 - jump block2 + brif v3, block1, block2 block1: v4 = iconst.i32 1 diff --git a/cranelift/filetests/filetests/isa/x64/conditional-values.clif b/cranelift/filetests/filetests/isa/x64/conditional-values.clif index f367c4211e..fa2aa0cd71 100644 --- a/cranelift/filetests/filetests/isa/x64/conditional-values.clif +++ b/cranelift/filetests/filetests/isa/x64/conditional-values.clif @@ -19,8 +19,7 @@ block0(v0: i8, v1: i32, v2: i32): function %f1(i8) -> i32 { block0(v0: i8): - brnz v0, block1 - jump block2 + brif v0, block1, block2 block1: v1 = iconst.i32 1 return v1 @@ -47,8 +46,7 @@ block2: function %f2(i8) -> i32 { block0(v0: i8): - brz v0, block1 - jump block2 + brif v0, block2, block1 block1: v1 = iconst.i32 1 return v1 @@ -61,14 +59,14 @@ block2: ; movq %rsp, %rbp ; block0: ; testb %dil, %dil -; jz label1; j label2 +; jnz label1; j label2 ; block1: -; movl $1, %eax +; movl $2, %eax ; movq %rbp, %rsp ; popq %rbp ; ret ; block2: -; movl $2, %eax +; movl $1, %eax ; movq %rbp, %rsp ; popq %rbp ; ret @@ -78,8 +76,7 @@ block0(v0: i64): v1 = iconst.i32 1 v2 = load.i32 v0 v3 = icmp eq v1, v2 - brnz v3, block1 - jump block2 + brif v3, block1, block2 block1: v4 = iconst.i32 1 return v4 @@ -110,8 +107,7 @@ block0(v0: i64): v1 = iconst.i32 1 v2 = load.i32 v0 v3 = icmp eq v2, v1 - brnz v3, block1 - jump block2 + brif v3, block1, block2 block1: v4 = iconst.i32 1 return v4 diff --git a/cranelift/filetests/filetests/isa/x64/fcmp-mem-bug.clif b/cranelift/filetests/filetests/isa/x64/fcmp-mem-bug.clif index b38619f4d7..f127262895 100644 --- a/cranelift/filetests/filetests/isa/x64/fcmp-mem-bug.clif +++ b/cranelift/filetests/filetests/isa/x64/fcmp-mem-bug.clif @@ -73,8 +73,7 @@ function u0:11335(i64 vmctx, i64, i32, i32, i32, i32, i32, i32, i32, i32) fast { v527 -> v10 v537 -> v10 v559 -> v10 -@4b665e brz v7, block2 -@4b665e jump block3 +@4b665e brif v7, block3, block2 block3: @4b6684 v438 = load.i64 notrap aligned readonly v0+504 @@ -226,12 +225,10 @@ function u0:11335(i64 vmctx, i64, i32, i32, i32, i32, i32, i32, i32, i32) fast { @4b6671 v19 = icmp sle v18, v15 @4b6671 v20 = uextend.i32 v19 @4b6672 v21 = bor v17, v20 -@4b6674 brnz v21, block9 -@4b6674 jump block10 +@4b6674 brif v21, block9, block10 block10: -@4b6679 brz.i32 v18, block2 -@4b6679 jump block11 +@4b6679 brif.i32 v18, block11, block2 block11: @4b667f v27 = isub.i32 v10, v18 @@ -271,14 +268,12 @@ function u0:11335(i64 vmctx, i64, i32, i32, i32, i32, i32, i32, i32, i32) fast { @4b6695 v37 = iadd.i64 v438, v443 @4b6695 v38 = load.f32 little v37+68 @4b6698 v39 = fcmp.f32 gt v32, v38 -@4b669a brnz v39, block14 -@4b669a jump block15 +@4b669a brif v39, block14, block15 block15: @4b66a0 v44 = iadd.i32 v34, v116 @4b66a7 v47 = iadd.i32 v45, v468 -@4b66aa brnz v47, block12(v44, v47) -@4b66aa jump block16 +@4b66aa brif v47, block12(v44, v47), block16 block16: @4b66ac jump block2 @@ -289,8 +284,7 @@ function u0:11335(i64 vmctx, i64, i32, i32, i32, i32, i32, i32, i32, i32) fast { block13: @4b66be v50 = isub.i32 v10, v45 @4b66c3 v52 = icmp slt v50, v14 -@4b66c4 brz v52, block22 -@4b66c4 jump block23 +@4b66c4 brif v52, block23, block22 block23: v427 = ushr.i32 v14, v467 @@ -304,8 +298,7 @@ function u0:11335(i64 vmctx, i64, i32, i32, i32, i32, i32, i32, i32, i32) fast { v156 -> v59 v157 -> v59 @4b66d9 v60 = isub.i32 v28, v34 -@4b66dd brz v60, block21 -@4b66dd jump block24 +@4b66dd brif v60, block24, block21 block24: @4b66e3 v64 = sshr.i32 v60, v93 @@ -334,8 +327,7 @@ function u0:11335(i64 vmctx, i64, i32, i32, i32, i32, i32, i32, i32, i32) fast { @4b6722 v87 = bxor v72, v90 @4b6723 v88 = iadd v70, v87 @4b6726 v89 = select v83, v72, v88 -@4b6729 brnz v89, block25(v85, v89) -@4b6729 jump block27 +@4b6729 brif v89, block25(v85, v89), block27 block27: @4b672b jump block26 @@ -345,8 +337,7 @@ function u0:11335(i64 vmctx, i64, i32, i32, i32, i32, i32, i32, i32, i32) fast { block22: @4b6733 v91 = icmp.i32 eq v45, v90 -@4b6734 brnz v91, block6 -@4b6734 jump block28 +@4b6734 brif v91, block6, block28 block28: v430 = ushr.i32 v50, v467 @@ -360,8 +351,7 @@ function u0:11335(i64 vmctx, i64, i32, i32, i32, i32, i32, i32, i32, i32) fast { v151 -> v97 v152 -> v97 @4b6749 v100 = isub.i32 v99, v28 -@4b674d brz v100, block19 -@4b674d jump block29 +@4b674d brif v100, block29, block19 block29: @4b6753 v104 = sshr.i32 v100, v93 @@ -390,8 +380,7 @@ function u0:11335(i64 vmctx, i64, i32, i32, i32, i32, i32, i32, i32, i32) fast { @4b6790 v127 = bxor v112, v90 @4b6791 v128 = iadd v110, v127 @4b6796 v129 = select v123, v128, v112 -@4b6799 brnz v129, block30(v125, v129) -@4b6799 jump block32 +@4b6799 brif v129, block30(v125, v129), block32 block32: @4b679b jump block31 @@ -432,25 +421,21 @@ function u0:11335(i64 vmctx, i64, i32, i32, i32, i32, i32, i32, i32, i32) fast { v232 -> v228 @4b67c5 v146 = isub.i32 v10, v143 @4b67d2 v153 = icmp ne v147, v150 -@4b67d3 brz v153, block37 -@4b67d3 jump block38 +@4b67d3 brif v153, block38, block37 block38: @4b67d9 v158 = icmp.i32 eq v147, v155 -@4b67da brnz v158, block36 -@4b67da jump block39 +@4b67da brif v158, block36, block39 block39: @4b67e0 v161 = iadd.i32 v150, v116 @4b67e3 v162 = icmp eq v161, v147 -@4b67e4 brnz v162, block35 -@4b67e4 jump block40 +@4b67e4 brif v162, block35, block40 block40: @4b67ea v165 = iadd.i32 v147, v116 @4b67ed v166 = icmp eq v165, v155 -@4b67ee brnz v166, block34 -@4b67ee jump block41 +@4b67ee brif v166, block34, block41 block41: @4b67f6 v168 = call fn0(v0, v0, v150, v147, v155) @@ -470,8 +455,7 @@ function u0:11335(i64 vmctx, i64, i32, i32, i32, i32, i32, i32, i32, i32) fast { @4b681a v172 = iadd.i64 v438, v490 @4b681a v173 = load.i32 little v172 v180 -> v173 -@4b6821 brz v169, block42 -@4b6821 jump block43 +@4b6821 brif v169, block43, block42 block43: @4b6829 v174 = call fn1(v0, v0, v150, v147, v169) @@ -492,8 +476,7 @@ function u0:11335(i64 vmctx, i64, i32, i32, i32, i32, i32, i32, i32, i32) fast { @4b6848 v185 = load.i32 little v184 v190 -> v185 @4b6853 v186 = isub v183, v150 -@4b6856 brz v186, block45 -@4b6856 jump block46 +@4b6856 brif v186, block46, block45 block46: @4b685c v187 = isub.i32 v155, v186 @@ -518,21 +501,18 @@ function u0:11335(i64 vmctx, i64, i32, i32, i32, i32, i32, i32, i32, i32) fast { @4b6893 v223 = iadd v192, v222 @4b6896 v224 = isub v223, v207 @4b6897 v225 = icmp slt v219, v224 -@4b6898 brz v225, block47 -@4b6898 jump block48 +@4b6898 brif v225, block48, block47 block48: @4b68aa call fn2(v0, v0, v228, v233, v234, v236, v143, v201, v246, v256) -@4b68b9 brnz.i32 v206, block7(v206, v215, v155, v234, v268) -@4b68b9 jump block49 +@4b68b9 brif.i32 v206, block7(v206, v215, v155, v234, v268), block49 block49: @4b68bb jump block2 block47: @4b68ce call fn2(v0, v0, v234, v155, v268, v236, v215, v206, v246, v256) -@4b68e1 brnz.i32 v201, block7(v201, v143, v233, v228, v234) -@4b68e1 jump block50 +@4b68e1 brif.i32 v201, block7(v201, v143, v233, v228, v234), block50 block50: @4b68e3 jump block2 @@ -542,13 +522,11 @@ function u0:11335(i64 vmctx, i64, i32, i32, i32, i32, i32, i32, i32, i32) fast { block8: @4b68eb v276 = icmp.i32 sgt v18, v14 -@4b68ec brz v276, block51 -@4b68ec jump block52 +@4b68ec brif v276, block52, block51 block52: @4b68f2 v278 = icmp.i32 eq v28, v99 -@4b68f3 brnz v278, block2 -@4b68f3 jump block53 +@4b68f3 brif v278, block2, block53 block53: @4b68f9 v280 = isub.i32 v99, v28 @@ -566,15 +544,13 @@ function u0:11335(i64 vmctx, i64, i32, i32, i32, i32, i32, i32, i32, i32) fast { @4b690f store little v288, v289 @4b6918 v292 = iadd v283, v116 @4b691b v293 = icmp.i32 ne v280, v292 -@4b691c brnz v293, block54(v292) -@4b691c jump block56 +@4b691c brif v293, block54(v292), block56 block56: @4b691e jump block55 block55: -@4b6922 brz.i32 v292, block2 -@4b6922 jump block57 +@4b6922 brif.i32 v292, block57, block2 block57: @4b6928 v299 = iadd.i32 v99, v182 @@ -584,8 +560,7 @@ function u0:11335(i64 vmctx, i64, i32, i32, i32, i32, i32, i32, i32, i32) fast { block58(v302: i32, v305: i32, v310: i32, v324: i32): v409 -> v305 @4b693a v303 = icmp.i32 eq v48, v302 -@4b693b brnz v303, block5 -@4b693b jump block60 +@4b693b brif v303, block5, block60 block60: @4b6943 v307 = iadd.i32 v302, v182 @@ -612,8 +587,7 @@ function u0:11335(i64 vmctx, i64, i32, i32, i32, i32, i32, i32, i32, i32) fast { @4b697e v327 = iadd.i32 v305, v182 @4b6987 v328 = select.i32 v319, v310, v312 @4b698c v330 = icmp ne v328, v251 -@4b698d brnz v330, block58(v323, v327, v328, v325) -@4b698d jump block61 +@4b698d brif v330, block58(v323, v327, v328, v325), block61 block61: @4b698f jump block59 @@ -623,8 +597,7 @@ function u0:11335(i64 vmctx, i64, i32, i32, i32, i32, i32, i32, i32, i32) fast { block51: @4b6997 v333 = icmp.i32 eq v48, v28 -@4b6998 brnz v333, block2 -@4b6998 jump block62 +@4b6998 brif v333, block2, block62 block62: @4b699e v335 = isub.i32 v28, v48 @@ -644,15 +617,13 @@ function u0:11335(i64 vmctx, i64, i32, i32, i32, i32, i32, i32, i32, i32) fast { v389 -> v347 v388 -> v389 @4b69c0 v348 = icmp.i32 ne v335, v347 -@4b69c1 brnz v348, block63(v347) -@4b69c1 jump block65 +@4b69c1 brif v348, block63(v347), block65 block65: @4b69c3 jump block64 block64: -@4b69c7 brz.i32 v347, block2 -@4b69c7 jump block66 +@4b69c7 brif.i32 v347, block66, block2 block66: @4b69cd v352 = iadd.i32 v251, v347 @@ -666,8 +637,7 @@ function u0:11335(i64 vmctx, i64, i32, i32, i32, i32, i32, i32, i32, i32) fast { block67(v355: i32, v363: i32, v374: i32): v381 -> v374 @4b69dd v357 = icmp eq v355, v99 -@4b69de brnz v357, block4 -@4b69de jump block69 +@4b69de brif v357, block4, block69 block69: @4b69e4 v528 = uextend.i64 v355 @@ -685,8 +655,7 @@ function u0:11335(i64 vmctx, i64, i32, i32, i32, i32, i32, i32, i32, i32) fast { @4b69f6 v368 = fcmp gt v362, v367 @4b69f6 v369 = uextend.i32 v368 @4b69f9 v371 = bxor v369, v468 -@4b69fb brnz v371, block71 -@4b69fb jump block72 +@4b69fb brif v371, block71, block72 block72: @4b6a01 v538 = uextend.i64 v374 @@ -706,8 +675,7 @@ function u0:11335(i64 vmctx, i64, i32, i32, i32, i32, i32, i32, i32, i32) fast { @4b6a21 v383 = iadd.i32 v374, v116 @4b6a28 v387 = iadd.i32 v385, v386 @4b6a2b v390 = icmp ne v387, v389 -@4b6a2c brnz v390, block67(v393, v386, v383) -@4b6a2c jump block73 +@4b6a2c brif v390, block67(v393, v386, v383), block73 block73: @4b6a2e jump block68 @@ -724,8 +692,7 @@ function u0:11335(i64 vmctx, i64, i32, i32, i32, i32, i32, i32, i32, i32) fast { block5: @4b6a50 v402 = icmp.i32 eq v251, v324 -@4b6a51 brnz v402, block2 -@4b6a51 jump block74 +@4b6a51 brif v402, block2, block74 block74: @4b6a57 v405 = iadd.i32 v324, v182 @@ -745,8 +712,7 @@ function u0:11335(i64 vmctx, i64, i32, i32, i32, i32, i32, i32, i32, i32) fast { @4b6a74 store little v414, v415 @4b6a7d v418 = iadd v408, v182 @4b6a80 v419 = icmp.i32 ne v406, v418 -@4b6a81 brnz v419, block75(v418) -@4b6a81 jump block77 +@4b6a81 brif v419, block75(v418), block77 block77: @4b6a83 jump block76 @@ -756,8 +722,7 @@ function u0:11335(i64 vmctx, i64, i32, i32, i32, i32, i32, i32, i32, i32) fast { block4: @4b6a8b v423 = isub.i32 v352, v363 -@4b6a8f brz v423, block2 -@4b6a8f jump block78 +@4b6a8f brif v423, block78, block2 block78: @4b6a97 v426 = call fn1(v0, v0, v374, v363, v423) diff --git a/cranelift/filetests/filetests/isa/x64/i128.clif b/cranelift/filetests/filetests/isa/x64/i128.clif index 9bb3934057..37d05b2b8c 100644 --- a/cranelift/filetests/filetests/isa/x64/i128.clif +++ b/cranelift/filetests/filetests/isa/x64/i128.clif @@ -302,8 +302,7 @@ block0(v0: i128, v1: i128): function %f10(i128) -> i32 { block0(v0: i128): - brz v0, block1 - jump block2 + brif v0, block2, block1 block1: v1 = iconst.i32 1 @@ -322,22 +321,21 @@ block2: ; cmpq $0, %rsi ; setz %sil ; testb %r9b, %sil -; jnz label1; j label2 +; jz label1; j label2 ; block1: -; movl $1, %eax +; movl $2, %eax ; movq %rbp, %rsp ; popq %rbp ; ret ; block2: -; movl $2, %eax +; movl $1, %eax ; movq %rbp, %rsp ; popq %rbp ; ret function %f11(i128) -> i32 { block0(v0: i128): - brnz v0, block1 - jump block2 + brif v0, block1, block2 block1: v1 = iconst.i32 1 @@ -659,8 +657,7 @@ function %f23(i128, i8) -> i128 { block0(v0: i128, v1: i8): v2 = iconst.i64 0 v3 = uextend.i128 v2 - brnz v1, block1(v3) - jump block2(v3) + brif v1, block1(v3), block2(v3) block1(v4: i128): v5 = iconst.i64 1 diff --git a/cranelift/filetests/filetests/isa/x64/table.clif b/cranelift/filetests/filetests/isa/x64/table.clif index bda561c487..ea908e9935 100644 --- a/cranelift/filetests/filetests/isa/x64/table.clif +++ b/cranelift/filetests/filetests/isa/x64/table.clif @@ -21,8 +21,8 @@ block0(v0: i32, v1: r64, v2: i64): ; block0: ; movl 8(%rdx), %r11d ; cmpl %r11d, %edi -; jb label1; j label2 -; block1: +; jnb label1; j label2 +; block2: ; movl %edi, %ecx ; movq 0(%rdx), %rax ; movq %rax, %rdx @@ -33,6 +33,6 @@ block0(v0: i32, v1: r64, v2: i64): ; movq %rbp, %rsp ; popq %rbp ; ret -; block2: +; block1: ; ud2 table_oob diff --git a/cranelift/filetests/filetests/isa/x64/wasm/load_store_dynamic_kind_i32_index_0_guard_no_spectre_i32_access_0_offset.wat b/cranelift/filetests/filetests/isa/x64/wasm/load_store_dynamic_kind_i32_index_0_guard_no_spectre_i32_access_0_offset.wat index 67d55374ef..e054d9aa5a 100644 --- a/cranelift/filetests/filetests/isa/x64/wasm/load_store_dynamic_kind_i32_index_0_guard_no_spectre_i32_access_0_offset.wat +++ b/cranelift/filetests/filetests/isa/x64/wasm/load_store_dynamic_kind_i32_index_0_guard_no_spectre_i32_access_0_offset.wat @@ -49,16 +49,16 @@ ;; movabsq $-4, %r11 ;; addq %r11, 8(%rdx), %r11 ;; cmpq %r11, %r10 -;; jbe label1; j label3 -;; block1: +;; jnbe label1; j label2 +;; block2: ;; movq 0(%rdx), %rdi ;; movl %esi, 0(%rdi,%r10,1) -;; jmp label2 -;; block2: +;; jmp label3 +;; block3: ;; movq %rbp, %rsp ;; popq %rbp ;; ret -;; block3: +;; block1: ;; ud2 heap_oob ;; ;; function u0:1: @@ -71,14 +71,14 @@ ;; movabsq $-4, %r11 ;; addq %r11, 8(%rsi), %r11 ;; cmpq %r11, %r10 -;; jbe label1; j label3 -;; block1: -;; movq 0(%rsi), %rsi -;; movl 0(%rsi,%r10,1), %eax -;; jmp label2 +;; jnbe label1; j label2 ;; block2: +;; movq 0(%rsi), %rdi +;; movl 0(%rdi,%r10,1), %eax +;; jmp label3 +;; block3: ;; movq %rbp, %rsp ;; popq %rbp ;; ret -;; block3: -;; ud2 heap_oob \ No newline at end of file +;; block1: +;; ud2 heap_oob diff --git a/cranelift/filetests/filetests/isa/x64/wasm/load_store_dynamic_kind_i32_index_0_guard_no_spectre_i32_access_0x1000_offset.wat b/cranelift/filetests/filetests/isa/x64/wasm/load_store_dynamic_kind_i32_index_0_guard_no_spectre_i32_access_0x1000_offset.wat index 517ab1c010..bc036f5758 100644 --- a/cranelift/filetests/filetests/isa/x64/wasm/load_store_dynamic_kind_i32_index_0_guard_no_spectre_i32_access_0x1000_offset.wat +++ b/cranelift/filetests/filetests/isa/x64/wasm/load_store_dynamic_kind_i32_index_0_guard_no_spectre_i32_access_0x1000_offset.wat @@ -49,16 +49,16 @@ ;; movabsq $-4100, %r11 ;; addq %r11, 8(%rdx), %r11 ;; cmpq %r11, %r10 -;; jbe label1; j label3 -;; block1: +;; jnbe label1; j label2 +;; block2: ;; movq 0(%rdx), %rdi ;; movl %esi, 4096(%rdi,%r10,1) -;; jmp label2 -;; block2: +;; jmp label3 +;; block3: ;; movq %rbp, %rsp ;; popq %rbp ;; ret -;; block3: +;; block1: ;; ud2 heap_oob ;; ;; function u0:1: @@ -71,14 +71,14 @@ ;; movabsq $-4100, %r11 ;; addq %r11, 8(%rsi), %r11 ;; cmpq %r11, %r10 -;; jbe label1; j label3 -;; block1: -;; movq 0(%rsi), %rsi -;; movl 4096(%rsi,%r10,1), %eax -;; jmp label2 +;; jnbe label1; j label2 ;; block2: +;; movq 0(%rsi), %rdi +;; movl 4096(%rdi,%r10,1), %eax +;; jmp label3 +;; block3: ;; movq %rbp, %rsp ;; popq %rbp ;; ret -;; block3: -;; ud2 heap_oob \ No newline at end of file +;; block1: +;; ud2 heap_oob diff --git a/cranelift/filetests/filetests/isa/x64/wasm/load_store_dynamic_kind_i32_index_0_guard_no_spectre_i32_access_0xffff0000_offset.wat b/cranelift/filetests/filetests/isa/x64/wasm/load_store_dynamic_kind_i32_index_0_guard_no_spectre_i32_access_0xffff0000_offset.wat index dc19682cb1..676cc60917 100644 --- a/cranelift/filetests/filetests/isa/x64/wasm/load_store_dynamic_kind_i32_index_0_guard_no_spectre_i32_access_0xffff0000_offset.wat +++ b/cranelift/filetests/filetests/isa/x64/wasm/load_store_dynamic_kind_i32_index_0_guard_no_spectre_i32_access_0xffff0000_offset.wat @@ -51,17 +51,17 @@ ;; jnb ; ud2 heap_oob ; ;; movq 8(%rdx), %rax ;; cmpq %rax, %rdi -;; jbe label1; j label3 -;; block1: -;; movq 0(%rdx), %rdi -;; addq %rdi, const(0), %rdi -;; movl %esi, 0(%rdi,%r11,1) -;; jmp label2 +;; jnbe label1; j label2 ;; block2: +;; movq 0(%rdx), %rax +;; addq %rax, const(0), %rax +;; movl %esi, 0(%rax,%r11,1) +;; jmp label3 +;; block3: ;; movq %rbp, %rsp ;; popq %rbp ;; ret -;; block3: +;; block1: ;; ud2 heap_oob ;; ;; function u0:1: @@ -76,15 +76,15 @@ ;; jnb ; ud2 heap_oob ; ;; movq 8(%rsi), %rax ;; cmpq %rax, %rdi -;; jbe label1; j label3 -;; block1: -;; movq 0(%rsi), %rsi -;; addq %rsi, const(0), %rsi -;; movl 0(%rsi,%r11,1), %eax -;; jmp label2 +;; jnbe label1; j label2 ;; block2: +;; movq 0(%rsi), %rdi +;; addq %rdi, const(0), %rdi +;; movl 0(%rdi,%r11,1), %eax +;; jmp label3 +;; block3: ;; movq %rbp, %rsp ;; popq %rbp ;; ret -;; block3: -;; ud2 heap_oob \ No newline at end of file +;; block1: +;; ud2 heap_oob diff --git a/cranelift/filetests/filetests/isa/x64/wasm/load_store_dynamic_kind_i32_index_0_guard_no_spectre_i8_access_0_offset.wat b/cranelift/filetests/filetests/isa/x64/wasm/load_store_dynamic_kind_i32_index_0_guard_no_spectre_i8_access_0_offset.wat index a381266d67..6fbf78cdc8 100644 --- a/cranelift/filetests/filetests/isa/x64/wasm/load_store_dynamic_kind_i32_index_0_guard_no_spectre_i8_access_0_offset.wat +++ b/cranelift/filetests/filetests/isa/x64/wasm/load_store_dynamic_kind_i32_index_0_guard_no_spectre_i8_access_0_offset.wat @@ -48,16 +48,16 @@ ;; movl %edi, %r9d ;; movq 8(%rdx), %r10 ;; cmpq %r10, %r9 -;; jb label1; j label3 -;; block1: -;; movq 0(%rdx), %r11 -;; movb %sil, 0(%r11,%r9,1) -;; jmp label2 +;; jnb label1; j label2 ;; block2: +;; movq 0(%rdx), %rdi +;; movb %sil, 0(%rdi,%r9,1) +;; jmp label3 +;; block3: ;; movq %rbp, %rsp ;; popq %rbp ;; ret -;; block3: +;; block1: ;; ud2 heap_oob ;; ;; function u0:1: @@ -69,14 +69,14 @@ ;; movl %edi, %r9d ;; movq 8(%rsi), %r10 ;; cmpq %r10, %r9 -;; jb label1; j label3 -;; block1: -;; movq 0(%rsi), %r11 -;; movzbq 0(%r11,%r9,1), %rax -;; jmp label2 +;; jnb label1; j label2 ;; block2: +;; movq 0(%rsi), %rsi +;; movzbq 0(%rsi,%r9,1), %rax +;; jmp label3 +;; block3: ;; movq %rbp, %rsp ;; popq %rbp ;; ret -;; block3: -;; ud2 heap_oob \ No newline at end of file +;; block1: +;; ud2 heap_oob diff --git a/cranelift/filetests/filetests/isa/x64/wasm/load_store_dynamic_kind_i32_index_0_guard_no_spectre_i8_access_0x1000_offset.wat b/cranelift/filetests/filetests/isa/x64/wasm/load_store_dynamic_kind_i32_index_0_guard_no_spectre_i8_access_0x1000_offset.wat index 68984a056c..0235481016 100644 --- a/cranelift/filetests/filetests/isa/x64/wasm/load_store_dynamic_kind_i32_index_0_guard_no_spectre_i8_access_0x1000_offset.wat +++ b/cranelift/filetests/filetests/isa/x64/wasm/load_store_dynamic_kind_i32_index_0_guard_no_spectre_i8_access_0x1000_offset.wat @@ -49,16 +49,16 @@ ;; movabsq $-4097, %r11 ;; addq %r11, 8(%rdx), %r11 ;; cmpq %r11, %r10 -;; jbe label1; j label3 -;; block1: +;; jnbe label1; j label2 +;; block2: ;; movq 0(%rdx), %rdi ;; movb %sil, 4096(%rdi,%r10,1) -;; jmp label2 -;; block2: +;; jmp label3 +;; block3: ;; movq %rbp, %rsp ;; popq %rbp ;; ret -;; block3: +;; block1: ;; ud2 heap_oob ;; ;; function u0:1: @@ -71,14 +71,14 @@ ;; movabsq $-4097, %r11 ;; addq %r11, 8(%rsi), %r11 ;; cmpq %r11, %r10 -;; jbe label1; j label3 -;; block1: -;; movq 0(%rsi), %rsi -;; movzbq 4096(%rsi,%r10,1), %rax -;; jmp label2 +;; jnbe label1; j label2 ;; block2: +;; movq 0(%rsi), %rdi +;; movzbq 4096(%rdi,%r10,1), %rax +;; jmp label3 +;; block3: ;; movq %rbp, %rsp ;; popq %rbp ;; ret -;; block3: -;; ud2 heap_oob \ No newline at end of file +;; block1: +;; ud2 heap_oob diff --git a/cranelift/filetests/filetests/isa/x64/wasm/load_store_dynamic_kind_i32_index_0_guard_no_spectre_i8_access_0xffff0000_offset.wat b/cranelift/filetests/filetests/isa/x64/wasm/load_store_dynamic_kind_i32_index_0_guard_no_spectre_i8_access_0xffff0000_offset.wat index 58d4b3f7bb..d3d4713d72 100644 --- a/cranelift/filetests/filetests/isa/x64/wasm/load_store_dynamic_kind_i32_index_0_guard_no_spectre_i8_access_0xffff0000_offset.wat +++ b/cranelift/filetests/filetests/isa/x64/wasm/load_store_dynamic_kind_i32_index_0_guard_no_spectre_i8_access_0xffff0000_offset.wat @@ -51,17 +51,17 @@ ;; jnb ; ud2 heap_oob ; ;; movq 8(%rdx), %rax ;; cmpq %rax, %rdi -;; jbe label1; j label3 -;; block1: -;; movq 0(%rdx), %rdi -;; addq %rdi, const(0), %rdi -;; movb %sil, 0(%rdi,%r11,1) -;; jmp label2 +;; jnbe label1; j label2 ;; block2: +;; movq 0(%rdx), %rax +;; addq %rax, const(0), %rax +;; movb %sil, 0(%rax,%r11,1) +;; jmp label3 +;; block3: ;; movq %rbp, %rsp ;; popq %rbp ;; ret -;; block3: +;; block1: ;; ud2 heap_oob ;; ;; function u0:1: @@ -76,15 +76,15 @@ ;; jnb ; ud2 heap_oob ; ;; movq 8(%rsi), %rax ;; cmpq %rax, %rdi -;; jbe label1; j label3 -;; block1: -;; movq 0(%rsi), %rsi -;; addq %rsi, const(0), %rsi -;; movzbq 0(%rsi,%r11,1), %rax -;; jmp label2 +;; jnbe label1; j label2 ;; block2: +;; movq 0(%rsi), %rdi +;; addq %rdi, const(0), %rdi +;; movzbq 0(%rdi,%r11,1), %rax +;; jmp label3 +;; block3: ;; movq %rbp, %rsp ;; popq %rbp ;; ret -;; block3: -;; ud2 heap_oob \ No newline at end of file +;; block1: +;; ud2 heap_oob diff --git a/cranelift/filetests/filetests/isa/x64/wasm/load_store_dynamic_kind_i32_index_0xffffffff_guard_no_spectre_i32_access_0_offset.wat b/cranelift/filetests/filetests/isa/x64/wasm/load_store_dynamic_kind_i32_index_0xffffffff_guard_no_spectre_i32_access_0_offset.wat index e658bff1e7..2ac0cfddd7 100644 --- a/cranelift/filetests/filetests/isa/x64/wasm/load_store_dynamic_kind_i32_index_0xffffffff_guard_no_spectre_i32_access_0_offset.wat +++ b/cranelift/filetests/filetests/isa/x64/wasm/load_store_dynamic_kind_i32_index_0xffffffff_guard_no_spectre_i32_access_0_offset.wat @@ -49,16 +49,16 @@ ;; movabsq $-4, %r11 ;; addq %r11, 8(%rdx), %r11 ;; cmpq %r11, %r10 -;; jbe label1; j label3 -;; block1: +;; jnbe label1; j label2 +;; block2: ;; movq 0(%rdx), %rdi ;; movl %esi, 0(%rdi,%r10,1) -;; jmp label2 -;; block2: +;; jmp label3 +;; block3: ;; movq %rbp, %rsp ;; popq %rbp ;; ret -;; block3: +;; block1: ;; ud2 heap_oob ;; ;; function u0:1: @@ -71,14 +71,14 @@ ;; movabsq $-4, %r11 ;; addq %r11, 8(%rsi), %r11 ;; cmpq %r11, %r10 -;; jbe label1; j label3 -;; block1: -;; movq 0(%rsi), %rsi -;; movl 0(%rsi,%r10,1), %eax -;; jmp label2 +;; jnbe label1; j label2 ;; block2: +;; movq 0(%rsi), %rdi +;; movl 0(%rdi,%r10,1), %eax +;; jmp label3 +;; block3: ;; movq %rbp, %rsp ;; popq %rbp ;; ret -;; block3: -;; ud2 heap_oob \ No newline at end of file +;; block1: +;; ud2 heap_oob diff --git a/cranelift/filetests/filetests/isa/x64/wasm/load_store_dynamic_kind_i32_index_0xffffffff_guard_no_spectre_i32_access_0x1000_offset.wat b/cranelift/filetests/filetests/isa/x64/wasm/load_store_dynamic_kind_i32_index_0xffffffff_guard_no_spectre_i32_access_0x1000_offset.wat index cdf5b03b0a..e39c27b356 100644 --- a/cranelift/filetests/filetests/isa/x64/wasm/load_store_dynamic_kind_i32_index_0xffffffff_guard_no_spectre_i32_access_0x1000_offset.wat +++ b/cranelift/filetests/filetests/isa/x64/wasm/load_store_dynamic_kind_i32_index_0xffffffff_guard_no_spectre_i32_access_0x1000_offset.wat @@ -49,16 +49,16 @@ ;; movabsq $-4100, %r11 ;; addq %r11, 8(%rdx), %r11 ;; cmpq %r11, %r10 -;; jbe label1; j label3 -;; block1: +;; jnbe label1; j label2 +;; block2: ;; movq 0(%rdx), %rdi ;; movl %esi, 4096(%rdi,%r10,1) -;; jmp label2 -;; block2: +;; jmp label3 +;; block3: ;; movq %rbp, %rsp ;; popq %rbp ;; ret -;; block3: +;; block1: ;; ud2 heap_oob ;; ;; function u0:1: @@ -71,14 +71,14 @@ ;; movabsq $-4100, %r11 ;; addq %r11, 8(%rsi), %r11 ;; cmpq %r11, %r10 -;; jbe label1; j label3 -;; block1: -;; movq 0(%rsi), %rsi -;; movl 4096(%rsi,%r10,1), %eax -;; jmp label2 +;; jnbe label1; j label2 ;; block2: +;; movq 0(%rsi), %rdi +;; movl 4096(%rdi,%r10,1), %eax +;; jmp label3 +;; block3: ;; movq %rbp, %rsp ;; popq %rbp ;; ret -;; block3: -;; ud2 heap_oob \ No newline at end of file +;; block1: +;; ud2 heap_oob diff --git a/cranelift/filetests/filetests/isa/x64/wasm/load_store_dynamic_kind_i32_index_0xffffffff_guard_no_spectre_i32_access_0xffff0000_offset.wat b/cranelift/filetests/filetests/isa/x64/wasm/load_store_dynamic_kind_i32_index_0xffffffff_guard_no_spectre_i32_access_0xffff0000_offset.wat index c40782e6ee..c3e4b21359 100644 --- a/cranelift/filetests/filetests/isa/x64/wasm/load_store_dynamic_kind_i32_index_0xffffffff_guard_no_spectre_i32_access_0xffff0000_offset.wat +++ b/cranelift/filetests/filetests/isa/x64/wasm/load_store_dynamic_kind_i32_index_0xffffffff_guard_no_spectre_i32_access_0xffff0000_offset.wat @@ -51,17 +51,17 @@ ;; jnb ; ud2 heap_oob ; ;; movq 8(%rdx), %rax ;; cmpq %rax, %rdi -;; jbe label1; j label3 -;; block1: -;; movq 0(%rdx), %rdi -;; addq %rdi, const(0), %rdi -;; movl %esi, 0(%rdi,%r11,1) -;; jmp label2 +;; jnbe label1; j label2 ;; block2: +;; movq 0(%rdx), %rax +;; addq %rax, const(0), %rax +;; movl %esi, 0(%rax,%r11,1) +;; jmp label3 +;; block3: ;; movq %rbp, %rsp ;; popq %rbp ;; ret -;; block3: +;; block1: ;; ud2 heap_oob ;; ;; function u0:1: @@ -76,15 +76,15 @@ ;; jnb ; ud2 heap_oob ; ;; movq 8(%rsi), %rax ;; cmpq %rax, %rdi -;; jbe label1; j label3 -;; block1: -;; movq 0(%rsi), %rsi -;; addq %rsi, const(0), %rsi -;; movl 0(%rsi,%r11,1), %eax -;; jmp label2 +;; jnbe label1; j label2 ;; block2: +;; movq 0(%rsi), %rdi +;; addq %rdi, const(0), %rdi +;; movl 0(%rdi,%r11,1), %eax +;; jmp label3 +;; block3: ;; movq %rbp, %rsp ;; popq %rbp ;; ret -;; block3: -;; ud2 heap_oob \ No newline at end of file +;; block1: +;; ud2 heap_oob diff --git a/cranelift/filetests/filetests/isa/x64/wasm/load_store_dynamic_kind_i32_index_0xffffffff_guard_no_spectre_i8_access_0_offset.wat b/cranelift/filetests/filetests/isa/x64/wasm/load_store_dynamic_kind_i32_index_0xffffffff_guard_no_spectre_i8_access_0_offset.wat index a123e10ebf..edeacce22d 100644 --- a/cranelift/filetests/filetests/isa/x64/wasm/load_store_dynamic_kind_i32_index_0xffffffff_guard_no_spectre_i8_access_0_offset.wat +++ b/cranelift/filetests/filetests/isa/x64/wasm/load_store_dynamic_kind_i32_index_0xffffffff_guard_no_spectre_i8_access_0_offset.wat @@ -48,16 +48,16 @@ ;; movl %edi, %r9d ;; movq 8(%rdx), %r10 ;; cmpq %r10, %r9 -;; jb label1; j label3 -;; block1: -;; movq 0(%rdx), %r11 -;; movb %sil, 0(%r11,%r9,1) -;; jmp label2 +;; jnb label1; j label2 ;; block2: +;; movq 0(%rdx), %rdi +;; movb %sil, 0(%rdi,%r9,1) +;; jmp label3 +;; block3: ;; movq %rbp, %rsp ;; popq %rbp ;; ret -;; block3: +;; block1: ;; ud2 heap_oob ;; ;; function u0:1: @@ -69,14 +69,14 @@ ;; movl %edi, %r9d ;; movq 8(%rsi), %r10 ;; cmpq %r10, %r9 -;; jb label1; j label3 -;; block1: -;; movq 0(%rsi), %r11 -;; movzbq 0(%r11,%r9,1), %rax -;; jmp label2 +;; jnb label1; j label2 ;; block2: +;; movq 0(%rsi), %rsi +;; movzbq 0(%rsi,%r9,1), %rax +;; jmp label3 +;; block3: ;; movq %rbp, %rsp ;; popq %rbp ;; ret -;; block3: -;; ud2 heap_oob \ No newline at end of file +;; block1: +;; ud2 heap_oob diff --git a/cranelift/filetests/filetests/isa/x64/wasm/load_store_dynamic_kind_i32_index_0xffffffff_guard_no_spectre_i8_access_0x1000_offset.wat b/cranelift/filetests/filetests/isa/x64/wasm/load_store_dynamic_kind_i32_index_0xffffffff_guard_no_spectre_i8_access_0x1000_offset.wat index 5d67d34eb0..36351d7bb8 100644 --- a/cranelift/filetests/filetests/isa/x64/wasm/load_store_dynamic_kind_i32_index_0xffffffff_guard_no_spectre_i8_access_0x1000_offset.wat +++ b/cranelift/filetests/filetests/isa/x64/wasm/load_store_dynamic_kind_i32_index_0xffffffff_guard_no_spectre_i8_access_0x1000_offset.wat @@ -49,16 +49,16 @@ ;; movabsq $-4097, %r11 ;; addq %r11, 8(%rdx), %r11 ;; cmpq %r11, %r10 -;; jbe label1; j label3 -;; block1: +;; jnbe label1; j label2 +;; block2: ;; movq 0(%rdx), %rdi ;; movb %sil, 4096(%rdi,%r10,1) -;; jmp label2 -;; block2: +;; jmp label3 +;; block3: ;; movq %rbp, %rsp ;; popq %rbp ;; ret -;; block3: +;; block1: ;; ud2 heap_oob ;; ;; function u0:1: @@ -71,14 +71,14 @@ ;; movabsq $-4097, %r11 ;; addq %r11, 8(%rsi), %r11 ;; cmpq %r11, %r10 -;; jbe label1; j label3 -;; block1: -;; movq 0(%rsi), %rsi -;; movzbq 4096(%rsi,%r10,1), %rax -;; jmp label2 +;; jnbe label1; j label2 ;; block2: +;; movq 0(%rsi), %rdi +;; movzbq 4096(%rdi,%r10,1), %rax +;; jmp label3 +;; block3: ;; movq %rbp, %rsp ;; popq %rbp ;; ret -;; block3: -;; ud2 heap_oob \ No newline at end of file +;; block1: +;; ud2 heap_oob diff --git a/cranelift/filetests/filetests/isa/x64/wasm/load_store_dynamic_kind_i32_index_0xffffffff_guard_no_spectre_i8_access_0xffff0000_offset.wat b/cranelift/filetests/filetests/isa/x64/wasm/load_store_dynamic_kind_i32_index_0xffffffff_guard_no_spectre_i8_access_0xffff0000_offset.wat index fe4b262894..2e0975646c 100644 --- a/cranelift/filetests/filetests/isa/x64/wasm/load_store_dynamic_kind_i32_index_0xffffffff_guard_no_spectre_i8_access_0xffff0000_offset.wat +++ b/cranelift/filetests/filetests/isa/x64/wasm/load_store_dynamic_kind_i32_index_0xffffffff_guard_no_spectre_i8_access_0xffff0000_offset.wat @@ -51,17 +51,17 @@ ;; jnb ; ud2 heap_oob ; ;; movq 8(%rdx), %rax ;; cmpq %rax, %rdi -;; jbe label1; j label3 -;; block1: -;; movq 0(%rdx), %rdi -;; addq %rdi, const(0), %rdi -;; movb %sil, 0(%rdi,%r11,1) -;; jmp label2 +;; jnbe label1; j label2 ;; block2: +;; movq 0(%rdx), %rax +;; addq %rax, const(0), %rax +;; movb %sil, 0(%rax,%r11,1) +;; jmp label3 +;; block3: ;; movq %rbp, %rsp ;; popq %rbp ;; ret -;; block3: +;; block1: ;; ud2 heap_oob ;; ;; function u0:1: @@ -76,15 +76,15 @@ ;; jnb ; ud2 heap_oob ; ;; movq 8(%rsi), %rax ;; cmpq %rax, %rdi -;; jbe label1; j label3 -;; block1: -;; movq 0(%rsi), %rsi -;; addq %rsi, const(0), %rsi -;; movzbq 0(%rsi,%r11,1), %rax -;; jmp label2 +;; jnbe label1; j label2 ;; block2: +;; movq 0(%rsi), %rdi +;; addq %rdi, const(0), %rdi +;; movzbq 0(%rdi,%r11,1), %rax +;; jmp label3 +;; block3: ;; movq %rbp, %rsp ;; popq %rbp ;; ret -;; block3: -;; ud2 heap_oob \ No newline at end of file +;; block1: +;; ud2 heap_oob diff --git a/cranelift/filetests/filetests/isa/x64/wasm/load_store_dynamic_kind_i64_index_0_guard_no_spectre_i32_access_0_offset.wat b/cranelift/filetests/filetests/isa/x64/wasm/load_store_dynamic_kind_i64_index_0_guard_no_spectre_i32_access_0_offset.wat index 6b52c348d0..7ac1b97d6c 100644 --- a/cranelift/filetests/filetests/isa/x64/wasm/load_store_dynamic_kind_i64_index_0_guard_no_spectre_i32_access_0_offset.wat +++ b/cranelift/filetests/filetests/isa/x64/wasm/load_store_dynamic_kind_i64_index_0_guard_no_spectre_i32_access_0_offset.wat @@ -48,16 +48,16 @@ ;; movabsq $-4, %r9 ;; addq %r9, 8(%rdx), %r9 ;; cmpq %r9, %rdi -;; jbe label1; j label3 -;; block1: -;; movq 0(%rdx), %r11 -;; movl %esi, 0(%r11,%rdi,1) -;; jmp label2 +;; jnbe label1; j label2 ;; block2: +;; movq 0(%rdx), %rax +;; movl %esi, 0(%rax,%rdi,1) +;; jmp label3 +;; block3: ;; movq %rbp, %rsp ;; popq %rbp ;; ret -;; block3: +;; block1: ;; ud2 heap_oob ;; ;; function u0:1: @@ -69,14 +69,14 @@ ;; movabsq $-4, %r9 ;; addq %r9, 8(%rsi), %r9 ;; cmpq %r9, %rdi -;; jbe label1; j label3 -;; block1: -;; movq 0(%rsi), %r11 -;; movl 0(%r11,%rdi,1), %eax -;; jmp label2 +;; jnbe label1; j label2 ;; block2: +;; movq 0(%rsi), %rsi +;; movl 0(%rsi,%rdi,1), %eax +;; jmp label3 +;; block3: ;; movq %rbp, %rsp ;; popq %rbp ;; ret -;; block3: -;; ud2 heap_oob \ No newline at end of file +;; block1: +;; ud2 heap_oob diff --git a/cranelift/filetests/filetests/isa/x64/wasm/load_store_dynamic_kind_i64_index_0_guard_no_spectre_i32_access_0x1000_offset.wat b/cranelift/filetests/filetests/isa/x64/wasm/load_store_dynamic_kind_i64_index_0_guard_no_spectre_i32_access_0x1000_offset.wat index ddf835c198..1c29b42c99 100644 --- a/cranelift/filetests/filetests/isa/x64/wasm/load_store_dynamic_kind_i64_index_0_guard_no_spectre_i32_access_0x1000_offset.wat +++ b/cranelift/filetests/filetests/isa/x64/wasm/load_store_dynamic_kind_i64_index_0_guard_no_spectre_i32_access_0x1000_offset.wat @@ -48,16 +48,16 @@ ;; movabsq $-4100, %r9 ;; addq %r9, 8(%rdx), %r9 ;; cmpq %r9, %rdi -;; jbe label1; j label3 -;; block1: -;; movq 0(%rdx), %r11 -;; movl %esi, 4096(%r11,%rdi,1) -;; jmp label2 +;; jnbe label1; j label2 ;; block2: +;; movq 0(%rdx), %rax +;; movl %esi, 4096(%rax,%rdi,1) +;; jmp label3 +;; block3: ;; movq %rbp, %rsp ;; popq %rbp ;; ret -;; block3: +;; block1: ;; ud2 heap_oob ;; ;; function u0:1: @@ -69,14 +69,14 @@ ;; movabsq $-4100, %r9 ;; addq %r9, 8(%rsi), %r9 ;; cmpq %r9, %rdi -;; jbe label1; j label3 -;; block1: -;; movq 0(%rsi), %r11 -;; movl 4096(%r11,%rdi,1), %eax -;; jmp label2 +;; jnbe label1; j label2 ;; block2: +;; movq 0(%rsi), %rsi +;; movl 4096(%rsi,%rdi,1), %eax +;; jmp label3 +;; block3: ;; movq %rbp, %rsp ;; popq %rbp ;; ret -;; block3: -;; ud2 heap_oob \ No newline at end of file +;; block1: +;; ud2 heap_oob diff --git a/cranelift/filetests/filetests/isa/x64/wasm/load_store_dynamic_kind_i64_index_0_guard_no_spectre_i32_access_0xffff0000_offset.wat b/cranelift/filetests/filetests/isa/x64/wasm/load_store_dynamic_kind_i64_index_0_guard_no_spectre_i32_access_0xffff0000_offset.wat index 6bc72abffb..17c9e6cf56 100644 --- a/cranelift/filetests/filetests/isa/x64/wasm/load_store_dynamic_kind_i64_index_0_guard_no_spectre_i32_access_0xffff0000_offset.wat +++ b/cranelift/filetests/filetests/isa/x64/wasm/load_store_dynamic_kind_i64_index_0_guard_no_spectre_i32_access_0xffff0000_offset.wat @@ -50,17 +50,17 @@ ;; jnb ; ud2 heap_oob ; ;; movq 8(%rdx), %r11 ;; cmpq %r11, %r10 -;; jbe label1; j label3 -;; block1: +;; jnbe label1; j label2 +;; block2: ;; movq 0(%rdx), %rax ;; addq %rax, const(0), %rax ;; movl %esi, 0(%rax,%rdi,1) -;; jmp label2 -;; block2: +;; jmp label3 +;; block3: ;; movq %rbp, %rsp ;; popq %rbp ;; ret -;; block3: +;; block1: ;; ud2 heap_oob ;; ;; function u0:1: @@ -74,15 +74,15 @@ ;; jnb ; ud2 heap_oob ; ;; movq 8(%rsi), %r11 ;; cmpq %r11, %r10 -;; jbe label1; j label3 -;; block1: -;; movq 0(%rsi), %r11 -;; addq %r11, const(0), %r11 -;; movl 0(%r11,%rdi,1), %eax -;; jmp label2 +;; jnbe label1; j label2 ;; block2: +;; movq 0(%rsi), %rsi +;; addq %rsi, const(0), %rsi +;; movl 0(%rsi,%rdi,1), %eax +;; jmp label3 +;; block3: ;; movq %rbp, %rsp ;; popq %rbp ;; ret -;; block3: -;; ud2 heap_oob \ No newline at end of file +;; block1: +;; ud2 heap_oob diff --git a/cranelift/filetests/filetests/isa/x64/wasm/load_store_dynamic_kind_i64_index_0_guard_no_spectre_i8_access_0_offset.wat b/cranelift/filetests/filetests/isa/x64/wasm/load_store_dynamic_kind_i64_index_0_guard_no_spectre_i8_access_0_offset.wat index ee6fd6ef4b..6510624563 100644 --- a/cranelift/filetests/filetests/isa/x64/wasm/load_store_dynamic_kind_i64_index_0_guard_no_spectre_i8_access_0_offset.wat +++ b/cranelift/filetests/filetests/isa/x64/wasm/load_store_dynamic_kind_i64_index_0_guard_no_spectre_i8_access_0_offset.wat @@ -47,16 +47,16 @@ ;; block0: ;; movq 8(%rdx), %r8 ;; cmpq %r8, %rdi -;; jb label1; j label3 -;; block1: -;; movq 0(%rdx), %r10 -;; movb %sil, 0(%r10,%rdi,1) -;; jmp label2 +;; jnb label1; j label2 ;; block2: +;; movq 0(%rdx), %r11 +;; movb %sil, 0(%r11,%rdi,1) +;; jmp label3 +;; block3: ;; movq %rbp, %rsp ;; popq %rbp ;; ret -;; block3: +;; block1: ;; ud2 heap_oob ;; ;; function u0:1: @@ -67,14 +67,14 @@ ;; block0: ;; movq 8(%rsi), %r8 ;; cmpq %r8, %rdi -;; jb label1; j label3 -;; block1: -;; movq 0(%rsi), %r10 -;; movzbq 0(%r10,%rdi,1), %rax -;; jmp label2 +;; jnb label1; j label2 ;; block2: +;; movq 0(%rsi), %r11 +;; movzbq 0(%r11,%rdi,1), %rax +;; jmp label3 +;; block3: ;; movq %rbp, %rsp ;; popq %rbp ;; ret -;; block3: -;; ud2 heap_oob \ No newline at end of file +;; block1: +;; ud2 heap_oob diff --git a/cranelift/filetests/filetests/isa/x64/wasm/load_store_dynamic_kind_i64_index_0_guard_no_spectre_i8_access_0x1000_offset.wat b/cranelift/filetests/filetests/isa/x64/wasm/load_store_dynamic_kind_i64_index_0_guard_no_spectre_i8_access_0x1000_offset.wat index 944ffc8459..52b1729928 100644 --- a/cranelift/filetests/filetests/isa/x64/wasm/load_store_dynamic_kind_i64_index_0_guard_no_spectre_i8_access_0x1000_offset.wat +++ b/cranelift/filetests/filetests/isa/x64/wasm/load_store_dynamic_kind_i64_index_0_guard_no_spectre_i8_access_0x1000_offset.wat @@ -48,16 +48,16 @@ ;; movabsq $-4097, %r9 ;; addq %r9, 8(%rdx), %r9 ;; cmpq %r9, %rdi -;; jbe label1; j label3 -;; block1: -;; movq 0(%rdx), %r11 -;; movb %sil, 4096(%r11,%rdi,1) -;; jmp label2 +;; jnbe label1; j label2 ;; block2: +;; movq 0(%rdx), %rax +;; movb %sil, 4096(%rax,%rdi,1) +;; jmp label3 +;; block3: ;; movq %rbp, %rsp ;; popq %rbp ;; ret -;; block3: +;; block1: ;; ud2 heap_oob ;; ;; function u0:1: @@ -69,14 +69,14 @@ ;; movabsq $-4097, %r9 ;; addq %r9, 8(%rsi), %r9 ;; cmpq %r9, %rdi -;; jbe label1; j label3 -;; block1: -;; movq 0(%rsi), %r11 -;; movzbq 4096(%r11,%rdi,1), %rax -;; jmp label2 +;; jnbe label1; j label2 ;; block2: +;; movq 0(%rsi), %rsi +;; movzbq 4096(%rsi,%rdi,1), %rax +;; jmp label3 +;; block3: ;; movq %rbp, %rsp ;; popq %rbp ;; ret -;; block3: -;; ud2 heap_oob \ No newline at end of file +;; block1: +;; ud2 heap_oob diff --git a/cranelift/filetests/filetests/isa/x64/wasm/load_store_dynamic_kind_i64_index_0_guard_no_spectre_i8_access_0xffff0000_offset.wat b/cranelift/filetests/filetests/isa/x64/wasm/load_store_dynamic_kind_i64_index_0_guard_no_spectre_i8_access_0xffff0000_offset.wat index 72295b90f1..8db4775e2e 100644 --- a/cranelift/filetests/filetests/isa/x64/wasm/load_store_dynamic_kind_i64_index_0_guard_no_spectre_i8_access_0xffff0000_offset.wat +++ b/cranelift/filetests/filetests/isa/x64/wasm/load_store_dynamic_kind_i64_index_0_guard_no_spectre_i8_access_0xffff0000_offset.wat @@ -50,17 +50,17 @@ ;; jnb ; ud2 heap_oob ; ;; movq 8(%rdx), %r11 ;; cmpq %r11, %r10 -;; jbe label1; j label3 -;; block1: +;; jnbe label1; j label2 +;; block2: ;; movq 0(%rdx), %rax ;; addq %rax, const(0), %rax ;; movb %sil, 0(%rax,%rdi,1) -;; jmp label2 -;; block2: +;; jmp label3 +;; block3: ;; movq %rbp, %rsp ;; popq %rbp ;; ret -;; block3: +;; block1: ;; ud2 heap_oob ;; ;; function u0:1: @@ -74,15 +74,15 @@ ;; jnb ; ud2 heap_oob ; ;; movq 8(%rsi), %r11 ;; cmpq %r11, %r10 -;; jbe label1; j label3 -;; block1: -;; movq 0(%rsi), %r11 -;; addq %r11, const(0), %r11 -;; movzbq 0(%r11,%rdi,1), %rax -;; jmp label2 +;; jnbe label1; j label2 ;; block2: +;; movq 0(%rsi), %rsi +;; addq %rsi, const(0), %rsi +;; movzbq 0(%rsi,%rdi,1), %rax +;; jmp label3 +;; block3: ;; movq %rbp, %rsp ;; popq %rbp ;; ret -;; block3: -;; ud2 heap_oob \ No newline at end of file +;; block1: +;; ud2 heap_oob diff --git a/cranelift/filetests/filetests/isa/x64/wasm/load_store_dynamic_kind_i64_index_0xffffffff_guard_no_spectre_i32_access_0_offset.wat b/cranelift/filetests/filetests/isa/x64/wasm/load_store_dynamic_kind_i64_index_0xffffffff_guard_no_spectre_i32_access_0_offset.wat index 4694fb7a63..627e102e4b 100644 --- a/cranelift/filetests/filetests/isa/x64/wasm/load_store_dynamic_kind_i64_index_0xffffffff_guard_no_spectre_i32_access_0_offset.wat +++ b/cranelift/filetests/filetests/isa/x64/wasm/load_store_dynamic_kind_i64_index_0xffffffff_guard_no_spectre_i32_access_0_offset.wat @@ -48,16 +48,16 @@ ;; movabsq $-4, %r9 ;; addq %r9, 8(%rdx), %r9 ;; cmpq %r9, %rdi -;; jbe label1; j label3 -;; block1: -;; movq 0(%rdx), %r11 -;; movl %esi, 0(%r11,%rdi,1) -;; jmp label2 +;; jnbe label1; j label2 ;; block2: +;; movq 0(%rdx), %rax +;; movl %esi, 0(%rax,%rdi,1) +;; jmp label3 +;; block3: ;; movq %rbp, %rsp ;; popq %rbp ;; ret -;; block3: +;; block1: ;; ud2 heap_oob ;; ;; function u0:1: @@ -69,14 +69,14 @@ ;; movabsq $-4, %r9 ;; addq %r9, 8(%rsi), %r9 ;; cmpq %r9, %rdi -;; jbe label1; j label3 -;; block1: -;; movq 0(%rsi), %r11 -;; movl 0(%r11,%rdi,1), %eax -;; jmp label2 +;; jnbe label1; j label2 ;; block2: +;; movq 0(%rsi), %rsi +;; movl 0(%rsi,%rdi,1), %eax +;; jmp label3 +;; block3: ;; movq %rbp, %rsp ;; popq %rbp ;; ret -;; block3: -;; ud2 heap_oob \ No newline at end of file +;; block1: +;; ud2 heap_oob diff --git a/cranelift/filetests/filetests/isa/x64/wasm/load_store_dynamic_kind_i64_index_0xffffffff_guard_no_spectre_i32_access_0x1000_offset.wat b/cranelift/filetests/filetests/isa/x64/wasm/load_store_dynamic_kind_i64_index_0xffffffff_guard_no_spectre_i32_access_0x1000_offset.wat index 1fcce759bf..d06d9e2c32 100644 --- a/cranelift/filetests/filetests/isa/x64/wasm/load_store_dynamic_kind_i64_index_0xffffffff_guard_no_spectre_i32_access_0x1000_offset.wat +++ b/cranelift/filetests/filetests/isa/x64/wasm/load_store_dynamic_kind_i64_index_0xffffffff_guard_no_spectre_i32_access_0x1000_offset.wat @@ -48,16 +48,16 @@ ;; movabsq $-4100, %r9 ;; addq %r9, 8(%rdx), %r9 ;; cmpq %r9, %rdi -;; jbe label1; j label3 -;; block1: -;; movq 0(%rdx), %r11 -;; movl %esi, 4096(%r11,%rdi,1) -;; jmp label2 +;; jnbe label1; j label2 ;; block2: +;; movq 0(%rdx), %rax +;; movl %esi, 4096(%rax,%rdi,1) +;; jmp label3 +;; block3: ;; movq %rbp, %rsp ;; popq %rbp ;; ret -;; block3: +;; block1: ;; ud2 heap_oob ;; ;; function u0:1: @@ -69,14 +69,14 @@ ;; movabsq $-4100, %r9 ;; addq %r9, 8(%rsi), %r9 ;; cmpq %r9, %rdi -;; jbe label1; j label3 -;; block1: -;; movq 0(%rsi), %r11 -;; movl 4096(%r11,%rdi,1), %eax -;; jmp label2 +;; jnbe label1; j label2 ;; block2: +;; movq 0(%rsi), %rsi +;; movl 4096(%rsi,%rdi,1), %eax +;; jmp label3 +;; block3: ;; movq %rbp, %rsp ;; popq %rbp ;; ret -;; block3: -;; ud2 heap_oob \ No newline at end of file +;; block1: +;; ud2 heap_oob diff --git a/cranelift/filetests/filetests/isa/x64/wasm/load_store_dynamic_kind_i64_index_0xffffffff_guard_no_spectre_i32_access_0xffff0000_offset.wat b/cranelift/filetests/filetests/isa/x64/wasm/load_store_dynamic_kind_i64_index_0xffffffff_guard_no_spectre_i32_access_0xffff0000_offset.wat index ecfcfcfbe7..c3ee75541c 100644 --- a/cranelift/filetests/filetests/isa/x64/wasm/load_store_dynamic_kind_i64_index_0xffffffff_guard_no_spectre_i32_access_0xffff0000_offset.wat +++ b/cranelift/filetests/filetests/isa/x64/wasm/load_store_dynamic_kind_i64_index_0xffffffff_guard_no_spectre_i32_access_0xffff0000_offset.wat @@ -50,17 +50,17 @@ ;; jnb ; ud2 heap_oob ; ;; movq 8(%rdx), %r11 ;; cmpq %r11, %r10 -;; jbe label1; j label3 -;; block1: +;; jnbe label1; j label2 +;; block2: ;; movq 0(%rdx), %rax ;; addq %rax, const(0), %rax ;; movl %esi, 0(%rax,%rdi,1) -;; jmp label2 -;; block2: +;; jmp label3 +;; block3: ;; movq %rbp, %rsp ;; popq %rbp ;; ret -;; block3: +;; block1: ;; ud2 heap_oob ;; ;; function u0:1: @@ -74,15 +74,15 @@ ;; jnb ; ud2 heap_oob ; ;; movq 8(%rsi), %r11 ;; cmpq %r11, %r10 -;; jbe label1; j label3 -;; block1: -;; movq 0(%rsi), %r11 -;; addq %r11, const(0), %r11 -;; movl 0(%r11,%rdi,1), %eax -;; jmp label2 +;; jnbe label1; j label2 ;; block2: +;; movq 0(%rsi), %rsi +;; addq %rsi, const(0), %rsi +;; movl 0(%rsi,%rdi,1), %eax +;; jmp label3 +;; block3: ;; movq %rbp, %rsp ;; popq %rbp ;; ret -;; block3: -;; ud2 heap_oob \ No newline at end of file +;; block1: +;; ud2 heap_oob diff --git a/cranelift/filetests/filetests/isa/x64/wasm/load_store_dynamic_kind_i64_index_0xffffffff_guard_no_spectre_i8_access_0_offset.wat b/cranelift/filetests/filetests/isa/x64/wasm/load_store_dynamic_kind_i64_index_0xffffffff_guard_no_spectre_i8_access_0_offset.wat index 76e2fa5c4d..fef867a8a9 100644 --- a/cranelift/filetests/filetests/isa/x64/wasm/load_store_dynamic_kind_i64_index_0xffffffff_guard_no_spectre_i8_access_0_offset.wat +++ b/cranelift/filetests/filetests/isa/x64/wasm/load_store_dynamic_kind_i64_index_0xffffffff_guard_no_spectre_i8_access_0_offset.wat @@ -47,16 +47,16 @@ ;; block0: ;; movq 8(%rdx), %r8 ;; cmpq %r8, %rdi -;; jb label1; j label3 -;; block1: -;; movq 0(%rdx), %r10 -;; movb %sil, 0(%r10,%rdi,1) -;; jmp label2 +;; jnb label1; j label2 ;; block2: +;; movq 0(%rdx), %r11 +;; movb %sil, 0(%r11,%rdi,1) +;; jmp label3 +;; block3: ;; movq %rbp, %rsp ;; popq %rbp ;; ret -;; block3: +;; block1: ;; ud2 heap_oob ;; ;; function u0:1: @@ -67,14 +67,14 @@ ;; block0: ;; movq 8(%rsi), %r8 ;; cmpq %r8, %rdi -;; jb label1; j label3 -;; block1: -;; movq 0(%rsi), %r10 -;; movzbq 0(%r10,%rdi,1), %rax -;; jmp label2 +;; jnb label1; j label2 ;; block2: +;; movq 0(%rsi), %r11 +;; movzbq 0(%r11,%rdi,1), %rax +;; jmp label3 +;; block3: ;; movq %rbp, %rsp ;; popq %rbp ;; ret -;; block3: -;; ud2 heap_oob \ No newline at end of file +;; block1: +;; ud2 heap_oob diff --git a/cranelift/filetests/filetests/isa/x64/wasm/load_store_dynamic_kind_i64_index_0xffffffff_guard_no_spectre_i8_access_0x1000_offset.wat b/cranelift/filetests/filetests/isa/x64/wasm/load_store_dynamic_kind_i64_index_0xffffffff_guard_no_spectre_i8_access_0x1000_offset.wat index c3c7ce729b..694b6a8013 100644 --- a/cranelift/filetests/filetests/isa/x64/wasm/load_store_dynamic_kind_i64_index_0xffffffff_guard_no_spectre_i8_access_0x1000_offset.wat +++ b/cranelift/filetests/filetests/isa/x64/wasm/load_store_dynamic_kind_i64_index_0xffffffff_guard_no_spectre_i8_access_0x1000_offset.wat @@ -48,16 +48,16 @@ ;; movabsq $-4097, %r9 ;; addq %r9, 8(%rdx), %r9 ;; cmpq %r9, %rdi -;; jbe label1; j label3 -;; block1: -;; movq 0(%rdx), %r11 -;; movb %sil, 4096(%r11,%rdi,1) -;; jmp label2 +;; jnbe label1; j label2 ;; block2: +;; movq 0(%rdx), %rax +;; movb %sil, 4096(%rax,%rdi,1) +;; jmp label3 +;; block3: ;; movq %rbp, %rsp ;; popq %rbp ;; ret -;; block3: +;; block1: ;; ud2 heap_oob ;; ;; function u0:1: @@ -69,14 +69,14 @@ ;; movabsq $-4097, %r9 ;; addq %r9, 8(%rsi), %r9 ;; cmpq %r9, %rdi -;; jbe label1; j label3 -;; block1: -;; movq 0(%rsi), %r11 -;; movzbq 4096(%r11,%rdi,1), %rax -;; jmp label2 +;; jnbe label1; j label2 ;; block2: +;; movq 0(%rsi), %rsi +;; movzbq 4096(%rsi,%rdi,1), %rax +;; jmp label3 +;; block3: ;; movq %rbp, %rsp ;; popq %rbp ;; ret -;; block3: -;; ud2 heap_oob \ No newline at end of file +;; block1: +;; ud2 heap_oob diff --git a/cranelift/filetests/filetests/isa/x64/wasm/load_store_dynamic_kind_i64_index_0xffffffff_guard_no_spectre_i8_access_0xffff0000_offset.wat b/cranelift/filetests/filetests/isa/x64/wasm/load_store_dynamic_kind_i64_index_0xffffffff_guard_no_spectre_i8_access_0xffff0000_offset.wat index ac025ee3d0..8fbbb2f721 100644 --- a/cranelift/filetests/filetests/isa/x64/wasm/load_store_dynamic_kind_i64_index_0xffffffff_guard_no_spectre_i8_access_0xffff0000_offset.wat +++ b/cranelift/filetests/filetests/isa/x64/wasm/load_store_dynamic_kind_i64_index_0xffffffff_guard_no_spectre_i8_access_0xffff0000_offset.wat @@ -50,17 +50,17 @@ ;; jnb ; ud2 heap_oob ; ;; movq 8(%rdx), %r11 ;; cmpq %r11, %r10 -;; jbe label1; j label3 -;; block1: +;; jnbe label1; j label2 +;; block2: ;; movq 0(%rdx), %rax ;; addq %rax, const(0), %rax ;; movb %sil, 0(%rax,%rdi,1) -;; jmp label2 -;; block2: +;; jmp label3 +;; block3: ;; movq %rbp, %rsp ;; popq %rbp ;; ret -;; block3: +;; block1: ;; ud2 heap_oob ;; ;; function u0:1: @@ -74,15 +74,15 @@ ;; jnb ; ud2 heap_oob ; ;; movq 8(%rsi), %r11 ;; cmpq %r11, %r10 -;; jbe label1; j label3 -;; block1: -;; movq 0(%rsi), %r11 -;; addq %r11, const(0), %r11 -;; movzbq 0(%r11,%rdi,1), %rax -;; jmp label2 +;; jnbe label1; j label2 ;; block2: +;; movq 0(%rsi), %rsi +;; addq %rsi, const(0), %rsi +;; movzbq 0(%rsi,%rdi,1), %rax +;; jmp label3 +;; block3: ;; movq %rbp, %rsp ;; popq %rbp ;; ret -;; block3: -;; ud2 heap_oob \ No newline at end of file +;; block1: +;; ud2 heap_oob diff --git a/cranelift/filetests/filetests/isa/x64/wasm/load_store_static_kind_i32_index_0_guard_no_spectre_i32_access_0_offset.wat b/cranelift/filetests/filetests/isa/x64/wasm/load_store_static_kind_i32_index_0_guard_no_spectre_i32_access_0_offset.wat index 4d8188f659..02fb043437 100644 --- a/cranelift/filetests/filetests/isa/x64/wasm/load_store_static_kind_i32_index_0_guard_no_spectre_i32_access_0_offset.wat +++ b/cranelift/filetests/filetests/isa/x64/wasm/load_store_static_kind_i32_index_0_guard_no_spectre_i32_access_0_offset.wat @@ -45,16 +45,16 @@ ;; block0: ;; movl %edi, %r8d ;; cmpq $268435452, %r8 -;; jbe label1; j label3 -;; block1: -;; movq 0(%rdx), %r10 -;; movl %esi, 0(%r10,%r8,1) -;; jmp label2 +;; jnbe label1; j label2 ;; block2: +;; movq 0(%rdx), %r11 +;; movl %esi, 0(%r11,%r8,1) +;; jmp label3 +;; block3: ;; movq %rbp, %rsp ;; popq %rbp ;; ret -;; block3: +;; block1: ;; ud2 heap_oob ;; ;; function u0:1: @@ -65,14 +65,14 @@ ;; block0: ;; movl %edi, %r8d ;; cmpq $268435452, %r8 -;; jbe label1; j label3 -;; block1: -;; movq 0(%rsi), %r10 -;; movl 0(%r10,%r8,1), %eax -;; jmp label2 +;; jnbe label1; j label2 ;; block2: +;; movq 0(%rsi), %r11 +;; movl 0(%r11,%r8,1), %eax +;; jmp label3 +;; block3: ;; movq %rbp, %rsp ;; popq %rbp ;; ret -;; block3: -;; ud2 heap_oob \ No newline at end of file +;; block1: +;; ud2 heap_oob diff --git a/cranelift/filetests/filetests/isa/x64/wasm/load_store_static_kind_i32_index_0_guard_no_spectre_i32_access_0x1000_offset.wat b/cranelift/filetests/filetests/isa/x64/wasm/load_store_static_kind_i32_index_0_guard_no_spectre_i32_access_0x1000_offset.wat index 6318fe1333..f05e461346 100644 --- a/cranelift/filetests/filetests/isa/x64/wasm/load_store_static_kind_i32_index_0_guard_no_spectre_i32_access_0x1000_offset.wat +++ b/cranelift/filetests/filetests/isa/x64/wasm/load_store_static_kind_i32_index_0_guard_no_spectre_i32_access_0x1000_offset.wat @@ -45,16 +45,16 @@ ;; block0: ;; movl %edi, %r8d ;; cmpq $268431356, %r8 -;; jbe label1; j label3 -;; block1: -;; movq 0(%rdx), %r10 -;; movl %esi, 4096(%r10,%r8,1) -;; jmp label2 +;; jnbe label1; j label2 ;; block2: +;; movq 0(%rdx), %r11 +;; movl %esi, 4096(%r11,%r8,1) +;; jmp label3 +;; block3: ;; movq %rbp, %rsp ;; popq %rbp ;; ret -;; block3: +;; block1: ;; ud2 heap_oob ;; ;; function u0:1: @@ -65,14 +65,14 @@ ;; block0: ;; movl %edi, %r8d ;; cmpq $268431356, %r8 -;; jbe label1; j label3 -;; block1: -;; movq 0(%rsi), %r10 -;; movl 4096(%r10,%r8,1), %eax -;; jmp label2 +;; jnbe label1; j label2 ;; block2: +;; movq 0(%rsi), %r11 +;; movl 4096(%r11,%r8,1), %eax +;; jmp label3 +;; block3: ;; movq %rbp, %rsp ;; popq %rbp ;; ret -;; block3: -;; ud2 heap_oob \ No newline at end of file +;; block1: +;; ud2 heap_oob diff --git a/cranelift/filetests/filetests/isa/x64/wasm/load_store_static_kind_i32_index_0_guard_no_spectre_i8_access_0_offset.wat b/cranelift/filetests/filetests/isa/x64/wasm/load_store_static_kind_i32_index_0_guard_no_spectre_i8_access_0_offset.wat index 485c4a62b2..d50fa2c676 100644 --- a/cranelift/filetests/filetests/isa/x64/wasm/load_store_static_kind_i32_index_0_guard_no_spectre_i8_access_0_offset.wat +++ b/cranelift/filetests/filetests/isa/x64/wasm/load_store_static_kind_i32_index_0_guard_no_spectre_i8_access_0_offset.wat @@ -45,16 +45,16 @@ ;; block0: ;; movl %edi, %r8d ;; cmpq $268435455, %r8 -;; jbe label1; j label3 -;; block1: -;; movq 0(%rdx), %r10 -;; movb %sil, 0(%r10,%r8,1) -;; jmp label2 +;; jnbe label1; j label2 ;; block2: +;; movq 0(%rdx), %r11 +;; movb %sil, 0(%r11,%r8,1) +;; jmp label3 +;; block3: ;; movq %rbp, %rsp ;; popq %rbp ;; ret -;; block3: +;; block1: ;; ud2 heap_oob ;; ;; function u0:1: @@ -65,14 +65,14 @@ ;; block0: ;; movl %edi, %r8d ;; cmpq $268435455, %r8 -;; jbe label1; j label3 -;; block1: -;; movq 0(%rsi), %r10 -;; movzbq 0(%r10,%r8,1), %rax -;; jmp label2 +;; jnbe label1; j label2 ;; block2: +;; movq 0(%rsi), %r11 +;; movzbq 0(%r11,%r8,1), %rax +;; jmp label3 +;; block3: ;; movq %rbp, %rsp ;; popq %rbp ;; ret -;; block3: -;; ud2 heap_oob \ No newline at end of file +;; block1: +;; ud2 heap_oob diff --git a/cranelift/filetests/filetests/isa/x64/wasm/load_store_static_kind_i32_index_0_guard_no_spectre_i8_access_0x1000_offset.wat b/cranelift/filetests/filetests/isa/x64/wasm/load_store_static_kind_i32_index_0_guard_no_spectre_i8_access_0x1000_offset.wat index 8bd5424d93..2f80781773 100644 --- a/cranelift/filetests/filetests/isa/x64/wasm/load_store_static_kind_i32_index_0_guard_no_spectre_i8_access_0x1000_offset.wat +++ b/cranelift/filetests/filetests/isa/x64/wasm/load_store_static_kind_i32_index_0_guard_no_spectre_i8_access_0x1000_offset.wat @@ -45,16 +45,16 @@ ;; block0: ;; movl %edi, %r8d ;; cmpq $268431359, %r8 -;; jbe label1; j label3 -;; block1: -;; movq 0(%rdx), %r10 -;; movb %sil, 4096(%r10,%r8,1) -;; jmp label2 +;; jnbe label1; j label2 ;; block2: +;; movq 0(%rdx), %r11 +;; movb %sil, 4096(%r11,%r8,1) +;; jmp label3 +;; block3: ;; movq %rbp, %rsp ;; popq %rbp ;; ret -;; block3: +;; block1: ;; ud2 heap_oob ;; ;; function u0:1: @@ -65,14 +65,14 @@ ;; block0: ;; movl %edi, %r8d ;; cmpq $268431359, %r8 -;; jbe label1; j label3 -;; block1: -;; movq 0(%rsi), %r10 -;; movzbq 4096(%r10,%r8,1), %rax -;; jmp label2 +;; jnbe label1; j label2 ;; block2: +;; movq 0(%rsi), %r11 +;; movzbq 4096(%r11,%r8,1), %rax +;; jmp label3 +;; block3: ;; movq %rbp, %rsp ;; popq %rbp ;; ret -;; block3: -;; ud2 heap_oob \ No newline at end of file +;; block1: +;; ud2 heap_oob diff --git a/cranelift/filetests/filetests/isa/x64/wasm/load_store_static_kind_i64_index_0_guard_no_spectre_i32_access_0_offset.wat b/cranelift/filetests/filetests/isa/x64/wasm/load_store_static_kind_i64_index_0_guard_no_spectre_i32_access_0_offset.wat index 4e113ab943..3fd1907127 100644 --- a/cranelift/filetests/filetests/isa/x64/wasm/load_store_static_kind_i64_index_0_guard_no_spectre_i32_access_0_offset.wat +++ b/cranelift/filetests/filetests/isa/x64/wasm/load_store_static_kind_i64_index_0_guard_no_spectre_i32_access_0_offset.wat @@ -44,16 +44,16 @@ ;; unwind DefineNewFrame { offset_upward_to_caller_sp: 16, offset_downward_to_clobbers: 0 } ;; block0: ;; cmpq $268435452, %rdi -;; jbe label1; j label3 -;; block1: -;; movq 0(%rdx), %r9 -;; movl %esi, 0(%r9,%rdi,1) -;; jmp label2 +;; jnbe label1; j label2 ;; block2: +;; movq 0(%rdx), %r10 +;; movl %esi, 0(%r10,%rdi,1) +;; jmp label3 +;; block3: ;; movq %rbp, %rsp ;; popq %rbp ;; ret -;; block3: +;; block1: ;; ud2 heap_oob ;; ;; function u0:1: @@ -63,14 +63,14 @@ ;; unwind DefineNewFrame { offset_upward_to_caller_sp: 16, offset_downward_to_clobbers: 0 } ;; block0: ;; cmpq $268435452, %rdi -;; jbe label1; j label3 -;; block1: -;; movq 0(%rsi), %r9 -;; movl 0(%r9,%rdi,1), %eax -;; jmp label2 +;; jnbe label1; j label2 ;; block2: +;; movq 0(%rsi), %r10 +;; movl 0(%r10,%rdi,1), %eax +;; jmp label3 +;; block3: ;; movq %rbp, %rsp ;; popq %rbp ;; ret -;; block3: -;; ud2 heap_oob \ No newline at end of file +;; block1: +;; ud2 heap_oob diff --git a/cranelift/filetests/filetests/isa/x64/wasm/load_store_static_kind_i64_index_0_guard_no_spectre_i32_access_0x1000_offset.wat b/cranelift/filetests/filetests/isa/x64/wasm/load_store_static_kind_i64_index_0_guard_no_spectre_i32_access_0x1000_offset.wat index 2f10cc0275..82e5c0514d 100644 --- a/cranelift/filetests/filetests/isa/x64/wasm/load_store_static_kind_i64_index_0_guard_no_spectre_i32_access_0x1000_offset.wat +++ b/cranelift/filetests/filetests/isa/x64/wasm/load_store_static_kind_i64_index_0_guard_no_spectre_i32_access_0x1000_offset.wat @@ -44,16 +44,16 @@ ;; unwind DefineNewFrame { offset_upward_to_caller_sp: 16, offset_downward_to_clobbers: 0 } ;; block0: ;; cmpq $268431356, %rdi -;; jbe label1; j label3 -;; block1: -;; movq 0(%rdx), %r9 -;; movl %esi, 4096(%r9,%rdi,1) -;; jmp label2 +;; jnbe label1; j label2 ;; block2: +;; movq 0(%rdx), %r10 +;; movl %esi, 4096(%r10,%rdi,1) +;; jmp label3 +;; block3: ;; movq %rbp, %rsp ;; popq %rbp ;; ret -;; block3: +;; block1: ;; ud2 heap_oob ;; ;; function u0:1: @@ -63,14 +63,14 @@ ;; unwind DefineNewFrame { offset_upward_to_caller_sp: 16, offset_downward_to_clobbers: 0 } ;; block0: ;; cmpq $268431356, %rdi -;; jbe label1; j label3 -;; block1: -;; movq 0(%rsi), %r9 -;; movl 4096(%r9,%rdi,1), %eax -;; jmp label2 +;; jnbe label1; j label2 ;; block2: +;; movq 0(%rsi), %r10 +;; movl 4096(%r10,%rdi,1), %eax +;; jmp label3 +;; block3: ;; movq %rbp, %rsp ;; popq %rbp ;; ret -;; block3: -;; ud2 heap_oob \ No newline at end of file +;; block1: +;; ud2 heap_oob diff --git a/cranelift/filetests/filetests/isa/x64/wasm/load_store_static_kind_i64_index_0_guard_no_spectre_i8_access_0_offset.wat b/cranelift/filetests/filetests/isa/x64/wasm/load_store_static_kind_i64_index_0_guard_no_spectre_i8_access_0_offset.wat index bb80b06f8f..2004f5a52d 100644 --- a/cranelift/filetests/filetests/isa/x64/wasm/load_store_static_kind_i64_index_0_guard_no_spectre_i8_access_0_offset.wat +++ b/cranelift/filetests/filetests/isa/x64/wasm/load_store_static_kind_i64_index_0_guard_no_spectre_i8_access_0_offset.wat @@ -44,16 +44,16 @@ ;; unwind DefineNewFrame { offset_upward_to_caller_sp: 16, offset_downward_to_clobbers: 0 } ;; block0: ;; cmpq $268435455, %rdi -;; jbe label1; j label3 -;; block1: -;; movq 0(%rdx), %r9 -;; movb %sil, 0(%r9,%rdi,1) -;; jmp label2 +;; jnbe label1; j label2 ;; block2: +;; movq 0(%rdx), %r10 +;; movb %sil, 0(%r10,%rdi,1) +;; jmp label3 +;; block3: ;; movq %rbp, %rsp ;; popq %rbp ;; ret -;; block3: +;; block1: ;; ud2 heap_oob ;; ;; function u0:1: @@ -63,14 +63,14 @@ ;; unwind DefineNewFrame { offset_upward_to_caller_sp: 16, offset_downward_to_clobbers: 0 } ;; block0: ;; cmpq $268435455, %rdi -;; jbe label1; j label3 -;; block1: -;; movq 0(%rsi), %r9 -;; movzbq 0(%r9,%rdi,1), %rax -;; jmp label2 +;; jnbe label1; j label2 ;; block2: +;; movq 0(%rsi), %r10 +;; movzbq 0(%r10,%rdi,1), %rax +;; jmp label3 +;; block3: ;; movq %rbp, %rsp ;; popq %rbp ;; ret -;; block3: -;; ud2 heap_oob \ No newline at end of file +;; block1: +;; ud2 heap_oob diff --git a/cranelift/filetests/filetests/isa/x64/wasm/load_store_static_kind_i64_index_0_guard_no_spectre_i8_access_0x1000_offset.wat b/cranelift/filetests/filetests/isa/x64/wasm/load_store_static_kind_i64_index_0_guard_no_spectre_i8_access_0x1000_offset.wat index 00faf7898c..741e92e34f 100644 --- a/cranelift/filetests/filetests/isa/x64/wasm/load_store_static_kind_i64_index_0_guard_no_spectre_i8_access_0x1000_offset.wat +++ b/cranelift/filetests/filetests/isa/x64/wasm/load_store_static_kind_i64_index_0_guard_no_spectre_i8_access_0x1000_offset.wat @@ -44,16 +44,16 @@ ;; unwind DefineNewFrame { offset_upward_to_caller_sp: 16, offset_downward_to_clobbers: 0 } ;; block0: ;; cmpq $268431359, %rdi -;; jbe label1; j label3 -;; block1: -;; movq 0(%rdx), %r9 -;; movb %sil, 4096(%r9,%rdi,1) -;; jmp label2 +;; jnbe label1; j label2 ;; block2: +;; movq 0(%rdx), %r10 +;; movb %sil, 4096(%r10,%rdi,1) +;; jmp label3 +;; block3: ;; movq %rbp, %rsp ;; popq %rbp ;; ret -;; block3: +;; block1: ;; ud2 heap_oob ;; ;; function u0:1: @@ -63,14 +63,14 @@ ;; unwind DefineNewFrame { offset_upward_to_caller_sp: 16, offset_downward_to_clobbers: 0 } ;; block0: ;; cmpq $268431359, %rdi -;; jbe label1; j label3 -;; block1: -;; movq 0(%rsi), %r9 -;; movzbq 4096(%r9,%rdi,1), %rax -;; jmp label2 +;; jnbe label1; j label2 ;; block2: +;; movq 0(%rsi), %r10 +;; movzbq 4096(%r10,%rdi,1), %rax +;; jmp label3 +;; block3: ;; movq %rbp, %rsp ;; popq %rbp ;; ret -;; block3: -;; ud2 heap_oob \ No newline at end of file +;; block1: +;; ud2 heap_oob diff --git a/cranelift/filetests/filetests/isa/x64/wasm/load_store_static_kind_i64_index_0xffffffff_guard_no_spectre_i32_access_0_offset.wat b/cranelift/filetests/filetests/isa/x64/wasm/load_store_static_kind_i64_index_0xffffffff_guard_no_spectre_i32_access_0_offset.wat index 58e75c5b6f..495e571a57 100644 --- a/cranelift/filetests/filetests/isa/x64/wasm/load_store_static_kind_i64_index_0xffffffff_guard_no_spectre_i32_access_0_offset.wat +++ b/cranelift/filetests/filetests/isa/x64/wasm/load_store_static_kind_i64_index_0xffffffff_guard_no_spectre_i32_access_0_offset.wat @@ -44,16 +44,16 @@ ;; unwind DefineNewFrame { offset_upward_to_caller_sp: 16, offset_downward_to_clobbers: 0 } ;; block0: ;; cmpq $268435452, %rdi -;; jbe label1; j label3 -;; block1: -;; movq 0(%rdx), %r9 -;; movl %esi, 0(%r9,%rdi,1) -;; jmp label2 +;; jnbe label1; j label2 ;; block2: +;; movq 0(%rdx), %r10 +;; movl %esi, 0(%r10,%rdi,1) +;; jmp label3 +;; block3: ;; movq %rbp, %rsp ;; popq %rbp ;; ret -;; block3: +;; block1: ;; ud2 heap_oob ;; ;; function u0:1: @@ -63,14 +63,14 @@ ;; unwind DefineNewFrame { offset_upward_to_caller_sp: 16, offset_downward_to_clobbers: 0 } ;; block0: ;; cmpq $268435452, %rdi -;; jbe label1; j label3 -;; block1: -;; movq 0(%rsi), %r9 -;; movl 0(%r9,%rdi,1), %eax -;; jmp label2 +;; jnbe label1; j label2 ;; block2: +;; movq 0(%rsi), %r10 +;; movl 0(%r10,%rdi,1), %eax +;; jmp label3 +;; block3: ;; movq %rbp, %rsp ;; popq %rbp ;; ret -;; block3: -;; ud2 heap_oob \ No newline at end of file +;; block1: +;; ud2 heap_oob diff --git a/cranelift/filetests/filetests/isa/x64/wasm/load_store_static_kind_i64_index_0xffffffff_guard_no_spectre_i32_access_0x1000_offset.wat b/cranelift/filetests/filetests/isa/x64/wasm/load_store_static_kind_i64_index_0xffffffff_guard_no_spectre_i32_access_0x1000_offset.wat index 03ae09f05c..4613cdbba8 100644 --- a/cranelift/filetests/filetests/isa/x64/wasm/load_store_static_kind_i64_index_0xffffffff_guard_no_spectre_i32_access_0x1000_offset.wat +++ b/cranelift/filetests/filetests/isa/x64/wasm/load_store_static_kind_i64_index_0xffffffff_guard_no_spectre_i32_access_0x1000_offset.wat @@ -44,16 +44,16 @@ ;; unwind DefineNewFrame { offset_upward_to_caller_sp: 16, offset_downward_to_clobbers: 0 } ;; block0: ;; cmpq $268431356, %rdi -;; jbe label1; j label3 -;; block1: -;; movq 0(%rdx), %r9 -;; movl %esi, 4096(%r9,%rdi,1) -;; jmp label2 +;; jnbe label1; j label2 ;; block2: +;; movq 0(%rdx), %r10 +;; movl %esi, 4096(%r10,%rdi,1) +;; jmp label3 +;; block3: ;; movq %rbp, %rsp ;; popq %rbp ;; ret -;; block3: +;; block1: ;; ud2 heap_oob ;; ;; function u0:1: @@ -63,14 +63,14 @@ ;; unwind DefineNewFrame { offset_upward_to_caller_sp: 16, offset_downward_to_clobbers: 0 } ;; block0: ;; cmpq $268431356, %rdi -;; jbe label1; j label3 -;; block1: -;; movq 0(%rsi), %r9 -;; movl 4096(%r9,%rdi,1), %eax -;; jmp label2 +;; jnbe label1; j label2 ;; block2: +;; movq 0(%rsi), %r10 +;; movl 4096(%r10,%rdi,1), %eax +;; jmp label3 +;; block3: ;; movq %rbp, %rsp ;; popq %rbp ;; ret -;; block3: -;; ud2 heap_oob \ No newline at end of file +;; block1: +;; ud2 heap_oob diff --git a/cranelift/filetests/filetests/isa/x64/wasm/load_store_static_kind_i64_index_0xffffffff_guard_no_spectre_i8_access_0_offset.wat b/cranelift/filetests/filetests/isa/x64/wasm/load_store_static_kind_i64_index_0xffffffff_guard_no_spectre_i8_access_0_offset.wat index c3be251955..5319f496b4 100644 --- a/cranelift/filetests/filetests/isa/x64/wasm/load_store_static_kind_i64_index_0xffffffff_guard_no_spectre_i8_access_0_offset.wat +++ b/cranelift/filetests/filetests/isa/x64/wasm/load_store_static_kind_i64_index_0xffffffff_guard_no_spectre_i8_access_0_offset.wat @@ -44,16 +44,16 @@ ;; unwind DefineNewFrame { offset_upward_to_caller_sp: 16, offset_downward_to_clobbers: 0 } ;; block0: ;; cmpq $268435455, %rdi -;; jbe label1; j label3 -;; block1: -;; movq 0(%rdx), %r9 -;; movb %sil, 0(%r9,%rdi,1) -;; jmp label2 +;; jnbe label1; j label2 ;; block2: +;; movq 0(%rdx), %r10 +;; movb %sil, 0(%r10,%rdi,1) +;; jmp label3 +;; block3: ;; movq %rbp, %rsp ;; popq %rbp ;; ret -;; block3: +;; block1: ;; ud2 heap_oob ;; ;; function u0:1: @@ -63,14 +63,14 @@ ;; unwind DefineNewFrame { offset_upward_to_caller_sp: 16, offset_downward_to_clobbers: 0 } ;; block0: ;; cmpq $268435455, %rdi -;; jbe label1; j label3 -;; block1: -;; movq 0(%rsi), %r9 -;; movzbq 0(%r9,%rdi,1), %rax -;; jmp label2 +;; jnbe label1; j label2 ;; block2: +;; movq 0(%rsi), %r10 +;; movzbq 0(%r10,%rdi,1), %rax +;; jmp label3 +;; block3: ;; movq %rbp, %rsp ;; popq %rbp ;; ret -;; block3: -;; ud2 heap_oob \ No newline at end of file +;; block1: +;; ud2 heap_oob diff --git a/cranelift/filetests/filetests/isa/x64/wasm/load_store_static_kind_i64_index_0xffffffff_guard_no_spectre_i8_access_0x1000_offset.wat b/cranelift/filetests/filetests/isa/x64/wasm/load_store_static_kind_i64_index_0xffffffff_guard_no_spectre_i8_access_0x1000_offset.wat index 297179a0ff..1587f9932a 100644 --- a/cranelift/filetests/filetests/isa/x64/wasm/load_store_static_kind_i64_index_0xffffffff_guard_no_spectre_i8_access_0x1000_offset.wat +++ b/cranelift/filetests/filetests/isa/x64/wasm/load_store_static_kind_i64_index_0xffffffff_guard_no_spectre_i8_access_0x1000_offset.wat @@ -44,16 +44,16 @@ ;; unwind DefineNewFrame { offset_upward_to_caller_sp: 16, offset_downward_to_clobbers: 0 } ;; block0: ;; cmpq $268431359, %rdi -;; jbe label1; j label3 -;; block1: -;; movq 0(%rdx), %r9 -;; movb %sil, 4096(%r9,%rdi,1) -;; jmp label2 +;; jnbe label1; j label2 ;; block2: +;; movq 0(%rdx), %r10 +;; movb %sil, 4096(%r10,%rdi,1) +;; jmp label3 +;; block3: ;; movq %rbp, %rsp ;; popq %rbp ;; ret -;; block3: +;; block1: ;; ud2 heap_oob ;; ;; function u0:1: @@ -63,14 +63,14 @@ ;; unwind DefineNewFrame { offset_upward_to_caller_sp: 16, offset_downward_to_clobbers: 0 } ;; block0: ;; cmpq $268431359, %rdi -;; jbe label1; j label3 -;; block1: -;; movq 0(%rsi), %r9 -;; movzbq 4096(%r9,%rdi,1), %rax -;; jmp label2 +;; jnbe label1; j label2 ;; block2: +;; movq 0(%rsi), %r10 +;; movzbq 4096(%r10,%rdi,1), %rax +;; jmp label3 +;; block3: ;; movq %rbp, %rsp ;; popq %rbp ;; ret -;; block3: -;; ud2 heap_oob \ No newline at end of file +;; block1: +;; ud2 heap_oob diff --git a/cranelift/filetests/filetests/legalizer/conditional-traps.clif b/cranelift/filetests/filetests/legalizer/conditional-traps.clif index e4440efd32..d211d839a6 100644 --- a/cranelift/filetests/filetests/legalizer/conditional-traps.clif +++ b/cranelift/filetests/filetests/legalizer/conditional-traps.clif @@ -13,8 +13,7 @@ block0(v0: i32): } ; check: block0(v0: i32): -; nextln: brz v0, block2 -; nextln: jump block1 +; nextln: brif v0, block1, block2 ; nextln: ; nextln: block1 cold: ; nextln: trap heap_oob @@ -29,8 +28,7 @@ block0(v0: i32): } ; check: block0(v0: i32): -; nextln: brnz v0, block2 -; nextln: jump block1 +; nextln: brif v0, block2, block1 ; nextln: ; nextln: block1 cold: ; nextln: trap heap_oob diff --git a/cranelift/filetests/filetests/legalizer/isplit-bb.clif b/cranelift/filetests/filetests/legalizer/isplit-bb.clif index 38b0755c00..5cc92f9681 100644 --- a/cranelift/filetests/filetests/legalizer/isplit-bb.clif +++ b/cranelift/filetests/filetests/legalizer/isplit-bb.clif @@ -14,8 +14,7 @@ block1: block79: v425 = iconst.i64 0 v426 = icmp_imm eq v425, 1 - brnz v426, block80 - jump block85(v20, v17) + brif v426, block80, block85(v20, v17) block80: trap user0 diff --git a/cranelift/filetests/filetests/licm/basic.clif b/cranelift/filetests/filetests/licm/basic.clif index b089d0b182..60f2f3c2ea 100644 --- a/cranelift/filetests/filetests/licm/basic.clif +++ b/cranelift/filetests/filetests/licm/basic.clif @@ -10,8 +10,7 @@ block1(v1: i32): v2 = iconst.i32 1 v3 = iconst.i32 2 v4 = iadd v2, v3 - brz v1, block3(v1) - jump block2 + brif v1, block2, block3(v1) block2: v5 = isub v1, v2 @@ -29,8 +28,7 @@ block3(v6: i32): ; nextln: jump block1(v0) ; nextln: ; nextln: block1(v1: i32): -; nextln: brz v1, block3(v1) -; nextln: jump block2 +; nextln: brif v1, block2, block3(v1) ; nextln: ; nextln: block2: ; nextln: v5 = isub.i32 v1, v2 diff --git a/cranelift/filetests/filetests/licm/complex.clif b/cranelift/filetests/filetests/licm/complex.clif index ab9c905e39..31efa820ae 100644 --- a/cranelift/filetests/filetests/licm/complex.clif +++ b/cranelift/filetests/filetests/licm/complex.clif @@ -9,8 +9,7 @@ block0(v0: i32): v2 = iconst.i32 1 v3 = iconst.i32 4 v4 = iadd v2, v1 -[SBzero#18] brz v1, block2(v2) -[UJ#1b] jump block4(v4) +[SBzero#18] brif v1, block4(v4), block2(v2) block2(v5: i32): v6 = iconst.i32 2 @@ -21,8 +20,7 @@ block0(v0: i32): block3(v9: i32): v10 = iadd v9, v5 v11 = iadd.i32 v1, v4 -[SBzero#18] brz.i32 v1, block2(v9) -[UJ#1b] jump block6(v10) +[SBzero#18] brif.i32 v1, block6(v10), block2(v9) block4(v12: i32): v13 = iconst.i32 3 @@ -32,14 +30,12 @@ block0(v0: i32): block5(v16: i32): v17 = iadd.i32 v14, v4 -[SBzero#18] brz.i32 v1, block4(v16) -[UJ#1b] jump block6(v16) +[SBzero#18] brif.i32 v1, block6(v16), block4(v16) block6(v18: i32): v19 = iadd v18, v2 v20 = iadd.i32 v2, v3 -[SBzero#18] brz.i32 v1, block1(v20) -[UJ#1b] jump block7 +[SBzero#18] brif.i32 v1, block7, block1(v20) block7: [Iret#19] return v19 @@ -56,8 +52,7 @@ block0(v0: i32): ; nextln: ; nextln: block1(v1: i32): ; nextln: v4 = iadd.i32 v2, v1 -; nextln: brz v1, block8(v2) -; nextln: jump block9(v4) +; nextln: brif v1, block9(v4), block8(v2) ; nextln: ; nextln: block8(v21: i32): ; nextln: v8 = iadd.i32 v6, v1 @@ -70,8 +65,7 @@ block0(v0: i32): ; nextln: ; nextln: block3(v9: i32): ; nextln: v10 = iadd v9, v5 -; nextln: brz.i32 v1, block2(v9) -; nextln: jump block6(v10) +; nextln: brif.i32 v1, block6(v10), block2(v9) ; nextln: ; nextln: block9(v22: i32): ; nextln: v15 = iadd.i32 v4, v13 @@ -83,13 +77,11 @@ block0(v0: i32): ; nextln: ; nextln: block5(v16: i32): ; nextln: v17 = iadd.i32 v14, v4 -; nextln: brz.i32 v1, block4(v16) -; nextln: jump block6(v16) +; nextln: brif.i32 v1, block6(v16), block4(v16) ; nextln: ; nextln: block6(v18: i32): ; nextln: v19 = iadd v18, v2 -; nextln: brz.i32 v1, block1(v20) -; nextln: jump block7 +; nextln: brif.i32 v1, block7, block1(v20) ; nextln: ; nextln: block7: ; nextln: return v19 diff --git a/cranelift/filetests/filetests/licm/critical-edge.clif b/cranelift/filetests/filetests/licm/critical-edge.clif index 1940a4ed36..ae8862b644 100644 --- a/cranelift/filetests/filetests/licm/critical-edge.clif +++ b/cranelift/filetests/filetests/licm/critical-edge.clif @@ -6,8 +6,7 @@ target riscv32 function %critical_edge(i32, i32) -> i32 { block0(v0: i32, v7: i32): -[SBzero#38] brnz v7, block2(v0) -[UJ#1b] jump block1 +[SBzero#38] brif v7, block2(v0), block1 block1: [Iret#19] return v0 @@ -16,8 +15,7 @@ function %critical_edge(i32, i32) -> i32 { v2 = iconst.i32 1 v3 = iconst.i32 2 v4 = iadd v2, v3 -[SBzero#18] brz v1, block4(v1) -[UJ#1b] jump block3 +[SBzero#18] brif v1, block3, block4(v1) block3: v5 = isub v1, v2 @@ -29,8 +27,7 @@ function %critical_edge(i32, i32) -> i32 { } ; sameln: function %critical_edge ; nextln: block0(v0: i32, v7: i32): -; nextln: brnz v7, block5(v0) -; nextln: jump block1 +; nextln: brif v7, block5(v0), block1 ; nextln: ; nextln: block1: ; nextln: return v0 @@ -42,8 +39,7 @@ function %critical_edge(i32, i32) -> i32 { ; nextln: jump block2(v8) ; nextln: ; nextln: block2(v1: i32): -; nextln: brz v1, block4(v1) -; nextln: jump block3 +; nextln: brif v1, block3, block4(v1) ; nextln: ; nextln: block3: ; nextln: v5 = isub.i32 v1, v2 diff --git a/cranelift/filetests/filetests/licm/encoding.clif b/cranelift/filetests/filetests/licm/encoding.clif index 2b0114d2d0..7e262bebad 100644 --- a/cranelift/filetests/filetests/licm/encoding.clif +++ b/cranelift/filetests/filetests/licm/encoding.clif @@ -11,8 +11,7 @@ function %simple_loop(i32) -> i32 { [Iz#04,%x0] v2 = iconst.i32 1 [Iz#04,%x1] v3 = iconst.i32 2 [R#0c,%x2] v4 = iadd v2, v3 -[SBzero#18] brz v1, block3(v1) -[UJ#1b] jump block2 +[SBzero#18] brif v1, block2, block3(v1) block2: [R#200c,%x5] v5 = isub v1, v2 @@ -30,8 +29,7 @@ function %simple_loop(i32) -> i32 { ; nextln: [UJ#1b] jump block1(v0) ; nextln: ; nextln: block1(v1: i32): -; nextln: [SBzero#18] brz v1, block3(v1) -; nextln: [UJ#1b] jump block2 +; nextln: [SBzero#18] brif v1, block2, block3(v1) ; nextln: ; nextln: block2: ; nextln: [R#200c,%x5] v5 = isub.i32 v1, v2 diff --git a/cranelift/filetests/filetests/licm/load_readonly_notrap.clif b/cranelift/filetests/filetests/licm/load_readonly_notrap.clif index a244cd6b27..cd5fc03e47 100644 --- a/cranelift/filetests/filetests/licm/load_readonly_notrap.clif +++ b/cranelift/filetests/filetests/licm/load_readonly_notrap.clif @@ -18,8 +18,7 @@ block1(v2: i32, v3: i64): v5 = global_value.i64 gv1 v6 = load.i32 notrap aligned readonly v5 v7 = iadd v2, v6 - brz v2, block3(v2) - jump block2 + brif v2, block2, block3(v2) block2: v8 = isub v2, v4 @@ -41,8 +40,7 @@ block3(v9: i32): ; nextln: ; nextln: block1(v2: i32, v3: i64): ; nextln: v7 = iadd v2, v6 -; nextln: brz v2, block3(v2) -; nextln: jump block2 +; nextln: brif v2, block2, block3(v2) ; nextln: ; nextln: block2: ; nextln: v8 = isub.i32 v2, v4 diff --git a/cranelift/filetests/filetests/licm/multiple-blocks.clif b/cranelift/filetests/filetests/licm/multiple-blocks.clif index 04cfb9d621..f2fddb706e 100644 --- a/cranelift/filetests/filetests/licm/multiple-blocks.clif +++ b/cranelift/filetests/filetests/licm/multiple-blocks.clif @@ -10,13 +10,11 @@ block1(v10: i32): v11 = iconst.i32 1 v12 = iconst.i32 2 v13 = iadd v11, v12 - brz v10, block4(v10) - jump block2 + brif v10, block2, block4(v10) block2: v15 = isub v10, v11 - brz v15, block5(v15) - jump block3 + brif v15, block3, block5(v15) block3: v14 = isub v10, v11 @@ -39,13 +37,11 @@ block5(v30: i32): ; nextln: jump block1(v0) ; nextln: ; nextln: block1(v10: i32): -; nextln: brz v10, block4(v10) -; nextln: jump block2 +; nextln: brif v10, block2, block4(v10) ; nextln: ; nextln: block2: ; nextln: v15 = isub.i32 v10, v11 -; nextln: brz v15, block5(v15) -; nextln: jump block3 +; nextln: brif v15, block3, block5(v15) ; nextln: ; nextln: block3: ; nextln: v14 = isub.i32 v10, v11 diff --git a/cranelift/filetests/filetests/licm/nested_loops.clif b/cranelift/filetests/filetests/licm/nested_loops.clif index 7f9cb928db..1fb04cf7c5 100644 --- a/cranelift/filetests/filetests/licm/nested_loops.clif +++ b/cranelift/filetests/filetests/licm/nested_loops.clif @@ -14,8 +14,7 @@ block1(v1: i32): jump block2(v5, v5) block2(v10: i32, v11: i32): - brz v11, block4(v10) - jump block3 + brif v11, block3, block4(v10) block3: v12 = iconst.i32 1 @@ -24,8 +23,7 @@ block3: jump block2(v10,v13) block4(v20: i32): - brz v20, block5(v20) - jump block1(v20) + brif v20, block1(v20), block5(v20) block5(v30: i32): return v30 @@ -46,16 +44,14 @@ block5(v30: i32): ; nextln: jump block2(v5, v5) ; nextln: ; nextln: block2(v10: i32, v11: i32): -; nextln: brz v11, block4(v10) -; nextln: jump block3 +; nextln: brif v11, block3, block4(v10) ; nextln: ; nextln: block3: ; nextln: v13 = isub.i32 v11, v12 ; nextln: jump block2(v10, v13) ; nextln: ; nextln: block4(v20: i32): -; nextln: brz v20, block5(v20) -; nextln: jump block1(v20) +; nextln: brif v20, block1(v20), block5(v20) ; nextln: ; nextln: block5(v30: i32): ; nextln: return v30 diff --git a/cranelift/filetests/filetests/licm/reject.clif b/cranelift/filetests/filetests/licm/reject.clif index 4b3d64664c..5293350769 100644 --- a/cranelift/filetests/filetests/licm/reject.clif +++ b/cranelift/filetests/filetests/licm/reject.clif @@ -8,8 +8,7 @@ block0(v0: i32): block1(v1: i32): v2 = iconst.i32 1 - brz v1, block3(v1) - jump block2 + brif v1, block2, block3(v1) block2: v5 = isub v1, v2 @@ -33,8 +32,7 @@ block1(v3: i32, v4: i32): ; check: v5 = spill.i32 v1 ; check: v6 = fill.i32 v2 ; check: v7 = fill v5 - brz v1, block3(v1) - jump block2 + brif v1, block2, block3(v1) block2: v9 = isub v1, v4 @@ -55,8 +53,7 @@ block1(v1: i32): v2 = iadd v8, v9 ; check: block1(v1: i32): ; check: v2 = iadd v8, v9 - brz v1, block3(v1) - jump block2 + brif v1, block2, block3(v1) block2: v5 = isub v1, v2 diff --git a/cranelift/filetests/filetests/licm/reject_load_notrap.clif b/cranelift/filetests/filetests/licm/reject_load_notrap.clif index c1f52dac28..904382bc78 100644 --- a/cranelift/filetests/filetests/licm/reject_load_notrap.clif +++ b/cranelift/filetests/filetests/licm/reject_load_notrap.clif @@ -19,8 +19,7 @@ block0(v0: i32, v1: i64): block1(v2: i32, v3: i64): v6 = load.i32 notrap aligned v5 v7 = iadd v2, v6 - brz v2, block3(v2) - jump block2 + brif v2, block2, block3(v2) block2: v8 = isub v2, v4 @@ -42,8 +41,7 @@ block3(v9: i32): ; nextln: block1(v2: i32, v3: i64): ; nextln: v6 = load.i32 notrap aligned v5 ; nextln: v7 = iadd v2, v6 -; nextln: brz v2, block3(v2) -; nextln: jump block2 +; nextln: brif v2, block2, block3(v2) ; nextln: ; nextln: block2: ; nextln: v8 = isub.i32 v2, v4 ; v4 = 1 diff --git a/cranelift/filetests/filetests/licm/reject_load_readonly.clif b/cranelift/filetests/filetests/licm/reject_load_readonly.clif index bc90308626..d5cc40dfb6 100644 --- a/cranelift/filetests/filetests/licm/reject_load_readonly.clif +++ b/cranelift/filetests/filetests/licm/reject_load_readonly.clif @@ -19,8 +19,7 @@ block1(v2: i32, v3: i64): v5 = global_value.i64 gv1 v6 = load.i32 aligned readonly v5 v7 = iadd v2, v6 - brz v2, block3(v2) - jump block2 + brif v2, block2, block3(v2) block2: v8 = isub v2, v4 @@ -42,8 +41,7 @@ block3(v9: i32): ; nextln: block1(v2: i32, v3: i64): ; nextln: v6 = load.i32 aligned readonly v5 ; nextln: v7 = iadd v2, v6 -; nextln: brz v2, block3(v2) -; nextln: jump block2 +; nextln: brif v2, block2, block3(v2) ; nextln: ; nextln: block2: ; nextln: v8 = isub.i32 v2, v4 diff --git a/cranelift/filetests/filetests/parser/branch.clif b/cranelift/filetests/filetests/parser/branch.clif index 4c7cd70c2a..708f7cdcb3 100644 --- a/cranelift/filetests/filetests/parser/branch.clif +++ b/cranelift/filetests/filetests/parser/branch.clif @@ -52,32 +52,32 @@ block1(v92: i32, v93: f32): ; Branches with no arguments. The '()' empty argument list is optional. function %minimal(i32) { block0(v90: i32): - brz v90, block1 + brif v90, block1, block1 block1: - brnz v90, block1() + brif v90, block1(), block1() } ; sameln: function %minimal(i32) fast { ; nextln: block0(v90: i32): -; nextln: brz v90, block1 +; nextln: brif v90, block1, block1 ; nextln: ; nextln: block1: -; nextln: brnz.i32 v90, block1 +; nextln: brif.i32 v90, block1, block1 ; nextln: } function %twoargs(i32, f32) { block0(v90: i32, v91: f32): - brz v90, block1(v90, v91) + brif v90, block1(v90, v91), block1(v90, v91) block1(v92: i32, v93: f32): - brnz v90, block0(v92, v93) + brif v90, block0(v92, v93), block0(v92, v93) } ; sameln: function %twoargs(i32, f32) fast { ; nextln: block0(v90: i32, v91: f32): -; nextln: brz v90, block1(v90, v91) +; nextln: brif v90, block1(v90, v91), block1(v90, v91) ; nextln: ; nextln: block1(v92: i32, v93: f32): -; nextln: brnz.i32 v90, block0(v92, v93) +; nextln: brif.i32 v90, block0(v92, v93), block0(v92, v93) ; nextln: } function %jumptable(i32) { diff --git a/cranelift/filetests/filetests/parser/flags.clif b/cranelift/filetests/filetests/parser/flags.clif index 3d72a777fe..23cd068d4a 100644 --- a/cranelift/filetests/filetests/parser/flags.clif +++ b/cranelift/filetests/filetests/parser/flags.clif @@ -5,19 +5,16 @@ function %iflags(i32) { block200(v0: i32): v17 = iconst.i32 17 v1 = icmp eq v0, v17 - brnz v1, block201 - jump block400 + brif v1, block201, block400 block400: v5 = icmp ugt v0, v17 - brnz v5, block202 - jump block401 + brif v5, block202, block401 block401: v2 = iconst.i32 34 v3 = icmp eq v0, v2 - brnz v3, block202 - jump block402 + brif v3, block202, block402 block402: return @@ -30,27 +27,24 @@ block202: } ; check: v17 = iconst.i32 17 ; check: v1 = icmp eq v0, v17 -; check: brnz v1, block201 +; check: brif v1, block201, block400 ; check: v5 = icmp.i32 ugt v0, v17 -; check: brnz v5, block202 +; check: brif v5, block202, block401 ; check: v3 = icmp.i32 eq v0, v2 function %fflags(f32) { block200(v0: f32): v1 = f32const 0x34.0p0 v2 = fcmp eq v0, v1 - brnz v2, block201 - jump block400 + brif v2, block201, block400 block400: v5 = fcmp ord v0, v1 - brnz v5, block202 - jump block401 + brif v5, block202, block401 block401: v3 = fcmp gt v0, v1 - brnz v3, block202 - jump block402 + brif v3, block202, block402 block402: return @@ -62,7 +56,7 @@ block202: trap heap_oob } ; check: v2 = fcmp eq v0, v1 -; check: brnz v2, block201 +; check: brif v2, block201, block400 ; check: v5 = fcmp.f32 ord v0, v1 -; check: brnz v5, block202 +; check: brif v5, block202, block401 ; check: v3 = fcmp.f32 gt v0, v1 diff --git a/cranelift/filetests/filetests/parser/tiny.clif b/cranelift/filetests/filetests/parser/tiny.clif index 901e4ef12d..fda171a8d5 100644 --- a/cranelift/filetests/filetests/parser/tiny.clif +++ b/cranelift/filetests/filetests/parser/tiny.clif @@ -86,7 +86,7 @@ block0(v90: i32, v91: i32): v2 = icmp_imm sge v90, -12 v3 = irsub_imm v91, 45 v4 = icmp eq v90, v91 - brnz v4, block0(v91, v90) + brif v4, block0(v91, v90), block0(v91, v90) } ; sameln: function %icmp(i32, i32) fast { ; nextln: block0(v90: i32, v91: i32): @@ -95,7 +95,7 @@ block0(v90: i32, v91: i32): ; nextln: v2 = icmp_imm sge v90, -12 ; nextln: v3 = irsub_imm v91, 45 ; nextln: v4 = icmp eq v90, v91 -; nextln: brnz v4, block0(v91, v90) +; nextln: brif v4, block0(v91, v90), block0(v91, v90) ; nextln: } ; Floating condition codes. diff --git a/cranelift/filetests/filetests/runtests/br.clif b/cranelift/filetests/filetests/runtests/br.clif index 4ed99f4e52..6466cc442e 100644 --- a/cranelift/filetests/filetests/runtests/br.clif +++ b/cranelift/filetests/filetests/runtests/br.clif @@ -20,10 +20,9 @@ block2: ; run: %jump() == 1 -function %brz_i64(i64) -> i8 { +function %brif_false__i64(i64) -> i8 { block0(v0: i64): - brz v0, block1 - jump block2 + brif v0, block2, block1 block1: v1 = iconst.i8 1 @@ -33,17 +32,16 @@ block2: v2 = iconst.i8 0 return v2 } -; run: %brz_i64(0) == 1 -; run: %brz_i64(1) == 0 -; run: %brz_i64(-1) == 0 -; run: %brz_i64(97) == 0 +; run: %brif_false__i64(0) == 1 +; run: %brif_false__i64(1) == 0 +; run: %brif_false__i64(-1) == 0 +; run: %brif_false__i64(97) == 0 -function %brz_i8_overflow(i8) -> i8 { +function %brif_false__i8_overflow(i8) -> i8 { block0(v0: i8): v1 = iconst.i8 255 v2 = iadd.i8 v0, v1 - brz v2, block2 - jump block1 + brif v2, block1, block2 block1: v3 = iconst.i8 1 @@ -54,18 +52,17 @@ block2: return v4 } -; run: %brz_i8_overflow(0) == 1 -; run: %brz_i8_overflow(1) == 0 -; run: %brz_i8_overflow(2) == 1 -; run: %brz_i8_overflow(98) == 1 -; run: %brz_i8_overflow(97) == 1 +; run: %brif_false__i8_overflow(0) == 1 +; run: %brif_false__i8_overflow(1) == 0 +; run: %brif_false__i8_overflow(2) == 1 +; run: %brif_false__i8_overflow(98) == 1 +; run: %brif_false__i8_overflow(97) == 1 -function %brz_i16_overflow(i16) -> i8 { +function %brif_false__i16_overflow(i16) -> i8 { block0(v0: i16): v1 = iconst.i16 65535 v2 = iadd v0, v1 - brz v2, block2 - jump block1 + brif v2, block1, block2 block1: v3 = iconst.i8 1 @@ -76,18 +73,17 @@ block2: return v4 } -; run: %brz_i16_overflow(0) == 1 -; run: %brz_i16_overflow(1) == 0 -; run: %brz_i16_overflow(2) == 1 -; run: %brz_i16_overflow(98) == 1 -; run: %brz_i16_overflow(97) == 1 +; run: %brif_false__i16_overflow(0) == 1 +; run: %brif_false__i16_overflow(1) == 0 +; run: %brif_false__i16_overflow(2) == 1 +; run: %brif_false__i16_overflow(98) == 1 +; run: %brif_false__i16_overflow(97) == 1 -function %brz_i32_overflow(i32) -> i8 { +function %brif_false__i32_overflow(i32) -> i8 { block0(v0: i32): v1 = iconst.i32 4294967295 v2 = iadd v0, v1 - brz v2, block2 - jump block1 + brif v2, block1, block2 block1: v3 = iconst.i8 1 @@ -98,16 +94,15 @@ block2: return v4 } -; run: %brz_i32_overflow(0) == 1 -; run: %brz_i32_overflow(1) == 0 -; run: %brz_i32_overflow(2) == 1 -; run: %brz_i32_overflow(98) == 1 -; run: %brz_i32_overflow(97) == 1 +; run: %brif_false__i32_overflow(0) == 1 +; run: %brif_false__i32_overflow(1) == 0 +; run: %brif_false__i32_overflow(2) == 1 +; run: %brif_false__i32_overflow(98) == 1 +; run: %brif_false__i32_overflow(97) == 1 -function %brz_i32(i32) -> i8 { +function %brif_false__i32(i32) -> i8 { block0(v0: i32): - brz v0, block1 - jump block2 + brif v0, block2, block1 block1: v1 = iconst.i8 1 @@ -117,14 +112,13 @@ block2: v2 = iconst.i8 0 return v2 } -; run: %brz_i32(0) == 1 -; run: %brz_i32(1) == 0 -; run: %brz_i32(-1) == 0 +; run: %brif_false__i32(0) == 1 +; run: %brif_false__i32(1) == 0 +; run: %brif_false__i32(-1) == 0 -function %brz_i16(i16) -> i8 { +function %brif_false__i16(i16) -> i8 { block0(v0: i16): - brz v0, block1 - jump block2 + brif v0, block2, block1 block1: v1 = iconst.i8 1 @@ -134,14 +128,13 @@ block2: v2 = iconst.i8 0 return v2 } -; run: %brz_i16(0) == 1 -; run: %brz_i16(1) == 0 -; run: %brz_i16(-1) == 0 +; run: %brif_false__i16(0) == 1 +; run: %brif_false__i16(1) == 0 +; run: %brif_false__i16(-1) == 0 -function %brz_i8(i8) -> i8 { +function %brif_false__i8(i8) -> i8 { block0(v1: i8): - brz v1, block1 - jump block2 + brif v1, block2, block1 block1: v2 = iconst.i8 1 @@ -151,14 +144,13 @@ block2: v3 = iconst.i8 0 return v3 } -; run: %brz_i8(1) == 0 -; run: %brz_i8(0) == 1 +; run: %brif_false__i8(1) == 0 +; run: %brif_false__i8(0) == 1 -function %brnz_i64(i64) -> i8 { +function %brif_true__i64(i64) -> i8 { block0(v0: i64): - brnz v0, block1 - jump block2 + brif v0, block1, block2 block1: v1 = iconst.i8 1 @@ -168,14 +160,13 @@ block2: v2 = iconst.i8 0 return v2 } -; run: %brnz_i64(0) == 0 -; run: %brnz_i64(1) == 1 -; run: %brnz_i64(-1) == 1 +; run: %brif_true__i64(0) == 0 +; run: %brif_true__i64(1) == 1 +; run: %brif_true__i64(-1) == 1 -function %brnz_i32(i32) -> i8 { +function %brif_true__i32(i32) -> i8 { block0(v0: i32): - brnz v0, block1 - jump block2 + brif v0, block1, block2 block1: v1 = iconst.i8 1 @@ -185,14 +176,13 @@ block2: v2 = iconst.i8 0 return v2 } -; run: %brnz_i32(0) == 0 -; run: %brnz_i32(1) == 1 -; run: %brnz_i32(-1) == 1 +; run: %brif_true__i32(0) == 0 +; run: %brif_true__i32(1) == 1 +; run: %brif_true__i32(-1) == 1 -function %brnz_i16(i16) -> i8 { +function %brif_true__i16(i16) -> i8 { block0(v0: i16): - brnz v0, block1 - jump block2 + brif v0, block1, block2 block1: v1 = iconst.i8 1 @@ -202,14 +192,13 @@ block2: v2 = iconst.i8 0 return v2 } -; run: %brnz_i16(0) == 0 -; run: %brnz_i16(1) == 1 -; run: %brnz_i16(-1) == 1 +; run: %brif_true__i16(0) == 0 +; run: %brif_true__i16(1) == 1 +; run: %brif_true__i16(-1) == 1 -function %brnz_i8(i8) -> i8 { +function %brif_true__i8(i8) -> i8 { block0(v0: i8): - brnz v0, block1 - jump block2 + brif v0, block1, block2 block1: v1 = iconst.i8 1 @@ -219,7 +208,7 @@ block2: v2 = iconst.i8 0 return v2 } -; run: %brnz_i8(0) == 0 -; run: %brnz_i8(1) == 1 -; run: %brnz_i8(-1) == 1 -; run: %brnz_i8(97) == 1 +; run: %brif_true__i8(0) == 0 +; run: %brif_true__i8(1) == 1 +; run: %brif_true__i8(-1) == 1 +; run: %brif_true__i8(97) == 1 diff --git a/cranelift/filetests/filetests/runtests/brif.clif b/cranelift/filetests/filetests/runtests/brif.clif index b751ca09e6..25b7f6c8ff 100644 --- a/cranelift/filetests/filetests/runtests/brif.clif +++ b/cranelift/filetests/filetests/runtests/brif.clif @@ -170,8 +170,7 @@ block1(v0: i8): function %fuzzgen_2(i16) -> i16, i16 system_v { block0(v0: i16): - brnz v0, block1(v0, v0) - jump block2(v0, v0) + brif v0, block1(v0, v0), block2(v0, v0) block1(v1: i16, v2: i16): brif v1, block2(v2, v2), block2(v2, v2) diff --git a/cranelift/filetests/filetests/runtests/fibonacci.clif b/cranelift/filetests/filetests/runtests/fibonacci.clif index 72e1f67e83..087ecf83d3 100644 --- a/cranelift/filetests/filetests/runtests/fibonacci.clif +++ b/cranelift/filetests/filetests/runtests/fibonacci.clif @@ -11,8 +11,8 @@ function %fibonacci(i32) -> i32 { block0(v0: i32): v1 = icmp_imm ule v0, 2 v2 = iconst.i32 1 - brnz v1, block3(v2) ; handle base case, n <= 2 - jump block1(v0, v2) + ; handle base case, n <= 2 + brif v1, block3(v2), block1(v0, v2) block1(v4: i32, v5:i32): v6 = iconst.i32 1 @@ -23,8 +23,7 @@ block2(v10: i32, v11: i32, v12: i32): ; params: n, fib(n-1), fib(n-2) v13 = iadd v11, v12 v14 = iadd_imm v10, -1 v15 = icmp_imm eq v14, 0 - brnz v15, block3(v13) - jump block2(v14, v13, v11) + brif v15, block3(v13), block2(v14, v13, v11) block3(v20: i32): ; early return and end of loop return v20 @@ -45,8 +44,7 @@ function %fibonacci_recursive(i32) -> i32 { block0(v0: i32): v1 = icmp_imm ule v0, 2 - brnz v1, block2 - jump block1(v0) + brif v1, block2, block1(v0) block1(v10: i32): v11 = iadd_imm v10, -1 diff --git a/cranelift/filetests/filetests/runtests/i128-br.clif b/cranelift/filetests/filetests/runtests/i128-br.clif index a73db4f790..4facc03ea4 100644 --- a/cranelift/filetests/filetests/runtests/i128-br.clif +++ b/cranelift/filetests/filetests/runtests/i128-br.clif @@ -5,10 +5,9 @@ target s390x target x86_64 target riscv64 -function %i128_brz(i128) -> i8 { +function %i128_brif_false(i128) -> i8 { block0(v0: i128): - brz v0, block2 - jump block1 + brif v0, block1, block2 block1: v1 = iconst.i8 0 @@ -18,16 +17,15 @@ block2: v2 = iconst.i8 1 return v2 } -; run: %i128_brz(0) == 1 -; run: %i128_brz(-1) == 0 -; run: %i128_brz(0x00000000_00000000_FFFFFFFF_FFFFFFFF) == 0 -; run: %i128_brz(0xFFFFFFFF_FFFFFFFF_00000000_00000000) == 0 +; run: %i128_brif_false(0) == 1 +; run: %i128_brif_false(-1) == 0 +; run: %i128_brif_false(0x00000000_00000000_FFFFFFFF_FFFFFFFF) == 0 +; run: %i128_brif_false(0xFFFFFFFF_FFFFFFFF_00000000_00000000) == 0 -function %i128_brnz(i128) -> i8 { +function %i128_brif_true(i128) -> i8 { block0(v0: i128): - brnz v0, block2 - jump block1 + brif v0, block2, block1 block1: v1 = iconst.i8 0 @@ -37,7 +35,7 @@ block2: v2 = iconst.i8 1 return v2 } -; run: %i128_brnz(0) == 0 -; run: %i128_brnz(-1) == 1 -; run: %i128_brnz(0x00000000_00000000_FFFFFFFF_FFFFFFFF) == 1 -; run: %i128_brnz(0xFFFFFFFF_FFFFFFFF_00000000_00000000) == 1 +; run: %i128_brif_true(0) == 0 +; run: %i128_brif_true(-1) == 1 +; run: %i128_brif_true(0x00000000_00000000_FFFFFFFF_FFFFFFFF) == 1 +; run: %i128_brif_true(0xFFFFFFFF_FFFFFFFF_00000000_00000000) == 1 diff --git a/cranelift/filetests/filetests/runtests/riscv64_issue_4996.clif b/cranelift/filetests/filetests/runtests/riscv64_issue_4996.clif index fedfca2a0d..6550411e3f 100644 --- a/cranelift/filetests/filetests/runtests/riscv64_issue_4996.clif +++ b/cranelift/filetests/filetests/runtests/riscv64_issue_4996.clif @@ -7,8 +7,7 @@ target riscv64 function %issue4996() -> i128, i64 system_v { block0: v5 = iconst.i8 0 - brz v5, block3 ; v5 = 0 - jump block1 + brif v5, block1, block3 ; v5 = 0 block1: v12 = iconst.i64 0 v13 = uextend.i128 v12 ; v12 = 0 diff --git a/cranelift/filetests/filetests/simple_gvn/basic.clif b/cranelift/filetests/filetests/simple_gvn/basic.clif index 107c3897d1..2462a89357 100644 --- a/cranelift/filetests/filetests/simple_gvn/basic.clif +++ b/cranelift/filetests/filetests/simple_gvn/basic.clif @@ -23,8 +23,7 @@ block0(v0: i32, v1: i32): function %redundancies_on_some_paths(i32, i32, i32) -> i32 { block0(v0: i32, v1: i32, v2: i32): v3 = iadd v0, v1 - brz v3, block1 - jump block3 + brif v3, block3, block1 block3: v4 = iadd v0, v1 diff --git a/cranelift/filetests/filetests/simple_gvn/scopes.clif b/cranelift/filetests/filetests/simple_gvn/scopes.clif index 63a425ad3f..8ec95a7777 100644 --- a/cranelift/filetests/filetests/simple_gvn/scopes.clif +++ b/cranelift/filetests/filetests/simple_gvn/scopes.clif @@ -4,8 +4,7 @@ function %two_diamonds(i32, i32, i32, i32, i32) { block0(v0: i32, v1: i32, v2: i32, v3: i32, v4: i32): v5 = iconst.i32 16 ; check: v5 = iconst.i32 16 - brz v0, block1 - jump block5 + brif v0, block5, block1 block5: v6 = iconst.i32 17 @@ -32,8 +31,7 @@ block2: ; check: v13 = iconst.i32 17 v14 = iconst.i32 16 ; not: v14 = iconst.i32 16 - brz v1, block3 - jump block6 + brif v1, block6, block3 block6: v15 = iconst.i32 20 diff --git a/cranelift/filetests/filetests/simple_preopt/branch.clif b/cranelift/filetests/filetests/simple_preopt/branch.clif index 2237c7edfd..c710ba843f 100644 --- a/cranelift/filetests/filetests/simple_preopt/branch.clif +++ b/cranelift/filetests/filetests/simple_preopt/branch.clif @@ -2,11 +2,10 @@ test simple_preopt target aarch64 target x86_64 -function %icmp_to_brz_fold(i32) -> i32 { +function %icmp_to_brif_false_fold(i32) -> i32 { block0(v0: i32): v1 = icmp_imm eq v0, 0 - brnz v1, block1 - jump block2 + brif v1, block1, block2 block1: v3 = iconst.i32 1 return v3 @@ -14,11 +13,10 @@ block2: v4 = iconst.i32 2 return v4 } -; sameln: function %icmp_to_brz_fold +; sameln: function %icmp_to_brif_false_fold ; nextln: block0(v0: i32): ; nextln: v1 = icmp_imm eq v0, 0 -; nextln: brnz v0, block2 -; nextln: jump block1 +; nextln: brif v0, block2, block1 ; nextln: ; nextln: block1: ; nextln: v3 = iconst.i32 1 @@ -29,11 +27,10 @@ block2: ; nextln: return v4 ; nextln: } -function %icmp_to_brz_inverted_fold(i32) -> i32 { +function %icmp_to_brif_false_inverted_fold(i32) -> i32 { block0(v0: i32): v1 = icmp_imm ne v0, 0 - brz v1, block1 - jump block2 + brif v1, block2, block1 block1: v3 = iconst.i32 1 return v3 @@ -41,11 +38,10 @@ block2: v4 = iconst.i32 2 return v4 } -; sameln: function %icmp_to_brz_inverted_fold +; sameln: function %icmp_to_brif_false_inverted_fold ; nextln: block0(v0: i32): ; nextln: v1 = icmp_imm ne v0, 0 -; nextln: brnz v0, block2 -; nextln: jump block1 +; nextln: brif v0, block2, block1 ; nextln: ; nextln: block1: ; nextln: v3 = iconst.i32 1 diff --git a/cranelift/filetests/filetests/simple_preopt/replace_branching_instructions_and_cfg_predecessors.clif b/cranelift/filetests/filetests/simple_preopt/replace_branching_instructions_and_cfg_predecessors.clif index 84aa0f1d6c..89a576fab6 100644 --- a/cranelift/filetests/filetests/simple_preopt/replace_branching_instructions_and_cfg_predecessors.clif +++ b/cranelift/filetests/filetests/simple_preopt/replace_branching_instructions_and_cfg_predecessors.clif @@ -8,8 +8,7 @@ function u0:2(i64 , i64) { v19 = iconst.i32 4 v20 = icmp ne v18, v19 v21 = uextend.i32 v20 - brnz v21, block2 - jump block4 + brif v21, block2, block4 block4: jump block1 block2: diff --git a/cranelift/filetests/filetests/simple_preopt/simplify64.clif b/cranelift/filetests/filetests/simple_preopt/simplify64.clif index 72919cad96..dc850f715e 100644 --- a/cranelift/filetests/filetests/simple_preopt/simplify64.clif +++ b/cranelift/filetests/filetests/simple_preopt/simplify64.clif @@ -45,14 +45,13 @@ block0(v0: i32): ; nextln: return v3 ; nextln: } -function %brz_uextend(i32) { +function %brif_false_uextend(i32) { block0(v0: i32): v3 = icmp_imm slt v0, 0 v1 = uextend.i32 v3 v2 = select v1, v1, v1 trapz v1, user0 - brz v1, block1 - jump block2 + brif v1, block2, block1 block1: return @@ -60,14 +59,13 @@ block1: block2: return } -; sameln: function %brz_uextend +; sameln: function %brif_false_uextend ; nextln: (v0: i32): ; nextln: v3 = icmp_imm slt v0, 0 ; nextln: v1 = uextend.i32 v3 ; nextln: v2 = select v1, v1, v1 ; nextln: trapz v1, user0 -; nextln: brnz v1, block2 -; nextln: jump block1 +; nextln: brif v1, block2, block1 function %irsub_imm(i32) -> i32 { block0(v0: i32): diff --git a/cranelift/filetests/filetests/verifier/bad_layout.clif b/cranelift/filetests/filetests/verifier/bad_layout.clif index 0cc2d2ed6f..5ce1a3ba66 100644 --- a/cranelift/filetests/filetests/verifier/bad_layout.clif +++ b/cranelift/filetests/filetests/verifier/bad_layout.clif @@ -8,7 +8,7 @@ function %test_1(i32) { function %test_2(i32) { block0(v0: i32): jump block2 ; error: a terminator instruction was encountered before the end of block0 - brz v0, block3 + brif v0, block2, block3 block2: jump block3 block3: diff --git a/cranelift/filetests/filetests/verifier/type_check.clif b/cranelift/filetests/filetests/verifier/type_check.clif index 02f0589df7..6395a9f1aa 100644 --- a/cranelift/filetests/filetests/verifier/type_check.clif +++ b/cranelift/filetests/filetests/verifier/type_check.clif @@ -91,9 +91,8 @@ function %jump_args2() { block0: v0 = iconst.i16 10 v3 = iconst.i64 20 - brz v0, block1(v0, v3) ; error: arg 0 (v0) has type i16, expected i64 - ; error: arg 1 (v3) has type i64, expected i16 - jump block1(v3, v0) + brif v0, block1(v3, v0), block1(v0, v3) ; error: arg 0 (v0) has type i16, expected i64 + ; error: arg 1 (v3) has type i64, expected i16 block1(v10: i64, v11: i16): return } diff --git a/cranelift/filetests/filetests/wasm/control.clif b/cranelift/filetests/filetests/wasm/control.clif index 08fc29c0b7..e5f355371d 100644 --- a/cranelift/filetests/filetests/wasm/control.clif +++ b/cranelift/filetests/filetests/wasm/control.clif @@ -8,8 +8,7 @@ target x86_64 haswell function %br_if(i32) -> i32 { block0(v0: i32): v1 = iconst.i32 1 - brz v0, block1(v1) - jump block2 + brif v0, block2, block1(v1) block1(v2: i32): return v2 @@ -21,8 +20,7 @@ block2: function %br_if_not(i32) -> i32 { block0(v0: i32): v1 = iconst.i32 1 - brnz v0, block1(v0) - jump block2 + brif v0, block1(v0), block2 block1(v2: i32): return v2 @@ -34,9 +32,8 @@ block2: function %br_if_fallthrough(i32) -> i32 { block0(v0: i32): v1 = iconst.i32 1 - brz v0, block1(v1) ; This jump gets converted to a fallthrough. - jump block1(v0) + brif v0, block1(v0), block1(v1) block1(v2: i32): return v2 diff --git a/cranelift/filetests/filetests/wasm/r32.clif b/cranelift/filetests/filetests/wasm/r32.clif index 49abed6907..4ac3f3701b 100644 --- a/cranelift/filetests/filetests/wasm/r32.clif +++ b/cranelift/filetests/filetests/wasm/r32.clif @@ -9,8 +9,7 @@ target i686 haswell function %select_ref(i32, r32, r32) -> r32 { block0(v0: i32, v1: r32, v2: r32): - brz v0, block1(v2) - jump block1(v1) + brif v0, block1(v1), block1(v2) block1(v3: r32): return v3 diff --git a/cranelift/filetests/filetests/wasm/r64.clif b/cranelift/filetests/filetests/wasm/r64.clif index c0b09c1bdf..eff4c65b7e 100644 --- a/cranelift/filetests/filetests/wasm/r64.clif +++ b/cranelift/filetests/filetests/wasm/r64.clif @@ -9,8 +9,7 @@ target x86_64 haswell function %select_ref(i32, r64, r64) -> r64 { block0(v0: i32, v1: r64, v2: r64): - brz v0, block1(v2) - jump block1(v1) + brif v0, block1(v1), block1(v2) block1(v3: r64): return v3 diff --git a/cranelift/frontend/src/frontend.rs b/cranelift/frontend/src/frontend.rs index 21320d8cb3..dff1601cca 100644 --- a/cranelift/frontend/src/frontend.rs +++ b/cranelift/frontend/src/frontend.rs @@ -1163,9 +1163,8 @@ mod tests { } { let arg = builder.use_var(y); - builder.ins().brnz(arg, block3, &[]); + builder.ins().brif(arg, block3, &[], block2, &[]); } - builder.ins().jump(block2, &[]); builder.switch_to_block(block2); if !lazy_seal { diff --git a/cranelift/frontend/src/lib.rs b/cranelift/frontend/src/lib.rs index 9a07687055..fbae35afb6 100644 --- a/cranelift/frontend/src/lib.rs +++ b/cranelift/frontend/src/lib.rs @@ -50,8 +50,7 @@ //! jump block1 //! block1: //! z = z + y; -//! brnz y, block3; -//! jump block2 +//! brif y, block3, block2 //! block2: //! z = z - x; //! return y @@ -122,9 +121,8 @@ //! } //! { //! let arg = builder.use_var(y); -//! builder.ins().brnz(arg, block3, &[]); +//! builder.ins().brif(arg, block3, &[], block2, &[]); //! } -//! builder.ins().jump(block2, &[]); //! //! builder.switch_to_block(block2); //! builder.seal_block(block2); diff --git a/cranelift/frontend/src/ssa.rs b/cranelift/frontend/src/ssa.rs index 4e41f6346f..ea53765e54 100644 --- a/cranelift/frontend/src/ssa.rs +++ b/cranelift/frontend/src/ssa.rs @@ -756,8 +756,7 @@ mod tests { // x = 1; // y = 2; // z = x + y; - // brnz y, block1; - // jump block1; + // brif y, block1, block1; // block1: // z = x + z; // jump block2; @@ -794,13 +793,9 @@ mod tests { }; ssa.def_var(z_var, z1_ssa, block0); let y_use2 = ssa.use_var(&mut func, y_var, I32, block0).0; - let brnz_block0_block2: Inst = { + let brif_block0_block2_block1: Inst = { let mut cur = FuncCursor::new(&mut func).at_bottom(block0); - cur.ins().brnz(y_use2, block2, &[]) - }; - let jump_block0_block1: Inst = { - let mut cur = FuncCursor::new(&mut func).at_bottom(block0); - cur.ins().jump(block1, &[]) + cur.ins().brif(y_use2, block2, &[], block1, &[]) }; assert_eq!(ssa.use_var(&mut func, x_var, I32, block0).0, x_ssa); @@ -809,7 +804,7 @@ mod tests { // block1 ssa.declare_block(block1); - ssa.declare_block_predecessor(block1, jump_block0_block1); + ssa.declare_block_predecessor(block1, brif_block0_block2_block1); ssa.seal_block(block1, &mut func); let x_use2 = ssa.use_var(&mut func, x_var, I32, block1).0; @@ -830,7 +825,7 @@ mod tests { // block2 ssa.declare_block(block2); - ssa.declare_block_predecessor(block2, brnz_block0_block2); + ssa.declare_block_predecessor(block2, brif_block0_block2_block1); ssa.declare_block_predecessor(block2, jump_block1_block2); ssa.seal_block(block2, &mut func); let x_use3 = ssa.use_var(&mut func, x_var, I32, block2).0; @@ -843,17 +838,21 @@ mod tests { assert_eq!(x_ssa, x_use3); assert_eq!(y_ssa, y_use3); - match func.dfg.analyze_branch(brnz_block0_block2) { - BranchInfo::SingleDest(dest) => { - assert_eq!(dest.block(&func.dfg.value_lists), block2); - assert_eq!(dest.args_slice(&func.dfg.value_lists).len(), 0); + match func.dfg.analyze_branch(brif_block0_block2_block1) { + BranchInfo::Conditional(block_then, block_else) => { + assert_eq!(block_then.block(&func.dfg.value_lists), block2); + assert_eq!(block_then.args_slice(&func.dfg.value_lists).len(), 0); + assert_eq!(block_else.block(&func.dfg.value_lists), block1); + assert_eq!(block_else.args_slice(&func.dfg.value_lists).len(), 0); } _ => assert!(false), }; - match func.dfg.analyze_branch(jump_block0_block1) { - BranchInfo::SingleDest(dest) => { - assert_eq!(dest.block(&func.dfg.value_lists), block1); - assert_eq!(dest.args_slice(&func.dfg.value_lists).len(), 0); + match func.dfg.analyze_branch(brif_block0_block2_block1) { + BranchInfo::Conditional(block_then, block_else) => { + assert_eq!(block_then.block(&func.dfg.value_lists), block2); + assert_eq!(block_then.args_slice(&func.dfg.value_lists).len(), 0); + assert_eq!(block_else.block(&func.dfg.value_lists), block1); + assert_eq!(block_else.args_slice(&func.dfg.value_lists).len(), 0); } _ => assert!(false), }; @@ -889,8 +888,7 @@ mod tests { // jump block1 // block1: // z = z + y; - // brnz y, block3; - // jump block2; + // brif y, block3, block2; // block2: // z = z - x; // return y @@ -942,18 +940,14 @@ mod tests { ssa.def_var(z_var, z3, block1); let y4 = ssa.use_var(&mut func, y_var, I32, block1).0; assert_eq!(y4, y3); - let brnz_block1_block3 = { + let brif_block1_block3_block2 = { let mut cur = FuncCursor::new(&mut func).at_bottom(block1); - cur.ins().brnz(y4, block3, &[]) - }; - let jump_block1_block2 = { - let mut cur = FuncCursor::new(&mut func).at_bottom(block1); - cur.ins().jump(block2, &[]) + cur.ins().brif(y4, block3, &[], block2, &[]) }; // block2 ssa.declare_block(block2); - ssa.declare_block_predecessor(block2, jump_block1_block2); + ssa.declare_block_predecessor(block2, brif_block1_block3_block2); ssa.seal_block(block2, &mut func); let z4 = ssa.use_var(&mut func, z_var, I32, block2).0; assert_eq!(z4, z3); @@ -972,7 +966,7 @@ mod tests { // block3 ssa.declare_block(block3); - ssa.declare_block_predecessor(block3, brnz_block1_block3); + ssa.declare_block_predecessor(block3, brif_block1_block3_block2); ssa.seal_block(block3, &mut func); let y6 = ssa.use_var(&mut func, y_var, I32, block3).0; assert_eq!(y6, y3); @@ -1236,8 +1230,7 @@ mod tests { // block0: // return; // block1: - // brz x, block1; - // jump block1; + // brif x, block1, block1; let mut func = Function::new(); let mut ssa = SSABuilder::default(); let block0 = func.dfg.make_block(); @@ -1262,10 +1255,8 @@ mod tests { let mut cur = FuncCursor::new(&mut func).at_bottom(block1); let x_var = Variable::new(0); let x_val = ssa.use_var(&mut cur.func, x_var, I32, block1).0; - let brz = cur.ins().brz(x_val, block1, &[]); - let jump_block1_block1 = cur.ins().jump(block1, &[]); - ssa.declare_block_predecessor(block1, brz); - ssa.declare_block_predecessor(block1, jump_block1_block1); + let brif = cur.ins().brif(x_val, block1, &[], block1, &[]); + ssa.declare_block_predecessor(block1, brif); } ssa.seal_block(block1, &mut func); @@ -1287,8 +1278,7 @@ mod tests { // block0: // return; // block1: - // brz x, block2; - // jump block1; + // brif x, block1, block2; // block2: // jump block1; let mut func = Function::new(); @@ -1313,19 +1303,17 @@ mod tests { // block1 ssa.declare_block(block1); - let brz = { + let brif = { let mut cur = FuncCursor::new(&mut func).at_bottom(block1); let x_var = Variable::new(0); let x_val = ssa.use_var(&mut cur.func, x_var, I32, block1).0; - let brz = cur.ins().brz(x_val, block2, &[]); - let jump_block1_block1 = cur.ins().jump(block1, &[]); - ssa.declare_block_predecessor(block1, jump_block1_block1); - brz + cur.ins().brif(x_val, block2, &[], block1, &[]) }; // block2 ssa.declare_block(block2); - ssa.declare_block_predecessor(block2, brz); + ssa.declare_block_predecessor(block1, brif); + ssa.declare_block_predecessor(block2, brif); ssa.seal_block(block2, &mut func); let jump_block2_block1 = { let mut cur = FuncCursor::new(&mut func).at_bottom(block2); diff --git a/cranelift/fuzzgen/src/function_generator.rs b/cranelift/fuzzgen/src/function_generator.rs index 23ba8f1de7..927d4460be 100644 --- a/cranelift/fuzzgen/src/function_generator.rs +++ b/cranelift/fuzzgen/src/function_generator.rs @@ -1614,26 +1614,9 @@ where let condbr_types = [I8, I16, I32, I64, I128]; let _type = *self.u.choose(&condbr_types[..])?; let val = builder.use_var(self.get_variable_of_type(_type)?); - - match self.u.int_in_range(0..=2)? { - 0 => { - builder.ins().brnz(val, left, &left_args[..]); - builder.ins().jump(right, &right_args[..]); - } - - 1 => { - builder.ins().brz(val, left, &left_args[..]); - builder.ins().jump(right, &right_args[..]); - } - - 2 => { - builder - .ins() - .brif(val, left, &left_args[..], right, &right_args[..]); - } - - _ => unreachable!(), - } + builder + .ins() + .brif(val, left, &left_args[..], right, &right_args[..]); } BlockTerminator::BrTable(default, targets) => { // Create jump tables on demand diff --git a/cranelift/interpreter/src/step.rs b/cranelift/interpreter/src/step.rs index d791ee6f87..b05c96d959 100644 --- a/cranelift/interpreter/src/step.rs +++ b/cranelift/interpreter/src/step.rs @@ -302,24 +302,6 @@ where unreachable!() } } - Opcode::Brz => { - let block = inst.branch_destination()[0]; - branch_when( - !arg(0)? - .convert(ValueConversionKind::ToBoolean)? - .into_bool()?, - block, - )? - } - Opcode::Brnz => { - let block = inst.branch_destination()[0]; - branch_when( - arg(0)? - .convert(ValueConversionKind::ToBoolean)? - .into_bool()?, - block, - )? - } Opcode::BrTable => { if let InstructionData::BranchTable { table, destination, .. @@ -1297,9 +1279,10 @@ pub enum ControlFlow<'a, V> { /// Continue to the next available instruction, e.g.: in `nop`, we expect to resume execution /// at the instruction after it. Continue, - /// Jump to another block with the given parameters, e.g.: in `brz v0, block42, [v1, v2]`, if - /// the condition is true, we continue execution at the first instruction of `block42` with the - /// values in `v1` and `v2` filling in the block parameters. + /// Jump to another block with the given parameters, e.g.: in + /// `brif v0, block42(v1, v2), block97`, if the condition is true, we continue execution at the + /// first instruction of `block42` with the values in `v1` and `v2` filling in the block + /// parameters. ContinueAt(Block, SmallVec<[V; 1]>), /// Indicates a call the given [Function] with the supplied arguments. Call(&'a Function, SmallVec<[V; 1]>), diff --git a/cranelift/reader/src/parser.rs b/cranelift/reader/src/parser.rs index e55ba1bf85..a129317b6b 100644 --- a/cranelift/reader/src/parser.rs +++ b/cranelift/reader/src/parser.rs @@ -2608,18 +2608,6 @@ impl<'a> Parser<'a> { blocks: [block_then, block_else], } } - InstructionFormat::Branch => { - let arg = self.match_value("expected SSA value control operand")?; - self.match_token(Token::Comma, "expected ',' between operands")?; - let block_num = self.match_block("expected branch destination block")?; - let args = self.parse_opt_value_list()?; - let destination = ctx.function.dfg.block_call(block_num, &args); - InstructionData::Branch { - opcode, - arg, - destination, - } - } InstructionFormat::BranchTable => { let arg = self.match_value("expected SSA value operand")?; self.match_token(Token::Comma, "expected ',' between operands")?; diff --git a/cranelift/src/bugpoint.rs b/cranelift/src/bugpoint.rs index 606cfac348..b07720bf07 100644 --- a/cranelift/src/bugpoint.rs +++ b/cranelift/src/bugpoint.rs @@ -423,7 +423,9 @@ impl Mutator for ReplaceBlockParamWithConst { for pred in cfg.pred_iter(self.block) { let dfg = &mut func.dfg; for branch in dfg.insts[pred.inst].branch_destination_mut().into_iter() { - branch.remove(param_index, &mut dfg.value_lists); + if branch.block(&dfg.value_lists) == self.block { + branch.remove(param_index, &mut dfg.value_lists); + } } } diff --git a/cranelift/tests/bugpoint_test.clif b/cranelift/tests/bugpoint_test.clif index e3509f9705..f52264543b 100644 --- a/cranelift/tests/bugpoint_test.clif +++ b/cranelift/tests/bugpoint_test.clif @@ -421,8 +421,7 @@ block1: v118 = uextend.i32 v116 v119 = icmp_imm eq v118, 0 v121 = uextend.i32 v119 - brz v121, block3 - jump block2 + brif v121, block2, block3 block2: v122 = global_value.i64 gv0 @@ -437,8 +436,7 @@ block3: v130 = uextend.i32 v128 v131 = icmp_imm eq v130, 0 v133 = uextend.i32 v131 - brz v133, block5 - jump block4 + brif v133, block4, block5 block4: v134 = global_value.i64 gv2 @@ -453,8 +451,7 @@ block5: v142 = uextend.i32 v140 v143 = icmp_imm eq v142, 0 v145 = uextend.i32 v143 - brz v145, block7 - jump block6 + brif v145, block6, block7 block6: v146 = global_value.i64 gv4 @@ -477,8 +474,7 @@ block9: v154 = uextend.i32 v153 v155 = icmp_imm eq v154, 0 v157 = uextend.i32 v155 - brz v157, block11 - jump block10 + brif v157, block10, block11 block10: v158 = global_value.i64 gv6 @@ -501,8 +497,7 @@ block13: v166 = uextend.i32 v165 v167 = icmp_imm eq v166, 0 v169 = uextend.i32 v167 - brz v169, block15 - jump block14 + brif v169, block14, block15 block14: v170 = global_value.i64 gv8 @@ -522,8 +517,7 @@ block16: v179 = uextend.i32 v177 v180 = icmp_imm eq v179, 0 v182 = uextend.i32 v180 - brz v182, block18 - jump block17 + brif v182, block17, block18 block17: v183 = global_value.i64 gv10 @@ -543,8 +537,7 @@ block18: v195 = iadd_imm.i64 v12, 8 v196 = load.i8 v195 v197 = uextend.i32 v196 - brz v197, block19 - jump block164 + brif v197, block164, block19 block164: v198 = global_value.i64 gv12 @@ -564,8 +557,7 @@ block19: v208 = iadd_imm.i64 v13, 8 v209 = load.i8 v208 v210 = uextend.i32 v209 - brz v210, block20 - jump block163 + brif v210, block163, block20 block163: v211 = global_value.i64 gv13 @@ -577,8 +569,7 @@ block20: v216 = uextend.i32 v214 v217 = icmp_imm eq v216, 0 v219 = uextend.i32 v217 - brz v219, block22 - jump block21 + brif v219, block21, block22 block21: v220 = global_value.i64 gv14 @@ -598,8 +589,7 @@ block22: v232 = iadd_imm.i64 v16, 8 v233 = load.i8 v232 v234 = uextend.i32 v233 - brz v234, block23 - jump block162 + brif v234, block162, block23 block162: v235 = global_value.i64 gv16 @@ -626,8 +616,7 @@ block24: v251 = iadd_imm.i64 v19, 8 v252 = load.i8 v251 v253 = uextend.i32 v252 - brz v253, block25 - jump block161 + brif v253, block161, block25 block161: v254 = global_value.i64 gv17 @@ -665,8 +654,7 @@ block27: v277 = iadd_imm.i64 v24, 2 v278 = load.i8 v277 v279 = uextend.i32 v278 - brz v279, block28 - jump block160 + brif v279, block160, block28 block160: v280 = global_value.i64 gv18 @@ -683,8 +671,7 @@ block28: v288 = iadd_imm.i64 v25, 2 v289 = load.i8 v288 v290 = uextend.i32 v289 - brz v290, block29 - jump block159 + brif v290, block159, block29 block159: v291 = global_value.i64 gv19 @@ -704,8 +691,7 @@ block29: v301 = iadd_imm.i64 v26, 2 v302 = load.i8 v301 v303 = uextend.i32 v302 - brz v303, block30 - jump block158 + brif v303, block158, block30 block158: v304 = global_value.i64 gv20 @@ -722,8 +708,7 @@ block30: v312 = iadd_imm.i64 v27, 2 v313 = load.i8 v312 v314 = uextend.i32 v313 - brz v314, block31 - jump block157 + brif v314, block157, block31 block157: v315 = global_value.i64 gv21 @@ -754,8 +739,7 @@ block34: block35: v322 = iconst.i8 1 v323 = uextend.i32 v322 - brz v323, block42 - jump block36 + brif v323, block36, block42 block36: v324 = iadd_imm.i64 v28, 8 @@ -772,8 +756,7 @@ block36: v334 = uextend.i32 v332 v335 = icmp_imm eq v334, 0 v337 = uextend.i32 v335 - brz v337, block38 - jump block37 + brif v337, block37, block38 block37: v338 = global_value.i64 gv22 @@ -819,8 +802,7 @@ block41: block42: v362 = iconst.i8 1 v363 = uextend.i32 v362 - brz v363, block49(v1007) - jump block43 + brif v363, block43, block49(v1007) block43: v364 = iadd_imm.i64 v28, 8 @@ -837,8 +819,7 @@ block43: v374 = uextend.i32 v372 v375 = icmp_imm eq v374, 0 v377 = uextend.i32 v375 - brz v377, block45 - jump block44 + brif v377, block44, block45 block44: v378 = global_value.i64 gv25 @@ -894,8 +875,7 @@ block49(v1006: i16): v410 = iadd_imm.i64 v51, 8 v411 = load.i8 v410 v412 = uextend.i32 v411 - brz v412, block50 - jump block156 + brif v412, block156, block50 block156: v413 = global_value.i64 gv28 @@ -918,8 +898,7 @@ block50: v423 = iadd_imm.i64 v52, 8 v424 = load.i8 v423 v425 = uextend.i32 v424 - brz v425, block51 - jump block155 + brif v425, block155, block51 block155: v426 = global_value.i64 gv29 @@ -934,8 +913,7 @@ block51: v430 = iconst.i16 0xffff_ffff_ffff_8000 v431 = icmp eq v429, v430 v433 = uextend.i32 v431 - brz v433, block52 - jump block154 + brif v433, block154, block52 block154: v434 = global_value.i64 gv30 @@ -956,8 +934,7 @@ block52: v446 = iadd_imm.i64 v53, 8 v447 = load.i8 v446 v448 = uextend.i32 v447 - brz v448, block53 - jump block153 + brif v448, block153, block53 block153: v449 = global_value.i64 gv31 @@ -978,8 +955,7 @@ block53: v461 = iadd_imm.i64 v54, 8 v462 = load.i8 v461 v463 = uextend.i32 v462 - brz v463, block54 - jump block152 + brif v463, block152, block54 block152: v464 = global_value.i64 gv32 @@ -997,8 +973,7 @@ block54: v473 = iadd_imm.i64 v55, 8 v474 = load.i8 v473 v475 = uextend.i32 v474 - brz v475, block55 - jump block151 + brif v475, block151, block55 block151: v476 = global_value.i64 gv33 @@ -1026,8 +1001,7 @@ block56: v492 = iadd_imm.i64 v57, 2 v493 = load.i8 v492 v494 = uextend.i32 v493 - brz v494, block57 - jump block150 + brif v494, block150, block57 block150: v495 = global_value.i64 gv34 @@ -1044,8 +1018,7 @@ block57: v503 = iadd_imm.i64 v58, 2 v504 = load.i8 v503 v505 = uextend.i32 v504 - brz v505, block58 - jump block149 + brif v505, block149, block58 block149: v506 = global_value.i64 gv35 @@ -1062,8 +1035,7 @@ block58: v516 = iadd_imm.i64 v59, 8 v517 = load.i8 v516 v518 = uextend.i32 v517 - brz v518, block59 - jump block148 + brif v518, block148, block59 block148: v519 = global_value.i64 gv36 @@ -1082,8 +1054,7 @@ block59: v529 = iadd_imm.i64 v60, 8 v530 = load.i8 v529 v531 = uextend.i32 v530 - brz v531, block60 - jump block147 + brif v531, block147, block60 block147: v532 = global_value.i64 gv37 @@ -1101,8 +1072,7 @@ block60: v541 = iadd_imm.i64 v61, 8 v542 = load.i8 v541 v543 = uextend.i32 v542 - brz v543, block61 - jump block146 + brif v543, block146, block61 block146: v544 = global_value.i64 gv38 @@ -1156,8 +1126,7 @@ block62(v552: i32, v1009: i64, v1013: i64, v1016: i64, v1019: i64, v1022: i16, v v554 = iconst.i32 0 v555 = icmp eq v553, v554 v557 = uextend.i32 v555 - brz v557, block63 - jump block145 + brif v557, block145, block63 block145: v558 = global_value.i64 gv39 @@ -1171,8 +1140,7 @@ block63: v564 = iconst.i32 0 v565 = icmp eq v563, v564 v567 = uextend.i32 v565 - brz v567, block64 - jump block144 + brif v567, block144, block64 block144: v568 = global_value.i64 gv40 @@ -1185,8 +1153,7 @@ block64: v1011 -> v571 v572 = iconst.i8 1 v573 = uextend.i32 v572 - brz v573, block68(v561) - jump block65 + brif v573, block65, block68(v561) block65: v575 = iconst.i32 10 @@ -1194,8 +1161,7 @@ block65: v578 = uextend.i32 v576 v579 = icmp_imm eq v578, 0 v581 = uextend.i32 v579 - brz v581, block67 - jump block66 + brif v581, block66, block67 block66: v582 = global_value.i64 gv41 @@ -1216,8 +1182,7 @@ block68(v584: i32): v592 = iadd_imm.i64 v64, 1 v593 = load.i8 v592 v594 = uextend.i32 v593 - brz v594, block69 - jump block143 + brif v594, block143, block69 block143: v595 = global_value.i64 gv43 @@ -1228,8 +1193,7 @@ block69: v598 = load.i64 v3+8 v599 = icmp.i64 ult v596, v598 v601 = uextend.i32 v599 - brnz v601, block70 - jump block142 + brif v601, block70, block142 block142: v602 = global_value.i64 gv44 @@ -1251,8 +1215,7 @@ block70: v617 = iadd_imm.i64 v65, 8 v618 = load.i8 v617 v619 = uextend.i32 v618 - brz v619, block71 - jump block141 + brif v619, block141, block71 block141: v620 = global_value.i64 gv45 @@ -1274,8 +1237,7 @@ block71: v631 = iadd_imm.i64 v66, 8 v632 = load.i8 v631 v633 = uextend.i32 v632 - brz v633, block72 - jump block140 + brif v633, block140, block72 block140: v634 = global_value.i64 gv46 @@ -1292,8 +1254,7 @@ block72: v643 = iadd_imm.i64 v67, 8 v644 = load.i8 v643 v645 = uextend.i32 v644 - brz v645, block73 - jump block139 + brif v645, block139, block73 block139: v646 = global_value.i64 gv47 @@ -1305,8 +1266,7 @@ block73: v692 -> v647 v649 = icmp ult v647, v648 v651 = uextend.i32 v649 - brz v651, block80 - jump block74 + brif v651, block74, block80 block74: v652 = load.i32 v63 @@ -1320,8 +1280,7 @@ block74: v661 = iadd_imm.i64 v68, 8 v662 = load.i8 v661 v663 = uextend.i32 v662 - brz v663, block75 - jump block138 + brif v663, block138, block75 block138: v664 = global_value.i64 gv48 @@ -1351,8 +1310,7 @@ block76: v685 = iadd_imm.i64 v74, 8 v686 = load.i8 v685 v687 = uextend.i32 v686 - brz v687, block77 - jump block137 + brif v687, block137, block77 block137: v688 = global_value.i64 gv49 @@ -1374,14 +1332,12 @@ block80: v697 = uextend.i64 v696 v698 = icmp.i64 ugt v695, v697 v700 = uextend.i32 v698 - brz v700, block96 - jump block81 + brif v700, block81, block96 block81: v701 = iconst.i8 1 v702 = uextend.i32 v701 - brz v702, block88 - jump block82 + brif v702, block82, block88 block82: v703 = global_value.i64 gv50 @@ -1397,8 +1353,7 @@ block82: v712 = uextend.i32 v710 v713 = icmp_imm eq v712, 0 v715 = uextend.i32 v713 - brz v715, block84 - jump block83 + brif v715, block83, block84 block83: v716 = global_value.i64 gv51 @@ -1444,8 +1399,7 @@ block87: block88: v740 = iconst.i8 1 v741 = uextend.i32 v740 - brz v741, block95(v1030, v1031, v1041, v1046, v1054, v1059) - jump block89 + brif v741, block89, block95(v1030, v1031, v1041, v1046, v1054, v1059) block89: v742 = global_value.i64 gv54 @@ -1461,8 +1415,7 @@ block89: v751 = uextend.i32 v749 v752 = icmp_imm eq v751, 0 v754 = uextend.i32 v752 - brz v754, block91 - jump block90 + brif v754, block90, block91 block90: v755 = global_value.i64 gv55 @@ -1520,8 +1473,7 @@ block96: v789 = iadd_imm.i64 v95, 2 v790 = load.i8 v789 v791 = uextend.i32 v790 - brz v791, block97 - jump block136 + brif v791, block136, block97 block136: v792 = global_value.i64 gv58 @@ -1533,8 +1485,7 @@ block97: v795 = iconst.i32 0 v796 = icmp eq v794, v795 v798 = uextend.i32 v796 - brz v798, block98 - jump block135 + brif v798, block135, block98 block135: v799 = global_value.i64 gv59 @@ -1575,8 +1526,7 @@ block99(v804: i64, v1035: i64, v1037: i64, v1039: i64, v1044: i64, v1052: i16, v v812 = iadd_imm.i64 v96, 8 v813 = load.i8 v812 v814 = uextend.i32 v813 - brz v814, block100 - jump block134 + brif v814, block134, block100 block134: v815 = global_value.i64 gv60 @@ -1597,8 +1547,7 @@ block100: v825 = iadd_imm.i64 v97, 8 v826 = load.i8 v825 v827 = uextend.i32 v826 - brz v827, block101 - jump block133 + brif v827, block133, block101 block133: v828 = global_value.i64 gv61 @@ -1621,8 +1570,7 @@ block101: v838 = iadd_imm.i64 v98, 8 v839 = load.i8 v838 v840 = uextend.i32 v839 - brz v840, block102 - jump block132 + brif v840, block132, block102 block132: v841 = global_value.i64 gv62 @@ -1643,8 +1591,7 @@ block102: v851 = iadd_imm.i64 v99, 8 v852 = load.i8 v851 v853 = uextend.i32 v852 - brz v853, block103 - jump block131 + brif v853, block131, block103 block131: v854 = global_value.i64 gv63 @@ -1663,8 +1610,7 @@ block103: v865 = iadd_imm.i64 v100, 8 v866 = load.i8 v865 v867 = uextend.i32 v866 - brz v867, block104 - jump block130 + brif v867, block130, block104 block130: v868 = global_value.i64 gv64 @@ -1682,8 +1628,7 @@ block104: v877 = iadd_imm.i64 v101, 8 v878 = load.i8 v877 v879 = uextend.i32 v878 - brz v879, block105 - jump block129 + brif v879, block129, block105 block129: v880 = global_value.i64 gv65 @@ -1699,8 +1644,7 @@ block105: v1048 -> v883 v884 = iconst.i8 1 v885 = uextend.i32 v884 - brz v885, block109(v855) - jump block106 + brif v885, block106, block109(v855) block106: v887 = iconst.i64 10 @@ -1708,8 +1652,7 @@ block106: v890 = uextend.i32 v888 v891 = icmp_imm eq v890, 0 v893 = uextend.i32 v891 - brz v893, block108 - jump block107 + brif v893, block107, block108 block107: v894 = global_value.i64 gv66 @@ -1730,8 +1673,7 @@ block109(v896: i64): v904 = iadd_imm.i64 v102, 1 v905 = load.i8 v904 v906 = uextend.i32 v905 - brz v906, block110 - jump block128 + brif v906, block128, block110 block128: v907 = global_value.i64 gv68 @@ -1742,8 +1684,7 @@ block110: v910 = load.i64 v3+8 v911 = icmp.i64 ult v908, v910 v913 = uextend.i32 v911 - brnz v913, block111 - jump block127 + brif v913, block111, block127 block127: v914 = global_value.i64 gv69 @@ -1765,8 +1706,7 @@ block111: v929 = iadd_imm.i64 v103, 8 v930 = load.i8 v929 v931 = uextend.i32 v930 - brz v931, block112 - jump block126 + brif v931, block126, block112 block126: v932 = global_value.i64 gv70 @@ -1778,8 +1718,7 @@ block112: v1047 -> v933 v936 = icmp.i64 ult v934, v935 v938 = uextend.i32 v936 - brz v938, block119 - jump block113 + brif v938, block113, block119 block113: v940 = iconst.i64 1 @@ -1792,8 +1731,7 @@ block113: v947 = iadd_imm.i64 v104, 8 v948 = load.i8 v947 v949 = uextend.i32 v948 - brz v949, block114 - jump block125 + brif v949, block125, block114 block125: v950 = global_value.i64 gv71 @@ -1823,8 +1761,7 @@ block115: v971 = iadd_imm.i64 v110, 8 v972 = load.i8 v971 v973 = uextend.i32 v972 - brz v973, block116 - jump block123 + brif v973, block123, block116 block123: v974 = global_value.i64 gv72 @@ -1841,8 +1778,7 @@ block116: v983 = iadd_imm.i64 v111, 8 v984 = load.i8 v983 v985 = uextend.i32 v984 - brz v985, block117 - jump block122 + brif v985, block122, block117 block122: v986 = global_value.i64 gv73 @@ -1867,8 +1803,7 @@ block119: v1000 = iadd_imm.i64 v112, 2 v1001 = load.i8 v1000 v1002 = uextend.i32 v1001 - brz v1002, block120 - jump block121 + brif v1002, block121, block120 block121: v1003 = global_value.i64 gv74 diff --git a/crates/cranelift/src/func_environ.rs b/crates/cranelift/src/func_environ.rs index 70483111ca..db0e521fa0 100644 --- a/crates/cranelift/src/func_environ.rs +++ b/crates/cranelift/src/func_environ.rs @@ -549,8 +549,9 @@ impl<'module_environment> FuncEnvironment<'module_environment> { let cmp = builder .ins() .icmp(IntCC::SignedGreaterThanOrEqual, fuel, zero); - builder.ins().brnz(cmp, out_of_gas_block, &[]); - builder.ins().jump(continuation_block, &[]); + builder + .ins() + .brif(cmp, out_of_gas_block, &[], continuation_block, &[]); builder.seal_block(out_of_gas_block); // If we ran out of gas then we call our out-of-gas intrinsic and it @@ -658,8 +659,9 @@ impl<'module_environment> FuncEnvironment<'module_environment> { cur_epoch_value, epoch_deadline, ); - builder.ins().brnz(cmp, new_epoch_block, &[]); - builder.ins().jump(continuation_block, &[]); + builder + .ins() + .brif(cmp, new_epoch_block, &[], continuation_block, &[]); builder.seal_block(new_epoch_block); // In the "new epoch block", we've noticed that the epoch has @@ -677,10 +679,13 @@ impl<'module_environment> FuncEnvironment<'module_environment> { cur_epoch_value, fresh_epoch_deadline, ); - builder - .ins() - .brnz(fresh_cmp, new_epoch_doublecheck_block, &[]); - builder.ins().jump(continuation_block, &[]); + builder.ins().brif( + fresh_cmp, + new_epoch_doublecheck_block, + &[], + continuation_block, + &[], + ); builder.seal_block(new_epoch_doublecheck_block); builder.switch_to_block(new_epoch_doublecheck_block); @@ -784,8 +789,9 @@ impl<'module_environment> FuncEnvironment<'module_environment> { let result_param = builder.append_block_param(continuation_block, pointer_type); builder.set_cold_block(null_block); - builder.ins().brz(value, null_block, &[]); - builder.ins().jump(continuation_block, &[value_masked]); + builder + .ins() + .brif(value, continuation_block, &[value_masked], null_block, &[]); builder.seal_block(null_block); builder.switch_to_block(null_block); @@ -994,8 +1000,9 @@ impl<'module_environment> cranelift_wasm::FuncEnvironment for FuncEnvironment<'m let elem = builder.ins().load(reference_type, flags, elem_addr, 0); let elem_is_null = builder.ins().is_null(elem); - builder.ins().brnz(elem_is_null, continue_block, &[]); - builder.ins().jump(non_null_elem_block, &[]); + builder + .ins() + .brif(elem_is_null, continue_block, &[], non_null_elem_block, &[]); // Load the `VMExternRefActivationsTable::next` bump finger and // the `VMExternRefActivationsTable::end` bump boundary. @@ -1025,8 +1032,9 @@ impl<'module_environment> cranelift_wasm::FuncEnvironment for FuncEnvironment<'m // builtin to do a GC and insert this reference into the // just-swept table for us. let at_capacity = builder.ins().icmp(ir::condcodes::IntCC::Equal, next, end); - builder.ins().brnz(at_capacity, gc_block, &[]); - builder.ins().jump(no_gc_block, &[]); + builder + .ins() + .brif(at_capacity, gc_block, &[], no_gc_block, &[]); builder.switch_to_block(gc_block); let builtin_idx = BuiltinFunctionIndex::activations_table_insert_with_gc(); let builtin_sig = self @@ -1161,10 +1169,13 @@ impl<'module_environment> cranelift_wasm::FuncEnvironment for FuncEnvironment<'m // deallocate `value` and leave it in the table, leading to use // after free. let value_is_null = builder.ins().is_null(value); - builder - .ins() - .brnz(value_is_null, check_current_elem_block, &[]); - builder.ins().jump(inc_ref_count_block, &[]); + builder.ins().brif( + value_is_null, + check_current_elem_block, + &[], + inc_ref_count_block, + &[], + ); builder.switch_to_block(inc_ref_count_block); self.mutate_externref_ref_count(builder, value, 1); builder.ins().jump(check_current_elem_block, &[]); @@ -1190,17 +1201,21 @@ impl<'module_environment> cranelift_wasm::FuncEnvironment for FuncEnvironment<'m builder .ins() .icmp_imm(ir::condcodes::IntCC::Equal, current_elem, 0); - builder - .ins() - .brz(current_elem_is_null, dec_ref_count_block, &[]); - builder.ins().jump(continue_block, &[]); + builder.ins().brif( + current_elem_is_null, + continue_block, + &[], + dec_ref_count_block, + &[], + ); builder.switch_to_block(dec_ref_count_block); let prev_ref_count = self.mutate_externref_ref_count(builder, current_elem, -1); let one = builder.ins().iconst(pointer_type, 1); let cond = builder.ins().icmp(IntCC::Equal, one, prev_ref_count); - builder.ins().brnz(cond, drop_block, &[]); - builder.ins().jump(continue_block, &[]); + builder + .ins() + .brif(cond, drop_block, &[], continue_block, &[]); // Call the `drop_externref` builtin to (you guessed it) drop // the `externref`.