Displaying 20 results from an estimated 20 matches for "concat_vectors".
2017 May 15
2
Disabling DAGCombine's specific optimization
...m ISD node, e.g.
MyTargetISD::MyLSHR, with the same type as the general ISD::LSHR. This
custom node will then be ignored by the generic DAGCombiner. Convert
ISD::LSHR to MyTargetISD::MyLSHR in DAGCombine, optimise it as you see fit,
convert it back or lower it directly.
I've done this for ISD::CONCAT_VECTORS to avoid an inconvenient conversion
to ISD::BUILD_VECTOR. This looks a bit hacky though. I'll watch with
interest for a more idiomatic solution.
Cheers
> >
> > On May 15, 2017, at 07:54, vivek pandya via llvm-dev <
> > llvm-dev at lists.llvm.org> wrote:
> >
>...
2012 Jan 11
1
[LLVMdev] widen_load fails on AVX
Hello Chris,
We caught this failure:
./llc -mattr=+avx ../../test/CodeGen/X86/widen_load-2.ll
llc: LegalizeTypes.cpp:831: void llvm::DAGTypeLegalizer::SetSplitVector(llvm::SDValue, llvm::SDValue, llvm::SDValue): Assertion `Lo.getValueType().getVectorElementType() == Op.getValueType().getVectorElementType() && 2*Lo.getValueType().getVectorNumElements() ==
2007 Jun 11
0
[LLVMdev] Status of pre-legalize vector changes
On Mon, 11 Jun 2007, Dan Gohman wrote:
> Here's a quick update on where I'm at with the pre-legalize vector changes
> I'm working on. I hope to have an updated patch ready to a few days, assuming
> I don't get too busy with other projects going on. Here are some of the issues
> I've come across so far.
Great! I'm going to reorder your email a bit to suit my
2007 Jun 11
3
[LLVMdev] Status of pre-legalize vector changes
Hello,
Here's a quick update on where I'm at with the pre-legalize vector changes
I'm working on. I hope to have an updated patch ready to a few days, assuming
I don't get too busy with other projects going on. Here are some of the issues
I've come across so far.
Putting the table for extended ValueTypes in SelectionDAG seems quite involved.
There are a lot of places that use
2008 Sep 30
0
[LLVMdev] Generalizing shuffle vector
...nding the
IL-level syntax; DAGCombiner could easily be made a lot more clever
about cases like this. For example, before legalization, we can
transform an INSERT_VECTOR_ELT inserting an element into a constant
vector or a SCALAR_TO_VECTOR into a BUILD_VECTOR, and we can transform
BUILD_VECTOR into CONCAT_VECTORS or EXTRACT_SUBVECTOR for relevant
cases. We can also make the lowering significantly more clever about
dealing with insertelement.
If what we currently have isn't sufficient, I think the first step is
to extend VECTOR_SHUFFLE to be more flexible, and implement the
relevant combines to make th...
2014 Mar 26
19
[LLVMdev] 3.4.1 Release Plans
Hi,
We are now about halfway between the 3.4 and 3.5 releases, and I would
like to start preparing for a 3.4.1 release. Here is my proposed release
schedule:
Mar 26 - April 9: Identify and backport additional bug fixes to the 3.4 branch.
April 9 - April 18: Testing Phase
April 18: 3.4.1 Release
How you can help:
- If you have any bug fixes you think should be included to 3.4.1, send
me an
2020 Jan 28
2
Handling node through TargetLowering::LowerOperation vs TargetLowering::ReplaceNodeResults
Thank you Craig for explanation.
Could be the same algorithm used for custom legalizing given node in
LowerOperation and ReplaceNodeResults in case results and inputs of the
node are illegal?
Or actually such situation is impossible and for given node either
LowerOperation or ReplaceNodeResults can be only called?
Przemek
wt., 28 sty 2020, 18:48 użytkownik Craig Topper <craig.topper at
2018 Dec 05
5
[RFC] Matrix support (take 2)
...2 %1
; t6: v4f32,ch = CopyFromReg t0, Register:v4f32 %2
; t8: v4f32,ch = CopyFromReg t0, Register:v4f32 %3
; t10: v4f32,ch = CopyFromReg t0, Register:v4f32 %4
; t12: v4f32,ch = CopyFromReg t0, Register:v4f32 %5
; t14: v4f32,ch = CopyFromReg t0, Register:v4f32 %6
; t15: v12f32 = CONCAT_VECTORS t4, t6, t8
; t16: v12f32 = CONCAT_VECTORS t10, t12, t14
;------------
%a0 = shufflevector <12 x float> %a, <12 x float> undef,
<4 x i32> <i32 0, i32 1, i32 2, i32 undef>
%a1 = shufflevector <12 x float> %a, <12 x float> undef,
<4 x i32>...
2008 Sep 30
4
[LLVMdev] Generalizing shuffle vector
Hi,
The current definition of shuffle vector is
<result> = shufflevector <n x <ty>> <v1>, <n x <ty>> <v2>, <n x
i32> <mask> ; yields <n x <ty>>
The first two operands of a 'shufflevector' instruction are vectors
with types that match each other and types that match the result of
the instruction. The third
2012 Jan 07
0
[LLVMdev] dominance frontiers
On Jan 6, 2012, at 5:08 PM, Chris Lattner wrote:
>>>
>>> It's very like SSA construction, but must make provision
>>> testing anti dependences. I had planned to use dominance frontiers to
>>> guide placement of phi nodes, as usual.
>>
>> Ok, in that case, please check out include/llvm/Transforms/Utils/SSAUpdater.h,
>> which is the
2009 May 20
2
[LLVMdev] [PATCH] Add new phase to legalization to handle vector operations
...RINSIC_VOID:
+ case ISD::CopyToReg:
+ case ISD::CopyFromReg:
+ case ISD::AssertSext:
+ case ISD::AssertZext:
+ // Node cannot be illegal if types are legal
+ break;
+ case ISD::BUILD_VECTOR:
+ case ISD::INSERT_VECTOR_ELT:
+ case ISD::EXTRACT_VECTOR_ELT:
+ case ISD::CONCAT_VECTORS:
+ case ISD::EXTRACT_SUBVECTOR:
+ case ISD::VECTOR_SHUFFLE:
+ case ISD::SCALAR_TO_VECTOR:
+ case ISD::BIT_CONVERT:
+ case ISD::LOAD:
+ case ISD::STORE:
+ // These are intentionally not handled here; the point of this is to
+ // eliminate illegal operations that could pot...
2007 Jun 13
1
[LLVMdev] Status of pre-legalize vector changes
On Mon, Jun 11, 2007 at 03:39:40PM -0700, Chris Lattner wrote:
> On Mon, 11 Jun 2007, Dan Gohman wrote:
> > Also, CopyToReg and CopyFromReg lowering/legalization rely on being able to
> > create vector-of-vector types. For example, an <8 x double> vector is bitcasted
> > to (effectively) <4 x <2 x double>> for x86, allowing EXTRACT_ELEMENT to pull
> >
2018 Apr 10
1
64 bit mask in x86vshuffle instruction
...XTRACT_SUBVECTOR, DL, SubVT, V1,
DAG.getIntPtrConstant(0, DL));
SDValue HiV = DAG.getNode(ISD::EXTRACT_SUBVECTOR, DL, SubVT,
OnlyUsesV1 ? V1 : V2,
DAG.getIntPtrConstant(0, DL));
return DAG.getNode(ISD::CONCAT_VECTORS, DL, VT, LoV, HiV);
}
assert(WidenedMask.size() == 16);
// See if this is an insertion of the lower 128-bits of V2 into V1.
bool IsInsert = true;
int V2Index = -1;
for (int i = 0; i < 16; ++i) {
assert(WidenedMask[i] >= -1);
if (WidenedMask[i] < 0)
continue;...
2009 May 20
0
[LLVMdev] [PATCH] Add new phase to legalization to handle vector operations
...RINSIC_VOID:
+ case ISD::CopyToReg:
+ case ISD::CopyFromReg:
+ case ISD::AssertSext:
+ case ISD::AssertZext:
+ // Node cannot be illegal if types are legal
+ break;
+ case ISD::BUILD_VECTOR:
+ case ISD::INSERT_VECTOR_ELT:
+ case ISD::EXTRACT_VECTOR_ELT:
+ case ISD::CONCAT_VECTORS:
+ case ISD::EXTRACT_SUBVECTOR:
+ case ISD::VECTOR_SHUFFLE:
+ case ISD::SCALAR_TO_VECTOR:
+ case ISD::BIT_CONVERT:
+ case ISD::LOAD:
+ case ISD::STORE:
+ // These are intentionally not handled here; the point of this is to
+ // eliminate illegal operations that could pot...
2009 May 21
0
[LLVMdev] [PATCH] Add new phase to legalization to handle vector operations
On Wed, May 20, 2009 at 4:55 PM, Dan Gohman <gohman at apple.com> wrote:
> Can you explain why you chose the approach of using a new pass?
> I pictured removing LegalizeDAG's type legalization code would
> mostly consist of finding all the places that use TLI.getTypeAction
> and just deleting code for handling its Expand and Promote. Are you
> anticipating something more
2009 May 20
2
[LLVMdev] [PATCH] Add new phase to legalization to handle vector operations
On May 20, 2009, at 1:34 PM, Eli Friedman wrote:
> On Wed, May 20, 2009 at 1:19 PM, Eli Friedman
> <eli.friedman at gmail.com> wrote:
>
>> Per subject, this patch adding an additional pass to handle vector
>>
>> operations; the idea is that this allows removing the code from
>>
>> LegalizeDAG that handles illegal types, which should be a significant
2009 May 21
2
[LLVMdev] [PATCH] Add new phase to legalization to handle vector operations
...RINSIC_VOID:
+ case ISD::CopyToReg:
+ case ISD::CopyFromReg:
+ case ISD::AssertSext:
+ case ISD::AssertZext:
+ // Node cannot be illegal if types are legal
+ break;
+ case ISD::BUILD_VECTOR:
+ case ISD::INSERT_VECTOR_ELT:
+ case ISD::EXTRACT_VECTOR_ELT:
+ case ISD::CONCAT_VECTORS:
+ case ISD::EXTRACT_SUBVECTOR:
+ case ISD::VECTOR_SHUFFLE:
+ case ISD::SCALAR_TO_VECTOR:
+ case ISD::BIT_CONVERT:
+ case ISD::LOAD:
+ case ISD::STORE:
+ // These are intentionally not handled here; the point of this is to
+ // eliminate illegal operations that could pot...
2020 Feb 07
2
[RFC] Extending shufflevector for vscale vectors (SVE etc.)
...ent fixed shuffle. So code that wants to handle both can pretend they're canonicalized, and code that handles fixed shuffles won't be disrupted.
In SelectionDAG, shuffles aren't really unified the same way they are in IR. I think we map onto existing operations where they make sense (CONCAT_VECTORS and EXTRACT_SUBVECTOR). For scalable zip/unzip, I haven't really thought deeply about it; it probably makes sense to change SHUFFLE_VECTOR's shuffle mask to use ShuffleMask like IR, but that probably doesn't have a big impact either way.
-Eli
2020 Jan 30
7
[RFC] Extending shufflevector for vscale vectors (SVE etc.)
Currently, for scalable vectors, only splat shuffles are allowed; we're considering allowing more different kinds of shuffles. The issue is, essentially, that a shuffle mask is a simple list of integers, and that isn't enough to express a scalable operation. For example, concatenating two fixed-length vectors currently looks like this:
shufflevector <2 x i32> %v1, <2 x i32>
2013 Apr 25
11
[LLVMdev] Proposal for new Legalization framework
In the spirit of the (long-term) intent to migrate away from the
SelectionDAG framework, it is desirable to implement legalization passes as
discrete passes. Attached is a patch which implements the beginning of a
new type legalization pass, to help motivate discussion.
Is LLVM IR the right level for this? The main alternative approach that's
been discussed is to do FastISel to a