Hi, I have a question about the software pipeline.
I used the C6678EVM device and set the compiler options with -o3, -g.
I writing a function and see its assembly file in the CCS v5.03, however I found there is no software pipeline in it. The information of assembly file(line 116) as follow:
;*----------------------------------------------------------------------------*;* SOFTWARE PIPELINE INFORMATION;* Disqualified loop: Loop contains a call;*----------------------------------------------------------------------------*
$C$L28: $C$DW$L$InstrisicTest$5$B: .dwpsn file "../EdgeEnhancementTest.c",line 153,column 4,is_stmt,isa 0$C$DW$126 .dwtag DW_TAG_TI_branch .dwattr $C$DW$126, DW_AT_low_pc(0x00) .dwattr $C$DW$126, DW_AT_name("__c6xabi_fltllid") .dwattr $C$DW$126, DW_AT_TI_call CALL .S1 __c6xabi_fltllid ; |153| LDDW .D1T1 *A11,A5:A4 ; |153| ADDKPC .S2 $C$RL2,B3,3 ; |153| $C$RL2: ; CALL OCCURS {__c6xabi_fltllid} {0} ; |153| $C$DW$L$InstrisicTest$5$E:
My code in the line 153 as follow:
i32DataOutput3 = _dotpsu4(iMult3_1_low, ui32DataInput1_low) + _dotpsu4(iMult3_1_high, ui32DataInput1_high) \ + _dotpsu4(iMult3_2_low, ui32DataInput2_low) + _dotpsu4(iMult3_2_high, ui32DataInput2_high) \ + _dotpsu4(iMult3_3_low, ui32DataInput3_low) + _dotpsu4(iMult3_3_high, ui32DataInput3_high) \ + _dotpsu4(iMult3_4_low, ui32DataInput4_low) + _dotpsu4(iMult3_4_high, ui32DataInput4_high) \ + _dotpsu4(iMult3_5_low, ui32DataInput5_low) + _dotpsu4(iMult3_5_high, ui32DataInput5_high);
Would you give me some advices. Thank you!
The source file and the assembly file as follow:
1777.InstrisicTest.rar
Regards,
Tianxing
Hi,
You are using _lo(double) and _hi(double) instrinsic, that generate int to double conversion (-> call to _c6xabi_fltllid). Use _loll() and _hill() instead.
Since you use "-g", consider also using "-optimize_with_debug", and .
Hi Alberto,
Thank you for your reply. It solves my problem in a timely manner, thank you very much.