Lesson 1: Loop Carry Path From Memory Pointers
2-9
Compiler Optimization Tutorial
Example 2–6. lesson1_c.asm
;*––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––*
;* SOFTWARE PIPELINE INFORMATION
;*
;* Known Minimum Trip Count : 1
;* Known Max Trip Count Factor : 1
;* Loop Carried Dependency Bound(^) : 0
;* Unpartitioned Resource Bound : 2
;* Partitioned Resource Bound(*) : 2
;* Resource Partition:
;* A–side B–side
;* .L units 0 0
;* .S units 1 1
;* .D units 2* 1
;* .M units 1 1
;* .X cross paths 1 0
;* .T address paths 2* 1
;* Long read paths 1 0
;* Long write paths 0 0
;* Logical ops (.LS) 1 0 (.L or .S unit)
;* Addition ops (.LSD) 0 1 (.L or .S or .D unit)
;* Bound(.L .S .LS) 1 1
;* Bound(.L .S .D .LS .LSD) 2* 1
;*
;* Searching for software pipeline schedule at ...
;* ii = 2 Schedule found with 5 iterations in parallel
;* done
;*
;* Collapsed epilog stages : 4
;* Prolog not entirely removed
;* Collapsed prolog stages : 2
;*
;* Minimum required memory pad : 8 bytes
;*
;* Minimum safe trip count : 1
;*
;*––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––*
;* SINGLE SCHEDULED ITERATION
;*
;* C17:
;* LDH .D1T1 *A0++,A4 ; |32|
;* || LDH .D2T2 *B4++,B6 ; |32|
;* NOP 2
;* [ B0] SUB .L2 B0,1,B0 ; |33|
;* [ B0] B .S2 C17 ; |33|
;* MPY .M1 A4,A5,A3 ; |32|
;* || MPY .M2 B6,B5,B7 ; |32|
;* NOP 1
;* ADD .L1X B7,A3,A3 ; |32|
;*––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––*