[PATCH] D135145: [GISel] Combine G_INSERT_VECTOR_ELT to G_SHUFFLE_VECTOR
Matt Arsenault via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Tue Nov 1 14:36:28 PDT 2022
arsenm added inline comments.
================
Comment at: llvm/lib/CodeGen/GlobalISel/CombinerHelper.cpp:2688-2694
+ SmallVector<int, 4> ShuffleMask;
+ for (unsigned CurIdx = 0; CurIdx < NumElts; ++CurIdx) {
+ if (CurIdx == Idx)
+ ShuffleMask.push_back(NumElts);
+ else
+ ShuffleMask.push_back(CurIdx);
+ }
----------------
There are cases where insert_vector_elts combine to form shuffles but you don't seem to be handling those. This looks like you're just handling basic cases that can use build_vector (which is already implemented in matchCombineInsertVecElts). I'm not following what the shuffles are adding here
================
Comment at: llvm/lib/CodeGen/GlobalISel/CombinerHelper.cpp:2697
+ Builder.buildShuffleVector(Dst, Vec, OtherVec, ShuffleMask);
+ eraseInst(MI);
+}
----------------
I'm not really sure why this eraseInst helper exists
================
Comment at: llvm/test/CodeGen/AMDGPU/GlobalISel/combine-insertvecelt-to-shufflevector.mir:2
+# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
+# RUN: llc -global-isel -mtriple=amdgcn-amd-amdhsa -mcpu=gfx900 -run-pass=amdgpu-prelegalizer-combiner -verify-machineinstrs -o - %s | FileCheck %s
+# RUN: llc -global-isel -mtriple=amdgcn-amd-amdhsa -mcpu=fiji -run-pass=amdgpu-prelegalizer-combiner -verify-machineinstrs -o - %s | FileCheck %s
----------------
Don't need -global-isel with -run-pass
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D135145/new/
https://reviews.llvm.org/D135145
More information about the llvm-commits
mailing list