Skip to main content

luaur_code_gen/methods/
assembly_builder_a_64_fcmpz.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 fcmpz(&mut self, src: RegisterA64) {
8        CODEGEN_ASSERT!(src.kind() == KindA64::d || src.kind() == KindA64::s);
9
10        let zero_reg = RegisterA64 {
11            bits: src.kind() as u8,
12        };
13
14        if src.kind() == KindA64::d {
15            self.assembly_builder_a_64_place_fcmp(
16                c"fcmp".as_ptr(),
17                src,
18                zero_reg,
19                0b11110_01_1,
20                0b01,
21            );
22        } else {
23            self.assembly_builder_a_64_place_fcmp(
24                c"fcmp".as_ptr(),
25                src,
26                zero_reg,
27                0b11110_00_1,
28                0b01,
29            );
30        }
31    }
32}