Skip to content

Commit dad563e

Browse files
authored
[AArch64][GlobalISel] Add legalization for G_VECREDUCE_MUL (llvm#68398)
1 parent d86047c commit dad563e

File tree

3 files changed

+604
-2
lines changed

3 files changed

+604
-2
lines changed

llvm/lib/Target/AArch64/GISel/AArch64LegalizerInfo.cpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -895,6 +895,13 @@ AArch64LegalizerInfo::AArch64LegalizerInfo(const AArch64Subtarget &ST)
895895
.clampMaxNumElements(1, s16, 8)
896896
.lower();
897897

898+
getActionDefinitionsBuilder(G_VECREDUCE_MUL)
899+
.clampMaxNumElements(1, s32, 2)
900+
.clampMaxNumElements(1, s16, 4)
901+
.clampMaxNumElements(1, s8, 8)
902+
.scalarize(1)
903+
.lower();
904+
898905
getActionDefinitionsBuilder(
899906
{G_VECREDUCE_OR, G_VECREDUCE_AND, G_VECREDUCE_XOR})
900907
// Try to break down into smaller vectors as long as they're at least 64

llvm/test/CodeGen/AArch64/GlobalISel/legalizer-info-validation.mir

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -754,8 +754,8 @@
754754
# DEBUG-NEXT: .. type index coverage check SKIPPED: user-defined predicate detected
755755
# DEBUG-NEXT: .. imm index coverage check SKIPPED: user-defined predicate detected
756756
# DEBUG-NEXT: G_VECREDUCE_MUL (opcode {{[0-9]+}}): 2 type indices, 0 imm indices
757-
# DEBUG-NEXT: .. type index coverage check SKIPPED: no rules defined
758-
# DEBUG-NEXT: .. imm index coverage check SKIPPED: no rules defined
757+
# DEBUG-NEXT: .. type index coverage check SKIPPED: user-defined predicate detected
758+
# DEBUG-NEXT: .. imm index coverage check SKIPPED: user-defined predicate detected
759759
# DEBUG-NEXT: G_VECREDUCE_AND (opcode {{[0-9]+}}): 2 type indices, 0 imm indices
760760
# DEBUG-NEXT: .. opcode {{[0-9]+}} is aliased to {{[0-9]+}}
761761
# DEBUG-NEXT: .. type index coverage check SKIPPED: user-defined predicate detected

0 commit comments

Comments
 (0)