376 lines · plain
1/* Original C (for context):2* __attribute__((noinline))3* double regs_mixed_params(int a, int b, double x, double y, int c, double z) {4* // Keep everything live; avoid spills.5* asm volatile("" :: "r"(a), "r"(b), "x"(x), "x"(y), "r"(c), "x"(z));6* // Some mixing so values stay in regs long enough to annotate.7* double r = (double)(a + b + c) + x + y + z;8* asm volatile("" :: "x"(r), "r"(a), "x"(x));9* return r;10* }11*/12 .file "regs_mixed_params.c"13 .file 0 "." "regs_mixed_params.c" md5 0x73c4bda40238ae460aaecb3a6a2603cf14 .text15 .globl regs_mixed_params # -- Begin function regs_mixed_params16 .p2align 417 .type regs_mixed_params,@function18regs_mixed_params: # @regs_mixed_params19.Lfunc_begin0:20 .loc 0 2 0 # regs_mixed_params.c:2:021 .cfi_startproc22# %bb.0: # %entry23 #DEBUG_VALUE: regs_mixed_params:a <- $edi24 #DEBUG_VALUE: regs_mixed_params:b <- $esi25 #DEBUG_VALUE: regs_mixed_params:x <- $xmm026 #DEBUG_VALUE: regs_mixed_params:y <- $xmm127 #DEBUG_VALUE: regs_mixed_params:c <- $edx28 #DEBUG_VALUE: regs_mixed_params:z <- $xmm229 pushq %rbp30 .cfi_def_cfa_offset 1631 .cfi_offset %rbp, -1632 movq %rsp, %rbp33 .cfi_def_cfa_register %rbp34.Ltmp0:35 .loc 0 4 3 prologue_end # regs_mixed_params.c:4:336 #APP37 #NO_APP38 .loc 0 6 25 # regs_mixed_params.c:6:2539 addl %edi, %esi40.Ltmp1:41 #DEBUG_VALUE: regs_mixed_params:b <- [DW_OP_LLVM_entry_value 1] $esi42 .loc 0 6 29 is_stmt 0 # regs_mixed_params.c:6:2943 addl %edx, %esi44 .loc 0 6 14 # regs_mixed_params.c:6:1445 cvtsi2sd %esi, %xmm446 .loc 0 6 34 # regs_mixed_params.c:6:3447 movapd %xmm0, %xmm348 addsd %xmm4, %xmm349 .loc 0 6 38 # regs_mixed_params.c:6:3850 addsd %xmm1, %xmm351 .loc 0 6 42 # regs_mixed_params.c:6:4252 addsd %xmm2, %xmm353.Ltmp2:54 #DEBUG_VALUE: regs_mixed_params:r <- $xmm355 .loc 0 7 3 is_stmt 1 # regs_mixed_params.c:7:356 #APP57 #NO_APP58 .loc 0 8 3 # regs_mixed_params.c:8:359 movapd %xmm3, %xmm060.Ltmp3:61 #DEBUG_VALUE: regs_mixed_params:x <- [DW_OP_LLVM_entry_value 1] $xmm062 .loc 0 8 3 epilogue_begin is_stmt 0 # regs_mixed_params.c:8:363 popq %rbp64 .cfi_def_cfa %rsp, 865 retq66.Ltmp4:67.Lfunc_end0:68 .size regs_mixed_params, .Lfunc_end0-regs_mixed_params69 .cfi_endproc70 # -- End function71 .section .debug_loclists,"",@progbits72 .long .Ldebug_list_header_end0-.Ldebug_list_header_start0 # Length73.Ldebug_list_header_start0:74 .short 5 # Version75 .byte 8 # Address size76 .byte 0 # Segment selector size77 .long 3 # Offset entry count78.Lloclists_table_base0:79 .long .Ldebug_loc0-.Lloclists_table_base080 .long .Ldebug_loc1-.Lloclists_table_base081 .long .Ldebug_loc2-.Lloclists_table_base082.Ldebug_loc0:83 .byte 4 # DW_LLE_offset_pair84 .uleb128 .Lfunc_begin0-.Lfunc_begin0 # starting offset85 .uleb128 .Ltmp1-.Lfunc_begin0 # ending offset86 .byte 1 # Loc expr size87 .byte 84 # super-register DW_OP_reg488 .byte 4 # DW_LLE_offset_pair89 .uleb128 .Ltmp1-.Lfunc_begin0 # starting offset90 .uleb128 .Lfunc_end0-.Lfunc_begin0 # ending offset91 .byte 4 # Loc expr size92 .byte 163 # DW_OP_entry_value93 .byte 1 # 194 .byte 84 # super-register DW_OP_reg495 .byte 159 # DW_OP_stack_value96 .byte 0 # DW_LLE_end_of_list97.Ldebug_loc1:98 .byte 4 # DW_LLE_offset_pair99 .uleb128 .Lfunc_begin0-.Lfunc_begin0 # starting offset100 .uleb128 .Ltmp3-.Lfunc_begin0 # ending offset101 .byte 1 # Loc expr size102 .byte 97 # DW_OP_reg17103 .byte 4 # DW_LLE_offset_pair104 .uleb128 .Ltmp3-.Lfunc_begin0 # starting offset105 .uleb128 .Lfunc_end0-.Lfunc_begin0 # ending offset106 .byte 4 # Loc expr size107 .byte 163 # DW_OP_entry_value108 .byte 1 # 1109 .byte 97 # DW_OP_reg17110 .byte 159 # DW_OP_stack_value111 .byte 0 # DW_LLE_end_of_list112.Ldebug_loc2:113 .byte 4 # DW_LLE_offset_pair114 .uleb128 .Ltmp2-.Lfunc_begin0 # starting offset115 .uleb128 .Lfunc_end0-.Lfunc_begin0 # ending offset116 .byte 1 # Loc expr size117 .byte 100 # DW_OP_reg20118 .byte 0 # DW_LLE_end_of_list119.Ldebug_list_header_end0:120 .section .debug_abbrev,"",@progbits121 .byte 1 # Abbreviation Code122 .byte 17 # DW_TAG_compile_unit123 .byte 1 # DW_CHILDREN_yes124 .byte 37 # DW_AT_producer125 .byte 37 # DW_FORM_strx1126 .byte 19 # DW_AT_language127 .byte 5 # DW_FORM_data2128 .byte 3 # DW_AT_name129 .byte 37 # DW_FORM_strx1130 .byte 114 # DW_AT_str_offsets_base131 .byte 23 # DW_FORM_sec_offset132 .byte 16 # DW_AT_stmt_list133 .byte 23 # DW_FORM_sec_offset134 .byte 27 # DW_AT_comp_dir135 .byte 37 # DW_FORM_strx1136 .byte 17 # DW_AT_low_pc137 .byte 27 # DW_FORM_addrx138 .byte 18 # DW_AT_high_pc139 .byte 6 # DW_FORM_data4140 .byte 115 # DW_AT_addr_base141 .byte 23 # DW_FORM_sec_offset142 .ascii "\214\001" # DW_AT_loclists_base143 .byte 23 # DW_FORM_sec_offset144 .byte 0 # EOM(1)145 .byte 0 # EOM(2)146 .byte 2 # Abbreviation Code147 .byte 36 # DW_TAG_base_type148 .byte 0 # DW_CHILDREN_no149 .byte 3 # DW_AT_name150 .byte 37 # DW_FORM_strx1151 .byte 62 # DW_AT_encoding152 .byte 11 # DW_FORM_data1153 .byte 11 # DW_AT_byte_size154 .byte 11 # DW_FORM_data1155 .byte 0 # EOM(1)156 .byte 0 # EOM(2)157 .byte 3 # Abbreviation Code158 .byte 46 # DW_TAG_subprogram159 .byte 1 # DW_CHILDREN_yes160 .byte 17 # DW_AT_low_pc161 .byte 27 # DW_FORM_addrx162 .byte 18 # DW_AT_high_pc163 .byte 6 # DW_FORM_data4164 .byte 64 # DW_AT_frame_base165 .byte 24 # DW_FORM_exprloc166 .byte 122 # DW_AT_call_all_calls167 .byte 25 # DW_FORM_flag_present168 .byte 3 # DW_AT_name169 .byte 37 # DW_FORM_strx1170 .byte 58 # DW_AT_decl_file171 .byte 11 # DW_FORM_data1172 .byte 59 # DW_AT_decl_line173 .byte 11 # DW_FORM_data1174 .byte 39 # DW_AT_prototyped175 .byte 25 # DW_FORM_flag_present176 .byte 73 # DW_AT_type177 .byte 19 # DW_FORM_ref4178 .byte 63 # DW_AT_external179 .byte 25 # DW_FORM_flag_present180 .byte 0 # EOM(1)181 .byte 0 # EOM(2)182 .byte 4 # Abbreviation Code183 .byte 5 # DW_TAG_formal_parameter184 .byte 0 # DW_CHILDREN_no185 .byte 2 # DW_AT_location186 .byte 24 # DW_FORM_exprloc187 .byte 3 # DW_AT_name188 .byte 37 # DW_FORM_strx1189 .byte 58 # DW_AT_decl_file190 .byte 11 # DW_FORM_data1191 .byte 59 # DW_AT_decl_line192 .byte 11 # DW_FORM_data1193 .byte 73 # DW_AT_type194 .byte 19 # DW_FORM_ref4195 .byte 0 # EOM(1)196 .byte 0 # EOM(2)197 .byte 5 # Abbreviation Code198 .byte 5 # DW_TAG_formal_parameter199 .byte 0 # DW_CHILDREN_no200 .byte 2 # DW_AT_location201 .byte 34 # DW_FORM_loclistx202 .byte 3 # DW_AT_name203 .byte 37 # DW_FORM_strx1204 .byte 58 # DW_AT_decl_file205 .byte 11 # DW_FORM_data1206 .byte 59 # DW_AT_decl_line207 .byte 11 # DW_FORM_data1208 .byte 73 # DW_AT_type209 .byte 19 # DW_FORM_ref4210 .byte 0 # EOM(1)211 .byte 0 # EOM(2)212 .byte 6 # Abbreviation Code213 .byte 52 # DW_TAG_variable214 .byte 0 # DW_CHILDREN_no215 .byte 2 # DW_AT_location216 .byte 34 # DW_FORM_loclistx217 .byte 3 # DW_AT_name218 .byte 37 # DW_FORM_strx1219 .byte 58 # DW_AT_decl_file220 .byte 11 # DW_FORM_data1221 .byte 59 # DW_AT_decl_line222 .byte 11 # DW_FORM_data1223 .byte 73 # DW_AT_type224 .byte 19 # DW_FORM_ref4225 .byte 0 # EOM(1)226 .byte 0 # EOM(2)227 .byte 0 # EOM(3)228 .section .debug_info,"",@progbits229.Lcu_begin0:230 .long .Ldebug_info_end0-.Ldebug_info_start0 # Length of Unit231.Ldebug_info_start0:232 .short 5 # DWARF version number233 .byte 1 # DWARF Unit Type234 .byte 8 # Address Size (in bytes)235 .long .debug_abbrev # Offset Into Abbrev. Section236 .byte 1 # Abbrev [1] 0xc:0x77 DW_TAG_compile_unit237 .byte 0 # DW_AT_producer238 .short 29 # DW_AT_language239 .byte 1 # DW_AT_name240 .long .Lstr_offsets_base0 # DW_AT_str_offsets_base241 .long .Lline_table_start0 # DW_AT_stmt_list242 .byte 2 # DW_AT_comp_dir243 .byte 0 # DW_AT_low_pc244 .long .Lfunc_end0-.Lfunc_begin0 # DW_AT_high_pc245 .long .Laddr_table_base0 # DW_AT_addr_base246 .long .Lloclists_table_base0 # DW_AT_loclists_base247 .byte 2 # Abbrev [2] 0x27:0x4 DW_TAG_base_type248 .byte 3 # DW_AT_name249 .byte 4 # DW_AT_encoding250 .byte 8 # DW_AT_byte_size251 .byte 3 # Abbrev [3] 0x2b:0x53 DW_TAG_subprogram252 .byte 0 # DW_AT_low_pc253 .long .Lfunc_end0-.Lfunc_begin0 # DW_AT_high_pc254 .byte 1 # DW_AT_frame_base255 .byte 86256 # DW_AT_call_all_calls257 .byte 4 # DW_AT_name258 .byte 0 # DW_AT_decl_file259 .byte 2 # DW_AT_decl_line260 # DW_AT_prototyped261 .long 39 # DW_AT_type262 # DW_AT_external263 .byte 4 # Abbrev [4] 0x3a:0xa DW_TAG_formal_parameter264 .byte 1 # DW_AT_location265 .byte 85266 .byte 5 # DW_AT_name267 .byte 0 # DW_AT_decl_file268 .byte 2 # DW_AT_decl_line269 .long 126 # DW_AT_type270 .byte 5 # Abbrev [5] 0x44:0x9 DW_TAG_formal_parameter271 .byte 0 # DW_AT_location272 .byte 7 # DW_AT_name273 .byte 0 # DW_AT_decl_file274 .byte 2 # DW_AT_decl_line275 .long 126 # DW_AT_type276 .byte 5 # Abbrev [5] 0x4d:0x9 DW_TAG_formal_parameter277 .byte 1 # DW_AT_location278 .byte 8 # DW_AT_name279 .byte 0 # DW_AT_decl_file280 .byte 2 # DW_AT_decl_line281 .long 39 # DW_AT_type282 .byte 4 # Abbrev [4] 0x56:0xa DW_TAG_formal_parameter283 .byte 1 # DW_AT_location284 .byte 98285 .byte 9 # DW_AT_name286 .byte 0 # DW_AT_decl_file287 .byte 2 # DW_AT_decl_line288 .long 39 # DW_AT_type289 .byte 4 # Abbrev [4] 0x60:0xa DW_TAG_formal_parameter290 .byte 1 # DW_AT_location291 .byte 81292 .byte 10 # DW_AT_name293 .byte 0 # DW_AT_decl_file294 .byte 2 # DW_AT_decl_line295 .long 126 # DW_AT_type296 .byte 4 # Abbrev [4] 0x6a:0xa DW_TAG_formal_parameter297 .byte 1 # DW_AT_location298 .byte 99299 .byte 11 # DW_AT_name300 .byte 0 # DW_AT_decl_file301 .byte 2 # DW_AT_decl_line302 .long 39 # DW_AT_type303 .byte 6 # Abbrev [6] 0x74:0x9 DW_TAG_variable304 .byte 2 # DW_AT_location305 .byte 12 # DW_AT_name306 .byte 0 # DW_AT_decl_file307 .byte 6 # DW_AT_decl_line308 .long 39 # DW_AT_type309 .byte 0 # End Of Children Mark310 .byte 2 # Abbrev [2] 0x7e:0x4 DW_TAG_base_type311 .byte 6 # DW_AT_name312 .byte 5 # DW_AT_encoding313 .byte 4 # DW_AT_byte_size314 .byte 0 # End Of Children Mark315.Ldebug_info_end0:316 .section .debug_str_offsets,"",@progbits317 .long 56 # Length of String Offsets Set318 .short 5319 .short 0320.Lstr_offsets_base0:321 .section .debug_str,"MS",@progbits,1322.Linfo_string0:323 .asciz "clang version 22.0.0git (https://github.com/UltimateForce21/llvm-project.git 79c0a9e1e7da0f727c41d27c9c6ff8a28bb7d06f)" # string offset=0324.Linfo_string1:325 .asciz "regs_mixed_params.c" # string offset=119326.Linfo_string2:327 .asciz "." # string offset=139328.Linfo_string3:329 .asciz "double" # string offset=141330.Linfo_string4:331 .asciz "regs_mixed_params" # string offset=148332.Linfo_string5:333 .asciz "a" # string offset=166334.Linfo_string6:335 .asciz "int" # string offset=168336.Linfo_string7:337 .asciz "b" # string offset=172338.Linfo_string8:339 .asciz "x" # string offset=174340.Linfo_string9:341 .asciz "y" # string offset=176342.Linfo_string10:343 .asciz "c" # string offset=178344.Linfo_string11:345 .asciz "z" # string offset=180346.Linfo_string12:347 .asciz "r" # string offset=182348 .section .debug_str_offsets,"",@progbits349 .long .Linfo_string0350 .long .Linfo_string1351 .long .Linfo_string2352 .long .Linfo_string3353 .long .Linfo_string4354 .long .Linfo_string5355 .long .Linfo_string6356 .long .Linfo_string7357 .long .Linfo_string8358 .long .Linfo_string9359 .long .Linfo_string10360 .long .Linfo_string11361 .long .Linfo_string12362 .section .debug_addr,"",@progbits363 .long .Ldebug_addr_end0-.Ldebug_addr_start0 # Length of contribution364.Ldebug_addr_start0:365 .short 5 # DWARF version number366 .byte 8 # Address size367 .byte 0 # Segment selector size368.Laddr_table_base0:369 .quad .Lfunc_begin0370.Ldebug_addr_end0:371 .ident "clang version 22.0.0git (https://github.com/UltimateForce21/llvm-project.git 79c0a9e1e7da0f727c41d27c9c6ff8a28bb7d06f)"372 .section ".note.GNU-stack","",@progbits373 .addrsig374 .section .debug_line,"",@progbits375.Lline_table_start0:376