}
else if (rxstride == 1 && aystride == 1 && bxstride == 1)
{
- const rtype_name *restrict abase_x;
- const rtype_name *restrict bbase_y;
- rtype_name *restrict dest_y;
- rtype_name s;
+ if (GFC_DESCRIPTOR_RANK (a) != 1)
+ {
+ const rtype_name *restrict abase_x;
+ const rtype_name *restrict bbase_y;
+ rtype_name *restrict dest_y;
+ rtype_name s;
- for (y = 0; y < ycount; y++)
+ for (y = 0; y < ycount; y++)
+ {
+ bbase_y = &bbase[y*bystride];
+ dest_y = &dest[y*rystride];
+ for (x = 0; x < xcount; x++)
+ {
+ abase_x = &abase[x*axstride];
+ s = (rtype_name) 0;
+ for (n = 0; n < count; n++)
+ s += abase_x[n] * bbase_y[n];
+ dest_y[x] = s;
+ }
+ }
+ }
+ else
{
- bbase_y = &bbase[y*bystride];
- dest_y = &dest[y*rystride];
- for (x = 0; x < xcount; x++)
+ const rtype_name *restrict bbase_y;
+ rtype_name s;
+
+ for (y = 0; y < ycount; y++)
{
- abase_x = &abase[x*axstride];
+ bbase_y = &bbase[y*bystride];
s = (rtype_name) 0;
for (n = 0; n < count; n++)
- s += abase_x[n] * bbase_y[n];
- dest_y[x] = s;
+ s += abase[n*axstride] * bbase_y[n];
+ dest[y*rystride] = s;
}
}
}