[llvm-commits] [llvm] r139125 - in /llvm/trunk/lib/Target: ARM/ARM.td ARM/ARMInstrInfo.td ARM/ARMSubtarget.cpp ARM/ARMSubtarget.h ARM/MCTargetDesc/ARMMCTargetDesc.cpp X86/MCTargetDesc/X86MCTargetDesc.cpp X86/X86.td X86/X86InstrInfo.td X86/X86Subt

Jim Grosbach grosbach at apple.com
Fri Sep 30 09:11:04 PDT 2011


On Sep 27, 2011, at 6:36 PM, David Meyer wrote:

> Hello,
> 
> I'm sorry, I did not see this thread earlier.
> 
> The original reason for adding "NaClMode" was because we needed an AssemblerPredicate so that we could disable some MnemonicAlias's in the assembler for NaCl.
> 
> Because NaCl on X86-64 implies 32-bit pointers, certain aliases no longer make sense. (like call -> callq)
> 
> In retrospect, this is not terribly important. I think we can live without it.
> 
> Attached is a patch to remove it. Let me know if it's ok to commit.
> 
> - pdox

Hi David,

This is much closer, thank you. A few comments. OK to commit with the below changes.

> Index: lib/Target/ARM/ARMSubtarget.cpp
> ===================================================================
> --- lib/Target/ARM/ARMSubtarget.cpp	(revision 140669)
> +++ lib/Target/ARM/ARMSubtarget.cpp	(working copy)
> @@ -53,7 +53,6 @@
>    , HasVMLxForwarding(false)
>    , SlowFPBrcc(false)
>    , InThumbMode(false)
> -  , InNaClMode(false)
>    , HasThumb2(false)
>    , NoARM(false)
>    , PostRAScheduler(false)
> Index: lib/Target/ARM/ARMInstrInfo.td
> ===================================================================
> --- lib/Target/ARM/ARMInstrInfo.td	(revision 140669)
> +++ lib/Target/ARM/ARMInstrInfo.td	(working copy)
> @@ -209,8 +209,7 @@
>                                   AssemblerPredicate<"!ModeThumb">;
>  def IsDarwin         : Predicate<"Subtarget->isTargetDarwin()">;
>  def IsNotDarwin      : Predicate<"!Subtarget->isTargetDarwin()">;
> -def IsNaCl           : Predicate<"Subtarget->isTargetNaCl()">,
> -                                 AssemblerPredicate<"ModeNaCl">;
> +def IsNaCl           : Predicate<"Subtarget->isTargetNaCl()">;
>  
>  // FIXME: Eventually this will be just "hasV6T2Ops".
>  def UseMovt          : Predicate<"Subtarget->useMovt()">;
> Index: lib/Target/ARM/ARMSubtarget.h
> ===================================================================
> --- lib/Target/ARM/ARMSubtarget.h	(revision 140669)
> +++ lib/Target/ARM/ARMSubtarget.h	(working copy)
> @@ -70,9 +70,6 @@
>    /// InThumbMode - True if compiling for Thumb, false for ARM.
>    bool InThumbMode;
>  
> -  /// InNaClMode - True if targeting Native Client
> -  bool InNaClMode;
> -
>    /// HasThumb2 - True if Thumb2 instructions are supported.
>    bool HasThumb2;
>  
> Index: lib/Target/ARM/MCTargetDesc/ARMMCTargetDesc.cpp
> ===================================================================
> --- lib/Target/ARM/MCTargetDesc/ARMMCTargetDesc.cpp	(revision 140669)
> +++ lib/Target/ARM/MCTargetDesc/ARMMCTargetDesc.cpp	(working copy)
> @@ -86,14 +86,6 @@
>        ARMArchFeature += ",+thumb-mode";
>    }
>  
> -  Triple TheTriple(TT);
> -  if (TheTriple.getOS() == Triple::NativeClient) {
> -    if (ARMArchFeature.empty())
> -      ARMArchFeature = "+nacl-mode";
> -    else
> -      ARMArchFeature += ",+nacl-mode";
> -  }
> -
>    return ARMArchFeature;
>  }
>  
> Index: lib/Target/ARM/ARM.td
> ===================================================================
> --- lib/Target/ARM/ARM.td	(revision 140669)
> +++ lib/Target/ARM/ARM.td	(working copy)
> @@ -23,9 +23,6 @@
>  def ModeThumb  : SubtargetFeature<"thumb-mode", "InThumbMode", "true",
>                                    "Thumb mode">;
>  
> -def ModeNaCl   : SubtargetFeature<"nacl-mode", "InNaClMode", "true",
> -                                  "Native client mode">;
> -
>  //===----------------------------------------------------------------------===//
>  // ARM Subtarget features.
>  //
> Index: lib/Target/X86/X86InstrInfo.td
> ===================================================================
> --- lib/Target/X86/X86InstrInfo.td	(revision 140669)
> +++ lib/Target/X86/X86InstrInfo.td	(working copy)
> @@ -482,14 +482,10 @@
>                               AssemblerPredicate<"Mode64Bit">;
>  def IsWin64      : Predicate<"Subtarget->isTargetWin64()">;
>  def NotWin64     : Predicate<"!Subtarget->isTargetWin64()">;
> -def IsNaCl       : Predicate<"Subtarget->isTargetNaCl()">,
> -                             AssemblerPredicate<"ModeNaCl">;
> -def IsNaCl32     : Predicate<"Subtarget->isTargetNaCl32()">,
> -                             AssemblerPredicate<"ModeNaCl,!Mode64Bit">;
> -def IsNaCl64     : Predicate<"Subtarget->isTargetNaCl64()">,
> -                             AssemblerPredicate<"ModeNaCl,Mode64Bit">;
> -def NotNaCl      : Predicate<"!Subtarget->isTargetNaCl()">,
> -                             AssemblerPredicate<"!ModeNaCl">;
> +def IsNaCl       : Predicate<"Subtarget->isTargetNaCl()">;
> +def IsNaCl32     : Predicate<"Subtarget->isTargetNaCl32()">;
> +def IsNaCl64     : Predicate<"Subtarget->isTargetNaCl64()">;

