[clang] [Clang] Remove 3-element vector load and store special handling (PR #104661)

Shilei Tian via cfe-commits cfe-commits at lists.llvm.org
Fri Jan 17 07:57:01 PST 2025


================
@@ -52,6 +52,17 @@ class AMDGPUABIInfo final : public DefaultABIInfo {
   void computeInfo(CGFunctionInfo &FI) const override;
   RValue EmitVAArg(CodeGenFunction &CGF, Address VAListAddr, QualType Ty,
                    AggValueSlot Slot) const override;
+
+  llvm::FixedVectorType *
+  getOptimalVectorType(llvm::FixedVectorType *T,
+                       const LangOptions &Opt) const override {
+    // We have legal instructions for 96-bit so 3x32 can be supported.
+    // FIXME: This check should be a subtarget feature as technically SI doesn't
+    // support it.
+    if (T->getNumElements() == 3 && getDataLayout().getTypeSizeInBits(T) == 96)
----------------
shiltian wrote:

It looks like they are preserved anyway. Clang only has special handling of 3-element vector.

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


More information about the cfe-commits mailing list