BDW: Fix unsample bug.
authorYang Rong <rong.r.yang@intel.com>
Mon, 29 Sep 2014 05:38:32 +0000 (13:38 +0800)
committerZhigang Gong <zhigang.gong@intel.com>
Fri, 10 Oct 2014 08:24:49 +0000 (16:24 +0800)
When set the hstride to 2, also need set vstride to 16.

Signed-off-by: Yang Rong <rong.r.yang@intel.com>
Reviewed-by: Zhigang Gong <zhigang.gong@linux.intel.com>
Reviewed-by: Junyan He <junyan.he@linux.intel.com>
backend/src/backend/gen_encoder.cpp

index 6bb6226..29bc806 100644 (file)
@@ -613,24 +613,18 @@ namespace gbe
   }
 
   void GenEncoder::UPSAMPLE_SHORT(GenRegister dest, GenRegister src0, GenRegister src1) {
-    dest.type = GEN_TYPE_B;
-    dest.hstride = GEN_HORIZONTAL_STRIDE_2;
-    src0.type = GEN_TYPE_B;
-    src0.hstride = GEN_HORIZONTAL_STRIDE_2;
-    src1.type = GEN_TYPE_B;
-    src1.hstride = GEN_HORIZONTAL_STRIDE_2;
+    dest = GenRegister::retype(GenRegister::unpacked_uw(dest.nr, dest.subnr), GEN_TYPE_B);
+    src0 = GenRegister::retype(GenRegister::unpacked_uw(src0.nr, src0.subnr), GEN_TYPE_B);
+    src1 = GenRegister::retype(GenRegister::unpacked_uw(src1.nr, src1.subnr), GEN_TYPE_B);
     MOV(dest, src1);
     dest.subnr ++;
     MOV(dest, src0);
   }
 
   void GenEncoder::UPSAMPLE_INT(GenRegister dest, GenRegister src0, GenRegister src1) {
-    dest.type = GEN_TYPE_W;
-    dest.hstride = GEN_HORIZONTAL_STRIDE_2;
-    src0.type = GEN_TYPE_W;
-    src0.hstride = GEN_HORIZONTAL_STRIDE_2;
-    src1.type = GEN_TYPE_W;
-    src1.hstride = GEN_HORIZONTAL_STRIDE_2;
+    dest = GenRegister::unpacked_uw(dest.nr, dest.subnr);
+    src0 = GenRegister::unpacked_uw(src0.nr, src0.subnr);
+    src1 = GenRegister::unpacked_uw(src1.nr, src1.subnr);
     MOV(dest, src1);
     dest.subnr += 2;
     MOV(dest, src0);