blob: 4de3a7d34a91e2f361bad89e6618972b3706f142 [file]
// Code generated from _gen/386splitload.rules using 'go generate'; DO NOT EDIT.
package rewrite386splitload
import "cmd/compile/internal/ssa/ssaop"
import "cmd/compile/internal/ssa"
func RewriteValue(v *ssa.Value) bool {
switch v.Op {
case ssaop.Op386CMPBconstload:
return rewriteValue_Op386CMPBconstload(v)
case ssaop.Op386CMPBload:
return rewriteValue_Op386CMPBload(v)
case ssaop.Op386CMPLconstload:
return rewriteValue_Op386CMPLconstload(v)
case ssaop.Op386CMPLload:
return rewriteValue_Op386CMPLload(v)
case ssaop.Op386CMPWconstload:
return rewriteValue_Op386CMPWconstload(v)
case ssaop.Op386CMPWload:
return rewriteValue_Op386CMPWload(v)
}
return false
}
func rewriteValue_Op386CMPBconstload(v *ssa.Value) bool {
v_1 := v.Args[1]
v_0 := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
// match: (CMPBconstload {sym} [vo] ptr mem)
// result: (CMPBconst (MOVBload {sym} [vo.Off()] ptr mem) [vo.Val8()])
for {
vo := ssa.AuxIntToValAndOff(v.AuxInt)
sym := ssa.AuxToSym(v.Aux)
ptr := v_0
mem := v_1
v.Reset(ssaop.Op386CMPBconst)
v.AuxInt = ssa.Int8ToAuxInt(vo.Val8())
v0 := b.NewValue0(v.Pos, ssaop.Op386MOVBload, typ.UInt8)
v0.AuxInt = ssa.Int32ToAuxInt(vo.Off())
v0.Aux = ssa.SymToAux(sym)
v0.AddArg2(ptr, mem)
v.AddArg(v0)
return true
}
}
func rewriteValue_Op386CMPBload(v *ssa.Value) bool {
v_2 := v.Args[2]
v_1 := v.Args[1]
v_0 := v.Args[0]
b := v.Block
// match: (CMPBload {sym} [off] ptr x mem)
// result: (CMPB (MOVBload <x.Type> {sym} [off] ptr mem) x)
for {
off := ssa.AuxIntToInt32(v.AuxInt)
sym := ssa.AuxToSym(v.Aux)
ptr := v_0
x := v_1
mem := v_2
v.Reset(ssaop.Op386CMPB)
v0 := b.NewValue0(v.Pos, ssaop.Op386MOVBload, x.Type)
v0.AuxInt = ssa.Int32ToAuxInt(off)
v0.Aux = ssa.SymToAux(sym)
v0.AddArg2(ptr, mem)
v.AddArg2(v0, x)
return true
}
}
func rewriteValue_Op386CMPLconstload(v *ssa.Value) bool {
v_1 := v.Args[1]
v_0 := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
// match: (CMPLconstload {sym} [vo] ptr mem)
// result: (CMPLconst (MOVLload {sym} [vo.Off()] ptr mem) [vo.Val()])
for {
vo := ssa.AuxIntToValAndOff(v.AuxInt)
sym := ssa.AuxToSym(v.Aux)
ptr := v_0
mem := v_1
v.Reset(ssaop.Op386CMPLconst)
v.AuxInt = ssa.Int32ToAuxInt(vo.Val())
v0 := b.NewValue0(v.Pos, ssaop.Op386MOVLload, typ.UInt32)
v0.AuxInt = ssa.Int32ToAuxInt(vo.Off())
v0.Aux = ssa.SymToAux(sym)
v0.AddArg2(ptr, mem)
v.AddArg(v0)
return true
}
}
func rewriteValue_Op386CMPLload(v *ssa.Value) bool {
v_2 := v.Args[2]
v_1 := v.Args[1]
v_0 := v.Args[0]
b := v.Block
// match: (CMPLload {sym} [off] ptr x mem)
// result: (CMPL (MOVLload <x.Type> {sym} [off] ptr mem) x)
for {
off := ssa.AuxIntToInt32(v.AuxInt)
sym := ssa.AuxToSym(v.Aux)
ptr := v_0
x := v_1
mem := v_2
v.Reset(ssaop.Op386CMPL)
v0 := b.NewValue0(v.Pos, ssaop.Op386MOVLload, x.Type)
v0.AuxInt = ssa.Int32ToAuxInt(off)
v0.Aux = ssa.SymToAux(sym)
v0.AddArg2(ptr, mem)
v.AddArg2(v0, x)
return true
}
}
func rewriteValue_Op386CMPWconstload(v *ssa.Value) bool {
v_1 := v.Args[1]
v_0 := v.Args[0]
b := v.Block
typ := &b.Func.Config.Types
// match: (CMPWconstload {sym} [vo] ptr mem)
// result: (CMPWconst (MOVWload {sym} [vo.Off()] ptr mem) [vo.Val16()])
for {
vo := ssa.AuxIntToValAndOff(v.AuxInt)
sym := ssa.AuxToSym(v.Aux)
ptr := v_0
mem := v_1
v.Reset(ssaop.Op386CMPWconst)
v.AuxInt = ssa.Int16ToAuxInt(vo.Val16())
v0 := b.NewValue0(v.Pos, ssaop.Op386MOVWload, typ.UInt16)
v0.AuxInt = ssa.Int32ToAuxInt(vo.Off())
v0.Aux = ssa.SymToAux(sym)
v0.AddArg2(ptr, mem)
v.AddArg(v0)
return true
}
}
func rewriteValue_Op386CMPWload(v *ssa.Value) bool {
v_2 := v.Args[2]
v_1 := v.Args[1]
v_0 := v.Args[0]
b := v.Block
// match: (CMPWload {sym} [off] ptr x mem)
// result: (CMPW (MOVWload <x.Type> {sym} [off] ptr mem) x)
for {
off := ssa.AuxIntToInt32(v.AuxInt)
sym := ssa.AuxToSym(v.Aux)
ptr := v_0
x := v_1
mem := v_2
v.Reset(ssaop.Op386CMPW)
v0 := b.NewValue0(v.Pos, ssaop.Op386MOVWload, x.Type)
v0.AuxInt = ssa.Int32ToAuxInt(off)
v0.Aux = ssa.SymToAux(sym)
v0.AddArg2(ptr, mem)
v.AddArg2(v0, x)
return true
}
}
func RewriteBlock(b *ssa.Block) bool {
return false
}