[Beignet] [PATCH] GBE: Fix bug when unspill a long type value from scratch.

Ruiling Song ruiling.song at intel.com
Mon Mar 7 07:08:06 UTC 2016


the register maybe a stride two register with type UD.
So, retype it to long when do unspill.

Signed-off-by: Ruiling Song <ruiling.song at intel.com>
---
 backend/src/backend/gen_context.cpp | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/backend/src/backend/gen_context.cpp b/backend/src/backend/gen_context.cpp
index cdfd98e..5ade261 100644
--- a/backend/src/backend/gen_context.cpp
+++ b/backend/src/backend/gen_context.cpp
@@ -2037,9 +2037,9 @@ namespace gbe
     } else {
       uint32_t regNum = (regSize/2*simdWidth) > 32 ? 2 : 1;
       this->scratchRead(payload, msg, scratchOffset, regNum, GEN_TYPE_UD, GEN_SCRATCH_CHANNEL_MODE_DWORD);
-      storeBottomHalf(dst, payload);
+      storeBottomHalf(GenRegister::ul8grf(dst.nr, dst.subnr), payload);
       this->scratchRead(payload, msg, scratchOffset + 4*simdWidth, regNum, GEN_TYPE_UD, GEN_SCRATCH_CHANNEL_MODE_DWORD);
-      storeTopHalf(dst, payload);
+      storeTopHalf(GenRegister::ul8grf(dst.nr, dst.subnr), payload);
     }
     p->pop();
   }
-- 
2.4.1



More information about the Beignet mailing list