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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
//! Original PTX specification:
//!
//! sured.b.op.geom.ctype.mode [a,b],c; // byte addressing
//! .op = { .add, .min, .max, .and, .or };
//! .geom = { .1d, .2d, .3d };
//! .ctype = { .u32, .u64, .s32, .b32, .s64 }; // for sured.b
//! .mode = { .trap, .clamp, .zero };
//! ----------------------------------------------------
//! sured.p.op.geom.ctype.mode [a,b],c; // sample addressing
//! .op = { .add, .min, .max, .and, .or };
//! .geom = { .1d, .2d, .3d };
//! .ctype = { .b32, .b64 }; // for sured.p
//! .mode = { .trap, .clamp, .zero };
#![allow(unused)]
use crate::r#type::common::*;
pub mod section_0 {
use crate::Spanned;
use crate::parser::Span;
use crate::r#type::common::*;
use serde::Serialize;
#[derive(Debug, Clone, PartialEq, Serialize)]
pub enum Op {
Add, // .add
Min, // .min
Max, // .max
And, // .and
Or, // .or
}
#[derive(Debug, Clone, PartialEq, Serialize)]
pub enum Geom {
_1d, // .1d
_2d, // .2d
_3d, // .3d
}
#[derive(Debug, Clone, PartialEq, Serialize)]
pub enum Ctype {
U32, // .u32
U64, // .u64
S32, // .s32
B32, // .b32
S64, // .s64
}
#[derive(Debug, Clone, PartialEq, Serialize)]
pub enum Mode {
Clamp, // .clamp
Trap, // .trap
Zero, // .zero
}
#[derive(Debug, Clone, PartialEq, Spanned, Serialize)]
pub struct SuredBOpGeomCtypeMode {
pub b: (), // .b
pub op: Op, // .op
pub geom: Geom, // .geom
pub ctype: Ctype, // .ctype
pub mode: Mode, // .mode
pub a: TexHandler2, // [a, b]
pub c: GeneralOperand, // c
pub span: Span,
}
}
pub mod section_1 {
use crate::Spanned;
use crate::parser::Span;
use crate::r#type::common::*;
use serde::Serialize;
#[derive(Debug, Clone, PartialEq, Serialize)]
pub enum Op {
Add, // .add
Min, // .min
Max, // .max
And, // .and
Or, // .or
}
#[derive(Debug, Clone, PartialEq, Serialize)]
pub enum Geom {
_1d, // .1d
_2d, // .2d
_3d, // .3d
}
#[derive(Debug, Clone, PartialEq, Serialize)]
pub enum Ctype {
B32, // .b32
B64, // .b64
}
#[derive(Debug, Clone, PartialEq, Serialize)]
pub enum Mode {
Clamp, // .clamp
Trap, // .trap
Zero, // .zero
}
#[derive(Debug, Clone, PartialEq, Spanned, Serialize)]
pub struct SuredPOpGeomCtypeMode {
pub p: (), // .p
pub op: Op, // .op
pub geom: Geom, // .geom
pub ctype: Ctype, // .ctype
pub mode: Mode, // .mode
pub a: TexHandler2, // [a, b]
pub c: GeneralOperand, // c
pub span: Span,
}
}
// Re-export types with section suffixes to avoid naming conflicts
// e.g., Type0 for section_0::Type, Type1 for section_1::Type
pub use section_0::Ctype as Ctype0;
pub use section_0::Geom as Geom0;
pub use section_0::Mode as Mode0;
pub use section_0::Op as Op0;
pub use section_0::SuredBOpGeomCtypeMode;
pub use section_1::Ctype as Ctype1;
pub use section_1::Geom as Geom1;
pub use section_1::Mode as Mode1;
pub use section_1::Op as Op1;
pub use section_1::SuredPOpGeomCtypeMode;