luaur_code_gen/methods/
assembly_builder_a_64_fsub.rs1use crate::enums::kind_a_64::KindA64;
2use crate::records::assembly_builder_a_64::AssemblyBuilderA64;
3use crate::records::register_a_64::RegisterA64;
4
5impl AssemblyBuilderA64 {
6 pub fn fsub(&mut self, dst: RegisterA64, src1: RegisterA64, src2: RegisterA64) {
7 if dst.kind() == KindA64::d {
8 debug_assert!(src1.kind() == KindA64::d && src2.kind() == KindA64::d);
9
10 self.place_r_3(c"fsub".as_ptr(), dst, src1, src2, 0b11110_01_1, 0b0011_10);
11 } else if dst.kind() == KindA64::s {
12 debug_assert!(src1.kind() == KindA64::s && src2.kind() == KindA64::s);
13
14 self.place_r_3(c"fsub".as_ptr(), dst, src1, src2, 0b11110_00_1, 0b0011_10);
15 } else {
16 debug_assert!(
17 dst.kind() == KindA64::q && src1.kind() == KindA64::q && src2.kind() == KindA64::q
18 );
19
20 self.place_vr(c"fsub".as_ptr(), dst, src1, src2, 0b0_01110_10_1, 0b11010_1);
21 }
22 }
23}