brintos

brintos / llvm-project-archived public Read only

0
0
Text · 19.8 KiB · ed7aac8 Raw
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