Skip to main content

luaur_code_gen/methods/
assembly_builder_x_64_vmovq.rs

1use crate::enums::category_x_64::CategoryX64;
2use crate::enums::size_x_64::SizeX64;
3use crate::macros::codegen_assert::CODEGEN_ASSERT;
4use crate::records::assembly_builder_x_64::AssemblyBuilderX64;
5use crate::records::operand_x_64::OperandX64;
6
7impl AssemblyBuilderX64 {
8    pub fn vmovq(&mut self, dst: OperandX64, src: OperandX64) {
9        if dst.base.size() == SizeX64::xmmword {
10            if !(dst.cat == CategoryX64::reg) {
11                luaur_common::LUAU_DEBUGBREAK!();
12            }
13            if !(src.base.size() == SizeX64::qword) {
14                luaur_common::LUAU_DEBUGBREAK!();
15            }
16            self.place_avx_c_char_operand_x_64_operand_x_64_u8_bool_u8_u8(
17                c"vmovq".as_ptr(),
18                dst,
19                src,
20                0x6e,
21                true,
22                0b0001,
23                0b01,
24            );
25        } else if dst.base.size() == SizeX64::qword {
26            if !(src.cat == CategoryX64::reg) {
27                luaur_common::LUAU_DEBUGBREAK!();
28            }
29            if !(src.base.size() == SizeX64::xmmword) {
30                luaur_common::LUAU_DEBUGBREAK!();
31            }
32            self.place_avx_c_char_operand_x_64_operand_x_64_u8_bool_u8_u8(
33                c"vmovq".as_ptr(),
34                src,
35                dst,
36                0x7e,
37                true,
38                0b0001,
39                0b01,
40            );
41        } else {
42            luaur_common::LUAU_DEBUGBREAK!();
43        }
44    }
45}