Closed elliottslaughter closed 2 years ago
With this change I am also currently passing 98.5% of tests:
=================
= FAILING tests
=================
benchmark_dgemm.t
constanttypes.t
coverage3.t
dgemm3.t
gemm.t
multiterra.t
sgemm3.t
vecobj.t
=================
540 tests passed. 8 tests failed.
I have updated cconv_more.t
to include various array cases.
This fails on x86 with N
= 10. I'm going to skip this for now and commit the test with N
= 9, since x86 calling conv isn't in scope for this PR. However, this is something that needs to be looked at later.
But it passes on PPC64le up to N
= 22.
This PR includes substantial fixes to the PPC64le calling convention for passing structs. In particular, PPC64le now passes the
cconv.t
test, as well ascconv_more.t
(which is substantially upgraded in this PR).The test
cconv_more.t
has been upgraded to use metaprogramming, so that it's easier to extend and modify parameters. In particular the test covers:N
scalar arguments (whereN
can be as high as 22, though it defaults to 12 for speed in the CI) for typesint8
,int16
,int32
,int64
,float
,double
as well asT[2]
for all the above types.N
fields as a single argument.The test is also set to helpfully print out the failing LLVM bitcode (if any), which makes debugging immensely easier.
TODO:
cconv_more.t
tests for nested structs (if possible, may not be easy given current framework). Right now we have this throughcconv.t
but it would be good to be more comprehensive.cconv_more.t
tests for arrays (if possible, may not be easy given current framework). Right now we have this throughcconv.t
but it would be good to be more comprehensive.