Re: [go-nuts] How to build gollvm on arm platform

2019-10-25 Thread eric fang
> > The way that I had imagined this working was that either each > testpoint has a loop over the various supported ABI flavors (and checks > output for each flavor) > Yes, for those common test cases, I just did this. > or we have separate testpoints for each ABI > (e.g. TEST(BackendCABIOra

Re: [go-nuts] How to build gollvm on arm platform

2019-10-25 Thread 'Than McIntosh' via golang-nuts
Hi Eric, Yes, this is a problem that is pretty much guaranteed to happen given the way the C ABI works in LLVM. All of the test results in BackendCABIOracleTests.cpp are specific to the details of the amd64 ABI. The way that I had imagined this working was that either each testpoint has a loop o

Re: [go-nuts] How to build gollvm on arm platform

2019-10-24 Thread eric fang
Hi Than, I'm porting the unit test cases of x86 to arm64. As the difference between x86 abi and arm64 abi, for the same go code snippet, the generated llvm IRs maybe different. How do you get the correct IR result of a unit test? Such as unit test TEST(BackendCABIOracleTests, RecursiveCall1).

Re: [go-nuts] How to build gollvm on arm platform

2019-09-18 Thread 'Than McIntosh' via golang-nuts
Thanks for the update. BlockLIRBuilder sounds like the right way to go, and your plan to add unit tests SGTM. Agree that we'll need to thread through the arch/callingConv into the unit testing framework, let me know if I can help with that. Cheers, Than On Wed, Sep 18, 2019 at 3:46 AM eric f

Re: [go-nuts] How to build gollvm on arm platform

2019-09-18 Thread eric fang
Hi Than, I think here should be the right place to handle this case, and I have corrected the code. I should use BlockLIRBuilder instead of BinstructionLIRBuilder. I have implemented a prototype of the code and at present everything is normal. Next I will start writing some unit test cases. The

Re: [go-nuts] How to build gollvm on arm platform

2019-09-17 Thread eric fang
Hi Than, I got another question for you. For indirect parameters, arm-aapcs abi requires to do a copy of the parameter on stack, and then pass the address of the copied parameter to callee. I tried to do a memcpy of the indirect parameter in function Llvm_backend::genCallMarshallArgs, but fail

Re: [go-nuts] How to build gollvm on arm platform

2019-08-20 Thread eric fang
Hi Than, I got it, thanks for your detailed explanation. And I'm also thinking about how to write test cases, the cabi-testgen project would be a great help, I will keep you informed if there are other questions or updates, thank you. -- You received this message because you are subscribed to

Re: [go-nuts] How to build gollvm on arm platform

2019-08-20 Thread 'Than McIntosh' via golang-nuts
Sent https://go-review.googlesource.com/c/gollvm/+/190900 to improve comments. Thanks, Than On Tue, Aug 20, 2019 at 9:33 AM Than McIntosh wrote: > Hi Eric, > > Thanks for the note. Your question about the code in > CABIOracle::canPassDirectly, e.g . > > if (regsInt + regsSSE == 1) > retur

Re: [go-nuts] How to build gollvm on arm platform

2019-08-20 Thread 'Than McIntosh' via golang-nuts
Forgot to add: When I was writing the x86_64 ABI code for gollvm, I spent some time creating an ABI test harness to find problems in my code. You can find it at: https://github.com/thanm/cabi-testgen The overall idea is that it randomly generates a lot of parameter-passing code, then you can bui

Re: [go-nuts] How to build gollvm on arm platform

2019-08-20 Thread 'Than McIntosh' via golang-nuts
Hi Eric, Thanks for the note. Your question about the code in CABIOracle::canPassDirectly, e.g . if (regsInt + regsSSE == 1) return true; is a good one. I'll see about adding some comments to the code there. By way of explanation, the Gollvm code is modeled after the approach used in cla

Re: [go-nuts] How to build gollvm on arm platform

2019-08-20 Thread eric fang
Hi Than, I'm trying to implement the abi part for arm64, and got two questions for you: 1, function CABIOracle::canPassDirectly in gollvm/bridge/go-llvm-cabi-oracle.cpp, I'm not quite understand the first if statement: if (regsInt + regsSSE == 1) return true; Why not consider whether th

Re: [go-nuts] How to build gollvm on arm platform

2019-07-17 Thread 'Than McIntosh' via golang-nuts
Hi, These are both known failures at the moment -- The gccgo importer test was is sensitive to the version of gccgo being used (it runs gccgo on Go source code, and needs to test the gccgo version to see whether it is sufficiently new to support constructs like aliases). The test doesn't yet supp

Re: [go-nuts] How to build gollvm on arm platform

2019-07-17 Thread eric fang
Hi Than, Thanks for your help, "check-gollvm" is exactly what I'm looking for. But on x86-64, there are two test failures, as the log is very long, we just put some key info here. [152/189] Checking Go package go/internal/gccgoimporter FAILED: tools/gollvm/libgo/CMakeFiles/check_libgo_go_interna

Re: [go-nuts] How to build gollvm on arm platform

2019-07-15 Thread 'Than McIntosh' via golang-nuts
Hi, >> Currently I can build all unit test executable files by "% ninja GoBackendUnitTests", but in order to run all tests, I have to run the test executable files under all the directories. Do we have a single command to perform all unit tests? Such a target doesn't exist yet -- I agree that i

Re: [go-nuts] How to build gollvm on arm platform

2019-07-15 Thread eric fang
Hi, Another three questions about test and benchmark. 1, Currently I can build all unit test executable files by "% ninja GoBackendUnitTests", but in order to run all tests, I have to run the test executable files under all the directories. Do we have a single command to perform all unit test

Re: [go-nuts] How to build gollvm on arm platform

2019-07-09 Thread eric fang
Thank you for your answer, this makes sense. 在 2019年7月9日星期二 UTC+8下午9:15:52,Than McIntosh写道: > > Hi, > > This is a good question, and I think it points out that the name of this > command line flag ("-enable-gc") is not ideal. It should really be > something more like "-enable-precise-stack-scan=

Re: [go-nuts] How to build gollvm on arm platform

2019-07-09 Thread 'Than McIntosh' via golang-nuts
Hi, This is a good question, and I think it points out that the name of this command line flag ("-enable-gc") is not ideal. It should really be something more like "-enable-precise-stack-scan=". The garbage collector used by gollvm is substantially the same as the one used by the main Go compiler

Re: [go-nuts] How to build gollvm on arm platform

2019-07-09 Thread eric fang
Hi Than, when I read the code, I found enable_gc_ is false by default, the description of option "-enable-gc=" is "Enable stack map generation". I guess gollvm should have implemented garbage collection. My question are: 1, what kind of gc does gollvm currently implement, and what is the diffe

Re: [go-nuts] How to build gollvm on arm platform

2019-06-27 Thread eric fang
Hi Than, Thanks for your guide, this certainly helps. I don't have any specific questions at the moment. Thanks again. -- 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 em

Re: [go-nuts] How to build gollvm on arm platform

2019-06-27 Thread 'Than McIntosh' via golang-nuts
Hello, For cmake I'd recommend looking at the https://cmake.org/ documentation -- that should give you an overview. We're using cmake with Gollvm since it's the system used by LLVM. If you aren't familiar with building and testing LLVM, that's a good place to start reading, since gollvm is intend

Re: [go-nuts] How to build gollvm on arm platform

2019-06-25 Thread Ian Lance Taylor
On Tue, Jun 25, 2019 at 8:41 AM eric fang wrote: >> >> >>I'll write down a more specific list of tips and pointers to the code >> >>later today; stay tuned. > > > Hi Than, I'm also very interested in this work and look forward to your > update. > > I'm reading the gollvm code, but I haven't fig

Re: [go-nuts] How to build gollvm on arm platform

2019-06-25 Thread eric fang
> > >>I'll write down a more specific list of tips and pointers to the code > later today; stay tuned. > Hi Than, I'm also very interested in this work and look forward to your update. I'm reading the gollvm code, but I haven't figured out the relationship between the various modules (llvm,

Re: [go-nuts] How to build gollvm on arm platform

2018-12-11 Thread morefun . fang
Hi Than, I will start with CABIOracle as your suggestion. Thanks again. :) BR. -- 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...@googlegro

Re: [go-nuts] How to build gollvm on arm platform

2018-12-11 Thread 'Than McIntosh' via golang-nuts
Hi again, >>I am interested in contributing code to enable ARM port. I plan to spend some times on learning gofrontend firstly, then the bridge. That sounds great. I can certainly offer advice and help along the way. >>1, Is there any arch-specific code/IR in gofrontend? The frontend code (e.g

Re: [go-nuts] How to build gollvm on arm platform

2018-12-10 Thread morefun . fang
@Than, Thank you for your detailed answer. I am interested in contributing code to enable ARM port. I plan to spend some times on learning gofrontend firstly, then the bridge. What I want to learn about are 1, Is there any arch-specific code/IR in gofrontend? 2, What's the missing to support A

Re: [go-nuts] How to build gollvm on arm platform

2018-12-10 Thread 'Than McIntosh' via golang-nuts
Hello, As things stand, gollvm isn't usable for Arm (32 or 64); the cmake error you are hitting is intentional. The main obstacle for enabling Arm is enhancing the Gollvm bridge to support the Arm ABI, e.g. the rules for passing parameters (in memory vs register) depending on the signature of the

[go-nuts] How to build gollvm on arm platform

2018-12-10 Thread morefun . fang
I try to compile gollvm on arm platform according to https://go.googlesource.com/gollvm/, but error is reported as following CMake Error at tools/gollvm/cmake/modules/GoVars.cmake:12 (message): Arch aarch64 not yet supported https://go.googlesource.com/gollvm/ tells that Gollvm is currently