已合并
add local membar for padv3 #3140
andong_hw创建于 6月4日
add local membar for padv3 #3140
已合并
共 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-128 | 354 | 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-32 | 398 | 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); |