aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/internal/obj/ppc64/asm9.go
diff options
context:
space:
mode:
Diffstat (limited to 'src/cmd/internal/obj/ppc64/asm9.go')
-rw-r--r--src/cmd/internal/obj/ppc64/asm9.go60
1 files changed, 29 insertions, 31 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)