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+unsubscr...@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.

Reply via email to