From: Lynn Boger Date: Mon, 22 Oct 2018 20:02:43 +0000 (-0400) Subject: runtime: use unsigned load for iscgo variable in ppc64x runtime asm X-Git-Tag: go1.12beta1~671 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=e41fbc79ccfedc5bf4d07356c20de0731bd9cfd9;p=gostls13.git runtime: use unsigned load for iscgo variable in ppc64x runtime asm This changes the runtime asm code that loads iscgo to use MOVBZ instead of MOVB, avoiding an unnecessary sign extension. This is most significant in runtime.save_g, reducing the size from 8 to 7 instructions. Change-Id: Iaa2121464b5309e1f27fd91b19b5603c7aaf619d Reviewed-on: https://go-review.googlesource.com/c/144217 Run-TryBot: Lynn Boger TryBot-Result: Gobot Gobot Reviewed-by: David Chase --- diff --git a/src/runtime/asm_ppc64x.s b/src/runtime/asm_ppc64x.s index e77c717935..87076817f9 100644 --- a/src/runtime/asm_ppc64x.s +++ b/src/runtime/asm_ppc64x.s @@ -648,7 +648,7 @@ TEXT ·cgocallback_gofunc(SB),NOSPLIT,$16-32 NO_LOCAL_POINTERS // Load m and g from thread-local storage. - MOVB runtime·iscgo(SB), R3 + MOVBZ runtime·iscgo(SB), R3 CMP R3, $0 BEQ nocgo BL runtime·load_g(SB) diff --git a/src/runtime/sys_linux_ppc64x.s b/src/runtime/sys_linux_ppc64x.s index 5b5df50d41..bf01099830 100644 --- a/src/runtime/sys_linux_ppc64x.s +++ b/src/runtime/sys_linux_ppc64x.s @@ -301,7 +301,7 @@ TEXT runtime·_sigtramp(SB),NOSPLIT,$64 // this might be called in external code context, // where g is not set. - MOVB runtime·iscgo(SB), R6 + MOVBZ runtime·iscgo(SB), R6 CMP R6, $0 BEQ 2(PC) BL runtime·load_g(SB) diff --git a/src/runtime/tls_ppc64x.s b/src/runtime/tls_ppc64x.s index 82714853ee..c697449282 100644 --- a/src/runtime/tls_ppc64x.s +++ b/src/runtime/tls_ppc64x.s @@ -24,7 +24,7 @@ // NOTE: setg_gcc<> assume this clobbers only R31. TEXT runtime·save_g(SB),NOSPLIT|NOFRAME,$0-0 #ifndef GOOS_aix - MOVB runtime·iscgo(SB), R31 + MOVBZ runtime·iscgo(SB), R31 CMP R31, $0 BEQ nocgo #endif