aboutsummaryrefslogtreecommitdiffstats
path: root/test/CodeGen/Hexagon/expand-condsets-rm-segment.ll
blob: cde7e6a09e1d87f5bf4bc9732ed640a5873d10f1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
; RUN: llc -O2 < %s
; REQUIRES: asserts

target datalayout = "e-m:e-p:32:32-i1:32-i64:64-a:0-v32:32-n16:32"
target triple = "hexagon-unknown--elf"

%struct.cpumask = type { [1 x i32] }
%struct.load_weight = type { i32, i32 }

@sysctl_sched_latency = global i32 6000000, align 4
@normalized_sysctl_sched_latency = global i32 6000000, align 4
@sysctl_sched_tunable_scaling = global i8 1, align 1
@sysctl_sched_min_granularity = global i32 750000, align 4
@normalized_sysctl_sched_min_granularity = global i32 750000, align 4
@sysctl_sched_wakeup_granularity = global i32 1000000, align 4
@normalized_sysctl_sched_wakeup_granularity = global i32 1000000, align 4
@sysctl_sched_migration_cost = constant i32 500000, align 4
@sysctl_sched_shares_window = global i32 10000000, align 4
@sysctl_sched_child_runs_first = common global i32 0, align 4
@cpu_online_mask = external constant %struct.cpumask*

; Function Attrs: noinline nounwind
define void @sched_init_granularity() #0 {
entry:
  tail call fastcc void @update_sysctl()
  ret void
}

; Function Attrs: noinline nounwind
define internal fastcc void @update_sysctl() #0 {
entry:
  %call = tail call i32 @get_update_sysctl_factor()
  %0 = load i32, i32* @normalized_sysctl_sched_min_granularity, align 4, !tbaa !1
  %mul = mul i32 %0, %call
  store i32 %mul, i32* @sysctl_sched_min_granularity, align 4, !tbaa !1
  %1 = load i32, i32* @normalized_sysctl_sched_latency, align 4, !tbaa !1
  %mul1 = mul i32 %1, %call
  store i32 %mul1, i32* @sysctl_sched_latency, align 4, !tbaa !1
  %2 = load i32, i32* @normalized_sysctl_sched_wakeup_granularity, align 4, !tbaa !1
  %mul2 = mul i32 %2, %call
  store i32 %mul2, i32* @sysctl_sched_wakeup_granularity, align 4, !tbaa !1
  ret void
}

; Function Attrs: noinline nounwind
define i32 @calc_delta_mine(i32 %delta_exec, i32 %weight, %struct.load_weight* nocapture %lw) #0 {
entry:
  %cmp = icmp ugt i32 %weight, 1
  %conv = zext i32 %delta_exec to i64
  br i1 %cmp, label %if.then, label %if.end, !prof !5

if.then:                                          ; preds = %entry
  %conv2 = zext i32 %weight to i64
  %mul = mul i64 %conv2, %conv
  br label %if.end

if.end:                                           ; preds = %entry, %if.then
  %tmp.0 = phi i64 [ %mul, %if.then ], [ %conv, %entry ]
  %inv_weight = getelementptr inbounds %struct.load_weight, %struct.load_weight* %lw, i32 0, i32 1
  %0 = load i32, i32* %inv_weight, align 4, !tbaa !6
  %tobool4 = icmp eq i32 %0, 0
  br i1 %tobool4, label %if.then5, label %if.end22

if.then5:                                         ; preds = %if.end
  %weight7 = getelementptr inbounds %struct.load_weight, %struct.load_weight* %lw, i32 0, i32 0
  %1 = load i32, i32* %weight7, align 4, !tbaa !9
  %lnot9 = icmp eq i32 %1, 0
  br i1 %lnot9, label %if.then17, label %if.else19, !prof !10

if.then17:                                        ; preds = %if.then5
  store i32 -1, i32* %inv_weight, align 4, !tbaa !6
  br label %if.end22

if.else19:                                        ; preds = %if.then5
  %div = udiv i32 -1, %1
  store i32 %div, i32* %inv_weight, align 4, !tbaa !6
  br label %if.end22

if.end22:                                         ; preds = %if.end, %if.then17, %if.else19
  %2 = phi i32 [ %0, %if.end ], [ -1, %if.then17 ], [ %div, %if.else19 ]
  %cmp23 = icmp ugt i64 %tmp.0, 4294967295
  br i1 %cmp23, label %if.then31, label %if.else37, !prof !10

if.then31:                                        ; preds = %if.end22
  %add = add i64 %tmp.0, 32768
  %shr = lshr i64 %add, 16
  %conv33 = zext i32 %2 to i64
  %mul34 = mul i64 %conv33, %shr
  %add35 = add i64 %mul34, 32768
  %shr36 = lshr i64 %add35, 16
  br label %if.end43

if.else37:                                        ; preds = %if.end22
  %conv39 = zext i32 %2 to i64
  %mul40 = mul i64 %conv39, %tmp.0
  %add41 = add i64 %mul40, 2147483648
  %shr42 = lshr i64 %add41, 32
  br label %if.end43

if.end43:                                         ; preds = %if.else37, %if.then31
  %tmp.1 = phi i64 [ %shr36, %if.then31 ], [ %shr42, %if.else37 ]
  %cmp49 = icmp ult i64 %tmp.1, 2147483647
  %3 = trunc i64 %tmp.1 to i32
  %conv51 = select i1 %cmp49, i32 %3, i32 2147483647
  ret i32 %conv51
}

declare i32 @get_update_sysctl_factor() #0
declare i32 @__bitmap_weight(i32*, i32) #1

attributes #0 = { noinline nounwind "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" }
attributes #1 = { "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" }
attributes #2 = { nounwind }

!llvm.ident = !{!0}

!0 = !{!"Clang 3.1"}
!1 = !{!2, !2, i64 0}
!2 = !{!"int", !3, i64 0}
!3 = !{!"omnipotent char", !4, i64 0}
!4 = !{!"Simple C/C++ TBAA"}
!5 = !{!"branch_weights", i32 64, i32 4}
!6 = !{!7, !8, i64 4}
!7 = !{!"load_weight", !8, i64 0, !8, i64 4}
!8 = !{!"long", !3, i64 0}
!9 = !{!7, !8, i64 0}
!10 = !{!"branch_weights", i32 4, i32 64}
!11 = !{!12, !12, i64 0}
!12 = !{!"any pointer", !3, i64 0}
!13 = !{!3, !3, i64 0}
!14 = !{i32 45854, i32 45878}