annotate sparc/vis.h @ 4253:b2c06cdd6154 libavcodec

remove pretty much useless skiping of some predictors this has pretty much no quality or speed effect except very small random changes
author michael
date Fri, 01 Dec 2006 20:38:54 +0000
parents 2c54309fef91
children 9ecbfc0c82bf
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
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
43 #define vis_opc_base ((0x1 << 31) | (0x36 << 19))
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
44 #define vis_opf(X) ((X) << 5)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
45 #define vis_sreg(X) (X)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
46 #define vis_dreg(X) (((X)&0x1f)|((X)>>5))
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
47 #define vis_rs1_s(X) (vis_sreg(X) << 14)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
48 #define vis_rs1_d(X) (vis_dreg(X) << 14)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
49 #define vis_rs2_s(X) (vis_sreg(X) << 0)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
50 #define vis_rs2_d(X) (vis_dreg(X) << 0)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
51 #define vis_rd_s(X) (vis_sreg(X) << 25)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
52 #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
53
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
54 #define vis_ss2s(opf,rs1,rs2,rd) \
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
55 __asm__ __volatile__ (".word %0" \
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
56 : : "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
57 vis_rs1_s(rs1) | \
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
58 vis_rs2_s(rs2) | \
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
59 vis_rd_s(rd)))
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
60
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
61 #define vis_dd2d(opf,rs1,rs2,rd) \
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
62 __asm__ __volatile__ (".word %0" \
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
63 : : "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
64 vis_rs1_d(rs1) | \
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
65 vis_rs2_d(rs2) | \
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
66 vis_rd_d(rd)))
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
67
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
68 #define vis_ss2d(opf,rs1,rs2,rd) \
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
69 __asm__ __volatile__ (".word %0" \
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
70 : : "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
71 vis_rs1_s(rs1) | \
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
72 vis_rs2_s(rs2) | \
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
73 vis_rd_d(rd)))
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
74
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
75 #define vis_sd2d(opf,rs1,rs2,rd) \
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
76 __asm__ __volatile__ (".word %0" \
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
77 : : "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
78 vis_rs1_s(rs1) | \
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
79 vis_rs2_d(rs2) | \
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
80 vis_rd_d(rd)))
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
81
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
82 #define vis_d2s(opf,rs2,rd) \
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
83 __asm__ __volatile__ (".word %0" \
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
84 : : "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
85 vis_rs2_d(rs2) | \
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
86 vis_rd_s(rd)))
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
87
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
88 #define vis_s2d(opf,rs2,rd) \
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
89 __asm__ __volatile__ (".word %0" \
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
90 : : "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
91 vis_rs2_s(rs2) | \
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
92 vis_rd_d(rd)))
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
93
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
94 #define vis_d12d(opf,rs1,rd) \
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
95 __asm__ __volatile__ (".word %0" \
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
96 : : "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
97 vis_rs1_d(rs1) | \
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
98 vis_rd_d(rd)))
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
99
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
100 #define vis_d22d(opf,rs2,rd) \
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
101 __asm__ __volatile__ (".word %0" \
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
102 : : "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
103 vis_rs2_d(rs2) | \
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
104 vis_rd_d(rd)))
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
105
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
106 #define vis_s12s(opf,rs1,rd) \
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
107 __asm__ __volatile__ (".word %0" \
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
108 : : "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
109 vis_rs1_s(rs1) | \
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
110 vis_rd_s(rd)))
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
111
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
112 #define vis_s22s(opf,rs2,rd) \
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
113 __asm__ __volatile__ (".word %0" \
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
114 : : "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
115 vis_rs2_s(rs2) | \
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
116 vis_rd_s(rd)))
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
117
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
118 #define vis_s(opf,rd) \
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
119 __asm__ __volatile__ (".word %0" \
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
120 : : "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
121 vis_rd_s(rd)))
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
122
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
123 #define vis_d(opf,rd) \
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
124 __asm__ __volatile__ (".word %0" \
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
125 : : "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
126 vis_rd_d(rd)))
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
127
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
128 #define vis_r2m(op,rd,mem) \
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
129 __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
130
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
131 #define vis_r2m_2(op,rd,mem1,mem2) \
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
132 __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
133
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
134 #define vis_m2r(op,mem,rd) \
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
135 __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
136
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
137 #define vis_m2r_2(op,mem1,mem2,rd) \
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
138 __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
139
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
140 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
141 {
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
142 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
143
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
144 val = _val;
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
145 __asm__ __volatile__(".word 0xa7804000"
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
146 : : "r" (val));
1959
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
147 }
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
148
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
149 #define VIS_GSR_ALIGNADDR_MASK 0x0000007
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
150 #define VIS_GSR_ALIGNADDR_SHIFT 0
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
151 #define VIS_GSR_SCALEFACT_MASK 0x0000078
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
152 #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
153
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
154 #define vis_ld32(mem,rs1) vis_m2r(ld, mem, rs1)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
155 #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
156 #define vis_st32(rs1,mem) vis_r2m(st, rs1, mem)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
157 #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
158 #define vis_ld64(mem,rs1) vis_m2r(ldd, mem, rs1)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
159 #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
160 #define vis_st64(rs1,mem) vis_r2m(std, rs1, mem)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
161 #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
162
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
163 #define vis_ldblk(mem, rd) \
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
164 do { register void *__mem asm("g1"); \
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
165 __mem = &(mem); \
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
166 __asm__ __volatile__(".word 0xc1985e00 | %1" \
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
167 : \
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
168 : "r" (__mem), \
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
169 "i" (vis_rd_d(rd)) \
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
170 : "memory"); \
1959
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
171 } while (0)
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
172
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
173 #define vis_stblk(rd, mem) \
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
174 do { register void *__mem asm("g1"); \
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
175 __mem = &(mem); \
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
176 __asm__ __volatile__(".word 0xc1b85e00 | %1" \
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
177 : \
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
178 : "r" (__mem), \
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
179 "i" (vis_rd_d(rd)) \
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
180 : "memory"); \
1959
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
181 } while (0)
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
182
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
183 #define vis_membar_storestore() \
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
184 __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
185
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
186 #define vis_membar_sync() \
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
187 __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
188
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
189 /* 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
190 * 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
191 * 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
192 * subtractions.
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
193 */
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
194
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
195 #define vis_padd16(rs1,rs2,rd) vis_dd2d(0x50, rs1, rs2, rd)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
196 #define vis_padd16s(rs1,rs2,rd) vis_ss2s(0x51, rs1, rs2, rd)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
197 #define vis_padd32(rs1,rs2,rd) vis_dd2d(0x52, rs1, rs2, rd)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
198 #define vis_padd32s(rs1,rs2,rd) vis_ss2s(0x53, rs1, rs2, rd)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
199 #define vis_psub16(rs1,rs2,rd) vis_dd2d(0x54, rs1, rs2, rd)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
200 #define vis_psub16s(rs1,rs2,rd) vis_ss2s(0x55, rs1, rs2, rd)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
201 #define vis_psub32(rs1,rs2,rd) vis_dd2d(0x56, rs1, rs2, rd)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
202 #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
203
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
204 /* Pixel formatting instructions. */
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
205
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
206 #define vis_pack16(rs2,rd) vis_d2s( 0x3b, rs2, rd)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
207 #define vis_pack32(rs1,rs2,rd) vis_dd2d(0x3a, rs1, rs2, rd)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
208 #define vis_packfix(rs2,rd) vis_d2s( 0x3d, rs2, rd)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
209 #define vis_expand(rs2,rd) vis_s2d( 0x4d, rs2, rd)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
210 #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
211
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
212 /* Partitioned multiply instructions. */
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
213
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
214 #define vis_mul8x16(rs1,rs2,rd) vis_sd2d(0x31, rs1, rs2, rd)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
215 #define vis_mul8x16au(rs1,rs2,rd) vis_ss2d(0x33, rs1, rs2, rd)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
216 #define vis_mul8x16al(rs1,rs2,rd) vis_ss2d(0x35, rs1, rs2, rd)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
217 #define vis_mul8sux16(rs1,rs2,rd) vis_dd2d(0x36, rs1, rs2, rd)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
218 #define vis_mul8ulx16(rs1,rs2,rd) vis_dd2d(0x37, rs1, rs2, rd)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
219 #define vis_muld8sux16(rs1,rs2,rd) vis_ss2d(0x38, rs1, rs2, rd)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
220 #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
221
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
222 /* Alignment instructions. */
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 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
225 {
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
226 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
227
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
228 ptr = _ptr;
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 __asm__ __volatile__(".word %2"
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
231 : "=&r" (ptr)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
232 : "0" (ptr),
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
233 "i" (vis_opc_base | vis_opf(0x18) |
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
234 vis_rs1_s(1) |
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
235 vis_rs2_s(0) |
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
236 vis_rd_s(1)));
1959
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
237
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
238 return ptr;
1959
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
239 }
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
240
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
241 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
242 {
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
243 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
244
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
245 ptr = _ptr;
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 __asm__ __volatile__(".word %2"
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
248 : "=&r" (ptr)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
249 : "0" (ptr),
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
250 "i" (vis_opc_base | vis_opf(0x18) |
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
251 vis_rs1_s(1) |
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
252 vis_rs2_s(0) |
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
253 vis_rd_s(0)));
1959
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
254 }
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
255
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
256 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
257 {
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
258 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
259
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
260 ptr = _ptr;
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 __asm__ __volatile__(".word %2"
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
263 : "=&r" (ptr)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
264 : "0" (ptr),
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
265 "i" (vis_opc_base | vis_opf(0x19) |
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
266 vis_rs1_s(1) |
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
267 vis_rs2_s(0) |
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
268 vis_rd_s(1)));
1959
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
269
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
270 return ptr;
1959
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
271 }
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
272
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
273 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
274 {
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
275 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
276
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
277 ptr = _ptr;
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 __asm__ __volatile__(".word %2"
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
280 : "=&r" (ptr)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
281 : "0" (ptr),
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
282 "i" (vis_opc_base | vis_opf(0x19) |
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
283 vis_rs1_s(1) |
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
284 vis_rs2_s(0) |
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
285 vis_rd_s(0)));
1959
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
286 }
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
287
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
288 #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
289
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
290 /* Logical operate instructions. */
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
291
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
292 #define vis_fzero(rd) vis_d( 0x60, rd)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
293 #define vis_fzeros(rd) vis_s( 0x61, rd)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
294 #define vis_fone(rd) vis_d( 0x7e, rd)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
295 #define vis_fones(rd) vis_s( 0x7f, rd)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
296 #define vis_src1(rs1,rd) vis_d12d(0x74, rs1, rd)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
297 #define vis_src1s(rs1,rd) vis_s12s(0x75, rs1, rd)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
298 #define vis_src2(rs2,rd) vis_d22d(0x78, rs2, rd)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
299 #define vis_src2s(rs2,rd) vis_s22s(0x79, rs2, rd)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
300 #define vis_not1(rs1,rd) vis_d12d(0x6a, rs1, rd)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
301 #define vis_not1s(rs1,rd) vis_s12s(0x6b, rs1, rd)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
302 #define vis_not2(rs2,rd) vis_d22d(0x66, rs2, rd)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
303 #define vis_not2s(rs2,rd) vis_s22s(0x67, rs2, rd)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
304 #define vis_or(rs1,rs2,rd) vis_dd2d(0x7c, rs1, rs2, rd)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
305 #define vis_ors(rs1,rs2,rd) vis_ss2s(0x7d, rs1, rs2, rd)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
306 #define vis_nor(rs1,rs2,rd) vis_dd2d(0x62, rs1, rs2, rd)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
307 #define vis_nors(rs1,rs2,rd) vis_ss2s(0x63, rs1, rs2, rd)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
308 #define vis_and(rs1,rs2,rd) vis_dd2d(0x70, rs1, rs2, rd)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
309 #define vis_ands(rs1,rs2,rd) vis_ss2s(0x71, rs1, rs2, rd)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
310 #define vis_nand(rs1,rs2,rd) vis_dd2d(0x6e, rs1, rs2, rd)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
311 #define vis_nands(rs1,rs2,rd) vis_ss2s(0x6f, rs1, rs2, rd)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
312 #define vis_xor(rs1,rs2,rd) vis_dd2d(0x6c, rs1, rs2, rd)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
313 #define vis_xors(rs1,rs2,rd) vis_ss2s(0x6d, rs1, rs2, rd)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
314 #define vis_xnor(rs1,rs2,rd) vis_dd2d(0x72, rs1, rs2, rd)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
315 #define vis_xnors(rs1,rs2,rd) vis_ss2s(0x73, rs1, rs2, rd)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
316 #define vis_ornot1(rs1,rs2,rd) vis_dd2d(0x7a, rs1, rs2, rd)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
317 #define vis_ornot1s(rs1,rs2,rd) vis_ss2s(0x7b, rs1, rs2, rd)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
318 #define vis_ornot2(rs1,rs2,rd) vis_dd2d(0x76, rs1, rs2, rd)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
319 #define vis_ornot2s(rs1,rs2,rd) vis_ss2s(0x77, rs1, rs2, rd)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
320 #define vis_andnot1(rs1,rs2,rd) vis_dd2d(0x68, rs1, rs2, rd)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
321 #define vis_andnot1s(rs1,rs2,rd) vis_ss2s(0x69, rs1, rs2, rd)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
322 #define vis_andnot2(rs1,rs2,rd) vis_dd2d(0x64, rs1, rs2, rd)
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
323 #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
324
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
325 /* Pixel component distance. */
55b7435c59b8 VIS optimized motion compensation code. by (David S. Miller <davem at redhat dot com>)
michael
parents:
diff changeset
326
2979
bfabfdf9ce55 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 1959
diff changeset
327 #define vis_pdist(rs1,rs2,rd) vis_dd2d(0x3e, rs1, rs2, rd)