|  | // Code generated from gen/AMD64splitload.rules; DO NOT EDIT. | 
|  | // generated with: cd gen; go run *.go | 
|  |  | 
|  | package ssa | 
|  |  | 
|  | import "fmt" | 
|  | import "math" | 
|  | import "cmd/internal/obj" | 
|  | import "cmd/internal/objabi" | 
|  | import "cmd/compile/internal/types" | 
|  |  | 
|  | var _ = fmt.Println   // in case not otherwise used | 
|  | var _ = math.MinInt8  // in case not otherwise used | 
|  | var _ = obj.ANOP      // in case not otherwise used | 
|  | var _ = objabi.GOROOT // in case not otherwise used | 
|  | var _ = types.TypeMem // in case not otherwise used | 
|  |  | 
|  | func rewriteValueAMD64splitload(v *Value) bool { | 
|  | switch v.Op { | 
|  | case OpAMD64CMPBconstload: | 
|  | return rewriteValueAMD64splitload_OpAMD64CMPBconstload_0(v) | 
|  | case OpAMD64CMPBload: | 
|  | return rewriteValueAMD64splitload_OpAMD64CMPBload_0(v) | 
|  | case OpAMD64CMPLconstload: | 
|  | return rewriteValueAMD64splitload_OpAMD64CMPLconstload_0(v) | 
|  | case OpAMD64CMPLload: | 
|  | return rewriteValueAMD64splitload_OpAMD64CMPLload_0(v) | 
|  | case OpAMD64CMPQconstload: | 
|  | return rewriteValueAMD64splitload_OpAMD64CMPQconstload_0(v) | 
|  | case OpAMD64CMPQload: | 
|  | return rewriteValueAMD64splitload_OpAMD64CMPQload_0(v) | 
|  | case OpAMD64CMPWconstload: | 
|  | return rewriteValueAMD64splitload_OpAMD64CMPWconstload_0(v) | 
|  | case OpAMD64CMPWload: | 
|  | return rewriteValueAMD64splitload_OpAMD64CMPWload_0(v) | 
|  | } | 
|  | return false | 
|  | } | 
|  | func rewriteValueAMD64splitload_OpAMD64CMPBconstload_0(v *Value) bool { | 
|  | b := v.Block | 
|  | typ := &b.Func.Config.Types | 
|  | // match: (CMPBconstload {sym} [vo] ptr mem) | 
|  | // cond: | 
|  | // result: (CMPBconst (MOVBload {sym} [offOnly(vo)] ptr mem) [valOnly(vo)]) | 
|  | for { | 
|  | vo := v.AuxInt | 
|  | sym := v.Aux | 
|  | mem := v.Args[1] | 
|  | ptr := v.Args[0] | 
|  | v.reset(OpAMD64CMPBconst) | 
|  | v.AuxInt = valOnly(vo) | 
|  | v0 := b.NewValue0(v.Pos, OpAMD64MOVBload, typ.UInt8) | 
|  | v0.AuxInt = offOnly(vo) | 
|  | v0.Aux = sym | 
|  | v0.AddArg(ptr) | 
|  | v0.AddArg(mem) | 
|  | v.AddArg(v0) | 
|  | return true | 
|  | } | 
|  | } | 
|  | func rewriteValueAMD64splitload_OpAMD64CMPBload_0(v *Value) bool { | 
|  | b := v.Block | 
|  | typ := &b.Func.Config.Types | 
|  | // match: (CMPBload {sym} [off] ptr x mem) | 
|  | // cond: | 
|  | // result: (CMPB (MOVBload {sym} [off] ptr mem) x) | 
|  | for { | 
|  | off := v.AuxInt | 
|  | sym := v.Aux | 
|  | mem := v.Args[2] | 
|  | ptr := v.Args[0] | 
|  | x := v.Args[1] | 
|  | v.reset(OpAMD64CMPB) | 
|  | v0 := b.NewValue0(v.Pos, OpAMD64MOVBload, typ.UInt8) | 
|  | v0.AuxInt = off | 
|  | v0.Aux = sym | 
|  | v0.AddArg(ptr) | 
|  | v0.AddArg(mem) | 
|  | v.AddArg(v0) | 
|  | v.AddArg(x) | 
|  | return true | 
|  | } | 
|  | } | 
|  | func rewriteValueAMD64splitload_OpAMD64CMPLconstload_0(v *Value) bool { | 
|  | b := v.Block | 
|  | typ := &b.Func.Config.Types | 
|  | // match: (CMPLconstload {sym} [vo] ptr mem) | 
|  | // cond: | 
|  | // result: (CMPLconst (MOVLload {sym} [offOnly(vo)] ptr mem) [valOnly(vo)]) | 
|  | for { | 
|  | vo := v.AuxInt | 
|  | sym := v.Aux | 
|  | mem := v.Args[1] | 
|  | ptr := v.Args[0] | 
|  | v.reset(OpAMD64CMPLconst) | 
|  | v.AuxInt = valOnly(vo) | 
|  | v0 := b.NewValue0(v.Pos, OpAMD64MOVLload, typ.UInt32) | 
|  | v0.AuxInt = offOnly(vo) | 
|  | v0.Aux = sym | 
|  | v0.AddArg(ptr) | 
|  | v0.AddArg(mem) | 
|  | v.AddArg(v0) | 
|  | return true | 
|  | } | 
|  | } | 
|  | func rewriteValueAMD64splitload_OpAMD64CMPLload_0(v *Value) bool { | 
|  | b := v.Block | 
|  | typ := &b.Func.Config.Types | 
|  | // match: (CMPLload {sym} [off] ptr x mem) | 
|  | // cond: | 
|  | // result: (CMPL (MOVLload {sym} [off] ptr mem) x) | 
|  | for { | 
|  | off := v.AuxInt | 
|  | sym := v.Aux | 
|  | mem := v.Args[2] | 
|  | ptr := v.Args[0] | 
|  | x := v.Args[1] | 
|  | v.reset(OpAMD64CMPL) | 
|  | v0 := b.NewValue0(v.Pos, OpAMD64MOVLload, typ.UInt32) | 
|  | v0.AuxInt = off | 
|  | v0.Aux = sym | 
|  | v0.AddArg(ptr) | 
|  | v0.AddArg(mem) | 
|  | v.AddArg(v0) | 
|  | v.AddArg(x) | 
|  | return true | 
|  | } | 
|  | } | 
|  | func rewriteValueAMD64splitload_OpAMD64CMPQconstload_0(v *Value) bool { | 
|  | b := v.Block | 
|  | typ := &b.Func.Config.Types | 
|  | // match: (CMPQconstload {sym} [vo] ptr mem) | 
|  | // cond: | 
|  | // result: (CMPQconst (MOVQload {sym} [offOnly(vo)] ptr mem) [valOnly(vo)]) | 
|  | for { | 
|  | vo := v.AuxInt | 
|  | sym := v.Aux | 
|  | mem := v.Args[1] | 
|  | ptr := v.Args[0] | 
|  | v.reset(OpAMD64CMPQconst) | 
|  | v.AuxInt = valOnly(vo) | 
|  | v0 := b.NewValue0(v.Pos, OpAMD64MOVQload, typ.UInt64) | 
|  | v0.AuxInt = offOnly(vo) | 
|  | v0.Aux = sym | 
|  | v0.AddArg(ptr) | 
|  | v0.AddArg(mem) | 
|  | v.AddArg(v0) | 
|  | return true | 
|  | } | 
|  | } | 
|  | func rewriteValueAMD64splitload_OpAMD64CMPQload_0(v *Value) bool { | 
|  | b := v.Block | 
|  | typ := &b.Func.Config.Types | 
|  | // match: (CMPQload {sym} [off] ptr x mem) | 
|  | // cond: | 
|  | // result: (CMPQ (MOVQload {sym} [off] ptr mem) x) | 
|  | for { | 
|  | off := v.AuxInt | 
|  | sym := v.Aux | 
|  | mem := v.Args[2] | 
|  | ptr := v.Args[0] | 
|  | x := v.Args[1] | 
|  | v.reset(OpAMD64CMPQ) | 
|  | v0 := b.NewValue0(v.Pos, OpAMD64MOVQload, typ.UInt64) | 
|  | v0.AuxInt = off | 
|  | v0.Aux = sym | 
|  | v0.AddArg(ptr) | 
|  | v0.AddArg(mem) | 
|  | v.AddArg(v0) | 
|  | v.AddArg(x) | 
|  | return true | 
|  | } | 
|  | } | 
|  | func rewriteValueAMD64splitload_OpAMD64CMPWconstload_0(v *Value) bool { | 
|  | b := v.Block | 
|  | typ := &b.Func.Config.Types | 
|  | // match: (CMPWconstload {sym} [vo] ptr mem) | 
|  | // cond: | 
|  | // result: (CMPWconst (MOVWload {sym} [offOnly(vo)] ptr mem) [valOnly(vo)]) | 
|  | for { | 
|  | vo := v.AuxInt | 
|  | sym := v.Aux | 
|  | mem := v.Args[1] | 
|  | ptr := v.Args[0] | 
|  | v.reset(OpAMD64CMPWconst) | 
|  | v.AuxInt = valOnly(vo) | 
|  | v0 := b.NewValue0(v.Pos, OpAMD64MOVWload, typ.UInt16) | 
|  | v0.AuxInt = offOnly(vo) | 
|  | v0.Aux = sym | 
|  | v0.AddArg(ptr) | 
|  | v0.AddArg(mem) | 
|  | v.AddArg(v0) | 
|  | return true | 
|  | } | 
|  | } | 
|  | func rewriteValueAMD64splitload_OpAMD64CMPWload_0(v *Value) bool { | 
|  | b := v.Block | 
|  | typ := &b.Func.Config.Types | 
|  | // match: (CMPWload {sym} [off] ptr x mem) | 
|  | // cond: | 
|  | // result: (CMPW (MOVWload {sym} [off] ptr mem) x) | 
|  | for { | 
|  | off := v.AuxInt | 
|  | sym := v.Aux | 
|  | mem := v.Args[2] | 
|  | ptr := v.Args[0] | 
|  | x := v.Args[1] | 
|  | v.reset(OpAMD64CMPW) | 
|  | v0 := b.NewValue0(v.Pos, OpAMD64MOVWload, typ.UInt16) | 
|  | v0.AuxInt = off | 
|  | v0.Aux = sym | 
|  | v0.AddArg(ptr) | 
|  | v0.AddArg(mem) | 
|  | v.AddArg(v0) | 
|  | v.AddArg(x) | 
|  | return true | 
|  | } | 
|  | } | 
|  | func rewriteBlockAMD64splitload(b *Block) bool { | 
|  | config := b.Func.Config | 
|  | typ := &config.Types | 
|  | _ = typ | 
|  | v := b.Control | 
|  | _ = v | 
|  | switch b.Kind { | 
|  | } | 
|  | return false | 
|  | } |