Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
4349 Serge 1
/*
2
 * Alpha optimized DSP utils
3
 * Copyright (c) 2002 Falk Hueffner 
4
 *
5
 * This file is part of FFmpeg.
6
 *
7
 * FFmpeg is free software; you can redistribute it and/or
8
 * modify it under the terms of the GNU Lesser General Public
9
 * License as published by the Free Software Foundation; either
10
 * version 2.1 of the License, or (at your option) any later version.
11
 *
12
 * FFmpeg is distributed in the hope that it will be useful,
13
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
15
 * Lesser General Public License for more details.
16
 *
17
 * You should have received a copy of the GNU Lesser General Public
18
 * License along with FFmpeg; if not, write to the Free Software
19
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
20
 */
21
 
22
/*
23
 * These functions are scheduled for pca56. They should work
24
 * reasonably on ev6, though.
25
 */
26
 
27
#include "regdef.h"
28
 
29
 
30
        .set noat
31
        .set noreorder
32
        .arch pca56
33
        .text
34
 
35
/************************************************************************
36
 * void put_pixels_axp_asm(uint8_t *block, const uint8_t *pixels,
37
 *                         int line_size, int h)
38
 */
39
        .align 6
40
        .globl put_pixels_axp_asm
41
        .ent put_pixels_axp_asm
42
put_pixels_axp_asm:
43
        .frame sp, 0, ra
44
        .prologue 0
45
 
46
        and     a1, 7, t0
47
        beq     t0, $aligned
48
 
49
        .align 4
50
$unaligned:
51
        ldq_u   t0, 0(a1)
52
        ldq_u   t1, 8(a1)
53
        addq    a1, a2, a1
54
        nop
55
 
56
        ldq_u   t2, 0(a1)
57
        ldq_u   t3, 8(a1)
58
        addq    a1, a2, a1
59
        nop
60
 
61
        ldq_u   t4, 0(a1)
62
        ldq_u   t5, 8(a1)
63
        addq    a1, a2, a1
64
        nop
65
 
66
        ldq_u   t6, 0(a1)
67
        ldq_u   t7, 8(a1)
68
        extql   t0, a1, t0
69
        addq    a1, a2, a1
70
 
71
        extqh   t1, a1, t1
72
        addq    a0, a2, t8
73
        extql   t2, a1, t2
74
        addq    t8, a2, t9
75
 
76
        extqh   t3, a1, t3
77
        addq    t9, a2, ta
78
        extql   t4, a1, t4
79
        or      t0, t1, t0
80
 
81
        extqh   t5, a1, t5
82
        or      t2, t3, t2
83
        extql   t6, a1, t6
84
        or      t4, t5, t4
85
 
86
        extqh   t7, a1, t7
87
        or      t6, t7, t6
88
        stq     t0, 0(a0)
89
        stq     t2, 0(t8)
90
 
91
        stq     t4, 0(t9)
92
        subq    a3, 4, a3
93
        stq     t6, 0(ta)
94
        addq    ta, a2, a0
95
 
96
        bne     a3, $unaligned
97
        ret
98
 
99
        .align 4
100
$aligned:
101
        ldq     t0, 0(a1)
102
        addq    a1, a2, a1
103
        ldq     t1, 0(a1)
104
        addq    a1, a2, a1
105
 
106
        ldq     t2, 0(a1)
107
        addq    a1, a2, a1
108
        ldq     t3, 0(a1)
109
 
110
        addq    a0, a2, t4
111
        addq    a1, a2, a1
112
        addq    t4, a2, t5
113
        subq    a3, 4, a3
114
 
115
        stq     t0, 0(a0)
116
        addq    t5, a2, t6
117
        stq     t1, 0(t4)
118
        addq    t6, a2, a0
119
 
120
        stq     t2, 0(t5)
121
        stq     t3, 0(t6)
122
 
123
        bne     a3, $aligned
124
        ret
125
        .end put_pixels_axp_asm