56 #if HAVE_INLINE_ASM && HAVE_MIPSFPU
57 static void vector_fmul_mips(
float *
dst,
const float *src0,
const float *src1,
63 for (i = 0; i <
len; i++)
64 dst[i] = src0[i] * src1[i];
66 float *d = (
float *)dst;
67 float *d_end = d +
len;
68 float *
s0 = (
float *)src0;
69 float *
s1 = (
float *)src1;
71 float src0_0, src0_1, src0_2, src0_3;
72 float src1_0, src1_1, src1_2, src1_3;
76 "lwc1 %[src0_0], 0(%[s0]) \n\t"
77 "lwc1 %[src1_0], 0(%[s1]) \n\t"
78 "lwc1 %[src0_1], 4(%[s0]) \n\t"
79 "lwc1 %[src1_1], 4(%[s1]) \n\t"
80 "lwc1 %[src0_2], 8(%[s0]) \n\t"
81 "lwc1 %[src1_2], 8(%[s1]) \n\t"
82 "lwc1 %[src0_3], 12(%[s0]) \n\t"
83 "lwc1 %[src1_3], 12(%[s1]) \n\t"
84 "mul.s %[src0_0], %[src0_0], %[src1_0] \n\t"
85 "mul.s %[src0_1], %[src0_1], %[src1_1] \n\t"
86 "mul.s %[src0_2], %[src0_2], %[src1_2] \n\t"
87 "mul.s %[src0_3], %[src0_3], %[src1_3] \n\t"
88 "swc1 %[src0_0], 0(%[d]) \n\t"
89 "swc1 %[src0_1], 4(%[d]) \n\t"
90 "swc1 %[src0_2], 8(%[d]) \n\t"
91 "swc1 %[src0_3], 12(%[d]) \n\t"
92 "addiu %[s0], %[s0], 16 \n\t"
93 "addiu %[s1], %[s1], 16 \n\t"
94 "addiu %[d], %[d], 16 \n\t"
95 "bne %[d], %[d_end], 1b \n\t"
97 : [src0_0]
"=&f"(src0_0), [src0_1]
"=&f"(src0_1),
98 [src0_2]
"=&f"(src0_2), [src0_3]
"=&f"(src0_3),
99 [src1_0]
"=&f"(src1_0), [src1_1]
"=&f"(src1_1),
100 [src1_2]
"=&f"(src1_2), [src1_3]
"=&f"(src1_3),
101 [d]
"+r"(d), [s0]
"+r"(s0), [
s1]
"+r"(
s1)
110 #if HAVE_INLINE_ASM && HAVE_MIPSFPU