[LLVMdev] How doesn't llvm generate IR for logical negate operation

zhi chen zchenhn at gmail.com
Fri Apr 10 17:29:54 PDT 2015


Thanks, Bruce. So, what is the easiest way to check if there is any bit set
to 1 in a <N x i1> vector type? I used bitcast instruction to cast it into
"iN" first and them compare iN to 0. Do you have a better way to do it?
Thanks again.

On Fri, Apr 10, 2015 at 5:22 PM, Bruce Hoult <bruce at hoult.org> wrote:

> LLVM doesn't have a "logical neg" (or "not") operator. That's a C thing.
> Do a compare against 0 to create an i1 result, then zero extend the i1 to
> the size of integer result you want.
>
>
> On Sat, Apr 11, 2015 at 12:07 PM, zhi chen <zchenhn at gmail.com> wrote:
>
>> How can I generate LLVM IR for both logical NEG (!)? For example, if I
>> have Int32Ty a,
>>
>> For the bitwise NEG(~):
>>
>> c = ~a ;
>>
>> I can use the following API from LLVM:
>>
>> BinaryOperator *neg = BinaryOperator::CreateNeg(nbits, "bitwiseNEG", insertBefore);
>>
>> How, if I want to generate logical NEG:
>>
>> c = !a;
>>
>> what should I do for this?
>>
>> Thanks
>>
>> _______________________________________________
>> 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/20150410/8f0ce264/attachment.html>


More information about the llvm-dev mailing list