annotate alpha/asm.h @ 2504:f12657081093 libavcodec

INTRA PCM macroblocks support patch by (Loic )lll+ffmpeg m4x org) This patch adds the support for INTRA PCM macroblocks in CAVLC and CABAC mode, the deblocking needed a small modification and so did the intra4x4_pred_mode prediction. With this patch, the 5 streams of the conformance suite containing INTRA PCM macroblocks now decode entirely, 4 are completely corrects, 1 is incorrect since the first B slice because of deblocking in B slice not yet implemented. The code is not optimized for speed, it is not necessary IPCM macroblocks are rare, but it could be optimized for code size, if someone want to do this, feel free.
author michael
date Mon, 07 Feb 2005 00:10:28 +0000
parents 52254c2f9cae
children e44ff53b1c85
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
214
73df666cacc7 Alpha optimizations by Falk Hueffner <falk.hueffner@student.uni-tuebingen.de>
nickols_k
parents:
diff changeset
1 /*
73df666cacc7 Alpha optimizations by Falk Hueffner <falk.hueffner@student.uni-tuebingen.de>
nickols_k
parents:
diff changeset
2 * Alpha optimized DSP utils
73df666cacc7 Alpha optimizations by Falk Hueffner <falk.hueffner@student.uni-tuebingen.de>
nickols_k
parents:
diff changeset
3 * Copyright (c) 2002 Falk Hueffner <falk@debian.org>
73df666cacc7 Alpha optimizations by Falk Hueffner <falk.hueffner@student.uni-tuebingen.de>
nickols_k
parents:
diff changeset
4 *
429
718a22dc121f license/copyright change
glantau
parents: 214
diff changeset
5 * This library is free software; you can redistribute it and/or
718a22dc121f license/copyright change
glantau
parents: 214
diff changeset
6 * modify it under the terms of the GNU Lesser General Public
718a22dc121f license/copyright change
glantau
parents: 214
diff changeset
7 * License as published by the Free Software Foundation; either
718a22dc121f license/copyright change
glantau
parents: 214
diff changeset
8 * version 2 of the License, or (at your option) any later version.
214
73df666cacc7 Alpha optimizations by Falk Hueffner <falk.hueffner@student.uni-tuebingen.de>
nickols_k
parents:
diff changeset
9 *
429
718a22dc121f license/copyright change
glantau
parents: 214
diff changeset
10 * This library is distributed in the hope that it will be useful,
214
73df666cacc7 Alpha optimizations by Falk Hueffner <falk.hueffner@student.uni-tuebingen.de>
nickols_k
parents:
diff changeset
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
429
718a22dc121f license/copyright change
glantau
parents: 214
diff changeset
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
718a22dc121f license/copyright change
glantau
parents: 214
diff changeset
13 * Lesser General Public License for more details.
214
73df666cacc7 Alpha optimizations by Falk Hueffner <falk.hueffner@student.uni-tuebingen.de>
nickols_k
parents:
diff changeset
14 *
429
718a22dc121f license/copyright change
glantau
parents: 214
diff changeset
15 * You should have received a copy of the GNU Lesser General Public
718a22dc121f license/copyright change
glantau
parents: 214
diff changeset
16 * License along with this library; if not, write to the Free Software
718a22dc121f license/copyright change
glantau
parents: 214
diff changeset
17 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
214
73df666cacc7 Alpha optimizations by Falk Hueffner <falk.hueffner@student.uni-tuebingen.de>
nickols_k
parents:
diff changeset
18 */
73df666cacc7 Alpha optimizations by Falk Hueffner <falk.hueffner@student.uni-tuebingen.de>
nickols_k
parents:
diff changeset
19
73df666cacc7 Alpha optimizations by Falk Hueffner <falk.hueffner@student.uni-tuebingen.de>
nickols_k
parents:
diff changeset
20 #ifndef LIBAVCODEC_ALPHA_ASM_H
73df666cacc7 Alpha optimizations by Falk Hueffner <falk.hueffner@student.uni-tuebingen.de>
nickols_k
parents:
diff changeset
21 #define LIBAVCODEC_ALPHA_ASM_H
73df666cacc7 Alpha optimizations by Falk Hueffner <falk.hueffner@student.uni-tuebingen.de>
nickols_k
parents:
diff changeset
22
504
4aa1ff2acc74 * Fixed constraints
mellum
parents: 429
diff changeset
23 #include <inttypes.h>
214
73df666cacc7 Alpha optimizations by Falk Hueffner <falk.hueffner@student.uni-tuebingen.de>
nickols_k
parents:
diff changeset
24
728
9cda14fe33d9 Some nifty stuff for upcoming patches.
mellum
parents: 665
diff changeset
25 #if defined __GNUC__
9cda14fe33d9 Some nifty stuff for upcoming patches.
mellum
parents: 665
diff changeset
26 # define GNUC_PREREQ(maj, min) \
9cda14fe33d9 Some nifty stuff for upcoming patches.
mellum
parents: 665
diff changeset
27 ((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min))
9cda14fe33d9 Some nifty stuff for upcoming patches.
mellum
parents: 665
diff changeset
28 #else
9cda14fe33d9 Some nifty stuff for upcoming patches.
mellum
parents: 665
diff changeset
29 # define GNUC_PREREQ(maj, min) 0
9cda14fe33d9 Some nifty stuff for upcoming patches.
mellum
parents: 665
diff changeset
30 #endif
9cda14fe33d9 Some nifty stuff for upcoming patches.
mellum
parents: 665
diff changeset
31
9cda14fe33d9 Some nifty stuff for upcoming patches.
mellum
parents: 665
diff changeset
32 #if GNUC_PREREQ(2,96)
9cda14fe33d9 Some nifty stuff for upcoming patches.
mellum
parents: 665
diff changeset
33 # define likely(x) __builtin_expect((x) != 0, 1)
9cda14fe33d9 Some nifty stuff for upcoming patches.
mellum
parents: 665
diff changeset
34 # define unlikely(x) __builtin_expect((x) != 0, 0)
9cda14fe33d9 Some nifty stuff for upcoming patches.
mellum
parents: 665
diff changeset
35 #else
9cda14fe33d9 Some nifty stuff for upcoming patches.
mellum
parents: 665
diff changeset
36 # define likely(x) (x)
9cda14fe33d9 Some nifty stuff for upcoming patches.
mellum
parents: 665
diff changeset
37 # define unlikely(x) (x)
9cda14fe33d9 Some nifty stuff for upcoming patches.
mellum
parents: 665
diff changeset
38 #endif
9cda14fe33d9 Some nifty stuff for upcoming patches.
mellum
parents: 665
diff changeset
39
214
73df666cacc7 Alpha optimizations by Falk Hueffner <falk.hueffner@student.uni-tuebingen.de>
nickols_k
parents:
diff changeset
40 #define AMASK_BWX (1 << 0)
73df666cacc7 Alpha optimizations by Falk Hueffner <falk.hueffner@student.uni-tuebingen.de>
nickols_k
parents:
diff changeset
41 #define AMASK_FIX (1 << 1)
504
4aa1ff2acc74 * Fixed constraints
mellum
parents: 429
diff changeset
42 #define AMASK_CIX (1 << 2)
214
73df666cacc7 Alpha optimizations by Falk Hueffner <falk.hueffner@student.uni-tuebingen.de>
nickols_k
parents:
diff changeset
43 #define AMASK_MVI (1 << 8)
73df666cacc7 Alpha optimizations by Falk Hueffner <falk.hueffner@student.uni-tuebingen.de>
nickols_k
parents:
diff changeset
44
1378
1831d86117a3 warning fixes
al3x
parents: 728
diff changeset
45 static inline uint64_t BYTE_VEC(uint64_t x)
214
73df666cacc7 Alpha optimizations by Falk Hueffner <falk.hueffner@student.uni-tuebingen.de>
nickols_k
parents:
diff changeset
46 {
73df666cacc7 Alpha optimizations by Falk Hueffner <falk.hueffner@student.uni-tuebingen.de>
nickols_k
parents:
diff changeset
47 x |= x << 8;
73df666cacc7 Alpha optimizations by Falk Hueffner <falk.hueffner@student.uni-tuebingen.de>
nickols_k
parents:
diff changeset
48 x |= x << 16;
73df666cacc7 Alpha optimizations by Falk Hueffner <falk.hueffner@student.uni-tuebingen.de>
nickols_k
parents:
diff changeset
49 x |= x << 32;
73df666cacc7 Alpha optimizations by Falk Hueffner <falk.hueffner@student.uni-tuebingen.de>
nickols_k
parents:
diff changeset
50 return x;
73df666cacc7 Alpha optimizations by Falk Hueffner <falk.hueffner@student.uni-tuebingen.de>
nickols_k
parents:
diff changeset
51 }
1378
1831d86117a3 warning fixes
al3x
parents: 728
diff changeset
52 static inline uint64_t WORD_VEC(uint64_t x)
214
73df666cacc7 Alpha optimizations by Falk Hueffner <falk.hueffner@student.uni-tuebingen.de>
nickols_k
parents:
diff changeset
53 {
73df666cacc7 Alpha optimizations by Falk Hueffner <falk.hueffner@student.uni-tuebingen.de>
nickols_k
parents:
diff changeset
54 x |= x << 16;
73df666cacc7 Alpha optimizations by Falk Hueffner <falk.hueffner@student.uni-tuebingen.de>
nickols_k
parents:
diff changeset
55 x |= x << 32;
73df666cacc7 Alpha optimizations by Falk Hueffner <falk.hueffner@student.uni-tuebingen.de>
nickols_k
parents:
diff changeset
56 return x;
73df666cacc7 Alpha optimizations by Falk Hueffner <falk.hueffner@student.uni-tuebingen.de>
nickols_k
parents:
diff changeset
57 }
73df666cacc7 Alpha optimizations by Falk Hueffner <falk.hueffner@student.uni-tuebingen.de>
nickols_k
parents:
diff changeset
58
504
4aa1ff2acc74 * Fixed constraints
mellum
parents: 429
diff changeset
59 #define ldq(p) (*(const uint64_t *) (p))
4aa1ff2acc74 * Fixed constraints
mellum
parents: 429
diff changeset
60 #define ldl(p) (*(const int32_t *) (p))
4aa1ff2acc74 * Fixed constraints
mellum
parents: 429
diff changeset
61 #define stl(l, p) do { *(uint32_t *) (p) = (l); } while (0)
4aa1ff2acc74 * Fixed constraints
mellum
parents: 429
diff changeset
62 #define stq(l, p) do { *(uint64_t *) (p) = (l); } while (0)
728
9cda14fe33d9 Some nifty stuff for upcoming patches.
mellum
parents: 665
diff changeset
63 #define sextw(x) ((int16_t) (x))
214
73df666cacc7 Alpha optimizations by Falk Hueffner <falk.hueffner@student.uni-tuebingen.de>
nickols_k
parents:
diff changeset
64
73df666cacc7 Alpha optimizations by Falk Hueffner <falk.hueffner@student.uni-tuebingen.de>
nickols_k
parents:
diff changeset
65 #ifdef __GNUC__
504
4aa1ff2acc74 * Fixed constraints
mellum
parents: 429
diff changeset
66 struct unaligned_long { uint64_t l; } __attribute__((packed));
4aa1ff2acc74 * Fixed constraints
mellum
parents: 429
diff changeset
67 #define ldq_u(p) (*(const uint64_t *) (((uint64_t) (p)) & ~7ul))
4aa1ff2acc74 * Fixed constraints
mellum
parents: 429
diff changeset
68 #define uldq(a) (((const struct unaligned_long *) (a))->l)
214
73df666cacc7 Alpha optimizations by Falk Hueffner <falk.hueffner@student.uni-tuebingen.de>
nickols_k
parents:
diff changeset
69
728
9cda14fe33d9 Some nifty stuff for upcoming patches.
mellum
parents: 665
diff changeset
70 #if GNUC_PREREQ(3,3)
1465
52254c2f9cae Use asms instead of builtins when compiling for generic Alpha. Less
mellum
parents: 1378
diff changeset
71 #define prefetch(p) __builtin_prefetch((p), 0, 1)
52254c2f9cae Use asms instead of builtins when compiling for generic Alpha. Less
mellum
parents: 1378
diff changeset
72 #define prefetch_en(p) __builtin_prefetch((p), 0, 0)
52254c2f9cae Use asms instead of builtins when compiling for generic Alpha. Less
mellum
parents: 1378
diff changeset
73 #define prefetch_m(p) __builtin_prefetch((p), 1, 1)
52254c2f9cae Use asms instead of builtins when compiling for generic Alpha. Less
mellum
parents: 1378
diff changeset
74 #define prefetch_men(p) __builtin_prefetch((p), 1, 0)
504
4aa1ff2acc74 * Fixed constraints
mellum
parents: 429
diff changeset
75 #define cmpbge __builtin_alpha_cmpbge
4aa1ff2acc74 * Fixed constraints
mellum
parents: 429
diff changeset
76 /* Avoid warnings. */
4aa1ff2acc74 * Fixed constraints
mellum
parents: 429
diff changeset
77 #define extql(a, b) __builtin_alpha_extql(a, (uint64_t) (b))
728
9cda14fe33d9 Some nifty stuff for upcoming patches.
mellum
parents: 665
diff changeset
78 #define extwl(a, b) __builtin_alpha_extwl(a, (uint64_t) (b))
504
4aa1ff2acc74 * Fixed constraints
mellum
parents: 429
diff changeset
79 #define extqh(a, b) __builtin_alpha_extqh(a, (uint64_t) (b))
4aa1ff2acc74 * Fixed constraints
mellum
parents: 429
diff changeset
80 #define zap __builtin_alpha_zap
4aa1ff2acc74 * Fixed constraints
mellum
parents: 429
diff changeset
81 #define zapnot __builtin_alpha_zapnot
4aa1ff2acc74 * Fixed constraints
mellum
parents: 429
diff changeset
82 #define amask __builtin_alpha_amask
4aa1ff2acc74 * Fixed constraints
mellum
parents: 429
diff changeset
83 #define implver __builtin_alpha_implver
4aa1ff2acc74 * Fixed constraints
mellum
parents: 429
diff changeset
84 #define rpcc __builtin_alpha_rpcc
1465
52254c2f9cae Use asms instead of builtins when compiling for generic Alpha. Less
mellum
parents: 1378
diff changeset
85 #else
52254c2f9cae Use asms instead of builtins when compiling for generic Alpha. Less
mellum
parents: 1378
diff changeset
86 #define prefetch(p) asm volatile("ldl $31,%0" : : "m"(*(const char *) (p)) : "memory")
52254c2f9cae Use asms instead of builtins when compiling for generic Alpha. Less
mellum
parents: 1378
diff changeset
87 #define prefetch_en(p) asm volatile("ldq $31,%0" : : "m"(*(const char *) (p)) : "memory")
52254c2f9cae Use asms instead of builtins when compiling for generic Alpha. Less
mellum
parents: 1378
diff changeset
88 #define prefetch_m(p) asm volatile("lds $f31,%0" : : "m"(*(const char *) (p)) : "memory")
52254c2f9cae Use asms instead of builtins when compiling for generic Alpha. Less
mellum
parents: 1378
diff changeset
89 #define prefetch_men(p) asm volatile("ldt $f31,%0" : : "m"(*(const char *) (p)) : "memory")
52254c2f9cae Use asms instead of builtins when compiling for generic Alpha. Less
mellum
parents: 1378
diff changeset
90 #define cmpbge(a, b) ({ uint64_t __r; asm ("cmpbge %r1,%2,%0" : "=r" (__r) : "rJ" (a), "rI" (b)); __r; })
52254c2f9cae Use asms instead of builtins when compiling for generic Alpha. Less
mellum
parents: 1378
diff changeset
91 #define extql(a, b) ({ uint64_t __r; asm ("extql %r1,%2,%0" : "=r" (__r) : "rJ" (a), "rI" (b)); __r; })
52254c2f9cae Use asms instead of builtins when compiling for generic Alpha. Less
mellum
parents: 1378
diff changeset
92 #define extwl(a, b) ({ uint64_t __r; asm ("extwl %r1,%2,%0" : "=r" (__r) : "rJ" (a), "rI" (b)); __r; })
52254c2f9cae Use asms instead of builtins when compiling for generic Alpha. Less
mellum
parents: 1378
diff changeset
93 #define extqh(a, b) ({ uint64_t __r; asm ("extqh %r1,%2,%0" : "=r" (__r) : "rJ" (a), "rI" (b)); __r; })
52254c2f9cae Use asms instead of builtins when compiling for generic Alpha. Less
mellum
parents: 1378
diff changeset
94 #define zap(a, b) ({ uint64_t __r; asm ("zap %r1,%2,%0" : "=r" (__r) : "rJ" (a), "rI" (b)); __r; })
52254c2f9cae Use asms instead of builtins when compiling for generic Alpha. Less
mellum
parents: 1378
diff changeset
95 #define zapnot(a, b) ({ uint64_t __r; asm ("zapnot %r1,%2,%0" : "=r" (__r) : "rJ" (a), "rI" (b)); __r; })
52254c2f9cae Use asms instead of builtins when compiling for generic Alpha. Less
mellum
parents: 1378
diff changeset
96 #define amask(a) ({ uint64_t __r; asm ("amask %1,%0" : "=r" (__r) : "rI" (a)); __r; })
52254c2f9cae Use asms instead of builtins when compiling for generic Alpha. Less
mellum
parents: 1378
diff changeset
97 #define implver() ({ uint64_t __r; asm ("implver %0" : "=r" (__r)); __r; })
52254c2f9cae Use asms instead of builtins when compiling for generic Alpha. Less
mellum
parents: 1378
diff changeset
98 #define rpcc() ({ uint64_t __r; asm volatile ("rpcc %0" : "=r" (__r)); __r; })
52254c2f9cae Use asms instead of builtins when compiling for generic Alpha. Less
mellum
parents: 1378
diff changeset
99 #endif
52254c2f9cae Use asms instead of builtins when compiling for generic Alpha. Less
mellum
parents: 1378
diff changeset
100 #define wh64(p) asm volatile("wh64 (%0)" : : "r"(p) : "memory")
52254c2f9cae Use asms instead of builtins when compiling for generic Alpha. Less
mellum
parents: 1378
diff changeset
101
52254c2f9cae Use asms instead of builtins when compiling for generic Alpha. Less
mellum
parents: 1378
diff changeset
102 #if GNUC_PREREQ(3,3) && defined(__alpha_max__)
504
4aa1ff2acc74 * Fixed constraints
mellum
parents: 429
diff changeset
103 #define minub8 __builtin_alpha_minub8
4aa1ff2acc74 * Fixed constraints
mellum
parents: 429
diff changeset
104 #define minsb8 __builtin_alpha_minsb8
4aa1ff2acc74 * Fixed constraints
mellum
parents: 429
diff changeset
105 #define minuw4 __builtin_alpha_minuw4
4aa1ff2acc74 * Fixed constraints
mellum
parents: 429
diff changeset
106 #define minsw4 __builtin_alpha_minsw4
4aa1ff2acc74 * Fixed constraints
mellum
parents: 429
diff changeset
107 #define maxub8 __builtin_alpha_maxub8
4aa1ff2acc74 * Fixed constraints
mellum
parents: 429
diff changeset
108 #define maxsb8 __builtin_alpha_maxsb8
4aa1ff2acc74 * Fixed constraints
mellum
parents: 429
diff changeset
109 #define maxuw4 __builtin_alpha_maxuw4
4aa1ff2acc74 * Fixed constraints
mellum
parents: 429
diff changeset
110 #define maxsw4 __builtin_alpha_maxsw4
4aa1ff2acc74 * Fixed constraints
mellum
parents: 429
diff changeset
111 #define perr __builtin_alpha_perr
4aa1ff2acc74 * Fixed constraints
mellum
parents: 429
diff changeset
112 #define pklb __builtin_alpha_pklb
4aa1ff2acc74 * Fixed constraints
mellum
parents: 429
diff changeset
113 #define pkwb __builtin_alpha_pkwb
4aa1ff2acc74 * Fixed constraints
mellum
parents: 429
diff changeset
114 #define unpkbl __builtin_alpha_unpkbl
4aa1ff2acc74 * Fixed constraints
mellum
parents: 429
diff changeset
115 #define unpkbw __builtin_alpha_unpkbw
4aa1ff2acc74 * Fixed constraints
mellum
parents: 429
diff changeset
116 #else
1465
52254c2f9cae Use asms instead of builtins when compiling for generic Alpha. Less
mellum
parents: 1378
diff changeset
117 #define minub8(a, b) ({ uint64_t __r; asm (".arch ev6; minub8 %r1,%2,%0" : "=r" (__r) : "%rJ" (a), "rI" (b)); __r; })
52254c2f9cae Use asms instead of builtins when compiling for generic Alpha. Less
mellum
parents: 1378
diff changeset
118 #define minsb8(a, b) ({ uint64_t __r; asm (".arch ev6; minsb8 %r1,%2,%0" : "=r" (__r) : "%rJ" (a), "rI" (b)); __r; })
52254c2f9cae Use asms instead of builtins when compiling for generic Alpha. Less
mellum
parents: 1378
diff changeset
119 #define minuw4(a, b) ({ uint64_t __r; asm (".arch ev6; minuw4 %r1,%2,%0" : "=r" (__r) : "%rJ" (a), "rI" (b)); __r; })
52254c2f9cae Use asms instead of builtins when compiling for generic Alpha. Less
mellum
parents: 1378
diff changeset
120 #define minsw4(a, b) ({ uint64_t __r; asm (".arch ev6; minsw4 %r1,%2,%0" : "=r" (__r) : "%rJ" (a), "rI" (b)); __r; })
52254c2f9cae Use asms instead of builtins when compiling for generic Alpha. Less
mellum
parents: 1378
diff changeset
121 #define maxub8(a, b) ({ uint64_t __r; asm (".arch ev6; maxub8 %r1,%2,%0" : "=r" (__r) : "%rJ" (a), "rI" (b)); __r; })
52254c2f9cae Use asms instead of builtins when compiling for generic Alpha. Less
mellum
parents: 1378
diff changeset
122 #define maxsb8(a, b) ({ uint64_t __r; asm (".arch ev6; maxsb8 %r1,%2,%0" : "=r" (__r) : "%rJ" (a), "rI" (b)); __r; })
52254c2f9cae Use asms instead of builtins when compiling for generic Alpha. Less
mellum
parents: 1378
diff changeset
123 #define maxuw4(a, b) ({ uint64_t __r; asm (".arch ev6; maxuw4 %r1,%2,%0" : "=r" (__r) : "%rJ" (a), "rI" (b)); __r; })
52254c2f9cae Use asms instead of builtins when compiling for generic Alpha. Less
mellum
parents: 1378
diff changeset
124 #define maxsw4(a, b) ({ uint64_t __r; asm (".arch ev6; maxsw4 %r1,%2,%0" : "=r" (__r) : "%rJ" (a), "rI" (b)); __r; })
52254c2f9cae Use asms instead of builtins when compiling for generic Alpha. Less
mellum
parents: 1378
diff changeset
125 #define perr(a, b) ({ uint64_t __r; asm (".arch ev6; perr %r1,%r2,%0" : "=r" (__r) : "%rJ" (a), "rJ" (b)); __r; })
52254c2f9cae Use asms instead of builtins when compiling for generic Alpha. Less
mellum
parents: 1378
diff changeset
126 #define pklb(a) ({ uint64_t __r; asm (".arch ev6; pklb %r1,%0" : "=r" (__r) : "rJ" (a)); __r; })
52254c2f9cae Use asms instead of builtins when compiling for generic Alpha. Less
mellum
parents: 1378
diff changeset
127 #define pkwb(a) ({ uint64_t __r; asm (".arch ev6; pkwb %r1,%0" : "=r" (__r) : "rJ" (a)); __r; })
52254c2f9cae Use asms instead of builtins when compiling for generic Alpha. Less
mellum
parents: 1378
diff changeset
128 #define unpkbl(a) ({ uint64_t __r; asm (".arch ev6; unpkbl %r1,%0" : "=r" (__r) : "rJ" (a)); __r; })
52254c2f9cae Use asms instead of builtins when compiling for generic Alpha. Less
mellum
parents: 1378
diff changeset
129 #define unpkbw(a) ({ uint64_t __r; asm (".arch ev6; unpkbw %r1,%0" : "=r" (__r) : "rJ" (a)); __r; })
504
4aa1ff2acc74 * Fixed constraints
mellum
parents: 429
diff changeset
130 #endif
214
73df666cacc7 Alpha optimizations by Falk Hueffner <falk.hueffner@student.uni-tuebingen.de>
nickols_k
parents:
diff changeset
131
728
9cda14fe33d9 Some nifty stuff for upcoming patches.
mellum
parents: 665
diff changeset
132 #elif defined(__DECC) /* Digital/Compaq/hp "ccc" compiler */
214
73df666cacc7 Alpha optimizations by Falk Hueffner <falk.hueffner@student.uni-tuebingen.de>
nickols_k
parents:
diff changeset
133
73df666cacc7 Alpha optimizations by Falk Hueffner <falk.hueffner@student.uni-tuebingen.de>
nickols_k
parents:
diff changeset
134 #include <c_asm.h>
504
4aa1ff2acc74 * Fixed constraints
mellum
parents: 429
diff changeset
135 #define ldq_u(a) asm ("ldq_u %v0,0(%a0)", a)
4aa1ff2acc74 * Fixed constraints
mellum
parents: 429
diff changeset
136 #define uldq(a) (*(const __unaligned uint64_t *) (a))
4aa1ff2acc74 * Fixed constraints
mellum
parents: 429
diff changeset
137 #define cmpbge(a, b) asm ("cmpbge %a0,%a1,%v0", a, b)
4aa1ff2acc74 * Fixed constraints
mellum
parents: 429
diff changeset
138 #define extql(a, b) asm ("extql %a0,%a1,%v0", a, b)
728
9cda14fe33d9 Some nifty stuff for upcoming patches.
mellum
parents: 665
diff changeset
139 #define extwl(a, b) asm ("extwl %a0,%a1,%v0", a, b)
504
4aa1ff2acc74 * Fixed constraints
mellum
parents: 429
diff changeset
140 #define extqh(a, b) asm ("extqh %a0,%a1,%v0", a, b)
4aa1ff2acc74 * Fixed constraints
mellum
parents: 429
diff changeset
141 #define zap(a, b) asm ("zap %a0,%a1,%v0", a, b)
4aa1ff2acc74 * Fixed constraints
mellum
parents: 429
diff changeset
142 #define zapnot(a, b) asm ("zapnot %a0,%a1,%v0", a, b)
4aa1ff2acc74 * Fixed constraints
mellum
parents: 429
diff changeset
143 #define amask(a) asm ("amask %a0,%v0", a)
4aa1ff2acc74 * Fixed constraints
mellum
parents: 429
diff changeset
144 #define implver() asm ("implver %v0")
4aa1ff2acc74 * Fixed constraints
mellum
parents: 429
diff changeset
145 #define rpcc() asm ("rpcc %v0")
4aa1ff2acc74 * Fixed constraints
mellum
parents: 429
diff changeset
146 #define minub8(a, b) asm ("minub8 %a0,%a1,%v0", a, b)
4aa1ff2acc74 * Fixed constraints
mellum
parents: 429
diff changeset
147 #define minsb8(a, b) asm ("minsb8 %a0,%a1,%v0", a, b)
4aa1ff2acc74 * Fixed constraints
mellum
parents: 429
diff changeset
148 #define minuw4(a, b) asm ("minuw4 %a0,%a1,%v0", a, b)
4aa1ff2acc74 * Fixed constraints
mellum
parents: 429
diff changeset
149 #define minsw4(a, b) asm ("minsw4 %a0,%a1,%v0", a, b)
4aa1ff2acc74 * Fixed constraints
mellum
parents: 429
diff changeset
150 #define maxub8(a, b) asm ("maxub8 %a0,%a1,%v0", a, b)
4aa1ff2acc74 * Fixed constraints
mellum
parents: 429
diff changeset
151 #define maxsb8(a, b) asm ("maxsb8 %a0,%a1,%v0", a, b)
4aa1ff2acc74 * Fixed constraints
mellum
parents: 429
diff changeset
152 #define maxuw4(a, b) asm ("maxuw4 %a0,%a1,%v0", a, b)
4aa1ff2acc74 * Fixed constraints
mellum
parents: 429
diff changeset
153 #define maxsw4(a, b) asm ("maxsw4 %a0,%a1,%v0", a, b)
4aa1ff2acc74 * Fixed constraints
mellum
parents: 429
diff changeset
154 #define perr(a, b) asm ("perr %a0,%a1,%v0", a, b)
4aa1ff2acc74 * Fixed constraints
mellum
parents: 429
diff changeset
155 #define pklb(a) asm ("pklb %a0,%v0", a)
4aa1ff2acc74 * Fixed constraints
mellum
parents: 429
diff changeset
156 #define pkwb(a) asm ("pkwb %a0,%v0", a)
4aa1ff2acc74 * Fixed constraints
mellum
parents: 429
diff changeset
157 #define unpkbl(a) asm ("unpkbl %a0,%v0", a)
4aa1ff2acc74 * Fixed constraints
mellum
parents: 429
diff changeset
158 #define unpkbw(a) asm ("unpkbw %a0,%v0", a)
1465
52254c2f9cae Use asms instead of builtins when compiling for generic Alpha. Less
mellum
parents: 1378
diff changeset
159 #define wh64(a) asm ("wh64 %a0", a)
214
73df666cacc7 Alpha optimizations by Falk Hueffner <falk.hueffner@student.uni-tuebingen.de>
nickols_k
parents:
diff changeset
160
504
4aa1ff2acc74 * Fixed constraints
mellum
parents: 429
diff changeset
161 #else
4aa1ff2acc74 * Fixed constraints
mellum
parents: 429
diff changeset
162 #error "Unknown compiler!"
214
73df666cacc7 Alpha optimizations by Falk Hueffner <falk.hueffner@student.uni-tuebingen.de>
nickols_k
parents:
diff changeset
163 #endif
73df666cacc7 Alpha optimizations by Falk Hueffner <falk.hueffner@student.uni-tuebingen.de>
nickols_k
parents:
diff changeset
164
73df666cacc7 Alpha optimizations by Falk Hueffner <falk.hueffner@student.uni-tuebingen.de>
nickols_k
parents:
diff changeset
165 #endif /* LIBAVCODEC_ALPHA_ASM_H */