[llvm] [VectorCombine] foldShuffleOfBinops - fold shuffle(binop(shuffle(x),shuffle(z)),binop(shuffle(y),shuffle(w)) -> binop(shuffle(x,z),shuffle(y,w)) (PR #120984)

Simon Pilgrim via llvm-commits llvm-commits at lists.llvm.org
Mon Dec 23 09:44:56 PST 2024


================
@@ -80,13 +80,29 @@ define i64 @movmsk_i64_v8i32_v4i32(<4 x i32> %v0, <4 x i32> %v1) {
 }
 
 define i64 @movmsk_i64_v64i8_v16i8(<16 x i8> %v0, <16 x i8> %v1, <16 x i8> %v2, <16 x i8> %v3) {
----------------
RKSimon wrote:

These changes are purely instruction ordering as it allows some SSE folds of 256/512-bit with 128-bit subvectors to occur earlier in foldShuffleToIdentity as the subvector concats are free vs AVX folds which occur later in foldShuffleOfBinops.

https://github.com/llvm/llvm-project/pull/120984


More information about the llvm-commits mailing list