In the following assembly code, B0 is not decremented with SUB instruction. SUB instruction seems not to work.
03288265 LDW.D1T1 *+A10[4],A6
032882E7 || LDW.D2T2 *+B10[4],B6
0003E1A2 || SUB.S2 B0,1,B0
2FFFF693 [ B0] B.S2 LOOP (PC-76 = 0x1181e494)
06B1BE19 || ADDSP.S1X A13,B12,A13
06B1B21B || ADDSP.L2X B13,A12,B13
03A8C265 || LDW.D1T1 *+A10[6],A7
03A8C2E6 || LDW.D2T2 *+B10[6],B7
Please see the attached file for a series of assembly code:
07BE9DC2 SUBAW.D2 SP,0x14,SP
07BC18F1 OR.D1X 0,SP,FP
07BC22F4 || STW.D2T1 FP,*+SP[1]
073C42F5 STW.D2T1 A14,*+SP[2]
073CE276 || STW.D1T2 DP,*+FP[7]
06BC62F5 STW.D2T1 A13,*+SP[3]
06BD0276 || STW.D1T2 B13,*+FP[8]
063C82F5 STW.D2T1 A12,*+SP[4]
063D2276 || STW.D1T2 B12,*+FP[9]
05BCA2F5 STW.D2T1 A11,*+SP[5]
05BD4276 || STW.D1T2 B11,*+FP[10]
053CC2F5 STW.D2T1 A10,*+SP[6]
053D6276 || STW.D1T2 B10,*+FP[11]
071808F1 OR.D1 0,A6,A14
071816A3 || OR.S2X 0,A6,DP
051816A1 || OR.S1X 0,B6,A10
05183D42 || ADDAW.D2 B6,0x1,B10
029018F3 OR.D2X 0,A4,B5
029018F1 || OR.D1X 0,B4,A5
000002AA || MVK.S2 0x0005,B0
04383765 LDDW.D1T1 *A14++[1],A9:A8
043837E6 || LDDW.D2T2 *DP++[1],B9:B8
03280265 LDW.D1T1 *+A10[0],A6
032802E6 || LDW.D2T2 *+B10[0],B6
04383765 LDDW.D1T1 *A14++[1],A9:A8
043837E6 || LDDW.D2T2 *DP++[1],B9:B8
03A84265 LDW.D1T1 *+A10[2],A7
03A842E6 || LDW.D2T2 *+B10[2],B7
00000000 NOP
LOOP:
06A0BE03 MPYSP.M2X B5,A8,B13
06911E00 || MPYSP.M1X A8,B4,A13
06249E03 MPYSP.M2X B4,A9,B12
06153E00 || MPYSP.M1X A9,B5,A12
06A0BE03 MPYSP.M2X B5,A8,B13
06911E00 || MPYSP.M1X A8,B4,A13
06249E03 MPYSP.M2X B4,A9,B12
06153E00 || MPYSP.M1X A9,B5,A12
0119BE1B ADDSP.S2X B13,A6,B2
0119BEB8 || SUBSP.S1X B6,A13,A2
05B018F1 OR.D1X 0,B12,A11
05B018F2 || OR.D2X 0,A12,B11
06B4FE19 ADDSP.S1X A7,B13,A13
06B4FE3A || SUBSP.S2X B7,A13,B13
00000000 NOP
05897E19 ADDSP.S1X A11,B2,A11
05897E1A || ADDSP.S2X B11,A2,B11
03288265 LDW.D1T1 *+A10[4],A6
032882E7 || LDW.D2T2 *+B10[4],B6
0003E1A2 || SUB.S2 B0,1,B0
2FFFF693 [ B0] B.S2 LOOP (PC-76 = 0x1181e494)
06B1BE19 || ADDSP.S1X A13,B12,A13
06B1B21B || ADDSP.L2X B13,A12,B13
03A8C265 || LDW.D1T1 *+A10[6],A7
03A8C2E6 || LDW.D2T2 *+B10[6],B7
04383765 LDDW.D1T1 *A14++[1],A9:A8
043837E6 || LDDW.D2T2 *DP++[1],B9:B8
05A85675 STW.D1T1 A11,*A10++[2]
05A856F6 || STW.D2T2 B11,*B10++[2]
04383765 LDDW.D1T1 *A14++[1],A9:A8
043837E6 || LDDW.D2T2 *DP++[1],B9:B8
06A85675 STW.D1T1 A13,*A10++[2]
06A856F6 || STW.D2T2 B13,*B10++[2]
00000000 NOP
07BC18F0 OR.D1X 0,SP,FP
053CC2E5 LDW.D2T1 *+SP[6],A10
053D6266 || LDW.D1T2 *+FP[11],B10
05BCA2E5 LDW.D2T1 *+SP[5],A11
05BD4266 || LDW.D1T2 *+FP[10],B11
063C82E5 LDW.D2T1 *+SP[4],A12
063D2266 || LDW.D1T2 *+FP[9],B12
06BC62E5 LDW.D2T1 *+SP[3],A13
06BD0266 || LDW.D1T2 *+FP[8],B13
073C42E5 LDW.D2T1 *+SP[2],A14
073CE267 || LDW.D1T2 *+FP[7],DP
000C0362 || B.S2 B3
07BC22E4 LDW.D2T1 *+SP[1],FP
178014FE ADDAW.D2 B15,20,SP
00000000 NOP
00000000 NOP
00000000 NOP
In the following assembly code, B0 is decremented with SUB instruction. SUB instruction works with .L2 unit.
03288265 LDW.D1T1 *+A10[4],A6
032882E7 || LDW.D2T2 *+B10[4],B6
0003E05A || SUB.L2 B0,1,B0
2FFFF693 [ B0] B.S2 LOOP (PC-76 = 0x1181e494)
06B1BE19 || ADDSP.S1X A13,B12,A13
06B1B21B || ADDSP.L2X B13,A12,B13
03A8C265 || LDW.D1T1 *+A10[6],A7
03A8C2E6 || LDW.D2T2 *+B10[6],B7
Please see the attached file for a series of assembly code:
07BE9DC2 SUBAW.D2 SP,0x14,SP
07BC18F1 OR.D1X 0,SP,FP
07BC22F4 || STW.D2T1 FP,*+SP[1]
073C42F5 STW.D2T1 A14,*+SP[2]
073CE276 || STW.D1T2 DP,*+FP[7]
06BC62F5 STW.D2T1 A13,*+SP[3]
06BD0276 || STW.D1T2 B13,*+FP[8]
063C82F5 STW.D2T1 A12,*+SP[4]
063D2276 || STW.D1T2 B12,*+FP[9]
05BCA2F5 STW.D2T1 A11,*+SP[5]
05BD4276 || STW.D1T2 B11,*+FP[10]
053CC2F5 STW.D2T1 A10,*+SP[6]
053D6276 || STW.D1T2 B10,*+FP[11]
071808F1 OR.D1 0,A6,A14
071816A3 || OR.S2X 0,A6,DP
051816A1 || OR.S1X 0,B6,A10
05183D42 || ADDAW.D2 B6,0x1,B10
029018F3 OR.D2X 0,A4,B5
029018F1 || OR.D1X 0,B4,A5
000002AA || MVK.S2 0x0005,B0
04383765 LDDW.D1T1 *A14++[1],A9:A8
043837E6 || LDDW.D2T2 *DP++[1],B9:B8
03280265 LDW.D1T1 *+A10[0],A6
032802E6 || LDW.D2T2 *+B10[0],B6
04383765 LDDW.D1T1 *A14++[1],A9:A8
043837E6 || LDDW.D2T2 *DP++[1],B9:B8
03A84265 LDW.D1T1 *+A10[2],A7
03A842E6 || LDW.D2T2 *+B10[2],B7
00000000 NOP
LOOP:
06A0BE03 MPYSP.M2X B5,A8,B13
06911E00 || MPYSP.M1X A8,B4,A13
06249E03 MPYSP.M2X B4,A9,B12
06153E00 || MPYSP.M1X A9,B5,A12
06A0BE03 MPYSP.M2X B5,A8,B13
06911E00 || MPYSP.M1X A8,B4,A13
06249E03 MPYSP.M2X B4,A9,B12
06153E00 || MPYSP.M1X A9,B5,A12
0119BE1B ADDSP.S2X B13,A6,B2
0119BEB8 || SUBSP.S1X B6,A13,A2
05B018F1 OR.D1X 0,B12,A11
05B018F2 || OR.D2X 0,A12,B11
06B4FE19 ADDSP.S1X A7,B13,A13
06B4FE3A || SUBSP.S2X B7,A13,B13
00000000 NOP
05897E19 ADDSP.S1X A11,B2,A11
05897E1A || ADDSP.S2X B11,A2,B11
03288265 LDW.D1T1 *+A10[4],A6
032882E7 || LDW.D2T2 *+B10[4],B6
0003E05A || SUB.L2 B0,1,B0
2FFFF693 [ B0] B.S2 LOOP (PC-76 = 0x1181e494)
06B1BE19 || ADDSP.S1X A13,B12,A13
06B1B21B || ADDSP.L2X B13,A12,B13
03A8C265 || LDW.D1T1 *+A10[6],A7
03A8C2E6 || LDW.D2T2 *+B10[6],B7
04383765 LDDW.D1T1 *A14++[1],A9:A8
043837E6 || LDDW.D2T2 *DP++[1],B9:B8
05A85675 STW.D1T1 A11,*A10++[2]
05A856F6 || STW.D2T2 B11,*B10++[2]
04383765 LDDW.D1T1 *A14++[1],A9:A8
043837E6 || LDDW.D2T2 *DP++[1],B9:B8
06A85675 STW.D1T1 A13,*A10++[2]
06A856F6 || STW.D2T2 B13,*B10++[2]
00000000 NOP
07BC18F0 OR.D1X 0,SP,FP
053CC2E5 LDW.D2T1 *+SP[6],A10
053D6266 || LDW.D1T2 *+FP[11],B10
05BCA2E5 LDW.D2T1 *+SP[5],A11
05BD4266 || LDW.D1T2 *+FP[10],B11
063C82E5 LDW.D2T1 *+SP[4],A12
063D2266 || LDW.D1T2 *+FP[9],B12
06BC62E5 LDW.D2T1 *+SP[3],A13
06BD0266 || LDW.D1T2 *+FP[8],B13
073C42E5 LDW.D2T1 *+SP[2],A14
073CE267 || LDW.D1T2 *+FP[7],DP
000C0362 || B.S2 B3
07BC22E4 LDW.D2T1 *+SP[1],FP
178014FE ADDAW.D2 B15,20,SP
00000000 NOP
00000000 NOP
00000000 NOP
Why does the SUB instruction not work in the first assembly code?
Best regards,
Daisuke