1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
use crate;
use crateprimitive;
use crate;
// Logical NOT: returns 1 for zero input, 0 for non-zero.
// `Involution` on integer semantics fails for inputs other than 0 or
// 1: `logical_not(logical_not(5)) = logical_not(0) = 1`, not `5`.
// Involution only holds when the input is already a boolean, which is
// not guaranteed by the `u32` wire type. Per audit
// `primitive-laws-kimi-AUDIT`.
pub const LAWS: & = &;
/// Logical NOT operation.
;
// Backend-specific lowering tripwires for logical_not.
// WGSL lowering marker for `primitive.compare.logical_not`.
//
// Not a stub: this is a zero-overhead Category A marker. `LogicalNot::program`
// builds concrete IR through `core/src/ops/primitive/mod.rs::unary_u32_program`; `core/src/lower/wgsl/expr.rs::emit_unop` emits WGSL.
// `core/tests/conformance.rs::conformance_all_primitives` verifies
// lowered GPU bytes are bit-exact against the conform CPU reference.
//
// ```wgsl
// _vyre_store_out(idx, select(0u, 1u, (_vyre_load_a(idx) == 0u)));
// ```