diff --git a/Basic/TargetInfo.cpp b/Basic/TargetInfo.cpp
index 6038e61..fcaeccf 100644
--- a/Basic/TargetInfo.cpp
+++ b/Basic/TargetInfo.cpp
@@ -56,6 +56,10 @@
   return PrimaryTarget->getTargetTriple();
 }
 
+const char *TargetInfo::getTargetPrefix() const {
+ return PrimaryTarget->getTargetPrefix();
+}
+
 /// DiagnoseNonPortability - When a use of a non-portable target feature is
 /// used, this method emits the diagnostic and marks the translation unit as
 /// non-portable.
@@ -417,6 +421,9 @@
         // Eventually, an unknown constraint should just be treated as 'g'.
         assert(0 && "Unknown input constraint type!");
       }        
+    case '%': // commutative
+      // FIXME: Fail if % is used with the last operand.
+      break;
     case 'i': // immediate integer.
       break;
     case 'r': // general register.
diff --git a/Driver/Targets.cpp b/Driver/Targets.cpp
index 63df5d4..4000908 100644
--- a/Driver/Targets.cpp
+++ b/Driver/Targets.cpp
@@ -402,6 +402,10 @@
     return 0;
   }
 
+  const char *getTargetPrefix() {
+    return "ppc";
+  }
+  
 } // End namespace PPC
 
 
@@ -480,6 +484,10 @@
     return "~{dirflag},~{fpsr},~{flags}";
   }
   
+  const char *getTargetPrefix() {
+    return "x86";
+  }
+  
 } // End namespace X86
 
 //===----------------------------------------------------------------------===//
@@ -503,6 +511,9 @@
   virtual const char *getVAListDeclaration() const {
     return getPPCVAListDeclaration();
   }
+  virtual const char *getTargetPrefix() const {
+    return PPC::getTargetPrefix();
+  }
   virtual void getGCCRegNames(const char * const *&Names, 
                               unsigned &NumNames) const {
     PPC::getGCCRegNames(Names, NumNames);
@@ -537,6 +548,9 @@
   virtual const char *getVAListDeclaration() const {
     return getPPCVAListDeclaration();
   }  
+  virtual const char *getTargetPrefix() const {
+    return PPC::getTargetPrefix();
+  }  
   virtual void getGCCRegNames(const char * const *&Names, 
                                    unsigned &NumNames) const {
     PPC::getGCCRegNames(Names, NumNames);
@@ -571,6 +585,9 @@
   virtual const char *getVAListDeclaration() const {
     return getI386VAListDeclaration();
   }  
+  virtual const char *getTargetPrefix() const {
+    return X86::getTargetPrefix();
+  }  
   virtual void getGCCRegNames(const char * const *&Names, 
                                    unsigned &NumNames) const {
     X86::getGCCRegNames(Names, NumNames);
@@ -605,6 +622,9 @@
   virtual const char *getVAListDeclaration() const {
     return getX86_64VAListDeclaration();
   }
+  virtual const char *getTargetPrefix() const {
+    return X86::getTargetPrefix();
+  }
   virtual void getGCCRegNames(const char * const *&Names, 
                                    unsigned &NumNames) const {
     X86::getGCCRegNames(Names, NumNames);
@@ -643,6 +663,9 @@
   virtual const char *getVAListDeclaration() const {
     return getI386VAListDeclaration();
   }
+  virtual const char *getTargetPrefix() const {
+    return X86::getTargetPrefix();
+  }  
   virtual void getGCCRegNames(const char * const *&Names, 
                                    unsigned &NumNames) const {
     X86::getGCCRegNames(Names, NumNames);
diff --git a/include/clang/Basic/TargetInfo.h b/include/clang/Basic/TargetInfo.h
index 07292f7..d02af43 100644
--- a/include/clang/Basic/TargetInfo.h
+++ b/include/clang/Basic/TargetInfo.h
@@ -245,6 +245,10 @@
     return static_cast<unsigned>(Size);
   }
 
+  /// getTargetPrefix - Return the target prefix used for identifying
+  /// llvm intrinsics.
+  const char *getTargetPrefix() const;
+    
   /// getTargetTriple - Return the target triple of the primary target.
   const char *getTargetTriple() const;
   
@@ -280,6 +284,8 @@
   ///  TargetInfoImpl object was created from.
   const char* getTargetTriple() const { return Triple.c_str(); }
   
+  virtual const char *getTargetPrefix() const = 0;
+
   /// getTargetDefines - Return a list of the target-specific #define values set
   /// when compiling to this target.  Each string should be of the form
   /// "#define X Y\n".
