[llvm-commits] CVS: llvm/test/Regression/Integer/.cvsignore BitArith.ll BitBit.ll BitCast.ll BitIcmp.ll BitMem.ll BitMisc.ll BitPacked.ll a15.ll a15.ll.out a17.ll a17.ll.out a31.ll a31.ll.out a33.ll a33.ll.out a63.ll a63.ll.out a7.ll a7.ll.out a9.ll a9.ll.out alignment_bt.ll basictest_bt.ll calltest_bt.ll cfgstructures_bt.ll constexpr_bt.ll constpointer_bt.ll dg.exp fold-fpcast_bt.ll forwardreftest_bt.ll globalredefinition_bt.ll globalvars_bt.ll indirectcall2_bt.ll indirectcall_bt.ll instructions_bt.ll newcasts_bt.ll opaquetypes_bt.ll packed_bt.ll packed_cmp_bt.ll packed_struct_bt.ll paramattrs_bt.ll properties_bt.ll prototype_bt.ll recursivetype_bt.ll simplecalltest_bt.ll small_bt.ll testalloca_bt.ll testarith_bt.ll testconstants_bt.ll testicmp_bt.ll testlogical_bt.ll testlogical_new_bt.ll testmemory_bt.ll testswitch_bt.ll testvarargs_bt.ll undefined_bt.ll unreachable_bt.ll varargs_bt.ll varargs_new_bt.ll

Reid Spencer reid at x10sys.com
Tue Jan 16 10:08:38 PST 2007



Changes in directory llvm/test/Regression/Integer:

.cvsignore added (r1.1)
BitArith.ll added (r1.1)
BitBit.ll added (r1.1)
BitCast.ll added (r1.1)
BitIcmp.ll added (r1.1)
BitMem.ll added (r1.1)
BitMisc.ll added (r1.1)
BitPacked.ll added (r1.1)
a15.ll added (r1.1)
a15.ll.out added (r1.1)
a17.ll added (r1.1)
a17.ll.out added (r1.1)
a31.ll added (r1.1)
a31.ll.out added (r1.1)
a33.ll added (r1.1)
a33.ll.out added (r1.1)
a63.ll added (r1.1)
a63.ll.out added (r1.1)
a7.ll added (r1.1)
a7.ll.out added (r1.1)
a9.ll added (r1.1)
a9.ll.out added (r1.1)
alignment_bt.ll added (r1.1)
basictest_bt.ll added (r1.1)
calltest_bt.ll added (r1.1)
cfgstructures_bt.ll added (r1.1)
constexpr_bt.ll added (r1.1)
constpointer_bt.ll added (r1.1)
dg.exp added (r1.1)
fold-fpcast_bt.ll added (r1.1)
forwardreftest_bt.ll added (r1.1)
globalredefinition_bt.ll added (r1.1)
globalvars_bt.ll added (r1.1)
indirectcall2_bt.ll added (r1.1)
indirectcall_bt.ll added (r1.1)
instructions_bt.ll added (r1.1)
newcasts_bt.ll added (r1.1)
opaquetypes_bt.ll added (r1.1)
packed_bt.ll added (r1.1)
packed_cmp_bt.ll added (r1.1)
packed_struct_bt.ll added (r1.1)
paramattrs_bt.ll added (r1.1)
properties_bt.ll added (r1.1)
prototype_bt.ll added (r1.1)
recursivetype_bt.ll added (r1.1)
simplecalltest_bt.ll added (r1.1)
small_bt.ll added (r1.1)
testalloca_bt.ll added (r1.1)
testarith_bt.ll added (r1.1)
testconstants_bt.ll added (r1.1)
testicmp_bt.ll added (r1.1)
testlogical_bt.ll added (r1.1)
testlogical_new_bt.ll added (r1.1)
testmemory_bt.ll added (r1.1)
testswitch_bt.ll added (r1.1)
testvarargs_bt.ll added (r1.1)
undefined_bt.ll added (r1.1)
unreachable_bt.ll added (r1.1)
varargs_bt.ll added (r1.1)
varargs_new_bt.ll added (r1.1)
---
Log message:

New test cases for bit accurate integers developed by Guoling Han.


