Skip to content

[MIR] Serialize virtual register flags #110228

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged

Conversation

optimisan
Copy link
Contributor

@optimisan optimisan commented Sep 27, 2024

[MIR] Serialize virtual register flags

This introduces target-specific vreg flag serialization. Flags are represented as uint8_t and the TargetRegisterInfo override provides methods getVRegFlagValue to deserialize and getVRegFlagsOfReg to serialize.

Copy link
Contributor Author

optimisan commented Sep 27, 2024

Copy link

github-actions bot commented Sep 27, 2024

✅ With the latest revision this PR passed the C/C++ code formatter.

@llvmbot
Copy link
Member

llvmbot commented Sep 27, 2024

@llvm/pr-subscribers-llvm-globalisel
@llvm/pr-subscribers-backend-x86

@llvm/pr-subscribers-backend-amdgpu

Author: Akshat Oke (Akshat-Oke)

Changes

[MIR] Serialize virtual register flags

This introduces target-specific vreg flag serialization. Flags are represented as uint8_t and the TargetRegisterInfo override provides methods getVRegFlagValue to deserialize and getVRegFlagsOfReg to serialize.


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

31 Files Affected:

  • (modified) llvm/include/llvm/CodeGen/MIRParser/MIParser.h (+3)
  • (modified) llvm/include/llvm/CodeGen/MIRYamlMapping.h (+3)
  • (modified) llvm/include/llvm/CodeGen/TargetRegisterInfo.h (+9)
  • (modified) llvm/lib/CodeGen/MIRParser/MIParser.cpp (+11)
  • (modified) llvm/lib/CodeGen/MIRParser/MIRParser.cpp (+9)
  • (modified) llvm/lib/CodeGen/MIRPrinter.cpp (+20-7)
  • (modified) llvm/test/CodeGen/AMDGPU/limit-coalesce.mir (+7-7)
  • (modified) llvm/test/CodeGen/MIR/X86/expected-named-register-in-allocation-hint.mir (+2-2)
  • (modified) llvm/test/CodeGen/MIR/X86/generic-instr-type.mir (+5-5)
  • (modified) llvm/test/CodeGen/MIR/X86/register-operand-class.mir (+5-5)
  • (modified) llvm/test/CodeGen/MIR/X86/roundtrip.mir (+2-2)
  • (modified) llvm/test/CodeGen/MIR/X86/simple-register-allocation-hints.mir (+3-3)
  • (modified) llvm/test/CodeGen/MIR/X86/virtual-registers.mir (+6-6)
  • (modified) llvm/test/CodeGen/X86/GlobalISel/legalize-mul-v128.mir (+9-9)
  • (modified) llvm/test/CodeGen/X86/GlobalISel/legalize-mul-v256.mir (+9-9)
  • (modified) llvm/test/CodeGen/X86/GlobalISel/legalize-mul-v512.mir (+9-9)
  • (modified) llvm/test/CodeGen/X86/GlobalISel/regbankselect-AVX2.mir (+10-10)
  • (modified) llvm/test/CodeGen/X86/GlobalISel/regbankselect-AVX512.mir (+10-10)
  • (modified) llvm/test/CodeGen/X86/GlobalISel/regbankselect-X32.mir (+5-5)
  • (modified) llvm/test/CodeGen/X86/GlobalISel/select-GV-32.mir (+6-6)
  • (modified) llvm/test/CodeGen/X86/GlobalISel/select-GV-64.mir (+4-4)
  • (modified) llvm/test/CodeGen/X86/GlobalISel/select-add-v128.mir (+36-36)
  • (modified) llvm/test/CodeGen/X86/GlobalISel/select-add-v256.mir (+36-36)
  • (modified) llvm/test/CodeGen/X86/GlobalISel/select-copy.mir (+19-19)
  • (modified) llvm/test/CodeGen/X86/GlobalISel/select-extract-vec256.mir (+8-8)
  • (modified) llvm/test/CodeGen/X86/GlobalISel/select-extract-vec512.mir (+8-8)
  • (modified) llvm/test/CodeGen/X86/GlobalISel/select-inc.mir (+4-4)
  • (modified) llvm/test/CodeGen/X86/GlobalISel/select-memop-v256.mir (+12-12)
  • (modified) llvm/test/CodeGen/X86/GlobalISel/x86-legalize-GV.mir (+1-1)
  • (modified) llvm/test/CodeGen/X86/GlobalISel/x86_64-legalize-GV.mir (+1-1)
  • (modified) llvm/test/tools/llvm-reduce/mir/preserve-reg-hints.mir (+5-5)
diff --git a/llvm/include/llvm/CodeGen/MIRParser/MIParser.h b/llvm/include/llvm/CodeGen/MIRParser/MIParser.h
index 7fd9d99ded6995..a1a48f2fb02a81 100644
--- a/llvm/include/llvm/CodeGen/MIRParser/MIParser.h
+++ b/llvm/include/llvm/CodeGen/MIRParser/MIParser.h
@@ -47,6 +47,7 @@ struct VRegInfo {
   } D;
   Register VReg;
   Register PreferredReg;
+  std::vector<::uint8_t> Flags;
 };
 
 using Name2RegClassMap = StringMap<const TargetRegisterClass *>;
@@ -150,6 +151,8 @@ struct PerTargetMIParsingState {
   /// Return null if the name isn't a register bank.
   const RegisterBank *getRegBank(StringRef Name);
 
+  bool getVRegFlagValue(StringRef FlagName, uint8_t& FlagValue) const;
+
   PerTargetMIParsingState(const TargetSubtargetInfo &STI)
     : Subtarget(STI) {
     initNames2RegClasses();
diff --git a/llvm/include/llvm/CodeGen/MIRYamlMapping.h b/llvm/include/llvm/CodeGen/MIRYamlMapping.h
index ab8dc442e04b7b..e0866cb58802ab 100644
--- a/llvm/include/llvm/CodeGen/MIRYamlMapping.h
+++ b/llvm/include/llvm/CodeGen/MIRYamlMapping.h
@@ -191,6 +191,7 @@ struct VirtualRegisterDefinition {
   UnsignedValue ID;
   StringValue Class;
   StringValue PreferredRegister;
+  std::vector<FlowStringValue> RegisterFlags;
 
   // TODO: Serialize the target specific register hints.
 
@@ -206,6 +207,8 @@ template <> struct MappingTraits<VirtualRegisterDefinition> {
     YamlIO.mapRequired("class", Reg.Class);
     YamlIO.mapOptional("preferred-register", Reg.PreferredRegister,
                        StringValue()); // Don't print out when it's empty.
+    YamlIO.mapOptional("flags", Reg.RegisterFlags,
+                       std::vector<FlowStringValue>());
   }
 
   static const bool flow = true;
diff --git a/llvm/include/llvm/CodeGen/TargetRegisterInfo.h b/llvm/include/llvm/CodeGen/TargetRegisterInfo.h
index 9ea0fba1144b13..6ec38ebb4f886b 100644
--- a/llvm/include/llvm/CodeGen/TargetRegisterInfo.h
+++ b/llvm/include/llvm/CodeGen/TargetRegisterInfo.h
@@ -1213,6 +1213,15 @@ class TargetRegisterInfo : public MCRegisterInfo {
   virtual bool isNonallocatableRegisterCalleeSave(MCRegister Reg) const {
     return false;
   }
+
+  virtual std::pair<bool, uint8_t> getVRegFlagValue(StringRef Name) const {
+    return {false, 0};
+  }
+
+  virtual SmallVector<std::string>
+  getVRegFlagsOfReg(Register Reg, const MachineFunction &MF) const {
+    return {};
+  }
 };
 
 //===----------------------------------------------------------------------===//
diff --git a/llvm/lib/CodeGen/MIRParser/MIParser.cpp b/llvm/lib/CodeGen/MIRParser/MIParser.cpp
index a0f0e27478d022..fb3338447798e5 100644
--- a/llvm/lib/CodeGen/MIRParser/MIParser.cpp
+++ b/llvm/lib/CodeGen/MIRParser/MIParser.cpp
@@ -127,6 +127,16 @@ bool PerTargetMIParsingState::getRegisterByName(StringRef RegName,
   return false;
 }
 
+bool PerTargetMIParsingState::getVRegFlagValue(StringRef FlagName, uint8_t& FlagValue) const {
+  const auto *TRI = Subtarget.getRegisterInfo();
+  assert(TRI && "Expected target register info");
+  auto [HasVReg, FV] = TRI->getVRegFlagValue(FlagName);
+  if(!HasVReg)
+    return true;
+  FlagValue = FV;
+  return false;
+}
+
 void PerTargetMIParsingState::initNames2InstrOpCodes() {
   if (!Names2InstrOpCodes.empty())
     return;
@@ -1776,6 +1786,7 @@ bool MIParser::parseRegisterOperand(MachineOperand &Dest,
 
         MRI.setRegClassOrRegBank(Reg, static_cast<RegisterBank *>(nullptr));
         MRI.setType(Reg, Ty);
+        MRI.noteNewVirtualRegister(Reg);
       }
     }
   } else if (consumeIfPresent(MIToken::lparen)) {
diff --git a/llvm/lib/CodeGen/MIRParser/MIRParser.cpp b/llvm/lib/CodeGen/MIRParser/MIRParser.cpp
index 997c428ca77dc4..452f6418a65e4b 100644
--- a/llvm/lib/CodeGen/MIRParser/MIRParser.cpp
+++ b/llvm/lib/CodeGen/MIRParser/MIRParser.cpp
@@ -683,6 +683,15 @@ bool MIRParserImpl::parseRegisterInfo(PerFunctionMIParsingState &PFS,
                                  VReg.PreferredRegister.Value, Error))
         return error(Error, VReg.PreferredRegister.SourceRange);
     }
+
+    for(const auto &FlagStringValue: VReg.RegisterFlags) {
+      uint8_t FlagValue;
+      if(Target->getVRegFlagValue(FlagStringValue.Value, FlagValue))
+        return error(FlagStringValue.SourceRange.Start,
+                      Twine("use of undefined register flag '") +
+                          FlagStringValue.Value + "'");
+        Info.Flags.push_back(FlagValue);
+    }
   }
 
   // Parse the liveins.
