/rust/registry/src/index.crates.io-6f17d22bba15001f/cranelift-codegen-0.91.1/src/machinst/isle.rs
Line | Count | Source (jump to first uncovered line) |
1 | | use crate::ir::{types, Inst, Value, ValueList}; |
2 | | use crate::machinst::{get_output_reg, InsnOutput}; |
3 | | use alloc::boxed::Box; |
4 | | use alloc::vec::Vec; |
5 | | use smallvec::SmallVec; |
6 | | use std::cell::Cell; |
7 | | use target_lexicon::Triple; |
8 | | |
9 | | pub use super::MachLabel; |
10 | | use super::RetPair; |
11 | | pub use crate::ir::{ |
12 | | condcodes, condcodes::CondCode, dynamic_to_fixed, ArgumentExtension, ArgumentPurpose, Constant, |
13 | | DynamicStackSlot, ExternalName, FuncRef, GlobalValue, Immediate, SigRef, StackSlot, |
14 | | }; |
15 | | pub use crate::isa::unwind::UnwindInst; |
16 | | pub use crate::machinst::{ |
17 | | ABIArg, ABIArgSlot, InputSourceInst, Lower, RealReg, Reg, RelocDistance, Sig, VCodeInst, |
18 | | Writable, |
19 | | }; |
20 | | pub use crate::settings::TlsModel; |
21 | | |
22 | | pub type Unit = (); |
23 | | pub type ValueSlice = (ValueList, usize); |
24 | | pub type ValueArray2 = [Value; 2]; |
25 | | pub type ValueArray3 = [Value; 3]; |
26 | | pub type WritableReg = Writable<Reg>; |
27 | | pub type VecRetPair = Vec<RetPair>; |
28 | | pub type VecMask = Vec<u8>; |
29 | | pub type ValueRegs = crate::machinst::ValueRegs<Reg>; |
30 | | pub type WritableValueRegs = crate::machinst::ValueRegs<WritableReg>; |
31 | | pub type InstOutput = SmallVec<[ValueRegs; 2]>; |
32 | | pub type InstOutputBuilder = Cell<InstOutput>; |
33 | | pub type BoxExternalName = Box<ExternalName>; |
34 | | pub type Range = (usize, usize); |
35 | | |
36 | | pub enum RangeView { |
37 | | Empty, |
38 | | NonEmpty { index: usize, rest: Range }, |
39 | | } |
40 | | |
41 | | /// Helper macro to define methods in `prelude.isle` within `impl Context for |
42 | | /// ...` for each backend. These methods are shared amongst all backends. |
43 | | #[macro_export] |
44 | | #[doc(hidden)] |
45 | | macro_rules! isle_lower_prelude_methods { |
46 | | () => { |
47 | | isle_common_prelude_methods!(); |
48 | | |
49 | | #[inline] |
50 | 0 | fn same_value(&mut self, a: Value, b: Value) -> Option<Value> { |
51 | 0 | if a == b { |
52 | 0 | Some(a) |
53 | | } else { |
54 | 0 | None |
55 | | } |
56 | 0 | } Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::x64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::x64::settings::Flags, 6> as cranelift_codegen::isa::x64::lower::isle::generated_code::Context>::same_value Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::aarch64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::aarch64::settings::Flags, 6> as cranelift_codegen::isa::aarch64::lower::isle::generated_code::Context>::same_value Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::riscv64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::riscv64::settings::Flags, 6> as cranelift_codegen::isa::riscv64::lower::isle::generated_code::Context>::same_value |
57 | | |
58 | | #[inline] |
59 | 296k | fn unpack_value_array_2(&mut self, arr: &ValueArray2) -> (Value, Value) { |
60 | 296k | let [a, b] = *arr; |
61 | 296k | (a, b) |
62 | 296k | } <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::x64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::x64::settings::Flags, 6> as cranelift_codegen::isa::x64::lower::isle::generated_code::Context>::unpack_value_array_2 Line | Count | Source | 59 | 296k | fn unpack_value_array_2(&mut self, arr: &ValueArray2) -> (Value, Value) { | 60 | 296k | let [a, b] = *arr; | 61 | 296k | (a, b) | 62 | 296k | } |
Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::aarch64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::aarch64::settings::Flags, 6> as cranelift_codegen::isa::aarch64::lower::isle::generated_code::Context>::unpack_value_array_2 Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::riscv64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::riscv64::settings::Flags, 6> as cranelift_codegen::isa::riscv64::lower::isle::generated_code::Context>::unpack_value_array_2 |
63 | | |
64 | | #[inline] |
65 | 0 | fn pack_value_array_2(&mut self, a: Value, b: Value) -> ValueArray2 { |
66 | 0 | [a, b] |
67 | 0 | } Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::x64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::x64::settings::Flags, 6> as cranelift_codegen::isa::x64::lower::isle::generated_code::Context>::pack_value_array_2 Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::aarch64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::aarch64::settings::Flags, 6> as cranelift_codegen::isa::aarch64::lower::isle::generated_code::Context>::pack_value_array_2 Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::riscv64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::riscv64::settings::Flags, 6> as cranelift_codegen::isa::riscv64::lower::isle::generated_code::Context>::pack_value_array_2 |
68 | | |
69 | | #[inline] |
70 | 38.3k | fn unpack_value_array_3(&mut self, arr: &ValueArray3) -> (Value, Value, Value) { |
71 | 38.3k | let [a, b, c] = *arr; |
72 | 38.3k | (a, b, c) |
73 | 38.3k | } <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::x64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::x64::settings::Flags, 6> as cranelift_codegen::isa::x64::lower::isle::generated_code::Context>::unpack_value_array_3 Line | Count | Source | 70 | 38.3k | fn unpack_value_array_3(&mut self, arr: &ValueArray3) -> (Value, Value, Value) { | 71 | 38.3k | let [a, b, c] = *arr; | 72 | 38.3k | (a, b, c) | 73 | 38.3k | } |
Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::aarch64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::aarch64::settings::Flags, 6> as cranelift_codegen::isa::aarch64::lower::isle::generated_code::Context>::unpack_value_array_3 Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::riscv64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::riscv64::settings::Flags, 6> as cranelift_codegen::isa::riscv64::lower::isle::generated_code::Context>::unpack_value_array_3 |
74 | | |
75 | | #[inline] |
76 | 0 | fn pack_value_array_3(&mut self, a: Value, b: Value, c: Value) -> ValueArray3 { |
77 | 0 | [a, b, c] |
78 | 0 | } Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::x64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::x64::settings::Flags, 6> as cranelift_codegen::isa::x64::lower::isle::generated_code::Context>::pack_value_array_3 Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::aarch64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::aarch64::settings::Flags, 6> as cranelift_codegen::isa::aarch64::lower::isle::generated_code::Context>::pack_value_array_3 Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::riscv64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::riscv64::settings::Flags, 6> as cranelift_codegen::isa::riscv64::lower::isle::generated_code::Context>::pack_value_array_3 |
79 | | |
80 | | #[inline] |
81 | 408k | fn value_reg(&mut self, reg: Reg) -> ValueRegs { |
82 | 408k | ValueRegs::one(reg) |
83 | 408k | } <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::x64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::x64::settings::Flags, 6> as cranelift_codegen::isa::x64::lower::isle::generated_code::Context>::value_reg Line | Count | Source | 81 | 408k | fn value_reg(&mut self, reg: Reg) -> ValueRegs { | 82 | 408k | ValueRegs::one(reg) | 83 | 408k | } |
Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::aarch64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::aarch64::settings::Flags, 6> as cranelift_codegen::isa::aarch64::lower::isle::generated_code::Context>::value_reg Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::riscv64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::riscv64::settings::Flags, 6> as cranelift_codegen::isa::riscv64::lower::isle::generated_code::Context>::value_reg |
84 | | |
85 | | #[inline] |
86 | 564 | fn value_regs(&mut self, r1: Reg, r2: Reg) -> ValueRegs { |
87 | 564 | ValueRegs::two(r1, r2) |
88 | 564 | } <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::x64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::x64::settings::Flags, 6> as cranelift_codegen::isa::x64::lower::isle::generated_code::Context>::value_regs Line | Count | Source | 86 | 564 | fn value_regs(&mut self, r1: Reg, r2: Reg) -> ValueRegs { | 87 | 564 | ValueRegs::two(r1, r2) | 88 | 564 | } |
Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::aarch64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::aarch64::settings::Flags, 6> as cranelift_codegen::isa::aarch64::lower::isle::generated_code::Context>::value_regs Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::riscv64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::riscv64::settings::Flags, 6> as cranelift_codegen::isa::riscv64::lower::isle::generated_code::Context>::value_regs |
89 | | |
90 | | #[inline] |
91 | 0 | fn value_regs_invalid(&mut self) -> ValueRegs { |
92 | 0 | ValueRegs::invalid() |
93 | 0 | } Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::x64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::x64::settings::Flags, 6> as cranelift_codegen::isa::x64::lower::isle::generated_code::Context>::value_regs_invalid Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::aarch64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::aarch64::settings::Flags, 6> as cranelift_codegen::isa::aarch64::lower::isle::generated_code::Context>::value_regs_invalid Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::riscv64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::riscv64::settings::Flags, 6> as cranelift_codegen::isa::riscv64::lower::isle::generated_code::Context>::value_regs_invalid |
94 | | |
95 | | #[inline] |
96 | 355k | fn output_none(&mut self) -> InstOutput { |
97 | 355k | smallvec::smallvec![] |
98 | 355k | } <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::x64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::x64::settings::Flags, 6> as cranelift_codegen::isa::x64::lower::isle::generated_code::Context>::output_none Line | Count | Source | 96 | 355k | fn output_none(&mut self) -> InstOutput { | 97 | 355k | smallvec::smallvec![] | 98 | 355k | } |
Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::aarch64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::aarch64::settings::Flags, 6> as cranelift_codegen::isa::aarch64::lower::isle::generated_code::Context>::output_none Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::riscv64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::riscv64::settings::Flags, 6> as cranelift_codegen::isa::riscv64::lower::isle::generated_code::Context>::output_none |
99 | | |
100 | | #[inline] |
101 | 409k | fn output(&mut self, regs: ValueRegs) -> InstOutput { |
102 | 409k | smallvec::smallvec![regs] |
103 | 409k | } <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::x64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::x64::settings::Flags, 6> as cranelift_codegen::isa::x64::lower::isle::generated_code::Context>::output Line | Count | Source | 101 | 409k | fn output(&mut self, regs: ValueRegs) -> InstOutput { | 102 | 409k | smallvec::smallvec![regs] | 103 | 409k | } |
Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::aarch64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::aarch64::settings::Flags, 6> as cranelift_codegen::isa::aarch64::lower::isle::generated_code::Context>::output Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::riscv64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::riscv64::settings::Flags, 6> as cranelift_codegen::isa::riscv64::lower::isle::generated_code::Context>::output |
104 | | |
105 | | #[inline] |
106 | 0 | fn output_pair(&mut self, r1: ValueRegs, r2: ValueRegs) -> InstOutput { |
107 | 0 | smallvec::smallvec![r1, r2] |
108 | 0 | } Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::x64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::x64::settings::Flags, 6> as cranelift_codegen::isa::x64::lower::isle::generated_code::Context>::output_pair Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::aarch64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::aarch64::settings::Flags, 6> as cranelift_codegen::isa::aarch64::lower::isle::generated_code::Context>::output_pair Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::riscv64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::riscv64::settings::Flags, 6> as cranelift_codegen::isa::riscv64::lower::isle::generated_code::Context>::output_pair |
109 | | |
110 | | #[inline] |
111 | 0 | fn output_builder_new(&mut self) -> InstOutputBuilder { |
112 | 0 | std::cell::Cell::new(InstOutput::new()) |
113 | 0 | } Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::x64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::x64::settings::Flags, 6> as cranelift_codegen::isa::x64::lower::isle::generated_code::Context>::output_builder_new Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::aarch64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::aarch64::settings::Flags, 6> as cranelift_codegen::isa::aarch64::lower::isle::generated_code::Context>::output_builder_new Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::riscv64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::riscv64::settings::Flags, 6> as cranelift_codegen::isa::riscv64::lower::isle::generated_code::Context>::output_builder_new |
114 | | |
115 | | #[inline] |
116 | 0 | fn output_builder_push(&mut self, builder: &InstOutputBuilder, regs: ValueRegs) -> Unit { |
117 | 0 | let mut vec = builder.take(); |
118 | 0 | vec.push(regs); |
119 | 0 | builder.set(vec); |
120 | 0 | } Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::x64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::x64::settings::Flags, 6> as cranelift_codegen::isa::x64::lower::isle::generated_code::Context>::output_builder_push Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::aarch64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::aarch64::settings::Flags, 6> as cranelift_codegen::isa::aarch64::lower::isle::generated_code::Context>::output_builder_push Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::riscv64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::riscv64::settings::Flags, 6> as cranelift_codegen::isa::riscv64::lower::isle::generated_code::Context>::output_builder_push |
121 | | |
122 | | #[inline] |
123 | 0 | fn output_builder_finish(&mut self, builder: &InstOutputBuilder) -> InstOutput { |
124 | 0 | builder.take() |
125 | 0 | } Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::x64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::x64::settings::Flags, 6> as cranelift_codegen::isa::x64::lower::isle::generated_code::Context>::output_builder_finish Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::aarch64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::aarch64::settings::Flags, 6> as cranelift_codegen::isa::aarch64::lower::isle::generated_code::Context>::output_builder_finish Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::riscv64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::riscv64::settings::Flags, 6> as cranelift_codegen::isa::riscv64::lower::isle::generated_code::Context>::output_builder_finish |
126 | | |
127 | | #[inline] |
128 | 590k | fn temp_writable_reg(&mut self, ty: Type) -> WritableReg { |
129 | 590k | let value_regs = self.lower_ctx.alloc_tmp(ty); |
130 | 590k | value_regs.only_reg().unwrap() |
131 | 590k | } <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::x64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::x64::settings::Flags, 6> as cranelift_codegen::isa::x64::lower::isle::generated_code::Context>::temp_writable_reg Line | Count | Source | 128 | 590k | fn temp_writable_reg(&mut self, ty: Type) -> WritableReg { | 129 | 590k | let value_regs = self.lower_ctx.alloc_tmp(ty); | 130 | 590k | value_regs.only_reg().unwrap() | 131 | 590k | } |
Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::aarch64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::aarch64::settings::Flags, 6> as cranelift_codegen::isa::aarch64::lower::isle::generated_code::Context>::temp_writable_reg Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::riscv64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::riscv64::settings::Flags, 6> as cranelift_codegen::isa::riscv64::lower::isle::generated_code::Context>::temp_writable_reg |
132 | | |
133 | | #[inline] |
134 | 657k | fn is_valid_reg(&mut self, reg: Reg) -> bool { |
135 | 657k | use crate::machinst::valueregs::InvalidSentinel; |
136 | 657k | !reg.is_invalid_sentinel() |
137 | 657k | } <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::x64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::x64::settings::Flags, 6> as cranelift_codegen::isa::x64::lower::isle::generated_code::Context>::is_valid_reg Line | Count | Source | 134 | 657k | fn is_valid_reg(&mut self, reg: Reg) -> bool { | 135 | 657k | use crate::machinst::valueregs::InvalidSentinel; | 136 | 657k | !reg.is_invalid_sentinel() | 137 | 657k | } |
Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::aarch64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::aarch64::settings::Flags, 6> as cranelift_codegen::isa::aarch64::lower::isle::generated_code::Context>::is_valid_reg Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::riscv64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::riscv64::settings::Flags, 6> as cranelift_codegen::isa::riscv64::lower::isle::generated_code::Context>::is_valid_reg |
138 | | |
139 | | #[inline] |
140 | 192k | fn invalid_reg(&mut self) -> Reg { |
141 | 192k | use crate::machinst::valueregs::InvalidSentinel; |
142 | 192k | Reg::invalid_sentinel() |
143 | 192k | } <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::x64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::x64::settings::Flags, 6> as cranelift_codegen::isa::x64::lower::isle::generated_code::Context>::invalid_reg Line | Count | Source | 140 | 192k | fn invalid_reg(&mut self) -> Reg { | 141 | 192k | use crate::machinst::valueregs::InvalidSentinel; | 142 | 192k | Reg::invalid_sentinel() | 143 | 192k | } |
Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::aarch64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::aarch64::settings::Flags, 6> as cranelift_codegen::isa::aarch64::lower::isle::generated_code::Context>::invalid_reg Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::riscv64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::riscv64::settings::Flags, 6> as cranelift_codegen::isa::riscv64::lower::isle::generated_code::Context>::invalid_reg |
144 | | |
145 | | #[inline] |
146 | 0 | fn mark_value_used(&mut self, val: Value) { |
147 | 0 | self.lower_ctx.increment_lowered_uses(val); |
148 | 0 | } Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::x64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::x64::settings::Flags, 6> as cranelift_codegen::isa::x64::lower::isle::generated_code::Context>::mark_value_used Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::aarch64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::aarch64::settings::Flags, 6> as cranelift_codegen::isa::aarch64::lower::isle::generated_code::Context>::mark_value_used Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::riscv64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::riscv64::settings::Flags, 6> as cranelift_codegen::isa::riscv64::lower::isle::generated_code::Context>::mark_value_used |
149 | | |
150 | | #[inline] |
151 | 677k | fn put_in_reg(&mut self, val: Value) -> Reg { |
152 | 677k | self.lower_ctx.put_value_in_regs(val).only_reg().unwrap() |
153 | 677k | } <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::x64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::x64::settings::Flags, 6> as cranelift_codegen::isa::x64::lower::isle::generated_code::Context>::put_in_reg Line | Count | Source | 151 | 677k | fn put_in_reg(&mut self, val: Value) -> Reg { | 152 | 677k | self.lower_ctx.put_value_in_regs(val).only_reg().unwrap() | 153 | 677k | } |
Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::aarch64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::aarch64::settings::Flags, 6> as cranelift_codegen::isa::aarch64::lower::isle::generated_code::Context>::put_in_reg Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::riscv64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::riscv64::settings::Flags, 6> as cranelift_codegen::isa::riscv64::lower::isle::generated_code::Context>::put_in_reg |
154 | | |
155 | | #[inline] |
156 | 13.8k | fn put_in_regs(&mut self, val: Value) -> ValueRegs { |
157 | 13.8k | self.lower_ctx.put_value_in_regs(val) |
158 | 13.8k | } Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::riscv64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::riscv64::settings::Flags, 6> as cranelift_codegen::isa::riscv64::lower::isle::generated_code::Context>::put_in_regs <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::x64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::x64::settings::Flags, 6> as cranelift_codegen::isa::x64::lower::isle::generated_code::Context>::put_in_regs Line | Count | Source | 156 | 13.8k | fn put_in_regs(&mut self, val: Value) -> ValueRegs { | 157 | 13.8k | self.lower_ctx.put_value_in_regs(val) | 158 | 13.8k | } |
Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::aarch64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::aarch64::settings::Flags, 6> as cranelift_codegen::isa::aarch64::lower::isle::generated_code::Context>::put_in_regs |
159 | | |
160 | | #[inline] |
161 | 0 | fn ensure_in_vreg(&mut self, reg: Reg, ty: Type) -> Reg { |
162 | 0 | self.lower_ctx.ensure_in_vreg(reg, ty) |
163 | 0 | } Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::x64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::x64::settings::Flags, 6> as cranelift_codegen::isa::x64::lower::isle::generated_code::Context>::ensure_in_vreg Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::aarch64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::aarch64::settings::Flags, 6> as cranelift_codegen::isa::aarch64::lower::isle::generated_code::Context>::ensure_in_vreg Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::riscv64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::riscv64::settings::Flags, 6> as cranelift_codegen::isa::riscv64::lower::isle::generated_code::Context>::ensure_in_vreg |
164 | | |
165 | | #[inline] |
166 | 13.0k | fn value_regs_get(&mut self, regs: ValueRegs, i: usize) -> Reg { |
167 | 13.0k | regs.regs()[i] |
168 | 13.0k | } <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::x64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::x64::settings::Flags, 6> as cranelift_codegen::isa::x64::lower::isle::generated_code::Context>::value_regs_get Line | Count | Source | 166 | 13.0k | fn value_regs_get(&mut self, regs: ValueRegs, i: usize) -> Reg { | 167 | 13.0k | regs.regs()[i] | 168 | 13.0k | } |
Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::aarch64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::aarch64::settings::Flags, 6> as cranelift_codegen::isa::aarch64::lower::isle::generated_code::Context>::value_regs_get Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::riscv64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::riscv64::settings::Flags, 6> as cranelift_codegen::isa::riscv64::lower::isle::generated_code::Context>::value_regs_get |
169 | | |
170 | | #[inline] |
171 | 0 | fn value_regs_len(&mut self, regs: ValueRegs) -> usize { |
172 | 0 | regs.regs().len() |
173 | 0 | } Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::x64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::x64::settings::Flags, 6> as cranelift_codegen::isa::x64::lower::isle::generated_code::Context>::value_regs_len Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::aarch64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::aarch64::settings::Flags, 6> as cranelift_codegen::isa::aarch64::lower::isle::generated_code::Context>::value_regs_len Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::riscv64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::riscv64::settings::Flags, 6> as cranelift_codegen::isa::riscv64::lower::isle::generated_code::Context>::value_regs_len |
174 | | |
175 | | #[inline] |
176 | 398k | fn value_list_slice(&mut self, list: ValueList) -> ValueSlice { |
177 | 398k | (list, 0) |
178 | 398k | } <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::x64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::x64::settings::Flags, 6> as cranelift_codegen::isa::x64::lower::isle::generated_code::Context>::value_list_slice Line | Count | Source | 176 | 398k | fn value_list_slice(&mut self, list: ValueList) -> ValueSlice { | 177 | 398k | (list, 0) | 178 | 398k | } |
Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::aarch64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::aarch64::settings::Flags, 6> as cranelift_codegen::isa::aarch64::lower::isle::generated_code::Context>::value_list_slice Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::riscv64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::riscv64::settings::Flags, 6> as cranelift_codegen::isa::riscv64::lower::isle::generated_code::Context>::value_list_slice |
179 | | |
180 | | #[inline] |
181 | 0 | fn value_slice_empty(&mut self, slice: ValueSlice) -> Option<()> { |
182 | 0 | let (list, off) = slice; |
183 | 0 | if off >= list.len(&self.lower_ctx.dfg().value_lists) { |
184 | 0 | Some(()) |
185 | | } else { |
186 | 0 | None |
187 | | } |
188 | 0 | } Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::x64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::x64::settings::Flags, 6> as cranelift_codegen::isa::x64::lower::isle::generated_code::Context>::value_slice_empty Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::aarch64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::aarch64::settings::Flags, 6> as cranelift_codegen::isa::aarch64::lower::isle::generated_code::Context>::value_slice_empty Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::riscv64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::riscv64::settings::Flags, 6> as cranelift_codegen::isa::riscv64::lower::isle::generated_code::Context>::value_slice_empty |
189 | | |
190 | | #[inline] |
191 | 131k | fn value_slice_unwrap(&mut self, slice: ValueSlice) -> Option<(Value, ValueSlice)> { |
192 | 131k | let (list, off) = slice; |
193 | 131k | if let Some(val) = list.get(off, &self.lower_ctx.dfg().value_lists) { |
194 | 131k | Some((val, (list, off + 1))) |
195 | | } else { |
196 | 0 | None |
197 | | } |
198 | 131k | } <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::x64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::x64::settings::Flags, 6> as cranelift_codegen::isa::x64::lower::isle::generated_code::Context>::value_slice_unwrap Line | Count | Source | 191 | 131k | fn value_slice_unwrap(&mut self, slice: ValueSlice) -> Option<(Value, ValueSlice)> { | 192 | 131k | let (list, off) = slice; | 193 | 131k | if let Some(val) = list.get(off, &self.lower_ctx.dfg().value_lists) { | 194 | 131k | Some((val, (list, off + 1))) | 195 | | } else { | 196 | 0 | None | 197 | | } | 198 | 131k | } |
Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::aarch64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::aarch64::settings::Flags, 6> as cranelift_codegen::isa::aarch64::lower::isle::generated_code::Context>::value_slice_unwrap Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::riscv64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::riscv64::settings::Flags, 6> as cranelift_codegen::isa::riscv64::lower::isle::generated_code::Context>::value_slice_unwrap |
199 | | |
200 | | #[inline] |
201 | 99.2k | fn value_slice_len(&mut self, slice: ValueSlice) -> usize { |
202 | 99.2k | let (list, off) = slice; |
203 | 99.2k | list.len(&self.lower_ctx.dfg().value_lists) - off |
204 | 99.2k | } <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::x64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::x64::settings::Flags, 6> as cranelift_codegen::isa::x64::lower::isle::generated_code::Context>::value_slice_len Line | Count | Source | 201 | 99.2k | fn value_slice_len(&mut self, slice: ValueSlice) -> usize { | 202 | 99.2k | let (list, off) = slice; | 203 | 99.2k | list.len(&self.lower_ctx.dfg().value_lists) - off | 204 | 99.2k | } |
Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::aarch64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::aarch64::settings::Flags, 6> as cranelift_codegen::isa::aarch64::lower::isle::generated_code::Context>::value_slice_len Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::riscv64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::riscv64::settings::Flags, 6> as cranelift_codegen::isa::riscv64::lower::isle::generated_code::Context>::value_slice_len |
205 | | |
206 | | #[inline] |
207 | 0 | fn value_slice_get(&mut self, slice: ValueSlice, idx: usize) -> Value { |
208 | 0 | let (list, off) = slice; |
209 | 0 | list.get(off + idx, &self.lower_ctx.dfg().value_lists) |
210 | 0 | .unwrap() |
211 | 0 | } Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::x64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::x64::settings::Flags, 6> as cranelift_codegen::isa::x64::lower::isle::generated_code::Context>::value_slice_get Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::aarch64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::aarch64::settings::Flags, 6> as cranelift_codegen::isa::aarch64::lower::isle::generated_code::Context>::value_slice_get Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::riscv64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::riscv64::settings::Flags, 6> as cranelift_codegen::isa::riscv64::lower::isle::generated_code::Context>::value_slice_get |
212 | | |
213 | | #[inline] |
214 | 117k | fn writable_reg_to_reg(&mut self, r: WritableReg) -> Reg { |
215 | 117k | r.to_reg() |
216 | 117k | } <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::x64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::x64::settings::Flags, 6> as cranelift_codegen::isa::x64::lower::isle::generated_code::Context>::writable_reg_to_reg Line | Count | Source | 214 | 117k | fn writable_reg_to_reg(&mut self, r: WritableReg) -> Reg { | 215 | 117k | r.to_reg() | 216 | 117k | } |
Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::aarch64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::aarch64::settings::Flags, 6> as cranelift_codegen::isa::aarch64::lower::isle::generated_code::Context>::writable_reg_to_reg Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::riscv64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::riscv64::settings::Flags, 6> as cranelift_codegen::isa::riscv64::lower::isle::generated_code::Context>::writable_reg_to_reg |
217 | | |
218 | | #[inline] |
219 | 0 | fn inst_results(&mut self, inst: Inst) -> ValueSlice { |
220 | 0 | (self.lower_ctx.dfg().inst_results_list(inst), 0) |
221 | 0 | } Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::x64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::x64::settings::Flags, 6> as cranelift_codegen::isa::x64::lower::isle::generated_code::Context>::inst_results Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::aarch64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::aarch64::settings::Flags, 6> as cranelift_codegen::isa::aarch64::lower::isle::generated_code::Context>::inst_results Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::riscv64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::riscv64::settings::Flags, 6> as cranelift_codegen::isa::riscv64::lower::isle::generated_code::Context>::inst_results |
222 | | |
223 | | #[inline] |
224 | 5.99M | fn first_result(&mut self, inst: Inst) -> Option<Value> { |
225 | 5.99M | self.lower_ctx.dfg().inst_results(inst).first().copied() |
226 | 5.99M | } <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::x64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::x64::settings::Flags, 6> as cranelift_codegen::isa::x64::lower::isle::generated_code::Context>::first_result Line | Count | Source | 224 | 5.99M | fn first_result(&mut self, inst: Inst) -> Option<Value> { | 225 | 5.99M | self.lower_ctx.dfg().inst_results(inst).first().copied() | 226 | 5.99M | } |
Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::aarch64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::aarch64::settings::Flags, 6> as cranelift_codegen::isa::aarch64::lower::isle::generated_code::Context>::first_result Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::riscv64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::riscv64::settings::Flags, 6> as cranelift_codegen::isa::riscv64::lower::isle::generated_code::Context>::first_result |
227 | | |
228 | | #[inline] |
229 | 12.6M | fn inst_data(&mut self, inst: Inst) -> InstructionData { |
230 | 12.6M | self.lower_ctx.dfg()[inst] |
231 | 12.6M | } <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::x64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::x64::settings::Flags, 6> as cranelift_codegen::isa::x64::lower::isle::generated_code::Context>::inst_data Line | Count | Source | 229 | 12.6M | fn inst_data(&mut self, inst: Inst) -> InstructionData { | 230 | 12.6M | self.lower_ctx.dfg()[inst] | 231 | 12.6M | } |
Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::aarch64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::aarch64::settings::Flags, 6> as cranelift_codegen::isa::aarch64::lower::isle::generated_code::Context>::inst_data Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::riscv64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::riscv64::settings::Flags, 6> as cranelift_codegen::isa::riscv64::lower::isle::generated_code::Context>::inst_data |
232 | | |
233 | | #[inline] |
234 | 4.68M | fn value_type(&mut self, val: Value) -> Type { |
235 | 4.68M | self.lower_ctx.dfg().value_type(val) |
236 | 4.68M | } <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::x64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::x64::settings::Flags, 6> as cranelift_codegen::isa::x64::lower::isle::generated_code::Context>::value_type Line | Count | Source | 234 | 4.68M | fn value_type(&mut self, val: Value) -> Type { | 235 | 4.68M | self.lower_ctx.dfg().value_type(val) | 236 | 4.68M | } |
Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::aarch64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::aarch64::settings::Flags, 6> as cranelift_codegen::isa::aarch64::lower::isle::generated_code::Context>::value_type Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::riscv64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::riscv64::settings::Flags, 6> as cranelift_codegen::isa::riscv64::lower::isle::generated_code::Context>::value_type |
237 | | |
238 | | #[inline] |
239 | 814k | fn def_inst(&mut self, val: Value) -> Option<Inst> { |
240 | 814k | self.lower_ctx.dfg().value_def(val).inst() |
241 | 814k | } <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::x64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::x64::settings::Flags, 6> as cranelift_codegen::isa::x64::lower::isle::generated_code::Context>::def_inst Line | Count | Source | 239 | 814k | fn def_inst(&mut self, val: Value) -> Option<Inst> { | 240 | 814k | self.lower_ctx.dfg().value_def(val).inst() | 241 | 814k | } |
Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::aarch64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::aarch64::settings::Flags, 6> as cranelift_codegen::isa::aarch64::lower::isle::generated_code::Context>::def_inst Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::riscv64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::riscv64::settings::Flags, 6> as cranelift_codegen::isa::riscv64::lower::isle::generated_code::Context>::def_inst |
242 | | |
243 | 0 | fn zero_value(&mut self, value: Value) -> Option<Value> { |
244 | 0 | let insn = self.def_inst(value); |
245 | 0 | if insn.is_some() { |
246 | 0 | let insn = insn.unwrap(); |
247 | 0 | let inst_data = self.lower_ctx.data(insn); |
248 | 0 | match inst_data { |
249 | | InstructionData::Unary { |
250 | | opcode: Opcode::Splat, |
251 | 0 | arg, |
252 | 0 | } => { |
253 | 0 | let arg = arg.clone(); |
254 | 0 | return self.zero_value(arg); |
255 | | } |
256 | | InstructionData::UnaryConst { |
257 | | opcode: Opcode::Vconst, |
258 | 0 | constant_handle, |
259 | 0 | } => { |
260 | 0 | let constant_data = |
261 | 0 | self.lower_ctx.get_constant_data(*constant_handle).clone(); |
262 | 0 | if constant_data.into_vec().iter().any(|&x| x != 0) { Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::x64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::x64::settings::Flags, 6> as cranelift_codegen::isa::x64::lower::isle::generated_code::Context>::zero_value::{closure#0} Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::aarch64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::aarch64::settings::Flags, 6> as cranelift_codegen::isa::aarch64::lower::isle::generated_code::Context>::zero_value::{closure#0} Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::riscv64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::riscv64::settings::Flags, 6> as cranelift_codegen::isa::riscv64::lower::isle::generated_code::Context>::zero_value::{closure#0} |
263 | 0 | return None; |
264 | | } else { |
265 | 0 | return Some(value); |
266 | | } |
267 | | } |
268 | 0 | InstructionData::UnaryImm { imm, .. } => { |
269 | 0 | if imm.bits() == 0 { |
270 | 0 | return Some(value); |
271 | | } else { |
272 | 0 | return None; |
273 | | } |
274 | | } |
275 | 0 | InstructionData::UnaryIeee32 { imm, .. } => { |
276 | 0 | if imm.bits() == 0 { |
277 | 0 | return Some(value); |
278 | | } else { |
279 | 0 | return None; |
280 | | } |
281 | | } |
282 | 0 | InstructionData::UnaryIeee64 { imm, .. } => { |
283 | 0 | if imm.bits() == 0 { |
284 | 0 | return Some(value); |
285 | | } else { |
286 | 0 | return None; |
287 | | } |
288 | | } |
289 | 0 | _ => None, |
290 | | } |
291 | | } else { |
292 | 0 | None |
293 | | } |
294 | 0 | } Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::x64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::x64::settings::Flags, 6> as cranelift_codegen::isa::x64::lower::isle::generated_code::Context>::zero_value Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::aarch64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::aarch64::settings::Flags, 6> as cranelift_codegen::isa::aarch64::lower::isle::generated_code::Context>::zero_value Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::riscv64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::riscv64::settings::Flags, 6> as cranelift_codegen::isa::riscv64::lower::isle::generated_code::Context>::zero_value |
295 | | |
296 | 0 | fn avoid_div_traps(&mut self, _: Type) -> Option<()> { |
297 | 0 | if self.flags.avoid_div_traps() { |
298 | 0 | Some(()) |
299 | | } else { |
300 | 0 | None |
301 | | } |
302 | 0 | } Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::x64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::x64::settings::Flags, 6> as cranelift_codegen::isa::x64::lower::isle::generated_code::Context>::avoid_div_traps Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::aarch64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::aarch64::settings::Flags, 6> as cranelift_codegen::isa::aarch64::lower::isle::generated_code::Context>::avoid_div_traps Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::riscv64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::riscv64::settings::Flags, 6> as cranelift_codegen::isa::riscv64::lower::isle::generated_code::Context>::avoid_div_traps |
303 | | |
304 | | #[inline] |
305 | 229k | fn tls_model(&mut self, _: Type) -> TlsModel { |
306 | 229k | self.flags.tls_model() |
307 | 229k | } <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::x64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::x64::settings::Flags, 6> as cranelift_codegen::isa::x64::lower::isle::generated_code::Context>::tls_model Line | Count | Source | 305 | 229k | fn tls_model(&mut self, _: Type) -> TlsModel { | 306 | 229k | self.flags.tls_model() | 307 | 229k | } |
Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::aarch64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::aarch64::settings::Flags, 6> as cranelift_codegen::isa::aarch64::lower::isle::generated_code::Context>::tls_model Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::riscv64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::riscv64::settings::Flags, 6> as cranelift_codegen::isa::riscv64::lower::isle::generated_code::Context>::tls_model |
308 | | |
309 | | #[inline] |
310 | 0 | fn tls_model_is_elf_gd(&mut self) -> Option<()> { |
311 | 0 | if self.flags.tls_model() == TlsModel::ElfGd { |
312 | 0 | Some(()) |
313 | | } else { |
314 | 0 | None |
315 | | } |
316 | 0 | } Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::x64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::x64::settings::Flags, 6> as cranelift_codegen::isa::x64::lower::isle::generated_code::Context>::tls_model_is_elf_gd Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::aarch64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::aarch64::settings::Flags, 6> as cranelift_codegen::isa::aarch64::lower::isle::generated_code::Context>::tls_model_is_elf_gd Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::riscv64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::riscv64::settings::Flags, 6> as cranelift_codegen::isa::riscv64::lower::isle::generated_code::Context>::tls_model_is_elf_gd |
317 | | |
318 | | #[inline] |
319 | 0 | fn tls_model_is_macho(&mut self) -> Option<()> { |
320 | 0 | if self.flags.tls_model() == TlsModel::Macho { |
321 | 0 | Some(()) |
322 | | } else { |
323 | 0 | None |
324 | | } |
325 | 0 | } Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::x64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::x64::settings::Flags, 6> as cranelift_codegen::isa::x64::lower::isle::generated_code::Context>::tls_model_is_macho Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::aarch64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::aarch64::settings::Flags, 6> as cranelift_codegen::isa::aarch64::lower::isle::generated_code::Context>::tls_model_is_macho Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::riscv64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::riscv64::settings::Flags, 6> as cranelift_codegen::isa::riscv64::lower::isle::generated_code::Context>::tls_model_is_macho |
326 | | |
327 | | #[inline] |
328 | 0 | fn tls_model_is_coff(&mut self) -> Option<()> { |
329 | 0 | if self.flags.tls_model() == TlsModel::Coff { |
330 | 0 | Some(()) |
331 | | } else { |
332 | 0 | None |
333 | | } |
334 | 0 | } Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::x64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::x64::settings::Flags, 6> as cranelift_codegen::isa::x64::lower::isle::generated_code::Context>::tls_model_is_coff Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::aarch64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::aarch64::settings::Flags, 6> as cranelift_codegen::isa::aarch64::lower::isle::generated_code::Context>::tls_model_is_coff Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::riscv64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::riscv64::settings::Flags, 6> as cranelift_codegen::isa::riscv64::lower::isle::generated_code::Context>::tls_model_is_coff |
335 | | |
336 | | #[inline] |
337 | 0 | fn preserve_frame_pointers(&mut self) -> Option<()> { |
338 | 0 | if self.flags.preserve_frame_pointers() { |
339 | 0 | Some(()) |
340 | | } else { |
341 | 0 | None |
342 | | } |
343 | 0 | } Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::x64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::x64::settings::Flags, 6> as cranelift_codegen::isa::x64::lower::isle::generated_code::Context>::preserve_frame_pointers Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::aarch64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::aarch64::settings::Flags, 6> as cranelift_codegen::isa::aarch64::lower::isle::generated_code::Context>::preserve_frame_pointers Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::riscv64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::riscv64::settings::Flags, 6> as cranelift_codegen::isa::riscv64::lower::isle::generated_code::Context>::preserve_frame_pointers |
344 | | |
345 | | #[inline] |
346 | 26.7k | fn func_ref_data(&mut self, func_ref: FuncRef) -> (SigRef, ExternalName, RelocDistance) { |
347 | 26.7k | let funcdata = &self.lower_ctx.dfg().ext_funcs[func_ref]; |
348 | 26.7k | ( |
349 | 26.7k | funcdata.signature, |
350 | 26.7k | funcdata.name.clone(), |
351 | 26.7k | funcdata.reloc_distance(), |
352 | 26.7k | ) |
353 | 26.7k | } <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::x64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::x64::settings::Flags, 6> as cranelift_codegen::isa::x64::lower::isle::generated_code::Context>::func_ref_data Line | Count | Source | 346 | 26.7k | fn func_ref_data(&mut self, func_ref: FuncRef) -> (SigRef, ExternalName, RelocDistance) { | 347 | 26.7k | let funcdata = &self.lower_ctx.dfg().ext_funcs[func_ref]; | 348 | 26.7k | ( | 349 | 26.7k | funcdata.signature, | 350 | 26.7k | funcdata.name.clone(), | 351 | 26.7k | funcdata.reloc_distance(), | 352 | 26.7k | ) | 353 | 26.7k | } |
Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::aarch64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::aarch64::settings::Flags, 6> as cranelift_codegen::isa::aarch64::lower::isle::generated_code::Context>::func_ref_data Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::riscv64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::riscv64::settings::Flags, 6> as cranelift_codegen::isa::riscv64::lower::isle::generated_code::Context>::func_ref_data |
354 | | |
355 | | #[inline] |
356 | 0 | fn box_external_name(&mut self, extname: ExternalName) -> BoxExternalName { |
357 | 0 | Box::new(extname) |
358 | 0 | } Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::x64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::x64::settings::Flags, 6> as cranelift_codegen::isa::x64::lower::isle::generated_code::Context>::box_external_name Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::aarch64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::aarch64::settings::Flags, 6> as cranelift_codegen::isa::aarch64::lower::isle::generated_code::Context>::box_external_name Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::riscv64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::riscv64::settings::Flags, 6> as cranelift_codegen::isa::riscv64::lower::isle::generated_code::Context>::box_external_name |
359 | | |
360 | | #[inline] |
361 | 0 | fn symbol_value_data( |
362 | 0 | &mut self, |
363 | 0 | global_value: GlobalValue, |
364 | 0 | ) -> Option<(ExternalName, RelocDistance, i64)> { |
365 | 0 | let (name, reloc, offset) = self.lower_ctx.symbol_value_data(global_value)?; |
366 | 0 | Some((name.clone(), reloc, offset)) |
367 | 0 | } Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::x64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::x64::settings::Flags, 6> as cranelift_codegen::isa::x64::lower::isle::generated_code::Context>::symbol_value_data Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::aarch64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::aarch64::settings::Flags, 6> as cranelift_codegen::isa::aarch64::lower::isle::generated_code::Context>::symbol_value_data Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::riscv64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::riscv64::settings::Flags, 6> as cranelift_codegen::isa::riscv64::lower::isle::generated_code::Context>::symbol_value_data |
368 | | |
369 | | #[inline] |
370 | 0 | fn reloc_distance_near(&mut self, dist: RelocDistance) -> Option<()> { |
371 | 0 | if dist == RelocDistance::Near { |
372 | 0 | Some(()) |
373 | | } else { |
374 | 0 | None |
375 | | } |
376 | 0 | } Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::x64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::x64::settings::Flags, 6> as cranelift_codegen::isa::x64::lower::isle::generated_code::Context>::reloc_distance_near Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::aarch64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::aarch64::settings::Flags, 6> as cranelift_codegen::isa::aarch64::lower::isle::generated_code::Context>::reloc_distance_near Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::riscv64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::riscv64::settings::Flags, 6> as cranelift_codegen::isa::riscv64::lower::isle::generated_code::Context>::reloc_distance_near |
377 | | |
378 | | #[inline] |
379 | 0 | fn u128_from_immediate(&mut self, imm: Immediate) -> Option<u128> { |
380 | 0 | let bytes = self.lower_ctx.get_immediate_data(imm).as_slice(); |
381 | 0 | Some(u128::from_le_bytes(bytes.try_into().ok()?)) |
382 | 0 | } Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::x64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::x64::settings::Flags, 6> as cranelift_codegen::isa::x64::lower::isle::generated_code::Context>::u128_from_immediate Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::aarch64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::aarch64::settings::Flags, 6> as cranelift_codegen::isa::aarch64::lower::isle::generated_code::Context>::u128_from_immediate Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::riscv64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::riscv64::settings::Flags, 6> as cranelift_codegen::isa::riscv64::lower::isle::generated_code::Context>::u128_from_immediate |
383 | | |
384 | | #[inline] |
385 | 0 | fn vec_mask_from_immediate(&mut self, imm: Immediate) -> Option<VecMask> { |
386 | 0 | let data = self.lower_ctx.get_immediate_data(imm); |
387 | 0 | if data.len() == 16 { |
388 | 0 | Some(Vec::from(data.as_slice())) |
389 | | } else { |
390 | 0 | None |
391 | | } |
392 | 0 | } Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::x64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::x64::settings::Flags, 6> as cranelift_codegen::isa::x64::lower::isle::generated_code::Context>::vec_mask_from_immediate Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::aarch64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::aarch64::settings::Flags, 6> as cranelift_codegen::isa::aarch64::lower::isle::generated_code::Context>::vec_mask_from_immediate Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::riscv64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::riscv64::settings::Flags, 6> as cranelift_codegen::isa::riscv64::lower::isle::generated_code::Context>::vec_mask_from_immediate |
393 | | |
394 | | #[inline] |
395 | 0 | fn u64_from_constant(&mut self, constant: Constant) -> Option<u64> { |
396 | 0 | let bytes = self.lower_ctx.get_constant_data(constant).as_slice(); |
397 | 0 | Some(u64::from_le_bytes(bytes.try_into().ok()?)) |
398 | 0 | } Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::x64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::x64::settings::Flags, 6> as cranelift_codegen::isa::x64::lower::isle::generated_code::Context>::u64_from_constant Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::aarch64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::aarch64::settings::Flags, 6> as cranelift_codegen::isa::aarch64::lower::isle::generated_code::Context>::u64_from_constant Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::riscv64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::riscv64::settings::Flags, 6> as cranelift_codegen::isa::riscv64::lower::isle::generated_code::Context>::u64_from_constant |
399 | | |
400 | | #[inline] |
401 | 0 | fn u128_from_constant(&mut self, constant: Constant) -> Option<u128> { |
402 | 0 | let bytes = self.lower_ctx.get_constant_data(constant).as_slice(); |
403 | 0 | Some(u128::from_le_bytes(bytes.try_into().ok()?)) |
404 | 0 | } Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::x64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::x64::settings::Flags, 6> as cranelift_codegen::isa::x64::lower::isle::generated_code::Context>::u128_from_constant Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::aarch64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::aarch64::settings::Flags, 6> as cranelift_codegen::isa::aarch64::lower::isle::generated_code::Context>::u128_from_constant Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::riscv64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::riscv64::settings::Flags, 6> as cranelift_codegen::isa::riscv64::lower::isle::generated_code::Context>::u128_from_constant |
405 | | |
406 | | #[inline] |
407 | 8.69k | fn emit_u64_le_const(&mut self, value: u64) -> VCodeConstant { |
408 | 8.69k | let data = VCodeConstantData::U64(value.to_le_bytes()); |
409 | 8.69k | self.lower_ctx.use_constant(data) |
410 | 8.69k | } <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::x64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::x64::settings::Flags, 6> as cranelift_codegen::isa::x64::lower::isle::generated_code::Context>::emit_u64_le_const Line | Count | Source | 407 | 8.69k | fn emit_u64_le_const(&mut self, value: u64) -> VCodeConstant { | 408 | 8.69k | let data = VCodeConstantData::U64(value.to_le_bytes()); | 409 | 8.69k | self.lower_ctx.use_constant(data) | 410 | 8.69k | } |
Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::aarch64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::aarch64::settings::Flags, 6> as cranelift_codegen::isa::aarch64::lower::isle::generated_code::Context>::emit_u64_le_const Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::riscv64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::riscv64::settings::Flags, 6> as cranelift_codegen::isa::riscv64::lower::isle::generated_code::Context>::emit_u64_le_const |
411 | | |
412 | | #[inline] |
413 | 33.8k | fn emit_u128_le_const(&mut self, value: u128) -> VCodeConstant { |
414 | 33.8k | let data = VCodeConstantData::Generated(value.to_le_bytes().as_slice().into()); |
415 | 33.8k | self.lower_ctx.use_constant(data) |
416 | 33.8k | } <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::x64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::x64::settings::Flags, 6> as cranelift_codegen::isa::x64::lower::isle::generated_code::Context>::emit_u128_le_const Line | Count | Source | 413 | 33.8k | fn emit_u128_le_const(&mut self, value: u128) -> VCodeConstant { | 414 | 33.8k | let data = VCodeConstantData::Generated(value.to_le_bytes().as_slice().into()); | 415 | 33.8k | self.lower_ctx.use_constant(data) | 416 | 33.8k | } |
Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::aarch64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::aarch64::settings::Flags, 6> as cranelift_codegen::isa::aarch64::lower::isle::generated_code::Context>::emit_u128_le_const Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::riscv64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::riscv64::settings::Flags, 6> as cranelift_codegen::isa::riscv64::lower::isle::generated_code::Context>::emit_u128_le_const |
417 | | |
418 | | #[inline] |
419 | 0 | fn const_to_vconst(&mut self, constant: Constant) -> VCodeConstant { |
420 | 0 | self.lower_ctx.use_constant(VCodeConstantData::Pool( |
421 | 0 | constant, |
422 | 0 | self.lower_ctx.get_constant_data(constant).clone(), |
423 | 0 | )) |
424 | 0 | } Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::x64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::x64::settings::Flags, 6> as cranelift_codegen::isa::x64::lower::isle::generated_code::Context>::const_to_vconst Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::aarch64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::aarch64::settings::Flags, 6> as cranelift_codegen::isa::aarch64::lower::isle::generated_code::Context>::const_to_vconst Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::riscv64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::riscv64::settings::Flags, 6> as cranelift_codegen::isa::riscv64::lower::isle::generated_code::Context>::const_to_vconst |
425 | | |
426 | 0 | fn only_writable_reg(&mut self, regs: WritableValueRegs) -> Option<WritableReg> { |
427 | 0 | regs.only_reg() |
428 | 0 | } Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::x64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::x64::settings::Flags, 6> as cranelift_codegen::isa::x64::lower::isle::generated_code::Context>::only_writable_reg Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::aarch64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::aarch64::settings::Flags, 6> as cranelift_codegen::isa::aarch64::lower::isle::generated_code::Context>::only_writable_reg Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::riscv64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::riscv64::settings::Flags, 6> as cranelift_codegen::isa::riscv64::lower::isle::generated_code::Context>::only_writable_reg |
429 | | |
430 | 0 | fn writable_regs_get(&mut self, regs: WritableValueRegs, idx: usize) -> WritableReg { |
431 | 0 | regs.regs()[idx] |
432 | 0 | } Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::x64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::x64::settings::Flags, 6> as cranelift_codegen::isa::x64::lower::isle::generated_code::Context>::writable_regs_get Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::aarch64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::aarch64::settings::Flags, 6> as cranelift_codegen::isa::aarch64::lower::isle::generated_code::Context>::writable_regs_get Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::riscv64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::riscv64::settings::Flags, 6> as cranelift_codegen::isa::riscv64::lower::isle::generated_code::Context>::writable_regs_get |
433 | | |
434 | 0 | fn abi_num_args(&mut self, abi: &Sig) -> usize { |
435 | 0 | self.lower_ctx.sigs().num_args(*abi) |
436 | 0 | } Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::x64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::x64::settings::Flags, 6> as cranelift_codegen::isa::x64::lower::isle::generated_code::Context>::abi_num_args Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::aarch64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::aarch64::settings::Flags, 6> as cranelift_codegen::isa::aarch64::lower::isle::generated_code::Context>::abi_num_args Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::riscv64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::riscv64::settings::Flags, 6> as cranelift_codegen::isa::riscv64::lower::isle::generated_code::Context>::abi_num_args |
437 | | |
438 | 0 | fn abi_get_arg(&mut self, abi: &Sig, idx: usize) -> ABIArg { |
439 | 0 | self.lower_ctx.sigs().get_arg(*abi, idx) |
440 | 0 | } Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::x64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::x64::settings::Flags, 6> as cranelift_codegen::isa::x64::lower::isle::generated_code::Context>::abi_get_arg Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::aarch64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::aarch64::settings::Flags, 6> as cranelift_codegen::isa::aarch64::lower::isle::generated_code::Context>::abi_get_arg Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::riscv64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::riscv64::settings::Flags, 6> as cranelift_codegen::isa::riscv64::lower::isle::generated_code::Context>::abi_get_arg |
441 | | |
442 | 0 | fn abi_num_rets(&mut self, abi: &Sig) -> usize { |
443 | 0 | self.lower_ctx.sigs().num_rets(*abi) |
444 | 0 | } Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::x64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::x64::settings::Flags, 6> as cranelift_codegen::isa::x64::lower::isle::generated_code::Context>::abi_num_rets Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::aarch64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::aarch64::settings::Flags, 6> as cranelift_codegen::isa::aarch64::lower::isle::generated_code::Context>::abi_num_rets Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::riscv64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::riscv64::settings::Flags, 6> as cranelift_codegen::isa::riscv64::lower::isle::generated_code::Context>::abi_num_rets |
445 | | |
446 | 0 | fn abi_get_ret(&mut self, abi: &Sig, idx: usize) -> ABIArg { |
447 | 0 | self.lower_ctx.sigs().get_ret(*abi, idx) |
448 | 0 | } Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::x64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::x64::settings::Flags, 6> as cranelift_codegen::isa::x64::lower::isle::generated_code::Context>::abi_get_ret Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::aarch64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::aarch64::settings::Flags, 6> as cranelift_codegen::isa::aarch64::lower::isle::generated_code::Context>::abi_get_ret Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::riscv64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::riscv64::settings::Flags, 6> as cranelift_codegen::isa::riscv64::lower::isle::generated_code::Context>::abi_get_ret |
449 | | |
450 | 0 | fn abi_ret_arg(&mut self, abi: &Sig) -> Option<ABIArg> { |
451 | 0 | self.lower_ctx.sigs().get_ret_arg(*abi) |
452 | 0 | } Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::x64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::x64::settings::Flags, 6> as cranelift_codegen::isa::x64::lower::isle::generated_code::Context>::abi_ret_arg Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::aarch64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::aarch64::settings::Flags, 6> as cranelift_codegen::isa::aarch64::lower::isle::generated_code::Context>::abi_ret_arg Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::riscv64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::riscv64::settings::Flags, 6> as cranelift_codegen::isa::riscv64::lower::isle::generated_code::Context>::abi_ret_arg |
453 | | |
454 | 0 | fn abi_no_ret_arg(&mut self, abi: &Sig) -> Option<()> { |
455 | 0 | if let Some(_) = self.lower_ctx.sigs().get_ret_arg(*abi) { |
456 | 0 | None |
457 | | } else { |
458 | 0 | Some(()) |
459 | | } |
460 | 0 | } Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::x64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::x64::settings::Flags, 6> as cranelift_codegen::isa::x64::lower::isle::generated_code::Context>::abi_no_ret_arg Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::aarch64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::aarch64::settings::Flags, 6> as cranelift_codegen::isa::aarch64::lower::isle::generated_code::Context>::abi_no_ret_arg Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::riscv64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::riscv64::settings::Flags, 6> as cranelift_codegen::isa::riscv64::lower::isle::generated_code::Context>::abi_no_ret_arg |
461 | | |
462 | 0 | fn abi_sized_stack_arg_space(&mut self, abi: &Sig) -> i64 { |
463 | 0 | self.lower_ctx.sigs()[*abi].sized_stack_arg_space() |
464 | 0 | } Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::x64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::x64::settings::Flags, 6> as cranelift_codegen::isa::x64::lower::isle::generated_code::Context>::abi_sized_stack_arg_space Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::aarch64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::aarch64::settings::Flags, 6> as cranelift_codegen::isa::aarch64::lower::isle::generated_code::Context>::abi_sized_stack_arg_space Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::riscv64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::riscv64::settings::Flags, 6> as cranelift_codegen::isa::riscv64::lower::isle::generated_code::Context>::abi_sized_stack_arg_space |
465 | | |
466 | 0 | fn abi_sized_stack_ret_space(&mut self, abi: &Sig) -> i64 { |
467 | 0 | self.lower_ctx.sigs()[*abi].sized_stack_ret_space() |
468 | 0 | } Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::x64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::x64::settings::Flags, 6> as cranelift_codegen::isa::x64::lower::isle::generated_code::Context>::abi_sized_stack_ret_space Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::aarch64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::aarch64::settings::Flags, 6> as cranelift_codegen::isa::aarch64::lower::isle::generated_code::Context>::abi_sized_stack_ret_space Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::riscv64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::riscv64::settings::Flags, 6> as cranelift_codegen::isa::riscv64::lower::isle::generated_code::Context>::abi_sized_stack_ret_space |
469 | | |
470 | 0 | fn abi_arg_only_slot(&mut self, arg: &ABIArg) -> Option<ABIArgSlot> { |
471 | 0 | match arg { |
472 | 0 | &ABIArg::Slots { ref slots, .. } => { |
473 | 0 | if slots.len() == 1 { |
474 | 0 | Some(slots[0]) |
475 | | } else { |
476 | 0 | None |
477 | | } |
478 | | } |
479 | 0 | _ => None, |
480 | | } |
481 | 0 | } Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::x64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::x64::settings::Flags, 6> as cranelift_codegen::isa::x64::lower::isle::generated_code::Context>::abi_arg_only_slot Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::aarch64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::aarch64::settings::Flags, 6> as cranelift_codegen::isa::aarch64::lower::isle::generated_code::Context>::abi_arg_only_slot Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::riscv64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::riscv64::settings::Flags, 6> as cranelift_codegen::isa::riscv64::lower::isle::generated_code::Context>::abi_arg_only_slot |
482 | | |
483 | 0 | fn abi_arg_struct_pointer(&mut self, arg: &ABIArg) -> Option<(ABIArgSlot, i64, u64)> { |
484 | 0 | match arg { |
485 | | &ABIArg::StructArg { |
486 | 0 | pointer, |
487 | 0 | offset, |
488 | 0 | size, |
489 | | .. |
490 | | } => { |
491 | 0 | if let Some(pointer) = pointer { |
492 | 0 | Some((pointer, offset, size)) |
493 | | } else { |
494 | 0 | None |
495 | | } |
496 | | } |
497 | 0 | _ => None, |
498 | | } |
499 | 0 | } Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::x64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::x64::settings::Flags, 6> as cranelift_codegen::isa::x64::lower::isle::generated_code::Context>::abi_arg_struct_pointer Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::aarch64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::aarch64::settings::Flags, 6> as cranelift_codegen::isa::aarch64::lower::isle::generated_code::Context>::abi_arg_struct_pointer Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::riscv64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::riscv64::settings::Flags, 6> as cranelift_codegen::isa::riscv64::lower::isle::generated_code::Context>::abi_arg_struct_pointer |
500 | | |
501 | 0 | fn abi_arg_implicit_pointer(&mut self, arg: &ABIArg) -> Option<(ABIArgSlot, i64, Type)> { |
502 | 0 | match arg { |
503 | | &ABIArg::ImplicitPtrArg { |
504 | 0 | pointer, |
505 | 0 | offset, |
506 | 0 | ty, |
507 | 0 | .. |
508 | 0 | } => Some((pointer, offset, ty)), |
509 | 0 | _ => None, |
510 | | } |
511 | 0 | } Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::x64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::x64::settings::Flags, 6> as cranelift_codegen::isa::x64::lower::isle::generated_code::Context>::abi_arg_implicit_pointer Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::aarch64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::aarch64::settings::Flags, 6> as cranelift_codegen::isa::aarch64::lower::isle::generated_code::Context>::abi_arg_implicit_pointer Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::riscv64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::riscv64::settings::Flags, 6> as cranelift_codegen::isa::riscv64::lower::isle::generated_code::Context>::abi_arg_implicit_pointer |
512 | | |
513 | 0 | fn abi_stackslot_addr( |
514 | 0 | &mut self, |
515 | 0 | dst: WritableReg, |
516 | 0 | stack_slot: StackSlot, |
517 | 0 | offset: Offset32, |
518 | 0 | ) -> MInst { |
519 | 0 | let offset = u32::try_from(i32::from(offset)).unwrap(); |
520 | 0 | self.lower_ctx |
521 | 0 | .abi() |
522 | 0 | .sized_stackslot_addr(stack_slot, offset, dst) |
523 | 0 | } Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::x64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::x64::settings::Flags, 6> as cranelift_codegen::isa::x64::lower::isle::generated_code::Context>::abi_stackslot_addr Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::aarch64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::aarch64::settings::Flags, 6> as cranelift_codegen::isa::aarch64::lower::isle::generated_code::Context>::abi_stackslot_addr Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::riscv64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::riscv64::settings::Flags, 6> as cranelift_codegen::isa::riscv64::lower::isle::generated_code::Context>::abi_stackslot_addr |
524 | | |
525 | 0 | fn abi_dynamic_stackslot_addr( |
526 | 0 | &mut self, |
527 | 0 | dst: WritableReg, |
528 | 0 | stack_slot: DynamicStackSlot, |
529 | 0 | ) -> MInst { |
530 | 0 | assert!(self |
531 | 0 | .lower_ctx |
532 | 0 | .abi() |
533 | 0 | .dynamic_stackslot_offsets() |
534 | 0 | .is_valid(stack_slot)); |
535 | 0 | self.lower_ctx.abi().dynamic_stackslot_addr(stack_slot, dst) |
536 | 0 | } Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::x64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::x64::settings::Flags, 6> as cranelift_codegen::isa::x64::lower::isle::generated_code::Context>::abi_dynamic_stackslot_addr Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::aarch64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::aarch64::settings::Flags, 6> as cranelift_codegen::isa::aarch64::lower::isle::generated_code::Context>::abi_dynamic_stackslot_addr Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::riscv64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::riscv64::settings::Flags, 6> as cranelift_codegen::isa::riscv64::lower::isle::generated_code::Context>::abi_dynamic_stackslot_addr |
537 | | |
538 | 0 | fn real_reg_to_reg(&mut self, reg: RealReg) -> Reg { |
539 | 0 | Reg::from(reg) |
540 | 0 | } Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::x64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::x64::settings::Flags, 6> as cranelift_codegen::isa::x64::lower::isle::generated_code::Context>::real_reg_to_reg Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::aarch64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::aarch64::settings::Flags, 6> as cranelift_codegen::isa::aarch64::lower::isle::generated_code::Context>::real_reg_to_reg Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::riscv64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::riscv64::settings::Flags, 6> as cranelift_codegen::isa::riscv64::lower::isle::generated_code::Context>::real_reg_to_reg |
541 | | |
542 | 0 | fn real_reg_to_writable_reg(&mut self, reg: RealReg) -> WritableReg { |
543 | 0 | Writable::from_reg(Reg::from(reg)) |
544 | 0 | } Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::x64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::x64::settings::Flags, 6> as cranelift_codegen::isa::x64::lower::isle::generated_code::Context>::real_reg_to_writable_reg Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::aarch64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::aarch64::settings::Flags, 6> as cranelift_codegen::isa::aarch64::lower::isle::generated_code::Context>::real_reg_to_writable_reg Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::riscv64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::riscv64::settings::Flags, 6> as cranelift_codegen::isa::riscv64::lower::isle::generated_code::Context>::real_reg_to_writable_reg |
545 | | |
546 | 0 | fn is_sinkable_inst(&mut self, val: Value) -> Option<Inst> { |
547 | 0 | let input = self.lower_ctx.get_value_as_source_or_const(val); |
548 | | |
549 | 0 | if let InputSourceInst::UniqueUse(inst, _) = input.inst { |
550 | 0 | Some(inst) |
551 | | } else { |
552 | 0 | None |
553 | | } |
554 | 0 | } Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::x64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::x64::settings::Flags, 6> as cranelift_codegen::isa::x64::lower::isle::generated_code::Context>::is_sinkable_inst Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::aarch64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::aarch64::settings::Flags, 6> as cranelift_codegen::isa::aarch64::lower::isle::generated_code::Context>::is_sinkable_inst Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::riscv64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::riscv64::settings::Flags, 6> as cranelift_codegen::isa::riscv64::lower::isle::generated_code::Context>::is_sinkable_inst |
555 | | |
556 | | #[inline] |
557 | 0 | fn sink_inst(&mut self, inst: Inst) { |
558 | 0 | self.lower_ctx.sink_inst(inst); |
559 | 0 | } Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::x64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::x64::settings::Flags, 6> as cranelift_codegen::isa::x64::lower::isle::generated_code::Context>::sink_inst Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::aarch64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::aarch64::settings::Flags, 6> as cranelift_codegen::isa::aarch64::lower::isle::generated_code::Context>::sink_inst Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::riscv64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::riscv64::settings::Flags, 6> as cranelift_codegen::isa::riscv64::lower::isle::generated_code::Context>::sink_inst |
560 | | |
561 | | #[inline] |
562 | 0 | fn preg_to_reg(&mut self, preg: PReg) -> Reg { |
563 | 0 | preg.into() |
564 | 0 | } Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::x64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::x64::settings::Flags, 6> as cranelift_codegen::isa::x64::lower::isle::generated_code::Context>::preg_to_reg Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::aarch64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::aarch64::settings::Flags, 6> as cranelift_codegen::isa::aarch64::lower::isle::generated_code::Context>::preg_to_reg Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::riscv64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::riscv64::settings::Flags, 6> as cranelift_codegen::isa::riscv64::lower::isle::generated_code::Context>::preg_to_reg |
565 | | |
566 | | #[inline] |
567 | 0 | fn gen_move(&mut self, ty: Type, dst: WritableReg, src: Reg) -> MInst { |
568 | 0 | MInst::gen_move(dst, src, ty) |
569 | 0 | } Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::x64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::x64::settings::Flags, 6> as cranelift_codegen::isa::x64::lower::isle::generated_code::Context>::gen_move Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::aarch64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::aarch64::settings::Flags, 6> as cranelift_codegen::isa::aarch64::lower::isle::generated_code::Context>::gen_move Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::riscv64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::riscv64::settings::Flags, 6> as cranelift_codegen::isa::riscv64::lower::isle::generated_code::Context>::gen_move |
570 | | |
571 | | #[inline] |
572 | 5.71k | fn intcc_reverse(&mut self, cc: &IntCC) -> IntCC { |
573 | 5.71k | cc.reverse() |
574 | 5.71k | } <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::x64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::x64::settings::Flags, 6> as cranelift_codegen::isa::x64::lower::isle::generated_code::Context>::intcc_reverse Line | Count | Source | 572 | 5.71k | fn intcc_reverse(&mut self, cc: &IntCC) -> IntCC { | 573 | 5.71k | cc.reverse() | 574 | 5.71k | } |
Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::aarch64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::aarch64::settings::Flags, 6> as cranelift_codegen::isa::aarch64::lower::isle::generated_code::Context>::intcc_reverse Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::riscv64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::riscv64::settings::Flags, 6> as cranelift_codegen::isa::riscv64::lower::isle::generated_code::Context>::intcc_reverse |
575 | | |
576 | | #[inline] |
577 | 0 | fn intcc_inverse(&mut self, cc: &IntCC) -> IntCC { |
578 | 0 | cc.inverse() |
579 | 0 | } Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::x64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::x64::settings::Flags, 6> as cranelift_codegen::isa::x64::lower::isle::generated_code::Context>::intcc_inverse Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::aarch64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::aarch64::settings::Flags, 6> as cranelift_codegen::isa::aarch64::lower::isle::generated_code::Context>::intcc_inverse Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::riscv64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::riscv64::settings::Flags, 6> as cranelift_codegen::isa::riscv64::lower::isle::generated_code::Context>::intcc_inverse |
580 | | |
581 | | #[inline] |
582 | 0 | fn floatcc_reverse(&mut self, cc: &FloatCC) -> FloatCC { |
583 | 0 | cc.reverse() |
584 | 0 | } Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::x64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::x64::settings::Flags, 6> as cranelift_codegen::isa::x64::lower::isle::generated_code::Context>::floatcc_reverse Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::aarch64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::aarch64::settings::Flags, 6> as cranelift_codegen::isa::aarch64::lower::isle::generated_code::Context>::floatcc_reverse Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::riscv64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::riscv64::settings::Flags, 6> as cranelift_codegen::isa::riscv64::lower::isle::generated_code::Context>::floatcc_reverse |
585 | | |
586 | | #[inline] |
587 | 0 | fn floatcc_inverse(&mut self, cc: &FloatCC) -> FloatCC { |
588 | 0 | cc.inverse() |
589 | 0 | } Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::x64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::x64::settings::Flags, 6> as cranelift_codegen::isa::x64::lower::isle::generated_code::Context>::floatcc_inverse Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::aarch64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::aarch64::settings::Flags, 6> as cranelift_codegen::isa::aarch64::lower::isle::generated_code::Context>::floatcc_inverse Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::riscv64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::riscv64::settings::Flags, 6> as cranelift_codegen::isa::riscv64::lower::isle::generated_code::Context>::floatcc_inverse |
590 | | |
591 | | /// Generate the return instruction. |
592 | 99.2k | fn gen_return(&mut self, (list, off): ValueSlice) { |
593 | 99.2k | let rets = (off..list.len(&self.lower_ctx.dfg().value_lists)) |
594 | 99.2k | .map(|ix| { |
595 | 1.35k | let val = list.get(ix, &self.lower_ctx.dfg().value_lists).unwrap(); |
596 | 1.35k | self.put_in_regs(val) |
597 | 99.2k | }) <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::x64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::x64::settings::Flags, 6> as cranelift_codegen::isa::x64::lower::isle::generated_code::Context>::gen_return::{closure#0} Line | Count | Source | 594 | 1.35k | .map(|ix| { | 595 | 1.35k | let val = list.get(ix, &self.lower_ctx.dfg().value_lists).unwrap(); | 596 | 1.35k | self.put_in_regs(val) | 597 | 1.35k | }) |
Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::aarch64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::aarch64::settings::Flags, 6> as cranelift_codegen::isa::aarch64::lower::isle::generated_code::Context>::gen_return::{closure#0} Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::riscv64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::riscv64::settings::Flags, 6> as cranelift_codegen::isa::riscv64::lower::isle::generated_code::Context>::gen_return::{closure#0} |
598 | 99.2k | .collect(); |
599 | 99.2k | self.lower_ctx.gen_return(rets); |
600 | 99.2k | } <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::x64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::x64::settings::Flags, 6> as cranelift_codegen::isa::x64::lower::isle::generated_code::Context>::gen_return Line | Count | Source | 592 | 99.2k | fn gen_return(&mut self, (list, off): ValueSlice) { | 593 | 99.2k | let rets = (off..list.len(&self.lower_ctx.dfg().value_lists)) | 594 | 99.2k | .map(|ix| { | 595 | | let val = list.get(ix, &self.lower_ctx.dfg().value_lists).unwrap(); | 596 | | self.put_in_regs(val) | 597 | 99.2k | }) | 598 | 99.2k | .collect(); | 599 | 99.2k | self.lower_ctx.gen_return(rets); | 600 | 99.2k | } |
Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::aarch64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::aarch64::settings::Flags, 6> as cranelift_codegen::isa::aarch64::lower::isle::generated_code::Context>::gen_return Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::riscv64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::riscv64::settings::Flags, 6> as cranelift_codegen::isa::riscv64::lower::isle::generated_code::Context>::gen_return |
601 | | }; |
602 | | } |
603 | | |
604 | | /// Helpers specifically for machines that use ABICaller. |
605 | | #[macro_export] |
606 | | #[doc(hidden)] |
607 | | macro_rules! isle_prelude_caller_methods { |
608 | | ($abispec:ty, $abicaller:ty) => { |
609 | 26.7k | fn gen_call( |
610 | 26.7k | &mut self, |
611 | 26.7k | sig_ref: SigRef, |
612 | 26.7k | extname: ExternalName, |
613 | 26.7k | dist: RelocDistance, |
614 | 26.7k | args @ (inputs, off): ValueSlice, |
615 | 26.7k | ) -> InstOutput { |
616 | 26.7k | let caller_conv = self.lower_ctx.abi().call_conv(self.lower_ctx.sigs()); |
617 | 26.7k | let sig = &self.lower_ctx.dfg().signatures[sig_ref]; |
618 | 26.7k | let num_rets = sig.returns.len(); |
619 | 26.7k | let abi = self.lower_ctx.sigs().abi_sig_for_sig_ref(sig_ref); |
620 | 26.7k | let caller = <$abicaller>::from_func( |
621 | 26.7k | self.lower_ctx.sigs(), |
622 | 26.7k | sig_ref, |
623 | 26.7k | &extname, |
624 | 26.7k | dist, |
625 | 26.7k | caller_conv, |
626 | 26.7k | self.flags.clone(), |
627 | 26.7k | ) |
628 | 26.7k | .unwrap(); |
629 | 26.7k | |
630 | 26.7k | assert_eq!( |
631 | 26.7k | inputs.len(&self.lower_ctx.dfg().value_lists) - off, |
632 | 26.7k | sig.params.len() |
633 | 26.7k | ); |
634 | | |
635 | 26.7k | self.gen_call_common(abi, num_rets, caller, args) |
636 | 26.7k | } <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::x64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::x64::settings::Flags, 6> as cranelift_codegen::isa::x64::lower::isle::generated_code::Context>::gen_call Line | Count | Source | 609 | 26.7k | fn gen_call( | 610 | 26.7k | &mut self, | 611 | 26.7k | sig_ref: SigRef, | 612 | 26.7k | extname: ExternalName, | 613 | 26.7k | dist: RelocDistance, | 614 | 26.7k | args @ (inputs, off): ValueSlice, | 615 | 26.7k | ) -> InstOutput { | 616 | 26.7k | let caller_conv = self.lower_ctx.abi().call_conv(self.lower_ctx.sigs()); | 617 | 26.7k | let sig = &self.lower_ctx.dfg().signatures[sig_ref]; | 618 | 26.7k | let num_rets = sig.returns.len(); | 619 | 26.7k | let abi = self.lower_ctx.sigs().abi_sig_for_sig_ref(sig_ref); | 620 | 26.7k | let caller = <$abicaller>::from_func( | 621 | 26.7k | self.lower_ctx.sigs(), | 622 | 26.7k | sig_ref, | 623 | 26.7k | &extname, | 624 | 26.7k | dist, | 625 | 26.7k | caller_conv, | 626 | 26.7k | self.flags.clone(), | 627 | 26.7k | ) | 628 | 26.7k | .unwrap(); | 629 | 26.7k | | 630 | 26.7k | assert_eq!( | 631 | 26.7k | inputs.len(&self.lower_ctx.dfg().value_lists) - off, | 632 | 26.7k | sig.params.len() | 633 | 26.7k | ); | 634 | | | 635 | 26.7k | self.gen_call_common(abi, num_rets, caller, args) | 636 | 26.7k | } |
Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::aarch64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::aarch64::settings::Flags, 6> as cranelift_codegen::isa::aarch64::lower::isle::generated_code::Context>::gen_call Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::riscv64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::riscv64::settings::Flags, 6> as cranelift_codegen::isa::riscv64::lower::isle::generated_code::Context>::gen_call |
637 | | |
638 | 77.9k | fn gen_call_indirect( |
639 | 77.9k | &mut self, |
640 | 77.9k | sig_ref: SigRef, |
641 | 77.9k | val: Value, |
642 | 77.9k | args @ (inputs, off): ValueSlice, |
643 | 77.9k | ) -> InstOutput { |
644 | 77.9k | let caller_conv = self.lower_ctx.abi().call_conv(self.lower_ctx.sigs()); |
645 | 77.9k | let ptr = self.put_in_reg(val); |
646 | 77.9k | let sig = &self.lower_ctx.dfg().signatures[sig_ref]; |
647 | 77.9k | let num_rets = sig.returns.len(); |
648 | 77.9k | let abi = self.lower_ctx.sigs().abi_sig_for_sig_ref(sig_ref); |
649 | 77.9k | let caller = <$abicaller>::from_ptr( |
650 | 77.9k | self.lower_ctx.sigs(), |
651 | 77.9k | sig_ref, |
652 | 77.9k | ptr, |
653 | 77.9k | Opcode::CallIndirect, |
654 | 77.9k | caller_conv, |
655 | 77.9k | self.flags.clone(), |
656 | 77.9k | ) |
657 | 77.9k | .unwrap(); |
658 | 77.9k | |
659 | 77.9k | assert_eq!( |
660 | 77.9k | inputs.len(&self.lower_ctx.dfg().value_lists) - off, |
661 | 77.9k | sig.params.len() |
662 | 77.9k | ); |
663 | | |
664 | 77.9k | self.gen_call_common(abi, num_rets, caller, args) |
665 | 77.9k | } <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::x64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::x64::settings::Flags, 6> as cranelift_codegen::isa::x64::lower::isle::generated_code::Context>::gen_call_indirect Line | Count | Source | 638 | 77.9k | fn gen_call_indirect( | 639 | 77.9k | &mut self, | 640 | 77.9k | sig_ref: SigRef, | 641 | 77.9k | val: Value, | 642 | 77.9k | args @ (inputs, off): ValueSlice, | 643 | 77.9k | ) -> InstOutput { | 644 | 77.9k | let caller_conv = self.lower_ctx.abi().call_conv(self.lower_ctx.sigs()); | 645 | 77.9k | let ptr = self.put_in_reg(val); | 646 | 77.9k | let sig = &self.lower_ctx.dfg().signatures[sig_ref]; | 647 | 77.9k | let num_rets = sig.returns.len(); | 648 | 77.9k | let abi = self.lower_ctx.sigs().abi_sig_for_sig_ref(sig_ref); | 649 | 77.9k | let caller = <$abicaller>::from_ptr( | 650 | 77.9k | self.lower_ctx.sigs(), | 651 | 77.9k | sig_ref, | 652 | 77.9k | ptr, | 653 | 77.9k | Opcode::CallIndirect, | 654 | 77.9k | caller_conv, | 655 | 77.9k | self.flags.clone(), | 656 | 77.9k | ) | 657 | 77.9k | .unwrap(); | 658 | 77.9k | | 659 | 77.9k | assert_eq!( | 660 | 77.9k | inputs.len(&self.lower_ctx.dfg().value_lists) - off, | 661 | 77.9k | sig.params.len() | 662 | 77.9k | ); | 663 | | | 664 | 77.9k | self.gen_call_common(abi, num_rets, caller, args) | 665 | 77.9k | } |
Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::aarch64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::aarch64::settings::Flags, 6> as cranelift_codegen::isa::aarch64::lower::isle::generated_code::Context>::gen_call_indirect Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::riscv64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::riscv64::settings::Flags, 6> as cranelift_codegen::isa::riscv64::lower::isle::generated_code::Context>::gen_call_indirect |
666 | | }; |
667 | | } |
668 | | |
669 | | /// Helpers for the above ISLE prelude implementations. Meant to go |
670 | | /// inside the `impl` for the context type, not the trait impl. |
671 | | #[macro_export] |
672 | | #[doc(hidden)] |
673 | | macro_rules! isle_prelude_method_helpers { |
674 | | ($abicaller:ty) => { |
675 | 104k | fn gen_call_common( |
676 | 104k | &mut self, |
677 | 104k | abi: Sig, |
678 | 104k | num_rets: usize, |
679 | 104k | mut caller: $abicaller, |
680 | 104k | (inputs, off): ValueSlice, |
681 | 104k | ) -> InstOutput { |
682 | 104k | caller.emit_stack_pre_adjust(self.lower_ctx); |
683 | 104k | |
684 | 104k | let num_args = self.lower_ctx.sigs().num_args(abi); |
685 | 104k | |
686 | 104k | assert_eq!( |
687 | 104k | inputs.len(&self.lower_ctx.dfg().value_lists) - off, |
688 | 104k | num_args |
689 | 104k | ); |
690 | 104k | let mut arg_regs = vec![]; |
691 | 211k | for i in 0..num_args { |
692 | 211k | let input = inputs |
693 | 211k | .get(off + i, &self.lower_ctx.dfg().value_lists) |
694 | 211k | .unwrap(); |
695 | 211k | arg_regs.push(self.lower_ctx.put_value_in_regs(input)); |
696 | 211k | } |
697 | 211k | for (i, arg_regs) in arg_regs.iter().enumerate() { |
698 | 211k | caller.emit_copy_regs_to_buffer(self.lower_ctx, i, *arg_regs); |
699 | 211k | } |
700 | 211k | for (i, arg_regs) in arg_regs.iter().enumerate() { |
701 | 211k | for inst in caller.gen_arg(self.lower_ctx, i, *arg_regs) { |
702 | 5.27k | self.lower_ctx.emit(inst); |
703 | 5.27k | } |
704 | | } |
705 | | |
706 | | // Handle retvals prior to emitting call, so the |
707 | | // constraints are on the call instruction; but buffer the |
708 | | // instructions till after the call. |
709 | 104k | let mut outputs = InstOutput::new(); |
710 | 104k | let mut retval_insts: crate::machinst::abi::SmallInstVec<_> = smallvec::smallvec![]; |
711 | | // We take the *last* `num_rets` returns of the sig: |
712 | | // this skips a StructReturn, if any, that is present. |
713 | 104k | let sigdata_num_rets = self.lower_ctx.sigs().num_rets(abi); |
714 | 104k | debug_assert!(num_rets <= sigdata_num_rets); |
715 | 104k | for i in (sigdata_num_rets - num_rets)..sigdata_num_rets { |
716 | 49.6k | // Borrow `sigdata` again so we don't hold a `self` |
717 | 49.6k | // borrow across the `&mut self` arg to |
718 | 49.6k | // `abi_arg_slot_regs()` below. |
719 | 49.6k | let ret = self.lower_ctx.sigs().get_ret(abi, i); |
720 | 49.6k | let retval_regs = self.abi_arg_slot_regs(&ret).unwrap(); |
721 | 49.6k | retval_insts.extend( |
722 | 49.6k | caller |
723 | 49.6k | .gen_retval(self.lower_ctx, i, retval_regs.clone()) |
724 | 49.6k | .into_iter(), |
725 | 49.6k | ); |
726 | 49.6k | outputs.push(valueregs::non_writable_value_regs(retval_regs)); |
727 | 49.6k | } |
728 | | |
729 | 104k | caller.emit_call(self.lower_ctx); |
730 | | |
731 | 104k | for inst in retval_insts { |
732 | 0 | self.lower_ctx.emit(inst); |
733 | 0 | } |
734 | | |
735 | 104k | caller.emit_stack_post_adjust(self.lower_ctx); |
736 | 104k | |
737 | 104k | outputs |
738 | 104k | } <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::x64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::x64::settings::Flags, 6>>::gen_call_common Line | Count | Source | 675 | 104k | fn gen_call_common( | 676 | 104k | &mut self, | 677 | 104k | abi: Sig, | 678 | 104k | num_rets: usize, | 679 | 104k | mut caller: $abicaller, | 680 | 104k | (inputs, off): ValueSlice, | 681 | 104k | ) -> InstOutput { | 682 | 104k | caller.emit_stack_pre_adjust(self.lower_ctx); | 683 | 104k | | 684 | 104k | let num_args = self.lower_ctx.sigs().num_args(abi); | 685 | 104k | | 686 | 104k | assert_eq!( | 687 | 104k | inputs.len(&self.lower_ctx.dfg().value_lists) - off, | 688 | 104k | num_args | 689 | 104k | ); | 690 | 104k | let mut arg_regs = vec![]; | 691 | 211k | for i in 0..num_args { | 692 | 211k | let input = inputs | 693 | 211k | .get(off + i, &self.lower_ctx.dfg().value_lists) | 694 | 211k | .unwrap(); | 695 | 211k | arg_regs.push(self.lower_ctx.put_value_in_regs(input)); | 696 | 211k | } | 697 | 211k | for (i, arg_regs) in arg_regs.iter().enumerate() { | 698 | 211k | caller.emit_copy_regs_to_buffer(self.lower_ctx, i, *arg_regs); | 699 | 211k | } | 700 | 211k | for (i, arg_regs) in arg_regs.iter().enumerate() { | 701 | 211k | for inst in caller.gen_arg(self.lower_ctx, i, *arg_regs) { | 702 | 5.27k | self.lower_ctx.emit(inst); | 703 | 5.27k | } | 704 | | } | 705 | | | 706 | | // Handle retvals prior to emitting call, so the | 707 | | // constraints are on the call instruction; but buffer the | 708 | | // instructions till after the call. | 709 | 104k | let mut outputs = InstOutput::new(); | 710 | 104k | let mut retval_insts: crate::machinst::abi::SmallInstVec<_> = smallvec::smallvec![]; | 711 | | // We take the *last* `num_rets` returns of the sig: | 712 | | // this skips a StructReturn, if any, that is present. | 713 | 104k | let sigdata_num_rets = self.lower_ctx.sigs().num_rets(abi); | 714 | 104k | debug_assert!(num_rets <= sigdata_num_rets); | 715 | 104k | for i in (sigdata_num_rets - num_rets)..sigdata_num_rets { | 716 | 49.6k | // Borrow `sigdata` again so we don't hold a `self` | 717 | 49.6k | // borrow across the `&mut self` arg to | 718 | 49.6k | // `abi_arg_slot_regs()` below. | 719 | 49.6k | let ret = self.lower_ctx.sigs().get_ret(abi, i); | 720 | 49.6k | let retval_regs = self.abi_arg_slot_regs(&ret).unwrap(); | 721 | 49.6k | retval_insts.extend( | 722 | 49.6k | caller | 723 | 49.6k | .gen_retval(self.lower_ctx, i, retval_regs.clone()) | 724 | 49.6k | .into_iter(), | 725 | 49.6k | ); | 726 | 49.6k | outputs.push(valueregs::non_writable_value_regs(retval_regs)); | 727 | 49.6k | } | 728 | | | 729 | 104k | caller.emit_call(self.lower_ctx); | 730 | | | 731 | 104k | for inst in retval_insts { | 732 | 0 | self.lower_ctx.emit(inst); | 733 | 0 | } | 734 | | | 735 | 104k | caller.emit_stack_post_adjust(self.lower_ctx); | 736 | 104k | | 737 | 104k | outputs | 738 | 104k | } |
Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::aarch64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::aarch64::settings::Flags, 6>>::gen_call_common Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::riscv64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::riscv64::settings::Flags, 6>>::gen_call_common |
739 | | |
740 | 49.6k | fn abi_arg_slot_regs(&mut self, arg: &ABIArg) -> Option<WritableValueRegs> { |
741 | 49.6k | match arg { |
742 | 49.6k | &ABIArg::Slots { ref slots, .. } => match slots.len() { |
743 | | 1 => { |
744 | 49.6k | let a = self.temp_writable_reg(slots[0].get_type()); |
745 | 49.6k | Some(WritableValueRegs::one(a)) |
746 | | } |
747 | | 2 => { |
748 | 0 | let a = self.temp_writable_reg(slots[0].get_type()); |
749 | 0 | let b = self.temp_writable_reg(slots[1].get_type()); |
750 | 0 | Some(WritableValueRegs::two(a, b)) |
751 | | } |
752 | 0 | _ => panic!("Expected to see one or two slots only from {:?}", arg), |
753 | | }, |
754 | 0 | _ => None, |
755 | | } |
756 | 49.6k | } <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::x64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::x64::settings::Flags, 6>>::abi_arg_slot_regs Line | Count | Source | 740 | 49.6k | fn abi_arg_slot_regs(&mut self, arg: &ABIArg) -> Option<WritableValueRegs> { | 741 | 49.6k | match arg { | 742 | 49.6k | &ABIArg::Slots { ref slots, .. } => match slots.len() { | 743 | | 1 => { | 744 | 49.6k | let a = self.temp_writable_reg(slots[0].get_type()); | 745 | 49.6k | Some(WritableValueRegs::one(a)) | 746 | | } | 747 | | 2 => { | 748 | 0 | let a = self.temp_writable_reg(slots[0].get_type()); | 749 | 0 | let b = self.temp_writable_reg(slots[1].get_type()); | 750 | 0 | Some(WritableValueRegs::two(a, b)) | 751 | | } | 752 | 0 | _ => panic!("Expected to see one or two slots only from {:?}", arg), | 753 | | }, | 754 | 0 | _ => None, | 755 | | } | 756 | 49.6k | } |
Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::aarch64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::aarch64::settings::Flags, 6>>::abi_arg_slot_regs Unexecuted instantiation: <cranelift_codegen::machinst::isle::IsleContext<cranelift_codegen::isa::riscv64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::riscv64::settings::Flags, 6>>::abi_arg_slot_regs |
757 | | }; |
758 | | } |
759 | | |
760 | | /// This structure is used to implement the ISLE-generated `Context` trait and |
761 | | /// internally has a temporary reference to a machinst `LowerCtx`. |
762 | | pub(crate) struct IsleContext<'a, 'b, I, Flags, IsaFlags, const N: usize> |
763 | | where |
764 | | I: VCodeInst, |
765 | | [(I, bool); N]: smallvec::Array, |
766 | | { |
767 | | pub lower_ctx: &'a mut Lower<'b, I>, |
768 | | pub triple: &'a Triple, |
769 | | pub flags: &'a Flags, |
770 | | pub isa_flags: &'a IsaFlags, |
771 | | } |
772 | | |
773 | | /// Shared lowering code amongst all backends for doing ISLE-based lowering. |
774 | | /// |
775 | | /// The `isle_lower` argument here is an ISLE-generated function for `lower` and |
776 | | /// then this function otherwise handles register mapping and such around the |
777 | | /// lowering. |
778 | 869k | pub(crate) fn lower_common<I, Flags, IsaFlags, IsleFunction, const N: usize>( |
779 | 869k | lower_ctx: &mut Lower<I>, |
780 | 869k | triple: &Triple, |
781 | 869k | flags: &Flags, |
782 | 869k | isa_flags: &IsaFlags, |
783 | 869k | outputs: &[InsnOutput], |
784 | 869k | inst: Inst, |
785 | 869k | isle_lower: IsleFunction, |
786 | 869k | ) -> Result<(), ()> |
787 | 869k | where |
788 | 869k | I: VCodeInst, |
789 | 869k | [(I, bool); N]: smallvec::Array<Item = (I, bool)>, |
790 | 869k | IsleFunction: Fn(&mut IsleContext<'_, '_, I, Flags, IsaFlags, N>, Inst) -> Option<InstOutput>, |
791 | 869k | { |
792 | 869k | // TODO: reuse the ISLE context across lowerings so we can reuse its |
793 | 869k | // internal heap allocations. |
794 | 869k | let mut isle_ctx = IsleContext { |
795 | 869k | lower_ctx, |
796 | 869k | triple, |
797 | 869k | flags, |
798 | 869k | isa_flags, |
799 | 869k | }; |
800 | | |
801 | 869k | let temp_regs = isle_lower(&mut isle_ctx, inst).ok_or(())?; |
802 | | |
803 | | #[cfg(debug_assertions)] |
804 | | { |
805 | | debug_assert_eq!( |
806 | | temp_regs.len(), |
807 | | outputs.len(), |
808 | | "the number of temporary values and destination values do \ |
809 | | not match ({} != {}); ensure the correct registers are being \ |
810 | | returned.", |
811 | | temp_regs.len(), |
812 | | outputs.len(), |
813 | | ); |
814 | | } |
815 | | |
816 | | // The ISLE generated code emits its own registers to define the |
817 | | // instruction's lowered values in. However, other instructions |
818 | | // that use this SSA value will be lowered assuming that the value |
819 | | // is generated into a pre-assigned, different, register. |
820 | | // |
821 | | // To connect the two, we set up "aliases" in the VCodeBuilder |
822 | | // that apply when it is building the Operand table for the |
823 | | // regalloc to use. These aliases effectively rewrite any use of |
824 | | // the pre-assigned register to the register that was returned by |
825 | | // the ISLE lowering logic. |
826 | 869k | for i in 0..outputs.len() { |
827 | 458k | let regs = temp_regs[i]; |
828 | 458k | let dsts = get_output_reg(isle_ctx.lower_ctx, outputs[i]); |
829 | 458k | let ty = isle_ctx |
830 | 458k | .lower_ctx |
831 | 458k | .output_ty(outputs[i].insn, outputs[i].output); |
832 | 458k | if ty == types::IFLAGS || ty == types::FFLAGS { |
833 | | // Flags values do not occupy any registers. |
834 | 0 | assert!(regs.len() == 0); |
835 | | } else { |
836 | 458k | for (dst, temp) in dsts.regs().iter().zip(regs.regs().iter()) { |
837 | 458k | isle_ctx.lower_ctx.set_vreg_alias(dst.to_reg(), *temp); |
838 | 458k | } |
839 | | } |
840 | | } |
841 | | |
842 | 869k | Ok(()) |
843 | 869k | } cranelift_codegen::machinst::isle::lower_common::<cranelift_codegen::isa::x64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::x64::settings::Flags, cranelift_codegen::isa::x64::lower::isle::lower_branch::{closure#0}, 6> Line | Count | Source | 778 | 167k | pub(crate) fn lower_common<I, Flags, IsaFlags, IsleFunction, const N: usize>( | 779 | 167k | lower_ctx: &mut Lower<I>, | 780 | 167k | triple: &Triple, | 781 | 167k | flags: &Flags, | 782 | 167k | isa_flags: &IsaFlags, | 783 | 167k | outputs: &[InsnOutput], | 784 | 167k | inst: Inst, | 785 | 167k | isle_lower: IsleFunction, | 786 | 167k | ) -> Result<(), ()> | 787 | 167k | where | 788 | 167k | I: VCodeInst, | 789 | 167k | [(I, bool); N]: smallvec::Array<Item = (I, bool)>, | 790 | 167k | IsleFunction: Fn(&mut IsleContext<'_, '_, I, Flags, IsaFlags, N>, Inst) -> Option<InstOutput>, | 791 | 167k | { | 792 | 167k | // TODO: reuse the ISLE context across lowerings so we can reuse its | 793 | 167k | // internal heap allocations. | 794 | 167k | let mut isle_ctx = IsleContext { | 795 | 167k | lower_ctx, | 796 | 167k | triple, | 797 | 167k | flags, | 798 | 167k | isa_flags, | 799 | 167k | }; | 800 | | | 801 | 167k | let temp_regs = isle_lower(&mut isle_ctx, inst).ok_or(())?; | 802 | | | 803 | | #[cfg(debug_assertions)] | 804 | | { | 805 | | debug_assert_eq!( | 806 | | temp_regs.len(), | 807 | | outputs.len(), | 808 | | "the number of temporary values and destination values do \ | 809 | | not match ({} != {}); ensure the correct registers are being \ | 810 | | returned.", | 811 | | temp_regs.len(), | 812 | | outputs.len(), | 813 | | ); | 814 | | } | 815 | | | 816 | | // The ISLE generated code emits its own registers to define the | 817 | | // instruction's lowered values in. However, other instructions | 818 | | // that use this SSA value will be lowered assuming that the value | 819 | | // is generated into a pre-assigned, different, register. | 820 | | // | 821 | | // To connect the two, we set up "aliases" in the VCodeBuilder | 822 | | // that apply when it is building the Operand table for the | 823 | | // regalloc to use. These aliases effectively rewrite any use of | 824 | | // the pre-assigned register to the register that was returned by | 825 | | // the ISLE lowering logic. | 826 | 167k | for i in 0..outputs.len() { | 827 | 0 | let regs = temp_regs[i]; | 828 | 0 | let dsts = get_output_reg(isle_ctx.lower_ctx, outputs[i]); | 829 | 0 | let ty = isle_ctx | 830 | 0 | .lower_ctx | 831 | 0 | .output_ty(outputs[i].insn, outputs[i].output); | 832 | 0 | if ty == types::IFLAGS || ty == types::FFLAGS { | 833 | | // Flags values do not occupy any registers. | 834 | 0 | assert!(regs.len() == 0); | 835 | | } else { | 836 | 0 | for (dst, temp) in dsts.regs().iter().zip(regs.regs().iter()) { | 837 | 0 | isle_ctx.lower_ctx.set_vreg_alias(dst.to_reg(), *temp); | 838 | 0 | } | 839 | | } | 840 | | } | 841 | | | 842 | 167k | Ok(()) | 843 | 167k | } |
cranelift_codegen::machinst::isle::lower_common::<cranelift_codegen::isa::x64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::x64::settings::Flags, cranelift_codegen::isa::x64::lower::isle::lower::{closure#0}, 6> Line | Count | Source | 778 | 702k | pub(crate) fn lower_common<I, Flags, IsaFlags, IsleFunction, const N: usize>( | 779 | 702k | lower_ctx: &mut Lower<I>, | 780 | 702k | triple: &Triple, | 781 | 702k | flags: &Flags, | 782 | 702k | isa_flags: &IsaFlags, | 783 | 702k | outputs: &[InsnOutput], | 784 | 702k | inst: Inst, | 785 | 702k | isle_lower: IsleFunction, | 786 | 702k | ) -> Result<(), ()> | 787 | 702k | where | 788 | 702k | I: VCodeInst, | 789 | 702k | [(I, bool); N]: smallvec::Array<Item = (I, bool)>, | 790 | 702k | IsleFunction: Fn(&mut IsleContext<'_, '_, I, Flags, IsaFlags, N>, Inst) -> Option<InstOutput>, | 791 | 702k | { | 792 | 702k | // TODO: reuse the ISLE context across lowerings so we can reuse its | 793 | 702k | // internal heap allocations. | 794 | 702k | let mut isle_ctx = IsleContext { | 795 | 702k | lower_ctx, | 796 | 702k | triple, | 797 | 702k | flags, | 798 | 702k | isa_flags, | 799 | 702k | }; | 800 | | | 801 | 702k | let temp_regs = isle_lower(&mut isle_ctx, inst).ok_or(())?; | 802 | | | 803 | | #[cfg(debug_assertions)] | 804 | | { | 805 | | debug_assert_eq!( | 806 | | temp_regs.len(), | 807 | | outputs.len(), | 808 | | "the number of temporary values and destination values do \ | 809 | | not match ({} != {}); ensure the correct registers are being \ | 810 | | returned.", | 811 | | temp_regs.len(), | 812 | | outputs.len(), | 813 | | ); | 814 | | } | 815 | | | 816 | | // The ISLE generated code emits its own registers to define the | 817 | | // instruction's lowered values in. However, other instructions | 818 | | // that use this SSA value will be lowered assuming that the value | 819 | | // is generated into a pre-assigned, different, register. | 820 | | // | 821 | | // To connect the two, we set up "aliases" in the VCodeBuilder | 822 | | // that apply when it is building the Operand table for the | 823 | | // regalloc to use. These aliases effectively rewrite any use of | 824 | | // the pre-assigned register to the register that was returned by | 825 | | // the ISLE lowering logic. | 826 | 702k | for i in 0..outputs.len() { | 827 | 458k | let regs = temp_regs[i]; | 828 | 458k | let dsts = get_output_reg(isle_ctx.lower_ctx, outputs[i]); | 829 | 458k | let ty = isle_ctx | 830 | 458k | .lower_ctx | 831 | 458k | .output_ty(outputs[i].insn, outputs[i].output); | 832 | 458k | if ty == types::IFLAGS || ty == types::FFLAGS { | 833 | | // Flags values do not occupy any registers. | 834 | 0 | assert!(regs.len() == 0); | 835 | | } else { | 836 | 458k | for (dst, temp) in dsts.regs().iter().zip(regs.regs().iter()) { | 837 | 458k | isle_ctx.lower_ctx.set_vreg_alias(dst.to_reg(), *temp); | 838 | 458k | } | 839 | | } | 840 | | } | 841 | | | 842 | 702k | Ok(()) | 843 | 702k | } |
Unexecuted instantiation: cranelift_codegen::machinst::isle::lower_common::<cranelift_codegen::isa::aarch64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::aarch64::settings::Flags, cranelift_codegen::isa::aarch64::lower::isle::lower_branch::{closure#0}, 6> Unexecuted instantiation: cranelift_codegen::machinst::isle::lower_common::<cranelift_codegen::isa::aarch64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::aarch64::settings::Flags, cranelift_codegen::isa::aarch64::lower::isle::lower::{closure#0}, 6> Unexecuted instantiation: cranelift_codegen::machinst::isle::lower_common::<cranelift_codegen::isa::riscv64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::riscv64::settings::Flags, cranelift_codegen::isa::riscv64::lower::isle::lower_branch::{closure#0}, 6> Unexecuted instantiation: cranelift_codegen::machinst::isle::lower_common::<cranelift_codegen::isa::riscv64::lower::isle::generated_code::MInst, cranelift_codegen::settings::Flags, cranelift_codegen::isa::riscv64::settings::Flags, cranelift_codegen::isa::riscv64::lower::isle::lower::{closure#0}, 6> |