---
Diffs of the changes:  (+1669 -0)

 .cvsignore               |    1 
 BitArith.ll              |   26 +++++++++++
 BitBit.ll                |   26 +++++++++++
 BitCast.ll               |   28 ++++++++++++
 BitIcmp.ll               |   46 +++++++++++++++++++
 BitMem.ll                |   34 ++++++++++++++
 BitMisc.ll               |   25 ++++++++++
 BitPacked.ll             |   23 +++++++++
 a15.ll                   |   23 +++++++++
 a15.ll.out               |   18 +++++++
 a17.ll                   |   22 +++++++++
 a17.ll.out               |   18 +++++++
 a31.ll                   |   22 +++++++++
 a31.ll.out               |   18 +++++++
 a33.ll                   |   23 +++++++++
 a33.ll.out               |   18 +++++++
 a63.ll                   |   22 +++++++++
 a63.ll.out               |   18 +++++++
 a7.ll                    |   23 +++++++++
 a7.ll.out                |   18 +++++++
 a9.ll                    |   23 +++++++++
 a9.ll.out                |   18 +++++++
 alignment_bt.ll          |   21 +++++++++
 basictest_bt.ll          |   34 ++++++++++++++
 calltest_bt.ll           |   35 +++++++++++++++
 cfgstructures_bt.ll      |   57 ++++++++++++++++++++++++
 constexpr_bt.ll          |   84 ++++++++++++++++++++++++++++++++++++
 constpointer_bt.ll       |   33 ++++++++++++++
 dg.exp                   |    3 +
 fold-fpcast_bt.ll        |   18 +++++++
 forwardreftest_bt.ll     |   34 ++++++++++++++
 globalredefinition_bt.ll |   18 +++++++
 globalvars_bt.ll         |   27 +++++++++++
 indirectcall2_bt.ll      |   25 ++++++++++
 indirectcall_bt.ll       |   54 +++++++++++++++++++++++
 instructions_bt.ll       |   26 +++++++++++
 newcasts_bt.ll           |   28 ++++++++++++
 opaquetypes_bt.ll        |   61 ++++++++++++++++++++++++++
 packed_bt.ll             |   17 +++++++
 packed_cmp_bt.ll         |   58 +++++++++++++++++++++++++
 packed_struct_bt.ll      |   33 ++++++++++++++
 paramattrs_bt.ll         |   20 ++++++++
 properties_bt.ll         |   10 ++++
 prototype_bt.ll          |   14 ++++++
 recursivetype_bt.ll      |  109 +++++++++++++++++++++++++++++++++++++++++++++++
 simplecalltest_bt.ll     |   29 ++++++++++++
 small_bt.ll              |   14 ++++++
 testalloca_bt.ll         |   29 ++++++++++++
 testarith_bt.ll          |   19 ++++++++
 testconstants_bt.ll      |   33 ++++++++++++++
 testicmp_bt.ll           |   24 ++++++++++
 testlogical_bt.ll        |   14 ++++++
 testlogical_new_bt.ll    |   16 ++++++
 testmemory_bt.ll         |   46 +++++++++++++++++++
 testswitch_bt.ll         |   25 ++++++++++
 testvarargs_bt.ll        |   15 ++++++
 undefined_bt.ll          |   19 ++++++++
 unreachable_bt.ll        |   17 +++++++
 varargs_bt.ll            |   24 ++++++++++
 varargs_new_bt.ll        |   33 ++++++++++++++
 60 files changed, 1669 insertions(+)


Index: llvm/test/Regression/Integer/.cvsignore
diff -c /dev/null llvm/test/Regression/Integer/.cvsignore:1.1
*** /dev/null	Tue Jan 16 12:08:32 2007
--- llvm/test/Regression/Integer/.cvsignore	Tue Jan 16 12:08:22 2007
***************
*** 0 ****
--- 1 ----
+ Output


Index: llvm/test/Regression/Integer/BitArith.ll
diff -c /dev/null llvm/test/Regression/Integer/BitArith.ll:1.1
*** /dev/null	Tue Jan 16 12:08:38 2007
--- llvm/test/Regression/Integer/BitArith.ll	Tue Jan 16 12:08:22 2007
***************
*** 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
+ 


