aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/internal/obj/ppc64
diff options
context:
space:
mode:
Diffstat (limited to 'src/cmd/internal/obj/ppc64')
-rw-r--r--src/cmd/internal/obj/ppc64/asm9.go60
-rw-r--r--src/cmd/internal/obj/ppc64/obj9.go48
2 files changed, 53 insertions, 55 deletions
diff --git a/src/cmd/internal/obj/ppc64/asm9.go b/src/cmd/internal/obj/ppc64/asm9.go
index 1433710944..a4e46be9e2 100644
--- a/src/cmd/internal/obj/ppc64/asm9.go
+++ b/src/cmd/internal/obj/ppc64/asm9.go
@@ -470,16 +470,14 @@ func span9(ctxt *obj.Link, cursym *obj.LSym) {
if (o.type_ == 16 || o.type_ == 17) && p.Pcond != nil {
otxt = p.Pcond.Pc - c
if otxt < -(1<<15)+10 || otxt >= (1<<15)-10 {
- q = new(obj.Prog)
- q.Ctxt = p.Ctxt
+ q = ctxt.NewProg()
q.Link = p.Link
p.Link = q
q.As = ABR
q.To.Type = obj.TYPE_BRANCH
q.Pcond = p.Pcond
p.Pcond = q
- q = new(obj.Prog)
- q.Ctxt = p.Ctxt
+ q = ctxt.NewProg()
q.Link = p.Link
p.Link = q
q.As = ABR
@@ -534,12 +532,12 @@ func span9(ctxt *obj.Link, cursym *obj.LSym) {
}
}
-func isint32(v int64) int {
- return bool2int(int64(int32(v)) == v)
+func isint32(v int64) bool {
+ return int64(int32(v)) == v
}
-func isuint32(v uint64) int {
- return bool2int(uint64(uint32(v)) == v)
+func isuint32(v uint64) bool {
+ return uint64(uint32(v)) == v
}
func aclass(ctxt *obj.Link, a *obj.Addr) int {
@@ -637,7 +635,7 @@ func aclass(ctxt *obj.Link, a *obj.Addr) int {
if -BIG <= ctxt.Instoffset && ctxt.Instoffset <= BIG {
return C_SACON
}
- if isint32(ctxt.Instoffset) != 0 {
+ if isint32(ctxt.Instoffset) {
return C_LACON
}
return C_DACON
@@ -689,10 +687,10 @@ func aclass(ctxt *obj.Link, a *obj.Addr) int {
if ctxt.Instoffset <= 0xffff {
return C_ANDCON
}
- if ctxt.Instoffset&0xffff == 0 && isuint32(uint64(ctxt.Instoffset)) != 0 { /* && (instoffset & (1<<31)) == 0) */
+ if ctxt.Instoffset&0xffff == 0 && isuint32(uint64(ctxt.Instoffset)) { /* && (instoffset & (1<<31)) == 0) */
return C_UCON
}
- if isint32(ctxt.Instoffset) != 0 || isuint32(uint64(ctxt.Instoffset)) != 0 {
+ if isint32(ctxt.Instoffset) || isuint32(uint64(ctxt.Instoffset)) {
return C_LCON
}
return C_DCON
@@ -701,10 +699,10 @@ func aclass(ctxt *obj.Link, a *obj.Addr) int {
if ctxt.Instoffset >= -0x8000 {
return C_ADDCON
}
- if ctxt.Instoffset&0xffff == 0 && isint32(ctxt.Instoffset) != 0 {
+ if ctxt.Instoffset&0xffff == 0 && isint32(ctxt.Instoffset) {
return C_UCON
}
- if isint32(ctxt.Instoffset) != 0 {
+ if isint32(ctxt.Instoffset) {
return C_LCON
}
return C_DCON
@@ -1407,20 +1405,20 @@ func addaddrreloc(ctxt *obj.Link, s *obj.LSym, o1 *uint32, o2 *uint32) {
/*
* 32-bit masks
*/
-func getmask(m []byte, v uint32) int {
+func getmask(m []byte, v uint32) bool {
var i int
m[1] = 0
m[0] = m[1]
if v != ^uint32(0) && v&(1<<31) != 0 && v&1 != 0 { /* MB > ME */
- if getmask(m, ^v) != 0 {
+ if getmask(m, ^v) {
i = int(m[0])
m[0] = m[1] + 1
m[1] = byte(i - 1)
- return 1
+ return true
}
- return 0
+ return false
}
for i = 0; i < 32; i++ {
@@ -1429,25 +1427,25 @@ func getmask(m []byte, v uint32) int {
for {
m[1] = byte(i)
i++
- if !(i < 32 && v&(1<<uint(31-i)) != 0) {
+ if i >= 32 || v&(1<<uint(31-i)) == 0 {
break
}
}
for ; i < 32; i++ {
if v&(1<<uint(31-i)) != 0 {
- return 0
+ return false
}
}
- return 1
+ return true
}
}
- return 0
+ return false
}
func maskgen(ctxt *obj.Link, p *obj.Prog, m []byte, v uint32) {
- if !(getmask(m, v) != 0) {
+ if !getmask(m, v) {
ctxt.Diag("cannot generate mask #%x\n%v", v, p)
}
}
@@ -1455,7 +1453,7 @@ func maskgen(ctxt *obj.Link, p *obj.Prog, m []byte, v uint32) {
/*
* 64-bit masks (rldic etc)
*/
-func getmask64(m []byte, v uint64) int {
+func getmask64(m []byte, v uint64) bool {
var i int
m[1] = 0
@@ -1466,25 +1464,25 @@ func getmask64(m []byte, v uint64) int {
for {
m[1] = byte(i)
i++
- if !(i < 64 && v&(uint64(1)<<uint(63-i)) != 0) {
+ if i >= 64 || v&(uint64(1)<<uint(63-i)) == 0 {
break
}
}
for ; i < 64; i++ {
if v&(uint64(1)<<uint(63-i)) != 0 {
- return 0
+ return false
}
}
- return 1
+ return true
}
}
- return 0
+ return false
}
func maskgen64(ctxt *obj.Link, p *obj.Prog, m []byte, v uint64) {
- if !(getmask64(m, v) != 0) {
+ if !getmask64(m, v) {
ctxt.Diag("cannot generate mask #%x\n%v", v, p)
}
}
@@ -1493,7 +1491,7 @@ func loadu32(r int, d int64) uint32 {
var v int32
v = int32(d >> 16)
- if isuint32(uint64(d)) != 0 {
+ if isuint32(uint64(d)) {
return LOP_IRR(OP_ORIS, uint32(r), REGZERO, uint32(v))
}
return AOP_IRR(OP_ADDIS, uint32(r), REGZERO, uint32(v))
@@ -1574,7 +1572,7 @@ func asmout(ctxt *obj.Link, p *obj.Prog, o *Optab, out []uint32) {
log.Fatalf("invalid handling of %v", p)
}
v >>= 16
- if r == REGZERO && isuint32(uint64(d)) != 0 {
+ if r == REGZERO && isuint32(uint64(d)) {
o1 = LOP_IRR(OP_ORIS, uint32(p.To.Reg), REGZERO, uint32(v))
break
}
@@ -1862,7 +1860,7 @@ func asmout(ctxt *obj.Link, p *obj.Prog, o *Optab, out []uint32) {
if r == 0 {
r = int(p.To.Reg)
}
- if p.As == AADD && (!(r0iszero != 0 /*TypeKind(100016)*/) && p.Reg == 0 || r0iszero != 0 /*TypeKind(100016)*/ && p.To.Reg == 0) {
+ if p.As == AADD && (r0iszero == 0 /*TypeKind(100016)*/ && p.Reg == 0 || r0iszero != 0 /*TypeKind(100016)*/ && p.To.Reg == 0) {
ctxt.Diag("literal operation on R0\n%v", p)
}
o1 = AOP_IRR(uint32(opirr(ctxt, int(p.As)+ALAST)), uint32(p.To.Reg), uint32(r), uint32(v)>>16)
diff --git a/src/cmd/internal/obj/ppc64/obj9.go b/src/cmd/internal/obj/ppc64/obj9.go
index 4675a9e7b0..7524674dd8 100644
--- a/src/cmd/internal/obj/ppc64/obj9.go
+++ b/src/cmd/internal/obj/ppc64/obj9.go
@@ -289,7 +289,7 @@ func preprocess(ctxt *obj.Link, cursym *obj.LSym) {
p.Pcond = q1
}
- if !(q1.Mark&LEAF != 0) {
+ if q1.Mark&LEAF == 0 {
q1.Mark |= LABEL
}
} else {
@@ -341,15 +341,15 @@ func preprocess(ctxt *obj.Link, cursym *obj.LSym) {
}
p.To.Offset = int64(autosize) - 8
- if !(p.From3.Offset&obj.NOSPLIT != 0) {
- p = stacksplit(ctxt, p, autosize, bool2int(!(cursym.Text.From3.Offset&obj.NEEDCTXT != 0))) // emit split check
+ if p.From3.Offset&obj.NOSPLIT == 0 {
+ p = stacksplit(ctxt, p, autosize, cursym.Text.From3.Offset&obj.NEEDCTXT == 0) // emit split check
}
q = p
if autosize != 0 {
/* use MOVDU to adjust R1 when saving R31, if autosize is small */
- if !(cursym.Text.Mark&LEAF != 0) && autosize >= -BIG && autosize <= BIG {
+ if cursym.Text.Mark&LEAF == 0 && autosize >= -BIG && autosize <= BIG {
mov = AMOVDU
aoffset = int(-autosize)
} else {
@@ -362,7 +362,7 @@ func preprocess(ctxt *obj.Link, cursym *obj.LSym) {
q.To.Reg = REGSP
q.Spadj = +autosize
}
- } else if !(cursym.Text.Mark&LEAF != 0) {
+ } else if cursym.Text.Mark&LEAF == 0 {
if ctxt.Debugvlog != 0 {
fmt.Fprintf(ctxt.Bso, "save suppressed in: %s\n", cursym.Name)
obj.Bflush(ctxt.Bso)
@@ -499,9 +499,9 @@ func preprocess(ctxt *obj.Link, cursym *obj.LSym) {
}
if cursym.Text.Mark&LEAF != 0 {
- if !(autosize != 0) {
+ if autosize == 0 {
p.As = ABR
- p.From = obj.Zprog.From
+ p.From = obj.Addr{}
p.To.Type = obj.TYPE_REG
p.To.Reg = REG_LR
p.Mark |= BRANCH
@@ -515,7 +515,7 @@ func preprocess(ctxt *obj.Link, cursym *obj.LSym) {
p.To.Reg = REGSP
p.Spadj = -autosize
- q = p.Ctxt.NewProg()
+ q = ctxt.NewProg()
q.As = ABR
q.Lineno = p.Lineno
q.To.Type = obj.TYPE_REG
@@ -535,7 +535,7 @@ func preprocess(ctxt *obj.Link, cursym *obj.LSym) {
p.To.Type = obj.TYPE_REG
p.To.Reg = REGTMP
- q = p.Ctxt.NewProg()
+ q = ctxt.NewProg()
q.As = AMOVD
q.Lineno = p.Lineno
q.From.Type = obj.TYPE_REG
@@ -549,7 +549,7 @@ func preprocess(ctxt *obj.Link, cursym *obj.LSym) {
if false {
// Debug bad returns
- q = p.Ctxt.NewProg()
+ q = ctxt.NewProg()
q.As = AMOVD
q.Lineno = p.Lineno
q.From.Type = obj.TYPE_MEM
@@ -564,7 +564,7 @@ func preprocess(ctxt *obj.Link, cursym *obj.LSym) {
}
if autosize != 0 {
- q = p.Ctxt.NewProg()
+ q = ctxt.NewProg()
q.As = AADD
q.Lineno = p.Lineno
q.From.Type = obj.TYPE_CONST
@@ -577,7 +577,7 @@ func preprocess(ctxt *obj.Link, cursym *obj.LSym) {
p.Link = q
}
- q1 = p.Ctxt.NewProg()
+ q1 = ctxt.NewProg()
q1.As = ABR
q1.Lineno = p.Lineno
q1.To.Type = obj.TYPE_REG
@@ -641,7 +641,7 @@ func preprocess(ctxt *obj.Link, cursym *obj.LSym) {
q = p;
}
*/
-func stacksplit(ctxt *obj.Link, p *obj.Prog, framesize int32, noctxt int) *obj.Prog {
+func stacksplit(ctxt *obj.Link, p *obj.Prog, framesize int32, noctxt bool) *obj.Prog {
var q *obj.Prog
var q1 *obj.Prog
@@ -774,7 +774,7 @@ func stacksplit(ctxt *obj.Link, p *obj.Prog, framesize int32, noctxt int) *obj.P
if ctxt.Cursym.Cfunc != 0 {
p.To.Sym = obj.Linklookup(ctxt, "runtime.morestackc", 0)
} else {
- p.To.Sym = ctxt.Symmorestack[noctxt]
+ p.To.Sym = ctxt.Symmorestack[bool2int(noctxt)]
}
// BR start
@@ -799,7 +799,7 @@ func follow(ctxt *obj.Link, s *obj.LSym) {
ctxt.Cursym = s
- firstp = new(obj.Prog)
+ firstp = ctxt.NewProg()
lastp = firstp
xfol(ctxt, s.Text, &lastp)
lastp.Link = nil
@@ -853,7 +853,7 @@ loop:
p = p.Link
xfol(ctxt, p, last)
p = q
- if p != nil && !(p.Mark&FOLL != 0) {
+ if p != nil && p.Mark&FOLL == 0 {
goto loop
}
return
@@ -862,7 +862,7 @@ loop:
if q != nil {
p.Mark |= FOLL
p = q
- if !(p.Mark&FOLL != 0) {
+ if p.Mark&FOLL == 0 {
goto loop
}
}
@@ -885,19 +885,19 @@ loop:
if a == ABR || a == ARETURN || a == ARFI || a == ARFCI || a == ARFID || a == AHRFID {
goto copy
}
- if !(q.Pcond != nil) || (q.Pcond.Mark&FOLL != 0) {
+ if q.Pcond == nil || (q.Pcond.Mark&FOLL != 0) {
continue
}
b = relinv(a)
- if !(b != 0) {
+ if b == 0 {
continue
}
copy:
for {
- r = new(obj.Prog)
+ r = ctxt.NewProg()
*r = *p
- if !(r.Mark&FOLL != 0) {
+ if r.Mark&FOLL == 0 {
fmt.Printf("cant happen 1\n")
}
r.Mark |= FOLL
@@ -916,10 +916,10 @@ loop:
r.As = int16(b)
r.Pcond = p.Link
r.Link = p.Pcond
- if !(r.Link.Mark&FOLL != 0) {
+ if r.Link.Mark&FOLL == 0 {
xfol(ctxt, r.Link, last)
}
- if !(r.Pcond.Mark&FOLL != 0) {
+ if r.Pcond.Mark&FOLL == 0 {
fmt.Printf("cant happen 2\n")
}
return
@@ -927,7 +927,7 @@ loop:
}
a = ABR
- q = p.Ctxt.NewProg()
+ q = ctxt.NewProg()
q.As = int16(a)
q.Lineno = p.Lineno
q.To.Type = obj.TYPE_BRANCH