Coverage Report

Created: 2026-09-14 07:40

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/wasmtime/target/debug/build/cranelift-codegen-5627c30b53ecceb2/out/settings-arm64.rs
Line
Count
Source
1
#[derive(Clone, PartialEq, Hash)] // /src/wasmtime/cranelift/codegen/meta/src/gen_settings.rs:397
2
/// Flags group `arm64`.
3
pub struct Flags {
4
    bytes: [u8; 2], // /src/wasmtime/cranelift/codegen/meta/src/gen_settings.rs:400
5
}
6
impl Flags {
7
    /// Create flags arm64 settings group.
8
    #[allow(unused_variables, reason = "generated code")] // /src/wasmtime/cranelift/codegen/meta/src/gen_settings.rs:24
9
6.13k
    pub fn new(shared: &settings::Flags, builder: &Builder) -> Self {
10
6.13k
        let bvec = builder.state_for("arm64"); // /src/wasmtime/cranelift/codegen/meta/src/gen_settings.rs:29
11
6.13k
        let mut arm64 = Self { bytes: [0; 2] }; // /src/wasmtime/cranelift/codegen/meta/src/gen_settings.rs:30
12
6.13k
        debug_assert_eq!(bvec.len(), 2); // /src/wasmtime/cranelift/codegen/meta/src/gen_settings.rs:36
13
6.13k
        arm64.bytes[0..2].copy_from_slice(&bvec); // /src/wasmtime/cranelift/codegen/meta/src/gen_settings.rs:41
14
6.13k
        arm64 // /src/wasmtime/cranelift/codegen/meta/src/gen_settings.rs:48
15
6.13k
    }
16
}
17
impl Flags {
18
    /// Iterates the setting values.
19
4.04k
    pub fn iter(&self) -> impl Iterator<Item = Value> + use<> {
20
4.04k
        let mut bytes = [0; 2]; // /src/wasmtime/cranelift/codegen/meta/src/gen_settings.rs:58
21
4.04k
        bytes.copy_from_slice(&self.bytes[0..2]); // /src/wasmtime/cranelift/codegen/meta/src/gen_settings.rs:59
22
40.4k
        DESCRIPTORS.iter().filter_map(move |d| {
23
40.4k
            let values = match &d.detail {
24
0
                detail::Detail::Preset => return None, // /src/wasmtime/cranelift/codegen/meta/src/gen_settings.rs:62
25
0
                detail::Detail::Enum { last, enumerators } => Some(TEMPLATE.enums(*last, *enumerators)), // /src/wasmtime/cranelift/codegen/meta/src/gen_settings.rs:63
26
40.4k
                _ => None // /src/wasmtime/cranelift/codegen/meta/src/gen_settings.rs:64
27
            }
28
            ; // /src/wasmtime/cranelift/codegen/meta/src/gen_settings.rs:66
29
40.4k
            Some(Value { name: d.name, detail: d.detail, values, value: bytes[d.offset as usize] }) // /src/wasmtime/cranelift/codegen/meta/src/gen_settings.rs:67
30
40.4k
        }
31
        ) // /src/wasmtime/cranelift/codegen/meta/src/gen_settings.rs:69
32
4.04k
    }
33
}
34
/// User-defined settings.
35
#[allow(dead_code, reason = "generated code")] // /src/wasmtime/cranelift/codegen/meta/src/gen_settings.rs:183
36
impl Flags {
37
    /// Dynamic numbered predicate getter.
38
22.8k
    fn numbered_predicate(&self, p: usize) -> bool {
39
22.8k
        self.bytes[0 + p / 8] & (1 << (p % 8)) != 0 // /src/wasmtime/cranelift/codegen/meta/src/gen_settings.rs:188
40
22.8k
    }
41
    /// Has Large System Extensions (FEAT_LSE) support.
42
718
    pub fn has_lse(&self) -> bool {
43
718
        self.numbered_predicate(0) // /src/wasmtime/cranelift/codegen/meta/src/gen_settings.rs:155
44
718
    }
45
    /// Has Pointer authentication (FEAT_PAuth) support; enables the use of non-HINT instructions, but does not have an effect on code generation by itself.
46
1.21k
    pub fn has_pauth(&self) -> bool {
47
1.21k
        self.numbered_predicate(1) // /src/wasmtime/cranelift/codegen/meta/src/gen_settings.rs:155
48
1.21k
    }
49
    /// Use half-precision floating point (FEAT_FP16) instructions.
50
48
    pub fn has_fp16(&self) -> bool {
51
48
        self.numbered_predicate(2) // /src/wasmtime/cranelift/codegen/meta/src/gen_settings.rs:155
52
48
    }
53
    /// Has Dot Product (FEAT_DotProd) support; enables lowering i8 dot products (e.g. the relaxed-SIMD i8x16 dot) to SDOT/UDOT instead of a smull/saddlp widening fallback.
54
0
    pub fn has_dotprod(&self) -> bool {
55
0
        self.numbered_predicate(3) // /src/wasmtime/cranelift/codegen/meta/src/gen_settings.rs:155
56
0
    }
57
    /// Has Int8 Matrix Multiplication (FEAT_I8MM) support; enables lowering the mixed unsigned-by-signed i8 dot product to USDOT instead of a umull/smull + saddlp widening fallback.
58
0
    pub fn has_i8mm(&self) -> bool {
59
0
        self.numbered_predicate(4) // /src/wasmtime/cranelift/codegen/meta/src/gen_settings.rs:155
60
0
    }
61
    /// If function return address signing is enabled, then apply it to all functions; does not have an effect on code generation by itself.
62
450
    pub fn sign_return_address_all(&self) -> bool {
63
450
        self.numbered_predicate(5) // /src/wasmtime/cranelift/codegen/meta/src/gen_settings.rs:155
64
450
    }
65
    /// Use pointer authentication instructions to sign function return addresses; HINT-space instructions using the A key are generated and simple functions that do not use the stack are not affected unless overridden by other settings.
66
7.88k
    pub fn sign_return_address(&self) -> bool {
67
7.88k
        self.numbered_predicate(6) // /src/wasmtime/cranelift/codegen/meta/src/gen_settings.rs:155
68
7.88k
    }
69
    /// Use the B key with pointer authentication instructions instead of the default A key; does not have an effect on code generation by itself. Some platform ABIs may require this, for example.
70
2.61k
    pub fn sign_return_address_with_bkey(&self) -> bool {
71
2.61k
        self.numbered_predicate(7) // /src/wasmtime/cranelift/codegen/meta/src/gen_settings.rs:155
72
2.61k
    }
73
    /// Use Branch Target Identification (FEAT_BTI) instructions.
74
6.53k
    pub fn use_bti(&self) -> bool {
75
6.53k
        self.numbered_predicate(8) // /src/wasmtime/cranelift/codegen/meta/src/gen_settings.rs:155
76
6.53k
    }
77
    /// Use the `csdb` instruction when spectre mitigations are enabled
78
3.34k
    pub fn use_csdb(&self) -> bool {
79
3.34k
        self.numbered_predicate(9) // /src/wasmtime/cranelift/codegen/meta/src/gen_settings.rs:155
80
3.34k
    }
81
}
82
static DESCRIPTORS: [detail::Descriptor; 10] = [ // /src/wasmtime/cranelift/codegen/meta/src/gen_settings.rs:224
83
    detail::Descriptor {
84
        name: "has_lse", // /src/wasmtime/cranelift/codegen/meta/src/gen_settings.rs:232
85
        description: "Has Large System Extensions (FEAT_LSE) support.", // /src/wasmtime/cranelift/codegen/meta/src/gen_settings.rs:233
86
        offset: 0, // /src/wasmtime/cranelift/codegen/meta/src/gen_settings.rs:234
87
        detail: detail::Detail::Bool { bit: 0 }, // /src/wasmtime/cranelift/codegen/meta/src/gen_settings.rs:237
88
    }
89
    , // /src/wasmtime/cranelift/codegen/meta/src/gen_settings.rs:259
90
    detail::Descriptor {
91
        name: "has_pauth", // /src/wasmtime/cranelift/codegen/meta/src/gen_settings.rs:232
92
        description: "Has Pointer authentication (FEAT_PAuth) support; enables the use of non-HINT instructions, but does not have an effect on code generation by itself.", // /src/wasmtime/cranelift/codegen/meta/src/gen_settings.rs:233
93
        offset: 0, // /src/wasmtime/cranelift/codegen/meta/src/gen_settings.rs:234
94
        detail: detail::Detail::Bool { bit: 1 }, // /src/wasmtime/cranelift/codegen/meta/src/gen_settings.rs:237
95
    }
96
    , // /src/wasmtime/cranelift/codegen/meta/src/gen_settings.rs:259
97
    detail::Descriptor {
98
        name: "has_fp16", // /src/wasmtime/cranelift/codegen/meta/src/gen_settings.rs:232
99
        description: "Use half-precision floating point (FEAT_FP16) instructions.", // /src/wasmtime/cranelift/codegen/meta/src/gen_settings.rs:233
100
        offset: 0, // /src/wasmtime/cranelift/codegen/meta/src/gen_settings.rs:234
101
        detail: detail::Detail::Bool { bit: 2 }, // /src/wasmtime/cranelift/codegen/meta/src/gen_settings.rs:237
102
    }
103
    , // /src/wasmtime/cranelift/codegen/meta/src/gen_settings.rs:259
104
    detail::Descriptor {
105
        name: "has_dotprod", // /src/wasmtime/cranelift/codegen/meta/src/gen_settings.rs:232
106
        description: "Has Dot Product (FEAT_DotProd) support; enables lowering i8 dot products (e.g. the relaxed-SIMD i8x16 dot) to SDOT/UDOT instead of a smull/saddlp widening fallback.", // /src/wasmtime/cranelift/codegen/meta/src/gen_settings.rs:233
107
        offset: 0, // /src/wasmtime/cranelift/codegen/meta/src/gen_settings.rs:234
108
        detail: detail::Detail::Bool { bit: 3 }, // /src/wasmtime/cranelift/codegen/meta/src/gen_settings.rs:237
109
    }
110
    , // /src/wasmtime/cranelift/codegen/meta/src/gen_settings.rs:259
111
    detail::Descriptor {
112
        name: "has_i8mm", // /src/wasmtime/cranelift/codegen/meta/src/gen_settings.rs:232
113
        description: "Has Int8 Matrix Multiplication (FEAT_I8MM) support; enables lowering the mixed unsigned-by-signed i8 dot product to USDOT instead of a umull/smull + saddlp widening fallback.", // /src/wasmtime/cranelift/codegen/meta/src/gen_settings.rs:233
114
        offset: 0, // /src/wasmtime/cranelift/codegen/meta/src/gen_settings.rs:234
115
        detail: detail::Detail::Bool { bit: 4 }, // /src/wasmtime/cranelift/codegen/meta/src/gen_settings.rs:237
116
    }
117
    , // /src/wasmtime/cranelift/codegen/meta/src/gen_settings.rs:259
118
    detail::Descriptor {
119
        name: "sign_return_address_all", // /src/wasmtime/cranelift/codegen/meta/src/gen_settings.rs:232
120
        description: "If function return address signing is enabled, then apply it to all functions; does not have an effect on code generation by itself.", // /src/wasmtime/cranelift/codegen/meta/src/gen_settings.rs:233
121
        offset: 0, // /src/wasmtime/cranelift/codegen/meta/src/gen_settings.rs:234
122
        detail: detail::Detail::Bool { bit: 5 }, // /src/wasmtime/cranelift/codegen/meta/src/gen_settings.rs:237
123
    }
124
    , // /src/wasmtime/cranelift/codegen/meta/src/gen_settings.rs:259
125
    detail::Descriptor {
126
        name: "sign_return_address", // /src/wasmtime/cranelift/codegen/meta/src/gen_settings.rs:232
127
        description: "Use pointer authentication instructions to sign function return addresses; HINT-space instructions using the A key are generated and simple functions that do not use the stack are not affected unless overridden by other settings.", // /src/wasmtime/cranelift/codegen/meta/src/gen_settings.rs:233
128
        offset: 0, // /src/wasmtime/cranelift/codegen/meta/src/gen_settings.rs:234
129
        detail: detail::Detail::Bool { bit: 6 }, // /src/wasmtime/cranelift/codegen/meta/src/gen_settings.rs:237
130
    }
131
    , // /src/wasmtime/cranelift/codegen/meta/src/gen_settings.rs:259
132
    detail::Descriptor {
133
        name: "sign_return_address_with_bkey", // /src/wasmtime/cranelift/codegen/meta/src/gen_settings.rs:232
134
        description: "Use the B key with pointer authentication instructions instead of the default A key; does not have an effect on code generation by itself. Some platform ABIs may require this, for example.", // /src/wasmtime/cranelift/codegen/meta/src/gen_settings.rs:233
135
        offset: 0, // /src/wasmtime/cranelift/codegen/meta/src/gen_settings.rs:234
136
        detail: detail::Detail::Bool { bit: 7 }, // /src/wasmtime/cranelift/codegen/meta/src/gen_settings.rs:237
137
    }
138
    , // /src/wasmtime/cranelift/codegen/meta/src/gen_settings.rs:259
139
    detail::Descriptor {
140
        name: "use_bti", // /src/wasmtime/cranelift/codegen/meta/src/gen_settings.rs:232
141
        description: "Use Branch Target Identification (FEAT_BTI) instructions.", // /src/wasmtime/cranelift/codegen/meta/src/gen_settings.rs:233
142
        offset: 1, // /src/wasmtime/cranelift/codegen/meta/src/gen_settings.rs:234
143
        detail: detail::Detail::Bool { bit: 0 }, // /src/wasmtime/cranelift/codegen/meta/src/gen_settings.rs:237
144
    }
145
    , // /src/wasmtime/cranelift/codegen/meta/src/gen_settings.rs:259
146
    detail::Descriptor {
147
        name: "use_csdb", // /src/wasmtime/cranelift/codegen/meta/src/gen_settings.rs:232
148
        description: "Use the `csdb` instruction when spectre mitigations are enabled", // /src/wasmtime/cranelift/codegen/meta/src/gen_settings.rs:233
149
        offset: 1, // /src/wasmtime/cranelift/codegen/meta/src/gen_settings.rs:234
150
        detail: detail::Detail::Bool { bit: 1 }, // /src/wasmtime/cranelift/codegen/meta/src/gen_settings.rs:237
151
    }
152
    , // /src/wasmtime/cranelift/codegen/meta/src/gen_settings.rs:259
153
]; // /src/wasmtime/cranelift/codegen/meta/src/gen_settings.rs:275
154
static ENUMERATORS: [&str; 0] = [ // /src/wasmtime/cranelift/codegen/meta/src/gen_settings.rs:278
155
]; // /src/wasmtime/cranelift/codegen/meta/src/gen_settings.rs:284
156
static HASH_TABLE: [u16; 16] = [ // /src/wasmtime/cranelift/codegen/meta/src/gen_settings.rs:294
157
    9, // /src/wasmtime/cranelift/codegen/meta/src/gen_settings.rs:298
158
    0xffff, // /src/wasmtime/cranelift/codegen/meta/src/gen_settings.rs:306
159
    0xffff, // /src/wasmtime/cranelift/codegen/meta/src/gen_settings.rs:306
160
    0xffff, // /src/wasmtime/cranelift/codegen/meta/src/gen_settings.rs:306
161
    7, // /src/wasmtime/cranelift/codegen/meta/src/gen_settings.rs:298
162
    8, // /src/wasmtime/cranelift/codegen/meta/src/gen_settings.rs:298
163
    3, // /src/wasmtime/cranelift/codegen/meta/src/gen_settings.rs:298
164
    0, // /src/wasmtime/cranelift/codegen/meta/src/gen_settings.rs:298
165
    0xffff, // /src/wasmtime/cranelift/codegen/meta/src/gen_settings.rs:306
166
    0xffff, // /src/wasmtime/cranelift/codegen/meta/src/gen_settings.rs:306
167
    0xffff, // /src/wasmtime/cranelift/codegen/meta/src/gen_settings.rs:306
168
    1, // /src/wasmtime/cranelift/codegen/meta/src/gen_settings.rs:298
169
    2, // /src/wasmtime/cranelift/codegen/meta/src/gen_settings.rs:298
170
    4, // /src/wasmtime/cranelift/codegen/meta/src/gen_settings.rs:298
171
    5, // /src/wasmtime/cranelift/codegen/meta/src/gen_settings.rs:298
172
    6, // /src/wasmtime/cranelift/codegen/meta/src/gen_settings.rs:298
173
]; // /src/wasmtime/cranelift/codegen/meta/src/gen_settings.rs:310
174
static PRESETS: [(u8, u8); 0] = [ // /src/wasmtime/cranelift/codegen/meta/src/gen_settings.rs:313
175
]; // /src/wasmtime/cranelift/codegen/meta/src/gen_settings.rs:330
176
static TEMPLATE: detail::Template = detail::Template {
177
    name: "arm64", // /src/wasmtime/cranelift/codegen/meta/src/gen_settings.rs:345
178
    descriptors: &DESCRIPTORS, // /src/wasmtime/cranelift/codegen/meta/src/gen_settings.rs:346
179
    enumerators: &ENUMERATORS, // /src/wasmtime/cranelift/codegen/meta/src/gen_settings.rs:347
180
    hash_table: &HASH_TABLE, // /src/wasmtime/cranelift/codegen/meta/src/gen_settings.rs:348
181
    defaults: &[0x00, 0x00], // /src/wasmtime/cranelift/codegen/meta/src/gen_settings.rs:349
182
    presets: &PRESETS, // /src/wasmtime/cranelift/codegen/meta/src/gen_settings.rs:350
183
}
184
; // /src/wasmtime/cranelift/codegen/meta/src/gen_settings.rs:353
185
/// Create a `settings::Builder` for the arm64 settings group.
186
6.13k
pub fn builder() -> Builder {
187
6.13k
    Builder::new(&TEMPLATE) // /src/wasmtime/cranelift/codegen/meta/src/gen_settings.rs:360
188
6.13k
}
189
impl fmt::Display for Flags {
190
0
    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
191
0
        writeln!(f, "[arm64]")?; // /src/wasmtime/cranelift/codegen/meta/src/gen_settings.rs:369
192
0
        for d in &DESCRIPTORS {
193
0
            if !d.detail.is_preset() {
194
0
                write!(f, "{} = ", d.name)?; // /src/wasmtime/cranelift/codegen/meta/src/gen_settings.rs:372
195
0
                TEMPLATE.format_toml_value(d.detail, self.bytes[d.offset as usize], f)?; // /src/wasmtime/cranelift/codegen/meta/src/gen_settings.rs:373
196
0
                writeln!(f)?; // /src/wasmtime/cranelift/codegen/meta/src/gen_settings.rs:377
197
0
            }
198
        }
199
0
        Ok(()) // /src/wasmtime/cranelift/codegen/meta/src/gen_settings.rs:380
200
0
    }
201
}
202
impl Flags {
203
    /// Get the flag values as raw bytes for hashing.
204
3.90k
    pub fn hash_key(&self) -> &[u8] {
205
3.90k
        &self.bytes // /src/wasmtime/cranelift/codegen/meta/src/gen_settings.rs:390
206
3.90k
    }
207
}