diff --git a/test/Integer/.cvsignore b/test/Integer/.cvsignore
new file mode 100644
index 0000000..83260f8
--- /dev/null
+++ b/test/Integer/.cvsignore
@@ -0,0 +1 @@
+Output
diff --git a/test/Integer/BitArith.ll b/test/Integer/BitArith.ll
new file mode 100644
index 0000000..cf5e7e6
--- /dev/null
+++ b/test/Integer/BitArith.ll
@@ -0,0 +1,26 @@
+; RUN: llvm-as %s -o - | llvm-dis > %t1.ll
+; RUN: llvm-as %t1.ll -o - | llvm-dis > %t2.ll
+; RUN: diff %t1.ll %t2.ll
+
+
+declare void "foo"(i31 %i, i63 %j, i10 %k)
+
+implementation
+
+; foo test basic arith operations
+define void "foo"(i31 %i, i63 %j, i10 %k)
+begin
+	%t1 = trunc i63 %j to i31 
+        %t2 = add i31 %t1, %i
+        %t20 = add i31 3, %t1
+        %t3 = zext i31 %i to i63
+        %t4 = sub i63 %t3, %j
+        %t40 = sub i63 %j, -100 
+        %t5 = mul i10 %k, 7
+        %t6 = sdiv i63 %j, -2
+        %t7 = udiv i63 %j, %t3
+        %t8 = urem i10 %k, 10
+        %t9 = srem i10 %k, -10
+	ret void
+end
+
diff --git a/test/Integer/BitBit.ll b/test/Integer/BitBit.ll
new file mode 100644
index 0000000..02969bc
--- /dev/null
+++ b/test/Integer/BitBit.ll
@@ -0,0 +1,26 @@
+; RUN: llvm-as %s -o - | llvm-dis > %t1.ll
+; RUN: llvm-as %t1.ll -o - | llvm-dis > %t2.ll
+; RUN: diff %t1.ll %t2.ll
+
+
+
+declare void "foo"(i31 %i, i17 %j)
+
+implementation
+
+; foo test basic bitwise operations
+define void "foo"(i31 %i, i33 %j)
+begin
+	%t1 = trunc i33 %j to i31 
+        %t2 = and i31 %t1, %i
+        %t3 = sext i31 %i to i33
+        %t4 = or i33 %t3, %j 
+        %t5 = xor i31 %t2, 7 
+        %t6 = shl i31 %i, i8 2
+        %t7 = trunc i31 %i to i8
+        %t8 = shl i8 %t7, i8 3
+        %t9 = lshr i33 %j, i8 31
+        %t10 = ashr i33 %j, i8 %t7
+	ret void
+end
+
diff --git a/test/Integer/BitCast.ll b/test/Integer/BitCast.ll
new file mode 100644
index 0000000..b1849bb
--- /dev/null
+++ b/test/Integer/BitCast.ll
@@ -0,0 +1,28 @@
+; RUN: llvm-as %s -o - | llvm-dis > %t1.ll
+; RUN: llvm-as %t1.ll -o - | llvm-dis > %t2.ll
+; RUN: diff %t1.ll %t2.ll
+
+
+declare void "foo"(i31 %i, i1280 %j, i1 %k, float %f)
+
+implementation
+
+; foo test basic arith operations
+define void "foo"(i31 %i, i1280 %j, i1 %k, float %f)
+begin
+	%t1 = trunc i1280 %j to i31
+        %t2 = trunc i31 %t1 to i1
+ 
+        %t3 = zext i31 %i to i1280
+        %t4 = sext i31 %i to i1280
+
+        %t5 = fptoui float 3.14159 to i31
+        %t6 = uitofp i31 %t5 to double
+
+        %t7 = fptosi double -1234.5678 to i28
+        %t8 = sitofp i8 -1 to double
+        %t9 = uitofp i8 255 to double
+        
+	ret void
+end
+
diff --git a/test/Integer/BitIcmp.ll b/test/Integer/BitIcmp.ll
new file mode 100644
index 0000000..d4475bf
--- /dev/null
+++ b/test/Integer/BitIcmp.ll
@@ -0,0 +1,46 @@
+; RUN: llvm-as %s -o - | llvm-dis > %t1.ll
+; RUN: llvm-as %t1.ll -o - | llvm-dis > %t2.ll
+; RUN: diff %t1.ll %t2.ll
+
+
+
+implementation
+
+define i55 "simpleIcmp"(i55 %i0, i55 %j0)
+begin
+	%t1 = icmp eq i55 %i0, %j0
+	%t2 = icmp ne i55 %i0, %j0
+	%t3 = icmp ult i55 %i0, %j0
+        %t4 = icmp sgt i55 %i0, %j0
+	%t5 = icmp ule i55 %i0, %j0
+        %t6 = icmp sge i55 %i0, %j0
+
+	%t7 = icmp eq i55 %i0, 1098765432
+        %t8 = icmp ne i55 %i0, -31415926
+
+        %t9 = icmp ult i55 10000, %j0
+        %t10 = icmp sgt i55 -10000, %j0
+
+	ret i55 %i0
+end
+
+define i31 "phitest"(i12 %i)
+begin
+
+HasArg:
+        %n1 = add i12 1, %i
+        br label %Continue
+        
+Continue:
+        %n = phi i12 [%n1, %HasArg], [%next, %Continue]
+        %next = add i12 1, %n
+        br label %Continue
+end
+
+define i18 "select"(i18 %i)
+begin
+        %t = icmp sgt i18 %i, 100
+        %k = select i1 %t, i18 %i, i18 999
+        ret i18 %k
+end
+
diff --git a/test/Integer/BitMem.ll b/test/Integer/BitMem.ll
new file mode 100644
index 0000000..4d55a92
--- /dev/null
+++ b/test/Integer/BitMem.ll
@@ -0,0 +1,34 @@
+; RUN: llvm-as %s -o - | llvm-dis > %t1.ll
+; RUN: llvm-as %t1.ll -o - | llvm-dis > %t2.ll
+; RUN: diff %t1.ll %t2.ll
+
+
+declare void "foo"()
+
+
+implementation
+
+; foo test basic arith operations
+define void "foo"()
+begin
+	%t1 = malloc i31, i32 4
+        %t2 = malloc i31, i32 7, align 1024
+        %t3 = malloc [4 x i15]
+
+
+        %idx = getelementptr [4 x i15]* %t3, i64 0, i64 2
+        store i15 -123, i15* %idx
+
+        free [4 x i15]* %t3
+        free i31* %t2
+        free i31* %t1
+        
+        %t4 = alloca i12, i32 100
+        free i12* %t4
+
+        %t5 = alloca i31
+        store i31 -123, i31* %t5
+
+        free i31* %t5
+	ret void
+end
diff --git a/test/Integer/BitMisc.ll b/test/Integer/BitMisc.ll
new file mode 100644
index 0000000..1aaf624
--- /dev/null
+++ b/test/Integer/BitMisc.ll
@@ -0,0 +1,25 @@
+; RUN: llvm-as %s -o - | llvm-dis > %t1.ll
+; RUN: llvm-as %t1.ll -o - | llvm-dis > %t2.ll
+; RUN: diff %t1.ll %t2.ll
+
+
+%MyVar     = external global i19
+%MyIntList = external global { i39 *, i19 }
+             external global i19      ; i19*:0
+
+%AConst    = constant i19 -123
+
+%AString   = constant [4 x i8] c"test"
+
+%ZeroInit  = global { [100 x i19 ], [40 x float ] } { [100 x i19] zeroinitializer,
+                                                      [40  x float] zeroinitializer }
+
+implementation
+
+define i19 "foo"(i19 %blah)
+begin
+	store i19 5, i19 *%MyVar
+	%idx = getelementptr { i39 *, i19 } * %MyIntList, i64 0, i32 1
+  	store i19 12, i19* %idx
+  	ret i19 %blah
+end
diff --git a/test/Integer/BitPacked.ll b/test/Integer/BitPacked.ll
new file mode 100644
index 0000000..267c3fd
--- /dev/null
+++ b/test/Integer/BitPacked.ll
@@ -0,0 +1,23 @@
+; RUN: llvm-as %s -o - | llvm-dis > %t1.ll
+; RUN: llvm-as %t1.ll -o - | llvm-dis > %t2.ll
+; RUN: diff %t1.ll %t2.ll
+
+
+%foo1 = external global <4 x float>;
+%foo2 = external global <2 x i10>;
+
+implementation   ; Functions:
+
+define void %main() 
+{
+        store <4 x float> <float 1.0, float 2.0, float 3.0, float 4.0>, <4 x float>* %foo1
+        store <2 x i10> <i10 4, i10 4>, <2 x i10>* %foo2
+	%l1 = load <4 x float>* %foo1
+        %l2 = load <2 x i10>* %foo2
+        %r1 = extractelement <2 x i10> %l2, i32 1    
+        %r2 = extractelement <2 x i10> %l2, i32 0
+        %t = mul i10 %r1, %r2
+        %r3 = insertelement <2 x i10> %l2, i10 %t, i32 0    
+        store <2 x i10> %r3, <2 x i10>* %foo2
+        ret void
+}
diff --git a/test/Integer/a15.ll b/test/Integer/a15.ll
new file mode 100644
index 0000000..6c8e9d1
--- /dev/null
+++ b/test/Integer/a15.ll
@@ -0,0 +1,23 @@
+; RUN: llvm-as %s -o - | llvm-dis > %t.ll
+; RUN: diff %t.ll %s.out
+
+; test 15 bits
+;
+%b = constant i15 add(i15 32767, i15 1)
+%c = constant i15 add(i15 32767, i15 32767)
+%d = constant i15 add(i15 32760, i15 8)
+%e = constant i15 sub(i15 0 , i15 1)
+%f = constant i15 sub(i15 0 , i15 32767)
+%g = constant i15 sub(i15 2 , i15 32767)
+
+%h = constant i15 shl(i15 1 , i8 15)
+%i = constant i15 shl(i15 1 , i8 14)
+%j = constant i15 lshr(i15 32767 , i8 14)
+%k = constant i15 lshr(i15 32767 , i8 15)
+%l = constant i15 ashr(i15 32767 , i8 14)
+%m = constant i15 ashr(i15 32767 , i8 15)
+
+%n = constant i15 mul(i15 32767, i15 2)
+%o = constant i15 trunc( i16 32768  to i15 )
+%p = constant i15 trunc( i16 32767  to i15 )
+ 
diff --git a/test/Integer/a15.ll.out b/test/Integer/a15.ll.out
new file mode 100644
index 0000000..ee0f12c
--- /dev/null
+++ b/test/Integer/a15.ll.out
@@ -0,0 +1,18 @@
+; ModuleID = '<stdin>'
+%b = constant i15 0		; <i15*> [#uses=0]
+%c = constant i15 -2		; <i15*> [#uses=0]
+%d = constant i15 0		; <i15*> [#uses=0]
+%e = constant i15 -1		; <i15*> [#uses=0]
+%f = constant i15 1		; <i15*> [#uses=0]
+%g = constant i15 3		; <i15*> [#uses=0]
+%h = constant i15 0		; <i15*> [#uses=0]
+%i = constant i15 -16384		; <i15*> [#uses=0]
+%j = constant i15 1		; <i15*> [#uses=0]
+%k = constant i15 0		; <i15*> [#uses=0]
+%l = constant i15 -1		; <i15*> [#uses=0]
+%m = constant i15 -1		; <i15*> [#uses=0]
+%n = constant i15 -2		; <i15*> [#uses=0]
+%o = constant i15 0		; <i15*> [#uses=0]
+%p = constant i15 -1		; <i15*> [#uses=0]
+
+implementation   ; Functions:
diff --git a/test/Integer/a17.ll b/test/Integer/a17.ll
new file mode 100644
index 0000000..207f85e
--- /dev/null
+++ b/test/Integer/a17.ll
@@ -0,0 +1,22 @@
+; RUN: llvm-as %s -o - | llvm-dis > %t.ll
+; RUN: diff %t.ll %s.out
+
+; test 17 bits
+;
+%b = constant i17 add(i17 131071, i17 1)
+%c = constant i17 add(i17 131071, i17 131071)
+%d = constant i17 add(i17 131064, i17 8)
+%e = constant i17 sub(i17 0 , i17 1)
+%f = constant i17 sub(i17 0 , i17 131071)
+%g = constant i17 sub(i17 2 , i17 131071)
+
+%h = constant i17 shl(i17 1 , i8 17)
+%i = constant i17 shl(i17 1 , i8 16)
+%j = constant i17 lshr(i17 131071 , i8 16)
+%k = constant i17 lshr(i17 131071 , i8 17)
+%l = constant i17 ashr(i17 131071 , i8 16)
+%m = constant i17 ashr(i17 131071 , i8 17)
+
+%n = constant i17 mul(i17 131071, i17 2) 
+%o = constant i17 trunc( i18 131072  to i17 )
+%p = constant i17 trunc( i18 131071  to i17 )
diff --git a/test/Integer/a17.ll.out b/test/Integer/a17.ll.out
new file mode 100644
index 0000000..bb60938
--- /dev/null
+++ b/test/Integer/a17.ll.out
@@ -0,0 +1,18 @@
+; ModuleID = '<stdin>'
+%b = constant i17 0		; <i17*> [#uses=0]
+%c = constant i17 -2		; <i17*> [#uses=0]
+%d = constant i17 0		; <i17*> [#uses=0]
+%e = constant i17 -1		; <i17*> [#uses=0]
+%f = constant i17 1		; <i17*> [#uses=0]
+%g = constant i17 3		; <i17*> [#uses=0]
+%h = constant i17 0		; <i17*> [#uses=0]
+%i = constant i17 -65536		; <i17*> [#uses=0]
+%j = constant i17 1		; <i17*> [#uses=0]
+%k = constant i17 0		; <i17*> [#uses=0]
+%l = constant i17 -1		; <i17*> [#uses=0]
+%m = constant i17 -1		; <i17*> [#uses=0]
+%n = constant i17 -2		; <i17*> [#uses=0]
+%o = constant i17 0		; <i17*> [#uses=0]
+%p = constant i17 -1		; <i17*> [#uses=0]
+
+implementation   ; Functions:
diff --git a/test/Integer/a31.ll b/test/Integer/a31.ll
new file mode 100644
index 0000000..6db33f6
--- /dev/null
+++ b/test/Integer/a31.ll
@@ -0,0 +1,22 @@
+; RUN: llvm-as %s -o - | llvm-dis > %t.ll
+; RUN: diff %t.ll %s.out
+
+; test 31 bits
+;
+%b = constant i31 add(i31 2147483647, i31 1)
+%c = constant i31 add(i31 2147483647, i31 2147483647)
+%d = constant i31 add(i31 2147483640, i31 8)
+%e = constant i31 sub(i31 0 , i31 1)
+%f = constant i31 sub(i31 0 , i31 2147483647)
+%g = constant i31 sub(i31 2 , i31 2147483647)
+
+%h = constant i31 shl(i31 1 , i8 31)
+%i = constant i31 shl(i31 1 , i8 30)
+%j = constant i31 lshr(i31 2147483647 , i8 30)
+%k = constant i31 lshr(i31 2147483647 , i8 31)
+%l = constant i31 ashr(i31 2147483647 , i8 30)
+%m = constant i31 ashr(i31 2147483647 , i8 31)
+
+%n = constant i31 mul(i31 2147483647, i31 2)
+%o = constant i31 trunc( i32 2147483648  to i31 )
+%p = constant i31 trunc( i32 2147483647  to i31 ) 
diff --git a/test/Integer/a31.ll.out b/test/Integer/a31.ll.out
new file mode 100644
index 0000000..1dcdc08
--- /dev/null
+++ b/test/Integer/a31.ll.out
@@ -0,0 +1,18 @@
+; ModuleID = '<stdin>'
+%b = constant i31 0		; <i31*> [#uses=0]
+%c = constant i31 -2		; <i31*> [#uses=0]
+%d = constant i31 0		; <i31*> [#uses=0]
+%e = constant i31 -1		; <i31*> [#uses=0]
+%f = constant i31 1		; <i31*> [#uses=0]
+%g = constant i31 3		; <i31*> [#uses=0]
+%h = constant i31 0		; <i31*> [#uses=0]
+%i = constant i31 -1073741824		; <i31*> [#uses=0]
+%j = constant i31 1		; <i31*> [#uses=0]
+%k = constant i31 0		; <i31*> [#uses=0]
+%l = constant i31 -1		; <i31*> [#uses=0]
+%m = constant i31 -1		; <i31*> [#uses=0]
+%n = constant i31 -2		; <i31*> [#uses=0]
+%o = constant i31 0		; <i31*> [#uses=0]
+%p = constant i31 -1		; <i31*> [#uses=0]
+
+implementation   ; Functions:
diff --git a/test/Integer/a33.ll b/test/Integer/a33.ll
new file mode 100644
index 0000000..90f31b3
--- /dev/null
+++ b/test/Integer/a33.ll
@@ -0,0 +1,23 @@
+; RUN: llvm-as %s -o - | llvm-dis > %t.ll
+; RUN: diff %t.ll %s.out
+
+; test 33 bits
+;
+%b = constant i33 add(i33 8589934591, i33 1)
+%c = constant i33 add(i33 8589934591, i33 8589934591)
+%d = constant i33 add(i33 8589934584, i33 8)
+%e = constant i33 sub(i33 0 , i33 1)
+%f = constant i33 sub(i33 0 , i33 8589934591)
+%g = constant i33 sub(i33 2 , i33 8589934591)
+
+%h = constant i33 shl(i33 1 , i8 33)
+%i = constant i33 shl(i33 1 , i8 32)
+%j = constant i33 lshr(i33 8589934591 , i8 32)
+%k = constant i33 lshr(i33 8589934591 , i8 33)
+%l = constant i33 ashr(i33 8589934591 , i8 32)
+%m = constant i33 ashr(i33 8589934591 , i8 33)
+
+%n = constant i33 mul(i33 8589934591, i33 2)
+%o = constant i33 trunc( i34 8589934592 to i33 )
+%p = constant i33 trunc( i34 8589934591  to i33 )
+ 
diff --git a/test/Integer/a33.ll.out b/test/Integer/a33.ll.out
new file mode 100644
index 0000000..3fc306c
--- /dev/null
+++ b/test/Integer/a33.ll.out
@@ -0,0 +1,18 @@
+; ModuleID = '<stdin>'
+%b = constant i33 0		; <i33*> [#uses=0]
+%c = constant i33 -2		; <i33*> [#uses=0]
+%d = constant i33 0		; <i33*> [#uses=0]
+%e = constant i33 -1		; <i33*> [#uses=0]
+%f = constant i33 1		; <i33*> [#uses=0]
+%g = constant i33 3		; <i33*> [#uses=0]
+%h = constant i33 0		; <i33*> [#uses=0]
+%i = constant i33 -4294967296		; <i33*> [#uses=0]
+%j = constant i33 1		; <i33*> [#uses=0]
+%k = constant i33 0		; <i33*> [#uses=0]
+%l = constant i33 -1		; <i33*> [#uses=0]
+%m = constant i33 -1		; <i33*> [#uses=0]
+%n = constant i33 -2		; <i33*> [#uses=0]
+%o = constant i33 0		; <i33*> [#uses=0]
+%p = constant i33 -1		; <i33*> [#uses=0]
+
+implementation   ; Functions:
diff --git a/test/Integer/a63.ll b/test/Integer/a63.ll
new file mode 100644
index 0000000..9f039ed
--- /dev/null
+++ b/test/Integer/a63.ll
@@ -0,0 +1,22 @@
+; RUN: llvm-as %s -o - | llvm-dis > %t.ll
+; RUN: diff %t.ll %s.out
+
+; test 63 bits
+;
+%b = constant i63 add(i63 9223372036854775807, i63 1)
+%c = constant i63 add(i63 9223372036854775807, i63 9223372036854775807)
+%d = constant i63 add(i63 9223372036854775800, i63 8)
+%e = constant i63 sub(i63 0 , i63 1)
+%f = constant i63 sub(i63 0 , i63 9223372036854775807)
+%g = constant i63 sub(i63 2 , i63 9223372036854775807)
+
+%h = constant i63 shl(i63 1 , i8 63)
+%i = constant i63 shl(i63 1 , i8 62)
+%j = constant i63 lshr(i63 9223372036854775807 , i8 62)
+%k = constant i63 lshr(i63 9223372036854775807 , i8 63)
+%l = constant i63 ashr(i63 9223372036854775807 , i8 62)
+%m = constant i63 ashr(i63 9223372036854775807 , i8 63)
+
+%n = constant i63 mul(i63 9223372036854775807, i63 2) 
+%o = constant i63 trunc( i64 9223372036854775808 to i63 )
+%p = constant i63 trunc( i64 9223372036854775807  to i63 )
diff --git a/test/Integer/a63.ll.out b/test/Integer/a63.ll.out
new file mode 100644
index 0000000..d2d0ce8
--- /dev/null
+++ b/test/Integer/a63.ll.out
@@ -0,0 +1,18 @@
+; ModuleID = '<stdin>'
+%b = constant i63 0		; <i63*> [#uses=0]
+%c = constant i63 -2		; <i63*> [#uses=0]
+%d = constant i63 0		; <i63*> [#uses=0]
+%e = constant i63 -1		; <i63*> [#uses=0]
+%f = constant i63 1		; <i63*> [#uses=0]
+%g = constant i63 3		; <i63*> [#uses=0]
+%h = constant i63 0		; <i63*> [#uses=0]
+%i = constant i63 -4611686018427387904		; <i63*> [#uses=0]
+%j = constant i63 1		; <i63*> [#uses=0]
+%k = constant i63 0		; <i63*> [#uses=0]
+%l = constant i63 -1		; <i63*> [#uses=0]
+%m = constant i63 -1		; <i63*> [#uses=0]
+%n = constant i63 -2		; <i63*> [#uses=0]
+%o = constant i63 0		; <i63*> [#uses=0]
+%p = constant i63 -1		; <i63*> [#uses=0]
+
+implementation   ; Functions:
diff --git a/test/Integer/a7.ll b/test/Integer/a7.ll
new file mode 100644
index 0000000..e055c61
--- /dev/null
+++ b/test/Integer/a7.ll
@@ -0,0 +1,23 @@
+; RUN: llvm-as %s -o - | llvm-dis > %t.ll
+; RUN: diff %t.ll %s.out
+
+; test 7 bits
+;
+%b = constant i7 add(i7 127, i7 1)
+%c = constant i7 add(i7 127, i7 127)
+%d = constant i7 add(i7 120, i7 8)
+%e = constant i7 sub(i7 0 , i7 1)
+%f = constant i7 sub(i7 0 , i7 127)
+%g = constant i7 sub(i7 2 , i7 127)
+
+%h = constant i7 shl(i7 1 , i8 7)
+%i = constant i7 shl(i7 1 , i8 6)
+%j = constant i7 lshr(i7 127 , i8 6)
+%k = constant i7 lshr(i7 127 , i8 7)
+%l = constant i7 ashr(i7 127 , i8 6)
+%m = constant i7 ashr(i7 127 , i8 7)
+
+%n = constant i7 mul(i7 127, i7 2)
+%o = constant i7 trunc( i8 128  to i7 )
+%p = constant i7 trunc( i8 255  to i7 )
+ 
diff --git a/test/Integer/a7.ll.out b/test/Integer/a7.ll.out
new file mode 100644
index 0000000..3f71ea7
--- /dev/null
+++ b/test/Integer/a7.ll.out
@@ -0,0 +1,18 @@
+; ModuleID = '<stdin>'
+%b = constant i7 0		; <i7*> [#uses=0]
+%c = constant i7 -2		; <i7*> [#uses=0]
+%d = constant i7 0		; <i7*> [#uses=0]
+%e = constant i7 -1		; <i7*> [#uses=0]
+%f = constant i7 1		; <i7*> [#uses=0]
+%g = constant i7 3		; <i7*> [#uses=0]
+%h = constant i7 0		; <i7*> [#uses=0]
+%i = constant i7 -64		; <i7*> [#uses=0]
+%j = constant i7 1		; <i7*> [#uses=0]
+%k = constant i7 0		; <i7*> [#uses=0]
+%l = constant i7 -1		; <i7*> [#uses=0]
+%m = constant i7 -1		; <i7*> [#uses=0]
+%n = constant i7 -2		; <i7*> [#uses=0]
+%o = constant i7 0		; <i7*> [#uses=0]
+%p = constant i7 -1		; <i7*> [#uses=0]
+
+implementation   ; Functions:
diff --git a/test/Integer/a9.ll b/test/Integer/a9.ll
new file mode 100644
index 0000000..907ac2b
--- /dev/null
+++ b/test/Integer/a9.ll
@@ -0,0 +1,23 @@
+; RUN: llvm-as %s -o - | llvm-dis > %t.ll
+; RUN: diff %t.ll %s.out
+
+; test 9 bits
+;
+%b = constant i9 add(i9 511, i9 1)
+%c = constant i9 add(i9 511, i9 511)
+%d = constant i9 add(i9 504, i9 8)
+%e = constant i9 sub(i9 0 , i9 1)
+%f = constant i9 sub(i9 0 , i9 511)
+%g = constant i9 sub(i9 2 , i9 511)
+
+%h = constant i9 shl(i9 1 , i8 9)
+%i = constant i9 shl(i9 1 , i8 8)
+%j = constant i9 lshr(i9 511 , i8 8)
+%k = constant i9 lshr(i9 511 , i8 9)
+%l = constant i9 ashr(i9 511 , i8 8)
+%m = constant i9 ashr(i9 511 , i8 9)
+
+%n = constant i9 mul(i9 511, i9 2)
+%o = constant i9 trunc( i10 512  to i9 )
+%p = constant i9 trunc( i10 511  to i9 )
+
diff --git a/test/Integer/a9.ll.out b/test/Integer/a9.ll.out
new file mode 100644
index 0000000..4968167
--- /dev/null
+++ b/test/Integer/a9.ll.out
@@ -0,0 +1,18 @@
+; ModuleID = '<stdin>'
+%b = constant i9 0		; <i9*> [#uses=0]
+%c = constant i9 -2		; <i9*> [#uses=0]
+%d = constant i9 0		; <i9*> [#uses=0]
+%e = constant i9 -1		; <i9*> [#uses=0]
+%f = constant i9 1		; <i9*> [#uses=0]
+%g = constant i9 3		; <i9*> [#uses=0]
+%h = constant i9 0		; <i9*> [#uses=0]
+%i = constant i9 -256		; <i9*> [#uses=0]
+%j = constant i9 1		; <i9*> [#uses=0]
+%k = constant i9 0		; <i9*> [#uses=0]
+%l = constant i9 -1		; <i9*> [#uses=0]
+%m = constant i9 -1		; <i9*> [#uses=0]
+%n = constant i9 -2		; <i9*> [#uses=0]
+%o = constant i9 0		; <i9*> [#uses=0]
+%p = constant i9 -1		; <i9*> [#uses=0]
+
+implementation   ; Functions:
diff --git a/test/Integer/alignment_bt.ll b/test/Integer/alignment_bt.ll
new file mode 100644
index 0000000..d74d929
--- /dev/null
+++ b/test/Integer/alignment_bt.ll
@@ -0,0 +1,21 @@
+; RUN: llvm-as %s -o - | llvm-dis > %t1.ll
+; RUN: llvm-as %t1.ll -o - | llvm-dis > %t2.ll
+; RUN: diff %t1.ll %t2.ll
+
+%X = global i19 4, align 16
+
+define i19 *%test() align 32 {
+	%X = alloca i19, align 4
+	%Y = alloca i51, i32 42, align 16
+	%Z = alloca i32, align 0
+	ret i19 *%X
+}
+
+define i19 *%test2() {
+	%X = malloc i19, align 4
+	%Y = malloc i51, i32 42, align 16
+	%Z = malloc i32, align 0
+	ret i19 *%X
+}
+
+
diff --git a/test/Integer/basictest_bt.ll b/test/Integer/basictest_bt.ll
new file mode 100644
index 0000000..8140197
--- /dev/null
+++ b/test/Integer/basictest_bt.ll
@@ -0,0 +1,34 @@
+; RUN: llvm-as %s -o - | llvm-dis > %t1.ll
+; RUN: llvm-as %t1.ll -o - | llvm-dis > %t2.ll
+; RUN: diff %t1.ll %t2.ll
+
+implementation
+
+; Test "stripped" format where nothing is symbolic... this is how the bytecode
+; format looks anyways (except for negative vs positive offsets)...
+;
+define void "void"(i39, i39)   ; Def %0, %1
+begin
+	add i39 0, 0      ; Def 2
+	sub i39 0, 4      ; Def 3
+	br label %1
+
+; <label>:1		; preds = %1, %0
+	add i39 %0, %1    ; Def 4
+	sub i39 %4, %3    ; Def 5
+	icmp sle i39 %5, %2  ; Def 0 - i1 plane
+	br i1 %0, label %2, label %1
+
+; <label>:2		; preds = %1
+	add i39 %0, %1    ; Def 6
+	sub i39 %4, %3    ; Def 7
+	icmp sle i39 %7, %2  ; Def 1 - i1 plane
+	ret void
+end
+
+; This function always returns zero
+define i39 "zarro"()
+begin
+Startup:
+	ret i39 0
+end
diff --git a/test/Integer/calltest_bt.ll b/test/Integer/calltest_bt.ll
new file mode 100644
index 0000000..d313a99
--- /dev/null
+++ b/test/Integer/calltest_bt.ll
@@ -0,0 +1,35 @@
+; RUN: llvm-as %s -o - | llvm-dis > %t1.ll
+; RUN: llvm-as %t1.ll -o - | llvm-dis > %t2.ll
+; RUN: diff %t1.ll %t2.ll
+
+%FunTy = type i28(i28)
+
+declare i28 "test"(...)   ; Test differences of prototype
+declare i28 "test"()      ; Differ only by vararg
+
+implementation
+
+define void "invoke"(%FunTy *%x) {
+	%foo = call %FunTy* %x(i28 123)
+	%foo2 = tail call %FunTy* %x(i28 123)
+	ret void
+}
+
+define i28 "main"(i28 %argc)   ; TODO: , sbyte **argv, sbyte **envp)
+begin
+        %retval = call i28 (i28) *%test(i28 %argc)
+        %two    = add i28 %retval, %retval
+	%retval2 = invoke i28 %test(i28 %argc)
+		   to label %Next unwind label %Error
+Next:
+	%two2 = add i28 %two, %retval2
+	call void %invoke (%FunTy* %test)
+        ret i28 %two2
+Error:
+	ret i28 -1
+end
+
+define i28 "test"(i28 %i0)
+begin
+    ret i28 %i0
+end
diff --git a/test/Integer/cfgstructures_bt.ll b/test/Integer/cfgstructures_bt.ll
new file mode 100644
index 0000000..d8381b4
--- /dev/null
+++ b/test/Integer/cfgstructures_bt.ll
@@ -0,0 +1,57 @@
+; RUN: llvm-as %s -o - | llvm-dis > %t1.ll
+; RUN: llvm-as %t1.ll -o - | llvm-dis > %t2.ll
+; RUN: diff %t1.ll %t2.ll
+
+implementation
+
+;; This is an irreducible flow graph
+
+
+define void "irreducible"(i1 %cond)
+begin
+	br i1 %cond, label %X, label %Y
+
+X:
+	br label %Y
+Y:
+	br label %X
+end
+
+;; This is a pair of loops that share the same header
+
+define void "sharedheader"(i1 %cond)
+begin
+	br label %A
+A:
+	br i1 %cond, label %X, label %Y
+
+X:
+	br label %A
+Y:
+	br label %A
+end
+
+;; This is a simple nested loop
+define void "nested"(i1 %cond1, i1 %cond2, i1 %cond3)
+begin
+	br label %Loop1
+
+Loop1:
+	br label %Loop2
+
+Loop2:
+	br label %Loop3
+
+Loop3:
+	br i1 %cond3, label %Loop3, label %L3Exit
+
+L3Exit:
+	br i1 %cond2, label %Loop2, label %L2Exit
+
+L2Exit:
+	br i1 %cond1, label %Loop1, label %L1Exit
+
+L1Exit:
+	ret void
+end
+
diff --git a/test/Integer/constexpr_bt.ll b/test/Integer/constexpr_bt.ll
new file mode 100644
index 0000000..9792e51
--- /dev/null
+++ b/test/Integer/constexpr_bt.ll
@@ -0,0 +1,84 @@
+; RUN: llvm-as %s -o - | llvm-dis > %t1.ll
+; RUN: llvm-as %t1.ll -o - | llvm-dis > %t2.ll
+; RUN: diff %t1.ll %t2.ll
+; XFAIL: *
+
+; This testcase is for testing expressions constructed from
+; constant values, including constant pointers to globals.
+;
+
+;;-------------------------------
+;; Test constant cast expressions
+;;-------------------------------
+
+global i63 0x00001     ; hexadecimal unsigned integer constants
+global i63  0x012312   ; hexadecimal signed integer constants
+
+%t2 = global i33* %t1                             ;; Forward reference without cast
+%t3 = global i33* bitcast (i33* %t1 to i33*)       ;; Forward reference with cast
+%t1 = global i33 4                                ;; i32* %0
+%t4 = global i33** bitcast (i33** %t3 to i33**)     ;; Cast of a previous cast
+%t5 = global i33** %t3                           ;; Reference to a previous cast
+%t6 = global i33*** %t4
+%t7 = global float* inttoptr (i32 12345678 to float*) ;; Cast ordinary value to ptr
+%t9 = global i33 fp2uint (float sitofp (i33 8 to float) to i33) ;; Nested cast expression
+
+global i32* bitcast (float* %0 to i32*)   ;; Forward numeric reference
+global float* %0                       ;; Duplicate forward numeric reference
+global float 0.0
+
+
+;;---------------------------------------------------
+;; Test constant getelementpr expressions for arrays
+;;---------------------------------------------------
+
+%array  = constant [2 x i33] [ i33 12, i33 52 ]
+%arrayPtr = global i33* getelementptr ([2 x i33]* %array, i64 0, i64 0)    ;; i33* &%array[0][0]
+%arrayPtr5 = global i33** getelementptr (i33** %arrayPtr, i64 5)    ;; i33* &%arrayPtr[5]
+
+%somestr = constant [11x i8] c"hello world"
+%char5  = global i8* getelementptr([11x i8]* %somestr, i64 0, i64 5)
+
+;; cast of getelementptr
+%char8a = global i33* sext (i8* getelementptr([11x i8]* %somestr, i64 0, i64 8) to i33*)
+
+;; getelementptr containing casts
+%char8b = global i8* getelementptr([11x i8]* %somestr, i64 sext (i8 0 to i64), i64 sext (i8 8 to i64))
+
+;;-------------------------------------------------------
+;; TODO: Test constant getelementpr expressions for structures
+;;-------------------------------------------------------
+
+%SType  = type { i33 , {float, {i8} }, i64 } ;; struct containing struct
+%SAType = type { i33 , {[2x float], i64} } ;; struct containing array
+
+%S1 = global %SType* null			;; Global initialized to NULL
+%S2c = constant %SType { i33 1, {float,{i8}} {float 2.0, {i8} {i8 3}}, i64 4}
+
+%S3c = constant %SAType { i33 1, {[2x float], i64} {[2x float] [float 2.0, float 3.0], i64 4} }
+
+%S1ptr = global %SType** %S1		    ;; Ref. to global S1
+%S2  = global %SType* %S2c		    ;; Ref. to constant S2
+%S3  = global %SAType* %S3c		    ;; Ref. to constant S3
+
+					    ;; Pointer to float (**%S1).1.0
+%S1fld1a = global float* getelementptr (%SType* %S2c, i64 0, i32 1, i32 0)
+					    ;; Another ptr to the same!
+%S1fld1b = global float* getelementptr (%SType* %S2c, i64 0, i32 1, i32 0)
+
+%S1fld1bptr = global float** %S1fld1b	    ;; Ref. to previous pointer
+
+					    ;; Pointer to i8 (**%S2).1.1.0
+%S2fld3 = global i8* getelementptr (%SType* %S2c, i64 0, i32 1, i32 1, i32 0) 
+
+					    ;; Pointer to float (**%S2).1.0[0]
+;%S3fld3 = global float* getelementptr (%SAType** %S3, i64 0, i64 0, i32 1, i32 0, i64 0) 
+
+;;---------------------------------------------------------
+;; TODO: Test constant expressions for unary and binary operators
+;;---------------------------------------------------------
+
+;;---------------------------------------------------
+
+implementation
+
diff --git a/test/Integer/constpointer_bt.ll b/test/Integer/constpointer_bt.ll
new file mode 100644
index 0000000..cbae92b
--- /dev/null
+++ b/test/Integer/constpointer_bt.ll
@@ -0,0 +1,33 @@
+; RUN: llvm-as %s -o - | llvm-dis > %t1.ll
+; RUN: llvm-as %t1.ll -o - | llvm-dis > %t2.ll
+; RUN: diff %t1.ll %t2.ll
+
+; This testcase is primarily used for testing that global values can be used as 
+; constant pointer initializers.  This is tricky because they can be forward
+; declared and involves an icky bytecode encoding.  There is no meaningful 
+; optimization that can be performed on this file, it is just here to test 
+; assembly and disassembly.
+;
+
+
+%t3 = global i40 * %t1           ;; Forward reference
+%t1 = global i40 4
+%t4 = global i40 ** %t3		 ;; reference to reference
+
+%t2 = global i40 * %t1
+
+global float * %0                ;; Forward numeric reference
+global float * %0                ;; Duplicate forward numeric reference
+global float 0.0
+global float * %0                ;; Numeric reference
+
+
+%fptr = global void() * %f       ;; Forward ref method defn
+declare void "f"()               ;; External method
+
+%sptr1   = global [11x i8]* %somestr		;; Forward ref to a constant
+%somestr = constant [11x i8] c"hello world"
+%sptr2   = global [11x i8]* %somestr
+
+implementation
+
diff --git a/test/Integer/dg.exp b/test/Integer/dg.exp
new file mode 100644
index 0000000..142de8a
--- /dev/null
+++ b/test/Integer/dg.exp
@@ -0,0 +1,3 @@
+load_lib llvm-dg.exp
+
+llvm-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.{ll,llx,c,cpp,tr}]] $objdir $srcdir $subdir $target_triplet $llvmgcc $llvmgxx $prcontext $llvmgcc_version
diff --git a/test/Integer/fold-fpcast_bt.ll b/test/Integer/fold-fpcast_bt.ll
new file mode 100644
index 0000000..71823ab
--- /dev/null
+++ b/test/Integer/fold-fpcast_bt.ll
@@ -0,0 +1,18 @@
+; RUN: llvm-as < %s | llvm-dis | not grep bitcast
+
+define i60 %test1() {
+   ret i60 fptoui(float 3.7 to i60)
+}
+
+define float %test2() {
+  ret float uitofp(i60 17 to float)
+}
+
+define i64 %test3() {
+  ret i64 bitcast (double 3.1415926 to i64)
+}
+
+define double %test4() {
+  ret double bitcast (i64 42 to double)
+}
+
diff --git a/test/Integer/forwardreftest_bt.ll b/test/Integer/forwardreftest_bt.ll
new file mode 100644
index 0000000..d6011b0
--- /dev/null
+++ b/test/Integer/forwardreftest_bt.ll
@@ -0,0 +1,34 @@
+; RUN: llvm-as %s -o - | llvm-dis > %t1.ll
+; RUN: llvm-as %t1.ll -o - | llvm-dis > %t2.ll
+; RUN: diff %t1.ll %t2.ll
+
+  %myty = type i55 
+  %myfn = type float (i55,double,i55,i16)
+  type i55(%myfn*)
+  type i55(i55)
+  type i55(i55(i55)*)
+
+  %thisfuncty = type i55 (i55) *
+implementation
+
+declare void %F(%thisfuncty, %thisfuncty, %thisfuncty)
+
+; This function always returns zero
+define i55 %zarro(i55 %Func)
+begin
+Startup:
+    add i55 0, 10
+    ret i55 0 
+end
+
+define i55 %test(i55) 
+begin
+    call void %F(%thisfuncty %zarro, %thisfuncty %test, %thisfuncty %foozball)
+    ret i55 0
+end
+
+define i55 %foozball(i55)
+begin
+    ret i55 0
+end
+
diff --git a/test/Integer/globalredefinition_bt.ll b/test/Integer/globalredefinition_bt.ll
new file mode 100644
index 0000000..56b1ab1
--- /dev/null
+++ b/test/Integer/globalredefinition_bt.ll
@@ -0,0 +1,18 @@
+; RUN: llvm-as %s -o - | llvm-dis > %t1.ll
+; RUN: llvm-as %t1.ll -o - | llvm-dis > %t2.ll
+; RUN: diff %t1.ll %t2.ll
+
+; Test forward references and redefinitions of globals
+
+%A = global i17* %B
+%B = global i17 7
+
+declare void %X()
+
+declare void %X()
+
+define void %X() {
+  ret void
+}
+
+declare void %X()
diff --git a/test/Integer/globalvars_bt.ll b/test/Integer/globalvars_bt.ll
new file mode 100644
index 0000000..29471ab
--- /dev/null
+++ b/test/Integer/globalvars_bt.ll
@@ -0,0 +1,27 @@
+; RUN: llvm-as %s -o - | llvm-dis > %t1.ll
+; RUN: llvm-as %t1.ll -o - | llvm-dis > %t2.ll
+; RUN: diff %t1.ll %t2.ll
+; XFAIL: *
+
+
+%MyVar     = external global i27
+%MyIntList = external global { \2 *, i27 }
+             external global i27      ; i27*:0
+
+%AConst    = constant i27 123
+
+%AString   = constant [4 x i8] c"test"
+
+%ZeroInit  = global { [100 x i27 ], [40 x float ] } { [100 x i27] zeroinitializer,
+                                                      [40  x float] zeroinitializer }
+
+implementation
+
+define i27 "foo"(i27 %blah)
+begin
+	store i27 5, i27 *%MyVar
+	%idx = getelementptr { \2 *, i27 } * %MyIntList, i64 0, i27 1
+  	store i27 12, i27* %idx
+  	ret i27 %blah
+end
+
diff --git a/test/Integer/indirectcall2_bt.ll b/test/Integer/indirectcall2_bt.ll
new file mode 100644
index 0000000..1fd48a0
--- /dev/null
+++ b/test/Integer/indirectcall2_bt.ll
@@ -0,0 +1,25 @@
+; RUN: llvm-as %s -o - | llvm-dis > %t1.ll
+; RUN: llvm-as %t1.ll -o - | llvm-dis > %t2.ll
+; RUN: diff %t1.ll %t2.ll
+
+implementation
+
+define i63 "test"(i63 %X)
+begin
+	ret i63 %X
+end
+
+define i63 "fib"(i63 %n)
+begin
+  %T = icmp ult i63 %n, 2       ; {i1}:0
+  br i1 %T, label %BaseCase, label %RecurseCase
+
+RecurseCase:
+  %result = call i63 %test(i63 %n)
+  br label %BaseCase
+
+BaseCase:
+  %X = phi i63 [1, %0], [2, %RecurseCase]
+  ret i63 %X
+end
+
diff --git a/test/Integer/indirectcall_bt.ll b/test/Integer/indirectcall_bt.ll
new file mode 100644
index 0000000..8a6f773
--- /dev/null
+++ b/test/Integer/indirectcall_bt.ll
@@ -0,0 +1,54 @@
+; RUN: llvm-as %s -o - | llvm-dis > %t1.ll
+; RUN: llvm-as %t1.ll -o - | llvm-dis > %t2.ll
+; RUN: diff %t1.ll %t2.ll
+
+implementation
+
+declare i32 "atoi"(i8 *)
+
+define i63 "fib"(i63 %n)
+begin
+  icmp ult i63 %n, 2       ; {i1}:0
+  br i1 %0, label %BaseCase, label %RecurseCase
+
+BaseCase:
+  ret i63 1
+
+RecurseCase:
+  %n2 = sub i63 %n, 2
+  %n1 = sub i63 %n, 1
+  %f2 = call i63(i63) * %fib(i63 %n2)
+  %f1 = call i63(i63) * %fib(i63 %n1)
+  %result = add i63 %f2, %f1
+  ret i63 %result
+end
+
+define i63 "realmain"(i32 %argc, i8 ** %argv)
+begin
+  icmp eq i32 %argc, 2      ; {i1}:0
+  br i1 %0, label %HasArg, label %Continue
+HasArg:
+  ; %n1 = atoi(argv[1])
+  %n1 = add i32 1, 1
+  br label %Continue
+
+Continue:
+  %n = phi i32 [%n1, %HasArg], [1, %0]
+  %N = sext i32 %n to i63
+  %F = call i63(i63) *%fib(i63 %N)
+  ret i63 %F
+end
+
+define i63 "trampoline"(i63 %n, i63(i63)* %fibfunc)
+begin
+  %F = call i63(i63) *%fibfunc(i63 %n)
+  ret i63 %F
+end
+
+define i32 "main"()
+begin
+  %Result = call i63 %trampoline(i63 10, i63(i63) *%fib)
+  %Result = trunc i63 %Result to i32
+  ret i32 %Result
+end
+
diff --git a/test/Integer/instructions_bt.ll b/test/Integer/instructions_bt.ll
new file mode 100644
index 0000000..d59ecb9
--- /dev/null
+++ b/test/Integer/instructions_bt.ll
@@ -0,0 +1,26 @@
+; RUN: llvm-as %s -o - | llvm-dis > %t1.ll
+; RUN: llvm-as %t1.ll -o - | llvm-dis > %t2.ll
+; RUN: diff %t1.ll %t2.ll
+; XFAIL: *
+
+define i39 %test_extractelement(<4 x i39> %V) {
+        %R = extractelement <4 x i39> %V, i39 1
+        ret i39 %R
+}
+
+define <4 x i39> %test_insertelement(<4 x i39> %V) {
+        %R = insertelement <4 x i39> %V, i39 0, i39 0
+        ret <4 x i39> %R
+}
+
+define <4 x i39> %test_shufflevector_u(<4 x i39> %V) {
+        %R = shufflevector <4 x i39> %V, <4 x i39> %V, 
+                  <4 x i39> < i39 1, i39 undef, i39 7, i39 2>
+        ret <4 x i39> %R
+}
+
+define <4 x float> %test_shufflevector_f(<4 x float> %V) {
+        %R = shufflevector <4 x float> %V, <4 x float> undef, 
+                  <4 x i32> < i32 1, i32 undef, i32 7, i32 2>
+        ret <4 x float> %R
+}
diff --git a/test/Integer/newcasts_bt.ll b/test/Integer/newcasts_bt.ll
new file mode 100644
index 0000000..446a007
--- /dev/null
+++ b/test/Integer/newcasts_bt.ll
@@ -0,0 +1,28 @@
+; RUN: llvm-as %s -o - | llvm-dis > %t1.ll
+; RUN: llvm-as %t1.ll -o - | llvm-dis > %t2.ll
+; RUN: diff %t1.ll %t2.ll
+
+define void "NewCasts" (i17 %x) {
+  %a = zext i17 %x to i32
+  %b = sext i17 %x to i32
+  %c = trunc i17 %x to i8
+  %d = uitofp i17 %x to float
+  %e = sitofp i17 %x to double
+  %f = fptoui float %d to i17
+  %g = fptosi double %e to i17 
+  %i = fpext float %d to double
+  %j = fptrunc double %i to float
+  %k = bitcast i32 %a to float
+  %l = inttoptr i17 %x to i32*
+  %m = ptrtoint i32* %l to i64
+  ret void
+}
+
+
+define i17 "ZExtConst" () {
+  ret i17 trunc ( i32 zext ( i17 42 to i32) to i17 )
+}
+
+define i17 "SExtConst" () {
+  ret i17 trunc (i32 sext (i17 42 to i32) to i17 )
+}
diff --git a/test/Integer/opaquetypes_bt.ll b/test/Integer/opaquetypes_bt.ll
new file mode 100644
index 0000000..f5c6635
--- /dev/null
+++ b/test/Integer/opaquetypes_bt.ll
@@ -0,0 +1,61 @@
+; RUN: llvm-as %s -o - | llvm-dis > %t1.ll
+; RUN: llvm-as %t1.ll -o - | llvm-dis > %t2.ll
+; RUN: diff %t1.ll %t2.ll
+
+; This test case is used to test opaque type processing, forward references,
+; and recursive types.  Oh my.
+; 
+
+%SQ1 = type { i31 }
+%ITy = type opaque
+%SQ2 = type { %ITy }
+%ITy = type i31
+
+
+%CCC = type { \2* }
+%BBB = type { \2*, \2 * }
+%AAA = type { \2*, {\2*}, [12x{\2*}], {[1x{\2*}]} }
+
+; Test numbered types
+type %CCC
+type %BBB
+%Composite = type { %0, %1 }
+
+; Test simple opaque type resolution...
+%i31ty = type opaque
+%i31ty = type i31
+
+; Perform a simple forward reference...
+%ty1 = type { %ty2, i31 }
+%ty2 = type float
+
+; Do a recursive type...
+%list = type { %list * }
+%listp = type { %listp } *
+
+; Do two mutually recursive types...
+%TyA = type { %ty2, %TyB * }
+%TyB = type { double, %TyA * }
+
+; A complex recursive type...
+%Y = type { {%Y*}, %Y* }
+%Z = type { { %Z * }, [12x%Z] *, {{{ %Z * }}} }
+
+; More ridiculous test cases...
+%A = type [ 123x %A*]
+%M = type %M (%M, %M) *
+%P = type %P*
+
+; Recursive ptrs
+%u = type %v*
+%v = type %u*
+
+; Test the parser for unnamed recursive types...
+%P1 = type \1 *
+%Y1 = type { { \3 * }, \2 * }
+%Z1 = type { { \3 * }, [12x\3] *, { { { \5 * } } } }
+
+implementation
+
+
+
diff --git a/test/Integer/packed_bt.ll b/test/Integer/packed_bt.ll
new file mode 100644
index 0000000..059e17f
--- /dev/null
+++ b/test/Integer/packed_bt.ll
@@ -0,0 +1,17 @@
+; RUN: llvm-as %s -o - | llvm-dis > %t1.ll
+; RUN: llvm-as %t1.ll -o - | llvm-dis > %t2.ll
+; RUN: diff %t1.ll %t2.ll
+
+%foo1 = external global <4 x float>;
+%foo2 = external global <2 x i10>;
+
+implementation   ; Functions:
+
+define void %main() 
+{
+        store <4 x float> <float 1.0, float 2.0, float 3.0, float 4.0>, <4 x float>* %foo1
+        store <2 x i10> <i10 4, i10 4>, <2 x i10>* %foo2
+	%l1 = load <4 x float>* %foo1
+        %l2 = load <2 x i10>* %foo2
+        ret void
+}
diff --git a/test/Integer/packed_cmp_bt.ll b/test/Integer/packed_cmp_bt.ll
new file mode 100644
index 0000000..80d1399
--- /dev/null
+++ b/test/Integer/packed_cmp_bt.ll
@@ -0,0 +1,58 @@
+; This test checks to make sure that NE and EQ comparisons of
+; vector types work.
+; RUN: llvm-as < %s | llvm-dis > %t1.ll
+; RUN: llvm-as %t1.ll -o - | llvm-dis > %t2.ll
+; RUN: diff %t1.ll %t2.ll
+; XFAIL: *
+
+%ivec_type = type <4 x i9> 
+%ivec1  = constant %ivec_type < i9 1, i9 1, i9 1, i9 1 >
+%ivec2  = constant %ivec_type < i9 0, i9 0, i9 0, i9 0 >
+
+%fvec_type = type <4 x float>
+%fvec1 = constant %fvec_type <float 1.0, float 1.0, float 1.0, float 1.0>
+%fvec2 = constant %fvec_type <float 0.0, float 0.0, float 0.0, float 0.0>
+
+implementation   ; Functions:
+
+define bool %ivectest1() {
+    %v1 = load %ivec_type* getelementptr(%ivec_type* %ivec1, i32 0)
+    %v2 = load %ivec_type* getelementptr(%ivec_type* %ivec2, i32 0)
+    %res = icmp ne %ivec_type %v1, %v2
+    ret bool %res
+}
+
+define bool %ivectest2() {
+    %v1 = load %ivec_type* getelementptr(%ivec_type* %ivec1, i32 0)
+    %v2 = load %ivec_type* getelementptr(%ivec_type* %ivec2, i32 0)
+    %res = icmp eq %ivec_type %v1, %v2
+    ret bool %res
+}
+
+define bool %fvectest1() {
+    %v1 = load %fvec_type* %fvec1
+    %v2 = load %fvec_type* %fvec2
+    %res = fcmp one %fvec_type %v1, %v2
+    ret bool %res
+}
+
+define bool %fvectest2() {
+    %v1 = load %fvec_type* %fvec1
+    %v2 = load %fvec_type* %fvec2
+    %res = fcmp oeq %fvec_type %v1, %v2
+    ret bool %res
+}
+
+define bool %fvectest3() {
+    %v1 = load %fvec_type* %fvec1
+    %v2 = load %fvec_type* %fvec2
+    %res = fcmp une %fvec_type %v1, %v2
+    ret bool %res
+}
+
+define bool %fvectest4() {
+    %v1 = load %fvec_type* %fvec1
+    %v2 = load %fvec_type* %fvec2
+    %res = fcmp ueq %fvec_type %v1, %v2
+    ret bool %res
+}
diff --git a/test/Integer/packed_struct_bt.ll b/test/Integer/packed_struct_bt.ll
new file mode 100644
index 0000000..c72bc4c
--- /dev/null
+++ b/test/Integer/packed_struct_bt.ll
@@ -0,0 +1,33 @@
+; RUN: llvm-as < %s | llvm-dis > %t1.ll
+; RUN: llvm-as %t1.ll -o - | llvm-dis > %t2.ll
+; RUN: diff %t1.ll %t2.ll &&
+; RUN: not grep cast %t2.ll &&
+; RUN: grep "<{" %t2.ll
+
+%struct.anon = type <{ i8, i35, i35, i35 }>
+%foos = external global %struct.anon 
+%bara = external global [2 x <{ i35, i8 }>]
+
+;initializers should work for packed and non-packed the same way
+%E1 = global <{i8, i35, i35}> <{i8 1, i35 2, i35 3}>
+%E2 = global {i8, i35, i35} {i8 4, i35 5, i35 6}
+
+implementation   ; Functions:
+
+define i35 %main() 
+{
+        %tmp = load i35*  getelementptr (%struct.anon* %foos, i32 0, i32 1)            ; <i35> [#uses=1]
+        %tmp3 = load i35* getelementptr (%struct.anon* %foos, i32 0, i32 2)            ; <i35> [#uses=1]
+        %tmp6 = load i35* getelementptr (%struct.anon* %foos, i32 0, i32 3)            ; <i35> [#uses=1]
+        %tmp4 = add i35 %tmp3, %tmp             ; <i35> [#uses=1]
+        %tmp7 = add i35 %tmp4, %tmp6            ; <i35> [#uses=1]
+        ret i35 %tmp7
+}
+
+define i35 %bar() {
+entry:
+        %tmp = load i35* getelementptr([2 x <{ i35, i8 }>]* %bara, i32 0, i32 0, i32 0 )            ; <i35> [#uses=1]
+        %tmp4 = load i35* getelementptr ([2 x <{ i35, i8 }>]* %bara, i32 0, i32 1, i32 0)           ; <i35> [#uses=1]
+        %tmp5 = add i35 %tmp4, %tmp             ; <i35> [#uses=1]
+        ret i35 %tmp5
+}
diff --git a/test/Integer/paramattrs_bt.ll b/test/Integer/paramattrs_bt.ll
new file mode 100644
index 0000000..87116ed
--- /dev/null
+++ b/test/Integer/paramattrs_bt.ll
@@ -0,0 +1,20 @@
+; RUN: llvm-as < %s | llvm-dis > %t1.ll
+; RUN: llvm-as %t1.ll -o - | llvm-dis > %t2.ll
+; RUN: diff %t1.ll %t2.ll
+
+%ZFunTy = type i33(i8 zext)
+%SFunTy = type i33(i8 sext)
+
+declare i16 "test"(i16 sext %arg) sext 
+declare i8 "test2" (i16 zext %a2) zext 
+
+implementation
+
+define i33 %main(i33 %argc, i8 **%argv) {
+    %val = trunc i33 %argc to i16
+    %res = call i16 (i16 sext) sext *%test(i16 %val)
+    %two = add i16 %res, %res
+    %res = call i8 %test2(i16 %two zext) zext 
+    %retVal = sext i16 %two to i33
+    ret i33 %retVal
+}
diff --git a/test/Integer/properties_bt.ll b/test/Integer/properties_bt.ll
new file mode 100644
index 0000000..fc88f23
--- /dev/null
+++ b/test/Integer/properties_bt.ll
@@ -0,0 +1,10 @@
+; RUN: llvm-as %s -o - | llvm-dis > %t1.ll
+; RUN: llvm-as %t1.ll -o - | llvm-dis > %t2.ll
+; RUN: diff %t1.ll %t2.ll
+
+
+target endian = little
+target pointersize = 32
+target triple = "proc-vend-sys"
+deplibs = [ "m", "c" ]
+
diff --git a/test/Integer/prototype_bt.ll b/test/Integer/prototype_bt.ll
new file mode 100644
index 0000000..c3dc6b2
--- /dev/null
+++ b/test/Integer/prototype_bt.ll
@@ -0,0 +1,14 @@
+; RUN: llvm-as %s -o - | llvm-dis > %t1.ll
+; RUN: llvm-as %t1.ll -o - | llvm-dis > %t2.ll
+; RUN: diff %t1.ll %t2.ll
+
+implementation
+
+declare i31 "bar"(i31 %in) 
+
+define i31 "foo"(i31 %blah)
+begin
+  %xx = call i31 %bar(i31 %blah)
+  ret i31 %xx
+end
+
diff --git a/test/Integer/recursivetype_bt.ll b/test/Integer/recursivetype_bt.ll
new file mode 100644
index 0000000..3d9886d
--- /dev/null
+++ b/test/Integer/recursivetype_bt.ll
@@ -0,0 +1,109 @@
+; RUN: llvm-as %s -o - | llvm-dis > %t1.ll
+; RUN: llvm-as %t1.ll -o - | llvm-dis > %t2.ll
+; RUN: diff %t1.ll %t2.ll
+; XFAIL: *
+
+; This file contains the output from the following compiled C code:
+; typedef struct list {
+;   struct list *Next;
+;   i32 Data;
+; } list;
+;
+; // Iterative insert fn
+; void InsertIntoListTail(list **L, i32 Data) {
+;   while (*L)
+;     L = &(*L)->Next;
+;   *L = (list*)malloc(sizeof(list));
+;   (*L)->Data = Data;
+;   (*L)->Next = 0;
+; }
+;
+; // Recursive list search fn
+; list *FindData(list *L, i32 Data) {
+;   if (L == 0) return 0;
+;   if (L->Data == Data) return L;
+;   return FindData(L->Next, Data);
+; }
+;
+; void DoListStuff() {
+;   list *MyList = 0;
+;   InsertIntoListTail(&MyList, 100);
+;   InsertIntoListTail(&MyList, 12);
+;   InsertIntoListTail(&MyList, 42);
+;   InsertIntoListTail(&MyList, 1123);
+;   InsertIntoListTail(&MyList, 1213);
+;
+;   if (FindData(MyList, 75)) foundIt();
+;   if (FindData(MyList, 42)) foundIt();
+;   if (FindData(MyList, 700)) foundIt();
+; }
+
+%list = type { %list*, i32 }
+
+declare i8 *"malloc"(i32)
+
+;;**********************
+implementation
+;;**********************
+
+define void "InsertIntoListTail"(%list** %L, i36 %Data)
+begin
+bb1:
+        %reg116 = load %list** %L                               ;;<%list*>
+        %cast1004 = inttoptr i64 0 to %list*                      ;;<%list*>
+        %cond1000 = icmp eq %list* %reg116, %cast1004             ;;<i1>
+        br i1 %cond1000, label %bb3, label %bb2
+
+bb2:
+        %reg117 = phi %list** [ %reg118, %bb2 ], [ %L, %bb1 ]   ;;<%list**>
+        %cast1010 = bitcast %list** %reg117 to %list***            ;;<%list***>
+        %reg118 = load %list*** %cast1010                       ;;<%list**>
+        %reg109 = load %list** %reg118                          ;;<%list*>
+        %cast1005 = inttoptr i64 0 to %list*                      ;;<%list*>
+        %cond1001 = icmp ne %list* %reg109, %cast1005             ;;<i1>
+        br i1 %cond1001, label %bb2, label %bb3
+
+bb3:
+        %reg119 = phi %list** [ %reg118, %bb2 ], [ %L, %bb1 ]   ;;<%list**>
+        %cast1006 = bitcast %list** %reg119 to i8**             ;;<i8**>
+        %reg111 = call i8* %malloc(i36 16)                  ;;<i8*>
+        store i8* %reg111, i8** %cast1006                 ;;<void>
+	%reg111 = ptrtoint i8* %reg111 to i64
+	%reg1002 = add i64 %reg111, 8
+        %reg1002 = inttoptr i64 %reg1002 to i8*             ;;<i8*>
+        %cast1008 = bitcast i8* %reg1002 to i36*                ;;<i36*>
+        store i36 %Data, i36* %cast1008                         ;;<void>
+        %cast1003 = inttoptr i64 0 to i64*                      ;;<i64*>
+        %cast1009 = bitcast i8* %reg111 to i64**              ;;<i64**>
+        store i64* %cast1003, i64** %cast1009               ;;<void>
+        ret void
+end
+
+define %list* "FindData"(%list* %L, i36 %Data)
+begin
+bb1:
+        br label %bb2
+
+bb2:
+        %reg115 = phi %list* [ %reg116, %bb6 ], [ %L, %bb1 ]    ;;<%list*>
+        %cast1014 = inttoptr i64 0 to %list*                      ;;<%list*>
+        %cond1011 = icmp ne %list* %reg115, %cast1014             ;;<i1>
+        br i1 %cond1011, label %bb4, label %bb3
+
+bb3:
+        ret %list* null
+
+bb4:
+	%idx = getelementptr %list* %reg115, i64 0, i36 1                  ;;<i36>
+        %reg111 = load i36* %idx
+        %cond1013 = icmp ne i36 %reg111, %Data                    ;;<i1>
+        br i1 %cond1013, label %bb6, label %bb5
+
+bb5:
+        ret %list* %reg115
+
+bb6:
+	%idx2 = getelementptr %list* %reg115, i64 0, i36 0                  ;;<%list*>
+        %reg116 = load %list** %idx2
+        br label %bb2
+end
diff --git a/test/Integer/simplecalltest_bt.ll b/test/Integer/simplecalltest_bt.ll
new file mode 100644
index 0000000..bb39ab1
--- /dev/null
+++ b/test/Integer/simplecalltest_bt.ll
@@ -0,0 +1,29 @@
+; RUN: llvm-as %s -o - | llvm-dis > %t1.ll
+; RUN: llvm-as %t1.ll -o - | llvm-dis > %t2.ll
+; RUN: diff %t1.ll %t2.ll
+
+%FunTy = type i31(i31)
+
+implementation
+
+define void "invoke"(%FunTy *%x)
+begin
+	%foo = call %FunTy* %x(i31 123)
+	ret void
+end
+
+define i31 "main"(i31 %argc, i8 **%argv, i8 **%envp)
+begin
+        %retval = call i31 (i31) *%test(i31 %argc)
+        %two    = add i31 %retval, %retval
+	%retval2 = call i31 %test(i31 %argc)
+
+	%two2 = add i31 %two, %retval2
+	call void %invoke (%FunTy* %test)
+        ret i31 %two2
+end
+
+define i31 "test"(i31 %i0)
+begin
+    ret i31 %i0
+end
diff --git a/test/Integer/small_bt.ll b/test/Integer/small_bt.ll
new file mode 100644
index 0000000..c020eae
--- /dev/null
+++ b/test/Integer/small_bt.ll
@@ -0,0 +1,14 @@
+; RUN: llvm-as %s -o - | llvm-dis > %t1.ll
+; RUN: llvm-as %t1.ll -o - | llvm-dis > %t2.ll
+; RUN: diff %t1.ll %t2.ll
+
+%x = type i19
+
+implementation
+
+define i19 "foo"(i19 %in) 
+begin
+label: 
+  ret i19 2
+end
+
diff --git a/test/Integer/testalloca_bt.ll b/test/Integer/testalloca_bt.ll
new file mode 100644
index 0000000..12e880f
--- /dev/null
+++ b/test/Integer/testalloca_bt.ll
@@ -0,0 +1,29 @@
+; RUN: llvm-as %s -o - | llvm-dis > %t1.ll
+; RUN: llvm-as %t1.ll -o - | llvm-dis > %t2.ll
+; RUN: diff %t1.ll %t2.ll
+; XFAIL: *
+
+%inners = type {float, {i8 } }
+%struct = type { i33 , {float, {i8 } } , i64 }
+
+implementation
+
+define i33 %testfunction(i33 %i0, i33 %j0)
+begin
+    alloca i8, i33 5
+    %ptr = alloca i33                       ; yields {i33*}:ptr
+    store i33 3, i33* %ptr                  ; yields {void}
+    %val = load i33* %ptr                   ; yields {i33}:val = i33 %3
+
+    %sptr = alloca %struct                  ; yields {%struct*}:sptr
+    %nsptr = getelementptr %struct * %sptr, i64 0, i33 1  ; yields {inners*}:nsptr
+    %ubsptr = getelementptr %inners * %nsptr, i64 0, i33 1  ; yields {{i8}*}:ubsptr
+    %idx = getelementptr {i8} * %ubsptr, i64 0, i33 0
+    store i8 4, i8* %idx
+    
+    %fptr = getelementptr %struct * %sptr, i64 0, i33 1, i33 0  ; yields {float*}:fptr
+    store float 4.0, float * %fptr
+    
+    ret i33 3
+end
+
diff --git a/test/Integer/testarith_bt.ll b/test/Integer/testarith_bt.ll
new file mode 100644
index 0000000..0dce41f
--- /dev/null
+++ b/test/Integer/testarith_bt.ll
@@ -0,0 +1,19 @@
+; RUN: llvm-as %s -o - | llvm-dis > %t1.ll
+; RUN: llvm-as %t1.ll -o - | llvm-dis > %t2.ll
+; RUN: diff %t1.ll %t2.ll
+
+implementation
+
+define i31 "simpleArith"(i31 %i0, i31 %j0)
+begin
+	%t1 = add i31 %i0, %j0
+	%t2 = sub i31 %i0, %j0
+	%t3 = mul i31 %t1, %t2
+        %t4 = udiv i31 %t1, %t2
+        %t5 = sdiv i31 %t1, %t2
+        %t6 = urem i31 %t1, %t2
+        %t7 = srem i31 %t1, %t2
+        %f1 = sitofp i31 %t1 to float
+        %f2 = fdiv float 4.0, %f1
+	ret i31 %t3
+end
diff --git a/test/Integer/testconstants_bt.ll b/test/Integer/testconstants_bt.ll
new file mode 100644
index 0000000..1f4683c
--- /dev/null
+++ b/test/Integer/testconstants_bt.ll
@@ -0,0 +1,33 @@
+; RUN: llvm-as %s -o - | llvm-dis > %t1.ll
+; RUN: llvm-as %t1.ll -o - | llvm-dis > %t2.ll
+; RUN: diff %t1.ll %t2.ll
+
+%somestr = constant [11x i8] c"hello world"
+%array   = constant [2 x i55] [ i55 12, i55 52 ]
+           constant { i55, i55 } { i55 4, i55 3 }
+
+implementation
+ 
+define [2 x i55]* %testfunction(i55 %i0, i55 %j0)
+begin
+	ret [2x i55]* %array
+end
+
+define  i8* %otherfunc(i55, double)
+begin
+	%somestr = getelementptr [11x i8]* %somestr, i64 0, i64 0
+	ret i8* %somestr
+end
+
+define i8* %yetanotherfunc(i55, double)
+begin
+	ret i8* null            ; Test null
+end
+
+define i55 %negativeUnsigned() {
+        ret i55 -1
+}
+
+define i55 %largeSigned() {
+       ret i55 3900000000
+}
diff --git a/test/Integer/testicmp_bt.ll b/test/Integer/testicmp_bt.ll
new file mode 100644
index 0000000..15ff49e
--- /dev/null
+++ b/test/Integer/testicmp_bt.ll
@@ -0,0 +1,24 @@
+; RUN: llvm-as %s -o - | llvm-dis > %t1.ll
+; RUN: llvm-as %t1.ll -o - | llvm-dis > %t2.ll
+; RUN: diff %t1.ll %t2.ll
+
+implementation
+
+define i31 "simpleIcmp"(i31 %i0, i31 %j0)
+begin
+	%t1 = icmp eq i31 %i0, %j0
+	%t2 = icmp ne i31 %i0, %j0
+	%t3 = icmp ult i31 %i0, %j0
+        %t4 = icmp sgt i31 %i0, %j0
+	%t5 = icmp ule i31 %i0, %j0
+        %t6 = icmp sge i31 %i0, %j0
+
+	%t7 = icmp eq i31 %i0, 1098765432
+        %t8 = icmp ne i31 %i0, -31415926
+
+        %t9 = icmp ult i31 10000, %j0
+        %t10 = icmp sgt i31 -10000, %j0
+
+
+	ret i31 %i0
+end
diff --git a/test/Integer/testlogical_bt.ll b/test/Integer/testlogical_bt.ll
new file mode 100644
index 0000000..62f6bf6
--- /dev/null
+++ b/test/Integer/testlogical_bt.ll
@@ -0,0 +1,14 @@
+; RUN: llvm-as %s -o - | llvm-dis > %t1.ll
+; RUN: llvm-as %t1.ll -o - | llvm-dis > %t2.ll
+; RUN: diff %t1.ll %t2.ll
+
+implementation
+
+define i31 "simpleAdd"(i31 %i0, i31 %j0)
+begin
+	%t1 = xor i31 %i0, %j0
+	%t2 = or i31 %i0, %j0
+	%t3 = and i31 %t1, %t2
+	ret i31 %t3
+end
+
diff --git a/test/Integer/testlogical_new_bt.ll b/test/Integer/testlogical_new_bt.ll
new file mode 100644
index 0000000..72675de
--- /dev/null
+++ b/test/Integer/testlogical_new_bt.ll
@@ -0,0 +1,16 @@
+; RUN: llvm-as %s -o - | llvm-dis > %t1.ll
+; RUN: llvm-as %t1.ll -o - | llvm-dis > %t2.ll
+; RUN: diff %t1.ll %t2.ll
+
+implementation
+
+define i31 "simpleAdd"(i31 %i0, i31 %j0)
+begin
+	%t1 = xor i31 %i0, %j0
+	%t2 = or i31 %i0, %j0
+	%t3 = and i31 %t1, %t2
+        %t4 = shl i31 %i0, i8 2
+        %t5 = ashr i31 %i0, i8 2
+        %t6 = lshr i31 %j0, i8 22
+	ret i31 %t3
+end
diff --git a/test/Integer/testmemory_bt.ll b/test/Integer/testmemory_bt.ll
new file mode 100644
index 0000000..3062571
--- /dev/null
+++ b/test/Integer/testmemory_bt.ll
@@ -0,0 +1,46 @@
+; RUN: llvm-as %s -o - | llvm-dis > %t1.ll
+; RUN: llvm-as %t1.ll -o - | llvm-dis > %t2.ll
+; RUN: diff %t1.ll %t2.ll
+; XFAIL: *
+
+%struct = type { i31 , {float, {i9 } } , i64 }
+%complexty = type {i31, {[4 x i9 *], float}, double}
+
+implementation
+
+define i31 "main"()
+begin
+  call i31 %testfunction(i64 0, i64 1)
+  ret i31 0
+end
+
+define i31 "testfunction"(i64 %i0, i64 %j0)
+begin
+    %array0 = malloc [4 x i9]            ; yields {[4 x i9]*}:array0
+    %size   = add i31 2, 2                 ; yields {i31}:size = i31 %4
+    %array1 = malloc i9, i31 4          ; yields {i9*}:array1
+    %array2 = malloc i9, i31 %size      ; yields {i9*}:array2
+
+    %idx = getelementptr [4 x i9]* %array0, i64 0, i64 2
+    store i9 123, i9* %idx
+    free [4x i9]* %array0
+    free i9* %array1
+    free i9* %array2
+
+
+    %aa = alloca %complexty, i31 5
+    %idx2 = getelementptr %complexty* %aa, i64 %i0, i31 1, i31 0, i64 %j0
+    store i9 *null, i9** %idx2
+    
+    %ptr = alloca i31                       ; yields {i31*}:ptr
+    store i31 3, i31* %ptr                  ; yields {void}
+    %val = load i31* %ptr                   ; yields {i31}:val = i31 %3
+
+    %sptr = alloca %struct                  ; yields {%struct*}:sptr
+    %ubsptr = getelementptr %struct * %sptr, i64 0, i31 1, i31 1  ; yields {{i9}*}:ubsptr
+    %idx3 = getelementptr {i9} * %ubsptr, i64 0, i31 0
+    store i9 4, i9* %idx3
+
+    ret i31 3
+end
+
diff --git a/test/Integer/testswitch_bt.ll b/test/Integer/testswitch_bt.ll
new file mode 100644
index 0000000..f9c79d6
--- /dev/null
+++ b/test/Integer/testswitch_bt.ll
@@ -0,0 +1,25 @@
+; RUN: llvm-as %s -o - | llvm-dis > %t1.ll
+; RUN: llvm-as %t1.ll -o - | llvm-dis > %t2.ll
+; RUN: diff %t1.ll %t2.ll
+
+  %i35 = type i35
+
+implementation
+
+define i35 "squared"(%i35 %i0)
+begin
+	switch i35 %i0, label %Default [ 
+		i35 1, label %Case1
+		i35 2, label %Case2
+		i35 4, label %Case4 ]
+
+Default:
+    ret i35 -1                      ; Unrecognized input value
+
+Case1:
+    ret i35 1
+Case2:
+    ret i35 4
+Case4:
+    ret i35 16
+end
diff --git a/test/Integer/testvarargs_bt.ll b/test/Integer/testvarargs_bt.ll
new file mode 100644
index 0000000..bd2b72b
--- /dev/null
+++ b/test/Integer/testvarargs_bt.ll
@@ -0,0 +1,15 @@
+; RUN: llvm-as %s -o - | llvm-dis > %t1.ll
+; RUN: llvm-as %t1.ll -o - | llvm-dis > %t2.ll
+; RUN: diff %t1.ll %t2.ll
+
+implementation
+
+declare i31 "printf"(i8*, ...)   ;; Prototype for: i32 __builtin_printf(const char*, ...)
+
+define i31 "testvarar"()
+begin
+	call i31(i8*, ...) *%printf(i8 * null, i31 12, i8 42);
+	ret i31 %0
+end
+
+
diff --git a/test/Integer/undefined_bt.ll b/test/Integer/undefined_bt.ll
new file mode 100644
index 0000000..3a413d4
--- /dev/null
+++ b/test/Integer/undefined_bt.ll
@@ -0,0 +1,19 @@
+; RUN: llvm-as %s -o - | llvm-dis > %t1.ll
+; RUN: llvm-as %t1.ll -o - | llvm-dis > %t2.ll
+; RUN: diff %t1.ll %t2.ll
+
+
+%X = global i32 undef
+
+implementation
+
+declare i32 "atoi"(i8 *)
+
+define i32 %test() {
+	ret i32 undef
+}
+
+define i32 %test2() {
+	%X = add i32 undef, 1
+	ret i32 %X
+}
diff --git a/test/Integer/unreachable_bt.ll b/test/Integer/unreachable_bt.ll
new file mode 100644
index 0000000..1ab4e8e
--- /dev/null
+++ b/test/Integer/unreachable_bt.ll
@@ -0,0 +1,17 @@
+; RUN: llvm-as %s -o - | llvm-dis > %t1.ll
+; RUN: llvm-as %t1.ll -o - | llvm-dis > %t2.ll
+; RUN: diff %t1.ll %t2.ll
+
+
+implementation
+
+declare void %bar()
+
+define i9 %foo() {  ;; Calling this function has undefined behavior
+	unreachable
+}
+
+define double %xyz() {
+	call void %bar()
+	unreachable          ;; Bar must not return.
+}
diff --git a/test/Integer/varargs_bt.ll b/test/Integer/varargs_bt.ll
new file mode 100644
index 0000000..0cc4d43
--- /dev/null
+++ b/test/Integer/varargs_bt.ll
@@ -0,0 +1,24 @@
+; RUN: llvm-as %s -o - | llvm-dis > %t1.ll; 
+; RUN: llvm-as %t1.ll -o - | llvm-dis > %t2.ll
+; RUN: diff %t1.ll %t2.ll
+
+; Demonstrate all of the variable argument handling intrinsic functions plus 
+; the va_arg instruction.
+
+implementation
+declare void %llvm.va_start(i8** %ap)
+declare void %llvm.va_copy(i8** %aq, i8** %ap)
+declare void %llvm.va_end(i8** %ap)
+
+define i33 %test(i33 %X, ...) {
+        %ap = alloca i8*
+	call void %llvm.va_start(i8** %ap)
+	%tmp = va_arg i8** %ap, i33 
+
+        %aq = alloca i8*
+	call void %llvm.va_copy(i8** %aq, i8** %ap)
+	call void %llvm.va_end(i8** %aq)
+	
+	call void %llvm.va_end(i8** %ap)
+	ret i33 %tmp
+}
diff --git a/test/Integer/varargs_new_bt.ll b/test/Integer/varargs_new_bt.ll
new file mode 100644
index 0000000..f420ec1
--- /dev/null
+++ b/test/Integer/varargs_new_bt.ll
@@ -0,0 +1,33 @@
+; RUN: llvm-as %s -o - | llvm-dis > %t1.ll
+; RUN: llvm-as %t1.ll -o - | llvm-dis > %t2.ll
+; RUN: diff %t1.ll %t2.ll
+
+; Demonstrate all of the variable argument handling intrinsic functions plus 
+; the va_arg instruction.
+
+implementation   ; Functions:
+declare void %llvm.va_start(i8**)
+declare void %llvm.va_copy(i8**, i8*)
+declare void %llvm.va_end(i8**)
+
+define i31 %test(i31 %X, ...) {
+        ; Allocate two va_list items.  On this target, va_list is of type i8*
+        %ap = alloca i8*             ; <i8**> [#uses=4]
+        %aq = alloca i8*             ; <i8**> [#uses=2]
+
+        ; Initialize variable argument processing
+        call void %llvm.va_start(i8** %ap)
+
+        ; Read a single integer argument
+        %tmp = va_arg i8** %ap, i31           ; <i31> [#uses=1]
+
+        ; Demonstrate usage of llvm.va_copy and llvm_va_end
+        %apv = load i8** %ap         ; <i8*> [#uses=1]
+        call void %llvm.va_copy(i8** %aq, i8* %apv)
+        call void %llvm.va_end(i8** %aq)
+
+        ; Stop processing of arguments.
+        call void %llvm.va_end(i8** %ap)
+        ret i31 %tmp
+
+}
