[OE-core] [PATCH 1/2] goarch.bbclass: Define HOST_GO386 and TARGET_GO386

Khem Raj raj.khem at gmail.com
Sat Oct 14 01:22:18 UTC 2017


On Fri, Oct 13, 2017 at 12:25 PM, Paul Barker <pbarker at toganlabs.com> wrote:
> These variables are used to control the floating-point instructions emitted by
> the go compiler for x86 architectures.
>
> The default is '387' which disables the use of sse/sse2 instructions and is safe
> to use on all x86 processors from the i486 onwards.
>
> If TUNE_FEATURES contains a feature set which is known to support sse/sse2
> instructions then they are set to 'sse2' to enable the use of these
> instructions. This is suitable for most processors from Pentium 4 onwards.
>
> Only the 'core2' and 'corei7' TUNE_FEATURES are defined in the oe-core layer and
> are known to support ss2 instructions. Other layers may introduce additional
> tunings which support sse2 instructions and for these layers, TARGET_GO386
> or go_map_386 should be overridden as needed.
>
> Signed-off-by: Paul Barker <pbarker at toganlabs.com>
> ---
>  meta/classes/goarch.bbclass | 11 +++++++++++
>  1 file changed, 11 insertions(+)
>
> diff --git a/meta/classes/goarch.bbclass b/meta/classes/goarch.bbclass
> index 659b26a..653f035 100644
> --- a/meta/classes/goarch.bbclass
> +++ b/meta/classes/goarch.bbclass
> @@ -4,10 +4,12 @@ BUILD_GOTUPLE = "${BUILD_GOOS}_${BUILD_GOARCH}"
>  HOST_GOOS = "${@go_map_os(d.getVar('HOST_OS'), d)}"
>  HOST_GOARCH = "${@go_map_arch(d.getVar('HOST_ARCH'), d)}"
>  HOST_GOARM = "${@go_map_arm(d.getVar('HOST_ARCH'), d.getVar('TUNE_FEATURES'), d)}"
> +HOST_GO386 = "${@go_map_386(d.getVar('HOST_ARCH'), d.getVar('TUNE_FEATURES'), d)}"
>  HOST_GOTUPLE = "${HOST_GOOS}_${HOST_GOARCH}"
>  TARGET_GOOS = "${@go_map_os(d.getVar('TARGET_OS'), d)}"
>  TARGET_GOARCH = "${@go_map_arch(d.getVar('TARGET_ARCH'), d)}"
>  TARGET_GOARM = "${@go_map_arm(d.getVar('TARGET_ARCH'), d.getVar('TUNE_FEATURES'), d)}"
> +TARGET_GO386 = "${@go_map_386(d.getVar('TARGET_ARCH'), d.getVar('TUNE_FEATURES'), d)}"
>  TARGET_GOTUPLE = "${TARGET_GOOS}_${TARGET_GOARCH}"
>  GO_BUILD_BINDIR = "${@['bin/${HOST_GOTUPLE}','bin'][d.getVar('BUILD_GOTUPLE') == d.getVar('HOST_GOTUPLE')]}"
>
> @@ -66,6 +68,15 @@ def go_map_arm(a, f, d):
>              return '5'
>      return ''
>
> +def go_map_386(a, f, d):
> +    import re
> +    if re.match('i.86', a):
> +        if ('core2' in f) or ('corei7' in f):
> +            return 'sse2'
> +        else:
> +            return '387'
> +    return ''
> +


This is too conservative IMO, e.g. anything above i586 is able to handle sse2
with this patch i686 will use x87 for FPU,

>  def go_map_os(o, d):
>      if o.startswith('linux'):
>          return 'linux'
> --
> 2.7.4
>
> --
> _______________________________________________
> Openembedded-core mailing list
> Openembedded-core at lists.openembedded.org
> http://lists.openembedded.org/mailman/listinfo/openembedded-core



More information about the Openembedded-core mailing list