at least one of these changes apparently is an oversimplification, leading to TRMM breakage on some platforms as observed in #1563
if (m & 1) {
if (X > posY) {
- /* ao1 += 1;
- ao2 += 1; */
+ ao1 += 1;
+ ao2 += 1;
b += 2;
} else
-#ifdef UNIT
if (X < posY) {
-#endif
- b[ 0] = *(ao1 + 0);
-#ifdef UNIT
+ data01 = *(ao1 + 0);
+ data02 = *(ao1 + 1);
+
+ b[ 0] = data01;
+ b[ 1] = data02;
+ ao1 += lda;
+ b += 2;
} else {
+#ifdef UNIT
+ data02 = *(ao1 + 1);
b[ 0] = ONE;
+ b[ 1] = data02;
+#else
+ data01 = *(ao1 + 0);
+ data02 = *(ao1 + 1);
+
+ b[ 0] = data01;
+ b[ 1] = data02;
+#endif
+ ao1 += 2;
+ b += 2;
}
-#endif
- b[ 1] = *(ao1 + 1);
- b += 2;
}
posY += 2;
} while (i > 0);
}
- // posY += 1;
+ posY += 1;
}
return 0;
i = (m & 15);
if (i > 0) {
if (X < posY) {
- /* a01 += i;
+ a01 += i;
a02 += i;
a03 += i;
a04 += i;
a13 += i;
a14 += i;
a15 += i;
- a16 += i; */
+ a16 += i;
b += 16 * i;
} else
if (X > posY) {
i = (m & 7);
if (i > 0) {
if (X < posY) {
- /* a01 += i;
+ a01 += i;
a02 += i;
a03 += i;
a04 += i;
a05 += i;
a06 += i;
a07 += i;
- a08 += i; */
+ a08 += i;
b += 8 * i;
} else
if (X > posY) {
b += 8;
}
- /* a02 += i * lda;
+ a02 += i * lda;
a03 += i * lda;
a04 += i * lda;
a05 += i * lda;
a06 += i * lda;
a07 += i * lda;
- a08 += i * lda; */
+ a08 += i * lda;
} else {
#ifdef UNIT
b[ 0] = ONE;
i = (m & 3);
if (i > 0) {
if (X < posY) {
- /* a01 += i;
+ a01 += i;
a02 += i;
a03 += i;
- a04 += i; */
+ a04 += i;
b += 4 * i;
} else
if (X > posY) {
a01 += lda;
b += 4;
}
- /* a02 += lda;
+ a02 += lda;
a03 += lda;
- a04 += lda; */
+ a04 += lda;
} else {
#ifdef UNIT
if (X < posY) {
a01 ++;
a02 ++;
- } else {
-#ifdef UNIT
+ b += 2;
+ } else
if (X > posY) {
-#endif
b[ 0] = *(a01 + 0);
-#ifdef UNIT
+ b[ 1] = *(a01 + 1);
+ a01 += lda;
+ b += 2;
} else {
+#ifdef UNIT
b[ 0] = ONE;
- }
+ b[ 1] = *(a01 + 1);
+#else
+ b[ 0] = *(a01 + 0);
+ b[ 1] = *(a01 + 1);
#endif
- b[ 1] = *(a01 + 1);
- }
- b += 2;
+ b += 2;
+ }
}
posY += 2;
}
if (i > 0) {
do {
if (X < posY) {
- a01 ++;
- } else {
-#ifdef UNIT
+ a01 += 1;
+ b ++;
+ } else
if (X > posY) {
-#endif
b[ 0] = *(a01 + 0);
-#ifdef UNIT
+ a01 += lda;
+ b ++;
} else {
+#ifdef UNIT
b[ 0] = ONE;
- }
+#else
+ b[ 0] = *(a01 + 0);
#endif
- a01 += lda;
- }
- b ++;
- X ++;
- i --;
+ a01 += lda;
+ b ++;
+ }
+
+ X += 1;
+ i --;
} while (i > 0);
}
- // posY += 1;
+ posY += 1;
}
return 0;
if (m & 1) {
if (X < posY) {
- /* ao1 += 1;
- ao2 += 1; */
+ ao1 += 1;
+ ao2 += 1;
b += 2;
} else
if (X > posY) {
b[ 0] = data01;
b[ 1] = data02;
- // ao1 += lda;
+ ao1 += lda;
b += 2;
} else {
#ifdef UNIT
b[ 0] = data01;
b[ 1] = ZERO;
#endif
- // ao1 += lda;
+ ao1 += lda;
b += 2;
}
}
i = m;
if (m > 0) {
do {
+ if (X < posY) {
+ b += 1;
+ ao1 += 1;
+ } else
+ if (X > posY) {
+ data01 = *(ao1 + 0);
+ b[ 0] = data01;
+ b += 1;
+ ao1 += lda;
+ } else {
#ifdef UNIT
- if (X > posY) {
-#endif
- b[ 0] = *(ao1 + 0);
-#ifdef UNIT
- } else {
- b[ 0] = ONE;
- }
+ b[ 0] = ONE;
+#else
+ data01 = *(ao1 + 0);
+ b[ 0] = data01;
#endif
- b ++;
- ao1 += lda;
- X ++;
+ b += 1;
+ ao1 += lda;
+ }
+
+ X += 1;
i --;
} while (i > 0);
}
if (X < posY) {
if (m & 2) {
- /* ao1 += 2;
+ ao1 += 2;
ao2 += 2;
ao3 += 2;
- ao4 += 2; */
+ ao4 += 2;
b += 8;
}
if (m & 1) {
- /* ao1 += 1;
+ ao1 += 1;
ao2 += 1;
ao3 += 1;
- ao4 += 1; */
+ ao4 += 1;
b += 4;
}
b[ 7] = data08;
ao1 += 2 * lda;
- // ao2 += 2 * lda;
+ ao2 += 2 * lda;
b += 8;
}
b[ 2] = data03;
b[ 3] = data04;
- // ao1 += lda;
+ ao1 += lda;
b += 4;
}
if (i) {
if (X < posY) {
- // ao1 += 2;
+ ao1 += 2;
b += 2;
} else
if (X > posY) {
b[ 0] = data01;
b[ 1] = data02;
- // ao1 += lda;
+ ao1 += lda;
b += 2;
} else {
#ifdef UNIT
do {
if (X < posY) {
+ b += 1;
ao1 += 1;
- } else {
-#ifdef UNIT
+ } else
if (X > posY) {
-#endif
- b[ 0] = *(ao1 + 0);
-#ifdef UNIT
+ data01 = *(ao1 + 0);
+ b[ 0] = data01;
+ ao1 += lda;
+ b += 1;
} else {
+#ifdef UNIT
b[ 0] = ONE;
- }
+#else
+ data01 = *(ao1 + 0);
+ b[ 0] = data01;
#endif
- ao1 += lda;
- }
- b ++;
- X ++;
+ ao1 += lda;
+ b += 1;
+ }
+
+ X += 1;
i --;
} while (i > 0);
}
}
a1 += 2 * lda;
- // a2 += 2 * lda;
+ a2 += 2 * lda;
b += 8;
ii += 2;
}
if (m & 1) {
-#ifdef UNIT
+
+ if (X > posY) {
+ ao1 += 2;
+ ao2 += 2;
+ b += 4;
+
+ } else
if (X < posY) {
-#endif
- b[ 0] = *(ao1 + 0);
- b[ 1] = *(ao1 + 1);
-#ifdef UNIT
+ data1 = *(ao1 + 0);
+ data2 = *(ao1 + 1);
+ data3 = *(ao1 + 2);
+ data4 = *(ao1 + 3);
+
+ b[ 0] = data1;
+ b[ 1] = data2;
+ b[ 2] = data3;
+ b[ 3] = data4;
+
+ ao1 += lda;
+ b += 4;
} else {
+#ifdef UNIT
+ data3 = *(ao1 + 2);
+ data4 = *(ao1 + 3);
+
b[ 0] = ONE;
b[ 1] = ZERO;
- }
+ b[ 2] = data3;
+ b[ 3] = data4;
+#else
+ data1 = *(ao1 + 0);
+ data2 = *(ao1 + 1);
+ data3 = *(ao1 + 2);
+ data4 = *(ao1 + 3);
+
+ b[ 0] = data1;
+ b[ 1] = data2;
+ b[ 2] = data3;
+ b[ 3] = data4;
#endif
- b += 4;
+ b += 4;
+ }
}
posY += 2;
} while (i > 0);
}
- // posY += 1;
+ posY += 1;
}
return 0;
BLASLONG i, ii, j, jj;
- FLOAT data01 = 0.0, data02 = 0.0;
+ FLOAT data01, data02;
FLOAT *a1;
lda *= 2;
BLASLONG i, ii, j, jj;
- FLOAT data01 = 0.0, data02 = 0.0, data03, data04;
- FLOAT data05, data06, data07 = 0.0, data08 = 0.0;
+ FLOAT data01, data02, data03, data04;
+ FLOAT data05, data06, data07, data08;
FLOAT *a1, *a2;
lda *= 2;