Skip to main content

luaur_code_gen/methods/
assembly_builder_a_64_rev.rs

1use 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 rev(&mut self, dst: RegisterA64, src: RegisterA64) {
8        CODEGEN_ASSERT!(dst.kind() == KindA64::w || dst.kind() == KindA64::x);
9        CODEGEN_ASSERT!(dst.kind() == src.kind());
10
11        self.place_r_1(
12            b"rev\0".as_ptr() as *const core::ffi::c_char,
13            dst,
14            src,
15            0b10_11010110_00000_0000_10 | (dst.kind() == KindA64::x) as u32,
16        );
17    }
18}