)]}'
{
  "commit": "8d440c181c1bdc884c2d2d6d23a773ae51d178a1",
  "tree": "58778ec98faece087eb78461c40361f0d5b92285",
  "parents": [
    "63e54f7374680a03beb3fb595ea756354dabaffd"
  ],
  "author": {
    "name": "Frank Barchard",
    "email": "fbarchard@google.com",
    "time": "Wed Oct 28 13:27:48 2026 -0700"
  },
  "committer": {
    "name": "libyuv-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "email": "libyuv-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "time": "Thu Oct 29 12:46:05 2026 -0700"
  },
  "message": "[libyuv] Upgrade x86 SIMD to AVX2/AVX-512 with 32-bit \u0026 row_win parity\n\nUpgrade all remaining SSE2 and SSSE3 max-ISA kernels across row, scale,\nrotate, and compare to AVX2 while removing superseded pre-AVX2 versions.\nImplement AVX2 for ARGBDetectRow, HalfRow, HalfRow_16,\nHalfWidthRow_16To8_Odd, AYUVTo{Y,UV,VU}Row, AR30To{ARGB,ABGR,AB30}Row,\nand TransposeWx8_16, and port all remaining Arm NEON (or higher) kernels\nto AVX2 (TransposeWxH_32, ScaleRowDown2*_16, ScaleUVRowDown2*,\nScaleUVRowDownEven, ScaleColsUp2, GaussCol*, Scale*Samples, and\nUnpackMT2T).\n\nPort 32-bit x86 (-m32 -fPIC) inline assembly across row_gcc.cc,\nrotate_gcc.cc, and compare_gcc.cc (including 5-GPR PIC support for\nI422ToAR30Row and I444/I422/I210/I410AlphaToARGBRow) so x86_32 matches\nx64 SIMD coverage across all 187 supported row/rotate/compare kernels.\nHandle 1..7 remainder elements directly in inline assembly without\ncalling *_C in ARGBDetectRow_AVX2, ARGBSepiaRow_AVX2,\nARGBColorMatrixRow_AVX2, ARGBQuantizeRow_AVX2, ARGBShadeRow_AVX2,\nARGBAffineRow_AVX2, GaussRow*_AVX2, GaussCol*_AVX2, and\n*ColorTableRow_AVX2. Fix unsigned 16-bit packing in\nScaleRowUp2_{Linear,Bilinear}_16_SSE2.\n\nAdd 64-bit AVX-512 (AVX512BW, AVX512VBMI, and AVX512VNNI, including\nSumSquareError_AVX512VNNI) implementations in *_gcc.cc and *_win.cc\nwherever Arm64 exceeds NEON, and handle arbitrary tail widths via\nopmasks in Mirror*_AVX512BW without _Any_ wrappers. Bring row_win.cc,\nscale_win.cc, rotate_win.cc, and compare_win.cc C++ intrinsics (and\n64-bit VISUALC_HAS_AVX2) to 100% parity with *_gcc.cc for MSVC and\nMemorySanitizer.\n\nWire YUY2ToUVRow_HVX and UYVYToUVRow_HVX in YUY2ToI420 and UYVYToI420,\nimplement all 13 missing ScaleUV*_16_C kernels so UVScale_16 supports\ndownscaling and general upscaling, make Ssim8x8, TransposeWxH,\nTransposeUVWxH, and TransposeWxH_16 static internal helpers, clean up\nHAS_* guards, enable direct row unittests so all 279 *_C functions have\nactive test coverage, and add Intel AMX-TF32 (kCpuHasAMXTF32, CPUID\nleaf 7 subleaf 1 EAX bit 4, LIBYUV_DISABLE_AMXTF32) detection.\n\nMark 16-bit RGB formats (RGB565, ARGB1555, and ARGB4444) and legacy\nfixed-matrix 16-bit RGB-to-YUV row functions as deprecated in headers\nand GEMINI.md, using two-step ARGB wrapper row functions in\nrow_common.cc.\n\nAMD Zen 6 Benchmark (1280 width, 10000 iterations):\n----------------------------------------------------------------\nFunction                  Before (ms)  After (ms)    Improvement\n----------------------------------------------------------------\nARGB1555ToARGBRow                0.83        0.49          1.69x\nARGB1555ToUVRow                 16.00        3.21          4.99x\nARGB1555ToYRow                   7.82        1.38          5.66x\nARGB4444ToUVRow                 15.04        2.58          5.83x\nARGB4444ToYRow                   7.42        1.07          6.94x\nARGBAffineRow                    3.51        2.75          1.28x\nARGBColorMatrixRow               4.09        1.13          3.63x\nARGBColorTableRow               11.21        8.93          1.26x\nARGBLumaColorTableRow           10.01       10.21          0.98x\nARGBQuantizeRow                  2.23        1.21          1.84x\nARGBSepiaRow                     3.29        0.81          4.04x\nARGBSetRow                       0.21        0.21          1.02x\nARGBShadeRow                     1.66        0.87          1.91x\nARGBToRGB565DitherRow            1.22        0.50          2.43x\nARGBToRGB565Row                  1.09        0.44          2.47x\nByteToFloatRow                   0.88        0.41          2.14x\nConvert8To8Row                   0.21        0.11          1.88x\nCopyRow_16                       0.11        0.11          0.97x\nDetileRow                        0.21        0.12          1.75x\nDetileRow_16                     0.23        0.14          1.67x\nDetileSplitUVRow                 0.29        0.21          1.38x\nDivideRow_16                     0.14        0.11          1.30x\nGaussRow                         3.29        1.27          2.59x\nGaussRow_F32                     1.93        0.89          2.17x\nHalfFloatRow                     1.16        0.74          1.57x\nI210AlphaToARGBRow               1.83        0.92          2.00x\nI210ToAR30Row                    2.21        0.96          2.30x\nI210ToARGBRow                    1.75        0.87          2.00x\nI212ToAR30Row                    2.21        0.96          2.31x\nI212ToARGBRow                    1.75        0.87          2.01x\nI410AlphaToARGBRow               1.73        0.86          2.00x\nI410ToAR30Row                    2.04        0.89          2.28x\nI410ToARGBRow                    1.64        0.82          2.00x\nI422ToARGB1555Row                2.94        2.27          1.30x\nI422ToARGB4444Row                2.94        2.27          1.29x\nI422ToRGB565Row                  2.63        1.27          2.07x\nI422ToRGBARow                    1.51        0.82          1.83x\nI444AlphaToARGBRow               1.52        0.87          1.73x\nI444ToARGBRow                    1.48        0.81          1.82x\nI444ToRGB24Row                   2.13        0.72          2.98x\nMergeUVRow_16                    0.87        0.32          2.74x\nP210ToAR30Row                    1.77        0.70          2.54x\nP210ToARGBRow                    1.38        0.62          2.24x\nP410ToAR30Row                    1.94        0.85          2.28x\nP410ToARGBRow                    1.45        0.77          1.90x\nRGB565ToUVRow                   15.84        2.88          5.49x\nRGB565ToYRow                     7.82        1.22          6.42x\nRGBColorTableRow                 8.42        6.95          1.21x\nSetRow                           0.11        0.11          1.04x\nSobelRow                         0.80        0.43          1.87x\nSobelToPlaneRow                  0.27        0.12          2.25x\nSobelXRow                        1.58        0.85          1.85x\nSobelXYRow                       0.80        0.55          1.44x\nSobelYRow                        1.58        0.85          1.85x\nUYVYToARGBRow                    1.28        0.65          1.96x\nUYVYToUVRow                      0.38        0.21          1.78x\nUYVYToYRow                       0.21        0.11          1.87x\nYUY2ToARGBRow                    1.28        0.65          1.96x\nYUY2ToUVRow                      0.40        0.21          1.87x\nYUY2ToYRow                       0.21        0.11          1.88x\n----------------------------------------------------------------\n\nRow/Rotate/Compare SIMD ISA per *_C (* \u003d uncalled in library):\n------------------------------------------------------------------------\nC Function                       arm64    x86_32   x64        row_win\n------------------------------------------------------------------------\nAB64ToARGBRow_C                  NEON     AVX2     AVX2       AVX2\nABGRToAR30Row_C                  NEON     AVX2     AVX512BW   AVX512BW\nAR30ToAB30Row_C                  NEON     AVX2     AVX512BW   AVX512BW\nAR30ToABGRRow_C                  NEON     AVX2     AVX512BW   AVX512BW\nAR30ToARGBRow_C                  NEON     AVX2     AVX512BW   AVX512BW\nAR64ShuffleRow_C                 NEON     AVX2     AVX512BW   AVX512BW\nAR64ToAB64Row_C                  NEON     AVX2     AVX512BW   AVX512BW\nAR64ToARGBRow_C                  NEON     AVX2     AVX2       AVX2\nARGB1555ToARGBRow_C              SVE2     AVX2     AVX512BW   AVX512BW\nARGB1555ToUVMatrixRow_C          NEON     AVX2     AVX2       AVX2\nARGB1555ToUVRow_C *              NEON     AVX2     AVX2       AVX2\nARGB1555ToYMatrixRow_C           NEON     AVX2     AVX2       AVX2\nARGB1555ToYRow_C *               NEON     AVX2     AVX2       AVX2\nARGB4444ToARGBRow_C              NEON     AVX2     AVX2       AVX2\nARGB4444ToUVMatrixRow_C          NEON     AVX2     AVX2       AVX2\nARGB4444ToUVRow_C *              NEON     AVX2     AVX2       AVX2\nARGB4444ToYMatrixRow_C           NEON     AVX2     AVX2       AVX2\nARGB4444ToYRow_C *               NEON     AVX2     AVX2       AVX2\nARGBAddRow_C                     NEON     AVX2     AVX2       AVX2\nARGBAffineRow_C *                NEON     AVX2     AVX2       AVX2\nARGBAlphaBlendRow_C              SME      AVX2     AVX512BW   AVX512BW\nARGBAttenuateRow_C               NEON     AVX2     AVX512BW   AVX512BW\nARGBBlendRow_C                   NEON     AVX2     AVX512BW   AVX512BW\nARGBColorMatrixRow_C             I8MM     AVX2     AVX512VNNI AVX512VNNI\nARGBColorTableRow_C              NEON     AVX2     AVX2       AVX2\nARGBCopyAlphaRow_C               NEON     AVX2     AVX2       AVX2\nARGBCopyYToAlphaRow_C            NEON     AVX2     AVX512BW   AVX512BW\nARGBDetectRow_C                  -        AVX2     AVX2       AVX2\nARGBExtractAlphaRow_C            NEON     AVX2     AVX512BW   AVX512BW\nARGBGrayRow_C                    DOTPROD  AVX2     AVX512VNNI AVX512VNNI\nARGBLumaColorTableRow_C          NEON     AVX2     AVX2       AVX2\nARGBMirrorRow_C                  NEON     AVX2     AVX512BW   AVX512BW\nARGBMultiplyRow_C                SME      AVX2     AVX512BW   AVX512BW\nARGBOrRow_C                      SME      AVX2     AVX512BW   AVX512BW\nARGBPolynomialRow_C              NEON     AVX2     AVX2       AVX2\nARGBQuantizeRow_C                NEON     AVX2     AVX2       AVX2\nARGBSepiaRow_C                   DOTPROD  AVX2     AVX512VNNI AVX512VNNI\nARGBSetRow_C                     NEON     AVX2     AVX2       AVX2\nARGBShadeRow_C                   NEON     AVX2     AVX2       AVX2\nARGBShuffleRow_C                 NEON     AVX2     AVX512BW   AVX512BW\nARGBSubtractRow_C                NEON     AVX2     AVX2       AVX2\nARGBToAB64Row_C                  NEON     AVX2     AVX2       AVX2\nARGBToABGRRow_C                  NEON     AVX2     AVX512BW   AVX512BW\nARGBToAR30Row_C                  NEON     AVX2     AVX512BW   AVX512BW\nARGBToAR64Row_C                  NEON     AVX2     AVX2       AVX2\nARGBToARGB1555Row_C              NEON     AVX2     AVX2       AVX2\nARGBToARGB4444Row_C              NEON     AVX2     AVX2       AVX2\nARGBToBGRARow_C                  NEON     AVX2     AVX512BW   AVX512BW\nARGBToRAWRow_C                   SVE2     AVX2     AVX512BW   AVX512BW\nARGBToRGB24Row_C                 SVE2     AVX2     AVX512BW   AVX512BW\nARGBToRGB565DitherRow_C          SVE2     AVX2     AVX512BW   AVX512BW\nARGBToRGB565Row_C                SVE2     AVX2     AVX512BW   AVX512BW\nARGBToRGBARow_C                  NEON     AVX2     AVX512BW   AVX512BW\nARGBToUV444MatrixRow_C           I8MM     AVX2     AVX512VNNI AVX512VNNI\nARGBToUVMatrixRow_C              SME      AVX2     AVX512VNNI AVX512VNNI\nARGBToYMatrixRow_C               SME      AVX2     AVX512VNNI AVX512VNNI\nARGBUnattenuateRow_C             NEON     AVX2     AVX2       AVX2\nAYUVToUVRow_C                    SVE2     AVX2     AVX512VBMI AVX512VBMI\nAYUVToVURow_C                    SVE2     AVX2     AVX512VBMI AVX512VBMI\nAYUVToYRow_C                     NEON     AVX2     AVX512VBMI AVX512VBMI\nBlendPlaneRow_C                  NEON     AVX2     AVX512BW   AVX512BW\nByteToFloatRow_C                 NEON     AVX2     AVX2       AVX2\nComputeCumulativeSumRow_C        NEON     AVX2     AVX2       AVX2\nConvert16To8Row_C                SME      AVX2     AVX512BW   AVX512BW\nConvert8To16Row_C                SME      AVX2     AVX512BW   AVX512BW\nConvert8To8Row_C                 SME      AVX2     AVX512BW   AVX512BW\nCopyRow_16_C                     NEON     AVX2     AVX2       AVX2\nCopyRow_C                        SME      AVX      AVX512BW   AVX512BW\nCumulativeSumToAverageRow_C      NEON     AVX2     AVX2       AVX2\nDetileRow_16_C                   NEON     AVX2     AVX2       AVX2\nDetileRow_C                      NEON     AVX2     AVX2       AVX2\nDetileSplitUVRow_C               NEON     AVX2     AVX2       AVX2\nDetileToYUY2_C                   NEON     AVX2     AVX2       AVX2\nDivideRow_16_C                   SVE2     AVX2     AVX512BW   AVX512BW\nGaussCol_C *                     NEON     AVX2     AVX2       AVX2\nGaussCol_F32_C                   NEON     AVX2     AVX2       AVX2\nGaussRow_C *                     NEON     AVX2     AVX2       AVX2\nGaussRow_F32_C                   NEON     AVX2     AVX2       AVX2\nHalfFloatRow_C                   SVE2     AVX2     AVX512BW   AVX512BW\nHalfMergeUVRow_C                 SVE2     AVX2     AVX512BW   AVX512BW\nHalfRow_16To8_C                  SME      AVX2     AVX512BW   AVX512BW\nHalfRow_16_C                     -        AVX2     AVX2       AVX2\nHalfRow_C                        -        AVX2     AVX2       AVX2\nHalfWidthRow_16To8_C             SME      AVX2     AVX512BW   AVX512BW\nHalfWidthRow_16To8_Odd_C         -        AVX2     AVX2       AVX2\nHammingDistance_C                DOTPROD  AVX2     AVX512BW   AVX512BW\nHashDjb2_C                       NEON     AVX2     AVX512BW   AVX512BW\nI210AlphaToARGBRow_C             SME      AVX2     AVX512BW   AVX512BW\nI210ToAR30Row_C                  SME      AVX2     AVX512BW   AVX512BW\nI210ToARGBRow_C                  SME      AVX2     AVX512BW   AVX512BW\nI212ToAR30Row_C                  SME      AVX2     AVX512BW   AVX512BW\nI212ToARGBRow_C                  SME      AVX2     AVX512BW   AVX512BW\nI400ToARGBRow_C                  SME      AVX2     AVX512BW   AVX512BW\nI410AlphaToARGBRow_C             SME      AVX2     AVX512BW   AVX512BW\nI410ToAR30Row_C                  SME      AVX2     AVX512BW   AVX512BW\nI410ToARGBRow_C                  SME      AVX2     AVX512BW   AVX512BW\nI422AlphaToARGBRow_C             SME      AVX2     AVX512BW   AVX512BW\nI422ToAR30Row_C                  SME      AVX2     AVX512BW   AVX512BW\nI422ToARGB1555Row_C              SME      AVX2     AVX512BW   AVX512BW\nI422ToARGB4444Row_C              SME      AVX2     AVX512BW   AVX512BW\nI422ToARGBRow_C                  SME      AVX2     AVX512BW   AVX512BW\nI422ToRGB24Row_C                 SME      AVX2     AVX512VBMI AVX512VBMI\nI422ToRGB565Row_C                SME      AVX2     AVX512BW   AVX512BW\nI422ToRGBARow_C                  SME      AVX2     AVX512BW   AVX512BW\nI422ToUYVYRow_C                  NEON     AVX2     AVX2       AVX2\nI422ToYUY2Row_C                  NEON     AVX2     AVX2       AVX2\nI444AlphaToARGBRow_C             SME      AVX2     AVX512BW   AVX512BW\nI444ToARGBRow_C                  SME      AVX2     AVX512BW   AVX512BW\nI444ToRGB24Row_C                 SME      AVX2     AVX512VBMI AVX512VBMI\nInterpolateRow_16_C              SME      AVX2     AVX512BW   AVX512BW\nInterpolateRow_C                 SME      AVX2     AVX512BW   AVX512BW\nJ400ToARGBRow_C                  NEON     AVX2     AVX512BW   AVX512BW\nMergeAR64Row_C                   NEON     AVX2     AVX2       AVX2\nMergeARGB16To8Row_C              NEON     AVX2     AVX2       AVX2\nMergeARGBRow_C                   NEON     AVX2     AVX2       AVX2\nMergeRGBRow_C                    NEON     AVX2     AVX512VBMI AVX512VBMI\nMergeUVRow_16_C                  SME      AVX2     AVX512BW   AVX512BW\nMergeUVRow_C                     SME      AVX2     AVX512BW   AVX512BW\nMergeXR30Row_C                   NEON     AVX2     AVX512BW   AVX512BW\nMergeXR64Row_C                   NEON     AVX2     AVX2       AVX2\nMergeXRGB16To8Row_C              NEON     AVX2     AVX2       AVX2\nMergeXRGBRow_C                   NEON     AVX2     AVX2       AVX2\nMirrorRow_16_C                   NEON     AVX2     AVX512BW   AVX512BW\nMirrorRow_C                      NEON     AVX2     AVX512BW   AVX512BW\nMirrorSplitUVRow_C               NEON     AVX2     AVX512BW   AVX512BW\nMirrorUVRow_C                    NEON     AVX2     AVX512BW   AVX512BW\nMultiplyRow_16_C                 SME      AVX2     AVX512BW   AVX512BW\nNV12ToARGBRow_C                  SME      AVX2     AVX512BW   AVX512BW\nNV12ToRGB24Row_C                 SME      AVX2     AVX512VBMI AVX512VBMI\nNV12ToRGB565Row_C                NEON     AVX2     AVX2       AVX2\nNV21ToARGBRow_C                  SME      AVX2     AVX512BW   AVX512BW\nNV21ToRGB24Row_C                 SME      AVX2     AVX512VBMI AVX512VBMI\nNV21ToYUV24Row_C                 NEON     AVX2     AVX2       AVX2\nP210ToAR30Row_C                  SME      AVX2     AVX512BW   AVX512BW\nP210ToARGBRow_C                  SME      AVX2     AVX512BW   AVX512BW\nP410ToAR30Row_C                  SME      AVX2     AVX512BW   AVX512BW\nP410ToARGBRow_C                  SME      AVX2     AVX512BW   AVX512BW\nRAWToARGBRow_C                   SVE2     AVX2     AVX512BW   AVX512BW\nRAWToRGB24Row_C                  SVE2     AVX2     AVX512VBMI AVX512VBMI\nRAWToRGBARow_C                   SVE2     AVX2     AVX512VBMI AVX512VBMI\nRGB24MirrorRow_C                 NEON     AVX2     AVX512VBMI AVX512VBMI\nRGB24ToARGBRow_C                 SVE2     AVX2     AVX512BW   AVX512BW\nRGB565ToARGBRow_C                NEON     AVX2     AVX2       AVX2\nRGB565ToUVMatrixRow_C            NEON     AVX2     AVX2       AVX2\nRGB565ToUVRow_C *                NEON     AVX2     AVX2       AVX2\nRGB565ToYMatrixRow_C             NEON     AVX2     AVX2       AVX2\nRGB565ToYRow_C *                 NEON     AVX2     AVX2       AVX2\nRGBAToARGBRow_C                  NEON     AVX2     AVX512BW   AVX512BW\nRGBColorTableRow_C               NEON     AVX2     AVX2       AVX2\nRGBToUV444MatrixRow_C            NEON     AVX2     AVX512BW   AVX512BW\nRGBToUVMatrixRow_C               NEON     AVX2     AVX512BW   AVX512BW\nRGBToYMatrixRow_C                DOTPROD  AVX2     AVX512BW   AVX512BW\nScaleMaxSamples_C *              NEON     AVX2     AVX2       AVX2\nScaleSamples_C *                 NEON     AVX2     AVX2       AVX2\nScaleSumSamples_C *              NEON     AVX2     AVX2       AVX2\nSetRow_C                         NEON     AVX2     AVX2       AVX2\nSobelRow_C                       NEON     AVX2     AVX2       AVX2\nSobelToPlaneRow_C                NEON     AVX2     AVX2       AVX2\nSobelXRow_C                      NEON     AVX2     AVX2       AVX2\nSobelXYRow_C                     NEON     AVX2     AVX2       AVX2\nSobelYRow_C                      NEON     AVX2     AVX2       AVX2\nSplitARGBRow_C                   NEON     AVX2     AVX2       AVX2\nSplitRGBRow_C                    NEON     AVX2     AVX2       AVX2\nSplitUVRow_16_C                  NEON     AVX2     AVX2       AVX2\nSplitUVRow_C                     SVE2     AVX2     AVX512BW   AVX512BW\nSplitXRGBRow_C                   NEON     AVX2     AVX2       AVX2\nSsim4x4Row_C                     SME      AVX2     AVX512BW   AVX512BW\nSsimWindowRow_C                  SME      AVX2     AVX512BW   AVX512BW\nSumSquareError_C                 DOTPROD  AVX2     AVX512VNNI AVX512VNNI\nSwapUVRow_C                      NEON     AVX2     AVX512BW   AVX512BW\nTransposeUVWx16_C                -        AVX2     AVX512BW   AVX512BW\nTransposeUVWx8_C                 NEON     AVX2     AVX2       AVX2\nTransposeWx16_C                  NEON     AVX2     AVX512BW   AVX512BW\nTransposeWx4_32_C *              SVE2     AVX2     AVX512BW   AVX512BW\nTransposeWx8_16_C                SVE2     AVX2     AVX512BW   AVX512BW\nTransposeWx8_C                   -        AVX2     AVX2       AVX2\nTransposeWxH_32_C                NEON     AVX2     AVX2       AVX2\nUYVYToARGBRow_C                  SME      AVX2     AVX512BW   AVX512BW\nUYVYToUV422Row_C                 NEON     AVX2     AVX2       AVX2\nUYVYToUVRow_C                    SVE2     AVX2     AVX512BW   AVX512BW\nUYVYToYRow_C                     SVE2     AVX2     AVX512BW   AVX512BW\nUnpackMT2T_C                     NEON     AVX2     AVX2       AVX2\nYUY2ToARGBRow_C                  SME      AVX2     AVX512BW   AVX512BW\nYUY2ToNVUVRow_C                  NEON     AVX2     AVX2       AVX2\nYUY2ToUV422Row_C                 NEON     AVX2     AVX2       AVX2\nYUY2ToUVRow_C                    SVE2     AVX2     AVX512BW   AVX512BW\nYUY2ToYRow_C                     SVE2     AVX2     AVX512BW   AVX512BW\n------------------------------------------------------------------------\nSIMD (187 row/rot/cmp)           181 97%  187 100% 187 100%   187 100%\n------------------------------------------------------------------------\n\nScale SIMD ISA supported per *_C function:\n------------------------------------------------------------------------\nC Function                       arm64    x86_32   x64        row_win\n------------------------------------------------------------------------\nFixedDiv1_C                      -        X86      X86        X86\nFixedDiv_C                       -        X86      X86        X86\nScaleARGBCols64_C                -        -        -          -\nScaleARGBColsUp2_C               -        AVX2     AVX2       AVX2\nScaleARGBCols_C                  NEON     AVX2     AVX2       AVX2\nScaleARGBFilterCols64_C          -        -        -          -\nScaleARGBFilterCols_C            NEON     AVX2     AVX2       AVX2\nScaleARGBRowDown2Box_C           SME      AVX2     AVX2       AVX2\nScaleARGBRowDown2Linear_C        SME      AVX2     AVX2       AVX2\nScaleARGBRowDown2_C              SME      AVX2     AVX2       AVX2\nScaleARGBRowDownEvenBox_C        NEON     AVX2     AVX2       AVX2\nScaleARGBRowDownEven_C           NEON     AVX2     AVX2       AVX2\nScaleAddCols0_C                  -        -        -          -\nScaleAddCols1_16_C               -        -        -          -\nScaleAddCols1_C                  -        -        AVX512BW   AVX512BW\nScaleAddCols2_16_C               -        -        -          -\nScaleAddCols2_C                  -        -        AVX512BW   AVX512BW\nScaleAddRow_16_C                 -        -        -          -\nScaleAddRow_C                    NEON     AVX2     AVX512BW   AVX512BW\nScaleColsUp2_16_C                -        -        -          -\nScaleColsUp2_C                   -        AVX2     AVX2       AVX2\nScaleCols_16_C                   -        -        -          -\nScaleCols_C                      -        -        -          -\nScaleFilterCols64_16_C           -        -        -          -\nScaleFilterCols64_C              -        -        -          -\nScaleFilterCols_16_C             -        -        -          -\nScaleFilterCols_C                NEON     AVX2     AVX2       AVX2\nScaleRowDown2Box_16_C            SME      AVX2     AVX2       AVX2\nScaleRowDown2Box_C               SME      AVX2     AVX512BW   AVX512BW\nScaleRowDown2Box_Odd_C           -        -        AVX512BW   AVX512BW\nScaleRowDown2Linear_16_C         SME      AVX2     AVX2       AVX2\nScaleRowDown2Linear_C            SME      AVX2     AVX512BW   AVX512BW\nScaleRowDown2_16_C               SME      AVX2     AVX2       AVX2\nScaleRowDown2_C                  SME      AVX2     AVX512BW   AVX512BW\nScaleRowDown34_0_Box_16_C        -        -        -          -\nScaleRowDown34_0_Box_C           NEON     AVX2     AVX2       AVX2\nScaleRowDown34_16_C              -        -        -          -\nScaleRowDown34_1_Box_16_C        -        -        -          -\nScaleRowDown34_1_Box_C           NEON     AVX2     AVX2       AVX2\nScaleRowDown34_C                 NEON     AVX2     AVX2       AVX2\nScaleRowDown38_16_C              -        -        -          -\nScaleRowDown38_2_Box_16_C        -        -        -          -\nScaleRowDown38_2_Box_C           NEON     AVX2     AVX2       AVX2\nScaleRowDown38_3_Box_16_C        -        -        -          -\nScaleRowDown38_3_Box_C           NEON     AVX2     AVX2       AVX2\nScaleRowDown38_C                 NEON     AVX2     AVX2       AVX2\nScaleRowDown4Box_16_C            -        -        -          -\nScaleRowDown4Box_C               NEON     AVX2     AVX2       AVX2\nScaleRowDown4_16_C               -        -        -          -\nScaleRowDown4_C                  NEON     AVX2     AVX2       AVX2\nScaleRowUp2_Bilinear_16_Any_C    NEON     AVX2     AVX2       AVX2\nScaleRowUp2_Bilinear_16_C        NEON     AVX2     AVX2       AVX2\nScaleRowUp2_Bilinear_Any_C       NEON     AVX2     AVX2       AVX2\nScaleRowUp2_Bilinear_C           NEON     AVX2     AVX2       AVX2\nScaleRowUp2_Linear_16_Any_C      NEON     AVX2     AVX2       AVX2\nScaleRowUp2_Linear_16_C          NEON     AVX2     AVX2       AVX2\nScaleRowUp2_Linear_Any_C         NEON     AVX2     AVX2       AVX2\nScaleRowUp2_Linear_C             NEON     AVX2     AVX2       AVX2\nScaleUVAddCols1_16_C             -        -        -          -\nScaleUVAddCols1_C                -        -        -          -\nScaleUVAddCols2_16_C             -        -        -          -\nScaleUVAddCols2_C                -        -        -          -\nScaleUVAddCols3_16_C             -        -        -          -\nScaleUVAddCols3_C                SME      AVX2     AVX512VBMI AVX512VBMI\nScaleUVCols64_16_C               -        -        -          -\nScaleUVCols64_C                  -        -        -          -\nScaleUVColsUp2_16_C              -        -        -          -\nScaleUVColsUp2_C                 -        -        -          -\nScaleUVCols_16_C                 -        -        -          -\nScaleUVCols_C                    -        -        -          -\nScaleUVFilterCols64_16_C         -        -        -          -\nScaleUVFilterCols64_C            -        -        -          -\nScaleUVFilterCols_16_C           -        -        -          -\nScaleUVFilterCols_C              -        -        -          -\nScaleUVRowDown2Box_16_C          -        -        -          -\nScaleUVRowDown2Box_C             SME      AVX2     AVX2       AVX2\nScaleUVRowDown2Linear_16_C       -        -        -          -\nScaleUVRowDown2Linear_C          SME      AVX2     AVX2       AVX2\nScaleUVRowDown2_16_C             -        -        -          -\nScaleUVRowDown2_C                SME      AVX2     AVX2       AVX2\nScaleUVRowDownEvenBox_16_C       -        -        -          -\nScaleUVRowDownEvenBox_C          -        -        -          -\nScaleUVRowDownEven_16_C          -        -        -          -\nScaleUVRowDownEven_C             NEON     AVX2     AVX2       AVX2\nScaleUVRowUp2_Bilinear_16_Any_C  NEON     AVX2     AVX2       AVX2\nScaleUVRowUp2_Bilinear_16_C      NEON     AVX2     AVX2       AVX2\nScaleUVRowUp2_Bilinear_Any_C     NEON     AVX2     AVX2       AVX2\nScaleUVRowUp2_Bilinear_C         NEON     AVX2     AVX2       AVX2\nScaleUVRowUp2_Linear_16_Any_C    NEON     AVX2     AVX2       AVX2\nScaleUVRowUp2_Linear_16_C        NEON     AVX2     AVX2       AVX2\nScaleUVRowUp2_Linear_Any_C       NEON     AVX2     AVX2       AVX2\nScaleUVRowUp2_Linear_C           NEON     AVX2     AVX2       AVX2\n------------------------------------------------------------------------\nSIMD (92 scale *_C)              44 48%   48 52%   51 55%     51 55%\n------------------------------------------------------------------------\n\nTest: libyuv_unittest\nBug: none\nChange-Id: I2b4a832f2a7fe1fe93487b453240cd15c1f5f940\nReviewed-on: https://chromium-review.googlesource.com/c/libyuv/libyuv/+/8676400\nCommit-Queue: Frank Barchard \u003cfbarchard@google.com\u003e\nReviewed-by: richard winterton \u003crrwinterton@gmail.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "a82327f5b2e9b963c73c7a35dce7a716e2c9a814",
      "old_mode": 33188,
      "old_path": "GEMINI.md",
      "new_id": "923077777938d453916658c6238a3e2f9c79c56f",
      "new_mode": 33188,
      "new_path": "GEMINI.md"
    },
    {
      "type": "modify",
      "old_id": "6dfc0d43dc7a545db5935f9e7bfbcb38421bbf92",
      "old_mode": 33188,
      "old_path": "README.chromium",
      "new_id": "0bac66a43c133168a119959866e0003bb4c9c2f2",
      "new_mode": 33188,
      "new_path": "README.chromium"
    },
    {
      "type": "modify",
      "old_id": "a8c7aef6bc6fa9fe2f64b3fcbb14e5961d10853f",
      "old_mode": 33188,
      "old_path": "docs/environment_variables.md",
      "new_id": "a46744e45bb742e8873cc8c3b8d7d994bc4d16ad",
      "new_mode": 33188,
      "new_path": "docs/environment_variables.md"
    },
    {
      "type": "modify",
      "old_id": "301a103e968f6b72d0176ad88bb087cae4eb5af5",
      "old_mode": 33188,
      "old_path": "include/libyuv/compare_row.h",
      "new_id": "03caa5c011d75460b82a95c5cd7a1e8411acd6c1",
      "new_mode": 33188,
      "new_path": "include/libyuv/compare_row.h"
    },
    {
      "type": "modify",
      "old_id": "adf35df7f41baf31877ea497d6caaaa94cbfd1b0",
      "old_mode": 33188,
      "old_path": "include/libyuv/convert.h",
      "new_id": "fdaec5eaf541c0444f1e810a012cad00b5075b86",
      "new_mode": 33188,
      "new_path": "include/libyuv/convert.h"
    },
    {
      "type": "modify",
      "old_id": "bcb2099d64bea81a1cfbcc9ac8820d270e556a85",
      "old_mode": 33188,
      "old_path": "include/libyuv/convert_argb.h",
      "new_id": "59b690f3a8fa2a75a2ece285174f62e044abdc69",
      "new_mode": 33188,
      "new_path": "include/libyuv/convert_argb.h"
    },
    {
      "type": "modify",
      "old_id": "29d656d0aca27c6303478bf07d5518826607aee9",
      "old_mode": 33188,
      "old_path": "include/libyuv/convert_from_argb.h",
      "new_id": "817df6f9eae3b9b7e8da56f284e56bdcad2c42ec",
      "new_mode": 33188,
      "new_path": "include/libyuv/convert_from_argb.h"
    },
    {
      "type": "modify",
      "old_id": "917df1cb40886429d4d4155adb3e048ecc9bafa7",
      "old_mode": 33188,
      "old_path": "include/libyuv/cpu_id.h",
      "new_id": "54512b766d14c159552db1d9f3d5cf4551ad47fb",
      "new_mode": 33188,
      "new_path": "include/libyuv/cpu_id.h"
    },
    {
      "type": "modify",
      "old_id": "adb50c42d3cdceaf14df327d76b2055c739d7396",
      "old_mode": 33188,
      "old_path": "include/libyuv/cpu_support.h",
      "new_id": "227bf3bd117f5114d1452222368cdef41760ae45",
      "new_mode": 33188,
      "new_path": "include/libyuv/cpu_support.h"
    },
    {
      "type": "modify",
      "old_id": "4897256dbc329112cf903c3a0bd1ea94535d69a9",
      "old_mode": 33188,
      "old_path": "include/libyuv/rotate_row.h",
      "new_id": "4ac43d388c3ef91dfe99e9b32988caddd113aef2",
      "new_mode": 33188,
      "new_path": "include/libyuv/rotate_row.h"
    },
    {
      "type": "modify",
      "old_id": "f3c46bb2a2ee192b1342578707c77b628b01451d",
      "old_mode": 33188,
      "old_path": "include/libyuv/row.h",
      "new_id": "3fe8341b9b5394977d799ce9dfe4590460c7e8a2",
      "new_mode": 33188,
      "new_path": "include/libyuv/row.h"
    },
    {
      "type": "modify",
      "old_id": "e58962e7ec4da21ee34c60979f2dd3b25fc0848e",
      "old_mode": 33188,
      "old_path": "include/libyuv/scale_row.h",
      "new_id": "a4d34c515059b0cde7a9131352caa0cf5101c268",
      "new_mode": 33188,
      "new_path": "include/libyuv/scale_row.h"
    },
    {
      "type": "modify",
      "old_id": "f6cc8e40fb8affc6bcebbd134e00766c0fb9d41a",
      "old_mode": 33188,
      "old_path": "include/libyuv/scale_uv.h",
      "new_id": "168c5d94950b0964aa9c50360bc8b7c409e21876",
      "new_mode": 33188,
      "new_path": "include/libyuv/scale_uv.h"
    },
    {
      "type": "modify",
      "old_id": "caf8590aa47c0120b6d66450cde82c09b4f1512f",
      "old_mode": 33188,
      "old_path": "include/libyuv/version.h",
      "new_id": "5ba507c6d8209cb3177a9898d495ffd27673844a",
      "new_mode": 33188,
      "new_path": "include/libyuv/version.h"
    },
    {
      "type": "modify",
      "old_id": "e60707ae5d57663b3de72d16407e682a171a5372",
      "old_mode": 33188,
      "old_path": "include/libyuv/video_common.h",
      "new_id": "ee989f7869c205be555de5bf25511068947b5f10",
      "new_mode": 33188,
      "new_path": "include/libyuv/video_common.h"
    },
    {
      "type": "modify",
      "old_id": "352cedb1b23ec465533350f2100b3531e303683c",
      "old_mode": 33188,
      "old_path": "source/compare.cc",
      "new_id": "c5ef006994e97931646777202e750d87fb593846",
      "new_mode": 33188,
      "new_path": "source/compare.cc"
    },
    {
      "type": "modify",
      "old_id": "cd667fdd25f12f0378a7ad533be54d7b2bce4bdb",
      "old_mode": 33188,
      "old_path": "source/compare_common.cc",
      "new_id": "f50bc4708245f1d327f09727e8a981fa57ee026a",
      "new_mode": 33188,
      "new_path": "source/compare_common.cc"
    },
    {
      "type": "modify",
      "old_id": "123d92fea13ddf70a2f48d8fcad36670a35fb794",
      "old_mode": 33188,
      "old_path": "source/compare_gcc.cc",
      "new_id": "4ddaa12f93174a5556ebb5d5ab66b27110cee306",
      "new_mode": 33188,
      "new_path": "source/compare_gcc.cc"
    },
    {
      "type": "modify",
      "old_id": "d1166ad4665cc9a04c96a1e464d0051363a3aa1c",
      "old_mode": 33188,
      "old_path": "source/compare_win.cc",
      "new_id": "b969a30910ff0f767322c62126f597b7fd8de13e",
      "new_mode": 33188,
      "new_path": "source/compare_win.cc"
    },
    {
      "type": "modify",
      "old_id": "67385d9ffb9c20308e559ce590ea102d554a00fb",
      "old_mode": 33188,
      "old_path": "source/convert.cc",
      "new_id": "50ea994844edd8ec3cbc59aeead41e132aca7a29",
      "new_mode": 33188,
      "new_path": "source/convert.cc"
    },
    {
      "type": "modify",
      "old_id": "e9d8b9c1c8ac7da932567a66afbdebcb431f9259",
      "old_mode": 33188,
      "old_path": "source/convert_argb.cc",
      "new_id": "e79dcb8ad499e689c36fab788bb14555afb7dd52",
      "new_mode": 33188,
      "new_path": "source/convert_argb.cc"
    },
    {
      "type": "modify",
      "old_id": "4bca7602fe0612beb9f833b7cbc8d5fc800aa07f",
      "old_mode": 33188,
      "old_path": "source/convert_from.cc",
      "new_id": "c4f35cfea38ea39c01eae0bc06f9305f948fed73",
      "new_mode": 33188,
      "new_path": "source/convert_from.cc"
    },
    {
      "type": "modify",
      "old_id": "2337d54f7c0a88ddbaf36eef10257155999f552e",
      "old_mode": 33188,
      "old_path": "source/convert_from_argb.cc",
      "new_id": "cc7691314344a13b1658e9da83c61f410d511929",
      "new_mode": 33188,
      "new_path": "source/convert_from_argb.cc"
    },
    {
      "type": "modify",
      "old_id": "bc699b647e485fad8f32b56b2f34028a447e9369",
      "old_mode": 33188,
      "old_path": "source/convert_to_argb.cc",
      "new_id": "d3b55687a006723c7490ce6219f9e71b037c8a3b",
      "new_mode": 33188,
      "new_path": "source/convert_to_argb.cc"
    },
    {
      "type": "modify",
      "old_id": "67f78b170df069c253e820c7d57230fad9188450",
      "old_mode": 33188,
      "old_path": "source/convert_to_i420.cc",
      "new_id": "0d80d0c0d65cfba4b28e0928d0e4f91d73d92d3e",
      "new_mode": 33188,
      "new_path": "source/convert_to_i420.cc"
    },
    {
      "type": "modify",
      "old_id": "7bfb66de2e5a72ebcb31301d2e01e3ebf8f3d0c0",
      "old_mode": 33188,
      "old_path": "source/cpu_id.cc",
      "new_id": "f78283a97254416dfd045236eab25b58521da2ec",
      "new_mode": 33188,
      "new_path": "source/cpu_id.cc"
    },
    {
      "type": "modify",
      "old_id": "1521e3f055daa6e9929c6a0c556be99fd4f78778",
      "old_mode": 33188,
      "old_path": "source/planar_functions.cc",
      "new_id": "0c8a42542bd8c29b52f72cd04a6ad8aa12a7e4fa",
      "new_mode": 33188,
      "new_path": "source/planar_functions.cc"
    },
    {
      "type": "modify",
      "old_id": "59bf008240242966b92259e886d7185a6622100d",
      "old_mode": 33188,
      "old_path": "source/rotate.cc",
      "new_id": "7b27333f1abb917ffb65930bd3b97556e37fe8c2",
      "new_mode": 33188,
      "new_path": "source/rotate.cc"
    },
    {
      "type": "modify",
      "old_id": "499047cb40b094f0be06fc10e07b653ac33ab463",
      "old_mode": 33188,
      "old_path": "source/rotate_any.cc",
      "new_id": "bc203655a9e60de16e9a27f28127832bf2ac313d",
      "new_mode": 33188,
      "new_path": "source/rotate_any.cc"
    },
    {
      "type": "modify",
      "old_id": "00900d1757a3b79d42a14946f431f5dae9cdeba2",
      "old_mode": 33188,
      "old_path": "source/rotate_argb.cc",
      "new_id": "1b0bf7417dea820c71ec70c6bfdffb7c06e14683",
      "new_mode": 33188,
      "new_path": "source/rotate_argb.cc"
    },
    {
      "type": "modify",
      "old_id": "0abab4f7e040b067b4bcaedbb95a3b7b6605bc4c",
      "old_mode": 33188,
      "old_path": "source/rotate_common.cc",
      "new_id": "e4aab102f57f18aeb1e5fc1ab90ad5354a4aa918",
      "new_mode": 33188,
      "new_path": "source/rotate_common.cc"
    },
    {
      "type": "modify",
      "old_id": "d9456a8421ef1016904d1fc87e2b11f87a845f36",
      "old_mode": 33188,
      "old_path": "source/rotate_gcc.cc",
      "new_id": "251054f2a61c0ff5e655bfbe5db39e0204218c5e",
      "new_mode": 33188,
      "new_path": "source/rotate_gcc.cc"
    },
    {
      "type": "modify",
      "old_id": "707286a0f66d8287f0fcef43f00c1be553e86c5a",
      "old_mode": 33188,
      "old_path": "source/rotate_win.cc",
      "new_id": "d1d48dfea4e3df3f0b9cd59e90622cf063cb7d1b",
      "new_mode": 33188,
      "new_path": "source/rotate_win.cc"
    },
    {
      "type": "modify",
      "old_id": "bb59eaf3efa7b76a62920316eb134825a24e62e3",
      "old_mode": 33188,
      "old_path": "source/row_any.cc",
      "new_id": "3ac640620e6c150522463e2b4f0834f3270c1cfd",
      "new_mode": 33188,
      "new_path": "source/row_any.cc"
    },
    {
      "type": "modify",
      "old_id": "94de60ab33db11f801ac8e7bd8f20397697d245e",
      "old_mode": 33188,
      "old_path": "source/row_common.cc",
      "new_id": "951d3c92739e8006f4f47f6390895b0c8e462d91",
      "new_mode": 33188,
      "new_path": "source/row_common.cc"
    },
    {
      "type": "modify",
      "old_id": "40f990dc00bf3231e89697e5a9c2560364c4be6f",
      "old_mode": 33188,
      "old_path": "source/row_gcc.cc",
      "new_id": "876fdd274fb7d1e7afa9013417f025139e5ee421",
      "new_mode": 33188,
      "new_path": "source/row_gcc.cc"
    },
    {
      "type": "modify",
      "old_id": "da55bd12e0107e98106d1bb7e63e0a1941adbd24",
      "old_mode": 33188,
      "old_path": "source/row_win.cc",
      "new_id": "a986d79ef4dfbadf0e0824c99bfe7872124d17e8",
      "new_mode": 33188,
      "new_path": "source/row_win.cc"
    },
    {
      "type": "modify",
      "old_id": "a9fdf79c868acc73e20ba3dfd952f63761c1d2df",
      "old_mode": 33188,
      "old_path": "source/scale.cc",
      "new_id": "f2157409cb3b9eb016ab89478a620c7baa02d82d",
      "new_mode": 33188,
      "new_path": "source/scale.cc"
    },
    {
      "type": "modify",
      "old_id": "713f3f1866bf4b463ec608c662d956dd86432c3e",
      "old_mode": 33188,
      "old_path": "source/scale_any.cc",
      "new_id": "ec903768e1f0a049997b3eddb829c95f68941395",
      "new_mode": 33188,
      "new_path": "source/scale_any.cc"
    },
    {
      "type": "modify",
      "old_id": "dd9df3612b34de4dbd0650cc53ebe763a6167ff1",
      "old_mode": 33188,
      "old_path": "source/scale_argb.cc",
      "new_id": "53280ea1662a8b27f35c677ad57852e1992df916",
      "new_mode": 33188,
      "new_path": "source/scale_argb.cc"
    },
    {
      "type": "modify",
      "old_id": "0f1e7c845aaff046ace8f31e2eeb9fd439708070",
      "old_mode": 33188,
      "old_path": "source/scale_common.cc",
      "new_id": "a07a2183eba1439b7f240c63996b613f85b5c426",
      "new_mode": 33188,
      "new_path": "source/scale_common.cc"
    },
    {
      "type": "modify",
      "old_id": "b018af795da3c34c9a223d73f8d06de9afa3976b",
      "old_mode": 33188,
      "old_path": "source/scale_gcc.cc",
      "new_id": "dc0383c37a08b8138c01000dc276c858578d70b9",
      "new_mode": 33188,
      "new_path": "source/scale_gcc.cc"
    },
    {
      "type": "modify",
      "old_id": "324822a0e42564a07871d7463baacc4e1db5b0db",
      "old_mode": 33188,
      "old_path": "source/scale_uv.cc",
      "new_id": "706f27a80a6cbbc1809bdb2d932790f025fa36ee",
      "new_mode": 33188,
      "new_path": "source/scale_uv.cc"
    },
    {
      "type": "modify",
      "old_id": "f2ad7f0784e99dcd366f3fc522d2d317e9067714",
      "old_mode": 33188,
      "old_path": "source/scale_win.cc",
      "new_id": "d638770832f2ad45436c5babff0149628d012b91",
      "new_mode": 33188,
      "new_path": "source/scale_win.cc"
    },
    {
      "type": "modify",
      "old_id": "2556bedaaf108fc9554acdc2ef3d5f84941c5761",
      "old_mode": 33188,
      "old_path": "unit_test/compare_test.cc",
      "new_id": "ba0bd272c756d23fb76eacd6ac306a628dad70fd",
      "new_mode": 33188,
      "new_path": "unit_test/compare_test.cc"
    },
    {
      "type": "modify",
      "old_id": "1a08f609b2bcf69de5cc390cbfdfa100184b7724",
      "old_mode": 33188,
      "old_path": "unit_test/cpu_test.cc",
      "new_id": "3829f8dd2342f9ba48bc593f2b29b088788e909a",
      "new_mode": 33188,
      "new_path": "unit_test/cpu_test.cc"
    },
    {
      "type": "modify",
      "old_id": "01312ff60cb09a2c006d52876e1d1f9a8fb411f3",
      "old_mode": 33188,
      "old_path": "unit_test/planar_test.cc",
      "new_id": "5f7cf116e389b34664fa2e7f0ed2e6b533b109a4",
      "new_mode": 33188,
      "new_path": "unit_test/planar_test.cc"
    },
    {
      "type": "modify",
      "old_id": "b9ece940966561aeeeb7ffd05612983d1d21f65e",
      "old_mode": 33188,
      "old_path": "unit_test/rotate_test.cc",
      "new_id": "5ddf899cbe51a006e8f19f16ad2c3c1e20d53b33",
      "new_mode": 33188,
      "new_path": "unit_test/rotate_test.cc"
    },
    {
      "type": "modify",
      "old_id": "bf2ec6b8a76241c403a6939297656621d1e114f6",
      "old_mode": 33188,
      "old_path": "unit_test/scale_plane_test.cc",
      "new_id": "012377d5cd9c548b038f253e3b88703af4ee7655",
      "new_mode": 33188,
      "new_path": "unit_test/scale_plane_test.cc"
    },
    {
      "type": "modify",
      "old_id": "5a8d160a96d14cb4489c59e06209ca440fda64d1",
      "old_mode": 33188,
      "old_path": "unit_test/scale_uv_test.cc",
      "new_id": "bbb6bbc680551d731e705fe71707f9dc8f1fdc67",
      "new_mode": 33188,
      "new_path": "unit_test/scale_uv_test.cc"
    },
    {
      "type": "modify",
      "old_id": "ee1f63e6471e4bac5986145aa0203222b683fb1a",
      "old_mode": 33188,
      "old_path": "unit_test/unit_test.cc",
      "new_id": "c51b184e4ef2c4e0504636552d050f730cb567bd",
      "new_mode": 33188,
      "new_path": "unit_test/unit_test.cc"
    },
    {
      "type": "modify",
      "old_id": "33cd4201a0b7e2d9d1c9332ccc5e5a400ab66dec",
      "old_mode": 33188,
      "old_path": "util/cpuid.c",
      "new_id": "d85595297046759c369db7ccc5af2765d329a5a2",
      "new_mode": 33188,
      "new_path": "util/cpuid.c"
    }
  ]
}
