diff options
| author | iximeow <me@iximeow.net> | 2026-05-11 02:00:25 +0000 |
|---|---|---|
| committer | iximeow <me@iximeow.net> | 2026-05-11 02:00:46 +0000 |
| commit | 5d9f17ddd807bc9917adbb498d734d5f95554909 (patch) | |
| tree | 0bfd28a5cf5ee0652429398d1874802febd33e55 /src/long_mode/mod.rs | |
| parent | 6f10e4663a04fcb86ac9d5b09dbc47ffb9b22151 (diff) | |
even more EVEX encoding precision, regspec constructors are const
Diffstat (limited to 'src/long_mode/mod.rs')
| -rw-r--r-- | src/long_mode/mod.rs | 54 |
1 files changed, 17 insertions, 37 deletions
diff --git a/src/long_mode/mod.rs b/src/long_mode/mod.rs index 4165885..1b5caf1 100644 --- a/src/long_mode/mod.rs +++ b/src/long_mode/mod.rs @@ -135,10 +135,8 @@ impl RegSpec { /// construct a `RegSpec` for x87 register `st(num)` #[inline] - pub fn st(num: u8) -> RegSpec { - if num >= 8 { - panic!("invalid x87 reg st({})", num); - } + pub const fn st(num: u8) -> RegSpec { + assert!(num < 8, "invalid x87 reg"); RegSpec { num, @@ -148,10 +146,8 @@ impl RegSpec { /// construct a `RegSpec` for xmm reg `num` #[inline] - pub fn xmm(num: u8) -> RegSpec { - if num >= 32 { - panic!("invalid x86 xmm reg {}", num); - } + pub const fn xmm(num: u8) -> RegSpec { + assert!(num < 32, "invalid x86 xmm reg"); RegSpec { num, @@ -161,10 +157,8 @@ impl RegSpec { /// construct a `RegSpec` for ymm reg `num` #[inline] - pub fn ymm(num: u8) -> RegSpec { - if num >= 32 { - panic!("invalid x86 ymm reg {}", num); - } + pub const fn ymm(num: u8) -> RegSpec { + assert!(num < 32, "invalid x86 ymm reg"); RegSpec { num, @@ -174,10 +168,8 @@ impl RegSpec { /// construct a `RegSpec` for zmm reg `num` #[inline] - pub fn zmm(num: u8) -> RegSpec { - if num >= 32 { - panic!("invalid x86 zmm reg {}", num); - } + pub const fn zmm(num: u8) -> RegSpec { + assert!(num < 32, "invalid x86 zmm reg"); RegSpec { num, @@ -187,10 +179,8 @@ impl RegSpec { /// construct a `RegSpec` for qword reg `num` #[inline] - pub fn q(num: u8) -> RegSpec { - if num >= 16 { - panic!("invalid x86 qword reg {}", num); - } + pub const fn q(num: u8) -> RegSpec { + assert!(num < 16, "invalid x86 qword reg"); RegSpec { num, @@ -200,10 +190,8 @@ impl RegSpec { /// construct a `RegSpec` for mask reg `num` #[inline] - pub fn mask(num: u8) -> RegSpec { - if num >= 8 { - panic!("invalid x86 mask reg {}", num); - } + pub const fn mask(num: u8) -> RegSpec { + assert!(num < 8, "invalid x86 mask reg"); RegSpec { num, @@ -213,10 +201,8 @@ impl RegSpec { /// construct a `RegSpec` for dword reg `num` #[inline] - pub fn d(num: u8) -> RegSpec { - if num >= 16 { - panic!("invalid x86 dword reg {}", num); - } + pub const fn d(num: u8) -> RegSpec { + assert!(num < 16, "invalid x86 dword reg"); RegSpec { num, @@ -227,9 +213,7 @@ impl RegSpec { /// construct a `RegSpec` for word reg `num` #[inline] pub fn w(num: u8) -> RegSpec { - if num >= 16 { - panic!("invalid x86 word reg {}", num); - } + assert!(num < 16, "invalid x86 word reg"); RegSpec { num, @@ -240,9 +224,7 @@ impl RegSpec { /// construct a `RegSpec` for non-rex byte reg `num` #[inline] pub fn rb(num: u8) -> RegSpec { - if num >= 16 { - panic!("invalid x86 rex-byte reg {}", num); - } + assert!(num < 16, "invalid x86 rex-byte reg"); let bank = if num < 4 { RegisterBank::B @@ -259,9 +241,7 @@ impl RegSpec { /// construct a `RegSpec` for non-rex byte reg `num` #[inline] pub fn b(num: u8) -> RegSpec { - if num >= 8 { - panic!("invalid x86 non-rex byte reg {}", num); - } + assert!(num < 8, "invalid x86 non-rex-byte reg"); RegSpec { num, |
