[llvm] r194906 - X86: Encode the 'h' cpu subtype in the MachO header for x86.

Rafael EspĂ­ndola rafael.espindola at gmail.com
Sun Nov 17 13:54:20 PST 2013


it should be possible to test this, no?

On 15 November 2013 19:52, Jim Grosbach <grosbach at apple.com> wrote:
> Author: grosbach
> Date: Fri Nov 15 18:52:57 2013
> New Revision: 194906
>
> URL: http://llvm.org/viewvc/llvm-project?rev=194906&view=rev
> Log:
> X86: Encode the 'h' cpu subtype in the MachO header for x86.
>
> Modified:
>     llvm/trunk/include/llvm/Support/MachO.h
>     llvm/trunk/lib/Support/Triple.cpp
>     llvm/trunk/lib/Target/X86/MCTargetDesc/X86AsmBackend.cpp
>
> Modified: llvm/trunk/include/llvm/Support/MachO.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Support/MachO.h?rev=194906&r1=194905&r2=194906&view=diff
> ==============================================================================
> --- llvm/trunk/include/llvm/Support/MachO.h (original)
> +++ llvm/trunk/include/llvm/Support/MachO.h Fri Nov 15 18:52:57 2013
> @@ -948,7 +948,8 @@ namespace llvm {
>
>        CPU_SUBTYPE_X86_ALL     = 3,
>        CPU_SUBTYPE_X86_64_ALL  = 3,
> -      CPU_SUBTYPE_X86_ARCH1   = 4
> +      CPU_SUBTYPE_X86_ARCH1   = 4,
> +      CPU_SUBTYPE_X86_64_H    = 8
>      };
>      static inline int CPU_SUBTYPE_INTEL(int Family, int Model) {
>        return Family | (Model << 4);
>
> Modified: llvm/trunk/lib/Support/Triple.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Support/Triple.cpp?rev=194906&r1=194905&r2=194906&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Support/Triple.cpp (original)
> +++ llvm/trunk/lib/Support/Triple.cpp Fri Nov 15 18:52:57 2013
> @@ -221,7 +221,7 @@ static Triple::ArchType parseArch(String
>      .Cases("i386", "i486", "i586", "i686", Triple::x86)
>      // FIXME: Do we need to support these?
>      .Cases("i786", "i886", "i986", Triple::x86)
> -    .Cases("amd64", "x86_64", Triple::x86_64)
> +    .Cases("amd64", "x86_64", "x86_64h", Triple::x86_64)
>      .Case("powerpc", Triple::ppc)
>      .Cases("powerpc64", "ppu", Triple::ppc64)
>      .Case("powerpc64le", Triple::ppc64le)
>
> Modified: llvm/trunk/lib/Target/X86/MCTargetDesc/X86AsmBackend.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/MCTargetDesc/X86AsmBackend.cpp?rev=194906&r1=194905&r2=194906&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/X86/MCTargetDesc/X86AsmBackend.cpp (original)
> +++ llvm/trunk/lib/Target/X86/MCTargetDesc/X86AsmBackend.cpp Fri Nov 15 18:52:57 2013
> @@ -9,6 +9,7 @@
>
>  #include "MCTargetDesc/X86BaseInfo.h"
>  #include "MCTargetDesc/X86FixupKinds.h"
> +#include "llvm/ADT/StringSwitch.h"
>  #include "llvm/MC/MCAsmBackend.h"
>  #include "llvm/MC/MCAssembler.h"
>  #include "llvm/MC/MCELFObjectWriter.h"
> @@ -732,17 +733,19 @@ public:
>
>  class DarwinX86_64AsmBackend : public DarwinX86AsmBackend {
>    bool SupportsCU;
> +  const MachO::CPUSubTypeX86 Subtype;
>  public:
>    DarwinX86_64AsmBackend(const Target &T, const MCRegisterInfo &MRI,
> -                         StringRef CPU, bool SupportsCU)
> -    : DarwinX86AsmBackend(T, MRI, CPU, true), SupportsCU(SupportsCU) {
> +                         StringRef CPU, bool SupportsCU,
> +                         MachO::CPUSubTypeX86 st)
> +    : DarwinX86AsmBackend(T, MRI, CPU, true), SupportsCU(SupportsCU),
> +      Subtype(st) {
>      HasReliableSymbolDifference = true;
>    }
>
>    MCObjectWriter *createObjectWriter(raw_ostream &OS) const {
>      return createX86MachObjectWriter(OS, /*Is64Bit=*/true,
> -                                     MachO::CPU_TYPE_X86_64,
> -                                     MachO::CPU_SUBTYPE_X86_64_ALL);
> +                                     MachO::CPU_TYPE_X86_64, Subtype);
>    }
>
>    virtual bool doesSectionRequireSymbols(const MCSection &Section) const {
> @@ -811,10 +814,15 @@ MCAsmBackend *llvm::createX86_64AsmBacke
>                                             StringRef CPU) {
>    Triple TheTriple(TT);
>
> -  if (TheTriple.isOSDarwin() || TheTriple.getEnvironment() == Triple::MachO)
> +  if (TheTriple.isOSDarwin() || TheTriple.getEnvironment() == Triple::MachO) {
> +    MachO::CPUSubTypeX86 CS =
> +        StringSwitch<MachO::CPUSubTypeX86>(TheTriple.getArchName())
> +            .Case("x86_64h", MachO::CPU_SUBTYPE_X86_64_H)
> +            .Default(MachO::CPU_SUBTYPE_X86_64_ALL);
>      return new DarwinX86_64AsmBackend(T, MRI, CPU,
>                                        TheTriple.isMacOSX() &&
> -                                      !TheTriple.isMacOSXVersionLT(10, 7));
> +                                      !TheTriple.isMacOSXVersionLT(10, 7), CS);
> +  }
>
>    if (TheTriple.isOSWindows() && TheTriple.getEnvironment() != Triple::ELF)
>      return new WindowsX86AsmBackend(T, true, CPU);
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits



More information about the llvm-commits mailing list