[PATCH] D155592: [AArch64] Reuse larger DUPLANE if available
JinGu Kang via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Tue Jul 18 08:55:27 PDT 2023
jaykang10 added inline comments.
================
Comment at: llvm/lib/Target/AArch64/AArch64InstrInfo.td:6950
defm SMULL : SIMDVectorIndexedLongSD<0, 0b1010, "smull", AArch64smull>;
+def : Pat<(v4i32 (AArch64smull (v4i16 V64:$Rn),
+ (extract_low_dup_v8i16 (v8i16 V128:$Rm), VectorIndexS:$idx))),
----------------
jaykang10 wrote:
> dmgreen wrote:
> > Would this be needed for all the "AdvSIMD indexed element" operations?
> >
> > Is there some way to make that fairly generic? Maybe a PatFrag that matches either `v4i16 (AArch64duplane16(..` or `extract_subvector (AArch64duplane16 (..`, that can be used in the instruction patterns like those in SIMDVectorIndexedHSTied.
> I was not just sure the patterns are needed for all `SIMD indexed` operations.
> If it is ok, let me move the patterns into `SIMDIndexedLongSD`.
Additionally, when I added `def v2i32_indexed_low` in `SIMDVectorIndexedLongSD`, I got Decoding conflict as below because it causes same encoding so I added `Pat`s.
```
Decoding Conflict:
0000111110......1010.0..........
0000111110......1010............
0000111110......................
...0111110......................
...011..........................
................................
SMULLv2i32_indexed 0000111110______1010_0__________
SMULLv2i32_indexed_low 0000111110______1010_0__________
Decoding Conflict:
0010111110......1010.0..........
0010111110......1010............
0010111110......................
...0111110......................
...011..........................
................................
UMULLv2i32_indexed 0010111110______1010_0__________
UMULLv2i32_indexed_low 0010111110______1010_0__________
```
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D155592/new/
https://reviews.llvm.org/D155592
More information about the llvm-commits
mailing list