Mercurial > libavcodec.hg
comparison sparc/vis.h @ 8031:eebc7209c47f libavcodec
Convert asm keyword into __asm__.
Neither the asm() nor the __asm__() keyword is part of the C99
standard, but while GCC accepts the former in C89 syntax, it is not
accepted in C99 unless GNU extensions are turned on (with -fasm). The
latter form is accepted in any syntax as an extension (without
requiring further command-line options).
Sun Studio C99 compiler also does not accept asm() while accepting
__asm__(), albeit reporting warnings that it's not valid C99 syntax.
| author | flameeyes |
|---|---|
| date | Thu, 16 Oct 2008 13:34:09 +0000 |
| parents | c4a4495715dd |
| children | f9c847fb4839 |
comparison
equal
deleted
inserted
replaced
| 8030:a512ac8fa540 | 8031:eebc7209c47f |
|---|---|
| 53 #define vis_rs2_d(X) (vis_dreg(X) << 0) | 53 #define vis_rs2_d(X) (vis_dreg(X) << 0) |
| 54 #define vis_rd_s(X) (vis_sreg(X) << 25) | 54 #define vis_rd_s(X) (vis_sreg(X) << 25) |
| 55 #define vis_rd_d(X) (vis_dreg(X) << 25) | 55 #define vis_rd_d(X) (vis_dreg(X) << 25) |
| 56 | 56 |
| 57 #define vis_ss2s(opf,rs1,rs2,rd) \ | 57 #define vis_ss2s(opf,rs1,rs2,rd) \ |
| 58 asm volatile (".word %0" \ | 58 __asm__ volatile (".word %0" \ |
| 59 : : "i" (vis_opc_base | vis_opf(opf) | \ | 59 : : "i" (vis_opc_base | vis_opf(opf) | \ |
| 60 vis_rs1_s(rs1) | \ | 60 vis_rs1_s(rs1) | \ |
| 61 vis_rs2_s(rs2) | \ | 61 vis_rs2_s(rs2) | \ |
| 62 vis_rd_s(rd))) | 62 vis_rd_s(rd))) |
| 63 | 63 |
| 64 #define vis_dd2d(opf,rs1,rs2,rd) \ | 64 #define vis_dd2d(opf,rs1,rs2,rd) \ |
| 65 asm volatile (".word %0" \ | 65 __asm__ volatile (".word %0" \ |
| 66 : : "i" (vis_opc_base | vis_opf(opf) | \ | 66 : : "i" (vis_opc_base | vis_opf(opf) | \ |
| 67 vis_rs1_d(rs1) | \ | 67 vis_rs1_d(rs1) | \ |
| 68 vis_rs2_d(rs2) | \ | 68 vis_rs2_d(rs2) | \ |
| 69 vis_rd_d(rd))) | 69 vis_rd_d(rd))) |
| 70 | 70 |
| 71 #define vis_ss2d(opf,rs1,rs2,rd) \ | 71 #define vis_ss2d(opf,rs1,rs2,rd) \ |
| 72 asm volatile (".word %0" \ | 72 __asm__ volatile (".word %0" \ |
| 73 : : "i" (vis_opc_base | vis_opf(opf) | \ | 73 : : "i" (vis_opc_base | vis_opf(opf) | \ |
| 74 vis_rs1_s(rs1) | \ | 74 vis_rs1_s(rs1) | \ |
| 75 vis_rs2_s(rs2) | \ | 75 vis_rs2_s(rs2) | \ |
| 76 vis_rd_d(rd))) | 76 vis_rd_d(rd))) |
| 77 | 77 |
| 78 #define vis_sd2d(opf,rs1,rs2,rd) \ | 78 #define vis_sd2d(opf,rs1,rs2,rd) \ |
| 79 asm volatile (".word %0" \ | 79 __asm__ volatile (".word %0" \ |
| 80 : : "i" (vis_opc_base | vis_opf(opf) | \ | 80 : : "i" (vis_opc_base | vis_opf(opf) | \ |
| 81 vis_rs1_s(rs1) | \ | 81 vis_rs1_s(rs1) | \ |
| 82 vis_rs2_d(rs2) | \ | 82 vis_rs2_d(rs2) | \ |
| 83 vis_rd_d(rd))) | 83 vis_rd_d(rd))) |
| 84 | 84 |
| 85 #define vis_d2s(opf,rs2,rd) \ | 85 #define vis_d2s(opf,rs2,rd) \ |
| 86 asm volatile (".word %0" \ | 86 __asm__ volatile (".word %0" \ |
| 87 : : "i" (vis_opc_base | vis_opf(opf) | \ | 87 : : "i" (vis_opc_base | vis_opf(opf) | \ |
| 88 vis_rs2_d(rs2) | \ | 88 vis_rs2_d(rs2) | \ |
| 89 vis_rd_s(rd))) | 89 vis_rd_s(rd))) |
| 90 | 90 |
| 91 #define vis_s2d(opf,rs2,rd) \ | 91 #define vis_s2d(opf,rs2,rd) \ |
| 92 asm volatile (".word %0" \ | 92 __asm__ volatile (".word %0" \ |
| 93 : : "i" (vis_opc_base | vis_opf(opf) | \ | 93 : : "i" (vis_opc_base | vis_opf(opf) | \ |
| 94 vis_rs2_s(rs2) | \ | 94 vis_rs2_s(rs2) | \ |
| 95 vis_rd_d(rd))) | 95 vis_rd_d(rd))) |
| 96 | 96 |
| 97 #define vis_d12d(opf,rs1,rd) \ | 97 #define vis_d12d(opf,rs1,rd) \ |
| 98 asm volatile (".word %0" \ | 98 __asm__ volatile (".word %0" \ |
| 99 : : "i" (vis_opc_base | vis_opf(opf) | \ | 99 : : "i" (vis_opc_base | vis_opf(opf) | \ |
| 100 vis_rs1_d(rs1) | \ | 100 vis_rs1_d(rs1) | \ |
| 101 vis_rd_d(rd))) | 101 vis_rd_d(rd))) |
| 102 | 102 |
| 103 #define vis_d22d(opf,rs2,rd) \ | 103 #define vis_d22d(opf,rs2,rd) \ |
| 104 asm volatile (".word %0" \ | 104 __asm__ volatile (".word %0" \ |
| 105 : : "i" (vis_opc_base | vis_opf(opf) | \ | 105 : : "i" (vis_opc_base | vis_opf(opf) | \ |
| 106 vis_rs2_d(rs2) | \ | 106 vis_rs2_d(rs2) | \ |
| 107 vis_rd_d(rd))) | 107 vis_rd_d(rd))) |
| 108 | 108 |
| 109 #define vis_s12s(opf,rs1,rd) \ | 109 #define vis_s12s(opf,rs1,rd) \ |
| 110 asm volatile (".word %0" \ | 110 __asm__ volatile (".word %0" \ |
| 111 : : "i" (vis_opc_base | vis_opf(opf) | \ | 111 : : "i" (vis_opc_base | vis_opf(opf) | \ |
| 112 vis_rs1_s(rs1) | \ | 112 vis_rs1_s(rs1) | \ |
| 113 vis_rd_s(rd))) | 113 vis_rd_s(rd))) |
| 114 | 114 |
| 115 #define vis_s22s(opf,rs2,rd) \ | 115 #define vis_s22s(opf,rs2,rd) \ |
| 116 asm volatile (".word %0" \ | 116 __asm__ volatile (".word %0" \ |
| 117 : : "i" (vis_opc_base | vis_opf(opf) | \ | 117 : : "i" (vis_opc_base | vis_opf(opf) | \ |
| 118 vis_rs2_s(rs2) | \ | 118 vis_rs2_s(rs2) | \ |
| 119 vis_rd_s(rd))) | 119 vis_rd_s(rd))) |
| 120 | 120 |
| 121 #define vis_s(opf,rd) \ | 121 #define vis_s(opf,rd) \ |
| 122 asm volatile (".word %0" \ | 122 __asm__ volatile (".word %0" \ |
| 123 : : "i" (vis_opc_base | vis_opf(opf) | \ | 123 : : "i" (vis_opc_base | vis_opf(opf) | \ |
| 124 vis_rd_s(rd))) | 124 vis_rd_s(rd))) |
| 125 | 125 |
| 126 #define vis_d(opf,rd) \ | 126 #define vis_d(opf,rd) \ |
| 127 asm volatile (".word %0" \ | 127 __asm__ volatile (".word %0" \ |
| 128 : : "i" (vis_opc_base | vis_opf(opf) | \ | 128 : : "i" (vis_opc_base | vis_opf(opf) | \ |
| 129 vis_rd_d(rd))) | 129 vis_rd_d(rd))) |
| 130 | 130 |
| 131 #define vis_r2m(op,rd,mem) \ | 131 #define vis_r2m(op,rd,mem) \ |
| 132 asm volatile (#op "\t%%f" #rd ", [%0]" : : "r" (&(mem)) ) | 132 __asm__ volatile (#op "\t%%f" #rd ", [%0]" : : "r" (&(mem)) ) |
| 133 | 133 |
| 134 #define vis_r2m_2(op,rd,mem1,mem2) \ | 134 #define vis_r2m_2(op,rd,mem1,mem2) \ |
| 135 asm volatile (#op "\t%%f" #rd ", [%0 + %1]" : : "r" (mem1), "r" (mem2) ) | 135 __asm__ volatile (#op "\t%%f" #rd ", [%0 + %1]" : : "r" (mem1), "r" (mem2) ) |
| 136 | 136 |
| 137 #define vis_m2r(op,mem,rd) \ | 137 #define vis_m2r(op,mem,rd) \ |
| 138 asm volatile (#op "\t[%0], %%f" #rd : : "r" (&(mem)) ) | 138 __asm__ volatile (#op "\t[%0], %%f" #rd : : "r" (&(mem)) ) |
| 139 | 139 |
| 140 #define vis_m2r_2(op,mem1,mem2,rd) \ | 140 #define vis_m2r_2(op,mem1,mem2,rd) \ |
| 141 asm volatile (#op "\t[%0 + %1], %%f" #rd : : "r" (mem1), "r" (mem2) ) | 141 __asm__ volatile (#op "\t[%0 + %1], %%f" #rd : : "r" (mem1), "r" (mem2) ) |
| 142 | 142 |
| 143 static inline void vis_set_gsr(unsigned int _val) | 143 static inline void vis_set_gsr(unsigned int _val) |
| 144 { | 144 { |
| 145 register unsigned int val asm("g1"); | 145 register unsigned int val __asm__("g1"); |
| 146 | 146 |
| 147 val = _val; | 147 val = _val; |
| 148 asm volatile(".word 0xa7804000" | 148 __asm__ volatile(".word 0xa7804000" |
| 149 : : "r" (val)); | 149 : : "r" (val)); |
| 150 } | 150 } |
| 151 | 151 |
| 152 #define VIS_GSR_ALIGNADDR_MASK 0x0000007 | 152 #define VIS_GSR_ALIGNADDR_MASK 0x0000007 |
| 153 #define VIS_GSR_ALIGNADDR_SHIFT 0 | 153 #define VIS_GSR_ALIGNADDR_SHIFT 0 |
| 162 #define vis_ld64_2(mem1,mem2,rs1) vis_m2r_2(ldd, mem1, mem2, rs1) | 162 #define vis_ld64_2(mem1,mem2,rs1) vis_m2r_2(ldd, mem1, mem2, rs1) |
| 163 #define vis_st64(rs1,mem) vis_r2m(std, rs1, mem) | 163 #define vis_st64(rs1,mem) vis_r2m(std, rs1, mem) |
| 164 #define vis_st64_2(rs1,mem1,mem2) vis_r2m_2(std, rs1, mem1, mem2) | 164 #define vis_st64_2(rs1,mem1,mem2) vis_r2m_2(std, rs1, mem1, mem2) |
| 165 | 165 |
| 166 #define vis_ldblk(mem, rd) \ | 166 #define vis_ldblk(mem, rd) \ |
| 167 do { register void *__mem asm("g1"); \ | 167 do { register void *__mem __asm__("g1"); \ |
| 168 __mem = &(mem); \ | 168 __mem = &(mem); \ |
| 169 asm volatile(".word 0xc1985e00 | %1" \ | 169 __asm__ volatile(".word 0xc1985e00 | %1" \ |
| 170 : \ | 170 : \ |
| 171 : "r" (__mem), \ | 171 : "r" (__mem), \ |
| 172 "i" (vis_rd_d(rd)) \ | 172 "i" (vis_rd_d(rd)) \ |
| 173 : "memory"); \ | 173 : "memory"); \ |
| 174 } while (0) | 174 } while (0) |
| 175 | 175 |
| 176 #define vis_stblk(rd, mem) \ | 176 #define vis_stblk(rd, mem) \ |
| 177 do { register void *__mem asm("g1"); \ | 177 do { register void *__mem __asm__("g1"); \ |
| 178 __mem = &(mem); \ | 178 __mem = &(mem); \ |
| 179 asm volatile(".word 0xc1b85e00 | %1" \ | 179 __asm__ volatile(".word 0xc1b85e00 | %1" \ |
| 180 : \ | 180 : \ |
| 181 : "r" (__mem), \ | 181 : "r" (__mem), \ |
| 182 "i" (vis_rd_d(rd)) \ | 182 "i" (vis_rd_d(rd)) \ |
| 183 : "memory"); \ | 183 : "memory"); \ |
| 184 } while (0) | 184 } while (0) |
| 185 | 185 |
| 186 #define vis_membar_storestore() \ | 186 #define vis_membar_storestore() \ |
| 187 asm volatile(".word 0x8143e008" : : : "memory") | 187 __asm__ volatile(".word 0x8143e008" : : : "memory") |
| 188 | 188 |
| 189 #define vis_membar_sync() \ | 189 #define vis_membar_sync() \ |
| 190 asm volatile(".word 0x8143e040" : : : "memory") | 190 __asm__ volatile(".word 0x8143e040" : : : "memory") |
| 191 | 191 |
| 192 /* 16 and 32 bit partitioned addition and subtraction. The normal | 192 /* 16 and 32 bit partitioned addition and subtraction. The normal |
| 193 * versions perform 4 16-bit or 2 32-bit additions or subtractions. | 193 * versions perform 4 16-bit or 2 32-bit additions or subtractions. |
| 194 * The 's' versions perform 2 16-bit or 1 32-bit additions or | 194 * The 's' versions perform 2 16-bit or 1 32-bit additions or |
| 195 * subtractions. | 195 * subtractions. |
| 224 | 224 |
| 225 /* Alignment instructions. */ | 225 /* Alignment instructions. */ |
| 226 | 226 |
| 227 static inline void *vis_alignaddr(void *_ptr) | 227 static inline void *vis_alignaddr(void *_ptr) |
| 228 { | 228 { |
| 229 register void *ptr asm("g1"); | 229 register void *ptr __asm__("g1"); |
| 230 | 230 |
| 231 ptr = _ptr; | 231 ptr = _ptr; |
| 232 | 232 |
| 233 asm volatile(".word %2" | 233 __asm__ volatile(".word %2" |
| 234 : "=&r" (ptr) | 234 : "=&r" (ptr) |
| 235 : "0" (ptr), | 235 : "0" (ptr), |
| 236 "i" (vis_opc_base | vis_opf(0x18) | | 236 "i" (vis_opc_base | vis_opf(0x18) | |
| 237 vis_rs1_s(1) | | 237 vis_rs1_s(1) | |
| 238 vis_rs2_s(0) | | 238 vis_rs2_s(0) | |
| 241 return ptr; | 241 return ptr; |
| 242 } | 242 } |
| 243 | 243 |
| 244 static inline void vis_alignaddr_g0(void *_ptr) | 244 static inline void vis_alignaddr_g0(void *_ptr) |
| 245 { | 245 { |
| 246 register void *ptr asm("g1"); | 246 register void *ptr __asm__("g1"); |
| 247 | 247 |
| 248 ptr = _ptr; | 248 ptr = _ptr; |
| 249 | 249 |
| 250 asm volatile(".word %2" | 250 __asm__ volatile(".word %2" |
| 251 : "=&r" (ptr) | 251 : "=&r" (ptr) |
| 252 : "0" (ptr), | 252 : "0" (ptr), |
| 253 "i" (vis_opc_base | vis_opf(0x18) | | 253 "i" (vis_opc_base | vis_opf(0x18) | |
| 254 vis_rs1_s(1) | | 254 vis_rs1_s(1) | |
| 255 vis_rs2_s(0) | | 255 vis_rs2_s(0) | |
| 256 vis_rd_s(0))); | 256 vis_rd_s(0))); |
| 257 } | 257 } |
| 258 | 258 |
| 259 static inline void *vis_alignaddrl(void *_ptr) | 259 static inline void *vis_alignaddrl(void *_ptr) |
| 260 { | 260 { |
| 261 register void *ptr asm("g1"); | 261 register void *ptr __asm__("g1"); |
| 262 | 262 |
| 263 ptr = _ptr; | 263 ptr = _ptr; |
| 264 | 264 |
| 265 asm volatile(".word %2" | 265 __asm__ volatile(".word %2" |
| 266 : "=&r" (ptr) | 266 : "=&r" (ptr) |
| 267 : "0" (ptr), | 267 : "0" (ptr), |
| 268 "i" (vis_opc_base | vis_opf(0x19) | | 268 "i" (vis_opc_base | vis_opf(0x19) | |
| 269 vis_rs1_s(1) | | 269 vis_rs1_s(1) | |
| 270 vis_rs2_s(0) | | 270 vis_rs2_s(0) | |
| 273 return ptr; | 273 return ptr; |
| 274 } | 274 } |
| 275 | 275 |
| 276 static inline void vis_alignaddrl_g0(void *_ptr) | 276 static inline void vis_alignaddrl_g0(void *_ptr) |
| 277 { | 277 { |
| 278 register void *ptr asm("g1"); | 278 register void *ptr __asm__("g1"); |
| 279 | 279 |
| 280 ptr = _ptr; | 280 ptr = _ptr; |
| 281 | 281 |
| 282 asm volatile(".word %2" | 282 __asm__ volatile(".word %2" |
| 283 : "=&r" (ptr) | 283 : "=&r" (ptr) |
| 284 : "0" (ptr), | 284 : "0" (ptr), |
| 285 "i" (vis_opc_base | vis_opf(0x19) | | 285 "i" (vis_opc_base | vis_opf(0x19) | |
| 286 vis_rs1_s(1) | | 286 vis_rs1_s(1) | |
| 287 vis_rs2_s(0) | | 287 vis_rs2_s(0) | |
