luaur_code_gen/methods/
assembly_builder_a_64_ldr.rs1use crate::enums::kind_a_64::KindA64;
2use crate::records::address_a_64::AddressA64;
3use crate::records::assembly_builder_a_64::AssemblyBuilderA64;
4use crate::records::register_a_64::RegisterA64;
5use luaur_common::macros::luau_unreachable::LUAU_UNREACHABLE;
6
7impl AssemblyBuilderA64 {
8 pub fn ldr(&mut self, dst: RegisterA64, src: AddressA64) {
9 match dst.kind() {
10 KindA64::w => self.place_a(
11 b"ldr\0".as_ptr() as *const core::ffi::c_char,
12 dst,
13 src,
14 0b10_1110_0001,
15 2,
16 ),
17 KindA64::x => self.place_a(
18 b"ldr\0".as_ptr() as *const core::ffi::c_char,
19 dst,
20 src,
21 0b11_1110_0001,
22 3,
23 ),
24 KindA64::s => self.place_a(
25 b"ldr\0".as_ptr() as *const core::ffi::c_char,
26 dst,
27 src,
28 0b10_1111_0001,
29 2,
30 ),
31 KindA64::d => self.place_a(
32 b"ldr\0".as_ptr() as *const core::ffi::c_char,
33 dst,
34 src,
35 0b11_1111_0001,
36 3,
37 ),
38 KindA64::q => self.place_a(
39 b"ldr\0".as_ptr() as *const core::ffi::c_char,
40 dst,
41 src,
42 0b00_1111_0011,
43 4,
44 ),
45 KindA64::none => {
46 debug_assert!(false, "Unexpected register kind");
47 LUAU_UNREACHABLE!();
48 }
49 }
50 }
51}