[x265] [PATCH] xDCT16 renamed and code cleanup

Steve Borho steve at borho.org
Mon Jul 8 19:59:34 CEST 2013


On Mon, Jul 8, 2013 at 7:11 AM, <praveen at multicorewareinc.com> wrote:

> # HG changeset patch
> # User praveentiwari
> # Date 1373285508 -19800
> # Node ID 449d22a2f7bc61037e0451c29eb240ef2c1fa83b
> # Parent  3aea9851338b800eb0c31e83c4075b7a47eefa92
> xDCT16 renamed and code cleanup
>

These patches are based on the assumption that the previous series had not
been applied, but they were.  So I had to fixup each one of these by hand.
 In the future, please ensure you are working from the latest tip of the
repo.


> diff -r 3aea9851338b -r 449d22a2f7bc source/common/vec/dct.inc
> --- a/source/common/vec/dct.inc Mon Jul 08 17:27:35 2013 +0530
> +++ b/source/common/vec/dct.inc Mon Jul 08 17:41:48 2013 +0530
> @@ -638,32 +638,32 @@
>      int j;
>      int add = 1 << (shift - 1);
>
> -    Vec4i g_aiT_zero_row(64, 64, 0, 0);
> -    Vec4i g_aiT_four_row(83, 36, 0, 0);
> -    Vec4i g_aiT_eight_row(64, -64, 0, 0);
> -    Vec4i g_aiT_twelve_row(36, -83, 0, 0);
> -
> -    Vec4i g_aiT_two_row(89, 75, 50, 18);
> -    Vec4i g_aiT_six_row(75, -18, -89, -50);
> -    Vec4i g_aiT_ten_row(50, -89, 18, 75);
> -    Vec4i g_aiT_fourteen_row(18, -50, 75, -89);
> -
> -    Vec4i g_aiT_one_row_first_half(90, 87, 80, 70);
> -    Vec4i g_aiT_one_row_second_half(57, 43, 25,  9);
> -    Vec4i g_aiT_three_row_first_half(87, 57,  9, -43);
> -    Vec4i g_aiT_three_row_second_half(-80, -90, -70, -25);
> -    Vec4i g_aiT_five_row_first_half(80,  9, -70, -87);
> -    Vec4i g_aiT_five_row_second_half(-25, 57, 90, 43);
> -    Vec4i g_aiT_seven_row_first_half(70, -43, -87,  9);
> -    Vec4i g_aiT_seven_row_second_half(90, 25, -80, -57);
> -    Vec4i g_aiT_nine_row_first_half(57, -80, -25, 90);
> -    Vec4i g_aiT_nine_row_second_half(-9, -87, 43, 70);
> -    Vec4i g_aiT_eleven_row_first_half(43, -90, 57, 25);
> -    Vec4i g_aiT_eleven_row_second_half(-87, 70,  9, -80);
> -    Vec4i g_aiT_thirteen_row_first_half(25, -70, 90, -80);
> -    Vec4i g_aiT_thirteen_row_second_half(43,  9, -57, 87);
> -    Vec4i g_aiT_fifteen_row_first_half(9, -25, 43, -57);
> -    Vec4i g_aiT_fifteen_row_second_half(70, -80, 87, -90);
> +    Vec4i zero_row(64, 64, 0, 0);
> +    Vec4i four_row(83, 36, 0, 0);
> +    Vec4i eight_row(64, -64, 0, 0);
> +    Vec4i twelve_row(36, -83, 0, 0);
> +
> +    Vec4i two_row(89, 75, 50, 18);
> +    Vec4i six_row(75, -18, -89, -50);
> +    Vec4i ten_row(50, -89, 18, 75);
> +    Vec4i fourteen_row(18, -50, 75, -89);
> +
> +    Vec4i one_row_first_half(90, 87, 80, 70);
> +    Vec4i one_row_second_half(57, 43, 25,  9);
> +    Vec4i three_row_first_half(87, 57,  9, -43);
> +    Vec4i three_row_second_half(-80, -90, -70, -25);
> +    Vec4i five_row_first_half(80,  9, -70, -87);
> +    Vec4i five_row_second_half(-25, 57, 90, 43);
> +    Vec4i seven_row_first_half(70, -43, -87,  9);
> +    Vec4i seven_row_second_half(90, 25, -80, -57);
> +    Vec4i nine_row_first_half(57, -80, -25, 90);
> +    Vec4i nine_row_second_half(-9, -87, 43, 70);
> +    Vec4i eleven_row_first_half(43, -90, 57, 25);
> +    Vec4i eleven_row_second_half(-87, 70,  9, -80);
> +    Vec4i thirteen_row_first_half(25, -70, 90, -80);
> +    Vec4i thirteen_row_second_half(43,  9, -57, 87);
> +    Vec4i fifteen_row_first_half(9, -25, 43, -57);
> +    Vec4i fifteen_row_second_half(70, -80, 87, -90);
>
>      for (j = 0; j < line; j++)
>      {
> @@ -694,10 +694,10 @@
>          Vec4i EEE = EE_first_half + EE_second_half;
>          Vec4i EEO = EE_first_half - EE_second_half;
>
> -        Vec4i dst_tmp0 = g_aiT_zero_row * EEE;
> -        Vec4i dst_tmp4 = g_aiT_four_row * EEO;
> -        Vec4i dst_tmp8 = g_aiT_eight_row * EEE;
> -        Vec4i dst_tmp12 = g_aiT_twelve_row * EEO;
> +        Vec4i dst_tmp0 = zero_row * EEE;
> +        Vec4i dst_tmp4 = four_row * EEO;
> +        Vec4i dst_tmp8 = eight_row * EEE;
> +        Vec4i dst_tmp12 = twelve_row * EEO;
>
>          int dst_zero = horizontal_add(dst_tmp0);
>          int dst_four = horizontal_add(dst_tmp4);
> @@ -714,10 +714,10 @@
>          dst[4 * line] = dst_shift_result[2];
>          dst[12 * line] = dst_shift_result[3];
>
> -        Vec4i dst_tmp2 = g_aiT_two_row * EO;
> -        Vec4i dst_tmp6 = g_aiT_six_row * EO;
> -        Vec4i dst_tmp10 = g_aiT_ten_row * EO;
> -        Vec4i dst_tmp14 = g_aiT_fourteen_row * EO;
> +        Vec4i dst_tmp2 = two_row * EO;
> +        Vec4i dst_tmp6 = six_row * EO;
> +        Vec4i dst_tmp10 = ten_row * EO;
> +        Vec4i dst_tmp14 = fourteen_row * EO;
>
>          int dst_two = horizontal_add(dst_tmp2);
>          int dst_six = horizontal_add(dst_tmp6);
> @@ -733,22 +733,22 @@
>          dst[10 * line] = dst_2_6_10_14[2];
>          dst[14 * line] = dst_2_6_10_14[3];
>
> -        Vec4i dst_tmp1_first_half = g_aiT_one_row_first_half *
> O_first_half;
> -        Vec4i dst_tmp1_second_half = g_aiT_one_row_second_half *
> O_second_half;
> -        Vec4i dst_tmp3_first_half = g_aiT_three_row_first_half *
> O_first_half;
> -        Vec4i dst_tmp3_second_half = g_aiT_three_row_second_half *
> O_second_half;
> -        Vec4i dst_tmp5_first_half = g_aiT_five_row_first_half *
> O_first_half;
> -        Vec4i dst_tmp5_second_half = g_aiT_five_row_second_half *
> O_second_half;
> -        Vec4i dst_tmp7_first_half = g_aiT_seven_row_first_half *
> O_first_half;
> -        Vec4i dst_tmp7_second_half = g_aiT_seven_row_second_half *
> O_second_half;
> -        Vec4i dst_tmp9_first_half = g_aiT_nine_row_first_half *
> O_first_half;
> -        Vec4i dst_tmp9_second_half = g_aiT_nine_row_second_half *
> O_second_half;
> -        Vec4i dst_tmp11_first_half = g_aiT_eleven_row_first_half *
> O_first_half;
> -        Vec4i dst_tmp11_second_half = g_aiT_eleven_row_second_half *
> O_second_half;
> -        Vec4i dst_tmp13_first_half = g_aiT_thirteen_row_first_half *
> O_first_half;
> -        Vec4i dst_tmp13_second_half = g_aiT_thirteen_row_second_half *
> O_second_half;
> -        Vec4i dst_tmp15_first_half = g_aiT_fifteen_row_first_half *
> O_first_half;
> -        Vec4i dst_tmp15_second_half = g_aiT_fifteen_row_second_half *
> O_second_half;
> +        Vec4i dst_tmp1_first_half = one_row_first_half * O_first_half;
> +        Vec4i dst_tmp1_second_half = one_row_second_half * O_second_half;
> +        Vec4i dst_tmp3_first_half = three_row_first_half * O_first_half;
> +        Vec4i dst_tmp3_second_half = three_row_second_half *
> O_second_half;
> +        Vec4i dst_tmp5_first_half = five_row_first_half * O_first_half;
> +        Vec4i dst_tmp5_second_half = five_row_second_half * O_second_half;
> +        Vec4i dst_tmp7_first_half = seven_row_first_half * O_first_half;
> +        Vec4i dst_tmp7_second_half = seven_row_second_half *
> O_second_half;
> +        Vec4i dst_tmp9_first_half = nine_row_first_half * O_first_half;
> +        Vec4i dst_tmp9_second_half = nine_row_second_half * O_second_half;
> +        Vec4i dst_tmp11_first_half = eleven_row_first_half * O_first_half;
> +        Vec4i dst_tmp11_second_half = eleven_row_second_half *
> O_second_half;
> +        Vec4i dst_tmp13_first_half = thirteen_row_first_half *
> O_first_half;
> +        Vec4i dst_tmp13_second_half = thirteen_row_second_half *
> O_second_half;
> +        Vec4i dst_tmp15_first_half = fifteen_row_first_half *
> O_first_half;
> +        Vec4i dst_tmp15_second_half = fifteen_row_second_half *
> O_second_half;
>
>          int dst_one = horizontal_add(dst_tmp1_first_half) +
> horizontal_add(dst_tmp1_second_half);
>          int dst_three = horizontal_add(dst_tmp3_first_half) +
> horizontal_add(dst_tmp3_second_half);
> @@ -781,7 +781,7 @@
>      }
>  }
>
> -void xDCT16(short *src, int *dst, intptr_t nStride)
> +void dct16(short *src, int *dst, intptr_t stride)
>  {
>      const int shift_1st = 3;
>      const int shift_2nd = 10;
> @@ -791,7 +791,7 @@
>
>      for (int i = 0; i < 16; i++)
>      {
> -        memcpy(&block[i * 16], &src[i * nStride], 16 * sizeof(short));
> +        memcpy(&block[i * 16], &src[i * stride], 16 * sizeof(short));
>      }
>
>      partialButterfly16(block, coef, shift_1st, 16);
> @@ -851,7 +851,7 @@
>  #undef MAKE_COEF
>  };
>
> -void xDCT16(short *src, int *dst, intptr_t nStride)
> +void dct16(short *src, int *dst, intptr_t stride)
>  {
>      // Const
>      __m128i c_4     = _mm_set1_epi32(4);
> @@ -874,22 +874,22 @@
>      // DCT1
>      for (i = 0; i < 16; i += 8)
>      {
> -        T00A = _mm_load_si128((__m128i*)&src[(i + 0) * nStride + 0]);
>  // [07 06 05 04 03 02 01 00]
> -        T00B = _mm_load_si128((__m128i*)&src[(i + 0) * nStride + 8]);
>  // [0F 0E 0D 0C 0B 0A 09 08]
> -        T01A = _mm_load_si128((__m128i*)&src[(i + 1) * nStride + 0]);
>  // [17 16 15 14 13 12 11 10]
> -        T01B = _mm_load_si128((__m128i*)&src[(i + 1) * nStride + 8]);
>  // [1F 1E 1D 1C 1B 1A 19 18]
> -        T02A = _mm_load_si128((__m128i*)&src[(i + 2) * nStride + 0]);
>  // [27 26 25 24 23 22 21 20]
> -        T02B = _mm_load_si128((__m128i*)&src[(i + 2) * nStride + 8]);
>  // [2F 2E 2D 2C 2B 2A 29 28]
> -        T03A = _mm_load_si128((__m128i*)&src[(i + 3) * nStride + 0]);
>  // [37 36 35 34 33 32 31 30]
> -        T03B = _mm_load_si128((__m128i*)&src[(i + 3) * nStride + 8]);
>  // [3F 3E 3D 3C 3B 3A 39 38]
> -        T04A = _mm_load_si128((__m128i*)&src[(i + 4) * nStride + 0]);
>  // [47 46 45 44 43 42 41 40]
> -        T04B = _mm_load_si128((__m128i*)&src[(i + 4) * nStride + 8]);
>  // [4F 4E 4D 4C 4B 4A 49 48]
> -        T05A = _mm_load_si128((__m128i*)&src[(i + 5) * nStride + 0]);
>  // [57 56 55 54 53 52 51 50]
> -        T05B = _mm_load_si128((__m128i*)&src[(i + 5) * nStride + 8]);
>  // [5F 5E 5D 5C 5B 5A 59 58]
> -        T06A = _mm_load_si128((__m128i*)&src[(i + 6) * nStride + 0]);
>  // [67 66 65 64 63 62 61 60]
> -        T06B = _mm_load_si128((__m128i*)&src[(i + 6) * nStride + 8]);
>  // [6F 6E 6D 6C 6B 6A 69 68]
> -        T07A = _mm_load_si128((__m128i*)&src[(i + 7) * nStride + 0]);
>  // [77 76 75 74 73 72 71 70]
> -        T07B = _mm_load_si128((__m128i*)&src[(i + 7) * nStride + 8]);
>  // [7F 7E 7D 7C 7B 7A 79 78]
> +        T00A = _mm_load_si128((__m128i*)&src[(i + 0) * stride + 0]);
>  // [07 06 05 04 03 02 01 00]
> +        T00B = _mm_load_si128((__m128i*)&src[(i + 0) * stride + 8]);
>  // [0F 0E 0D 0C 0B 0A 09 08]
> +        T01A = _mm_load_si128((__m128i*)&src[(i + 1) * stride + 0]);
>  // [17 16 15 14 13 12 11 10]
> +        T01B = _mm_load_si128((__m128i*)&src[(i + 1) * stride + 8]);
>  // [1F 1E 1D 1C 1B 1A 19 18]
> +        T02A = _mm_load_si128((__m128i*)&src[(i + 2) * stride + 0]);
>  // [27 26 25 24 23 22 21 20]
> +        T02B = _mm_load_si128((__m128i*)&src[(i + 2) * stride + 8]);
>  // [2F 2E 2D 2C 2B 2A 29 28]
> +        T03A = _mm_load_si128((__m128i*)&src[(i + 3) * stride + 0]);
>  // [37 36 35 34 33 32 31 30]
> +        T03B = _mm_load_si128((__m128i*)&src[(i + 3) * stride + 8]);
>  // [3F 3E 3D 3C 3B 3A 39 38]
> +        T04A = _mm_load_si128((__m128i*)&src[(i + 4) * stride + 0]);
>  // [47 46 45 44 43 42 41 40]
> +        T04B = _mm_load_si128((__m128i*)&src[(i + 4) * stride + 8]);
>  // [4F 4E 4D 4C 4B 4A 49 48]
> +        T05A = _mm_load_si128((__m128i*)&src[(i + 5) * stride + 0]);
>  // [57 56 55 54 53 52 51 50]
> +        T05B = _mm_load_si128((__m128i*)&src[(i + 5) * stride + 8]);
>  // [5F 5E 5D 5C 5B 5A 59 58]
> +        T06A = _mm_load_si128((__m128i*)&src[(i + 6) * stride + 0]);
>  // [67 66 65 64 63 62 61 60]
> +        T06B = _mm_load_si128((__m128i*)&src[(i + 6) * stride + 8]);
>  // [6F 6E 6D 6C 6B 6A 69 68]
> +        T07A = _mm_load_si128((__m128i*)&src[(i + 7) * stride + 0]);
>  // [77 76 75 74 73 72 71 70]
> +        T07B = _mm_load_si128((__m128i*)&src[(i + 7) * stride + 8]);
>  // [7F 7E 7D 7C 7B 7A 79 78]
>
>          T00B = _mm_shuffle_epi8(T00B,
> _mm_load_si128((__m128i*)tab_dct_16_0[0]));
>          T01B = _mm_shuffle_epi8(T01B,
> _mm_load_si128((__m128i*)tab_dct_16_0[0]));
> @@ -4089,7 +4089,7 @@
>      p.dct[DST_4x4] = dst4;
>      p.dct[DCT_4x4] = dct4;
>      p.dct[DCT_8x8] = dct8;
> -    p.dct[DCT_16x16] = xDCT16;
> +    p.dct[DCT_16x16] = dct16;
>      p.dct[DCT_32x32] = xDCT32;
>  #endif
>      // TODO: I am not sure the IDCT works on 16bpp mode
> _______________________________________________
> x265-devel mailing list
> x265-devel at videolan.org
> http://mailman.videolan.org/listinfo/x265-devel
>



-- 
Steve Borho
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.videolan.org/pipermail/x265-devel/attachments/20130708/a958d804/attachment-0001.html>


More information about the x265-devel mailing list