[LLVMdev] [NVPTX] llc -march=nvptx64 -mcpu=sm_20 generates invalid zero align for device function params
Dmitry N. Mikushin
maemarcus at gmail.com
Fri Nov 9 05:17:51 PST 2012
You're right, global variables use preferred alignment. And - yes,
preferred alignment in this case is bigger: 8 instead of 4. NVIDIA's
prop. compiler gives 4. However, since CUDA 5.0 ptx modules are
linkable with each other, I think alignments for externally visible
functions and data should all follow ABI rules.
Is there a guide on making tests? I have ~5 pending patches never
accepted simply because I'm not familiar with LLVM test system :-/
2012/11/9 Duncan Sands <baldrick at free.fr>:
> Hi Dmitry,
>> I'm attaching a patch that should fix the issue mentioned above. It
>> simply makes the same check seen in the same file for global
>> emitPTXAddressSpace(PTy->getAddressSpace(), O);
>> if (GVar->getAlignment() == 0)
>> O << " .align " << (int) TD->getPrefTypeAlignment(ETy);
>> O << " .align " << GVar->getAlignment();
> it's not quite the same because your patch uses the ABI alignment, while
> in this snippet it is the preferred alignment (which is usually the same
> as the ABI alignment, but may be bigger).
>> Could you please review and commit? Do you think it needs a test case?
> Yes, it needs a testcase.
> Ciao, Duncan.
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu
More information about the llvm-dev