-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
-
+; RUN: llvm-as < %s | llvm-dis > %t1.ll
+; RUN: llvm-as %t1.ll -o - | llvm-dis > %t2.ll
+; RUN: diff %t1.ll %t2.ll
; 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
+define void @void(i32, i32) {
+ add i32 0, 0 ; <i32>:3 [#uses=2]
+ sub i32 0, 4 ; <i32>:4 [#uses=2]
+ br label %5
+
+; <label>:5 ; preds = %5, %2
+ add i32 %0, %1 ; <i32>:6 [#uses=2]
+ sub i32 %6, %4 ; <i32>:7 [#uses=1]
+ icmp sle i32 %7, %3 ; <i1>:8 [#uses=1]
+ br i1 %8, label %9, label %5
+
+; <label>:9 ; preds = %5
+ add i32 %0, %1 ; <i32>:10 [#uses=0]
+ sub i32 %6, %4 ; <i32>:11 [#uses=1]
+ icmp sle i32 %11, %3 ; <i1>:12 [#uses=0]
+ ret void
+}
; This function always returns zero
-int "zarro"()
- uint 4000000000 ; Def 0 - uint plane
- int 0 ; Def 0 - int plane
-begin
+define i32 @zarro() {
Startup:
- ret int %0
-end
-
+ ret i32 0
+}