00001 /* 00002 * Copyright (c) 2006 Luca Barbato <lu_zero@gentoo.org> 00003 * 00004 * This file is part of FFmpeg. 00005 * 00006 * FFmpeg is free software; you can redistribute it and/or 00007 * modify it under the terms of the GNU Lesser General Public 00008 * License as published by the Free Software Foundation; either 00009 * version 2.1 of the License, or (at your option) any later version. 00010 * 00011 * FFmpeg is distributed in the hope that it will be useful, 00012 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00013 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00014 * Lesser General Public License for more details. 00015 * 00016 * You should have received a copy of the GNU Lesser General Public 00017 * License along with FFmpeg; if not, write to the Free Software 00018 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 00019 */ 00020 00021 #include "util_altivec.h" 00022 #include "float_dsp_altivec.h" 00023 00024 void ff_vector_fmul_altivec(float *dst, const float *src0, const float *src1, 00025 int len) 00026 { 00027 int i; 00028 vector float d0, d1, s, zero = (vector float)vec_splat_u32(0); 00029 for (i = 0; i < len - 7; i += 8) { 00030 d0 = vec_ld( 0, src0 + i); 00031 s = vec_ld( 0, src1 + i); 00032 d1 = vec_ld(16, src0 + i); 00033 d0 = vec_madd(d0, s, zero); 00034 d1 = vec_madd(d1, vec_ld(16, src1 + i), zero); 00035 vec_st(d0, 0, dst + i); 00036 vec_st(d1, 16, dst + i); 00037 } 00038 }