Index: llvm/test/Regression/Integer/BitBit.ll
diff -c /dev/null llvm/test/Regression/Integer/BitBit.ll:1.1
*** /dev/null	Tue Jan 16 12:08:38 2007
--- llvm/test/Regression/Integer/BitBit.ll	Tue Jan 16 12:08:22 2007
***************
*** 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
+ 


Index: llvm/test/Regression/Integer/BitCast.ll
diff -c /dev/null llvm/test/Regression/Integer/BitCast.ll:1.1
*** /dev/null	Tue Jan 16 12:08:38 2007
--- llvm/test/Regression/Integer/BitCast.ll	Tue Jan 16 12:08:22 2007
***************
*** 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
+ 


Index: llvm/test/Regression/Integer/BitIcmp.ll
diff -c /dev/null llvm/test/Regression/Integer/BitIcmp.ll:1.1
*** /dev/null	Tue Jan 16 12:08:38 2007
--- llvm/test/Regression/Integer/BitIcmp.ll	Tue Jan 16 12:08:22 2007
***************
*** 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
+ 


Index: llvm/test/Regression/Integer/BitMem.ll
diff -c /dev/null llvm/test/Regression/Integer/BitMem.ll:1.1
*** /dev/null	Tue Jan 16 12:08:38 2007
--- llvm/test/Regression/Integer/BitMem.ll	Tue Jan 16 12:08:22 2007
***************
*** 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


Index: llvm/test/Regression/Integer/BitMisc.ll
diff -c /dev/null llvm/test/Regression/Integer/BitMisc.ll:1.1
*** /dev/null	Tue Jan 16 12:08:38 2007
--- llvm/test/Regression/Integer/BitMisc.ll	Tue Jan 16 12:08:22 2007
***************
*** 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


Index: llvm/test/Regression/Integer/BitPacked.ll
diff -c /dev/null llvm/test/Regression/Integer/BitPacked.ll:1.1
*** /dev/null	Tue Jan 16 12:08:38 2007
--- llvm/test/Regression/Integer/BitPacked.ll	Tue Jan 16 12:08:22 2007
***************
*** 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
+ }


Index: llvm/test/Regression/Integer/a15.ll
diff -c /dev/null llvm/test/Regression/Integer/a15.ll:1.1
*** /dev/null	Tue Jan 16 12:08:38 2007
--- llvm/test/Regression/Integer/a15.ll	Tue Jan 16 12:08:22 2007
***************
*** 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 )
+  


Index: llvm/test/Regression/Integer/a15.ll.out
diff -c /dev/null llvm/test/Regression/Integer/a15.ll.out:1.1
*** /dev/null	Tue Jan 16 12:08:38 2007
--- llvm/test/Regression/Integer/a15.ll.out	Tue Jan 16 12:08:22 2007
***************
*** 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:


Index: llvm/test/Regression/Integer/a17.ll
diff -c /dev/null llvm/test/Regression/Integer/a17.ll:1.1
*** /dev/null	Tue Jan 16 12:08:38 2007
--- llvm/test/Regression/Integer/a17.ll	Tue Jan 16 12:08:22 2007
***************
*** 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 )


Index: llvm/test/Regression/Integer/a17.ll.out
diff -c /dev/null llvm/test/Regression/Integer/a17.ll.out:1.1
*** /dev/null	Tue Jan 16 12:08:38 2007
--- llvm/test/Regression/Integer/a17.ll.out	Tue Jan 16 12:08:22 2007
***************
*** 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:


Index: llvm/test/Regression/Integer/a31.ll
diff -c /dev/null llvm/test/Regression/Integer/a31.ll:1.1
*** /dev/null	Tue Jan 16 12:08:38 2007
--- llvm/test/Regression/Integer/a31.ll	Tue Jan 16 12:08:22 2007
***************
*** 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 ) 


Index: llvm/test/Regression/Integer/a31.ll.out
diff -c /dev/null llvm/test/Regression/Integer/a31.ll.out:1.1
*** /dev/null	Tue Jan 16 12:08:38 2007
--- llvm/test/Regression/Integer/a31.ll.out	Tue Jan 16 12:08:22 2007
***************
*** 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:


