~1.14x faster (90 vs 78 cycles) compared with mmxext
Unified · Split
| @@ -1117,6 +1117,28 @@ ff_chroma_intra_body_mmxext: · 1116 unmodified lines | |||
| 1117 | DEBLOCK_P0_Q0 | 1117 | DEBLOCK_P0_Q0 |
| 1118 | %endmacro | 1118 | %endmacro |
| 1119 | 1119 | ||
| 1120 | %macro CHROMA_INTRA_BODY_XMM 0 | ||
| 1121 | LOAD_MASK alpha_d, beta_d | ||
| 1122 | mova m5, m1 | ||
| 1123 | mova m6, m2 | ||
| 1124 | pxor m4, m1, m3 | ||
| 1125 | pand m4, [pb_1] | ||
| 1126 | pavgb m1, m3 | ||
| 1127 | psubusb m1, m4 | ||
| 1128 | pavgb m1, m0 | ||
| 1129 | pxor m4, m2, m0 | ||
| 1130 | pand m4, [pb_1] | ||
| 1131 | pavgb m2, m0 | ||
| 1132 | psubusb m2, m4 | ||
| 1133 | pavgb m2, m3 | ||
| 1134 | psubb m1, m5 | ||
| 1135 | psubb m2, m6 | ||
| 1136 | pand m1, m7 | ||
| 1137 | pand m2, m7 | ||
| 1138 | paddb m1, m5 | ||
| 1139 | paddb m2, m6 | ||
| 1140 | %endmacro | ||
| 1141 | |||
| 1120 | %macro CHROMA_V_START_XMM 1 | 1142 | %macro CHROMA_V_START_XMM 1 |
| 1121 | movsxdifnidn stride_q, stride_d | 1143 | movsxdifnidn stride_q, stride_d |
| 1122 | dec alpha_d | 1144 | dec alpha_d |
| @@ -1190,6 +1212,17 @@ cglobal deblock_h_chroma422_8, 5, 7, 8, 0-16, pix_, stride_, alpha_, beta_, tc0_ · 67 unmodified lines | |||
| 1190 | STORE_8_ROWS PASS8ROWS(pix_q - 2, r5 - 2, stride_q, r6) | 1212 | STORE_8_ROWS PASS8ROWS(pix_q - 2, r5 - 2, stride_q, r6) |
| 1191 | RET | 1213 | RET |
| 1192 | 1214 | ||
| 1215 | cglobal deblock_v_chroma_intra_8, 4, 5, 8, pix_, stride_, alpha_, beta_ | ||
| 1216 | CHROMA_V_START_XMM r4 | ||
| 1217 | movq m0, [r4] | ||
| 1218 | movq m1, [r4 + stride_q] | ||
| 1219 | movq m2, [pix_q] | ||
| 1220 | movq m3, [pix_q + stride_q] | ||
| 1221 | CHROMA_INTRA_BODY_XMM | ||
| 1222 | movq [r4 + stride_q], m1 | ||
| 1223 | movq [pix_q], m2 | ||
| 1224 | RET | ||
| 1225 | |||
| 1193 | %endmacro ; DEBLOCK_CHROMA_XMM | 1226 | %endmacro ; DEBLOCK_CHROMA_XMM |
| 1194 | 1227 | ||
| 1195 | DEBLOCK_CHROMA_XMM avx | 1228 | DEBLOCK_CHROMA_XMM avx |
| @@ -319,6 +319,7 @@ av_cold void ff_h264dsp_init_x86(H264DSPContext *c, const int bit_depth, · 318 unmodified lines | |||
| 319 | #endif | 319 | #endif |
| 320 | 320 | ||
| 321 | c->h264_v_loop_filter_chroma = ff_deblock_v_chroma_8_avx; | 321 | c->h264_v_loop_filter_chroma = ff_deblock_v_chroma_8_avx; |
| 322 | c->h264_v_loop_filter_chroma_intra = ff_deblock_v_chroma_intra_8_avx; | ||
| 322 | if (chroma_format_idc <= 1) { | 323 | if (chroma_format_idc <= 1) { |
| 323 | c->h264_h_loop_filter_chroma = ff_deblock_h_chroma_8_avx; | 324 | c->h264_h_loop_filter_chroma = ff_deblock_h_chroma_8_avx; |
| 324 | } else { | 325 | } else { |