SPRUI04G June 2015 – August 2025
By using the C6000 profiling tools, you can identify the time-critical sections of your code that need to be rewritten as linear assembly. The source code that you write for the assembly optimizer is similar to assembly source code. However, linear assembly code does not need to be partitioned, scheduled, or register allocated. The intention is for you to let the assembly optimizer determine this information for you. When you are writing linear assembly code, you need to know about these items:
| Option | Effect | See |
|---|---|---|
| --ap_extension | Changes the default extension for assembly optimizer source files | Section 3.3.10 |
| --ap_file | Changes how assembly optimizer source files are identified | Section 3.3.8 |
| --disable_software_pipelining | Turns off software pipelining | Section 4.6.1 |
| --debug_software_pipeline | Generates verbose software pipelining information | Section 4.6.2 |
| --interrupt_threshold=n | Specifies an interrupt threshold value | Section 3.12 |
| --keep_asm | Keeps the assembly language (.asm) file | Section 3.3.2 |
| --no_bad_aliases | Presumes no memory aliasing | Section 4.12.3 |
| --opt_for_space=n | Controls code size on four levels (n=0, 1, 2, or 3) | Section 4.9 |
| --opt_level=n | Increases level of optimization (n=0, 1, 2, or 3) | Section 4.1 |
| --quiet | Suppresses progress messages | Section 3.3.2 |
| --silicon_version=n | Select target version | Section 3.3.5 |
| --skip_assembler | Compiles or assembly optimizes only (does not assemble) | Section 3.3.2 |
| --speculate_loads=n | Allows speculative execution of loads with bounded address ranges | Section 4.6.3 |
As with other code generation tools, you might need to modify your linear assembly code until you are satisfied with its performance. When you do this, you will probably want to add more detail to your linear assembly. For example, you might want to partition or assign some registers.
If the compiler cannot make your instructions linear (non-parallel), it produces an error message. The compiler assumes instructions occur in the order the instructions appear in the file. Scheduled code is illegal (even non-parallel scheduled code). Scheduled code may not be detected by the compiler but the resulting output may not be what you intended.