1347 lines
28 KiB
Diff
1347 lines
28 KiB
Diff
--- /dev/null 2019-08-08 12:00:33.421404933 +0300
|
|
+++ b/common/sparc/pixel.h 2020-02-02 17:35:59.661227370 +0300
|
|
@@ -0,0 +1,34 @@
|
|
+/*****************************************************************************
|
|
+ * pixel.h: sparc pixel metrics
|
|
+ *****************************************************************************
|
|
+ * Copyright (C) 2005-2014 x264 project
|
|
+ *
|
|
+ * Authors: Phil Jensen <philj@csufresno.edu>
|
|
+ *
|
|
+ * This program is free software; you can redistribute it and/or modify
|
|
+ * it under the terms of the GNU General Public License as published by
|
|
+ * the Free Software Foundation; either version 2 of the License, or
|
|
+ * (at your option) any later version.
|
|
+ *
|
|
+ * This program is distributed in the hope that it will be useful,
|
|
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
+ * GNU General Public License for more details.
|
|
+ *
|
|
+ * You should have received a copy of the GNU General Public License
|
|
+ * along with this program; if not, write to the Free Software
|
|
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111, USA.
|
|
+ *
|
|
+ * This program is also available under a commercial proprietary license.
|
|
+ * For more information, contact us at licensing@x264.com.
|
|
+ *****************************************************************************/
|
|
+
|
|
+#ifndef X264_SPARC_PIXEL_H
|
|
+#define X264_SPARC_PIXEL_H
|
|
+
|
|
+int x264_pixel_sad_8x8_vis ( uint8_t *, intptr_t, uint8_t *, intptr_t );
|
|
+int x264_pixel_sad_8x16_vis ( uint8_t *, intptr_t, uint8_t *, intptr_t );
|
|
+int x264_pixel_sad_16x8_vis ( uint8_t *, intptr_t, uint8_t *, intptr_t );
|
|
+int x264_pixel_sad_16x16_vis( uint8_t *, intptr_t, uint8_t *, intptr_t );
|
|
+
|
|
+#endif
|
|
--- /dev/null 2019-08-08 12:00:33.421404933 +0300
|
|
+++ ./common/sparc/pixel-a.S 2020-01-27 14:40:28.593197122 +0300
|
|
@@ -0,0 +1,1089 @@
|
|
+/*****************************************************************************
|
|
+ * pixel.asm: sparc pixel metrics
|
|
+ *****************************************************************************
|
|
+ * Copyright (C) 2005-2014 x264 project
|
|
+ *
|
|
+ * Authors: Phil Jensen <philj@csufresno.edu>
|
|
+ *
|
|
+ * This program is free software; you can redistribute it and/or modify
|
|
+ * it under the terms of the GNU General Public License as published by
|
|
+ * the Free Software Foundation; either version 2 of the License, or
|
|
+ * (at your option) any later version.
|
|
+ *
|
|
+ * This program is distributed in the hope that it will be useful,
|
|
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
+ * GNU General Public License for more details.
|
|
+ *
|
|
+ * You should have received a copy of the GNU General Public License
|
|
+ * along with this program; if not, write to the Free Software
|
|
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111, USA.
|
|
+ *
|
|
+ * This program is also available under a commercial proprietary license.
|
|
+ * For more information, contact us at licensing@x264.com.
|
|
+ *****************************************************************************/
|
|
+
|
|
+! VIS optimized SAD for UltraSPARC
|
|
+
|
|
+.text
|
|
+.global x264_pixel_sad_8x8_vis
|
|
+x264_pixel_sad_8x8_vis:
|
|
+ save %sp, -120, %sp
|
|
+
|
|
+ fzero %f12
|
|
+
|
|
+ alignaddr %i0, %g0, %l0
|
|
+ ldd [%l0], %f0
|
|
+ ldd [%l0+8], %f2
|
|
+ faligndata %f0, %f2, %f4
|
|
+
|
|
+ alignaddr %i2, %g0, %l2
|
|
+ ldd [%l2], %f6
|
|
+ ldd [%l2+8], %f8
|
|
+ faligndata %f6, %f8, %f10
|
|
+
|
|
+ add %i0, %i1, %i0
|
|
+ add %i2, %i3, %i2
|
|
+ pdist %f4, %f10, %f12
|
|
+
|
|
+ alignaddr %i0, %g0, %l0
|
|
+ ldd [%l0], %f0
|
|
+ ldd [%l0+8], %f2
|
|
+ faligndata %f0, %f2, %f4
|
|
+
|
|
+ alignaddr %i2, %g0, %l2
|
|
+ ldd [%l2], %f6
|
|
+ ldd [%l2+8], %f8
|
|
+ faligndata %f6, %f8, %f10
|
|
+
|
|
+ add %i0, %i1, %i0
|
|
+ add %i2, %i3, %i2
|
|
+ pdist %f4, %f10, %f12
|
|
+
|
|
+ alignaddr %i0, %g0, %l0
|
|
+ ldd [%l0], %f0
|
|
+ ldd [%l0+8], %f2
|
|
+ faligndata %f0, %f2, %f4
|
|
+
|
|
+ alignaddr %i2, %g0, %l2
|
|
+ ldd [%l2], %f6
|
|
+ ldd [%l2+8], %f8
|
|
+ faligndata %f6, %f8, %f10
|
|
+
|
|
+ add %i0, %i1, %i0
|
|
+ add %i2, %i3, %i2
|
|
+ pdist %f4, %f10, %f12
|
|
+
|
|
+ alignaddr %i0, %g0, %l0
|
|
+ ldd [%l0], %f0
|
|
+ ldd [%l0+8], %f2
|
|
+ faligndata %f0, %f2, %f4
|
|
+
|
|
+ alignaddr %i2, %g0, %l2
|
|
+ ldd [%l2], %f6
|
|
+ ldd [%l2+8], %f8
|
|
+ faligndata %f6, %f8, %f10
|
|
+
|
|
+ add %i0, %i1, %i0
|
|
+ add %i2, %i3, %i2
|
|
+ pdist %f4, %f10, %f12
|
|
+
|
|
+ alignaddr %i0, %g0, %l0
|
|
+ ldd [%l0], %f0
|
|
+ ldd [%l0+8], %f2
|
|
+ faligndata %f0, %f2, %f4
|
|
+
|
|
+ alignaddr %i2, %g0, %l2
|
|
+ ldd [%l2], %f6
|
|
+ ldd [%l2+8], %f8
|
|
+ faligndata %f6, %f8, %f10
|
|
+
|
|
+ add %i0, %i1, %i0
|
|
+ add %i2, %i3, %i2
|
|
+ pdist %f4, %f10, %f12
|
|
+
|
|
+ alignaddr %i0, %g0, %l0
|
|
+ ldd [%l0], %f0
|
|
+ ldd [%l0+8], %f2
|
|
+ faligndata %f0, %f2, %f4
|
|
+
|
|
+ alignaddr %i2, %g0, %l2
|
|
+ ldd [%l2], %f6
|
|
+ ldd [%l2+8], %f8
|
|
+ faligndata %f6, %f8, %f10
|
|
+
|
|
+ add %i0, %i1, %i0
|
|
+ add %i2, %i3, %i2
|
|
+ pdist %f4, %f10, %f12
|
|
+
|
|
+ alignaddr %i0, %g0, %l0
|
|
+ ldd [%l0], %f0
|
|
+ ldd [%l0+8], %f2
|
|
+ faligndata %f0, %f2, %f4
|
|
+
|
|
+ alignaddr %i2, %g0, %l2
|
|
+ ldd [%l2], %f6
|
|
+ ldd [%l2+8], %f8
|
|
+ faligndata %f6, %f8, %f10
|
|
+
|
|
+ add %i0, %i1, %i0
|
|
+ add %i2, %i3, %i2
|
|
+ pdist %f4, %f10, %f12
|
|
+
|
|
+ alignaddr %i0, %g0, %l0
|
|
+ ldd [%l0], %f0
|
|
+ ldd [%l0+8], %f2
|
|
+ faligndata %f0, %f2, %f4
|
|
+
|
|
+ alignaddr %i2, %g0, %l2
|
|
+ ldd [%l2], %f6
|
|
+ ldd [%l2+8], %f8
|
|
+ faligndata %f6, %f8, %f10
|
|
+
|
|
+ add %i0, %i1, %i0
|
|
+ add %i2, %i3, %i2
|
|
+ pdist %f4, %f10, %f12
|
|
+
|
|
+ std %f12, [%fp-24]
|
|
+ ld [%fp-20], %i0
|
|
+
|
|
+ ret
|
|
+ restore
|
|
+
|
|
+.global x264_pixel_sad_8x16_vis
|
|
+x264_pixel_sad_8x16_vis:
|
|
+ save %sp, -120, %sp
|
|
+
|
|
+ fzero %f12
|
|
+
|
|
+ alignaddr %i0, %g0, %l0
|
|
+ ldd [%l0], %f0
|
|
+ ldd [%l0+8], %f2
|
|
+ faligndata %f0, %f2, %f4
|
|
+
|
|
+ alignaddr %i2, %g0, %l2
|
|
+ ldd [%l2], %f6
|
|
+ ldd [%l2+8], %f8
|
|
+ faligndata %f6, %f8, %f10
|
|
+
|
|
+ add %i0, %i1, %i0
|
|
+ add %i2, %i3, %i2
|
|
+ pdist %f4, %f10, %f12
|
|
+
|
|
+ alignaddr %i0, %g0, %l0
|
|
+ ldd [%l0], %f0
|
|
+ ldd [%l0+8], %f2
|
|
+ faligndata %f0, %f2, %f4
|
|
+
|
|
+ alignaddr %i2, %g0, %l2
|
|
+ ldd [%l2], %f6
|
|
+ ldd [%l2+8], %f8
|
|
+ faligndata %f6, %f8, %f10
|
|
+
|
|
+ add %i0, %i1, %i0
|
|
+ add %i2, %i3, %i2
|
|
+ pdist %f4, %f10, %f12
|
|
+
|
|
+ alignaddr %i0, %g0, %l0
|
|
+ ldd [%l0], %f0
|
|
+ ldd [%l0+8], %f2
|
|
+ faligndata %f0, %f2, %f4
|
|
+
|
|
+ alignaddr %i2, %g0, %l2
|
|
+ ldd [%l2], %f6
|
|
+ ldd [%l2+8], %f8
|
|
+ faligndata %f6, %f8, %f10
|
|
+
|
|
+ add %i0, %i1, %i0
|
|
+ add %i2, %i3, %i2
|
|
+ pdist %f4, %f10, %f12
|
|
+
|
|
+ alignaddr %i0, %g0, %l0
|
|
+ ldd [%l0], %f0
|
|
+ ldd [%l0+8], %f2
|
|
+ faligndata %f0, %f2, %f4
|
|
+
|
|
+ alignaddr %i2, %g0, %l2
|
|
+ ldd [%l2], %f6
|
|
+ ldd [%l2+8], %f8
|
|
+ faligndata %f6, %f8, %f10
|
|
+
|
|
+ add %i0, %i1, %i0
|
|
+ add %i2, %i3, %i2
|
|
+ pdist %f4, %f10, %f12
|
|
+
|
|
+ alignaddr %i0, %g0, %l0
|
|
+ ldd [%l0], %f0
|
|
+ ldd [%l0+8], %f2
|
|
+ faligndata %f0, %f2, %f4
|
|
+
|
|
+ alignaddr %i2, %g0, %l2
|
|
+ ldd [%l2], %f6
|
|
+ ldd [%l2+8], %f8
|
|
+ faligndata %f6, %f8, %f10
|
|
+
|
|
+ add %i0, %i1, %i0
|
|
+ add %i2, %i3, %i2
|
|
+ pdist %f4, %f10, %f12
|
|
+
|
|
+ alignaddr %i0, %g0, %l0
|
|
+ ldd [%l0], %f0
|
|
+ ldd [%l0+8], %f2
|
|
+ faligndata %f0, %f2, %f4
|
|
+
|
|
+ alignaddr %i2, %g0, %l2
|
|
+ ldd [%l2], %f6
|
|
+ ldd [%l2+8], %f8
|
|
+ faligndata %f6, %f8, %f10
|
|
+
|
|
+ add %i0, %i1, %i0
|
|
+ add %i2, %i3, %i2
|
|
+ pdist %f4, %f10, %f12
|
|
+
|
|
+ alignaddr %i0, %g0, %l0
|
|
+ ldd [%l0], %f0
|
|
+ ldd [%l0+8], %f2
|
|
+ faligndata %f0, %f2, %f4
|
|
+
|
|
+ alignaddr %i2, %g0, %l2
|
|
+ ldd [%l2], %f6
|
|
+ ldd [%l2+8], %f8
|
|
+ faligndata %f6, %f8, %f10
|
|
+
|
|
+ add %i0, %i1, %i0
|
|
+ add %i2, %i3, %i2
|
|
+ pdist %f4, %f10, %f12
|
|
+
|
|
+ alignaddr %i0, %g0, %l0
|
|
+ ldd [%l0], %f0
|
|
+ ldd [%l0+8], %f2
|
|
+ faligndata %f0, %f2, %f4
|
|
+
|
|
+ alignaddr %i2, %g0, %l2
|
|
+ ldd [%l2], %f6
|
|
+ ldd [%l2+8], %f8
|
|
+ faligndata %f6, %f8, %f10
|
|
+
|
|
+ add %i0, %i1, %i0
|
|
+ add %i2, %i3, %i2
|
|
+ pdist %f4, %f10, %f12
|
|
+
|
|
+ alignaddr %i0, %g0, %l0
|
|
+ ldd [%l0], %f0
|
|
+ ldd [%l0+8], %f2
|
|
+ faligndata %f0, %f2, %f4
|
|
+
|
|
+ alignaddr %i2, %g0, %l2
|
|
+ ldd [%l2], %f6
|
|
+ ldd [%l2+8], %f8
|
|
+ faligndata %f6, %f8, %f10
|
|
+
|
|
+ add %i0, %i1, %i0
|
|
+ add %i2, %i3, %i2
|
|
+ pdist %f4, %f10, %f12
|
|
+
|
|
+ alignaddr %i0, %g0, %l0
|
|
+ ldd [%l0], %f0
|
|
+ ldd [%l0+8], %f2
|
|
+ faligndata %f0, %f2, %f4
|
|
+
|
|
+ alignaddr %i2, %g0, %l2
|
|
+ ldd [%l2], %f6
|
|
+ ldd [%l2+8], %f8
|
|
+ faligndata %f6, %f8, %f10
|
|
+
|
|
+ add %i0, %i1, %i0
|
|
+ add %i2, %i3, %i2
|
|
+ pdist %f4, %f10, %f12
|
|
+
|
|
+ alignaddr %i0, %g0, %l0
|
|
+ ldd [%l0], %f0
|
|
+ ldd [%l0+8], %f2
|
|
+ faligndata %f0, %f2, %f4
|
|
+
|
|
+ alignaddr %i2, %g0, %l2
|
|
+ ldd [%l2], %f6
|
|
+ ldd [%l2+8], %f8
|
|
+ faligndata %f6, %f8, %f10
|
|
+
|
|
+ add %i0, %i1, %i0
|
|
+ add %i2, %i3, %i2
|
|
+ pdist %f4, %f10, %f12
|
|
+
|
|
+ alignaddr %i0, %g0, %l0
|
|
+ ldd [%l0], %f0
|
|
+ ldd [%l0+8], %f2
|
|
+ faligndata %f0, %f2, %f4
|
|
+
|
|
+ alignaddr %i2, %g0, %l2
|
|
+ ldd [%l2], %f6
|
|
+ ldd [%l2+8], %f8
|
|
+ faligndata %f6, %f8, %f10
|
|
+
|
|
+ add %i0, %i1, %i0
|
|
+ add %i2, %i3, %i2
|
|
+ pdist %f4, %f10, %f12
|
|
+
|
|
+ alignaddr %i0, %g0, %l0
|
|
+ ldd [%l0], %f0
|
|
+ ldd [%l0+8], %f2
|
|
+ faligndata %f0, %f2, %f4
|
|
+
|
|
+ alignaddr %i2, %g0, %l2
|
|
+ ldd [%l2], %f6
|
|
+ ldd [%l2+8], %f8
|
|
+ faligndata %f6, %f8, %f10
|
|
+
|
|
+ add %i0, %i1, %i0
|
|
+ add %i2, %i3, %i2
|
|
+ pdist %f4, %f10, %f12
|
|
+
|
|
+ alignaddr %i0, %g0, %l0
|
|
+ ldd [%l0], %f0
|
|
+ ldd [%l0+8], %f2
|
|
+ faligndata %f0, %f2, %f4
|
|
+
|
|
+ alignaddr %i2, %g0, %l2
|
|
+ ldd [%l2], %f6
|
|
+ ldd [%l2+8], %f8
|
|
+ faligndata %f6, %f8, %f10
|
|
+
|
|
+ add %i0, %i1, %i0
|
|
+ add %i2, %i3, %i2
|
|
+ pdist %f4, %f10, %f12
|
|
+
|
|
+ alignaddr %i0, %g0, %l0
|
|
+ ldd [%l0], %f0
|
|
+ ldd [%l0+8], %f2
|
|
+ faligndata %f0, %f2, %f4
|
|
+
|
|
+ alignaddr %i2, %g0, %l2
|
|
+ ldd [%l2], %f6
|
|
+ ldd [%l2+8], %f8
|
|
+ faligndata %f6, %f8, %f10
|
|
+
|
|
+ add %i0, %i1, %i0
|
|
+ add %i2, %i3, %i2
|
|
+ pdist %f4, %f10, %f12
|
|
+
|
|
+ alignaddr %i0, %g0, %l0
|
|
+ ldd [%l0], %f0
|
|
+ ldd [%l0+8], %f2
|
|
+ faligndata %f0, %f2, %f4
|
|
+
|
|
+ alignaddr %i2, %g0, %l2
|
|
+ ldd [%l2], %f6
|
|
+ ldd [%l2+8], %f8
|
|
+ faligndata %f6, %f8, %f10
|
|
+
|
|
+ add %i0, %i1, %i0
|
|
+ add %i2, %i3, %i2
|
|
+ pdist %f4, %f10, %f12
|
|
+
|
|
+ std %f12, [%fp-24]
|
|
+ ld [%fp-20], %i0
|
|
+
|
|
+ ret
|
|
+ restore
|
|
+
|
|
+.global x264_pixel_sad_16x8_vis
|
|
+x264_pixel_sad_16x8_vis:
|
|
+ save %sp, -120, %sp
|
|
+
|
|
+ fzero %f12 ! zero out the accumulator used for pdist
|
|
+
|
|
+ sub %i1, 8, %i1 ! reduce stride by 8, since we are moving forward 8 each block
|
|
+ sub %i3, 8, %i3 ! same here, reduce stride by 8
|
|
+
|
|
+ alignaddr %i0, %g0, %l0
|
|
+ ldd [%l0], %f0
|
|
+ ldd [%l0+8], %f2
|
|
+ faligndata %f0, %f2, %f4
|
|
+
|
|
+ alignaddr %i2, %g0, %l2
|
|
+ ldd [%l2], %f6
|
|
+ ldd [%l2+8], %f8
|
|
+ faligndata %f6, %f8, %f10
|
|
+
|
|
+ add %i0, 8, %i0
|
|
+ add %i2, 8, %i2
|
|
+ pdist %f4, %f10, %f12
|
|
+
|
|
+ alignaddr %i0, %g0, %l0
|
|
+ ldd [%l0], %f0
|
|
+ ldd [%l0+8], %f2
|
|
+ faligndata %f0, %f2, %f4
|
|
+
|
|
+ alignaddr %i2, %g0, %l2
|
|
+ ldd [%l2], %f6
|
|
+ ldd [%l2+8], %f8
|
|
+ faligndata %f6, %f8, %f10
|
|
+
|
|
+ add %i0, %i1, %i0
|
|
+ add %i2, %i3, %i2
|
|
+ pdist %f4, %f10, %f12
|
|
+
|
|
+ alignaddr %i0, %g0, %l0
|
|
+ ldd [%l0], %f0
|
|
+ ldd [%l0+8], %f2
|
|
+ faligndata %f0, %f2, %f4
|
|
+
|
|
+ alignaddr %i2, %g0, %l2
|
|
+ ldd [%l2], %f6
|
|
+ ldd [%l2+8], %f8
|
|
+ faligndata %f6, %f8, %f10
|
|
+
|
|
+ add %i0, 8, %i0
|
|
+ add %i2, 8, %i2
|
|
+ pdist %f4, %f10, %f12
|
|
+
|
|
+ alignaddr %i0, %g0, %l0
|
|
+ ldd [%l0], %f0
|
|
+ ldd [%l0+8], %f2
|
|
+ faligndata %f0, %f2, %f4
|
|
+
|
|
+ alignaddr %i2, %g0, %l2
|
|
+ ldd [%l2], %f6
|
|
+ ldd [%l2+8], %f8
|
|
+ faligndata %f6, %f8, %f10
|
|
+
|
|
+ add %i0, %i1, %i0
|
|
+ add %i2, %i3, %i2
|
|
+ pdist %f4, %f10, %f12
|
|
+
|
|
+ alignaddr %i0, %g0, %l0
|
|
+ ldd [%l0], %f0
|
|
+ ldd [%l0+8], %f2
|
|
+ faligndata %f0, %f2, %f4
|
|
+
|
|
+ alignaddr %i2, %g0, %l2
|
|
+ ldd [%l2], %f6
|
|
+ ldd [%l2+8], %f8
|
|
+ faligndata %f6, %f8, %f10
|
|
+
|
|
+ add %i0, 8, %i0
|
|
+ add %i2, 8, %i2
|
|
+ pdist %f4, %f10, %f12
|
|
+
|
|
+ alignaddr %i0, %g0, %l0
|
|
+ ldd [%l0], %f0
|
|
+ ldd [%l0+8], %f2
|
|
+ faligndata %f0, %f2, %f4
|
|
+
|
|
+ alignaddr %i2, %g0, %l2
|
|
+ ldd [%l2], %f6
|
|
+ ldd [%l2+8], %f8
|
|
+ faligndata %f6, %f8, %f10
|
|
+
|
|
+ add %i0, %i1, %i0
|
|
+ add %i2, %i3, %i2
|
|
+ pdist %f4, %f10, %f12
|
|
+
|
|
+ alignaddr %i0, %g0, %l0
|
|
+ ldd [%l0], %f0
|
|
+ ldd [%l0+8], %f2
|
|
+ faligndata %f0, %f2, %f4
|
|
+
|
|
+ alignaddr %i2, %g0, %l2
|
|
+ ldd [%l2], %f6
|
|
+ ldd [%l2+8], %f8
|
|
+ faligndata %f6, %f8, %f10
|
|
+
|
|
+ add %i0, 8, %i0
|
|
+ add %i2, 8, %i2
|
|
+ pdist %f4, %f10, %f12
|
|
+
|
|
+ alignaddr %i0, %g0, %l0
|
|
+ ldd [%l0], %f0
|
|
+ ldd [%l0+8], %f2
|
|
+ faligndata %f0, %f2, %f4
|
|
+
|
|
+ alignaddr %i2, %g0, %l2
|
|
+ ldd [%l2], %f6
|
|
+ ldd [%l2+8], %f8
|
|
+ faligndata %f6, %f8, %f10
|
|
+
|
|
+ add %i0, %i1, %i0
|
|
+ add %i2, %i3, %i2
|
|
+ pdist %f4, %f10, %f12
|
|
+
|
|
+ alignaddr %i0, %g0, %l0
|
|
+ ldd [%l0], %f0
|
|
+ ldd [%l0+8], %f2
|
|
+ faligndata %f0, %f2, %f4
|
|
+
|
|
+ alignaddr %i2, %g0, %l2
|
|
+ ldd [%l2], %f6
|
|
+ ldd [%l2+8], %f8
|
|
+ faligndata %f6, %f8, %f10
|
|
+
|
|
+ add %i0, 8, %i0
|
|
+ add %i2, 8, %i2
|
|
+ pdist %f4, %f10, %f12
|
|
+
|
|
+ alignaddr %i0, %g0, %l0
|
|
+ ldd [%l0], %f0
|
|
+ ldd [%l0+8], %f2
|
|
+ faligndata %f0, %f2, %f4
|
|
+
|
|
+ alignaddr %i2, %g0, %l2
|
|
+ ldd [%l2], %f6
|
|
+ ldd [%l2+8], %f8
|
|
+ faligndata %f6, %f8, %f10
|
|
+
|
|
+ add %i0, %i1, %i0
|
|
+ add %i2, %i3, %i2
|
|
+ pdist %f4, %f10, %f12
|
|
+
|
|
+ alignaddr %i0, %g0, %l0
|
|
+ ldd [%l0], %f0
|
|
+ ldd [%l0+8], %f2
|
|
+ faligndata %f0, %f2, %f4
|
|
+
|
|
+ alignaddr %i2, %g0, %l2
|
|
+ ldd [%l2], %f6
|
|
+ ldd [%l2+8], %f8
|
|
+ faligndata %f6, %f8, %f10
|
|
+
|
|
+ add %i0, 8, %i0
|
|
+ add %i2, 8, %i2
|
|
+ pdist %f4, %f10, %f12
|
|
+
|
|
+ alignaddr %i0, %g0, %l0
|
|
+ ldd [%l0], %f0
|
|
+ ldd [%l0+8], %f2
|
|
+ faligndata %f0, %f2, %f4
|
|
+
|
|
+ alignaddr %i2, %g0, %l2
|
|
+ ldd [%l2], %f6
|
|
+ ldd [%l2+8], %f8
|
|
+ faligndata %f6, %f8, %f10
|
|
+
|
|
+ add %i0, %i1, %i0
|
|
+ add %i2, %i3, %i2
|
|
+ pdist %f4, %f10, %f12
|
|
+
|
|
+ alignaddr %i0, %g0, %l0
|
|
+ ldd [%l0], %f0
|
|
+ ldd [%l0+8], %f2
|
|
+ faligndata %f0, %f2, %f4
|
|
+
|
|
+ alignaddr %i2, %g0, %l2
|
|
+ ldd [%l2], %f6
|
|
+ ldd [%l2+8], %f8
|
|
+ faligndata %f6, %f8, %f10
|
|
+
|
|
+ add %i0, 8, %i0
|
|
+ add %i2, 8, %i2
|
|
+ pdist %f4, %f10, %f12
|
|
+
|
|
+ alignaddr %i0, %g0, %l0
|
|
+ ldd [%l0], %f0
|
|
+ ldd [%l0+8], %f2
|
|
+ faligndata %f0, %f2, %f4
|
|
+
|
|
+ alignaddr %i2, %g0, %l2
|
|
+ ldd [%l2], %f6
|
|
+ ldd [%l2+8], %f8
|
|
+ faligndata %f6, %f8, %f10
|
|
+
|
|
+ add %i0, %i1, %i0
|
|
+ add %i2, %i3, %i2
|
|
+ pdist %f4, %f10, %f12
|
|
+
|
|
+ alignaddr %i0, %g0, %l0
|
|
+ ldd [%l0], %f0
|
|
+ ldd [%l0+8], %f2
|
|
+ faligndata %f0, %f2, %f4
|
|
+
|
|
+ alignaddr %i2, %g0, %l2
|
|
+ ldd [%l2], %f6
|
|
+ ldd [%l2+8], %f8
|
|
+ faligndata %f6, %f8, %f10
|
|
+
|
|
+ add %i0, 8, %i0
|
|
+ add %i2, 8, %i2
|
|
+ pdist %f4, %f10, %f12
|
|
+
|
|
+ alignaddr %i0, %g0, %l0
|
|
+ ldd [%l0], %f0
|
|
+ ldd [%l0+8], %f2
|
|
+ faligndata %f0, %f2, %f4
|
|
+
|
|
+ alignaddr %i2, %g0, %l2
|
|
+ ldd [%l2], %f6
|
|
+ ldd [%l2+8], %f8
|
|
+ faligndata %f6, %f8, %f10
|
|
+
|
|
+ add %i0, %i1, %i0
|
|
+ add %i2, %i3, %i2
|
|
+ pdist %f4, %f10, %f12
|
|
+
|
|
+ std %f12, [%fp-24]
|
|
+ ld [%fp-20], %i0
|
|
+
|
|
+ ret
|
|
+ restore
|
|
+
|
|
+.global x264_pixel_sad_16x16_vis
|
|
+x264_pixel_sad_16x16_vis:
|
|
+ save %sp, -120, %sp
|
|
+
|
|
+ fzero %f12 ! zero out the accumulator used for pdist
|
|
+
|
|
+ sub %i1, 8, %i1 ! reduce stride by 8, since we are moving forward 8 each block
|
|
+ sub %i3, 8, %i3 ! same here, reduce stride by 8
|
|
+
|
|
+ alignaddr %i0, %g0, %l0
|
|
+ ldd [%l0], %f0
|
|
+ ldd [%l0+8], %f2
|
|
+ faligndata %f0, %f2, %f4
|
|
+
|
|
+ alignaddr %i2, %g0, %l2
|
|
+ ldd [%l2], %f6
|
|
+ ldd [%l2+8], %f8
|
|
+ faligndata %f6, %f8, %f10
|
|
+
|
|
+ add %i0, 8, %i0
|
|
+ add %i2, 8, %i2
|
|
+ pdist %f4, %f10, %f12
|
|
+
|
|
+ alignaddr %i0, %g0, %l0
|
|
+ ldd [%l0], %f0
|
|
+ ldd [%l0+8], %f2
|
|
+ faligndata %f0, %f2, %f4
|
|
+
|
|
+ alignaddr %i2, %g0, %l2
|
|
+ ldd [%l2], %f6
|
|
+ ldd [%l2+8], %f8
|
|
+ faligndata %f6, %f8, %f10
|
|
+
|
|
+ add %i0, %i1, %i0
|
|
+ add %i2, %i3, %i2
|
|
+ pdist %f4, %f10, %f12
|
|
+
|
|
+ alignaddr %i0, %g0, %l0
|
|
+ ldd [%l0], %f0
|
|
+ ldd [%l0+8], %f2
|
|
+ faligndata %f0, %f2, %f4
|
|
+
|
|
+ alignaddr %i2, %g0, %l2
|
|
+ ldd [%l2], %f6
|
|
+ ldd [%l2+8], %f8
|
|
+ faligndata %f6, %f8, %f10
|
|
+
|
|
+ add %i0, 8, %i0
|
|
+ add %i2, 8, %i2
|
|
+ pdist %f4, %f10, %f12
|
|
+
|
|
+ alignaddr %i0, %g0, %l0
|
|
+ ldd [%l0], %f0
|
|
+ ldd [%l0+8], %f2
|
|
+ faligndata %f0, %f2, %f4
|
|
+
|
|
+ alignaddr %i2, %g0, %l2
|
|
+ ldd [%l2], %f6
|
|
+ ldd [%l2+8], %f8
|
|
+ faligndata %f6, %f8, %f10
|
|
+
|
|
+ add %i0, %i1, %i0
|
|
+ add %i2, %i3, %i2
|
|
+ pdist %f4, %f10, %f12
|
|
+
|
|
+ alignaddr %i0, %g0, %l0
|
|
+ ldd [%l0], %f0
|
|
+ ldd [%l0+8], %f2
|
|
+ faligndata %f0, %f2, %f4
|
|
+
|
|
+ alignaddr %i2, %g0, %l2
|
|
+ ldd [%l2], %f6
|
|
+ ldd [%l2+8], %f8
|
|
+ faligndata %f6, %f8, %f10
|
|
+
|
|
+ add %i0, 8, %i0
|
|
+ add %i2, 8, %i2
|
|
+ pdist %f4, %f10, %f12
|
|
+
|
|
+ alignaddr %i0, %g0, %l0
|
|
+ ldd [%l0], %f0
|
|
+ ldd [%l0+8], %f2
|
|
+ faligndata %f0, %f2, %f4
|
|
+
|
|
+ alignaddr %i2, %g0, %l2
|
|
+ ldd [%l2], %f6
|
|
+ ldd [%l2+8], %f8
|
|
+ faligndata %f6, %f8, %f10
|
|
+
|
|
+ add %i0, %i1, %i0
|
|
+ add %i2, %i3, %i2
|
|
+ pdist %f4, %f10, %f12
|
|
+
|
|
+ alignaddr %i0, %g0, %l0
|
|
+ ldd [%l0], %f0
|
|
+ ldd [%l0+8], %f2
|
|
+ faligndata %f0, %f2, %f4
|
|
+
|
|
+ alignaddr %i2, %g0, %l2
|
|
+ ldd [%l2], %f6
|
|
+ ldd [%l2+8], %f8
|
|
+ faligndata %f6, %f8, %f10
|
|
+
|
|
+ add %i0, 8, %i0
|
|
+ add %i2, 8, %i2
|
|
+ pdist %f4, %f10, %f12
|
|
+
|
|
+ alignaddr %i0, %g0, %l0
|
|
+ ldd [%l0], %f0
|
|
+ ldd [%l0+8], %f2
|
|
+ faligndata %f0, %f2, %f4
|
|
+
|
|
+ alignaddr %i2, %g0, %l2
|
|
+ ldd [%l2], %f6
|
|
+ ldd [%l2+8], %f8
|
|
+ faligndata %f6, %f8, %f10
|
|
+
|
|
+ add %i0, %i1, %i0
|
|
+ add %i2, %i3, %i2
|
|
+ pdist %f4, %f10, %f12
|
|
+
|
|
+ alignaddr %i0, %g0, %l0
|
|
+ ldd [%l0], %f0
|
|
+ ldd [%l0+8], %f2
|
|
+ faligndata %f0, %f2, %f4
|
|
+
|
|
+ alignaddr %i2, %g0, %l2
|
|
+ ldd [%l2], %f6
|
|
+ ldd [%l2+8], %f8
|
|
+ faligndata %f6, %f8, %f10
|
|
+
|
|
+ add %i0, 8, %i0
|
|
+ add %i2, 8, %i2
|
|
+ pdist %f4, %f10, %f12
|
|
+
|
|
+ alignaddr %i0, %g0, %l0
|
|
+ ldd [%l0], %f0
|
|
+ ldd [%l0+8], %f2
|
|
+ faligndata %f0, %f2, %f4
|
|
+
|
|
+ alignaddr %i2, %g0, %l2
|
|
+ ldd [%l2], %f6
|
|
+ ldd [%l2+8], %f8
|
|
+ faligndata %f6, %f8, %f10
|
|
+
|
|
+ add %i0, %i1, %i0
|
|
+ add %i2, %i3, %i2
|
|
+ pdist %f4, %f10, %f12
|
|
+
|
|
+ alignaddr %i0, %g0, %l0
|
|
+ ldd [%l0], %f0
|
|
+ ldd [%l0+8], %f2
|
|
+ faligndata %f0, %f2, %f4
|
|
+
|
|
+ alignaddr %i2, %g0, %l2
|
|
+ ldd [%l2], %f6
|
|
+ ldd [%l2+8], %f8
|
|
+ faligndata %f6, %f8, %f10
|
|
+
|
|
+ add %i0, 8, %i0
|
|
+ add %i2, 8, %i2
|
|
+ pdist %f4, %f10, %f12
|
|
+
|
|
+ alignaddr %i0, %g0, %l0
|
|
+ ldd [%l0], %f0
|
|
+ ldd [%l0+8], %f2
|
|
+ faligndata %f0, %f2, %f4
|
|
+
|
|
+ alignaddr %i2, %g0, %l2
|
|
+ ldd [%l2], %f6
|
|
+ ldd [%l2+8], %f8
|
|
+ faligndata %f6, %f8, %f10
|
|
+
|
|
+ add %i0, %i1, %i0
|
|
+ add %i2, %i3, %i2
|
|
+ pdist %f4, %f10, %f12
|
|
+
|
|
+ alignaddr %i0, %g0, %l0
|
|
+ ldd [%l0], %f0
|
|
+ ldd [%l0+8], %f2
|
|
+ faligndata %f0, %f2, %f4
|
|
+
|
|
+ alignaddr %i2, %g0, %l2
|
|
+ ldd [%l2], %f6
|
|
+ ldd [%l2+8], %f8
|
|
+ faligndata %f6, %f8, %f10
|
|
+
|
|
+ add %i0, 8, %i0
|
|
+ add %i2, 8, %i2
|
|
+ pdist %f4, %f10, %f12
|
|
+
|
|
+ alignaddr %i0, %g0, %l0
|
|
+ ldd [%l0], %f0
|
|
+ ldd [%l0+8], %f2
|
|
+ faligndata %f0, %f2, %f4
|
|
+
|
|
+ alignaddr %i2, %g0, %l2
|
|
+ ldd [%l2], %f6
|
|
+ ldd [%l2+8], %f8
|
|
+ faligndata %f6, %f8, %f10
|
|
+
|
|
+ add %i0, %i1, %i0
|
|
+ add %i2, %i3, %i2
|
|
+ pdist %f4, %f10, %f12
|
|
+
|
|
+ alignaddr %i0, %g0, %l0
|
|
+ ldd [%l0], %f0
|
|
+ ldd [%l0+8], %f2
|
|
+ faligndata %f0, %f2, %f4
|
|
+
|
|
+ alignaddr %i2, %g0, %l2
|
|
+ ldd [%l2], %f6
|
|
+ ldd [%l2+8], %f8
|
|
+ faligndata %f6, %f8, %f10
|
|
+
|
|
+ add %i0, 8, %i0
|
|
+ add %i2, 8, %i2
|
|
+ pdist %f4, %f10, %f12
|
|
+
|
|
+ alignaddr %i0, %g0, %l0
|
|
+ ldd [%l0], %f0
|
|
+ ldd [%l0+8], %f2
|
|
+ faligndata %f0, %f2, %f4
|
|
+
|
|
+ alignaddr %i2, %g0, %l2
|
|
+ ldd [%l2], %f6
|
|
+ ldd [%l2+8], %f8
|
|
+ faligndata %f6, %f8, %f10
|
|
+
|
|
+ add %i0, %i1, %i0
|
|
+ add %i2, %i3, %i2
|
|
+ pdist %f4, %f10, %f12
|
|
+
|
|
+ alignaddr %i0, %g0, %l0
|
|
+ ldd [%l0], %f0
|
|
+ ldd [%l0+8], %f2
|
|
+ faligndata %f0, %f2, %f4
|
|
+
|
|
+ alignaddr %i2, %g0, %l2
|
|
+ ldd [%l2], %f6
|
|
+ ldd [%l2+8], %f8
|
|
+ faligndata %f6, %f8, %f10
|
|
+
|
|
+ add %i0, 8, %i0
|
|
+ add %i2, 8, %i2
|
|
+ pdist %f4, %f10, %f12
|
|
+
|
|
+ alignaddr %i0, %g0, %l0
|
|
+ ldd [%l0], %f0
|
|
+ ldd [%l0+8], %f2
|
|
+ faligndata %f0, %f2, %f4
|
|
+
|
|
+ alignaddr %i2, %g0, %l2
|
|
+ ldd [%l2], %f6
|
|
+ ldd [%l2+8], %f8
|
|
+ faligndata %f6, %f8, %f10
|
|
+
|
|
+ add %i0, %i1, %i0
|
|
+ add %i2, %i3, %i2
|
|
+ pdist %f4, %f10, %f12
|
|
+
|
|
+ alignaddr %i0, %g0, %l0
|
|
+ ldd [%l0], %f0
|
|
+ ldd [%l0+8], %f2
|
|
+ faligndata %f0, %f2, %f4
|
|
+
|
|
+ alignaddr %i2, %g0, %l2
|
|
+ ldd [%l2], %f6
|
|
+ ldd [%l2+8], %f8
|
|
+ faligndata %f6, %f8, %f10
|
|
+
|
|
+ add %i0, 8, %i0
|
|
+ add %i2, 8, %i2
|
|
+ pdist %f4, %f10, %f12
|
|
+
|
|
+ alignaddr %i0, %g0, %l0
|
|
+ ldd [%l0], %f0
|
|
+ ldd [%l0+8], %f2
|
|
+ faligndata %f0, %f2, %f4
|
|
+
|
|
+ alignaddr %i2, %g0, %l2
|
|
+ ldd [%l2], %f6
|
|
+ ldd [%l2+8], %f8
|
|
+ faligndata %f6, %f8, %f10
|
|
+
|
|
+ add %i0, %i1, %i0
|
|
+ add %i2, %i3, %i2
|
|
+ pdist %f4, %f10, %f12
|
|
+
|
|
+ alignaddr %i0, %g0, %l0
|
|
+ ldd [%l0], %f0
|
|
+ ldd [%l0+8], %f2
|
|
+ faligndata %f0, %f2, %f4
|
|
+
|
|
+ alignaddr %i2, %g0, %l2
|
|
+ ldd [%l2], %f6
|
|
+ ldd [%l2+8], %f8
|
|
+ faligndata %f6, %f8, %f10
|
|
+
|
|
+ add %i0, 8, %i0
|
|
+ add %i2, 8, %i2
|
|
+ pdist %f4, %f10, %f12
|
|
+
|
|
+ alignaddr %i0, %g0, %l0
|
|
+ ldd [%l0], %f0
|
|
+ ldd [%l0+8], %f2
|
|
+ faligndata %f0, %f2, %f4
|
|
+
|
|
+ alignaddr %i2, %g0, %l2
|
|
+ ldd [%l2], %f6
|
|
+ ldd [%l2+8], %f8
|
|
+ faligndata %f6, %f8, %f10
|
|
+
|
|
+ add %i0, %i1, %i0
|
|
+ add %i2, %i3, %i2
|
|
+ pdist %f4, %f10, %f12
|
|
+
|
|
+ alignaddr %i0, %g0, %l0
|
|
+ ldd [%l0], %f0
|
|
+ ldd [%l0+8], %f2
|
|
+ faligndata %f0, %f2, %f4
|
|
+
|
|
+ alignaddr %i2, %g0, %l2
|
|
+ ldd [%l2], %f6
|
|
+ ldd [%l2+8], %f8
|
|
+ faligndata %f6, %f8, %f10
|
|
+
|
|
+ add %i0, 8, %i0
|
|
+ add %i2, 8, %i2
|
|
+ pdist %f4, %f10, %f12
|
|
+
|
|
+ alignaddr %i0, %g0, %l0
|
|
+ ldd [%l0], %f0
|
|
+ ldd [%l0+8], %f2
|
|
+ faligndata %f0, %f2, %f4
|
|
+
|
|
+ alignaddr %i2, %g0, %l2
|
|
+ ldd [%l2], %f6
|
|
+ ldd [%l2+8], %f8
|
|
+ faligndata %f6, %f8, %f10
|
|
+
|
|
+ add %i0, %i1, %i0
|
|
+ add %i2, %i3, %i2
|
|
+ pdist %f4, %f10, %f12
|
|
+
|
|
+ alignaddr %i0, %g0, %l0
|
|
+ ldd [%l0], %f0
|
|
+ ldd [%l0+8], %f2
|
|
+ faligndata %f0, %f2, %f4
|
|
+
|
|
+ alignaddr %i2, %g0, %l2
|
|
+ ldd [%l2], %f6
|
|
+ ldd [%l2+8], %f8
|
|
+ faligndata %f6, %f8, %f10
|
|
+
|
|
+ add %i0, 8, %i0
|
|
+ add %i2, 8, %i2
|
|
+ pdist %f4, %f10, %f12
|
|
+
|
|
+ alignaddr %i0, %g0, %l0
|
|
+ ldd [%l0], %f0
|
|
+ ldd [%l0+8], %f2
|
|
+ faligndata %f0, %f2, %f4
|
|
+
|
|
+ alignaddr %i2, %g0, %l2
|
|
+ ldd [%l2], %f6
|
|
+ ldd [%l2+8], %f8
|
|
+ faligndata %f6, %f8, %f10
|
|
+
|
|
+ add %i0, %i1, %i0
|
|
+ add %i2, %i3, %i2
|
|
+ pdist %f4, %f10, %f12
|
|
+
|
|
+ alignaddr %i0, %g0, %l0
|
|
+ ldd [%l0], %f0
|
|
+ ldd [%l0+8], %f2
|
|
+ faligndata %f0, %f2, %f4
|
|
+
|
|
+ alignaddr %i2, %g0, %l2
|
|
+ ldd [%l2], %f6
|
|
+ ldd [%l2+8], %f8
|
|
+ faligndata %f6, %f8, %f10
|
|
+
|
|
+ add %i0, 8, %i0
|
|
+ add %i2, 8, %i2
|
|
+ pdist %f4, %f10, %f12
|
|
+
|
|
+ alignaddr %i0, %g0, %l0
|
|
+ ldd [%l0], %f0
|
|
+ ldd [%l0+8], %f2
|
|
+ faligndata %f0, %f2, %f4
|
|
+
|
|
+ alignaddr %i2, %g0, %l2
|
|
+ ldd [%l2], %f6
|
|
+ ldd [%l2+8], %f8
|
|
+ faligndata %f6, %f8, %f10
|
|
+
|
|
+ add %i0, %i1, %i0
|
|
+ add %i2, %i3, %i2
|
|
+ pdist %f4, %f10, %f12
|
|
+
|
|
+ alignaddr %i0, %g0, %l0
|
|
+ ldd [%l0], %f0
|
|
+ ldd [%l0+8], %f2
|
|
+ faligndata %f0, %f2, %f4
|
|
+
|
|
+ alignaddr %i2, %g0, %l2
|
|
+ ldd [%l2], %f6
|
|
+ ldd [%l2+8], %f8
|
|
+ faligndata %f6, %f8, %f10
|
|
+
|
|
+ add %i0, 8, %i0
|
|
+ add %i2, 8, %i2
|
|
+ pdist %f4, %f10, %f12
|
|
+
|
|
+ alignaddr %i0, %g0, %l0
|
|
+ ldd [%l0], %f0
|
|
+ ldd [%l0+8], %f2
|
|
+ faligndata %f0, %f2, %f4
|
|
+
|
|
+ alignaddr %i2, %g0, %l2
|
|
+ ldd [%l2], %f6
|
|
+ ldd [%l2+8], %f8
|
|
+ faligndata %f6, %f8, %f10
|
|
+
|
|
+ add %i0, %i1, %i0
|
|
+ add %i2, %i3, %i2
|
|
+ pdist %f4, %f10, %f12
|
|
+
|
|
+ alignaddr %i0, %g0, %l0
|
|
+ ldd [%l0], %f0
|
|
+ ldd [%l0+8], %f2
|
|
+ faligndata %f0, %f2, %f4
|
|
+
|
|
+ alignaddr %i2, %g0, %l2
|
|
+ ldd [%l2], %f6
|
|
+ ldd [%l2+8], %f8
|
|
+ faligndata %f6, %f8, %f10
|
|
+
|
|
+ add %i0, 8, %i0
|
|
+ add %i2, 8, %i2
|
|
+ pdist %f4, %f10, %f12
|
|
+
|
|
+ alignaddr %i0, %g0, %l0
|
|
+ ldd [%l0], %f0
|
|
+ ldd [%l0+8], %f2
|
|
+ faligndata %f0, %f2, %f4
|
|
+
|
|
+ alignaddr %i2, %g0, %l2
|
|
+ ldd [%l2], %f6
|
|
+ ldd [%l2+8], %f8
|
|
+ faligndata %f6, %f8, %f10
|
|
+
|
|
+ add %i0, %i1, %i0
|
|
+ add %i2, %i3, %i2
|
|
+ pdist %f4, %f10, %f12
|
|
+
|
|
+ std %f12, [%fp-24]
|
|
+ ld [%fp-20], %i0
|
|
+
|
|
+ ret
|
|
+ restore
|
|
--- a/Makefile 2023-07-04 13:41:52.580553608 +0300
|
|
+++ b/Makefile 2023-07-04 13:32:56.885639096 +0300
|
|
@@ -195,6 +195,16 @@
|
|
OBJCHK += tools/checkasm-aarch64.o
|
|
endif
|
|
|
|
+# VIS optims
|
|
+ifeq ($(SYS_ARCH),SPARC)
|
|
+ifneq ($(findstring HAVE_VIS 1, $(CONFIG)),)
|
|
+ifeq ($(findstring HIGH_BIT_DEPTH, $(CONFIG)),)
|
|
+ASMSRC += common/sparc/pixel-a.S
|
|
+OBJASM = $(ASMSRC:%.S=%.o)
|
|
+endif
|
|
+endif
|
|
+endif
|
|
+
|
|
# MSA optims
|
|
ifeq ($(SYS_ARCH),MIPS)
|
|
ifneq ($(findstring HAVE_MSA 1, $(CONFIG)),)
|
|
--- a/configure 2023-07-04 13:41:52.588553771 +0300
|
|
+++ b/configure 2023-07-04 13:29:18.933199715 +0300
|
|
@@ -825,6 +825,23 @@
|
|
;;
|
|
sparc)
|
|
ARCH="SPARC"
|
|
+ case $host_os in
|
|
+ sunos*|solaris*)
|
|
+ if [ $asm = auto ]; then
|
|
+ if ! echo $CFLAGS | grep -Eq '\-mcpu' ; then
|
|
+ CFLAGS="$CFLAGS -mcpu=ultrasparc"
|
|
+ LDFLAGS="$LDFLAGS -mcpu=ultrasparc"
|
|
+ fi
|
|
+ AS="${AS-${cross_prefix}as}"
|
|
+ ASFLAGS="$ASFLAGS -xarch=v8plusa"
|
|
+ fi
|
|
+ ;;
|
|
+ *linux*)
|
|
+ if [ $asm = auto ]; then
|
|
+ AS="$CC -c"
|
|
+ fi
|
|
+ ;;
|
|
+ esac
|
|
;;
|
|
mips*)
|
|
ARCH="MIPS"
|
|
@@ -1033,6 +1050,16 @@
|
|
fi
|
|
fi
|
|
|
|
+if [ $asm = auto -a $ARCH = SPARC ] ; then
|
|
+ if cc_check '' '' '__asm__("pdist %f4, %f10, %f12");' ; then
|
|
+ define HAVE_VIS
|
|
+ elif [ $host_cpu = sparc64 ]; then
|
|
+ echo "You specified a pre-VIS SPARC CPU in your CFLAGS."
|
|
+ echo "If you really want to run on such a CPU, configure with --disable-asm."
|
|
+ exit 1
|
|
+ fi
|
|
+fi
|
|
+
|
|
[ $asm = no ] && AS=""
|
|
[ "x$AS" = x ] && asm="no" || asm="yes"
|
|
|
|
@@ -1392,12 +1419,15 @@
|
|
fi
|
|
|
|
if [ "$bit_depth" = "all" ]; then
|
|
+ define HIGH_BIT_DEPTH
|
|
define HAVE_BITDEPTH8
|
|
define HAVE_BITDEPTH10
|
|
elif [ "$bit_depth" -eq "8" ]; then
|
|
define HAVE_BITDEPTH8
|
|
+ ASFLAGS="$ASFLAGS -DHIGH_BIT_DEPTH=0"
|
|
elif [ "$bit_depth" -eq "10" ]; then
|
|
define HAVE_BITDEPTH10
|
|
+ ASFLAGS="$ASFLAGS -DHIGH_BIT_DEPTH=1"
|
|
opencl="no"
|
|
fi
|
|
|
|
--- a/x264.h 2023-07-04 13:41:52.588553771 +0300
|
|
+++ b/x264.h 2023-07-04 12:33:13.144797664 +0300
|
|
@@ -184,6 +184,12 @@
|
|
/* MIPS */
|
|
#define X264_CPU_MSA 0x0000001U /* MIPS MSA */
|
|
|
|
+/* SPARC */
|
|
+#define X264_CPU_VIS1 0x0000001 /* SPARC VIS */
|
|
+#define X264_CPU_VIS2 0x0000004 /* SPARC VIS2 */
|
|
+#define X264_CPU_VIS2P 0x0000008 /* SPARC VIS2+ */
|
|
+#define X264_CPU_VIS3 0x0000010 /* SPARC VIS3 */
|
|
+
|
|
/* Analyse flags */
|
|
#define X264_ANALYSE_I4x4 0x0001U /* Analyse i4x4 */
|
|
#define X264_ANALYSE_I8x8 0x0002U /* Analyse i8x8 (requires 8x8 transform) */
|
|
--- a/common/cpu.c 2023-07-04 13:41:52.580553608 +0300
|
|
+++ b/common/cpu.c 2023-07-04 12:50:35.601946609 +0300
|
|
@@ -100,6 +100,11 @@
|
|
{"NEON", X264_CPU_NEON},
|
|
#elif ARCH_MIPS
|
|
{"MSA", X264_CPU_MSA},
|
|
+#elif ARCH_SPARC
|
|
+ {"VIS", X264_CPU_VIS1},
|
|
+ {"VIS2", X264_CPU_VIS2},
|
|
+ {"VIS2+", X264_CPU_VIS2P},
|
|
+ {"VIS3", X264_CPU_VIS2},
|
|
#endif
|
|
{"", 0},
|
|
};
|
|
@@ -369,6 +374,17 @@
|
|
return X264_CPU_E2K;
|
|
}
|
|
|
|
+#elif ARCH_SPARC
|
|
+
|
|
+uint32_t x264_cpu_detect( void )
|
|
+{
|
|
+ uint32_t flags = 0;
|
|
+#if HAVE_VIS
|
|
+ flags |= X264_CPU_VIS1;
|
|
+#endif
|
|
+ return flags;
|
|
+}
|
|
+
|
|
#elif HAVE_ARMV6
|
|
|
|
void x264_cpu_neon_test( void );
|
|
--- a/common/pixel.c 2023-07-04 13:41:52.584553689 +0300
|
|
+++ b/common/pixel.c 2023-07-04 12:30:24.753382896 +0300
|
|
@@ -34,6 +34,9 @@
|
|
#if HAVE_ALTIVEC
|
|
# include "ppc/pixel.h"
|
|
#endif
|
|
+#if ARCH_SPARC
|
|
+# include "sparc/pixel.h"
|
|
+#endif
|
|
#if ARCH_E2K
|
|
# include "e2k/pixel.h"
|
|
#endif
|
|
@@ -464,6 +467,15 @@
|
|
SAD_X( 4x8 )
|
|
SAD_X( 4x4 )
|
|
|
|
+#if !HIGH_BIT_DEPTH
|
|
+#if ARCH_SPARC && HAVE_VIS
|
|
+SAD_X( 16x16_vis )
|
|
+SAD_X( 16x8_vis )
|
|
+SAD_X( 8x16_vis )
|
|
+SAD_X( 8x8_vis )
|
|
+#endif
|
|
+#endif // !HIGH_BIT_DEPTH
|
|
+
|
|
/****************************************************************************
|
|
* pixel_satd_x4
|
|
* no faster than single satd, but needed for satd to be a drop-in replacement for sad
|
|
@@ -1502,6 +1514,15 @@
|
|
}
|
|
#endif // HAVE_MSA
|
|
|
|
+#if ARCH_SPARC && HAVE_VIS
|
|
+ if( cpu&X264_CPU_VIS1 )
|
|
+ {
|
|
+ INIT4( sad, _vis );
|
|
+ INIT4( sad_x3, _vis );
|
|
+ INIT4( sad_x4, _vis );
|
|
+ }
|
|
+#endif // ARCH_SPARC && HAVE_VIS
|
|
+
|
|
#endif // HIGH_BIT_DEPTH
|
|
#if HAVE_ALTIVEC
|
|
if( cpu&X264_CPU_ALTIVEC )
|
|
--- a/tools/checkasm.c 2023-07-04 13:41:52.588553771 +0300
|
|
+++ b/tools/checkasm.c 2023-07-04 13:16:51.489976959 +0300
|
|
@@ -124,6 +124,8 @@
|
|
a = b;
|
|
#elif ARCH_MIPS
|
|
asm volatile( "rdhwr %0, $2" : "=r"(a) :: "memory" );
|
|
+#elif ARCH_SPARC && defined(__sparc_v9__)
|
|
+ asm volatile( "rd %%tick, %0" : "=r" (a));
|
|
#endif
|
|
return a;
|
|
}
|
|
@@ -224,6 +226,11 @@
|
|
b->cpu&X264_CPU_ARMV8 ? "armv8" :
|
|
#elif ARCH_MIPS
|
|
b->cpu&X264_CPU_MSA ? "msa" :
|
|
+#elif ARCH_SPARC
|
|
+ b->cpu&X264_CPU_VIS3 ? "vis3" :
|
|
+ b->cpu&X264_CPU_VIS2P ? "vis2p" :
|
|
+ b->cpu&X264_CPU_VIS2 ? "vis2" :
|
|
+ b->cpu&X264_CPU_VIS1 ? "vis" :
|
|
#endif
|
|
"c",
|
|
#if ARCH_X86 || ARCH_X86_64
|
|
@@ -2991,6 +2998,15 @@
|
|
#elif ARCH_MIPS
|
|
if( cpu_detect & X264_CPU_MSA )
|
|
ret |= add_flags( &cpu0, &cpu1, X264_CPU_MSA, "MSA" );
|
|
+#elif ARCH_SPARC
|
|
+ if( cpu_detect & X264_CPU_VIS1 )
|
|
+ ret |= add_flags( &cpu0, &cpu1, X264_CPU_VIS1, "VIS" );
|
|
+ if( cpu_detect & X264_CPU_VIS2 )
|
|
+ ret |= add_flags( &cpu0, &cpu1, X264_CPU_VIS1, "VIS2" );
|
|
+ if( cpu_detect & X264_CPU_VIS2P )
|
|
+ ret |= add_flags( &cpu0, &cpu1, X264_CPU_VIS1, "VIS2+" );
|
|
+ if( cpu_detect & X264_CPU_VIS3 )
|
|
+ ret |= add_flags( &cpu0, &cpu1, X264_CPU_VIS1, "VIS3" );
|
|
#endif
|
|
return ret;
|
|
}
|
|
@@ -3004,7 +3020,7 @@
|
|
|
|
if( argc > 1 && !strncmp( argv[1], "--bench", 7 ) )
|
|
{
|
|
-#if !ARCH_X86 && !ARCH_X86_64 && !ARCH_PPC && !ARCH_E2K && !ARCH_ARM && !ARCH_AARCH64 && !ARCH_MIPS
|
|
+#if !ARCH_X86 && !ARCH_X86_64 && !ARCH_PPC && !ARCH_E2K && !ARCH_ARM && !ARCH_AARCH64 && !ARCH_MIPS && !(ARCH_SPARC && defined(__sparc_v9__))
|
|
fprintf( stderr, "no --bench for your cpu until you port rdtsc\n" );
|
|
return 1;
|
|
#endif
|