>
> 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
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
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).
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
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
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
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
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
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
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
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
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
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
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
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
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=
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
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
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
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
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
>
> >>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,
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
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
@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
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
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
27 matches
Mail list logo