search for: splat_vector

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...