190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber; 2f71323e297a928af368937089d3ed71239786f86Andreas Huber; Copyright (c) 2010 The WebM project authors. All Rights Reserved. 390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber; 4f71323e297a928af368937089d3ed71239786f86Andreas Huber; Use of this source code is governed by a BSD-style license 5f71323e297a928af368937089d3ed71239786f86Andreas Huber; that can be found in the LICENSE file in the root of the source 6f71323e297a928af368937089d3ed71239786f86Andreas Huber; tree. An additional intellectual property rights grant can be found 7f71323e297a928af368937089d3ed71239786f86Andreas Huber; in the file PATENTS. All contributing project authors may 8f71323e297a928af368937089d3ed71239786f86Andreas Huber; be found in the AUTHORS file in the root of the source tree. 990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber; 1090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 1190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 1290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber%include "vpx_ports/x86_abi_support.asm" 1390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 1490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber;void vp8_short_fdct4x4_mmx(short *input, short *output, int pitch) 1579f15823c34ae1e423108295e416213200bb280fAndreas Huberglobal sym(vp8_short_fdct4x4_mmx) 1690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Hubersym(vp8_short_fdct4x4_mmx): 1790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber push rbp 1879f15823c34ae1e423108295e416213200bb280fAndreas Huber mov rbp, rsp 1990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber SHADOW_ARGS_TO_STACK 3 2090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber GET_GOT rbx 2179f15823c34ae1e423108295e416213200bb280fAndreas Huber push rsi 2279f15823c34ae1e423108295e416213200bb280fAndreas Huber push rdi 2390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ; end prolog 2490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 2579f15823c34ae1e423108295e416213200bb280fAndreas Huber mov rsi, arg(0) ; input 2679f15823c34ae1e423108295e416213200bb280fAndreas Huber mov rdi, arg(1) ; output 2790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 2879f15823c34ae1e423108295e416213200bb280fAndreas Huber movsxd rax, dword ptr arg(2) ;pitch 2990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 3079f15823c34ae1e423108295e416213200bb280fAndreas Huber lea rcx, [rsi + rax*2] 3190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ; read the input data 3279f15823c34ae1e423108295e416213200bb280fAndreas Huber movq mm0, [rsi] 3379f15823c34ae1e423108295e416213200bb280fAndreas Huber movq mm1, [rsi + rax] 3490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 3579f15823c34ae1e423108295e416213200bb280fAndreas Huber movq mm2, [rcx] 3679f15823c34ae1e423108295e416213200bb280fAndreas Huber movq mm4, [rcx + rax] 3790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 3879f15823c34ae1e423108295e416213200bb280fAndreas Huber ; transpose for the first stage 3979f15823c34ae1e423108295e416213200bb280fAndreas Huber movq mm3, mm0 ; 00 01 02 03 4079f15823c34ae1e423108295e416213200bb280fAndreas Huber movq mm5, mm2 ; 20 21 22 23 4190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 4279f15823c34ae1e423108295e416213200bb280fAndreas Huber punpcklwd mm0, mm1 ; 00 10 01 11 4379f15823c34ae1e423108295e416213200bb280fAndreas Huber punpckhwd mm3, mm1 ; 02 12 03 13 4490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 4579f15823c34ae1e423108295e416213200bb280fAndreas Huber punpcklwd mm2, mm4 ; 20 30 21 31 4679f15823c34ae1e423108295e416213200bb280fAndreas Huber punpckhwd mm5, mm4 ; 22 32 23 33 4790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 4879f15823c34ae1e423108295e416213200bb280fAndreas Huber movq mm1, mm0 ; 00 10 01 11 4979f15823c34ae1e423108295e416213200bb280fAndreas Huber punpckldq mm0, mm2 ; 00 10 20 30 5090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 5179f15823c34ae1e423108295e416213200bb280fAndreas Huber punpckhdq mm1, mm2 ; 01 11 21 31 5290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 5379f15823c34ae1e423108295e416213200bb280fAndreas Huber movq mm2, mm3 ; 02 12 03 13 5479f15823c34ae1e423108295e416213200bb280fAndreas Huber punpckldq mm2, mm5 ; 02 12 22 32 5590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 5679f15823c34ae1e423108295e416213200bb280fAndreas Huber punpckhdq mm3, mm5 ; 03 13 23 33 5790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 5879f15823c34ae1e423108295e416213200bb280fAndreas Huber ; mm0 0 5979f15823c34ae1e423108295e416213200bb280fAndreas Huber ; mm1 1 6079f15823c34ae1e423108295e416213200bb280fAndreas Huber ; mm2 2 6179f15823c34ae1e423108295e416213200bb280fAndreas Huber ; mm3 3 6290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 6390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ; first stage 6479f15823c34ae1e423108295e416213200bb280fAndreas Huber movq mm5, mm0 6579f15823c34ae1e423108295e416213200bb280fAndreas Huber movq mm4, mm1 6690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 6779f15823c34ae1e423108295e416213200bb280fAndreas Huber paddw mm0, mm3 ; a1 = 0 + 3 6879f15823c34ae1e423108295e416213200bb280fAndreas Huber paddw mm1, mm2 ; b1 = 1 + 2 6990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 7079f15823c34ae1e423108295e416213200bb280fAndreas Huber psubw mm4, mm2 ; c1 = 1 - 2 7179f15823c34ae1e423108295e416213200bb280fAndreas Huber psubw mm5, mm3 ; d1 = 0 - 3 7290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 7379f15823c34ae1e423108295e416213200bb280fAndreas Huber psllw mm5, 3 7479f15823c34ae1e423108295e416213200bb280fAndreas Huber psllw mm4, 3 7590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 7679f15823c34ae1e423108295e416213200bb280fAndreas Huber psllw mm0, 3 7779f15823c34ae1e423108295e416213200bb280fAndreas Huber psllw mm1, 3 7890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 7979f15823c34ae1e423108295e416213200bb280fAndreas Huber ; output 0 and 2 8079f15823c34ae1e423108295e416213200bb280fAndreas Huber movq mm2, mm0 ; a1 8190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 8279f15823c34ae1e423108295e416213200bb280fAndreas Huber paddw mm0, mm1 ; op[0] = a1 + b1 8379f15823c34ae1e423108295e416213200bb280fAndreas Huber psubw mm2, mm1 ; op[2] = a1 - b1 8490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 8590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ; output 1 and 3 8679f15823c34ae1e423108295e416213200bb280fAndreas Huber ; interleave c1, d1 8779f15823c34ae1e423108295e416213200bb280fAndreas Huber movq mm1, mm5 ; d1 8879f15823c34ae1e423108295e416213200bb280fAndreas Huber punpcklwd mm1, mm4 ; c1 d1 8979f15823c34ae1e423108295e416213200bb280fAndreas Huber punpckhwd mm5, mm4 ; c1 d1 9090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 9179f15823c34ae1e423108295e416213200bb280fAndreas Huber movq mm3, mm1 9279f15823c34ae1e423108295e416213200bb280fAndreas Huber movq mm4, mm5 9390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 9479f15823c34ae1e423108295e416213200bb280fAndreas Huber pmaddwd mm1, MMWORD PTR[GLOBAL (_5352_2217)] ; c1*2217 + d1*5352 9579f15823c34ae1e423108295e416213200bb280fAndreas Huber pmaddwd mm4, MMWORD PTR[GLOBAL (_5352_2217)] ; c1*2217 + d1*5352 9690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 9779f15823c34ae1e423108295e416213200bb280fAndreas Huber pmaddwd mm3, MMWORD PTR[GLOBAL(_2217_neg5352)] ; d1*2217 - c1*5352 9879f15823c34ae1e423108295e416213200bb280fAndreas Huber pmaddwd mm5, MMWORD PTR[GLOBAL(_2217_neg5352)] ; d1*2217 - c1*5352 9990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 10079f15823c34ae1e423108295e416213200bb280fAndreas Huber paddd mm1, MMWORD PTR[GLOBAL(_14500)] 10179f15823c34ae1e423108295e416213200bb280fAndreas Huber paddd mm4, MMWORD PTR[GLOBAL(_14500)] 10279f15823c34ae1e423108295e416213200bb280fAndreas Huber paddd mm3, MMWORD PTR[GLOBAL(_7500)] 10379f15823c34ae1e423108295e416213200bb280fAndreas Huber paddd mm5, MMWORD PTR[GLOBAL(_7500)] 10490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 10579f15823c34ae1e423108295e416213200bb280fAndreas Huber psrad mm1, 12 ; (c1 * 2217 + d1 * 5352 + 14500)>>12 10679f15823c34ae1e423108295e416213200bb280fAndreas Huber psrad mm4, 12 ; (c1 * 2217 + d1 * 5352 + 14500)>>12 10779f15823c34ae1e423108295e416213200bb280fAndreas Huber psrad mm3, 12 ; (d1 * 2217 - c1 * 5352 + 7500)>>12 10879f15823c34ae1e423108295e416213200bb280fAndreas Huber psrad mm5, 12 ; (d1 * 2217 - c1 * 5352 + 7500)>>12 10990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 11079f15823c34ae1e423108295e416213200bb280fAndreas Huber packssdw mm1, mm4 ; op[1] 11179f15823c34ae1e423108295e416213200bb280fAndreas Huber packssdw mm3, mm5 ; op[3] 11290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 11390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ; done with vertical 11490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ; transpose for the second stage 11579f15823c34ae1e423108295e416213200bb280fAndreas Huber movq mm4, mm0 ; 00 10 20 30 11679f15823c34ae1e423108295e416213200bb280fAndreas Huber movq mm5, mm2 ; 02 12 22 32 11790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 11879f15823c34ae1e423108295e416213200bb280fAndreas Huber punpcklwd mm0, mm1 ; 00 01 10 11 11979f15823c34ae1e423108295e416213200bb280fAndreas Huber punpckhwd mm4, mm1 ; 20 21 30 31 12090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 12179f15823c34ae1e423108295e416213200bb280fAndreas Huber punpcklwd mm2, mm3 ; 02 03 12 13 12279f15823c34ae1e423108295e416213200bb280fAndreas Huber punpckhwd mm5, mm3 ; 22 23 32 33 12390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 12479f15823c34ae1e423108295e416213200bb280fAndreas Huber movq mm1, mm0 ; 00 01 10 11 12579f15823c34ae1e423108295e416213200bb280fAndreas Huber punpckldq mm0, mm2 ; 00 01 02 03 12690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 12779f15823c34ae1e423108295e416213200bb280fAndreas Huber punpckhdq mm1, mm2 ; 01 22 12 13 12890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 12979f15823c34ae1e423108295e416213200bb280fAndreas Huber movq mm2, mm4 ; 20 31 30 31 13079f15823c34ae1e423108295e416213200bb280fAndreas Huber punpckldq mm2, mm5 ; 20 21 22 23 13190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 13279f15823c34ae1e423108295e416213200bb280fAndreas Huber punpckhdq mm4, mm5 ; 30 31 32 33 13390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 13479f15823c34ae1e423108295e416213200bb280fAndreas Huber ; mm0 0 13579f15823c34ae1e423108295e416213200bb280fAndreas Huber ; mm1 1 13679f15823c34ae1e423108295e416213200bb280fAndreas Huber ; mm2 2 13779f15823c34ae1e423108295e416213200bb280fAndreas Huber ; mm3 4 13890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 13979f15823c34ae1e423108295e416213200bb280fAndreas Huber movq mm5, mm0 14079f15823c34ae1e423108295e416213200bb280fAndreas Huber movq mm3, mm1 14190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 14279f15823c34ae1e423108295e416213200bb280fAndreas Huber paddw mm0, mm4 ; a1 = 0 + 3 14379f15823c34ae1e423108295e416213200bb280fAndreas Huber paddw mm1, mm2 ; b1 = 1 + 2 14490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 14579f15823c34ae1e423108295e416213200bb280fAndreas Huber psubw mm3, mm2 ; c1 = 1 - 2 14679f15823c34ae1e423108295e416213200bb280fAndreas Huber psubw mm5, mm4 ; d1 = 0 - 3 14790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 14879f15823c34ae1e423108295e416213200bb280fAndreas Huber pxor mm6, mm6 ; zero out for compare 14990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 15079f15823c34ae1e423108295e416213200bb280fAndreas Huber pcmpeqw mm6, mm5 ; d1 != 0 15190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 15279f15823c34ae1e423108295e416213200bb280fAndreas Huber pandn mm6, MMWORD PTR[GLOBAL(_cmp_mask)] ; clear upper, 15379f15823c34ae1e423108295e416213200bb280fAndreas Huber ; and keep bit 0 of lower 15490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 15590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ; output 0 and 2 15679f15823c34ae1e423108295e416213200bb280fAndreas Huber movq mm2, mm0 ; a1 15790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 15879f15823c34ae1e423108295e416213200bb280fAndreas Huber paddw mm0, mm1 ; a1 + b1 15979f15823c34ae1e423108295e416213200bb280fAndreas Huber psubw mm2, mm1 ; a1 - b1 16090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 16179f15823c34ae1e423108295e416213200bb280fAndreas Huber paddw mm0, MMWORD PTR[GLOBAL(_7w)] 16279f15823c34ae1e423108295e416213200bb280fAndreas Huber paddw mm2, MMWORD PTR[GLOBAL(_7w)] 16390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 16479f15823c34ae1e423108295e416213200bb280fAndreas Huber psraw mm0, 4 ; op[0] = (a1 + b1 + 7)>>4 16579f15823c34ae1e423108295e416213200bb280fAndreas Huber psraw mm2, 4 ; op[8] = (a1 - b1 + 7)>>4 16690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 16779f15823c34ae1e423108295e416213200bb280fAndreas Huber movq MMWORD PTR[rdi + 0 ], mm0 16879f15823c34ae1e423108295e416213200bb280fAndreas Huber movq MMWORD PTR[rdi + 16], mm2 16990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 17090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ; output 1 and 3 17179f15823c34ae1e423108295e416213200bb280fAndreas Huber ; interleave c1, d1 17279f15823c34ae1e423108295e416213200bb280fAndreas Huber movq mm1, mm5 ; d1 17379f15823c34ae1e423108295e416213200bb280fAndreas Huber punpcklwd mm1, mm3 ; c1 d1 17479f15823c34ae1e423108295e416213200bb280fAndreas Huber punpckhwd mm5, mm3 ; c1 d1 17590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 17679f15823c34ae1e423108295e416213200bb280fAndreas Huber movq mm3, mm1 17779f15823c34ae1e423108295e416213200bb280fAndreas Huber movq mm4, mm5 17890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 17979f15823c34ae1e423108295e416213200bb280fAndreas Huber pmaddwd mm1, MMWORD PTR[GLOBAL (_5352_2217)] ; c1*2217 + d1*5352 18079f15823c34ae1e423108295e416213200bb280fAndreas Huber pmaddwd mm4, MMWORD PTR[GLOBAL (_5352_2217)] ; c1*2217 + d1*5352 18190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 18279f15823c34ae1e423108295e416213200bb280fAndreas Huber pmaddwd mm3, MMWORD PTR[GLOBAL(_2217_neg5352)] ; d1*2217 - c1*5352 18379f15823c34ae1e423108295e416213200bb280fAndreas Huber pmaddwd mm5, MMWORD PTR[GLOBAL(_2217_neg5352)] ; d1*2217 - c1*5352 18490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 18579f15823c34ae1e423108295e416213200bb280fAndreas Huber paddd mm1, MMWORD PTR[GLOBAL(_12000)] 18679f15823c34ae1e423108295e416213200bb280fAndreas Huber paddd mm4, MMWORD PTR[GLOBAL(_12000)] 18779f15823c34ae1e423108295e416213200bb280fAndreas Huber paddd mm3, MMWORD PTR[GLOBAL(_51000)] 18879f15823c34ae1e423108295e416213200bb280fAndreas Huber paddd mm5, MMWORD PTR[GLOBAL(_51000)] 18990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 19079f15823c34ae1e423108295e416213200bb280fAndreas Huber psrad mm1, 16 ; (c1 * 2217 + d1 * 5352 + 14500)>>16 19179f15823c34ae1e423108295e416213200bb280fAndreas Huber psrad mm4, 16 ; (c1 * 2217 + d1 * 5352 + 14500)>>16 19279f15823c34ae1e423108295e416213200bb280fAndreas Huber psrad mm3, 16 ; (d1 * 2217 - c1 * 5352 + 7500)>>16 19379f15823c34ae1e423108295e416213200bb280fAndreas Huber psrad mm5, 16 ; (d1 * 2217 - c1 * 5352 + 7500)>>16 19490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 19579f15823c34ae1e423108295e416213200bb280fAndreas Huber packssdw mm1, mm4 ; op[4] 19679f15823c34ae1e423108295e416213200bb280fAndreas Huber packssdw mm3, mm5 ; op[12] 19779f15823c34ae1e423108295e416213200bb280fAndreas Huber 19879f15823c34ae1e423108295e416213200bb280fAndreas Huber paddw mm1, mm6 ; op[4] += (d1!=0) 19990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 20079f15823c34ae1e423108295e416213200bb280fAndreas Huber movq MMWORD PTR[rdi + 8 ], mm1 20179f15823c34ae1e423108295e416213200bb280fAndreas Huber movq MMWORD PTR[rdi + 24], mm3 20290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 20379f15823c34ae1e423108295e416213200bb280fAndreas Huber ; begin epilog 20479f15823c34ae1e423108295e416213200bb280fAndreas Huber pop rdi 20579f15823c34ae1e423108295e416213200bb280fAndreas Huber pop rsi 20690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber RESTORE_GOT 20790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber UNSHADOW_ARGS 20890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber pop rbp 20990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ret 21090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 21190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberSECTION_RODATA 21279f15823c34ae1e423108295e416213200bb280fAndreas Huberalign 8 21379f15823c34ae1e423108295e416213200bb280fAndreas Huber_5352_2217: 21479f15823c34ae1e423108295e416213200bb280fAndreas Huber dw 5352 21579f15823c34ae1e423108295e416213200bb280fAndreas Huber dw 2217 21679f15823c34ae1e423108295e416213200bb280fAndreas Huber dw 5352 21779f15823c34ae1e423108295e416213200bb280fAndreas Huber dw 2217 21879f15823c34ae1e423108295e416213200bb280fAndreas Huberalign 8 21979f15823c34ae1e423108295e416213200bb280fAndreas Huber_2217_neg5352: 22079f15823c34ae1e423108295e416213200bb280fAndreas Huber dw 2217 22179f15823c34ae1e423108295e416213200bb280fAndreas Huber dw -5352 22279f15823c34ae1e423108295e416213200bb280fAndreas Huber dw 2217 22379f15823c34ae1e423108295e416213200bb280fAndreas Huber dw -5352 22479f15823c34ae1e423108295e416213200bb280fAndreas Huberalign 8 22579f15823c34ae1e423108295e416213200bb280fAndreas Huber_cmp_mask: 22679f15823c34ae1e423108295e416213200bb280fAndreas Huber times 4 dw 1 22779f15823c34ae1e423108295e416213200bb280fAndreas Huberalign 8 22879f15823c34ae1e423108295e416213200bb280fAndreas Huber_7w: 22979f15823c34ae1e423108295e416213200bb280fAndreas Huber times 4 dw 7 23079f15823c34ae1e423108295e416213200bb280fAndreas Huberalign 8 23179f15823c34ae1e423108295e416213200bb280fAndreas Huber_14500: 23279f15823c34ae1e423108295e416213200bb280fAndreas Huber times 2 dd 14500 23379f15823c34ae1e423108295e416213200bb280fAndreas Huberalign 8 23479f15823c34ae1e423108295e416213200bb280fAndreas Huber_7500: 23579f15823c34ae1e423108295e416213200bb280fAndreas Huber times 2 dd 7500 23679f15823c34ae1e423108295e416213200bb280fAndreas Huberalign 8 23779f15823c34ae1e423108295e416213200bb280fAndreas Huber_12000: 23879f15823c34ae1e423108295e416213200bb280fAndreas Huber times 2 dd 12000 23979f15823c34ae1e423108295e416213200bb280fAndreas Huberalign 8 24079f15823c34ae1e423108295e416213200bb280fAndreas Huber_51000: 24179f15823c34ae1e423108295e416213200bb280fAndreas Huber times 2 dd 51000 242