]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/compile/internal/amd64: simplify assembly generator
authorBen Shi <powerman1st@163.com>
Sat, 8 Sep 2018 14:23:14 +0000 (14:23 +0000)
committerBen Shi <powerman1st@163.com>
Sat, 8 Sep 2018 23:59:26 +0000 (23:59 +0000)
Merge two case-statements together, since they have similar logic.

1. That makes the assembly generator more clear.
2. The total size of cmd/compile decreases about 0.8KB.

Change-Id: I0144a07152202ee7b21e323bcd5dea80a351a6e3
Reviewed-on: https://go-review.googlesource.com/134215
Run-TryBot: Ben Shi <powerman1st@163.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Keith Randall <khr@golang.org>
src/cmd/compile/internal/amd64/ssa.go

index ae6141dd12ebd3e6e49549537190357ec210e5ba..2afb556d80f40d03fbbcac62b180461003ff58c0 100644 (file)
@@ -583,7 +583,11 @@ func ssaGenValue(s *gc.SSAGenState, v *ssa.Value) {
                p.From.Reg = v.Args[0].Reg()
                p.To.Type = obj.TYPE_CONST
                p.To.Offset = v.AuxInt
-       case ssa.OpAMD64BTLconst, ssa.OpAMD64BTQconst:
+       case ssa.OpAMD64BTLconst, ssa.OpAMD64BTQconst,
+               ssa.OpAMD64TESTQconst, ssa.OpAMD64TESTLconst, ssa.OpAMD64TESTWconst, ssa.OpAMD64TESTBconst,
+               ssa.OpAMD64BTSLconst, ssa.OpAMD64BTSQconst,
+               ssa.OpAMD64BTCLconst, ssa.OpAMD64BTCQconst,
+               ssa.OpAMD64BTRLconst, ssa.OpAMD64BTRQconst:
                op := v.Op
                if op == ssa.OpAMD64BTQconst && v.AuxInt < 32 {
                        // Emit 32-bit version because it's shorter
@@ -594,15 +598,6 @@ func ssaGenValue(s *gc.SSAGenState, v *ssa.Value) {
                p.From.Offset = v.AuxInt
                p.To.Type = obj.TYPE_REG
                p.To.Reg = v.Args[0].Reg()
-       case ssa.OpAMD64TESTQconst, ssa.OpAMD64TESTLconst, ssa.OpAMD64TESTWconst, ssa.OpAMD64TESTBconst,
-               ssa.OpAMD64BTSLconst, ssa.OpAMD64BTSQconst,
-               ssa.OpAMD64BTCLconst, ssa.OpAMD64BTCQconst,
-               ssa.OpAMD64BTRLconst, ssa.OpAMD64BTRQconst:
-               p := s.Prog(v.Op.Asm())
-               p.From.Type = obj.TYPE_CONST
-               p.From.Offset = v.AuxInt
-               p.To.Type = obj.TYPE_REG
-               p.To.Reg = v.Args[0].Reg()
        case ssa.OpAMD64CMPQload, ssa.OpAMD64CMPLload, ssa.OpAMD64CMPWload, ssa.OpAMD64CMPBload:
                p := s.Prog(v.Op.Asm())
                p.From.Type = obj.TYPE_MEM