go/ssa/interp: fix tests on Go 1.7 and Go 1.8

This mostly reverts commit 1c59bc354db124c4a797df6930a19c7a3cf8008c
(CL 43350) which had fixed Go tip but broken Go 1.7 and Go 1.8
builders.

Change-Id: I4e7bdfafde74c9e730bb870b9db05b663b4f56a3
Reviewed-on: https://go-review.googlesource.com/43391
Reviewed-by: Alan Donovan <adonovan@google.com>
diff --git a/go/ssa/interp/external.go b/go/ssa/interp/external.go
index 7241522..181ffa4 100644
--- a/go/ssa/interp/external.go
+++ b/go/ssa/interp/external.go
@@ -69,8 +69,10 @@
 		"(reflect.rtype).Out":              ext۰reflect۰rtype۰Out,
 		"(reflect.rtype).Size":             ext۰reflect۰rtype۰Size,
 		"(reflect.rtype).String":           ext۰reflect۰rtype۰String,
+		"bytes.init":                       ext۰nop, // avoid asm dependency
 		"bytes.Equal":                      ext۰bytes۰Equal,
 		"bytes.IndexByte":                  ext۰bytes۰IndexByte,
+		"hash/crc32.haveSSE42":             ext۰crc32۰haveSSE42,
 		"internal/cpu.cpuid":               ext۰cpu۰cpuid,
 		"math.Abs":                         ext۰math۰Abs,
 		"math.Exp":                         ext۰math۰Exp,
@@ -81,6 +83,7 @@
 		"math.Ldexp":                       ext۰math۰Ldexp,
 		"math.Log":                         ext۰math۰Log,
 		"math.Min":                         ext۰math۰Min,
+		"math.hasSSE4":                     ext۰math۰hasSSE4,
 		"os.runtime_args":                  ext۰os۰runtime_args,
 		"os.runtime_beforeExit":            ext۰nop,
 		"os/signal.init":                   ext۰nop,
@@ -110,6 +113,7 @@
 		"(*runtime.Func).Name":             ext۰runtime۰Func۰Name,
 		"runtime.environ":                  ext۰runtime۰environ,
 		"runtime.getgoroot":                ext۰runtime۰getgoroot,
+		"strings.init":                     ext۰nop, // avoid asm dependency
 		"strings.Count":                    ext۰strings۰Count,
 		"strings.Index":                    ext۰strings۰Index,
 		"strings.IndexByte":                ext۰strings۰IndexByte,
@@ -190,6 +194,10 @@
 	return -1
 }
 
+func ext۰crc32۰haveSSE42(fr *frame, args []value) value {
+	return false
+}
+
 func ext۰math۰Float64frombits(fr *frame, args []value) value {
 	return math.Float64frombits(args[0].(uint64))
 }
@@ -218,6 +226,10 @@
 	return math.Min(args[0].(float64), args[1].(float64))
 }
 
+func ext۰math۰hasSSE4(fr *frame, args []value) value {
+	return false
+}
+
 func ext۰math۰Ldexp(fr *frame, args []value) value {
 	return math.Ldexp(args[0].(float64), args[1].(int))
 }
diff --git a/go/ssa/interp/interp_test.go b/go/ssa/interp/interp_test.go
index ea8fcca..6e9f7b2 100644
--- a/go/ssa/interp/interp_test.go
+++ b/go/ssa/interp/interp_test.go
@@ -158,7 +158,7 @@
 	"encoding/hex",
 	// "encoding/pem", // TODO(adonovan): implement (reflect.Value).SetString
 	// "testing",      // TODO(adonovan): implement runtime.Goexit correctly
-	"hash/crc32",
+	// "hash/crc32",   // TODO(adonovan): implement hash/crc32.haveCLMUL
 	// "log",          // TODO(adonovan): implement runtime.Callers correctly
 
 	// Too slow: