mirror of
https://github.com/golang/go
synced 2024-10-14 20:05:36 +00:00
cmd/compile: when merging instructions, prefer line number of faulting insn
Normally this happens when combining a sign extension and a load. We want the resulting combo-instruction to get the line number of the load, not the line number of the sign extension. For each rule, compute where we should get its line number by finding a value on the match side that can fault. Use that line number for all the new values created on the right-hand side. Fixes #27201 Change-Id: I19b3c6f468fff1a3c0bfbce2d6581828557064a3 Reviewed-on: https://go-review.googlesource.com/c/156937 Reviewed-by: David Chase <drchase@google.com>
This commit is contained in:
parent
70931c087b
commit
7502ed3b90
|
@ -209,7 +209,11 @@ func genRules(arch arch) {
|
|||
|
||||
canFail = false
|
||||
fmt.Fprintf(buf, "for {\n")
|
||||
if genMatch(buf, arch, match, rule.loc) {
|
||||
pos, matchCanFail := genMatch(buf, arch, match, rule.loc)
|
||||
if pos == "" {
|
||||
pos = "v.Pos"
|
||||
}
|
||||
if matchCanFail {
|
||||
canFail = true
|
||||
}
|
||||
|
||||
|
@ -221,7 +225,7 @@ func genRules(arch arch) {
|
|||
log.Fatalf("unconditional rule %s is followed by other rules", match)
|
||||
}
|
||||
|
||||
genResult(buf, arch, result, rule.loc)
|
||||
genResult(buf, arch, result, rule.loc, pos)
|
||||
if *genLog {
|
||||
fmt.Fprintf(buf, "logRule(\"%s\")\n", rule.loc)
|
||||
}
|
||||
|
@ -291,10 +295,11 @@ func genRules(arch arch) {
|
|||
_, _, _, aux, s := extract(match) // remove parens, then split
|
||||
|
||||
// check match of control value
|
||||
pos := ""
|
||||
if s[0] != "nil" {
|
||||
fmt.Fprintf(w, "v := b.Control\n")
|
||||
if strings.Contains(s[0], "(") {
|
||||
genMatch0(w, arch, s[0], "v", map[string]struct{}{}, false, rule.loc)
|
||||
pos, _ = genMatch0(w, arch, s[0], "v", map[string]struct{}{}, false, rule.loc)
|
||||
} else {
|
||||
fmt.Fprintf(w, "_ = v\n") // in case we don't use v
|
||||
fmt.Fprintf(w, "%s := b.Control\n", s[0])
|
||||
|
@ -335,7 +340,10 @@ func genRules(arch arch) {
|
|||
if t[0] == "nil" {
|
||||
fmt.Fprintf(w, "b.SetControl(nil)\n")
|
||||
} else {
|
||||
fmt.Fprintf(w, "b.SetControl(%s)\n", genResult0(w, arch, t[0], new(int), false, false, rule.loc))
|
||||
if pos == "" {
|
||||
pos = "v.Pos"
|
||||
}
|
||||
fmt.Fprintf(w, "b.SetControl(%s)\n", genResult0(w, arch, t[0], new(int), false, false, rule.loc, pos))
|
||||
}
|
||||
if aux != "" {
|
||||
fmt.Fprintf(w, "b.Aux = %s\n", aux)
|
||||
|
@ -386,15 +394,17 @@ func genRules(arch arch) {
|
|||
}
|
||||
}
|
||||
|
||||
// genMatch reports whether the match can fail.
|
||||
func genMatch(w io.Writer, arch arch, match string, loc string) bool {
|
||||
// genMatch returns the variable whose source position should be used for the
|
||||
// result (or "" if no opinion), and a boolean that reports whether the match can fail.
|
||||
func genMatch(w io.Writer, arch arch, match string, loc string) (string, bool) {
|
||||
return genMatch0(w, arch, match, "v", map[string]struct{}{}, true, loc)
|
||||
}
|
||||
|
||||
func genMatch0(w io.Writer, arch arch, match, v string, m map[string]struct{}, top bool, loc string) bool {
|
||||
func genMatch0(w io.Writer, arch arch, match, v string, m map[string]struct{}, top bool, loc string) (string, bool) {
|
||||
if match[0] != '(' || match[len(match)-1] != ')' {
|
||||
panic("non-compound expr in genMatch0: " + match)
|
||||
}
|
||||
pos := ""
|
||||
canFail := false
|
||||
|
||||
op, oparch, typ, auxint, aux, args := parseValue(match, arch, loc)
|
||||
|
@ -404,6 +414,10 @@ func genMatch0(w io.Writer, arch arch, match, v string, m map[string]struct{}, t
|
|||
fmt.Fprintf(w, "if %s.Op != Op%s%s {\nbreak\n}\n", v, oparch, op.name)
|
||||
canFail = true
|
||||
}
|
||||
if op.faultOnNilArg0 || op.faultOnNilArg1 {
|
||||
// Prefer the position of an instruction which could fault.
|
||||
pos = v + ".Pos"
|
||||
}
|
||||
|
||||
if typ != "" {
|
||||
if !isVariable(typ) {
|
||||
|
@ -494,7 +508,16 @@ func genMatch0(w io.Writer, arch arch, match, v string, m map[string]struct{}, t
|
|||
argname = fmt.Sprintf("%s_%d", v, i)
|
||||
}
|
||||
fmt.Fprintf(w, "%s := %s.Args[%d]\n", argname, v, i)
|
||||
if genMatch0(w, arch, arg, argname, m, false, loc) {
|
||||
argPos, argCanFail := genMatch0(w, arch, arg, argname, m, false, loc)
|
||||
if argPos != "" {
|
||||
// Keep the argument in preference to the parent, as the
|
||||
// argument is normally earlier in program flow.
|
||||
// Keep the argument in preference to an earlier argument,
|
||||
// as that prefers the memory argument which is also earlier
|
||||
// in the program flow.
|
||||
pos = argPos
|
||||
}
|
||||
if argCanFail {
|
||||
canFail = true
|
||||
}
|
||||
}
|
||||
|
@ -503,10 +526,10 @@ func genMatch0(w io.Writer, arch arch, match, v string, m map[string]struct{}, t
|
|||
fmt.Fprintf(w, "if len(%s.Args) != %d {\nbreak\n}\n", v, len(args))
|
||||
canFail = true
|
||||
}
|
||||
return canFail
|
||||
return pos, canFail
|
||||
}
|
||||
|
||||
func genResult(w io.Writer, arch arch, result string, loc string) {
|
||||
func genResult(w io.Writer, arch arch, result string, loc string, pos string) {
|
||||
move := false
|
||||
if result[0] == '@' {
|
||||
// parse @block directive
|
||||
|
@ -515,9 +538,9 @@ func genResult(w io.Writer, arch arch, result string, loc string) {
|
|||
result = s[1]
|
||||
move = true
|
||||
}
|
||||
genResult0(w, arch, result, new(int), true, move, loc)
|
||||
genResult0(w, arch, result, new(int), true, move, loc, pos)
|
||||
}
|
||||
func genResult0(w io.Writer, arch arch, result string, alloc *int, top, move bool, loc string) string {
|
||||
func genResult0(w io.Writer, arch arch, result string, alloc *int, top, move bool, loc string, pos string) string {
|
||||
// TODO: when generating a constant result, use f.constVal to avoid
|
||||
// introducing copies just to clean them up again.
|
||||
if result[0] != '(' {
|
||||
|
@ -554,7 +577,7 @@ func genResult0(w io.Writer, arch arch, result string, alloc *int, top, move boo
|
|||
}
|
||||
v = fmt.Sprintf("v%d", *alloc)
|
||||
*alloc++
|
||||
fmt.Fprintf(w, "%s := b.NewValue0(v.Pos, Op%s%s, %s)\n", v, oparch, op.name, typ)
|
||||
fmt.Fprintf(w, "%s := b.NewValue0(%s, Op%s%s, %s)\n", v, pos, oparch, op.name, typ)
|
||||
if move && top {
|
||||
// Rewrite original into a copy
|
||||
fmt.Fprintf(w, "v.reset(OpCopy)\n")
|
||||
|
@ -569,7 +592,7 @@ func genResult0(w io.Writer, arch arch, result string, alloc *int, top, move boo
|
|||
fmt.Fprintf(w, "%s.Aux = %s\n", v, aux)
|
||||
}
|
||||
for _, arg := range args {
|
||||
x := genResult0(w, arch, arg, alloc, false, move, loc)
|
||||
x := genResult0(w, arch, arg, alloc, false, move, loc, pos)
|
||||
fmt.Fprintf(w, "%s.AddArg(%s)\n", v, x)
|
||||
}
|
||||
|
||||
|
|
|
@ -3197,7 +3197,7 @@ func rewriteValue386_Op386CMPB_0(v *Value) bool {
|
|||
break
|
||||
}
|
||||
v.reset(Op386InvertFlags)
|
||||
v0 := b.NewValue0(v.Pos, Op386CMPBload, types.TypeFlags)
|
||||
v0 := b.NewValue0(l.Pos, Op386CMPBload, types.TypeFlags)
|
||||
v0.AuxInt = off
|
||||
v0.Aux = sym
|
||||
v0.AddArg(ptr)
|
||||
|
@ -3381,7 +3381,7 @@ func rewriteValue386_Op386CMPBconst_0(v *Value) bool {
|
|||
break
|
||||
}
|
||||
b = l.Block
|
||||
v0 := b.NewValue0(v.Pos, Op386CMPBconstload, types.TypeFlags)
|
||||
v0 := b.NewValue0(l.Pos, Op386CMPBconstload, types.TypeFlags)
|
||||
v.reset(OpCopy)
|
||||
v.AddArg(v0)
|
||||
v0.AuxInt = makeValAndOff(c, off)
|
||||
|
@ -3501,7 +3501,7 @@ func rewriteValue386_Op386CMPL_0(v *Value) bool {
|
|||
break
|
||||
}
|
||||
v.reset(Op386InvertFlags)
|
||||
v0 := b.NewValue0(v.Pos, Op386CMPLload, types.TypeFlags)
|
||||
v0 := b.NewValue0(l.Pos, Op386CMPLload, types.TypeFlags)
|
||||
v0.AuxInt = off
|
||||
v0.Aux = sym
|
||||
v0.AddArg(ptr)
|
||||
|
@ -3704,7 +3704,7 @@ func rewriteValue386_Op386CMPLconst_10(v *Value) bool {
|
|||
break
|
||||
}
|
||||
b = l.Block
|
||||
v0 := b.NewValue0(v.Pos, Op386CMPLconstload, types.TypeFlags)
|
||||
v0 := b.NewValue0(l.Pos, Op386CMPLconstload, types.TypeFlags)
|
||||
v.reset(OpCopy)
|
||||
v.AddArg(v0)
|
||||
v0.AuxInt = makeValAndOff(c, off)
|
||||
|
@ -3824,7 +3824,7 @@ func rewriteValue386_Op386CMPW_0(v *Value) bool {
|
|||
break
|
||||
}
|
||||
v.reset(Op386InvertFlags)
|
||||
v0 := b.NewValue0(v.Pos, Op386CMPWload, types.TypeFlags)
|
||||
v0 := b.NewValue0(l.Pos, Op386CMPWload, types.TypeFlags)
|
||||
v0.AuxInt = off
|
||||
v0.Aux = sym
|
||||
v0.AddArg(ptr)
|
||||
|
@ -4008,7 +4008,7 @@ func rewriteValue386_Op386CMPWconst_0(v *Value) bool {
|
|||
break
|
||||
}
|
||||
b = l.Block
|
||||
v0 := b.NewValue0(v.Pos, Op386CMPWconstload, types.TypeFlags)
|
||||
v0 := b.NewValue0(l.Pos, Op386CMPWconstload, types.TypeFlags)
|
||||
v.reset(OpCopy)
|
||||
v.AddArg(v0)
|
||||
v0.AuxInt = makeValAndOff(c, off)
|
||||
|
@ -4957,7 +4957,7 @@ func rewriteValue386_Op386MOVBLSX_0(v *Value) bool {
|
|||
break
|
||||
}
|
||||
b = x.Block
|
||||
v0 := b.NewValue0(v.Pos, Op386MOVBLSXload, v.Type)
|
||||
v0 := b.NewValue0(x.Pos, Op386MOVBLSXload, v.Type)
|
||||
v.reset(OpCopy)
|
||||
v.AddArg(v0)
|
||||
v0.AuxInt = off
|
||||
|
@ -5062,7 +5062,7 @@ func rewriteValue386_Op386MOVBLZX_0(v *Value) bool {
|
|||
break
|
||||
}
|
||||
b = x.Block
|
||||
v0 := b.NewValue0(v.Pos, Op386MOVBload, v.Type)
|
||||
v0 := b.NewValue0(x.Pos, Op386MOVBload, v.Type)
|
||||
v.reset(OpCopy)
|
||||
v.AddArg(v0)
|
||||
v0.AuxInt = off
|
||||
|
@ -10726,7 +10726,7 @@ func rewriteValue386_Op386MOVWLSX_0(v *Value) bool {
|
|||
break
|
||||
}
|
||||
b = x.Block
|
||||
v0 := b.NewValue0(v.Pos, Op386MOVWLSXload, v.Type)
|
||||
v0 := b.NewValue0(x.Pos, Op386MOVWLSXload, v.Type)
|
||||
v.reset(OpCopy)
|
||||
v.AddArg(v0)
|
||||
v0.AuxInt = off
|
||||
|
@ -10831,7 +10831,7 @@ func rewriteValue386_Op386MOVWLZX_0(v *Value) bool {
|
|||
break
|
||||
}
|
||||
b = x.Block
|
||||
v0 := b.NewValue0(v.Pos, Op386MOVWload, v.Type)
|
||||
v0 := b.NewValue0(x.Pos, Op386MOVWload, v.Type)
|
||||
v.reset(OpCopy)
|
||||
v.AddArg(v0)
|
||||
v0.AuxInt = off
|
||||
|
@ -14209,7 +14209,7 @@ func rewriteValue386_Op386ORL_10(v *Value) bool {
|
|||
break
|
||||
}
|
||||
b = mergePoint(b, x0, x1)
|
||||
v0 := b.NewValue0(v.Pos, Op386MOVWload, typ.UInt16)
|
||||
v0 := b.NewValue0(x1.Pos, Op386MOVWload, typ.UInt16)
|
||||
v.reset(OpCopy)
|
||||
v.AddArg(v0)
|
||||
v0.AuxInt = i0
|
||||
|
@ -14258,7 +14258,7 @@ func rewriteValue386_Op386ORL_10(v *Value) bool {
|
|||
break
|
||||
}
|
||||
b = mergePoint(b, x0, x1)
|
||||
v0 := b.NewValue0(v.Pos, Op386MOVWload, typ.UInt16)
|
||||
v0 := b.NewValue0(x0.Pos, Op386MOVWload, typ.UInt16)
|
||||
v.reset(OpCopy)
|
||||
v.AddArg(v0)
|
||||
v0.AuxInt = i0
|
||||
|
@ -14334,7 +14334,7 @@ func rewriteValue386_Op386ORL_10(v *Value) bool {
|
|||
break
|
||||
}
|
||||
b = mergePoint(b, x0, x1, x2)
|
||||
v0 := b.NewValue0(v.Pos, Op386MOVLload, typ.UInt32)
|
||||
v0 := b.NewValue0(x2.Pos, Op386MOVLload, typ.UInt32)
|
||||
v.reset(OpCopy)
|
||||
v.AddArg(v0)
|
||||
v0.AuxInt = i0
|
||||
|
@ -14410,7 +14410,7 @@ func rewriteValue386_Op386ORL_10(v *Value) bool {
|
|||
break
|
||||
}
|
||||
b = mergePoint(b, x0, x1, x2)
|
||||
v0 := b.NewValue0(v.Pos, Op386MOVLload, typ.UInt32)
|
||||
v0 := b.NewValue0(x2.Pos, Op386MOVLload, typ.UInt32)
|
||||
v.reset(OpCopy)
|
||||
v.AddArg(v0)
|
||||
v0.AuxInt = i0
|
||||
|
@ -14486,7 +14486,7 @@ func rewriteValue386_Op386ORL_10(v *Value) bool {
|
|||
break
|
||||
}
|
||||
b = mergePoint(b, x0, x1, x2)
|
||||
v0 := b.NewValue0(v.Pos, Op386MOVLload, typ.UInt32)
|
||||
v0 := b.NewValue0(x1.Pos, Op386MOVLload, typ.UInt32)
|
||||
v.reset(OpCopy)
|
||||
v.AddArg(v0)
|
||||
v0.AuxInt = i0
|
||||
|
@ -14562,7 +14562,7 @@ func rewriteValue386_Op386ORL_10(v *Value) bool {
|
|||
break
|
||||
}
|
||||
b = mergePoint(b, x0, x1, x2)
|
||||
v0 := b.NewValue0(v.Pos, Op386MOVLload, typ.UInt32)
|
||||
v0 := b.NewValue0(x0.Pos, Op386MOVLload, typ.UInt32)
|
||||
v.reset(OpCopy)
|
||||
v.AddArg(v0)
|
||||
v0.AuxInt = i0
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -10466,7 +10466,7 @@ func rewriteValueARM64_OpARM64MOVBstore_20(v *Value) bool {
|
|||
v.AuxInt = i - 7
|
||||
v.Aux = s
|
||||
v.AddArg(ptr)
|
||||
v0 := b.NewValue0(v.Pos, OpARM64REV, w.Type)
|
||||
v0 := b.NewValue0(x6.Pos, OpARM64REV, w.Type)
|
||||
v0.AddArg(w)
|
||||
v.AddArg(v0)
|
||||
v.AddArg(mem)
|
||||
|
@ -10655,7 +10655,7 @@ func rewriteValueARM64_OpARM64MOVBstore_20(v *Value) bool {
|
|||
v.reset(OpARM64MOVDstoreidx)
|
||||
v.AddArg(ptr0)
|
||||
v.AddArg(idx0)
|
||||
v0 := b.NewValue0(v.Pos, OpARM64REV, w.Type)
|
||||
v0 := b.NewValue0(x5.Pos, OpARM64REV, w.Type)
|
||||
v0.AddArg(w)
|
||||
v.AddArg(v0)
|
||||
v.AddArg(mem)
|
||||
|
@ -10750,7 +10750,7 @@ func rewriteValueARM64_OpARM64MOVBstore_20(v *Value) bool {
|
|||
v.AuxInt = i - 3
|
||||
v.Aux = s
|
||||
v.AddArg(ptr)
|
||||
v0 := b.NewValue0(v.Pos, OpARM64REVW, w.Type)
|
||||
v0 := b.NewValue0(x2.Pos, OpARM64REVW, w.Type)
|
||||
v0.AddArg(w)
|
||||
v.AddArg(v0)
|
||||
v.AddArg(mem)
|
||||
|
@ -10843,7 +10843,7 @@ func rewriteValueARM64_OpARM64MOVBstore_20(v *Value) bool {
|
|||
v.reset(OpARM64MOVWstoreidx)
|
||||
v.AddArg(ptr0)
|
||||
v.AddArg(idx0)
|
||||
v0 := b.NewValue0(v.Pos, OpARM64REVW, w.Type)
|
||||
v0 := b.NewValue0(x1.Pos, OpARM64REVW, w.Type)
|
||||
v0.AddArg(w)
|
||||
v.AddArg(v0)
|
||||
v.AddArg(mem)
|
||||
|
@ -10950,7 +10950,7 @@ func rewriteValueARM64_OpARM64MOVBstore_20(v *Value) bool {
|
|||
v.AuxInt = i - 3
|
||||
v.Aux = s
|
||||
v.AddArg(ptr)
|
||||
v0 := b.NewValue0(v.Pos, OpARM64REVW, w.Type)
|
||||
v0 := b.NewValue0(x2.Pos, OpARM64REVW, w.Type)
|
||||
v0.AddArg(w)
|
||||
v.AddArg(v0)
|
||||
v.AddArg(mem)
|
||||
|
@ -11055,7 +11055,7 @@ func rewriteValueARM64_OpARM64MOVBstore_20(v *Value) bool {
|
|||
v.reset(OpARM64MOVWstoreidx)
|
||||
v.AddArg(ptr0)
|
||||
v.AddArg(idx0)
|
||||
v0 := b.NewValue0(v.Pos, OpARM64REVW, w.Type)
|
||||
v0 := b.NewValue0(x1.Pos, OpARM64REVW, w.Type)
|
||||
v0.AddArg(w)
|
||||
v.AddArg(v0)
|
||||
v.AddArg(mem)
|
||||
|
@ -11155,7 +11155,7 @@ func rewriteValueARM64_OpARM64MOVBstore_30(v *Value) bool {
|
|||
v.AuxInt = i - 3
|
||||
v.Aux = s
|
||||
v.AddArg(ptr)
|
||||
v0 := b.NewValue0(v.Pos, OpARM64REVW, w.Type)
|
||||
v0 := b.NewValue0(x2.Pos, OpARM64REVW, w.Type)
|
||||
v0.AddArg(w)
|
||||
v.AddArg(v0)
|
||||
v.AddArg(mem)
|
||||
|
@ -11248,7 +11248,7 @@ func rewriteValueARM64_OpARM64MOVBstore_30(v *Value) bool {
|
|||
v.reset(OpARM64MOVWstoreidx)
|
||||
v.AddArg(ptr0)
|
||||
v.AddArg(idx0)
|
||||
v0 := b.NewValue0(v.Pos, OpARM64REVW, w.Type)
|
||||
v0 := b.NewValue0(x1.Pos, OpARM64REVW, w.Type)
|
||||
v0.AddArg(w)
|
||||
v.AddArg(v0)
|
||||
v.AddArg(mem)
|
||||
|
@ -11295,7 +11295,7 @@ func rewriteValueARM64_OpARM64MOVBstore_30(v *Value) bool {
|
|||
v.AuxInt = i - 1
|
||||
v.Aux = s
|
||||
v.AddArg(ptr)
|
||||
v0 := b.NewValue0(v.Pos, OpARM64REV16W, w.Type)
|
||||
v0 := b.NewValue0(x.Pos, OpARM64REV16W, w.Type)
|
||||
v0.AddArg(w)
|
||||
v.AddArg(v0)
|
||||
v.AddArg(mem)
|
||||
|
@ -11389,7 +11389,7 @@ func rewriteValueARM64_OpARM64MOVBstore_30(v *Value) bool {
|
|||
v.AuxInt = i - 1
|
||||
v.Aux = s
|
||||
v.AddArg(ptr)
|
||||
v0 := b.NewValue0(v.Pos, OpARM64REV16W, w.Type)
|
||||
v0 := b.NewValue0(x.Pos, OpARM64REV16W, w.Type)
|
||||
v0.AddArg(w)
|
||||
v.AddArg(v0)
|
||||
v.AddArg(mem)
|
||||
|
@ -11487,7 +11487,7 @@ func rewriteValueARM64_OpARM64MOVBstore_30(v *Value) bool {
|
|||
v.AuxInt = i - 1
|
||||
v.Aux = s
|
||||
v.AddArg(ptr)
|
||||
v0 := b.NewValue0(v.Pos, OpARM64REV16W, w.Type)
|
||||
v0 := b.NewValue0(x.Pos, OpARM64REV16W, w.Type)
|
||||
v0.AddArg(w)
|
||||
v.AddArg(v0)
|
||||
v.AddArg(mem)
|
||||
|
@ -11585,7 +11585,7 @@ func rewriteValueARM64_OpARM64MOVBstore_30(v *Value) bool {
|
|||
v.AuxInt = i - 1
|
||||
v.Aux = s
|
||||
v.AddArg(ptr)
|
||||
v0 := b.NewValue0(v.Pos, OpARM64REV16W, w.Type)
|
||||
v0 := b.NewValue0(x.Pos, OpARM64REV16W, w.Type)
|
||||
v0.AddArg(w)
|
||||
v.AddArg(v0)
|
||||
v.AddArg(mem)
|
||||
|
@ -11688,7 +11688,7 @@ func rewriteValueARM64_OpARM64MOVBstore_40(v *Value) bool {
|
|||
v.AuxInt = i - 1
|
||||
v.Aux = s
|
||||
v.AddArg(ptr)
|
||||
v0 := b.NewValue0(v.Pos, OpARM64REV16W, w.Type)
|
||||
v0 := b.NewValue0(x.Pos, OpARM64REV16W, w.Type)
|
||||
v0.AddArg(w)
|
||||
v.AddArg(v0)
|
||||
v.AddArg(mem)
|
||||
|
@ -21981,11 +21981,11 @@ func rewriteValueARM64_OpARM64OR_20(v *Value) bool {
|
|||
break
|
||||
}
|
||||
b = mergePoint(b, x0, x1, x2, x3)
|
||||
v0 := b.NewValue0(v.Pos, OpARM64MOVWUload, t)
|
||||
v0 := b.NewValue0(x3.Pos, OpARM64MOVWUload, t)
|
||||
v.reset(OpCopy)
|
||||
v.AddArg(v0)
|
||||
v0.Aux = s
|
||||
v1 := b.NewValue0(v.Pos, OpOffPtr, p.Type)
|
||||
v1 := b.NewValue0(x3.Pos, OpOffPtr, p.Type)
|
||||
v1.AuxInt = i0
|
||||
v1.AddArg(p)
|
||||
v0.AddArg(v1)
|
||||
|
@ -22095,11 +22095,11 @@ func rewriteValueARM64_OpARM64OR_20(v *Value) bool {
|
|||
break
|
||||
}
|
||||
b = mergePoint(b, x0, x1, x2, x3)
|
||||
v0 := b.NewValue0(v.Pos, OpARM64MOVWUload, t)
|
||||
v0 := b.NewValue0(x2.Pos, OpARM64MOVWUload, t)
|
||||
v.reset(OpCopy)
|
||||
v.AddArg(v0)
|
||||
v0.Aux = s
|
||||
v1 := b.NewValue0(v.Pos, OpOffPtr, p.Type)
|
||||
v1 := b.NewValue0(x2.Pos, OpOffPtr, p.Type)
|
||||
v1.AuxInt = i0
|
||||
v1.AddArg(p)
|
||||
v0.AddArg(v1)
|
||||
|
@ -22214,7 +22214,7 @@ func rewriteValueARM64_OpARM64OR_20(v *Value) bool {
|
|||
break
|
||||
}
|
||||
b = mergePoint(b, x0, x1, x2, x3)
|
||||
v0 := b.NewValue0(v.Pos, OpARM64MOVWUloadidx, t)
|
||||
v0 := b.NewValue0(x2.Pos, OpARM64MOVWUloadidx, t)
|
||||
v.reset(OpCopy)
|
||||
v.AddArg(v0)
|
||||
v0.AddArg(ptr0)
|
||||
|
@ -22330,7 +22330,7 @@ func rewriteValueARM64_OpARM64OR_20(v *Value) bool {
|
|||
break
|
||||
}
|
||||
b = mergePoint(b, x0, x1, x2, x3)
|
||||
v0 := b.NewValue0(v.Pos, OpARM64MOVWUloadidx, t)
|
||||
v0 := b.NewValue0(x2.Pos, OpARM64MOVWUloadidx, t)
|
||||
v.reset(OpCopy)
|
||||
v.AddArg(v0)
|
||||
v0.AddArg(ptr0)
|
||||
|
@ -22805,11 +22805,11 @@ func rewriteValueARM64_OpARM64OR_20(v *Value) bool {
|
|||
break
|
||||
}
|
||||
b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7)
|
||||
v0 := b.NewValue0(v.Pos, OpARM64MOVDload, t)
|
||||
v0 := b.NewValue0(x7.Pos, OpARM64MOVDload, t)
|
||||
v.reset(OpCopy)
|
||||
v.AddArg(v0)
|
||||
v0.Aux = s
|
||||
v1 := b.NewValue0(v.Pos, OpOffPtr, p.Type)
|
||||
v1 := b.NewValue0(x7.Pos, OpOffPtr, p.Type)
|
||||
v1.AuxInt = i0
|
||||
v1.AddArg(p)
|
||||
v0.AddArg(v1)
|
||||
|
@ -23032,11 +23032,11 @@ func rewriteValueARM64_OpARM64OR_30(v *Value) bool {
|
|||
break
|
||||
}
|
||||
b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7)
|
||||
v0 := b.NewValue0(v.Pos, OpARM64MOVDload, t)
|
||||
v0 := b.NewValue0(x6.Pos, OpARM64MOVDload, t)
|
||||
v.reset(OpCopy)
|
||||
v.AddArg(v0)
|
||||
v0.Aux = s
|
||||
v1 := b.NewValue0(v.Pos, OpOffPtr, p.Type)
|
||||
v1 := b.NewValue0(x6.Pos, OpOffPtr, p.Type)
|
||||
v1.AuxInt = i0
|
||||
v1.AddArg(p)
|
||||
v0.AddArg(v1)
|
||||
|
@ -23267,7 +23267,7 @@ func rewriteValueARM64_OpARM64OR_30(v *Value) bool {
|
|||
break
|
||||
}
|
||||
b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7)
|
||||
v0 := b.NewValue0(v.Pos, OpARM64MOVDloadidx, t)
|
||||
v0 := b.NewValue0(x6.Pos, OpARM64MOVDloadidx, t)
|
||||
v.reset(OpCopy)
|
||||
v.AddArg(v0)
|
||||
v0.AddArg(ptr0)
|
||||
|
@ -23499,7 +23499,7 @@ func rewriteValueARM64_OpARM64OR_30(v *Value) bool {
|
|||
break
|
||||
}
|
||||
b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7)
|
||||
v0 := b.NewValue0(v.Pos, OpARM64MOVDloadidx, t)
|
||||
v0 := b.NewValue0(x6.Pos, OpARM64MOVDloadidx, t)
|
||||
v.reset(OpCopy)
|
||||
v.AddArg(v0)
|
||||
v0.AddArg(ptr0)
|
||||
|
@ -24130,12 +24130,12 @@ func rewriteValueARM64_OpARM64OR_30(v *Value) bool {
|
|||
break
|
||||
}
|
||||
b = mergePoint(b, x0, x1, x2, x3)
|
||||
v0 := b.NewValue0(v.Pos, OpARM64REVW, t)
|
||||
v0 := b.NewValue0(x3.Pos, OpARM64REVW, t)
|
||||
v.reset(OpCopy)
|
||||
v.AddArg(v0)
|
||||
v1 := b.NewValue0(v.Pos, OpARM64MOVWUload, t)
|
||||
v1 := b.NewValue0(x3.Pos, OpARM64MOVWUload, t)
|
||||
v1.Aux = s
|
||||
v2 := b.NewValue0(v.Pos, OpOffPtr, p.Type)
|
||||
v2 := b.NewValue0(x3.Pos, OpOffPtr, p.Type)
|
||||
v2.AuxInt = i0
|
||||
v2.AddArg(p)
|
||||
v1.AddArg(v2)
|
||||
|
@ -24246,12 +24246,12 @@ func rewriteValueARM64_OpARM64OR_30(v *Value) bool {
|
|||
break
|
||||
}
|
||||
b = mergePoint(b, x0, x1, x2, x3)
|
||||
v0 := b.NewValue0(v.Pos, OpARM64REVW, t)
|
||||
v0 := b.NewValue0(x2.Pos, OpARM64REVW, t)
|
||||
v.reset(OpCopy)
|
||||
v.AddArg(v0)
|
||||
v1 := b.NewValue0(v.Pos, OpARM64MOVWUload, t)
|
||||
v1 := b.NewValue0(x2.Pos, OpARM64MOVWUload, t)
|
||||
v1.Aux = s
|
||||
v2 := b.NewValue0(v.Pos, OpOffPtr, p.Type)
|
||||
v2 := b.NewValue0(x2.Pos, OpOffPtr, p.Type)
|
||||
v2.AuxInt = i0
|
||||
v2.AddArg(p)
|
||||
v1.AddArg(v2)
|
||||
|
@ -24367,10 +24367,10 @@ func rewriteValueARM64_OpARM64OR_30(v *Value) bool {
|
|||
break
|
||||
}
|
||||
b = mergePoint(b, x0, x1, x2, x3)
|
||||
v0 := b.NewValue0(v.Pos, OpARM64REVW, t)
|
||||
v0 := b.NewValue0(x3.Pos, OpARM64REVW, t)
|
||||
v.reset(OpCopy)
|
||||
v.AddArg(v0)
|
||||
v1 := b.NewValue0(v.Pos, OpARM64MOVWUloadidx, t)
|
||||
v1 := b.NewValue0(x3.Pos, OpARM64MOVWUloadidx, t)
|
||||
v1.AddArg(ptr0)
|
||||
v1.AddArg(idx0)
|
||||
v1.AddArg(mem)
|
||||
|
@ -24485,10 +24485,10 @@ func rewriteValueARM64_OpARM64OR_30(v *Value) bool {
|
|||
break
|
||||
}
|
||||
b = mergePoint(b, x0, x1, x2, x3)
|
||||
v0 := b.NewValue0(v.Pos, OpARM64REVW, t)
|
||||
v0 := b.NewValue0(x2.Pos, OpARM64REVW, t)
|
||||
v.reset(OpCopy)
|
||||
v.AddArg(v0)
|
||||
v1 := b.NewValue0(v.Pos, OpARM64MOVWUloadidx, t)
|
||||
v1 := b.NewValue0(x2.Pos, OpARM64MOVWUloadidx, t)
|
||||
v1.AddArg(ptr0)
|
||||
v1.AddArg(idx0)
|
||||
v1.AddArg(mem)
|
||||
|
@ -24971,12 +24971,12 @@ func rewriteValueARM64_OpARM64OR_40(v *Value) bool {
|
|||
break
|
||||
}
|
||||
b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7)
|
||||
v0 := b.NewValue0(v.Pos, OpARM64REV, t)
|
||||
v0 := b.NewValue0(x7.Pos, OpARM64REV, t)
|
||||
v.reset(OpCopy)
|
||||
v.AddArg(v0)
|
||||
v1 := b.NewValue0(v.Pos, OpARM64MOVDload, t)
|
||||
v1 := b.NewValue0(x7.Pos, OpARM64MOVDload, t)
|
||||
v1.Aux = s
|
||||
v2 := b.NewValue0(v.Pos, OpOffPtr, p.Type)
|
||||
v2 := b.NewValue0(x7.Pos, OpOffPtr, p.Type)
|
||||
v2.AuxInt = i0
|
||||
v2.AddArg(p)
|
||||
v1.AddArg(v2)
|
||||
|
@ -25195,12 +25195,12 @@ func rewriteValueARM64_OpARM64OR_40(v *Value) bool {
|
|||
break
|
||||
}
|
||||
b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7)
|
||||
v0 := b.NewValue0(v.Pos, OpARM64REV, t)
|
||||
v0 := b.NewValue0(x6.Pos, OpARM64REV, t)
|
||||
v.reset(OpCopy)
|
||||
v.AddArg(v0)
|
||||
v1 := b.NewValue0(v.Pos, OpARM64MOVDload, t)
|
||||
v1 := b.NewValue0(x6.Pos, OpARM64MOVDload, t)
|
||||
v1.Aux = s
|
||||
v2 := b.NewValue0(v.Pos, OpOffPtr, p.Type)
|
||||
v2 := b.NewValue0(x6.Pos, OpOffPtr, p.Type)
|
||||
v2.AuxInt = i0
|
||||
v2.AddArg(p)
|
||||
v1.AddArg(v2)
|
||||
|
@ -25432,10 +25432,10 @@ func rewriteValueARM64_OpARM64OR_40(v *Value) bool {
|
|||
break
|
||||
}
|
||||
b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7)
|
||||
v0 := b.NewValue0(v.Pos, OpARM64REV, t)
|
||||
v0 := b.NewValue0(x7.Pos, OpARM64REV, t)
|
||||
v.reset(OpCopy)
|
||||
v.AddArg(v0)
|
||||
v1 := b.NewValue0(v.Pos, OpARM64MOVDloadidx, t)
|
||||
v1 := b.NewValue0(x7.Pos, OpARM64MOVDloadidx, t)
|
||||
v1.AddArg(ptr0)
|
||||
v1.AddArg(idx0)
|
||||
v1.AddArg(mem)
|
||||
|
@ -25666,10 +25666,10 @@ func rewriteValueARM64_OpARM64OR_40(v *Value) bool {
|
|||
break
|
||||
}
|
||||
b = mergePoint(b, x0, x1, x2, x3, x4, x5, x6, x7)
|
||||
v0 := b.NewValue0(v.Pos, OpARM64REV, t)
|
||||
v0 := b.NewValue0(x6.Pos, OpARM64REV, t)
|
||||
v.reset(OpCopy)
|
||||
v.AddArg(v0)
|
||||
v1 := b.NewValue0(v.Pos, OpARM64MOVDloadidx, t)
|
||||
v1 := b.NewValue0(x6.Pos, OpARM64MOVDloadidx, t)
|
||||
v1.AddArg(ptr0)
|
||||
v1.AddArg(idx0)
|
||||
v1.AddArg(mem)
|
||||
|
@ -26726,11 +26726,11 @@ func rewriteValueARM64_OpARM64ORshiftLL_0(v *Value) bool {
|
|||
break
|
||||
}
|
||||
b = mergePoint(b, x0, x1)
|
||||
v0 := b.NewValue0(v.Pos, OpARM64MOVHUload, t)
|
||||
v0 := b.NewValue0(x1.Pos, OpARM64MOVHUload, t)
|
||||
v.reset(OpCopy)
|
||||
v.AddArg(v0)
|
||||
v0.Aux = s
|
||||
v1 := b.NewValue0(v.Pos, OpOffPtr, p.Type)
|
||||
v1 := b.NewValue0(x1.Pos, OpOffPtr, p.Type)
|
||||
v1.AuxInt = i0
|
||||
v1.AddArg(p)
|
||||
v0.AddArg(v1)
|
||||
|
@ -26785,7 +26785,7 @@ func rewriteValueARM64_OpARM64ORshiftLL_0(v *Value) bool {
|
|||
break
|
||||
}
|
||||
b = mergePoint(b, x0, x1)
|
||||
v0 := b.NewValue0(v.Pos, OpARM64MOVHUloadidx, t)
|
||||
v0 := b.NewValue0(x1.Pos, OpARM64MOVHUloadidx, t)
|
||||
v.reset(OpCopy)
|
||||
v.AddArg(v0)
|
||||
v0.AddArg(ptr0)
|
||||
|
@ -26924,11 +26924,11 @@ func rewriteValueARM64_OpARM64ORshiftLL_10(v *Value) bool {
|
|||
break
|
||||
}
|
||||
b = mergePoint(b, x0, x1, x2)
|
||||
v0 := b.NewValue0(v.Pos, OpARM64MOVWUload, t)
|
||||
v0 := b.NewValue0(x2.Pos, OpARM64MOVWUload, t)
|
||||
v.reset(OpCopy)
|
||||
v.AddArg(v0)
|
||||
v0.Aux = s
|
||||
v1 := b.NewValue0(v.Pos, OpOffPtr, p.Type)
|
||||
v1 := b.NewValue0(x2.Pos, OpOffPtr, p.Type)
|
||||
v1.AuxInt = i0
|
||||
v1.AddArg(p)
|
||||
v0.AddArg(v1)
|
||||
|
@ -27006,7 +27006,7 @@ func rewriteValueARM64_OpARM64ORshiftLL_10(v *Value) bool {
|
|||
break
|
||||
}
|
||||
b = mergePoint(b, x0, x1, x2)
|
||||
v0 := b.NewValue0(v.Pos, OpARM64MOVWUloadidx, t)
|
||||
v0 := b.NewValue0(x2.Pos, OpARM64MOVWUloadidx, t)
|
||||
v.reset(OpCopy)
|
||||
v.AddArg(v0)
|
||||
v0.AddArg(ptr0)
|
||||
|
@ -27175,11 +27175,11 @@ func rewriteValueARM64_OpARM64ORshiftLL_10(v *Value) bool {
|
|||
break
|
||||
}
|
||||
b = mergePoint(b, x0, x1, x2)
|
||||
v0 := b.NewValue0(v.Pos, OpARM64MOVWUloadidx, t)
|
||||
v0 := b.NewValue0(x2.Pos, OpARM64MOVWUloadidx, t)
|
||||
v.reset(OpCopy)
|
||||
v.AddArg(v0)
|
||||
v0.AddArg(ptr0)
|
||||
v1 := b.NewValue0(v.Pos, OpARM64SLLconst, idx0.Type)
|
||||
v1 := b.NewValue0(x2.Pos, OpARM64SLLconst, idx0.Type)
|
||||
v1.AuxInt = 1
|
||||
v1.AddArg(idx0)
|
||||
v0.AddArg(v1)
|
||||
|
@ -27308,11 +27308,11 @@ func rewriteValueARM64_OpARM64ORshiftLL_10(v *Value) bool {
|
|||
break
|
||||
}
|
||||
b = mergePoint(b, x0, x1, x2, x3, x4)
|
||||
v0 := b.NewValue0(v.Pos, OpARM64MOVDload, t)
|
||||
v0 := b.NewValue0(x4.Pos, OpARM64MOVDload, t)
|
||||
v.reset(OpCopy)
|
||||
v.AddArg(v0)
|
||||
v0.Aux = s
|
||||
v1 := b.NewValue0(v.Pos, OpOffPtr, p.Type)
|
||||
v1 := b.NewValue0(x4.Pos, OpOffPtr, p.Type)
|
||||
v1.AuxInt = i0
|
||||
v1.AddArg(p)
|
||||
v0.AddArg(v1)
|
||||
|
@ -27448,7 +27448,7 @@ func rewriteValueARM64_OpARM64ORshiftLL_10(v *Value) bool {
|
|||
break
|
||||
}
|
||||
b = mergePoint(b, x0, x1, x2, x3, x4)
|
||||
v0 := b.NewValue0(v.Pos, OpARM64MOVDloadidx, t)
|
||||
v0 := b.NewValue0(x4.Pos, OpARM64MOVDloadidx, t)
|
||||
v.reset(OpCopy)
|
||||
v.AddArg(v0)
|
||||
v0.AddArg(ptr0)
|
||||
|
@ -27588,11 +27588,11 @@ func rewriteValueARM64_OpARM64ORshiftLL_10(v *Value) bool {
|
|||
break
|
||||
}
|
||||
b = mergePoint(b, x0, x1, x2, x3, x4)
|
||||
v0 := b.NewValue0(v.Pos, OpARM64MOVDloadidx, t)
|
||||
v0 := b.NewValue0(x4.Pos, OpARM64MOVDloadidx, t)
|
||||
v.reset(OpCopy)
|
||||
v.AddArg(v0)
|
||||
v0.AddArg(ptr0)
|
||||
v1 := b.NewValue0(v.Pos, OpARM64SLLconst, idx0.Type)
|
||||
v1 := b.NewValue0(x4.Pos, OpARM64SLLconst, idx0.Type)
|
||||
v1.AuxInt = 2
|
||||
v1.AddArg(idx0)
|
||||
v0.AddArg(v1)
|
||||
|
@ -27797,10 +27797,10 @@ func rewriteValueARM64_OpARM64ORshiftLL_10(v *Value) bool {
|
|||
break
|
||||
}
|
||||
b = mergePoint(b, x0, x1)
|
||||
v0 := b.NewValue0(v.Pos, OpARM64REV16W, t)
|
||||
v0 := b.NewValue0(x1.Pos, OpARM64REV16W, t)
|
||||
v.reset(OpCopy)
|
||||
v.AddArg(v0)
|
||||
v1 := b.NewValue0(v.Pos, OpARM64MOVHUload, t)
|
||||
v1 := b.NewValue0(x1.Pos, OpARM64MOVHUload, t)
|
||||
v1.AuxInt = i0
|
||||
v1.Aux = s
|
||||
v1.AddArg(p)
|
||||
|
@ -27861,10 +27861,10 @@ func rewriteValueARM64_OpARM64ORshiftLL_20(v *Value) bool {
|
|||
break
|
||||
}
|
||||
b = mergePoint(b, x0, x1)
|
||||
v0 := b.NewValue0(v.Pos, OpARM64REV16W, t)
|
||||
v0 := b.NewValue0(x0.Pos, OpARM64REV16W, t)
|
||||
v.reset(OpCopy)
|
||||
v.AddArg(v0)
|
||||
v1 := b.NewValue0(v.Pos, OpARM64MOVHUloadidx, t)
|
||||
v1 := b.NewValue0(x0.Pos, OpARM64MOVHUloadidx, t)
|
||||
v1.AddArg(ptr0)
|
||||
v1.AddArg(idx0)
|
||||
v1.AddArg(mem)
|
||||
|
@ -28003,12 +28003,12 @@ func rewriteValueARM64_OpARM64ORshiftLL_20(v *Value) bool {
|
|||
break
|
||||
}
|
||||
b = mergePoint(b, x0, x1, x2)
|
||||
v0 := b.NewValue0(v.Pos, OpARM64REVW, t)
|
||||
v0 := b.NewValue0(x2.Pos, OpARM64REVW, t)
|
||||
v.reset(OpCopy)
|
||||
v.AddArg(v0)
|
||||
v1 := b.NewValue0(v.Pos, OpARM64MOVWUload, t)
|
||||
v1 := b.NewValue0(x2.Pos, OpARM64MOVWUload, t)
|
||||
v1.Aux = s
|
||||
v2 := b.NewValue0(v.Pos, OpOffPtr, p.Type)
|
||||
v2 := b.NewValue0(x2.Pos, OpOffPtr, p.Type)
|
||||
v2.AuxInt = i0
|
||||
v2.AddArg(p)
|
||||
v1.AddArg(v2)
|
||||
|
@ -28091,10 +28091,10 @@ func rewriteValueARM64_OpARM64ORshiftLL_20(v *Value) bool {
|
|||
break
|
||||
}
|
||||
b = mergePoint(b, x0, x1, x2)
|
||||
v0 := b.NewValue0(v.Pos, OpARM64REVW, t)
|
||||
v0 := b.NewValue0(x1.Pos, OpARM64REVW, t)
|
||||
v.reset(OpCopy)
|
||||
v.AddArg(v0)
|
||||
v1 := b.NewValue0(v.Pos, OpARM64MOVWUloadidx, t)
|
||||
v1 := b.NewValue0(x1.Pos, OpARM64MOVWUloadidx, t)
|
||||
v1.AddArg(ptr0)
|
||||
v1.AddArg(idx0)
|
||||
v1.AddArg(mem)
|
||||
|
@ -28320,12 +28320,12 @@ func rewriteValueARM64_OpARM64ORshiftLL_20(v *Value) bool {
|
|||
break
|
||||
}
|
||||
b = mergePoint(b, x0, x1, x2, x3, x4)
|
||||
v0 := b.NewValue0(v.Pos, OpARM64REV, t)
|
||||
v0 := b.NewValue0(x4.Pos, OpARM64REV, t)
|
||||
v.reset(OpCopy)
|
||||
v.AddArg(v0)
|
||||
v1 := b.NewValue0(v.Pos, OpARM64MOVDload, t)
|
||||
v1 := b.NewValue0(x4.Pos, OpARM64MOVDload, t)
|
||||
v1.Aux = s
|
||||
v2 := b.NewValue0(v.Pos, OpOffPtr, p.Type)
|
||||
v2 := b.NewValue0(x4.Pos, OpOffPtr, p.Type)
|
||||
v2.AuxInt = i0
|
||||
v2.AddArg(p)
|
||||
v1.AddArg(v2)
|
||||
|
@ -28466,10 +28466,10 @@ func rewriteValueARM64_OpARM64ORshiftLL_20(v *Value) bool {
|
|||
break
|
||||
}
|
||||
b = mergePoint(b, x0, x1, x2, x3, x4)
|
||||
v0 := b.NewValue0(v.Pos, OpARM64REV, t)
|
||||
v0 := b.NewValue0(x3.Pos, OpARM64REV, t)
|
||||
v.reset(OpCopy)
|
||||
v.AddArg(v0)
|
||||
v1 := b.NewValue0(v.Pos, OpARM64MOVDloadidx, t)
|
||||
v1 := b.NewValue0(x3.Pos, OpARM64MOVDloadidx, t)
|
||||
v1.AddArg(ptr0)
|
||||
v1.AddArg(idx0)
|
||||
v1.AddArg(mem)
|
||||
|
|
|
@ -3502,7 +3502,7 @@ func rewriteValueMIPS_OpMIPSMOVBUreg_0(v *Value) bool {
|
|||
break
|
||||
}
|
||||
b = x.Block
|
||||
v0 := b.NewValue0(v.Pos, OpMIPSMOVBUload, t)
|
||||
v0 := b.NewValue0(x.Pos, OpMIPSMOVBUload, t)
|
||||
v.reset(OpCopy)
|
||||
v.AddArg(v0)
|
||||
v0.AuxInt = off
|
||||
|
@ -3663,7 +3663,7 @@ func rewriteValueMIPS_OpMIPSMOVBreg_0(v *Value) bool {
|
|||
break
|
||||
}
|
||||
b = x.Block
|
||||
v0 := b.NewValue0(v.Pos, OpMIPSMOVBload, t)
|
||||
v0 := b.NewValue0(x.Pos, OpMIPSMOVBload, t)
|
||||
v.reset(OpCopy)
|
||||
v.AddArg(v0)
|
||||
v0.AuxInt = off
|
||||
|
@ -4359,7 +4359,7 @@ func rewriteValueMIPS_OpMIPSMOVHUreg_0(v *Value) bool {
|
|||
break
|
||||
}
|
||||
b = x.Block
|
||||
v0 := b.NewValue0(v.Pos, OpMIPSMOVHUload, t)
|
||||
v0 := b.NewValue0(x.Pos, OpMIPSMOVHUload, t)
|
||||
v.reset(OpCopy)
|
||||
v.AddArg(v0)
|
||||
v0.AuxInt = off
|
||||
|
@ -4570,7 +4570,7 @@ func rewriteValueMIPS_OpMIPSMOVHreg_0(v *Value) bool {
|
|||
break
|
||||
}
|
||||
b = x.Block
|
||||
v0 := b.NewValue0(v.Pos, OpMIPSMOVHload, t)
|
||||
v0 := b.NewValue0(x.Pos, OpMIPSMOVHload, t)
|
||||
v.reset(OpCopy)
|
||||
v.AddArg(v0)
|
||||
v0.AuxInt = off
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -7837,7 +7837,7 @@ func rewriteValueS390X_OpS390XADDload_0(v *Value) bool {
|
|||
}
|
||||
v.reset(OpS390XADD)
|
||||
v.AddArg(x)
|
||||
v0 := b.NewValue0(v.Pos, OpS390XLGDR, t)
|
||||
v0 := b.NewValue0(v_2.Pos, OpS390XLGDR, t)
|
||||
v0.AddArg(y)
|
||||
v.AddArg(v0)
|
||||
return true
|
||||
|
@ -8756,7 +8756,7 @@ func rewriteValueS390X_OpS390XANDload_0(v *Value) bool {
|
|||
}
|
||||
v.reset(OpS390XAND)
|
||||
v.AddArg(x)
|
||||
v0 := b.NewValue0(v.Pos, OpS390XLGDR, t)
|
||||
v0 := b.NewValue0(v_2.Pos, OpS390XLGDR, t)
|
||||
v0.AddArg(y)
|
||||
v.AddArg(v0)
|
||||
return true
|
||||
|
@ -10884,11 +10884,11 @@ func rewriteValueS390X_OpS390XLDGR_0(v *Value) bool {
|
|||
break
|
||||
}
|
||||
b = x.Block
|
||||
v0 := b.NewValue0(v.Pos, OpS390XLNDFR, t)
|
||||
v0 := b.NewValue0(x.Pos, OpS390XLNDFR, t)
|
||||
v.reset(OpCopy)
|
||||
v.AddArg(v0)
|
||||
v1 := b.NewValue0(v.Pos, OpS390XLDGR, t)
|
||||
v2 := b.NewValue0(v.Pos, OpS390XMOVDload, t1)
|
||||
v1 := b.NewValue0(x.Pos, OpS390XLDGR, t)
|
||||
v2 := b.NewValue0(x.Pos, OpS390XMOVDload, t1)
|
||||
v2.AuxInt = off
|
||||
v2.Aux = sym
|
||||
v2.AddArg(ptr)
|
||||
|
@ -11539,7 +11539,7 @@ func rewriteValueS390X_OpS390XMOVBZreg_10(v *Value) bool {
|
|||
break
|
||||
}
|
||||
b = x.Block
|
||||
v0 := b.NewValue0(v.Pos, OpS390XMOVBZload, v.Type)
|
||||
v0 := b.NewValue0(x.Pos, OpS390XMOVBZload, v.Type)
|
||||
v.reset(OpCopy)
|
||||
v.AddArg(v0)
|
||||
v0.AuxInt = off
|
||||
|
@ -11565,7 +11565,7 @@ func rewriteValueS390X_OpS390XMOVBZreg_10(v *Value) bool {
|
|||
break
|
||||
}
|
||||
b = x.Block
|
||||
v0 := b.NewValue0(v.Pos, OpS390XMOVBZload, v.Type)
|
||||
v0 := b.NewValue0(x.Pos, OpS390XMOVBZload, v.Type)
|
||||
v.reset(OpCopy)
|
||||
v.AddArg(v0)
|
||||
v0.AuxInt = off
|
||||
|
@ -11979,7 +11979,7 @@ func rewriteValueS390X_OpS390XMOVBreg_0(v *Value) bool {
|
|||
break
|
||||
}
|
||||
b = x.Block
|
||||
v0 := b.NewValue0(v.Pos, OpS390XMOVBload, v.Type)
|
||||
v0 := b.NewValue0(x.Pos, OpS390XMOVBload, v.Type)
|
||||
v.reset(OpCopy)
|
||||
v.AddArg(v0)
|
||||
v0.AuxInt = off
|
||||
|
@ -12005,7 +12005,7 @@ func rewriteValueS390X_OpS390XMOVBreg_0(v *Value) bool {
|
|||
break
|
||||
}
|
||||
b = x.Block
|
||||
v0 := b.NewValue0(v.Pos, OpS390XMOVBload, v.Type)
|
||||
v0 := b.NewValue0(x.Pos, OpS390XMOVBload, v.Type)
|
||||
v.reset(OpCopy)
|
||||
v.AddArg(v0)
|
||||
v0.AuxInt = off
|
||||
|
@ -15359,7 +15359,7 @@ func rewriteValueS390X_OpS390XMOVDnop_0(v *Value) bool {
|
|||
break
|
||||
}
|
||||
b = x.Block
|
||||
v0 := b.NewValue0(v.Pos, OpS390XMOVBZload, t)
|
||||
v0 := b.NewValue0(x.Pos, OpS390XMOVBZload, t)
|
||||
v.reset(OpCopy)
|
||||
v.AddArg(v0)
|
||||
v0.AuxInt = off
|
||||
|
@ -15386,7 +15386,7 @@ func rewriteValueS390X_OpS390XMOVDnop_0(v *Value) bool {
|
|||
break
|
||||
}
|
||||
b = x.Block
|
||||
v0 := b.NewValue0(v.Pos, OpS390XMOVBload, t)
|
||||
v0 := b.NewValue0(x.Pos, OpS390XMOVBload, t)
|
||||
v.reset(OpCopy)
|
||||
v.AddArg(v0)
|
||||
v0.AuxInt = off
|
||||
|
@ -15413,7 +15413,7 @@ func rewriteValueS390X_OpS390XMOVDnop_0(v *Value) bool {
|
|||
break
|
||||
}
|
||||
b = x.Block
|
||||
v0 := b.NewValue0(v.Pos, OpS390XMOVHZload, t)
|
||||
v0 := b.NewValue0(x.Pos, OpS390XMOVHZload, t)
|
||||
v.reset(OpCopy)
|
||||
v.AddArg(v0)
|
||||
v0.AuxInt = off
|
||||
|
@ -15440,7 +15440,7 @@ func rewriteValueS390X_OpS390XMOVDnop_0(v *Value) bool {
|
|||
break
|
||||
}
|
||||
b = x.Block
|
||||
v0 := b.NewValue0(v.Pos, OpS390XMOVHload, t)
|
||||
v0 := b.NewValue0(x.Pos, OpS390XMOVHload, t)
|
||||
v.reset(OpCopy)
|
||||
v.AddArg(v0)
|
||||
v0.AuxInt = off
|
||||
|
@ -15467,7 +15467,7 @@ func rewriteValueS390X_OpS390XMOVDnop_0(v *Value) bool {
|
|||
break
|
||||
}
|
||||
b = x.Block
|
||||
v0 := b.NewValue0(v.Pos, OpS390XMOVWZload, t)
|
||||
v0 := b.NewValue0(x.Pos, OpS390XMOVWZload, t)
|
||||
v.reset(OpCopy)
|
||||
v.AddArg(v0)
|
||||
v0.AuxInt = off
|
||||
|
@ -15494,7 +15494,7 @@ func rewriteValueS390X_OpS390XMOVDnop_0(v *Value) bool {
|
|||
break
|
||||
}
|
||||
b = x.Block
|
||||
v0 := b.NewValue0(v.Pos, OpS390XMOVWload, t)
|
||||
v0 := b.NewValue0(x.Pos, OpS390XMOVWload, t)
|
||||
v.reset(OpCopy)
|
||||
v.AddArg(v0)
|
||||
v0.AuxInt = off
|
||||
|
@ -15521,7 +15521,7 @@ func rewriteValueS390X_OpS390XMOVDnop_0(v *Value) bool {
|
|||
break
|
||||
}
|
||||
b = x.Block
|
||||
v0 := b.NewValue0(v.Pos, OpS390XMOVDload, t)
|
||||
v0 := b.NewValue0(x.Pos, OpS390XMOVDload, t)
|
||||
v.reset(OpCopy)
|
||||
v.AddArg(v0)
|
||||
v0.AuxInt = off
|
||||
|
@ -15800,7 +15800,7 @@ func rewriteValueS390X_OpS390XMOVDreg_0(v *Value) bool {
|
|||
break
|
||||
}
|
||||
b = x.Block
|
||||
v0 := b.NewValue0(v.Pos, OpS390XMOVBZload, t)
|
||||
v0 := b.NewValue0(x.Pos, OpS390XMOVBZload, t)
|
||||
v.reset(OpCopy)
|
||||
v.AddArg(v0)
|
||||
v0.AuxInt = off
|
||||
|
@ -15827,7 +15827,7 @@ func rewriteValueS390X_OpS390XMOVDreg_0(v *Value) bool {
|
|||
break
|
||||
}
|
||||
b = x.Block
|
||||
v0 := b.NewValue0(v.Pos, OpS390XMOVBload, t)
|
||||
v0 := b.NewValue0(x.Pos, OpS390XMOVBload, t)
|
||||
v.reset(OpCopy)
|
||||
v.AddArg(v0)
|
||||
v0.AuxInt = off
|
||||
|
@ -15854,7 +15854,7 @@ func rewriteValueS390X_OpS390XMOVDreg_0(v *Value) bool {
|
|||
break
|
||||
}
|
||||
b = x.Block
|
||||
v0 := b.NewValue0(v.Pos, OpS390XMOVHZload, t)
|
||||
v0 := b.NewValue0(x.Pos, OpS390XMOVHZload, t)
|
||||
v.reset(OpCopy)
|
||||
v.AddArg(v0)
|
||||
v0.AuxInt = off
|
||||
|
@ -15881,7 +15881,7 @@ func rewriteValueS390X_OpS390XMOVDreg_0(v *Value) bool {
|
|||
break
|
||||
}
|
||||
b = x.Block
|
||||
v0 := b.NewValue0(v.Pos, OpS390XMOVHload, t)
|
||||
v0 := b.NewValue0(x.Pos, OpS390XMOVHload, t)
|
||||
v.reset(OpCopy)
|
||||
v.AddArg(v0)
|
||||
v0.AuxInt = off
|
||||
|
@ -15908,7 +15908,7 @@ func rewriteValueS390X_OpS390XMOVDreg_0(v *Value) bool {
|
|||
break
|
||||
}
|
||||
b = x.Block
|
||||
v0 := b.NewValue0(v.Pos, OpS390XMOVWZload, t)
|
||||
v0 := b.NewValue0(x.Pos, OpS390XMOVWZload, t)
|
||||
v.reset(OpCopy)
|
||||
v.AddArg(v0)
|
||||
v0.AuxInt = off
|
||||
|
@ -15935,7 +15935,7 @@ func rewriteValueS390X_OpS390XMOVDreg_0(v *Value) bool {
|
|||
break
|
||||
}
|
||||
b = x.Block
|
||||
v0 := b.NewValue0(v.Pos, OpS390XMOVWload, t)
|
||||
v0 := b.NewValue0(x.Pos, OpS390XMOVWload, t)
|
||||
v.reset(OpCopy)
|
||||
v.AddArg(v0)
|
||||
v0.AuxInt = off
|
||||
|
@ -15962,7 +15962,7 @@ func rewriteValueS390X_OpS390XMOVDreg_0(v *Value) bool {
|
|||
break
|
||||
}
|
||||
b = x.Block
|
||||
v0 := b.NewValue0(v.Pos, OpS390XMOVDload, t)
|
||||
v0 := b.NewValue0(x.Pos, OpS390XMOVDload, t)
|
||||
v.reset(OpCopy)
|
||||
v.AddArg(v0)
|
||||
v0.AuxInt = off
|
||||
|
@ -17997,7 +17997,7 @@ func rewriteValueS390X_OpS390XMOVHZreg_0(v *Value) bool {
|
|||
break
|
||||
}
|
||||
b = x.Block
|
||||
v0 := b.NewValue0(v.Pos, OpS390XMOVHZload, v.Type)
|
||||
v0 := b.NewValue0(x.Pos, OpS390XMOVHZload, v.Type)
|
||||
v.reset(OpCopy)
|
||||
v.AddArg(v0)
|
||||
v0.AuxInt = off
|
||||
|
@ -18023,7 +18023,7 @@ func rewriteValueS390X_OpS390XMOVHZreg_0(v *Value) bool {
|
|||
break
|
||||
}
|
||||
b = x.Block
|
||||
v0 := b.NewValue0(v.Pos, OpS390XMOVHZload, v.Type)
|
||||
v0 := b.NewValue0(x.Pos, OpS390XMOVHZload, v.Type)
|
||||
v.reset(OpCopy)
|
||||
v.AddArg(v0)
|
||||
v0.AuxInt = off
|
||||
|
@ -18493,7 +18493,7 @@ func rewriteValueS390X_OpS390XMOVHreg_0(v *Value) bool {
|
|||
break
|
||||
}
|
||||
b = x.Block
|
||||
v0 := b.NewValue0(v.Pos, OpS390XMOVHload, v.Type)
|
||||
v0 := b.NewValue0(x.Pos, OpS390XMOVHload, v.Type)
|
||||
v.reset(OpCopy)
|
||||
v.AddArg(v0)
|
||||
v0.AuxInt = off
|
||||
|
@ -18526,7 +18526,7 @@ func rewriteValueS390X_OpS390XMOVHreg_10(v *Value) bool {
|
|||
break
|
||||
}
|
||||
b = x.Block
|
||||
v0 := b.NewValue0(v.Pos, OpS390XMOVHload, v.Type)
|
||||
v0 := b.NewValue0(x.Pos, OpS390XMOVHload, v.Type)
|
||||
v.reset(OpCopy)
|
||||
v.AddArg(v0)
|
||||
v0.AuxInt = off
|
||||
|
@ -19071,7 +19071,7 @@ func rewriteValueS390X_OpS390XMOVHstoreconst_0(v *Value) bool {
|
|||
v.AuxInt = ValAndOff(a).Off()
|
||||
v.Aux = s
|
||||
v.AddArg(p)
|
||||
v0 := b.NewValue0(v.Pos, OpS390XMOVDconst, typ.UInt64)
|
||||
v0 := b.NewValue0(x.Pos, OpS390XMOVDconst, typ.UInt64)
|
||||
v0.AuxInt = int64(int32(ValAndOff(c).Val()&0xffff | ValAndOff(a).Val()<<16))
|
||||
v.AddArg(v0)
|
||||
v.AddArg(mem)
|
||||
|
@ -20937,7 +20937,7 @@ func rewriteValueS390X_OpS390XMOVWZreg_0(v *Value) bool {
|
|||
break
|
||||
}
|
||||
b = x.Block
|
||||
v0 := b.NewValue0(v.Pos, OpS390XMOVWZload, v.Type)
|
||||
v0 := b.NewValue0(x.Pos, OpS390XMOVWZload, v.Type)
|
||||
v.reset(OpCopy)
|
||||
v.AddArg(v0)
|
||||
v0.AuxInt = off
|
||||
|
@ -20968,7 +20968,7 @@ func rewriteValueS390X_OpS390XMOVWZreg_10(v *Value) bool {
|
|||
break
|
||||
}
|
||||
b = x.Block
|
||||
v0 := b.NewValue0(v.Pos, OpS390XMOVWZload, v.Type)
|
||||
v0 := b.NewValue0(x.Pos, OpS390XMOVWZload, v.Type)
|
||||
v.reset(OpCopy)
|
||||
v.AddArg(v0)
|
||||
v0.AuxInt = off
|
||||
|
@ -21467,7 +21467,7 @@ func rewriteValueS390X_OpS390XMOVWreg_10(v *Value) bool {
|
|||
break
|
||||
}
|
||||
b = x.Block
|
||||
v0 := b.NewValue0(v.Pos, OpS390XMOVWload, v.Type)
|
||||
v0 := b.NewValue0(x.Pos, OpS390XMOVWload, v.Type)
|
||||
v.reset(OpCopy)
|
||||
v.AddArg(v0)
|
||||
v0.AuxInt = off
|
||||
|
@ -21493,7 +21493,7 @@ func rewriteValueS390X_OpS390XMOVWreg_10(v *Value) bool {
|
|||
break
|
||||
}
|
||||
b = x.Block
|
||||
v0 := b.NewValue0(v.Pos, OpS390XMOVWload, v.Type)
|
||||
v0 := b.NewValue0(x.Pos, OpS390XMOVWload, v.Type)
|
||||
v.reset(OpCopy)
|
||||
v.AddArg(v0)
|
||||
v0.AuxInt = off
|
||||
|
@ -22040,7 +22040,7 @@ func rewriteValueS390X_OpS390XMOVWstoreconst_0(v *Value) bool {
|
|||
v.AuxInt = ValAndOff(a).Off()
|
||||
v.Aux = s
|
||||
v.AddArg(p)
|
||||
v0 := b.NewValue0(v.Pos, OpS390XMOVDconst, typ.UInt64)
|
||||
v0 := b.NewValue0(x.Pos, OpS390XMOVDconst, typ.UInt64)
|
||||
v0.AuxInt = ValAndOff(c).Val()&0xffffffff | ValAndOff(a).Val()<<32
|
||||
v.AddArg(v0)
|
||||
v.AddArg(mem)
|
||||
|
@ -22873,7 +22873,7 @@ func rewriteValueS390X_OpS390XMULLDload_0(v *Value) bool {
|
|||
}
|
||||
v.reset(OpS390XMULLD)
|
||||
v.AddArg(x)
|
||||
v0 := b.NewValue0(v.Pos, OpS390XLGDR, t)
|
||||
v0 := b.NewValue0(v_2.Pos, OpS390XLGDR, t)
|
||||
v0.AddArg(y)
|
||||
v.AddArg(v0)
|
||||
return true
|
||||
|
@ -23963,7 +23963,7 @@ func rewriteValueS390X_OpS390XOR_10(v *Value) bool {
|
|||
break
|
||||
}
|
||||
b = mergePoint(b, x0, x1)
|
||||
v0 := b.NewValue0(v.Pos, OpS390XMOVHZload, typ.UInt16)
|
||||
v0 := b.NewValue0(x0.Pos, OpS390XMOVHZload, typ.UInt16)
|
||||
v.reset(OpCopy)
|
||||
v.AddArg(v0)
|
||||
v0.AuxInt = i0
|
||||
|
@ -24012,7 +24012,7 @@ func rewriteValueS390X_OpS390XOR_10(v *Value) bool {
|
|||
break
|
||||
}
|
||||
b = mergePoint(b, x0, x1)
|
||||
v0 := b.NewValue0(v.Pos, OpS390XMOVHZload, typ.UInt16)
|
||||
v0 := b.NewValue0(x1.Pos, OpS390XMOVHZload, typ.UInt16)
|
||||
v.reset(OpCopy)
|
||||
v.AddArg(v0)
|
||||
v0.AuxInt = i0
|
||||
|
@ -24061,7 +24061,7 @@ func rewriteValueS390X_OpS390XOR_10(v *Value) bool {
|
|||
break
|
||||
}
|
||||
b = mergePoint(b, x0, x1)
|
||||
v0 := b.NewValue0(v.Pos, OpS390XMOVWZload, typ.UInt32)
|
||||
v0 := b.NewValue0(x0.Pos, OpS390XMOVWZload, typ.UInt32)
|
||||
v.reset(OpCopy)
|
||||
v.AddArg(v0)
|
||||
v0.AuxInt = i0
|
||||
|
@ -24117,7 +24117,7 @@ func rewriteValueS390X_OpS390XOR_20(v *Value) bool {
|
|||
break
|
||||
}
|
||||
b = mergePoint(b, x0, x1)
|
||||
v0 := b.NewValue0(v.Pos, OpS390XMOVWZload, typ.UInt32)
|
||||
v0 := b.NewValue0(x1.Pos, OpS390XMOVWZload, typ.UInt32)
|
||||
v.reset(OpCopy)
|
||||
v.AddArg(v0)
|
||||
v0.AuxInt = i0
|
||||
|
@ -24166,7 +24166,7 @@ func rewriteValueS390X_OpS390XOR_20(v *Value) bool {
|
|||
break
|
||||
}
|
||||
b = mergePoint(b, x0, x1)
|
||||
v0 := b.NewValue0(v.Pos, OpS390XMOVDload, typ.UInt64)
|
||||
v0 := b.NewValue0(x0.Pos, OpS390XMOVDload, typ.UInt64)
|
||||
v.reset(OpCopy)
|
||||
v.AddArg(v0)
|
||||
v0.AuxInt = i0
|
||||
|
@ -24215,7 +24215,7 @@ func rewriteValueS390X_OpS390XOR_20(v *Value) bool {
|
|||
break
|
||||
}
|
||||
b = mergePoint(b, x0, x1)
|
||||
v0 := b.NewValue0(v.Pos, OpS390XMOVDload, typ.UInt64)
|
||||
v0 := b.NewValue0(x1.Pos, OpS390XMOVDload, typ.UInt64)
|
||||
v.reset(OpCopy)
|
||||
v.AddArg(v0)
|
||||
v0.AuxInt = i0
|
||||
|
@ -24273,12 +24273,12 @@ func rewriteValueS390X_OpS390XOR_20(v *Value) bool {
|
|||
break
|
||||
}
|
||||
b = mergePoint(b, x0, x1)
|
||||
v0 := b.NewValue0(v.Pos, OpS390XOR, v.Type)
|
||||
v0 := b.NewValue0(x1.Pos, OpS390XOR, v.Type)
|
||||
v.reset(OpCopy)
|
||||
v.AddArg(v0)
|
||||
v1 := b.NewValue0(v.Pos, OpS390XSLDconst, v.Type)
|
||||
v1 := b.NewValue0(x1.Pos, OpS390XSLDconst, v.Type)
|
||||
v1.AuxInt = j1
|
||||
v2 := b.NewValue0(v.Pos, OpS390XMOVHZload, typ.UInt16)
|
||||
v2 := b.NewValue0(x1.Pos, OpS390XMOVHZload, typ.UInt16)
|
||||
v2.AuxInt = i0
|
||||
v2.Aux = s
|
||||
v2.AddArg(p)
|
||||
|
@ -24337,12 +24337,12 @@ func rewriteValueS390X_OpS390XOR_20(v *Value) bool {
|
|||
break
|
||||
}
|
||||
b = mergePoint(b, x0, x1)
|
||||
v0 := b.NewValue0(v.Pos, OpS390XOR, v.Type)
|
||||
v0 := b.NewValue0(x1.Pos, OpS390XOR, v.Type)
|
||||
v.reset(OpCopy)
|
||||
v.AddArg(v0)
|
||||
v1 := b.NewValue0(v.Pos, OpS390XSLDconst, v.Type)
|
||||
v1 := b.NewValue0(x1.Pos, OpS390XSLDconst, v.Type)
|
||||
v1.AuxInt = j1
|
||||
v2 := b.NewValue0(v.Pos, OpS390XMOVHZload, typ.UInt16)
|
||||
v2 := b.NewValue0(x1.Pos, OpS390XMOVHZload, typ.UInt16)
|
||||
v2.AuxInt = i0
|
||||
v2.Aux = s
|
||||
v2.AddArg(p)
|
||||
|
@ -24401,12 +24401,12 @@ func rewriteValueS390X_OpS390XOR_20(v *Value) bool {
|
|||
break
|
||||
}
|
||||
b = mergePoint(b, x0, x1)
|
||||
v0 := b.NewValue0(v.Pos, OpS390XOR, v.Type)
|
||||
v0 := b.NewValue0(x0.Pos, OpS390XOR, v.Type)
|
||||
v.reset(OpCopy)
|
||||
v.AddArg(v0)
|
||||
v1 := b.NewValue0(v.Pos, OpS390XSLDconst, v.Type)
|
||||
v1 := b.NewValue0(x0.Pos, OpS390XSLDconst, v.Type)
|
||||
v1.AuxInt = j1
|
||||
v2 := b.NewValue0(v.Pos, OpS390XMOVHZload, typ.UInt16)
|
||||
v2 := b.NewValue0(x0.Pos, OpS390XMOVHZload, typ.UInt16)
|
||||
v2.AuxInt = i0
|
||||
v2.Aux = s
|
||||
v2.AddArg(p)
|
||||
|
@ -24465,12 +24465,12 @@ func rewriteValueS390X_OpS390XOR_20(v *Value) bool {
|
|||
break
|
||||
}
|
||||
b = mergePoint(b, x0, x1)
|
||||
v0 := b.NewValue0(v.Pos, OpS390XOR, v.Type)
|
||||
v0 := b.NewValue0(x0.Pos, OpS390XOR, v.Type)
|
||||
v.reset(OpCopy)
|
||||
v.AddArg(v0)
|
||||
v1 := b.NewValue0(v.Pos, OpS390XSLDconst, v.Type)
|
||||
v1 := b.NewValue0(x0.Pos, OpS390XSLDconst, v.Type)
|
||||
v1.AuxInt = j1
|
||||
v2 := b.NewValue0(v.Pos, OpS390XMOVHZload, typ.UInt16)
|
||||
v2 := b.NewValue0(x0.Pos, OpS390XMOVHZload, typ.UInt16)
|
||||
v2.AuxInt = i0
|
||||
v2.Aux = s
|
||||
v2.AddArg(p)
|
||||
|
@ -24529,12 +24529,12 @@ func rewriteValueS390X_OpS390XOR_20(v *Value) bool {
|
|||
break
|
||||
}
|
||||
b = mergePoint(b, x0, x1)
|
||||
v0 := b.NewValue0(v.Pos, OpS390XOR, v.Type)
|
||||
v0 := b.NewValue0(x1.Pos, OpS390XOR, v.Type)
|
||||
v.reset(OpCopy)
|
||||
v.AddArg(v0)
|
||||
v1 := b.NewValue0(v.Pos, OpS390XSLDconst, v.Type)
|
||||
v1 := b.NewValue0(x1.Pos, OpS390XSLDconst, v.Type)
|
||||
v1.AuxInt = j1
|
||||
v2 := b.NewValue0(v.Pos, OpS390XMOVWZload, typ.UInt32)
|
||||
v2 := b.NewValue0(x1.Pos, OpS390XMOVWZload, typ.UInt32)
|
||||
v2.AuxInt = i0
|
||||
v2.Aux = s
|
||||
v2.AddArg(p)
|
||||
|
@ -24593,12 +24593,12 @@ func rewriteValueS390X_OpS390XOR_20(v *Value) bool {
|
|||
break
|
||||
}
|
||||
b = mergePoint(b, x0, x1)
|
||||
v0 := b.NewValue0(v.Pos, OpS390XOR, v.Type)
|
||||
v0 := b.NewValue0(x1.Pos, OpS390XOR, v.Type)
|
||||
v.reset(OpCopy)
|
||||
v.AddArg(v0)
|
||||
v1 := b.NewValue0(v.Pos, OpS390XSLDconst, v.Type)
|
||||
v1 := b.NewValue0(x1.Pos, OpS390XSLDconst, v.Type)
|
||||
v1.AuxInt = j1
|
||||
v2 := b.NewValue0(v.Pos, OpS390XMOVWZload, typ.UInt32)
|
||||
v2 := b.NewValue0(x1.Pos, OpS390XMOVWZload, typ.UInt32)
|
||||
v2.AuxInt = i0
|
||||
v2.Aux = s
|
||||
v2.AddArg(p)
|
||||
|
@ -24657,12 +24657,12 @@ func rewriteValueS390X_OpS390XOR_20(v *Value) bool {
|
|||
break
|
||||
}
|
||||
b = mergePoint(b, x0, x1)
|
||||
v0 := b.NewValue0(v.Pos, OpS390XOR, v.Type)
|
||||
v0 := b.NewValue0(x0.Pos, OpS390XOR, v.Type)
|
||||
v.reset(OpCopy)
|
||||
v.AddArg(v0)
|
||||
v1 := b.NewValue0(v.Pos, OpS390XSLDconst, v.Type)
|
||||
v1 := b.NewValue0(x0.Pos, OpS390XSLDconst, v.Type)
|
||||
v1.AuxInt = j1
|
||||
v2 := b.NewValue0(v.Pos, OpS390XMOVWZload, typ.UInt32)
|
||||
v2 := b.NewValue0(x0.Pos, OpS390XMOVWZload, typ.UInt32)
|
||||
v2.AuxInt = i0
|
||||
v2.Aux = s
|
||||
v2.AddArg(p)
|
||||
|
@ -24728,12 +24728,12 @@ func rewriteValueS390X_OpS390XOR_30(v *Value) bool {
|
|||
break
|
||||
}
|
||||
b = mergePoint(b, x0, x1)
|
||||
v0 := b.NewValue0(v.Pos, OpS390XOR, v.Type)
|
||||
v0 := b.NewValue0(x0.Pos, OpS390XOR, v.Type)
|
||||
v.reset(OpCopy)
|
||||
v.AddArg(v0)
|
||||
v1 := b.NewValue0(v.Pos, OpS390XSLDconst, v.Type)
|
||||
v1 := b.NewValue0(x0.Pos, OpS390XSLDconst, v.Type)
|
||||
v1.AuxInt = j1
|
||||
v2 := b.NewValue0(v.Pos, OpS390XMOVWZload, typ.UInt32)
|
||||
v2 := b.NewValue0(x0.Pos, OpS390XMOVWZload, typ.UInt32)
|
||||
v2.AuxInt = i0
|
||||
v2.Aux = s
|
||||
v2.AddArg(p)
|
||||
|
@ -28322,10 +28322,10 @@ func rewriteValueS390X_OpS390XOR_80(v *Value) bool {
|
|||
break
|
||||
}
|
||||
b = mergePoint(b, x0, x1)
|
||||
v0 := b.NewValue0(v.Pos, OpS390XMOVHZreg, typ.UInt64)
|
||||
v0 := b.NewValue0(x1.Pos, OpS390XMOVHZreg, typ.UInt64)
|
||||
v.reset(OpCopy)
|
||||
v.AddArg(v0)
|
||||
v1 := b.NewValue0(v.Pos, OpS390XMOVHBRload, typ.UInt16)
|
||||
v1 := b.NewValue0(x1.Pos, OpS390XMOVHBRload, typ.UInt16)
|
||||
v1.AuxInt = i0
|
||||
v1.Aux = s
|
||||
v1.AddArg(p)
|
||||
|
@ -28373,10 +28373,10 @@ func rewriteValueS390X_OpS390XOR_80(v *Value) bool {
|
|||
break
|
||||
}
|
||||
b = mergePoint(b, x0, x1)
|
||||
v0 := b.NewValue0(v.Pos, OpS390XMOVHZreg, typ.UInt64)
|
||||
v0 := b.NewValue0(x0.Pos, OpS390XMOVHZreg, typ.UInt64)
|
||||
v.reset(OpCopy)
|
||||
v.AddArg(v0)
|
||||
v1 := b.NewValue0(v.Pos, OpS390XMOVHBRload, typ.UInt16)
|
||||
v1 := b.NewValue0(x0.Pos, OpS390XMOVHBRload, typ.UInt16)
|
||||
v1.AuxInt = i0
|
||||
v1.Aux = s
|
||||
v1.AddArg(p)
|
||||
|
@ -28432,10 +28432,10 @@ func rewriteValueS390X_OpS390XOR_80(v *Value) bool {
|
|||
break
|
||||
}
|
||||
b = mergePoint(b, x0, x1)
|
||||
v0 := b.NewValue0(v.Pos, OpS390XMOVWZreg, typ.UInt64)
|
||||
v0 := b.NewValue0(x1.Pos, OpS390XMOVWZreg, typ.UInt64)
|
||||
v.reset(OpCopy)
|
||||
v.AddArg(v0)
|
||||
v1 := b.NewValue0(v.Pos, OpS390XMOVWBRload, typ.UInt32)
|
||||
v1 := b.NewValue0(x1.Pos, OpS390XMOVWBRload, typ.UInt32)
|
||||
v1.AuxInt = i0
|
||||
v1.Aux = s
|
||||
v1.AddArg(p)
|
||||
|
@ -28498,10 +28498,10 @@ func rewriteValueS390X_OpS390XOR_90(v *Value) bool {
|
|||
break
|
||||
}
|
||||
b = mergePoint(b, x0, x1)
|
||||
v0 := b.NewValue0(v.Pos, OpS390XMOVWZreg, typ.UInt64)
|
||||
v0 := b.NewValue0(x0.Pos, OpS390XMOVWZreg, typ.UInt64)
|
||||
v.reset(OpCopy)
|
||||
v.AddArg(v0)
|
||||
v1 := b.NewValue0(v.Pos, OpS390XMOVWBRload, typ.UInt32)
|
||||
v1 := b.NewValue0(x0.Pos, OpS390XMOVWBRload, typ.UInt32)
|
||||
v1.AuxInt = i0
|
||||
v1.Aux = s
|
||||
v1.AddArg(p)
|
||||
|
@ -28557,7 +28557,7 @@ func rewriteValueS390X_OpS390XOR_90(v *Value) bool {
|
|||
break
|
||||
}
|
||||
b = mergePoint(b, x0, x1)
|
||||
v0 := b.NewValue0(v.Pos, OpS390XMOVDBRload, typ.UInt64)
|
||||
v0 := b.NewValue0(x1.Pos, OpS390XMOVDBRload, typ.UInt64)
|
||||
v.reset(OpCopy)
|
||||
v.AddArg(v0)
|
||||
v0.AuxInt = i0
|
||||
|
@ -28614,7 +28614,7 @@ func rewriteValueS390X_OpS390XOR_90(v *Value) bool {
|
|||
break
|
||||
}
|
||||
b = mergePoint(b, x0, x1)
|
||||
v0 := b.NewValue0(v.Pos, OpS390XMOVDBRload, typ.UInt64)
|
||||
v0 := b.NewValue0(x0.Pos, OpS390XMOVDBRload, typ.UInt64)
|
||||
v.reset(OpCopy)
|
||||
v.AddArg(v0)
|
||||
v0.AuxInt = i0
|
||||
|
@ -28672,13 +28672,13 @@ func rewriteValueS390X_OpS390XOR_90(v *Value) bool {
|
|||
break
|
||||
}
|
||||
b = mergePoint(b, x0, x1)
|
||||
v0 := b.NewValue0(v.Pos, OpS390XOR, v.Type)
|
||||
v0 := b.NewValue0(x0.Pos, OpS390XOR, v.Type)
|
||||
v.reset(OpCopy)
|
||||
v.AddArg(v0)
|
||||
v1 := b.NewValue0(v.Pos, OpS390XSLDconst, v.Type)
|
||||
v1 := b.NewValue0(x0.Pos, OpS390XSLDconst, v.Type)
|
||||
v1.AuxInt = j0
|
||||
v2 := b.NewValue0(v.Pos, OpS390XMOVHZreg, typ.UInt64)
|
||||
v3 := b.NewValue0(v.Pos, OpS390XMOVHBRload, typ.UInt16)
|
||||
v2 := b.NewValue0(x0.Pos, OpS390XMOVHZreg, typ.UInt64)
|
||||
v3 := b.NewValue0(x0.Pos, OpS390XMOVHBRload, typ.UInt16)
|
||||
v3.AuxInt = i0
|
||||
v3.Aux = s
|
||||
v3.AddArg(p)
|
||||
|
@ -28738,13 +28738,13 @@ func rewriteValueS390X_OpS390XOR_90(v *Value) bool {
|
|||
break
|
||||
}
|
||||
b = mergePoint(b, x0, x1)
|
||||
v0 := b.NewValue0(v.Pos, OpS390XOR, v.Type)
|
||||
v0 := b.NewValue0(x0.Pos, OpS390XOR, v.Type)
|
||||
v.reset(OpCopy)
|
||||
v.AddArg(v0)
|
||||
v1 := b.NewValue0(v.Pos, OpS390XSLDconst, v.Type)
|
||||
v1 := b.NewValue0(x0.Pos, OpS390XSLDconst, v.Type)
|
||||
v1.AuxInt = j0
|
||||
v2 := b.NewValue0(v.Pos, OpS390XMOVHZreg, typ.UInt64)
|
||||
v3 := b.NewValue0(v.Pos, OpS390XMOVHBRload, typ.UInt16)
|
||||
v2 := b.NewValue0(x0.Pos, OpS390XMOVHZreg, typ.UInt64)
|
||||
v3 := b.NewValue0(x0.Pos, OpS390XMOVHBRload, typ.UInt16)
|
||||
v3.AuxInt = i0
|
||||
v3.Aux = s
|
||||
v3.AddArg(p)
|
||||
|
@ -28804,13 +28804,13 @@ func rewriteValueS390X_OpS390XOR_90(v *Value) bool {
|
|||
break
|
||||
}
|
||||
b = mergePoint(b, x0, x1)
|
||||
v0 := b.NewValue0(v.Pos, OpS390XOR, v.Type)
|
||||
v0 := b.NewValue0(x1.Pos, OpS390XOR, v.Type)
|
||||
v.reset(OpCopy)
|
||||
v.AddArg(v0)
|
||||
v1 := b.NewValue0(v.Pos, OpS390XSLDconst, v.Type)
|
||||
v1 := b.NewValue0(x1.Pos, OpS390XSLDconst, v.Type)
|
||||
v1.AuxInt = j0
|
||||
v2 := b.NewValue0(v.Pos, OpS390XMOVHZreg, typ.UInt64)
|
||||
v3 := b.NewValue0(v.Pos, OpS390XMOVHBRload, typ.UInt16)
|
||||
v2 := b.NewValue0(x1.Pos, OpS390XMOVHZreg, typ.UInt64)
|
||||
v3 := b.NewValue0(x1.Pos, OpS390XMOVHBRload, typ.UInt16)
|
||||
v3.AuxInt = i0
|
||||
v3.Aux = s
|
||||
v3.AddArg(p)
|
||||
|
@ -28870,13 +28870,13 @@ func rewriteValueS390X_OpS390XOR_90(v *Value) bool {
|
|||
break
|
||||
}
|
||||
b = mergePoint(b, x0, x1)
|
||||
v0 := b.NewValue0(v.Pos, OpS390XOR, v.Type)
|
||||
v0 := b.NewValue0(x1.Pos, OpS390XOR, v.Type)
|
||||
v.reset(OpCopy)
|
||||
v.AddArg(v0)
|
||||
v1 := b.NewValue0(v.Pos, OpS390XSLDconst, v.Type)
|
||||
v1 := b.NewValue0(x1.Pos, OpS390XSLDconst, v.Type)
|
||||
v1.AuxInt = j0
|
||||
v2 := b.NewValue0(v.Pos, OpS390XMOVHZreg, typ.UInt64)
|
||||
v3 := b.NewValue0(v.Pos, OpS390XMOVHBRload, typ.UInt16)
|
||||
v2 := b.NewValue0(x1.Pos, OpS390XMOVHZreg, typ.UInt64)
|
||||
v3 := b.NewValue0(x1.Pos, OpS390XMOVHBRload, typ.UInt16)
|
||||
v3.AuxInt = i0
|
||||
v3.Aux = s
|
||||
v3.AddArg(p)
|
||||
|
@ -28944,13 +28944,13 @@ func rewriteValueS390X_OpS390XOR_90(v *Value) bool {
|
|||
break
|
||||
}
|
||||
b = mergePoint(b, x0, x1)
|
||||
v0 := b.NewValue0(v.Pos, OpS390XOR, v.Type)
|
||||
v0 := b.NewValue0(x0.Pos, OpS390XOR, v.Type)
|
||||
v.reset(OpCopy)
|
||||
v.AddArg(v0)
|
||||
v1 := b.NewValue0(v.Pos, OpS390XSLDconst, v.Type)
|
||||
v1 := b.NewValue0(x0.Pos, OpS390XSLDconst, v.Type)
|
||||
v1.AuxInt = j0
|
||||
v2 := b.NewValue0(v.Pos, OpS390XMOVWZreg, typ.UInt64)
|
||||
v3 := b.NewValue0(v.Pos, OpS390XMOVWBRload, typ.UInt32)
|
||||
v2 := b.NewValue0(x0.Pos, OpS390XMOVWZreg, typ.UInt64)
|
||||
v3 := b.NewValue0(x0.Pos, OpS390XMOVWBRload, typ.UInt32)
|
||||
v3.AuxInt = i0
|
||||
v3.Aux = s
|
||||
v3.AddArg(p)
|
||||
|
@ -29018,13 +29018,13 @@ func rewriteValueS390X_OpS390XOR_90(v *Value) bool {
|
|||
break
|
||||
}
|
||||
b = mergePoint(b, x0, x1)
|
||||
v0 := b.NewValue0(v.Pos, OpS390XOR, v.Type)
|
||||
v0 := b.NewValue0(x0.Pos, OpS390XOR, v.Type)
|
||||
v.reset(OpCopy)
|
||||
v.AddArg(v0)
|
||||
v1 := b.NewValue0(v.Pos, OpS390XSLDconst, v.Type)
|
||||
v1 := b.NewValue0(x0.Pos, OpS390XSLDconst, v.Type)
|
||||
v1.AuxInt = j0
|
||||
v2 := b.NewValue0(v.Pos, OpS390XMOVWZreg, typ.UInt64)
|
||||
v3 := b.NewValue0(v.Pos, OpS390XMOVWBRload, typ.UInt32)
|
||||
v2 := b.NewValue0(x0.Pos, OpS390XMOVWZreg, typ.UInt64)
|
||||
v3 := b.NewValue0(x0.Pos, OpS390XMOVWBRload, typ.UInt32)
|
||||
v3.AuxInt = i0
|
||||
v3.Aux = s
|
||||
v3.AddArg(p)
|
||||
|
@ -29092,13 +29092,13 @@ func rewriteValueS390X_OpS390XOR_90(v *Value) bool {
|
|||
break
|
||||
}
|
||||
b = mergePoint(b, x0, x1)
|
||||
v0 := b.NewValue0(v.Pos, OpS390XOR, v.Type)
|
||||
v0 := b.NewValue0(x1.Pos, OpS390XOR, v.Type)
|
||||
v.reset(OpCopy)
|
||||
v.AddArg(v0)
|
||||
v1 := b.NewValue0(v.Pos, OpS390XSLDconst, v.Type)
|
||||
v1 := b.NewValue0(x1.Pos, OpS390XSLDconst, v.Type)
|
||||
v1.AuxInt = j0
|
||||
v2 := b.NewValue0(v.Pos, OpS390XMOVWZreg, typ.UInt64)
|
||||
v3 := b.NewValue0(v.Pos, OpS390XMOVWBRload, typ.UInt32)
|
||||
v2 := b.NewValue0(x1.Pos, OpS390XMOVWZreg, typ.UInt64)
|
||||
v3 := b.NewValue0(x1.Pos, OpS390XMOVWBRload, typ.UInt32)
|
||||
v3.AuxInt = i0
|
||||
v3.Aux = s
|
||||
v3.AddArg(p)
|
||||
|
@ -29173,13 +29173,13 @@ func rewriteValueS390X_OpS390XOR_100(v *Value) bool {
|
|||
break
|
||||
}
|
||||
b = mergePoint(b, x0, x1)
|
||||
v0 := b.NewValue0(v.Pos, OpS390XOR, v.Type)
|
||||
v0 := b.NewValue0(x1.Pos, OpS390XOR, v.Type)
|
||||
v.reset(OpCopy)
|
||||
v.AddArg(v0)
|
||||
v1 := b.NewValue0(v.Pos, OpS390XSLDconst, v.Type)
|
||||
v1 := b.NewValue0(x1.Pos, OpS390XSLDconst, v.Type)
|
||||
v1.AuxInt = j0
|
||||
v2 := b.NewValue0(v.Pos, OpS390XMOVWZreg, typ.UInt64)
|
||||
v3 := b.NewValue0(v.Pos, OpS390XMOVWBRload, typ.UInt32)
|
||||
v2 := b.NewValue0(x1.Pos, OpS390XMOVWZreg, typ.UInt64)
|
||||
v3 := b.NewValue0(x1.Pos, OpS390XMOVWBRload, typ.UInt32)
|
||||
v3.AuxInt = i0
|
||||
v3.Aux = s
|
||||
v3.AddArg(p)
|
||||
|
@ -33455,7 +33455,7 @@ func rewriteValueS390X_OpS390XORW_10(v *Value) bool {
|
|||
break
|
||||
}
|
||||
b = mergePoint(b, x0, x1)
|
||||
v0 := b.NewValue0(v.Pos, OpS390XMOVHZload, typ.UInt16)
|
||||
v0 := b.NewValue0(x0.Pos, OpS390XMOVHZload, typ.UInt16)
|
||||
v.reset(OpCopy)
|
||||
v.AddArg(v0)
|
||||
v0.AuxInt = i0
|
||||
|
@ -33504,7 +33504,7 @@ func rewriteValueS390X_OpS390XORW_10(v *Value) bool {
|
|||
break
|
||||
}
|
||||
b = mergePoint(b, x0, x1)
|
||||
v0 := b.NewValue0(v.Pos, OpS390XMOVHZload, typ.UInt16)
|
||||
v0 := b.NewValue0(x1.Pos, OpS390XMOVHZload, typ.UInt16)
|
||||
v.reset(OpCopy)
|
||||
v.AddArg(v0)
|
||||
v0.AuxInt = i0
|
||||
|
@ -33553,7 +33553,7 @@ func rewriteValueS390X_OpS390XORW_10(v *Value) bool {
|
|||
break
|
||||
}
|
||||
b = mergePoint(b, x0, x1)
|
||||
v0 := b.NewValue0(v.Pos, OpS390XMOVWZload, typ.UInt32)
|
||||
v0 := b.NewValue0(x0.Pos, OpS390XMOVWZload, typ.UInt32)
|
||||
v.reset(OpCopy)
|
||||
v.AddArg(v0)
|
||||
v0.AuxInt = i0
|
||||
|
@ -33602,7 +33602,7 @@ func rewriteValueS390X_OpS390XORW_10(v *Value) bool {
|
|||
break
|
||||
}
|
||||
b = mergePoint(b, x0, x1)
|
||||
v0 := b.NewValue0(v.Pos, OpS390XMOVWZload, typ.UInt32)
|
||||
v0 := b.NewValue0(x1.Pos, OpS390XMOVWZload, typ.UInt32)
|
||||
v.reset(OpCopy)
|
||||
v.AddArg(v0)
|
||||
v0.AuxInt = i0
|
||||
|
@ -33660,12 +33660,12 @@ func rewriteValueS390X_OpS390XORW_10(v *Value) bool {
|
|||
break
|
||||
}
|
||||
b = mergePoint(b, x0, x1)
|
||||
v0 := b.NewValue0(v.Pos, OpS390XORW, v.Type)
|
||||
v0 := b.NewValue0(x1.Pos, OpS390XORW, v.Type)
|
||||
v.reset(OpCopy)
|
||||
v.AddArg(v0)
|
||||
v1 := b.NewValue0(v.Pos, OpS390XSLWconst, v.Type)
|
||||
v1 := b.NewValue0(x1.Pos, OpS390XSLWconst, v.Type)
|
||||
v1.AuxInt = j1
|
||||
v2 := b.NewValue0(v.Pos, OpS390XMOVHZload, typ.UInt16)
|
||||
v2 := b.NewValue0(x1.Pos, OpS390XMOVHZload, typ.UInt16)
|
||||
v2.AuxInt = i0
|
||||
v2.Aux = s
|
||||
v2.AddArg(p)
|
||||
|
@ -33724,12 +33724,12 @@ func rewriteValueS390X_OpS390XORW_10(v *Value) bool {
|
|||
break
|
||||
}
|
||||
b = mergePoint(b, x0, x1)
|
||||
v0 := b.NewValue0(v.Pos, OpS390XORW, v.Type)
|
||||
v0 := b.NewValue0(x1.Pos, OpS390XORW, v.Type)
|
||||
v.reset(OpCopy)
|
||||
v.AddArg(v0)
|
||||
v1 := b.NewValue0(v.Pos, OpS390XSLWconst, v.Type)
|
||||
v1 := b.NewValue0(x1.Pos, OpS390XSLWconst, v.Type)
|
||||
v1.AuxInt = j1
|
||||
v2 := b.NewValue0(v.Pos, OpS390XMOVHZload, typ.UInt16)
|
||||
v2 := b.NewValue0(x1.Pos, OpS390XMOVHZload, typ.UInt16)
|
||||
v2.AuxInt = i0
|
||||
v2.Aux = s
|
||||
v2.AddArg(p)
|
||||
|
@ -33788,12 +33788,12 @@ func rewriteValueS390X_OpS390XORW_10(v *Value) bool {
|
|||
break
|
||||
}
|
||||
b = mergePoint(b, x0, x1)
|
||||
v0 := b.NewValue0(v.Pos, OpS390XORW, v.Type)
|
||||
v0 := b.NewValue0(x0.Pos, OpS390XORW, v.Type)
|
||||
v.reset(OpCopy)
|
||||
v.AddArg(v0)
|
||||
v1 := b.NewValue0(v.Pos, OpS390XSLWconst, v.Type)
|
||||
v1 := b.NewValue0(x0.Pos, OpS390XSLWconst, v.Type)
|
||||
v1.AuxInt = j1
|
||||
v2 := b.NewValue0(v.Pos, OpS390XMOVHZload, typ.UInt16)
|
||||
v2 := b.NewValue0(x0.Pos, OpS390XMOVHZload, typ.UInt16)
|
||||
v2.AuxInt = i0
|
||||
v2.Aux = s
|
||||
v2.AddArg(p)
|
||||
|
@ -33859,12 +33859,12 @@ func rewriteValueS390X_OpS390XORW_20(v *Value) bool {
|
|||
break
|
||||
}
|
||||
b = mergePoint(b, x0, x1)
|
||||
v0 := b.NewValue0(v.Pos, OpS390XORW, v.Type)
|
||||
v0 := b.NewValue0(x0.Pos, OpS390XORW, v.Type)
|
||||
v.reset(OpCopy)
|
||||
v.AddArg(v0)
|
||||
v1 := b.NewValue0(v.Pos, OpS390XSLWconst, v.Type)
|
||||
v1 := b.NewValue0(x0.Pos, OpS390XSLWconst, v.Type)
|
||||
v1.AuxInt = j1
|
||||
v2 := b.NewValue0(v.Pos, OpS390XMOVHZload, typ.UInt16)
|
||||
v2 := b.NewValue0(x0.Pos, OpS390XMOVHZload, typ.UInt16)
|
||||
v2.AuxInt = i0
|
||||
v2.Aux = s
|
||||
v2.AddArg(p)
|
||||
|
@ -35903,10 +35903,10 @@ func rewriteValueS390X_OpS390XORW_50(v *Value) bool {
|
|||
break
|
||||
}
|
||||
b = mergePoint(b, x0, x1)
|
||||
v0 := b.NewValue0(v.Pos, OpS390XMOVHZreg, typ.UInt64)
|
||||
v0 := b.NewValue0(x1.Pos, OpS390XMOVHZreg, typ.UInt64)
|
||||
v.reset(OpCopy)
|
||||
v.AddArg(v0)
|
||||
v1 := b.NewValue0(v.Pos, OpS390XMOVHBRload, typ.UInt16)
|
||||
v1 := b.NewValue0(x1.Pos, OpS390XMOVHBRload, typ.UInt16)
|
||||
v1.AuxInt = i0
|
||||
v1.Aux = s
|
||||
v1.AddArg(p)
|
||||
|
@ -35954,10 +35954,10 @@ func rewriteValueS390X_OpS390XORW_50(v *Value) bool {
|
|||
break
|
||||
}
|
||||
b = mergePoint(b, x0, x1)
|
||||
v0 := b.NewValue0(v.Pos, OpS390XMOVHZreg, typ.UInt64)
|
||||
v0 := b.NewValue0(x0.Pos, OpS390XMOVHZreg, typ.UInt64)
|
||||
v.reset(OpCopy)
|
||||
v.AddArg(v0)
|
||||
v1 := b.NewValue0(v.Pos, OpS390XMOVHBRload, typ.UInt16)
|
||||
v1 := b.NewValue0(x0.Pos, OpS390XMOVHBRload, typ.UInt16)
|
||||
v1.AuxInt = i0
|
||||
v1.Aux = s
|
||||
v1.AddArg(p)
|
||||
|
@ -36013,7 +36013,7 @@ func rewriteValueS390X_OpS390XORW_50(v *Value) bool {
|
|||
break
|
||||
}
|
||||
b = mergePoint(b, x0, x1)
|
||||
v0 := b.NewValue0(v.Pos, OpS390XMOVWBRload, typ.UInt32)
|
||||
v0 := b.NewValue0(x1.Pos, OpS390XMOVWBRload, typ.UInt32)
|
||||
v.reset(OpCopy)
|
||||
v.AddArg(v0)
|
||||
v0.AuxInt = i0
|
||||
|
@ -36070,7 +36070,7 @@ func rewriteValueS390X_OpS390XORW_50(v *Value) bool {
|
|||
break
|
||||
}
|
||||
b = mergePoint(b, x0, x1)
|
||||
v0 := b.NewValue0(v.Pos, OpS390XMOVWBRload, typ.UInt32)
|
||||
v0 := b.NewValue0(x0.Pos, OpS390XMOVWBRload, typ.UInt32)
|
||||
v.reset(OpCopy)
|
||||
v.AddArg(v0)
|
||||
v0.AuxInt = i0
|
||||
|
@ -36128,13 +36128,13 @@ func rewriteValueS390X_OpS390XORW_50(v *Value) bool {
|
|||
break
|
||||
}
|
||||
b = mergePoint(b, x0, x1)
|
||||
v0 := b.NewValue0(v.Pos, OpS390XORW, v.Type)
|
||||
v0 := b.NewValue0(x0.Pos, OpS390XORW, v.Type)
|
||||
v.reset(OpCopy)
|
||||
v.AddArg(v0)
|
||||
v1 := b.NewValue0(v.Pos, OpS390XSLWconst, v.Type)
|
||||
v1 := b.NewValue0(x0.Pos, OpS390XSLWconst, v.Type)
|
||||
v1.AuxInt = j0
|
||||
v2 := b.NewValue0(v.Pos, OpS390XMOVHZreg, typ.UInt64)
|
||||
v3 := b.NewValue0(v.Pos, OpS390XMOVHBRload, typ.UInt16)
|
||||
v2 := b.NewValue0(x0.Pos, OpS390XMOVHZreg, typ.UInt64)
|
||||
v3 := b.NewValue0(x0.Pos, OpS390XMOVHBRload, typ.UInt16)
|
||||
v3.AuxInt = i0
|
||||
v3.Aux = s
|
||||
v3.AddArg(p)
|
||||
|
@ -36194,13 +36194,13 @@ func rewriteValueS390X_OpS390XORW_50(v *Value) bool {
|
|||
break
|
||||
}
|
||||
b = mergePoint(b, x0, x1)
|
||||
v0 := b.NewValue0(v.Pos, OpS390XORW, v.Type)
|
||||
v0 := b.NewValue0(x0.Pos, OpS390XORW, v.Type)
|
||||
v.reset(OpCopy)
|
||||
v.AddArg(v0)
|
||||
v1 := b.NewValue0(v.Pos, OpS390XSLWconst, v.Type)
|
||||
v1 := b.NewValue0(x0.Pos, OpS390XSLWconst, v.Type)
|
||||
v1.AuxInt = j0
|
||||
v2 := b.NewValue0(v.Pos, OpS390XMOVHZreg, typ.UInt64)
|
||||
v3 := b.NewValue0(v.Pos, OpS390XMOVHBRload, typ.UInt16)
|
||||
v2 := b.NewValue0(x0.Pos, OpS390XMOVHZreg, typ.UInt64)
|
||||
v3 := b.NewValue0(x0.Pos, OpS390XMOVHBRload, typ.UInt16)
|
||||
v3.AuxInt = i0
|
||||
v3.Aux = s
|
||||
v3.AddArg(p)
|
||||
|
@ -36260,13 +36260,13 @@ func rewriteValueS390X_OpS390XORW_50(v *Value) bool {
|
|||
break
|
||||
}
|
||||
b = mergePoint(b, x0, x1)
|
||||
v0 := b.NewValue0(v.Pos, OpS390XORW, v.Type)
|
||||
v0 := b.NewValue0(x1.Pos, OpS390XORW, v.Type)
|
||||
v.reset(OpCopy)
|
||||
v.AddArg(v0)
|
||||
v1 := b.NewValue0(v.Pos, OpS390XSLWconst, v.Type)
|
||||
v1 := b.NewValue0(x1.Pos, OpS390XSLWconst, v.Type)
|
||||
v1.AuxInt = j0
|
||||
v2 := b.NewValue0(v.Pos, OpS390XMOVHZreg, typ.UInt64)
|
||||
v3 := b.NewValue0(v.Pos, OpS390XMOVHBRload, typ.UInt16)
|
||||
v2 := b.NewValue0(x1.Pos, OpS390XMOVHZreg, typ.UInt64)
|
||||
v3 := b.NewValue0(x1.Pos, OpS390XMOVHBRload, typ.UInt16)
|
||||
v3.AuxInt = i0
|
||||
v3.Aux = s
|
||||
v3.AddArg(p)
|
||||
|
@ -36333,13 +36333,13 @@ func rewriteValueS390X_OpS390XORW_60(v *Value) bool {
|
|||
break
|
||||
}
|
||||
b = mergePoint(b, x0, x1)
|
||||
v0 := b.NewValue0(v.Pos, OpS390XORW, v.Type)
|
||||
v0 := b.NewValue0(x1.Pos, OpS390XORW, v.Type)
|
||||
v.reset(OpCopy)
|
||||
v.AddArg(v0)
|
||||
v1 := b.NewValue0(v.Pos, OpS390XSLWconst, v.Type)
|
||||
v1 := b.NewValue0(x1.Pos, OpS390XSLWconst, v.Type)
|
||||
v1.AuxInt = j0
|
||||
v2 := b.NewValue0(v.Pos, OpS390XMOVHZreg, typ.UInt64)
|
||||
v3 := b.NewValue0(v.Pos, OpS390XMOVHBRload, typ.UInt16)
|
||||
v2 := b.NewValue0(x1.Pos, OpS390XMOVHZreg, typ.UInt64)
|
||||
v3 := b.NewValue0(x1.Pos, OpS390XMOVHBRload, typ.UInt16)
|
||||
v3.AuxInt = i0
|
||||
v3.Aux = s
|
||||
v3.AddArg(p)
|
||||
|
@ -38624,7 +38624,7 @@ func rewriteValueS390X_OpS390XORload_0(v *Value) bool {
|
|||
}
|
||||
v.reset(OpS390XOR)
|
||||
v.AddArg(x)
|
||||
v0 := b.NewValue0(v.Pos, OpS390XLGDR, t)
|
||||
v0 := b.NewValue0(v_2.Pos, OpS390XLGDR, t)
|
||||
v0.AddArg(y)
|
||||
v.AddArg(v0)
|
||||
return true
|
||||
|
@ -40523,7 +40523,7 @@ func rewriteValueS390X_OpS390XSUBload_0(v *Value) bool {
|
|||
}
|
||||
v.reset(OpS390XSUB)
|
||||
v.AddArg(x)
|
||||
v0 := b.NewValue0(v.Pos, OpS390XLGDR, t)
|
||||
v0 := b.NewValue0(v_2.Pos, OpS390XLGDR, t)
|
||||
v0.AddArg(y)
|
||||
v.AddArg(v0)
|
||||
return true
|
||||
|
@ -41382,7 +41382,7 @@ func rewriteValueS390X_OpS390XXORload_0(v *Value) bool {
|
|||
}
|
||||
v.reset(OpS390XXOR)
|
||||
v.AddArg(x)
|
||||
v0 := b.NewValue0(v.Pos, OpS390XLGDR, t)
|
||||
v0 := b.NewValue0(v_2.Pos, OpS390XLGDR, t)
|
||||
v0.AddArg(y)
|
||||
v.AddArg(v0)
|
||||
return true
|
||||
|
|
37
test/fixedbugs/issue27201.go
Normal file
37
test/fixedbugs/issue27201.go
Normal file
|
@ -0,0 +1,37 @@
|
|||
// run
|
||||
|
||||
// Copyright 2019 The Go Authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
package main
|
||||
|
||||
import (
|
||||
"runtime"
|
||||
"strings"
|
||||
)
|
||||
|
||||
func main() {
|
||||
f(nil)
|
||||
}
|
||||
|
||||
func f(p *int32) {
|
||||
defer checkstack()
|
||||
v := *p // panic should happen here, line 20
|
||||
sink = int64(v) // not here, line 21
|
||||
}
|
||||
|
||||
var sink int64
|
||||
|
||||
func checkstack() {
|
||||
_ = recover()
|
||||
var buf [1024]byte
|
||||
n := runtime.Stack(buf[:], false)
|
||||
s := string(buf[:n])
|
||||
if strings.Contains(s, "issue27201.go:21 ") {
|
||||
panic("panic at wrong location")
|
||||
}
|
||||
if !strings.Contains(s, "issue27201.go:20 ") {
|
||||
panic("no panic at correct location")
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue