aboutsummaryrefslogtreecommitdiff
path: root/test/intervals.ll
blob: d5e2486c98b214fc78d00c9a6b054130f5a78c0b (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
implementation

;; This is a simple nested loop to test interval construction

int "loop test"(int %i, int %j)
begin
Start:
	%j1 = add int 0, 0
	br label %L1Header

L1Header:
	%j2 = phi int [%j1, %Start], [%j3, %L2Done]

	%i1 = add int 0, 0             ; %i1 = 0
	br label %L2Body
L2Body:
	%wl = phi int [%j, %L1Header], [%wl, %L2Body]    ;; Useless PHI
	%i2 = phi int [%i1, %L1Header], [%i3, %L2Body]
	%i3 = add int %i2, 1
	%L2Done = seteq int %i3, 10
	br bool %L2Done, label %L2Done, label %L2Body
L2Done:
	%j3 = add int %j2, %i3
	%L1Done = seteq int %j3, 100
	br bool %L1Done, label %L1Done, label %L1Header

L1Done:
	ret int %j3
end