Tool/software: TI C/C++ Compiler
I compile the following code
float dotp_f32_f32_f32( const float * a, const float * b, int num )
{
int i;
float result = 0.0f;
_nassert( num > 1 );
for ( i = 0; i < num; i++ )
{
result += *a++ * *b++;
}
return result;
}
I compile with the following command line (through CCS)
**** Build of configuration Release for project temp ****
"C:\\ti\\ccsv6\\utils\\bin\\gmake" -k temp.obj
'Building file: ../temp.c'
'Invoking: C2000 Compiler'
"C:/ti/ccsv6/tools/compiler/ti-cgt-c2000_17.9.0.STS/bin/cl2000" -v28 -ml -mt --cla_support=cla1 --float_support=fpu32 --tmu_support=tmu0 --vcu_support=vcu2 -O2 --include_path="C:/ti/ccsv6/tools/compiler/ti-cgt-c2000_17.9.0.STS/include" --diag_warning=225 --diag_wrap=off --display_error_number -k --src_interlist --preproc_with_compile --preproc_dependency="temp.d" "../temp.c"
'Finished building: ../temp.c'
' '
**** Build Finished ****
This produces the following assembly file
;***************************************************************
;* TMS320C2000 C/C++ Codegen PC v17.9.0.STS *
;* Date/Time created: Wed Nov 15 14:58:05 2017 *
;***************************************************************
.compiler_opts --abi=coffabi --cla_support=cla1 --diag_wrap=off --float_support=fpu32 --hll_source=on --mem_model:code=flat --mem_model:data=large --object_format=coff --silicon_version=28 --symdebug:dwarf --symdebug:dwarf_version=3 --tmu_support=tmu0
.asg XAR2, FP
$C$DW$CU .dwtag DW_TAG_compile_unit
.dwattr $C$DW$CU, DW_AT_name("../temp.c")
.dwattr $C$DW$CU, DW_AT_producer("TI TMS320C2000 C/C++ Codegen PC v17.9.0.STS Copyright (c) 1996-2017 Texas Instruments Incorporated")
.dwattr $C$DW$CU, DW_AT_TI_version(0x01)
.dwattr $C$DW$CU, DW_AT_comp_dir("C:\Users\rist-1\CcsWorkspace\temp\Release")
$C$DW$1 .dwtag DW_TAG_subprogram
.dwattr $C$DW$1, DW_AT_name("_nassert")
.dwattr $C$DW$1, DW_AT_TI_symbol_name("__nassert")
.dwattr $C$DW$1, DW_AT_declaration
.dwattr $C$DW$1, DW_AT_external
$C$DW$2 .dwtag DW_TAG_formal_parameter
.dwattr $C$DW$2, DW_AT_type(*$C$DW$T$10)
.dwendtag $C$DW$1
; C:\ti\ccsv6\tools\compiler\ti-cgt-c2000_17.9.0.STS\bin\opt2000.exe C:\\Users\\rist-1\\AppData\\Local\\Temp\\{4F90EC8F-0DF8-485A-87B1-8676861B4445} C:\\Users\\rist-1\\AppData\\Local\\Temp\\{A8E3CBE3-D0B5-44F6-B2FB-145805233A8E}
; C:\ti\ccsv6\tools\compiler\ti-cgt-c2000_17.9.0.STS\bin\ac2000.exe -@C:\\Users\\rist-1\\AppData\\Local\\Temp\\{A641DD8E-03A8-4DEB-873D-C8C4B53EA530}
.sect ".text"
.clink
.global _dotp_f32_f32_f32
$C$DW$3 .dwtag DW_TAG_subprogram
.dwattr $C$DW$3, DW_AT_name("dotp_f32_f32_f32")
.dwattr $C$DW$3, DW_AT_low_pc(_dotp_f32_f32_f32)
.dwattr $C$DW$3, DW_AT_high_pc(0x00)
.dwattr $C$DW$3, DW_AT_TI_symbol_name("_dotp_f32_f32_f32")
.dwattr $C$DW$3, DW_AT_external
.dwattr $C$DW$3, DW_AT_type(*$C$DW$T$16)
.dwattr $C$DW$3, DW_AT_TI_begin_file("../temp.c")
.dwattr $C$DW$3, DW_AT_TI_begin_line(0x01)
.dwattr $C$DW$3, DW_AT_TI_begin_column(0x07)
.dwattr $C$DW$3, DW_AT_TI_max_frame_size(-6)
.dwpsn file "../temp.c",line 2,column 1,is_stmt,address _dotp_f32_f32_f32,isa 0
.dwfde $C$DW$CIE, _dotp_f32_f32_f32
$C$DW$4 .dwtag DW_TAG_formal_parameter
.dwattr $C$DW$4, DW_AT_name("a")
.dwattr $C$DW$4, DW_AT_TI_symbol_name("_a")
.dwattr $C$DW$4, DW_AT_type(*$C$DW$T$23)
.dwattr $C$DW$4, DW_AT_location[DW_OP_reg12]
$C$DW$5 .dwtag DW_TAG_formal_parameter
.dwattr $C$DW$5, DW_AT_name("b")
.dwattr $C$DW$5, DW_AT_TI_symbol_name("_b")
.dwattr $C$DW$5, DW_AT_type(*$C$DW$T$23)
.dwattr $C$DW$5, DW_AT_location[DW_OP_reg14]
$C$DW$6 .dwtag DW_TAG_formal_parameter
.dwattr $C$DW$6, DW_AT_name("num")
.dwattr $C$DW$6, DW_AT_TI_symbol_name("_num")
.dwattr $C$DW$6, DW_AT_type(*$C$DW$T$10)
.dwattr $C$DW$6, DW_AT_location[DW_OP_reg0]
;***************************************************************
;* FNAME: _dotp_f32_f32_f32 FR SIZE: 4 *
;* *
;* FUNCTION ENVIRONMENT *
;* *
;* FUNCTION PROPERTIES *
;* 0 Parameter, 0 Auto, 4 SOE *
;***************************************************************
_dotp_f32_f32_f32:
;* R2H assigned to $O$T1
$C$DW$7 .dwtag DW_TAG_variable
.dwattr $C$DW$7, DW_AT_name("O$T1")
.dwattr $C$DW$7, DW_AT_TI_symbol_name("$O$T1")
.dwattr $C$DW$7, DW_AT_type(*$C$DW$T$16)
.dwattr $C$DW$7, DW_AT_location[DW_OP_regx 0x33]
;* AR5 assigned to $O$L1
$C$DW$8 .dwtag DW_TAG_variable
.dwattr $C$DW$8, DW_AT_name("O$L1")
.dwattr $C$DW$8, DW_AT_TI_symbol_name("$O$L1")
.dwattr $C$DW$8, DW_AT_type(*$C$DW$T$10)
.dwattr $C$DW$8, DW_AT_location[DW_OP_reg14]
;* AR4 assigned to _a
$C$DW$9 .dwtag DW_TAG_variable
.dwattr $C$DW$9, DW_AT_name("a")
.dwattr $C$DW$9, DW_AT_TI_symbol_name("_a")
.dwattr $C$DW$9, DW_AT_type(*$C$DW$T$23)
.dwattr $C$DW$9, DW_AT_location[DW_OP_reg12]
;* AR7 assigned to _b
$C$DW$10 .dwtag DW_TAG_variable
.dwattr $C$DW$10, DW_AT_name("b")
.dwattr $C$DW$10, DW_AT_TI_symbol_name("_b")
.dwattr $C$DW$10, DW_AT_type(*$C$DW$T$23)
.dwattr $C$DW$10, DW_AT_location[DW_OP_reg18]
;* AR5 assigned to _num
$C$DW$11 .dwtag DW_TAG_variable
.dwattr $C$DW$11, DW_AT_name("num")
.dwattr $C$DW$11, DW_AT_TI_symbol_name("_num")
.dwattr $C$DW$11, DW_AT_type(*$C$DW$T$20)
.dwattr $C$DW$11, DW_AT_location[DW_OP_reg14]
;* R3H assigned to _result
$C$DW$12 .dwtag DW_TAG_variable
.dwattr $C$DW$12, DW_AT_name("result")
.dwattr $C$DW$12, DW_AT_TI_symbol_name("_result")
.dwattr $C$DW$12, DW_AT_type(*$C$DW$T$16)
.dwattr $C$DW$12, DW_AT_location[DW_OP_regx 0x37]
.dwcfi cfa_offset, -2
.dwcfi save_reg_to_mem, 26, 0
;*** ----------------------- L$1 = num-1;
;*** 4 ----------------------- result = T$1 = 0.0F;
;*** ----------------------- #pragma MUST_ITERATE(2, 32767, 1)
;*** ----------------------- #pragma LOOP_FLAGS(4096u)
;*** -----------------------g2:
;*** 9 ----------------------- __parallel_mpy_add_f32(*a++, *b++, &(result), &(T$1));
;*** 7 ----------------------- if ( (--L$1) != (-1) ) goto g2;
;*** 12 ----------------------- result += T$1;
;*** 12 ----------------------- return result;
MOVL XAR7,XAR5 ; [CPU_ALU] |2|
MOV32 *SP++,R6H ; [CPU_FPU]
.dwpsn file "../temp.c",line 4,column 18,is_stmt,isa 0
ZERO R2H ; [CPU_FPU] |4|
.dwpsn file "../temp.c",line 2,column 1,is_stmt,isa 0
MOVZ AR5,AL ; [CPU_ALU] |2|
.dwpsn file "../temp.c",line 9,column 9,is_stmt,isa 0
ZERO R6H ; [CPU_FPU] |9|
MOV32 *SP++,R7H ; [CPU_FPU]
.dwpsn file "../temp.c",line 4,column 18,is_stmt,isa 0
MOV32 R3H,R2H ; [CPU_FPU] |4|
.dwpsn file "../temp.c",line 9,column 9,is_stmt,isa 0
ZERO R7H ; [CPU_FPU] |9|
SUBB XAR5,#1 ; [CPU_ARAU]
RPT AR5
|| MACF32 R7H,R3H,*XAR4++,*XAR7++ ; [CPU_FPU] |9|
ADDF32 R3H,R3H,R2H ; [CPU_FPU] |9|
ADDF32 R2H,R7H,R6H ; [CPU_FPU] |9|
.dwpsn file "../temp.c",line 12,column 5,is_stmt,isa 0
MOV32 R7H,*--SP ; [CPU_FPU] |12|
MOV32 R6H,*--SP ; [CPU_FPU] |12|
|| ADDF32 R0H,R2H,R3H ; [CPU_FPU] |12|
$C$DW$13 .dwtag DW_TAG_TI_branch
.dwattr $C$DW$13, DW_AT_low_pc(0x00)
.dwattr $C$DW$13, DW_AT_TI_return
LRETR ; [CPU_ALU]
; return occurs ; []
.dwattr $C$DW$3, DW_AT_TI_end_file("../temp.c")
.dwattr $C$DW$3, DW_AT_TI_end_line(0x0d)
.dwattr $C$DW$3, DW_AT_TI_end_column(0x01)
.dwendentry
.dwendtag $C$DW$3
;***************************************************************
;* TYPE INFORMATION *
;***************************************************************
$C$DW$T$2 .dwtag DW_TAG_unspecified_type
.dwattr $C$DW$T$2, DW_AT_name("void")
$C$DW$T$4 .dwtag DW_TAG_base_type
.dwattr $C$DW$T$4, DW_AT_encoding(DW_ATE_boolean)
.dwattr $C$DW$T$4, DW_AT_name("bool")
.dwattr $C$DW$T$4, DW_AT_byte_size(0x01)
$C$DW$T$5 .dwtag DW_TAG_base_type
.dwattr $C$DW$T$5, DW_AT_encoding(DW_ATE_signed_char)
.dwattr $C$DW$T$5, DW_AT_name("signed char")
.dwattr $C$DW$T$5, DW_AT_byte_size(0x01)
$C$DW$T$6 .dwtag DW_TAG_base_type
.dwattr $C$DW$T$6, DW_AT_encoding(DW_ATE_unsigned_char)
.dwattr $C$DW$T$6, DW_AT_name("unsigned char")
.dwattr $C$DW$T$6, DW_AT_byte_size(0x01)
$C$DW$T$7 .dwtag DW_TAG_base_type
.dwattr $C$DW$T$7, DW_AT_encoding(DW_ATE_signed_char)
.dwattr $C$DW$T$7, DW_AT_name("wchar_t")
.dwattr $C$DW$T$7, DW_AT_byte_size(0x01)
$C$DW$T$8 .dwtag DW_TAG_base_type
.dwattr $C$DW$T$8, DW_AT_encoding(DW_ATE_signed)
.dwattr $C$DW$T$8, DW_AT_name("short")
.dwattr $C$DW$T$8, DW_AT_byte_size(0x01)
$C$DW$T$9 .dwtag DW_TAG_base_type
.dwattr $C$DW$T$9, DW_AT_encoding(DW_ATE_unsigned)
.dwattr $C$DW$T$9, DW_AT_name("unsigned short")
.dwattr $C$DW$T$9, DW_AT_byte_size(0x01)
$C$DW$T$10 .dwtag DW_TAG_base_type
.dwattr $C$DW$T$10, DW_AT_encoding(DW_ATE_signed)
.dwattr $C$DW$T$10, DW_AT_name("int")
.dwattr $C$DW$T$10, DW_AT_byte_size(0x01)
$C$DW$14 .dwtag DW_TAG_TI_far_type
.dwattr $C$DW$14, DW_AT_type(*$C$DW$T$10)
$C$DW$T$20 .dwtag DW_TAG_const_type
.dwattr $C$DW$T$20, DW_AT_type(*$C$DW$14)
$C$DW$T$11 .dwtag DW_TAG_base_type
.dwattr $C$DW$T$11, DW_AT_encoding(DW_ATE_unsigned)
.dwattr $C$DW$T$11, DW_AT_name("unsigned int")
.dwattr $C$DW$T$11, DW_AT_byte_size(0x01)
$C$DW$T$12 .dwtag DW_TAG_base_type
.dwattr $C$DW$T$12, DW_AT_encoding(DW_ATE_signed)
.dwattr $C$DW$T$12, DW_AT_name("long")
.dwattr $C$DW$T$12, DW_AT_byte_size(0x02)
$C$DW$T$13 .dwtag DW_TAG_base_type
.dwattr $C$DW$T$13, DW_AT_encoding(DW_ATE_unsigned)
.dwattr $C$DW$T$13, DW_AT_name("unsigned long")
.dwattr $C$DW$T$13, DW_AT_byte_size(0x02)
$C$DW$T$14 .dwtag DW_TAG_base_type
.dwattr $C$DW$T$14, DW_AT_encoding(DW_ATE_signed)
.dwattr $C$DW$T$14, DW_AT_name("long long")
.dwattr $C$DW$T$14, DW_AT_byte_size(0x04)
$C$DW$T$15 .dwtag DW_TAG_base_type
.dwattr $C$DW$T$15, DW_AT_encoding(DW_ATE_unsigned)
.dwattr $C$DW$T$15, DW_AT_name("unsigned long long")
.dwattr $C$DW$T$15, DW_AT_byte_size(0x04)
$C$DW$T$16 .dwtag DW_TAG_base_type
.dwattr $C$DW$T$16, DW_AT_encoding(DW_ATE_float)
.dwattr $C$DW$T$16, DW_AT_name("float")
.dwattr $C$DW$T$16, DW_AT_byte_size(0x02)
$C$DW$15 .dwtag DW_TAG_TI_far_type
.dwattr $C$DW$15, DW_AT_type(*$C$DW$T$16)
$C$DW$T$22 .dwtag DW_TAG_const_type
.dwattr $C$DW$T$22, DW_AT_type(*$C$DW$15)
$C$DW$T$23 .dwtag DW_TAG_pointer_type
.dwattr $C$DW$T$23, DW_AT_type(*$C$DW$T$22)
.dwattr $C$DW$T$23, DW_AT_address_class(0x20)
$C$DW$T$17 .dwtag DW_TAG_base_type
.dwattr $C$DW$T$17, DW_AT_encoding(DW_ATE_float)
.dwattr $C$DW$T$17, DW_AT_name("double")
.dwattr $C$DW$T$17, DW_AT_byte_size(0x02)
$C$DW$T$18 .dwtag DW_TAG_base_type
.dwattr $C$DW$T$18, DW_AT_encoding(DW_ATE_float)
.dwattr $C$DW$T$18, DW_AT_name("long double")
.dwattr $C$DW$T$18, DW_AT_byte_size(0x04)
.dwattr $C$DW$CU, DW_AT_language(DW_LANG_C)
;***************************************************************
;* DWARF CIE ENTRIES *
;***************************************************************
$C$DW$CIE .dwcie 26
.dwcfi cfa_register, 20
.dwcfi cfa_offset, 0
.dwcfi same_value, 28
.dwcfi same_value, 6
.dwcfi same_value, 7
.dwcfi same_value, 8
.dwcfi same_value, 9
.dwcfi same_value, 10
.dwcfi same_value, 11
.dwcfi same_value, 59
.dwcfi same_value, 60
.dwcfi same_value, 63
.dwcfi same_value, 64
.dwcfi same_value, 67
.dwcfi same_value, 68
.dwcfi same_value, 71
.dwcfi same_value, 72
.dwendentry
;***************************************************************
;* DWARF REGISTER MAP *
;***************************************************************
$C$DW$16 .dwtag DW_TAG_TI_assign_register
.dwattr $C$DW$16, DW_AT_name("AL")
.dwattr $C$DW$16, DW_AT_location[DW_OP_reg0]
$C$DW$17 .dwtag DW_TAG_TI_assign_register
.dwattr $C$DW$17, DW_AT_name("AH")
.dwattr $C$DW$17, DW_AT_location[DW_OP_reg1]
$C$DW$18 .dwtag DW_TAG_TI_assign_register
.dwattr $C$DW$18, DW_AT_name("PL")
.dwattr $C$DW$18, DW_AT_location[DW_OP_reg2]
$C$DW$19 .dwtag DW_TAG_TI_assign_register
.dwattr $C$DW$19, DW_AT_name("PH")
.dwattr $C$DW$19, DW_AT_location[DW_OP_reg3]
$C$DW$20 .dwtag DW_TAG_TI_assign_register
.dwattr $C$DW$20, DW_AT_name("SP")
.dwattr $C$DW$20, DW_AT_location[DW_OP_reg20]
$C$DW$21 .dwtag DW_TAG_TI_assign_register
.dwattr $C$DW$21, DW_AT_name("XT")
.dwattr $C$DW$21, DW_AT_location[DW_OP_reg21]
$C$DW$22 .dwtag DW_TAG_TI_assign_register
.dwattr $C$DW$22, DW_AT_name("T")
.dwattr $C$DW$22, DW_AT_location[DW_OP_reg22]
$C$DW$23 .dwtag DW_TAG_TI_assign_register
.dwattr $C$DW$23, DW_AT_name("ST0")
.dwattr $C$DW$23, DW_AT_location[DW_OP_reg23]
$C$DW$24 .dwtag DW_TAG_TI_assign_register
.dwattr $C$DW$24, DW_AT_name("ST1")
.dwattr $C$DW$24, DW_AT_location[DW_OP_reg24]
$C$DW$25 .dwtag DW_TAG_TI_assign_register
.dwattr $C$DW$25, DW_AT_name("PC")
.dwattr $C$DW$25, DW_AT_location[DW_OP_reg25]
$C$DW$26 .dwtag DW_TAG_TI_assign_register
.dwattr $C$DW$26, DW_AT_name("RPC")
.dwattr $C$DW$26, DW_AT_location[DW_OP_reg26]
$C$DW$27 .dwtag DW_TAG_TI_assign_register
.dwattr $C$DW$27, DW_AT_name("FP")
.dwattr $C$DW$27, DW_AT_location[DW_OP_reg28]
$C$DW$28 .dwtag DW_TAG_TI_assign_register
.dwattr $C$DW$28, DW_AT_name("DP")
.dwattr $C$DW$28, DW_AT_location[DW_OP_reg29]
$C$DW$29 .dwtag DW_TAG_TI_assign_register
.dwattr $C$DW$29, DW_AT_name("SXM")
.dwattr $C$DW$29, DW_AT_location[DW_OP_reg30]
$C$DW$30 .dwtag DW_TAG_TI_assign_register
.dwattr $C$DW$30, DW_AT_name("PM")
.dwattr $C$DW$30, DW_AT_location[DW_OP_reg31]
$C$DW$31 .dwtag DW_TAG_TI_assign_register
.dwattr $C$DW$31, DW_AT_name("OVM")
.dwattr $C$DW$31, DW_AT_location[DW_OP_regx 0x20]
$C$DW$32 .dwtag DW_TAG_TI_assign_register
.dwattr $C$DW$32, DW_AT_name("PAGE0")
.dwattr $C$DW$32, DW_AT_location[DW_OP_regx 0x21]
$C$DW$33 .dwtag DW_TAG_TI_assign_register
.dwattr $C$DW$33, DW_AT_name("AMODE")
.dwattr $C$DW$33, DW_AT_location[DW_OP_regx 0x22]
$C$DW$34 .dwtag DW_TAG_TI_assign_register
.dwattr $C$DW$34, DW_AT_name("INTM")
.dwattr $C$DW$34, DW_AT_location[DW_OP_regx 0x23]
$C$DW$35 .dwtag DW_TAG_TI_assign_register
.dwattr $C$DW$35, DW_AT_name("IFR")
.dwattr $C$DW$35, DW_AT_location[DW_OP_regx 0x24]
$C$DW$36 .dwtag DW_TAG_TI_assign_register
.dwattr $C$DW$36, DW_AT_name("IER")
.dwattr $C$DW$36, DW_AT_location[DW_OP_regx 0x25]
$C$DW$37 .dwtag DW_TAG_TI_assign_register
.dwattr $C$DW$37, DW_AT_name("V")
.dwattr $C$DW$37, DW_AT_location[DW_OP_regx 0x26]
$C$DW$38 .dwtag DW_TAG_TI_assign_register
.dwattr $C$DW$38, DW_AT_name("PSEUDOH")
.dwattr $C$DW$38, DW_AT_location[DW_OP_regx 0x4c]
$C$DW$39 .dwtag DW_TAG_TI_assign_register
.dwattr $C$DW$39, DW_AT_name("VOL")
.dwattr $C$DW$39, DW_AT_location[DW_OP_regx 0x4d]
$C$DW$40 .dwtag DW_TAG_TI_assign_register
.dwattr $C$DW$40, DW_AT_name("AR0")
.dwattr $C$DW$40, DW_AT_location[DW_OP_reg4]
$C$DW$41 .dwtag DW_TAG_TI_assign_register
.dwattr $C$DW$41, DW_AT_name("XAR0")
.dwattr $C$DW$41, DW_AT_location[DW_OP_reg5]
$C$DW$42 .dwtag DW_TAG_TI_assign_register
.dwattr $C$DW$42, DW_AT_name("AR1")
.dwattr $C$DW$42, DW_AT_location[DW_OP_reg6]
$C$DW$43 .dwtag DW_TAG_TI_assign_register
.dwattr $C$DW$43, DW_AT_name("XAR1")
.dwattr $C$DW$43, DW_AT_location[DW_OP_reg7]
$C$DW$44 .dwtag DW_TAG_TI_assign_register
.dwattr $C$DW$44, DW_AT_name("AR2")
.dwattr $C$DW$44, DW_AT_location[DW_OP_reg8]
$C$DW$45 .dwtag DW_TAG_TI_assign_register
.dwattr $C$DW$45, DW_AT_name("XAR2")
.dwattr $C$DW$45, DW_AT_location[DW_OP_reg9]
$C$DW$46 .dwtag DW_TAG_TI_assign_register
.dwattr $C$DW$46, DW_AT_name("AR3")
.dwattr $C$DW$46, DW_AT_location[DW_OP_reg10]
$C$DW$47 .dwtag DW_TAG_TI_assign_register
.dwattr $C$DW$47, DW_AT_name("XAR3")
.dwattr $C$DW$47, DW_AT_location[DW_OP_reg11]
$C$DW$48 .dwtag DW_TAG_TI_assign_register
.dwattr $C$DW$48, DW_AT_name("AR4")
.dwattr $C$DW$48, DW_AT_location[DW_OP_reg12]
$C$DW$49 .dwtag DW_TAG_TI_assign_register
.dwattr $C$DW$49, DW_AT_name("XAR4")
.dwattr $C$DW$49, DW_AT_location[DW_OP_reg13]
$C$DW$50 .dwtag DW_TAG_TI_assign_register
.dwattr $C$DW$50, DW_AT_name("AR5")
.dwattr $C$DW$50, DW_AT_location[DW_OP_reg14]
$C$DW$51 .dwtag DW_TAG_TI_assign_register
.dwattr $C$DW$51, DW_AT_name("XAR5")
.dwattr $C$DW$51, DW_AT_location[DW_OP_reg15]
$C$DW$52 .dwtag DW_TAG_TI_assign_register
.dwattr $C$DW$52, DW_AT_name("AR6")
.dwattr $C$DW$52, DW_AT_location[DW_OP_reg16]
$C$DW$53 .dwtag DW_TAG_TI_assign_register
.dwattr $C$DW$53, DW_AT_name("XAR6")
.dwattr $C$DW$53, DW_AT_location[DW_OP_reg17]
$C$DW$54 .dwtag DW_TAG_TI_assign_register
.dwattr $C$DW$54, DW_AT_name("AR7")
.dwattr $C$DW$54, DW_AT_location[DW_OP_reg18]
$C$DW$55 .dwtag DW_TAG_TI_assign_register
.dwattr $C$DW$55, DW_AT_name("XAR7")
.dwattr $C$DW$55, DW_AT_location[DW_OP_reg19]
$C$DW$56 .dwtag DW_TAG_TI_assign_register
.dwattr $C$DW$56, DW_AT_name("R0H")
.dwattr $C$DW$56, DW_AT_location[DW_OP_regx 0x2b]
$C$DW$57 .dwtag DW_TAG_TI_assign_register
.dwattr $C$DW$57, DW_AT_name("R0HH")
.dwattr $C$DW$57, DW_AT_location[DW_OP_regx 0x2c]
$C$DW$58 .dwtag DW_TAG_TI_assign_register
.dwattr $C$DW$58, DW_AT_name("R1H")
.dwattr $C$DW$58, DW_AT_location[DW_OP_regx 0x2f]
$C$DW$59 .dwtag DW_TAG_TI_assign_register
.dwattr $C$DW$59, DW_AT_name("R1HH")
.dwattr $C$DW$59, DW_AT_location[DW_OP_regx 0x30]
$C$DW$60 .dwtag DW_TAG_TI_assign_register
.dwattr $C$DW$60, DW_AT_name("R2H")
.dwattr $C$DW$60, DW_AT_location[DW_OP_regx 0x33]
$C$DW$61 .dwtag DW_TAG_TI_assign_register
.dwattr $C$DW$61, DW_AT_name("R2HH")
.dwattr $C$DW$61, DW_AT_location[DW_OP_regx 0x34]
$C$DW$62 .dwtag DW_TAG_TI_assign_register
.dwattr $C$DW$62, DW_AT_name("R3H")
.dwattr $C$DW$62, DW_AT_location[DW_OP_regx 0x37]
$C$DW$63 .dwtag DW_TAG_TI_assign_register
.dwattr $C$DW$63, DW_AT_name("R3HH")
.dwattr $C$DW$63, DW_AT_location[DW_OP_regx 0x38]
$C$DW$64 .dwtag DW_TAG_TI_assign_register
.dwattr $C$DW$64, DW_AT_name("R4H")
.dwattr $C$DW$64, DW_AT_location[DW_OP_regx 0x3b]
$C$DW$65 .dwtag DW_TAG_TI_assign_register
.dwattr $C$DW$65, DW_AT_name("R4HH")
.dwattr $C$DW$65, DW_AT_location[DW_OP_regx 0x3c]
$C$DW$66 .dwtag DW_TAG_TI_assign_register
.dwattr $C$DW$66, DW_AT_name("R5H")
.dwattr $C$DW$66, DW_AT_location[DW_OP_regx 0x3f]
$C$DW$67 .dwtag DW_TAG_TI_assign_register
.dwattr $C$DW$67, DW_AT_name("R5HH")
.dwattr $C$DW$67, DW_AT_location[DW_OP_regx 0x40]
$C$DW$68 .dwtag DW_TAG_TI_assign_register
.dwattr $C$DW$68, DW_AT_name("R6H")
.dwattr $C$DW$68, DW_AT_location[DW_OP_regx 0x43]
$C$DW$69 .dwtag DW_TAG_TI_assign_register
.dwattr $C$DW$69, DW_AT_name("R6HH")
.dwattr $C$DW$69, DW_AT_location[DW_OP_regx 0x44]
$C$DW$70 .dwtag DW_TAG_TI_assign_register
.dwattr $C$DW$70, DW_AT_name("R7H")
.dwattr $C$DW$70, DW_AT_location[DW_OP_regx 0x47]
$C$DW$71 .dwtag DW_TAG_TI_assign_register
.dwattr $C$DW$71, DW_AT_name("R7HH")
.dwattr $C$DW$71, DW_AT_location[DW_OP_regx 0x48]
$C$DW$72 .dwtag DW_TAG_TI_assign_register
.dwattr $C$DW$72, DW_AT_name("RBL")
.dwattr $C$DW$72, DW_AT_location[DW_OP_regx 0x49]
$C$DW$73 .dwtag DW_TAG_TI_assign_register
.dwattr $C$DW$73, DW_AT_name("RB")
.dwattr $C$DW$73, DW_AT_location[DW_OP_regx 0x4a]
$C$DW$74 .dwtag DW_TAG_TI_assign_register
.dwattr $C$DW$74, DW_AT_name("STFL")
.dwattr $C$DW$74, DW_AT_location[DW_OP_regx 0x27]
$C$DW$75 .dwtag DW_TAG_TI_assign_register
.dwattr $C$DW$75, DW_AT_name("STF")
.dwattr $C$DW$75, DW_AT_location[DW_OP_regx 0x28]
$C$DW$76 .dwtag DW_TAG_TI_assign_register
.dwattr $C$DW$76, DW_AT_name("FPUHAZ")
.dwattr $C$DW$76, DW_AT_location[DW_OP_reg27]
.dwendtag $C$DW$CU
My issue is that the comments state the stack frame is 4 words and floating point registers are pushed onto and popped off the stack, but nowhere within the function are the expected '.dwcfi cfa_offset, -2' DWARF tags emitted. Why is this the case? I cannot use the DWARF information to unwind the call stack because these DWARF tags are missing.