[Ruiling]: I also got a surprise at first, but seems that all the insn->ID does 
not consider the new inserted MOVs. So the register intervals still aligned 
among the registers. I am not sure if there are some side effect, but at least 
I do not see any.

diff --git a/backend/src/backend/gen_reg_allocation.cpp 
b/backend/src/backend/gen_reg_allocation.cpp
index 8243f19..4e276c3 100644
--- a/backend/src/backend/gen_reg_allocation.cpp
+++ b/backend/src/backend/gen_reg_allocation.cpp
@@ -292,6 +292,10 @@ namespace gbe
           tmp = selection.replaceDst(vector->insn, regID);
         const VectorLocation location = std::make_pair(vector, regID);
         this->vectorMap.insert(std::make_pair(tmp, location));
+        intervals.push_back(tmp);
+        intervals[tmp].minID = vector->insn->ID;
+        intervals[tmp].maxID = vector->insn->ID;
>>>>>>>>The tmp is dst of mov before vector->insn, so minID should be insn - 1? 
>>>>>>>>And if there are some instructions are inserted, so vector->insn->ID is 
>>>>>>>>also change, isn't it?





_______________________________________________
Beignet mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/beignet

Reply via email to