diff options
author | Michael Munday <mike.munday@ibm.com> | 2018-04-30 13:27:50 +0100 |
---|---|---|
committer | Michael Munday <mike.munday@ibm.com> | 2018-05-08 16:19:56 +0000 |
commit | 8af0c77df34a85ada2fe7f508ffaa0e337dddccb (patch) | |
tree | 9ddd6ebb10dd05635b891496108ec26be820f82e /src/cmd/compile/internal/s390x | |
parent | 704893b16be5ab99913ee04c615d570ad5d57027 (diff) | |
download | go-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.go | 7 |
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() |