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
- %i4 = phi int %i2, %i3 ; Forward ref vars...
- %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, 0 ; Def 2
+ sub int 0, 4 ; Def 3
+ br label %1
+
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
+ br bool %0, label %2, label %1
add int %0, %1 ; Def 6
sub int %4, %3 ; Def 7
; This function always returns zero
int "zarro"()
- uint 4000000000 ; Def 0 - uint plane
- int 0 ; Def 0 - int plane
begin
Startup:
- ret int %0
+ ret int 0
end