History

Remove apple specific versions of arm macros with arguments

The apple assembler for arm can handle the gnu binutils style macros just fine these days, so there is no need to duplicate all of these macros in two syntaxes, when the new one works fine in all cases. We already require a new enough assembler to support the gnu binutils style features since we use the .rept directive in a few places.

Martin Storsjö committed 11 years ago

Commit 09953901 parent d8202cf10 files · +0 −1142Browse files

Showing the changes to codec/processing/src (2 of 10 files). Show all

Unified · Split

2 files
  1. codec/processing/src/arm/adaptive_quantization.S +0 −9
  2. codec/processing/src/arm/vaa_calc_neon.S +0 −397
codec/processing/src/arm/adaptive_quantization.S+0−9
@@ -33,21 +33,12 @@ · 32 unmodified lines
3333 #ifdef HAVE_NEON
3434 #include "arm_arch_common_macro.S"
3535
36−#ifdef __APPLE__
37−.macro SQR_ADD_16BYTES
38− vmull.u8 q3, $0, $0
39− vmull.u8 q8, $1, $1
40− vpadal.u16 $2, q3
41− vpadal.u16 $2, q8
42−.endm
43−#else
4436 .macro SQR_ADD_16BYTES arg0, arg1, arg2
4537 vmull.u8 q3, \arg0, \arg0
4638 vmull.u8 q8, \arg1, \arg1
4739 vpadal.u16 \arg2, q3
4840 vpadal.u16 \arg2, q8
4941 .endm
50−#endif
5142
5243
5344 WELS_ASM_FUNC_BEGIN SampleVariance16x16_neon
codec/processing/src/arm/vaa_calc_neon.S+0−397
@@ -33,38 +33,6 @@ · 32 unmodified lines
3333 #ifdef HAVE_NEON
3434 #include "arm_arch_common_macro.S"
3535
36−#ifdef __APPLE__
37−
38−.macro ABS_SUB_SUM_16BYTES
39− vld1.32 {q15}, [$0], $2
40− vld1.32 {q14}, [$1], $2
41− vabal.u8 $3, d30, d28
42− vabal.u8 $4, d31, d29
43−.endm
44−
45−.macro ABS_SUB_SUM_8x16BYTES
46− vld1.32 {q15}, [$0], $2
47− vld1.32 {q14}, [$1], $2
48− vabdl.u8 $3, d30, d28
49− vabdl.u8 $4, d31, d29
50−
51− ABS_SUB_SUM_16BYTES $0, $1, $2, $3, $4
52− ABS_SUB_SUM_16BYTES $0, $1, $2, $3, $4
53− ABS_SUB_SUM_16BYTES $0, $1, $2, $3, $4
54− ABS_SUB_SUM_16BYTES $0, $1, $2, $3, $4
55− ABS_SUB_SUM_16BYTES $0, $1, $2, $3, $4
56− ABS_SUB_SUM_16BYTES $0, $1, $2, $3, $4
57− ABS_SUB_SUM_16BYTES $0, $1, $2, $3, $4
58−.endm
59−
60−.macro SAD_8X16BITS
61− vadd.u16 d31, $0, $1
62− vpaddl.u16 d31, d31
63− vpaddl.u32 $2, d31
64−.endm
65−
66−#else
67−
6836 .macro ABS_SUB_SUM_16BYTES arg0, arg1, arg2, arg3, arg4
6937 vld1.32 {q15}, [\arg0], \arg2
7038 vld1.32 {q14}, [\arg1], \arg2
@@ -92,7 +60,6 @@ · 21 unmodified lines
9260 vpaddl.u16 d31, d31
9361 vpaddl.u32 \arg2, d31
9462 .endm
95−#endif
9663
9764
9865 WELS_ASM_FUNC_BEGIN VAACalcSad_neon
@@ -159,52 +126,6 @@ vaa_calc_sad_loop1: · 60 unmodified lines
159126 WELS_ASM_FUNC_END
160127
161128
162−#ifdef __APPLE__
163−.macro SAD_SD_MAD_16BYTES
164− vld1.32 {q0}, [$0], $2
165− vld1.32 {q1}, [$1], $2
166−
167− vpadal.u8 $3, q0
168− vpadal.u8 $4, q1
169−
170− vabd.u8 q0, q0, q1
171− vmax.u8 $5, q0
172− vpadal.u8 $6, q0
173−.endm
174−
175−.macro SAD_SD_MAD_8x16BYTES
176− vld1.32 {q0}, [$0], $2
177− vld1.32 {q1}, [$1], $2
178−
179− vpaddl.u8 q2, q0
180− vpaddl.u8 q3, q1
181−
182− vabd.u8 $3, q0, q1
183− vpaddl.u8 $4, $3 //abs_diff
184−
185−
186− SAD_SD_MAD_16BYTES $0,$1,$2,q2,q3,$3,$4
187− SAD_SD_MAD_16BYTES $0,$1,$2,q2,q3,$3,$4
188− SAD_SD_MAD_16BYTES $0,$1,$2,q2,q3,$3,$4
189− SAD_SD_MAD_16BYTES $0,$1,$2,q2,q3,$3,$4
190− SAD_SD_MAD_16BYTES $0,$1,$2,q2,q3,$3,$4
191− SAD_SD_MAD_16BYTES $0,$1,$2,q2,q3,$3,$4
192− SAD_SD_MAD_16BYTES $0,$1,$2,q2,q3,$3,$4
193−
194− vsub.u16 $5, q2, q3
195−.endm
196−
197−.macro SAD_SD_MAD_CALC
198− vpmax.u8 d0, $0, $1 //8bytes
199− vpmax.u8 d0, d0, d0 //4bytes
200− vpmax.u8 $2, d0, d0 //2bytes
201−
202− vpaddl.u16 $3, $3
203− vpaddl.u32 $3, $3
204− vpaddl.s16 $4, $4
205− vpaddl.s32 $4, $4
206−.endm
207−#else
208129 .macro SAD_SD_MAD_16BYTES arg0, arg1, arg2, arg3, arg4, arg5, arg6
209130 vld1.32 {q0}, [\arg0], \arg2
210131 vld1.32 {q1}, [\arg1], \arg2
@@ -249,7 +170,6 @@ WELS_ASM_FUNC_END · 38 unmodified lines
249170 vpaddl.s16 \arg4, \arg4
250171 vpaddl.s32 \arg4, \arg4
251172 .endm
252−#endif
253173
254174 WELS_ASM_FUNC_BEGIN VAACalcSadBgd_neon
255175
@@ -313,165 +233,6 @@ vaa_calc_sad_bgd_loop1: · 57 unmodified lines
313233 WELS_ASM_FUNC_END
314234
315235
316−#ifdef __APPLE__
317−.macro SSD_MUL_SUM_16BYTES_RESET
318− vmull.u8 $3, $0, $0
319− vpaddl.u16 $2, $3
320−
321− vmull.u8 $3, $1, $1
322− vpadal.u16 $2, $3
323−.endm
324−
325−.macro SSD_MUL_SUM_16BYTES
326− vmull.u8 $3, $0, $0
327− vpadal.u16 $2, $3
328−
329− vmull.u8 $3, $1, $1
330− vpadal.u16 $2, $3
331−.endm
332−
333−.macro SAD_SSD_BGD_16
334− vld1.8 {q0}, [$0], $2 //load cur_row
335−
336− vpadal.u8 q3, q0 //add cur_row together
337− vpadal.u8 q4, q1 //add ref_row together
338−
339− vabd.u8 q2, q0, q1 //abs_diff
340−
341− vmax.u8 q5, q2 //l_mad for 16 bytes reset for every 8x16
342−
343− vpadal.u8 $3, q2 //l_sad for 16 bytes reset for every 8x16
344−
345− SSD_MUL_SUM_16BYTES d4,d5, q8, q11 //q8 for l_sqiff reset for every 16x16
346−
347− vld1.8 {q1}, [$1], $2 //load ref_row
348− vpadal.u8 q9, q0 //q9 for l_sum reset for every 16x16
349−
350− SSD_MUL_SUM_16BYTES d0,d1, q10, q11 //q10 for lsqsum reset for every 16x16
351−.endm
352−
353−//the last row of a 16x16 block
354−.macro SAD_SSD_BGD_16_end
355− vld1.8 {q0}, [$0], $1 //load cur_row
356−
357− vpadal.u8 q3, q0 //add cur_row together
358− vpadal.u8 q4, q1 //add ref_row together
359−
360− vabd.u8 q2, q0, q1 //abs_diff
361−
362− vmax.u8 q5, q2 //l_mad for 16 bytes reset for every 8x16
363−
364− vpadal.u8 $2, q2 //l_sad for 16 bytes reset for every 8x16
365−
366− SSD_MUL_SUM_16BYTES d4,d5, q8, q11 //q8 for l_sqiff reset for every 16x16
367−
368− vpadal.u8 q9, q0 //q9 for l_sum reset for every 16x16
369−
370− SSD_MUL_SUM_16BYTES d0,d1, q10, q11 //q10 for lsqsum reset for every 16x16
371−.endm
372−
373−//for the begin of a 8x16 block, use some instructions to reset the register
374−.macro SAD_SSD_BGD_16_RESET_8x8
375− vld1.8 {q0}, [$0], $2 //load cur_row
376−
377− vpaddl.u8 q3, q0 //add cur_row together
378− vpaddl.u8 q4, q1 //add ref_row together
379−
380− vabd.u8 q2, q0, q1 //abs_diff
381−
382− vmov q5,q2 //calculate max and avoid reset to zero, l_mad for 16 bytes reset for every 8x16
383−
384− vpaddl.u8 $3, q2 //l_sad for 16 bytes reset for every 8x16
385−
386−
387− SSD_MUL_SUM_16BYTES d4,d5, q8, q11 //q8 for l_sqiff reset for every 16x16
388−
389− vld1.8 {q1}, [$1], $2 //load ref_row
390−
391− vpadal.u8 q9, q0 //q9 for l_sum reset for every 16x16
392−
393− SSD_MUL_SUM_16BYTES d0,d1, q10, q11 //q10 for lsqsum reset for every 16x16
394−.endm
395−
396−//for the begin of a 16x16 block, use some instructions to reset the register
397−.macro SAD_SSD_BGD_16_RESET_16x16
398− vld1.8 {q0}, [$0], $2 //load cur_row
399− vld1.8 {q1}, [$1], $2 //load ref_row
400−
401− vpaddl.u8 q3, q0 //add cur_row together
402− vpaddl.u8 q4, q1 //add ref_row together
403−
404− vabd.u8 q2, q0, q1 //abs_diff
405−
406− vmov q5,q2 //calculate max and avoid reset to zero, l_mad for 16 bytes reset for every 8x16
407−
408− vpaddl.u8 $3, q2 //l_sad for 16 bytes reset for every 8x16
409−
410− SSD_MUL_SUM_16BYTES_RESET d4,d5,q8, q11 //q8 for l_sqiff reset for every 16x16
411−
412− vld1.8 {q1}, [$1], $2 //load ref_row
413−
414− vpaddl.u8 q9, q0 //q9 for l_sum reset for every 16x16
415−
416− SSD_MUL_SUM_16BYTES_RESET d0,d1,q10,q11 //q10 for lsqsum reset for every 16x16
417−.endm
418−
419−//for each 8x16 block
420−.macro SAD_SSD_BGD_CALC_8x16
421−
422− vpmax.u8 d10, d10, d11 //4 numbers
423− vpmax.u8 d10, d10, d10 //2 numbers
424− vpmax.u8 d10, d10, d10 //1 number1
425−
426− vmov $0, d10 //d26 d27 keeps the l_mad
427−
428− //p_sd8x8 fix me
429− vpaddl.u16 q3, q3
430− vpaddl.u16 q4, q4
431−
432− vsub.i32 $1, q3, q4
433− vpaddl.u32 $1, $1
434−
435− //psad8x8
436− vpaddl.u16 $2, $2
437− vpaddl.u32 $2, $2
438−
439− //psadframe
440− vadd.i32 q12, $2
441−.endm
442−
443−.macro SAD_SSD_BGD_16x16
444− //for one 8x16
445− SAD_SSD_BGD_16_RESET_16x16 $0, $1, $2, q6
446− SAD_SSD_BGD_16 $0, $1, $2, q6
447− SAD_SSD_BGD_16 $0, $1, $2, q6
448− SAD_SSD_BGD_16 $0, $1, $2, q6
449− SAD_SSD_BGD_16 $0, $1, $2, q6
450− SAD_SSD_BGD_16 $0, $1, $2, q6
451− SAD_SSD_BGD_16 $0, $1, $2, q6
452− SAD_SSD_BGD_16 $0, $1, $2, q6
453−
454− SAD_SSD_BGD_CALC_8x16 d26, q14, q6
455−
456− //for another 8x16
457− SAD_SSD_BGD_16_RESET_8x8 $0, $1, $2, q7
458− SAD_SSD_BGD_16 $0, $1, $2, q7
459− SAD_SSD_BGD_16 $0, $1, $2, q7
460− SAD_SSD_BGD_16 $0, $1, $2, q7
461− SAD_SSD_BGD_16 $0, $1, $2, q7
462− SAD_SSD_BGD_16 $0, $1, $2, q7
463− SAD_SSD_BGD_16 $0, $1, $2, q7
464− SAD_SSD_BGD_16_end $0, $2, q7
465−
466− SAD_SSD_BGD_CALC_8x16 d27, q15, q7
467−.endm
468−
469−.macro SSD_SAD_SD_MAD_PADDL
470− vpaddl.s16 $0, $0
471− vpaddl.s32 $0, $0
472− vadd.i32 $1, $1, $2
473−.endm
474−#else
475236 .macro SSD_MUL_SUM_16BYTES_RESET arg0, arg1, arg2, arg3
476237 vmull.u8 \arg3, \arg0, \arg0
477238 vpaddl.u16 \arg2, \arg3
@@ -629,7 +390,6 @@ WELS_ASM_FUNC_END · 151 unmodified lines
629390 vpaddl.s32 \arg0, \arg0
630391 vadd.i32 \arg1, \arg1, \arg2
631392 .endm
632−#endif
633393
634394
635395 WELS_ASM_FUNC_BEGIN VAACalcSadSsdBgd_neon
@@ -711,105 +471,6 @@ bne vaa_calc_sad_ssd_bgd_height_loop · 75 unmodified lines
711471 WELS_ASM_FUNC_END
712472
713473
714−#ifdef __APPLE__
715−.macro SAD_VAR_16
716− vld1.8 {q0}, [$0], $2 //load cur_row
717−
718− vpadal.u8 q3, q0 //add cur_row together
719− vpadal.u8 q4, q1 //add ref_row together
720−
721− vabd.u8 q2, q0, q1 //abs_diff
722−
723− vpadal.u8 $3, q2 //l_sad for 16 bytes reset for every 8x16
724−
725− vld1.8 {q1}, [$1], $2
726−
727− vpadal.u8 q9, q0 //q9 for l_sum reset for every 16x16
728−
729− SSD_MUL_SUM_16BYTES d0,d1, q10, q11 //q10 for lsqsum reset for every 16x16
730−.endm
731−
732−.macro SAD_VAR_16_END
733− vld1.8 {q0}, [$0], $1 //load cur_row
734−
735− vpadal.u8 q3, q0 //add cur_row together
736− vpadal.u8 q4, q1 //add ref_row together
737−
738− vabd.u8 q2, q0, q1 //abs_diff
739−
740− vpadal.u8 $2, q2 //l_sad for 16 bytes reset for every 8x16
741−
742− vpadal.u8 q9, q0 //q9 for l_sum reset for every 16x16
743−
744− SSD_MUL_SUM_16BYTES d0,d1, q10, q11 //q10 for lsqsum reset for every 16x16
745−.endm
746−
747−.macro SAD_VAR_16_RESET_16x16
748− vld1.8 {q0}, [$0], $2 //load cur_row
749− vld1.8 {q1}, [$1], $2
750−
751− vpaddl.u8 q3, q0 //add cur_row together
752− vpaddl.u8 q4, q1 //add ref_row together
753−
754− vabd.u8 q2, q0, q1 //abs_diff
755−
756− vpaddl.u8 $3, q2 //l_sad for 16 bytes reset for every 8x16
757−
758− vld1.8 {q1}, [$1], $2
759−
760− vpaddl.u8 q9, q0 //q9 for l_sum reset for every 16x16
761−
762− SSD_MUL_SUM_16BYTES_RESET d0,d1, q10, q11
763−.endm
764−
765−.macro SAD_VAR_16_RESET_8x8
766− vld1.8 {q0}, [$0], $2 //load cur_row
767−
768− vpaddl.u8 q3, q0 //add cur_row together
769− vpaddl.u8 q4, q1 //add ref_row together
770−
771− vabd.u8 q2, q0, q1 //abs_diff
772−
773− vpaddl.u8 $3, q2 //l_sad for 16 bytes reset for every 8x16
774−
775− vld1.8 {q1}, [$1], $2
776−
777− vpadal.u8 q9, q0 //q9 for l_sum reset for every 16x16
778−
779− SSD_MUL_SUM_16BYTES d0,d1, q10, q11 //q10 for lsqsum reset for every 16x16
780−.endm
781−
782−.macro SAD_VAR_16x16
783− //for one 8x16
784− SAD_VAR_16_RESET_16x16 $0, $1, $2, q6
785− SAD_VAR_16 $0, $1, $2, q6
786− SAD_VAR_16 $0, $1, $2, q6
787− SAD_VAR_16 $0, $1, $2, q6
788− SAD_VAR_16 $0, $1, $2, q6
789− SAD_VAR_16 $0, $1, $2, q6
790− SAD_VAR_16 $0, $1, $2, q6
791− SAD_VAR_16 $0, $1, $2, q6
792−
793− vpaddl.u16 q6, q6
794− vpaddl.u32 q6, q6
795− vadd.i32 q12, q6
796−
797− //for another 8x16
798− SAD_VAR_16_RESET_8x8 $0, $1, $2, q7
799− SAD_VAR_16 $0, $1, $2, q7
800− SAD_VAR_16 $0, $1, $2, q7
801− SAD_VAR_16 $0, $1, $2, q7
802− SAD_VAR_16 $0, $1, $2, q7
803− SAD_VAR_16 $0, $1, $2, q7
804− SAD_VAR_16 $0, $1, $2, q7
805− SAD_VAR_16_END $0, $2, q7
806−
807− vpaddl.u16 q7, q7
808− vpaddl.u32 q7, q7
809−
810− vadd.i32 q12, q7
811−.endm
812−#else
813474 .macro SAD_VAR_16 arg0, arg1, arg2, arg3
814475 vld1.8 {q0}, [\arg0], \arg2 //load cur_row
815476
@@ -908,7 +569,6 @@ WELS_ASM_FUNC_END · 92 unmodified lines
908569
909570 vadd.i32 q12, q7
910571 .endm
911−#endif
912572
913573
914574 WELS_ASM_FUNC_BEGIN VAACalcSadVar_neon
@@ -970,62 +630,6 @@ bne vaa_calc_sad_var_height_loop · 55 unmodified lines
970630 WELS_ASM_FUNC_END
971631
972632
973−#ifdef __APPLE__
974−.macro SAD_SSD_16
975− SAD_VAR_16 $0, $1, $2, $3
976−
977− SSD_MUL_SUM_16BYTES d4,d5,q8, q11
978−.endm
979−
980−.macro SAD_SSD_16_END
981− SAD_VAR_16_END $0, $1, $2
982−
983− SSD_MUL_SUM_16BYTES d4,d5,q8, q11 //q8 for l_sqiff reset for every 16x16
984−.endm
985−
986−.macro SAD_SSD_16_RESET_16x16
987− SAD_VAR_16_RESET_16x16 $0, $1, $2, $3
988−
989− SSD_MUL_SUM_16BYTES_RESET d4,d5,q8, q11 //q8 for l_sqiff reset for every 16x16
990−.endm
991−
992−.macro SAD_SSD_16_RESET_8x8
993− SAD_VAR_16_RESET_8x8 $0, $1, $2, $3
994−
995− SSD_MUL_SUM_16BYTES d4,d5,q8, q11 //q8 for l_sqiff reset for every 16x16
996−.endm
997−
998−.macro SAD_SSD_16x16
999− //for one 8x16
1000− SAD_SSD_16_RESET_16x16 $0, $1, $2, q6
1001− SAD_SSD_16 $0, $1, $2, q6
1002− SAD_SSD_16 $0, $1, $2, q6
1003− SAD_SSD_16 $0, $1, $2, q6
1004− SAD_SSD_16 $0, $1, $2, q6
1005− SAD_SSD_16 $0, $1, $2, q6
1006− SAD_SSD_16 $0, $1, $2, q6
1007− SAD_SSD_16 $0, $1, $2, q6
1008−
1009− vpaddl.u16 q6, q6
1010− vpaddl.u32 q6, q6
1011− vadd.i32 q12, q6
1012−
1013− //for another 8x16
1014− SAD_SSD_16_RESET_8x8 $0, $1, $2, q7
1015− SAD_SSD_16 $0, $1, $2, q7
1016− SAD_SSD_16 $0, $1, $2, q7
1017− SAD_SSD_16 $0, $1, $2, q7
1018− SAD_SSD_16 $0, $1, $2, q7
1019− SAD_SSD_16 $0, $1, $2, q7
1020− SAD_SSD_16 $0, $1, $2, q7
1021− SAD_SSD_16_END $0, $2, q7
1022−
1023− vpaddl.u16 q7, q7
1024− vpaddl.u32 q7, q7
1025−
1026− vadd.i32 q12, q7
1027−.endm
1028−#else
1029633 .macro SAD_SSD_16 arg0, arg1, arg2, arg3
1030634 SAD_VAR_16 \arg0, \arg1, \arg2, \arg3
1031635
@@ -1080,7 +684,6 @@ WELS_ASM_FUNC_END · 48 unmodified lines
1080684
1081685 vadd.i32 q12, q7
1082686 .endm
1083−#endif
1084687
1085688
1086689 WELS_ASM_FUNC_BEGIN VAACalcSadSsd_neon

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t