furiosa_visa_std/vector_engine/op/
has_alu.rs1use super::{
4 ClipBinaryOpF32, ClipBinaryOpI32, ClipOpF, ClipOpI, FpBinaryOp, FpDivBinaryOp, FpDivOp, FpTernaryOp, FpUnaryOp,
5 FxpBinaryOp, FxpOp, LogicBinaryOpF32, LogicBinaryOpI32, LogicOpF, LogicOpI,
6};
7use crate::vector_engine::alu::RngdAlu;
8
9pub trait HasAlu {
11 fn alu(&self) -> RngdAlu;
13}
14
15impl HasAlu for LogicBinaryOpI32 {
20 fn alu(&self) -> RngdAlu {
21 LogicBinaryOpI32::alu(self)
22 }
23}
24
25impl HasAlu for LogicBinaryOpF32 {
26 fn alu(&self) -> RngdAlu {
27 LogicBinaryOpF32::alu(self)
28 }
29}
30
31impl HasAlu for FxpBinaryOp {
32 fn alu(&self) -> RngdAlu {
33 FxpBinaryOp::alu(self)
34 }
35}
36
37impl HasAlu for FpUnaryOp {
38 fn alu(&self) -> RngdAlu {
39 FpUnaryOp::alu(self)
40 }
41}
42
43impl HasAlu for FpBinaryOp {
44 fn alu(&self) -> RngdAlu {
45 FpBinaryOp::alu(self)
46 }
47}
48
49impl HasAlu for FpTernaryOp {
50 fn alu(&self) -> RngdAlu {
51 FpTernaryOp::alu(self)
52 }
53}
54
55impl HasAlu for FpDivBinaryOp {
56 fn alu(&self) -> RngdAlu {
57 FpDivBinaryOp::alu(self)
58 }
59}
60
61impl HasAlu for FpDivOp {
62 fn alu(&self) -> RngdAlu {
63 self.op.alu()
64 }
65}
66
67impl HasAlu for ClipBinaryOpI32 {
68 fn alu(&self) -> RngdAlu {
69 ClipBinaryOpI32::alu(self)
70 }
71}
72
73impl HasAlu for ClipBinaryOpF32 {
74 fn alu(&self) -> RngdAlu {
75 ClipBinaryOpF32::alu(self)
76 }
77}
78
79impl HasAlu for FxpOp {
81 fn alu(&self) -> RngdAlu {
82 self.op.alu()
83 }
84}
85
86impl HasAlu for LogicOpI {
87 fn alu(&self) -> RngdAlu {
88 self.op.alu()
89 }
90}
91
92impl HasAlu for LogicOpF {
93 fn alu(&self) -> RngdAlu {
94 self.op.alu()
95 }
96}
97
98impl HasAlu for ClipOpI {
99 fn alu(&self) -> RngdAlu {
100 self.op.alu()
101 }
102}
103
104impl HasAlu for ClipOpF {
105 fn alu(&self) -> RngdAlu {
106 self.op.alu()
107 }
108}