~ubuntu-branches/ubuntu/wily/x264/wily-proposed

« back to all changes in this revision

Viewing changes to common/arm/deblock-a.S

  • Committer: Package Import Robot
  • Author(s): Reinhard Tartler
  • Date: 2012-01-19 07:28:39 UTC
  • mfrom: (12.1.11 experimental)
  • Revision ID: package-import@ubuntu.com-20120119072839-0vj6g40ky09d9nru
Tags: 2:0.120.2127+gitf33c8cb-2ubuntu1
* Merge from Debian, remaining changes:
  - build against libgpac-dev to enable .mp4 output

Show diffs side-by-side

added added

removed removed

Lines of Context:
30
30
.macro h264_loop_filter_start
31
31
    ldr             ip,  [sp]
32
32
    ldr             ip,  [ip]
33
 
    vmov.32         d24[0], ip
 
33
    vdup.32         d24, ip
34
34
    and             ip,  ip,  ip, lsl #16
35
35
    ands            ip,  ip,  ip, lsl #8
36
36
    bxlt            lr
197
197
.endfunc
198
198
 
199
199
.macro h264_loop_filter_chroma
200
 
    vdup.8          d22, r2         // alpha
 
200
    vdup.8          q11, r2         // alpha
201
201
    vmovl.u8        q12, d24
202
 
    vabd.u8         d26, d16, d0    // abs(p0 - q0)
203
 
    vmovl.u8        q2,  d0
204
 
    vabd.u8         d28, d18, d16   // abs(p1 - p0)
205
 
    vsubw.u8        q2,  q2,  d16
206
 
    vsli.16         d24, d24, #8
 
202
    vabd.u8         q13, q8,  q0    // abs(p0 - q0)
 
203
    vabd.u8         q14, q9,  q8    // abs(p1 - p0)
 
204
    vsubl.u8        q2,  d0,  d16
 
205
    vsubl.u8        q3,  d1,  d17
 
206
    vsli.16         q12, q12, #8
207
207
    vshl.i16        q2,  q2,  #2
208
 
    vabd.u8         d30, d2,  d0    // abs(q1 - q0)
 
208
    vshl.i16        q3,  q3,  #2
 
209
    vabd.u8         q15, q1,  q0    // abs(q1 - q0)
209
210
    vaddw.u8        q2,  q2,  d18
210
 
    vclt.u8         d26, d26, d22   // < alpha
 
211
    vaddw.u8        q3,  q3,  d19
 
212
    vclt.u8         q13, q13, q11   // < alpha
211
213
    vsubw.u8        q2,  q2,  d2
212
 
    vdup.8          d22, r3         // beta
213
 
    vclt.s8         d25, d24, #0
 
214
    vsubw.u8        q3,  q3,  d3
 
215
    vdup.8          q11, r3         // beta
 
216
    vclt.s8         q10, q12, #0
214
217
    vrshrn.i16      d4,  q2,  #3
215
 
    vclt.u8         d28, d28, d22   // < beta
216
 
    vbic            d26, d26, d25
217
 
    vclt.u8         d30, d30, d22   // < beta
218
 
    vand            d26, d26, d28
219
 
    vneg.s8         d25, d24
220
 
    vand            d26, d26, d30
221
 
    vmin.s8         d4,  d4,  d24
 
218
    vrshrn.i16      d5,  q3,  #3
 
219
    vclt.u8         q14, q14, q11   // < beta
 
220
    vbic            q13, q13, q10
 
221
    vclt.u8         q15, q15, q11   // < beta
 
222
    vand            q13, q13, q14
 
223
    vneg.s8         q10, q12
 
224
    vand            q13, q13, q15
 
225
    vmin.s8         q2,  q2,  q12
222
226
    vmovl.u8        q14, d16
223
 
    vand            d4,  d4,  d26
224
 
    vmax.s8         d4,  d4,  d25
 
227
    vand            q2,  q2,  q13
 
228
    vmovl.u8        q15, d17
 
229
    vmax.s8         q2,  q2,  q10
225
230
    vmovl.u8        q11, d0
 
231
    vmovl.u8        q12, d1
226
232
    vaddw.s8        q14, q14, d4
 
233
    vaddw.s8        q15, q15, d5
227
234
    vsubw.s8        q11, q11, d4
 
235
    vsubw.s8        q12, q12, d5
228
236
    vqmovun.s16     d16, q14
 
237
    vqmovun.s16     d17, q15
229
238
    vqmovun.s16     d0,  q11
 
239
    vqmovun.s16     d1,  q12
230
240
.endm
231
241
 
232
242
function x264_deblock_v_chroma_neon
233
243
    h264_loop_filter_start
