warning: unused imports: `Inst`, `Operand` --> /home/tatsu/projects/regalloc/regalloc2/src/ion/fast_alloc.rs:9:54 | 9 | cfg::CFGInfo, Allocation, Block, Edit, Function, Inst, MachineEnv, Operand, OperandConstraint, | ^^^^ ^^^^^^^ | = note: `#[warn(unused_imports)]` on by default warning: unreachable statement --> /home/tatsu/projects/regalloc/regalloc2/src/ion/fast_alloc.rs:513:33 | 512 | ... panic!("reftype has fixed use when its required to be on stack"); | ---------------------------------------------------------------- any code following this expression is unreachable 513 | ... return Err(RegAllocError::TooManyLiveRegs); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ unreachable statement | = note: `#[warn(unreachable_code)]` on by default warning: unreachable statement --> /home/tatsu/projects/regalloc/regalloc2/src/ion/fast_alloc.rs:521:37 | 520 | ... panic!("fixed reg late use would overwrite another fixed reg use/early write"); | ------------------------------------------------------------------------------ any code following this expression is unreachable 521 | ... return Err(RegAllocError::TooManyLiveRegs); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ unreachable statement warning: unreachable statement --> /home/tatsu/projects/regalloc/regalloc2/src/ion/fast_alloc.rs:530:37 | 529 | ... panic!("fixed late use would be clobbered"); | ------------------------------------------- any code following this expression is unreachable 530 | ... return Err(RegAllocError::TooManyLiveRegs); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ unreachable statement warning: unreachable statement --> /home/tatsu/projects/regalloc/regalloc2/src/ion/fast_alloc.rs:544:37 | 543 | ... panic!("fixed late def would overwrite late use/early def"); | ----------------------------------------------------------- any code following this expression is unreachable 544 | ... return Err(RegAllocError::TooManyLiveRegs); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ unreachable statement warning: unreachable statement --> /home/tatsu/projects/regalloc/regalloc2/src/ion/fast_alloc.rs:552:37 | 551 | ... panic!("early def shares reg or is clobbered"); | ---------------------------------------------- any code following this expression is unreachable 552 | ... return Err(RegAllocError::TooManyLiveRegs); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ unreachable statement warning: unreachable statement --> /home/tatsu/projects/regalloc/regalloc2/src/ion/fast_alloc.rs:677:33 | 676 | ... panic!("reftype required to be in reg at safepoint"); | ---------------------------------------------------- any code following this expression is unreachable 677 | ... return Err(RegAllocError::TooManyLiveRegs); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ unreachable statement warning: unreachable statement --> /home/tatsu/projects/regalloc/regalloc2/src/ion/fast_alloc.rs:702:21 | 701 | panic!("Out of registers: {:?}", regs_allocated); | ------------------------------------------------ any code following this expression is unreachable 702 | return Err(RegAllocError::TooManyLiveRegs); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ unreachable statement warning: unreachable statement --> /home/tatsu/projects/regalloc/regalloc2/src/ion/fast_alloc.rs:754:21 | 753 | panic!("out of registers"); | -------------------------- any code following this expression is unreachable 754 | return Err(RegAllocError::TooManyLiveRegs); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ unreachable statement warning: unused variable: `func` --> /home/tatsu/projects/regalloc/regalloc2/src/ion/fast_alloc.rs:42:30 | 42 | pub fn init(func: &F, mach_env: &MachineEnv, cfg: &CFGInfo) -> Self { | ^^^^ help: if this is intentional, prefix it with an underscore: `_func` | = note: `#[warn(unused_variables)]` on by default warning: `regalloc2` (lib) generated 10 warnings warning: unused imports: `BlockCall`, `FuncRef`, `InstructionData`, `Opcode`, `ValueList`, `function` --> src/main.rs:1:30 | 1 | use cranelift::codegen::ir::{function, BlockCall, FuncRef, InstructionData, Opcode, ValueList}; | ^^^^^^^^ ^^^^^^^^^ ^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^ ^^^^^^^^^ | = note: `#[warn(unused_imports)]` on by default warning: unused import: `cranelift::codegen::isa` --> src/main.rs:2:5 | 2 | use cranelift::codegen::isa; | ^^^^^^^^^^^^^^^^^^^^^^^ warning: unused import: `cranelift_frontend::FunctionBuilderContext` --> src/main.rs:5:5 | 5 | use cranelift_frontend::FunctionBuilderContext; | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ warning: unused imports: `DataDescription`, `FuncId` --> src/main.rs:7:24 | 7 | use cranelift_module::{DataDescription, FuncId, Linkage, Module}; | ^^^^^^^^^^^^^^^ ^^^^^^ warning: unused import: `cranelift::prelude` --> src/main.rs:4:5 | 4 | use cranelift::prelude::*; | ^^^^^^^^^^^^^^^^^^ warning: `cranelift_test` (bin "cranelift_test") generated 5 warnings Finished dev [unoptimized + debuginfo] target(s) in 0.03s Running `target/debug/cranelift_test tests/bad_br.clif` DEBUG cranelift_codegen::timing > timing: Starting Parsing textual Cranelift IR, (during ) DEBUG cranelift_codegen::timing > timing: Starting Parsing textual Cranelift IR, (during Parsing textual Cranelift IR) DEBUG cranelift_codegen::timing > timing: Ending Parsing textual Cranelift IR DEBUG cranelift_codegen::timing > timing: Ending Parsing textual Cranelift IR INFO cranelift_jit::backend > defining function funcid0: function u0:2(i32) -> i32 system_v { block0(v0: i32): v1 = iconst.i32 1 v2 = iconst.i32 2 v3 = iconst.i32 3 v4 = iconst.i32 4 br_table v0, block1(v4), [block1(v1), block1(v2), block1(v2), block1(v3)] ; v4 = 4, v1 = 1, v2 = 2, v2 = 2, v3 = 3 block1(v5: i32): return v5 } DEBUG cranelift_codegen::timing > timing: Starting Compilation passes, (during ) DEBUG cranelift_codegen::timing > timing: Starting Verify Cranelift IR, (during Compilation passes) DEBUG cranelift_codegen::timing > timing: Starting Control flow graph, (during Verify Cranelift IR) DEBUG cranelift_codegen::timing > timing: Ending Control flow graph DEBUG cranelift_codegen::timing > timing: Starting Dominator tree, (during Verify Cranelift IR) DEBUG cranelift_codegen::timing > timing: Ending Dominator tree DEBUG cranelift_codegen::timing > timing: Ending Verify Cranelift IR DEBUG cranelift_codegen::context > Number of CLIF instructions to optimize: 6 DEBUG cranelift_codegen::context > Number of CLIF blocks to optimize: 2 TRACE cranelift_codegen::context > Optimizing (opt level Speed): function u0:2(i32) -> i32 system_v { block0(v0: i32): v1 = iconst.i32 1 v2 = iconst.i32 2 v3 = iconst.i32 3 v4 = iconst.i32 4 br_table v0, block1(v4), [block1(v1), block1(v2), block1(v2), block1(v3)] ; v4 = 4, v1 = 1, v2 = 2, v2 = 2, v3 = 3 block1(v5: i32): return v5 } DEBUG cranelift_codegen::timing > timing: Starting Control flow graph, (during Compilation passes) DEBUG cranelift_codegen::timing > timing: Ending Control flow graph TRACE cranelift_codegen::legalizer > Pre-legalization function: function u0:2(i32) -> i32 system_v { block0(v0: i32): v1 = iconst.i32 1 v2 = iconst.i32 2 v3 = iconst.i32 3 v4 = iconst.i32 4 br_table v0, block1(v4), [block1(v1), block1(v2), block1(v2), block1(v3)] ; v4 = 4, v1 = 1, v2 = 2, v2 = 2, v3 = 3 block1(v5: i32): return v5 } TRACE cranelift_codegen::legalizer > Post-legalization function: function u0:2(i32) -> i32 system_v { block0(v0: i32): v1 = iconst.i32 1 v2 = iconst.i32 2 v3 = iconst.i32 3 v4 = iconst.i32 4 br_table v0, block1(v4), [block1(v1), block1(v2), block1(v2), block1(v3)] ; v4 = 4, v1 = 1, v2 = 2, v2 = 2, v3 = 3 block1(v5: i32): return v5 } DEBUG cranelift_codegen::timing > timing: Starting Verify Cranelift IR, (during Compilation passes) DEBUG cranelift_codegen::timing > timing: Starting Control flow graph, (during Verify Cranelift IR) DEBUG cranelift_codegen::timing > timing: Ending Control flow graph DEBUG cranelift_codegen::timing > timing: Starting Dominator tree, (during Verify Cranelift IR) DEBUG cranelift_codegen::timing > timing: Ending Dominator tree DEBUG cranelift_codegen::timing > timing: Ending Verify Cranelift IR DEBUG cranelift_codegen::timing > timing: Starting Dominator tree, (during Compilation passes) DEBUG cranelift_codegen::timing > timing: Ending Dominator tree DEBUG cranelift_codegen::timing > timing: Starting Remove unreachable blocks, (during Compilation passes) DEBUG cranelift_codegen::timing > timing: Ending Remove unreachable blocks DEBUG cranelift_codegen::timing > timing: Starting Verify Cranelift IR, (during Compilation passes) DEBUG cranelift_codegen::timing > timing: Starting Control flow graph, (during Verify Cranelift IR) DEBUG cranelift_codegen::timing > timing: Ending Control flow graph DEBUG cranelift_codegen::timing > timing: Starting Dominator tree, (during Verify Cranelift IR) DEBUG cranelift_codegen::timing > timing: Ending Dominator tree DEBUG cranelift_codegen::timing > timing: Ending Verify Cranelift IR DEBUG cranelift_codegen::timing > timing: Starting Dead code elimination, (during Compilation passes) DEBUG cranelift_codegen::timing > timing: Ending Dead code elimination DEBUG cranelift_codegen::timing > timing: Starting Verify Cranelift IR, (during Compilation passes) DEBUG cranelift_codegen::timing > timing: Starting Control flow graph, (during Verify Cranelift IR) DEBUG cranelift_codegen::timing > timing: Ending Control flow graph DEBUG cranelift_codegen::timing > timing: Starting Dominator tree, (during Verify Cranelift IR) DEBUG cranelift_codegen::timing > timing: Ending Dominator tree DEBUG cranelift_codegen::timing > timing: Ending Verify Cranelift IR DEBUG cranelift_codegen::timing > timing: Starting Remove constant phi-nodes, (during Compilation passes) DEBUG cranelift_codegen::remove_constant_phis > do_remove_constant_phis: done, 2 iters. 1 formals, of which 0 const. DEBUG cranelift_codegen::timing > timing: Ending Remove constant phi-nodes DEBUG cranelift_codegen::timing > timing: Starting Verify Cranelift IR, (during Compilation passes) DEBUG cranelift_codegen::timing > timing: Starting Control flow graph, (during Verify Cranelift IR) DEBUG cranelift_codegen::timing > timing: Ending Control flow graph DEBUG cranelift_codegen::timing > timing: Starting Dominator tree, (during Verify Cranelift IR) DEBUG cranelift_codegen::timing > timing: Ending Dominator tree DEBUG cranelift_codegen::timing > timing: Ending Verify Cranelift IR DEBUG cranelift_codegen::timing > timing: Starting Egraph based optimizations, (during Compilation passes) TRACE cranelift_codegen::context > About to optimize with egraph phase: function u0:2(i32) -> i32 system_v { block0(v0: i32): v1 = iconst.i32 1 v2 = iconst.i32 2 v3 = iconst.i32 3 v4 = iconst.i32 4 br_table v0, block1(v4), [block1(v1), block1(v2), block1(v2), block1(v3)] ; v4 = 4, v1 = 1, v2 = 2, v2 = 2, v3 = 3 block1(v5: i32): return v5 } DEBUG cranelift_codegen::timing > timing: Starting Loop analysis, (during Egraph based optimizations) DEBUG cranelift_codegen::timing > timing: Ending Loop analysis TRACE cranelift_codegen::alias_analysis > alias analysis: input is: function u0:2(i32) -> i32 system_v { block0(v0: i32): v1 = iconst.i32 1 v2 = iconst.i32 2 v3 = iconst.i32 3 v4 = iconst.i32 4 br_table v0, block1(v4), [block1(v1), block1(v2), block1(v2), block1(v3)] ; v4 = 4, v1 = 1, v2 = 2, v2 = 2, v3 = 3 block1(v5: i32): return v5 } TRACE cranelift_codegen::alias_analysis > alias analysis: input to block0 is LastStores { heap: None, table: None, vmctx: None, other: None } TRACE cranelift_codegen::alias_analysis > after inst0: state is LastStores { heap: None, table: None, vmctx: None, other: None } TRACE cranelift_codegen::alias_analysis > after inst1: state is LastStores { heap: None, table: None, vmctx: None, other: None } TRACE cranelift_codegen::alias_analysis > after inst2: state is LastStores { heap: None, table: None, vmctx: None, other: None } TRACE cranelift_codegen::alias_analysis > after inst3: state is LastStores { heap: None, table: None, vmctx: None, other: None } TRACE cranelift_codegen::alias_analysis > after inst4: state is LastStores { heap: None, table: None, vmctx: None, other: None } TRACE cranelift_codegen::alias_analysis > alias analysis: input to block1 is LastStores { heap: None, table: None, vmctx: None, other: None } TRACE cranelift_codegen::alias_analysis > after inst5: state is LastStores { heap: None, table: None, vmctx: None, other: None } TRACE cranelift_codegen::egraph > Processing block block0 TRACE cranelift_codegen::egraph > creating initial singleton eclass for blockparam v0 TRACE cranelift_codegen::egraph > Processing inst inst0 TRACE cranelift_codegen::egraph > creating initial singleton eclass for v1 TRACE cranelift_codegen::egraph > Calling into ISLE with original value v1 TRACE cranelift_codegen::opts > iter: value v1 TRACE cranelift_codegen::opts > -> value of type i32 TRACE cranelift_codegen::opts > remat: v1 TRACE cranelift_codegen::egraph > Returned from ISLE for v1, got v1 TRACE cranelift_codegen::egraph > -> same as orig value; skipping TRACE cranelift_codegen::egraph > Processing inst inst1 TRACE cranelift_codegen::egraph > creating initial singleton eclass for v2 TRACE cranelift_codegen::egraph > Calling into ISLE with original value v2 TRACE cranelift_codegen::opts > iter: value v2 TRACE cranelift_codegen::opts > -> value of type i32 TRACE cranelift_codegen::opts > remat: v2 TRACE cranelift_codegen::egraph > Returned from ISLE for v2, got v2 TRACE cranelift_codegen::egraph > -> same as orig value; skipping TRACE cranelift_codegen::egraph > Processing inst inst2 TRACE cranelift_codegen::egraph > creating initial singleton eclass for v3 TRACE cranelift_codegen::egraph > Calling into ISLE with original value v3 TRACE cranelift_codegen::opts > iter: value v3 TRACE cranelift_codegen::opts > -> value of type i32 TRACE cranelift_codegen::opts > remat: v3 TRACE cranelift_codegen::egraph > Returned from ISLE for v3, got v3 TRACE cranelift_codegen::egraph > -> same as orig value; skipping TRACE cranelift_codegen::egraph > Processing inst inst3 TRACE cranelift_codegen::egraph > creating initial singleton eclass for v4 TRACE cranelift_codegen::egraph > Calling into ISLE with original value v4 TRACE cranelift_codegen::opts > iter: value v4 TRACE cranelift_codegen::opts > -> value of type i32 TRACE cranelift_codegen::opts > remat: v4 TRACE cranelift_codegen::egraph > Returned from ISLE for v4, got v4 TRACE cranelift_codegen::egraph > -> same as orig value; skipping TRACE cranelift_codegen::egraph > Processing inst inst4 TRACE cranelift_codegen::egraph > rewriting arg v0 of inst inst4 to v0 TRACE cranelift_codegen::egraph > rewriting arg v4 of inst inst4 to v4 TRACE cranelift_codegen::egraph > rewriting arg v1 of inst inst4 to v1 TRACE cranelift_codegen::egraph > rewriting arg v2 of inst inst4 to v2 TRACE cranelift_codegen::egraph > rewriting arg v2 of inst inst4 to v2 TRACE cranelift_codegen::egraph > rewriting arg v3 of inst inst4 to v3 TRACE cranelift_codegen::alias_analysis > alias analysis: scanning at inst4 with state LastStores { heap: None, table: None, vmctx: None, other: None } (BranchTable { opcode: BrTable, arg: v0, table: jt0 }) TRACE cranelift_codegen::egraph > Processing block block1 TRACE cranelift_codegen::egraph > creating initial singleton eclass for blockparam v5 TRACE cranelift_codegen::egraph > Processing inst inst5 TRACE cranelift_codegen::egraph > rewriting arg v5 of inst inst5 to v5 TRACE cranelift_codegen::alias_analysis > alias analysis: scanning at inst5 with state LastStores { heap: None, table: None, vmctx: None, other: None } (MultiAry { opcode: Return, args: EntityList { index: 45, unused: PhantomData } }) TRACE cranelift_codegen::egraph > egraph built: function u0:2(i32) -> i32 system_v { block0(v0: i32): br_table v0, block1(v4), [block1(v1), block1(v2), block1(v2), block1(v3)] ; v4 = 4, v1 = 1, v2 = 2, v2 = 2, v3 = 3 block1(v5: i32): return v5 } TRACE cranelift_codegen::egraph > -> v0 = Param(block0, 0) TRACE cranelift_codegen::egraph > -> v1 = Result(inst0, 0) TRACE cranelift_codegen::egraph > -> inst0 = UnaryImm { opcode: Iconst, imm: Imm64(1) } TRACE cranelift_codegen::egraph > -> v2 = Result(inst1, 0) TRACE cranelift_codegen::egraph > -> inst1 = UnaryImm { opcode: Iconst, imm: Imm64(2) } TRACE cranelift_codegen::egraph > -> v3 = Result(inst2, 0) TRACE cranelift_codegen::egraph > -> inst2 = UnaryImm { opcode: Iconst, imm: Imm64(3) } TRACE cranelift_codegen::egraph > -> v4 = Result(inst3, 0) TRACE cranelift_codegen::egraph > -> inst3 = UnaryImm { opcode: Iconst, imm: Imm64(4) } TRACE cranelift_codegen::egraph > -> v5 = Param(block1, 0) TRACE cranelift_codegen::egraph > stats: Stats { pure_inst: 4, pure_inst_deduped: 0, skeleton_inst: 2, alias_analysis_removed: 0, new_inst: 0, union: 0, subsume: 0, remat: 4, rewrite_rule_invoked: 4, rewrite_depth_limit: 0, elaborate_visit_node: 0, elaborate_memoize_hit: 0, elaborate_memoize_miss: 0, elaborate_memoize_miss_remat: 0, elaborate_licm_hoist: 0, elaborate_func: 0, elaborate_func_pre_insts: 0, elaborate_func_post_insts: 0 } TRACE cranelift_codegen::egraph::elaborate > computing best for value v0 def Param(block0, 0) TRACE cranelift_codegen::egraph::elaborate > best for eclass v0: (Cost(0), v0) TRACE cranelift_codegen::egraph::elaborate > computing best for value v1 def Result(inst0, 0) TRACE cranelift_codegen::egraph::elaborate > -> value v1: result, computing cost TRACE cranelift_codegen::egraph::elaborate > best for eclass v1: (Cost(0), v1) TRACE cranelift_codegen::egraph::elaborate > computing best for value v2 def Result(inst1, 0) TRACE cranelift_codegen::egraph::elaborate > -> value v2: result, computing cost TRACE cranelift_codegen::egraph::elaborate > best for eclass v2: (Cost(0), v2) TRACE cranelift_codegen::egraph::elaborate > computing best for value v3 def Result(inst2, 0) TRACE cranelift_codegen::egraph::elaborate > -> value v3: result, computing cost TRACE cranelift_codegen::egraph::elaborate > best for eclass v3: (Cost(0), v3) TRACE cranelift_codegen::egraph::elaborate > computing best for value v4 def Result(inst3, 0) TRACE cranelift_codegen::egraph::elaborate > -> value v4: result, computing cost TRACE cranelift_codegen::egraph::elaborate > best for eclass v4: (Cost(0), v4) TRACE cranelift_codegen::egraph::elaborate > computing best for value v5 def Param(block1, 0) TRACE cranelift_codegen::egraph::elaborate > best for eclass v5: (Cost(0), v5) TRACE cranelift_codegen::egraph::elaborate > elaborate_block: block block0 TRACE cranelift_codegen::egraph::elaborate > start_block: block block0 with idom None at loop depth 0 scope depth 1 TRACE cranelift_codegen::egraph::elaborate > block block0: loop stack is [] TRACE cranelift_codegen::egraph::elaborate > elaborating inst inst4 with results [] TRACE cranelift_codegen::egraph::elaborate > -> inserting before inst4 TRACE cranelift_codegen::egraph::elaborate > -> arg v0 TRACE cranelift_codegen::egraph::elaborate > elaborate: value v0 canonical v0 before inst4 TRACE cranelift_codegen::egraph::elaborate > looking up best value for v0 TRACE cranelift_codegen::egraph::elaborate > elaborate: value v0 -> best v0 TRACE cranelift_codegen::egraph::elaborate > -> not present in map; remat = false TRACE cranelift_codegen::egraph::elaborate > -> value v0 is a blockparam TRACE cranelift_codegen::egraph::elaborate > -> rewrote arg to ElaboratedValue { in_block: block0, value: v0 } TRACE cranelift_codegen::egraph::elaborate > -> arg v4 TRACE cranelift_codegen::egraph::elaborate > elaborate: value v4 canonical v4 before inst4 TRACE cranelift_codegen::egraph::elaborate > looking up best value for v4 TRACE cranelift_codegen::egraph::elaborate > elaborate: value v4 -> best v4 TRACE cranelift_codegen::egraph::elaborate > -> not present in map; remat = true TRACE cranelift_codegen::egraph::elaborate > -> value v4 is result 0 of inst3 TRACE cranelift_codegen::egraph::elaborate > -> result 0 of inst UnaryImm { opcode: Iconst, imm: Imm64(4) } TRACE cranelift_codegen::egraph::elaborate > PendingInst: inst3 result 0 args 0 remat true before inst4 TRACE cranelift_codegen::egraph::elaborate > -> loop hoist level: 0; cur loop depth: 0, loop_stack: [] TRACE cranelift_codegen::egraph::elaborate > -> decided to place: before inst4 insert_block block0 TRACE cranelift_codegen::egraph::elaborate > need inst inst3 before inst4 TRACE cranelift_codegen::egraph::elaborate > -> no location; using original inst TRACE cranelift_codegen::egraph::elaborate > -> inserting identity mapping for v4 TRACE cranelift_codegen::egraph::elaborate > -> rewrote arg to ElaboratedValue { in_block: block0, value: v4 } TRACE cranelift_codegen::egraph::elaborate > -> arg v1 TRACE cranelift_codegen::egraph::elaborate > elaborate: value v1 canonical v1 before inst4 TRACE cranelift_codegen::egraph::elaborate > looking up best value for v1 TRACE cranelift_codegen::egraph::elaborate > elaborate: value v1 -> best v1 TRACE cranelift_codegen::egraph::elaborate > -> not present in map; remat = true TRACE cranelift_codegen::egraph::elaborate > -> value v1 is result 0 of inst0 TRACE cranelift_codegen::egraph::elaborate > -> result 0 of inst UnaryImm { opcode: Iconst, imm: Imm64(1) } TRACE cranelift_codegen::egraph::elaborate > PendingInst: inst0 result 0 args 0 remat true before inst4 TRACE cranelift_codegen::egraph::elaborate > -> loop hoist level: 0; cur loop depth: 0, loop_stack: [] TRACE cranelift_codegen::egraph::elaborate > -> decided to place: before inst4 insert_block block0 TRACE cranelift_codegen::egraph::elaborate > need inst inst0 before inst4 TRACE cranelift_codegen::egraph::elaborate > -> no location; using original inst TRACE cranelift_codegen::egraph::elaborate > -> inserting identity mapping for v1 TRACE cranelift_codegen::egraph::elaborate > -> rewrote arg to ElaboratedValue { in_block: block0, value: v1 } TRACE cranelift_codegen::egraph::elaborate > -> arg v2 TRACE cranelift_codegen::egraph::elaborate > elaborate: value v2 canonical v2 before inst4 TRACE cranelift_codegen::egraph::elaborate > looking up best value for v2 TRACE cranelift_codegen::egraph::elaborate > elaborate: value v2 -> best v2 TRACE cranelift_codegen::egraph::elaborate > -> not present in map; remat = true TRACE cranelift_codegen::egraph::elaborate > -> value v2 is result 0 of inst1 TRACE cranelift_codegen::egraph::elaborate > -> result 0 of inst UnaryImm { opcode: Iconst, imm: Imm64(2) } TRACE cranelift_codegen::egraph::elaborate > PendingInst: inst1 result 0 args 0 remat true before inst4 TRACE cranelift_codegen::egraph::elaborate > -> loop hoist level: 0; cur loop depth: 0, loop_stack: [] TRACE cranelift_codegen::egraph::elaborate > -> decided to place: before inst4 insert_block block0 TRACE cranelift_codegen::egraph::elaborate > need inst inst1 before inst4 TRACE cranelift_codegen::egraph::elaborate > -> no location; using original inst TRACE cranelift_codegen::egraph::elaborate > -> inserting identity mapping for v2 TRACE cranelift_codegen::egraph::elaborate > -> rewrote arg to ElaboratedValue { in_block: block0, value: v2 } TRACE cranelift_codegen::egraph::elaborate > -> arg v2 TRACE cranelift_codegen::egraph::elaborate > elaborate: value v2 canonical v2 before inst4 TRACE cranelift_codegen::egraph::elaborate > looking up best value for v2 TRACE cranelift_codegen::egraph::elaborate > elaborate: value v2 -> best v2 TRACE cranelift_codegen::egraph::elaborate > elaborate: value v2 -> ElaboratedValue { in_block: block0, value: v2 } TRACE cranelift_codegen::egraph::elaborate > -> rewrote arg to ElaboratedValue { in_block: block0, value: v2 } TRACE cranelift_codegen::egraph::elaborate > -> arg v3 TRACE cranelift_codegen::egraph::elaborate > elaborate: value v3 canonical v3 before inst4 TRACE cranelift_codegen::egraph::elaborate > looking up best value for v3 TRACE cranelift_codegen::egraph::elaborate > elaborate: value v3 -> best v3 TRACE cranelift_codegen::egraph::elaborate > -> not present in map; remat = true TRACE cranelift_codegen::egraph::elaborate > -> value v3 is result 0 of inst2 TRACE cranelift_codegen::egraph::elaborate > -> result 0 of inst UnaryImm { opcode: Iconst, imm: Imm64(3) } TRACE cranelift_codegen::egraph::elaborate > PendingInst: inst2 result 0 args 0 remat true before inst4 TRACE cranelift_codegen::egraph::elaborate > -> loop hoist level: 0; cur loop depth: 0, loop_stack: [] TRACE cranelift_codegen::egraph::elaborate > -> decided to place: before inst4 insert_block block0 TRACE cranelift_codegen::egraph::elaborate > need inst inst2 before inst4 TRACE cranelift_codegen::egraph::elaborate > -> no location; using original inst TRACE cranelift_codegen::egraph::elaborate > -> inserting identity mapping for v3 TRACE cranelift_codegen::egraph::elaborate > -> rewrote arg to ElaboratedValue { in_block: block0, value: v3 } TRACE cranelift_codegen::egraph::elaborate > elaborate_block: block block1 TRACE cranelift_codegen::egraph::elaborate > start_block: block block1 with idom Some(block0) at loop depth 0 scope depth 2 TRACE cranelift_codegen::egraph::elaborate > block block1: loop stack is [] TRACE cranelift_codegen::egraph::elaborate > elaborating inst inst5 with results [] TRACE cranelift_codegen::egraph::elaborate > -> inserting before inst5 TRACE cranelift_codegen::egraph::elaborate > -> arg v5 TRACE cranelift_codegen::egraph::elaborate > elaborate: value v5 canonical v5 before inst5 TRACE cranelift_codegen::egraph::elaborate > looking up best value for v5 TRACE cranelift_codegen::egraph::elaborate > elaborate: value v5 -> best v5 TRACE cranelift_codegen::egraph::elaborate > -> not present in map; remat = false TRACE cranelift_codegen::egraph::elaborate > -> value v5 is a blockparam TRACE cranelift_codegen::egraph::elaborate > -> rewrote arg to ElaboratedValue { in_block: block1, value: v5 } DEBUG cranelift_codegen::context > egraph stats: Stats { pure_inst: 4, pure_inst_deduped: 0, skeleton_inst: 2, alias_analysis_removed: 0, new_inst: 0, union: 0, subsume: 0, remat: 4, rewrite_rule_invoked: 4, rewrite_depth_limit: 0, elaborate_visit_node: 7, elaborate_memoize_hit: 1, elaborate_memoize_miss: 6, elaborate_memoize_miss_remat: 0, elaborate_licm_hoist: 0, elaborate_func: 1, elaborate_func_pre_insts: 6, elaborate_func_post_insts: 6 } TRACE cranelift_codegen::context > After egraph optimization: function u0:2(i32) -> i32 system_v { block0(v0: i32): v4 = iconst.i32 4 v1 = iconst.i32 1 v2 = iconst.i32 2 v3 = iconst.i32 3 br_table v0, block1(v4), [block1(v1), block1(v2), block1(v2), block1(v3)] ; v4 = 4, v1 = 1, v2 = 2, v2 = 2, v3 = 3 block1(v5: i32): return v5 } DEBUG cranelift_codegen::timing > timing: Ending Egraph based optimizations TRACE cranelift_codegen::machinst::abi > ABISig: sig Signature { params: [AbiParam { value_type: types::I32, purpose: Normal, extension: None }], returns: [AbiParam { value_type: types::I32, purpose: Normal, extension: None }], call_conv: SystemV } => args end = 2 rets end = 1 arg stack = 0 ret stack = 0 stack_ret_arg = false TRACE cranelift_codegen::machinst::abi > ABI: func signature Signature { params: [AbiParam { value_type: types::I32, purpose: Normal, extension: None }], returns: [AbiParam { value_type: types::I32, purpose: Normal, extension: None }], call_conv: SystemV } TRACE cranelift_codegen::machinst::blockorder > BlockLoweringOrder: function body function u0:2(i32) -> i32 system_v { block0(v0: i32): v4 = iconst.i32 4 v1 = iconst.i32 1 v2 = iconst.i32 2 v3 = iconst.i32 3 br_table v0, block1(v4), [block1(v1), block1(v2), block1(v2), block1(v3)] ; v4 = 4, v1 = 1, v2 = 2, v2 = 2, v3 = 3 block1(v5: i32): return v5 } TRACE cranelift_codegen::machinst::blockorder > BlockLoweringOrder: BlockLoweringOrder { lowered_order: [ Orig { block: block0, }, CriticalEdge { pred: block0, succ: block1, succ_idx: 0, }, CriticalEdge { pred: block0, succ: block1, succ_idx: 1, }, CriticalEdge { pred: block0, succ: block1, succ_idx: 2, }, CriticalEdge { pred: block0, succ: block1, succ_idx: 3, }, CriticalEdge { pred: block0, succ: block1, succ_idx: 4, }, Orig { block: block1, }, ], lowered_succ_indices: [ Block( 1, ), Block( 2, ), Block( 3, ), Block( 4, ), Block( 5, ), Block( 6, ), Block( 6, ), Block( 6, ), Block( 6, ), Block( 6, ), ], lowered_succ_ranges: [ ( Some( inst4, ), 0..5, ), ( None, 5..6, ), ( None, 6..7, ), ( None, 7..8, ), ( None, 8..9, ), ( None, 9..10, ), ( None, 10..10, ), ], cold_blocks: {}, indirect_branch_targets: { Block( 5, ), Block( 2, ), Block( 4, ), Block( 1, ), Block( 6, ), Block( 3, ), }, } TRACE cranelift_codegen::machinst::lower > bb block0 param v0: regs ValueRegs { parts: [v128, v2097151] } TRACE cranelift_codegen::machinst::lower > bb block0 inst inst3 (UnaryImm { opcode: Iconst, imm: Imm64(4) }): result v4 regs ValueRegs { parts: [v129, v2097151] } TRACE cranelift_codegen::machinst::lower > bb block0 inst inst0 (UnaryImm { opcode: Iconst, imm: Imm64(1) }): result v1 regs ValueRegs { parts: [v130, v2097151] } TRACE cranelift_codegen::machinst::lower > bb block0 inst inst1 (UnaryImm { opcode: Iconst, imm: Imm64(2) }): result v2 regs ValueRegs { parts: [v131, v2097151] } TRACE cranelift_codegen::machinst::lower > bb block0 inst inst2 (UnaryImm { opcode: Iconst, imm: Imm64(3) }): result v3 regs ValueRegs { parts: [v132, v2097151] } TRACE cranelift_codegen::machinst::lower > bb block1 param v5: regs ValueRegs { parts: [v133, v2097151] } TRACE cranelift_codegen::machinst::lower > bb block0 inst inst3 has color 1 TRACE cranelift_codegen::machinst::lower > -> constant: 4 TRACE cranelift_codegen::machinst::lower > bb block0 inst inst0 has color 1 TRACE cranelift_codegen::machinst::lower > -> constant: 1 TRACE cranelift_codegen::machinst::lower > bb block0 inst inst1 has color 1 TRACE cranelift_codegen::machinst::lower > -> constant: 2 TRACE cranelift_codegen::machinst::lower > bb block0 inst inst2 has color 1 TRACE cranelift_codegen::machinst::lower > -> constant: 3 TRACE cranelift_codegen::machinst::lower > bb block0 inst inst4 has color 1 TRACE cranelift_codegen::machinst::lower > -> side-effecting; incrementing color for next inst TRACE cranelift_codegen::machinst::lower > bb block1 inst inst5 has color 3 TRACE cranelift_codegen::machinst::lower > -> side-effecting; incrementing color for next inst TRACE cranelift_codegen::machinst::lower > arg v0 used, old state Unused, new Once TRACE cranelift_codegen::machinst::lower > arg v4 used, old state Unused, new Once TRACE cranelift_codegen::machinst::lower > arg v1 used, old state Unused, new Once TRACE cranelift_codegen::machinst::lower > arg v2 used, old state Unused, new Once TRACE cranelift_codegen::machinst::lower > arg v2 used, old state Once, new Multiple TRACE cranelift_codegen::machinst::lower > -> pushing args for v2 onto stack TRACE cranelift_codegen::machinst::lower > arg v3 used, old state Unused, new Once TRACE cranelift_codegen::machinst::lower > arg v5 used, old state Unused, new Once DEBUG cranelift_codegen::machinst::compile > Number of CLIF instructions to lower: 6 DEBUG cranelift_codegen::machinst::compile > Number of CLIF blocks to lower: 2 DEBUG cranelift_codegen::timing > timing: Starting VCode lowering, (during Compilation passes) TRACE cranelift_codegen::machinst::lower > about to lower function: function u0:2(i32) -> i32 system_v { block0(v0: i32): v4 = iconst.i32 4 v1 = iconst.i32 1 v2 = iconst.i32 2 v3 = iconst.i32 3 br_table v0, block1(v4), [block1(v1), block1(v2), block1(v2), block1(v3)] ; v4 = 4, v1 = 1, v2 = 2, v2 = 2, v3 = 3 block1(v5: i32): return v5 } TRACE cranelift_codegen::machinst::lower > lower_clif_block: block block1 inst inst5 (MultiAry { opcode: Return, args: EntityList { index: 45, unused: PhantomData } }) is_branch false side_effect true value_needed false TRACE cranelift_codegen::machinst::lower > lowering: inst inst5: MultiAry { opcode: Return, args: EntityList { index: 45, unused: PhantomData } } TRACE cranelift_codegen::machinst::lower > put_value_in_regs: val v5 TRACE cranelift_codegen::machinst::lower > -> regs ValueRegs { parts: [v133, v2097151] } TRACE cranelift_codegen::machinst::lower > emit: ret %v133=%rax TRACE cranelift_codegen::machinst::lower > emit: jmp label6 TRACE cranelift_codegen::machinst::lower > emit: jmp label6 TRACE cranelift_codegen::machinst::lower > emit: jmp label6 TRACE cranelift_codegen::machinst::lower > emit: jmp label6 TRACE cranelift_codegen::machinst::lower > emit: jmp label6 TRACE cranelift_codegen::machinst::lower > lower_clif_branches: block block0 branch inst4 targets [MachLabel(1), MachLabel(2), MachLabel(3), MachLabel(4), MachLabel(5)] TRACE cranelift_codegen::machinst::lower > emit: movl $4, %v139l TRACE cranelift_codegen::machinst::lower > get_input_for_val: val v0 at cur_inst Some(inst4) cur_scan_entry_color None TRACE cranelift_codegen::machinst::lower > get_input_for_val: val v0 at cur_inst Some(inst4) cur_scan_entry_color None TRACE cranelift_codegen::machinst::lower > put_value_in_regs: val v0 TRACE cranelift_codegen::machinst::lower > -> regs ValueRegs { parts: [v128, v2097151] } TRACE cranelift_codegen::machinst::lower > emit: movl %v128l, %v140l TRACE cranelift_codegen::machinst::lower > emit: cmpl %v139l, %v140l TRACE cranelift_codegen::machinst::lower > emit: cmovbl %v140l, %v139l, %v141l TRACE cranelift_codegen::machinst::lower > emit: br_table %v141, %v142, %v143 TRACE cranelift_codegen::machinst::lower > put_value_in_regs: val v4 TRACE cranelift_codegen::machinst::lower > -> regs ValueRegs { parts: [v129, v2097151] } TRACE cranelift_codegen::machinst::lower > put_value_in_regs: val v1 TRACE cranelift_codegen::machinst::lower > -> regs ValueRegs { parts: [v130, v2097151] } TRACE cranelift_codegen::machinst::lower > put_value_in_regs: val v2 TRACE cranelift_codegen::machinst::lower > -> regs ValueRegs { parts: [v131, v2097151] } TRACE cranelift_codegen::machinst::lower > put_value_in_regs: val v2 TRACE cranelift_codegen::machinst::lower > -> regs ValueRegs { parts: [v131, v2097151] } TRACE cranelift_codegen::machinst::lower > put_value_in_regs: val v3 TRACE cranelift_codegen::machinst::lower > -> regs ValueRegs { parts: [v132, v2097151] } TRACE cranelift_codegen::machinst::lower > lower_clif_block: block block0 inst inst4 (BranchTable { opcode: BrTable, arg: v0, table: jt0 }) is_branch true side_effect true value_needed false TRACE cranelift_codegen::machinst::lower > lower_clif_block: block block0 inst inst2 (UnaryImm { opcode: Iconst, imm: Imm64(3) }) is_branch false side_effect false value_needed true TRACE cranelift_codegen::machinst::lower > lowering: inst inst2: UnaryImm { opcode: Iconst, imm: Imm64(3) } TRACE cranelift_codegen::machinst::lower > emit: movl $3, %v144l TRACE cranelift_codegen::machinst::lower > set vreg alias: from v132 to v144 TRACE cranelift_codegen::machinst::lower > lower_clif_block: block block0 inst inst1 (UnaryImm { opcode: Iconst, imm: Imm64(2) }) is_branch false side_effect false value_needed true TRACE cranelift_codegen::machinst::lower > lowering: inst inst1: UnaryImm { opcode: Iconst, imm: Imm64(2) } TRACE cranelift_codegen::machinst::lower > emit: movl $2, %v145l TRACE cranelift_codegen::machinst::lower > set vreg alias: from v131 to v145 TRACE cranelift_codegen::machinst::lower > lower_clif_block: block block0 inst inst0 (UnaryImm { opcode: Iconst, imm: Imm64(1) }) is_branch false side_effect false value_needed true TRACE cranelift_codegen::machinst::lower > lowering: inst inst0: UnaryImm { opcode: Iconst, imm: Imm64(1) } TRACE cranelift_codegen::machinst::lower > emit: movl $1, %v146l TRACE cranelift_codegen::machinst::lower > set vreg alias: from v130 to v146 TRACE cranelift_codegen::machinst::lower > lower_clif_block: block block0 inst inst3 (UnaryImm { opcode: Iconst, imm: Imm64(4) }) is_branch false side_effect false value_needed true TRACE cranelift_codegen::machinst::lower > lowering: inst inst3: UnaryImm { opcode: Iconst, imm: Imm64(4) } TRACE cranelift_codegen::machinst::lower > emit: movl $4, %v147l TRACE cranelift_codegen::machinst::lower > set vreg alias: from v129 to v147 TRACE cranelift_codegen::machinst::lower > gen_arg_setup: entry BB block0 args are: [v0] TRACE cranelift_codegen::machinst::abi > gen_retval_area_setup: not needed TRACE cranelift_codegen::machinst::lower > emit: args %v128=%rdi TRACE cranelift_codegen::machinst::vcode > operandcollector: block arg VReg(vreg = 134, class = Int) -> VReg(vreg = 134, class = Int) TRACE cranelift_codegen::machinst::vcode > operandcollector: block arg VReg(vreg = 135, class = Int) -> VReg(vreg = 135, class = Int) TRACE cranelift_codegen::machinst::vcode > operandcollector: block arg VReg(vreg = 136, class = Int) -> VReg(vreg = 136, class = Int) TRACE cranelift_codegen::machinst::vcode > operandcollector: block arg VReg(vreg = 137, class = Int) -> VReg(vreg = 137, class = Int) TRACE cranelift_codegen::machinst::vcode > operandcollector: block arg VReg(vreg = 138, class = Int) -> VReg(vreg = 138, class = Int) TRACE cranelift_codegen::machinst::vcode > operandcollector: block arg VReg(vreg = 129, class = Int) -> VReg(vreg = 147, class = Int) TRACE cranelift_codegen::machinst::vcode > operandcollector: block arg VReg(vreg = 130, class = Int) -> VReg(vreg = 146, class = Int) TRACE cranelift_codegen::machinst::vcode > operandcollector: block arg VReg(vreg = 131, class = Int) -> VReg(vreg = 145, class = Int) TRACE cranelift_codegen::machinst::vcode > operandcollector: block arg VReg(vreg = 131, class = Int) -> VReg(vreg = 145, class = Int) TRACE cranelift_codegen::machinst::vcode > operandcollector: block arg VReg(vreg = 132, class = Int) -> VReg(vreg = 144, class = Int) TRACE cranelift_codegen::machinst::lower > built vcode: VCode { Entry block: 0 v129 := v147 v130 := v146 v131 := v145 v132 := v144 Block 0: (original IR block: block0) (successor: Block 1) (successor: Block 2) (successor: Block 3) (successor: Block 4) (successor: Block 5) (instruction range: 0 .. 10) Inst 0: args %v128=%rdi Inst 1: movl $4, %v147l Inst 2: movl $1, %v146l Inst 3: movl $2, %v145l Inst 4: movl $3, %v144l Inst 5: movl $4, %v139l Inst 6: movl %v128l, %v140l Inst 7: cmpl %v139l, %v140l Inst 8: cmovbl %v140l, %v139l, %v141l Inst 9: br_table %v141, %v142, %v143 Block 1: (successor: Block 6) (instruction range: 10 .. 11) Inst 10: jmp label6 Block 2: (successor: Block 6) (instruction range: 11 .. 12) Inst 11: jmp label6 Block 3: (successor: Block 6) (instruction range: 12 .. 13) Inst 12: jmp label6 Block 4: (successor: Block 6) (instruction range: 13 .. 14) Inst 13: jmp label6 Block 5: (successor: Block 6) (instruction range: 14 .. 15) Inst 14: jmp label6 Block 6: (original IR block: block1) (instruction range: 15 .. 16) Inst 15: ret %v133=%rax } DEBUG cranelift_codegen::timing > timing: Ending VCode lowering DEBUG cranelift_codegen::machinst::compile > Number of lowered vcode instructions: 16 DEBUG cranelift_codegen::machinst::compile > Number of lowered vcode blocks: 7 TRACE cranelift_codegen::machinst::compile > vcode from lowering: VCode { Entry block: 0 v129 := v147 v130 := v146 v131 := v145 v132 := v144 Block 0: (original IR block: block0) (successor: Block 1) (successor: Block 2) (successor: Block 3) (successor: Block 4) (successor: Block 5) (instruction range: 0 .. 10) Inst 0: args %v128=%rdi Inst 1: movl $4, %v147l Inst 2: movl $1, %v146l Inst 3: movl $2, %v145l Inst 4: movl $3, %v144l Inst 5: movl $4, %v139l Inst 6: movl %v128l, %v140l Inst 7: cmpl %v139l, %v140l Inst 8: cmovbl %v140l, %v139l, %v141l Inst 9: br_table %v141, %v142, %v143 Block 1: (successor: Block 6) (instruction range: 10 .. 11) Inst 10: jmp label6 Block 2: (successor: Block 6) (instruction range: 11 .. 12) Inst 11: jmp label6 Block 3: (successor: Block 6) (instruction range: 12 .. 13) Inst 12: jmp label6 Block 4: (successor: Block 6) (instruction range: 13 .. 14) Inst 13: jmp label6 Block 5: (successor: Block 6) (instruction range: 14 .. 15) Inst 14: jmp label6 Block 6: (original IR block: block1) (instruction range: 15 .. 16) Inst 15: ret %v133=%rax } DEBUG cranelift_codegen::timing > timing: Starting Register allocation, (during Compilation passes) TRACE regalloc2::ion::fast_alloc > Allocating block 0 TRACE regalloc2::ion::fast_alloc > Allocating Inst 0 (refs_on_stack: false, is_ret: false, is_branch: false, alloc_idx: 0) TRACE regalloc2::ion::fast_alloc > Clobbers: TRACE regalloc2::ion::fast_alloc > First alloc pass TRACE regalloc2::ion::fast_alloc > Operand 0: Def: v128i fixed(p7i) TRACE regalloc2::ion::fast_alloc > Chose p7i for operand 0 TRACE regalloc2::ion::fast_alloc > Second alloc pass TRACE regalloc2::ion::fast_alloc > Third alloc pass TRACE regalloc2::ion::fast_alloc > Operand 0: Def: v128i fixed(p7i) TRACE regalloc2::ion::fast_alloc > Clearing p7i TRACE regalloc2::ion::fast_alloc > Allocating Inst 1 (refs_on_stack: false, is_ret: false, is_branch: false, alloc_idx: 1) TRACE regalloc2::ion::fast_alloc > Clobbers: TRACE regalloc2::ion::fast_alloc > First alloc pass TRACE regalloc2::ion::fast_alloc > Operand 0: Def: v147i reg TRACE regalloc2::ion::fast_alloc > Second alloc pass TRACE regalloc2::ion::fast_alloc > Third alloc pass TRACE regalloc2::ion::fast_alloc > Operand 0: Def: v147i reg TRACE regalloc2::ion::fast_alloc > Chose p6i for operand 0 TRACE regalloc2::ion::fast_alloc > Clearing p6i TRACE regalloc2::ion::fast_alloc > Allocating Inst 2 (refs_on_stack: false, is_ret: false, is_branch: false, alloc_idx: 2) TRACE regalloc2::ion::fast_alloc > Clobbers: TRACE regalloc2::ion::fast_alloc > First alloc pass TRACE regalloc2::ion::fast_alloc > Operand 0: Def: v146i reg TRACE regalloc2::ion::fast_alloc > Second alloc pass TRACE regalloc2::ion::fast_alloc > Third alloc pass TRACE regalloc2::ion::fast_alloc > Operand 0: Def: v146i reg TRACE regalloc2::ion::fast_alloc > Chose p6i for operand 0 TRACE regalloc2::ion::fast_alloc > Clearing p6i TRACE regalloc2::ion::fast_alloc > Allocating Inst 3 (refs_on_stack: false, is_ret: false, is_branch: false, alloc_idx: 3) TRACE regalloc2::ion::fast_alloc > Clobbers: TRACE regalloc2::ion::fast_alloc > First alloc pass TRACE regalloc2::ion::fast_alloc > Operand 0: Def: v145i reg TRACE regalloc2::ion::fast_alloc > Second alloc pass TRACE regalloc2::ion::fast_alloc > Third alloc pass TRACE regalloc2::ion::fast_alloc > Operand 0: Def: v145i reg TRACE regalloc2::ion::fast_alloc > Chose p6i for operand 0 TRACE regalloc2::ion::fast_alloc > Clearing p6i TRACE regalloc2::ion::fast_alloc > Allocating Inst 4 (refs_on_stack: false, is_ret: false, is_branch: false, alloc_idx: 4) TRACE regalloc2::ion::fast_alloc > Clobbers: TRACE regalloc2::ion::fast_alloc > First alloc pass TRACE regalloc2::ion::fast_alloc > Operand 0: Def: v144i reg TRACE regalloc2::ion::fast_alloc > Second alloc pass TRACE regalloc2::ion::fast_alloc > Third alloc pass TRACE regalloc2::ion::fast_alloc > Operand 0: Def: v144i reg TRACE regalloc2::ion::fast_alloc > Chose p6i for operand 0 TRACE regalloc2::ion::fast_alloc > Clearing p6i TRACE regalloc2::ion::fast_alloc > Allocating Inst 5 (refs_on_stack: false, is_ret: false, is_branch: false, alloc_idx: 5) TRACE regalloc2::ion::fast_alloc > Clobbers: TRACE regalloc2::ion::fast_alloc > First alloc pass TRACE regalloc2::ion::fast_alloc > Operand 0: Def: v139i reg TRACE regalloc2::ion::fast_alloc > Second alloc pass TRACE regalloc2::ion::fast_alloc > Third alloc pass TRACE regalloc2::ion::fast_alloc > Operand 0: Def: v139i reg TRACE regalloc2::ion::fast_alloc > Chose p6i for operand 0 TRACE regalloc2::ion::fast_alloc > Clearing p6i TRACE regalloc2::ion::fast_alloc > Allocating Inst 6 (refs_on_stack: false, is_ret: false, is_branch: false, alloc_idx: 6) TRACE regalloc2::ion::fast_alloc > Clobbers: TRACE regalloc2::ion::fast_alloc > First alloc pass TRACE regalloc2::ion::fast_alloc > Operand 0: Def: v140i reg TRACE regalloc2::ion::fast_alloc > Operand 1: Use: v128i reg TRACE regalloc2::ion::fast_alloc > Second alloc pass TRACE regalloc2::ion::fast_alloc > Operand 1: Use: v128i reg TRACE regalloc2::ion::fast_alloc > Chose p6i for operand 1 TRACE regalloc2::ion::fast_alloc > Third alloc pass TRACE regalloc2::ion::fast_alloc > Operand 0: Def: v140i reg TRACE regalloc2::ion::fast_alloc > Chose p7i for operand 0 TRACE regalloc2::ion::fast_alloc > Clearing p6i TRACE regalloc2::ion::fast_alloc > Clearing p7i TRACE regalloc2::ion::fast_alloc > Allocating Inst 7 (refs_on_stack: false, is_ret: false, is_branch: false, alloc_idx: 8) TRACE regalloc2::ion::fast_alloc > Clobbers: TRACE regalloc2::ion::fast_alloc > First alloc pass TRACE regalloc2::ion::fast_alloc > Operand 0: Use: v140i reg TRACE regalloc2::ion::fast_alloc > Operand 1: Use: v139i reg TRACE regalloc2::ion::fast_alloc > Second alloc pass TRACE regalloc2::ion::fast_alloc > Operand 0: Use: v140i reg TRACE regalloc2::ion::fast_alloc > Chose p6i for operand 0 TRACE regalloc2::ion::fast_alloc > Operand 1: Use: v139i reg TRACE regalloc2::ion::fast_alloc > Chose p7i for operand 1 TRACE regalloc2::ion::fast_alloc > Third alloc pass TRACE regalloc2::ion::fast_alloc > Clearing p6i TRACE regalloc2::ion::fast_alloc > Clearing p7i TRACE regalloc2::ion::fast_alloc > Allocating Inst 8 (refs_on_stack: false, is_ret: false, is_branch: false, alloc_idx: 10) TRACE regalloc2::ion::fast_alloc > Clobbers: TRACE regalloc2::ion::fast_alloc > First alloc pass TRACE regalloc2::ion::fast_alloc > Operand 0: Use: v139i reg TRACE regalloc2::ion::fast_alloc > Operand 1: Def: v141i reuse(0) TRACE regalloc2::ion::fast_alloc > Operand 2: Use: v140i reg TRACE regalloc2::ion::fast_alloc > Second alloc pass TRACE regalloc2::ion::fast_alloc > Operand 0: Use: v139i reg TRACE regalloc2::ion::fast_alloc > Chose p6i for operand 0 TRACE regalloc2::ion::fast_alloc > Operand 2: Use: v140i reg TRACE regalloc2::ion::fast_alloc > Chose p7i for operand 2 TRACE regalloc2::ion::fast_alloc > Third alloc pass TRACE regalloc2::ion::fast_alloc > Operand 1: Def: v141i reuse(0) TRACE regalloc2::ion::fast_alloc > Clearing p6i TRACE regalloc2::ion::fast_alloc > Clearing p7i TRACE regalloc2::ion::fast_alloc > Allocating Inst 9 (refs_on_stack: false, is_ret: false, is_branch: true, alloc_idx: 13) TRACE regalloc2::ion::fast_alloc > Clobbers: TRACE regalloc2::ion::fast_alloc > First alloc pass TRACE regalloc2::ion::fast_alloc > Operand 0: Use: v141i reg TRACE regalloc2::ion::fast_alloc > Operand 1: Def@Early: v142i reg TRACE regalloc2::ion::fast_alloc > Operand 2: Def: v143i reg TRACE regalloc2::ion::fast_alloc > Second alloc pass TRACE regalloc2::ion::fast_alloc > Operand 0: Use: v141i reg TRACE regalloc2::ion::fast_alloc > Chose p6i for operand 0 TRACE regalloc2::ion::fast_alloc > Operand 1: Def@Early: v142i reg TRACE regalloc2::ion::fast_alloc > Chose p7i for operand 1 TRACE regalloc2::ion::fast_alloc > Third alloc pass TRACE regalloc2::ion::fast_alloc > Operand 2: Def: v143i reg TRACE regalloc2::ion::fast_alloc > Chose p0i for operand 2 TRACE regalloc2::ion::fast_alloc > Clearing p6i TRACE regalloc2::ion::fast_alloc > Clearing p7i TRACE regalloc2::ion::fast_alloc > Clearing p0i TRACE regalloc2::ion::fast_alloc > Allocating outgoing blockparams for 0 TRACE regalloc2::ion::fast_alloc > Successors not allocated. Creating allocation TRACE regalloc2::ion::fast_alloc > Creating block 1 TRACE regalloc2::ion::fast_alloc > Creating block 2 TRACE regalloc2::ion::fast_alloc > Creating block 3 TRACE regalloc2::ion::fast_alloc > Creating block 4 TRACE regalloc2::ion::fast_alloc > Creating block 5 TRACE regalloc2::ion::fast_alloc > Allocating block 1 TRACE regalloc2::ion::fast_alloc > Allocating Inst 14 (refs_on_stack: false, is_ret: false, is_branch: true, alloc_idx: 16) TRACE regalloc2::ion::fast_alloc > Clobbers: TRACE regalloc2::ion::fast_alloc > First alloc pass TRACE regalloc2::ion::fast_alloc > Second alloc pass TRACE regalloc2::ion::fast_alloc > Third alloc pass TRACE regalloc2::ion::fast_alloc > Allocating outgoing blockparams for 5 TRACE regalloc2::ion::fast_alloc > Successors not allocated. Creating allocation TRACE regalloc2::ion::fast_alloc > Creating block 6 TRACE regalloc2::ion::fast_alloc > Allocating block 2 TRACE regalloc2::ion::fast_alloc > Allocating Inst 13 (refs_on_stack: false, is_ret: false, is_branch: true, alloc_idx: 16) TRACE regalloc2::ion::fast_alloc > Clobbers: TRACE regalloc2::ion::fast_alloc > First alloc pass TRACE regalloc2::ion::fast_alloc > Second alloc pass TRACE regalloc2::ion::fast_alloc > Third alloc pass TRACE regalloc2::ion::fast_alloc > Allocating outgoing blockparams for 4 TRACE regalloc2::ion::fast_alloc > Only one allocated successor, moving allocations TRACE regalloc2::ion::fast_alloc > Allocating block 3 TRACE regalloc2::ion::fast_alloc > Allocating Inst 12 (refs_on_stack: false, is_ret: false, is_branch: true, alloc_idx: 16) TRACE regalloc2::ion::fast_alloc > Clobbers: TRACE regalloc2::ion::fast_alloc > First alloc pass TRACE regalloc2::ion::fast_alloc > Second alloc pass TRACE regalloc2::ion::fast_alloc > Third alloc pass TRACE regalloc2::ion::fast_alloc > Allocating outgoing blockparams for 3 TRACE regalloc2::ion::fast_alloc > Only one allocated successor, moving allocations TRACE regalloc2::ion::fast_alloc > Allocating block 4 TRACE regalloc2::ion::fast_alloc > Allocating Inst 11 (refs_on_stack: false, is_ret: false, is_branch: true, alloc_idx: 16) TRACE regalloc2::ion::fast_alloc > Clobbers: TRACE regalloc2::ion::fast_alloc > First alloc pass TRACE regalloc2::ion::fast_alloc > Second alloc pass TRACE regalloc2::ion::fast_alloc > Third alloc pass TRACE regalloc2::ion::fast_alloc > Allocating outgoing blockparams for 2 TRACE regalloc2::ion::fast_alloc > Only one allocated successor, moving allocations TRACE regalloc2::ion::fast_alloc > Allocating block 5 TRACE regalloc2::ion::fast_alloc > Allocating Inst 10 (refs_on_stack: false, is_ret: false, is_branch: true, alloc_idx: 16) TRACE regalloc2::ion::fast_alloc > Clobbers: TRACE regalloc2::ion::fast_alloc > First alloc pass TRACE regalloc2::ion::fast_alloc > Second alloc pass TRACE regalloc2::ion::fast_alloc > Third alloc pass TRACE regalloc2::ion::fast_alloc > Allocating outgoing blockparams for 1 TRACE regalloc2::ion::fast_alloc > Only one allocated successor, moving allocations TRACE regalloc2::ion::fast_alloc > Allocating block 6 TRACE regalloc2::ion::fast_alloc > Allocating Inst 15 (refs_on_stack: false, is_ret: true, is_branch: false, alloc_idx: 16) TRACE regalloc2::ion::fast_alloc > Clobbers: TRACE regalloc2::ion::fast_alloc > First alloc pass TRACE regalloc2::ion::fast_alloc > Operand 0: Use: v133i fixed(p0i) TRACE regalloc2::ion::fast_alloc > Chose p0i for operand 0 TRACE regalloc2::ion::fast_alloc > Second alloc pass TRACE regalloc2::ion::fast_alloc > Operand 0: Use: v133i fixed(p0i) TRACE regalloc2::ion::fast_alloc > Third alloc pass TRACE regalloc2::ion::fast_alloc > Clearing p0i TRACE regalloc2::ion::fast_alloc > Allocating outgoing blockparams for 6 TRACE regalloc2::ion::fast_alloc > Last inst 15 is not a branch TRACE regalloc2::ion::fast_alloc > Edits: TRACE regalloc2::ion::fast_alloc > At progpoint0-post from p7i to stack0 TRACE regalloc2::ion::fast_alloc > At progpoint1-post from p6i to stack1 TRACE regalloc2::ion::fast_alloc > At progpoint2-post from p6i to stack2 TRACE regalloc2::ion::fast_alloc > At progpoint3-post from p6i to stack3 TRACE regalloc2::ion::fast_alloc > At progpoint4-post from p6i to stack4 TRACE regalloc2::ion::fast_alloc > At progpoint5-post from p6i to stack5 TRACE regalloc2::ion::fast_alloc > At progpoint6-pre from stack0 to p6i TRACE regalloc2::ion::fast_alloc > At progpoint6-post from p7i to stack6 TRACE regalloc2::ion::fast_alloc > At progpoint7-pre from stack6 to p6i TRACE regalloc2::ion::fast_alloc > At progpoint7-pre from stack5 to p7i TRACE regalloc2::ion::fast_alloc > At progpoint8-pre from stack5 to p6i TRACE regalloc2::ion::fast_alloc > At progpoint8-pre from stack6 to p7i TRACE regalloc2::ion::fast_alloc > At progpoint8-post from p6i to stack7 TRACE regalloc2::ion::fast_alloc > At progpoint9-pre from stack7 to p6i TRACE regalloc2::ion::fast_alloc > At progpoint9-pre from stack1 to p6i TRACE regalloc2::ion::fast_alloc > At progpoint9-pre from p6i to stack10 TRACE regalloc2::ion::fast_alloc > At progpoint9-pre from stack2 to p6i TRACE regalloc2::ion::fast_alloc > At progpoint9-pre from p6i to stack11 TRACE regalloc2::ion::fast_alloc > At progpoint9-pre from stack3 to p6i TRACE regalloc2::ion::fast_alloc > At progpoint9-pre from p6i to stack12 TRACE regalloc2::ion::fast_alloc > At progpoint9-pre from stack4 to p6i TRACE regalloc2::ion::fast_alloc > At progpoint9-pre from p6i to stack13 TRACE regalloc2::ion::fast_alloc > At progpoint9-post from p7i to stack8 TRACE regalloc2::ion::fast_alloc > At progpoint9-post from p0i to stack9 TRACE regalloc2::ion::fast_alloc > At progpoint10-pre from stack10 to p6i TRACE regalloc2::ion::fast_alloc > At progpoint10-pre from p6i to stack14 TRACE regalloc2::ion::fast_alloc > At progpoint11-pre from stack11 to p6i TRACE regalloc2::ion::fast_alloc > At progpoint11-pre from p6i to stack14 TRACE regalloc2::ion::fast_alloc > At progpoint12-pre from stack12 to p6i TRACE regalloc2::ion::fast_alloc > At progpoint12-pre from p6i to stack14 TRACE regalloc2::ion::fast_alloc > At progpoint13-pre from stack12 to p6i TRACE regalloc2::ion::fast_alloc > At progpoint13-pre from p6i to stack14 TRACE regalloc2::ion::fast_alloc > At progpoint14-pre from stack13 to p6i TRACE regalloc2::ion::fast_alloc > At progpoint14-pre from p6i to stack14 TRACE regalloc2::ion::fast_alloc > At progpoint15-pre from stack14 to p0i DEBUG cranelift_codegen::timing > timing: Ending Register allocation DEBUG cranelift_codegen::timing > timing: Starting VCode emission, (during Compilation passes) TRACE cranelift_codegen::machinst::buffer > MachBuffer: first 7 labels are for blocks TRACE cranelift_codegen::machinst::buffer > MachBuffer: next 0 labels are for constants TRACE cranelift_codegen::machinst::vcode > emitting block Block(0) TRACE cranelift_codegen::machinst::vcode > -> entry block TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 0: 55 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 1: 48 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 2: 89 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 3: e5 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 4: 48 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 5: 81 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 6: ec TRACE cranelift_codegen::machinst::buffer > MachBuffer: put 32-bit word @ 7: 80 TRACE cranelift_codegen::machinst::buffer > MachBuffer: bind label MachLabel(0) at offset 11 TRACE cranelift_codegen::machinst::buffer > enter optimize_branches: b = [] l = [MachLabel(0)] f = [] TRACE cranelift_codegen::machinst::buffer > leave optimize_branches: b = [] l = [MachLabel(0)] f = [] TRACE cranelift_codegen::machinst::vcode > Emitting inst 0 TRACE cranelift_codegen::machinst::vcode > Emitting move from p7i to slot 0 TRACE cranelift_codegen::machinst::abi > store_spillslot: slot SpillSlot { bits: 0 } -> sp_off 0 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 11: 48 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 12: 89 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 13: 3c TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 14: 24 TRACE cranelift_codegen::machinst::vcode > Emitting inst 1 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 15: be TRACE cranelift_codegen::machinst::buffer > MachBuffer: put 32-bit word @ 16: 4 TRACE cranelift_codegen::machinst::vcode > Emitting move from p6i to slot 1 TRACE cranelift_codegen::machinst::abi > store_spillslot: slot SpillSlot { bits: 1 } -> sp_off 8 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 20: 48 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 21: 89 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 22: 74 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 23: 24 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 24: 8 TRACE cranelift_codegen::machinst::vcode > Emitting inst 2 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 25: be TRACE cranelift_codegen::machinst::buffer > MachBuffer: put 32-bit word @ 26: 1 TRACE cranelift_codegen::machinst::vcode > Emitting move from p6i to slot 2 TRACE cranelift_codegen::machinst::abi > store_spillslot: slot SpillSlot { bits: 2 } -> sp_off 16 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 30: 48 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 31: 89 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 32: 74 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 33: 24 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 34: 10 TRACE cranelift_codegen::machinst::vcode > Emitting inst 3 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 35: be TRACE cranelift_codegen::machinst::buffer > MachBuffer: put 32-bit word @ 36: 2 TRACE cranelift_codegen::machinst::vcode > Emitting move from p6i to slot 3 TRACE cranelift_codegen::machinst::abi > store_spillslot: slot SpillSlot { bits: 3 } -> sp_off 24 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 40: 48 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 41: 89 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 42: 74 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 43: 24 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 44: 18 TRACE cranelift_codegen::machinst::vcode > Emitting inst 4 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 45: be TRACE cranelift_codegen::machinst::buffer > MachBuffer: put 32-bit word @ 46: 3 TRACE cranelift_codegen::machinst::vcode > Emitting move from p6i to slot 4 TRACE cranelift_codegen::machinst::abi > store_spillslot: slot SpillSlot { bits: 4 } -> sp_off 32 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 50: 48 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 51: 89 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 52: 74 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 53: 24 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 54: 20 TRACE cranelift_codegen::machinst::vcode > Emitting inst 5 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 55: be TRACE cranelift_codegen::machinst::buffer > MachBuffer: put 32-bit word @ 56: 4 TRACE cranelift_codegen::machinst::vcode > Emitting move from p6i to slot 5 TRACE cranelift_codegen::machinst::abi > store_spillslot: slot SpillSlot { bits: 5 } -> sp_off 40 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 60: 48 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 61: 89 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 62: 74 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 63: 24 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 64: 28 TRACE cranelift_codegen::machinst::vcode > Emitting move from slot 0 to p6i TRACE cranelift_codegen::machinst::abi > load_spillslot: slot SpillSlot { bits: 0 } -> sp_off 0 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 65: 48 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 66: 8b TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 67: 34 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 68: 24 TRACE cranelift_codegen::machinst::vcode > Emitting inst 6 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 69: 8b TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 70: fe TRACE cranelift_codegen::machinst::vcode > Emitting move from p7i to slot 6 TRACE cranelift_codegen::machinst::abi > store_spillslot: slot SpillSlot { bits: 6 } -> sp_off 48 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 71: 48 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 72: 89 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 73: 7c TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 74: 24 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 75: 30 TRACE cranelift_codegen::machinst::vcode > Emitting move from slot 6 to p6i TRACE cranelift_codegen::machinst::abi > load_spillslot: slot SpillSlot { bits: 6 } -> sp_off 48 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 76: 48 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 77: 8b TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 78: 74 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 79: 24 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 80: 30 TRACE cranelift_codegen::machinst::vcode > Emitting move from slot 5 to p7i TRACE cranelift_codegen::machinst::abi > load_spillslot: slot SpillSlot { bits: 5 } -> sp_off 40 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 81: 48 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 82: 8b TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 83: 7c TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 84: 24 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 85: 28 TRACE cranelift_codegen::machinst::vcode > Emitting inst 7 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 86: 39 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 87: fe TRACE cranelift_codegen::machinst::vcode > Emitting move from slot 5 to p6i TRACE cranelift_codegen::machinst::abi > load_spillslot: slot SpillSlot { bits: 5 } -> sp_off 40 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 88: 48 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 89: 8b TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 90: 74 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 91: 24 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 92: 28 TRACE cranelift_codegen::machinst::vcode > Emitting move from slot 6 to p7i TRACE cranelift_codegen::machinst::abi > load_spillslot: slot SpillSlot { bits: 6 } -> sp_off 48 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 93: 48 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 94: 8b TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 95: 7c TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 96: 24 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 97: 30 TRACE cranelift_codegen::machinst::vcode > Emitting inst 8 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 98: f TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 99: 42 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 100: f7 TRACE cranelift_codegen::machinst::vcode > Emitting move from p6i to slot 7 TRACE cranelift_codegen::machinst::abi > store_spillslot: slot SpillSlot { bits: 7 } -> sp_off 56 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 101: 48 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 102: 89 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 103: 74 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 104: 24 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 105: 38 TRACE cranelift_codegen::machinst::vcode > Emitting move from slot 7 to p6i TRACE cranelift_codegen::machinst::abi > load_spillslot: slot SpillSlot { bits: 7 } -> sp_off 56 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 106: 48 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 107: 8b TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 108: 74 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 109: 24 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 110: 38 TRACE cranelift_codegen::machinst::vcode > Emitting move from slot 1 to p6i TRACE cranelift_codegen::machinst::abi > load_spillslot: slot SpillSlot { bits: 1 } -> sp_off 8 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 111: 48 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 112: 8b TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 113: 74 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 114: 24 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 115: 8 TRACE cranelift_codegen::machinst::vcode > Emitting move from p6i to slot 10 TRACE cranelift_codegen::machinst::abi > store_spillslot: slot SpillSlot { bits: 10 } -> sp_off 80 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 116: 48 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 117: 89 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 118: 74 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 119: 24 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 120: 50 TRACE cranelift_codegen::machinst::vcode > Emitting move from slot 2 to p6i TRACE cranelift_codegen::machinst::abi > load_spillslot: slot SpillSlot { bits: 2 } -> sp_off 16 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 121: 48 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 122: 8b TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 123: 74 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 124: 24 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 125: 10 TRACE cranelift_codegen::machinst::vcode > Emitting move from p6i to slot 11 TRACE cranelift_codegen::machinst::abi > store_spillslot: slot SpillSlot { bits: 11 } -> sp_off 88 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 126: 48 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 127: 89 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 128: 74 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 129: 24 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 130: 58 TRACE cranelift_codegen::machinst::vcode > Emitting move from slot 3 to p6i TRACE cranelift_codegen::machinst::abi > load_spillslot: slot SpillSlot { bits: 3 } -> sp_off 24 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 131: 48 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 132: 8b TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 133: 74 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 134: 24 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 135: 18 TRACE cranelift_codegen::machinst::vcode > Emitting move from p6i to slot 12 TRACE cranelift_codegen::machinst::abi > store_spillslot: slot SpillSlot { bits: 12 } -> sp_off 96 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 136: 48 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 137: 89 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 138: 74 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 139: 24 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 140: 60 TRACE cranelift_codegen::machinst::vcode > Emitting move from slot 4 to p6i TRACE cranelift_codegen::machinst::abi > load_spillslot: slot SpillSlot { bits: 4 } -> sp_off 32 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 141: 48 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 142: 8b TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 143: 74 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 144: 24 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 145: 20 TRACE cranelift_codegen::machinst::vcode > Emitting move from p6i to slot 13 TRACE cranelift_codegen::machinst::abi > store_spillslot: slot SpillSlot { bits: 13 } -> sp_off 104 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 146: 48 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 147: 89 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 148: 74 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 149: 24 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 150: 68 TRACE cranelift_codegen::machinst::vcode > Emitting inst 9 TRACE cranelift_codegen::machinst::buffer > MachBuffer: new label -> MachLabel(7) TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 151: 48 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 152: 8d TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 153: 3d TRACE cranelift_codegen::machinst::buffer > MachBuffer: use_label_at_offset: offset 154 label MachLabel(7) kind JmpRel32 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put 32-bit word @ 154: 0 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 158: 48 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 159: 63 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 160: 44 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 161: b7 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 162: 0 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 163: 48 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 164: 1 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 165: c7 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 166: ff TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 167: e7 TRACE cranelift_codegen::machinst::buffer > MachBuffer: bind label MachLabel(7) at offset 168 TRACE cranelift_codegen::machinst::buffer > enter optimize_branches: b = [] l = [MachLabel(7)] f = [MachLabelFixup { label: MachLabel(7), offset: 154, kind: JmpRel32 }] TRACE cranelift_codegen::machinst::buffer > leave optimize_branches: b = [] l = [MachLabel(7)] f = [MachLabelFixup { label: MachLabel(7), offset: 154, kind: JmpRel32 }] TRACE cranelift_codegen::machinst::buffer > MachBuffer: use_label_at_offset: offset 168 label MachLabel(2) kind PCRel32 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put 32-bit word @ 168: 0 TRACE cranelift_codegen::machinst::buffer > MachBuffer: use_label_at_offset: offset 172 label MachLabel(3) kind PCRel32 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put 32-bit word @ 172: 4 TRACE cranelift_codegen::machinst::buffer > MachBuffer: use_label_at_offset: offset 176 label MachLabel(4) kind PCRel32 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put 32-bit word @ 176: 8 TRACE cranelift_codegen::machinst::buffer > MachBuffer: use_label_at_offset: offset 180 label MachLabel(5) kind PCRel32 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put 32-bit word @ 180: c TRACE cranelift_codegen::machinst::buffer > MachBuffer: use_label_at_offset: offset 184 label MachLabel(1) kind PCRel32 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put 32-bit word @ 184: 10 TRACE cranelift_codegen::machinst::vcode > emitting block Block(1) TRACE cranelift_codegen::machinst::buffer > MachBuffer: bind label MachLabel(1) at offset 188 TRACE cranelift_codegen::machinst::buffer > enter optimize_branches: b = [] l = [MachLabel(1)] f = [MachLabelFixup { label: MachLabel(7), offset: 154, kind: JmpRel32 }, MachLabelFixup { label: MachLabel(2), offset: 168, kind: PCRel32 }, MachLabelFixup { label: MachLabel(3), offset: 172, kind: PCRel32 }, MachLabelFixup { label: MachLabel(4), offset: 176, kind: PCRel32 }, MachLabelFixup { label: MachLabel(5), offset: 180, kind: PCRel32 }, MachLabelFixup { label: MachLabel(1), offset: 184, kind: PCRel32 }] TRACE cranelift_codegen::machinst::buffer > leave optimize_branches: b = [] l = [MachLabel(1)] f = [MachLabelFixup { label: MachLabel(7), offset: 154, kind: JmpRel32 }, MachLabelFixup { label: MachLabel(2), offset: 168, kind: PCRel32 }, MachLabelFixup { label: MachLabel(3), offset: 172, kind: PCRel32 }, MachLabelFixup { label: MachLabel(4), offset: 176, kind: PCRel32 }, MachLabelFixup { label: MachLabel(5), offset: 180, kind: PCRel32 }, MachLabelFixup { label: MachLabel(1), offset: 184, kind: PCRel32 }] TRACE cranelift_codegen::machinst::vcode > Emitting move from slot 10 to p6i TRACE cranelift_codegen::machinst::abi > load_spillslot: slot SpillSlot { bits: 10 } -> sp_off 80 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 188: 48 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 189: 8b TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 190: 74 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 191: 24 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 192: 50 TRACE cranelift_codegen::machinst::vcode > Emitting move from p6i to slot 14 TRACE cranelift_codegen::machinst::abi > store_spillslot: slot SpillSlot { bits: 14 } -> sp_off 112 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 193: 48 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 194: 89 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 195: 74 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 196: 24 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 197: 70 TRACE cranelift_codegen::machinst::vcode > Emitting inst 10 TRACE cranelift_codegen::machinst::buffer > MachBuffer: use_label_at_offset: offset 199 label MachLabel(6) kind JmpRel32 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 198: e9 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put 32-bit word @ 199: 0 TRACE cranelift_codegen::machinst::vcode > emitting block Block(2) TRACE cranelift_codegen::machinst::buffer > MachBuffer: bind label MachLabel(2) at offset 203 TRACE cranelift_codegen::machinst::buffer > enter optimize_branches: b = [MachBranch { start: 198, end: 203, target: MachLabel(6), fixup: 6, inverted: None, labels_at_this_branch: [] }] l = [MachLabel(2)] f = [MachLabelFixup { label: MachLabel(7), offset: 154, kind: JmpRel32 }, MachLabelFixup { label: MachLabel(2), offset: 168, kind: PCRel32 }, MachLabelFixup { label: MachLabel(3), offset: 172, kind: PCRel32 }, MachLabelFixup { label: MachLabel(4), offset: 176, kind: PCRel32 }, MachLabelFixup { label: MachLabel(5), offset: 180, kind: PCRel32 }, MachLabelFixup { label: MachLabel(1), offset: 184, kind: PCRel32 }, MachLabelFixup { label: MachLabel(6), offset: 199, kind: JmpRel32 }] TRACE cranelift_codegen::machinst::buffer > optimize_branches: last branch MachBranch { start: 198, end: 203, target: MachLabel(6), fixup: 6, inverted: None, labels_at_this_branch: [] } at off 203 TRACE cranelift_codegen::machinst::buffer > leave optimize_branches: b = [MachBranch { start: 198, end: 203, target: MachLabel(6), fixup: 6, inverted: None, labels_at_this_branch: [] }] l = [MachLabel(2)] f = [MachLabelFixup { label: MachLabel(7), offset: 154, kind: JmpRel32 }, MachLabelFixup { label: MachLabel(2), offset: 168, kind: PCRel32 }, MachLabelFixup { label: MachLabel(3), offset: 172, kind: PCRel32 }, MachLabelFixup { label: MachLabel(4), offset: 176, kind: PCRel32 }, MachLabelFixup { label: MachLabel(5), offset: 180, kind: PCRel32 }, MachLabelFixup { label: MachLabel(1), offset: 184, kind: PCRel32 }, MachLabelFixup { label: MachLabel(6), offset: 199, kind: JmpRel32 }] TRACE cranelift_codegen::machinst::vcode > Emitting move from slot 11 to p6i TRACE cranelift_codegen::machinst::abi > load_spillslot: slot SpillSlot { bits: 11 } -> sp_off 88 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 203: 48 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 204: 8b TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 205: 74 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 206: 24 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 207: 58 TRACE cranelift_codegen::machinst::vcode > Emitting move from p6i to slot 14 TRACE cranelift_codegen::machinst::abi > store_spillslot: slot SpillSlot { bits: 14 } -> sp_off 112 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 208: 48 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 209: 89 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 210: 74 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 211: 24 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 212: 70 TRACE cranelift_codegen::machinst::vcode > Emitting inst 11 TRACE cranelift_codegen::machinst::buffer > MachBuffer: use_label_at_offset: offset 214 label MachLabel(6) kind JmpRel32 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 213: e9 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put 32-bit word @ 214: 0 TRACE cranelift_codegen::machinst::vcode > emitting block Block(3) TRACE cranelift_codegen::machinst::buffer > MachBuffer: bind label MachLabel(3) at offset 218 TRACE cranelift_codegen::machinst::buffer > enter optimize_branches: b = [MachBranch { start: 198, end: 203, target: MachLabel(6), fixup: 6, inverted: None, labels_at_this_branch: [] }, MachBranch { start: 213, end: 218, target: MachLabel(6), fixup: 7, inverted: None, labels_at_this_branch: [] }] l = [MachLabel(3)] f = [MachLabelFixup { label: MachLabel(7), offset: 154, kind: JmpRel32 }, MachLabelFixup { label: MachLabel(2), offset: 168, kind: PCRel32 }, MachLabelFixup { label: MachLabel(3), offset: 172, kind: PCRel32 }, MachLabelFixup { label: MachLabel(4), offset: 176, kind: PCRel32 }, MachLabelFixup { label: MachLabel(5), offset: 180, kind: PCRel32 }, MachLabelFixup { label: MachLabel(1), offset: 184, kind: PCRel32 }, MachLabelFixup { label: MachLabel(6), offset: 199, kind: JmpRel32 }, MachLabelFixup { label: MachLabel(6), offset: 214, kind: JmpRel32 }] TRACE cranelift_codegen::machinst::buffer > optimize_branches: last branch MachBranch { start: 213, end: 218, target: MachLabel(6), fixup: 7, inverted: None, labels_at_this_branch: [] } at off 218 TRACE cranelift_codegen::machinst::buffer > -> more than one branch; prev_b = MachBranch { start: 198, end: 203, target: MachLabel(6), fixup: 6, inverted: None, labels_at_this_branch: [] } TRACE cranelift_codegen::machinst::buffer > leave optimize_branches: b = [MachBranch { start: 198, end: 203, target: MachLabel(6), fixup: 6, inverted: None, labels_at_this_branch: [] }, MachBranch { start: 213, end: 218, target: MachLabel(6), fixup: 7, inverted: None, labels_at_this_branch: [] }] l = [MachLabel(3)] f = [MachLabelFixup { label: MachLabel(7), offset: 154, kind: JmpRel32 }, MachLabelFixup { label: MachLabel(2), offset: 168, kind: PCRel32 }, MachLabelFixup { label: MachLabel(3), offset: 172, kind: PCRel32 }, MachLabelFixup { label: MachLabel(4), offset: 176, kind: PCRel32 }, MachLabelFixup { label: MachLabel(5), offset: 180, kind: PCRel32 }, MachLabelFixup { label: MachLabel(1), offset: 184, kind: PCRel32 }, MachLabelFixup { label: MachLabel(6), offset: 199, kind: JmpRel32 }, MachLabelFixup { label: MachLabel(6), offset: 214, kind: JmpRel32 }] TRACE cranelift_codegen::machinst::vcode > Emitting move from slot 12 to p6i TRACE cranelift_codegen::machinst::abi > load_spillslot: slot SpillSlot { bits: 12 } -> sp_off 96 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 218: 48 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 219: 8b TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 220: 74 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 221: 24 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 222: 60 TRACE cranelift_codegen::machinst::vcode > Emitting move from p6i to slot 14 TRACE cranelift_codegen::machinst::abi > store_spillslot: slot SpillSlot { bits: 14 } -> sp_off 112 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 223: 48 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 224: 89 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 225: 74 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 226: 24 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 227: 70 TRACE cranelift_codegen::machinst::vcode > Emitting inst 12 TRACE cranelift_codegen::machinst::buffer > MachBuffer: use_label_at_offset: offset 229 label MachLabel(6) kind JmpRel32 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 228: e9 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put 32-bit word @ 229: 0 TRACE cranelift_codegen::machinst::vcode > emitting block Block(4) TRACE cranelift_codegen::machinst::buffer > MachBuffer: bind label MachLabel(4) at offset 233 TRACE cranelift_codegen::machinst::buffer > enter optimize_branches: b = [MachBranch { start: 198, end: 203, target: MachLabel(6), fixup: 6, inverted: None, labels_at_this_branch: [] }, MachBranch { start: 213, end: 218, target: MachLabel(6), fixup: 7, inverted: None, labels_at_this_branch: [] }, MachBranch { start: 228, end: 233, target: MachLabel(6), fixup: 8, inverted: None, labels_at_this_branch: [] }] l = [MachLabel(4)] f = [MachLabelFixup { label: MachLabel(7), offset: 154, kind: JmpRel32 }, MachLabelFixup { label: MachLabel(2), offset: 168, kind: PCRel32 }, MachLabelFixup { label: MachLabel(3), offset: 172, kind: PCRel32 }, MachLabelFixup { label: MachLabel(4), offset: 176, kind: PCRel32 }, MachLabelFixup { label: MachLabel(5), offset: 180, kind: PCRel32 }, MachLabelFixup { label: MachLabel(1), offset: 184, kind: PCRel32 }, MachLabelFixup { label: MachLabel(6), offset: 199, kind: JmpRel32 }, MachLabelFixup { label: MachLabel(6), offset: 214, kind: JmpRel32 }, MachLabelFixup { label: MachLabel(6), offset: 229, kind: JmpRel32 }] TRACE cranelift_codegen::machinst::buffer > optimize_branches: last branch MachBranch { start: 228, end: 233, target: MachLabel(6), fixup: 8, inverted: None, labels_at_this_branch: [] } at off 233 TRACE cranelift_codegen::machinst::buffer > -> more than one branch; prev_b = MachBranch { start: 213, end: 218, target: MachLabel(6), fixup: 7, inverted: None, labels_at_this_branch: [] } TRACE cranelift_codegen::machinst::buffer > leave optimize_branches: b = [MachBranch { start: 198, end: 203, target: MachLabel(6), fixup: 6, inverted: None, labels_at_this_branch: [] }, MachBranch { start: 213, end: 218, target: MachLabel(6), fixup: 7, inverted: None, labels_at_this_branch: [] }, MachBranch { start: 228, end: 233, target: MachLabel(6), fixup: 8, inverted: None, labels_at_this_branch: [] }] l = [MachLabel(4)] f = [MachLabelFixup { label: MachLabel(7), offset: 154, kind: JmpRel32 }, MachLabelFixup { label: MachLabel(2), offset: 168, kind: PCRel32 }, MachLabelFixup { label: MachLabel(3), offset: 172, kind: PCRel32 }, MachLabelFixup { label: MachLabel(4), offset: 176, kind: PCRel32 }, MachLabelFixup { label: MachLabel(5), offset: 180, kind: PCRel32 }, MachLabelFixup { label: MachLabel(1), offset: 184, kind: PCRel32 }, MachLabelFixup { label: MachLabel(6), offset: 199, kind: JmpRel32 }, MachLabelFixup { label: MachLabel(6), offset: 214, kind: JmpRel32 }, MachLabelFixup { label: MachLabel(6), offset: 229, kind: JmpRel32 }] TRACE cranelift_codegen::machinst::vcode > Emitting move from slot 12 to p6i TRACE cranelift_codegen::machinst::abi > load_spillslot: slot SpillSlot { bits: 12 } -> sp_off 96 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 233: 48 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 234: 8b TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 235: 74 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 236: 24 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 237: 60 TRACE cranelift_codegen::machinst::vcode > Emitting move from p6i to slot 14 TRACE cranelift_codegen::machinst::abi > store_spillslot: slot SpillSlot { bits: 14 } -> sp_off 112 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 238: 48 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 239: 89 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 240: 74 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 241: 24 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 242: 70 TRACE cranelift_codegen::machinst::vcode > Emitting inst 13 TRACE cranelift_codegen::machinst::buffer > MachBuffer: use_label_at_offset: offset 244 label MachLabel(6) kind JmpRel32 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 243: e9 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put 32-bit word @ 244: 0 TRACE cranelift_codegen::machinst::vcode > emitting block Block(5) TRACE cranelift_codegen::machinst::buffer > MachBuffer: bind label MachLabel(5) at offset 248 TRACE cranelift_codegen::machinst::buffer > enter optimize_branches: b = [MachBranch { start: 198, end: 203, target: MachLabel(6), fixup: 6, inverted: None, labels_at_this_branch: [] }, MachBranch { start: 213, end: 218, target: MachLabel(6), fixup: 7, inverted: None, labels_at_this_branch: [] }, MachBranch { start: 228, end: 233, target: MachLabel(6), fixup: 8, inverted: None, labels_at_this_branch: [] }, MachBranch { start: 243, end: 248, target: MachLabel(6), fixup: 9, inverted: None, labels_at_this_branch: [] }] l = [MachLabel(5)] f = [MachLabelFixup { label: MachLabel(7), offset: 154, kind: JmpRel32 }, MachLabelFixup { label: MachLabel(2), offset: 168, kind: PCRel32 }, MachLabelFixup { label: MachLabel(3), offset: 172, kind: PCRel32 }, MachLabelFixup { label: MachLabel(4), offset: 176, kind: PCRel32 }, MachLabelFixup { label: MachLabel(5), offset: 180, kind: PCRel32 }, MachLabelFixup { label: MachLabel(1), offset: 184, kind: PCRel32 }, MachLabelFixup { label: MachLabel(6), offset: 199, kind: JmpRel32 }, MachLabelFixup { label: MachLabel(6), offset: 214, kind: JmpRel32 }, MachLabelFixup { label: MachLabel(6), offset: 229, kind: JmpRel32 }, MachLabelFixup { label: MachLabel(6), offset: 244, kind: JmpRel32 }] TRACE cranelift_codegen::machinst::buffer > optimize_branches: last branch MachBranch { start: 243, end: 248, target: MachLabel(6), fixup: 9, inverted: None, labels_at_this_branch: [] } at off 248 TRACE cranelift_codegen::machinst::buffer > -> more than one branch; prev_b = MachBranch { start: 228, end: 233, target: MachLabel(6), fixup: 8, inverted: None, labels_at_this_branch: [] } TRACE cranelift_codegen::machinst::buffer > leave optimize_branches: b = [MachBranch { start: 198, end: 203, target: MachLabel(6), fixup: 6, inverted: None, labels_at_this_branch: [] }, MachBranch { start: 213, end: 218, target: MachLabel(6), fixup: 7, inverted: None, labels_at_this_branch: [] }, MachBranch { start: 228, end: 233, target: MachLabel(6), fixup: 8, inverted: None, labels_at_this_branch: [] }, MachBranch { start: 243, end: 248, target: MachLabel(6), fixup: 9, inverted: None, labels_at_this_branch: [] }] l = [MachLabel(5)] f = [MachLabelFixup { label: MachLabel(7), offset: 154, kind: JmpRel32 }, MachLabelFixup { label: MachLabel(2), offset: 168, kind: PCRel32 }, MachLabelFixup { label: MachLabel(3), offset: 172, kind: PCRel32 }, MachLabelFixup { label: MachLabel(4), offset: 176, kind: PCRel32 }, MachLabelFixup { label: MachLabel(5), offset: 180, kind: PCRel32 }, MachLabelFixup { label: MachLabel(1), offset: 184, kind: PCRel32 }, MachLabelFixup { label: MachLabel(6), offset: 199, kind: JmpRel32 }, MachLabelFixup { label: MachLabel(6), offset: 214, kind: JmpRel32 }, MachLabelFixup { label: MachLabel(6), offset: 229, kind: JmpRel32 }, MachLabelFixup { label: MachLabel(6), offset: 244, kind: JmpRel32 }] TRACE cranelift_codegen::machinst::vcode > Emitting move from slot 13 to p6i TRACE cranelift_codegen::machinst::abi > load_spillslot: slot SpillSlot { bits: 13 } -> sp_off 104 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 248: 48 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 249: 8b TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 250: 74 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 251: 24 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 252: 68 TRACE cranelift_codegen::machinst::vcode > Emitting move from p6i to slot 14 TRACE cranelift_codegen::machinst::abi > store_spillslot: slot SpillSlot { bits: 14 } -> sp_off 112 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 253: 48 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 254: 89 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 255: 74 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 256: 24 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 257: 70 TRACE cranelift_codegen::machinst::vcode > Emitting inst 14 TRACE cranelift_codegen::machinst::buffer > MachBuffer: use_label_at_offset: offset 259 label MachLabel(6) kind JmpRel32 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 258: e9 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put 32-bit word @ 259: 0 TRACE cranelift_codegen::machinst::vcode > emitting block Block(6) TRACE cranelift_codegen::machinst::buffer > MachBuffer: bind label MachLabel(6) at offset 263 TRACE cranelift_codegen::machinst::buffer > enter optimize_branches: b = [MachBranch { start: 198, end: 203, target: MachLabel(6), fixup: 6, inverted: None, labels_at_this_branch: [] }, MachBranch { start: 213, end: 218, target: MachLabel(6), fixup: 7, inverted: None, labels_at_this_branch: [] }, MachBranch { start: 228, end: 233, target: MachLabel(6), fixup: 8, inverted: None, labels_at_this_branch: [] }, MachBranch { start: 243, end: 248, target: MachLabel(6), fixup: 9, inverted: None, labels_at_this_branch: [] }, MachBranch { start: 258, end: 263, target: MachLabel(6), fixup: 10, inverted: None, labels_at_this_branch: [] }] l = [MachLabel(6)] f = [MachLabelFixup { label: MachLabel(7), offset: 154, kind: JmpRel32 }, MachLabelFixup { label: MachLabel(2), offset: 168, kind: PCRel32 }, MachLabelFixup { label: MachLabel(3), offset: 172, kind: PCRel32 }, MachLabelFixup { label: MachLabel(4), offset: 176, kind: PCRel32 }, MachLabelFixup { label: MachLabel(5), offset: 180, kind: PCRel32 }, MachLabelFixup { label: MachLabel(1), offset: 184, kind: PCRel32 }, MachLabelFixup { label: MachLabel(6), offset: 199, kind: JmpRel32 }, MachLabelFixup { label: MachLabel(6), offset: 214, kind: JmpRel32 }, MachLabelFixup { label: MachLabel(6), offset: 229, kind: JmpRel32 }, MachLabelFixup { label: MachLabel(6), offset: 244, kind: JmpRel32 }, MachLabelFixup { label: MachLabel(6), offset: 259, kind: JmpRel32 }] TRACE cranelift_codegen::machinst::buffer > optimize_branches: last branch MachBranch { start: 258, end: 263, target: MachLabel(6), fixup: 10, inverted: None, labels_at_this_branch: [] } at off 263 TRACE cranelift_codegen::machinst::buffer > branch with target == cur off; truncating TRACE cranelift_codegen::machinst::buffer > truncate_last_branch: truncated MachBranch { start: 258, end: 263, target: MachLabel(6), fixup: 10, inverted: None, labels_at_this_branch: [] }; off now 258 TRACE cranelift_codegen::machinst::buffer > optimize_branches: last branch MachBranch { start: 243, end: 248, target: MachLabel(6), fixup: 9, inverted: None, labels_at_this_branch: [] } at off 258 TRACE cranelift_codegen::machinst::buffer > purge_latest_branches: removing branch MachBranch { start: 243, end: 248, target: MachLabel(6), fixup: 9, inverted: None, labels_at_this_branch: [] } TRACE cranelift_codegen::machinst::buffer > leave optimize_branches: b = [] l = [MachLabel(6)] f = [MachLabelFixup { label: MachLabel(7), offset: 154, kind: JmpRel32 }, MachLabelFixup { label: MachLabel(2), offset: 168, kind: PCRel32 }, MachLabelFixup { label: MachLabel(3), offset: 172, kind: PCRel32 }, MachLabelFixup { label: MachLabel(4), offset: 176, kind: PCRel32 }, MachLabelFixup { label: MachLabel(5), offset: 180, kind: PCRel32 }, MachLabelFixup { label: MachLabel(1), offset: 184, kind: PCRel32 }, MachLabelFixup { label: MachLabel(6), offset: 199, kind: JmpRel32 }, MachLabelFixup { label: MachLabel(6), offset: 214, kind: JmpRel32 }, MachLabelFixup { label: MachLabel(6), offset: 229, kind: JmpRel32 }, MachLabelFixup { label: MachLabel(6), offset: 244, kind: JmpRel32 }] TRACE cranelift_codegen::machinst::vcode > Emitting move from slot 14 to p0i TRACE cranelift_codegen::machinst::abi > load_spillslot: slot SpillSlot { bits: 14 } -> sp_off 112 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 258: 48 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 259: 8b TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 260: 44 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 261: 24 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 262: 70 TRACE cranelift_codegen::machinst::vcode > Emitting inst 15 TRACE cranelift_codegen::machinst::abi > Epilogue: [addq %rsp, $128, %rsp, movq %rbp, %rsp, popq %rbp, ret] TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 263: 48 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 264: 81 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 265: c4 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put 32-bit word @ 266: 80 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 270: 48 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 271: 89 TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 272: ec TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 273: 5d TRACE cranelift_codegen::machinst::buffer > MachBuffer: put byte @ 274: c3 TRACE cranelift_codegen::machinst::vcode > Disassembly: pushq %rbp unwind PushFrameRegs { offset_upward_to_caller_sp: 16 } movq %rsp, %rbp unwind DefineNewFrame { offset_upward_to_caller_sp: 16, offset_downward_to_clobbers: 0 } subq %rsp, $128, %rsp block0: movq %rdi, rsp(0 + virtual offset) movl $4, %esi movq %rsi, rsp(8 + virtual offset) movl $1, %esi movq %rsi, rsp(16 + virtual offset) movl $2, %esi movq %rsi, rsp(24 + virtual offset) movl $3, %esi movq %rsi, rsp(32 + virtual offset) movl $4, %esi movq %rsi, rsp(40 + virtual offset) movq rsp(0 + virtual offset), %rsi movl %esi, %edi movq %rdi, rsp(48 + virtual offset) movq rsp(48 + virtual offset), %rsi movq rsp(40 + virtual offset), %rdi cmpl %edi, %esi movq rsp(40 + virtual offset), %rsi movq rsp(48 + virtual offset), %rdi cmovbl %edi, %esi, %esi movq %rsi, rsp(56 + virtual offset) movq rsp(56 + virtual offset), %rsi movq rsp(8 + virtual offset), %rsi movq %rsi, rsp(80 + virtual offset) movq rsp(16 + virtual offset), %rsi movq %rsi, rsp(88 + virtual offset) movq rsp(24 + virtual offset), %rsi movq %rsi, rsp(96 + virtual offset) movq rsp(32 + virtual offset), %rsi movq %rsi, rsp(104 + virtual offset) br_table %rsi, %rdi, %rax block1: movq rsp(80 + virtual offset), %rsi movq %rsi, rsp(112 + virtual offset) jmp label6 block2: movq rsp(88 + virtual offset), %rsi movq %rsi, rsp(112 + virtual offset) jmp label6 block3: movq rsp(96 + virtual offset), %rsi movq %rsi, rsp(112 + virtual offset) jmp label6 block4: movq rsp(96 + virtual offset), %rsi movq %rsi, rsp(112 + virtual offset) jmp label6 block5: movq rsp(104 + virtual offset), %rsi movq %rsi, rsp(112 + virtual offset) jmp label6 block6: movq rsp(112 + virtual offset), %rax addq %rsp, $128, %rsp movq %rbp, %rsp popq %rbp ret DEBUG cranelift_codegen::timing > timing: Ending VCode emission DEBUG cranelift_codegen::timing > timing: Starting VCode emission finalization, (during Compilation passes) TRACE cranelift_codegen::machinst::buffer > enter optimize_branches: b = [] l = [] f = [MachLabelFixup { label: MachLabel(7), offset: 154, kind: JmpRel32 }, MachLabelFixup { label: MachLabel(2), offset: 168, kind: PCRel32 }, MachLabelFixup { label: MachLabel(3), offset: 172, kind: PCRel32 }, MachLabelFixup { label: MachLabel(4), offset: 176, kind: PCRel32 }, MachLabelFixup { label: MachLabel(5), offset: 180, kind: PCRel32 }, MachLabelFixup { label: MachLabel(1), offset: 184, kind: PCRel32 }, MachLabelFixup { label: MachLabel(6), offset: 199, kind: JmpRel32 }, MachLabelFixup { label: MachLabel(6), offset: 214, kind: JmpRel32 }, MachLabelFixup { label: MachLabel(6), offset: 229, kind: JmpRel32 }, MachLabelFixup { label: MachLabel(6), offset: 244, kind: JmpRel32 }] TRACE cranelift_codegen::machinst::buffer > leave optimize_branches: b = [] l = [] f = [MachLabelFixup { label: MachLabel(7), offset: 154, kind: JmpRel32 }, MachLabelFixup { label: MachLabel(2), offset: 168, kind: PCRel32 }, MachLabelFixup { label: MachLabel(3), offset: 172, kind: PCRel32 }, MachLabelFixup { label: MachLabel(4), offset: 176, kind: PCRel32 }, MachLabelFixup { label: MachLabel(5), offset: 180, kind: PCRel32 }, MachLabelFixup { label: MachLabel(1), offset: 184, kind: PCRel32 }, MachLabelFixup { label: MachLabel(6), offset: 199, kind: JmpRel32 }, MachLabelFixup { label: MachLabel(6), offset: 214, kind: JmpRel32 }, MachLabelFixup { label: MachLabel(6), offset: 229, kind: JmpRel32 }, MachLabelFixup { label: MachLabel(6), offset: 244, kind: JmpRel32 }] TRACE cranelift_codegen::machinst::buffer > emit_island: fixup MachLabelFixup { label: MachLabel(7), offset: 154, kind: JmpRel32 } TRACE cranelift_codegen::machinst::buffer > -> label_offset = 168, known, required = false (pos 2147483647 neg 2147483648) TRACE cranelift_codegen::machinst::buffer > patching in-range! TRACE cranelift_codegen::machinst::buffer > emit_island: fixup MachLabelFixup { label: MachLabel(2), offset: 168, kind: PCRel32 } TRACE cranelift_codegen::machinst::buffer > -> label_offset = 203, known, required = false (pos 2147483647 neg 2147483648) TRACE cranelift_codegen::machinst::buffer > patching in-range! TRACE cranelift_codegen::machinst::buffer > emit_island: fixup MachLabelFixup { label: MachLabel(3), offset: 172, kind: PCRel32 } TRACE cranelift_codegen::machinst::buffer > -> label_offset = 218, known, required = false (pos 2147483647 neg 2147483648) TRACE cranelift_codegen::machinst::buffer > patching in-range! TRACE cranelift_codegen::machinst::buffer > emit_island: fixup MachLabelFixup { label: MachLabel(4), offset: 176, kind: PCRel32 } TRACE cranelift_codegen::machinst::buffer > -> label_offset = 233, known, required = false (pos 2147483647 neg 2147483648) TRACE cranelift_codegen::machinst::buffer > patching in-range! TRACE cranelift_codegen::machinst::buffer > emit_island: fixup MachLabelFixup { label: MachLabel(5), offset: 180, kind: PCRel32 } TRACE cranelift_codegen::machinst::buffer > -> label_offset = 248, known, required = false (pos 2147483647 neg 2147483648) TRACE cranelift_codegen::machinst::buffer > patching in-range! TRACE cranelift_codegen::machinst::buffer > emit_island: fixup MachLabelFixup { label: MachLabel(1), offset: 184, kind: PCRel32 } TRACE cranelift_codegen::machinst::buffer > -> label_offset = 188, known, required = false (pos 2147483647 neg 2147483648) TRACE cranelift_codegen::machinst::buffer > patching in-range! TRACE cranelift_codegen::machinst::buffer > emit_island: fixup MachLabelFixup { label: MachLabel(6), offset: 199, kind: JmpRel32 } TRACE cranelift_codegen::machinst::buffer > -> label_offset = 258, known, required = false (pos 2147483647 neg 2147483648) TRACE cranelift_codegen::machinst::buffer > patching in-range! TRACE cranelift_codegen::machinst::buffer > emit_island: fixup MachLabelFixup { label: MachLabel(6), offset: 214, kind: JmpRel32 } TRACE cranelift_codegen::machinst::buffer > -> label_offset = 258, known, required = false (pos 2147483647 neg 2147483648) TRACE cranelift_codegen::machinst::buffer > patching in-range! TRACE cranelift_codegen::machinst::buffer > emit_island: fixup MachLabelFixup { label: MachLabel(6), offset: 229, kind: JmpRel32 } TRACE cranelift_codegen::machinst::buffer > -> label_offset = 258, known, required = false (pos 2147483647 neg 2147483648) TRACE cranelift_codegen::machinst::buffer > patching in-range! TRACE cranelift_codegen::machinst::buffer > emit_island: fixup MachLabelFixup { label: MachLabel(6), offset: 244, kind: JmpRel32 } TRACE cranelift_codegen::machinst::buffer > -> label_offset = 258, known, required = false (pos 2147483647 neg 2147483648) TRACE cranelift_codegen::machinst::buffer > patching in-range! DEBUG cranelift_codegen::timing > timing: Ending VCode emission finalization TRACE cranelift_codegen::isa::x64 > disassembly: pushq %rbp unwind PushFrameRegs { offset_upward_to_caller_sp: 16 } movq %rsp, %rbp unwind DefineNewFrame { offset_upward_to_caller_sp: 16, offset_downward_to_clobbers: 0 } subq %rsp, $128, %rsp block0: movq %rdi, rsp(0 + virtual offset) movl $4, %esi movq %rsi, rsp(8 + virtual offset) movl $1, %esi movq %rsi, rsp(16 + virtual offset) movl $2, %esi movq %rsi, rsp(24 + virtual offset) movl $3, %esi movq %rsi, rsp(32 + virtual offset) movl $4, %esi movq %rsi, rsp(40 + virtual offset) movq rsp(0 + virtual offset), %rsi movl %esi, %edi movq %rdi, rsp(48 + virtual offset) movq rsp(48 + virtual offset), %rsi movq rsp(40 + virtual offset), %rdi cmpl %edi, %esi movq rsp(40 + virtual offset), %rsi movq rsp(48 + virtual offset), %rdi cmovbl %edi, %esi, %esi movq %rsi, rsp(56 + virtual offset) movq rsp(56 + virtual offset), %rsi movq rsp(8 + virtual offset), %rsi movq %rsi, rsp(80 + virtual offset) movq rsp(16 + virtual offset), %rsi movq %rsi, rsp(88 + virtual offset) movq rsp(24 + virtual offset), %rsi movq %rsi, rsp(96 + virtual offset) movq rsp(32 + virtual offset), %rsi movq %rsi, rsp(104 + virtual offset) br_table %rsi, %rdi, %rax block1: movq rsp(80 + virtual offset), %rsi movq %rsi, rsp(112 + virtual offset) jmp label6 block2: movq rsp(88 + virtual offset), %rsi movq %rsi, rsp(112 + virtual offset) jmp label6 block3: movq rsp(96 + virtual offset), %rsi movq %rsi, rsp(112 + virtual offset) jmp label6 block4: movq rsp(96 + virtual offset), %rsi movq %rsi, rsp(112 + virtual offset) jmp label6 block5: movq rsp(104 + virtual offset), %rsi movq %rsi, rsp(112 + virtual offset) jmp label6 block6: movq rsp(112 + virtual offset), %rax addq %rsp, $128, %rsp movq %rbp, %rsp popq %rbp ret DEBUG cranelift_codegen::timing > timing: Ending Compilation passes