My current scenario assumes that I have compiled for x86 targets, to run
Clang on an x86 machine. What should be done if it is not assumed to
involve any other back-ends, during the build?


On Wed, Jan 6, 2021 at 10:27 PM Than McIntosh <th...@google.com> wrote:

> Right, that would be expected.   The easiest thing to do is make sure that
> you're running cmake in your build area with
>
>    -DLLVM_TARGETS_TO_BUILD="all"
>
> then you can build "llc" and "clang" , then update your path so that the
> freshly built llc/clang are picked up first. Once you have that set up, it
> should take care of the problem running "llc" from capture-fcn-attributes.
>
> Than
>
>
> On Wed, Jan 6, 2021 at 3:14 PM Ivan Serdyuk <local.tourist.k...@gmail.com>
> wrote:
>
>> I think a caught an error:
>>
>> $ ./capture-fcn-attributes
>>> llc run failed: llc: error: : error: unable to get target for
>>> 'aarch64-unknown-linux-gnu', see --version and --triple.
>>>
>>> capture-fcn-attributes: err = exit status 1
>>>
>>
>> . Hence that I didn't compile Aarch64 back-end, for LLVM:
>>
>> $ llc --version
>>> LLVM (http://llvm.org/):
>>>   LLVM version 12.0.0git
>>>   Optimized build.
>>>   Default target: i686-pc-linux-gnu
>>>   Host CPU: yonah
>>>
>>>   Registered Targets:
>>>     x86    - 32-bit X86: Pentium-Pro and above
>>>     x86-64 - 64-bit X86: EM64T and AMD64
>>>
>> . So this would not run out-of-the-box.
>>
>>
>>
>> On Wed, Jan 6, 2021 at 8:21 PM Than McIntosh <th...@google.com> wrote:
>>
>>> Thanks. The error you're seeing
>>>
>>>   "unable to determine target CPU features for target i686-pc-linux-gnu"
>>>
>>> looks as though it's because i686-pc-linux-gnu isn't listed as a target
>>> in
>>> driver/ArchCpusAttrs.h.
>>>
>>> From the root of your repo, try
>>>
>>>   $ cd tools
>>>   $ go build capture-fcn-attributes.go
>>>   $ ./capture-fcn-attributes -o ../driver/ArchCpusAttrs.h
>>>
>>> and then give the gollvm build another try.
>>>
>>> Thanks, Than
>>>
>>> On Wed, Jan 6, 2021 at 12:53 PM Ivan Serdyuk <
>>> local.tourist.k...@gmail.com> wrote:
>>>
>>>> Here you go:
>>>>
>>>> ~/Desktop/workarea/llvm-project/llvm/tools/gollvm$ git diff
>>>> diff --git a/cmake/modules/AutoGenGo.cmake
>>>> b/cmake/modules/AutoGenGo.cmake
>>>> index 3e3ab83..097a2ad 100644
>>>> --- a/cmake/modules/AutoGenGo.cmake
>>>> +++ b/cmake/modules/AutoGenGo.cmake
>>>> @@ -51,6 +51,17 @@ function(mkversion goos goarch outfile bindir
>>>> srcroot scriptroot)
>>>>      set(pcquantum "1")
>>>>      set(int64align "8")
>>>>      set(minframesize 0)
>>>> +  elseif( ${goarch} STREQUAL "386")
>>>> +    # Simply picking up one typical setting
>>>> +    # Align with current sets in gofrontend/libgo/goarch.sh
>>>> +    set(archfamily "I386")
>>>> +    set(bigendian "false")
>>>> +    set(cachelinesize "64")
>>>> +    set(physpagesize "4096")
>>>> +    set(pcquantum "1")
>>>> +    set(int64align "4")
>>>> +    set(minframesize 4)
>>>> +    set(ptrsize 4)
>>>>    elseif( ${goarch} STREQUAL "arm64")
>>>>      # Simply picking up one typical setting
>>>>      # Align with current sets in gofrontend/libgo/goarch.sh
>>>> diff --git a/cmake/modules/GoVars.cmake b/cmake/modules/GoVars.cmake
>>>> index ec6f6b2..0cea38a 100644
>>>> --- a/cmake/modules/GoVars.cmake
>>>> +++ b/cmake/modules/GoVars.cmake
>>>> @@ -8,6 +8,9 @@ list(GET lht_components 2 goos)
>>>>  # LLVM's "x86_64" is the same as Go's "amd64".
>>>>  if( ${llarch} STREQUAL "x86_64" )
>>>>    set(goarch "amd64")
>>>> +# For i386/i686
>>>> +elseif( ${llarch} STREQUAL "i686" )
>>>> +  set(goarch "386")
>>>>  # LLVM's "aarch64" is the same as Go's "arm64".
>>>>  elseif( ${llarch} STREQUAL "aarch64" )
>>>>    set(goarch "arm64")
>>>> @@ -23,6 +26,10 @@ set(allgoos "aix" "android" "darwin" "dragonfly"
>>>> "freebsd" "irix" "linux" "netbs
>>>>  # Set library suffix based on target triple
>>>>  if( ${llarch} STREQUAL "x86_64" )
>>>>    set(library_suffix "64")
>>>> +elseif( ${llarch} STREQUAL "i686" )
>>>> +# Driver::installedLibDir honors ./lib only, on Ubuntu 16
>>>> +# But we can stick for ./lib32 (along with those in AddGollvm.cmake)
>>>> +  set(library_suffix "32")
>>>>  elseif( ${llarch} STREQUAL "aarch64" )
>>>>  # Driver::installedLibDir honors ./lib64 only
>>>>  # Future change needed (along with those in AddGollvm.cmake)
>>>> diff --git a/cmake/modules/LibbacktraceUtils.cmake
>>>> b/cmake/modules/LibbacktraceUtils.cmake
>>>> index dc54f18..42287a9 100644
>>>> --- a/cmake/modules/LibbacktraceUtils.cmake
>>>> +++ b/cmake/modules/LibbacktraceUtils.cmake
>>>> @@ -8,6 +8,9 @@ function(setup_libbacktrace)
>>>>    if( ${goarch} STREQUAL "amd64")
>>>>      set(BACKTRACE_ELF_SIZE 64)
>>>>      set(HAVE_GETIPINFO 1)
>>>> +  elseif( ${goarch} STREQUAL "386")
>>>> +    set(BACKTRACE_ELF_SIZE 32)
>>>> +    set(HAVE_GETIPINFO 1)
>>>>    elseif( ${goarch} STREQUAL "arm64")
>>>>      set(BACKTRACE_ELF_SIZE 64)
>>>>      set(HAVE_GETIPINFO 1)
>>>> diff --git a/cmake/modules/LibffiUtils.cmake
>>>> b/cmake/modules/LibffiUtils.cmake
>>>> index b3fa697..fb34c36 100644
>>>> --- a/cmake/modules/LibffiUtils.cmake
>>>> --- a/cmake/modules/LibffiUtils.cmake
>>>> +++ b/cmake/modules/LibffiUtils.cmake
>>>> @@ -9,6 +9,8 @@ function(setup_libffi libffi_srcroot)
>>>>      set(arch_dir "aarch64")
>>>>    elseif(${llarch} STREQUAL "x86_64")
>>>>      set(arch_dir "x86")
>>>> +  elseif(${llarch} STREQUAL "i686")
>>>> +    set(arch_dir "x86")
>>>>    else()
>>>>      message(SEND_ERROR "Arch ${llarch} not yet supported")
>>>>    endif()
>>>> diff --git a/driver/Driver.cpp b/driver/Driver.cpp
>>>> index 8debbab..aa83fb1 100644
>>>> --- a/driver/Driver.cpp
>>>> +++ b/driver/Driver.cpp
>>>> @@ -76,7 +76,7 @@ std::string Driver::installedLibDir()
>>>>        llvm::sys::path::append(ldir, "../lib64");
>>>>        break;
>>>>      default:
>>>> -      llvm::sys::path::append(ldir, "../lib64");
>>>> +      llvm::sys::path::append(ldir, "../lib");
>>>>        break;
>>>>    }
>>>> :
>>>> --- a/cmake/modules/LibffiUtils.cmake
>>>> +++ b/cmake/modules/LibffiUtils.cmake
>>>> @@ -9,6 +9,8 @@ function(setup_libffi libffi_srcroot)
>>>>      set(arch_dir "aarch64")
>>>>    elseif(${llarch} STREQUAL "x86_64")
>>>>      set(arch_dir "x86")
>>>> +  elseif(${llarch} STREQUAL "i686")
>>>> +    set(arch_dir "x86")
>>>>    else()
>>>>      message(SEND_ERROR "Arch ${llarch} not yet supported")
>>>>    endif()
>>>> diff --git a/driver/Driver.cpp b/driver/Driver.cpp
>>>> index 8debbab..aa83fb1 100644
>>>> --- a/driver/Driver.cpp
>>>> +++ b/driver/Driver.cpp
>>>> @@ -76,7 +76,7 @@ std::string Driver::installedLibDir()
>>>>        llvm::sys::path::append(ldir, "../lib64");
>>>>        break;
>>>>      default:
>>>> -      llvm::sys::path::append(ldir, "../lib64");
>>>> +      llvm::sys::path::append(ldir, "../lib");
>>>>        break;
>>>>    }
>>>>    return std::string(ldir.str());
>>>>
>>>> and
>>>>
>>>> $ git log -1
>>>> commit 850255c5cd7f9df79a148d537fd395089b7caf29 (HEAD -> master,
>>>> origin/master, origin/HEAD)
>>>> Author: Ivan Serdyuk <local.tourist.k...@gmail.com>
>>>> Date:   Fri Dec 4 17:14:00 2020 +0200
>>>>
>>>>     gollvm: Updating README.md, to elevate the min. required version of
>>>> Clang compiler
>>>>
>>>>     Too many issues with Clang 9 - so let's assume Clang 10+
>>>>
>>>>     Change-Id: Icf1a74148878b07fd941e5d525ac7e0c7f6bfdaf
>>>>     Reviewed-on: https://go-review.googlesource.com/c/gollvm/+/275473
>>>>     Reviewed-by: Than McIntosh <th...@google.com>
>>>>     Trust: Ian Lance Taylor <i...@golang.org>
>>>>
>>>> On Wednesday, January 6, 2021 at 5:34:17 PM UTC+2 th...@google.com
>>>> wrote:
>>>>
>>>>> Diff is fine. No need for the entire folder.
>>>>> Than
>>>>>
>>>>>
>>>>> On Wed, Jan 6, 2021 at 10:18 AM Ivan Serdyuk <local.tou...@gmail.com>
>>>>> wrote:
>>>>>
>>>>>> Than,
>>>>>> I could perform "git diff" and provide the generated file.
>>>>>> I could also compress & share the build folder.
>>>>>> What else would be required?
>>>>>>
>>>>>> Ivan
>>>>>>
>>>>>> On Wednesday, January 6, 2021 at 5:07:06 PM UTC+2 th...@google.com
>>>>>> wrote:
>>>>>>
>>>>>>>
>>>>>>> It would be helpful if you could put up a CL that includes all of
>>>>>>> the changes you're testing -- at this point do you have any 
>>>>>>> modifications
>>>>>>> to driver/ArchCpusAttrs.h ?
>>>>>>>
>>>>>>> Thanks
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> On Wed, Jan 6, 2021 at 10:00 AM Ivan Serdyuk <local.tou...@gmail.com>
>>>>>>> wrote:
>>>>>>>
>>>>>>>> Ping
>>>>>>>>
>>>>>>>> On Friday, January 1, 2021 at 5:45:02 AM UTC+2 Ivan Serdyuk wrote:
>>>>>>>>
>>>>>>>>> Happy New Year, Than.
>>>>>>>>>
>>>>>>>>> So I have rebuilt llvm-goc, after applying
>>>>>>>>> https://go-review.googlesource.com/c/gollvm/+/270219.
>>>>>>>>> Here
>>>>>>>>> <https://drive.google.com/file/d/1qDSKwKORZjH824gVeSXUknVm0rpKZ9j-/view?usp=sharing>
>>>>>>>>> is my compressed build folder.
>>>>>>>>>
>>>>>>>>> I am using
>>>>>>>>> $ clang --version
>>>>>>>>> clang version 12.0.0
>>>>>>>>> Target: i686-pc-linux-gnu
>>>>>>>>> Thread model: posix
>>>>>>>>> on
>>>>>>>>> $ uname -a
>>>>>>>>> Linux oceanfish81-A8He 4.15.0-129-generic #132-Ubuntu SMP Thu Dec
>>>>>>>>> 10 14:07:35 UTC 2020 i686 i686 i686 GNU/Linux
>>>>>>>>>
>>>>>>>>> You can obtain a pre-compiler "MinSizeRel" build of LLVM
>>>>>>>>> (including Clang) here
>>>>>>>>> <https://drive.google.com/file/d/1c7wredQbaX4p20Ee15WnY3SblbjiQHMD/view?usp=sharing>
>>>>>>>>> .
>>>>>>>>>
>>>>>>>>> I tried to build an avarage libgo package - and here is what I got:
>>>>>>>>>
>>>>>>>>> $ ninja libgo_golang.org_x_crypto_chacha20
>>>>>>>>> [1/120] Building Go package 'unicode' (non-PIC)
>>>>>>>>> FAILED: tools/gollvm/libgo/unicode.o
>>>>>>>>> cd /home/oceanfish81/Desktop/workarea/release/tools/gollvm/libgo
>>>>>>>>> && /usr/local/bin/cmake -E make_directory ./. &&
>>>>>>>>> /home/oceanfish81/Desktop/workarea/release/./bin/llvm-goc -c -o
>>>>>>>>> /home/oceanfish81/Desktop/workarea/release/tools/gollvm/libgo/./unicode.o
>>>>>>>>> -fgo-pkgpath=unicode -I .
>>>>>>>>> /home/oceanfish81/Desktop/workarea/llvm-project/llvm/tools/gollvm/gofrontend/libgo/go/unicode/casetables.go
>>>>>>>>> /home/oceanfish81/Desktop/workarea/llvm-project/llvm/tools/gollvm/gofrontend/libgo/go/unicode/digit.go
>>>>>>>>> /home/oceanfish81/Desktop/workarea/llvm-project/llvm/tools/gollvm/gofrontend/libgo/go/unicode/graphic.go
>>>>>>>>> /home/oceanfish81/Desktop/workarea/llvm-project/llvm/tools/gollvm/gofrontend/libgo/go/unicode/letter.go
>>>>>>>>> /home/oceanfish81/Desktop/workarea/llvm-project/llvm/tools/gollvm/gofrontend/libgo/go/unicode/tables.go
>>>>>>>>> currently Gollvm is not supported on architecture i686
>>>>>>>>> /home/oceanfish81/Desktop/workarea/release/./bin/llvm-goc: *unable
>>>>>>>>> to determine target CPU features for target i686-pc-linux-gnu*
>>>>>>>>> [2/120] Building Go package 'internal/unsafeheader' (PIC)
>>>>>>>>> FAILED: tools/gollvm/libgo/internal/.pic/unsafeheader.o
>>>>>>>>> cd /home/oceanfish81/Desktop/workarea/release/tools/gollvm/libgo
>>>>>>>>> && /usr/local/bin/cmake -E make_directory ./internal/.pic &&
>>>>>>>>> /home/oceanfish81/Desktop/workarea/release/./bin/llvm-goc -c -o
>>>>>>>>> /home/oceanfish81/Desktop/workarea/release/tools/gollvm/libgo/internal/.pic/unsafeheader.o
>>>>>>>>> -fPIC -fgo-pkgpath=internal/unsafeheader -I .
>>>>>>>>> /home/oceanfish81/Desktop/workarea/llvm-project/llvm/tools/gollvm/gofrontend/libgo/go/internal/unsafeheader/unsafeheader.go
>>>>>>>>> currently Gollvm is not supported on architecture i686
>>>>>>>>> /home/oceanfish81/Desktop/workarea/release/./bin/llvm-goc: *unable
>>>>>>>>> to determine target CPU features for target i686-pc-linux-gnu*
>>>>>>>>> ninja: build stopped: subcommand failed.
>>>>>>>>>
>>>>>>>>> Ivan
>>>>>>>>> On Tuesday, December 8, 2020 at 3:30:05 PM UTC+2 th...@google.com
>>>>>>>>> wrote:
>>>>>>>>>
>>>>>>>>>> Hello,
>>>>>>>>>>
>>>>>>>>>> Thanks for the note.
>>>>>>>>>>
>>>>>>>>>> I am still not completely sure what the problem is.
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> You wrote:
>>>>>>>>>>
>>>>>>>>>>  | I found
>>>>>>>>>>  |
>>>>>>>>>>  | // triple: i686-pc-linux-gnu
>>>>>>>>>>  | static const CpuAttrs attrs1[] = {
>>>>>>>>>>  | // first entry is default cpu
>>>>>>>>>>  | { "i686", "+cx8,+x87"},
>>>>>>>>>>  |
>>>>>>>>>>  | and (inside the hashmap)
>>>>>>>>>>  |
>>>>>>>>>>  | { "yonah", "+cx8,+fxsr,+mmx,+sse,+sse2,+sse3,+x87"},
>>>>>>>>>>  | , which is not what I have supported (for Intel Celeron M440).
>>>>>>>>>>
>>>>>>>>>> What makes you say that this is not what you have supported? Are
>>>>>>>>>> you
>>>>>>>>>> saying that the cpu clang calls "yonah" doesn't actually have one
>>>>>>>>>> of these
>>>>>>>>>> features (ex: sse3)?
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>  | Clang reports "unsupported CPU features" on any non-provided
>>>>>>>>>> one.
>>>>>>>>>>  | So that is one big problem.
>>>>>>>>>>
>>>>>>>>>> Not sure what you mean here. Can you please post the complete
>>>>>>>>>> clang invocation and error message you are getting?
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>  | const TripleCpus triples[] = {
>>>>>>>>>>  | { "x86_64-unknown-linux-gnu", &attrs0[0] },
>>>>>>>>>>  | { "i686-pc-linux-gnu", &attrs1[0] },
>>>>>>>>>>  | { "aarch64-unknown-linux-gnu", &attrs2[0] },
>>>>>>>>>>  | { "", nullptr } // sentinel
>>>>>>>>>>  | };
>>>>>>>>>>  | is not targeting to yonah, while llc is targeting it.
>>>>>>>>>>  | It is always some "default" CPU model and, in fact, your code
>>>>>>>>>> never provided extraction of the CPU model (from llc).
>>>>>>>>>>  |
>>>>>>>>>>
>>>>>>>>>> When llc emits the line
>>>>>>>>>>
>>>>>>>>>>   Host CPU: yonah
>>>>>>>>>>
>>>>>>>>>> this does not mean that clang/llc will automatically target
>>>>>>>>>> 'yonah' when compiling, it just means that the program has detected 
>>>>>>>>>> the
>>>>>>>>>> host CPU.
>>>>>>>>>>
>>>>>>>>>> Generally speaking if you want clang to produce code targeted
>>>>>>>>>> specifically to the host CPU, you have to use -march=native or
>>>>>>>>>> -mtune-native.
>>>>>>>>>>
>>>>>>>>>> Thanks, Than
>>>>>>>>>>
>>>>>>>>>> On Fri, Dec 4, 2020 at 8:08 PM Ivan Serdyuk <
>>>>>>>>>> local.tou...@gmail.com> wrote:
>>>>>>>>>>
>>>>>>>>>>> Hello.
>>>>>>>>>>>
>>>>>>>>>>> This issue is related to
>>>>>>>>>>> https://go-review.googlesource.com/c/gollvm/+/274574
>>>>>>>>>>> .
>>>>>>>>>>>
>>>>>>>>>>> I think I have some misunderstanding on how you used to deal
>>>>>>>>>>> with CPU models, for LLVM.
>>>>>>>>>>>
>>>>>>>>>>> First things first - I had success with using
>>>>>>>>>>>
>>>>>>>>>>> #include "llvm/ADT/StringRef.h"
>>>>>>>>>>> #include "llvm/ADT/StringMap.h"
>>>>>>>>>>> #include "llvm/MC/SubtargetFeature.h"
>>>>>>>>>>> #include "llvm/Support/Host.h"
>>>>>>>>>>>
>>>>>>>>>>> using namespace llvm;
>>>>>>>>>>> SubtargetFeatures Features1;
>>>>>>>>>>>
>>>>>>>>>>> int main (int argc, char **argv)
>>>>>>>>>>> {
>>>>>>>>>>> sys::getHostCPUName();
>>>>>>>>>>> StringMap HostFeatures;
>>>>>>>>>>> if (sys::getHostCPUFeatures(HostFeatures))
>>>>>>>>>>> for (auto &F : HostFeatures)
>>>>>>>>>>> Features1.AddFeature(F.first(), F.second);
>>>>>>>>>>>
>>>>>>>>>>> printf("test %s", Features1.getString().c_str());
>>>>>>>>>>> printf("\nsomething else\n");
>>>>>>>>>>> return 0;
>>>>>>>>>>> }
>>>>>>>>>>> . It gives me such a set of CPU features:
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> +sse2,-tsxldtrk,-cx16,-sahf,-tbm,-avx512ifma,-sha,-gfni,-fma4,-vpclmulqdq,-prfchw,-bmi2,-cldemote,-fsgsbase,-ptwrite,-amx-tile,-avx512bf16,-popcnt,-aes,-avx512bitalg,-movdiri,-xsaves,-avx512er,-xsavec,-avx512vnni,-amx-bf16,-avx512vpopcntdq,-pconfig,-clwb,-avx512f,-clzero,-pku,+mmx,-lwp,-rdpid,-xop,-rdseed,-waitpkg,-movdir64b,-sse4a,-avx512bw,-clflushopt,-xsave,-avx512vbmi2,-64bit,-avx512vl,-serialize,-invpcid,-avx512cd,-avx,-vaes,+cx8,-fma,-rtm,-bmi,-enqcmd,-rdrnd,-mwaitx,-sse4.1,-sse4.2,-avx2,+fxsr,-wbnoinvd,+sse,-lzcnt,-pclmul,-prefetchwt1,-f16c,-ssse3,-sgx,-shstk,+cmov,-avx512vbmi,-amx-int8,-movbe,-avx512vp2intersect,-xsaveopt,-avx512dq,-adx,-avx512pf,+sse3
>>>>>>>>>>>
>>>>>>>>>>> $ llc --version
>>>>>>>>>>> provides
>>>>>>>>>>> Default target: i686-pc-linux-gnu
>>>>>>>>>>> Host CPU: yonah
>>>>>>>>>>> .
>>>>>>>>>>>
>>>>>>>>>>> I tried to update the capture-fcn-attributes.go file, like this:
>>>>>>>>>>>
>>>>>>>>>>> var supportedTriples []string = []string{
>>>>>>>>>>> "x86_64-unknown-linux-gnu",
>>>>>>>>>>> "i686-pc-linux-gnu",
>>>>>>>>>>> "aarch64-unknown-linux-gnu",
>>>>>>>>>>> }
>>>>>>>>>>> .
>>>>>>>>>>>
>>>>>>>>>>> When I tried the generator
>>>>>>>>>>>
>>>>>>>>>>> capture-fcn-attributes -o /tmp/cpu_feature_list
>>>>>>>>>>> it generated me a broad list.
>>>>>>>>>>> The header contained
>>>>>>>>>>>
>>>>>>>>>>> Ubuntu clang version 11.0.0-++20200721055954+cebd637c886-1exp1
>>>>>>>>>>> 20200721161335.13
>>>>>>>>>>> .
>>>>>>>>>>> I found
>>>>>>>>>>>
>>>>>>>>>>> // triple: i686-pc-linux-gnu
>>>>>>>>>>> static const CpuAttrs attrs1[] = {
>>>>>>>>>>> // first entry is default cpu
>>>>>>>>>>> { "i686", "+cx8,+x87"},
>>>>>>>>>>>
>>>>>>>>>>> and (inside the hashmap)
>>>>>>>>>>>
>>>>>>>>>>> { "yonah", "+cx8,+fxsr,+mmx,+sse,+sse2,+sse3,+x87"},
>>>>>>>>>>> , which is not what I have supported (for Intel Celeron M440).
>>>>>>>>>>> Clang reports "unsupported CPU features" on any non-provided one.
>>>>>>>>>>> So that is one big problem.
>>>>>>>>>>> Next problem is that
>>>>>>>>>>>
>>>>>>>>>>> const TripleCpus triples[] = {
>>>>>>>>>>> { "x86_64-unknown-linux-gnu", &attrs0[0] },
>>>>>>>>>>> { "i686-pc-linux-gnu", &attrs1[0] },
>>>>>>>>>>> { "aarch64-unknown-linux-gnu", &attrs2[0] },
>>>>>>>>>>> { "", nullptr } // sentinel
>>>>>>>>>>> };
>>>>>>>>>>> is not targeting to yonah, while llc is targeting it.
>>>>>>>>>>> It is always some "default" CPU model and, in fact, your code
>>>>>>>>>>> never provided extraction of the CPU model (from llc).
>>>>>>>>>>>
>>>>>>>>>>> To make my observation complete - I am providing what is
>>>>>>>>>>> generated via
>>>>>>>>>>>
>>>>>>>>>>> capture-fcn-attributes -cpu yonah
>>>>>>>>>>> :
>>>>>>>>>>>
>>>>>>>>>>> // triple: x86_64-unknown-linux-gnu
>>>>>>>>>>> static const CpuAttrs attrs0[] = {
>>>>>>>>>>> // first entry is default cpu
>>>>>>>>>>> { "x86-64", "+cx8,+fxsr,+mmx,+sse,+sse2,+x87"},
>>>>>>>>>>> { "", "" } // sentinel
>>>>>>>>>>> };
>>>>>>>>>>>
>>>>>>>>>>> // triple: i686-pc-linux-gnu
>>>>>>>>>>> static const CpuAttrs attrs1[] = {
>>>>>>>>>>> // first entry is default cpu
>>>>>>>>>>> { "i686", "+cx8,+x87"},
>>>>>>>>>>> { "yonah", "+cx8,+fxsr,+mmx,+sse,+sse2,+sse3,+x87"},
>>>>>>>>>>> { "", "" } // sentinel
>>>>>>>>>>> };
>>>>>>>>>>>
>>>>>>>>>>> // triple: aarch64-unknown-linux-gnu
>>>>>>>>>>> static const CpuAttrs attrs2[] = {
>>>>>>>>>>> // first entry is default cpu
>>>>>>>>>>> { "generic", "+neon"},
>>>>>>>>>>> { "", "" } // sentinel
>>>>>>>>>>> };
>>>>>>>>>>>
>>>>>>>>>>> const TripleCpus triples[] = {
>>>>>>>>>>> { "x86_64-unknown-linux-gnu", &attrs0[0] },
>>>>>>>>>>> { "i686-pc-linux-gnu", &attrs1[0] },
>>>>>>>>>>> { "aarch64-unknown-linux-gnu", &attrs2[0] },
>>>>>>>>>>> { "", nullptr } // sentinel
>>>>>>>>>>> };
>>>>>>>>>>> .
>>>>>>>>>>>
>>>>>>>>>>> I tried
>>>>>>>>>>>
>>>>>>>>>>> capture-fcn-attributes -cpu yonah -triples i686-pc-linux-gnu
>>>>>>>>>>> and got
>>>>>>>>>>>
>>>>>>>>>>> // triple: i686-pc-linux-gnu
>>>>>>>>>>> static const CpuAttrs attrs0[] = {
>>>>>>>>>>> // first entry is default cpu
>>>>>>>>>>> { "i686", "+cx8,+x87"},
>>>>>>>>>>> { "yonah", "+cx8,+fxsr,+mmx,+sse,+sse2,+sse3,+x87"},
>>>>>>>>>>> { "", "" } // sentinel
>>>>>>>>>>> };
>>>>>>>>>>>
>>>>>>>>>>> const TripleCpus triples[] = {
>>>>>>>>>>> { "i686-pc-linux-gnu", &attrs0[0] },
>>>>>>>>>>> { "", nullptr } // sentinel
>>>>>>>>>>> };
>>>>>>>>>>> .
>>>>>>>>>>>
>>>>>>>>>>> I understand that your strategy worked find on Intel based
>>>>>>>>>>> system-on-board machines - but didn't try something for AMD (yet).
>>>>>>>>>>> Nevertheless I have these issues on i686 - so I am proposing to
>>>>>>>>>>> perform a review.
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> Ivan
>>>>>>>>>>>
>>>>>>>>>>> --
>>>>>>>>>>> You received this message because you are subscribed to the
>>>>>>>>>>> Google Groups "golang-nuts" group.
>>>>>>>>>>> To unsubscribe from this group and stop receiving emails from
>>>>>>>>>>> it, send an email to golang-nuts...@googlegroups.com.
>>>>>>>>>>> To view this discussion on the web visit
>>>>>>>>>>> https://groups.google.com/d/msgid/golang-nuts/aac8c576-9763-4bba-96a1-51f545084630n%40googlegroups.com
>>>>>>>>>>> <https://groups.google.com/d/msgid/golang-nuts/aac8c576-9763-4bba-96a1-51f545084630n%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>>>>>>>>> .
>>>>>>>>>>>
>>>>>>>>>> --
>>>>>>>> You received this message because you are subscribed to the Google
>>>>>>>> Groups "golang-nuts" group.
>>>>>>>> To unsubscribe from this group and stop receiving emails from it,
>>>>>>>> send an email to golang-nuts...@googlegroups.com.
>>>>>>>>
>>>>>>> To view this discussion on the web visit
>>>>>>>> https://groups.google.com/d/msgid/golang-nuts/cc763125-04fe-4a8d-9940-625c0f25cc50n%40googlegroups.com
>>>>>>>> <https://groups.google.com/d/msgid/golang-nuts/cc763125-04fe-4a8d-9940-625c0f25cc50n%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>>>>>> .
>>>>>>>>
>>>>>>> --
>>>>>> You received this message because you are subscribed to the Google
>>>>>> Groups "golang-nuts" group.
>>>>>> To unsubscribe from this group and stop receiving emails from it,
>>>>>> send an email to golang-nuts...@googlegroups.com.
>>>>>>
>>>>> To view this discussion on the web visit
>>>>>> https://groups.google.com/d/msgid/golang-nuts/67c15826-5ed2-40ca-b284-6ff471fb6584n%40googlegroups.com
>>>>>> <https://groups.google.com/d/msgid/golang-nuts/67c15826-5ed2-40ca-b284-6ff471fb6584n%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>>>> .
>>>>>>
>>>>> --
>>>> You received this message because you are subscribed to the Google
>>>> Groups "golang-nuts" group.
>>>> To unsubscribe from this group and stop receiving emails from it, send
>>>> an email to golang-nuts+unsubscr...@googlegroups.com.
>>>> To view this discussion on the web visit
>>>> https://groups.google.com/d/msgid/golang-nuts/399b00c6-8a6c-46aa-8397-b7d01cd85e44n%40googlegroups.com
>>>> <https://groups.google.com/d/msgid/golang-nuts/399b00c6-8a6c-46aa-8397-b7d01cd85e44n%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>> .
>>>>
>>>

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/golang-nuts/CANFCsz8b4RpzCaoV2ao%3DfvQ_MtjuPxTVq8DFai2hUgmebHXuGA%40mail.gmail.com.

Reply via email to