2001-06-06 20:29:01 +00:00
|
|
|
implementation
|
|
|
|
|
|
|
|
void "test function"(int %i0, int %j0)
|
|
|
|
%x = int 1
|
|
|
|
begin
|
|
|
|
Startup: ; Basic block #0
|
|
|
|
%i1 = add int %i0, 1
|
|
|
|
%j1 = add int %j0, 1
|
|
|
|
%x = setle int %i1, %j1
|
|
|
|
br bool %x, label %Increment, label %Decrement
|
|
|
|
|
|
|
|
Merge: ; Basic block #3
|
2001-06-11 15:05:02 +00:00
|
|
|
%i4 = phi int [%i2, %Increment], [%i3,%Decrement] ; Forward ref vars...
|
2001-06-06 20:29:01 +00:00
|
|
|
%j2 = add int %j1, %i4
|
|
|
|
ret void
|
|
|
|
|
|
|
|
Increment: ; Basic block #1
|
|
|
|
%i2 = add int %i1, 1
|
|
|
|
br label %Merge
|
|
|
|
|
|
|
|
Decrement: ; Basic block #2
|
|
|
|
%i3 = sub int %i1, %x
|
|
|
|
br label %Merge
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
; Test "stripped" format where nothing is symbolic... this is how the bytecode
|
|
|
|
; format looks anyways (except for negative vs positive offsets)...
|
|
|
|
;
|
|
|
|
void "void"(int, int) ; Def %0, %1
|
|
|
|
int 0 ; Def 2
|
|
|
|
int -4 ; Def 3
|
|
|
|
begin
|
|
|
|
add int %0, %1 ; Def 4
|
|
|
|
sub int %4, %3 ; Def 5
|
|
|
|
setle int %5, %2 ; Def 0 - bool plane
|
|
|
|
br bool %0, label %1, label %0
|
|
|
|
|
|
|
|
add int %0, %1 ; Def 6
|
|
|
|
sub int %4, %3 ; Def 7
|
|
|
|
setle int %7, %2 ; Def 1 - bool plane
|
|
|
|
ret void
|
|
|
|
end
|
|
|
|
|
|
|
|
; This function always returns zero
|
|
|
|
int "zarro"()
|
|
|
|
uint 4000000000 ; Def 0 - uint plane
|
|
|
|
int 0 ; Def 0 - int plane
|
|
|
|
begin
|
|
|
|
Startup:
|
|
|
|
ret int %0
|
|
|
|
end
|
|
|
|
|