The only sched models that for cpu's that support avx2
but not avx512 are: haswell, broadwell, skylake, zen1-3
For this tuple, measuring becomes problematic since there's a lot of spilling going on,
but apparently all these memory ops do not affect worst-case estimate at all here.
For load we have:
https://godbolt.org/z/5qGb9odP6 - for intels Block RThroughput: <=106.0; for ryzens, Block RThroughput: <=34.8
So pick cost of 106.
For store we have:
https://godbolt.org/z/KrWcv4Ph7 - for intels Block RThroughput: =58.0; for ryzens, Block RThroughput: <=20.5
So pick cost of 58.
I'm directly using the shuffling asm the llc produced,
without any manual fixups that may be needed
to ensure sequential execution.
clang-format: please reformat the code
- {2, MVT::v2i16, 2}, // (load 4i16 and) deinterleave into 2 x 2i16 - {2, MVT::v4i16, 2}, // (load 8i16 and) deinterleave into 2 x 4i16 - {2, MVT::v8i16, 6}, // (load 16i16 and) deinterleave into 2 x 8i16 - {2, MVT::v16i16, 9}, // (load 32i16 and) deinterleave into 2 x 16i16 + {2, MVT::v2i16, 2}, // (load 4i16 and) deinterleave into 2 x 2i16 + {2, MVT::v4i16, 2}, // (load 8i16 and) deinterleave into 2 x 4i16 + {2, MVT::v8i16, 6}, // (load 16i16 and) deinterleave into 2 x 8i16 + {2, MVT::v16i16, 9}, // (load 32i16 and) deinterleave into 2 x 16i16