cmd/8g, cmd/internal/gc: clean up GO386 handling
This change cleans up some of the uglyness introduced in 8fc73a39efe1
by moving the gc.Use_sse into the gc.Arch struct and adjusting its
zero value to be more useful.
Change-Id: I26ff5d9ac57b3f25e936519e443de6583cdafa56
Reviewed-on: https://go-review.googlesource.com/7994
Reviewed-by: Russ Cox <rsc@golang.org>
diff --git a/src/cmd/8g/galign.go b/src/cmd/8g/galign.go
index e92802d..1c03df5 100644
--- a/src/cmd/8g/galign.go
+++ b/src/cmd/8g/galign.go
@@ -54,6 +54,7 @@
case "387":
gc.Thearch.FREGMIN = x86.REG_F0
gc.Thearch.FREGMAX = x86.REG_F7
+ gc.Thearch.Use387 = true
case "sse2":
gc.Thearch.FREGMIN = x86.REG_X0
gc.Thearch.FREGMAX = x86.REG_X7
diff --git a/src/cmd/8g/ggen.go b/src/cmd/8g/ggen.go
index 949156e..a4a373c 100644
--- a/src/cmd/8g/ggen.go
+++ b/src/cmd/8g/ggen.go
@@ -617,10 +617,10 @@
return
}
- if gc.Use_sse {
- cgen_floatsse(n, res)
- } else {
+ if gc.Thearch.Use387 {
cgen_float387(n, res)
+ } else {
+ cgen_floatsse(n, res)
}
}
@@ -761,7 +761,7 @@
var et int
var n2 gc.Node
var ax gc.Node
- if gc.Use_sse {
+ if !gc.Thearch.Use387 {
if nl.Addable == 0 {
var n1 gc.Node
gc.Tempname(&n1, nl.Type)
diff --git a/src/cmd/8g/gsubr.go b/src/cmd/8g/gsubr.go
index 7ca4dac..929cbae 100644
--- a/src/cmd/8g/gsubr.go
+++ b/src/cmd/8g/gsubr.go
@@ -402,7 +402,7 @@
a := obj.AXXX
et := int(gc.Simtype[t.Etype])
- if gc.Use_sse {
+ if !gc.Thearch.Use387 {
switch uint32(op)<<16 | uint32(et) {
default:
gc.Fatal("foptoas-sse: no entry %v-%v", gc.Oconv(int(op), 0), gc.Tconv(t, 0))
@@ -1036,10 +1036,10 @@
switch uint32(ft)<<16 | uint32(tt) {
default:
- if gc.Use_sse {
- floatmove_sse(f, t)
- } else {
+ if gc.Thearch.Use387 {
floatmove_387(f, t)
+ } else {
+ floatmove_sse(f, t)
}
return