Index: llvm/test/Regression/Integer/a33.ll
diff -c /dev/null llvm/test/Regression/Integer/a33.ll:1.1
*** /dev/null	Tue Jan 16 12:08:38 2007
--- llvm/test/Regression/Integer/a33.ll	Tue Jan 16 12:08:22 2007
***************
*** 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 )
+  


Index: llvm/test/Regression/Integer/a33.ll.out
diff -c /dev/null llvm/test/Regression/Integer/a33.ll.out:1.1
*** /dev/null	Tue Jan 16 12:08:38 2007
--- llvm/test/Regression/Integer/a33.ll.out	Tue Jan 16 12:08:22 2007
***************
*** 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:


Index: llvm/test/Regression/Integer/a63.ll
diff -c /dev/null llvm/test/Regression/Integer/a63.ll:1.1
*** /dev/null	Tue Jan 16 12:08:38 2007
--- llvm/test/Regression/Integer/a63.ll	Tue Jan 16 12:08:22 2007
***************
*** 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 )


Index: llvm/test/Regression/Integer/a63.ll.out
diff -c /dev/null llvm/test/Regression/Integer/a63.ll.out:1.1
*** /dev/null	Tue Jan 16 12:08:38 2007
--- llvm/test/Regression/Integer/a63.ll.out	Tue Jan 16 12:08:22 2007
***************
*** 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:


Index: llvm/test/Regression/Integer/a7.ll
diff -c /dev/null llvm/test/Regression/Integer/a7.ll:1.1
*** /dev/null	Tue Jan 16 12:08:38 2007
--- llvm/test/Regression/Integer/a7.ll	Tue Jan 16 12:08:22 2007
***************
*** 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 )
+  


Index: llvm/test/Regression/Integer/a7.ll.out
diff -c /dev/null llvm/test/Regression/Integer/a7.ll.out:1.1
*** /dev/null	Tue Jan 16 12:08:38 2007
--- llvm/test/Regression/Integer/a7.ll.out	Tue Jan 16 12:08:22 2007
***************
*** 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:


Index: llvm/test/Regression/Integer/a9.ll
diff -c /dev/null llvm/test/Regression/Integer/a9.ll:1.1
*** /dev/null	Tue Jan 16 12:08:38 2007
--- llvm/test/Regression/Integer/a9.ll	Tue Jan 16 12:08:22 2007
***************
*** 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 )
+ 


Index: llvm/test/Regression/Integer/a9.ll.out
diff -c /dev/null llvm/test/Regression/Integer/a9.ll.out:1.1
*** /dev/null	Tue Jan 16 12:08:38 2007
--- llvm/test/Regression/Integer/a9.ll.out	Tue Jan 16 12:08:22 2007
***************
*** 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:


Index: llvm/test/Regression/Integer/alignment_bt.ll
diff -c /dev/null llvm/test/Regression/Integer/alignment_bt.ll:1.1
*** /dev/null	Tue Jan 16 12:08:38 2007
--- llvm/test/Regression/Integer/alignment_bt.ll	Tue Jan 16 12:08:22 2007
***************
*** 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
+ }
+ 
+ 


Index: llvm/test/Regression/Integer/basictest_bt.ll
diff -c /dev/null llvm/test/Regression/Integer/basictest_bt.ll:1.1
*** /dev/null	Tue Jan 16 12:08:38 2007
--- llvm/test/Regression/Integer/basictest_bt.ll	Tue Jan 16 12:08:22 2007
***************
*** 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


Index: llvm/test/Regression/Integer/calltest_bt.ll
diff -c /dev/null llvm/test/Regression/Integer/calltest_bt.ll:1.1
*** /dev/null	Tue Jan 16 12:08:38 2007
--- llvm/test/Regression/Integer/calltest_bt.ll	Tue Jan 16 12:08:22 2007
***************
*** 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


Index: llvm/test/Regression/Integer/cfgstructures_bt.ll
diff -c /dev/null llvm/test/Regression/Integer/cfgstructures_bt.ll:1.1
*** /dev/null	Tue Jan 16 12:08:38 2007
--- llvm/test/Regression/Integer/cfgstructures_bt.ll	Tue Jan 16 12:08:22 2007
***************
*** 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
+ 


