Closed casparvl closed 8 months ago
Thanks for the bug report! Can you share a minimal c++ input that fails?
I'd also be interested in the output of g++ -v [extra flags] failing_input.cpp
Thanks for the fast response. I'd love to provide a minimal c++ input, maybe you can help me create one since I'm unfamiliar with xsimd
... The call where it fails is this one. Can you give me a minimal piece of code that would trigger this dispatcher.apply(...)
call? I found https://xsimd.readthedocs.io/en/latest/api/dispatching.html but the code snippet there is not a fully contained example. I think the only thing it is lacking is to provide it with some actual data
object before calling float res = dispatched(data, 17)
, but wasn't sure what that data
object should be exactly... If you could help me with turning that into a fully contained example, I can try running it, and I'm giving it a 9/10 chance that will trigger the bug.
Regarding the -v
run: let's try that minimal example first, see if we can get rid of the complexity of all the related code. The -v
for that will probably be much cleaner.
This looks like the right reproducer: https://godbolt.org/z/E4KxKqcMP I'll investigate some more
Good thinking on using godbolt for this, that was much quicker than going back and forth with me trying out a compilation natively :) Thanks for investigating this and the quick fix!
Environment
12.1.1
Error I'm running into a build issue when compiling code that uses
xsimd
:The same code, with the same compiler flags / compiler version builds fine on Neoverse N1 (and on zen2, zen3, haswell and skylake by the way).
I've tried to dig into the code of
xsimd
a bit, but in the above error I'm in a bit over my head when it comes to all the types flying around :) Hoping that someone with more expertise inxsimd
spots where this might be going wrong... My bet is there was some change in terms of datatypes, intrinsics, or similar in Neoverse V1 that was not accounted for (yet) inxsimd
that makes this go wrong compared to e.g. Neoverse N1.Not sure if this might be useful, but to get an overview of the supported instructions on N1 vs V1, on Neoverse N1:
And for Neoverse V1:
N.B. Note that this none of these codes is mine: I'm just the guy having the pleasure of trying to build them on different hardware architectures :)