There shouldn't be a need to have the 32 and 64 versions here. You can use both IsNaCl and Is64Bit in a pattern predicate, for example, to get the same effect. For example,"Requires<[In64BitMode, IsNaCl]>".

> +def NotNaCl      : Predicate<"!Subtarget->isTargetNaCl()">;

It strikes me as odd that both the positive and negative variant is needed, but I see there's precedent for that. No biggie, just a bit of a "huh. Tablegen should be expressive enough that's not necessary," observation.

>  def SmallCode    : Predicate<"TM.getCodeModel() == CodeModel::Small">;
>  def KernelCode   : Predicate<"TM.getCodeModel() == CodeModel::Kernel">;
>  def FarData      : Predicate<"TM.getCodeModel() != CodeModel::Small &&"
> Index: lib/Target/X86/X86.td
> ===================================================================
> --- lib/Target/X86/X86.td	(revision 140669)
> +++ lib/Target/X86/X86.td	(working copy)
> @@ -23,9 +23,6 @@
>  def Mode64Bit : SubtargetFeature<"64bit-mode", "In64BitMode", "true",
>                                    "64-bit mode (x86_64)">;
>  
> -def ModeNaCl  : SubtargetFeature<"nacl-mode", "InNaClMode", "true",
> -                                 "Native Client mode">;
> -
>  //===----------------------------------------------------------------------===//
>  // X86 Subtarget features.
>  //===----------------------------------------------------------------------===//
> Index: lib/Target/X86/X86Subtarget.cpp
> ===================================================================
> --- lib/Target/X86/X86Subtarget.cpp	(revision 140669)
> +++ lib/Target/X86/X86Subtarget.cpp	(working copy)
> @@ -262,8 +262,7 @@
>    // FIXME: this is a known good value for Yonah. How about others?
>    , MaxInlineSizeThreshold(128)
>    , TargetTriple(TT)
> -  , In64BitMode(is64Bit)
> -  , InNaClMode(false) {
> +  , In64BitMode(is64Bit) {
>    // Determine default and user specified characteristics
>    if (!FS.empty() || !CPU.empty()) {
>      std::string CPUName = CPU;
> @@ -309,11 +308,6 @@
>    if (In64BitMode)
>      ToggleFeature(X86::Mode64Bit);
>  
> -  if (isTargetNaCl()) {
> -    InNaClMode = true;
> -    ToggleFeature(X86::ModeNaCl);
> -  }
> -
>    if (HasAVX)
>      X86SSELevel = NoMMXSSE;
>      
> Index: lib/Target/X86/X86Subtarget.h
> ===================================================================
> --- lib/Target/X86/X86Subtarget.h	(revision 140669)
> +++ lib/Target/X86/X86Subtarget.h	(working copy)
> @@ -119,9 +119,6 @@
>    /// In64BitMode - True if compiling for 64-bit, false for 32-bit.
>    bool In64BitMode;
>  
> -  /// InNaClMode - True if compiling for Native Client target.
> -  bool InNaClMode;
> -
>  public:
>  
>    /// This constructor initializes the data members to match that
> Index: lib/Target/X86/MCTargetDesc/X86MCTargetDesc.cpp
> ===================================================================
> --- lib/Target/X86/MCTargetDesc/X86MCTargetDesc.cpp	(revision 140669)
> +++ lib/Target/X86/MCTargetDesc/X86MCTargetDesc.cpp	(working copy)
> @@ -45,10 +45,6 @@
>      FS = "+64bit-mode";
>    else
>      FS = "-64bit-mode";
> -  if (TheTriple.getOS() == Triple::NativeClient)
> -    FS += ",+nacl-mode";
> -  else
> -    FS += ",-nacl-mode";
>    return FS;
>  }
>  
> 




More information about the llvm-commits mailing list