Index: llvm/test/Regression/Integer/constexpr_bt.ll
diff -c /dev/null llvm/test/Regression/Integer/constexpr_bt.ll:1.1
*** /dev/null	Tue Jan 16 12:08:38 2007
--- llvm/test/Regression/Integer/constexpr_bt.ll	Tue Jan 16 12:08:22 2007
***************
*** 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
+ 


Index: llvm/test/Regression/Integer/constpointer_bt.ll
diff -c /dev/null llvm/test/Regression/Integer/constpointer_bt.ll:1.1
*** /dev/null	Tue Jan 16 12:08:38 2007
--- llvm/test/Regression/Integer/constpointer_bt.ll	Tue Jan 16 12:08:22 2007
***************
*** 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
+ 


Index: llvm/test/Regression/Integer/dg.exp
diff -c /dev/null llvm/test/Regression/Integer/dg.exp:1.1
*** /dev/null	Tue Jan 16 12:08:38 2007
--- llvm/test/Regression/Integer/dg.exp	Tue Jan 16 12:08:22 2007
***************
*** 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


Index: llvm/test/Regression/Integer/fold-fpcast_bt.ll
diff -c /dev/null llvm/test/Regression/Integer/fold-fpcast_bt.ll:1.1
*** /dev/null	Tue Jan 16 12:08:38 2007
--- llvm/test/Regression/Integer/fold-fpcast_bt.ll	Tue Jan 16 12:08:22 2007
***************
*** 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)
+ }
+ 


Index: llvm/test/Regression/Integer/forwardreftest_bt.ll
diff -c /dev/null llvm/test/Regression/Integer/forwardreftest_bt.ll:1.1
*** /dev/null	Tue Jan 16 12:08:38 2007
--- llvm/test/Regression/Integer/forwardreftest_bt.ll	Tue Jan 16 12:08:22 2007
***************
*** 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
+ 


Index: llvm/test/Regression/Integer/globalredefinition_bt.ll
diff -c /dev/null llvm/test/Regression/Integer/globalredefinition_bt.ll:1.1
*** /dev/null	Tue Jan 16 12:08:38 2007
--- llvm/test/Regression/Integer/globalredefinition_bt.ll	Tue Jan 16 12:08:22 2007
***************
*** 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()


Index: llvm/test/Regression/Integer/globalvars_bt.ll
diff -c /dev/null llvm/test/Regression/Integer/globalvars_bt.ll:1.1
*** /dev/null	Tue Jan 16 12:08:38 2007
--- llvm/test/Regression/Integer/globalvars_bt.ll	Tue Jan 16 12:08:22 2007
***************
*** 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
+ 


Index: llvm/test/Regression/Integer/indirectcall2_bt.ll
diff -c /dev/null llvm/test/Regression/Integer/indirectcall2_bt.ll:1.1
*** /dev/null	Tue Jan 16 12:08:38 2007
--- llvm/test/Regression/Integer/indirectcall2_bt.ll	Tue Jan 16 12:08:22 2007
***************
*** 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
+ 


Index: llvm/test/Regression/Integer/indirectcall_bt.ll
diff -c /dev/null llvm/test/Regression/Integer/indirectcall_bt.ll:1.1
*** /dev/null	Tue Jan 16 12:08:38 2007
--- llvm/test/Regression/Integer/indirectcall_bt.ll	Tue Jan 16 12:08:22 2007
***************
*** 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
+ 


Index: llvm/test/Regression/Integer/instructions_bt.ll
diff -c /dev/null llvm/test/Regression/Integer/instructions_bt.ll:1.1
*** /dev/null	Tue Jan 16 12:08:38 2007
--- llvm/test/Regression/Integer/instructions_bt.ll	Tue Jan 16 12:08:22 2007
***************
*** 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
+ }


Index: llvm/test/Regression/Integer/newcasts_bt.ll
diff -c /dev/null llvm/test/Regression/Integer/newcasts_bt.ll:1.1
*** /dev/null	Tue Jan 16 12:08:38 2007
--- llvm/test/Regression/Integer/newcasts_bt.ll	Tue Jan 16 12:08:22 2007
***************
*** 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 )
+ }


Index: llvm/test/Regression/Integer/opaquetypes_bt.ll
diff -c /dev/null llvm/test/Regression/Integer/opaquetypes_bt.ll:1.1
*** /dev/null	Tue Jan 16 12:08:38 2007
--- llvm/test/Regression/Integer/opaquetypes_bt.ll	Tue Jan 16 12:08:22 2007
***************
*** 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
+ 
+ 
+ 


