Skip to content

Commit a8547f3

Browse files
committed
feat(operation) Added LUT entries.
1 parent 0fcfcb1 commit a8547f3

File tree

1 file changed

+53
-8
lines changed

1 file changed

+53
-8
lines changed

src/instruction/operation.rs

+53-8
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,21 @@
1-
//! Enums of all operations for specific operand formats.
2-
3-
#[derive(Debug, Clone, Copy, PartialEq)]
4-
pub enum DualSource {
5-
Compare
6-
}
7-
81
#[derive(Debug, Clone, Copy, PartialEq)]
92
pub enum Destination {
103
Unstack
114
}
125

6+
impl Destination {
7+
pub const MAPPINGS: [Destination; 1] = [Self::Unstack];
8+
}
9+
1310
#[derive(Debug, Clone, Copy, PartialEq)]
1411
pub enum DestinationSource {
1512
CopyRegisterToRegister
1613
}
1714

15+
impl DestinationSource {
16+
pub const MAPPINGS: [DestinationSource; 1] = [Self::CopyRegisterToRegister];
17+
}
18+
1819
#[derive(Debug, Clone, Copy, PartialEq)]
1920
pub enum DestinationDualSource {
2021
Add,
@@ -38,12 +39,27 @@ pub enum DestinationDualSource {
3839
DivideFloatVector,
3940
}
4041

42+
impl DestinationDualSource {
43+
pub const MAPPINGS: [DestinationDualSource; 16] = [
44+
Self::Add, Self::Subtract, Self::Multiply, Self::Divide,
45+
Self::AddFloat, Self::SubtractFloat, Self::MultiplyFloat, Self::DivideFloat,
46+
Self::AddVector, Self::SubtractVector, Self::MultiplyVector, Self::DivideVector,
47+
Self::AddFloatVector, Self::SubtractFloatVector, Self::MultiplyFloatVector, Self::DivideFloatVector,
48+
];
49+
}
50+
4151
#[derive(Debug, Clone, Copy, PartialEq)]
4252
pub enum DestinationTripleSource {
4353
MultiplyAndAdd,
4454
AddAndMultiply
4555
}
4656

57+
impl DestinationTripleSource {
58+
pub const MAPPINGS: [DestinationTripleSource; 2] = [
59+
Self::MultiplyAndAdd, Self::AddAndMultiply,
60+
];
61+
}
62+
4763
#[derive(Debug, Clone, Copy, PartialEq)]
4864
pub enum DualDestinationDualSource {
4965
DivideWithRemainder,
@@ -52,13 +68,26 @@ pub enum DualDestinationDualSource {
5268
DivideFloatVectorWithRemainder
5369
}
5470

71+
impl DualDestinationDualSource {
72+
pub const MAPPINGS: [DualDestinationDualSource; 4] = [
73+
Self::DivideWithRemainder, Self::DivideFloatingWithRemainder,
74+
Self::DivideVectorWithRemainder, Self::DivideFloatVectorWithRemainder,
75+
];
76+
}
77+
5578
#[derive(Debug, Clone, Copy, PartialEq)]
5679
pub enum Memory {
5780
Call,
5881
ReleaseMemory,
5982
Branch
6083
}
6184

85+
impl Memory {
86+
pub const MAPPINGS: [Memory; 3] = [
87+
Self::Call, Self::ReleaseMemory, Self::Branch,
88+
];
89+
}
90+
6291
#[derive(Debug, Clone, Copy, PartialEq)]
6392
pub enum SourceMemory {
6493
CopyMemoryByteToRegister,
@@ -72,10 +101,26 @@ pub enum SourceMemory {
72101
AcquireMemoryQword
73102
}
74103

104+
impl SourceMemory {
105+
pub const MAPPINGS: [SourceMemory; 8] = [
106+
Self::CopyMemoryByteToRegister, Self::CopyMemoryWordToRegister,
107+
Self::CopyMemoryDwordToRegister, Self::CopyMemoryQwordToRegister,
108+
Self::AcquireMemoryByte, Self::AcquireMemoryWord,
109+
Self::AcquireMemoryDword, Self::AcquireMemoryQword,
110+
];
111+
}
112+
75113
#[derive(Debug, Clone, Copy, PartialEq)]
76114
pub enum DestinationMemory {
77115
CopyRegisterByteToMemory,
78116
CopyRegisterWordToMemory,
79117
CopyRegisterDwordToMemory,
80118
CopyRegisterQwordToMemory
81-
}
119+
}
120+
121+
impl DestinationMemory {
122+
pub const MAPPINGS: [DestinationMemory; 4] = [
123+
Self::CopyRegisterByteToMemory, Self::CopyRegisterWordToMemory,
124+
Self::CopyRegisterDwordToMemory, Self::CopyRegisterQwordToMemory,
125+
];
126+
}

0 commit comments

Comments
 (0)