[PATCH] D12193: [mips][p5600] Added P5600 processor and initial scheduler.
Vasileios Kalintiris via llvm-commits
llvm-commits at lists.llvm.org
Thu Sep 24 07:19:57 PDT 2015
vkalintiris added inline comments.
================
Comment at: lib/Target/Mips/MipsSubtarget.h:45
@@ -44,1 +44,3 @@
+ enum class CPU { P5600 };
+
----------------
dsanders wrote:
> vkalintiris wrote:
> > vkalintiris wrote:
> > > dsanders wrote:
> > > > dsanders wrote:
> > > > > vkalintiris wrote:
> > > > > > vkalintiris wrote:
> > > > > > > Can we change these names to MipsCPUEnum and MipsProcImpl, or something similar in order to follow the naming convention of MipsArchEnum and MipsArchVersion?
> > > > > > I didn't investigate the problem but I can compile this patch only with an unscoped enumeration.
> > > > > Could you tell me which compiler and version you are using and the error message you get?
> > > > I'd actually like to change MipsArchEnum and MipsArchVersion at some point. They're inside a class called MipsSubtarget so the repeated 'Mips' is redundant.
> > > GCC 4.8.4, here's the error:
> > >
> > > `In file included from /home/vk/repos/llvm/lib/Target/Mips/MipsSubtarget.cpp:32:0:
> > > lib/Target/Mips/MipsGenSubtargetInfo.inc: In member function ‘void llvm::MipsSubtarget::ParseSubtargetFeatures(llvm::StringRef, llvm::StringRef)’:
> > > lib/Target/Mips/MipsGenSubtargetInfo.inc:760:43: error: ‘CPU’ is not a class, namespace, or enumeration
> > > if (Bits[Mips::ImplP5600] && ProcImpl < CPU::P5600) ProcImpl = CPU::P5600;
> > > ^
> > > lib/Target/Mips/MipsGenSubtargetInfo.inc:760:66: error: ‘CPU’ is not a class, namespace, or enumeration
> > > if (Bits[Mips::ImplP5600] && ProcImpl < CPU::P5600) ProcImpl = CPU::P5600;
> > > ^
> > > [99/461] Building CXX object tools/clang/lib/Sema/CMakeFiles/clangSema.dir/SemaTemplate.cpp.o
> > > ninja: build stopped: subcommand failed.`
> > >
> > > And here's the quick fix I had in my branch:
> > > `
> > > diff --git a/lib/Target/Mips/Mips.td b/lib/Target/Mips/Mips.td
> > > index 87e013d..ef28ebf 100644
> > > --- a/lib/Target/Mips/Mips.td
> > > +++ b/lib/Target/Mips/Mips.td
> > > @@ -175,7 +175,7 @@ def FeatureUseTCCInDIV : SubtargetFeature<
> > > // Mips processors supported.
> > > //===----------------------------------------------------------------------===//
> > > %%%
> > > -def ImplP5600 : SubtargetFeature<"p5600", "ProcImpl", "CPU::P5600",
> > > +def ImplP5600 : SubtargetFeature<"p5600", "ProcImpl", "P5600",
> > > "The P5600 Processor", [FeatureMips32r2]>;
> > >
> > > class Proc<string Name, list<SubtargetFeature> Features>
> > > diff --git a/lib/Target/Mips/MipsSubtarget.h b/lib/Target/Mips/MipsSubtarget.h
> > > index 19e9788..fa6225c 100644
> > > --- a/lib/Target/Mips/MipsSubtarget.h
> > > +++ b/lib/Target/Mips/MipsSubtarget.h
> > > @@ -42,14 +42,15 @@ class MipsSubtarget : public MipsGenSubtargetInfo {
> > > Mips3, Mips4, Mips5, Mips64, Mips64r2, Mips64r3, Mips64r5, Mips64r6
> > > };
> > >
> > > - enum class CPU { P5600 };
> > > -
> > > // Mips architecture version
> > > MipsArchEnum MipsArchVersion;
> > >
> > > + enum CPU { P5600 };
> > > +
> > > + CPU ProcImpl;
> > > +
> > > // Processor implementation (unused but required to exist by
> > > // tablegen-erated code).
> > > - CPU ProcImpl;
> > >
> > > // IsLittle - The target is Little Endian
> > > bool IsLittle;`
> > Agreed. Repeating the Mips-prefix is redundant, we can fix this with a later patch.
> Thanks. It's my understanding that we only support the last two major releases of GCC which is currently 4.9 and 5.0 so I don't think we should worry about this too much.
>
> That said, does 'MipsSubtarget::CPU::P5600' work?
Yes, it works.
http://reviews.llvm.org/D12193
More information about the llvm-commits
mailing list