func (i movImmInsn) op(code gen.OpCoder, t types.T, reg regs.R, value int64) { switch { case value >= -0x80000000 && value < 0x80000000: i.imm32.opImm(code, t, reg, int32(value)) case t.Size() == types.Size64 && value >= 0 && value < 0x100000000: i.imm.op(code, types.I32, reg, imm{uint32(value)}) default: i.imm.op(code, t, reg, imm{value}) } }
func (p *floatSizePrefix) writeTo(code gen.OpCoder, t types.T, ro, index, rmOrBase byte) { switch t.Size() { case types.Size32: code.Write(p.size32) case types.Size64: code.Write(p.size64) default: panic(t) } writeRexTo(code, 0, ro, index, rmOrBase) }
func writeRexSizeTo(code gen.OpCoder, t types.T, ro, index, rmOrBase byte) { var rex byte switch t.Size() { case types.Size32: case types.Size64: rex |= rexW default: panic(t) } writeRexTo(code, rex, ro, index, rmOrBase) }