fn internal_binop_def_r_mem(&mut self, inst: &str, dest: &P<Value>, src: &P<Value>) {
        let len = check_op_len(dest);

        let inst = inst.to_string() + &op_postfix(len);
        trace!("emit: {} {}, {} -> {}", inst, src, dest, dest);

        let (mem, mut uses) = self.prepare_mem(src, inst.len() + 1);
        let (reg, id1, loc1) = self.prepare_reg(dest, inst.len() + 1 + mem.len() + 1);

        if uses.contains_key(&id1) {
            let locs = uses.get_mut(&id1).unwrap();
            vec_utils::add_unique(locs, loc1.clone());
        } else {
            uses.insert(id1, vec![loc1.clone()]);
        }

        let asm = format!("{} {},{}", inst, mem, reg);

        self.add_asm_inst(
            asm,
            linked_hashmap!{
                id1 => vec![loc1]
            },
            uses,
            true
        )
    }
/// emits an instruction (use 1 reg 1 mem, define the reg)
emits an instruction (use 1 reg 1 mem, define the reg)
emits an instruction ( use 1 reg 1 mem define the reg )
fn internal_binop_def_r_mem(&mut self, inst: &str, dest: &P<Value>, src: &P<Value>) {
        let len = check_op_len(dest);
        let inst = inst.to_string() + &op_postfix(len);
        trace!("emit: {} {}, {} -> {}", inst, src, dest, dest);
        let (mem, mut uses) = self.prepare_mem(src, inst.len() + 1);
        let (reg, id1, loc1) = self.prepare_reg(dest, inst.len() + 1 + mem.len() + 1);
        if uses.contains_key(&id1) {
            let locs = uses.get_mut(&id1).unwrap();
            vec_utils::add_unique(locs, loc1.clone());
        } else {
            uses.insert(id1, vec![loc1.clone()]);
        }
        let asm = format!("{} {},{}", inst, mem, reg);
        self.add_asm_inst(
            asm,
            linked_hashmap!{
                id1 => vec![loc1]
            },
            uses,
            true
        )
    }
fn internal_binop_def_r_mem ( & mut self , inst : & str , dest : & P < Value > , src : & P < Value > ) { let len = check_op_len ( dest ) ; let inst = inst . to_string ( ) + & op_postfix ( len ) ; trace ! ( " " inst src dest dest ) ; let ( mem , mut uses ) = self . prepare_mem ( src , inst . len ( ) + 1 ) ; let ( reg , id1 , loc1 ) = self . prepare_reg ( dest , inst . len ( ) + 1 + mem . len ( ) + 1 ) ; if uses . contains_key ( & id1 ) { let locs = uses . get_mut ( & id1 ) . unwrap ( ) ; vec_utils :: add_unique ( locs , loc1 . clone ( ) ) ; } else { uses . insert ( id1 , vec ! [ loc1 clone ( ) ] ) ; } let asm = format ! ( " " inst mem reg ) ; self . add_asm_inst ( asm , linked_hashmap ! { id1 vec [ loc1 ] } , uses , true ) }
emits an instruction (use 1 reg 1 mem, define the reg)
emits an instruction ( use 1 reg 1 mem define the reg )
&mut self
inst
&str
dest
&P<Value>
src
&P<Value>
&mut self
inst
&str
dest
&P<Value>
src
&P<Value>