luaur_code_gen/methods/
assembly_builder_a_64_sbfx.rs1use crate::enums::kind_a_64::KindA64;
2use crate::macros::codegen_assert::CODEGEN_ASSERT;
3use crate::records::assembly_builder_a_64::AssemblyBuilderA64;
4use crate::records::register_a_64::RegisterA64;
5
6impl AssemblyBuilderA64 {
7 pub fn sbfx_register_a_64_register_a_64_u8_u8(
8 &mut self,
9 dst: RegisterA64,
10 src: RegisterA64,
11 f: u8,
12 w: u8,
13 ) {
14 let size = if dst.kind() == KindA64::x { 64 } else { 32 };
15
16 CODEGEN_ASSERT!(w > 0 && (f as u32) + (w as u32) <= size);
17
18 self.place_bfm(
20 b"sbfx".as_ptr() as *const core::ffi::c_char,
21 dst,
22 src,
23 (f as i32) * 100 + w as i32,
24 0b00_100110,
25 f as i32,
26 f as i32 + w as i32 - 1,
27 );
28 }
29}