Displaying 4 results from an estimated 4 matches for "splat_vector".
2019 Aug 29
6
[SVE][AArch64] Codegen for a scalable vector splat
...for lowering to SelectionDAG however, since the canonical form there is a BUILD_VECTOR with all elements being the same. This obviously doesn't work if we don't know how many elements there are. We have a couple of solutions and would like to know which the community prefers.
1) Add a new SPLAT_VECTOR ISD node. This was part of our overall RFC from 2016 and is the solution that we're currently using downstream. It just accepts a single scalar value. This has worked well with just the SVE codegen using it, but I don't know if we would run into problems if we try to make this the canonical...
2020 Jul 10
2
Why are generic dag combines run before target dag combines?
Hi llvm-dev,
I just tried to implement a target-specific dag combine to preempt a
generic dag combine, and I was surprised to see that it didn't work because
the generic dag combines are run first. Does anyone know the rationale for
running the generic dag combines first? I would have expected the target
dag combines to run first because they have more specific information about
what combines
2019 Aug 29
2
[SVE][AArch64] Codegen for a scalable vector splat
...since the
> canonical form there is a BUILD_VECTOR with all elements being the same.
> This obviously doesn't work if we don't know how many elements there are.
> We have a couple of solutions and would like to know which the community
> prefers.
> >
> > 1) Add a new SPLAT_VECTOR ISD node. This was part of our overall RFC
> from 2016 and is the solution that we're currently using downstream. It
> just accepts a single scalar value. This has worked well with just the SVE
> codegen using it, but I don't know if we would run into problems if we try
> to mak...
2016 Nov 04
2
[RFC] Supporting ARM's SVE in LLVM
...of [ISD::EXTRACT_SUBVECTOR](#ISD::EXTRACT_SUBVECTOR).
## *ISD::PROPAGATE\_FIRST\_ZERO* {#isdpropagatefirstzero}
`PROPAGATE_FIRST_ZERO(VEC1, VEC2)`
See [*propff*](#propff).
## *ISD::SERIES_VECTOR* {#isdseriesvector}
`SERIES_VECTOR(INITIAL, STEP)`
See [*seriesvector*](#seriesvector).
## *ISD::SPLAT_VECTOR* {#isdsplatvector}
`SPLAT_VECTOR(VAL)`
Within the code generator a splat is represented by ISD::BUILD_VECTOR and is
thus incompatible with scalable vectors.
We initially made use of [ISD::SERIES_VECTOR](#seriesvector) with a zero stride
but that brings with it a requirement for [ISD::SERIES_VECT...