annotate sparc/vis.h @ 5757:ace63c809071 libavcodec

Remove uses of SIGILL for CPU extension detection, that method is not acceptable in a library. Should not change anything for PPC, the autodetection is currently pointless due to other code being compiled with -maltivec as well (and detection for OSX and AmigaOS remains in place). SPARC binaries built with VIS support can now only run on systems with VIS.
author reimar
date Tue, 02 Oct 2007 18:18:35 +0000
parents 3fd46e281bd8
children 1d83e9c34641
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1959
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
1 /*
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
2 * vis.h
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
3 * Copyright (C) 2003 David S. Miller <davem@redhat.com>
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
4 *
3987
2c54309fef91 Switch to the LGPL as agreed to by the author according to the
diego
parents: 3965
diff changeset
5 * This file is part of FFmpeg.
1959
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
6 *
3987
2c54309fef91 Switch to the LGPL as agreed to by the author according to the
diego
parents: 3965
diff changeset
7 * FFmpeg is free software; you can redistribute it and/or
2c54309fef91 Switch to the LGPL as agreed to by the author according to the
diego
parents: 3965
diff changeset
8 * modify it under the terms of the GNU Lesser General Public
2c54309fef91 Switch to the LGPL as agreed to by the author according to the
diego
parents: 3965
diff changeset
9 * License as published by the Free Software Foundation; either
2c54309fef91 Switch to the LGPL as agreed to by the author according to the
diego
parents: 3965
diff changeset
10 * version 2.1 of the License, or (at your option) any later version.
1959
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
11 *
3987
2c54309fef91 Switch to the LGPL as agreed to by the author according to the
diego
parents: 3965
diff changeset
12 * FFmpeg is distributed in the hope that it will be useful,
1959
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
3987
2c54309fef91 Switch to the LGPL as agreed to by the author according to the
diego
parents: 3965
diff changeset
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
2c54309fef91 Switch to the LGPL as agreed to by the author according to the
diego
parents: 3965
diff changeset
15 * Lesser General Public License for more details.
1959
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
16 *
3987
2c54309fef91 Switch to the LGPL as agreed to by the author according to the
diego
parents: 3965
diff changeset
17 * You should have received a copy of the GNU Lesser General Public
2c54309fef91 Switch to the LGPL as agreed to by the author according to the
diego
parents: 3965
diff changeset
18 * License along with FFmpeg; if not, write to the Free Software
3036
0b546eab515d Update licensing information: The FSF changed postal address.
diego
parents: 2979
diff changeset
19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
1959
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
20 */
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
21
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
22 /* You may be asking why I hard-code the instruction opcodes and don't
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
23 * use the normal VIS assembler mnenomics for the VIS instructions.
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
24 *
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
25 * The reason is that Sun, in their infinite wisdom, decided that a binary
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
26 * using a VIS instruction will cause it to be marked (in the ELF headers)
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
27 * as doing so, and this prevents the OS from loading such binaries if the
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
28 * current cpu doesn't have VIS. There is no way to easily override this
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
29 * behavior of the assembler that I am aware of.
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
30 *
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
31 * This totally defeats what libmpeg2 is trying to do which is allow a
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
32 * single binary to be created, and then detect the availability of VIS
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
33 * at runtime.
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
34 *
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
35 * I'm not saying that tainting the binary by default is bad, rather I'm
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
36 * saying that not providing a way to override this easily unnecessarily
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
37 * ties people's hands.
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
38 *
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
39 * Thus, we do the opcode encoding by hand and output 32-bit words in
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
40 * the assembler to keep the binary from becoming tainted.
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
41 */
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
42
5163
9ecbfc0c82bf add multiple inclusion guards to headers
mru
parents: 3987
diff changeset
43 #ifndef AVCODEC_VIS_H
9ecbfc0c82bf add multiple inclusion guards to headers
mru
parents: 3987
diff changeset
44 #define AVCODEC_VIS_H
9ecbfc0c82bf add multiple inclusion guards to headers
mru
parents: 3987
diff changeset
45
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
46 #define vis_opc_base ((0x1 << 31) | (0x36 << 19))
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
47 #define vis_opf(X) ((X) << 5)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
48 #define vis_sreg(X) (X)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
49 #define vis_dreg(X) (((X)&0x1f)|((X)>>5))
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
50 #define vis_rs1_s(X) (vis_sreg(X) << 14)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
51 #define vis_rs1_d(X) (vis_dreg(X) << 14)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
52 #define vis_rs2_s(X) (vis_sreg(X) << 0)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
53 #define vis_rs2_d(X) (vis_dreg(X) << 0)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
54 #define vis_rd_s(X) (vis_sreg(X) << 25)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
55 #define vis_rd_d(X) (vis_dreg(X) << 25)
1959
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
56
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
57 #define vis_ss2s(opf,rs1,rs2,rd) \
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
58 __asm__ __volatile__ (".word %0" \
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
59 : : "i" (vis_opc_base | vis_opf(opf) | \
1959
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
60 vis_rs1_s(rs1) | \
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
61 vis_rs2_s(rs2) | \
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
62 vis_rd_s(rd)))
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
63
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
64 #define vis_dd2d(opf,rs1,rs2,rd) \
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
65 __asm__ __volatile__ (".word %0" \
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
66 : : "i" (vis_opc_base | vis_opf(opf) | \
1959
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
67 vis_rs1_d(rs1) | \
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
68 vis_rs2_d(rs2) | \
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
69 vis_rd_d(rd)))
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
70
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
71 #define vis_ss2d(opf,rs1,rs2,rd) \
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
72 __asm__ __volatile__ (".word %0" \
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
73 : : "i" (vis_opc_base | vis_opf(opf) | \
1959
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
74 vis_rs1_s(rs1) | \
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
75 vis_rs2_s(rs2) | \
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
76 vis_rd_d(rd)))
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
77
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
78 #define vis_sd2d(opf,rs1,rs2,rd) \
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
79 __asm__ __volatile__ (".word %0" \
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
80 : : "i" (vis_opc_base | vis_opf(opf) | \
1959
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
81 vis_rs1_s(rs1) | \
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
82 vis_rs2_d(rs2) | \
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
83 vis_rd_d(rd)))
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
84
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
85 #define vis_d2s(opf,rs2,rd) \
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
86 __asm__ __volatile__ (".word %0" \
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
87 : : "i" (vis_opc_base | vis_opf(opf) | \
1959
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
88 vis_rs2_d(rs2) | \
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
89 vis_rd_s(rd)))
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
90
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
91 #define vis_s2d(opf,rs2,rd) \
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
92 __asm__ __volatile__ (".word %0" \
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
93 : : "i" (vis_opc_base | vis_opf(opf) | \
1959
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
94 vis_rs2_s(rs2) | \
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
95 vis_rd_d(rd)))
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
96
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
97 #define vis_d12d(opf,rs1,rd) \
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
98 __asm__ __volatile__ (".word %0" \
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
99 : : "i" (vis_opc_base | vis_opf(opf) | \
1959
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
100 vis_rs1_d(rs1) | \
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
101 vis_rd_d(rd)))
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
102
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
103 #define vis_d22d(opf,rs2,rd) \
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
104 __asm__ __volatile__ (".word %0" \
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
105 : : "i" (vis_opc_base | vis_opf(opf) | \
1959
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
106 vis_rs2_d(rs2) | \
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
107 vis_rd_d(rd)))
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
108
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
109 #define vis_s12s(opf,rs1,rd) \
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
110 __asm__ __volatile__ (".word %0" \
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
111 : : "i" (vis_opc_base | vis_opf(opf) | \
1959
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
112 vis_rs1_s(rs1) | \
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
113 vis_rd_s(rd)))
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
114
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
115 #define vis_s22s(opf,rs2,rd) \
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
116 __asm__ __volatile__ (".word %0" \
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
117 : : "i" (vis_opc_base | vis_opf(opf) | \
1959
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
118 vis_rs2_s(rs2) | \
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
119 vis_rd_s(rd)))
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
120
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
121 #define vis_s(opf,rd) \
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
122 __asm__ __volatile__ (".word %0" \
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
123 : : "i" (vis_opc_base | vis_opf(opf) | \
1959
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
124 vis_rd_s(rd)))
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
125
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
126 #define vis_d(opf,rd) \
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
127 __asm__ __volatile__ (".word %0" \
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
128 : : "i" (vis_opc_base | vis_opf(opf) | \
1959
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
129 vis_rd_d(rd)))
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
130
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
131 #define vis_r2m(op,rd,mem) \
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
132 __asm__ __volatile__ (#op "\t%%f" #rd ", [%0]" : : "r" (&(mem)) )
1959
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
133
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
134 #define vis_r2m_2(op,rd,mem1,mem2) \
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
135 __asm__ __volatile__ (#op "\t%%f" #rd ", [%0 + %1]" : : "r" (mem1), "r" (mem2) )
1959
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
136
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
137 #define vis_m2r(op,mem,rd) \
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
138 __asm__ __volatile__ (#op "\t[%0], %%f" #rd : : "r" (&(mem)) )
1959
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
139
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
140 #define vis_m2r_2(op,mem1,mem2,rd) \
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
141 __asm__ __volatile__ (#op "\t[%0 + %1], %%f" #rd : : "r" (mem1), "r" (mem2) )
1959
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
142
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
143 static inline void vis_set_gsr(unsigned int _val)
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
144 {
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
145 register unsigned int val asm("g1");
1959
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
146
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
147 val = _val;
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
148 __asm__ __volatile__(".word 0xa7804000"
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
149 : : "r" (val));
1959
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
150 }
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
151
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
152 #define VIS_GSR_ALIGNADDR_MASK 0x0000007
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
153 #define VIS_GSR_ALIGNADDR_SHIFT 0
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
154 #define VIS_GSR_SCALEFACT_MASK 0x0000078
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
155 #define VIS_GSR_SCALEFACT_SHIFT 3
1959
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
156
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
157 #define vis_ld32(mem,rs1) vis_m2r(ld, mem, rs1)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
158 #define vis_ld32_2(mem1,mem2,rs1) vis_m2r_2(ld, mem1, mem2, rs1)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
159 #define vis_st32(rs1,mem) vis_r2m(st, rs1, mem)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
160 #define vis_st32_2(rs1,mem1,mem2) vis_r2m_2(st, rs1, mem1, mem2)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
161 #define vis_ld64(mem,rs1) vis_m2r(ldd, mem, rs1)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
162 #define vis_ld64_2(mem1,mem2,rs1) vis_m2r_2(ldd, mem1, mem2, rs1)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
163 #define vis_st64(rs1,mem) vis_r2m(std, rs1, mem)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
164 #define vis_st64_2(rs1,mem1,mem2) vis_r2m_2(std, rs1, mem1, mem2)
1959
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
165
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
166 #define vis_ldblk(mem, rd) \
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
167 do { register void *__mem asm("g1"); \
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
168 __mem = &(mem); \
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
169 __asm__ __volatile__(".word 0xc1985e00 | %1" \
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
170 : \
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
171 : "r" (__mem), \
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
172 "i" (vis_rd_d(rd)) \
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
173 : "memory"); \
1959
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
174 } while (0)
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
175
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
176 #define vis_stblk(rd, mem) \
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
177 do { register void *__mem asm("g1"); \
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
178 __mem = &(mem); \
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
179 __asm__ __volatile__(".word 0xc1b85e00 | %1" \
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
180 : \
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
181 : "r" (__mem), \
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
182 "i" (vis_rd_d(rd)) \
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
183 : "memory"); \
1959
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
184 } while (0)
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
185
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
186 #define vis_membar_storestore() \
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
187 __asm__ __volatile__(".word 0x8143e008" : : : "memory")
1959
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
188
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
189 #define vis_membar_sync() \
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
190 __asm__ __volatile__(".word 0x8143e040" : : : "memory")
1959
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
191
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
192 /* 16 and 32 bit partitioned addition and subtraction. The normal
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
193 * versions perform 4 16-bit or 2 32-bit additions or subtractions.
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
194 * The 's' versions perform 2 16-bit or 1 32-bit additions or
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
195 * subtractions.
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
196 */
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
197
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
198 #define vis_padd16(rs1,rs2,rd) vis_dd2d(0x50, rs1, rs2, rd)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
199 #define vis_padd16s(rs1,rs2,rd) vis_ss2s(0x51, rs1, rs2, rd)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
200 #define vis_padd32(rs1,rs2,rd) vis_dd2d(0x52, rs1, rs2, rd)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
201 #define vis_padd32s(rs1,rs2,rd) vis_ss2s(0x53, rs1, rs2, rd)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
202 #define vis_psub16(rs1,rs2,rd) vis_dd2d(0x54, rs1, rs2, rd)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
203 #define vis_psub16s(rs1,rs2,rd) vis_ss2s(0x55, rs1, rs2, rd)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
204 #define vis_psub32(rs1,rs2,rd) vis_dd2d(0x56, rs1, rs2, rd)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
205 #define vis_psub32s(rs1,rs2,rd) vis_ss2s(0x57, rs1, rs2, rd)
1959
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
206
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
207 /* Pixel formatting instructions. */
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
208
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
209 #define vis_pack16(rs2,rd) vis_d2s( 0x3b, rs2, rd)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
210 #define vis_pack32(rs1,rs2,rd) vis_dd2d(0x3a, rs1, rs2, rd)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
211 #define vis_packfix(rs2,rd) vis_d2s( 0x3d, rs2, rd)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
212 #define vis_expand(rs2,rd) vis_s2d( 0x4d, rs2, rd)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
213 #define vis_pmerge(rs1,rs2,rd) vis_ss2d(0x4b, rs1, rs2, rd)
1959
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
214
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
215 /* Partitioned multiply instructions. */
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
216
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
217 #define vis_mul8x16(rs1,rs2,rd) vis_sd2d(0x31, rs1, rs2, rd)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
218 #define vis_mul8x16au(rs1,rs2,rd) vis_ss2d(0x33, rs1, rs2, rd)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
219 #define vis_mul8x16al(rs1,rs2,rd) vis_ss2d(0x35, rs1, rs2, rd)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
220 #define vis_mul8sux16(rs1,rs2,rd) vis_dd2d(0x36, rs1, rs2, rd)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
221 #define vis_mul8ulx16(rs1,rs2,rd) vis_dd2d(0x37, rs1, rs2, rd)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
222 #define vis_muld8sux16(rs1,rs2,rd) vis_ss2d(0x38, rs1, rs2, rd)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
223 #define vis_muld8ulx16(rs1,rs2,rd) vis_ss2d(0x39, rs1, rs2, rd)
1959
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
224
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
225 /* Alignment instructions. */
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
226
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
227 static inline void *vis_alignaddr(void *_ptr)
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
228 {
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
229 register void *ptr asm("g1");
1959
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
230
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
231 ptr = _ptr;
1959
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
232
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
233 __asm__ __volatile__(".word %2"
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
234 : "=&r" (ptr)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
235 : "0" (ptr),
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
236 "i" (vis_opc_base | vis_opf(0x18) |
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
237 vis_rs1_s(1) |
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
238 vis_rs2_s(0) |
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
239 vis_rd_s(1)));
1959
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
240
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
241 return ptr;
1959
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
242 }
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
243
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
244 static inline void vis_alignaddr_g0(void *_ptr)
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
245 {
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
246 register void *ptr asm("g1");
1959
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
247
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
248 ptr = _ptr;
1959
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
249
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
250 __asm__ __volatile__(".word %2"
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
251 : "=&r" (ptr)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
252 : "0" (ptr),
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
253 "i" (vis_opc_base | vis_opf(0x18) |
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
254 vis_rs1_s(1) |
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
255 vis_rs2_s(0) |
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
256 vis_rd_s(0)));
1959
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
257 }
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
258
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
259 static inline void *vis_alignaddrl(void *_ptr)
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
260 {
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
261 register void *ptr asm("g1");
1959
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
262
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
263 ptr = _ptr;
1959
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
264
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
265 __asm__ __volatile__(".word %2"
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
266 : "=&r" (ptr)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
267 : "0" (ptr),
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
268 "i" (vis_opc_base | vis_opf(0x19) |
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
269 vis_rs1_s(1) |
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
270 vis_rs2_s(0) |
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
271 vis_rd_s(1)));
1959
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
272
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
273 return ptr;
1959
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
274 }
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
275
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
276 static inline void vis_alignaddrl_g0(void *_ptr)
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
277 {
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
278 register void *ptr asm("g1");
1959
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
279
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
280 ptr = _ptr;
1959
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
281
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
282 __asm__ __volatile__(".word %2"
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
283 : "=&r" (ptr)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
284 : "0" (ptr),
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
285 "i" (vis_opc_base | vis_opf(0x19) |
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
286 vis_rs1_s(1) |
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
287 vis_rs2_s(0) |
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
288 vis_rd_s(0)));
1959
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
289 }
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
290
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
291 #define vis_faligndata(rs1,rs2,rd) vis_dd2d(0x48, rs1, rs2, rd)
1959
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
292
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
293 /* Logical operate instructions. */
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
294
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
295 #define vis_fzero(rd) vis_d( 0x60, rd)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
296 #define vis_fzeros(rd) vis_s( 0x61, rd)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
297 #define vis_fone(rd) vis_d( 0x7e, rd)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
298 #define vis_fones(rd) vis_s( 0x7f, rd)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
299 #define vis_src1(rs1,rd) vis_d12d(0x74, rs1, rd)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
300 #define vis_src1s(rs1,rd) vis_s12s(0x75, rs1, rd)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
301 #define vis_src2(rs2,rd) vis_d22d(0x78, rs2, rd)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
302 #define vis_src2s(rs2,rd) vis_s22s(0x79, rs2, rd)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
303 #define vis_not1(rs1,rd) vis_d12d(0x6a, rs1, rd)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
304 #define vis_not1s(rs1,rd) vis_s12s(0x6b, rs1, rd)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
305 #define vis_not2(rs2,rd) vis_d22d(0x66, rs2, rd)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
306 #define vis_not2s(rs2,rd) vis_s22s(0x67, rs2, rd)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
307 #define vis_or(rs1,rs2,rd) vis_dd2d(0x7c, rs1, rs2, rd)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
308 #define vis_ors(rs1,rs2,rd) vis_ss2s(0x7d, rs1, rs2, rd)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
309 #define vis_nor(rs1,rs2,rd) vis_dd2d(0x62, rs1, rs2, rd)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
310 #define vis_nors(rs1,rs2,rd) vis_ss2s(0x63, rs1, rs2, rd)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
311 #define vis_and(rs1,rs2,rd) vis_dd2d(0x70, rs1, rs2, rd)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
312 #define vis_ands(rs1,rs2,rd) vis_ss2s(0x71, rs1, rs2, rd)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
313 #define vis_nand(rs1,rs2,rd) vis_dd2d(0x6e, rs1, rs2, rd)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
314 #define vis_nands(rs1,rs2,rd) vis_ss2s(0x6f, rs1, rs2, rd)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
315 #define vis_xor(rs1,rs2,rd) vis_dd2d(0x6c, rs1, rs2, rd)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
316 #define vis_xors(rs1,rs2,rd) vis_ss2s(0x6d, rs1, rs2, rd)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
317 #define vis_xnor(rs1,rs2,rd) vis_dd2d(0x72, rs1, rs2, rd)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
318 #define vis_xnors(rs1,rs2,rd) vis_ss2s(0x73, rs1, rs2, rd)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
319 #define vis_ornot1(rs1,rs2,rd) vis_dd2d(0x7a, rs1, rs2, rd)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
320 #define vis_ornot1s(rs1,rs2,rd) vis_ss2s(0x7b, rs1, rs2, rd)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
321 #define vis_ornot2(rs1,rs2,rd) vis_dd2d(0x76, rs1, rs2, rd)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
322 #define vis_ornot2s(rs1,rs2,rd) vis_ss2s(0x77, rs1, rs2, rd)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
323 #define vis_andnot1(rs1,rs2,rd) vis_dd2d(0x68, rs1, rs2, rd)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
324 #define vis_andnot1s(rs1,rs2,rd) vis_ss2s(0x69, rs1, rs2, rd)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
325 #define vis_andnot2(rs1,rs2,rd) vis_dd2d(0x64, rs1, rs2, rd)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
326 #define vis_andnot2s(rs1,rs2,rd) vis_ss2s(0x65, rs1, rs2, rd)
1959
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
327
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
328 /* Pixel component distance. */
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
329
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
330 #define vis_pdist(rs1,rs2,rd) vis_dd2d(0x3e, rs1, rs2, rd)
5163
9ecbfc0c82bf add multiple inclusion guards to headers
mru
parents: 3987
diff changeset
331
5169
3fd46e281bd8 add a comment to indicate which #endif belong to which #define
gpoirier
parents: 5163
diff changeset
332 #endif // AVCODEC_VIS_H