pass: test for liveness

This commit is contained in:
Michael McLoughlin
2018-12-03 20:40:43 -08:00
parent b52c67f3fb
commit faafa00e40
4 changed files with 136 additions and 6 deletions

33
reg/collection.go Normal file
View File

@@ -0,0 +1,33 @@
package reg
type Collection struct {
vid map[Kind]VID
}
func NewCollection() *Collection {
return &Collection{
vid: map[Kind]VID{},
}
}
func (c *Collection) VirtualRegister(k Kind, s Size) Virtual {
vid := c.vid[k]
c.vid[k]++
return NewVirtual(vid, k, s)
}
func (c *Collection) GP8v() Virtual { return c.GPv(B8) }
func (c *Collection) GP16v() Virtual { return c.GPv(B16) }
func (c *Collection) GP32v() Virtual { return c.GPv(B32) }
func (c *Collection) GP64v() Virtual { return c.GPv(B64) }
func (c *Collection) GPv(s Size) Virtual { return c.VirtualRegister(GP, s) }
func (c *Collection) Xv() Virtual { return c.VirtualRegister(SSEAVX, B128) }
func (c *Collection) Yv() Virtual { return c.VirtualRegister(SSEAVX, B256) }
func (c *Collection) Zv() Virtual { return c.VirtualRegister(SSEAVX, B512) }

View File

@@ -38,11 +38,7 @@ func (f *Family) define(s Spec, id PID, name string) Physical {
}
func (f *Family) Virtual(id VID, s Size) Virtual {
return virtual{
id: id,
kind: f.Kind,
Size: s,
}
return NewVirtual(id, f.Kind, s)
}
type private interface {
@@ -74,6 +70,14 @@ type virtual struct {
Size
}
func NewVirtual(id VID, k Kind, s Size) Virtual {
return virtual{
id: id,
kind: k,
Size: s,
}
}
func (v virtual) VirtualID() VID { return v.id }
func (v virtual) Kind() Kind { return v.kind }