568 lines · plain
1# REQUIRES: system-linux2 3# RUN: llvm-mc -filetype=obj -triple x86_64-unknown-unknown %s -o %t.o4# RUN: link_fdata %s %t.o %t.fdata5# RUN: llvm-strip --strip-unneeded %t.o6# RUN: %clang %cflags %t.o -o %t.exe -Wl,-q -nostdlib7# RUN: llvm-bolt %t.exe --data %t.fdata -o %t --lite=0 -v=2 \8# RUN: --cmov-conversion --cmov-conversion-misprediction-threshold=-1 \9# RUN: --cmov-conversion-bias-threshold=-1 --print-all | FileCheck %s10# CHECK: BOLT-INFO: CMOVConversion: CmovInHotPath, converted static 1/111# CHECK: BOLT-INFO: CMOVConversion: CmovNotInHotPath, converted static 1/112# CHECK: BOLT-INFO: CMOVConversion: MaxIndex, converted static 1/113# CHECK: BOLT-INFO: CMOVConversion: MaxIndex_unpredictable, converted static 1/114# CHECK: BOLT-INFO: CMOVConversion: MaxValue, converted static 1/115# CHECK: BOLT-INFO: CMOVConversion: BinarySearch, converted static 0/016# CHECK: BOLT-INFO: CMOVConversion: Transform, converted static 0/017# CHECK: BOLT-INFO: CMOVConversion: test_cmov_memoperand, converted static 0/018# CHECK: BOLT-INFO: CMOVConversion: test_cmov_memoperand_unpredictable, converted static 0/019# CHECK: BOLT-INFO: CMOVConversion: test_cmov_memoperand_in_group, converted static 0/020# CHECK: BOLT-INFO: CMOVConversion: test_cmov_memoperand_in_group2, converted static 0/021# CHECK: BOLT-INFO: CMOVConversion: test_cmov_memoperand_conflicting_dir, converted static 0/022# CHECK: BOLT-INFO: CMOVConversion: test_cmov_memoperand_in_group_reuse_for_addr, converted static 0/023# CHECK: BOLT-INFO: CMOVConversion: test_cmov_memoperand_in_group_reuse_for_addr2, converted static 0/024# CHECK: BOLT-INFO: CMOVConversion: test_cmov_memoperand_in_group_reuse_for_addr3, converted static 0/025# CHECK: BOLT-INFO: CMOVConversion: test_memoperand_loop, converted static 1/126# CHECK: BOLT-INFO: CMOVConversion: CmovBackToBack, converted static 2/227# CHECK: BOLT-INFO: CMOVConversion total: converted static 8/828 29 .globl _start30_start:31 .globl CmovInHotPath # -- Begin function CmovInHotPath32 .p2align 4, 0x9033 .type CmovInHotPath,@function34CmovInHotPath: # @CmovInHotPath35# CHECK-LABEL: Binary Function "CmovInHotPath" after CMOV conversion36# FDATA: 0 [unknown] 0 1 CmovInHotPath 0 1 237 .cfi_startproc38# %bb.0: # %entry39 testl %edi, %edi40 jle LBB0_541# %bb.1: # %for.body.preheader42 movl %edi, %r8d43 xorl %edi, %edi44# FDATA: 0 [unknown] 0 1 CmovInHotPath #LBB0_2# 1 245LBB0_2: # %for.body46 movl (%rcx,%rdi,4), %eax47 leal 1(%rax), %r9d48 imull %esi, %eax49 movl $10, %r10d50 cmpl %edx, %eax51# CHECK: cmpl %edx, %eax52# CHECK-NEXT: cmovlel %r9d, %r10d53LBB0_2_br:54 jg LBB0_455# FDATA: 1 CmovInHotPath #LBB0_2_br# 1 CmovInHotPath #LBB0_3# 1 256# FDATA: 1 CmovInHotPath #LBB0_2_br# 1 CmovInHotPath #LBB0_4# 1 257# %bb.3: # %for.body58LBB0_3:59 movl %r9d, %r10d60LBB0_4: # %for.body61 imull %r9d, %r10d62 movl %r10d, (%rcx,%rdi,4)63 addq $1, %rdi64 cmpq %rdi, %r865 jne LBB0_266LBB0_5: # %for.cond.cleanup67 retq68Lfunc_end0:69 .size CmovInHotPath, Lfunc_end0-CmovInHotPath70 .cfi_endproc71 # -- End function72 .globl CmovNotInHotPath # -- Begin function CmovNotInHotPath73 .p2align 4, 0x9074 .type CmovNotInHotPath,@function75CmovNotInHotPath: # @CmovNotInHotPath76# CHECK-LABEL: Binary Function "CmovNotInHotPath" after CMOV conversion77# FDATA: 0 [unknown] 0 1 CmovNotInHotPath 0 1 278 .cfi_startproc79# %bb.0: # %entry80 testl %edi, %edi81 jle LBB1_582# %bb.1: # %for.body.preheader83 movl %edx, %r9d84 movl %edi, %r10d85 xorl %edi, %edi86# FDATA: 0 [unknown] 0 1 CmovNotInHotPath #LBB1_2# 1 287LBB1_2: # %for.body88 movl (%rcx,%rdi,4), %r11d89 movl %r11d, %eax90 imull %esi, %eax91 movl $10, %edx92 cmpl %r9d, %eax93# CHECK: cmpl %r9d, %eax94# CHECK-NEXT: cmovlel %r11d, %edx95LBB1_4_br:96 jg LBB1_497# FDATA: 1 CmovNotInHotPath #LBB1_4_br# 1 CmovNotInHotPath #LBB1_3# 1 298# FDATA: 1 CmovNotInHotPath #LBB1_4_br# 1 CmovNotInHotPath #LBB1_4# 1 299# %bb.3: # %for.body100LBB1_3:101 movl %r11d, %edx102LBB1_4: # %for.body103 movl %edx, (%rcx,%rdi,4)104 movl (%r8,%rdi,4), %eax105 cltd106 idivl %r9d107 movl %eax, (%r8,%rdi,4)108 addq $1, %rdi109 cmpq %rdi, %r10110 jne LBB1_2111LBB1_5: # %for.cond.cleanup112 retq113Lfunc_end1:114 .size CmovNotInHotPath, Lfunc_end1-CmovNotInHotPath115 .cfi_endproc116 # -- End function117 .globl MaxIndex # -- Begin function MaxIndex118 .p2align 4, 0x90119 .type MaxIndex,@function120MaxIndex: # @MaxIndex121# CHECK-LABEL: Binary Function "MaxIndex" after CMOV conversion122# FDATA: 0 [unknown] 0 1 MaxIndex 0 1 2123 .cfi_startproc124# %bb.0: # %entry125 xorl %eax, %eax126 cmpl $2, %edi127 jl LBB2_5128# %bb.1: # %for.body.preheader129 movl %edi, %r8d130 xorl %edi, %edi131 movl $1, %edx132# FDATA: 0 [unknown] 0 1 MaxIndex #LBB2_2# 1 2133LBB2_2: # %for.body134 movl (%rsi,%rdx,4), %r9d135 movslq %edi, %rcx136 movl %edx, %eax137 cmpl (%rsi,%rcx,4), %r9d138# CHECK: cmpl (%rsi,%rcx,4), %r9d139# CHECK-NEXT: cmovlel %edi, %eax140LBB2_2_br:141 jg LBB2_4142# FDATA: 1 MaxIndex #LBB2_2_br# 1 MaxIndex #LBB2_3# 1 2143# FDATA: 1 MaxIndex #LBB2_2_br# 1 MaxIndex #LBB2_4# 1 2144# %bb.3: # %for.body145LBB2_3:146 movl %edi, %eax147LBB2_4: # %for.body148 addq $1, %rdx149 movl %eax, %edi150 cmpq %rdx, %r8151 jne LBB2_2152LBB2_5: # %for.cond.cleanup153 retq154Lfunc_end2:155 .size MaxIndex, Lfunc_end2-MaxIndex156 .cfi_endproc157 # -- End function158 .globl MaxIndex_unpredictable # -- Begin function MaxIndex_unpredictable159 .p2align 4, 0x90160 .type MaxIndex_unpredictable,@function161MaxIndex_unpredictable: # @MaxIndex_unpredictable162# CHECK-LABEL: Binary Function "MaxIndex_unpredictable" after CMOV conversion163# FDATA: 0 [unknown] 0 1 MaxIndex_unpredictable 0 1 2164 .cfi_startproc165# %bb.0: # %entry166 xorl %eax, %eax167 cmpl $2, %edi168 jl LBB3_5169# %bb.1: # %for.body.preheader170 movl %edi, %r8d171 xorl %edi, %edi172 movl $1, %edx173# FDATA: 0 [unknown] 0 1 MaxIndex_unpredictable #LBB3_2# 1 2174LBB3_2: # %for.body175 movl (%rsi,%rdx,4), %r9d176 movslq %edi, %rcx177 movl %edx, %eax178 cmpl (%rsi,%rcx,4), %r9d179# CHECK: cmpl (%rsi,%rcx,4), %r9d180# CHECK-NEXT: cmovlel %edi, %eax181LBB3_2_br:182 jg LBB3_4183# FDATA: 1 MaxIndex_unpredictable #LBB3_2_br# 1 MaxIndex_unpredictable #LBB3_3# 1 2184# FDATA: 1 MaxIndex_unpredictable #LBB3_2_br# 1 MaxIndex_unpredictable #LBB3_4# 1 2185# %bb.3: # %for.body186LBB3_3:187 movl %edi, %eax188LBB3_4: # %for.body189 addq $1, %rdx190 movl %eax, %edi191 cmpq %rdx, %r8192 jne LBB3_2193LBB3_5: # %for.cond.cleanup194 retq195Lfunc_end3:196 .size MaxIndex_unpredictable, Lfunc_end3-MaxIndex_unpredictable197 .cfi_endproc198 # -- End function199 .globl MaxValue # -- Begin function MaxValue200 .p2align 4, 0x90201 .type MaxValue,@function202MaxValue: # @MaxValue203# CHECK-LABEL: Binary Function "MaxValue" after CMOV conversion204# FDATA: 0 [unknown] 0 1 MaxValue 0 1 2205 .cfi_startproc206# %bb.0: # %entry207 movl (%rsi), %ecx208 cmpl $2, %edi209 jge LBB4_3210# %bb.1:211LBB4_1:212 movl %ecx, %eax213LBB4_2: # %for.cond.cleanup214 retq215LBB4_3: # %for.body.preheader216 movl %edi, %edi217 movl $1, %edx218LBB4_4: # %for.body219 movl (%rsi,%rdx,4), %eax220 cmpl %ecx, %eax221# CHECK: cmpl %ecx, %eax222# CHECK-NEXT: cmovlel %ecx, %eax223LBB4_4_br:224 jg LBB4_6225# FDATA: 1 MaxValue #LBB4_4_br# 1 MaxValue #LBB4_5# 1 2226# FDATA: 1 MaxValue #LBB4_4_br# 1 MaxValue #LBB4_6# 1 2227# %bb.5: # %for.body228LBB4_5:229 movl %ecx, %eax230LBB4_6: # %for.body231 addq $1, %rdx232 movl %eax, %ecx233 cmpq %rdx, %rdi234 je LBB4_2235 jmp LBB4_4236Lfunc_end4:237 .size MaxValue, Lfunc_end4-MaxValue238 .cfi_endproc239 # -- End function240 .globl BinarySearch # -- Begin function BinarySearch241 .p2align 4, 0x90242 .type BinarySearch,@function243BinarySearch: # @BinarySearch244# CHECK-LABEL: Binary Function "BinarySearch" after CMOV conversion245# FDATA: 0 [unknown] 0 1 BinarySearch 0 1 2246 .cfi_startproc247# %bb.0: # %entry248 movl (%rsi), %eax249 jmp LBB5_2250LBB5_1: # %while.body251 movl %ecx, %eax252 xorl %ecx, %ecx253 btl %eax, %edi254 setae %cl255 movq 8(%rdx,%rcx,8), %rdx256LBB5_2: # %while.body257 movl (%rdx), %ecx258 cmpl %ecx, %eax259 ja LBB5_1260# %bb.3: # %while.end261 retq262Lfunc_end5:263 .size BinarySearch, Lfunc_end5-BinarySearch264 .cfi_endproc265 # -- End function266 .globl Transform # -- Begin function Transform267 .p2align 4, 0x90268 .type Transform,@function269Transform: # @Transform270# CHECK-LABEL: Binary Function "Transform" after CMOV conversion271# FDATA: 0 [unknown] 0 1 Transform 0 1 2272 .cfi_startproc273# %bb.0: # %entry274 movb $1, %al275 testb %al, %al276 jne LBB6_5277# %bb.1: # %while.body.preheader278 movl %edx, %r8d279 xorl %esi, %esi280LBB6_2: # %while.body281 movslq %esi, %rsi282 movl (%rdi,%rsi,4), %eax283 xorl %edx, %edx284 divl %r8d285 movl %eax, %edx286 movl $11, %eax287 movl %r8d, %ecx288 cmpl %r8d, %edx289 ja LBB6_4290# %bb.3: # %while.body291 movl $22, %eax292 movl $22, %ecx293LBB6_4: # %while.body294 xorl %edx, %edx295 divl %ecx296 movl %edx, (%rdi,%rsi,4)297 addl $1, %esi298 cmpl %r9d, %esi299 ja LBB6_2300LBB6_5: # %while.end301 retq302Lfunc_end6:303 .size Transform, Lfunc_end6-Transform304 .cfi_endproc305 # -- End function306 .globl test_cmov_memoperand # -- Begin function test_cmov_memoperand307 .p2align 4, 0x90308 .type test_cmov_memoperand,@function309test_cmov_memoperand: # @test_cmov_memoperand310# CHECK-LABEL: Binary Function "test_cmov_memoperand" after CMOV conversion311# FDATA: 0 [unknown] 0 1 test_cmov_memoperand 0 1 2312 .cfi_startproc313# %bb.0: # %entry314 movl %edx, %eax315 cmpl %esi, %edi316 ja LBB7_2317# %bb.1: # %entry318 movl (%rcx), %eax319LBB7_2: # %entry320 retq321Lfunc_end7:322 .size test_cmov_memoperand, Lfunc_end7-test_cmov_memoperand323 .cfi_endproc324 # -- End function325 .globl test_cmov_memoperand_unpredictable # -- Begin function test_cmov_memoperand_unpredictable326 .p2align 4, 0x90327 .type test_cmov_memoperand_unpredictable,@function328test_cmov_memoperand_unpredictable: # @test_cmov_memoperand_unpredictable329# CHECK-LABEL: Binary Function "test_cmov_memoperand_unpredictable" after CMOV conversion330# FDATA: 0 [unknown] 0 1 test_cmov_memoperand_unpredictable 0 1 2331 .cfi_startproc332# %bb.0: # %entry333 movl %edx, %eax334 cmpl %esi, %edi335 ja LBB8_2336# %bb.1: # %entry337 movl (%rcx), %eax338LBB8_2: # %entry339 retq340Lfunc_end8:341 .size test_cmov_memoperand_unpredictable, Lfunc_end8-test_cmov_memoperand_unpredictable342 .cfi_endproc343 # -- End function344 .globl test_cmov_memoperand_in_group # -- Begin function test_cmov_memoperand_in_group345 .p2align 4, 0x90346 .type test_cmov_memoperand_in_group,@function347test_cmov_memoperand_in_group: # @test_cmov_memoperand_in_group348# CHECK-LABEL: Binary Function "test_cmov_memoperand_in_group" after CMOV conversion349# FDATA: 0 [unknown] 0 1 test_cmov_memoperand_in_group 0 1 2350 .cfi_startproc351# %bb.0: # %entry352 movl %edx, %eax353 movl %edx, %r8d354 cmpl %esi, %edi355 ja LBB9_2356# %bb.1: # %entry357 movl (%rcx), %r8d358 movl %edi, %eax359 movl %esi, %edx360LBB9_2: # %entry361 addl %r8d, %eax362 addl %edx, %eax363 retq364Lfunc_end9:365 .size test_cmov_memoperand_in_group, Lfunc_end9-test_cmov_memoperand_in_group366 .cfi_endproc367 # -- End function368 .globl test_cmov_memoperand_in_group2 # -- Begin function test_cmov_memoperand_in_group2369 .p2align 4, 0x90370 .type test_cmov_memoperand_in_group2,@function371test_cmov_memoperand_in_group2: # @test_cmov_memoperand_in_group2372# CHECK-LABEL: Binary Function "test_cmov_memoperand_in_group2" after CMOV conversion373# FDATA: 0 [unknown] 0 1 test_cmov_memoperand_in_group2 0 1 2374 .cfi_startproc375# %bb.0: # %entry376 movl %edx, %eax377 movl %edx, %r8d378 cmpl %esi, %edi379 jbe LBB10_2380# %bb.1: # %entry381 movl (%rcx), %r8d382 movl %edi, %eax383 movl %esi, %edx384LBB10_2: # %entry385 addl %r8d, %eax386 addl %edx, %eax387 retq388Lfunc_end10:389 .size test_cmov_memoperand_in_group2, Lfunc_end10-test_cmov_memoperand_in_group2390 .cfi_endproc391 # -- End function392 .globl test_cmov_memoperand_conflicting_dir # -- Begin function test_cmov_memoperand_conflicting_dir393 .p2align 4, 0x90394 .type test_cmov_memoperand_conflicting_dir,@function395test_cmov_memoperand_conflicting_dir: # @test_cmov_memoperand_conflicting_dir396# CHECK-LABEL: Binary Function "test_cmov_memoperand_conflicting_dir" after CMOV conversion397# FDATA: 0 [unknown] 0 1 test_cmov_memoperand_conflicting_dir 0 1 2398 .cfi_startproc399# %bb.0: # %entry400 cmpl %esi, %edi401 movl (%rcx), %eax402 cmoval %edx, %eax403 cmoval (%r8), %edx404 addl %edx, %eax405 retq406Lfunc_end11:407 .size test_cmov_memoperand_conflicting_dir, Lfunc_end11-test_cmov_memoperand_conflicting_dir408 .cfi_endproc409 # -- End function410 .globl test_cmov_memoperand_in_group_reuse_for_addr # -- Begin function test_cmov_memoperand_in_group_reuse_for_addr411 .p2align 4, 0x90412 .type test_cmov_memoperand_in_group_reuse_for_addr,@function413test_cmov_memoperand_in_group_reuse_for_addr: # @test_cmov_memoperand_in_group_reuse_for_addr414# CHECK-LABEL: Binary Function "test_cmov_memoperand_in_group_reuse_for_addr" after CMOV conversion415# FDATA: 0 [unknown] 0 1 test_cmov_memoperand_in_group_reuse_for_addr 0 1 2416 .cfi_startproc417# %bb.0: # %entry418 movl %edi, %eax419 cmpl %esi, %edi420 ja LBB12_2421# %bb.1: # %entry422 movl (%rcx), %eax423LBB12_2: # %entry424 retq425Lfunc_end12:426 .size test_cmov_memoperand_in_group_reuse_for_addr, Lfunc_end12-test_cmov_memoperand_in_group_reuse_for_addr427 .cfi_endproc428 # -- End function429 .globl test_cmov_memoperand_in_group_reuse_for_addr2 # -- Begin function test_cmov_memoperand_in_group_reuse_for_addr2430 .p2align 4, 0x90431 .type test_cmov_memoperand_in_group_reuse_for_addr2,@function432test_cmov_memoperand_in_group_reuse_for_addr2: # @test_cmov_memoperand_in_group_reuse_for_addr2433# CHECK-LABEL: Binary Function "test_cmov_memoperand_in_group_reuse_for_addr2" after CMOV conversion434# FDATA: 0 [unknown] 0 1 test_cmov_memoperand_in_group_reuse_for_addr2 0 1 2435 .cfi_startproc436# %bb.0: # %entry437 movl %edi, %eax438 cmpl %esi, %edi439 ja LBB13_2440# %bb.1: # %entry441 movq (%rcx), %rax442 movl (%rax), %eax443LBB13_2: # %entry444 retq445Lfunc_end13:446 .size test_cmov_memoperand_in_group_reuse_for_addr2, Lfunc_end13-test_cmov_memoperand_in_group_reuse_for_addr2447 .cfi_endproc448 # -- End function449 .globl test_cmov_memoperand_in_group_reuse_for_addr3 # -- Begin function test_cmov_memoperand_in_group_reuse_for_addr3450 .p2align 4, 0x90451 .type test_cmov_memoperand_in_group_reuse_for_addr3,@function452test_cmov_memoperand_in_group_reuse_for_addr3: # @test_cmov_memoperand_in_group_reuse_for_addr3453# CHECK-LABEL: Binary Function "test_cmov_memoperand_in_group_reuse_for_addr3" after CMOV conversion454# FDATA: 0 [unknown] 0 1 test_cmov_memoperand_in_group_reuse_for_addr3 0 1 2455 .cfi_startproc456# %bb.0: # %entry457 movl %edi, %eax458 cmpl %esi, %edi459 ja LBB14_2460# %bb.1: # %entry461 movl (%rcx), %eax462LBB14_2: # %entry463 retq464Lfunc_end14:465 .size test_cmov_memoperand_in_group_reuse_for_addr3, Lfunc_end14-test_cmov_memoperand_in_group_reuse_for_addr3466 .cfi_endproc467 # -- End function468 .globl test_memoperand_loop # -- Begin function test_memoperand_loop469 .p2align 4, 0x90470 .type test_memoperand_loop,@function471test_memoperand_loop: # @test_memoperand_loop472# CHECK-LABEL: Binary Function "test_memoperand_loop" after CMOV conversion473# FDATA: 0 [unknown] 0 1 test_memoperand_loop 0 1 2474 .cfi_startproc475# %bb.0: # %entry476 movq begin@GOTPCREL(%rip), %r8477 movq (%r8), %rax478 movq end@GOTPCREL(%rip), %rcx479 movq (%rcx), %rdx480 xorl %esi, %esi481 movq %rax, %rcx482LBB15_1: # %loop.body483 addq $8, %rcx484 cmpq %rdx, %rcx485 ja LBB15_3486# %bb.2: # %loop.body487 movq (%r8), %rcx488LBB15_3: # %loop.body489 movl %edi, (%rcx)490 addq $8, %rcx491 cmpq %rdx, %rcx492# CHECK: movl %edi, (%rcx)493# CHECK-NEXT: addq $0x8, %rcx494# CHECK-NEXT: cmpq %rdx, %rcx495# CHECK-NEXT: cmovbeq %rax, %rcx496LBB15_3_br:497 ja LBB15_5498# FDATA: 1 test_memoperand_loop #LBB15_3_br# 1 test_memoperand_loop #LBB15_4# 1 2499# FDATA: 1 test_memoperand_loop #LBB15_3_br# 1 test_memoperand_loop #LBB15_5# 1 2500# %bb.4: # %loop.body501LBB15_4:502 movq %rax, %rcx503LBB15_5: # %loop.body504 movl %edi, (%rcx)505 addl $1, %esi506 cmpl $1024, %esi # imm = 0x400507 jl LBB15_1508# %bb.6: # %exit509 retq510Lfunc_end15:511 .size test_memoperand_loop, Lfunc_end15-test_memoperand_loop512 .cfi_endproc513 # -- End function514 .globl CmovBackToBack # -- Begin function CmovBackToBack515 .p2align 4, 0x90516 .type CmovBackToBack,@function517CmovBackToBack: # @CmovBackToBack518# CHECK-LABEL: Binary Function "CmovBackToBack" after CMOV conversion519# FDATA: 0 [unknown] 0 1 CmovBackToBack 0 1 2520 .cfi_startproc521 testl %edi, %edi522 jle LBB16_5523 movl %edi, %r8d524 xorl %edi, %edi525# FDATA: 0 [unknown] 0 1 CmovBackToBack #LBB16_2# 1 2526LBB16_2: # %for.body527 movl (%rcx,%rdi,4), %eax528 leal 1(%rax), %r9d529 imull %esi, %eax530 movl $10, %r10d531 cmpl %edx, %eax532# CHECK: cmpl %edx, %eax533# CHECK-NEXT: cmovlel %r9d, %r10d534LBB16_2_br:535 jg LBB16_4536# FDATA: 1 CmovBackToBack #LBB16_2_br# 1 CmovBackToBack #LBB16_3# 1 2537# FDATA: 1 CmovBackToBack #LBB16_2_br# 1 CmovBackToBack #LBB16_4# 1 2538LBB16_3:539 movl %r9d, %r10d540LBB16_4: # %for.body541# CHECK-NEXT: cmovlel %r9d, %r10d542LBB16_6_br:543 jg LBB16_8544# FDATA: 1 CmovBackToBack #LBB16_6_br# 1 CmovBackToBack #LBB16_7# 1 2545# FDATA: 1 CmovBackToBack #LBB16_6_br# 1 CmovBackToBack #LBB16_8# 1 2546LBB16_7:547 movl %r9d, %r10d548LBB16_8: # %for.body549 imull %r9d, %r10d550 movl %r10d, (%rcx,%rdi,4)551 addq $1, %rdi552 cmpq %rdi, %r8553 jne LBB16_2554LBB16_5: # %for.cond.cleanup555 retq556Lfunc_end16:557 .size CmovBackToBack, Lfunc_end16-CmovBackToBack558 .cfi_endproc559 # -- End function560 .data561 .globl begin562begin:563 .quad 0xdeadbeef564 .globl end565end:566 .quad 0xfaceb00c567 568