Genericize tests
llvm-svn: 10091
diff --git a/llvm/test/Regression/ExecutionEngine/2002-12-16-ArgTest.ll b/llvm/test/Regression/ExecutionEngine/2002-12-16-ArgTest.ll
new file mode 100644
index 0000000..5125614
--- /dev/null
+++ b/llvm/test/Regression/ExecutionEngine/2002-12-16-ArgTest.ll
@@ -0,0 +1,44 @@
+%.LC0 = internal global [10 x sbyte] c"argc: %d\0A\00"
+
+implementation ; Functions:
+
+declare int %puts(sbyte*)
+
+void %getoptions(int* %argc) {
+bb0: ; No predecessors!
+ ret void
+}
+
+declare int %printf(sbyte*, ...)
+
+int %main(int %argc, sbyte** %argv) {
+bb0: ; No predecessors!
+ call int (sbyte*, ...)* %printf( sbyte* getelementptr ([10 x sbyte]* %.LC0, long 0, long 0), int %argc)
+ %cast224 = cast sbyte** %argv to sbyte* ; <sbyte*> [#uses=1]
+ %local = alloca sbyte* ; <sbyte**> [#uses=3]
+ store sbyte* %cast224, sbyte** %local
+ %cond226 = setle int %argc, 0 ; <bool> [#uses=1]
+ br bool %cond226, label %bb3, label %bb2
+
+bb2: ; preds = %bb2, %bb0
+ %cann-indvar = phi int [ 0, %bb0 ], [ %add1-indvar, %bb2 ] ; <int> [#uses=2]
+ %add1-indvar = add int %cann-indvar, 1 ; <int> [#uses=2]
+ %cann-indvar-idxcast = cast int %cann-indvar to long ; <long> [#uses=1]
+ ;%reg115 = load sbyte** %local ; <sbyte*> [#uses=1]
+ ;%cann-indvar-idxcast-scale = mul long %cann-indvar-idxcast, 8 ; <long> [#uses=1]
+ ;%reg232 = getelementptr sbyte* %reg115, long %cann-indvar-idxcast-scale ; <sbyte*> [#uses=1]
+ ;%cast235 = cast sbyte* %reg232 to sbyte** ; <sbyte**> [#uses=1]
+ %CT = cast sbyte** %local to sbyte***
+ %reg115 = load sbyte*** %CT
+ %cast235 = getelementptr sbyte** %reg115, long %cann-indvar-idxcast
+
+ %reg117 = load sbyte** %cast235 ; <sbyte*> [#uses=1]
+ %reg236 = call int %puts( sbyte* %reg117 ) ; <int> [#uses=0]
+ %cond239 = setlt int %add1-indvar, %argc ; <bool> [#uses=1]
+ br bool %cond239, label %bb2, label %bb3
+
+bb3: ; preds = %bb2, %bb0
+ %cast243 = cast sbyte** %local to int* ; <int*> [#uses=1]
+ call void %getoptions( int* %cast243 )
+ ret int 0
+}
diff --git a/llvm/test/Regression/ExecutionEngine/2003-01-04-ArgumentBug.ll b/llvm/test/Regression/ExecutionEngine/2003-01-04-ArgumentBug.ll
new file mode 100644
index 0000000..792913d
--- /dev/null
+++ b/llvm/test/Regression/ExecutionEngine/2003-01-04-ArgumentBug.ll
@@ -0,0 +1,13 @@
+
+implementation ; Functions:
+
+int %foo(int %X, int %Y, double %A) {
+ %cond212 = setne double %A, 1.000000e+00 ; <bool> [#uses=1]
+ %cast110 = cast bool %cond212 to int ; <int> [#uses=1]
+ ret int %cast110
+}
+
+int %main() {
+ %reg212 = call int %foo( int 0, int 1, double 1.000000e+00 ) ; <int> [#uses=1]
+ ret int %reg212
+}
diff --git a/llvm/test/Regression/ExecutionEngine/2003-01-04-LoopTest.ll b/llvm/test/Regression/ExecutionEngine/2003-01-04-LoopTest.ll
new file mode 100644
index 0000000..4aedd2d
--- /dev/null
+++ b/llvm/test/Regression/ExecutionEngine/2003-01-04-LoopTest.ll
@@ -0,0 +1,22 @@
+implementation
+
+int %main() {
+ call int %mylog(int 4)
+ ret int 0
+}
+
+internal int %mylog(int %num) {
+bb0: ; No predecessors!
+ br label %bb2
+
+bb2:
+ %reg112 = phi int [ 10, %bb2 ], [ 1, %bb0 ]
+ %cann-indvar = phi int [ %cann-indvar, %bb2 ], [0, %bb0]
+ %reg114 = add int %reg112, 1
+ %cond222 = setlt int %reg114, %num
+ br bool %cond222, label %bb2, label %bb3
+
+bb3: ; preds = %bb2, %bb0
+ ret int %reg114
+}
+
diff --git a/llvm/test/Regression/ExecutionEngine/2003-01-04-PhiTest.ll b/llvm/test/Regression/ExecutionEngine/2003-01-04-PhiTest.ll
new file mode 100644
index 0000000..34e1620
--- /dev/null
+++ b/llvm/test/Regression/ExecutionEngine/2003-01-04-PhiTest.ll
@@ -0,0 +1,8 @@
+int %main() {
+ br label %Loop
+Loop:
+ %X = phi int [0, %0], [1, %Loop]
+ br bool true, label %Out, label %Loop
+Out:
+ ret int %X
+}
diff --git a/llvm/test/Regression/ExecutionEngine/2003-01-09-SARTest.ll b/llvm/test/Regression/ExecutionEngine/2003-01-09-SARTest.ll
new file mode 100644
index 0000000..b19a931
--- /dev/null
+++ b/llvm/test/Regression/ExecutionEngine/2003-01-09-SARTest.ll
@@ -0,0 +1,8 @@
+; We were accidentally inverting the signedness of right shifts. Whoops.
+
+int %main() {
+ %X = shr int -1, ubyte 16
+ %Y = shr int %X, ubyte 16
+ %Z = add int %Y, 1
+ ret int %Z
+}
diff --git a/llvm/test/Regression/ExecutionEngine/2003-01-10-FUCOM.ll b/llvm/test/Regression/ExecutionEngine/2003-01-10-FUCOM.ll
new file mode 100644
index 0000000..37448f0
--- /dev/null
+++ b/llvm/test/Regression/ExecutionEngine/2003-01-10-FUCOM.ll
@@ -0,0 +1,8 @@
+
+int %main() {
+ %X = add double 0.0, 1.0
+ %Y = sub double 0.0, 1.0
+ %Z = seteq double %X, %Y
+ add double %Y, 0.0
+ ret int 0
+}
diff --git a/llvm/test/Regression/ExecutionEngine/2003-01-15-AlignmentTest.ll b/llvm/test/Regression/ExecutionEngine/2003-01-15-AlignmentTest.ll
new file mode 100644
index 0000000..5304a81
--- /dev/null
+++ b/llvm/test/Regression/ExecutionEngine/2003-01-15-AlignmentTest.ll
@@ -0,0 +1,16 @@
+
+int %bar(sbyte* %X) {
+ %P = alloca double ; pointer should be 4 byte aligned!
+ %R = cast double* %P to int
+ %A = and int %R, 3
+ ret int %A
+}
+
+int %main() {
+ %SP = alloca sbyte
+ %X = add uint 0, 0
+ alloca sbyte, uint %X
+
+ call int %bar(sbyte* %SP)
+ ret int %0
+}
diff --git a/llvm/test/Regression/ExecutionEngine/2003-05-06-LivenessClobber.llx b/llvm/test/Regression/ExecutionEngine/2003-05-06-LivenessClobber.llx
new file mode 100644
index 0000000..3164dd8
--- /dev/null
+++ b/llvm/test/Regression/ExecutionEngine/2003-05-06-LivenessClobber.llx
@@ -0,0 +1,20 @@
+; This testcase shoudl return with an exit code of 1.
+;
+; RUN: llvm-as < %s | not lli
+
+%test = global long 0
+implementation
+
+
+internal long %test() {
+ %tmp.0 = load long* %test ; <long> [#uses=1]
+ %tmp.1 = add long %tmp.0, 1 ; <long> [#uses=1]
+ ret long %tmp.1
+}
+
+int %main() {
+ %L = call long %test()
+ %I = cast long %L to int
+ ret int %I
+}
+
diff --git a/llvm/test/Regression/ExecutionEngine/2003-05-07-ArgumentTest.llx b/llvm/test/Regression/ExecutionEngine/2003-05-07-ArgumentTest.llx
new file mode 100644
index 0000000..47b40c3
--- /dev/null
+++ b/llvm/test/Regression/ExecutionEngine/2003-05-07-ArgumentTest.llx
@@ -0,0 +1,13 @@
+; RUN: llvm-as < %s | lli - test
+
+implementation
+
+declare int %puts(sbyte*)
+
+int %main(int %argc.1, sbyte** %argv.1) {
+ %tmp.5 = getelementptr sbyte** %argv.1, long 1 ; <sbyte**> [#uses=1]
+ %tmp.6 = load sbyte** %tmp.5 ; <sbyte*> [#uses=1]
+ %tmp.0 = call int %puts( sbyte* %tmp.6 ) ; <int> [#uses=0]
+ ret int 0
+}
+
diff --git a/llvm/test/Regression/ExecutionEngine/2003-05-11-PHIRegAllocBug.ll b/llvm/test/Regression/ExecutionEngine/2003-05-11-PHIRegAllocBug.ll
new file mode 100644
index 0000000..d59a635
--- /dev/null
+++ b/llvm/test/Regression/ExecutionEngine/2003-05-11-PHIRegAllocBug.ll
@@ -0,0 +1,15 @@
+target endian = little
+target pointersize = 32
+
+implementation
+
+int %main() {
+entry:
+ br label %endif
+then:
+ br label %endif
+endif:
+ %x = phi uint [ 4, %entry ], [ 27, %then ]
+ %result = phi int [ 32, %then ], [ 0, %entry ]
+ ret int 0
+}
diff --git a/llvm/test/Regression/ExecutionEngine/2003-06-04-bzip2-bug.ll b/llvm/test/Regression/ExecutionEngine/2003-06-04-bzip2-bug.ll
new file mode 100644
index 0000000..2e71d91
--- /dev/null
+++ b/llvm/test/Regression/ExecutionEngine/2003-06-04-bzip2-bug.ll
@@ -0,0 +1,19 @@
+; Testcase distilled from 256.bzip2.
+
+target endian = little
+target pointersize = 32
+
+int %main() {
+entry:
+ br label %loopentry.0
+
+loopentry.0:
+ %h.0 = phi int [ %tmp.2, %loopentry.0 ], [ -1, %entry ]
+ %tmp.2 = add int %h.0, 1
+ %tmp.4 = setne int %tmp.2, 0
+ br bool %tmp.4, label %loopentry.0, label %loopentry.1
+
+loopentry.1:
+ %h.1 = phi int [ %tmp.2, %loopentry.0 ]
+ ret int %h.1
+}
diff --git a/llvm/test/Regression/ExecutionEngine/2003-06-05-PHIBug.ll b/llvm/test/Regression/ExecutionEngine/2003-06-05-PHIBug.ll
new file mode 100644
index 0000000..0abe5d8
--- /dev/null
+++ b/llvm/test/Regression/ExecutionEngine/2003-06-05-PHIBug.ll
@@ -0,0 +1,16 @@
+; Testcase distilled from 256.bzip2.
+
+target endian = little
+target pointersize = 32
+
+int %main() {
+entry:
+ %X = add int 1, -1
+ br label %Next
+
+Next:
+ %A = phi int [ %X, %entry ]
+ %B = phi int [ %X, %entry ]
+ %C = phi int [ %X, %entry ]
+ ret int %C
+}
diff --git a/llvm/test/Regression/ExecutionEngine/2003-08-15-AllocaAssertion.ll b/llvm/test/Regression/ExecutionEngine/2003-08-15-AllocaAssertion.ll
new file mode 100644
index 0000000..35248d1
--- /dev/null
+++ b/llvm/test/Regression/ExecutionEngine/2003-08-15-AllocaAssertion.ll
@@ -0,0 +1,9 @@
+; This testcase failed to work because two variable sized allocas confused the
+; local register allocator.
+
+int %main(uint %X) {
+ %A = alloca uint, uint %X
+
+ %B = alloca float, uint %X
+ ret int 0
+}
diff --git a/llvm/test/Regression/ExecutionEngine/2003-08-21-EnvironmentTest.ll b/llvm/test/Regression/ExecutionEngine/2003-08-21-EnvironmentTest.ll
new file mode 100644
index 0000000..388f82c
--- /dev/null
+++ b/llvm/test/Regression/ExecutionEngine/2003-08-21-EnvironmentTest.ll
@@ -0,0 +1,20 @@
+;
+; Regression Test: EnvironmentTest.ll
+;
+; Description:
+; This is a regression test that verifies that the JIT passes the
+; environment to the main() function.
+;
+
+implementation
+
+declare uint %strlen(sbyte*)
+
+int %main(int %argc.1, sbyte** %argv.1, sbyte** %envp.1) {
+ %tmp.2 = load sbyte** %envp.1
+ %tmp.3 = call uint %strlen( sbyte* %tmp.2 )
+ %T = seteq uint %tmp.3, 0
+ %R = cast bool %T to int
+ ret int %R
+}
+
diff --git a/llvm/test/Regression/ExecutionEngine/2003-08-23-RegisterAllocatePhysReg.ll b/llvm/test/Regression/ExecutionEngine/2003-08-23-RegisterAllocatePhysReg.ll
new file mode 100644
index 0000000..fa7df62
--- /dev/null
+++ b/llvm/test/Regression/ExecutionEngine/2003-08-23-RegisterAllocatePhysReg.ll
@@ -0,0 +1,30 @@
+; This testcase exposes a bug in the local register allocator where it runs out
+; of registers (due to too many overlapping live ranges), but then attempts to
+; use the ESP register (which is not allocatable) to hold a value.
+
+int %main(uint %A) {
+ %Ap2 = alloca uint, uint %A ; ESP gets used again...
+ %B = add uint %A, 1 ; Produce lots of overlapping live ranges
+ %C = add uint %A, 2
+ %D = add uint %A, 3
+ %E = add uint %A, 4
+ %F = add uint %A, 5
+ %G = add uint %A, 6
+ %H = add uint %A, 7
+ %I = add uint %A, 8
+ %J = add uint %A, 9
+ %K = add uint %A, 10
+
+ store uint %A, uint *%Ap2 ; Uses of all of the values
+ store uint %B, uint *%Ap2
+ store uint %C, uint *%Ap2
+ store uint %D, uint *%Ap2
+ store uint %E, uint *%Ap2
+ store uint %F, uint *%Ap2
+ store uint %G, uint *%Ap2
+ store uint %H, uint *%Ap2
+ store uint %I, uint *%Ap2
+ store uint %J, uint *%Ap2
+ store uint %K, uint *%Ap2
+ ret int 0
+}
diff --git a/llvm/test/Regression/ExecutionEngine/2003-10-18-PHINode-ConstantExpr-CondCode-Failure.ll b/llvm/test/Regression/ExecutionEngine/2003-10-18-PHINode-ConstantExpr-CondCode-Failure.ll
new file mode 100644
index 0000000..e488ea8
--- /dev/null
+++ b/llvm/test/Regression/ExecutionEngine/2003-10-18-PHINode-ConstantExpr-CondCode-Failure.ll
@@ -0,0 +1,29 @@
+; RUN: llvm-as < %s | lli -force-interpreter=false
+
+%A = global int 0
+
+int %main() {
+ %Ret = call int %test(bool true, int 0)
+ ret int %Ret
+}
+
+int %test(bool %c, int %A) {
+ br bool %c, label %Taken1, label %NotTaken
+
+Cont:
+ %V = phi int [0, %NotTaken],
+ [ sub (int cast (int* %A to int), int 1234), %Taken1]
+ ret int 0
+
+NotTaken:
+ br label %Cont
+
+Taken1:
+ %B = seteq int %A, 0
+ ; Code got inserted here, breaking the condition code.
+ br bool %B, label %Cont, label %ExitError
+
+ExitError:
+ ret int 12
+
+}
diff --git a/llvm/test/Regression/ExecutionEngine/hello.ll b/llvm/test/Regression/ExecutionEngine/hello.ll
new file mode 100644
index 0000000..1f8c77b
--- /dev/null
+++ b/llvm/test/Regression/ExecutionEngine/hello.ll
@@ -0,0 +1,11 @@
+%.LC0 = internal global [12 x sbyte] c"Hello World\00"
+
+implementation
+
+declare int %puts(sbyte*)
+
+int %main() {
+ %reg210 = call int %puts( sbyte* getelementptr ([12 x sbyte]* %.LC0, long 0, long 0) )
+ ret int 0
+}
+
diff --git a/llvm/test/Regression/ExecutionEngine/hello2.ll b/llvm/test/Regression/ExecutionEngine/hello2.ll
new file mode 100644
index 0000000..48d7688
--- /dev/null
+++ b/llvm/test/Regression/ExecutionEngine/hello2.ll
@@ -0,0 +1,19 @@
+
+%X = global int 7
+%msg = internal global [13 x sbyte] c"Hello World\0A\00"
+
+
+implementation
+
+declare void %printf([13 x sbyte]*)
+
+void %bar() {
+ call void %printf([13 x sbyte]* %msg)
+ ret void
+}
+
+int %main() {
+ call void %bar()
+ ret int 0
+}
+
diff --git a/llvm/test/Regression/ExecutionEngine/simplesttest.ll b/llvm/test/Regression/ExecutionEngine/simplesttest.ll
new file mode 100644
index 0000000..e5d8cb0
--- /dev/null
+++ b/llvm/test/Regression/ExecutionEngine/simplesttest.ll
@@ -0,0 +1,7 @@
+
+implementation
+
+int %main() {
+ ret int 0
+}
+
diff --git a/llvm/test/Regression/ExecutionEngine/simpletest.ll b/llvm/test/Regression/ExecutionEngine/simpletest.ll
new file mode 100644
index 0000000..79ff9ac
--- /dev/null
+++ b/llvm/test/Regression/ExecutionEngine/simpletest.ll
@@ -0,0 +1,9 @@
+implementation
+
+int %bar() { ret int 0 }
+
+int %main() {
+ %r = call int %bar()
+ ret int %r
+}
+
diff --git a/llvm/test/Regression/ExecutionEngine/test-arith.ll b/llvm/test/Regression/ExecutionEngine/test-arith.ll
new file mode 100644
index 0000000..86512da
--- /dev/null
+++ b/llvm/test/Regression/ExecutionEngine/test-arith.ll
@@ -0,0 +1,35 @@
+int %main() {
+ %A = add sbyte 0, 12
+ %B = sub sbyte %A, 1
+ %C = mul sbyte %B, %B
+ %D = div sbyte %C, %C
+ %E = rem sbyte %D, %D
+ %F = div ubyte 5, 6
+ %G = rem ubyte 6, 5
+
+ %A = add short 0, 12
+ %B = sub short %A, 1
+ %C = mul short %B, %B
+ %D = div short %C, %C
+ %E = rem short %D, %D
+ %F = div ushort 5, 6
+ %G = rem uint 6, 5
+
+ %A = add int 0, 12
+ %B = sub int %A, 1
+ %C = mul int %B, %B
+ %D = div int %C, %C
+ %E = rem int %D, %D
+ %F = div uint 5, 6
+ %G = rem uint 6, 5
+
+ %A = add long 0, 12
+ %B = sub long %A, 1
+ %C = mul long %B, %B
+ %D = div long %C, %C
+ %E = rem long %D, %D
+ %F = div ulong 5, 6
+ %G = rem ulong 6, 5
+
+ ret int 0
+}
diff --git a/llvm/test/Regression/ExecutionEngine/test-branch.ll b/llvm/test/Regression/ExecutionEngine/test-branch.ll
new file mode 100644
index 0000000..d3559d8
--- /dev/null
+++ b/llvm/test/Regression/ExecutionEngine/test-branch.ll
@@ -0,0 +1,9 @@
+; test unconditional branch
+int %main() {
+ br label %Test
+Test:
+ %X = seteq int 0, 4
+ br bool %X, label %Test, label %Label
+Label:
+ ret int 0
+}
diff --git a/llvm/test/Regression/ExecutionEngine/test-call.ll b/llvm/test/Regression/ExecutionEngine/test-call.ll
new file mode 100644
index 0000000..50f0e6e
--- /dev/null
+++ b/llvm/test/Regression/ExecutionEngine/test-call.ll
@@ -0,0 +1,18 @@
+
+declare void %exit(int)
+
+int %test(sbyte %C, short %S) {
+ %X = cast short %S to int
+ ret int %X
+}
+
+void %FP(void(int) * %F) {
+ %X = call int %test(sbyte 123, short 1024)
+ call void %F(int %X)
+ ret void
+}
+
+int %main() {
+ call void %FP(void(int)* %exit)
+ ret int 1
+}
diff --git a/llvm/test/Regression/ExecutionEngine/test-cast.ll b/llvm/test/Regression/ExecutionEngine/test-cast.ll
new file mode 100644
index 0000000..753c9fa
--- /dev/null
+++ b/llvm/test/Regression/ExecutionEngine/test-cast.ll
@@ -0,0 +1,86 @@
+
+
+int %foo() {
+ ret int 0
+}
+
+int %main() {
+ ; cast bool to ...
+ cast bool true to bool
+ cast bool true to int
+ cast bool true to long
+ cast bool true to ulong
+ cast bool true to float
+ cast bool true to double
+
+ ; cast sbyte to ...
+ cast sbyte 0 to sbyte
+ cast sbyte 4 to short
+ cast sbyte 4 to long
+ cast sbyte 4 to ulong
+ cast sbyte 4 to double
+
+ ; cast ubyte to ...
+ cast ubyte 0 to float
+ cast ubyte 0 to double
+
+ ; cast short to ...
+ cast short 0 to short
+ cast short 0 to long
+ cast short 0 to ulong
+ cast short 0 to double
+
+ ; cast ushort to ...
+ cast ushort 0 to float
+ cast ushort 0 to double
+
+ ; cast int to ...
+ cast int 6 to bool
+ cast int 6 to short
+ cast int 0 to int
+ cast int 0 to long
+ cast int 0 to ulong
+ cast int 0 to float
+ cast int 0 to double
+
+ ; cast uint to ...
+ cast uint 0 to long
+ cast uint 0 to ulong
+ cast uint 0 to float
+ cast uint 0 to double
+
+ ; cast long to ...
+ cast long 0 to bool
+ cast long 0 to sbyte
+ cast long 0 to ubyte
+ cast long 0 to short
+ cast long 0 to ushort
+ cast long 0 to int
+ cast long 0 to uint
+ cast long 0 to long
+ cast long 0 to ulong
+ cast long 0 to float
+ cast long 0 to double
+
+ cast ulong 0 to bool
+
+ ; cast float to ...
+ ;cast float 0.0 to bool
+ cast float 0.0 to float
+ cast float 0.0 to double
+
+ ; cast double to ...
+ ;cast double 0.0 to bool
+ cast double 0.0 to sbyte
+ cast double 0.0 to ubyte
+ cast double 0.0 to short
+ cast double 0.0 to ushort
+ cast double 0.0 to int
+ cast double 0.0 to uint
+ cast double 0.0 to long
+ ;cast double 0.0 to ulong
+ cast double 0.0 to float
+ cast double 0.0 to double
+
+ ret int 0
+}
diff --git a/llvm/test/Regression/ExecutionEngine/test-constantexpr.ll b/llvm/test/Regression/ExecutionEngine/test-constantexpr.ll
new file mode 100644
index 0000000..ce723f9
--- /dev/null
+++ b/llvm/test/Regression/ExecutionEngine/test-constantexpr.ll
@@ -0,0 +1,11 @@
+; This tests to make sure that we can evaluate wierd constant expressions
+%A = global int 5
+%B = global int 6
+
+implementation
+
+int %main() {
+ %A = or bool false, setlt (int* %A, int* %B) ; Which is lower in memory?
+ ret int 0
+}
+
diff --git a/llvm/test/Regression/ExecutionEngine/test-fp.ll b/llvm/test/Regression/ExecutionEngine/test-fp.ll
new file mode 100644
index 0000000..6d32ecb
--- /dev/null
+++ b/llvm/test/Regression/ExecutionEngine/test-fp.ll
@@ -0,0 +1,20 @@
+
+double %test(double* %DP, double %Arg) {
+ %D = load double* %DP
+ %V = add double %D, 1.0
+ %W = sub double %V, %V
+ %X = mul double %W, %W
+ %Y = div double %X, %X
+ %Z = rem double %Y, %Y
+ %Z = div double %Z, %W
+ %Q = add double %Z, %Arg
+ %R = cast double %Q to double
+ store double %R, double* %DP
+ ret double %Z
+}
+
+int %main() {
+ %X = alloca double
+ call double %test(double* %X, double 2.0)
+ ret int 0
+}
diff --git a/llvm/test/Regression/ExecutionEngine/test-loadstore.ll b/llvm/test/Regression/ExecutionEngine/test-loadstore.ll
new file mode 100644
index 0000000..35a2c5f
--- /dev/null
+++ b/llvm/test/Regression/ExecutionEngine/test-loadstore.ll
@@ -0,0 +1,34 @@
+
+void %test(sbyte* %P, short* %P, int* %P, long* %P) {
+ %V = load sbyte* %P
+ store sbyte %V, sbyte* %P
+
+ %V = load short* %P
+ store short %V, short* %P
+
+ %V = load int* %P
+ store int %V, int* %P
+
+ %V = load long* %P
+ store long %V, long* %P
+
+ ret void
+}
+
+uint %varalloca(uint %Size) {
+ %X = alloca uint, uint %Size ;; Variable sized alloca
+ store uint %Size, uint* %X
+ %Y = load uint* %X
+ ret uint %Y
+}
+
+int %main() {
+ %A = alloca sbyte
+ %B = alloca short
+ %C = alloca int
+ %D = alloca long
+ call void %test(sbyte* %A, short* %B, int* %C, long* %D)
+ call uint %varalloca(uint 7)
+
+ ret int 0
+}
diff --git a/llvm/test/Regression/ExecutionEngine/test-logical.ll b/llvm/test/Regression/ExecutionEngine/test-logical.ll
new file mode 100644
index 0000000..e6b628a
--- /dev/null
+++ b/llvm/test/Regression/ExecutionEngine/test-logical.ll
@@ -0,0 +1,20 @@
+
+int %main() {
+ %A = and sbyte 4, 8
+ %B = or sbyte %A, 7
+ %C = xor sbyte %B, %A
+
+ %A = and short 4, 8
+ %B = or short %A, 7
+ %C = xor short %B, %A
+
+ %A = and int 4, 8
+ %B = or int %A, 7
+ %C = xor int %B, %A
+
+ %A = and long 4, 8
+ %B = or long %A, 7
+ %C = xor long %B, %A
+
+ ret int 0
+}
diff --git a/llvm/test/Regression/ExecutionEngine/test-loop.ll b/llvm/test/Regression/ExecutionEngine/test-loop.ll
new file mode 100644
index 0000000..b84da830
--- /dev/null
+++ b/llvm/test/Regression/ExecutionEngine/test-loop.ll
@@ -0,0 +1,12 @@
+
+
+int %main() {
+ br label %Loop
+Loop:
+ %I = phi int [0, %0], [%i2, %Loop]
+ %i2 = add int %I, 1
+ %C = seteq int %i2, 10
+ br bool %C, label %Out, label %Loop
+Out:
+ ret int 0
+}
diff --git a/llvm/test/Regression/ExecutionEngine/test-malloc.ll b/llvm/test/Regression/ExecutionEngine/test-malloc.ll
new file mode 100644
index 0000000..701d02b
--- /dev/null
+++ b/llvm/test/Regression/ExecutionEngine/test-malloc.ll
@@ -0,0 +1,11 @@
+
+int %main() {
+ %X = malloc int ; constant size
+ %Y = malloc int, uint 100 ; constant size
+ %u = add uint 1, 2
+ %Z = malloc int, uint %u ; variable size
+ free int* %X
+ free int* %Y
+ free int* %Z
+ ret int 0
+}
diff --git a/llvm/test/Regression/ExecutionEngine/test-phi.ll b/llvm/test/Regression/ExecutionEngine/test-phi.ll
new file mode 100644
index 0000000..9e21438
--- /dev/null
+++ b/llvm/test/Regression/ExecutionEngine/test-phi.ll
@@ -0,0 +1,29 @@
+; test phi node
+
+%Y = global int 6
+
+void %blah(int *%X) {
+ br label %T
+T:
+ phi int* [%X, %0], [%Y, %Dead]
+ ret void
+Dead:
+ br label %T
+}
+
+int %test(bool %C) {
+ br bool %C, label %T, label %T
+T:
+ %X = phi int [123, %0], [123, %0]
+ ret int %X
+}
+
+int %main() {
+ br label %Test
+Test:
+ %X = phi int [0, %0], [%Y, %Dead]
+ ret int %X
+Dead:
+ %Y = shr int 12, ubyte 4
+ br label %Test
+}
diff --git a/llvm/test/Regression/ExecutionEngine/test-ret.ll b/llvm/test/Regression/ExecutionEngine/test-ret.ll
new file mode 100644
index 0000000..02195dd
--- /dev/null
+++ b/llvm/test/Regression/ExecutionEngine/test-ret.ll
@@ -0,0 +1,13 @@
+; test return instructions
+
+void %test() { ret void }
+sbyte %test() { ret sbyte 1 }
+ubyte %test() { ret ubyte 1 }
+short %test() { ret short -1 }
+ushort %test() { ret ushort 65535 }
+int %main() { ret int 0 }
+uint %test() { ret uint 4 }
+long %test() { ret long 0 }
+ulong %test() { ret ulong 0 }
+float %test() { ret float 1.0 }
+double %test() { ret double 2.0 }
diff --git a/llvm/test/Regression/ExecutionEngine/test-setcond-fp.ll b/llvm/test/Regression/ExecutionEngine/test-setcond-fp.ll
new file mode 100644
index 0000000..66724d8
--- /dev/null
+++ b/llvm/test/Regression/ExecutionEngine/test-setcond-fp.ll
@@ -0,0 +1,20 @@
+
+int %main() {
+ %double1 = add double 0.0, 0.0
+ %double2 = add double 0.0, 0.0
+ %float1 = add float 0.0, 0.0
+ %float2 = add float 0.0, 0.0
+ %test49 = seteq float %float1, %float2
+ %test50 = setge float %float1, %float2
+ %test51 = setgt float %float1, %float2
+ %test52 = setle float %float1, %float2
+ %test53 = setlt float %float1, %float2
+ %test54 = setne float %float1, %float2
+ %test55 = seteq double %double1, %double2
+ %test56 = setge double %double1, %double2
+ %test57 = setgt double %double1, %double2
+ %test58 = setle double %double1, %double2
+ %test59 = setlt double %double1, %double2
+ %test60 = setne double %double1, %double2
+ ret int 0
+}
diff --git a/llvm/test/Regression/ExecutionEngine/test-setcond-int.ll b/llvm/test/Regression/ExecutionEngine/test-setcond-int.ll
new file mode 100644
index 0000000..2de9d4d
--- /dev/null
+++ b/llvm/test/Regression/ExecutionEngine/test-setcond-int.ll
@@ -0,0 +1,68 @@
+
+int %main() {
+ %int1 = add int 0, 0
+ %int2 = add int 0, 0
+ %long1 = add long 0, 0
+ %long2 = add long 0, 0
+ %sbyte1 = add sbyte 0, 0
+ %sbyte2 = add sbyte 0, 0
+ %short1 = add short 0, 0
+ %short2 = add short 0, 0
+ %ubyte1 = add ubyte 0, 0
+ %ubyte2 = add ubyte 0, 0
+ %uint1 = add uint 0, 0
+ %uint2 = add uint 0, 0
+ %ulong1 = add ulong 0, 0
+ %ulong2 = add ulong 0, 0
+ %ushort1 = add ushort 0, 0
+ %ushort2 = add ushort 0, 0
+ %test1 = seteq ubyte %ubyte1, %ubyte2
+ %test2 = setge ubyte %ubyte1, %ubyte2
+ %test3 = setgt ubyte %ubyte1, %ubyte2
+ %test4 = setle ubyte %ubyte1, %ubyte2
+ %test5 = setlt ubyte %ubyte1, %ubyte2
+ %test6 = setne ubyte %ubyte1, %ubyte2
+ %test7 = seteq ushort %ushort1, %ushort2
+ %test8 = setge ushort %ushort1, %ushort2
+ %test9 = setgt ushort %ushort1, %ushort2
+ %test10 = setle ushort %ushort1, %ushort2
+ %test11 = setlt ushort %ushort1, %ushort2
+ %test12 = setne ushort %ushort1, %ushort2
+ %test13 = seteq uint %uint1, %uint2
+ %test14 = setge uint %uint1, %uint2
+ %test15 = setgt uint %uint1, %uint2
+ %test16 = setle uint %uint1, %uint2
+ %test17 = setlt uint %uint1, %uint2
+ %test18 = setne uint %uint1, %uint2
+ %test19 = seteq ulong %ulong1, %ulong2
+ %test20 = setge ulong %ulong1, %ulong2
+ %test21 = setgt ulong %ulong1, %ulong2
+ %test22 = setle ulong %ulong1, %ulong2
+ %test23 = setlt ulong %ulong1, %ulong2
+ %test24 = setne ulong %ulong1, %ulong2
+ %test25 = seteq sbyte %sbyte1, %sbyte2
+ %test26 = setge sbyte %sbyte1, %sbyte2
+ %test27 = setgt sbyte %sbyte1, %sbyte2
+ %test28 = setle sbyte %sbyte1, %sbyte2
+ %test29 = setlt sbyte %sbyte1, %sbyte2
+ %test30 = setne sbyte %sbyte1, %sbyte2
+ %test31 = seteq short %short1, %short2
+ %test32 = setge short %short1, %short2
+ %test33 = setgt short %short1, %short2
+ %test34 = setle short %short1, %short2
+ %test35 = setlt short %short1, %short2
+ %test36 = setne short %short1, %short2
+ %test37 = seteq int %int1, %int2
+ %test38 = setge int %int1, %int2
+ %test39 = setgt int %int1, %int2
+ %test40 = setle int %int1, %int2
+ %test41 = setlt int %int1, %int2
+ %test42 = setne int %int1, %int2
+ %test43 = seteq long %long1, %long2
+ %test44 = setge long %long1, %long2
+ %test45 = setgt long %long1, %long2
+ %test46 = setle long %long1, %long2
+ %test47 = setlt long %long1, %long2
+ %test48 = setne long %long1, %long2
+ ret int 0
+}
diff --git a/llvm/test/Regression/ExecutionEngine/test-shift.ll b/llvm/test/Regression/ExecutionEngine/test-shift.ll
new file mode 100644
index 0000000..5137613
--- /dev/null
+++ b/llvm/test/Regression/ExecutionEngine/test-shift.ll
@@ -0,0 +1,37 @@
+; test shifts
+int %main() {
+ %shamt = add ubyte 0, 1
+
+ ; Left shifts...
+ %t1 = shl int 1, ubyte %shamt
+ %t2 = shl int 1, ubyte 4
+
+ %t1 = shl uint 1, ubyte %shamt
+ %t2 = shl uint 1, ubyte 5
+
+ ;%t1 = shl long 1, ubyte %shamt
+ %t2 = shl long 1, ubyte 4
+
+ ;%t1 = shl ulong 1, ubyte %shamt
+ %t2 = shl ulong 1, ubyte 5
+
+ ; Right shifts...
+ %t1 = shr int 1, ubyte %shamt
+ %t2 = shr int 1, ubyte 4
+
+ %t1 = shr uint 1, ubyte %shamt
+ %t2 = shr uint 1, ubyte 5
+
+ ;%t1 = shr long 1, ubyte %shamt
+ %t1 = shr long 1, ubyte 4
+ %t2 = shr long 1, ubyte %shamt
+ %t3 = shl long 1, ubyte 4
+ %t4 = shl long 1, ubyte %shamt
+
+ ;%t1 = shr ulong 1, ubyte %shamt
+ %t1 = shr ulong 1, ubyte 5
+ %t2 = shr ulong 1, ubyte %shamt
+ %t3 = shl ulong 1, ubyte 5
+ %t4 = shl ulong 1, ubyte %shamt
+ ret int 0
+}