[Review]: Fix Integer Division Expansion special case of divide by 1
Aditya Nandakumar
aditya_nandakumar at apple.com
Mon Jul 6 11:17:58 PDT 2015
Ping?
Aditya
> On Jul 2, 2015, at 6:05 PM, Aditya Nandakumar <aditya_nandakumar at apple.com> wrote:
>
> http://reviews.llvm.org/D10904 <https://urldefense.proofpoint.com/v2/url?u=http-3A__reviews.llvm.org_D10904&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=5-RRC9r0s-Q0lLlak-uzCG7183zyd5M8H9E8g_P5zx8&s=scMfXxEAiLlqHvt3VJ2KrsEBzpaUsGBUGWFyUV6OZLs&e=>
>
> Added to phabricator.
>
> Aditya
>> On Jul 2, 2015, at 12:26 PM, Aditya Nandakumar <aditya_nandakumar at apple.com <mailto:aditya_nandakumar at apple.com>> wrote:
>>
>> Hi All
>>
>> I think the handling of special case of divide by 1 is incorrect in udivsi3.c (compiler-rt) and it’s equivalent in llvm/lib/Transforms/Utils/IntegerDivision.cpp
>>
>> I think we want to check if the clz(divisor) == (Num_word_bits - 1) rather than checking
>> (clz(divisor) - clz(dividend)) == (Num_word_bits - 1)
>>
>> I also think compiler-rt should be updated -
>> http://llvm.org/svn/llvm-project/compiler-rt/trunk/lib/builtins/udivsi3.c <https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_svn_llvm-2Dproject_compiler-2Drt_trunk_lib_builtins_udivsi3.c&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=pW4Q1JdZMBOl8hRJ5f7uP2klbSmXe6EUr3CajMv6lhQ&s=YhRty41MrEPazrXTJ1lTya7lpHm4bykiDBdAK8w2OtU&e=>
>>
>> sr = __builtin_clz(d) - __builtin_clz(n);
>> /* 0 <= sr <= n_uword_bits - 1 or sr large */
>> if (sr > n_uword_bits - 1) /* d > r */
>> return 0;
>> if (sr == n_uword_bits - 1) /* d == 1 */
>> return n;
>> The last line should be replaced with
>>
>> if ( __buildin_clz(d) == n_uword_bits - 1)
>> return n;
>>
>> I have attached the LLVM patch here for the same.
>> <DiffIntUnsignedDivision.patch>
>>
>> Thanks
>> Aditya
>> _______________________________________________
>> llvm-commits mailing list
>> llvm-commits at cs.uiuc.edu <mailto:llvm-commits at cs.uiuc.edu>
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20150706/d533f7f6/attachment.html>
More information about the llvm-commits
mailing list