[ARM] Move double vector insert patterns using vins to DAG combine
This removes the existing patterns for inserting two lanes into an f16/i16 vector register using VINS, instead using a DAG combine to pattern match the same code sequences. The tablegen patterns were already on the large side (foreach LANE = [0, 2, 4, 6]) and were not handling all the cases they could. Moving that to a DAG combine, whilst not less code, allows us to better control and expand the selection of VINSs. Additionally this allows us to remove the AddedComplexity on VCVTT. The extra trick that this has learned in the process is to move two adjacent lanes using a single f32 vmov, allowing some extra inefficiencies to be removed. Differenial Revision: https://reviews.llvm.org/D96876
Showing
- llvm/lib/Target/ARM/ARMISelDAGToDAG.cpp 108 additions, 0 deletionsllvm/lib/Target/ARM/ARMISelDAGToDAG.cpp
- llvm/lib/Target/ARM/ARMInstrMVE.td 0 additions, 38 deletionsllvm/lib/Target/ARM/ARMInstrMVE.td
- llvm/lib/Target/ARM/ARMInstrVFP.td 0 additions, 2 deletionsllvm/lib/Target/ARM/ARMInstrVFP.td
- llvm/test/CodeGen/Thumb2/LowOverheadLoops/fast-fp-loops.ll 0 additions, 12 deletionsllvm/test/CodeGen/Thumb2/LowOverheadLoops/fast-fp-loops.ll
- llvm/test/CodeGen/Thumb2/mve-div-expand.ll 15 additions, 15 deletionsllvm/test/CodeGen/Thumb2/mve-div-expand.ll
- llvm/test/CodeGen/Thumb2/mve-float16regloops.ll 0 additions, 2 deletionsllvm/test/CodeGen/Thumb2/mve-float16regloops.ll
- llvm/test/CodeGen/Thumb2/mve-gather-ind16-scaled.ll 7 additions, 7 deletionsllvm/test/CodeGen/Thumb2/mve-gather-ind16-scaled.ll
- llvm/test/CodeGen/Thumb2/mve-gather-ptrs.ll 7 additions, 7 deletionsllvm/test/CodeGen/Thumb2/mve-gather-ptrs.ll
- llvm/test/CodeGen/Thumb2/mve-masked-ldst.ll 0 additions, 24 deletionsllvm/test/CodeGen/Thumb2/mve-masked-ldst.ll
- llvm/test/CodeGen/Thumb2/mve-minmax.ll 15 additions, 15 deletionsllvm/test/CodeGen/Thumb2/mve-minmax.ll
- llvm/test/CodeGen/Thumb2/mve-shuffle.ll 198 additions, 225 deletionsllvm/test/CodeGen/Thumb2/mve-shuffle.ll
- llvm/test/CodeGen/Thumb2/mve-shufflemov.ll 9 additions, 9 deletionsllvm/test/CodeGen/Thumb2/mve-shufflemov.ll
- llvm/test/CodeGen/Thumb2/mve-simple-arith.ll 45 additions, 45 deletionsllvm/test/CodeGen/Thumb2/mve-simple-arith.ll
- llvm/test/CodeGen/Thumb2/mve-vcvt.ll 22 additions, 22 deletionsllvm/test/CodeGen/Thumb2/mve-vcvt.ll
- llvm/test/CodeGen/Thumb2/mve-vld2.ll 48 additions, 57 deletionsllvm/test/CodeGen/Thumb2/mve-vld2.ll
- llvm/test/CodeGen/Thumb2/mve-vld3.ll 309 additions, 332 deletionsllvm/test/CodeGen/Thumb2/mve-vld3.ll
- llvm/test/CodeGen/Thumb2/mve-vld4.ll 112 additions, 125 deletionsllvm/test/CodeGen/Thumb2/mve-vld4.ll
- llvm/test/CodeGen/Thumb2/mve-vldst4.ll 95 additions, 95 deletionsllvm/test/CodeGen/Thumb2/mve-vldst4.ll
- llvm/test/CodeGen/Thumb2/mve-vst2.ll 66 additions, 64 deletionsllvm/test/CodeGen/Thumb2/mve-vst2.ll
- llvm/test/CodeGen/Thumb2/mve-vst3.ll 414 additions, 454 deletionsllvm/test/CodeGen/Thumb2/mve-vst3.ll
Loading
Please register or sign in to comment