1580 lines
111 KiB
Plaintext
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
|