[LLVMdev] Limit loop vectorizer to SSE
Peter Newman
peter at uformia.com
Mon Nov 18 23:07:18 PST 2013
On 19/11/2013 5:57 PM, Peter Newman wrote:
> On 16/11/2013 7:58 AM, Nadav Rotem wrote:
>>
>> On Nov 15, 2013, at 12:36 PM, Renato Golin <renato.golin at linaro.org
>> <mailto:renato.golin at linaro.org>> wrote:
>>
>>> On 15 November 2013 20:24, Joshua Klontz <josh.klontz at gmail.com
>>> <mailto:josh.klontz at gmail.com>> wrote:
>>>
>>> Agreed, is there a pass that will insert a runtime alignment
>>> check? Also, what's the easiest way to get at
>>> TargetTransformInfo::getRegisterBitWidth() so I don't have to
>>> hard code 32? Thanks!
>>>
>>>
>>> I think that's a fair question, and it's about safety. If you're
>>> getting this on the JIT, means we may be generating unsafe
>>> transformations on the vectorizer.
>>>
>>> Arnold, Nadav, I don't remember seeing code to generate any run-time
>>> alignment checks on the incoming pointer, is there such a thing? If
>>> not, shouldn't we add one?
>>
>>
>> If the the vectorizer generates aligned memory accesses to unaligned
>> addresses then this is a serious bug. But I don't think that Josh
>> said that the vectorizer generated aligned accesses to unaligned
>> pointers.
> I've hit this (or a similar) bug, where generating SSE instructions
> for vector access was assuming stack memory would be aligned, if it
> was an aligned offset from the start of the allocation. But if the
> stack wasn't appropriately aligned when the function was called, the
> stack memory would be unaligned and cause an exception.
Actually, after reading the rest of the thread and the discussion of
what was occurring, it seems I was generating a function without
alignment specified, which via the "no alignment specified means align 0
which means ABI alignment" meant the generated code thought it was
aligned appropriately. Specifying an alignment fixed this (and causes
the generated code to manually ensure its alignment).
>>
>> There is no point in LLVM checking for alignment because if the
>> memory is unaligned then the program will crash. Users who want to
>> crash with a readable error message can simply write code that checks
>> the pointer (by masking the high bits and comparing to zero).
>>
>>
>
>
>
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20131119/b6b1012d/attachment.html>
More information about the llvm-dev
mailing list