[llvm] [CodeGen] Allow larger number of operands to be compiled by SelectionDAG (PR #122737)

via llvm-commits llvm-commits at lists.llvm.org
Mon Jan 13 08:26:46 PST 2025


llvmbot wrote:


<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-backend-x86

@llvm/pr-subscribers-backend-aarch64

Author: Nikolay Panchenko (npanchen)

<details>
<summary>Changes</summary>

The change simply rises the limit of operands from 2^16-1 to 2^32-1 in a SelectionDAG to allow to compile C's `vector type` with size >= 2^16. Limit it to 2^32-1 as GCC fails reports an error if vector size is greater than 2^31.

Addresses issue #<!-- -->122571 

---

Patch is 1.38 MiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/122737.diff


6 Files Affected:

- (modified) llvm/include/llvm/CodeGen/SelectionDAGNodes.h (+6-6) 
- (modified) llvm/include/llvm/MC/MCInstrDesc.h (+3-3) 
- (modified) llvm/lib/CodeGen/SelectionDAG/ScheduleDAGSDNodes.cpp (+1-1) 
- (added) llvm/test/CodeGen/AArch64/selectiondag-large-vector.ll (+16271) 
- (added) llvm/test/CodeGen/RISCV/selectiondag-large-vector.ll (+12484) 
- (added) llvm/test/CodeGen/X86/selectiondag-large-vector.ll (+8205) 


``````````diff
diff --git a/llvm/include/llvm/CodeGen/SelectionDAGNodes.h b/llvm/include/llvm/CodeGen/SelectionDAGNodes.h
index 03899493847b39..4583ed88a5be43 100644
--- a/llvm/include/llvm/CodeGen/SelectionDAGNodes.h
+++ b/llvm/include/llvm/CodeGen/SelectionDAGNodes.h
@@ -78,7 +78,7 @@ void checkForCycles(const SDNode *N, const SelectionDAG *DAG = nullptr,
 ///
 struct SDVTList {
   const EVT *VTs;
-  unsigned int NumVTs;
+  uint32_t NumVTs;
 };
 
 namespace ISD {
@@ -652,8 +652,8 @@ END_TWO_BYTE_PACK()
   SDUse *UseList = nullptr;
 
   /// The number of entries in the Operand/Value list.
-  unsigned short NumOperands = 0;
-  unsigned short NumValues;
+  uint32_t NumOperands = 0;
+  uint32_t NumValues;
 
   // The ordering of the SDNodes. It roughly corresponds to the ordering of the
   // original LLVM instructions.
@@ -970,10 +970,10 @@ END_TWO_BYTE_PACK()
   static bool areOnlyUsersOf(ArrayRef<const SDNode *> Nodes, const SDNode *N);
 
   /// Return the number of values used by this operation.
-  unsigned getNumOperands() const { return NumOperands; }
+  uint32_t getNumOperands() const { return NumOperands; }
 
   /// Return the maximum number of operands that a SDNode can hold.
-  static constexpr size_t getMaxNumOperands() {
+  static constexpr uint32_t getMaxNumOperands() {
     return std::numeric_limits<decltype(SDNode::NumOperands)>::max();
   }
 
@@ -1056,7 +1056,7 @@ END_TWO_BYTE_PACK()
   uint32_t getCFIType() const { return CFIType; }
 
   /// Return the number of values defined/returned by this operator.
-  unsigned getNumValues() const { return NumValues; }
+  uint32_t getNumValues() const { return NumValues; }
 
   /// Return the type of a specified result.
   EVT getValueType(unsigned ResNo) const {
diff --git a/llvm/include/llvm/MC/MCInstrDesc.h b/llvm/include/llvm/MC/MCInstrDesc.h
index ef0b3c0a73992b..2d616b570dbefe 100644
--- a/llvm/include/llvm/MC/MCInstrDesc.h
+++ b/llvm/include/llvm/MC/MCInstrDesc.h
@@ -203,8 +203,8 @@ class MCInstrDesc {
   // find other information elsewhere in the same table.
 
   unsigned short Opcode;         // The opcode number
-  unsigned short NumOperands;    // Num of args (may be more if variable_ops)
-  unsigned char NumDefs;         // Num of args that are definitions
+  uint32_t NumOperands;          // Num of args (may be more if variable_ops)
+  uint32_t NumDefs;              // Num of args that are definitions
   unsigned char Size;            // Number of bytes in encoding.
   unsigned short SchedClass;     // enum identifying instr sched class
   unsigned char NumImplicitUses; // Num of regs implicitly used
@@ -245,7 +245,7 @@ class MCInstrDesc {
   /// definitions.  Register definitions always occur at the start of the
   /// machine operand list.  This is the number of "outs" in the .td file,
   /// and does not include implicit defs.
-  unsigned getNumDefs() const { return NumDefs; }
+  uint32_t getNumDefs() const { return NumDefs; }
 
   /// Return flags of this instruction.
   uint64_t getFlags() const { return Flags; }
diff --git a/llvm/lib/CodeGen/SelectionDAG/ScheduleDAGSDNodes.cpp b/llvm/lib/CodeGen/SelectionDAG/ScheduleDAGSDNodes.cpp
index bafe26ff7d6b76..12522afdd06852 100644
--- a/llvm/lib/CodeGen/SelectionDAG/ScheduleDAGSDNodes.cpp
+++ b/llvm/lib/CodeGen/SelectionDAG/ScheduleDAGSDNodes.cpp
@@ -572,7 +572,7 @@ void ScheduleDAGSDNodes::RegDefIter::InitNodeNumDefs() {
     NodeNumDefs = 0;
     return;
   }
-  unsigned NRegDefs = SchedDAG->TII->get(Node->getMachineOpcode()).getNumDefs();
+  uint32_t NRegDefs = SchedDAG->TII->get(Node->getMachineOpcode()).getNumDefs();
   // Some instructions define regs that are not represented in the selection DAG
   // (e.g. unused flags). See tMOVi8. Make sure we don't access past NumValues.
   NodeNumDefs = std::min(Node->getNumValues(), NRegDefs);
diff --git a/llvm/test/CodeGen/AArch64/selectiondag-large-vector.ll b/llvm/test/CodeGen/AArch64/selectiondag-large-vector.ll
new file mode 100644
index 00000000000000..fa46bc5a518689
--- /dev/null
+++ b/llvm/test/CodeGen/AArch64/selectiondag-large-vector.ll
@@ -0,0 +1,16271 @@
+; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 5
+; RUN: llc -mtriple=aarch64-unknown-unknown -mattr=+sve %s -o - | FileCheck %s
+
+define void @zero(ptr initializes((0, 262144)) %x) {
+; CHECK-LABEL: zero:
+; CHECK:       // %bb.0: // %entry
+; CHECK-NEXT:    movi v0.2d, #0000000000000000
+; CHECK-NEXT:    add x8, x0, #48, lsl #12 // =196608
+; CHECK-NEXT:    add x9, x0, #16, lsl #12 // =65536
+; CHECK-NEXT:    add x10, x0, #32, lsl #12 // =131072
+; CHECK-NEXT:    str q0, [x8, #65520]
+; CHECK-NEXT:    str q0, [x8, #65504]
+; CHECK-NEXT:    str q0, [x8, #65488]
+; CHECK-NEXT:    str q0, [x8, #65472]
+; CHECK-NEXT:    str q0, [x8, #65456]
+; CHECK-NEXT:    str q0, [x8, #65440]
+; CHECK-NEXT:    str q0, [x8, #65424]
+; CHECK-NEXT:    str q0, [x8, #65408]
+; CHECK-NEXT:    str q0, [x8, #65392]
+; CHECK-NEXT:    str q0, [x8, #65376]
+; CHECK-NEXT:    str q0, [x8, #65360]
+; CHECK-NEXT:    str q0, [x8, #65344]
+; CHECK-NEXT:    str q0, [x8, #65328]
+; CHECK-NEXT:    str q0, [x8, #65312]
+; CHECK-NEXT:    str q0, [x8, #65296]
+; CHECK-NEXT:    str q0, [x8, #65280]
+; CHECK-NEXT:    str q0, [x8, #65264]
+; CHECK-NEXT:    str q0, [x8, #65248]
+; CHECK-NEXT:    str q0, [x8, #65232]
+; CHECK-NEXT:    str q0, [x8, #65216]
+; CHECK-NEXT:    str q0, [x8, #65200]
+; CHECK-NEXT:    str q0, [x8, #65184]
+; CHECK-NEXT:    str q0, [x8, #65168]
+; CHECK-NEXT:    str q0, [x8, #65152]
+; CHECK-NEXT:    str q0, [x8, #65136]
+; CHECK-NEXT:    str q0, [x8, #65120]
+; CHECK-NEXT:    str q0, [x8, #65104]
+; CHECK-NEXT:    str q0, [x8, #65088]
+; CHECK-NEXT:    str q0, [x8, #65072]
+; CHECK-NEXT:    str q0, [x8, #65056]
+; CHECK-NEXT:    str q0, [x8, #65040]
+; CHECK-NEXT:    str q0, [x8, #65024]
+; CHECK-NEXT:    str q0, [x8, #65008]
+; CHECK-NEXT:    str q0, [x8, #64992]
+; CHECK-NEXT:    str q0, [x8, #64976]
+; CHECK-NEXT:    str q0, [x8, #64960]
+; CHECK-NEXT:    str q0, [x8, #64944]
+; CHECK-NEXT:    str q0, [x8, #64928]
+; CHECK-NEXT:    str q0, [x8, #64912]
+; CHECK-NEXT:    str q0, [x8, #64896]
+; CHECK-NEXT:    str q0, [x8, #64880]
+; CHECK-NEXT:    str q0, [x8, #64864]
+; CHECK-NEXT:    str q0, [x8, #64848]
+; CHECK-NEXT:    str q0, [x8, #64832]
+; CHECK-NEXT:    str q0, [x8, #64816]
+; CHECK-NEXT:    str q0, [x8, #64800]
+; CHECK-NEXT:    str q0, [x8, #64784]
+; CHECK-NEXT:    str q0, [x8, #64768]
+; CHECK-NEXT:    str q0, [x8, #64752]
+; CHECK-NEXT:    str q0, [x8, #64736]
+; CHECK-NEXT:    str q0, [x8, #64720]
+; CHECK-NEXT:    str q0, [x8, #64704]
+; CHECK-NEXT:    str q0, [x8, #64688]
+; CHECK-NEXT:    str q0, [x8, #64672]
+; CHECK-NEXT:    str q0, [x8, #64656]
+; CHECK-NEXT:    str q0, [x8, #64640]
+; CHECK-NEXT:    str q0, [x8, #64624]
+; CHECK-NEXT:    str q0, [x8, #64608]
+; CHECK-NEXT:    str q0, [x8, #64592]
+; CHECK-NEXT:    str q0, [x8, #64576]
+; CHECK-NEXT:    str q0, [x8, #64560]
+; CHECK-NEXT:    str q0, [x8, #64544]
+; CHECK-NEXT:    str q0, [x8, #64528]
+; CHECK-NEXT:    str q0, [x8, #64512]
+; CHECK-NEXT:    str q0, [x8, #64496]
+; CHECK-NEXT:    str q0, [x8, #64480]
+; CHECK-NEXT:    str q0, [x8, #64464]
+; CHECK-NEXT:    str q0, [x8, #64448]
+; CHECK-NEXT:    str q0, [x8, #64432]
+; CHECK-NEXT:    str q0, [x8, #64416]
+; CHECK-NEXT:    str q0, [x8, #64400]
+; CHECK-NEXT:    str q0, [x8, #64384]
+; CHECK-NEXT:    str q0, [x8, #64368]
+; CHECK-NEXT:    str q0, [x8, #64352]
+; CHECK-NEXT:    str q0, [x8, #64336]
+; CHECK-NEXT:    str q0, [x8, #64320]
+; CHECK-NEXT:    str q0, [x8, #64304]
+; CHECK-NEXT:    str q0, [x8, #64288]
+; CHECK-NEXT:    str q0, [x8, #64272]
+; CHECK-NEXT:    str q0, [x8, #64256]
+; CHECK-NEXT:    str q0, [x8, #64240]
+; CHECK-NEXT:    str q0, [x8, #64224]
+; CHECK-NEXT:    str q0, [x8, #64208]
+; CHECK-NEXT:    str q0, [x8, #64192]
+; CHECK-NEXT:    str q0, [x8, #64176]
+; CHECK-NEXT:    str q0, [x8, #64160]
+; CHECK-NEXT:    str q0, [x8, #64144]
+; CHECK-NEXT:    str q0, [x8, #64128]
+; CHECK-NEXT:    str q0, [x8, #64112]
+; CHECK-NEXT:    str q0, [x8, #64096]
+; CHECK-NEXT:    str q0, [x8, #64080]
+; CHECK-NEXT:    str q0, [x8, #64064]
+; CHECK-NEXT:    str q0, [x8, #64048]
+; CHECK-NEXT:    str q0, [x8, #64032]
+; CHECK-NEXT:    str q0, [x8, #64016]
+; CHECK-NEXT:    str q0, [x8, #64000]
+; CHECK-NEXT:    str q0, [x8, #63984]
+; CHECK-NEXT:    str q0, [x8, #63968]
+; CHECK-NEXT:    str q0, [x8, #63952]
+; CHECK-NEXT:    str q0, [x8, #63936]
+; CHECK-NEXT:    str q0, [x8, #63920]
+; CHECK-NEXT:    str q0, [x8, #63904]
+; CHECK-NEXT:    str q0, [x8, #63888]
+; CHECK-NEXT:    str q0, [x8, #63872]
+; CHECK-NEXT:    str q0, [x8, #63856]
+; CHECK-NEXT:    str q0, [x8, #63840]
+; CHECK-NEXT:    str q0, [x8, #63824]
+; CHECK-NEXT:    str q0, [x8, #63808]
+; CHECK-NEXT:    str q0, [x8, #63792]
+; CHECK-NEXT:    str q0, [x8, #63776]
+; CHECK-NEXT:    str q0, [x8, #63760]
+; CHECK-NEXT:    str q0, [x8, #63744]
+; CHECK-NEXT:    str q0, [x8, #63728]
+; CHECK-NEXT:    str q0, [x8, #63712]
+; CHECK-NEXT:    str q0, [x8, #63696]
+; CHECK-NEXT:    str q0, [x8, #63680]
+; CHECK-NEXT:    str q0, [x8, #63664]
+; CHECK-NEXT:    str q0, [x8, #63648]
+; CHECK-NEXT:    str q0, [x8, #63632]
+; CHECK-NEXT:    str q0, [x8, #63616]
+; CHECK-NEXT:    str q0, [x8, #63600]
+; CHECK-NEXT:    str q0, [x8, #63584]
+; CHECK-NEXT:    str q0, [x8, #63568]
+; CHECK-NEXT:    str q0, [x8, #63552]
+; CHECK-NEXT:    str q0, [x8, #63536]
+; CHECK-NEXT:    str q0, [x8, #63520]
+; CHECK-NEXT:    str q0, [x8, #63504]
+; CHECK-NEXT:    str q0, [x8, #63488]
+; CHECK-NEXT:    str q0, [x8, #63472]
+; CHECK-NEXT:    str q0, [x8, #63456]
+; CHECK-NEXT:    str q0, [x8, #63440]
+; CHECK-NEXT:    str q0, [x8, #63424]
+; CHECK-NEXT:    str q0, [x8, #63408]
+; CHECK-NEXT:    str q0, [x8, #63392]
+; CHECK-NEXT:    str q0, [x8, #63376]
+; CHECK-NEXT:    str q0, [x8, #63360]
+; CHECK-NEXT:    str q0, [x8, #63344]
+; CHECK-NEXT:    str q0, [x8, #63328]
+; CHECK-NEXT:    str q0, [x8, #63312]
+; CHECK-NEXT:    str q0, [x8, #63296]
+; CHECK-NEXT:    str q0, [x8, #63280]
+; CHECK-NEXT:    str q0, [x8, #63264]
+; CHECK-NEXT:    str q0, [x8, #63248]
+; CHECK-NEXT:    str q0, [x8, #63232]
+; CHECK-NEXT:    str q0, [x8, #63216]
+; CHECK-NEXT:    str q0, [x8, #63200]
+; CHECK-NEXT:    str q0, [x8, #63184]
+; CHECK-NEXT:    str q0, [x8, #63168]
+; CHECK-NEXT:    str q0, [x8, #63152]
+; CHECK-NEXT:    str q0, [x8, #63136]
+; CHECK-NEXT:    str q0, [x8, #63120]
+; CHECK-NEXT:    str q0, [x8, #63104]
+; CHECK-NEXT:    str q0, [x8, #63088]
+; CHECK-NEXT:    str q0, [x8, #63072]
+; CHECK-NEXT:    str q0, [x8, #63056]
+; CHECK-NEXT:    str q0, [x8, #63040]
+; CHECK-NEXT:    str q0, [x8, #63024]
+; CHECK-NEXT:    str q0, [x8, #63008]
+; CHECK-NEXT:    str q0, [x8, #62992]
+; CHECK-NEXT:    str q0, [x8, #62976]
+; CHECK-NEXT:    str q0, [x8, #62960]
+; CHECK-NEXT:    str q0, [x8, #62944]
+; CHECK-NEXT:    str q0, [x8, #62928]
+; CHECK-NEXT:    str q0, [x8, #62912]
+; CHECK-NEXT:    str q0, [x8, #62896]
+; CHECK-NEXT:    str q0, [x8, #62880]
+; CHECK-NEXT:    str q0, [x8, #62864]
+; CHECK-NEXT:    str q0, [x8, #62848]
+; CHECK-NEXT:    str q0, [x8, #62832]
+; CHECK-NEXT:    str q0, [x8, #62816]
+; CHECK-NEXT:    str q0, [x8, #62800]
+; CHECK-NEXT:    str q0, [x8, #62784]
+; CHECK-NEXT:    str q0, [x8, #62768]
+; CHECK-NEXT:    str q0, [x8, #62752]
+; CHECK-NEXT:    str q0, [x8, #62736]
+; CHECK-NEXT:    str q0, [x8, #62720]
+; CHECK-NEXT:    str q0, [x8, #62704]
+; CHECK-NEXT:    str q0, [x8, #62688]
+; CHECK-NEXT:    str q0, [x8, #62672]
+; CHECK-NEXT:    str q0, [x8, #62656]
+; CHECK-NEXT:    str q0, [x8, #62640]
+; CHECK-NEXT:    str q0, [x8, #62624]
+; CHECK-NEXT:    str q0, [x8, #62608]
+; CHECK-NEXT:    str q0, [x8, #62592]
+; CHECK-NEXT:    str q0, [x8, #62576]
+; CHECK-NEXT:    str q0, [x8, #62560]
+; CHECK-NEXT:    str q0, [x8, #62544]
+; CHECK-NEXT:    str q0, [x8, #62528]
+; CHECK-NEXT:    str q0, [x8, #62512]
+; CHECK-NEXT:    str q0, [x8, #62496]
+; CHECK-NEXT:    str q0, [x8, #62480]
+; CHECK-NEXT:    str q0, [x8, #62464]
+; CHECK-NEXT:    str q0, [x8, #62448]
+; CHECK-NEXT:    str q0, [x8, #62432]
+; CHECK-NEXT:    str q0, [x8, #62416]
+; CHECK-NEXT:    str q0, [x8, #62400]
+; CHECK-NEXT:    str q0, [x8, #62384]
+; CHECK-NEXT:    str q0, [x8, #62368]
+; CHECK-NEXT:    str q0, [x8, #62352]
+; CHECK-NEXT:    str q0, [x8, #62336]
+; CHECK-NEXT:    str q0, [x8, #62320]
+; CHECK-NEXT:    str q0, [x8, #62304]
+; CHECK-NEXT:    str q0, [x8, #62288]
+; CHECK-NEXT:    str q0, [x8, #62272]
+; CHECK-NEXT:    str q0, [x8, #62256]
+; CHECK-NEXT:    str q0, [x8, #62240]
+; CHECK-NEXT:    str q0, [x8, #62224]
+; CHECK-NEXT:    str q0, [x8, #62208]
+; CHECK-NEXT:    str q0, [x8, #62192]
+; CHECK-NEXT:    str q0, [x8, #62176]
+; CHECK-NEXT:    str q0, [x8, #62160]
+; CHECK-NEXT:    str q0, [x8, #62144]
+; CHECK-NEXT:    str q0, [x8, #62128]
+; CHECK-NEXT:    str q0, [x8, #62112]
+; CHECK-NEXT:    str q0, [x8, #62096]
+; CHECK-NEXT:    str q0, [x8, #62080]
+; CHECK-NEXT:    str q0, [x8, #62064]
+; CHECK-NEXT:    str q0, [x8, #62048]
+; CHECK-NEXT:    str q0, [x8, #62032]
+; CHECK-NEXT:    str q0, [x8, #62016]
+; CHECK-NEXT:    str q0, [x8, #62000]
+; CHECK-NEXT:    str q0, [x8, #61984]
+; CHECK-NEXT:    str q0, [x8, #61968]
+; CHECK-NEXT:    str q0, [x8, #61952]
+; CHECK-NEXT:    str q0, [x8, #61936]
+; CHECK-NEXT:    str q0, [x8, #61920]
+; CHECK-NEXT:    str q0, [x8, #61904]
+; CHECK-NEXT:    str q0, [x8, #61888]
+; CHECK-NEXT:    str q0, [x8, #61872]
+; CHECK-NEXT:    str q0, [x8, #61856]
+; CHECK-NEXT:    str q0, [x8, #61840]
+; CHECK-NEXT:    str q0, [x8, #61824]
+; CHECK-NEXT:    str q0, [x8, #61808]
+; CHECK-NEXT:    str q0, [x8, #61792]
+; CHECK-NEXT:    str q0, [x8, #61776]
+; CHECK-NEXT:    str q0, [x8, #61760]
+; CHECK-NEXT:    str q0, [x8, #61744]
+; CHECK-NEXT:    str q0, [x8, #61728]
+; CHECK-NEXT:    str q0, [x8, #61712]
+; CHECK-NEXT:    str q0, [x8, #61696]
+; CHECK-NEXT:    str q0, [x8, #61680]
+; CHECK-NEXT:    str q0, [x8, #61664]
+; CHECK-NEXT:    str q0, [x8, #61648]
+; CHECK-NEXT:    str q0, [x8, #61632]
+; CHECK-NEXT:    str q0, [x8, #61616]
+; CHECK-NEXT:    str q0, [x8, #61600]
+; CHECK-NEXT:    str q0, [x8, #61584]
+; CHECK-NEXT:    str q0, [x8, #61568]
+; CHECK-NEXT:    str q0, [x8, #61552]
+; CHECK-NEXT:    str q0, [x8, #61536]
+; CHECK-NEXT:    str q0, [x8, #61520]
+; CHECK-NEXT:    str q0, [x8, #61504]
+; CHECK-NEXT:    str q0, [x8, #61488]
+; CHECK-NEXT:    str q0, [x8, #61472]
+; CHECK-NEXT:    str q0, [x8, #61456]
+; CHECK-NEXT:    str q0, [x8, #59408]
+; CHECK-NEXT:    str q0, [x8, #59424]
+; CHECK-NEXT:    str q0, [x8, #59440]
+; CHECK-NEXT:    str q0, [x8, #59456]
+; CHECK-NEXT:    str q0, [x8, #59472]
+; CHECK-NEXT:    str q0, [x8, #59488]
+; CHECK-NEXT:    str q0, [x8, #59504]
+; CHECK-NEXT:    str q0, [x8, #59520]
+; CHECK-NEXT:    str q0, [x8, #59536]
+; CHECK-NEXT:    str q0, [x8, #59552]
+; CHECK-NEXT:    str q0, [x8, #59568]
+; CHECK-NEXT:    str q0, [x8, #59584]
+; CHECK-NEXT:    str q0, [x8, #59600]
+; CHECK-NEXT:    str q0, [x8, #59616]
+; CHECK-NEXT:    str q0, [x8, #59632]
+; CHECK-NEXT:    str q0, [x8, #59648]
+; CHECK-NEXT:    str q0, [x8, #59664]
+; CHECK-NEXT:    str q0, [x8, #59680]
+; CHECK-NEXT:    str q0, [x8, #59696]
+; CHECK-NEXT:    str q0, [x8, #59712]
+; CHECK-NEXT:    str q0, [x8, #59728]
+; CHECK-NEXT:    str q0, [x8, #59744]
+; CHECK-NEXT:    str q0, [x8, #59760]
+; CHECK-NEXT:    str q0, [x8, #59776]
+; CHECK-NEXT:    str q0, [x8, #59792]
+; CHECK-NEXT:    str q0, [x8, #59808]
+; CHECK-NEXT:    str q0, [x8, #59824]
+; CHECK-NEXT:    str q0, [x8, #59840]
+; CHECK-NEXT:    str q0, [x8, #59856]
+; CHECK-NEXT:    str q0, [x8, #59872]
+; CHECK-NEXT:    str q0, [x8, #59888]
+; CHECK-NEXT:    str q0, [x8, #59904]
+; CHECK-NEXT:    str q0, [x8, #59920]
+; CHECK-NEXT:    str q0, [x8, #59936]
+; CHECK-NEXT:    str q0, [x8, #59952]
+; CHECK-NEXT:    str q0, [x8, #59968]
+; CHECK-NEXT:    str q0, [x8, #59984]
+; CHECK-NEXT:    str q0, [x8, #60000]
+; CHECK-NEXT:    str q0, [x8, #60016]
+; CHECK-NEXT:    str q0, [x8, #60032]
+; CHECK-NEXT:    str q0, [x8, #60048]
+; CHECK-NEXT:    str q0, [x8, #60064]
+; CHECK-NEXT:    str q0, [x8, #60080]
+; CHECK-NEXT:    str q0, [x8, #60096]
+; CHECK-NEXT:    str q0, [x8, #60112]
+; CHECK-NEXT:    str q0, [x8, #60128]
+; CHECK-NEXT:    str q0, [x8, #60144]
+; CHECK-NEXT:    str q0, [x8, #60160]
+; CHECK-NEXT:    str q0, [x8, #60176]
+; CHECK-NEXT:    str q0, [x8, #60192]
+; CHECK-NEXT:    str q0, [x8, #60208]
+; CHECK-NEXT:    str q0, [x8, #60224]
+; CHECK-NEXT:    str q0, [x8, #60240]
+; CHECK-NEXT:    str q0, [x8, #60256]
+; CHECK-NEXT:    str q0, [x8, #60272]
+; CHECK-NEXT:    str q0, [x8, #60288]
+; CHECK-NEXT:    str q0, [x8, #60304]
+; CHECK-NEXT:    str q0, [x8, #60320]
+; CHECK-NEXT:    str q0, [x8, #60336]
+; CHECK-NEXT:    str q0, [x8, #60352]
+; CHECK-NEXT:    str q0, [x8, #60368]
+; CHECK-NEXT:    str q0, [x8, #60384]
+; CHECK-NEXT:    str q0, [x8, #60400]
+; CHECK-NEXT:    str q0, [x8, #60416]
+; CHECK-NEXT:    str q0, [x8, #60432]
+; CHECK-NEXT:    str q0, [x8, #60448]
+; CHECK-NEXT:    str q0, [x8, #60464]
+; CHECK-NEXT:    str q0, [x8, #60480]
+; CHECK-NEXT:    str q0, [x8, #60496]
+; CHECK-NEXT:    str q0, [x8, #60512]
+; CHECK-NEXT:    str q0, [x8, #60528]
+; CHECK-NEXT:    str q0, [x8, #60544]
+; CHECK-NEXT:    str q0, [x8, #60560]
+; CHECK-NEXT:    str q0, [x8, #60576]
+; CHECK-NEXT:    str q0, [x8, #60592]
+; CHECK-NEXT:    str q0, [x8, #60608]
+; CHECK-NEXT:    str q0, [x8, #60624]
+; CHECK-NEXT:    str q0, [x8, #60640]
+; CHECK-NEXT:    str q0, [x8, #60656]
+; CHECK-NEXT:    str q0, [x8, #60672]
+; CHECK-NEXT:    str q0, [x8, #60688]
+; CHECK-NEXT:    str q0, [x8, #60704]
+; CHECK-NEXT:    str q0, [x8, #60720]
+; CHECK-NEXT:    str q0, [x8, #60736]
+; CHECK-NEXT:    str q0, [x8, #60752]
+; CHECK-NEXT:    str q0, [x8, #60768]
+; CHECK-NEXT:    str q0, [x8, #60784]
+; CHECK-NEXT:    str q0, [x8, #60800]
+; CHECK-NEXT:    str q0, [x8, #60816]
+; CHECK-NEXT:    str q0, [x8, #60832]
+; CHECK-NEXT:    str q0, [x8, #60848]
+; CHECK-NEXT:    str q0, [x8, #60864]
+; CHECK-NEXT:    str q0, [x8, #60880]
+; CHECK-NEXT:    str q0, [x8, #60896]
+; CHECK-NEXT:    str q0, [x8, #60912]
+; CHECK-NEXT:    str q0, [x8, #60928]
+; CHECK-NEXT:    str q0, [x8, #60944]
+; CHECK-NEXT:    str q0, [x8, #60960]
+; CHECK-NEXT:    str q0, [x8, #60976]
+; CHECK-NEXT:    str q0, [x8, #60992]
+; CHECK-NEXT:    str q0, [x8, #61008]
+; CHECK-NEXT:    str q0, [x8, #61024]
+; CHECK-NEXT:    str q0, [x8, #61040]
+; CHECK-NEXT:    str q0, [x8, #61056]
+; CHECK-NEXT:    str q0, [x8, #61072]
+; CHECK-NEXT:    str q0, [x8, #61088]
+; CHECK-NEXT:    str q0, [x8, #61104]
+; CHECK-NEXT:    str q0, [x8, #61120]
+; CHECK-NEXT:    str q0, [x8, #61136]
+; CHECK-NEXT:    str q0, [x8, #61152]
+; CHECK-NEXT:    str q0, [x8, #61168]
+; CHECK-NEXT:    str q0, [x8, #61184]
+; CHECK-NEXT:    str q0, [x8, #61200]
+; CHECK-NEXT:    str q0, [x8, #61216]
+; CHECK-NEXT:    str q0, [x8, #61232]
+; CHECK-NEXT:    str q0, [x8, #61248]
+; CHECK-NEXT:    str q0, [x8, #61264]
+; CHECK-NEXT:    str q0, [x8, #61280]
+; CHECK-NEXT:    str q0, [x8, #61296]
+; CHECK-NEXT:    str q0, [x8, #61312]
+; CHECK-NEXT:    str q0, [x8, #61328]
+; CHECK-NEXT:    str q0, [x8, #61344]
+; CHECK-NEXT:    str q0, [x8, #61360]
+; CHECK-NEXT:    str q0, [x8, #61376]
+; CHECK-NEXT:    str q0, [x8, #61392]
+; CHECK-NEXT:    str q0, [x8, #61408]
+; CHECK-NEXT:    str q0, [x8, #61424]
+; CHECK-NEXT:    str q0, [x8, #61440]
+; CHECK-NEXT:    str q0, [x8, #59392]
+; CHECK-NEXT:    str q0, [x8, #59376]
+; CHECK-NEXT:    str q0, [x8, #59360]
+; CHECK-NEXT:    str q0, [x8, #59344]
+; CHECK-NEXT:    str q0, [x8, #59328]
+; CHECK-NEXT:    str q0, [x8, #59312]
+; CHECK-NEXT:    str q0, [x8, #59296]
+; CHECK-NEXT:    str q0, [x8, #59280]
+; CHECK-NEXT:    str q0, [x8, #59264]
+; CHECK-NEXT:    str q0, [x8, #59248]
+; CHECK-NEXT:    str q0, [x8, #59232]
+; CHECK-NEXT:    str q0, [x8, #59216]
+; CHECK-NEXT:    str q0, [x8, #59200]
+; CHECK-NEXT:    str q0, [x8, #59184]
+; CHECK-NEXT:    str q0, [x8, #59168]
+; CHECK-NEXT:    str q0, [x8, #59152]
+; CHECK-NEXT:    str q0, [x8, #59136]
+; CHECK-NEXT:    str q0, [x8, #59120]
+; CHECK-NEXT:    str q0, [x8, #59104]
+; CHECK-NEXT:    str q0, [x8, #59088]
+; CHECK-NEXT:    str q0, [x8, #59072]
+; CHECK-NEXT:    str q0, [x8, #59056]
+; CHECK-NEXT:    str q0, [x8, #59040]
+; CHECK-NEXT:    str q0, [x8, #59024]
+; CHECK-NEXT...
[truncated]

``````````

</details>


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


More information about the llvm-commits mailing list