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

Reply via email to