[llvm] [AArch64][GlobalISel] Basic add_sat and sub_sat vector handling. (PR #80650)

David Green via llvm-commits llvm-commits at lists.llvm.org
Tue Feb 6 07:19:46 PST 2024


================
@@ -1153,8 +1150,14 @@ AArch64LegalizerInfo::AArch64LegalizerInfo(const AArch64Subtarget &ST)
       .minScalarEltSameAsIf(always, 1, 0)
       .maxScalarEltSameAsIf(always, 1, 0);
 
-  // TODO: Vector types.
-  getActionDefinitionsBuilder({G_SADDSAT, G_SSUBSAT}).lowerIf(isScalar(0));
+  getActionDefinitionsBuilder({G_UADDSAT, G_SADDSAT, G_USUBSAT, G_SSUBSAT})
+      .legalFor({v2s64, v2s32, v4s32, v4s16, v8s16, v8s8, v16s8})
+      .clampNumElements(0, v8s8, v16s8)
+      .clampNumElements(0, v4s16, v8s16)
+      .clampNumElements(0, v2s32, v4s32)
+      .clampMaxNumElements(0, s64, 2)
+      .moreElementsToNextPow2(0)
+      .lowerIf(isScalar(0));
----------------
davemgreen wrote:

I was attempting to focus on the more normal vector types in this patch. A lot of other operations like G_SADDO do not handle vectors yet, let alone odd sized vectors, so it would seem difficult to write a test that works.

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


More information about the llvm-commits mailing list