1cabdff1aSopenharmony_ci/* 2cabdff1aSopenharmony_ci * Alpha optimized DSP utils 3cabdff1aSopenharmony_ci * Copyright (c) 2002 Falk Hueffner <falk@debian.org> 4cabdff1aSopenharmony_ci * 5cabdff1aSopenharmony_ci * This file is part of FFmpeg. 6cabdff1aSopenharmony_ci * 7cabdff1aSopenharmony_ci * FFmpeg is free software; you can redistribute it and/or 8cabdff1aSopenharmony_ci * modify it under the terms of the GNU Lesser General Public 9cabdff1aSopenharmony_ci * License as published by the Free Software Foundation; either 10cabdff1aSopenharmony_ci * version 2.1 of the License, or (at your option) any later version. 11cabdff1aSopenharmony_ci * 12cabdff1aSopenharmony_ci * FFmpeg is distributed in the hope that it will be useful, 13cabdff1aSopenharmony_ci * but WITHOUT ANY WARRANTY; without even the implied warranty of 14cabdff1aSopenharmony_ci * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 15cabdff1aSopenharmony_ci * Lesser General Public License for more details. 16cabdff1aSopenharmony_ci * 17cabdff1aSopenharmony_ci * You should have received a copy of the GNU Lesser General Public 18cabdff1aSopenharmony_ci * License along with FFmpeg; if not, write to the Free Software 19cabdff1aSopenharmony_ci * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 20cabdff1aSopenharmony_ci */ 21cabdff1aSopenharmony_ci 22cabdff1aSopenharmony_ci/* 23cabdff1aSopenharmony_ci * These functions are scheduled for pca56. They should work 24cabdff1aSopenharmony_ci * reasonably on ev6, though. 25cabdff1aSopenharmony_ci */ 26cabdff1aSopenharmony_ci 27cabdff1aSopenharmony_ci#include "regdef.h" 28cabdff1aSopenharmony_ci 29cabdff1aSopenharmony_ci 30cabdff1aSopenharmony_ci .set noat 31cabdff1aSopenharmony_ci .set noreorder 32cabdff1aSopenharmony_ci .arch pca56 33cabdff1aSopenharmony_ci .text 34cabdff1aSopenharmony_ci 35cabdff1aSopenharmony_ci/************************************************************************ 36cabdff1aSopenharmony_ci * void put_pixels_axp_asm(uint8_t *block, const uint8_t *pixels, 37cabdff1aSopenharmony_ci * int line_size, int h) 38cabdff1aSopenharmony_ci */ 39cabdff1aSopenharmony_ci .align 6 40cabdff1aSopenharmony_ci .globl put_pixels_axp_asm 41cabdff1aSopenharmony_ci .ent put_pixels_axp_asm 42cabdff1aSopenharmony_ciput_pixels_axp_asm: 43cabdff1aSopenharmony_ci .frame sp, 0, ra 44cabdff1aSopenharmony_ci .prologue 0 45cabdff1aSopenharmony_ci 46cabdff1aSopenharmony_ci and a1, 7, t0 47cabdff1aSopenharmony_ci beq t0, $aligned 48cabdff1aSopenharmony_ci 49cabdff1aSopenharmony_ci .align 4 50cabdff1aSopenharmony_ci$unaligned: 51cabdff1aSopenharmony_ci ldq_u t0, 0(a1) 52cabdff1aSopenharmony_ci ldq_u t1, 8(a1) 53cabdff1aSopenharmony_ci addq a1, a2, a1 54cabdff1aSopenharmony_ci nop 55cabdff1aSopenharmony_ci 56cabdff1aSopenharmony_ci ldq_u t2, 0(a1) 57cabdff1aSopenharmony_ci ldq_u t3, 8(a1) 58cabdff1aSopenharmony_ci addq a1, a2, a1 59cabdff1aSopenharmony_ci nop 60cabdff1aSopenharmony_ci 61cabdff1aSopenharmony_ci ldq_u t4, 0(a1) 62cabdff1aSopenharmony_ci ldq_u t5, 8(a1) 63cabdff1aSopenharmony_ci addq a1, a2, a1 64cabdff1aSopenharmony_ci nop 65cabdff1aSopenharmony_ci 66cabdff1aSopenharmony_ci ldq_u t6, 0(a1) 67cabdff1aSopenharmony_ci ldq_u t7, 8(a1) 68cabdff1aSopenharmony_ci extql t0, a1, t0 69cabdff1aSopenharmony_ci addq a1, a2, a1 70cabdff1aSopenharmony_ci 71cabdff1aSopenharmony_ci extqh t1, a1, t1 72cabdff1aSopenharmony_ci addq a0, a2, t8 73cabdff1aSopenharmony_ci extql t2, a1, t2 74cabdff1aSopenharmony_ci addq t8, a2, t9 75cabdff1aSopenharmony_ci 76cabdff1aSopenharmony_ci extqh t3, a1, t3 77cabdff1aSopenharmony_ci addq t9, a2, ta 78cabdff1aSopenharmony_ci extql t4, a1, t4 79cabdff1aSopenharmony_ci or t0, t1, t0 80cabdff1aSopenharmony_ci 81cabdff1aSopenharmony_ci extqh t5, a1, t5 82cabdff1aSopenharmony_ci or t2, t3, t2 83cabdff1aSopenharmony_ci extql t6, a1, t6 84cabdff1aSopenharmony_ci or t4, t5, t4 85cabdff1aSopenharmony_ci 86cabdff1aSopenharmony_ci extqh t7, a1, t7 87cabdff1aSopenharmony_ci or t6, t7, t6 88cabdff1aSopenharmony_ci stq t0, 0(a0) 89cabdff1aSopenharmony_ci stq t2, 0(t8) 90cabdff1aSopenharmony_ci 91cabdff1aSopenharmony_ci stq t4, 0(t9) 92cabdff1aSopenharmony_ci subq a3, 4, a3 93cabdff1aSopenharmony_ci stq t6, 0(ta) 94cabdff1aSopenharmony_ci addq ta, a2, a0 95cabdff1aSopenharmony_ci 96cabdff1aSopenharmony_ci bne a3, $unaligned 97cabdff1aSopenharmony_ci ret 98cabdff1aSopenharmony_ci 99cabdff1aSopenharmony_ci .align 4 100cabdff1aSopenharmony_ci$aligned: 101cabdff1aSopenharmony_ci ldq t0, 0(a1) 102cabdff1aSopenharmony_ci addq a1, a2, a1 103cabdff1aSopenharmony_ci ldq t1, 0(a1) 104cabdff1aSopenharmony_ci addq a1, a2, a1 105cabdff1aSopenharmony_ci 106cabdff1aSopenharmony_ci ldq t2, 0(a1) 107cabdff1aSopenharmony_ci addq a1, a2, a1 108cabdff1aSopenharmony_ci ldq t3, 0(a1) 109cabdff1aSopenharmony_ci 110cabdff1aSopenharmony_ci addq a0, a2, t4 111cabdff1aSopenharmony_ci addq a1, a2, a1 112cabdff1aSopenharmony_ci addq t4, a2, t5 113cabdff1aSopenharmony_ci subq a3, 4, a3 114cabdff1aSopenharmony_ci 115cabdff1aSopenharmony_ci stq t0, 0(a0) 116cabdff1aSopenharmony_ci addq t5, a2, t6 117cabdff1aSopenharmony_ci stq t1, 0(t4) 118cabdff1aSopenharmony_ci addq t6, a2, a0 119cabdff1aSopenharmony_ci 120cabdff1aSopenharmony_ci stq t2, 0(t5) 121cabdff1aSopenharmony_ci stq t3, 0(t6) 122cabdff1aSopenharmony_ci 123cabdff1aSopenharmony_ci bne a3, $aligned 124cabdff1aSopenharmony_ci ret 125cabdff1aSopenharmony_ci .end put_pixels_axp_asm 126