[dev.ssa] Merge remote-tracking branch 'origin/master' into mergebranch

The only major fixup is that duffzero changed from
8-byte writes to 16-byte writes.

Change-Id: I1762b74ce67a8e4b81c11568027cdb3572f7f87c
diff --git a/src/cmd/compile/internal/gc/ssa.go b/src/cmd/compile/internal/gc/ssa.go
index 7219ffd..36f7435 100644
--- a/src/cmd/compile/internal/gc/ssa.go
+++ b/src/cmd/compile/internal/gc/ssa.go
@@ -2120,10 +2120,7 @@
 
 	// Set receiver (for interface calls)
 	if rcvr != nil {
-		var argStart int64
-		if HasLinkRegister() {
-			argStart += int64(Widthptr)
-		}
+		argStart := Ctxt.FixedFrameSize()
 		if k != callNormal {
 			argStart += int64(2 * Widthptr)
 		}
@@ -3737,6 +3734,12 @@
 		p.To.Type = obj.TYPE_ADDR
 		p.To.Sym = Linksym(Pkglookup("duffzero", Runtimepkg))
 		p.To.Offset = v.AuxInt
+	case ssa.OpAMD64MOVOconst:
+		if v.AuxInt != 0 {
+			v.Unimplementedf("MOVOconst can only do constant=0")
+		}
+		r := regnum(v)
+		opregreg(x86.AXORPS, r, r)
 
 	case ssa.OpCopy: // TODO: lower to MOVQ earlier?
 		if v.Type.IsMemory() {