Skip to main content

luaur_code_gen/methods/
assembly_builder_a_64_bif.rs

1use crate::records::assembly_builder_a_64::AssemblyBuilderA64;
2use crate::records::register_a_64::RegisterA64;
3
4impl AssemblyBuilderA64 {
5    pub fn bif(&mut self, dst: RegisterA64, src: RegisterA64, mask: RegisterA64) {
6        if self.log_text {
7            self.log_append(format_args!(
8                " {:<12}v{}.16b,v{}.16b,v{}.16b\n",
9                "bif",
10                dst.index(),
11                src.index(),
12                mask.index()
13            ));
14        }
15
16        let op: u32 = 0b0_1_1_01110111_00000_000111_00000_00000;
17
18        self.place(
19            (dst.index() as u32) | ((src.index() as u32) << 5) | ((mask.index() as u32) << 16) | op,
20        );
21
22        self.commit();
23    }
24}