| Issue |
184002
|
| Summary |
[X86] Make ISD::ROTL/ROTR vector rotates legal on XOP+AVX512 targets and custom fold to X86ISD::VROTLI/VROTRI
|
| Labels |
backend:X86
|
| Assignees |
|
| Reporter |
RKSimon
|
Similar to #166949
ISD::ROTL / X86ISD::VROTLI
- XOP - legal for v16i8/v8i16/v4i32/v2i64
ISD::ROTL / X86ISD::VROTLI
ISD::ROTR / X86ISD::VROTRI
- AVX512F - legal for v16i32/v8i64
- AVX512F + AVX512VL - legal for v4i32/v8i32/v2i64/v4i64
ISD::ROTL / X86ISD::VROTLI
ISD::ROTR / X86ISD::VROTRI
(via ISD::FSHL/FSHR + X86ISD::VSHLD/VSHRD repeated ops)
- AVX512VBMI2 - "legal" for v32i16
- AVX512VBMI2 + AVX512VL - "legal" for v8i16/v16i16
- [ ] Declare these opcode legal on the correct target cpus
- [ ] Simplify LowerRotate
- [ ] Handle any widening on AVX512F targets without AVX512VL (ensure existing widening in X86InstrAVX512.td still works)
- [ ] Add a combineRotate equivalent to combineFunnelShift to handle rotate-by-immediate cases.
- [ ] Handle VBMI2 rotate -> funnel shift expansion in X86ISelDAGToDAG or in tablegen (inc widening on non-AVX512VL cases)
_______________________________________________
llvm-bugs mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs