annotate sparc/vis.h @ 12530:63edd10ad4bc libavcodec tip

Try to fix crashes introduced by r25218 r25218 made assumptions about the existence of past reference frames that weren't necessarily true.
author darkshikari
date Tue, 28 Sep 2010 09:06:22 +0000
parents bf6d274fef39
children
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 * 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
3 *
3987
2c54309fef91 Switch to the LGPL as agreed to by the author according to the
diego
parents: 3965
diff changeset
4 * 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
5 *
3987
2c54309fef91 Switch to the LGPL as agreed to by the author according to the
diego
parents: 3965
diff changeset
6 * 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
7 * 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
8 * 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
9 * 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
10 *
3987
2c54309fef91 Switch to the LGPL as agreed to by the author according to the
diego
parents: 3965
diff changeset
11 * 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
12 * 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
13 * 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
14 * 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
15 *
3987
2c54309fef91 Switch to the LGPL as agreed to by the author according to the
diego
parents: 3965
diff changeset
16 * 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
17 * 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
18 * 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
19 */
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 /* 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
22 * 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
23 *
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
24 * 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
25 * 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
26 * 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
27 * 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
28 * 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
29 *
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
30 * 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
31 * 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
32 * at runtime.
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
33 *
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
34 * 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
35 * 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
36 * ties people's hands.
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
37 *
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
38 * 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
39 * 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
40 */
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
41
7760
c4a4495715dd Globally rename the header inclusion guard names.
stefano
parents: 6636
diff changeset
42 #ifndef AVCODEC_SPARC_VIS_H
c4a4495715dd Globally rename the header inclusion guard names.
stefano
parents: 6636
diff changeset
43 #define AVCODEC_SPARC_VIS_H
5163
9ecbfc0c82bf add multiple inclusion guards to headers
mru
parents: 3987
diff changeset
44
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
45 #define vis_opc_base ((0x1 << 31) | (0x36 << 19))
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
46 #define vis_opf(X) ((X) << 5)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
47 #define vis_sreg(X) (X)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
48 #define vis_dreg(X) (((X)&0x1f)|((X)>>5))
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
49 #define vis_rs1_s(X) (vis_sreg(X) << 14)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
50 #define vis_rs1_d(X) (vis_dreg(X) << 14)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
51 #define vis_rs2_s(X) (vis_sreg(X) << 0)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
52 #define vis_rs2_d(X) (vis_dreg(X) << 0)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
53 #define vis_rd_s(X) (vis_sreg(X) << 25)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
54 #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
55
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
56 #define vis_ss2s(opf,rs1,rs2,rd) \
8031
eebc7209c47f Convert asm keyword into __asm__.
flameeyes
parents: 7760
diff changeset
57 __asm__ volatile (".word %0" \
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
58 : : "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
59 vis_rs1_s(rs1) | \
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
60 vis_rs2_s(rs2) | \
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
61 vis_rd_s(rd)))
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
62
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
63 #define vis_dd2d(opf,rs1,rs2,rd) \
8031
eebc7209c47f Convert asm keyword into __asm__.
flameeyes
parents: 7760
diff changeset
64 __asm__ volatile (".word %0" \
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
65 : : "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
66 vis_rs1_d(rs1) | \
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
67 vis_rs2_d(rs2) | \
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
68 vis_rd_d(rd)))
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
69
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
70 #define vis_ss2d(opf,rs1,rs2,rd) \
8031
eebc7209c47f Convert asm keyword into __asm__.
flameeyes
parents: 7760
diff changeset
71 __asm__ volatile (".word %0" \
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
72 : : "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
73 vis_rs1_s(rs1) | \
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
74 vis_rs2_s(rs2) | \
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
75 vis_rd_d(rd)))
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
76
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
77 #define vis_sd2d(opf,rs1,rs2,rd) \
8031
eebc7209c47f Convert asm keyword into __asm__.
flameeyes
parents: 7760
diff changeset
78 __asm__ volatile (".word %0" \
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
79 : : "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
80 vis_rs1_s(rs1) | \
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
81 vis_rs2_d(rs2) | \
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
82 vis_rd_d(rd)))
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
83
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
84 #define vis_d2s(opf,rs2,rd) \
8031
eebc7209c47f Convert asm keyword into __asm__.
flameeyes
parents: 7760
diff changeset
85 __asm__ volatile (".word %0" \
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
86 : : "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
87 vis_rs2_d(rs2) | \
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
88 vis_rd_s(rd)))
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
89
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
90 #define vis_s2d(opf,rs2,rd) \
8031
eebc7209c47f Convert asm keyword into __asm__.
flameeyes
parents: 7760
diff changeset
91 __asm__ volatile (".word %0" \
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
92 : : "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
93 vis_rs2_s(rs2) | \
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
94 vis_rd_d(rd)))
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
95
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
96 #define vis_d12d(opf,rs1,rd) \
8031
eebc7209c47f Convert asm keyword into __asm__.
flameeyes
parents: 7760
diff changeset
97 __asm__ volatile (".word %0" \
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
98 : : "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
99 vis_rs1_d(rs1) | \
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
100 vis_rd_d(rd)))
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
101
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
102 #define vis_d22d(opf,rs2,rd) \
8031
eebc7209c47f Convert asm keyword into __asm__.
flameeyes
parents: 7760
diff changeset
103 __asm__ volatile (".word %0" \
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
104 : : "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
105 vis_rs2_d(rs2) | \
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
106 vis_rd_d(rd)))
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
107
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
108 #define vis_s12s(opf,rs1,rd) \
8031
eebc7209c47f Convert asm keyword into __asm__.
flameeyes
parents: 7760
diff changeset
109 __asm__ volatile (".word %0" \
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
110 : : "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
111 vis_rs1_s(rs1) | \
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
112 vis_rd_s(rd)))
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
113
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
114 #define vis_s22s(opf,rs2,rd) \
8031
eebc7209c47f Convert asm keyword into __asm__.
flameeyes
parents: 7760
diff changeset
115 __asm__ volatile (".word %0" \
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
116 : : "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
117 vis_rs2_s(rs2) | \
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
118 vis_rd_s(rd)))
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
119
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
120 #define vis_s(opf,rd) \
8031
eebc7209c47f Convert asm keyword into __asm__.
flameeyes
parents: 7760
diff changeset
121 __asm__ volatile (".word %0" \
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
122 : : "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
123 vis_rd_s(rd)))
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
124
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
125 #define vis_d(opf,rd) \
8031
eebc7209c47f Convert asm keyword into __asm__.
flameeyes
parents: 7760
diff changeset
126 __asm__ volatile (".word %0" \
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
127 : : "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
128 vis_rd_d(rd)))
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
129
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
130 #define vis_r2m(op,rd,mem) \
8031
eebc7209c47f Convert asm keyword into __asm__.
flameeyes
parents: 7760
diff changeset
131 __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
132
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
133 #define vis_r2m_2(op,rd,mem1,mem2) \
8031
eebc7209c47f Convert asm keyword into __asm__.
flameeyes
parents: 7760
diff changeset
134 __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
135
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
136 #define vis_m2r(op,mem,rd) \
8031
eebc7209c47f Convert asm keyword into __asm__.
flameeyes
parents: 7760
diff changeset
137 __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
138
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
139 #define vis_m2r_2(op,mem1,mem2,rd) \
8031
eebc7209c47f Convert asm keyword into __asm__.
flameeyes
parents: 7760
diff changeset
140 __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
141
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
142 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
143 {
8031
eebc7209c47f Convert asm keyword into __asm__.
flameeyes
parents: 7760
diff changeset
144 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
145
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
146 val = _val;
8031
eebc7209c47f Convert asm keyword into __asm__.
flameeyes
parents: 7760
diff changeset
147 __asm__ volatile(".word 0xa7804000"
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
148 : : "r" (val));
1959
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
149 }
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
150
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
151 #define VIS_GSR_ALIGNADDR_MASK 0x0000007
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
152 #define VIS_GSR_ALIGNADDR_SHIFT 0
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
153 #define VIS_GSR_SCALEFACT_MASK 0x0000078
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
154 #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
155
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
156 #define vis_ld32(mem,rs1) vis_m2r(ld, mem, rs1)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
157 #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
158 #define vis_st32(rs1,mem) vis_r2m(st, rs1, mem)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
159 #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
160 #define vis_ld64(mem,rs1) vis_m2r(ldd, mem, rs1)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
161 #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
162 #define vis_st64(rs1,mem) vis_r2m(std, rs1, mem)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
163 #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
164
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
165 #define vis_ldblk(mem, rd) \
8031
eebc7209c47f Convert asm keyword into __asm__.
flameeyes
parents: 7760
diff changeset
166 do { register void *__mem __asm__("g1"); \
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
167 __mem = &(mem); \
8031
eebc7209c47f Convert asm keyword into __asm__.
flameeyes
parents: 7760
diff changeset
168 __asm__ volatile(".word 0xc1985e00 | %1" \
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
169 : \
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
170 : "r" (__mem), \
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
171 "i" (vis_rd_d(rd)) \
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
172 : "memory"); \
1959
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
173 } while (0)
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
174
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
175 #define vis_stblk(rd, mem) \
8031
eebc7209c47f Convert asm keyword into __asm__.
flameeyes
parents: 7760
diff changeset
176 do { register void *__mem __asm__("g1"); \
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
177 __mem = &(mem); \
8031
eebc7209c47f Convert asm keyword into __asm__.
flameeyes
parents: 7760
diff changeset
178 __asm__ volatile(".word 0xc1b85e00 | %1" \
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
179 : \
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
180 : "r" (__mem), \
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
181 "i" (vis_rd_d(rd)) \
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
182 : "memory"); \
1959
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
183 } while (0)
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
184
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
185 #define vis_membar_storestore() \
8031
eebc7209c47f Convert asm keyword into __asm__.
flameeyes
parents: 7760
diff changeset
186 __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
187
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
188 #define vis_membar_sync() \
8031
eebc7209c47f Convert asm keyword into __asm__.
flameeyes
parents: 7760
diff changeset
189 __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
190
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
191 /* 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
192 * 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
193 * 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
194 * subtractions.
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
195 */
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
196
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
197 #define vis_padd16(rs1,rs2,rd) vis_dd2d(0x50, rs1, rs2, rd)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
198 #define vis_padd16s(rs1,rs2,rd) vis_ss2s(0x51, rs1, rs2, rd)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
199 #define vis_padd32(rs1,rs2,rd) vis_dd2d(0x52, rs1, rs2, rd)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
200 #define vis_padd32s(rs1,rs2,rd) vis_ss2s(0x53, rs1, rs2, rd)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
201 #define vis_psub16(rs1,rs2,rd) vis_dd2d(0x54, rs1, rs2, rd)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
202 #define vis_psub16s(rs1,rs2,rd) vis_ss2s(0x55, rs1, rs2, rd)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
203 #define vis_psub32(rs1,rs2,rd) vis_dd2d(0x56, rs1, rs2, rd)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
204 #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
205
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
206 /* Pixel formatting instructions. */
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
207
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
208 #define vis_pack16(rs2,rd) vis_d2s( 0x3b, rs2, rd)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
209 #define vis_pack32(rs1,rs2,rd) vis_dd2d(0x3a, rs1, rs2, rd)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
210 #define vis_packfix(rs2,rd) vis_d2s( 0x3d, rs2, rd)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
211 #define vis_expand(rs2,rd) vis_s2d( 0x4d, rs2, rd)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
212 #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
213
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
214 /* Partitioned multiply instructions. */
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
215
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
216 #define vis_mul8x16(rs1,rs2,rd) vis_sd2d(0x31, rs1, rs2, rd)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
217 #define vis_mul8x16au(rs1,rs2,rd) vis_ss2d(0x33, rs1, rs2, rd)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
218 #define vis_mul8x16al(rs1,rs2,rd) vis_ss2d(0x35, rs1, rs2, rd)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
219 #define vis_mul8sux16(rs1,rs2,rd) vis_dd2d(0x36, rs1, rs2, rd)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
220 #define vis_mul8ulx16(rs1,rs2,rd) vis_dd2d(0x37, rs1, rs2, rd)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
221 #define vis_muld8sux16(rs1,rs2,rd) vis_ss2d(0x38, rs1, rs2, rd)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
222 #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
223
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
224 /* Alignment instructions. */
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
225
11458
bf6d274fef39 sparc: fix a few pages of cast warnings
mru
parents: 8776
diff changeset
226 static inline const void *vis_alignaddr(const void *_ptr)
1959
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
227 {
11458
bf6d274fef39 sparc: fix a few pages of cast warnings
mru
parents: 8776
diff changeset
228 register const void *ptr __asm__("g1");
1959
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
229
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
230 ptr = _ptr;
1959
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
231
8031
eebc7209c47f Convert asm keyword into __asm__.
flameeyes
parents: 7760
diff changeset
232 __asm__ volatile(".word %2"
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
233 : "=&r" (ptr)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
234 : "0" (ptr),
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
235 "i" (vis_opc_base | vis_opf(0x18) |
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
236 vis_rs1_s(1) |
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
237 vis_rs2_s(0) |
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
238 vis_rd_s(1)));
1959
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
239
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
240 return ptr;
1959
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
241 }
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 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
244 {
8031
eebc7209c47f Convert asm keyword into __asm__.
flameeyes
parents: 7760
diff changeset
245 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
246
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
247 ptr = _ptr;
1959
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
248
8031
eebc7209c47f Convert asm keyword into __asm__.
flameeyes
parents: 7760
diff changeset
249 __asm__ volatile(".word %2"
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
250 : "=&r" (ptr)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
251 : "0" (ptr),
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
252 "i" (vis_opc_base | vis_opf(0x18) |
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
253 vis_rs1_s(1) |
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
254 vis_rs2_s(0) |
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
255 vis_rd_s(0)));
1959
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
256 }
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 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
259 {
8031
eebc7209c47f Convert asm keyword into __asm__.
flameeyes
parents: 7760
diff changeset
260 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
261
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
262 ptr = _ptr;
1959
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
263
8031
eebc7209c47f Convert asm keyword into __asm__.
flameeyes
parents: 7760
diff changeset
264 __asm__ volatile(".word %2"
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
265 : "=&r" (ptr)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
266 : "0" (ptr),
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
267 "i" (vis_opc_base | vis_opf(0x19) |
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
268 vis_rs1_s(1) |
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
269 vis_rs2_s(0) |
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
270 vis_rd_s(1)));
1959
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
271
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
272 return ptr;
1959
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
273 }
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 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
276 {
8031
eebc7209c47f Convert asm keyword into __asm__.
flameeyes
parents: 7760
diff changeset
277 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
278
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
279 ptr = _ptr;
1959
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
280
8031
eebc7209c47f Convert asm keyword into __asm__.
flameeyes
parents: 7760
diff changeset
281 __asm__ volatile(".word %2"
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
282 : "=&r" (ptr)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
283 : "0" (ptr),
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
284 "i" (vis_opc_base | vis_opf(0x19) |
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
285 vis_rs1_s(1) |
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
286 vis_rs2_s(0) |
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
287 vis_rd_s(0)));
1959
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
288 }
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
289
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
290 #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
291
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
292 /* Logical operate instructions. */
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
293
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
294 #define vis_fzero(rd) vis_d( 0x60, rd)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
295 #define vis_fzeros(rd) vis_s( 0x61, rd)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
296 #define vis_fone(rd) vis_d( 0x7e, rd)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
297 #define vis_fones(rd) vis_s( 0x7f, rd)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
298 #define vis_src1(rs1,rd) vis_d12d(0x74, rs1, rd)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
299 #define vis_src1s(rs1,rd) vis_s12s(0x75, rs1, rd)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
300 #define vis_src2(rs2,rd) vis_d22d(0x78, rs2, rd)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
301 #define vis_src2s(rs2,rd) vis_s22s(0x79, rs2, rd)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
302 #define vis_not1(rs1,rd) vis_d12d(0x6a, rs1, rd)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
303 #define vis_not1s(rs1,rd) vis_s12s(0x6b, rs1, rd)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
304 #define vis_not2(rs2,rd) vis_d22d(0x66, rs2, rd)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
305 #define vis_not2s(rs2,rd) vis_s22s(0x67, rs2, rd)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
306 #define vis_or(rs1,rs2,rd) vis_dd2d(0x7c, rs1, rs2, rd)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
307 #define vis_ors(rs1,rs2,rd) vis_ss2s(0x7d, rs1, rs2, rd)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
308 #define vis_nor(rs1,rs2,rd) vis_dd2d(0x62, rs1, rs2, rd)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
309 #define vis_nors(rs1,rs2,rd) vis_ss2s(0x63, rs1, rs2, rd)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
310 #define vis_and(rs1,rs2,rd) vis_dd2d(0x70, rs1, rs2, rd)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
311 #define vis_ands(rs1,rs2,rd) vis_ss2s(0x71, rs1, rs2, rd)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
312 #define vis_nand(rs1,rs2,rd) vis_dd2d(0x6e, rs1, rs2, rd)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
313 #define vis_nands(rs1,rs2,rd) vis_ss2s(0x6f, rs1, rs2, rd)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
314 #define vis_xor(rs1,rs2,rd) vis_dd2d(0x6c, rs1, rs2, rd)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
315 #define vis_xors(rs1,rs2,rd) vis_ss2s(0x6d, rs1, rs2, rd)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
316 #define vis_xnor(rs1,rs2,rd) vis_dd2d(0x72, rs1, rs2, rd)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
317 #define vis_xnors(rs1,rs2,rd) vis_ss2s(0x73, rs1, rs2, rd)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
318 #define vis_ornot1(rs1,rs2,rd) vis_dd2d(0x7a, rs1, rs2, rd)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
319 #define vis_ornot1s(rs1,rs2,rd) vis_ss2s(0x7b, rs1, rs2, rd)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
320 #define vis_ornot2(rs1,rs2,rd) vis_dd2d(0x76, rs1, rs2, rd)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
321 #define vis_ornot2s(rs1,rs2,rd) vis_ss2s(0x77, rs1, rs2, rd)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
322 #define vis_andnot1(rs1,rs2,rd) vis_dd2d(0x68, rs1, rs2, rd)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
323 #define vis_andnot1s(rs1,rs2,rd) vis_ss2s(0x69, rs1, rs2, rd)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
324 #define vis_andnot2(rs1,rs2,rd) vis_dd2d(0x64, rs1, rs2, rd)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
325 #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
326
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
327 /* Pixel component distance. */
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
328
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
329 #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
330
7760
c4a4495715dd Globally rename the header inclusion guard names.
stefano
parents: 6636
diff changeset
331 #endif /* AVCODEC_SPARC_VIS_H */