Index: llvm/test/Regression/Integer/packed_bt.ll
diff -c /dev/null llvm/test/Regression/Integer/packed_bt.ll:1.1
*** /dev/null	Tue Jan 16 12:08:38 2007
--- llvm/test/Regression/Integer/packed_bt.ll	Tue Jan 16 12:08:22 2007
***************
*** 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
+ }


Index: llvm/test/Regression/Integer/packed_cmp_bt.ll
diff -c /dev/null llvm/test/Regression/Integer/packed_cmp_bt.ll:1.1
*** /dev/null	Tue Jan 16 12:08:38 2007
--- llvm/test/Regression/Integer/packed_cmp_bt.ll	Tue Jan 16 12:08:22 2007
***************
*** 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
+ }


Index: llvm/test/Regression/Integer/packed_struct_bt.ll
diff -c /dev/null llvm/test/Regression/Integer/packed_struct_bt.ll:1.1
*** /dev/null	Tue Jan 16 12:08:38 2007
--- llvm/test/Regression/Integer/packed_struct_bt.ll	Tue Jan 16 12:08:22 2007
***************
*** 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
+ }


Index: llvm/test/Regression/Integer/paramattrs_bt.ll
diff -c /dev/null llvm/test/Regression/Integer/paramattrs_bt.ll:1.1
*** /dev/null	Tue Jan 16 12:08:38 2007
--- llvm/test/Regression/Integer/paramattrs_bt.ll	Tue Jan 16 12:08:22 2007
***************
*** 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
+ }


Index: llvm/test/Regression/Integer/properties_bt.ll
diff -c /dev/null llvm/test/Regression/Integer/properties_bt.ll:1.1
*** /dev/null	Tue Jan 16 12:08:38 2007
--- llvm/test/Regression/Integer/properties_bt.ll	Tue Jan 16 12:08:22 2007
***************
*** 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" ]
+ 


Index: llvm/test/Regression/Integer/prototype_bt.ll
diff -c /dev/null llvm/test/Regression/Integer/prototype_bt.ll:1.1
*** /dev/null	Tue Jan 16 12:08:38 2007
--- llvm/test/Regression/Integer/prototype_bt.ll	Tue Jan 16 12:08:22 2007
***************
*** 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
+ 


Index: llvm/test/Regression/Integer/recursivetype_bt.ll
diff -c /dev/null llvm/test/Regression/Integer/recursivetype_bt.ll:1.1
*** /dev/null	Tue Jan 16 12:08:38 2007
--- llvm/test/Regression/Integer/recursivetype_bt.ll	Tue Jan 16 12:08:22 2007
***************
*** 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


Index: llvm/test/Regression/Integer/simplecalltest_bt.ll
diff -c /dev/null llvm/test/Regression/Integer/simplecalltest_bt.ll:1.1
*** /dev/null	Tue Jan 16 12:08:38 2007
--- llvm/test/Regression/Integer/simplecalltest_bt.ll	Tue Jan 16 12:08:22 2007
***************
*** 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


Index: llvm/test/Regression/Integer/small_bt.ll
diff -c /dev/null llvm/test/Regression/Integer/small_bt.ll:1.1
*** /dev/null	Tue Jan 16 12:08:38 2007
--- llvm/test/Regression/Integer/small_bt.ll	Tue Jan 16 12:08:22 2007
***************
*** 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
+ 


Index: llvm/test/Regression/Integer/testalloca_bt.ll
diff -c /dev/null llvm/test/Regression/Integer/testalloca_bt.ll:1.1
*** /dev/null	Tue Jan 16 12:08:38 2007
--- llvm/test/Regression/Integer/testalloca_bt.ll	Tue Jan 16 12:08:22 2007
***************
*** 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
+ 


Index: llvm/test/Regression/Integer/testarith_bt.ll
diff -c /dev/null llvm/test/Regression/Integer/testarith_bt.ll:1.1
*** /dev/null	Tue Jan 16 12:08:38 2007
--- llvm/test/Regression/Integer/testarith_bt.ll	Tue Jan 16 12:08:22 2007
***************
*** 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


