reg: support for register casting
Adds methods for referencing sub- or super-registers. For example, for general purpose registers you can now reference As8(), As16(), ... and for vector AsX(), AsY(), AsZ(). Closes #1
This commit is contained in:
@@ -16,18 +16,20 @@ func (c *Collection) VirtualRegister(k Kind, s Size) Virtual {
|
||||
return NewVirtual(vid, k, s)
|
||||
}
|
||||
|
||||
func (c *Collection) GP8v() Virtual { return c.GPv(B8) }
|
||||
func (c *Collection) GP8v() GPVirtual { return c.GPv(B8) }
|
||||
|
||||
func (c *Collection) GP16v() Virtual { return c.GPv(B16) }
|
||||
func (c *Collection) GP16v() GPVirtual { return c.GPv(B16) }
|
||||
|
||||
func (c *Collection) GP32v() Virtual { return c.GPv(B32) }
|
||||
func (c *Collection) GP32v() GPVirtual { return c.GPv(B32) }
|
||||
|
||||
func (c *Collection) GP64v() Virtual { return c.GPv(B64) }
|
||||
func (c *Collection) GP64v() GPVirtual { return c.GPv(B64) }
|
||||
|
||||
func (c *Collection) GPv(s Size) Virtual { return c.VirtualRegister(GP, s) }
|
||||
func (c *Collection) GPv(s Size) GPVirtual { return newgpv(c.VirtualRegister(KindGP, s)) }
|
||||
|
||||
func (c *Collection) Xv() Virtual { return c.VirtualRegister(SSEAVX, B128) }
|
||||
func (c *Collection) Xv() VecVirtual { return c.Vecv(B128) }
|
||||
|
||||
func (c *Collection) Yv() Virtual { return c.VirtualRegister(SSEAVX, B256) }
|
||||
func (c *Collection) Yv() VecVirtual { return c.Vecv(B256) }
|
||||
|
||||
func (c *Collection) Zv() Virtual { return c.VirtualRegister(SSEAVX, B512) }
|
||||
func (c *Collection) Zv() VecVirtual { return c.Vecv(B512) }
|
||||
|
||||
func (c *Collection) Vecv(s Size) VecVirtual { return newvecv(c.VirtualRegister(KindVector, s)) }
|
||||
|
||||
Reference in New Issue
Block a user