<pre style='margin:0'>
Ken (kencu) pushed a commit to branch master
in repository macports-ports.

</pre>
<p><a href="https://github.com/macports/macports-ports/commit/ecbbc972ebf42e88aeeb1c69cd2f37bfc622b0c9">https://github.com/macports/macports-ports/commit/ecbbc972ebf42e88aeeb1c69cd2f37bfc622b0c9</a></p>
<pre style="white-space: pre; background: #F8F8F8">The following commit(s) were added to refs/heads/master by this push:
<span style='display:block; white-space:pre;color:#404040;'>     new ecbbc97  go: backport upstream fix for AVX
</span>ecbbc97 is described below

<span style='display:block; white-space:pre;color:#808000;'>commit ecbbc972ebf42e88aeeb1c69cd2f37bfc622b0c9
</span>Author: Ken Cunningham <kencu@macports.org>
AuthorDate: Wed Feb 26 22:20:00 2020 -0800

<span style='display:block; white-space:pre;color:#404040;'>    go: backport upstream fix for AVX
</span><span style='display:block; white-space:pre;color:#404040;'>    
</span><span style='display:block; white-space:pre;color:#404040;'>    closes: https://trac.macports.org/ticket/60133
</span>---
 lang/go/Portfile                   |  3 ++
 lang/go/files/go-141-avx-fix.patch | 98 ++++++++++++++++++++++++++++++++++++++
 2 files changed, 101 insertions(+)

<span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/go/Portfile b/lang/go/Portfile
</span><span style='display:block; white-space:pre;color:#808080;'>index b4ff170..77dccba 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/lang/go/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/lang/go/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -66,6 +66,9 @@ build.env           GOROOT_BOOTSTRAP=${prefix}/lib/go-1.4 \
</span>                     GOROOT_FINAL=${GOROOT_FINAL} \
                     CC=${configure.cc}
 
<span style='display:block; white-space:pre;background:#e0ffe0;'>+# backport upstream patch to test for AVX before using it
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+patchfiles-append   go-141-avx-fix.patch
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span> if {${os.platform} eq "darwin" && ${os.major} <= ${legacysupport.newest_darwin_requires_legacy}} {
     # The legacy support PG will not actually change anything in this port directly,
     # since go doesn't use the standard CFLAGS/CXXFLAGS.
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/go/files/go-141-avx-fix.patch b/lang/go/files/go-141-avx-fix.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 0000000..8e4a05f
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/lang/go/files/go-141-avx-fix.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,98 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+go / go / 4d6efad6506ac40d3f6530d5e6f1a5a94431639c^! / .
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+commit     4d6efad6506ac40d3f6530d5e6f1a5a94431639c        [log] [tgz]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+author     Cherry Zhang <cherryyz@google.com>        Tue Feb 25 20:30:37 2020 -0500
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+committer  Cherry Zhang <cherryyz@google.com>        Wed Feb 26 19:59:07 2020 +0000
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+tree       54ba05f663696962a5f731a2cfba5acc92a1de6a
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+parent     99f8de733936785d0e5c0d1271539d3f2f26d009 [diff]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[release-branch.go1.14] runtime: guard VZEROUPPER on CPU feature
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+In CL 219131 we inserted a VZEROUPPER instruction on darwin/amd64.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The instruction is not available on pre-AVX machines. Guard it
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+with CPU feature.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Updates #37459.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Fixes #37478.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Change-Id: I9a064df277d091be4ee594eda5c7fd8ee323102b
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Reviewed-on: https://go-review.googlesource.com/c/go/+/221057
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Run-TryBot: Cherry Zhang <cherryyz@google.com>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+TryBot-Result: Gobot Gobot <gobot@golang.org>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Reviewed-by: Keith Randall <khr@golang.org>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+(cherry picked from commit c46ffdd2eca339918ed30b6ba9d4715ba769d35d)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git src/runtime/cpuflags.go src/runtime/cpuflags.go
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 94f9331..4bd894d 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/runtime/cpuflags.go
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/runtime/cpuflags.go
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -11,6 +11,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // Offsets into internal/cpu records for use in assembly.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ const (
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  offsetX86HasAVX  = unsafe.Offsetof(cpu.X86.HasAVX)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   offsetX86HasAVX2 = unsafe.Offsetof(cpu.X86.HasAVX2)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   offsetX86HasERMS = unsafe.Offsetof(cpu.X86.HasERMS)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   offsetX86HasSSE2 = unsafe.Offsetof(cpu.X86.HasSSE2)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git src/runtime/mkpreempt.go src/runtime/mkpreempt.go
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 31b6f5c..c26406e 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/runtime/mkpreempt.go
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/runtime/mkpreempt.go
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -244,15 +244,6 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   // TODO: MXCSR register?
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  // Apparently, the signal handling code path in darwin kernel leaves
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  // the upper bits of Y registers in a dirty state, which causes
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  // many SSE operations (128-bit and narrower) become much slower.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  // Clear the upper bits to get to a clean state. See issue #37174.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  // It is safe here as Go code don't use the upper bits of Y registers.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  p("#ifdef GOOS_darwin")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  p("VZEROUPPER")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  p("#endif")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   p("PUSHQ BP")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   p("MOVQ SP, BP")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   p("// Save flags before clobbering them")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -261,6 +252,18 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   p("ADJSP $%d", l.stack)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   p("// But vet doesn't know ADJSP, so suppress vet stack checking")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   p("NOP SP")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  // Apparently, the signal handling code path in darwin kernel leaves
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  // the upper bits of Y registers in a dirty state, which causes
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  // many SSE operations (128-bit and narrower) become much slower.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  // Clear the upper bits to get to a clean state. See issue #37174.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  // It is safe here as Go code don't use the upper bits of Y registers.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  p("#ifdef GOOS_darwin")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  p("CMPB internal∕cpu·X86+const_offsetX86HasAVX(SB), $0")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  p("JE 2(PC)")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  p("VZEROUPPER")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  p("#endif")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   l.save()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   p("CALL ·asyncPreempt2(SB)")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   l.restore()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git src/runtime/preempt_amd64.s src/runtime/preempt_amd64.s
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 0f2fd7d..4765e9f 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/runtime/preempt_amd64.s
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/runtime/preempt_amd64.s
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -4,9 +4,6 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include "textflag.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ TEXT ·asyncPreempt(SB),NOSPLIT|NOFRAME,$0-0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  #ifdef GOOS_darwin
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  VZEROUPPER
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  #endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   PUSHQ BP
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   MOVQ SP, BP
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   // Save flags before clobbering them
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -15,6 +12,11 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   ADJSP $368
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   // But vet doesn't know ADJSP, so suppress vet stack checking
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   NOP SP
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  #ifdef GOOS_darwin
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  CMPB internal∕cpu·X86+const_offsetX86HasAVX(SB), $0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  JE 2(PC)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  VZEROUPPER
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  #endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   MOVQ AX, 0(SP)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   MOVQ CX, 8(SP)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   MOVQ DX, 16(SP)
</span></pre><pre style='margin:0'>

</pre>