[llvm-dev] arbitrary bit number

Anastasiya Ruzhanskaya via llvm-dev llvm-dev at lists.llvm.org
Fri Jul 28 08:08:12 PDT 2017


Hi,
thank you for the answer, great that this is possible, I will try to come
up with some solution.

2017-07-28 14:58 GMT+02:00 Michael Zolotukhin <mzolotukhin at apple.com>:

> Hi,
>
> LLVM allows to work with arbitrary bit sizes (see
> https://llvm.org/docs/LangRef.html#integer-type), but please bear in mind
> that working with unusual sizes might expose bugs, as the corresponding
> code paths are less tested.
>
> Answering your specific question: yes, it’s definitely possible, however
> you need to define how to add 3-bit operand to 5-bit operand in terms of
> operations supported by LLVM. One way is to, for instance, zero-extend both
> operands to 6-bits and then add:
>
> define i6 @foo(i5 %a, i3 %b) {
> entry:
>   %a_zext = zext i5 %a to i6
>   %b_zext = zext i3 %b to i6
>   %c = add i6 %a_zext, %b_zext
>   ret i6 %c
> }
>
> Thanks,
> Michael
>
> On Jul 28, 2017, at 1:32 PM, Anastasiya Ruzhanskaya via llvm-dev <
> llvm-dev at lists.llvm.org> wrote:
>
> Hello,
> I wanted to ask one general question ( for now it is hard to check it
> manually, maybe there is a fast answer):
> can I construct an operation, say, addition, from operand_0 - 5 bits size
> and operand_1 - 3 bit size -> receive result as 6 bit size . I am basically
> reducing these sizes in the whole IR, so I want that all operands can have
> arbitrary sizes ( llvm pass is not really good because it converts sizes
> only to some predefined sizes). However , I am not sure if there will be
> internal checks on these sizes after I will transform the tree. Or is it
> better to create some my own attributes, that can describe the sizes?
> _______________________________________________
> LLVM Developers mailing list
> llvm-dev at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20170728/72b0d8ff/attachment.html>


More information about the llvm-dev mailing list