12 mr KK, OFFSET // OFFSET -> KK
21 #if (defined(LEFT) && defined(TRANSA)) || (!defined(LEFT) && !defined(TRANSA))
25 slwi T1, KK, 5 // Number of values in B shifted
26 slwi T2, KK, 7 // Number of values in A shifted
27 add BO, BO, T1 // Add values to BO
28 add AO, AO, T2 // Add values to AO
31 #if (defined(LEFT) && !defined(TRANSA)) || (!defined(LEFT) && defined(TRANSA))
32 sub T1, K, KK // K - KK -> TEMP1
34 mr T1, KK // KK -> KTEMP
36 addi T1, T1, 8 // KTEMP + Number of values in A -> KTEMP
38 addi T1, T1, 2 // KTEMP + Number of values in B -> KTEMP
44 srawi. L, K1, 3 // KTEMP / 8 -> L
49 ZTRMM_L2x8_LOOP_START:
72 ble ZTRMM_L2x8_LOOP_END
140 andi. L, K1, 7 // K1 & 7 -> L
150 andi. L, K1, 7 // K1 & 7 -> L
164 #if (defined(LEFT) && defined(TRANSA)) || (!defined(LEFT) && !defined(TRANSA))
165 sub T1, K, KKK // K - KKK -> TEMP1
166 slwi T2, T1, 5 // TEMP1 * Number of values in B shifted -> TEMP2
167 slwi T1, T1, 7 // TEMP1 * Number of values in A shifted -> TEMP1
168 add BO, BO, T2 // BO += TEMP2 * number of values in B shifted
169 add AO, AO, T1 // AO += TEMP1 * number of values in A shifted
173 addi KK, KK, 8 // KK += Number of values in A
189 #if (defined(LEFT) && defined(TRANSA)) || (!defined(LEFT) && !defined(TRANSA))
193 slwi T1, KK, 5 // Number of values in B shifted
194 slwi T2, KK, 6 // Number of values in A shifted
195 add BO, BO, T1 // Add values to BO
196 add AO, AO, T2 // Add values to AO
199 #if (defined(LEFT) && !defined(TRANSA)) || (!defined(LEFT) && defined(TRANSA))
200 sub T1, K, KK // K - KK -> TEMP1
202 mr T1, KK // KK -> KTEMP
204 addi T1, T1, 4 // KTEMP + Number of values in A -> KTEMP
206 addi T1, T1, 2 // KTEMP + Number of values in B -> KTEMP
212 srawi. L, K1, 3 // KTEMP / 8 -> L
217 ZTRMM_L2x4_LOOP_START:
231 ble ZTRMM_L2x4_LOOP_END
280 andi. L, K1, 7 // K1 & 7 -> L
290 andi. L, K1, 7 // K1 & 7 -> L
304 #if (defined(LEFT) && defined(TRANSA)) || (!defined(LEFT) && !defined(TRANSA))
305 sub T1, K, KKK // K - KKK -> TEMP1
306 slwi T2, T1, 5 // TEMP1 * Number of values in B shifted -> TEMP2
307 slwi T1, T1, 6 // TEMP1 * Number of values in A shifted -> TEMP1
308 add BO, BO, T2 // BO += TEMP2 * number of values in B shifted
309 add AO, AO, T1 // AO += TEMP1 * number of values in A shifted
313 addi KK, KK, 4 // KK += Number of values in A
324 #if (defined(LEFT) && defined(TRANSA)) || (!defined(LEFT) && !defined(TRANSA))
328 slwi T1, KK, 5 // Number of values in B shifted
329 slwi T2, KK, 5 // Number of values in A shifted
330 add BO, BO, T1 // Add values to BO
331 add AO, AO, T2 // Add values to AO
334 #if (defined(LEFT) && !defined(TRANSA)) || (!defined(LEFT) && defined(TRANSA))
335 sub T1, K, KK // K - KK -> TEMP1
337 mr T1, KK // KK -> KTEMP
339 addi T1, T1, 2 // KTEMP + Number of values in A -> KTEMP
341 addi T1, T1, 2 // KTEMP + Number of values in B -> KTEMP
347 srawi. L, K1, 3 // KTEMP / 8 -> L
352 ZTRMM_L2x2_LOOP_START:
366 ble ZTRMM_L2x2_LOOP_END
415 andi. L, K1, 7 // K1 & 7 -> L
425 andi. L, K1, 7 // K1 & 7 -> L
439 #if (defined(LEFT) && defined(TRANSA)) || (!defined(LEFT) && !defined(TRANSA))
440 sub T1, K, KKK // K - KKK -> TEMP1
441 slwi T2, T1, 5 // TEMP1 * Number of values in B shifted -> TEMP2
442 slwi T1, T1, 5 // TEMP1 * Number of values in A shifted -> TEMP1
443 add BO, BO, T2 // BO += TEMP2 * number of values in B shifted
444 add AO, AO, T1 // AO += TEMP1 * number of values in A shifted
448 addi KK, KK, 2 // KK += Number of values in A
459 #if (defined(LEFT) && defined(TRANSA)) || (!defined(LEFT) && !defined(TRANSA))
463 slwi T1, KK, 5 // Number of values in B shifted
464 slwi T2, KK, 4 // Number of values in A shifted
465 add BO, BO, T1 // Add values to BO
466 add AO, AO, T2 // Add values to AO
469 #if (defined(LEFT) && !defined(TRANSA)) || (!defined(LEFT) && defined(TRANSA))
470 sub T1, K, KK // K - KK -> TEMP1
472 mr T1, KK // KK -> KTEMP
474 addi T1, T1, 1 // KTEMP + Number of values in A -> KTEMP
476 addi T1, T1, 2 // KTEMP + Number of values in B -> KTEMP
482 srawi. L, K1, 3 // KTEMP / 8 -> L
487 ZTRMM_L2x1_LOOP_START:
501 ble ZTRMM_L2x1_LOOP_END
550 andi. L, K1, 7 // K1 & 7 -> L
560 andi. L, K1, 7 // K1 & 7 -> L
574 #if (defined(LEFT) && defined(TRANSA)) || (!defined(LEFT) && !defined(TRANSA))
575 sub T1, K, KKK // K - KKK -> TEMP1
576 slwi T2, T1, 5 // TEMP1 * Number of values in B shifted -> TEMP2
577 slwi T1, T1, 4 // TEMP1 * Number of values in A shifted -> TEMP1
578 add BO, BO, T2 // BO += TEMP2 * number of values in B shifted
579 add AO, AO, T1 // AO += TEMP1 * number of values in A shifted
583 addi KK, KK, 1 // KK += Number of values in A
593 addi KK, KK, 2 // KK += Number of values in B
619 mr KK, OFFSET // OFFSET -> KK
628 #if (defined(LEFT) && defined(TRANSA)) || (!defined(LEFT) && !defined(TRANSA))
632 slwi T1, KK, 4 // Number of values in B shifted
633 slwi T2, KK, 7 // Number of values in A shifted
634 add BO, BO, T1 // Add values to BO
635 add AO, AO, T2 // Add values to AO
638 #if (defined(LEFT) && !defined(TRANSA)) || (!defined(LEFT) && defined(TRANSA))
639 sub T1, K, KK // K - KK -> TEMP1
641 mr T1, KK // KK -> KTEMP
643 addi T1, T1, 8 // KTEMP + Number of values in A -> KTEMP
645 addi T1, T1, 1 // KTEMP + Number of values in B -> KTEMP
651 srawi. L, K1, 3 // KTEMP / 8 -> L
656 ZTRMM_L1x8_LOOP_START:
679 ble ZTRMM_L1x8_LOOP_END
747 andi. L, K1, 7 // K1 & 7 -> L
757 andi. L, K1, 7 // K1 & 7 -> L
771 #if (defined(LEFT) && defined(TRANSA)) || (!defined(LEFT) && !defined(TRANSA))
772 sub T1, K, KKK // K - KKK -> TEMP1
773 slwi T2, T1, 4 // TEMP1 * Number of values in B shifted -> TEMP2
774 slwi T1, T1, 7 // TEMP1 * Number of values in A shifted -> TEMP1
775 add BO, BO, T2 // BO += TEMP2 * number of values in B shifted
776 add AO, AO, T1 // AO += TEMP1 * number of values in A shifted
780 addi KK, KK, 8 // KK += Number of values in A
796 #if (defined(LEFT) && defined(TRANSA)) || (!defined(LEFT) && !defined(TRANSA))
800 slwi T1, KK, 4 // Number of values in B shifted
801 slwi T2, KK, 6 // Number of values in A shifted
802 add BO, BO, T1 // Add values to BO
803 add AO, AO, T2 // Add values to AO
806 #if (defined(LEFT) && !defined(TRANSA)) || (!defined(LEFT) && defined(TRANSA))
807 sub T1, K, KK // K - KK -> TEMP1
809 mr T1, KK // KK -> KTEMP
811 addi T1, T1, 4 // KTEMP + Number of values in A -> KTEMP
813 addi T1, T1, 1 // KTEMP + Number of values in B -> KTEMP
819 srawi. L, K1, 3 // KTEMP / 8 -> L
824 ZTRMM_L1x4_LOOP_START:
838 ble ZTRMM_L1x4_LOOP_END
887 andi. L, K1, 7 // K1 & 7 -> L
897 andi. L, K1, 7 // K1 & 7 -> L
911 #if (defined(LEFT) && defined(TRANSA)) || (!defined(LEFT) && !defined(TRANSA))
912 sub T1, K, KKK // K - KKK -> TEMP1
913 slwi T2, T1, 4 // TEMP1 * Number of values in B shifted -> TEMP2
914 slwi T1, T1, 6 // TEMP1 * Number of values in A shifted -> TEMP1
915 add BO, BO, T2 // BO += TEMP2 * number of values in B shifted
916 add AO, AO, T1 // AO += TEMP1 * number of values in A shifted
920 addi KK, KK, 4 // KK += Number of values in A
931 #if (defined(LEFT) && defined(TRANSA)) || (!defined(LEFT) && !defined(TRANSA))
935 slwi T1, KK, 4 // Number of values in B shifted
936 slwi T2, KK, 5 // Number of values in A shifted
937 add BO, BO, T1 // Add values to BO
938 add AO, AO, T2 // Add values to AO
941 #if (defined(LEFT) && !defined(TRANSA)) || (!defined(LEFT) && defined(TRANSA))
942 sub T1, K, KK // K - KK -> TEMP1
944 mr T1, KK // KK -> KTEMP
946 addi T1, T1, 2 // KTEMP + Number of values in A -> KTEMP
948 addi T1, T1, 1 // KTEMP + Number of values in B -> KTEMP
954 srawi. L, K1, 3 // KTEMP / 8 -> L
959 ZTRMM_L1x2_LOOP_START:
973 ble ZTRMM_L1x2_LOOP_END
1022 andi. L, K1, 7 // K1 & 7 -> L
1032 andi. L, K1, 7 // K1 & 7 -> L
1046 #if (defined(LEFT) && defined(TRANSA)) || (!defined(LEFT) && !defined(TRANSA))
1047 sub T1, K, KKK // K - KKK -> TEMP1
1048 slwi T2, T1, 4 // TEMP1 * Number of values in B shifted -> TEMP2
1049 slwi T1, T1, 5 // TEMP1 * Number of values in A shifted -> TEMP1
1050 add BO, BO, T2 // BO += TEMP2 * number of values in B shifted
1051 add AO, AO, T1 // AO += TEMP1 * number of values in A shifted
1055 addi KK, KK, 2 // KK += Number of values in A
1066 #if (defined(LEFT) && defined(TRANSA)) || (!defined(LEFT) && !defined(TRANSA))
1070 slwi T1, KK, 4 // Number of values in B shifted
1071 slwi T2, KK, 4 // Number of values in A shifted
1072 add BO, BO, T1 // Add values to BO
1073 add AO, AO, T2 // Add values to AO
1076 #if (defined(LEFT) && !defined(TRANSA)) || (!defined(LEFT) && defined(TRANSA))
1077 sub T1, K, KK // K - KK -> TEMP1
1079 mr T1, KK // KK -> KTEMP
1081 addi T1, T1, 1 // KTEMP + Number of values in A -> KTEMP
1083 addi T1, T1, 1 // KTEMP + Number of values in B -> KTEMP
1089 srawi. L, K1, 3 // KTEMP / 8 -> L
1094 ZTRMM_L1x1_LOOP_START:
1108 ble ZTRMM_L1x1_LOOP_END
1127 ZTRMM_L1x1_LOOP_END:
1157 andi. L, K1, 7 // K1 & 7 -> L
1167 andi. L, K1, 7 // K1 & 7 -> L
1181 #if (defined(LEFT) && defined(TRANSA)) || (!defined(LEFT) && !defined(TRANSA))
1182 sub T1, K, KKK // K - KKK -> TEMP1
1183 slwi T2, T1, 4 // TEMP1 * Number of values in B shifted -> TEMP2
1184 slwi T1, T1, 4 // TEMP1 * Number of values in A shifted -> TEMP1
1185 add BO, BO, T2 // BO += TEMP2 * number of values in B shifted
1186 add AO, AO, T1 // AO += TEMP1 * number of values in A shifted
1190 addi KK, KK, 1 // KK += Number of values in A
1197 addi KK, KK, 1 // KK += Number of values in B