4#ifndef QT_MIPS_ASM_DSP_H
5#define QT_MIPS_ASM_DSP_H
19#pragma qt_sync_stop_processing
61#define LEAF_MIPS32R2(symbol) \
64 .type symbol,@function; \
66symbol: .frame sp, 0, ra; \
73#define LEAF_MIPS_DSP(symbol) \
74LEAF_MIPS32R2(symbol) \
80#define LEAF_MIPS_DSPR2(symbol) \
81LEAF_MIPS32R2(symbol) \
87#define END(function) \
90 .size function,.-function
203 preceu.ph.qbra \scratch1, \
in_1
204 preceu.ph.qbra \scratch2, \
in_2
208 preceu.ph.qbla \scratch3, \
in_1
209 preceu.ph.qbla \scratch4, \
in_2
223 and \scratch3, \
scratch3, \andi_factor
237.if \stack_offset < \
regs_num * 4 - 16
238.error
"Stack offset too small."
253.macro SAVE_REGS_ON_STACK stack_offset = 0,
r1, \
254 r2 = 0, r3 = 0, r4 = 0, \
255 r5 = 0, r6 = 0, r7 = 0, \
256 r8 = 0, r9 = 0, r10 = 0, \
257 r11 = 0, r12 = 0, r13 = 0, \
259 .if (\stack_offset < 0) || (\stack_offset - (\stack_offset / 4) * 4)
260 .error
"Stack offset must be positive and multiple of 4."
262 .if \stack_offset != 0
263 addiu
sp,
sp, -\stack_offset
276 CHECK_STACK_OFFSET 5, \stack_offset
280 CHECK_STACK_OFFSET 6, \stack_offset
284 CHECK_STACK_OFFSET 7, \stack_offset
288 CHECK_STACK_OFFSET 8, \stack_offset
292 CHECK_STACK_OFFSET 9, \stack_offset
296 CHECK_STACK_OFFSET 10, \stack_offset
300 CHECK_STACK_OFFSET 11, \stack_offset
304 CHECK_STACK_OFFSET 12, \stack_offset
308 CHECK_STACK_OFFSET 13, \stack_offset
312 CHECK_STACK_OFFSET 14, \stack_offset
328.macro RESTORE_REGS_FROM_STACK stack_offset = 0,
r1, \
329 r2 = 0, r3 = 0, r4 = 0, \
330 r5 = 0, r6 = 0, r7 = 0, \
331 r8 = 0, r9 = 0, r10 = 0, \
332 r11 = 0, r12 = 0, r13 = 0, \
334 .if (\stack_offset < 0) || (\stack_offset - (\stack_offset/4)*4)
335 .error
"Stack offset must be pozitive and multiple of 4."
348 CHECK_STACK_OFFSET 5, \stack_offset
352 CHECK_STACK_OFFSET 6, \stack_offset
356 CHECK_STACK_OFFSET 7, \stack_offset
360 CHECK_STACK_OFFSET 8, \stack_offset
364 CHECK_STACK_OFFSET 9, \stack_offset
368 CHECK_STACK_OFFSET 10, \stack_offset
372 CHECK_STACK_OFFSET 11, \stack_offset
376 CHECK_STACK_OFFSET 12, \stack_offset
380 CHECK_STACK_OFFSET 13, \stack_offset
384 CHECK_STACK_OFFSET 14, \stack_offset
387 .if \stack_offset != 0
388 addiu
sp,
sp, \stack_offset
static uint INTERPOLATE_PIXEL_255(uint x, uint a, uint y, uint b)
static uint BYTE_MUL(uint x, uint a)
static const struct ImageFormatTab r8[]
macro BYTE_MUL_x2 out_2 scratch3
macro BYTE_MUL_x2 out_2 repl_a2
macro BYTE_MUL_x2 out_2 rounding_factor
macro BYTE_MUL_x2 out_2 scratch1
macro BYTE_MUL_x2 out_2 in_const
macro BYTE_MUL_x2 out_2 repl_a1 muleu_s ph qbr repl_a1 muleu_s ph qbl repl_a2 muleu_s ph qbr repl_a2 if scratch1 preceu ph qbla scratch2 preceu ph qbla scratch3 preceu ph qbla out_2
macro BYTE_MUL_x2 out_2 repl_a1 muleu_s ph qbr repl_a1 muleu_s ph qbl repl_a2 muleu_s ph qbr repl_a2 if scratch1 preceu ph qbla scratch2 preceu ph qbla scratch3 preceu ph qbla scratch4 addu scratch1 addu scratch2 else preceu ph qbla scratch1 preceu ph qbla scratch2 preceu ph qbla scratch3 preceu ph qbla scratch4 addu scratch1 addu scratch2 endif addu scratch3 addu scratch4 addu rounding_factor addu rounding_factor addu rounding_factor addu rounding_factor precrq qb ph scratch2 precrq qb ph scratch4 endm macro BYTE_MUL scratch4 muleu_s ph qbl repl_a1 muleu_s ph qbr repl_a1 preceu ph qbla scratch1 preceu ph qbla scratch2 addu scratch3 addu rounding_factor addu scratch4 addu rounding_factor precrq qb ph scratch2 endm macro INTERPOLATE_PIXEL_255 andi_factor scratch4 preceu ph qbra in_1 preceu ph qbra in_2 mul mul_1 mul mul_2 preceu ph qbla in_1 preceu ph qbla in_2 mul mul_1 mul mul_2 addu scratch2 preceu ph qbla scratch1 addu scratch2 addu rounding_factor preceu ph qbla scratch1 addu scratch4 preceu ph qbla scratch3 addu scratch4 addu rounding_factor and andi_factor or scratch3 endm macro CHECK_STACK_OFFSET regs_num
macro BYTE_MUL_x2 out_2 repl_a1 muleu_s ph qbr repl_a1 muleu_s ph qbl repl_a2 muleu_s ph qbr repl_a2 if scratch1 preceu ph qbla scratch2 preceu ph qbla scratch3 preceu ph qbla scratch4 addu scratch1 addu scratch2 else preceu ph qbla scratch1 preceu ph qbla scratch2 preceu ph qbla scratch3 preceu ph qbla scratch4 addu scratch1 addu scratch2 endif addu scratch3 addu scratch4 addu rounding_factor addu rounding_factor addu rounding_factor addu rounding_factor precrq qb ph scratch2 precrq qb ph scratch4 endm macro BYTE_MUL scratch4 muleu_s ph qbl repl_a1 muleu_s ph qbr repl_a1 preceu ph qbla scratch1 preceu ph qbla scratch2 addu scratch3 addu rounding_factor addu scratch4 addu rounding_factor precrq qb ph scratch2 endm macro INTERPOLATE_PIXEL_255 mul_1
macro BYTE_MUL_x2 out_2 repl_a1
macro BYTE_MUL_x2 out_2 repl_a1 muleu_s ph qbr repl_a1 muleu_s ph qbl repl_a2 muleu_s ph qbr repl_a2 if scratch1 preceu ph qbla scratch2 preceu ph qbla scratch3 preceu ph qbla scratch4 addu scratch1 addu scratch2 else preceu ph qbla scratch1 preceu ph qbla scratch2 preceu ph qbla scratch3 preceu ph qbla scratch4 addu scratch1 addu scratch2 endif addu scratch3 addu scratch4 addu rounding_factor addu rounding_factor addu rounding_factor addu rounding_factor precrq qb ph scratch2 precrq qb ph scratch4 endm macro BYTE_MUL scratch4 muleu_s ph qbl repl_a1 muleu_s ph qbr repl_a1 preceu ph qbla scratch1 preceu ph qbla scratch2 addu scratch3 addu rounding_factor addu scratch4 addu rounding_factor precrq qb ph scratch2 endm macro INTERPOLATE_PIXEL_255 mul_2
macro BYTE_MUL_x2 out_2 scratch4
macro BYTE_MUL_x2 out_2 scratch2