已合并
add local membar for padv3 #3140
add local membar for padv3 #3140
已合并
andong_hw创建于 6月4日
4 个文件变更+7-0
@@ -421,6 +421,7 @@ private:
421 MicroAPI::Arange(lineRange, 0);421 MicroAPI::Arange(lineRange, 0);
422 // 先拷出去,防止索引尾部脏数据422 // 先拷出去,防止索引尾部脏数据
423 MicroAPI::DataCopy(idxAddr, lineRange, maskIdx);423 MicroAPI::DataCopy(idxAddr, lineRange, maskIdx);
424+ MicroAPI::LocalMemBar<MicroAPI::MemType::VEC_STORE, MicroAPI::MemType::VEC_STORE>();
424 425 
425 MicroAPI::Adds(lineRange, lineRange, ((RangeType)-1) * lastLeftPadNum, maskIdx);426 MicroAPI::Adds(lineRange, lineRange, ((RangeType)-1) * lastLeftPadNum, maskIdx);
426 MicroAPI::CompareScalar<RangeType, CMPMODE::LT>(leftMask, lineRange, 0, maskIdx);427 MicroAPI::CompareScalar<RangeType, CMPMODE::LT>(leftMask, lineRange, 0, maskIdx);
@@ -469,6 +470,7 @@ private:
469 MicroAPI::Arange(lineRange, 0);470 MicroAPI::Arange(lineRange, 0);
470 // 先拷出去,防止索引尾部脏数据471 // 先拷出去,防止索引尾部脏数据
471 MicroAPI::DataCopy(idxAddr, lineRange, maskIdx);472 MicroAPI::DataCopy(idxAddr, lineRange, maskIdx);
473+ MicroAPI::LocalMemBar<MicroAPI::MemType::VEC_STORE, MicroAPI::MemType::VEC_STORE>();
472 474 
473 MicroAPI::Adds(lineRange, lineRange, ((RangeType)-1) * lastLeftPadNum, maskIdx);475 MicroAPI::Adds(lineRange, lineRange, ((RangeType)-1) * lastLeftPadNum, maskIdx);
474 MicroAPI::CompareScalar<RangeType, CMPMODE::LT>(leftMask, lineRange, 0, maskIdx);476 MicroAPI::CompareScalar<RangeType, CMPMODE::LT>(leftMask, lineRange, 0, maskIdx);
@@ -355,6 +355,7 @@ private:
355 // 先拷出去,防止索引尾部脏数据355 // 先拷出去,防止索引尾部脏数据
356 MicroAPI::DataCopy(idxAddr, lineRange, maskIdx);356 MicroAPI::DataCopy(idxAddr, lineRange, maskIdx);
357 MicroAPI::DataCopy(idxAddr2, lineRange, maskIdx);357 MicroAPI::DataCopy(idxAddr2, lineRange, maskIdx);
358+ MicroAPI::LocalMemBar<MicroAPI::MemType::VEC_STORE, MicroAPI::MemType::VEC_STORE>();
358 359 
359 MicroAPI::Adds(lineRange, lineRange, ((RangeType)-1)*lastLeftPadNum, maskIdx);360 MicroAPI::Adds(lineRange, lineRange, ((RangeType)-1)*lastLeftPadNum, maskIdx);
360 MicroAPI::CompareScalar<RangeType, CMPMODE::LT>(leftMask, lineRange, 0, maskIdx);361 MicroAPI::CompareScalar<RangeType, CMPMODE::LT>(leftMask, lineRange, 0, maskIdx);
@@ -353,6 +353,7 @@ private:
353 353 
354 MicroAPI::Arange(indexReg, 0); // 0-128354 MicroAPI::Arange(indexReg, 0); // 0-128
355 MicroAPI::DataCopy(idxAddr, indexReg, maskMain);355 MicroAPI::DataCopy(idxAddr, indexReg, maskMain);
356+ MicroAPI::LocalMemBar<MicroAPI::MemType::VEC_STORE, MicroAPI::MemType::VEC_STORE>();
356 357 
357 for (uint16_t i = 0; i < lastTwoDimLoops; i++) {358 for (uint16_t i = 0; i < lastTwoDimLoops; i++) {
358 for (uint16_t j = 0; j < lastSecInDimSize; j++) {359 for (uint16_t j = 0; j < lastSecInDimSize; j++) {
@@ -396,6 +397,8 @@ private:
396 MicroAPI::RegTensor<RangeType> tmpScatIdxReg;397 MicroAPI::RegTensor<RangeType> tmpScatIdxReg;
397 MicroAPI::Arange(indexReg, 0); // b16:0-128; b64:0-32398 MicroAPI::Arange(indexReg, 0); // b16:0-128; b64:0-32
398 MicroAPI::DataCopy(idxAddr, indexReg, maskMain);399 MicroAPI::DataCopy(idxAddr, indexReg, maskMain);
400+ MicroAPI::LocalMemBar<MicroAPI::MemType::VEC_STORE, MicroAPI::MemType::VEC_STORE>();
401+ 
399 MicroAPI::Arange(validReg, beginIdx); // 128 129 ..402 MicroAPI::Arange(validReg, beginIdx); // 128 129 ..
400 MicroAPI::Arange(scatIdxReg, scatBeginIdx);403 MicroAPI::Arange(scatIdxReg, scatBeginIdx);
401 for (uint16_t i = 0; i < lastDimsLeft; i++) {404 for (uint16_t i = 0; i < lastDimsLeft; i++) {
@@ -704,6 +704,7 @@ private:
704 // 先拷出去,防止索引尾部脏数据704 // 先拷出去,防止索引尾部脏数据
705 MicroAPI::DataCopy(idxAddr, lineRange, maskIdx);705 MicroAPI::DataCopy(idxAddr, lineRange, maskIdx);
706 MicroAPI::DataCopy(idxAddr2, lineRange, maskIdx);706 MicroAPI::DataCopy(idxAddr2, lineRange, maskIdx);
707+ MicroAPI::LocalMemBar<MicroAPI::MemType::VEC_STORE, MicroAPI::MemType::VEC_STORE>();
707 708 
708 MicroAPI::Adds(lineRange, lineRange, ((RangeType)-1) * lastLeftPadNum, maskIdx);709 MicroAPI::Adds(lineRange, lineRange, ((RangeType)-1) * lastLeftPadNum, maskIdx);
709 MicroAPI::CompareScalar<RangeType, CMPMODE::LT>(leftMask, lineRange, 0, maskIdx);710 MicroAPI::CompareScalar<RangeType, CMPMODE::LT>(leftMask, lineRange, 0, maskIdx);