Index: branches/HTM-9.3-dev3-Hisilicon/source/Lib/TLibDecoder/TDecCu.cpp
===================================================================
--- branches/HTM-9.3-dev3-Hisilicon/source/Lib/TLibDecoder/TDecCu.cpp	(revision 812)
+++ branches/HTM-9.3-dev3-Hisilicon/source/Lib/TLibDecoder/TDecCu.cpp	(revision 813)
@@ -922,6 +922,12 @@
   UInt uiHeight       = pcCU->getHeight ( 0 );
 #if QC_PKU_SDC_SPLIT_G0123
+#if HS_TSINGHUA_SDC_SPLIT_G0111
+#if QC_GENERIC_SDC_G0122
+  TComWedgelet* dmm4SegmentationOrg = new TComWedgelet( uiWidth, uiHeight );
+#endif
+#else
 #if QC_GENERIC_SDC_G0122
   TComWedgelet* dmm4Segmentation = new TComWedgelet( uiWidth, uiHeight );
+#endif
 #endif
 #endif
@@ -1012,4 +1018,7 @@
 #endif
 #endif
+#if HS_TSINGHUA_SDC_SPLIT_G0111
+  TComWedgelet* dmm4Segmentation = new TComWedgelet( uiWidth, uiHeight );
+#endif
   //===== get prediction signal =====
 #if H_3D_DIM
@@ -1021,4 +1030,12 @@
 #endif
       );
+#if HS_TSINGHUA_SDC_SPLIT_G0111
+    Bool* dmm4PatternSplit = dmm4Segmentation->getPattern();
+    Bool* dmm4PatternOrg = dmm4SegmentationOrg->getPattern();
+    for( UInt k = 0; k < (uiWidth*uiHeight); k++ ) 
+    { 
+      dmm4PatternOrg[k+(uiAbsPartIdx<<4)] = dmm4PatternSplit[k];
+    }
+#endif
   }
   else
@@ -1045,4 +1062,7 @@
     }
     uiAbsPartIdx += ( (uiWidth * uiWidth) >> 4 );
+#if HS_TSINGHUA_SDC_SPLIT_G0111
+    dmm4Segmentation->destroy(); delete dmm4Segmentation;
+#endif
   }
   uiAbsPartIdx = 0;
@@ -1080,6 +1100,11 @@
   {
     uiNumSegments = 2;
+#if HS_TSINGHUA_SDC_SPLIT_G0111
+    pbMask  = dmm4SegmentationOrg->getPattern();
+    uiMaskStride = dmm4SegmentationOrg->getStride();
+#else
     pbMask  = dmm4Segmentation->getPattern();
     uiMaskStride = dmm4Segmentation->getStride();
+#endif
   }
 #endif
@@ -1146,5 +1171,9 @@
   }
 #if QC_GENERIC_SDC_G0122
+#if HS_TSINGHUA_SDC_SPLIT_G0111
+  dmm4SegmentationOrg->destroy(); delete dmm4SegmentationOrg;
+#else
   dmm4Segmentation->destroy(); delete dmm4Segmentation;
+#endif
 #endif
 }
Index: branches/HTM-9.3-dev3-Hisilicon/source/Lib/TLibEncoder/TEncSearch.cpp
===================================================================
--- branches/HTM-9.3-dev3-Hisilicon/source/Lib/TLibEncoder/TEncSearch.cpp	(revision 812)
+++ branches/HTM-9.3-dev3-Hisilicon/source/Lib/TLibEncoder/TEncSearch.cpp	(revision 813)
@@ -1891,6 +1891,12 @@
   UInt    uiHeight          = pcCU     ->getHeight  ( 0 );
 #if QC_PKU_SDC_SPLIT_G0123
+#if HS_TSINGHUA_SDC_SPLIT_G0111
+#if QC_GENERIC_SDC_G0122
+  TComWedgelet* dmm4SegmentationOrg = new TComWedgelet( uiWidth, uiHeight );
+#endif
+#else
 #if QC_GENERIC_SDC_G0122
   TComWedgelet* dmm4Segmentation = new TComWedgelet( uiWidth, uiHeight );
+#endif
 #endif
 #endif
@@ -1911,10 +1917,4 @@
   if ( ( uiWidth >> pcCU->getSlice()->getSPS()->getQuadtreeTULog2MaxSize() ) > 1 )
   {
-    if ( getDimType( uiLumaPredMode ) == DMM4_IDX )
-    {
-      dmm4Segmentation->destroy(); delete dmm4Segmentation;
-      ruiDist = MAX_INT;
-      return;
-    }
     numParts = uiWidth * uiWidth >> ( 2 * pcCU->getSlice()->getSPS()->getQuadtreeTULog2MaxSize() );
     sdcDepth = g_aucConvertToBit[uiWidth] + 2 - pcCU->getSlice()->getSPS()->getQuadtreeTULog2MaxSize();
@@ -1977,4 +1977,9 @@
 #endif
 #endif
+#if HS_TSINGHUA_SDC_SPLIT_G0111
+#if QC_GENERIC_SDC_G0122
+  TComWedgelet* dmm4Segmentation = new TComWedgelet( uiWidth, uiHeight );
+#endif
+#endif
   //===== get prediction signal =====
 #if H_3D_DIM
@@ -1998,4 +2003,12 @@
 #endif
       );
+#if HS_TSINGHUA_SDC_SPLIT_G0111
+    Bool* dmm4PatternSplit = dmm4Segmentation->getPattern();
+    Bool* dmm4PatternOrg = dmm4SegmentationOrg->getPattern();
+    for( UInt k = 0; k < (uiWidth*uiHeight); k++ ) 
+    { 
+      dmm4PatternOrg[k+(uiAbsPartIdx<<4)] = dmm4PatternSplit[k];
+    }
+#endif
   }
   else
@@ -2021,4 +2034,7 @@
     }
     uiAbsPartIdx += ( ( uiWidth * uiWidth ) >> 4 );
+#if HS_TSINGHUA_SDC_SPLIT_G0111
+    dmm4Segmentation->destroy(); delete dmm4Segmentation;
+#endif
   }
   uiAbsPartIdx = 0;
@@ -2058,6 +2074,11 @@
   {
     uiNumSegments = 2;
+#if HS_TSINGHUA_SDC_SPLIT_G0111
+    pbMask  = dmm4SegmentationOrg->getPattern();
+    uiMaskStride = dmm4SegmentationOrg->getStride();
+#else
     pbMask  = dmm4Segmentation->getPattern();
     uiMaskStride = dmm4Segmentation->getStride();
+#endif
   }
 #endif
@@ -2200,5 +2221,9 @@
     dRDCost = m_pcRdCost->calcRdCost( uiBits, ruiDist );
 #if QC_GENERIC_SDC_G0122
+#if HS_TSINGHUA_SDC_SPLIT_G0111
+  dmm4SegmentationOrg->destroy(); delete dmm4SegmentationOrg;
+#else
   dmm4Segmentation->destroy(); delete dmm4Segmentation;
+#endif
 #endif
 }