diff --git a/llvm/lib/CodeGen/MIRPrinter.cpp b/llvm/lib/CodeGen/MIRPrinter.cpp
index cf6122bce22364..95838c00edb886 100644
--- a/llvm/lib/CodeGen/MIRPrinter.cpp
+++ b/llvm/lib/CodeGen/MIRPrinter.cpp
@@ -113,7 +113,8 @@ class MIRPrinter {
 
   void print(const MachineFunction &MF);
 
-  void convert(yaml::MachineFunction &MF, const MachineRegisterInfo &RegInfo,
+  void convert(yaml::MachineFunction &YamlMF, const MachineFunction &MF,
+               const MachineRegisterInfo &RegInfo,
                const TargetRegisterInfo *TRI);
   void convert(ModuleSlotTracker &MST, yaml::MachineFrameInfo &YamlMFI,
                const MachineFrameInfo &MFI);
@@ -230,7 +231,7 @@ void MIRPrinter::print(const MachineFunction &MF) {
   YamlMF.NoVRegs = MF.getProperties().hasProperty(
       MachineFunctionProperties::Property::NoVRegs);
 
-  convert(YamlMF, MF.getRegInfo(), MF.getSubtarget().getRegisterInfo());
+  convert(YamlMF, MF, MF.getRegInfo(), MF.getSubtarget().getRegisterInfo());
   MachineModuleSlotTracker MST(MMI, &MF);
   MST.incorporateFunction(MF.getFunction());
   convert(MST, YamlMF.FrameInfo, MF.getFrameInfo());
@@ -315,10 +316,21 @@ printStackObjectDbgInfo(const MachineFunction::VariableDbgInfo &DebugVar,
   }
 }
 
-void MIRPrinter::convert(yaml::MachineFunction &MF,
+static void printRegFlags(Register Reg,
+                          std::vector<yaml::FlowStringValue> &RegisterFlags,
+                          const MachineFunction &MF,
+                          const TargetRegisterInfo *TRI) {
+  SmallVector<std::string> FlagValues = TRI->getVRegFlagsOfReg(Reg, MF);
+  for (auto &Flag : FlagValues) {
+    RegisterFlags.push_back(yaml::FlowStringValue(Flag));
+  }
+}
+
+void MIRPrinter::convert(yaml::MachineFunction &YamlMF,
+                         const MachineFunction &MF,
                          const MachineRegisterInfo &RegInfo,
                          const TargetRegisterInfo *TRI) {
-  MF.TracksRegLiveness = RegInfo.tracksLiveness();
+  YamlMF.TracksRegLiveness = RegInfo.tracksLiveness();
 
   // Print the virtual register definitions.
   for (unsigned I = 0, E = RegInfo.getNumVirtRegs(); I < E; ++I) {
@@ -331,7 +343,8 @@ void MIRPrinter::convert(yaml::MachineFunction &MF,
     Register PreferredReg = RegInfo.getSimpleHint(Reg);
     if (PreferredReg)
       printRegMIR(PreferredReg, VReg.PreferredRegister, TRI);
-    MF.VirtualRegisters.push_back(VReg);
+    printRegFlags(Reg, VReg.RegisterFlags, MF, TRI);
+    YamlMF.VirtualRegisters.push_back(VReg);
   }
 
   // Print the live ins.
@@ -340,7 +353,7 @@ void MIRPrinter::convert(yaml::MachineFunction &MF,
     printRegMIR(LI.first, LiveIn.Register, TRI);
     if (LI.second)
       printRegMIR(LI.second, LiveIn.VirtualRegister, TRI);
-    MF.LiveIns.push_back(LiveIn);
+    YamlMF.LiveIns.push_back(LiveIn);
   }
 
   // Prints the callee saved registers.
@@ -352,7 +365,7 @@ void MIRPrinter::convert(yaml::MachineFunction &MF,
       printRegMIR(*I, Reg, TRI);
       CalleeSavedRegisters.push_back(Reg);
     }
-    MF.CalleeSavedRegisters = CalleeSavedRegisters;
+    YamlMF.CalleeSavedRegisters = CalleeSavedRegisters;
   }
 }
 
diff --git a/llvm/test/CodeGen/AMDGPU/limit-coalesce.mir b/llvm/test/CodeGen/AMDGPU/limit-coalesce.mir
index b9105418a588c3..ca774825f4ddef 100644
--- a/llvm/test/CodeGen/AMDGPU/limit-coalesce.mir
+++ b/llvm/test/CodeGen/AMDGPU/limit-coalesce.mir
@@ -2,13 +2,13 @@
 
 # Check that coalescer does not create wider register tuple than in source
 
-# CHECK:  - { id: 2, class: vreg_64, preferred-register: '' }
-# CHECK:  - { id: 3, class: vreg_64, preferred-register: '' }
-# CHECK:  - { id: 4, class: vreg_64, preferred-register: '' }
-# CHECK:  - { id: 5, class: vreg_96, preferred-register: '' }
-# CHECK:  - { id: 6, class: vreg_96, preferred-register: '' }
-# CHECK:  - { id: 7, class: vreg_128, preferred-register: '' }
-# CHECK:  - { id: 8, class: vreg_128, preferred-register: '' }
+# CHECK:  - { id: 2, class: vreg_64, preferred-register: '', flags: [  ] }
+# CHECK:  - { id: 3, class: vreg_64, preferred-register: '', flags: [  ] }
+# CHECK:  - { id: 4, class: vreg_64, preferred-register: '', flags: [  ] }
+# CHECK:  - { id: 5, class: vreg_96, preferred-register: '', flags: [  ] }
+# CHECK:  - { id: 6, class: vreg_96, preferred-register: '', flags: [  ] }
+# CHECK:  - { id: 7, class: vreg_128, preferred-register: '', flags: [  ] }
+# CHECK:  - { id: 8, class: vreg_128, preferred-register: '', flags: [  ] }
 # No more registers shall be defined
 # CHECK-NEXT: liveins:
 # CHECK:    FLAT_STORE_DWORDX2 $vgpr0_vgpr1, %4,
diff --git a/llvm/test/CodeGen/MIR/X86/expected-named-register-in-allocation-hint.mir b/llvm/test/CodeGen/MIR/X86/expected-named-register-in-allocation-hint.mir
index 7ed390570adc7c..03f2ec4d6cd3f7 100644
--- a/llvm/test/CodeGen/MIR/X86/expected-named-register-in-allocation-hint.mir
+++ b/llvm/test/CodeGen/MIR/X86/expected-named-register-in-allocation-hint.mir
@@ -14,8 +14,8 @@ name:            test
 tracksRegLiveness: true
 registers:
   - { id: 0, class: gr32 }
-  # CHECK: - { id: 1, class: gr32, preferred-register: '%0' }
-  # CHECK: - { id: 2, class: gr32, preferred-register: '$edi' }
+  # CHECK: - { id: 1, class: gr32, preferred-register: '%0', flags: [  ] }
+  # CHECK: - { id: 2, class: gr32, preferred-register: '$edi', flags: [  ] }
   - { id: 1, class: gr32, preferred-register: '%0' }
   - { id: 2, class: gr32, preferred-register: '$edi' }
 body: |
diff --git a/llvm/test/CodeGen/MIR/X86/generic-instr-type.mir b/llvm/test/CodeGen/MIR/X86/generic-instr-type.mir
index 710a18ac3aeff4..7514cdab0ab110 100644
--- a/llvm/test/CodeGen/MIR/X86/generic-instr-type.mir
+++ b/llvm/test/CodeGen/MIR/X86/generic-instr-type.mir
@@ -18,11 +18,11 @@
 ---
 name:            test_vregs
 # CHECK:      registers:
-# CHECK-NEXT:   - { id: 0, class: _, preferred-register: '' }
-# CHECK-NEXT:   - { id: 1, class: _, preferred-register: '' }
-# CHECK-NEXT:   - { id: 2, class: _, preferred-register: '' }
-# CHECK-NEXT:   - { id: 3, class: _, preferred-register: '' }
-# CHECK-NEXT:   - { id: 4, class: _, preferred-register: '' }
+# CHECK-NEXT:   - { id: 0, class: _, preferred-register: '', flags: [  ] }
+# CHECK-NEXT:   - { id: 1, class: _, preferred-register: '', flags: [  ] }
+# CHECK-NEXT:   - { id: 2, class: _, preferred-register: '', flags: [  ] }
+# CHECK-NEXT:   - { id: 3, class: _, preferred-register: '', flags: [  ] }
+# CHECK-NEXT:   - { id: 4, class: _, preferred-register: '', flags: [  ] }
 registers:
   - { id: 0, class: _ }
   - { id: 1, class: _ }
diff --git a/llvm/test/CodeGen/MIR/X86/register-operand-class.mir b/llvm/test/CodeGen/MIR/X86/register-operand-class.mir
index f62d7294eabc10..521722d9f24c54 100644
--- a/llvm/test/CodeGen/MIR/X86/register-operand-class.mir
+++ b/llvm/test/CodeGen/MIR/X86/register-operand-class.mir
@@ -6,11 +6,11 @@
 ---
 # CHECK-LABEL: name: func
 # CHECK: registers:
-# CHECK:   - { id: 0, class: gr32, preferred-register: '' }
-# CHECK:   - { id: 1, class: gr64, preferred-register: '' }
-# CHECK:   - { id: 2, class: gr32, preferred-register: '' }
-# CHECK:   - { id: 3, class: gr16, preferred-register: '' }
-# CHECK:   - { id: 4, class: _, preferred-register: '' }
+# CHECK:   - { id: 0, class: gr32, preferred-register: '', flags: [   ] }
+# CHECK:   - { id: 1, class: gr64, preferred-register: '', flags: [   ] }
+# CHECK:   - { id: 2, class: gr32, preferred-register: '', flags: [   ] }
+# CHECK:   - { id: 3, class: gr16, preferred-register: '', flags: [   ] }
+# CHECK:   - { id: 4, class: _, preferred-register: '', flags: [   ] }
 name: func
 body: |
   bb.0:
diff --git a/llvm/test/CodeGen/MIR/X86/roundtrip.mir b/llvm/test/CodeGen/MIR/X86/roundtrip.mir
index 46f08ad1a214da..6124113a0dd88f 100644
--- a/llvm/test/CodeGen/MIR/X86/roundtrip.mir
+++ b/llvm/test/CodeGen/MIR/X86/roundtrip.mir
@@ -2,8 +2,8 @@
 ---
 # CHECK-LABEL: name: func0
 # CHECK: registers:
-# CHECK:   - { id: 0, class: gr32, preferred-register: '' }
-# CHECK:   - { id: 1, class: gr32, preferred-register: '' }
+# CHECK:   - { id: 0, class: gr32, preferred-register: '', flags: [   ] }
+# CHECK:   - { id: 1, class: gr32, preferred-register: '', flags: [   ] }
 # CHECK: body: |
 # CHECK:   bb.0:
 # CHECK:     %0:gr32 = MOV32r0 implicit-def $eflags
diff --git a/llvm/test/CodeGen/MIR/X86/simple-register-allocation-hints.mir b/llvm/test/CodeGen/MIR/X86/simple-register-allocation-hints.mir
index 84d298dbd40700..aacf66c98cf5d3 100644
--- a/llvm/test/CodeGen/MIR/X86/simple-register-allocation-hints.mir
+++ b/llvm/test/CodeGen/MIR/X86/simple-register-allocation-hints.mir
@@ -15,9 +15,9 @@
 name:            test
 tracksRegLiveness: true
 # CHECK: registers:
-# CHECK-NEXT:  - { id: 0, class: gr32, preferred-register: '' }
-# CHECK-NEXT:  - { id: 1, class: gr32, preferred-register: '$esi' }
-# CHECK-NEXT:  - { id: 2, class: gr32, preferred-register: '$edi' }
+# CHECK-NEXT:  - { id: 0, class: gr32, preferred-register: '', flags: [   ] }
+# CHECK-NEXT:  - { id: 1, class: gr32, preferred-register: '$esi', flags: [   ] }
+# CHECK-NEXT:  - { id: 2, class: gr32, preferred-register: '$edi', flags: [   ] }
 registers:
   - { id: 0, class: gr32 }
   - { id: 1, class: gr32, preferred-register: '$esi' }
diff --git a/llvm/test/CodeGen/MIR/X86/virtual-registers.mir b/llvm/test/CodeGen/MIR/X86/virtual-registers.mir
index e317746e08a18e..819f65638b67de 100644
--- a/llvm/test/CodeGen/MIR/X86/virtual-registers.mir
+++ b/llvm/test/CodeGen/MIR/X86/virtual-registers.mir
@@ -33,9 +33,9 @@
 name:            bar
 tracksRegLiveness: true
 # CHECK:      registers:
-# CHECK-NEXT:   - { id: 0, class: gr32, preferred-register: '' }
-# CHECK-NEXT:   - { id: 1, class: gr32, preferred-register: '' }
-# CHECK-NEXT:   - { id: 2, class: gr32, preferred-register: '' }
+# CHECK-NEXT:   - { id: 0, class: gr32, preferred-register: '', flags: [   ] }
+# CHECK-NEXT:   - { id: 1, class: gr32, preferred-register: '', flags: [   ] }
+# CHECK-NEXT:   - { id: 2, class: gr32, preferred-register: '', flags: [   ] }
 registers:
   - { id: 0, class: gr32 }
   - { id: 1, class: gr32 }
@@ -67,9 +67,9 @@ name:            foo
 tracksRegLiveness: true
 # CHECK: name: foo
 # CHECK:      registers:
-# CHECK-NEXT:   - { id: 0, class: gr32, preferred-register: '' }
-# CHECK-NEXT:   - { id: 1, class: gr32, preferred-register: '' }
-# CHECK-NEXT:   - { id: 2, class: gr32, preferred-register: '' }
+# CHECK-NEXT:   - { id: 0, class: gr32, preferred-register: '', flags: [   ] }
+# CHECK-NEXT:   - { id: 1, class: gr32, preferred-register: '', flags: [   ] }
+# CHECK-NEXT:   - { id: 2, class: gr32, preferred-register: '', flags: [   ] }
 registers:
   - { id: 2, class: gr32 }
   - { id: 0, class: gr32 }
diff --git a/llvm/test/CodeGen/X86/GlobalISel/legalize-mul-v128.mir b/llvm/test/CodeGen/X86/GlobalISel/legalize-mul-v128.mir
index 3b8455684f33d2..881ceac1d1f7f2 100644
--- a/llvm/test/CodeGen/X86/GlobalISel/legalize-mul-v128.mir
+++ b/llvm/test/CodeGen/X86/GlobalISel/legalize-mul-v128.mir
@@ -26,9 +26,9 @@ alignment:       16
 legalized:       false
 regBankSelected: false
 # ALL:      registers:
-# ALL-NEXT:   - { id: 0, class: _, preferred-register: '' }
-# ALL-NEXT:   - { id: 1, class: _, preferred-register: '' }
-# ALL-NEXT:   - { id: 2, class: _, preferred-register: '' }
+# ALL-NEXT:   - { id: 0, class: _, preferred-register: '', flags: [   ] }
+# ALL-NEXT:   - { id: 1, class: _, preferred-register: '', flags: [   ] }
+# ALL-NEXT:   - { id: 2, class: _, preferred-register: '', flags: [   ] }
 registers:
   - { id: 0, class: _ }
   - { id: 1, class: _ }
@@ -56,9 +56,9 @@ alignment:       16
 legalized:       false
 regBankSelected: false
 # ALL:      registers:
-# ALL-NEXT:   - { id: 0, class: _, preferred-register: '' }
-# ALL-NEXT:   - { id: 1, class: _, preferred-register: '' }
-# ALL-NEXT:   - { id: 2, class: _, preferred-register: '' }
+# ALL-NEXT:   - { id: 0, class: _, preferred-register: '', flags: [   ] }
+# ALL-NEXT:   - { id: 1, class: _, preferred-register: '', flags: [   ] }
+# ALL-NEXT:   - { id: 2, class: _, preferred-register: '', flags: [   ] }
 registers:
   - { id: 0, class: _ }
   - { id: 1, class: _ }
@@ -86,9 +86,9 @@ alignment:       16
 legalized:       false
 regBankSelected: false
 # ALL:      registers:
-# ALL-NEXT:   - { id: 0, class: _, preferred-register: '' }
-# ALL-NEXT:   - { id: 1, class: _, preferred-register: '' }
-# ALL-NEXT:   - { id: 2, class: _, preferred-register: '' }
+# ALL-NEXT:   - { id: 0, class: _, preferred-register: '', flags: [   ] }
+# ALL-NEXT:   - { id: 1, class: _, preferred-register: '', flags: [   ] }
+# ALL-NEXT:   - { id: 2, class: _, preferred-register: '', flags: [   ] }
 registers:
   - { id: 0, class: _ }
   - { id: 1, class: _ }
diff --git a/llvm/test/CodeGen/X86/GlobalISel/legalize-mul-v256.mir b/llvm/test/CodeGen/X86/GlobalISel/legalize-mul-v256.mir
index 4965b069715a11..c2800bef9713de 100644
--- a/llvm/test/CodeGen/X86/GlobalISel/legalize-mul-v256.mir
+++ b/llvm/test/CodeGen/X86/GlobalISel/legalize-mul-v256.mir
@@ -26,9 +26,9 @@ alignment:       16
 legalized:       false
 regBankSelected: false
 # ALL:      registers:
-# ALL-NEXT:   - { id: 0, class: _, preferred-register: '' }
-# ALL-NEXT:   - { id: 1, class: _, preferred-register: '' }
-# ALL-NEXT:   - { id: 2, class: _, preferred-register: '' }
+# ALL-NEXT:   - { id: 0, class: _, preferred-register: '', flags: [   ] }
+# ALL-NEXT:   - { id: 1, class: _, preferred-register: '', flags: [   ] }
+# ALL-NEXT:   - { id: 2, class: _, preferred-register: '', flags: [   ] }
 registers:
   - { id: 0, class: _ }
   - { id: 1, class: _ }
@@ -56,9 +56,9 @@ alignment:       16
 legalized:       false
 regBankSelected: false
 # ALL:      registers:
-# ALL-NEXT:   - { id: 0, class: _, preferred-register: '' }
-# ALL-NEXT:   - { id: 1, class: _, preferred-register: '' }
-# ALL-NEXT:   - { id: 2, class: _, preferred-register: '' }
+# ALL-NEXT:   - { id: 0, class: _, preferred-register: '', flags: [   ] }
+# ALL-NEXT:   - { id: 1, class: _, preferred-register: '', flags: [   ] }
+# ALL-NEXT:   - { id: 2, class: _, preferred-register: '', flags: [   ] }
 registers:
   - { id: 0, class: _ }
   - { id: 1, class: _ }
@@ -86,9 +86,9 @@ alignment:       16
 legalized:       false
 regBankSelected: false
 # ALL:      registers:
-# ALL-NEXT:   - { id: 0, class: _, preferred-register: '' }
-# ALL-NEXT:   - { id: 1, class: _, preferred-register: '' }
-# ALL-NEXT:   - { id: 2, class: _, preferred-register: '' }
+# ALL-NEXT:   - { id: 0, class: _, preferred-register: '', flags: [   ] }
+# ALL-NEXT:   - { id: 1, class: _, preferred-register: '', flags: [   ] }
+# ALL-NEXT:   - { id: 2, class: _, preferred-register: '', flags: [   ] }
 registers:
   - { id: 0, class: _ }
   - { id: 1, class: _ }
diff --git a/llvm/test/CodeGen/X86/GlobalISel/legalize-mul-v512.mir b/llvm/test/CodeGen/X86/GlobalISel/legalize-mul-v512.mir
index 77a94581b66fde..e45818af22a356 100644
--- a/llvm/test/CodeGen/X86/GlobalISel/legalize-mul-v512.mir
+++ b/llvm/test/CodeGen/X86/GlobalISel/legalize-mul-v512.mir
@@ -28,9 +28,9 @@ alignment:       16
 legalized:       false
 regBankSelected: false
 # ALL:      registers:
-# ALL-NEXT:   - { id: 0, class: _, preferred-register: '' }
-# ALL-NEXT:   - { id: 1, class: _, preferred-register: '' }
-# ALL-NEXT:   - { id: 2, class: _, preferred-register: '' }
+# ALL-NEXT:   - { id: 0, class: _, preferred-register: '', flags: [   ] }
+# ALL-NEXT:   - { id: 1, class: _, preferred-register: '', flags: [   ] }
+# ALL-NEXT:   - { id: 2, class: _, preferred-register: '', flags: [   ] }
 registers:
   - { id: 0, class: _ }
   - { id: 1, class: _ }
@@ -58,9 +58,9 @@ alignment:       16
 legalized:       false
 regBankSelected: false
 # ALL:      registers:
-# ALL-NEXT:   - { id: 0, class: _, preferred-register: '' }
-# ALL-NEXT:   - { id: 1, class: _, preferred-register: '' }
-# ALL-NEXT:   - { id: 2, class: _, preferred-register: '' }
+# ALL-NEXT:   - { id: 0, class: _, preferred-register: '', flags: [   ] }
+# ALL-NEXT:   - { id: 1, class: _, preferred-...
[truncated]

Copy link
Contributor

@jayfoad jayfoad left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you omit printing , flags: [ ] in the very common case where it is empty? In fact I do not see any tests where it is not empty.

Copy link
Contributor Author

optimisan commented Sep 27, 2024

Can you omit printing , flags: [ ] in the very common case where it is empty? In fact I do not see any tests where it is not empty.

I believe that would require changing how YamlO prints optional fields, unless there is another way to do it here I don't know of.

@cdevadas
Copy link
Collaborator

Missing new test for this serialized field.
Add a valid test here llvm/test/CodeGen/MIR/AMDGPU/machine-function-info-no-ir.mir
Also, capture all invalid cases in a negative test.


for(const auto &FlagStringValue: VReg.RegisterFlags) {
uint8_t FlagValue;
if(Target->getVRegFlagValue(FlagStringValue.Value, FlagValue))
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Space after if

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yup, somehow forgot to clang format

@cdevadas
Copy link
Collaborator

Missing new test for this serialized field. Add a valid test here llvm/test/CodeGen/MIR/AMDGPU/machine-function-info-no-ir.mir Also, capture all invalid cases in a negative test.

Ignore this comment. I just noticed the other review (#110229) where you're adding the target-specific changes.

@arsenm
Copy link
Contributor

arsenm commented Sep 29, 2024

Can you omit printing , flags: [ ] in the very common case where it is empty? In fact I do not see any tests where it is not empty.

I believe that would require changing how YamlO prints optional fields, unless there is another way to do it here I don't know of.

For the other fields, I thought this changed based on the -simplify-mir flag. (Also, -simplify-mir should really be the default)

@@ -47,6 +47,7 @@ struct VRegInfo {
} D;
Register VReg;
Register PreferredReg;
std::vector<::uint8_t> Flags;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why is the :: needed

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There's a struct named uint8_t defined in this class.
I believe the author meant enum : uint8_t instead.

uint8_t FlagValue;
if(Target->getVRegFlagValue(FlagStringValue.Value, FlagValue))
return error(FlagStringValue.SourceRange.Start,
Twine("use of undefined register flag '") +
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Missing error test?

@optimisan
Copy link
Contributor Author

Can you omit printing , flags: [ ] in the very common case where it is empty? In fact I do not see any tests where it is not empty.

I believe that would require changing how YamlO prints optional fields, unless there is another way to do it here I don't know of.

For the other fields, I thought this changed based on the -simplify-mir flag. (Also, -simplify-mir should really be the default)

That does the job, thanks.

@optimisan optimisan force-pushed the users/Akshat-Oke/09-27-_mir_serialize_virtual_register_flags branch from f494d56 to 336b9bc Compare October 4, 2024 06:40
@optimisan optimisan force-pushed the users/Akshat-Oke/09-27-_mir_serialize_virtual_register_flags branch from 9f8b6eb to 7af9e5e Compare October 9, 2024 05:57
@optimisan optimisan force-pushed the users/Akshat-Oke/09-27-_mir_serialize_virtual_register_flags branch from d167efd to 5e1c572 Compare October 14, 2024 08:30
@optimisan
Copy link
Contributor Author

optimisan commented Oct 14, 2024

Merge activity

  • Oct 14, 4:48 AM EDT: A user started a stack merge that includes this pull request via Graphite.
  • Oct 14, 4:49 AM EDT: A user merged this pull request with Graphite.

@optimisan optimisan merged commit dbfca24 into main Oct 14, 2024
5 of 8 checks passed
@optimisan optimisan deleted the users/Akshat-Oke/09-27-_mir_serialize_virtual_register_flags branch October 14, 2024 08:49
@llvm-ci
Copy link
Collaborator

llvm-ci commented Oct 14, 2024

LLVM Buildbot has detected a new failure on builder llvm-clang-aarch64-darwin running on doug-worker-4 while building llvm at step 6 "test-build-unified-tree-check-all".

Full details are available at: https://lab.llvm.org/buildbot/#/builders/190/builds/7569

Here is the relevant piece of the build log for the reference
Step 6 (test-build-unified-tree-check-all) failure: test (failure)
******************** TEST 'LLVM :: CodeGen/AArch64/GlobalISel/arm64-regbankselect.mir' FAILED ********************
Exit Code: 1

Command Output (stderr):
--
RUN: at line 1: /Users/buildbot/buildbot-root/aarch64-darwin/build/bin/llc -O0 -debugify-and-strip-all-safe -run-pass=regbankselect /Users/buildbot/buildbot-root/aarch64-darwin/llvm-project/llvm/test/CodeGen/AArch64/GlobalISel/arm64-regbankselect.mir -o - -verify-machineinstrs | /Users/buildbot/buildbot-root/aarch64-darwin/build/bin/FileCheck /Users/buildbot/buildbot-root/aarch64-darwin/llvm-project/llvm/test/CodeGen/AArch64/GlobalISel/arm64-regbankselect.mir --check-prefix=CHECK --check-prefix=FAST
+ /Users/buildbot/buildbot-root/aarch64-darwin/build/bin/llc -O0 -debugify-and-strip-all-safe -run-pass=regbankselect /Users/buildbot/buildbot-root/aarch64-darwin/llvm-project/llvm/test/CodeGen/AArch64/GlobalISel/arm64-regbankselect.mir -o - -verify-machineinstrs
+ /Users/buildbot/buildbot-root/aarch64-darwin/build/bin/FileCheck /Users/buildbot/buildbot-root/aarch64-darwin/llvm-project/llvm/test/CodeGen/AArch64/GlobalISel/arm64-regbankselect.mir --check-prefix=CHECK --check-prefix=FAST
�[1m/Users/buildbot/buildbot-root/aarch64-darwin/llvm-project/llvm/test/CodeGen/AArch64/GlobalISel/arm64-regbankselect.mir:219:15: �[0m�[0;1;31merror: �[0m�[1mCHECK-NEXT: expected string not found in input
�[0m# CHECK-NEXT: - { id: 0, class: gpr32, preferred-register: '' }
�[0;1;32m              ^
�[0m�[1m<stdin>:525:11: �[0m�[0;1;30mnote: �[0m�[1mscanning from here
�[0mregisters:
�[0;1;32m          ^
�[0m�[1m<stdin>:526:2: �[0m�[0;1;30mnote: �[0m�[1mpossible intended match here
�[0m - { id: 0, class: gpr32, preferred-register: '', flags: [ ] }
�[0;1;32m ^
�[0m�[1m/Users/buildbot/buildbot-root/aarch64-darwin/llvm-project/llvm/test/CodeGen/AArch64/GlobalISel/arm64-regbankselect.mir:362:15: �[0m�[0;1;31merror: �[0m�[1mCHECK-NEXT: expected string not found in input
�[0m# CHECK-NEXT: - { id: 0, class: gpr64, preferred-register: '' }
�[0;1;32m              ^
�[0m�[1m<stdin>:880:11: �[0m�[0;1;30mnote: �[0m�[1mscanning from here
�[0mregisters:
�[0;1;32m          ^
�[0m�[1m<stdin>:881:2: �[0m�[0;1;30mnote: �[0m�[1mpossible intended match here
�[0m - { id: 0, class: gpr64, preferred-register: '', flags: [ ] }
�[0;1;32m ^
�[0m�[1m/Users/buildbot/buildbot-root/aarch64-darwin/llvm-project/llvm/test/CodeGen/AArch64/GlobalISel/arm64-regbankselect.mir:400:15: �[0m�[0;1;31merror: �[0m�[1mCHECK-NEXT: expected string not found in input
�[0m# CHECK-NEXT: - { id: 0, class: gpr, preferred-register: '' }
�[0;1;32m              ^
�[0m�[1m<stdin>:1004:11: �[0m�[0;1;30mnote: �[0m�[1mscanning from here
�[0mregisters:
�[0;1;32m          ^
�[0m�[1m<stdin>:1005:2: �[0m�[0;1;30mnote: �[0m�[1mpossible intended match here
�[0m - { id: 0, class: gpr, preferred-register: '', flags: [ ] }
�[0;1;32m ^
�[0m�[1m/Users/buildbot/buildbot-root/aarch64-darwin/llvm-project/llvm/test/CodeGen/AArch64/GlobalISel/arm64-regbankselect.mir:426:15: �[0m�[0;1;31merror: �[0m�[1mCHECK-NEXT: expected string not found in input
�[0m# CHECK-NEXT: - { id: 0, class: fpr, preferred-register: '' }
�[0;1;32m              ^
�[0m�[1m<stdin>:1068:11: �[0m�[0;1;30mnote: �[0m�[1mscanning from here
�[0mregisters:
�[0;1;32m          ^
�[0m�[1m<stdin>:1069:2: �[0m�[0;1;30mnote: �[0m�[1mpossible intended match here
�[0m - { id: 0, class: fpr, preferred-register: '', flags: [ ] }
�[0;1;32m ^
�[0m�[1m/Users/buildbot/buildbot-root/aarch64-darwin/llvm-project/llvm/test/CodeGen/AArch64/GlobalISel/arm64-regbankselect.mir:451:15: �[0m�[0;1;31merror: �[0m�[1mCHECK-NEXT: expected string not found in input
�[0m# CHECK-NEXT: - { id: 0, class: gpr, preferred-register: '' }
�[0;1;32m              ^
�[0m�[1m<stdin>:1132:11: �[0m�[0;1;30mnote: �[0m�[1mscanning from here
�[0mregisters:
�[0;1;32m          ^
...

@llvm-ci
Copy link
Collaborator

llvm-ci commented Oct 14, 2024

LLVM Buildbot has detected a new failure on builder ml-opt-rel-x86-64 running on ml-opt-rel-x86-64-b1 while building llvm at step 6 "test-build-unified-tree-check-all".

Full details are available at: https://lab.llvm.org/buildbot/#/builders/185/builds/6774

Here is the relevant piece of the build log for the reference
Step 6 (test-build-unified-tree-check-all) failure: test (failure)
******************** TEST 'LLVM :: CodeGen/AArch64/GlobalISel/call-translator.ll' FAILED ********************
Exit Code: 1

Command Output (stderr):
--
RUN: at line 1: /b/ml-opt-rel-x86-64-b1/build/bin/llc -mtriple=aarch64-linux-gnu -O0 -stop-after=irtranslator -global-isel -verify-machineinstrs /b/ml-opt-rel-x86-64-b1/llvm-project/llvm/test/CodeGen/AArch64/GlobalISel/call-translator.ll -o - 2>&1 | /b/ml-opt-rel-x86-64-b1/build/bin/FileCheck /b/ml-opt-rel-x86-64-b1/llvm-project/llvm/test/CodeGen/AArch64/GlobalISel/call-translator.ll
+ /b/ml-opt-rel-x86-64-b1/build/bin/llc -mtriple=aarch64-linux-gnu -O0 -stop-after=irtranslator -global-isel -verify-machineinstrs /b/ml-opt-rel-x86-64-b1/llvm-project/llvm/test/CodeGen/AArch64/GlobalISel/call-translator.ll -o -
+ /b/ml-opt-rel-x86-64-b1/build/bin/FileCheck /b/ml-opt-rel-x86-64-b1/llvm-project/llvm/test/CodeGen/AArch64/GlobalISel/call-translator.ll
/b/ml-opt-rel-x86-64-b1/llvm-project/llvm/test/CodeGen/AArch64/GlobalISel/call-translator.ll:38:10: error: CHECK: expected string not found in input
; CHECK: - { id: [[FUNC:[0-9]+]], class: gpr64, preferred-register: '' }
         ^
<stdin>:402:11: note: scanning from here
registers:
          ^
<stdin>:403:2: note: possible intended match here
 - { id: 0, class: gpr64, preferred-register: '', flags: [ ] }
 ^

Input file: <stdin>
Check file: /b/ml-opt-rel-x86-64-b1/llvm-project/llvm/test/CodeGen/AArch64/GlobalISel/call-translator.ll

-dump-input=help explains the following input dump.

Input was:
<<<<<<
            .
            .
            .
          397: hasEHFunclets: false 
          398: isOutlined: false 
          399: debugInstrRef: false 
          400: failsVerification: false 
          401: tracksDebugUserValues: false 
          402: registers: 
check:38'0               X error: no match found
          403:  - { id: 0, class: gpr64, preferred-register: '', flags: [ ] } 
check:38'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
check:38'1      ?                                                              possible intended match
          404: liveins: 
check:38'0     ~~~~~~~~~
          405:  - { reg: '$x0', virtual-reg: '' } 
check:38'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          406: frameInfo: 
check:38'0     ~~~~~~~~~~~
          407:  isFrameAddressTaken: false 
check:38'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          408:  isReturnAddressTaken: false 
check:38'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
            .
            .
...

@llvm-ci
Copy link
Collaborator

llvm-ci commented Oct 14, 2024

LLVM Buildbot has detected a new failure on builder ml-opt-dev-x86-64 running on ml-opt-dev-x86-64-b2 while building llvm at step 6 "test-build-unified-tree-check-all".

Full details are available at: https://lab.llvm.org/buildbot/#/builders/137/builds/6874

Here is the relevant piece of the build log for the reference
Step 6 (test-build-unified-tree-check-all) failure: test (failure)
******************** TEST 'LLVM :: CodeGen/AArch64/GlobalISel/arm64-regbankselect.mir' FAILED ********************
Exit Code: 1

Command Output (stderr):
--
RUN: at line 1: /b/ml-opt-dev-x86-64-b1/build/bin/llc -O0 -debugify-and-strip-all-safe -run-pass=regbankselect /b/ml-opt-dev-x86-64-b1/llvm-project/llvm/test/CodeGen/AArch64/GlobalISel/arm64-regbankselect.mir -o - -verify-machineinstrs | /b/ml-opt-dev-x86-64-b1/build/bin/FileCheck /b/ml-opt-dev-x86-64-b1/llvm-project/llvm/test/CodeGen/AArch64/GlobalISel/arm64-regbankselect.mir --check-prefix=CHECK --check-prefix=FAST
+ /b/ml-opt-dev-x86-64-b1/build/bin/FileCheck /b/ml-opt-dev-x86-64-b1/llvm-project/llvm/test/CodeGen/AArch64/GlobalISel/arm64-regbankselect.mir --check-prefix=CHECK --check-prefix=FAST
+ /b/ml-opt-dev-x86-64-b1/build/bin/llc -O0 -debugify-and-strip-all-safe -run-pass=regbankselect /b/ml-opt-dev-x86-64-b1/llvm-project/llvm/test/CodeGen/AArch64/GlobalISel/arm64-regbankselect.mir -o - -verify-machineinstrs
/b/ml-opt-dev-x86-64-b1/llvm-project/llvm/test/CodeGen/AArch64/GlobalISel/arm64-regbankselect.mir:219:15: error: CHECK-NEXT: expected string not found in input
# CHECK-NEXT: - { id: 0, class: gpr32, preferred-register: '' }
              ^
<stdin>:525:11: note: scanning from here
registers:
          ^
<stdin>:526:2: note: possible intended match here
 - { id: 0, class: gpr32, preferred-register: '', flags: [ ] }
 ^
/b/ml-opt-dev-x86-64-b1/llvm-project/llvm/test/CodeGen/AArch64/GlobalISel/arm64-regbankselect.mir:362:15: error: CHECK-NEXT: expected string not found in input
# CHECK-NEXT: - { id: 0, class: gpr64, preferred-register: '' }
              ^
<stdin>:880:11: note: scanning from here
registers:
          ^
<stdin>:881:2: note: possible intended match here
 - { id: 0, class: gpr64, preferred-register: '', flags: [ ] }
 ^
/b/ml-opt-dev-x86-64-b1/llvm-project/llvm/test/CodeGen/AArch64/GlobalISel/arm64-regbankselect.mir:400:15: error: CHECK-NEXT: expected string not found in input
# CHECK-NEXT: - { id: 0, class: gpr, preferred-register: '' }
              ^
<stdin>:1004:11: note: scanning from here
registers:
          ^
<stdin>:1005:2: note: possible intended match here
 - { id: 0, class: gpr, preferred-register: '', flags: [ ] }
 ^
/b/ml-opt-dev-x86-64-b1/llvm-project/llvm/test/CodeGen/AArch64/GlobalISel/arm64-regbankselect.mir:426:15: error: CHECK-NEXT: expected string not found in input
# CHECK-NEXT: - { id: 0, class: fpr, preferred-register: '' }
              ^
<stdin>:1068:11: note: scanning from here
registers:
          ^
<stdin>:1069:2: note: possible intended match here
 - { id: 0, class: fpr, preferred-register: '', flags: [ ] }
 ^
/b/ml-opt-dev-x86-64-b1/llvm-project/llvm/test/CodeGen/AArch64/GlobalISel/arm64-regbankselect.mir:451:15: error: CHECK-NEXT: expected string not found in input
# CHECK-NEXT: - { id: 0, class: gpr, preferred-register: '' }
              ^
<stdin>:1132:11: note: scanning from here
registers:
          ^
...

@llvm-ci
Copy link
Collaborator

llvm-ci commented Oct 14, 2024

LLVM Buildbot has detected a new failure on builder ml-opt-devrel-x86-64 running on ml-opt-devrel-x86-64-b2 while building llvm at step 6 "test-build-unified-tree-check-all".

Full details are available at: https://lab.llvm.org/buildbot/#/builders/175/builds/6790

Here is the relevant piece of the build log for the reference
Step 6 (test-build-unified-tree-check-all) failure: test (failure)
******************** TEST 'LLVM :: CodeGen/AArch64/GlobalISel/arm64-regbankselect.mir' FAILED ********************
Exit Code: 1

Command Output (stderr):
--
RUN: at line 1: /b/ml-opt-devrel-x86-64-b1/build/bin/llc -O0 -debugify-and-strip-all-safe -run-pass=regbankselect /b/ml-opt-devrel-x86-64-b1/llvm-project/llvm/test/CodeGen/AArch64/GlobalISel/arm64-regbankselect.mir -o - -verify-machineinstrs | /b/ml-opt-devrel-x86-64-b1/build/bin/FileCheck /b/ml-opt-devrel-x86-64-b1/llvm-project/llvm/test/CodeGen/AArch64/GlobalISel/arm64-regbankselect.mir --check-prefix=CHECK --check-prefix=FAST
+ /b/ml-opt-devrel-x86-64-b1/build/bin/llc -O0 -debugify-and-strip-all-safe -run-pass=regbankselect /b/ml-opt-devrel-x86-64-b1/llvm-project/llvm/test/CodeGen/AArch64/GlobalISel/arm64-regbankselect.mir -o - -verify-machineinstrs
+ /b/ml-opt-devrel-x86-64-b1/build/bin/FileCheck /b/ml-opt-devrel-x86-64-b1/llvm-project/llvm/test/CodeGen/AArch64/GlobalISel/arm64-regbankselect.mir --check-prefix=CHECK --check-prefix=FAST
/b/ml-opt-devrel-x86-64-b1/llvm-project/llvm/test/CodeGen/AArch64/GlobalISel/arm64-regbankselect.mir:219:15: error: CHECK-NEXT: expected string not found in input
# CHECK-NEXT: - { id: 0, class: gpr32, preferred-register: '' }
              ^
<stdin>:525:11: note: scanning from here
registers:
          ^
<stdin>:526:2: note: possible intended match here
 - { id: 0, class: gpr32, preferred-register: '', flags: [ ] }
 ^
/b/ml-opt-devrel-x86-64-b1/llvm-project/llvm/test/CodeGen/AArch64/GlobalISel/arm64-regbankselect.mir:362:15: error: CHECK-NEXT: expected string not found in input
# CHECK-NEXT: - { id: 0, class: gpr64, preferred-register: '' }
              ^
<stdin>:880:11: note: scanning from here
registers:
          ^
<stdin>:881:2: note: possible intended match here
 - { id: 0, class: gpr64, preferred-register: '', flags: [ ] }
 ^
/b/ml-opt-devrel-x86-64-b1/llvm-project/llvm/test/CodeGen/AArch64/GlobalISel/arm64-regbankselect.mir:400:15: error: CHECK-NEXT: expected string not found in input
# CHECK-NEXT: - { id: 0, class: gpr, preferred-register: '' }
              ^
<stdin>:1004:11: note: scanning from here
registers:
          ^
<stdin>:1005:2: note: possible intended match here
 - { id: 0, class: gpr, preferred-register: '', flags: [ ] }
 ^
/b/ml-opt-devrel-x86-64-b1/llvm-project/llvm/test/CodeGen/AArch64/GlobalISel/arm64-regbankselect.mir:426:15: error: CHECK-NEXT: expected string not found in input
# CHECK-NEXT: - { id: 0, class: fpr, preferred-register: '' }
              ^
<stdin>:1068:11: note: scanning from here
registers:
          ^
<stdin>:1069:2: note: possible intended match here
 - { id: 0, class: fpr, preferred-register: '', flags: [ ] }
 ^
/b/ml-opt-devrel-x86-64-b1/llvm-project/llvm/test/CodeGen/AArch64/GlobalISel/arm64-regbankselect.mir:451:15: error: CHECK-NEXT: expected string not found in input
# CHECK-NEXT: - { id: 0, class: gpr, preferred-register: '' }
              ^
<stdin>:1132:11: note: scanning from here
registers:
          ^
...

@llvm-ci
Copy link
Collaborator

llvm-ci commented Oct 14, 2024

LLVM Buildbot has detected a new failure on builder premerge-monolithic-linux running on premerge-linux-1 while building llvm at step 7 "test-build-unified-tree-check-all".

Full details are available at: https://lab.llvm.org/buildbot/#/builders/153/builds/11723

Here is the relevant piece of the build log for the reference
Step 7 (test-build-unified-tree-check-all) failure: test (failure)
******************** TEST 'LLVM :: CodeGen/PowerPC/aix-p8vector-liveins.ll' FAILED ********************
Exit Code: 1

Command Output (stderr):
--
RUN: at line 1: /build/buildbot/premerge-monolithic-linux/build/bin/llc -mtriple powerpc-ibm-aix-xcoff -mcpu=pwr8    -verify-machineinstrs -stop-after=finalize-isel  < /build/buildbot/premerge-monolithic-linux/llvm-project/llvm/test/CodeGen/PowerPC/aix-p8vector-liveins.ll |    /build/buildbot/premerge-monolithic-linux/build/bin/FileCheck --check-prefixes=POWR8,VSX /build/buildbot/premerge-monolithic-linux/llvm-project/llvm/test/CodeGen/PowerPC/aix-p8vector-liveins.ll
+ /build/buildbot/premerge-monolithic-linux/build/bin/llc -mtriple powerpc-ibm-aix-xcoff -mcpu=pwr8 -verify-machineinstrs -stop-after=finalize-isel
+ /build/buildbot/premerge-monolithic-linux/build/bin/FileCheck --check-prefixes=POWR8,VSX /build/buildbot/premerge-monolithic-linux/llvm-project/llvm/test/CodeGen/PowerPC/aix-p8vector-liveins.ll
/build/buildbot/premerge-monolithic-linux/llvm-project/llvm/test/CodeGen/PowerPC/aix-p8vector-liveins.ll:21:10: error: POWR8: expected string not found in input
; POWR8: - { id: 0, class: vssrc, preferred-register: '' }
         ^
<stdin>:29:11: note: scanning from here
name: vssr
          ^
<stdin>:52:2: note: possible intended match here
 - { id: 0, class: vssrc, preferred-register: '', flags: [ ] }
 ^
/build/buildbot/premerge-monolithic-linux/llvm-project/llvm/test/CodeGen/PowerPC/aix-p8vector-liveins.ll:74:8: error: VSX: expected string not found in input
; VSX: - { id: 0, class: vsfrc, preferred-register: '' }
       ^
<stdin>:136:11: note: scanning from here
registers:
          ^
<stdin>:137:2: note: possible intended match here
 - { id: 0, class: vsfrc, preferred-register: '', flags: [ ] }
 ^

Input file: <stdin>
Check file: /build/buildbot/premerge-monolithic-linux/llvm-project/llvm/test/CodeGen/PowerPC/aix-p8vector-liveins.ll

-dump-input=help explains the following input dump.

Input was:
<<<<<<
            .
            .
            .
           24:   
           25:  attributes #0 = { "target-cpu"="pwr8" } 
           26:  
           27: ... 
           28: --- 
           29: name: vssr 
check:21'0               X error: no match found
           30: alignment: 16 
check:21'0     ~~~~~~~~~~~~~~
           31: exposesReturnsTwice: false 
check:21'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~
           32: legalized: false 
check:21'0     ~~~~~~~~~~~~~~~~~
...

@llvm-ci
Copy link
Collaborator

llvm-ci commented Oct 14, 2024

LLVM Buildbot has detected a new failure on builder llvm-clang-x86_64-gcc-ubuntu running on sie-linux-worker3 while building llvm at step 6 "test-build-unified-tree-check-all".

Full details are available at: https://lab.llvm.org/buildbot/#/builders/174/builds/6753

Here is the relevant piece of the build log for the reference
Step 6 (test-build-unified-tree-check-all) failure: test (failure)
******************** TEST 'LLVM :: CodeGen/ARM/GlobalISel/arm-regbankselect.mir' FAILED ********************
Exit Code: 1

Command Output (stderr):
--
RUN: at line 1: /home/buildbot/buildbot-root/llvm-clang-x86_64-gcc-ubuntu/build/bin/llc -debugify-and-strip-all-safe=0 -mtriple arm-- -run-pass=regbankselect /home/buildbot/buildbot-root/llvm-clang-x86_64-gcc-ubuntu/llvm-project/llvm/test/CodeGen/ARM/GlobalISel/arm-regbankselect.mir -o - | /home/buildbot/buildbot-root/llvm-clang-x86_64-gcc-ubuntu/build/bin/FileCheck /home/buildbot/buildbot-root/llvm-clang-x86_64-gcc-ubuntu/llvm-project/llvm/test/CodeGen/ARM/GlobalISel/arm-regbankselect.mir
+ /home/buildbot/buildbot-root/llvm-clang-x86_64-gcc-ubuntu/build/bin/FileCheck /home/buildbot/buildbot-root/llvm-clang-x86_64-gcc-ubuntu/llvm-project/llvm/test/CodeGen/ARM/GlobalISel/arm-regbankselect.mir
+ /home/buildbot/buildbot-root/llvm-clang-x86_64-gcc-ubuntu/build/bin/llc -debugify-and-strip-all-safe=0 -mtriple arm-- -run-pass=regbankselect /home/buildbot/buildbot-root/llvm-clang-x86_64-gcc-ubuntu/llvm-project/llvm/test/CodeGen/ARM/GlobalISel/arm-regbankselect.mir -o -
�[1m/home/buildbot/buildbot-root/llvm-clang-x86_64-gcc-ubuntu/llvm-project/llvm/test/CodeGen/ARM/GlobalISel/arm-regbankselect.mir:112:10: �[0m�[0;1;31merror: �[0m�[1mCHECK: expected string not found in input
�[0m# CHECK: - { id: 0, class: gprb, preferred-register: '' }
�[0;1;32m         ^
�[0m�[1m<stdin>:266:11: �[0m�[0;1;30mnote: �[0m�[1mscanning from here
�[0mregisters:
�[0;1;32m          ^
�[0m�[1m<stdin>:267:2: �[0m�[0;1;30mnote: �[0m�[1mpossible intended match here
�[0m - { id: 0, class: gprb, preferred-register: '', flags: [ ] }
�[0;1;32m ^
�[0m�[1m/home/buildbot/buildbot-root/llvm-clang-x86_64-gcc-ubuntu/llvm-project/llvm/test/CodeGen/ARM/GlobalISel/arm-regbankselect.mir:138:10: �[0m�[0;1;31merror: �[0m�[1mCHECK: expected string not found in input
�[0m# CHECK: - { id: 0, class: gprb, preferred-register: '' }
�[0;1;32m         ^
�[0m�[1m<stdin>:335:11: �[0m�[0;1;30mnote: �[0m�[1mscanning from here
�[0mregisters:
�[0;1;32m          ^
�[0m�[1m<stdin>:336:2: �[0m�[0;1;30mnote: �[0m�[1mpossible intended match here
�[0m - { id: 0, class: gprb, preferred-register: '', flags: [ ] }
�[0;1;32m ^
�[0m�[1m/home/buildbot/buildbot-root/llvm-clang-x86_64-gcc-ubuntu/llvm-project/llvm/test/CodeGen/ARM/GlobalISel/arm-regbankselect.mir:164:10: �[0m�[0;1;31merror: �[0m�[1mCHECK: expected string not found in input
�[0m# CHECK: - { id: 0, class: gprb, preferred-register: '' }
�[0;1;32m         ^
�[0m�[1m<stdin>:404:11: �[0m�[0;1;30mnote: �[0m�[1mscanning from here
�[0mregisters:
�[0;1;32m          ^
�[0m�[1m<stdin>:405:2: �[0m�[0;1;30mnote: �[0m�[1mpossible intended match here
�[0m - { id: 0, class: gprb, preferred-register: '', flags: [ ] }
�[0;1;32m ^
�[0m�[1m/home/buildbot/buildbot-root/llvm-clang-x86_64-gcc-ubuntu/llvm-project/llvm/test/CodeGen/ARM/GlobalISel/arm-regbankselect.mir:190:10: �[0m�[0;1;31merror: �[0m�[1mCHECK: expected string not found in input
�[0m# CHECK: - { id: 0, class: gprb, preferred-register: '' }
�[0;1;32m         ^
�[0m�[1m<stdin>:473:11: �[0m�[0;1;30mnote: �[0m�[1mscanning from here
�[0mregisters:
�[0;1;32m          ^
�[0m�[1m<stdin>:474:2: �[0m�[0;1;30mnote: �[0m�[1mpossible intended match here
�[0m - { id: 0, class: gprb, preferred-register: '', flags: [ ] }
�[0;1;32m ^
�[0m�[1m/home/buildbot/buildbot-root/llvm-clang-x86_64-gcc-ubuntu/llvm-project/llvm/test/CodeGen/ARM/GlobalISel/arm-regbankselect.mir:216:10: �[0m�[0;1;31merror: �[0m�[1mCHECK: expected string not found in input
�[0m# CHECK: - { id: 0, class: gprb, preferred-register: '' }
�[0;1;32m         ^
�[0m�[1m<stdin>:542:11: �[0m�[0;1;30mnote: �[0m�[1mscanning from here
�[0mregisters:
�[0;1;32m          ^
...

@llvm-ci
Copy link
Collaborator

llvm-ci commented Oct 14, 2024

LLVM Buildbot has detected a new failure on builder clang-x86_64-debian-fast running on gribozavr4 while building llvm at step 6 "test-build-unified-tree-check-all".

Full details are available at: https://lab.llvm.org/buildbot/#/builders/56/builds/9761

Here is the relevant piece of the build log for the reference
Step 6 (test-build-unified-tree-check-all) failure: test (failure)
******************** TEST 'LLVM :: CodeGen/AArch64/GlobalISel/arm64-regbankselect.mir' FAILED ********************
Exit Code: 1

Command Output (stderr):
--
RUN: at line 1: /b/1/clang-x86_64-debian-fast/llvm.obj/bin/llc -O0 -debugify-and-strip-all-safe -run-pass=regbankselect /b/1/clang-x86_64-debian-fast/llvm.src/llvm/test/CodeGen/AArch64/GlobalISel/arm64-regbankselect.mir -o - -verify-machineinstrs | /b/1/clang-x86_64-debian-fast/llvm.obj/bin/FileCheck /b/1/clang-x86_64-debian-fast/llvm.src/llvm/test/CodeGen/AArch64/GlobalISel/arm64-regbankselect.mir --check-prefix=CHECK --check-prefix=FAST
+ /b/1/clang-x86_64-debian-fast/llvm.obj/bin/FileCheck /b/1/clang-x86_64-debian-fast/llvm.src/llvm/test/CodeGen/AArch64/GlobalISel/arm64-regbankselect.mir --check-prefix=CHECK --check-prefix=FAST
+ /b/1/clang-x86_64-debian-fast/llvm.obj/bin/llc -O0 -debugify-and-strip-all-safe -run-pass=regbankselect /b/1/clang-x86_64-debian-fast/llvm.src/llvm/test/CodeGen/AArch64/GlobalISel/arm64-regbankselect.mir -o - -verify-machineinstrs
/b/1/clang-x86_64-debian-fast/llvm.src/llvm/test/CodeGen/AArch64/GlobalISel/arm64-regbankselect.mir:219:15: error: CHECK-NEXT: expected string not found in input
# CHECK-NEXT: - { id: 0, class: gpr32, preferred-register: '' }
              ^
<stdin>:525:11: note: scanning from here
registers:
          ^
<stdin>:526:2: note: possible intended match here
 - { id: 0, class: gpr32, preferred-register: '', flags: [ ] }
 ^
/b/1/clang-x86_64-debian-fast/llvm.src/llvm/test/CodeGen/AArch64/GlobalISel/arm64-regbankselect.mir:362:15: error: CHECK-NEXT: expected string not found in input
# CHECK-NEXT: - { id: 0, class: gpr64, preferred-register: '' }
              ^
<stdin>:880:11: note: scanning from here
registers:
          ^
<stdin>:881:2: note: possible intended match here
 - { id: 0, class: gpr64, preferred-register: '', flags: [ ] }
 ^
/b/1/clang-x86_64-debian-fast/llvm.src/llvm/test/CodeGen/AArch64/GlobalISel/arm64-regbankselect.mir:400:15: error: CHECK-NEXT: expected string not found in input
# CHECK-NEXT: - { id: 0, class: gpr, preferred-register: '' }
              ^
<stdin>:1004:11: note: scanning from here
registers:
          ^
<stdin>:1005:2: note: possible intended match here
 - { id: 0, class: gpr, preferred-register: '', flags: [ ] }
 ^
/b/1/clang-x86_64-debian-fast/llvm.src/llvm/test/CodeGen/AArch64/GlobalISel/arm64-regbankselect.mir:426:15: error: CHECK-NEXT: expected string not found in input
# CHECK-NEXT: - { id: 0, class: fpr, preferred-register: '' }
              ^
<stdin>:1068:11: note: scanning from here
registers:
          ^
<stdin>:1069:2: note: possible intended match here
 - { id: 0, class: fpr, preferred-register: '', flags: [ ] }
 ^
/b/1/clang-x86_64-debian-fast/llvm.src/llvm/test/CodeGen/AArch64/GlobalISel/arm64-regbankselect.mir:451:15: error: CHECK-NEXT: expected string not found in input
# CHECK-NEXT: - { id: 0, class: gpr, preferred-register: '' }
              ^
<stdin>:1132:11: note: scanning from here
registers:
          ^
...

@llvm-ci
Copy link
Collaborator

llvm-ci commented Oct 14, 2024

LLVM Buildbot has detected a new failure on builder llvm-x86_64-debian-dylib running on gribozavr4 while building llvm at step 7 "test-build-unified-tree-check-llvm".

Full details are available at: https://lab.llvm.org/buildbot/#/builders/60/builds/10132

Here is the relevant piece of the build log for the reference
Step 7 (test-build-unified-tree-check-llvm) failure: test (failure)
******************** TEST 'LLVM :: CodeGen/AArch64/GlobalISel/regbankselect-dbg-value.mir' FAILED ********************
Exit Code: 1

Command Output (stderr):
--
RUN: at line 1: /b/1/llvm-x86_64-debian-dylib/build/bin/llc -O0 -mtriple arm64-- -run-pass=regbankselect /b/1/llvm-x86_64-debian-dylib/llvm-project/llvm/test/CodeGen/AArch64/GlobalISel/regbankselect-dbg-value.mir -o - | /b/1/llvm-x86_64-debian-dylib/build/bin/FileCheck /b/1/llvm-x86_64-debian-dylib/llvm-project/llvm/test/CodeGen/AArch64/GlobalISel/regbankselect-dbg-value.mir
+ /b/1/llvm-x86_64-debian-dylib/build/bin/llc -O0 -mtriple arm64-- -run-pass=regbankselect /b/1/llvm-x86_64-debian-dylib/llvm-project/llvm/test/CodeGen/AArch64/GlobalISel/regbankselect-dbg-value.mir -o -
+ /b/1/llvm-x86_64-debian-dylib/build/bin/FileCheck /b/1/llvm-x86_64-debian-dylib/llvm-project/llvm/test/CodeGen/AArch64/GlobalISel/regbankselect-dbg-value.mir
/b/1/llvm-x86_64-debian-dylib/llvm-project/llvm/test/CodeGen/AArch64/GlobalISel/regbankselect-dbg-value.mir:34:15: error: CHECK-NEXT: expected string not found in input
# CHECK-NEXT: - { id: 0, class: gpr, preferred-register: '' }
              ^
<stdin>:55:11: note: scanning from here
registers:
          ^
<stdin>:56:2: note: possible intended match here
 - { id: 0, class: gpr, preferred-register: '', flags: [ ] }
 ^

Input file: <stdin>
Check file: /b/1/llvm-x86_64-debian-dylib/llvm-project/llvm/test/CodeGen/AArch64/GlobalISel/regbankselect-dbg-value.mir

-dump-input=help explains the following input dump.

Input was:
<<<<<<
           .
           .
           .
          50: hasEHFunclets: false 
          51: isOutlined: false 
          52: debugInstrRef: false 
          53: failsVerification: false 
          54: tracksDebugUserValues: false 
          55: registers: 
next:34'0               X error: no match found
          56:  - { id: 0, class: gpr, preferred-register: '', flags: [ ] } 
next:34'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
next:34'1      ?                                                            possible intended match
          57: liveins: [] 
next:34'0     ~~~~~~~~~~~~
          58: frameInfo: 
next:34'0     ~~~~~~~~~~~
          59:  isFrameAddressTaken: false 
next:34'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          60:  isReturnAddressTaken: false 
next:34'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          61:  hasStackMap: false 
next:34'0     ~~~~~~~~~~~~~~~~~~~~
           .
           .
...

optimisan added a commit to optimisan/llvm-project that referenced this pull request Oct 14, 2024
[MIR] Serialize virtual register flags llvm#110228 introduces register
flags which appear empty in .mir dumps. Future tests should use
-simplify-mir.
@llvm-ci
Copy link
Collaborator

llvm-ci commented Oct 14, 2024

LLVM Buildbot has detected a new failure on builder lld-x86_64-ubuntu-fast running on as-builder-4 while building llvm at step 6 "test-build-unified-tree-check-all".

Full details are available at: https://lab.llvm.org/buildbot/#/builders/33/builds/4697

Here is the relevant piece of the build log for the reference
Step 6 (test-build-unified-tree-check-all) failure: test (failure)
******************** TEST 'LLVM :: CodeGen/AArch64/GlobalISel/call-translator.ll' FAILED ********************
Exit Code: 1

Command Output (stderr):
--
RUN: at line 1: /home/buildbot/worker/as-builder-4/ramdisk/lld-x86_64/build/bin/llc -mtriple=aarch64-linux-gnu -O0 -stop-after=irtranslator -global-isel -verify-machineinstrs /home/buildbot/worker/as-builder-4/ramdisk/lld-x86_64/llvm-project/llvm/test/CodeGen/AArch64/GlobalISel/call-translator.ll -o - 2>&1 | /home/buildbot/worker/as-builder-4/ramdisk/lld-x86_64/build/bin/FileCheck /home/buildbot/worker/as-builder-4/ramdisk/lld-x86_64/llvm-project/llvm/test/CodeGen/AArch64/GlobalISel/call-translator.ll
+ /home/buildbot/worker/as-builder-4/ramdisk/lld-x86_64/build/bin/llc -mtriple=aarch64-linux-gnu -O0 -stop-after=irtranslator -global-isel -verify-machineinstrs /home/buildbot/worker/as-builder-4/ramdisk/lld-x86_64/llvm-project/llvm/test/CodeGen/AArch64/GlobalISel/call-translator.ll -o -
+ /home/buildbot/worker/as-builder-4/ramdisk/lld-x86_64/build/bin/FileCheck /home/buildbot/worker/as-builder-4/ramdisk/lld-x86_64/llvm-project/llvm/test/CodeGen/AArch64/GlobalISel/call-translator.ll
/home/buildbot/worker/as-builder-4/ramdisk/lld-x86_64/llvm-project/llvm/test/CodeGen/AArch64/GlobalISel/call-translator.ll:38:10: error: CHECK: expected string not found in input
; CHECK: - { id: [[FUNC:[0-9]+]], class: gpr64, preferred-register: '' }
         ^
<stdin>:402:11: note: scanning from here
registers:
          ^
<stdin>:403:2: note: possible intended match here
 - { id: 0, class: gpr64, preferred-register: '', flags: [ ] }
 ^

Input file: <stdin>
Check file: /home/buildbot/worker/as-builder-4/ramdisk/lld-x86_64/llvm-project/llvm/test/CodeGen/AArch64/GlobalISel/call-translator.ll

-dump-input=help explains the following input dump.

Input was:
<<<<<<
            .
            .
            .
          397: hasEHFunclets: false 
          398: isOutlined: false 
          399: debugInstrRef: false 
          400: failsVerification: false 
          401: tracksDebugUserValues: false 
          402: registers: 
check:38'0               X error: no match found
          403:  - { id: 0, class: gpr64, preferred-register: '', flags: [ ] } 
check:38'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
check:38'1      ?                                                              possible intended match
          404: liveins: 
check:38'0     ~~~~~~~~~
          405:  - { reg: '$x0', virtual-reg: '' } 
check:38'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          406: frameInfo: 
check:38'0     ~~~~~~~~~~~
          407:  isFrameAddressTaken: false 
check:38'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          408:  isReturnAddressTaken: false 
check:38'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
            .
            .
...

optimisan added a commit that referenced this pull request Oct 14, 2024
[MIR] Serialize virtual register flags #110228 introduces register flags
which appear empty in .mir dumps. Future tests should use
`-simplify-mir`.
optimisan added a commit that referenced this pull request Oct 16, 2024
A fix-it patch for dbfca24 #110228.

No need for a container. This allows 8 flags for a register.

The virtual register flags vector had a memory leak because the vector's
memory is not freed.
The `BumpPtrAllocator` handles the deallocation and missed calling the
`std::vector<uint8_t> Flags` destructor.
DanielCChen pushed a commit to DanielCChen/llvm-project that referenced this pull request Oct 16, 2024
[MIR] Serialize virtual register flags

This introduces target-specific vreg flag serialization. Flags are represented as `uint8_t` and the `TargetRegisterInfo` override provides methods `getVRegFlagValue` to deserialize and `getVRegFlagsOfReg` to serialize.
DanielCChen pushed a commit to DanielCChen/llvm-project that referenced this pull request Oct 16, 2024
[MIR] Serialize virtual register flags llvm#110228 introduces register flags
which appear empty in .mir dumps. Future tests should use
`-simplify-mir`.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

7 participants