Displaying 20 results from an estimated 5000 matches similar to: "[LLVMdev] LLVM Instruction Operands"
2011 Jun 02
0
[LLVMdev] LLVM Instruction Operands
On Jun 2, 2011, at 9:46 AM, Griffin Wright wrote:
>
> Hello all:
>
> I apologize for what I imagine is a rather silly question, but I'm still
> somewhat new to LLVM and am stuck. I am reworking some code that was
> originally in the backend involving MachineInstructions and
> MachineOperands, and I now need for it to function as an LLVM IR pass,
> using just
2011 Jul 13
1
[LLVMdev] Confusion with GetElementPtr and Defs/Uses
Hello,
I've been hung up on some issues for several weeks now, and some of them
seem to stem from GetElementPtr instructions.
Say we have a Definition: *%29 = getelementptr inbounds [10 x i32]* @c, i32
0, i32 %28*
Now, I'd like to see the uses of that definition. In my code, I do this
twice, in slightly different ways. This first method works and shows
instructions that use %29:
2012 Jul 31
0
[LLVMdev] rotate
Oh, no. I should have been more clear. The patch was not rejected, just
lost in the daily shuffle.
I already have my employer's approval to send this upstream, so I will
prepare a patch against trunk this morning.
> I proposed a similar patch to LLVM (left circular shift) around 10/2011.
> > Parts of my patch did make it into trunk about a year after, but others
> > did not.
2012 Jul 31
4
[LLVMdev] rotate
On Monday, July 30, 2012 12:16 AM, Cameron McInally wrote:
> Hey Andy,
>
> I proposed a similar patch to LLVM (left circular shift) around 10/2011.
> Parts of my patch did make it into trunk about a year after, but others
> did not.
>
> At that time, my solution was to add a binary operator to the IRBuilder,
> since LCS fits in nicely with the other shift operators. But,
2018 Aug 08
3
Error Calling eraseFromParent()
LLVM is built in Release mode. The version is 6.0.0. I think that a similar
code worked on verison 3.9.0. It is probably a null pointer dereference
occurring in eraseFromParent(). I checked and reconfirmed that the
instruction had no uses. Perhaps I should rebuild LLVM. Thanks.
On Wed, Aug 8, 2018 at 9:03 PM, mayuyu.io <admin at mayuyu.io> wrote:
> Hmmmm that’s strange. Do you get an
2018 Aug 07
2
Error Calling eraseFromParent()
Hi.
This is part of my code:
...
if (auto* op = dyn_cast<BinaryOperator>(&I)) {
Value* lhs = op->getOperand(0);
Value* rhs = op->getOperand(1);
Value* mul = builder.CreateMul(lhs, rhs);
for (auto& U : op->uses()) {
User* user = U.getUser();
user->setOperand(U.getOperandNo(), mul);
}
I.eraseFromParent();
}
...
This leads to the following
2016 Jul 21
2
Remove zext-unfolding from InstCombine
Hi all,
I have a question regarding a transformation that is carried out in InstCombine, which has been introduced by r48715. It unfolds expressions of the form `zext(or(icmp, (icmp)))` to `or(zext(icmp), zext(icmp)))` to expose pairs of `zext(icmp)`. In a subsequent iteration these `zext(icmp)` pairs could then (possibly) be optimized by another optimization (which has already been there before
2018 Aug 08
2
Error Calling eraseFromParent()
Hi. Thanks. I changed the code but the problem exists. This is my new code
which is again very simple:
...
bool runOnFunction(Function &F) override {
vector<Instruction *> dels;
dels.clear();
for (inst_iterator It = inst_begin(&F), Ie = inst_end(&F); It != Ie;) {
Instruction *I = &*(It++);
if (auto* op = dyn_cast<BinaryOperator>(I)) {
IRBuilder<NoFolder>
2018 Aug 07
2
Error Calling eraseFromParent()
Thanks Bjorn! But The problem is still there.
On Wed, Aug 8, 2018 at 2:04 AM, Björn Pettersson A <
bjorn.a.pettersson at ericsson.com> wrote:
> It looks quite dangerous to erase the instruction I inside the loop when
> iterating over all instructions in the function.
> I guess it depends on how the range based iterator is implemented if that
> works or not.
>
> I think
2015 Jan 15
2
[LLVMdev] Handling of undef in the IR
Hi all,
I have a very simple test case (thanks to bugpoint) that hit an assert in reassociate.
(the assert is (C->getType()->isIntOrIntVectorTy() && "Cannot NEG a nonintegral value!"), function getNeg)
The function is taking a Constant as argument, but the assert does not expect an undef. I’m not sure whose responsibility is it to handle that (caller?).
Do we have to
2018 Aug 07
2
Error Calling eraseFromParent()
The code is really simple. But I can not the reason for the segmentation
fault. I only know that the eraseFromParent() function leads to it. The
whole code is:
...
bool runOnFunction(Function &F) override {
for (auto &I : instructions(F)) {
if (auto* op = dyn_cast<BinaryOperator>(&I)) {
IRBuilder<> builder(op);
Value* lhs = op->getOperand(0);
Value* rhs =
2005 Jul 28
2
[LLVMdev] help with pointer-to-array conversion
I now understand that IndVarSimplify.cpp is capable of reproducing array
references when the pointer initialization from the array address is found
inside the immediately enclosing loop, such that in the following code:
int A[20000], B[100], Z;
int main()
{
int i, j, *a, *b;
for ( a = &A[0], i = 0; i != 200; i++ )
for ( b = &B[0], j = 0; j != 100; j++
2007 Jul 23
2
[LLVMdev] LHS of an expression
Hi Bill,
Thanks a lot for your response.But my problem still remains.The thing is i
am having a data type std::vector<Value*> as i am checking for the
variables in Store Instructions and Malloc Instructions.For store the case
is straightforward as discussed earlier.I want the same Value* variable
for malloc inst as well.
bcos i cannot have a different set for only instructions.
can there be
2010 Apr 14
4
[LLVMdev] Operand, instruction
Thanks for reply.
I have used AllocaInst, it's working but i think it's only for allocating
some memory for new variable. And CallInst creates a call instruction. I am
looking for creating a add or sub instruction.
I used function instruction(), which gives me error "error: cannot allocate
an object of abstract type ‘llvm::Instruction’" and also "Instruction.h:28:
note:
2012 Oct 21
0
[LLVMdev] RegisterCoalescing pass crashes with ImplicitDef registers
On Oct 20, 2012, at 3:37 PM, Vincent Lejeune <vljn at ovi.com> wrote:
> #5 0x00000000010c8e83 in (anonymous namespace)::JoinVals::getAssignments (this=0x7fffffffd230) at RegisterCoalescer.cpp:1305
Does this fix it?
diff --git a/lib/CodeGen/RegisterCoalescer.cpp b/lib/CodeGen/RegisterCoalescer.cpp
index ba6b456..2ca67d6 100644
--- a/lib/CodeGen/RegisterCoalescer.cpp
+++
2016 Jul 27
2
Remove zext-unfolding from InstCombine
Hi Sanjay,
thank you a lot for your answer. I understand that in your examples it is desirable that `foo` and `goo` are canonicalized to the same IR, i.e., something like `@goo`. However, I still have a few open questions, but please correct me in case I'm thinking in the wrong direction.
> Am 21.07.2016 um 18:51 schrieb Sanjay Patel <spatel at rotateright.com>:
>
> I've
2008 Sep 02
2
[LLVMdev] Instruction MVT::ValueTypes
Is there an easy way to get the MVT::ValueType of a MachineInstruction
MachineOperand? For example, the register operand of an x86 MOVAPD should
have an MVT::ValueType of v2f64. A MOVAPS register operand should have an
MVT::ValueType of v4f32.
So given a MachineInstruction and its MachineOperands is there some easy way
to derive this information? I don't see anything in TargetInstrInfo
2008 Jul 01
2
[LLVMdev] vmkit on x86_64
Hello,
I'm trying to compile vmkit on a x86_64 linux box with gcc-4.1.2, but
I'm running into troubles because of various problems with casts
between pointers and integers. Is there anybody who succeeded in this
task? Az I see, some of the problems can be fixed with an appropriate
typedef/macro declaration, but in VMCore/JavaObject.cpp some lowlevel
bitmanipulation is used, to mark
2009 Feb 08
0
[LLVMdev] overflow + saturation stuff
Hi Chris,
Would it be better to split add into multiple opcodes instead of using
SubclassData bits? Compare this:
switch (I->getOpcode()) {
case Instruction::Add: {
switch (cast<Add>(I)->getOverflowBehavior()) {
case AddInstruction::Wrapping:
// ...
case AddInstruction::UndefinedSigned:
// ...
case
2010 Apr 14
0
[LLVMdev] Operand, instruction
help__me_please wrote:
> Thanks for reply.
> I have used AllocaInst, it's working but i think it's only for allocating
> some memory for new variable. And CallInst creates a call instruction. I am
> looking for creating a add or sub instruction.
>
> I used function instruction(), which gives me error "error: cannot allocate
> an object of abstract type