Diff is fine. No need for the entire folder. Than
On Wed, Jan 6, 2021 at 10:18 AM Ivan Serdyuk <local.tourist.k...@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+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 > <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/CA%2BUr55HKkYiXR4MLF0C4xvDgfP2EBrF5J_8YgqABp2ViFYBSKg%40mail.gmail.com.