swr/rast: Consolidate TRANSLATE_ADDRESS
authorGeorge Kyriazis <george.kyriazis@intel.com>
Wed, 14 Feb 2018 07:13:13 +0000 (01:13 -0600)
committerGeorge Kyriazis <george.kyriazis@intel.com>
Wed, 28 Feb 2018 17:42:41 +0000 (11:42 -0600)
Translate is now part of an overloaded LOAD call which required a change to
the code gen to skip the load functions in order to handle them manually
to make them virtual.

Reviewed-By: Bruce Cherniak <bruce.cherniak@intel.com>
src/gallium/drivers/swr/rasterizer/codegen/gen_llvm_ir_macros.py
src/gallium/drivers/swr/rasterizer/jitter/builder_mem.cpp
src/gallium/drivers/swr/rasterizer/jitter/builder_mem.h
src/gallium/drivers/swr/rasterizer/jitter/fetch_jit.cpp

index 3b19cb4e80b5a2640327f09abba010a659cbd001..aab499b54ad8ea7b68e4c80e5f887284a5a4f3f0 100644 (file)
@@ -152,7 +152,8 @@ def parse_ir_builder(input_file):
                     # The following functions need to be ignored.
                     if (func_name == 'CreateInsertNUWNSWBinOp' or
                         func_name == 'CreateMaskedIntrinsic' or
-                        func_name == 'CreateAlignmentAssumptionHelper'):
+                        func_name == 'CreateAlignmentAssumptionHelper' or
+                        func_name == 'CreateLoad'):
                         ignore = True
 
                     # Convert CamelCase to CAMEL_CASE
index 3bba6ff04f31d34b04b693e311dc91ec8f8d2d5e..67e415cdcc79557378054eb56680c72b79398991 100644 (file)
@@ -69,6 +69,26 @@ namespace SwrJit
         return IN_BOUNDS_GEP(ptr, indices);
     }
 
+    LoadInst* Builder::LOAD(Value *Ptr, const char *Name)
+    {
+        return IRB()->CreateLoad(Ptr, Name);
+    }
+
+    LoadInst* Builder::LOAD(Value *Ptr, const Twine &Name)
+    {
+        return IRB()->CreateLoad(Ptr, Name);
+    }
+
+    LoadInst* Builder::LOAD(Type *Ty, Value *Ptr, const Twine &Name)
+    {
+        return IRB()->CreateLoad(Ty, Ptr, Name);
+    }
+
+    LoadInst* Builder::LOAD(Value *Ptr, bool isVolatile, const Twine &Name)
+    {
+        return IRB()->CreateLoad(Ptr, isVolatile, Name);
+    }
+
     LoadInst *Builder::LOAD(Value *basePtr, const std::initializer_list<uint32_t> &indices, const llvm::Twine& name)
     {
         std::vector<Value*> valIndices;
index 4f496343e96dae1a779cfd5ddb1a6d6c2c38e84d..b3a0e2b09fe163b8370ec0ece35ac5b64b0f1cd2 100644 (file)
@@ -34,7 +34,12 @@ Value *GEP(Value* ptr, const std::initializer_list<uint32_t> &indexList);
 Value *IN_BOUNDS_GEP(Value* ptr, const std::initializer_list<Value*> &indexList);
 Value *IN_BOUNDS_GEP(Value* ptr, const std::initializer_list<uint32_t> &indexList);
 
-LoadInst *LOAD(Value *BasePtr, const std::initializer_list<uint32_t> &offset, const llvm::Twine& name = "");
+virtual LoadInst* LOAD(Value *Ptr, const char *Name);
+virtual LoadInst* LOAD(Value *Ptr, const Twine &Name = "");
+virtual LoadInst* LOAD(Type *Ty, Value *Ptr, const Twine &Name = "");
+virtual LoadInst* LOAD(Value *Ptr, bool isVolatile, const Twine &Name = "");
+virtual LoadInst* LOAD(Value *BasePtr, const std::initializer_list<uint32_t> &offset, const llvm::Twine& Name = "");
+
 LoadInst *LOADV(Value *BasePtr, const std::initializer_list<Value*> &offset, const llvm::Twine& name = "");
 StoreInst *STORE(Value *Val, Value *BasePtr, const std::initializer_list<uint32_t> &offset);
 StoreInst *STOREV(Value *Val, Value *BasePtr, const std::initializer_list<Value*> &offset);
index 68bd4c16878d03f736203ece90919f25b31e0b91..f1dc00293afa545787c5a81ec41488870becb8c4 100644 (file)
@@ -1830,16 +1830,12 @@ Value* FetchJit::GetSimdValid16bitIndices(Value* pIndices, Value* pLastIndex)
     Value* pZeroIndex = ALLOCA(mInt16Ty);
     STORE(C((uint16_t)0), pZeroIndex);
 
-    pLastIndex = TRANSLATE_ADDRESS(pLastIndex);
-
     // Load a SIMD of index pointers
     for(int64_t lane = 0; lane < mVWidth; lane++)
     {
         // Calculate the address of the requested index
         Value *pIndex = GEP(pIndices, C(lane));
 
-        pIndex = TRANSLATE_ADDRESS(pIndex);
-
         // check if the address is less than the max index, 
         Value* mask = ICMP_ULT(pIndex, pLastIndex);