[Beignet] [PATCH] Change the oreder of the code

Xiuli Pan xiuli.pan at intel.com
Thu Feb 20 23:59:59 PST 2014


From: xiuli pan <xiuli.pan at intel.com>

---
 backend/src/llvm/llvm_gen_backend.cpp |   21 +++++++++++----------
 1 file changed, 11 insertions(+), 10 deletions(-)

diff --git a/backend/src/llvm/llvm_gen_backend.cpp b/backend/src/llvm/llvm_gen_backend.cpp
index 2d4fb0a..e20f810 100644
--- a/backend/src/llvm/llvm_gen_backend.cpp
+++ b/backend/src/llvm/llvm_gen_backend.cpp
@@ -1394,16 +1394,7 @@ namespace gbe
 
       ir::AddressSpace addrSpace = addressSpaceLLVMToGen(v.getType()->getAddressSpace());
       if(addrSpace == ir::MEM_LOCAL) {
-        ir::Function &f = ctx.getFunction();
-        f.setUseSLM(true);
-        const Constant *c = v.getInitializer();
-        Type *ty = c->getType();
-        uint32_t oldSlm = f.getSLMSize();
-        uint32_t align = 8 * getAlignmentByte(unit, ty);
-        uint32_t padding = getPadding(oldSlm*8, align);
-
-        f.setSLMSize(oldSlm + padding/8 + getTypeByteSize(unit, ty));
-        const Value * val = cast<Value>(&v);
+	const Value * val = cast<Value>(&v);
         // local variable can only be used in one kernel function. so, don't need to check its all uses.
         // loop through the Constant to find the instruction that use the global variable
         // FIXME need to find a more grace way to find the function which use this local data.
@@ -1419,6 +1410,16 @@ namespace gbe
         const BasicBlock * bb = insn->getParent();
         const Function * func = bb->getParent();
         if(func != &F) continue;
+	
+        ir::Function &f = ctx.getFunction();
+        f.setUseSLM(true);
+        const Constant *c = v.getInitializer();
+        Type *ty = c->getType();
+        uint32_t oldSlm = f.getSLMSize();
+        uint32_t align = 8 * getAlignmentByte(unit, ty);
+        uint32_t padding = getPadding(oldSlm*8, align);
+
+        f.setSLMSize(oldSlm + padding/8 + getTypeByteSize(unit, ty));
 
         this->newRegister(const_cast<GlobalVariable*>(&v));
         ir::Register reg = regTranslator.getScalar(const_cast<GlobalVariable*>(&v), 0);
-- 
1.7.9.5



More information about the Beignet mailing list