aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/compile/internal/s390x
diff options
context:
space:
mode:
authorMichael Munday <mike.munday@ibm.com>2018-04-30 13:27:50 +0100
committerMichael Munday <mike.munday@ibm.com>2018-05-08 16:19:56 +0000
commit8af0c77df34a85ada2fe7f508ffaa0e337dddccb (patch)
tree9ddd6ebb10dd05635b891496108ec26be820f82e /src/cmd/compile/internal/s390x
parent704893b16be5ab99913ee04c615d570ad5d57027 (diff)
downloadgo-8af0c77df34a85ada2fe7f508ffaa0e337dddccb.tar.gz
go-8af0c77df34a85ada2fe7f508ffaa0e337dddccb.zip
cmd/compile: simplify shift lowering on s390x
Use conditional moves instead of subtractions with borrow to handle saturation cases. This allows us to delete the SUBE/SUBEW ops and associated rules from the SSA backend. Using conditional moves also means we can detect when shift values are masked so I've added some new rules to constant fold the relevant comparisons and masking ops. Also use the new shiftIsBounded() function to avoid generating code to handle saturation cases where possible. Updates #25167 for s390x. Change-Id: Ief9991c91267c9151ce4c5ec07642abb4dcc1c0d Reviewed-on: https://go-review.googlesource.com/110070 Run-TryBot: Michael Munday <mike.munday@ibm.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Diffstat (limited to 'src/cmd/compile/internal/s390x')
-rw-r--r--src/cmd/compile/internal/s390x/ssa.go7
1 files changed, 0 insertions, 7 deletions
diff --git a/src/cmd/compile/internal/s390x/ssa.go b/src/cmd/compile/internal/s390x/ssa.go
index 6b8d8ab4b3..fe206f74e8 100644
--- a/src/cmd/compile/internal/s390x/ssa.go
+++ b/src/cmd/compile/internal/s390x/ssa.go
@@ -305,13 +305,6 @@ func ssaGenValue(s *gc.SSAGenState, v *ssa.Value) {
}
p.To.Type = obj.TYPE_REG
p.To.Reg = r
- case ssa.OpS390XSUBEcarrymask, ssa.OpS390XSUBEWcarrymask:
- r := v.Reg()
- p := s.Prog(v.Op.Asm())
- p.From.Type = obj.TYPE_REG
- p.From.Reg = r
- p.To.Type = obj.TYPE_REG
- p.To.Reg = r
case ssa.OpS390XMOVDaddridx:
r := v.Args[0].Reg()
i := v.Args[1].Reg()