234
244
 
235
245
    sub             r0,  r0,  r1, lsl #1
236
 
    vld1.64         {d18}, [r0,:64], r1
237
 
    vld1.64         {d16}, [r0,:64], r1
238
 
    vld1.64         {d0},  [r0,:64], r1
239
 
    vld1.64         {d2},  [r0,:64]
 
246
    vld2.8          {d18,d19}, [r0,:128], r1
 
247
    vld2.8          {d16,d17}, [r0,:128], r1
 
248
    vld2.8          {d0, d1},  [r0,:128], r1
 
249
    vld2.8          {d2, d3},  [r0,:128]
240
250
 
241
251
    h264_loop_filter_chroma
242
252
 
243
253
    sub             r0,  r0,  r1, lsl #1
244
 
    vst1.64         {d16}, [r0,:64], r1
245
 
    vst1.64         {d0},  [r0,:64], r1
 
254
    vst2.8          {d16,d17}, [r0,:128], r1
 
255
    vst2.8          {d0, d1},  [r0,:128], r1
246
256
 
247
257
    bx              lr
248
258
.endfunc
250
260
function x264_deblock_h_chroma_neon
251
261
    h264_loop_filter_start
252
262
 
253
 
    sub             r0,  r0,  #2
254
 
    vld1.32         {d18[]},  [r0], r1
255
 
    vld1.32         {d16[]},  [r0], r1
256
 
    vld1.32         {d0[]},   [r0], r1
257
 
    vld1.32         {d2[]},   [r0], r1
258
 
    vld1.32         {d18[1]}, [r0], r1
259
 
    vld1.32         {d16[1]}, [r0], r1
260
 
    vld1.32         {d0[1]},  [r0], r1
261
 
    vld1.32         {d2[1]},  [r0], r1
262
 
 
263
 
    vtrn.16         d18, d0
264
 
    vtrn.16         d16, d2
265
 
    vtrn.8          d18, d16
266
 
    vtrn.8          d0,  d2
 
263
    sub             r0,  r0,  #4
 
264
    vld1.8          {d18}, [r0], r1
 
265
    vld1.8          {d16}, [r0], r1
 
266
    vld1.8          {d0},  [r0], r1
 
267
    vld1.8          {d2},  [r0], r1
 
268
    vld1.8          {d19}, [r0], r1
 
269
    vld1.8          {d17}, [r0], r1
 
270
    vld1.8          {d1},  [r0], r1
 
271
    vld1.8          {d3},  [r0], r1
 
272
 
 
273
    vuzp.8          d18, d19
 
274
    vuzp.8          d16, d17
 
275
    vuzp.8          d0,  d1
 
276
    vuzp.8          d2,  d3
 
277
 
 
278
    vtrn.16         q9,  q0
 
279
    vtrn.16         q8,  q1
 
280
    vtrn.8          q9,  q8
 
281
    vtrn.8          q0,  q1
267
282
 
268
283
    h264_loop_filter_chroma
269
284
 
270
 
    vtrn.16         d18, d0
271
 
    vtrn.16         d16, d2
272
 
    vtrn.8          d18, d16
273
 
    vtrn.8          d0,  d2
 
285
    vtrn.16         q9,  q0
 
286
    vtrn.16         q8,  q1
 
287
    vtrn.8          q9,  q8
 
288
    vtrn.8          q0,  q1
 
289
 
 
290
    vzip.8          d18, d19
 
291
    vzip.8          d16, d17
 
292
    vzip.8          d0,  d1
 
293
    vzip.8          d2,  d3
274
294
 
275
295
    sub             r0,  r0,  r1, lsl #3
276
 
    vst1.32         {d18[0]}, [r0], r1
277
 
    vst1.32         {d16[0]}, [r0], r1
278
 
    vst1.32         {d0[0]},  [r0], r1
279
 
    vst1.32         {d2[0]},  [r0], r1
280
 
    vst1.32         {d18[1]}, [r0], r1
281
 
    vst1.32         {d16[1]}, [r0], r1
282
 
    vst1.32         {d0[1]},  [r0], r1
283
 
    vst1.32         {d2[1]},  [r0], r1
 
296
    vst1.8          {d18}, [r0], r1
 
297
    vst1.8          {d16}, [r0], r1
 
298
    vst1.8          {d0},  [r0], r1
 
299
    vst1.8          {d2},  [r0], r1
 
300
    vst1.8          {d19}, [r0], r1
 
301
    vst1.8          {d17}, [r0], r1
 
302
    vst1.8          {d1},  [r0], r1
 
303
    vst1.8          {d3},  [r0], r1
284
304
 
285
305
    bx              lr
286
306
.endfunc