[LLVMdev] Limit loop vectorizer to SSE
Peter Newman
peter at uformia.com
Mon Nov 18 22:57:44 PST 2013
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.
>
> 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).
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20131119/7aa6269f/attachment.html>
More information about the llvm-dev
mailing list