Displaying 20 results from an estimated 183 matches for "copyfromreg".
2017 Feb 14
2
Ensuring chain dependencies with expansion to libcalls
...in operations (like sdiv). We recently ran into a
problem where these operations that are expanded to library calls aren't
maintaining the proper ordering in relation to other chains in the DAG.
The following snippet of a DAG demonstrates the problem.
t0: ch = EntryToken
t2: i64,ch,glue = CopyFromReg t0, Register:i64 %reg0
t4: i64,ch,glue = CopyFromReg t2:1, Register:i64 %reg1, t2:1
t6: i64,ch,glue = CopyFromReg t4:1, Register:i64 %reg2, t4:1
t8: i64,ch,glue = CopyFromReg t6:1, Register:i64 %reg3, t6:1
t11: ch = CopyToReg t0, Register:i64 %vreg0, t2
t13: ch = CopyToReg t0,...
2016 Feb 18
2
How to interpret Selection DAG error output
...2016 at 11:34 AM, Krzysztof Parzyszek <
kparzysz at codeaurora.org> wrote:
> On 2/18/2016 1:32 PM, Rail Shafigulin wrote:
>
>> I think this is where I'm loosing the "thread". Based on what I'm seeing
>> SET_FLAG has three operands, the first of which is a CopyFromReg. So how
>> come the pattern is SET_FLAG %vreg5, 3, 20 and not SET_FLAG CopyFromReg,
>> 3, 20? In other words how do we go from CopyFromReg to %vreg5?
>>
>
> CopyFromReg is a "helper" instruction meaning "use the value from this
> vreg". Values that ar...
2017 Jul 20
3
Issue with DAG legalization of brcond, setcc, xor
Hi,
I am having some issues with how some of the instructions are being
legalized.
So this is my intial basic block. The area of concern is the last three
instructions. I will pick and choose debug output to keep this small.
SelectionDAG has 36 nodes:
t0: ch = EntryToken
t6: i32,ch = CopyFromReg t0, Register:i32 %vreg507
t2: i32,ch = CopyFromReg t0, Register:i32 %vreg17
t4: i32 = or t2, Constant:i32<256>
t9: i32 = shl t4, Constant:i32<2>
t10: i32 = add t6, t9
t12: i32,ch = CopyFromReg t0, Register:i32 %vreg79
t15: i32,...
2016 Feb 18
2
How to interpret Selection DAG error output
On Thu, Feb 18, 2016 at 11:48 AM, Krzysztof Parzyszek <
kparzysz at codeaurora.org> wrote:
> On 2/18/2016 1:40 PM, Rail Shafigulin wrote:
>
>>
>> 0x3283608: i32,ch = CopyFromReg 0x3257980, 0x3283500 [ORD=1]
>> [ID=9]
>> 0x3283500: i32 = Register %vreg5 [ID=1]
>>
>> Based on the code above, CopyFromReg is a node at address 0x3283608,
>> returns i32, is of type chain and takes two inputs, the second of which
>> is a...
2017 Jul 21
4
Issue with DAG legalization of brcond, setcc, xor
...s are being
>> legalized.
>> So this is my intial basic block. The area of concern is the last three
>> instructions. I will pick and choose debug output to keep this small.
>>
>> SelectionDAG has 36 nodes:
>> t0: ch = EntryToken
>> t6: i32,ch = CopyFromReg t0, Register:i32 %vreg507
>> t2: i32,ch = CopyFromReg t0, Register:i32 %vreg17
>> t4: i32 = or t2, Constant:i32<256>
>> t9: i32 = shl t4, Constant:i32<2>
>> t10: i32 = add t6, t9
>> t12: i32,ch = CopyFromR...
2016 Feb 18
3
How to interpret Selection DAG error output
...> wrote:
>>
>> On 2/18/2016 12:43 PM, Rail Shafigulin via llvm-dev wrote:
>>
>>
>> LLVM ERROR: Cannot select: 0x3284268: glue = EsenciaISD::SET_FLAG
>> 0x3283608, 0x3283710, 0x3283e48 [ORD=3] [ID=11]
>> 0x3283608: i32,ch = CopyFromReg 0x3257980, 0x3283500 [ORD=1]
>> [ID=9]
>> 0x3283500: i32 = Register %vreg5 [ID=1]
>> 0x3283710: i32 = Constant<3> [ID=2]
>> 0x3283e48: i32 = Constant<20> [ID=8]
>> In function: fib
>>
>>...
2010 Apr 20
2
[LLVMdev] SplitVectorOp from CopyFromReg
Hello,
I have a kernel that's swizzling a vector inside a loop. The vector was
created before the loop. The first node in the dag is an extract subvector
which calls into SplitVectorOp. The issue is that the node passed to it
comes from a CopyFromReg and SplitVectorOp doesn't know what to do. Is
there a reason why SplitVectorOp doesn't handle CopyFromReg nodes? If not,
can I submit a patch to add support?
Thanks,
Javier
2011 Jul 29
2
[LLVMdev] "Cannot select" error in 2.9
...0xd1b220: f64 = add 0xd1b120, 0xd1a210 [ORD=4] [ID=27]
0xd1b120: f64 = add 0xd1b020, 0xd1a010 [ORD=3] [ID=26]
0xd1b020: f64 = add 0xd1af20, 0xd19e10 [ORD=2] [ID=25]
0xd1af20: f64 = add 0xd19a10, 0xd19c10 [ORD=1] [ID=24]
0xd19a10: f64,ch = CopyFromReg 0xcee028, 0xd19910 [ORD=1]
[ID=14]
0xd19c10: f64,ch = CopyFromReg 0xcee028, 0xd19b10 [ORD=1]
[ID=15]
0xd19e10: f64,ch = CopyFromReg 0xcee028, 0xd19d10 [ORD=2]
[ID=16]
0xd19d10: f64 = Register %vreg2 [ORD=2] [ID=3]
0xd1a010: f64,ch...
2010 Apr 20
0
[LLVMdev] SplitVectorOp from CopyFromReg
Hi Javier,
> I have a kernel that's swizzling a vector inside a loop. The vector was
> created before the loop. The first node in the dag is an extract subvector
> which calls into SplitVectorOp. The issue is that the node passed to it
> comes from a CopyFromReg and SplitVectorOp doesn't know what to do. Is
> there a reason why SplitVectorOp doesn't handle CopyFromReg nodes? If not,
> can I submit a patch to add support?
a testcase would be helpful.
Ciao,
Duncan.
2020 Feb 22
2
COPYs between register classes
...RX32, which also contains the high 32-bit part
registers.
I have tried to find a simple way to constrain the register class of
such copies (also at -O0), but this turned out to not be quite simple.
Just selecting a pseudo instruction with a custom inserter does not seem
to work since CopyToReg/CopyFromReg have special handlings in InstrEmitter.
I then tried in SystemZDAGToDAG.cpp to select a CopyToReg to (CopyToReg
COPY_TO_REGCLASS), which worked fine. But I could not get the same
results with CopyFromReg. (COPY_TO_REGCLASS CopyFromReg) only resulted
in a later COPY into GR32, but the COPY from...
2015 Jan 27
4
[LLVMdev] Making a CopyToReg/CopyFromReg into a zext/sext?
I have a CopyToReg that is moving a 16bit reg to a 32bit reg, it's
currently being mapped out as a simple mov (not an ext), I would like to
change that to an ext. It seemed that the SelDAG was the easiest and
cleanest way to do this.
I can change the mov to an extension MI in the .td file; however, I can't
tell at that point whether it's a sext or a zext, so it seemed the SelDAG
was
2012 Dec 09
0
[LLVMdev] PHI instructions without CopyFromReg/CopyToReg
In my target I want to have mem-mem operations. But PHI instructions use
virtual registers and gets converted to a series of CopyFromReg and
CopyToReg instructions. These DAGs end up using physical registers.
My first approach was to spill the virtual register to force a mem-mem
operation. But I was unable to do this using LowerOperation() and
setOperationAction(ISD::CopyToReg, MVT::i32, Custom);
Any ideas would be appreciated.
I...
2016 Mar 18
3
generate vectorized code
...erated a following error:
fatal error: error in backend: Cannot select: 0x6a84dc8: i32 =
extract_vector_elt 0x6a85388, 0x6a813b0 [ORD=9] [ID=16]
0x6a85388: v4i32 = add 0x6a81098, 0x6a81e00 [ORD=8] [ID=15]
0x6a81098: v4i32 = add 0x6a81bf0, 0x6a84168 [ORD=6] [ID=12]
0x6a81bf0: v4i32,ch = CopyFromReg 0x6a2b7f0, 0x6a819e0 [ORD=5] [ID=8]
0x6a819e0: v4i32 = Register %vreg4 [ID=1]
0x6a84168: v4i32 = vector_shuffle 0x6a81bf0, 0x6a857a8<2,3,u,u>
[ORD=5] [ID=10]
0x6a81bf0: v4i32,ch = CopyFromReg 0x6a2b7f0, 0x6a819e0 [ORD=5]
[ID=8]
0x6a819e0: v4i32 = Register %vreg...
2005 Aug 17
1
[LLVMdev] gmake check failures on FreeBSD
They are all Alpha/PowerPC codegen related.
Running /usr/home/jeffc/llvm/obj/../test/Regression/CodeGen/Alpha/dg.exp
...
FAIL:
/usr/home/jeffc/llvm/obj/../test/Regression/CodeGen/Alpha/2005-07-12-TwoMallocCalls.ll:
NODE: 0x8582a40: i32,ch = CopyFromReg 0x8582980:1, 0x85829c0
Abort trap (core dumped)
FAIL: /usr/home/jeffc/llvm/obj/../test/Regression/CodeGen/Alpha/bsr.ll:
NODE: 0x85823c0: i32,ch = CopyFromReg 0x8582300, 0x8582340
Abort trap (core dumped)
FAIL: /usr/home/jeffc/llvm/obj/../test/Regression/CodeGen/Alpha/ctlz.ll:
NODE: 0x8582340: i8,...
2011 Jul 29
0
[LLVMdev] "Cannot select" error in 2.9
...1b120, 0xd1a210 [ORD=4] [ID=27]
> 0xd1b120: f64 = add 0xd1b020, 0xd1a010 [ORD=3] [ID=26]
> 0xd1b020: f64 = add 0xd1af20, 0xd19e10 [ORD=2] [ID=25]
> 0xd1af20: f64 = add 0xd19a10, 0xd19c10 [ORD=1] [ID=24]
> 0xd19a10: f64,ch = CopyFromReg 0xcee028, 0xd19910 [ORD=1]
> [ID=14]
>
> 0xd19c10: f64,ch = CopyFromReg 0xcee028, 0xd19b10 [ORD=1]
> [ID=15]
>
> 0xd19e10: f64,ch = CopyFromReg 0xcee028, 0xd19d10 [ORD=2]
> [ID=16]
> 0xd19d10: f64 = Register %vreg2 [ORD=...
2016 Nov 03
2
rotl: undocumented LLVM instruction?
Is there any way to get it to delay this optimization where it goes from
this:
Initial selection DAG: BB#0 'bclr64:entry'
SelectionDAG has 14 nodes:
t0: ch = EntryToken
t2: i64,ch = CopyFromReg t0, Register:i64 %vreg0
t4: i64,ch = CopyFromReg t0, Register:i64 %vreg1
t6: i64 = sub t4, Constant:i64<1>
t7: i64 = shl Constant:i64<1>, t6
t9: i64 = xor t7, Constant:i64<-1>
t10: i64 = and t2, t9
t12: ch,glue = CopyToReg t0, Register:i64...
2016 Feb 18
3
How to interpret Selection DAG error output
...via llvm-dev <
llvm-dev at lists.llvm.org> wrote:
> On 2/18/2016 12:43 PM, Rail Shafigulin via llvm-dev wrote:
>
>>
>> LLVM ERROR: Cannot select: 0x3284268: glue = EsenciaISD::SET_FLAG
>> 0x3283608, 0x3283710, 0x3283e48 [ORD=3] [ID=11]
>> 0x3283608: i32,ch = CopyFromReg 0x3257980, 0x3283500 [ORD=1] [ID=9]
>> 0x3283500: i32 = Register %vreg5 [ID=1]
>> 0x3283710: i32 = Constant<3> [ID=2]
>> 0x3283e48: i32 = Constant<20> [ID=8]
>> In function: fib
>>
>> As far as I can understand LLVM cannot select it because...
2016 Nov 03
3
rotl: undocumented LLVM instruction?
...mson at gmail.com>
> wrote:
>
>> Is there any way to get it to delay this optimization where it goes from
>> this:
>>
>> Initial selection DAG: BB#0 'bclr64:entry'
>> SelectionDAG has 14 nodes:
>> t0: ch = EntryToken
>> t2: i64,ch = CopyFromReg t0, Register:i64 %vreg0
>> t4: i64,ch = CopyFromReg t0, Register:i64 %vreg1
>> t6: i64 = sub t4, Constant:i64<1>
>> t7: i64 = shl Constant:i64<1>, t6
>> t9: i64 = xor t7, Constant:i64<-1>
>> t10: i64 = and t2, t...
2010 Nov 24
1
[LLVMdev] Selecting BRCOND instead of BRCC
...x170dc60, 0x170ec00, 0x170ef00 [ID=19]
0x170f000: ch = TokenFactor 0x170e560, 0x170e760, 0x170e960 [ID=18]
0x170e560: ch = CopyToReg 0x16d5748, 0x170e460, 0x170df60 [ID=15]
0x16d5748: ch = EntryToken [ORD=1] [ID=0]
0x170e460: i16 = Register %reg16384 [ID=5]
0x170df60: i16,ch = CopyFromReg 0x16d5748, 0x170de60 [ID=12]
0x16d5748: ch = EntryToken [ORD=1] [ID=0]
0x170de60: i16 = Register %reg16388 [ID=2]
0x170e760: ch = CopyToReg 0x16d5748, 0x170e660, 0x170e160 [ID=16]
0x16d5748: ch = EntryToken [ORD=1] [ID=0]
0x170e660: i16 = Register %reg16385 [ID=6]...
2019 Jun 05
2
Strange behaviour of post-legalising optimisations(?)
...src, i16 %i.0
%0 = load i8, i8* %arrayidx, align 1, !tbaa !2
%arrayidx1 = getelementptr inbounds i8, i8* %dest, i16 %i.0
store i8 %0, i8* %arrayidx1, align 1, !tbaa !2
%inc = add nuw nsw i16 %i.0, 1
br label %for.cond
This gets converted into this by llc:
Creating new node: t2: i16,ch = CopyFromReg t0, Register:i16 %3
Creating new node: t4: i16,ch = CopyFromReg t0, Register:i16 %0
Creating new node: t5: i16 = add t2, t4
Creating constant: t6: i16 = Constant<0>
Creating new node: t7: i16 = undef
Creating new node: t8: i8,ch = load<(load 1 from %ir.scevgep1, !tbaa !2)> t0, t5, undef...