fn emit_haddpd_f64_f64(&mut self, op1: Reg, op2: Reg) {
        trace!("emit: haddpd {} {} -> {}", op2, op1, op1);

        let (reg1, id1, loc1) = self.prepare_fpreg(op1, 6 + 1);
        let (reg2, id2, loc2) = self.prepare_fpreg(op2, 6 + 1 + reg1.len() + 1);

        let asm = format!("haddpd {},{}", reg1, reg2);

        self.add_asm_inst(
            asm,
            linked_hashmap!{
                id2 => vec![loc2.clone()]
            },
            {
                if id1 == id2 {
                    linked_hashmap!{id1 => vec![loc1, loc2]}
                } else {
                    linked_hashmap!{
                        id1 => vec![loc1],
                        id2 => vec![loc2]
                    }
                }
            },
            false
        )
    }
// packed double-fp horizontal add
packed double-fp horizontal add
packed double - fp horizontal add
fn emit_haddpd_f64_f64(&mut self, op1: Reg, op2: Reg) {
        trace!("emit: haddpd {} {} -> {}", op2, op1, op1);
        let (reg1, id1, loc1) = self.prepare_fpreg(op1, 6 + 1);
        let (reg2, id2, loc2) = self.prepare_fpreg(op2, 6 + 1 + reg1.len() + 1);
        let asm = format!("haddpd {},{}", reg1, reg2);
        self.add_asm_inst(
            asm,
            linked_hashmap!{
                id2 => vec![loc2.clone()]
            },
            {
                if id1 == id2 {
                    linked_hashmap!{id1 => vec![loc1, loc2]}
                } else {
                    linked_hashmap!{
                        id1 => vec![loc1],
                        id2 => vec![loc2]
                    }
                }
            },
            false
        )
    }
fn emit_haddpd_f64_f64 ( & mut self , op1 : Reg , op2 : Reg ) { trace ! ( " " op2 op1 op1 ) ; let ( reg1 , id1 , loc1 ) = self . prepare_fpreg ( op1 , 6 + 1 ) ; let ( reg2 , id2 , loc2 ) = self . prepare_fpreg ( op2 , 6 + 1 + reg1 . len ( ) + 1 ) ; let asm = format ! ( " " reg1 reg2 ) ; self . add_asm_inst ( asm , linked_hashmap ! { id2 vec [ loc2 clone ( ) ] } , { if id1 == id2 { linked_hashmap ! { id1 vec [ loc1 loc2 ] } } else { linked_hashmap ! { id1 vec [ loc1 ] id2 vec [ loc2 ] } } } , false ) }
packed double-fp horizontal add
packed double - fp horizontal add
&mut self
op1
Reg
op2
Reg
&mut self
op1
Reg
op2
Reg