From: Cherry Zhang Date: Sat, 27 Aug 2016 23:08:14 +0000 (-0400) Subject: cmd/compile: fix load int32 to FP register on big-endian MIPS64 X-Git-Tag: go1.8beta1~1603 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=2f679d74e638ac7514a6b6b32f5d28a9980c22c3;p=gostls13.git cmd/compile: fix load int32 to FP register on big-endian MIPS64 Fixes #16903. Change-Id: I1f6fcd57e14b2b62e208b7bb3adccd5fd7f8bdbc Reviewed-on: https://go-review.googlesource.com/27933 Run-TryBot: Cherry Zhang TryBot-Result: Gobot Gobot Reviewed-by: Minux Ma --- diff --git a/src/cmd/compile/internal/mips64/ssa.go b/src/cmd/compile/internal/mips64/ssa.go index da30ddc6cf..fdeb43fbc8 100644 --- a/src/cmd/compile/internal/mips64/ssa.go +++ b/src/cmd/compile/internal/mips64/ssa.go @@ -103,9 +103,9 @@ func isHILO(r int16) bool { // loadByType returns the load instruction of the given type. func loadByType(t ssa.Type, r int16) obj.As { if isFPreg(r) { - if t.IsFloat() && t.Size() == 4 { // float32 + if t.Size() == 4 { // float32 or int32 return mips.AMOVF - } else { // float64 or integer in FP register + } else { // float64 or int64 return mips.AMOVD } } else { @@ -138,9 +138,9 @@ func loadByType(t ssa.Type, r int16) obj.As { // storeByType returns the store instruction of the given type. func storeByType(t ssa.Type, r int16) obj.As { if isFPreg(r) { - if t.IsFloat() && t.Size() == 4 { // float32 + if t.Size() == 4 { // float32 or int32 return mips.AMOVF - } else { // float64 or integer in FP register + } else { // float64 or int64 return mips.AMOVD } } else {