Displaying 20 results from an estimated 2000 matches similar to: "[LLVMdev] how to use "new instruction()""
2015 Apr 17
2
[LLVMdev] how to use "new instruction()"
Thanks Jonathan. I knew this document. But I didn't understand the "unsigned
iType, Use *Ops" fields. Could you please help how I can create a new
instruction to do the example I was giving? Thanks for your time in advance.
Best,
Zhi
On Thu, Apr 16, 2015 at 5:48 PM, Jonathan Roelofs <jonathan at codesourcery.com
> wrote:
> You're probably looking for this method:
>
2015 Apr 16
3
[LLVMdev] double* to <2 x double>*
Does anyone know how to instrument *double* to <2 x doulbe>**, e.g., 2.2
--> <2.2, 2.2>?
For example, I want to change the following IR code
%arrayidx1 = getelementptr inbounds [100 x double]* @main.B, i32 0, i32
%i.021
%1 = load double* %arrayidx1, align 4, !tbaa !0
to:
%arrayidx1 = getelementptr inbounds [100 x double]* @main.B, i32 0, i32
%i.021
%1 = bitcast double* %arrayidx1
2015 Apr 15
1
[LLVMdev] How to do bitcast for double to <2 x double>
So, you need to bitcast `pinst` to a pointer to Vector of double,
since it (I hope for your sake) is a pointer to integer. What you are
trying to do is bitcast a pointer into a vector, which probably will
lead to an assert or "bad code that doesn't work".
--
Mats
On 15 April 2015 at 21:57, zhi chen <zchenhn at gmail.com> wrote:
> What I want to do is to change the pInst
2015 Apr 17
2
[LLVMdev] how to use "new instruction()"
It seems that the problem was because I used builder.CreateFAdd to create
a <2 x double> vectortype FADD instruction. It works if I use it to create
the scalar version FADD. I want to have an instruction like: *%2 = fadd <2
x double> undef, <2 x double> undef. *The following is the way I used to
create the vectorized FADD instruction:
//pInst is a double type instruction
2015 Apr 21
2
[LLVMdev] what's the best way to insert an instruction after the current instruction
Does the insert point also mean inserting before the instruction?
On Tue, Apr 21, 2015 at 3:36 PM, Daniel Berlin <dberlin at dberlin.org> wrote:
> IRBuilder takes an insertion point.
> Use it?
>
>
> On Tue, Apr 21, 2015 at 3:17 PM, zhi chen <zchenhn at gmail.com> wrote:
> > The current instruction is:
> >
> > Instruction *pInst;
> >
> >
2015 Apr 21
2
[LLVMdev] what's the best way to insert an instruction after the current instruction
The current instruction is:
Instruction *pInst;
How can I create a new instruction, say add, after pInst?
Thanks,
Zhi
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20150421/8f75a4a0/attachment.html>
2015 Apr 17
2
[LLVMdev] how to use "new instruction()"
I got it. Thanks, Nick. So, it is back to the previous problem. If I have
the following instruction:
%3 = fadd double %1, double %2
I want to change it into
%6 = fadd <2 x double> %4, double %5
where %4 = <double %1, double %1>, %5 = <double %2, double %2>, how can I
do this?
Thanks,
Best
On Fri, Apr 17, 2015 at 1:56 AM, Nick Lewycky <nicholas at mxc.ca> wrote:
>
2015 Apr 17
2
[LLVMdev] how to use "new instruction()"
Value * is the instruction.
use dyn_cast<Instruction> to get to it.
On Thu, Apr 16, 2015 at 11:39 PM zhi chen <zchenhn at gmail.com> wrote:
> But IRBuilder.CreateXYZ only returns a "VALUE" type. Can I get the
> instruction created by it? For example,
>
> IRBuilder<> builder(&*pinst);
> Value *val = builder.CreateFAdd(LV, RV, "");
>
2015 Apr 17
2
[LLVMdev] how to use "new instruction()"
Thanks Nick, that's something what I am trying to implement as the
following. But it seems I still only get the constant value not the
instruction. Could you please go over the following instruction and see
what wrong with it? Thanks for your time again.
Value *vecVal = NULL;
IRBuilder<> builder(&*pInst);
Type *vecTy = VectorType::get(Type::getDoubleTy(ctxt), 2);
Value
2015 Apr 15
2
[LLVMdev] How to do bitcast for double to <2 x double>
How can I write code to generate IR for:
%2 = bitcast double* %1 to <2 x double>*.
%3 = load <2 x double>* %2, align 16
Basically, it is similar to x86 _mm_load_pd1 intrinsics.
Thanks,
Zhi
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20150415/66489860/attachment.html>
2015 Apr 17
2
[LLVMdev] how to use "new instruction()"
Yes. That's what I was the solution in my mind. But I just wanted to know
if there was a generic way to save some code...
On Thu, Apr 16, 2015 at 8:32 PM, Tim Northover <t.p.northover at gmail.com>
wrote:
> > I understand that I can detect the operation first, and use "create" to
> > create for each of them. But I don't if there is a generic way to do this
2015 Apr 11
2
[LLVMdev] How doesn't llvm generate IR for logical negate operation
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
2015 Apr 11
2
[LLVMdev] How doesn't llvm generate IR for logical negate operation
Yes, but my point is that there would be some overhead to do cast the <N x
i1> vectortype to an integerNty. Is there any good way to check not all of
these N bits in the vectortype are 0s?
On Fri, Apr 10, 2015 at 5:37 PM, Bruce Hoult <bruce at hoult.org> wrote:
> Sure, if you actually just want an i1 saying whether or not at least one
> bit is set to 1, then comparing against 0
2015 Apr 11
2
[LLVMdev] How doesn't llvm generate IR for logical negate operation
I see. My CPU is a general Core i7 Ivy bridge CPU.
On Fri, Apr 10, 2015 at 6:48 PM, Bruce Hoult <bruce at hoult.org> wrote:
> I suppose that depends on your CPU. Do you even have a CPU that supports
> operations on <N x i1> as packed bits in vector registers?
>
>
> On Sat, Apr 11, 2015 at 12:43 PM, zhi chen <zchenhn at gmail.com> wrote:
>
>> Yes, but my
2015 Apr 11
2
[LLVMdev] How doesn't llvm generate IR for logical negate operation
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
-------------- next part --------------
An HTML
2007 Apr 18
1
[RFC] [PATCH] Split host arch headers for UML's benefit
The patch below fixes the recent UML compilation failure in -rc5-mm1
without making the UML build reach further into the i386 headers. It
splits the i386 ptrace.h and system.h into UML-usable and UML-unusable
pieces.
The string "abi" is in there because I did ptrace.h first, and that
involves separating the ptrace ABI stuff from everything else (if
pt_regs is not considered part of
2007 Apr 18
1
[RFC] [PATCH] Split host arch headers for UML's benefit
The patch below fixes the recent UML compilation failure in -rc5-mm1
without making the UML build reach further into the i386 headers. It
splits the i386 ptrace.h and system.h into UML-usable and UML-unusable
pieces.
The string "abi" is in there because I did ptrace.h first, and that
involves separating the ptrace ABI stuff from everything else (if
pt_regs is not considered part of
2017 Oct 04
1
[PATCH 11/13] x86/paravirt: Add paravirt alternatives infrastructure
With CONFIG_PARAVIRT, the kernel .text is littered with a bunch of calls
to pv_irq_ops function pointers, like:
callq *0xffffffff81e3a400 (pv_irq_ops.save_fl)
In non-Xen paravirt environments -- including native, KVM, Hyper-V, and
VMware -- the above code gets patched by native_patch() to look like
this instead:
pushfq
pop %rax
nopl 0x0(%rax,%rax,1)
So in most scenarios,
2015 Apr 17
3
[LLVMdev] how to use "new instruction()"
Thanks, Tim. What I want to do is to change the scalar instructions to
scalar ones.
For example, if I have to the following one:
%3 = fadd double %1, double %2
I want to change it into
%6 = fadd <2 x double> %4, double %2.
I understand that I can detect the operation first, and use "create" to
create for each of them. But I don't if there is a generic way to do this
because
2016 Aug 25
2
InstList insert depreciated?
Jon,
> You want:
> TaintVar->insertAfter(FirstI);
This worked! Thank you.
On Thu, Aug 25, 2016 at 9:38 AM, Jonathan Roelofs
<jonathan at codesourcery.com> wrote:
>
>
> On 8/25/16 7:01 AM, Shehbaz Jaffer via llvm-dev wrote:
>>
>> I tried an alternative way of adding instruction by first getting the
>> first instruction of the basic block, and then