Index: llvm/test/Regression/Integer/testconstants_bt.ll
diff -c /dev/null llvm/test/Regression/Integer/testconstants_bt.ll:1.1
*** /dev/null	Tue Jan 16 12:08:38 2007
--- llvm/test/Regression/Integer/testconstants_bt.ll	Tue Jan 16 12:08:22 2007
***************
*** 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
+ }


Index: llvm/test/Regression/Integer/testicmp_bt.ll
diff -c /dev/null llvm/test/Regression/Integer/testicmp_bt.ll:1.1
*** /dev/null	Tue Jan 16 12:08:38 2007
--- llvm/test/Regression/Integer/testicmp_bt.ll	Tue Jan 16 12:08:22 2007
***************
*** 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


Index: llvm/test/Regression/Integer/testlogical_bt.ll
diff -c /dev/null llvm/test/Regression/Integer/testlogical_bt.ll:1.1
*** /dev/null	Tue Jan 16 12:08:38 2007
--- llvm/test/Regression/Integer/testlogical_bt.ll	Tue Jan 16 12:08:22 2007
***************
*** 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
+ 


Index: llvm/test/Regression/Integer/testlogical_new_bt.ll
diff -c /dev/null llvm/test/Regression/Integer/testlogical_new_bt.ll:1.1
*** /dev/null	Tue Jan 16 12:08:38 2007
--- llvm/test/Regression/Integer/testlogical_new_bt.ll	Tue Jan 16 12:08:22 2007
***************
*** 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


Index: llvm/test/Regression/Integer/testmemory_bt.ll
diff -c /dev/null llvm/test/Regression/Integer/testmemory_bt.ll:1.1
*** /dev/null	Tue Jan 16 12:08:38 2007
--- llvm/test/Regression/Integer/testmemory_bt.ll	Tue Jan 16 12:08:22 2007
***************
*** 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
+ 


Index: llvm/test/Regression/Integer/testswitch_bt.ll
diff -c /dev/null llvm/test/Regression/Integer/testswitch_bt.ll:1.1
*** /dev/null	Tue Jan 16 12:08:38 2007
--- llvm/test/Regression/Integer/testswitch_bt.ll	Tue Jan 16 12:08:22 2007
***************
*** 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


Index: llvm/test/Regression/Integer/testvarargs_bt.ll
diff -c /dev/null llvm/test/Regression/Integer/testvarargs_bt.ll:1.1
*** /dev/null	Tue Jan 16 12:08:38 2007
--- llvm/test/Regression/Integer/testvarargs_bt.ll	Tue Jan 16 12:08:22 2007
***************
*** 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
+ 
+ 


Index: llvm/test/Regression/Integer/undefined_bt.ll
diff -c /dev/null llvm/test/Regression/Integer/undefined_bt.ll:1.1
*** /dev/null	Tue Jan 16 12:08:38 2007
--- llvm/test/Regression/Integer/undefined_bt.ll	Tue Jan 16 12:08:22 2007
***************
*** 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
+ }


Index: llvm/test/Regression/Integer/unreachable_bt.ll
diff -c /dev/null llvm/test/Regression/Integer/unreachable_bt.ll:1.1
*** /dev/null	Tue Jan 16 12:08:38 2007
--- llvm/test/Regression/Integer/unreachable_bt.ll	Tue Jan 16 12:08:22 2007
***************
*** 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.
+ }


Index: llvm/test/Regression/Integer/varargs_bt.ll
diff -c /dev/null llvm/test/Regression/Integer/varargs_bt.ll:1.1
*** /dev/null	Tue Jan 16 12:08:38 2007
--- llvm/test/Regression/Integer/varargs_bt.ll	Tue Jan 16 12:08:22 2007
***************
*** 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
+ }


Index: llvm/test/Regression/Integer/varargs_new_bt.ll
diff -c /dev/null llvm/test/Regression/Integer/varargs_new_bt.ll:1.1
*** /dev/null	Tue Jan 16 12:08:38 2007
--- llvm/test/Regression/Integer/varargs_new_bt.ll	Tue Jan 16 12:08:22 2007
***************
*** 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
+ 
+ }






More information about the llvm-commits mailing list