Files
cranelift_test/1
2023-04-18 12:21:54 +02:00

1580 lines
111 KiB
Plaintext

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<F: Function>(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 <no pass>)
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 <no pass>)
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<cranelift_codegen::ir::entities::Value> } })
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<cranelift_codegen::ir::entities::Value> } }) 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<cranelift_codegen::ir::entities::Value> } }
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