misched: Use the TargetSchedModel interface wherever possible.
[oota-llvm.git] / include / llvm / CodeGen / IntrinsicLowering.h
index c28083a59f3fe09be7ea7551071dfb633563683e..5a3fb4b1a3dfb18275b1b2ee37ac9c2504b70f33 100644 (file)
 namespace llvm {
   class CallInst;
   class Module;
-  class TargetData;
+  class DataLayout;
 
   class IntrinsicLowering {
-    const TargetData& TD;
-    
-    Constant *SetjmpFCache;
-    Constant *LongjmpFCache;
-    Constant *AbortFCache;
-    Constant *MemcpyFCache;
-    Constant *MemmoveFCache;
-    Constant *MemsetFCache;
-    Constant *sqrtFCache;
-    Constant *sqrtDCache;
-    Constant *sqrtLDCache;
-    Constant *logFCache;
-    Constant *logDCache;
-    Constant *logLDCache;
-    Constant *log2FCache;
-    Constant *log2DCache;
-    Constant *log2LDCache;
-    Constant *log10FCache;
-    Constant *log10DCache;
-    Constant *log10LDCache;
-    Constant *expFCache;
-    Constant *expDCache;
-    Constant *expLDCache;
-    Constant *exp2FCache;
-    Constant *exp2DCache;
-    Constant *exp2LDCache;
-    Constant *powFCache;
-    Constant *powDCache;
-    Constant *powLDCache;
+    const DataLayout& TD;
+
     
     bool Warned;
   public:
-    explicit IntrinsicLowering(const TargetData &td) :
-      TD(td), SetjmpFCache(0), LongjmpFCache(0), AbortFCache(0),
-      MemcpyFCache(0), MemmoveFCache(0), MemsetFCache(0), sqrtFCache(0),
-      sqrtDCache(0), sqrtLDCache(0), logFCache(0), logDCache(0), logLDCache(0), 
-      log2FCache(0), log2DCache(0), log2LDCache(0), log10FCache(0), 
-      log10DCache(0), log10LDCache(0), expFCache(0), expDCache(0), 
-      expLDCache(0), exp2FCache(0), exp2DCache(0), exp2LDCache(0), powFCache(0),
-      powDCache(0), powLDCache(0), Warned(false) {}
+    explicit IntrinsicLowering(const DataLayout &td) :
+      TD(td), Warned(false) {}
 
     /// AddPrototypes - This method, if called, causes all of the prototypes
     /// that might be needed by an intrinsic lowering implementation to be
@@ -81,6 +48,11 @@ namespace llvm {
     /// be capable of handling this kind of change.
     ///
     void LowerIntrinsicCall(CallInst *CI);
+
+    /// LowerToByteSwap - Replace a call instruction into a call to bswap
+    /// intrinsic. Return false if it has determined the call is not a
+    /// simple integer bswap.
+    static bool LowerToByteSwap(CallInst *CI);
   };
 }