annotate ffmpeg/libswresample/x86/audio_convert.asm @ 13:844d341cf643 tip

Back up before ISMIR
author Yading Song <yading.song@eecs.qmul.ac.uk>
date Thu, 31 Oct 2013 13:17:06 +0000
parents f445c3017523
children
rev   line source
yading@11 1 ;******************************************************************************
yading@11 2 ;* Copyright (c) 2012 Michael Niedermayer
yading@11 3 ;*
yading@11 4 ;* This file is part of FFmpeg.
yading@11 5 ;*
yading@11 6 ;* FFmpeg is free software; you can redistribute it and/or
yading@11 7 ;* modify it under the terms of the GNU Lesser General Public
yading@11 8 ;* License as published by the Free Software Foundation; either
yading@11 9 ;* version 2.1 of the License, or (at your option) any later version.
yading@11 10 ;*
yading@11 11 ;* FFmpeg is distributed in the hope that it will be useful,
yading@11 12 ;* but WITHOUT ANY WARRANTY; without even the implied warranty of
yading@11 13 ;* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
yading@11 14 ;* Lesser General Public License for more details.
yading@11 15 ;*
yading@11 16 ;* You should have received a copy of the GNU Lesser General Public
yading@11 17 ;* License along with FFmpeg; if not, write to the Free Software
yading@11 18 ;* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
yading@11 19 ;******************************************************************************
yading@11 20
yading@11 21 %include "libavutil/x86/x86util.asm"
yading@11 22
yading@11 23 SECTION_RODATA
yading@11 24 align 32
yading@11 25 flt2pm31: times 8 dd 4.6566129e-10
yading@11 26 flt2p31 : times 8 dd 2147483648.0
yading@11 27 flt2p15 : times 8 dd 32768.0
yading@11 28
yading@11 29 word_unpack_shuf : db 0, 1, 4, 5, 8, 9,12,13, 2, 3, 6, 7,10,11,14,15
yading@11 30
yading@11 31 SECTION .text
yading@11 32
yading@11 33
yading@11 34 ;to, from, a/u, log2_outsize, log_intsize, const
yading@11 35 %macro PACK_2CH 5-7
yading@11 36 cglobal pack_2ch_%2_to_%1_%3, 3, 4, 6, dst, src, len, src2
yading@11 37 mov src2q , [srcq+gprsize]
yading@11 38 mov srcq , [srcq]
yading@11 39 mov dstq , [dstq]
yading@11 40 %ifidn %3, a
yading@11 41 test dstq, mmsize-1
yading@11 42 jne pack_2ch_%2_to_%1_u_int %+ SUFFIX
yading@11 43 test srcq, mmsize-1
yading@11 44 jne pack_2ch_%2_to_%1_u_int %+ SUFFIX
yading@11 45 test src2q, mmsize-1
yading@11 46 jne pack_2ch_%2_to_%1_u_int %+ SUFFIX
yading@11 47 %else
yading@11 48 pack_2ch_%2_to_%1_u_int %+ SUFFIX
yading@11 49 %endif
yading@11 50 lea srcq , [srcq + (1<<%5)*lenq]
yading@11 51 lea src2q, [src2q + (1<<%5)*lenq]
yading@11 52 lea dstq , [dstq + (2<<%4)*lenq]
yading@11 53 neg lenq
yading@11 54 %7 m0,m1,m2,m3,m4,m5
yading@11 55 .next:
yading@11 56 %if %4 >= %5
yading@11 57 mov%3 m0, [ srcq +(1<<%5)*lenq]
yading@11 58 mova m1, m0
yading@11 59 mov%3 m2, [ src2q+(1<<%5)*lenq]
yading@11 60 %if %5 == 1
yading@11 61 punpcklwd m0, m2
yading@11 62 punpckhwd m1, m2
yading@11 63 %else
yading@11 64 punpckldq m0, m2
yading@11 65 punpckhdq m1, m2
yading@11 66 %endif
yading@11 67 %6 m0,m1,m2,m3,m4,m5
yading@11 68 %else
yading@11 69 mov%3 m0, [ srcq +(1<<%5)*lenq]
yading@11 70 mov%3 m1, [mmsize + srcq +(1<<%5)*lenq]
yading@11 71 mov%3 m2, [ src2q+(1<<%5)*lenq]
yading@11 72 mov%3 m3, [mmsize + src2q+(1<<%5)*lenq]
yading@11 73 %6 m0,m1,m2,m3,m4,m5
yading@11 74 mova m2, m0
yading@11 75 punpcklwd m0, m1
yading@11 76 punpckhwd m2, m1
yading@11 77 SWAP 1,2
yading@11 78 %endif
yading@11 79 mov%3 [ dstq+(2<<%4)*lenq], m0
yading@11 80 mov%3 [ mmsize + dstq+(2<<%4)*lenq], m1
yading@11 81 %if %4 > %5
yading@11 82 mov%3 [2*mmsize + dstq+(2<<%4)*lenq], m2
yading@11 83 mov%3 [3*mmsize + dstq+(2<<%4)*lenq], m3
yading@11 84 add lenq, 4*mmsize/(2<<%4)
yading@11 85 %else
yading@11 86 add lenq, 2*mmsize/(2<<%4)
yading@11 87 %endif
yading@11 88 jl .next
yading@11 89 REP_RET
yading@11 90 %endmacro
yading@11 91
yading@11 92 %macro UNPACK_2CH 5-7
yading@11 93 cglobal unpack_2ch_%2_to_%1_%3, 3, 4, 7, dst, src, len, dst2
yading@11 94 mov dst2q , [dstq+gprsize]
yading@11 95 mov srcq , [srcq]
yading@11 96 mov dstq , [dstq]
yading@11 97 %ifidn %3, a
yading@11 98 test dstq, mmsize-1
yading@11 99 jne unpack_2ch_%2_to_%1_u_int %+ SUFFIX
yading@11 100 test srcq, mmsize-1
yading@11 101 jne unpack_2ch_%2_to_%1_u_int %+ SUFFIX
yading@11 102 test dst2q, mmsize-1
yading@11 103 jne unpack_2ch_%2_to_%1_u_int %+ SUFFIX
yading@11 104 %else
yading@11 105 unpack_2ch_%2_to_%1_u_int %+ SUFFIX
yading@11 106 %endif
yading@11 107 lea srcq , [srcq + (2<<%5)*lenq]
yading@11 108 lea dstq , [dstq + (1<<%4)*lenq]
yading@11 109 lea dst2q, [dst2q + (1<<%4)*lenq]
yading@11 110 neg lenq
yading@11 111 %7 m0,m1,m2,m3,m4,m5
yading@11 112 mova m6, [word_unpack_shuf]
yading@11 113 .next:
yading@11 114 mov%3 m0, [ srcq +(2<<%5)*lenq]
yading@11 115 mov%3 m2, [ mmsize + srcq +(2<<%5)*lenq]
yading@11 116 %if %5 == 1
yading@11 117 %ifidn SUFFIX, _ssse3
yading@11 118 pshufb m0, m6
yading@11 119 mova m1, m0
yading@11 120 pshufb m2, m6
yading@11 121 punpcklqdq m0,m2
yading@11 122 punpckhqdq m1,m2
yading@11 123 %else
yading@11 124 mova m1, m0
yading@11 125 punpcklwd m0,m2
yading@11 126 punpckhwd m1,m2
yading@11 127
yading@11 128 mova m2, m0
yading@11 129 punpcklwd m0,m1
yading@11 130 punpckhwd m2,m1
yading@11 131
yading@11 132 mova m1, m0
yading@11 133 punpcklwd m0,m2
yading@11 134 punpckhwd m1,m2
yading@11 135 %endif
yading@11 136 %else
yading@11 137 mova m1, m0
yading@11 138 shufps m0, m2, 10001000b
yading@11 139 shufps m1, m2, 11011101b
yading@11 140 %endif
yading@11 141 %if %4 < %5
yading@11 142 mov%3 m2, [2*mmsize + srcq +(2<<%5)*lenq]
yading@11 143 mova m3, m2
yading@11 144 mov%3 m4, [3*mmsize + srcq +(2<<%5)*lenq]
yading@11 145 shufps m2, m4, 10001000b
yading@11 146 shufps m3, m4, 11011101b
yading@11 147 SWAP 1,2
yading@11 148 %endif
yading@11 149 %6 m0,m1,m2,m3,m4,m5
yading@11 150 mov%3 [ dstq+(1<<%4)*lenq], m0
yading@11 151 %if %4 > %5
yading@11 152 mov%3 [ dst2q+(1<<%4)*lenq], m2
yading@11 153 mov%3 [ mmsize + dstq+(1<<%4)*lenq], m1
yading@11 154 mov%3 [ mmsize + dst2q+(1<<%4)*lenq], m3
yading@11 155 add lenq, 2*mmsize/(1<<%4)
yading@11 156 %else
yading@11 157 mov%3 [ dst2q+(1<<%4)*lenq], m1
yading@11 158 add lenq, mmsize/(1<<%4)
yading@11 159 %endif
yading@11 160 jl .next
yading@11 161 REP_RET
yading@11 162 %endmacro
yading@11 163
yading@11 164 %macro CONV 5-7
yading@11 165 cglobal %2_to_%1_%3, 3, 3, 6, dst, src, len
yading@11 166 mov srcq , [srcq]
yading@11 167 mov dstq , [dstq]
yading@11 168 %ifidn %3, a
yading@11 169 test dstq, mmsize-1
yading@11 170 jne %2_to_%1_u_int %+ SUFFIX
yading@11 171 test srcq, mmsize-1
yading@11 172 jne %2_to_%1_u_int %+ SUFFIX
yading@11 173 %else
yading@11 174 %2_to_%1_u_int %+ SUFFIX
yading@11 175 %endif
yading@11 176 lea srcq , [srcq + (1<<%5)*lenq]
yading@11 177 lea dstq , [dstq + (1<<%4)*lenq]
yading@11 178 neg lenq
yading@11 179 %7 m0,m1,m2,m3,m4,m5
yading@11 180 .next:
yading@11 181 mov%3 m0, [ srcq +(1<<%5)*lenq]
yading@11 182 mov%3 m1, [ mmsize + srcq +(1<<%5)*lenq]
yading@11 183 %if %4 < %5
yading@11 184 mov%3 m2, [2*mmsize + srcq +(1<<%5)*lenq]
yading@11 185 mov%3 m3, [3*mmsize + srcq +(1<<%5)*lenq]
yading@11 186 %endif
yading@11 187 %6 m0,m1,m2,m3,m4,m5
yading@11 188 mov%3 [ dstq+(1<<%4)*lenq], m0
yading@11 189 mov%3 [ mmsize + dstq+(1<<%4)*lenq], m1
yading@11 190 %if %4 > %5
yading@11 191 mov%3 [2*mmsize + dstq+(1<<%4)*lenq], m2
yading@11 192 mov%3 [3*mmsize + dstq+(1<<%4)*lenq], m3
yading@11 193 add lenq, 4*mmsize/(1<<%4)
yading@11 194 %else
yading@11 195 add lenq, 2*mmsize/(1<<%4)
yading@11 196 %endif
yading@11 197 jl .next
yading@11 198 REP_RET
yading@11 199 %endmacro
yading@11 200
yading@11 201 %macro PACK_6CH 5-7
yading@11 202 cglobal pack_6ch_%2_to_%1_%3, 2,8,7, dst, src, src1, src2, src3, src4, src5, len
yading@11 203 %if ARCH_X86_64
yading@11 204 mov lend, r2d
yading@11 205 %else
yading@11 206 %define lend dword r2m
yading@11 207 %endif
yading@11 208 mov src1q, [srcq+1*gprsize]
yading@11 209 mov src2q, [srcq+2*gprsize]
yading@11 210 mov src3q, [srcq+3*gprsize]
yading@11 211 mov src4q, [srcq+4*gprsize]
yading@11 212 mov src5q, [srcq+5*gprsize]
yading@11 213 mov srcq, [srcq]
yading@11 214 mov dstq, [dstq]
yading@11 215 %ifidn %3, a
yading@11 216 test dstq, mmsize-1
yading@11 217 jne pack_6ch_%2_to_%1_u_int %+ SUFFIX
yading@11 218 test srcq, mmsize-1
yading@11 219 jne pack_6ch_%2_to_%1_u_int %+ SUFFIX
yading@11 220 test src2q, mmsize-1
yading@11 221 jne pack_6ch_%2_to_%1_u_int %+ SUFFIX
yading@11 222 test src3q, mmsize-1
yading@11 223 jne pack_6ch_%2_to_%1_u_int %+ SUFFIX
yading@11 224 test src4q, mmsize-1
yading@11 225 jne pack_6ch_%2_to_%1_u_int %+ SUFFIX
yading@11 226 test src5q, mmsize-1
yading@11 227 jne pack_6ch_%2_to_%1_u_int %+ SUFFIX
yading@11 228 %else
yading@11 229 pack_6ch_%2_to_%1_u_int %+ SUFFIX
yading@11 230 %endif
yading@11 231 sub src1q, srcq
yading@11 232 sub src2q, srcq
yading@11 233 sub src3q, srcq
yading@11 234 sub src4q, srcq
yading@11 235 sub src5q, srcq
yading@11 236 .loop:
yading@11 237 mov%3 m0, [srcq ]
yading@11 238 mov%3 m1, [srcq+src1q]
yading@11 239 mov%3 m2, [srcq+src2q]
yading@11 240 mov%3 m3, [srcq+src3q]
yading@11 241 mov%3 m4, [srcq+src4q]
yading@11 242 mov%3 m5, [srcq+src5q]
yading@11 243 %7 x,x,x,x,m7,x
yading@11 244 %if cpuflag(sse4)
yading@11 245 SBUTTERFLYPS 0, 1, 6
yading@11 246 SBUTTERFLYPS 2, 3, 6
yading@11 247 SBUTTERFLYPS 4, 5, 6
yading@11 248
yading@11 249 blendps m6, m4, m0, 1100b
yading@11 250 movlhps m0, m2
yading@11 251 movhlps m4, m2
yading@11 252 blendps m2, m5, m1, 1100b
yading@11 253 movlhps m1, m3
yading@11 254 movhlps m5, m3
yading@11 255
yading@11 256 %6 m0,m6,x,x,m7,m3
yading@11 257 %6 m4,m1,x,x,m7,m3
yading@11 258 %6 m2,m5,x,x,m7,m3
yading@11 259
yading@11 260 mov %+ %3 %+ ps [dstq ], m0
yading@11 261 mov %+ %3 %+ ps [dstq+16], m6
yading@11 262 mov %+ %3 %+ ps [dstq+32], m4
yading@11 263 mov %+ %3 %+ ps [dstq+48], m1
yading@11 264 mov %+ %3 %+ ps [dstq+64], m2
yading@11 265 mov %+ %3 %+ ps [dstq+80], m5
yading@11 266 %else ; mmx
yading@11 267 SBUTTERFLY dq, 0, 1, 6
yading@11 268 SBUTTERFLY dq, 2, 3, 6
yading@11 269 SBUTTERFLY dq, 4, 5, 6
yading@11 270
yading@11 271 movq [dstq ], m0
yading@11 272 movq [dstq+ 8], m2
yading@11 273 movq [dstq+16], m4
yading@11 274 movq [dstq+24], m1
yading@11 275 movq [dstq+32], m3
yading@11 276 movq [dstq+40], m5
yading@11 277 %endif
yading@11 278 add srcq, mmsize
yading@11 279 add dstq, mmsize*6
yading@11 280 sub lend, mmsize/4
yading@11 281 jg .loop
yading@11 282 %if mmsize == 8
yading@11 283 emms
yading@11 284 RET
yading@11 285 %else
yading@11 286 REP_RET
yading@11 287 %endif
yading@11 288 %endmacro
yading@11 289
yading@11 290 %macro INT16_TO_INT32_N 6
yading@11 291 pxor m2, m2
yading@11 292 pxor m3, m3
yading@11 293 punpcklwd m2, m1
yading@11 294 punpckhwd m3, m1
yading@11 295 SWAP 4,0
yading@11 296 pxor m0, m0
yading@11 297 pxor m1, m1
yading@11 298 punpcklwd m0, m4
yading@11 299 punpckhwd m1, m4
yading@11 300 %endmacro
yading@11 301
yading@11 302 %macro INT32_TO_INT16_N 6
yading@11 303 psrad m0, 16
yading@11 304 psrad m1, 16
yading@11 305 psrad m2, 16
yading@11 306 psrad m3, 16
yading@11 307 packssdw m0, m1
yading@11 308 packssdw m2, m3
yading@11 309 SWAP 1,2
yading@11 310 %endmacro
yading@11 311
yading@11 312 %macro INT32_TO_FLOAT_INIT 6
yading@11 313 mova %5, [flt2pm31]
yading@11 314 %endmacro
yading@11 315 %macro INT32_TO_FLOAT_N 6
yading@11 316 cvtdq2ps %1, %1
yading@11 317 cvtdq2ps %2, %2
yading@11 318 mulps %1, %1, %5
yading@11 319 mulps %2, %2, %5
yading@11 320 %endmacro
yading@11 321
yading@11 322 %macro FLOAT_TO_INT32_INIT 6
yading@11 323 mova %5, [flt2p31]
yading@11 324 %endmacro
yading@11 325 %macro FLOAT_TO_INT32_N 6
yading@11 326 mulps %1, %5
yading@11 327 mulps %2, %5
yading@11 328 cvtps2dq %6, %1
yading@11 329 cmpnltps %1, %5
yading@11 330 paddd %1, %6
yading@11 331 cvtps2dq %6, %2
yading@11 332 cmpnltps %2, %5
yading@11 333 paddd %2, %6
yading@11 334 %endmacro
yading@11 335
yading@11 336 %macro INT16_TO_FLOAT_INIT 6
yading@11 337 mova m5, [flt2pm31]
yading@11 338 %endmacro
yading@11 339 %macro INT16_TO_FLOAT_N 6
yading@11 340 INT16_TO_INT32_N %1,%2,%3,%4,%5,%6
yading@11 341 cvtdq2ps m0, m0
yading@11 342 cvtdq2ps m1, m1
yading@11 343 cvtdq2ps m2, m2
yading@11 344 cvtdq2ps m3, m3
yading@11 345 mulps m0, m0, m5
yading@11 346 mulps m1, m1, m5
yading@11 347 mulps m2, m2, m5
yading@11 348 mulps m3, m3, m5
yading@11 349 %endmacro
yading@11 350
yading@11 351 %macro FLOAT_TO_INT16_INIT 6
yading@11 352 mova m5, [flt2p15]
yading@11 353 %endmacro
yading@11 354 %macro FLOAT_TO_INT16_N 6
yading@11 355 mulps m0, m5
yading@11 356 mulps m1, m5
yading@11 357 mulps m2, m5
yading@11 358 mulps m3, m5
yading@11 359 cvtps2dq m0, m0
yading@11 360 cvtps2dq m1, m1
yading@11 361 packssdw m0, m1
yading@11 362 cvtps2dq m1, m2
yading@11 363 cvtps2dq m3, m3
yading@11 364 packssdw m1, m3
yading@11 365 %endmacro
yading@11 366
yading@11 367 %macro NOP_N 0-6
yading@11 368 %endmacro
yading@11 369
yading@11 370 INIT_MMX mmx
yading@11 371 CONV int32, int16, u, 2, 1, INT16_TO_INT32_N, NOP_N
yading@11 372 CONV int32, int16, a, 2, 1, INT16_TO_INT32_N, NOP_N
yading@11 373 CONV int16, int32, u, 1, 2, INT32_TO_INT16_N, NOP_N
yading@11 374 CONV int16, int32, a, 1, 2, INT32_TO_INT16_N, NOP_N
yading@11 375
yading@11 376 PACK_6CH float, float, u, 2, 2, NOP_N, NOP_N
yading@11 377 PACK_6CH float, float, a, 2, 2, NOP_N, NOP_N
yading@11 378
yading@11 379 INIT_XMM sse2
yading@11 380 CONV int32, int16, u, 2, 1, INT16_TO_INT32_N, NOP_N
yading@11 381 CONV int32, int16, a, 2, 1, INT16_TO_INT32_N, NOP_N
yading@11 382 CONV int16, int32, u, 1, 2, INT32_TO_INT16_N, NOP_N
yading@11 383 CONV int16, int32, a, 1, 2, INT32_TO_INT16_N, NOP_N
yading@11 384
yading@11 385 PACK_2CH int16, int16, u, 1, 1, NOP_N, NOP_N
yading@11 386 PACK_2CH int16, int16, a, 1, 1, NOP_N, NOP_N
yading@11 387 PACK_2CH int32, int32, u, 2, 2, NOP_N, NOP_N
yading@11 388 PACK_2CH int32, int32, a, 2, 2, NOP_N, NOP_N
yading@11 389 PACK_2CH int32, int16, u, 2, 1, INT16_TO_INT32_N, NOP_N
yading@11 390 PACK_2CH int32, int16, a, 2, 1, INT16_TO_INT32_N, NOP_N
yading@11 391 PACK_2CH int16, int32, u, 1, 2, INT32_TO_INT16_N, NOP_N
yading@11 392 PACK_2CH int16, int32, a, 1, 2, INT32_TO_INT16_N, NOP_N
yading@11 393
yading@11 394 UNPACK_2CH int16, int16, u, 1, 1, NOP_N, NOP_N
yading@11 395 UNPACK_2CH int16, int16, a, 1, 1, NOP_N, NOP_N
yading@11 396 UNPACK_2CH int32, int32, u, 2, 2, NOP_N, NOP_N
yading@11 397 UNPACK_2CH int32, int32, a, 2, 2, NOP_N, NOP_N
yading@11 398 UNPACK_2CH int32, int16, u, 2, 1, INT16_TO_INT32_N, NOP_N
yading@11 399 UNPACK_2CH int32, int16, a, 2, 1, INT16_TO_INT32_N, NOP_N
yading@11 400 UNPACK_2CH int16, int32, u, 1, 2, INT32_TO_INT16_N, NOP_N
yading@11 401 UNPACK_2CH int16, int32, a, 1, 2, INT32_TO_INT16_N, NOP_N
yading@11 402
yading@11 403 CONV float, int32, u, 2, 2, INT32_TO_FLOAT_N, INT32_TO_FLOAT_INIT
yading@11 404 CONV float, int32, a, 2, 2, INT32_TO_FLOAT_N, INT32_TO_FLOAT_INIT
yading@11 405 CONV int32, float, u, 2, 2, FLOAT_TO_INT32_N, FLOAT_TO_INT32_INIT
yading@11 406 CONV int32, float, a, 2, 2, FLOAT_TO_INT32_N, FLOAT_TO_INT32_INIT
yading@11 407 CONV float, int16, u, 2, 1, INT16_TO_FLOAT_N, INT16_TO_FLOAT_INIT
yading@11 408 CONV float, int16, a, 2, 1, INT16_TO_FLOAT_N, INT16_TO_FLOAT_INIT
yading@11 409 CONV int16, float, u, 1, 2, FLOAT_TO_INT16_N, FLOAT_TO_INT16_INIT
yading@11 410 CONV int16, float, a, 1, 2, FLOAT_TO_INT16_N, FLOAT_TO_INT16_INIT
yading@11 411
yading@11 412 PACK_2CH float, int32, u, 2, 2, INT32_TO_FLOAT_N, INT32_TO_FLOAT_INIT
yading@11 413 PACK_2CH float, int32, a, 2, 2, INT32_TO_FLOAT_N, INT32_TO_FLOAT_INIT
yading@11 414 PACK_2CH int32, float, u, 2, 2, FLOAT_TO_INT32_N, FLOAT_TO_INT32_INIT
yading@11 415 PACK_2CH int32, float, a, 2, 2, FLOAT_TO_INT32_N, FLOAT_TO_INT32_INIT
yading@11 416 PACK_2CH float, int16, u, 2, 1, INT16_TO_FLOAT_N, INT16_TO_FLOAT_INIT
yading@11 417 PACK_2CH float, int16, a, 2, 1, INT16_TO_FLOAT_N, INT16_TO_FLOAT_INIT
yading@11 418 PACK_2CH int16, float, u, 1, 2, FLOAT_TO_INT16_N, FLOAT_TO_INT16_INIT
yading@11 419 PACK_2CH int16, float, a, 1, 2, FLOAT_TO_INT16_N, FLOAT_TO_INT16_INIT
yading@11 420
yading@11 421 UNPACK_2CH float, int32, u, 2, 2, INT32_TO_FLOAT_N, INT32_TO_FLOAT_INIT
yading@11 422 UNPACK_2CH float, int32, a, 2, 2, INT32_TO_FLOAT_N, INT32_TO_FLOAT_INIT
yading@11 423 UNPACK_2CH int32, float, u, 2, 2, FLOAT_TO_INT32_N, FLOAT_TO_INT32_INIT
yading@11 424 UNPACK_2CH int32, float, a, 2, 2, FLOAT_TO_INT32_N, FLOAT_TO_INT32_INIT
yading@11 425 UNPACK_2CH float, int16, u, 2, 1, INT16_TO_FLOAT_N, INT16_TO_FLOAT_INIT
yading@11 426 UNPACK_2CH float, int16, a, 2, 1, INT16_TO_FLOAT_N, INT16_TO_FLOAT_INIT
yading@11 427 UNPACK_2CH int16, float, u, 1, 2, FLOAT_TO_INT16_N, FLOAT_TO_INT16_INIT
yading@11 428 UNPACK_2CH int16, float, a, 1, 2, FLOAT_TO_INT16_N, FLOAT_TO_INT16_INIT
yading@11 429
yading@11 430
yading@11 431 INIT_XMM ssse3
yading@11 432 UNPACK_2CH int16, int16, u, 1, 1, NOP_N, NOP_N
yading@11 433 UNPACK_2CH int16, int16, a, 1, 1, NOP_N, NOP_N
yading@11 434 UNPACK_2CH int32, int16, u, 2, 1, INT16_TO_INT32_N, NOP_N
yading@11 435 UNPACK_2CH int32, int16, a, 2, 1, INT16_TO_INT32_N, NOP_N
yading@11 436 UNPACK_2CH float, int16, u, 2, 1, INT16_TO_FLOAT_N, INT16_TO_FLOAT_INIT
yading@11 437 UNPACK_2CH float, int16, a, 2, 1, INT16_TO_FLOAT_N, INT16_TO_FLOAT_INIT
yading@11 438
yading@11 439 INIT_XMM sse4
yading@11 440 PACK_6CH float, float, u, 2, 2, NOP_N, NOP_N
yading@11 441 PACK_6CH float, float, a, 2, 2, NOP_N, NOP_N
yading@11 442
yading@11 443 PACK_6CH float, int32, u, 2, 2, INT32_TO_FLOAT_N, INT32_TO_FLOAT_INIT
yading@11 444 PACK_6CH float, int32, a, 2, 2, INT32_TO_FLOAT_N, INT32_TO_FLOAT_INIT
yading@11 445 PACK_6CH int32, float, u, 2, 2, FLOAT_TO_INT32_N, FLOAT_TO_INT32_INIT
yading@11 446 PACK_6CH int32, float, a, 2, 2, FLOAT_TO_INT32_N, FLOAT_TO_INT32_INIT
yading@11 447
yading@11 448 %if HAVE_AVX_EXTERNAL
yading@11 449 INIT_XMM avx
yading@11 450 PACK_6CH float, float, u, 2, 2, NOP_N, NOP_N
yading@11 451 PACK_6CH float, float, a, 2, 2, NOP_N, NOP_N
yading@11 452
yading@11 453 PACK_6CH float, int32, u, 2, 2, INT32_TO_FLOAT_N, INT32_TO_FLOAT_INIT
yading@11 454 PACK_6CH float, int32, a, 2, 2, INT32_TO_FLOAT_N, INT32_TO_FLOAT_INIT
yading@11 455 PACK_6CH int32, float, u, 2, 2, FLOAT_TO_INT32_N, FLOAT_TO_INT32_INIT
yading@11 456 PACK_6CH int32, float, a, 2, 2, FLOAT_TO_INT32_N, FLOAT_TO_INT32_INIT
yading@11 457
yading@11 458 INIT_YMM avx
yading@11 459 CONV float, int32, u, 2, 2, INT32_TO_FLOAT_N, INT32_TO_FLOAT_INIT
yading@11 460 CONV float, int32, a, 2, 2, INT32_TO_FLOAT_N, INT32_TO_FLOAT_INIT
yading@11 461 %endif