Statistics
| Branch: | Revision:

ffmpeg / libavcodec / ps2 / mmi.h @ 5917d17c

History | View | Annotate | Download (4.03 KB)

1
#ifndef __mmi_H
2
#define __mmi_H
3

    
4
#define align16 __attribute__ ((aligned (16)))
5

    
6
/*
7
#define r0 $zero
8
#define r1 $at        //assembler!
9
#define r2 $v0        //return
10
#define r3 $v1        //return
11
#define r4 $a0        //arg
12
#define r5 $a1        //arg
13
#define r6 $a2        //arg
14
#define r7 $a3        //arg
15
#define r8 $t0        //temp
16
#define r9 $t1        //temp
17
#define r10 $t2        //temp
18
#define r11 $t3        //temp
19
#define r12 $t4        //temp
20
#define r13 $t5        //temp
21
#define r14 $t6        //temp
22
#define r15 $t7        //temp
23
#define r16 $s0        //saved temp
24
#define r17 $s1        //saved temp
25
#define r18 $s2        //saved temp
26
#define r19 $s3        //saved temp
27
#define r20 $s4        //saved temp
28
#define r21 $s5        //saved temp
29
#define r22 $s6        //saved temp
30
#define r23 $s7        //saved temp
31
#define r24 $t8        //temp
32
#define r25 $t9        //temp
33
#define r26 $k0        //kernel
34
#define r27 $k1        //kernel
35
#define r28 $gp        //global ptr
36
#define r29 $sp //stack ptr
37
#define r30 $fp //frame ptr
38
#define r31 $ra //return addr
39
*/
40

    
41

    
42
#define        lq(base, off, reg)        \
43
        __asm__ __volatile__ ("lq " #reg ", %0("#base ")" : : "i" (off) )
44

    
45
#define        lq2(mem, reg)        \
46
        __asm__ __volatile__ ("lq " #reg ", %0" : : "r" (mem))
47

    
48
#define        sq(reg, off, base)        \
49
        __asm__ __volatile__ ("sq " #reg ", %0("#base ")" : : "i" (off) )
50

    
51
/*
52
#define        ld(base, off, reg)        \
53
        __asm__ __volatile__ ("ld " #reg ", " #off "("#base ")")
54
*/
55

    
56
#define        ld3(base, off, reg)        \
57
        __asm__ __volatile__ (".word %0" : : "i" ( 0xdc000000 | (base<<21) | (reg<<16) | (off)))
58

    
59
#define        ldr3(base, off, reg)        \
60
        __asm__ __volatile__ (".word %0" : : "i" ( 0x6c000000 | (base<<21) | (reg<<16) | (off)))
61

    
62
#define        ldl3(base, off, reg)        \
63
        __asm__ __volatile__ (".word %0" : : "i" ( 0x68000000 | (base<<21) | (reg<<16) | (off)))
64

    
65
/*
66
#define        sd(reg, off, base)        \
67
        __asm__ __volatile__ ("sd " #reg ", " #off "("#base ")")
68
*/
69
//seems assembler has bug encoding mnemonic 'sd', so DIY
70
#define        sd3(reg, off, base)        \
71
        __asm__ __volatile__ (".word %0" : : "i" ( 0xfc000000 | (base<<21) | (reg<<16) | (off)))
72

    
73
#define        sw(reg, off, base)        \
74
        __asm__ __volatile__ ("sw " #reg ", " #off "("#base ")")
75

    
76
#define        sq2(reg, mem)        \
77
        __asm__ __volatile__ ("sq " #reg ", %0" : : "m" (*(mem)))
78

    
79
#define        pinth(rs, rt, rd) \
80
        __asm__ __volatile__ ("pinth  " #rd ", " #rs ", " #rt )
81

    
82
#define        phmadh(rs, rt, rd) \
83
        __asm__ __volatile__ ("phmadh " #rd ", " #rs ", " #rt )
84

    
85
#define        pcpyud(rs, rt, rd) \
86
        __asm__ __volatile__ ("pcpyud " #rd ", " #rs ", " #rt )
87

    
88
#define        pcpyld(rs, rt, rd) \
89
        __asm__ __volatile__ ("pcpyld " #rd ", " #rs ", " #rt )
90

    
91
#define        pcpyh(rt, rd) \
92
        __asm__ __volatile__ ("pcpyh  " #rd ", " #rt )
93

    
94
#define        paddw(rs, rt, rd) \
95
        __asm__ __volatile__ ("paddw  " #rd ", " #rs ", " #rt )
96

    
97
#define        pextlw(rs, rt, rd) \
98
        __asm__ __volatile__ ("pextlw " #rd ", " #rs ", " #rt )
99

    
100
#define        pextuw(rs, rt, rd) \
101
        __asm__ __volatile__ ("pextuw " #rd ", " #rs ", " #rt )
102

    
103
#define        pextlh(rs, rt, rd) \
104
        __asm__ __volatile__ ("pextlh " #rd ", " #rs ", " #rt )
105

    
106
#define        pextuh(rs, rt, rd) \
107
        __asm__ __volatile__ ("pextuh " #rd ", " #rs ", " #rt )
108

    
109
#define        psubw(rs, rt, rd) \
110
        __asm__ __volatile__ ("psubw  " #rd ", " #rs ", " #rt )
111

    
112
#define        psraw(rt, sa, rd) \
113
        __asm__ __volatile__ ("psraw  " #rd ", " #rt ", %0" : : "i"(sa) )
114

    
115
#define        ppach(rs, rt, rd) \
116
        __asm__ __volatile__ ("ppach  " #rd ", " #rs ", " #rt )
117

    
118
#define        ppacb(rs, rt, rd) \
119
        __asm__ __volatile__ ("ppacb  " #rd ", " #rs ", " #rt )
120

    
121
#define        prevh(rt, rd) \
122
        __asm__ __volatile__ ("prevh  " #rd ", " #rt )
123

    
124
#define        pmulth(rs, rt, rd) \
125
        __asm__ __volatile__ ("pmulth " #rd ", " #rs ", " #rt )
126

    
127
#define        pmaxh(rs, rt, rd) \
128
        __asm__ __volatile__ ("pmaxh " #rd ", " #rs ", " #rt )
129

    
130
#define        pminh(rs, rt, rd) \
131
        __asm__ __volatile__ ("pminh " #rd ", " #rs ", " #rt )
132

    
133
#define        pinteh(rs, rt, rd) \
134
        __asm__ __volatile__ ("pinteh  " #rd ", " #rs ", " #rt )
135

    
136
#define        paddh(rs, rt, rd) \
137
        __asm__ __volatile__ ("paddh  " #rd ", " #rs ", " #rt )
138

    
139
#define        psubh(rs, rt, rd) \
140
        __asm__ __volatile__ ("psubh  " #rd ", " #rs ", " #rt )
141

    
142
#define        psrah(rt, sa, rd) \
143
        __asm__ __volatile__ ("psrah  " #rd ", " #rt ", %0" : : "i"(sa) )
144

    
145
#define        pmfhl_uw(rd) \
146
        __asm__ __volatile__ ("pmfhl.uw  " #rd)
147

    
148
#define        pextlb(rs, rt, rd) \
149
        __asm__ __volatile__ ("pextlb  " #rd ", " #rs ", " #rt )
150

    
151
#endif
152