[LLVMdev] [NVPTX] llc -march=nvptx64 -mcpu=sm_20 generates invalid zero align for device function params

Dmitry N. Mikushin
Fri, 09 Nov 2012 13:17:51 -0000

Hi Duncan,

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 :-/

- D.

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
>> variables:
>>
>>    emitPTXAddressSpace(PTy->getAddressSpace(), O);
>>    if (GVar->getAlignment() == 0)
>>      O << " .align " << (int)
TD->getPrefTypeAlignment(ETy);
>>    else
>>      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
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev