fn emit_shift_mask<'b>(
    backend: &mut CodeGenerator,
    dest: &'b P<Value>,
    src: &'b P<Value>
) -> &'b P<Value> {
    let ndest = dest.ty.get_int_length().unwrap() as u64;

    if ndest != 32 && ndest != 64 {
        // Not a native integer size, need to mask
        backend.emit_and_imm(&dest, &src, ndest.next_power_of_two() - 1);
        &dest
    } else {
        &src
    }
}
// Masks 'src' so that it can be used to shift 'dest'
// Returns a register that should be used for the shift operand (may be dest or src)
Masks 'src' so that it can be used to shift 'dest'
Returns a register that should be used for the shift operand (may be dest or src)
Masks ' src ' so that it can be used to shift ' dest ' Returns a register that should be used for the shift operand ( may be dest or src )
fn emit_shift_mask<'b>(
    backend: &mut CodeGenerator,
    dest: &'b P<Value>,
    src: &'b P<Value>
) -> &'b P<Value> {
    let ndest = dest.ty.get_int_length().unwrap() as u64;
    if ndest != 32 && ndest != 64 {
        // Not a native integer size, need to mask
        backend.emit_and_imm(&dest, &src, ndest.next_power_of_two() - 1);
        &dest
    } else {
        &src
    }
}
fn emit_shift_mask < ' b > ( backend : & mut CodeGenerator , dest : & ' b P < Value > , src : & ' b P < Value > ) -> & ' b P < Value > { let ndest = dest . ty . get_int_length ( ) . unwrap ( ) as u64 ; if ndest != 32 && ndest != 64 { // Not a native integer size, need to mask backend . emit_and_imm ( & dest , & src , ndest . next_power_of_two ( ) - 1 ) ; & dest } else { & src } }
Masks 'src' so that it can be used to shift 'dest'
Returns a register that should be used for the shift operand (may be dest or src)
Masks ' src ' so that it can be used to shift ' dest ' Returns a register that should be used for the shift operand ( may be dest or src )
backend
&mut CodeGenerator
dest
&'b P<Value>
src
&'b P<Value>
backend
&mut CodeGenerator
dest
&'b P<Value>
src
&'b P<Value>