diff options
| author | Cherry Zhang <cherryyz@google.com> | 2016-10-27 17:52:53 -0400 |
|---|---|---|
| committer | Cherry Zhang <cherryyz@google.com> | 2016-10-28 14:20:09 +0000 |
| commit | 4f1ca8b6f92d69a889a6884d3b8393fdcf530e2b (patch) | |
| tree | 02e50d6be1e04e801be40f1dd08f489574de7d05 /src/cmd/internal/obj/mips | |
| parent | 0acefdbea07252191aa24b8bbbddeecbfa3e7ed9 (diff) | |
| download | go-4f1ca8b6f92d69a889a6884d3b8393fdcf530e2b.tar.xz | |
cmd/internal/obj/mips: materialize float constant 0 from zero register
Materialize float constant 0 from integer zero register, instead
of loading from constant pool.
Change-Id: Ie4728895b9d617bec2a29d15729c0efaa10eedbb
Reviewed-on: https://go-review.googlesource.com/32109
Run-TryBot: Cherry Zhang <cherryyz@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: David Chase <drchase@google.com>
Diffstat (limited to 'src/cmd/internal/obj/mips')
| -rw-r--r-- | src/cmd/internal/obj/mips/obj0.go | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/src/cmd/internal/obj/mips/obj0.go b/src/cmd/internal/obj/mips/obj0.go index 402b65eb27..651da23955 100644 --- a/src/cmd/internal/obj/mips/obj0.go +++ b/src/cmd/internal/obj/mips/obj0.go @@ -58,6 +58,12 @@ func progedit(ctxt *obj.Link, p *obj.Prog) { if p.From.Type == obj.TYPE_FCONST { f32 := float32(p.From.Val.(float64)) i32 := math.Float32bits(f32) + if i32 == 0 { + p.As = AMOVV + p.From.Type = obj.TYPE_REG + p.From.Reg = REGZERO + break + } literal := fmt.Sprintf("$f32.%08x", i32) s := obj.Linklookup(ctxt, literal, 0) s.Size = 4 @@ -70,6 +76,12 @@ func progedit(ctxt *obj.Link, p *obj.Prog) { case AMOVD: if p.From.Type == obj.TYPE_FCONST { i64 := math.Float64bits(p.From.Val.(float64)) + if i64 == 0 { + p.As = AMOVV + p.From.Type = obj.TYPE_REG + p.From.Reg = REGZERO + break + } literal := fmt.Sprintf("$f64.%016x", i64) s := obj.Linklookup(ctxt, literal, 0) s.Size = 8 |
