comparison test/CodeGen/X86/2009-10-19-atomic-cmp-eflags.ll @ 95:afa8332a0e37 LLVM3.8

LLVM 3.8
author Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
date Tue, 13 Oct 2015 17:48:58 +0900
parents 95c75e76d11b
children 3a76565eade5
comparison
equal deleted inserted replaced
84:f3e34b893a5f 95:afa8332a0e37
21 %call.i = call i32 @lt_dlinit() nounwind ; <i32> [#uses=1] 21 %call.i = call i32 @lt_dlinit() nounwind ; <i32> [#uses=1]
22 %tobool.i = icmp ne i32 %call.i, 0 ; <i1> [#uses=1] 22 %tobool.i = icmp ne i32 %call.i, 0 ; <i1> [#uses=1]
23 br i1 %tobool.i, label %if.then.i, label %if.end.i 23 br i1 %tobool.i, label %if.then.i, label %if.end.i
24 24
25 if.then.i: ; preds = %entry 25 if.then.i: ; preds = %entry
26 %call1.i = call i32 @warn_dlerror(i8* getelementptr inbounds ([45 x i8]* @.str76843, i32 0, i32 0)) nounwind ; <i32> [#uses=0] 26 %call1.i = call i32 @warn_dlerror(i8* getelementptr inbounds ([45 x i8], [45 x i8]* @.str76843, i32 0, i32 0)) nounwind ; <i32> [#uses=0]
27 store i32 -1, i32* %retval.i 27 store i32 -1, i32* %retval.i
28 br label %lt_init.exit 28 br label %lt_init.exit
29 29
30 if.end.i: ; preds = %entry 30 if.end.i: ; preds = %entry
31 store i32 0, i32* %retval.i 31 store i32 0, i32* %retval.i
32 br label %lt_init.exit 32 br label %lt_init.exit
33 33
34 lt_init.exit: ; preds = %if.end.i, %if.then.i 34 lt_init.exit: ; preds = %if.end.i, %if.then.i
35 %3 = load i32* %retval.i ; <i32> [#uses=1] 35 %3 = load i32, i32* %retval.i ; <i32> [#uses=1]
36 call void asm sideeffect "cpuid", "~{ax},~{bx},~{cx},~{dx},~{memory},~{dirflag},~{fpsr},~{flags}"() nounwind 36 call void asm sideeffect "cpuid", "~{ax},~{bx},~{cx},~{dx},~{memory},~{dirflag},~{fpsr},~{flags}"() nounwind
37 %4 = call i64 @llvm.readcyclecounter() nounwind ; <i64> [#uses=1] 37 %4 = call i64 @llvm.readcyclecounter() nounwind ; <i64> [#uses=1]
38 %5 = sub i64 %4, %2 ; <i64> [#uses=1] 38 %5 = sub i64 %4, %2 ; <i64> [#uses=1]
39 %6 = atomicrmw add i64* getelementptr inbounds ([1216 x i64]* @__profiling_callsite_timestamps_live, i32 0, i32 51), i64 %5 monotonic 39 %6 = atomicrmw add i64* getelementptr inbounds ([1216 x i64], [1216 x i64]* @__profiling_callsite_timestamps_live, i32 0, i32 51), i64 %5 monotonic
40 ;CHECK: lock 40 ;CHECK: lock {{xadd|addq}} %rdx, __profiling_callsite_timestamps_live
41 ;CHECK-NEXT: {{xadd|addq}} %rdx, __profiling_callsite_timestamps_live
42 ;CHECK-NEXT: cmpl $0, 41 ;CHECK-NEXT: cmpl $0,
43 ;CHECK-NEXT: jne 42 ;CHECK-NEXT: jne
44 %cmp = icmp eq i32 %3, 0 ; <i1> [#uses=1] 43 %cmp = icmp eq i32 %3, 0 ; <i1> [#uses=1]
45 br i1 %cmp, label %if.then, label %if.end 44 br i1 %cmp, label %if.then, label %if.end
46 45
48 call void @cli_rarload() 47 call void @cli_rarload()
49 br label %if.end 48 br label %if.end
50 49
51 if.end: ; preds = %if.then, %lt_init.exit 50 if.end: ; preds = %if.then, %lt_init.exit
52 store i32 0, i32* %retval 51 store i32 0, i32* %retval
53 %7 = load i32* %retval ; <i32> [#uses=1] 52 %7 = load i32, i32* %retval ; <i32> [#uses=1]
54 tail call void asm sideeffect "cpuid", "~{ax},~{bx},~{cx},~{dx},~{memory},~{dirflag},~{fpsr},~{flags}"() nounwind 53 tail call void asm sideeffect "cpuid", "~{ax},~{bx},~{cx},~{dx},~{memory},~{dirflag},~{fpsr},~{flags}"() nounwind
55 %8 = tail call i64 @llvm.readcyclecounter() nounwind ; <i64> [#uses=1] 54 %8 = tail call i64 @llvm.readcyclecounter() nounwind ; <i64> [#uses=1]
56 %9 = sub i64 %8, %0 ; <i64> [#uses=1] 55 %9 = sub i64 %8, %0 ; <i64> [#uses=1]
57 %10 = atomicrmw add i64* getelementptr inbounds ([1216 x i64]* @__profiling_callsite_timestamps_live, i32 0, i32 50), i64 %9 monotonic 56 %10 = atomicrmw add i64* getelementptr inbounds ([1216 x i64], [1216 x i64]* @__profiling_callsite_timestamps_live, i32 0, i32 50), i64 %9 monotonic
58 ret i32 %7 57 ret i32 %7
59 } 58 }
60 59
61 declare void @cli_rarload() nounwind 60 declare void @cli_rarload() nounwind
62 61