OLD | NEW |
1 /* | 1 /* |
2 * Copyright (c) 2014 The WebM project authors. All Rights Reserved. | 2 * Copyright (c) 2014 The WebM project authors. All Rights Reserved. |
3 * | 3 * |
4 * Use of this source code is governed by a BSD-style license | 4 * Use of this source code is governed by a BSD-style license |
5 * that can be found in the LICENSE file in the root of the source | 5 * that can be found in the LICENSE file in the root of the source |
6 * tree. An additional intellectual property rights grant can be found | 6 * tree. An additional intellectual property rights grant can be found |
7 * in the file PATENTS. All contributing project authors may | 7 * in the file PATENTS. All contributing project authors may |
8 * be found in the AUTHORS file in the root of the source tree. | 8 * be found in the AUTHORS file in the root of the source tree. |
9 */ | 9 */ |
10 | 10 |
(...skipping 26 matching lines...) Expand all Loading... |
37 (int)zbin_ptr[0]); | 37 (int)zbin_ptr[0]); |
38 zbins[1] = _mm_set1_epi32((int)zbin_ptr[1]); | 38 zbins[1] = _mm_set1_epi32((int)zbin_ptr[1]); |
39 | 39 |
40 nzbins[0] = _mm_setzero_si128(); | 40 nzbins[0] = _mm_setzero_si128(); |
41 nzbins[1] = _mm_setzero_si128(); | 41 nzbins[1] = _mm_setzero_si128(); |
42 nzbins[0] = _mm_sub_epi32(nzbins[0], zbins[0]); | 42 nzbins[0] = _mm_sub_epi32(nzbins[0], zbins[0]); |
43 nzbins[1] = _mm_sub_epi32(nzbins[1], zbins[1]); | 43 nzbins[1] = _mm_sub_epi32(nzbins[1], zbins[1]); |
44 | 44 |
45 (void)scan; | 45 (void)scan; |
46 | 46 |
47 vpx_memset(qcoeff_ptr, 0, count * sizeof(*qcoeff_ptr)); | 47 memset(qcoeff_ptr, 0, count * sizeof(*qcoeff_ptr)); |
48 vpx_memset(dqcoeff_ptr, 0, count * sizeof(*dqcoeff_ptr)); | 48 memset(dqcoeff_ptr, 0, count * sizeof(*dqcoeff_ptr)); |
49 | 49 |
50 if (!skip_block) { | 50 if (!skip_block) { |
51 // Pre-scan pass | 51 // Pre-scan pass |
52 for (i = ((int)count / 4) - 1; i >= 0; i--) { | 52 for (i = ((int)count / 4) - 1; i >= 0; i--) { |
53 __m128i coeffs, cmp1, cmp2; | 53 __m128i coeffs, cmp1, cmp2; |
54 int test; | 54 int test; |
55 coeffs = _mm_load_si128((const __m128i *)(coeff_ptr + i * 4)); | 55 coeffs = _mm_load_si128((const __m128i *)(coeff_ptr + i * 4)); |
56 cmp1 = _mm_cmplt_epi32(coeffs, zbins[i != 0]); | 56 cmp1 = _mm_cmplt_epi32(coeffs, zbins[i != 0]); |
57 cmp2 = _mm_cmpgt_epi32(coeffs, nzbins[i != 0]); | 57 cmp2 = _mm_cmpgt_epi32(coeffs, nzbins[i != 0]); |
58 cmp1 = _mm_and_si128(cmp1, cmp2); | 58 cmp1 = _mm_and_si128(cmp1, cmp2); |
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
125 zbin1_tmp, | 125 zbin1_tmp, |
126 zbin1_tmp, | 126 zbin1_tmp, |
127 zbin0_tmp); | 127 zbin0_tmp); |
128 zbins[1] = _mm_set1_epi32(zbin1_tmp); | 128 zbins[1] = _mm_set1_epi32(zbin1_tmp); |
129 | 129 |
130 nzbins[0] = _mm_setzero_si128(); | 130 nzbins[0] = _mm_setzero_si128(); |
131 nzbins[1] = _mm_setzero_si128(); | 131 nzbins[1] = _mm_setzero_si128(); |
132 nzbins[0] = _mm_sub_epi32(nzbins[0], zbins[0]); | 132 nzbins[0] = _mm_sub_epi32(nzbins[0], zbins[0]); |
133 nzbins[1] = _mm_sub_epi32(nzbins[1], zbins[1]); | 133 nzbins[1] = _mm_sub_epi32(nzbins[1], zbins[1]); |
134 | 134 |
135 vpx_memset(qcoeff_ptr, 0, n_coeffs * sizeof(*qcoeff_ptr)); | 135 memset(qcoeff_ptr, 0, n_coeffs * sizeof(*qcoeff_ptr)); |
136 vpx_memset(dqcoeff_ptr, 0, n_coeffs * sizeof(*dqcoeff_ptr)); | 136 memset(dqcoeff_ptr, 0, n_coeffs * sizeof(*dqcoeff_ptr)); |
137 | 137 |
138 if (!skip_block) { | 138 if (!skip_block) { |
139 // Pre-scan pass | 139 // Pre-scan pass |
140 for (i = 0; i < n_coeffs / 4; i++) { | 140 for (i = 0; i < n_coeffs / 4; i++) { |
141 __m128i coeffs, cmp1, cmp2; | 141 __m128i coeffs, cmp1, cmp2; |
142 int test; | 142 int test; |
143 coeffs = _mm_load_si128((const __m128i *)(coeff_ptr + i * 4)); | 143 coeffs = _mm_load_si128((const __m128i *)(coeff_ptr + i * 4)); |
144 cmp1 = _mm_cmplt_epi32(coeffs, zbins[i != 0]); | 144 cmp1 = _mm_cmplt_epi32(coeffs, zbins[i != 0]); |
145 cmp2 = _mm_cmpgt_epi32(coeffs, nzbins[i != 0]); | 145 cmp2 = _mm_cmpgt_epi32(coeffs, nzbins[i != 0]); |
146 cmp1 = _mm_and_si128(cmp1, cmp2); | 146 cmp1 = _mm_and_si128(cmp1, cmp2); |
(...skipping 24 matching lines...) Expand all Loading... |
171 qcoeff_ptr[rc] = (tmp ^ coeff_sign) - coeff_sign; | 171 qcoeff_ptr[rc] = (tmp ^ coeff_sign) - coeff_sign; |
172 dqcoeff_ptr[rc] = qcoeff_ptr[rc] * dequant_ptr[rc != 0] / 2; | 172 dqcoeff_ptr[rc] = qcoeff_ptr[rc] * dequant_ptr[rc != 0] / 2; |
173 | 173 |
174 if (tmp) | 174 if (tmp) |
175 eob = iscan[idx_arr[i]] > eob ? iscan[idx_arr[i]] : eob; | 175 eob = iscan[idx_arr[i]] > eob ? iscan[idx_arr[i]] : eob; |
176 } | 176 } |
177 } | 177 } |
178 *eob_ptr = eob + 1; | 178 *eob_ptr = eob + 1; |
179 } | 179 } |
180 #endif | 180 #endif |
OLD | NEW |