Add SwiftShader dump from Feb 6 2013
diff --git a/src/LLVM/test/CodeGen/Generic/2002-04-14-UnexpectedUnsignedType.ll b/src/LLVM/test/CodeGen/Generic/2002-04-14-UnexpectedUnsignedType.ll new file mode 100644 index 0000000..fbe572d --- /dev/null +++ b/src/LLVM/test/CodeGen/Generic/2002-04-14-UnexpectedUnsignedType.ll
@@ -0,0 +1,13 @@ +; RUN: llc < %s + +; This caused the backend to assert out with: +; SparcInstrInfo.cpp:103: failed assertion `0 && "Unexpected unsigned type"' +; + +declare void @bar(i8*) + +define void @foo() { + %cast225 = inttoptr i64 123456 to i8* ; <i8*> [#uses=1] + call void @bar( i8* %cast225 ) + ret void +}
diff --git a/src/LLVM/test/CodeGen/Generic/2002-04-16-StackFrameSizeAlignment.ll b/src/LLVM/test/CodeGen/Generic/2002-04-16-StackFrameSizeAlignment.ll new file mode 100644 index 0000000..eab2c5f --- /dev/null +++ b/src/LLVM/test/CodeGen/Generic/2002-04-16-StackFrameSizeAlignment.ll
@@ -0,0 +1,14 @@ +; RUN: llc < %s + +; Compiling this file produces: +; Sparc.cpp:91: failed assertion `(offset - OFFSET) % getStackFrameSizeAlignment() == 0' +; +declare i32 @SIM(i8*, i8*, i32, i32, i32, [256 x i32]*, i32, i32, i32) + +define void @foo() { +bb0: + %V = alloca [256 x i32], i32 256 ; <[256 x i32]*> [#uses=1] + call i32 @SIM( i8* null, i8* null, i32 0, i32 0, i32 0, [256 x i32]* %V, i32 0, i32 0, i32 2 ) ; <i32>:0 [#uses=0] + ret void +} +
diff --git a/src/LLVM/test/CodeGen/Generic/2003-05-27-phifcmpd.ll b/src/LLVM/test/CodeGen/Generic/2003-05-27-phifcmpd.ll new file mode 100644 index 0000000..d128990 --- /dev/null +++ b/src/LLVM/test/CodeGen/Generic/2003-05-27-phifcmpd.ll
@@ -0,0 +1,19 @@ +; RUN: llc < %s + +define void @QRiterate(i32 %p.1, double %tmp.212) { +entry: + %tmp.184 = icmp sgt i32 %p.1, 0 ; <i1> [#uses=1] + br i1 %tmp.184, label %shortcirc_next.1, label %shortcirc_done.1 + +shortcirc_next.1: ; preds = %shortcirc_done.1, %entry + %tmp.213 = fcmp une double %tmp.212, 0.000000e+00 ; <i1> [#uses=1] + br label %shortcirc_done.1 + +shortcirc_done.1: ; preds = %shortcirc_next.1, %entry + %val.1 = phi i1 [ false, %entry ], [ %tmp.213, %shortcirc_next.1 ] ; <i1> [#uses=1] + br i1 %val.1, label %shortcirc_next.1, label %exit.1 + +exit.1: ; preds = %shortcirc_done.1 + ret void +} +
diff --git a/src/LLVM/test/CodeGen/Generic/2003-05-27-useboolinotherbb.ll b/src/LLVM/test/CodeGen/Generic/2003-05-27-useboolinotherbb.ll new file mode 100644 index 0000000..b73d89f --- /dev/null +++ b/src/LLVM/test/CodeGen/Generic/2003-05-27-useboolinotherbb.ll
@@ -0,0 +1,13 @@ +; RUN: llc < %s + +define void @QRiterate(double %tmp.212) { + %tmp.213 = fcmp une double %tmp.212, 0.000000e+00 ; <i1> [#uses=1] + br label %shortcirc_next.1 + +shortcirc_next.1: ; preds = %shortcirc_next.1, %0 + br i1 %tmp.213, label %shortcirc_next.1, label %exit.1 + +exit.1: ; preds = %shortcirc_next.1 + ret void +} +
diff --git a/src/LLVM/test/CodeGen/Generic/2003-05-27-usefsubasbool.ll b/src/LLVM/test/CodeGen/Generic/2003-05-27-usefsubasbool.ll new file mode 100644 index 0000000..2404b3e --- /dev/null +++ b/src/LLVM/test/CodeGen/Generic/2003-05-27-usefsubasbool.ll
@@ -0,0 +1,14 @@ +; RUN: llc < %s + +define void @QRiterate(double %tmp.212) { +entry: + br label %shortcirc_next.1 + +shortcirc_next.1: ; preds = %shortcirc_next.1, %entry + %tmp.213 = fcmp une double %tmp.212, 0.000000e+00 ; <i1> [#uses=1] + br i1 %tmp.213, label %shortcirc_next.1, label %exit.1 + +exit.1: ; preds = %shortcirc_next.1 + ret void +} +
diff --git a/src/LLVM/test/CodeGen/Generic/2003-05-28-ManyArgs.ll b/src/LLVM/test/CodeGen/Generic/2003-05-28-ManyArgs.ll new file mode 100644 index 0000000..5591806 --- /dev/null +++ b/src/LLVM/test/CodeGen/Generic/2003-05-28-ManyArgs.ll
@@ -0,0 +1,153 @@ +; RUN: llc < %s + +;; Date: May 28, 2003. +;; From: test/Programs/External/SPEC/CINT2000/175.vpr.llvm.bc +;; Function: int %main(int %argc.1, sbyte** %argv.1) +;; +;; Error: A function call with about 56 arguments causes an assertion failure +;; in llc because the register allocator cannot find a register +;; not used explicitly by the call instruction. +;; +;; Cause: Regalloc was not keeping track of free registers correctly. +;; It was counting the registers allocated to all outgoing arguments, +;; even though most of those are copied to the stack (so those +;; registers are not actually used by the call instruction). +;; +;; Fixed: By rewriting selection and allocation so that selection explicitly +;; inserts all copy operations required for passing arguments and +;; for the return value of a call, copying to/from registers +;; and/or to stack locations as needed. +;; + %struct..s_annealing_sched = type { i32, float, float, float, float } + %struct..s_chan = type { i32, float, float, float, float } + %struct..s_det_routing_arch = type { i32, float, float, float, i32, i32, i16, i16, i16, float, float } + %struct..s_placer_opts = type { i32, float, i32, i32, i8*, i32, i32 } + %struct..s_router_opts = type { float, float, float, float, float, i32, i32, i32, i32 } + %struct..s_segment_inf = type { float, i32, i16, i16, float, float, i32, float, float } + %struct..s_switch_inf = type { i32, float, float, float, float } + +define i32 @main(i32 %argc.1, i8** %argv.1) { +entry: + %net_file = alloca [300 x i8] ; <[300 x i8]*> [#uses=1] + %place_file = alloca [300 x i8] ; <[300 x i8]*> [#uses=1] + %arch_file = alloca [300 x i8] ; <[300 x i8]*> [#uses=1] + %route_file = alloca [300 x i8] ; <[300 x i8]*> [#uses=1] + %full_stats = alloca i32 ; <i32*> [#uses=1] + %operation = alloca i32 ; <i32*> [#uses=1] + %verify_binary_search = alloca i32 ; <i32*> [#uses=1] + %show_graphics = alloca i32 ; <i32*> [#uses=1] + %annealing_sched = alloca %struct..s_annealing_sched ; <%struct..s_annealing_sched*> [#uses=5] + %placer_opts = alloca %struct..s_placer_opts ; <%struct..s_placer_opts*> [#uses=7] + %router_opts = alloca %struct..s_router_opts ; <%struct..s_router_opts*> [#uses=9] + %det_routing_arch = alloca %struct..s_det_routing_arch ; <%struct..s_det_routing_arch*> [#uses=11] + %segment_inf = alloca %struct..s_segment_inf* ; <%struct..s_segment_inf**> [#uses=1] + %timing_inf = alloca { i32, float, float, float, float, float, float, float, float, float, float } ; <{ i32, float, float, float, float, float, float, float, float, float, float }*> [#uses=11] + %tmp.101 = getelementptr %struct..s_placer_opts* %placer_opts, i64 0, i32 4 ; <i8**> [#uses=1] + %tmp.105 = getelementptr [300 x i8]* %net_file, i64 0, i64 0 ; <i8*> [#uses=1] + %tmp.106 = getelementptr [300 x i8]* %arch_file, i64 0, i64 0 ; <i8*> [#uses=1] + %tmp.107 = getelementptr [300 x i8]* %place_file, i64 0, i64 0 ; <i8*> [#uses=1] + %tmp.108 = getelementptr [300 x i8]* %route_file, i64 0, i64 0 ; <i8*> [#uses=1] + %tmp.109 = getelementptr { i32, float, float, float, float, float, float, float, float, float, float }* %timing_inf, i64 0, i32 0 ; <i32*> [#uses=1] + %tmp.112 = getelementptr %struct..s_placer_opts* %placer_opts, i64 0, i32 0 ; <i32*> [#uses=1] + %tmp.114 = getelementptr %struct..s_placer_opts* %placer_opts, i64 0, i32 6 ; <i32*> [#uses=1] + %tmp.118 = getelementptr %struct..s_router_opts* %router_opts, i64 0, i32 7 ; <i32*> [#uses=1] + %tmp.135 = load i32* %operation ; <i32> [#uses=1] + %tmp.137 = load i32* %tmp.112 ; <i32> [#uses=1] + %tmp.138 = getelementptr %struct..s_placer_opts* %placer_opts, i64 0, i32 1 ; <float*> [#uses=1] + %tmp.139 = load float* %tmp.138 ; <float> [#uses=1] + %tmp.140 = getelementptr %struct..s_placer_opts* %placer_opts, i64 0, i32 2 ; <i32*> [#uses=1] + %tmp.141 = load i32* %tmp.140 ; <i32> [#uses=1] + %tmp.142 = getelementptr %struct..s_placer_opts* %placer_opts, i64 0, i32 3 ; <i32*> [#uses=1] + %tmp.143 = load i32* %tmp.142 ; <i32> [#uses=1] + %tmp.145 = load i8** %tmp.101 ; <i8*> [#uses=1] + %tmp.146 = getelementptr %struct..s_placer_opts* %placer_opts, i64 0, i32 5 ; <i32*> [#uses=1] + %tmp.147 = load i32* %tmp.146 ; <i32> [#uses=1] + %tmp.149 = load i32* %tmp.114 ; <i32> [#uses=1] + %tmp.154 = load i32* %full_stats ; <i32> [#uses=1] + %tmp.155 = load i32* %verify_binary_search ; <i32> [#uses=1] + %tmp.156 = getelementptr %struct..s_annealing_sched* %annealing_sched, i64 0, i32 0 ; <i32*> [#uses=1] + %tmp.157 = load i32* %tmp.156 ; <i32> [#uses=1] + %tmp.158 = getelementptr %struct..s_annealing_sched* %annealing_sched, i64 0, i32 1 ; <float*> [#uses=1] + %tmp.159 = load float* %tmp.158 ; <float> [#uses=1] + %tmp.160 = getelementptr %struct..s_annealing_sched* %annealing_sched, i64 0, i32 2 ; <float*> [#uses=1] + %tmp.161 = load float* %tmp.160 ; <float> [#uses=1] + %tmp.162 = getelementptr %struct..s_annealing_sched* %annealing_sched, i64 0, i32 3 ; <float*> [#uses=1] + %tmp.163 = load float* %tmp.162 ; <float> [#uses=1] + %tmp.164 = getelementptr %struct..s_annealing_sched* %annealing_sched, i64 0, i32 4 ; <float*> [#uses=1] + %tmp.165 = load float* %tmp.164 ; <float> [#uses=1] + %tmp.166 = getelementptr %struct..s_router_opts* %router_opts, i64 0, i32 0 ; <float*> [#uses=1] + %tmp.167 = load float* %tmp.166 ; <float> [#uses=1] + %tmp.168 = getelementptr %struct..s_router_opts* %router_opts, i64 0, i32 1 ; <float*> [#uses=1] + %tmp.169 = load float* %tmp.168 ; <float> [#uses=1] + %tmp.170 = getelementptr %struct..s_router_opts* %router_opts, i64 0, i32 2 ; <float*> [#uses=1] + %tmp.171 = load float* %tmp.170 ; <float> [#uses=1] + %tmp.172 = getelementptr %struct..s_router_opts* %router_opts, i64 0, i32 3 ; <float*> [#uses=1] + %tmp.173 = load float* %tmp.172 ; <float> [#uses=1] + %tmp.174 = getelementptr %struct..s_router_opts* %router_opts, i64 0, i32 4 ; <float*> [#uses=1] + %tmp.175 = load float* %tmp.174 ; <float> [#uses=1] + %tmp.176 = getelementptr %struct..s_router_opts* %router_opts, i64 0, i32 5 ; <i32*> [#uses=1] + %tmp.177 = load i32* %tmp.176 ; <i32> [#uses=1] + %tmp.178 = getelementptr %struct..s_router_opts* %router_opts, i64 0, i32 6 ; <i32*> [#uses=1] + %tmp.179 = load i32* %tmp.178 ; <i32> [#uses=1] + %tmp.181 = load i32* %tmp.118 ; <i32> [#uses=1] + %tmp.182 = getelementptr %struct..s_router_opts* %router_opts, i64 0, i32 8 ; <i32*> [#uses=1] + %tmp.183 = load i32* %tmp.182 ; <i32> [#uses=1] + %tmp.184 = getelementptr %struct..s_det_routing_arch* %det_routing_arch, i64 0, i32 0 ; <i32*> [#uses=1] + %tmp.185 = load i32* %tmp.184 ; <i32> [#uses=1] + %tmp.186 = getelementptr %struct..s_det_routing_arch* %det_routing_arch, i64 0, i32 1 ; <float*> [#uses=1] + %tmp.187 = load float* %tmp.186 ; <float> [#uses=1] + %tmp.188 = getelementptr %struct..s_det_routing_arch* %det_routing_arch, i64 0, i32 2 ; <float*> [#uses=1] + %tmp.189 = load float* %tmp.188 ; <float> [#uses=1] + %tmp.190 = getelementptr %struct..s_det_routing_arch* %det_routing_arch, i64 0, i32 3 ; <float*> [#uses=1] + %tmp.191 = load float* %tmp.190 ; <float> [#uses=1] + %tmp.192 = getelementptr %struct..s_det_routing_arch* %det_routing_arch, i64 0, i32 4 ; <i32*> [#uses=1] + %tmp.193 = load i32* %tmp.192 ; <i32> [#uses=1] + %tmp.194 = getelementptr %struct..s_det_routing_arch* %det_routing_arch, i64 0, i32 5 ; <i32*> [#uses=1] + %tmp.195 = load i32* %tmp.194 ; <i32> [#uses=1] + %tmp.196 = getelementptr %struct..s_det_routing_arch* %det_routing_arch, i64 0, i32 6 ; <i16*> [#uses=1] + %tmp.197 = load i16* %tmp.196 ; <i16> [#uses=1] + %tmp.198 = getelementptr %struct..s_det_routing_arch* %det_routing_arch, i64 0, i32 7 ; <i16*> [#uses=1] + %tmp.199 = load i16* %tmp.198 ; <i16> [#uses=1] + %tmp.200 = getelementptr %struct..s_det_routing_arch* %det_routing_arch, i64 0, i32 8 ; <i16*> [#uses=1] + %tmp.201 = load i16* %tmp.200 ; <i16> [#uses=1] + %tmp.202 = getelementptr %struct..s_det_routing_arch* %det_routing_arch, i64 0, i32 9 ; <float*> [#uses=1] + %tmp.203 = load float* %tmp.202 ; <float> [#uses=1] + %tmp.204 = getelementptr %struct..s_det_routing_arch* %det_routing_arch, i64 0, i32 10 ; <float*> [#uses=1] + %tmp.205 = load float* %tmp.204 ; <float> [#uses=1] + %tmp.206 = load %struct..s_segment_inf** %segment_inf ; <%struct..s_segment_inf*> [#uses=1] + %tmp.208 = load i32* %tmp.109 ; <i32> [#uses=1] + %tmp.209 = getelementptr { i32, float, float, float, float, float, float, float, float, float, float }* %timing_inf, i64 0, i32 1 ; <float*> [#uses=1] + %tmp.210 = load float* %tmp.209 ; <float> [#uses=1] + %tmp.211 = getelementptr { i32, float, float, float, float, float, float, float, float, float, float }* %timing_inf, i64 0, i32 2 ; <float*> [#uses=1] + %tmp.212 = load float* %tmp.211 ; <float> [#uses=1] + %tmp.213 = getelementptr { i32, float, float, float, float, float, float, float, float, float, float }* %timing_inf, i64 0, i32 3 ; <float*> [#uses=1] + %tmp.214 = load float* %tmp.213 ; <float> [#uses=1] + %tmp.215 = getelementptr { i32, float, float, float, float, float, float, float, float, float, float }* %timing_inf, i64 0, i32 4 ; <float*> [#uses=1] + %tmp.216 = load float* %tmp.215 ; <float> [#uses=1] + %tmp.217 = getelementptr { i32, float, float, float, float, float, float, float, float, float, float }* %timing_inf, i64 0, i32 5 ; <float*> [#uses=1] + %tmp.218 = load float* %tmp.217 ; <float> [#uses=1] + %tmp.219 = getelementptr { i32, float, float, float, float, float, float, float, float, float, float }* %timing_inf, i64 0, i32 6 ; <float*> [#uses=1] + %tmp.220 = load float* %tmp.219 ; <float> [#uses=1] + %tmp.221 = getelementptr { i32, float, float, float, float, float, float, float, float, float, float }* %timing_inf, i64 0, i32 7 ; <float*> [#uses=1] + %tmp.222 = load float* %tmp.221 ; <float> [#uses=1] + %tmp.223 = getelementptr { i32, float, float, float, float, float, float, float, float, float, float }* %timing_inf, i64 0, i32 8 ; <float*> [#uses=1] + %tmp.224 = load float* %tmp.223 ; <float> [#uses=1] + %tmp.225 = getelementptr { i32, float, float, float, float, float, float, float, float, float, float }* %timing_inf, i64 0, i32 9 ; <float*> [#uses=1] + %tmp.226 = load float* %tmp.225 ; <float> [#uses=1] + %tmp.227 = getelementptr { i32, float, float, float, float, float, float, float, float, float, float }* %timing_inf, i64 0, i32 10 ; <float*> [#uses=1] + %tmp.228 = load float* %tmp.227 ; <float> [#uses=1] + call void @place_and_route( i32 %tmp.135, i32 %tmp.137, float %tmp.139, i32 %tmp.141, i32 %tmp.143, i8* %tmp.145, i32 %tmp.147, i32 %tmp.149, i8* %tmp.107, i8* %tmp.105, i8* %tmp.106, i8* %tmp.108, i32 %tmp.154, i32 %tmp.155, i32 %tmp.157, float %tmp.159, float %tmp.161, float %tmp.163, float %tmp.165, float %tmp.167, float %tmp.169, float %tmp.171, float %tmp.173, float %tmp.175, i32 %tmp.177, i32 %tmp.179, i32 %tmp.181, i32 %tmp.183, i32 %tmp.185, float %tmp.187, float %tmp.189, float %tmp.191, i32 %tmp.193, i32 %tmp.195, i16 %tmp.197, i16 %tmp.199, i16 %tmp.201, float %tmp.203, float %tmp.205, %struct..s_segment_inf* %tmp.206, i32 %tmp.208, float %tmp.210, float %tmp.212, float %tmp.214, float %tmp.216, float %tmp.218, float %tmp.220, float %tmp.222, float %tmp.224, float %tmp.226, float %tmp.228 ) + %tmp.231 = load i32* %show_graphics ; <i32> [#uses=1] + %tmp.232 = icmp ne i32 %tmp.231, 0 ; <i1> [#uses=1] + br i1 %tmp.232, label %then.2, label %endif.2 + +then.2: ; preds = %entry + br label %endif.2 + +endif.2: ; preds = %then.2, %entry + ret i32 0 +} + +declare i32 @printf(i8*, ...) + +declare void @place_and_route(i32, i32, float, i32, i32, i8*, i32, i32, i8*, i8*, i8*, i8*, i32, i32, i32, float, float, float, float, float, float, float, float, float, i32, i32, i32, i32, i32, float, float, float, i32, i32, i16, i16, i16, float, float, %struct..s_segment_inf*, i32, float, float, float, float, float, float, float, float, float, float)
diff --git a/src/LLVM/test/CodeGen/Generic/2003-05-30-BadFoldGEP.ll b/src/LLVM/test/CodeGen/Generic/2003-05-30-BadFoldGEP.ll new file mode 100644 index 0000000..e9b20de --- /dev/null +++ b/src/LLVM/test/CodeGen/Generic/2003-05-30-BadFoldGEP.ll
@@ -0,0 +1,39 @@ +; RUN: llc < %s + +;; Date: May 28, 2003. +;; From: test/Programs/External/SPEC/CINT2000/254.gap.llvm.bc +;; Function: int %OpenOutput(sbyte* %filename.1) +;; +;; Error: A sequence of GEPs is folded incorrectly by llc during selection +;; causing an assertion about a dynamic casting error. +;; This code sequence was produced (correctly) by preselection +;; from a nested pair of ConstantExpr getelementptrs. +;; The code below is the output of preselection. +;; The original ConstantExprs are included in a comment. +;; +;; Cause: FoldGetElemChain() was inserting an extra leading 0 even though +;; the first instruction in the sequence contributes no indices. +;; The next instruction contributes a leading non-zero so another +;; zero should not be added before it! +;; + %FileType = type { i32, [256 x i8], i32, i32, i32, i32 } +@OutputFiles = external global [16 x %FileType] ; <[16 x %FileType]*> [#uses=1] +@Output = internal global %FileType* null ; <%FileType**> [#uses=1] + +define internal i32 @OpenOutput(i8* %filename.1) { +entry: + %tmp.0 = load %FileType** @Output ; <%FileType*> [#uses=1] + %tmp.4 = getelementptr %FileType* %tmp.0, i64 1 ; <%FileType*> [#uses=1] + %addrOfGlobal = getelementptr [16 x %FileType]* @OutputFiles, i64 0 ; <[16 x %FileType]*> [#uses=1] + %constantGEP = getelementptr [16 x %FileType]* %addrOfGlobal, i64 1 ; <[16 x %FileType]*> [#uses=1] + %constantGEP.upgrd.1 = getelementptr [16 x %FileType]* %constantGEP, i64 0, i64 0 ; <%FileType*> [#uses=1] + %tmp.10 = icmp eq %FileType* %tmp.4, %constantGEP.upgrd.1 ; <i1> [#uses=1] + br i1 %tmp.10, label %return, label %endif.0 + +endif.0: ; preds = %entry + ret i32 0 + +return: ; preds = %entry + ret i32 1 +} +
diff --git a/src/LLVM/test/CodeGen/Generic/2003-05-30-BadPreselectPhi.ll b/src/LLVM/test/CodeGen/Generic/2003-05-30-BadPreselectPhi.ll new file mode 100644 index 0000000..13e53b9 --- /dev/null +++ b/src/LLVM/test/CodeGen/Generic/2003-05-30-BadPreselectPhi.ll
@@ -0,0 +1,33 @@ +; RUN: llc < %s + +;; Date: May 28, 2003. +;; From: test/Programs/SingleSource/richards_benchmark.c +;; Function: struct task *handlerfn(struct packet *pkt) +;; +;; Error: PreSelection puts the arguments of the Phi just before +;; the Phi instead of in predecessor blocks. This later +;; causes llc to produces an invalid register <NULL VALUE> +;; for the phi arguments. + + %struct..packet = type { %struct..packet*, i32, i32, i32, [4 x i8] } + %struct..task = type { %struct..task*, i32, i32, %struct..packet*, i32, %struct..task* (%struct..packet*)*, i32, i32 } +@v1 = external global i32 ; <i32*> [#uses=1] +@v2 = external global i32 ; <i32*> [#uses=1] + +define %struct..task* @handlerfn(%struct..packet* %pkt.2) { +entry: + %tmp.1 = icmp ne %struct..packet* %pkt.2, null ; <i1> [#uses=1] + br i1 %tmp.1, label %cond_false, label %cond_continue + +cond_false: ; preds = %entry + br label %cond_continue + +cond_continue: ; preds = %cond_false, %entry + %mem_tmp.0 = phi i32* [ @v2, %cond_false ], [ @v1, %entry ] ; <i32*> [#uses=1] + %tmp.12 = bitcast i32* %mem_tmp.0 to %struct..packet* ; <%struct..packet*> [#uses=1] + call void @append( %struct..packet* %pkt.2, %struct..packet* %tmp.12 ) + ret %struct..task* null +} + +declare void @append(%struct..packet*, %struct..packet*) +
diff --git a/src/LLVM/test/CodeGen/Generic/2003-07-06-BadIntCmp.ll b/src/LLVM/test/CodeGen/Generic/2003-07-06-BadIntCmp.ll new file mode 100644 index 0000000..aea41c9 --- /dev/null +++ b/src/LLVM/test/CodeGen/Generic/2003-07-06-BadIntCmp.ll
@@ -0,0 +1,51 @@ +; RUN: llc < %s + +;; Date: May 28, 2003. +;; From: test/Programs/MultiSource/Olden-perimeter/maketree.c +;; Function: int CheckOutside(int x, int y) +;; +;; Note: The .ll code below for this regression test has identical +;; behavior to the above function up to the error, but then prints +;; true/false on the two branches. +;; +;; Error: llc generates a branch-on-xcc instead of branch-on-icc, which +;; is wrong because the value being compared (int euclid = x*x + y*y) +;; overflows, so that the 64-bit and 32-bit compares are not equal. + +@.str_1 = internal constant [6 x i8] c"true\0A\00" ; <[6 x i8]*> [#uses=1] +@.str_2 = internal constant [7 x i8] c"false\0A\00" ; <[7 x i8]*> [#uses=1] + +declare i32 @printf(i8*, ...) + +define internal void @__main() { +entry: + ret void +} + +define internal void @CheckOutside(i32 %x.1, i32 %y.1) { +entry: + %tmp.2 = mul i32 %x.1, %x.1 ; <i32> [#uses=1] + %tmp.5 = mul i32 %y.1, %y.1 ; <i32> [#uses=1] + %tmp.6 = add i32 %tmp.2, %tmp.5 ; <i32> [#uses=1] + %tmp.8 = icmp sle i32 %tmp.6, 4194304 ; <i1> [#uses=1] + br i1 %tmp.8, label %then, label %else + +then: ; preds = %entry + %tmp.11 = call i32 (i8*, ...)* @printf( i8* getelementptr ([6 x i8]* @.str_1, i64 0, i64 0) ) ; <i32> [#uses=0] + br label %UnifiedExitNode + +else: ; preds = %entry + %tmp.13 = call i32 (i8*, ...)* @printf( i8* getelementptr ([7 x i8]* @.str_2, i64 0, i64 0) ) ; <i32> [#uses=0] + br label %UnifiedExitNode + +UnifiedExitNode: ; preds = %else, %then + ret void +} + +define i32 @main() { +entry: + call void @__main( ) + call void @CheckOutside( i32 2097152, i32 2097152 ) + ret i32 0 +} +
diff --git a/src/LLVM/test/CodeGen/Generic/2003-07-07-BadLongConst.ll b/src/LLVM/test/CodeGen/Generic/2003-07-07-BadLongConst.ll new file mode 100644 index 0000000..98b5c0f --- /dev/null +++ b/src/LLVM/test/CodeGen/Generic/2003-07-07-BadLongConst.ll
@@ -0,0 +1,20 @@ +; RUN: llc < %s + +@.str_1 = internal constant [42 x i8] c" ui = %u (0x%x)\09\09UL-ui = %lld (0x%llx)\0A\00" ; <[42 x i8]*> [#uses=1] + +declare i32 @printf(i8*, ...) + +define internal i64 @getL() { +entry: + ret i64 -5787213826675591005 +} + +define i32 @main(i32 %argc.1, i8** %argv.1) { +entry: + %tmp.11 = call i64 @getL( ) ; <i64> [#uses=2] + %tmp.5 = trunc i64 %tmp.11 to i32 ; <i32> [#uses=2] + %tmp.23 = and i64 %tmp.11, -4294967296 ; <i64> [#uses=2] + %tmp.16 = call i32 (i8*, ...)* @printf( i8* getelementptr ([42 x i8]* @.str_1, i64 0, i64 0), i32 %tmp.5, i32 %tmp.5, i64 %tmp.23, i64 %tmp.23 ) ; <i32> [#uses=0] + ret i32 0 +} +
diff --git a/src/LLVM/test/CodeGen/Generic/2003-07-08-BadCastToBool.ll b/src/LLVM/test/CodeGen/Generic/2003-07-08-BadCastToBool.ll new file mode 100644 index 0000000..5557123 --- /dev/null +++ b/src/LLVM/test/CodeGen/Generic/2003-07-08-BadCastToBool.ll
@@ -0,0 +1,34 @@ +; RUN: llc < %s + +;; Date: Jul 8, 2003. +;; From: test/Programs/MultiSource/Olden-perimeter +;; Function: int %adj(uint %d.1, uint %ct.1) +;; +;; Errors: (1) cast-int-to-bool was being treated as a NOP (i.e., the int +;; register was treated as effectively true if non-zero). +;; This cannot be used for later boolean operations. +;; (2) (A or NOT(B)) was being folded into A orn B, which is ok +;; for bitwise operations but not booleans! For booleans, +;; the result has to be compared with 0. + +@.str_1 = internal constant [30 x i8] c"d = %d, ct = %d, d ^ ct = %d\0A\00" + +declare i32 @printf(i8*, ...) + +define i32 @adj(i32 %d.1, i32 %ct.1) { +entry: + %tmp.19 = icmp eq i32 %ct.1, 2 ; <i1> [#uses=1] + %tmp.22.not = trunc i32 %ct.1 to i1 ; <i1> [#uses=1] + %tmp.221 = xor i1 %tmp.22.not, true ; <i1> [#uses=1] + %tmp.26 = or i1 %tmp.19, %tmp.221 ; <i1> [#uses=1] + %tmp.27 = zext i1 %tmp.26 to i32 ; <i32> [#uses=1] + ret i32 %tmp.27 +} + +define i32 @main() { +entry: + %result = call i32 @adj( i32 3, i32 2 ) ; <i32> [#uses=1] + %tmp.0 = call i32 (i8*, ...)* @printf( i8* getelementptr ([30 x i8]* @.str_1, i64 0, i64 0), i32 3, i32 2, i32 %result ) ; <i32> [#uses=0] + ret i32 0 +} +
diff --git a/src/LLVM/test/CodeGen/Generic/2003-07-29-BadConstSbyte.ll b/src/LLVM/test/CodeGen/Generic/2003-07-29-BadConstSbyte.ll new file mode 100644 index 0000000..91ec967 --- /dev/null +++ b/src/LLVM/test/CodeGen/Generic/2003-07-29-BadConstSbyte.ll
@@ -0,0 +1,40 @@ +; RUN: llc < %s + +;; Date: Jul 29, 2003. +;; From: test/Programs/MultiSource/Ptrdist-bc +;; Function: --- +;; Global: %yy_ec = internal constant [256 x sbyte] ... +;; A subset of this array is used in the test below. +;; +;; Error: Character '\07' was being emitted as '\a', at yy_ec[38]. +;; When loaded, this returned the value 97 ('a'), instead of 7. +;; +;; Incorrect LLC Output for the array yy_ec was: +;; yy_ec_1094: +;; .ascii "\000\001\001\001\001\001\001\001\001\002\003\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\002\004\005\001\001\006\a\001\b\t\n\v\f\r\016\017\020\020\020\020\020\020\020\020\020\020\001\021\022\023\024\001\001\025\025\025\025\025\025\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\026\027\030\031\032\001\033\034\035\036\037 !\"#$%&'()*+,-./$0$1$234\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001" +;; + +@yy_ec = internal constant [6 x i8] c"\06\07\01\08\01\09" ; <[6 x i8]*> [#uses=1] +@.str_3 = internal constant [8 x i8] c"[%d] = \00" ; <[8 x i8]*> [#uses=1] +@.str_4 = internal constant [4 x i8] c"%d\0A\00" ; <[4 x i8]*> [#uses=1] + +declare i32 @printf(i8*, ...) + +define i32 @main() { +entry: + br label %loopentry + +loopentry: ; preds = %loopentry, %entry + %i = phi i64 [ 0, %entry ], [ %inc.i, %loopentry ] ; <i64> [#uses=3] + %cptr = getelementptr [6 x i8]* @yy_ec, i64 0, i64 %i ; <i8*> [#uses=1] + %c = load i8* %cptr ; <i8> [#uses=1] + %ignore = call i32 (i8*, ...)* @printf( i8* getelementptr ([8 x i8]* @.str_3, i64 0, i64 0), i64 %i ) ; <i32> [#uses=0] + %ignore2 = call i32 (i8*, ...)* @printf( i8* getelementptr ([4 x i8]* @.str_4, i64 0, i64 0), i8 %c ) ; <i32> [#uses=0] + %inc.i = add i64 %i, 1 ; <i64> [#uses=2] + %done = icmp sle i64 %inc.i, 5 ; <i1> [#uses=1] + br i1 %done, label %loopentry, label %exit.1 + +exit.1: ; preds = %loopentry + ret i32 0 +} +
diff --git a/src/LLVM/test/CodeGen/Generic/2004-05-09-LiveVarPartialRegister.ll b/src/LLVM/test/CodeGen/Generic/2004-05-09-LiveVarPartialRegister.ll new file mode 100644 index 0000000..49e3e8b --- /dev/null +++ b/src/LLVM/test/CodeGen/Generic/2004-05-09-LiveVarPartialRegister.ll
@@ -0,0 +1,13 @@ +; RUN: llc < %s +@global_long_1 = linkonce global i64 7 ; <i64*> [#uses=1] +@global_long_2 = linkonce global i64 49 ; <i64*> [#uses=1] + +define i32 @main() { + %l1 = load i64* @global_long_1 ; <i64> [#uses=1] + %l2 = load i64* @global_long_2 ; <i64> [#uses=1] + %cond = icmp sle i64 %l1, %l2 ; <i1> [#uses=1] + %cast2 = zext i1 %cond to i32 ; <i32> [#uses=1] + %RV = sub i32 1, %cast2 ; <i32> [#uses=1] + ret i32 %RV +} +
diff --git a/src/LLVM/test/CodeGen/Generic/2005-01-18-SetUO-InfLoop.ll b/src/LLVM/test/CodeGen/Generic/2005-01-18-SetUO-InfLoop.ll new file mode 100644 index 0000000..97645fb --- /dev/null +++ b/src/LLVM/test/CodeGen/Generic/2005-01-18-SetUO-InfLoop.ll
@@ -0,0 +1,20 @@ +; RUN: llc < %s + +define void @intersect_pixel() { +entry: + %tmp125 = fcmp uno double 0.000000e+00, 0.000000e+00 ; <i1> [#uses=1] + %tmp126 = or i1 %tmp125, false ; <i1> [#uses=1] + %tmp126.not = xor i1 %tmp126, true ; <i1> [#uses=1] + %brmerge1 = or i1 %tmp126.not, false ; <i1> [#uses=1] + br i1 %brmerge1, label %bb154, label %cond_false133 + +cond_false133: ; preds = %entry + ret void + +bb154: ; preds = %entry + %tmp164 = icmp eq i32 0, 0 ; <i1> [#uses=0] + ret void +} + +declare i1 @llvm.isunordered.f64(double, double) +
diff --git a/src/LLVM/test/CodeGen/Generic/2005-04-09-GlobalInPHI.ll b/src/LLVM/test/CodeGen/Generic/2005-04-09-GlobalInPHI.ll new file mode 100644 index 0000000..a2847cf --- /dev/null +++ b/src/LLVM/test/CodeGen/Generic/2005-04-09-GlobalInPHI.ll
@@ -0,0 +1,20 @@ +; RUN: llc < %s + %struct.TypHeader = type { i32, %struct.TypHeader**, [3 x i8], i8 } +@.str_67 = external global [4 x i8] ; <[4 x i8]*> [#uses=1] +@.str_87 = external global [17 x i8] ; <[17 x i8]*> [#uses=1] + +define void @PrBinop() { +entry: + br i1 false, label %cond_true, label %else.0 + +cond_true: ; preds = %entry + br label %else.0 + +else.0: ; preds = %cond_true, %entry + %tmp.167.1 = phi i32 [ ptrtoint ([17 x i8]* @.str_87 to i32), %entry ], [ 0, %cond_true ] ; <i32> [#uses=0] + call void @Pr( i8* getelementptr ([4 x i8]* @.str_67, i32 0, i32 0), i32 0, i32 0 ) + ret void +} + +declare void @Pr(i8*, i32, i32) +
diff --git a/src/LLVM/test/CodeGen/Generic/2005-10-18-ZeroSizeStackObject.ll b/src/LLVM/test/CodeGen/Generic/2005-10-18-ZeroSizeStackObject.ll new file mode 100644 index 0000000..bc41ee5 --- /dev/null +++ b/src/LLVM/test/CodeGen/Generic/2005-10-18-ZeroSizeStackObject.ll
@@ -0,0 +1,6 @@ +; RUN: llc < %s + +define void @test() { + %X = alloca { } ; <{ }*> [#uses=0] + ret void +}
diff --git a/src/LLVM/test/CodeGen/Generic/2005-10-21-longlonggtu.ll b/src/LLVM/test/CodeGen/Generic/2005-10-21-longlonggtu.ll new file mode 100644 index 0000000..ca5b7b5 --- /dev/null +++ b/src/LLVM/test/CodeGen/Generic/2005-10-21-longlonggtu.ll
@@ -0,0 +1,16 @@ +; RUN: llc < %s + +define float @t(i64 %u_arg) { + %u = bitcast i64 %u_arg to i64 ; <i64> [#uses=1] + %tmp5 = add i64 %u, 9007199254740991 ; <i64> [#uses=1] + %tmp = icmp ugt i64 %tmp5, 18014398509481982 ; <i1> [#uses=1] + br i1 %tmp, label %T, label %F + +T: ; preds = %0 + ret float 1.000000e+00 + +F: ; preds = %0 + call float @t( i64 0 ) ; <float>:1 [#uses=0] + ret float 0.000000e+00 +} +
diff --git a/src/LLVM/test/CodeGen/Generic/2005-12-01-Crash.ll b/src/LLVM/test/CodeGen/Generic/2005-12-01-Crash.ll new file mode 100644 index 0000000..d4000bd --- /dev/null +++ b/src/LLVM/test/CodeGen/Generic/2005-12-01-Crash.ll
@@ -0,0 +1,20 @@ +; RUN: llc < %s +@str = external global [36 x i8] ; <[36 x i8]*> [#uses=0] +@str.upgrd.1 = external global [29 x i8] ; <[29 x i8]*> [#uses=0] +@str1 = external global [29 x i8] ; <[29 x i8]*> [#uses=0] +@str2 = external global [29 x i8] ; <[29 x i8]*> [#uses=1] +@str.upgrd.2 = external global [2 x i8] ; <[2 x i8]*> [#uses=0] +@str3 = external global [2 x i8] ; <[2 x i8]*> [#uses=0] +@str4 = external global [2 x i8] ; <[2 x i8]*> [#uses=0] +@str5 = external global [2 x i8] ; <[2 x i8]*> [#uses=0] + +define void @printArgsNoRet(i32 %a1, float %a2, i8 %a3, double %a4, i8* %a5, i32 %a6, float %a7, i8 %a8, double %a9, i8* %a10, i32 %a11, float %a12, i8 %a13, double %a14, i8* %a15) { +entry: + %tmp17 = sext i8 %a13 to i32 ; <i32> [#uses=1] + %tmp23 = call i32 (i8*, ...)* @printf( i8* getelementptr ([29 x i8]* @str2, i32 0, i64 0), i32 %a11, double 0.000000e+00, i32 %tmp17, double %a14, i32 0 ) ; <i32> [#uses=0] + ret void +} + +declare i32 @printf(i8*, ...) + +declare i32 @main(i32, i8**)
diff --git a/src/LLVM/test/CodeGen/Generic/2005-12-12-ExpandSextInreg.ll b/src/LLVM/test/CodeGen/Generic/2005-12-12-ExpandSextInreg.ll new file mode 100644 index 0000000..f783650 --- /dev/null +++ b/src/LLVM/test/CodeGen/Generic/2005-12-12-ExpandSextInreg.ll
@@ -0,0 +1,7 @@ +; RUN: llc < %s + +define i64 @test(i64 %A) { + %B = trunc i64 %A to i8 ; <i8> [#uses=1] + %C = sext i8 %B to i64 ; <i64> [#uses=1] + ret i64 %C +}
diff --git a/src/LLVM/test/CodeGen/Generic/2006-01-12-BadSetCCFold.ll b/src/LLVM/test/CodeGen/Generic/2006-01-12-BadSetCCFold.ll new file mode 100644 index 0000000..f41923f --- /dev/null +++ b/src/LLVM/test/CodeGen/Generic/2006-01-12-BadSetCCFold.ll
@@ -0,0 +1,35 @@ +; RUN: llc < %s +; ModuleID = '2006-01-12-BadSetCCFold.ll' + %struct.node_t = type { double*, %struct.node_t*, %struct.node_t**, double**, double*, i32, i32 } + +define void @main() { +entry: + br i1 false, label %then.2.i, label %endif.2.i + +then.2.i: ; preds = %entry + br label %dealwithargs.exit + +endif.2.i: ; preds = %entry + br i1 false, label %then.3.i, label %dealwithargs.exit + +then.3.i: ; preds = %endif.2.i + br label %dealwithargs.exit + +dealwithargs.exit: ; preds = %then.3.i, %endif.2.i, %then.2.i + %n_nodes.4 = phi i32 [ 64, %then.3.i ], [ 64, %then.2.i ], [ 64, %endif.2.i ] ; <i32> [#uses=1] + %tmp.14.i1134.i.i = icmp sgt i32 %n_nodes.4, 1 ; <i1> [#uses=2] + br i1 %tmp.14.i1134.i.i, label %no_exit.i12.i.i, label %fill_table.exit22.i.i + +no_exit.i12.i.i: ; preds = %no_exit.i12.i.i, %dealwithargs.exit + br i1 false, label %fill_table.exit22.i.i, label %no_exit.i12.i.i + +fill_table.exit22.i.i: ; preds = %no_exit.i12.i.i, %dealwithargs.exit + %cur_node.0.i8.1.i.i = phi %struct.node_t* [ undef, %dealwithargs.exit ], [ null, %no_exit.i12.i.i ] ; <%struct.node_t*> [#uses=0] + br i1 %tmp.14.i1134.i.i, label %no_exit.i.preheader.i.i, label %make_tables.exit.i + +no_exit.i.preheader.i.i: ; preds = %fill_table.exit22.i.i + ret void + +make_tables.exit.i: ; preds = %fill_table.exit22.i.i + ret void +}
diff --git a/src/LLVM/test/CodeGen/Generic/2006-01-18-InvalidBranchOpcodeAssert.ll b/src/LLVM/test/CodeGen/Generic/2006-01-18-InvalidBranchOpcodeAssert.ll new file mode 100644 index 0000000..687e290 --- /dev/null +++ b/src/LLVM/test/CodeGen/Generic/2006-01-18-InvalidBranchOpcodeAssert.ll
@@ -0,0 +1,15 @@ +; RUN: llc < %s +; This crashed the PPC backend. + +define void @test() { + %tmp125 = fcmp uno double 0.000000e+00, 0.000000e+00 ; <i1> [#uses=1] + br i1 %tmp125, label %bb154, label %cond_false133 + +cond_false133: ; preds = %0 + ret void + +bb154: ; preds = %0 + %tmp164 = icmp eq i32 0, 0 ; <i1> [#uses=0] + ret void +} +
diff --git a/src/LLVM/test/CodeGen/Generic/2006-02-12-InsertLibcall.ll b/src/LLVM/test/CodeGen/Generic/2006-02-12-InsertLibcall.ll new file mode 100644 index 0000000..67817e5 --- /dev/null +++ b/src/LLVM/test/CodeGen/Generic/2006-02-12-InsertLibcall.ll
@@ -0,0 +1,60 @@ +; RUN: llc < %s +@G = external global i32 ; <i32*> [#uses=1] + +define void @encode_one_frame(i64 %tmp.2i) { +entry: + %tmp.9 = icmp eq i32 0, 0 ; <i1> [#uses=1] + br i1 %tmp.9, label %endif.0, label %shortcirc_next.0 + +then.5.i: ; preds = %shortcirc_next.i + %tmp.114.i = sdiv i64 %tmp.2i, 3 ; <i64> [#uses=1] + %tmp.111.i = call i64 @lseek( i32 0, i64 %tmp.114.i, i32 1 ) ; <i64> [#uses=0] + ret void + +shortcirc_next.0: ; preds = %entry + ret void + +endif.0: ; preds = %entry + %tmp.324.i = icmp eq i32 0, 0 ; <i1> [#uses=2] + %tmp.362.i = icmp slt i32 0, 0 ; <i1> [#uses=1] + br i1 %tmp.324.i, label %else.4.i, label %then.11.i37 + +then.11.i37: ; preds = %endif.0 + ret void + +else.4.i: ; preds = %endif.0 + br i1 %tmp.362.i, label %else.5.i, label %then.12.i + +then.12.i: ; preds = %else.4.i + ret void + +else.5.i: ; preds = %else.4.i + br i1 %tmp.324.i, label %then.0.i40, label %then.17.i + +then.17.i: ; preds = %else.5.i + ret void + +then.0.i40: ; preds = %else.5.i + %tmp.8.i42 = icmp eq i32 0, 0 ; <i1> [#uses=1] + br i1 %tmp.8.i42, label %else.1.i56, label %then.1.i52 + +then.1.i52: ; preds = %then.0.i40 + ret void + +else.1.i56: ; preds = %then.0.i40 + %tmp.28.i = load i32* @G ; <i32> [#uses=1] + %tmp.29.i = icmp eq i32 %tmp.28.i, 1 ; <i1> [#uses=1] + br i1 %tmp.29.i, label %shortcirc_next.i, label %shortcirc_done.i + +shortcirc_next.i: ; preds = %else.1.i56 + %tmp.34.i = icmp eq i32 0, 3 ; <i1> [#uses=1] + br i1 %tmp.34.i, label %then.5.i, label %endif.5.i + +shortcirc_done.i: ; preds = %else.1.i56 + ret void + +endif.5.i: ; preds = %shortcirc_next.i + ret void +} + +declare i64 @lseek(i32, i64, i32)
diff --git a/src/LLVM/test/CodeGen/Generic/2006-03-01-dagcombineinfloop.ll b/src/LLVM/test/CodeGen/Generic/2006-03-01-dagcombineinfloop.ll new file mode 100644 index 0000000..ed53266 --- /dev/null +++ b/src/LLVM/test/CodeGen/Generic/2006-03-01-dagcombineinfloop.ll
@@ -0,0 +1,95 @@ +; RUN: llc < %s +; Infinite loop in the dag combiner, reduced from 176.gcc. +%struct._obstack_chunk = type { i8*, %struct._obstack_chunk*, [4 x i8] } + %struct.anon = type { i32 } + %struct.lang_decl = type opaque + %struct.lang_type = type { i32, [1 x %struct.tree_node*] } + %struct.obstack = type { i32, %struct._obstack_chunk*, i8*, i8*, i8*, i32, i32, %struct._obstack_chunk* (...)*, void (...)*, i8*, i8 } + %struct.rtx_def = type { i16, i8, i8, [1 x %struct.anon] } + %struct.tree_common = type { %struct.tree_node*, %struct.tree_node*, i8, i8, i8, i8 } + %struct.tree_decl = type { [12 x i8], i8*, i32, %struct.tree_node*, i32, i8, i8, i8, i8, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, %struct.rtx_def*, %struct.anon, { %struct.rtx_def* }, %struct.tree_node*, %struct.lang_decl* } + %struct.tree_list = type { [12 x i8], %struct.tree_node*, %struct.tree_node* } + %struct.tree_node = type { %struct.tree_decl } + %struct.tree_type = type { [12 x i8], %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, i32, i8, i8, i8, i8, i32, %struct.tree_node*, %struct.tree_node*, %struct.anon, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, %struct.obstack*, %struct.lang_type* } +@void_type_node = external global %struct.tree_node* ; <%struct.tree_node**> [#uses=1] +@char_type_node = external global %struct.tree_node* ; <%struct.tree_node**> [#uses=1] +@short_integer_type_node = external global %struct.tree_node* ; <%struct.tree_node**> [#uses=1] +@short_unsigned_type_node = external global %struct.tree_node* ; <%struct.tree_node**> [#uses=1] +@float_type_node = external global %struct.tree_node* ; <%struct.tree_node**> [#uses=1] +@signed_char_type_node = external global %struct.tree_node* ; <%struct.tree_node**> [#uses=1] +@unsigned_char_type_node = external global %struct.tree_node* ; <%struct.tree_node**> [#uses=1] + +define fastcc i32 @self_promoting_args_p(%struct.tree_node* %parms) { +entry: + %tmp915 = icmp eq %struct.tree_node* %parms, null ; <i1> [#uses=1] + br i1 %tmp915, label %return, label %cond_true92.preheader + +cond_true: ; preds = %cond_true92 + %tmp9.not = icmp ne %struct.tree_node* %tmp2, %tmp7 ; <i1> [#uses=1] + %tmp14 = icmp eq %struct.tree_node* %tmp2, null ; <i1> [#uses=1] + %bothcond = or i1 %tmp9.not, %tmp14 ; <i1> [#uses=1] + br i1 %bothcond, label %return, label %cond_next18 + +cond_next12: ; preds = %cond_true92 + %tmp14.old = icmp eq %struct.tree_node* %tmp2, null ; <i1> [#uses=1] + br i1 %tmp14.old, label %return, label %cond_next18 + +cond_next18: ; preds = %cond_next12, %cond_true + %tmp20 = bitcast %struct.tree_node* %tmp2 to %struct.tree_type* ; <%struct.tree_type*> [#uses=1] + %tmp21 = getelementptr %struct.tree_type* %tmp20, i32 0, i32 17 ; <%struct.tree_node**> [#uses=1] + %tmp22 = load %struct.tree_node** %tmp21 ; <%struct.tree_node*> [#uses=6] + %tmp24 = icmp eq %struct.tree_node* %tmp22, %tmp23 ; <i1> [#uses=1] + br i1 %tmp24, label %return, label %cond_next28 + +cond_next28: ; preds = %cond_next18 + %tmp30 = bitcast %struct.tree_node* %tmp2 to %struct.tree_common* ; <%struct.tree_common*> [#uses=1] + %tmp = getelementptr %struct.tree_common* %tmp30, i32 0, i32 2 ; <i8*> [#uses=1] + %tmp.upgrd.1 = bitcast i8* %tmp to i32* ; <i32*> [#uses=1] + %tmp.upgrd.2 = load i32* %tmp.upgrd.1 ; <i32> [#uses=1] + %tmp32 = trunc i32 %tmp.upgrd.2 to i8 ; <i8> [#uses=1] + %tmp33 = icmp eq i8 %tmp32, 7 ; <i1> [#uses=1] + br i1 %tmp33, label %cond_true34, label %cond_next84 + +cond_true34: ; preds = %cond_next28 + %tmp40 = icmp eq %struct.tree_node* %tmp22, %tmp39 ; <i1> [#uses=1] + %tmp49 = icmp eq %struct.tree_node* %tmp22, %tmp48 ; <i1> [#uses=1] + %bothcond6 = or i1 %tmp40, %tmp49 ; <i1> [#uses=1] + %tmp58 = icmp eq %struct.tree_node* %tmp22, %tmp57 ; <i1> [#uses=1] + %bothcond7 = or i1 %bothcond6, %tmp58 ; <i1> [#uses=1] + %tmp67 = icmp eq %struct.tree_node* %tmp22, %tmp66 ; <i1> [#uses=1] + %bothcond8 = or i1 %bothcond7, %tmp67 ; <i1> [#uses=1] + %tmp76 = icmp eq %struct.tree_node* %tmp22, %tmp75 ; <i1> [#uses=1] + %bothcond9 = or i1 %bothcond8, %tmp76 ; <i1> [#uses=2] + %brmerge = or i1 %bothcond9, %tmp.upgrd.6 ; <i1> [#uses=1] + %bothcond9.upgrd.3 = zext i1 %bothcond9 to i32 ; <i32> [#uses=1] + %.mux = xor i32 %bothcond9.upgrd.3, 1 ; <i32> [#uses=1] + br i1 %brmerge, label %return, label %cond_true92 + +cond_next84: ; preds = %cond_next28 + br i1 %tmp.upgrd.6, label %return, label %cond_true92 + +cond_true92.preheader: ; preds = %entry + %tmp7 = load %struct.tree_node** @void_type_node ; <%struct.tree_node*> [#uses=1] + %tmp23 = load %struct.tree_node** @float_type_node ; <%struct.tree_node*> [#uses=1] + %tmp39 = load %struct.tree_node** @char_type_node ; <%struct.tree_node*> [#uses=1] + %tmp48 = load %struct.tree_node** @signed_char_type_node ; <%struct.tree_node*> [#uses=1] + %tmp57 = load %struct.tree_node** @unsigned_char_type_node ; <%struct.tree_node*> [#uses=1] + %tmp66 = load %struct.tree_node** @short_integer_type_node ; <%struct.tree_node*> [#uses=1] + %tmp75 = load %struct.tree_node** @short_unsigned_type_node ; <%struct.tree_node*> [#uses=1] + br label %cond_true92 + +cond_true92: ; preds = %cond_true92.preheader, %cond_next84, %cond_true34 + %t.0.0 = phi %struct.tree_node* [ %parms, %cond_true92.preheader ], [ %tmp6, %cond_true34 ], [ %tmp6, %cond_next84 ] ; <%struct.tree_node*> [#uses=2] + %tmp.upgrd.4 = bitcast %struct.tree_node* %t.0.0 to %struct.tree_list* ; <%struct.tree_list*> [#uses=1] + %tmp.upgrd.5 = getelementptr %struct.tree_list* %tmp.upgrd.4, i32 0, i32 2 ; <%struct.tree_node**> [#uses=1] + %tmp2 = load %struct.tree_node** %tmp.upgrd.5 ; <%struct.tree_node*> [#uses=5] + %tmp4 = bitcast %struct.tree_node* %t.0.0 to %struct.tree_common* ; <%struct.tree_common*> [#uses=1] + %tmp5 = getelementptr %struct.tree_common* %tmp4, i32 0, i32 0 ; <%struct.tree_node**> [#uses=1] + %tmp6 = load %struct.tree_node** %tmp5 ; <%struct.tree_node*> [#uses=3] + %tmp.upgrd.6 = icmp eq %struct.tree_node* %tmp6, null ; <i1> [#uses=3] + br i1 %tmp.upgrd.6, label %cond_true, label %cond_next12 + +return: ; preds = %cond_next84, %cond_true34, %cond_next18, %cond_next12, %cond_true, %entry + %retval.0 = phi i32 [ 1, %entry ], [ 1, %cond_next84 ], [ %.mux, %cond_true34 ], [ 0, %cond_next18 ], [ 0, %cond_next12 ], [ 0, %cond_true ] ; <i32> [#uses=1] + ret i32 %retval.0 +}
diff --git a/src/LLVM/test/CodeGen/Generic/2006-04-26-SetCCAnd.ll b/src/LLVM/test/CodeGen/Generic/2006-04-26-SetCCAnd.ll new file mode 100644 index 0000000..141084b --- /dev/null +++ b/src/LLVM/test/CodeGen/Generic/2006-04-26-SetCCAnd.ll
@@ -0,0 +1,40 @@ +; RUN: llc < %s +; PR748 +@G = external global i16 ; <i16*> [#uses=1] + +define void @OmNewObjHdr() { +entry: + br i1 false, label %endif.4, label %then.0 + +then.0: ; preds = %entry + ret void + +endif.4: ; preds = %entry + br i1 false, label %else.3, label %shortcirc_next.3 + +shortcirc_next.3: ; preds = %endif.4 + ret void + +else.3: ; preds = %endif.4 + switch i32 0, label %endif.10 [ + i32 5001, label %then.10 + i32 -5008, label %then.10 + ] + +then.10: ; preds = %else.3, %else.3 + %tmp.112 = load i16* null ; <i16> [#uses=2] + %tmp.113 = load i16* @G ; <i16> [#uses=2] + %tmp.114 = icmp ugt i16 %tmp.112, %tmp.113 ; <i1> [#uses=1] + %tmp.120 = icmp ult i16 %tmp.112, %tmp.113 ; <i1> [#uses=1] + %bothcond = and i1 %tmp.114, %tmp.120 ; <i1> [#uses=1] + br i1 %bothcond, label %else.4, label %then.11 + +then.11: ; preds = %then.10 + ret void + +else.4: ; preds = %then.10 + ret void + +endif.10: ; preds = %else.3 + ret void +}
diff --git a/src/LLVM/test/CodeGen/Generic/2006-04-28-Sign-extend-bool.ll b/src/LLVM/test/CodeGen/Generic/2006-04-28-Sign-extend-bool.ll new file mode 100644 index 0000000..78d74ba --- /dev/null +++ b/src/LLVM/test/CodeGen/Generic/2006-04-28-Sign-extend-bool.ll
@@ -0,0 +1,9 @@ +; RUN: llc < %s + +define i32 @test(i32 %tmp93) { + %tmp98 = shl i32 %tmp93, 31 ; <i32> [#uses=1] + %tmp99 = ashr i32 %tmp98, 31 ; <i32> [#uses=1] + %tmp99.upgrd.1 = trunc i32 %tmp99 to i8 ; <i8> [#uses=1] + %tmp99100 = sext i8 %tmp99.upgrd.1 to i32 ; <i32> [#uses=1] + ret i32 %tmp99100 +}
diff --git a/src/LLVM/test/CodeGen/Generic/2006-05-06-GEP-Cast-Sink-Crash.ll b/src/LLVM/test/CodeGen/Generic/2006-05-06-GEP-Cast-Sink-Crash.ll new file mode 100644 index 0000000..7a542b6 --- /dev/null +++ b/src/LLVM/test/CodeGen/Generic/2006-05-06-GEP-Cast-Sink-Crash.ll
@@ -0,0 +1,29 @@ +; RUN: llc < %s +%struct.FILE = type { i8*, i32, i32, i16, i16, %struct.__sbuf, i32, i8*, i32 (i8*)*, i32 (i8*, i8*, i32)*, i64 (i8*, i64, i32)*, i32 (i8*, i8*, i32)*, %struct.__sbuf, %struct.__sFILEX*, i32, [3 x i8], [1 x i8], %struct.__sbuf, i32, i64 } + %struct.SYMBOL_TABLE_ENTRY = type { [9 x i8], [9 x i8], i32, i32, i32, %struct.SYMBOL_TABLE_ENTRY* } + %struct.__sFILEX = type opaque + %struct.__sbuf = type { i8*, i32 } +@str14 = external global [6 x i8] ; <[6 x i8]*> [#uses=0] + +declare void @fprintf(i32, ...) + +define void @OUTPUT_TABLE(%struct.SYMBOL_TABLE_ENTRY* %SYM_TAB) { +entry: + %tmp11 = getelementptr %struct.SYMBOL_TABLE_ENTRY* %SYM_TAB, i32 0, i32 1, i32 0 ; <i8*> [#uses=2] + %tmp.i = bitcast i8* %tmp11 to i8* ; <i8*> [#uses=1] + br label %bb.i + +bb.i: ; preds = %cond_next.i, %entry + %s1.0.i = phi i8* [ %tmp.i, %entry ], [ null, %cond_next.i ] ; <i8*> [#uses=0] + br i1 false, label %cond_true.i31, label %cond_next.i + +cond_true.i31: ; preds = %bb.i + call void (i32, ...)* @fprintf( i32 0, i8* %tmp11, i8* null ) + ret void + +cond_next.i: ; preds = %bb.i + br i1 false, label %bb.i, label %bb19.i + +bb19.i: ; preds = %cond_next.i + ret void +}
diff --git a/src/LLVM/test/CodeGen/Generic/2006-06-12-LowerSwitchCrash.ll b/src/LLVM/test/CodeGen/Generic/2006-06-12-LowerSwitchCrash.ll new file mode 100644 index 0000000..605a0a9 --- /dev/null +++ b/src/LLVM/test/CodeGen/Generic/2006-06-12-LowerSwitchCrash.ll
@@ -0,0 +1,10 @@ +; RUN: llc < %s -O0 + +define float @test(i32 %tmp12771278) { + switch i32 %tmp12771278, label %bb1279 [ + ] + +bb1279: ; preds = %0 + ret float 1.000000e+00 +} +
diff --git a/src/LLVM/test/CodeGen/Generic/2006-06-13-ComputeMaskedBitsCrash.ll b/src/LLVM/test/CodeGen/Generic/2006-06-13-ComputeMaskedBitsCrash.ll new file mode 100644 index 0000000..b8efadf --- /dev/null +++ b/src/LLVM/test/CodeGen/Generic/2006-06-13-ComputeMaskedBitsCrash.ll
@@ -0,0 +1,35 @@ +; RUN: llc < %s -O0 + +%struct.cl_perfunc_opts = type { i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i32, i32, i32, i32, i32, i32, i32 } +@cl_pf_opts = external global %struct.cl_perfunc_opts ; <%struct.cl_perfunc_opts*> [#uses=2] + +define void @set_flags_from_O() { +entry: + %tmp22 = icmp sgt i32 0, 0 ; <i1> [#uses=1] + br i1 %tmp22, label %cond_true23, label %cond_next159 + +cond_true23: ; preds = %entry + %tmp138 = getelementptr %struct.cl_perfunc_opts* @cl_pf_opts, i32 0, i32 8 ; <i8*> [#uses=1] + %tmp138.upgrd.1 = bitcast i8* %tmp138 to i32* ; <i32*> [#uses=2] + %tmp139 = load i32* %tmp138.upgrd.1 ; <i32> [#uses=1] + %tmp140 = shl i32 1, 27 ; <i32> [#uses=1] + %tmp141 = and i32 %tmp140, 134217728 ; <i32> [#uses=1] + %tmp142 = and i32 %tmp139, -134217729 ; <i32> [#uses=1] + %tmp143 = or i32 %tmp142, %tmp141 ; <i32> [#uses=1] + store i32 %tmp143, i32* %tmp138.upgrd.1 + %tmp144 = getelementptr %struct.cl_perfunc_opts* @cl_pf_opts, i32 0, i32 8 ; <i8*> [#uses=1] + %tmp144.upgrd.2 = bitcast i8* %tmp144 to i32* ; <i32*> [#uses=1] + %tmp145 = load i32* %tmp144.upgrd.2 ; <i32> [#uses=1] + %tmp146 = shl i32 %tmp145, 22 ; <i32> [#uses=1] + %tmp147 = lshr i32 %tmp146, 31 ; <i32> [#uses=1] + %tmp147.upgrd.3 = trunc i32 %tmp147 to i8 ; <i8> [#uses=1] + %tmp148 = icmp eq i8 %tmp147.upgrd.3, 0 ; <i1> [#uses=1] + br i1 %tmp148, label %cond_true149, label %cond_next159 + +cond_true149: ; preds = %cond_true23 + %tmp150 = bitcast i8* null to i32* ; <i32*> [#uses=0] + ret void + +cond_next159: ; preds = %cond_true23, %entry + ret void +}
diff --git a/src/LLVM/test/CodeGen/Generic/2006-06-28-SimplifySetCCCrash.ll b/src/LLVM/test/CodeGen/Generic/2006-06-28-SimplifySetCCCrash.ll new file mode 100644 index 0000000..30b3e14 --- /dev/null +++ b/src/LLVM/test/CodeGen/Generic/2006-06-28-SimplifySetCCCrash.ll
@@ -0,0 +1,279 @@ +; RUN: llc < %s +%struct.rtunion = type { i64 } + %struct.rtx_def = type { i16, i8, i8, [1 x %struct.rtunion] } +@ix86_cpu = external global i32 ; <i32*> [#uses=1] +@which_alternative = external global i32 ; <i32*> [#uses=3] + +declare fastcc i32 @recog() + +define void @athlon_fp_unit_ready_cost() { +entry: + %tmp = icmp slt i32 0, 0 ; <i1> [#uses=1] + br i1 %tmp, label %cond_true.i, label %cond_true + +cond_true: ; preds = %entry + ret void + +cond_true.i: ; preds = %entry + %tmp8.i = tail call fastcc i32 @recog( ) ; <i32> [#uses=1] + switch i32 %tmp8.i, label %UnifiedReturnBlock [ + i32 -1, label %bb2063 + i32 19, label %bb2035 + i32 20, label %bb2035 + i32 21, label %bb2035 + i32 23, label %bb2035 + i32 24, label %bb2035 + i32 27, label %bb2035 + i32 32, label %bb2035 + i32 33, label %bb1994 + i32 35, label %bb2035 + i32 36, label %bb1994 + i32 90, label %bb1948 + i32 94, label %bb1948 + i32 95, label %bb1948 + i32 101, label %bb1648 + i32 102, label %bb1648 + i32 103, label %bb1648 + i32 104, label %bb1648 + i32 133, label %bb1419 + i32 135, label %bb1238 + i32 136, label %bb1238 + i32 137, label %bb1238 + i32 138, label %bb1238 + i32 139, label %bb1201 + i32 140, label %bb1201 + i32 141, label %bb1154 + i32 142, label %bb1126 + i32 144, label %bb1201 + i32 145, label %bb1126 + i32 146, label %bb1201 + i32 147, label %bb1126 + i32 148, label %bb1201 + i32 149, label %bb1126 + i32 150, label %bb1201 + i32 151, label %bb1126 + i32 152, label %bb1096 + i32 153, label %bb1096 + i32 154, label %bb1096 + i32 157, label %bb1096 + i32 158, label %bb1096 + i32 159, label %bb1096 + i32 162, label %bb1096 + i32 163, label %bb1096 + i32 164, label %bb1096 + i32 167, label %bb1201 + i32 168, label %bb1201 + i32 170, label %bb1201 + i32 171, label %bb1201 + i32 173, label %bb1201 + i32 174, label %bb1201 + i32 176, label %bb1201 + i32 177, label %bb1201 + i32 179, label %bb993 + i32 180, label %bb993 + i32 181, label %bb993 + i32 182, label %bb993 + i32 183, label %bb993 + i32 184, label %bb993 + i32 365, label %bb1126 + i32 366, label %bb1126 + i32 367, label %bb1126 + i32 368, label %bb1126 + i32 369, label %bb1126 + i32 370, label %bb1126 + i32 371, label %bb1126 + i32 372, label %bb1126 + i32 373, label %bb1126 + i32 384, label %bb1126 + i32 385, label %bb1126 + i32 386, label %bb1126 + i32 387, label %bb1126 + i32 388, label %bb1126 + i32 389, label %bb1126 + i32 390, label %bb1126 + i32 391, label %bb1126 + i32 392, label %bb1126 + i32 525, label %bb919 + i32 526, label %bb839 + i32 528, label %bb919 + i32 529, label %bb839 + i32 531, label %cond_next6.i119 + i32 532, label %cond_next6.i97 + i32 533, label %cond_next6.i81 + i32 534, label %bb495 + i32 536, label %cond_next6.i81 + i32 537, label %cond_next6.i81 + i32 538, label %bb396 + i32 539, label %bb288 + i32 541, label %bb396 + i32 542, label %bb396 + i32 543, label %bb396 + i32 544, label %bb396 + i32 545, label %bb189 + i32 546, label %cond_next6.i + i32 547, label %bb189 + i32 548, label %cond_next6.i + i32 549, label %bb189 + i32 550, label %cond_next6.i + i32 551, label %bb189 + i32 552, label %cond_next6.i + i32 553, label %bb189 + i32 554, label %cond_next6.i + i32 555, label %bb189 + i32 556, label %cond_next6.i + i32 557, label %bb189 + i32 558, label %cond_next6.i + i32 618, label %bb40 + i32 619, label %bb18 + i32 620, label %bb40 + i32 621, label %bb10 + i32 622, label %bb10 + ] + +bb10: ; preds = %cond_true.i, %cond_true.i + ret void + +bb18: ; preds = %cond_true.i + ret void + +bb40: ; preds = %cond_true.i, %cond_true.i + ret void + +cond_next6.i: ; preds = %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i + ret void + +bb189: ; preds = %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i + ret void + +bb288: ; preds = %cond_true.i + ret void + +bb396: ; preds = %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i + ret void + +bb495: ; preds = %cond_true.i + ret void + +cond_next6.i81: ; preds = %cond_true.i, %cond_true.i, %cond_true.i + ret void + +cond_next6.i97: ; preds = %cond_true.i + ret void + +cond_next6.i119: ; preds = %cond_true.i + %tmp.i126 = icmp eq i16 0, 78 ; <i1> [#uses=1] + br i1 %tmp.i126, label %cond_next778, label %bb802 + +cond_next778: ; preds = %cond_next6.i119 + %tmp781 = icmp eq i32 0, 1 ; <i1> [#uses=1] + br i1 %tmp781, label %cond_next784, label %bb790 + +cond_next784: ; preds = %cond_next778 + %tmp785 = load i32* @ix86_cpu ; <i32> [#uses=1] + %tmp786 = icmp eq i32 %tmp785, 5 ; <i1> [#uses=1] + br i1 %tmp786, label %UnifiedReturnBlock, label %bb790 + +bb790: ; preds = %cond_next784, %cond_next778 + %tmp793 = icmp eq i32 0, 1 ; <i1> [#uses=0] + ret void + +bb802: ; preds = %cond_next6.i119 + ret void + +bb839: ; preds = %cond_true.i, %cond_true.i + ret void + +bb919: ; preds = %cond_true.i, %cond_true.i + ret void + +bb993: ; preds = %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i + ret void + +bb1096: ; preds = %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i + ret void + +bb1126: ; preds = %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i + ret void + +bb1154: ; preds = %cond_true.i + ret void + +bb1201: ; preds = %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i + ret void + +bb1238: ; preds = %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i + ret void + +bb1419: ; preds = %cond_true.i + ret void + +bb1648: ; preds = %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i + %tmp1650 = load i32* @which_alternative ; <i32> [#uses=1] + switch i32 %tmp1650, label %bb1701 [ + i32 0, label %cond_next1675 + i32 1, label %cond_next1675 + i32 2, label %cond_next1675 + ] + +cond_next1675: ; preds = %bb1648, %bb1648, %bb1648 + ret void + +bb1701: ; preds = %bb1648 + %tmp1702 = load i32* @which_alternative ; <i32> [#uses=1] + switch i32 %tmp1702, label %bb1808 [ + i32 0, label %cond_next1727 + i32 1, label %cond_next1727 + i32 2, label %cond_next1727 + ] + +cond_next1727: ; preds = %bb1701, %bb1701, %bb1701 + ret void + +bb1808: ; preds = %bb1701 + %bothcond696 = or i1 false, false ; <i1> [#uses=1] + br i1 %bothcond696, label %bb1876, label %cond_next1834 + +cond_next1834: ; preds = %bb1808 + ret void + +bb1876: ; preds = %bb1808 + %tmp1877signed = load i32* @which_alternative ; <i32> [#uses=4] + %tmp1877 = bitcast i32 %tmp1877signed to i32 ; <i32> [#uses=1] + %bothcond699 = icmp ult i32 %tmp1877, 2 ; <i1> [#uses=1] + %tmp1888 = icmp eq i32 %tmp1877signed, 2 ; <i1> [#uses=1] + %bothcond700 = or i1 %bothcond699, %tmp1888 ; <i1> [#uses=1] + %bothcond700.not = xor i1 %bothcond700, true ; <i1> [#uses=1] + %tmp1894 = icmp eq i32 %tmp1877signed, 3 ; <i1> [#uses=1] + %bothcond701 = or i1 %tmp1894, %bothcond700.not ; <i1> [#uses=1] + %bothcond702 = or i1 %bothcond701, false ; <i1> [#uses=1] + br i1 %bothcond702, label %UnifiedReturnBlock, label %cond_next1902 + +cond_next1902: ; preds = %bb1876 + switch i32 %tmp1877signed, label %cond_next1937 [ + i32 0, label %bb1918 + i32 1, label %bb1918 + i32 2, label %bb1918 + ] + +bb1918: ; preds = %cond_next1902, %cond_next1902, %cond_next1902 + ret void + +cond_next1937: ; preds = %cond_next1902 + ret void + +bb1948: ; preds = %cond_true.i, %cond_true.i, %cond_true.i + ret void + +bb1994: ; preds = %cond_true.i, %cond_true.i + ret void + +bb2035: ; preds = %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i + ret void + +bb2063: ; preds = %cond_true.i + ret void + +UnifiedReturnBlock: ; preds = %bb1876, %cond_next784, %cond_true.i + %UnifiedRetVal = phi i32 [ 100, %bb1876 ], [ 100, %cond_true.i ], [ 4, %cond_next784 ] ; <i32> [#uses=0] + ret void +}
diff --git a/src/LLVM/test/CodeGen/Generic/2006-07-03-schedulers.ll b/src/LLVM/test/CodeGen/Generic/2006-07-03-schedulers.ll new file mode 100644 index 0000000..8b5aa43 --- /dev/null +++ b/src/LLVM/test/CodeGen/Generic/2006-07-03-schedulers.ll
@@ -0,0 +1,32 @@ +; RUN: llc < %s -pre-RA-sched=default +; RUN: llc < %s -pre-RA-sched=list-burr +; RUN: llc < %s -pre-RA-sched=fast +; PR859 + +; The top-down schedulers are excluded here because they don't yet support +; targets that use physreg defs. + +declare i32 @printf(i8*, i32, float) + +define i32 @testissue(i32 %i, float %x, float %y) { + br label %bb1 + +bb1: ; preds = %bb1, %0 + %x1 = fmul float %x, %y ; <float> [#uses=1] + %y1 = fmul float %y, 7.500000e-01 ; <float> [#uses=1] + %z1 = fadd float %x1, %y1 ; <float> [#uses=1] + %x2 = fmul float %x, 5.000000e-01 ; <float> [#uses=1] + %y2 = fmul float %y, 0x3FECCCCCC0000000 ; <float> [#uses=1] + %z2 = fadd float %x2, %y2 ; <float> [#uses=1] + %z3 = fadd float %z1, %z2 ; <float> [#uses=1] + %i1 = shl i32 %i, 3 ; <i32> [#uses=1] + %j1 = add i32 %i, 7 ; <i32> [#uses=1] + %m1 = add i32 %i1, %j1 ; <i32> [#uses=2] + %b = icmp sle i32 %m1, 6 ; <i1> [#uses=1] + br i1 %b, label %bb1, label %bb2 + +bb2: ; preds = %bb1 + %Msg = inttoptr i64 0 to i8* ; <i8*> [#uses=1] + call i32 @printf( i8* %Msg, i32 %m1, float %z3 ) ; <i32>:1 [#uses=0] + ret i32 0 +}
diff --git a/src/LLVM/test/CodeGen/Generic/2006-08-30-CoalescerCrash.ll b/src/LLVM/test/CodeGen/Generic/2006-08-30-CoalescerCrash.ll new file mode 100644 index 0000000..a80b5b5 --- /dev/null +++ b/src/LLVM/test/CodeGen/Generic/2006-08-30-CoalescerCrash.ll
@@ -0,0 +1,112 @@ +; RUN: llc < %s +%struct.CUMULATIVE_ARGS = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32 } + %struct.VEC_edge = type { i32, i32, [1 x %struct.edge_def*] } + %struct._obstack_chunk = type { i8*, %struct._obstack_chunk*, [4 x i8] } + %struct.basic_block_def = type { %struct.rtx_def*, %struct.rtx_def*, %struct.tree_node*, %struct.VEC_edge*, %struct.VEC_edge*, %struct.bitmap_head_def*, %struct.bitmap_head_def*, i8*, %struct.loop*, [2 x %struct.et_node*], %struct.basic_block_def*, %struct.basic_block_def*, %struct.reorder_block_def*, %struct.bb_ann_d*, i64, i32, i32, i32, i32 } + %struct.bb_ann_d = type { %struct.tree_node*, i8, %struct.edge_prediction* } + %struct.bitmap_element_def = type { %struct.bitmap_element_def*, %struct.bitmap_element_def*, i32, [4 x i32] } + %struct.bitmap_head_def = type { %struct.bitmap_element_def*, %struct.bitmap_element_def*, i32, %struct.bitmap_obstack* } + %struct.bitmap_obstack = type { %struct.bitmap_element_def*, %struct.bitmap_head_def*, %struct.obstack } + %struct.cost_pair = type { %struct.iv_cand*, i32, %struct.bitmap_head_def* } + %struct.dataflow_d = type { %struct.varray_head_tag*, [2 x %struct.tree_node*] } + %struct.def_operand_ptr = type { %struct.tree_node** } + %struct.def_optype_d = type { i32, [1 x %struct.def_operand_ptr] } + %struct.edge_def = type { %struct.basic_block_def*, %struct.basic_block_def*, %struct.edge_def_insns, i8*, %struct.location_t*, i32, i32, i64, i32 } + %struct.edge_def_insns = type { %struct.rtx_def* } + %struct.edge_prediction = type { %struct.edge_prediction*, %struct.edge_def*, i32, i32 } + %struct.eh_status = type opaque + %struct.emit_status = type { i32, i32, %struct.rtx_def*, %struct.rtx_def*, %struct.sequence_stack*, i32, %struct.location_t, i32, i8*, %struct.rtx_def** } + %struct.et_node = type opaque + %struct.expr_status = type { i32, i32, i32, %struct.rtx_def*, %struct.rtx_def*, %struct.rtx_def* } + %struct.function = type { %struct.eh_status*, %struct.expr_status*, %struct.emit_status*, %struct.varasm_status*, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, %struct.function*, i32, i32, i32, i32, %struct.rtx_def*, %struct.CUMULATIVE_ARGS, %struct.rtx_def*, %struct.rtx_def*, %struct.initial_value_struct*, %struct.rtx_def*, %struct.rtx_def*, %struct.rtx_def*, %struct.rtx_def*, %struct.rtx_def*, %struct.rtx_def*, i8, i32, i64, %struct.tree_node*, %struct.tree_node*, %struct.rtx_def*, %struct.varray_head_tag*, %struct.temp_slot*, i32, %struct.var_refs_queue*, i32, i32, %struct.rtvec_def*, %struct.tree_node*, i32, i32, i32, %struct.machine_function*, i32, i32, i1, i1, %struct.language_function*, %struct.rtx_def*, i32, i32, i32, i32, %struct.location_t, %struct.varray_head_tag*, %struct.tree_node*, i8, i8, i8 } + %struct.htab = type { i32 (i8*)*, i32 (i8*, i8*)*, void (i8*)*, i8**, i32, i32, i32, i32, i32, i8* (i32, i32)*, void (i8*)*, i8*, i8* (i8*, i32, i32)*, void (i8*, i8*)*, i32 } + %struct.initial_value_struct = type opaque + %struct.iv = type { %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, i1, i1, i32 } + %struct.iv_cand = type { i32, i1, i32, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, %struct.iv*, i32 } + %struct.iv_use = type { i32, i32, %struct.iv*, %struct.tree_node*, %struct.tree_node**, %struct.bitmap_head_def*, i32, %struct.cost_pair*, %struct.iv_cand* } + %struct.ivopts_data = type { %struct.loop*, %struct.htab*, i32, %struct.version_info*, %struct.bitmap_head_def*, i32, %struct.varray_head_tag*, %struct.varray_head_tag*, %struct.bitmap_head_def*, i1 } + %struct.lang_decl = type opaque + %struct.language_function = type opaque + %struct.location_t = type { i8*, i32 } + %struct.loop = type { i32, %struct.basic_block_def*, %struct.basic_block_def*, %struct.basic_block_def*, %struct.lpt_decision, i32, i32, %struct.edge_def**, i32, %struct.basic_block_def*, %struct.basic_block_def*, i32, %struct.edge_def**, i32, %struct.edge_def**, i32, %struct.simple_bitmap_def*, i32, %struct.loop**, i32, %struct.loop*, %struct.loop*, %struct.loop*, %struct.loop*, i32, i8*, %struct.rtx_def*, %struct.rtx_def*, %struct.rtx_def*, %struct.rtx_def*, %struct.rtx_def*, %struct.rtx_def*, i32, %struct.tree_node*, %struct.tree_node*, %struct.nb_iter_bound*, %struct.edge_def*, i1 } + %struct.lpt_decision = type { i32, i32 } + %struct.machine_function = type { %struct.stack_local_entry*, i8*, %struct.rtx_def*, i32, i32, i32, i32, i32 } + %struct.nb_iter_bound = type { %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, %struct.nb_iter_bound* } + %struct.obstack = type { i32, %struct._obstack_chunk*, i8*, i8*, i8*, i32, i32, %struct._obstack_chunk* (i8*, i32)*, void (i8*, %struct._obstack_chunk*)*, i8*, i8 } + %struct.reorder_block_def = type { %struct.rtx_def*, %struct.rtx_def*, %struct.basic_block_def*, %struct.basic_block_def*, %struct.basic_block_def*, i32, i32, i32 } + %struct.rtvec_def = type { i32, [1 x %struct.rtx_def*] } + %struct.rtx_def = type { i16, i8, i8, %struct.u } + %struct.sequence_stack = type { %struct.rtx_def*, %struct.rtx_def*, %struct.sequence_stack* } + %struct.simple_bitmap_def = type { i32, i32, i32, [1 x i64] } + %struct.stack_local_entry = type opaque + %struct.stmt_ann_d = type { %struct.tree_ann_common_d, i8, %struct.basic_block_def*, %struct.stmt_operands_d, %struct.dataflow_d*, %struct.bitmap_head_def*, i32 } + %struct.stmt_operands_d = type { %struct.def_optype_d*, %struct.def_optype_d*, %struct.v_may_def_optype_d*, %struct.vuse_optype_d*, %struct.v_may_def_optype_d* } + %struct.temp_slot = type opaque + %struct.tree_ann_common_d = type { i32, i8*, %struct.tree_node* } + %struct.tree_ann_d = type { %struct.stmt_ann_d } + %struct.tree_common = type { %struct.tree_node*, %struct.tree_node*, %struct.tree_ann_d*, i8, i8, i8, i8, i8 } + %struct.tree_decl = type { %struct.tree_common, %struct.location_t, i32, %struct.tree_node*, i8, i8, i8, i8, i8, i8, i8, i32, %struct.tree_decl_u1, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, %struct.rtx_def*, i32, %struct.tree_decl_u2, %struct.tree_node*, %struct.tree_node*, i64, %struct.lang_decl* } + %struct.tree_decl_u1 = type { i64 } + %struct.tree_decl_u2 = type { %struct.function* } + %struct.tree_node = type { %struct.tree_decl } + %struct.u = type { [1 x i64] } + %struct.v_def_use_operand_type_t = type { %struct.tree_node*, %struct.tree_node* } + %struct.v_may_def_optype_d = type { i32, [1 x %struct.v_def_use_operand_type_t] } + %struct.var_refs_queue = type { %struct.rtx_def*, i32, i32, %struct.var_refs_queue* } + %struct.varasm_status = type opaque + %struct.varray_head_tag = type { i32, i32, i32, i8*, %struct.u } + %struct.version_info = type { %struct.tree_node*, %struct.iv*, i1, i32, i1 } + %struct.vuse_optype_d = type { i32, [1 x %struct.tree_node*] } + +define i1 @determine_use_iv_cost(%struct.ivopts_data* %data, %struct.iv_use* %use, %struct.iv_cand* %cand) { +entry: + switch i32 0, label %bb91 [ + i32 0, label %bb + i32 1, label %bb6 + i32 3, label %cond_next135 + ] + +bb: ; preds = %entry + ret i1 false + +bb6: ; preds = %entry + br i1 false, label %bb87, label %cond_next27 + +cond_next27: ; preds = %bb6 + br i1 false, label %cond_true30, label %cond_next55 + +cond_true30: ; preds = %cond_next27 + br i1 false, label %cond_next41, label %cond_true35 + +cond_true35: ; preds = %cond_true30 + ret i1 false + +cond_next41: ; preds = %cond_true30 + %tmp44 = call i32 @force_var_cost( %struct.ivopts_data* %data, %struct.tree_node* null, %struct.bitmap_head_def** null ) ; <i32> [#uses=2] + %tmp46 = udiv i32 %tmp44, 5 ; <i32> [#uses=1] + call void @set_use_iv_cost( %struct.ivopts_data* %data, %struct.iv_use* %use, %struct.iv_cand* %cand, i32 %tmp46, %struct.bitmap_head_def* null ) + %tmp44.off = add i32 %tmp44, -50000000 ; <i32> [#uses=1] + %tmp52 = icmp ugt i32 %tmp44.off, 4 ; <i1> [#uses=1] + %tmp52.upgrd.1 = zext i1 %tmp52 to i32 ; <i32> [#uses=1] + br label %bb87 + +cond_next55: ; preds = %cond_next27 + ret i1 false + +bb87: ; preds = %cond_next41, %bb6 + %tmp2.0 = phi i32 [ %tmp52.upgrd.1, %cond_next41 ], [ 1, %bb6 ] ; <i32> [#uses=0] + ret i1 false + +bb91: ; preds = %entry + ret i1 false + +cond_next135: ; preds = %entry + %tmp193 = call i1 @determine_use_iv_cost_generic( %struct.ivopts_data* %data, %struct.iv_use* %use, %struct.iv_cand* %cand ) ; <i1> [#uses=0] + ret i1 false +} + +declare void @set_use_iv_cost(%struct.ivopts_data*, %struct.iv_use*, %struct.iv_cand*, i32, %struct.bitmap_head_def*) + +declare i32 @force_var_cost(%struct.ivopts_data*, %struct.tree_node*, %struct.bitmap_head_def**) + +declare i1 @determine_use_iv_cost_generic(%struct.ivopts_data*, %struct.iv_use*, %struct.iv_cand*)
diff --git a/src/LLVM/test/CodeGen/Generic/2006-09-02-LocalAllocCrash.ll b/src/LLVM/test/CodeGen/Generic/2006-09-02-LocalAllocCrash.ll new file mode 100644 index 0000000..13c0628 --- /dev/null +++ b/src/LLVM/test/CodeGen/Generic/2006-09-02-LocalAllocCrash.ll
@@ -0,0 +1,117 @@ +; RUN: llc < %s -regalloc=fast + +%struct.CHESS_POSITION = type { i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i32, i32, i8, i8, [64 x i8], i8, i8, i8, i8, i8 } +@search = external global %struct.CHESS_POSITION ; <%struct.CHESS_POSITION*> [#uses=2] +@bishop_shift_rl45 = external global [64 x i32] ; <[64 x i32]*> [#uses=1] +@bishop_shift_rr45 = external global [64 x i32] ; <[64 x i32]*> [#uses=1] +@black_outpost = external global [64 x i8] ; <[64 x i8]*> [#uses=1] +@bishop_mobility_rl45 = external global [64 x [256 x i32]] ; <[64 x [256 x i32]]*> [#uses=1] +@bishop_mobility_rr45 = external global [64 x [256 x i32]] ; <[64 x [256 x i32]]*> [#uses=1] + +declare fastcc i32 @FirstOne() + +define fastcc void @Evaluate() { +entry: + br i1 false, label %cond_false186, label %cond_true + +cond_true: ; preds = %entry + ret void + +cond_false186: ; preds = %entry + br i1 false, label %cond_true293, label %bb203 + +bb203: ; preds = %cond_false186 + ret void + +cond_true293: ; preds = %cond_false186 + br i1 false, label %cond_true298, label %cond_next317 + +cond_true298: ; preds = %cond_true293 + br i1 false, label %cond_next518, label %cond_true397.preheader + +cond_next317: ; preds = %cond_true293 + ret void + +cond_true397.preheader: ; preds = %cond_true298 + ret void + +cond_next518: ; preds = %cond_true298 + br i1 false, label %bb1069, label %cond_true522 + +cond_true522: ; preds = %cond_next518 + ret void + +bb1069: ; preds = %cond_next518 + br i1 false, label %cond_next1131, label %bb1096 + +bb1096: ; preds = %bb1069 + ret void + +cond_next1131: ; preds = %bb1069 + br i1 false, label %cond_next1207, label %cond_true1150 + +cond_true1150: ; preds = %cond_next1131 + ret void + +cond_next1207: ; preds = %cond_next1131 + br i1 false, label %cond_next1219, label %cond_true1211 + +cond_true1211: ; preds = %cond_next1207 + ret void + +cond_next1219: ; preds = %cond_next1207 + br i1 false, label %cond_true1223, label %cond_next1283 + +cond_true1223: ; preds = %cond_next1219 + br i1 false, label %cond_true1254, label %cond_true1264 + +cond_true1254: ; preds = %cond_true1223 + br i1 false, label %bb1567, label %cond_true1369.preheader + +cond_true1264: ; preds = %cond_true1223 + ret void + +cond_next1283: ; preds = %cond_next1219 + ret void + +cond_true1369.preheader: ; preds = %cond_true1254 + ret void + +bb1567: ; preds = %cond_true1254 + %tmp1580 = load i64* getelementptr (%struct.CHESS_POSITION* @search, i32 0, i32 3) ; <i64> [#uses=1] + %tmp1591 = load i64* getelementptr (%struct.CHESS_POSITION* @search, i32 0, i32 4) ; <i64> [#uses=1] + %tmp1572 = tail call fastcc i32 @FirstOne( ) ; <i32> [#uses=5] + %tmp1582 = getelementptr [64 x i32]* @bishop_shift_rl45, i32 0, i32 %tmp1572 ; <i32*> [#uses=1] + %tmp1583 = load i32* %tmp1582 ; <i32> [#uses=1] + %tmp1583.upgrd.1 = trunc i32 %tmp1583 to i8 ; <i8> [#uses=1] + %shift.upgrd.2 = zext i8 %tmp1583.upgrd.1 to i64 ; <i64> [#uses=1] + %tmp1584 = lshr i64 %tmp1580, %shift.upgrd.2 ; <i64> [#uses=1] + %tmp1584.upgrd.3 = trunc i64 %tmp1584 to i32 ; <i32> [#uses=1] + %tmp1585 = and i32 %tmp1584.upgrd.3, 255 ; <i32> [#uses=1] + %gep.upgrd.4 = zext i32 %tmp1585 to i64 ; <i64> [#uses=1] + %tmp1587 = getelementptr [64 x [256 x i32]]* @bishop_mobility_rl45, i32 0, i32 %tmp1572, i64 %gep.upgrd.4 ; <i32*> [#uses=1] + %tmp1588 = load i32* %tmp1587 ; <i32> [#uses=1] + %tmp1593 = getelementptr [64 x i32]* @bishop_shift_rr45, i32 0, i32 %tmp1572 ; <i32*> [#uses=1] + %tmp1594 = load i32* %tmp1593 ; <i32> [#uses=1] + %tmp1594.upgrd.5 = trunc i32 %tmp1594 to i8 ; <i8> [#uses=1] + %shift.upgrd.6 = zext i8 %tmp1594.upgrd.5 to i64 ; <i64> [#uses=1] + %tmp1595 = lshr i64 %tmp1591, %shift.upgrd.6 ; <i64> [#uses=1] + %tmp1595.upgrd.7 = trunc i64 %tmp1595 to i32 ; <i32> [#uses=1] + %tmp1596 = and i32 %tmp1595.upgrd.7, 255 ; <i32> [#uses=1] + %gep.upgrd.8 = zext i32 %tmp1596 to i64 ; <i64> [#uses=1] + %tmp1598 = getelementptr [64 x [256 x i32]]* @bishop_mobility_rr45, i32 0, i32 %tmp1572, i64 %gep.upgrd.8 ; <i32*> [#uses=1] + %tmp1599 = load i32* %tmp1598 ; <i32> [#uses=1] + %tmp1600.neg = sub i32 0, %tmp1588 ; <i32> [#uses=1] + %tmp1602 = sub i32 %tmp1600.neg, %tmp1599 ; <i32> [#uses=1] + %tmp1604 = getelementptr [64 x i8]* @black_outpost, i32 0, i32 %tmp1572 ; <i8*> [#uses=1] + %tmp1605 = load i8* %tmp1604 ; <i8> [#uses=1] + %tmp1606 = icmp eq i8 %tmp1605, 0 ; <i1> [#uses=1] + br i1 %tmp1606, label %cond_next1637, label %cond_true1607 + +cond_true1607: ; preds = %bb1567 + ret void + +cond_next1637: ; preds = %bb1567 + %tmp1662 = sub i32 %tmp1602, 0 ; <i32> [#uses=0] + ret void +}
diff --git a/src/LLVM/test/CodeGen/Generic/2006-09-06-SwitchLowering.ll b/src/LLVM/test/CodeGen/Generic/2006-09-06-SwitchLowering.ll new file mode 100644 index 0000000..50a7fd0 --- /dev/null +++ b/src/LLVM/test/CodeGen/Generic/2006-09-06-SwitchLowering.ll
@@ -0,0 +1,96 @@ +; RUN: llc < %s + +define void @foo() { + br label %cond_true813.i + +cond_true813.i: ; preds = %0 + br i1 false, label %cond_true818.i, label %cond_next1146.i + +cond_true818.i: ; preds = %cond_true813.i + br i1 false, label %recog_memoized.exit52, label %cond_next1146.i + +recog_memoized.exit52: ; preds = %cond_true818.i + switch i32 0, label %bb886.i.preheader [ + i32 0, label %bb907.i + i32 44, label %bb866.i + i32 103, label %bb874.i + i32 114, label %bb874.i + ] + +bb857.i: ; preds = %bb886.i, %bb866.i + %tmp862.i494.24 = phi i8* [ null, %bb866.i ], [ %tmp862.i494.26, %bb886.i ] ; <i8*> [#uses=4] + switch i32 0, label %bb886.i.preheader [ + i32 0, label %bb907.i + i32 44, label %bb866.i + i32 103, label %bb874.i + i32 114, label %bb874.i + ] + +bb866.i.loopexit: ; preds = %bb874.i + br label %bb866.i + +bb866.i.loopexit31: ; preds = %cond_true903.i + br label %bb866.i + +bb866.i: ; preds = %bb866.i.loopexit31, %bb866.i.loopexit, %bb857.i, %recog_memoized.exit52 + br i1 false, label %bb907.i, label %bb857.i + +bb874.i.preheader.loopexit: ; preds = %cond_true903.i, %cond_true903.i + ret void + +bb874.i: ; preds = %bb857.i, %bb857.i, %recog_memoized.exit52, %recog_memoized.exit52 + %tmp862.i494.25 = phi i8* [ %tmp862.i494.24, %bb857.i ], [ %tmp862.i494.24, %bb857.i ], [ undef, %recog_memoized.exit52 ], [ undef, %recog_memoized.exit52 ] ; <i8*> [#uses=1] + switch i32 0, label %bb886.i.preheader.loopexit [ + i32 0, label %bb907.i + i32 44, label %bb866.i.loopexit + i32 103, label %bb874.i.backedge + i32 114, label %bb874.i.backedge + ] + +bb874.i.backedge: ; preds = %bb874.i, %bb874.i + ret void + +bb886.i.preheader.loopexit: ; preds = %bb874.i + ret void + +bb886.i.preheader: ; preds = %bb857.i, %recog_memoized.exit52 + %tmp862.i494.26 = phi i8* [ undef, %recog_memoized.exit52 ], [ %tmp862.i494.24, %bb857.i ] ; <i8*> [#uses=1] + br label %bb886.i + +bb886.i: ; preds = %cond_true903.i, %bb886.i.preheader + br i1 false, label %bb857.i, label %cond_true903.i + +cond_true903.i: ; preds = %bb886.i + switch i32 0, label %bb886.i [ + i32 0, label %bb907.i + i32 44, label %bb866.i.loopexit31 + i32 103, label %bb874.i.preheader.loopexit + i32 114, label %bb874.i.preheader.loopexit + ] + +bb907.i: ; preds = %cond_true903.i, %bb874.i, %bb866.i, %bb857.i, %recog_memoized.exit52 + %tmp862.i494.0 = phi i8* [ %tmp862.i494.24, %bb857.i ], [ null, %bb866.i ], [ undef, %recog_memoized.exit52 ], [ %tmp862.i494.25, %bb874.i ], [ null, %cond_true903.i ] ; <i8*> [#uses=1] + br i1 false, label %cond_next1146.i, label %cond_true910.i + +cond_true910.i: ; preds = %bb907.i + ret void + +cond_next1146.i: ; preds = %bb907.i, %cond_true818.i, %cond_true813.i + %tmp862.i494.1 = phi i8* [ %tmp862.i494.0, %bb907.i ], [ undef, %cond_true818.i ], [ undef, %cond_true813.i ] ; <i8*> [#uses=0] + ret void + +bb2060.i: ; No predecessors! + br i1 false, label %cond_true2064.i, label %bb2067.i + +cond_true2064.i: ; preds = %bb2060.i + unreachable + +bb2067.i: ; preds = %bb2060.i + ret void + +cond_next3473: ; No predecessors! + ret void + +cond_next3521: ; No predecessors! + ret void +}
diff --git a/src/LLVM/test/CodeGen/Generic/2006-10-27-CondFolding.ll b/src/LLVM/test/CodeGen/Generic/2006-10-27-CondFolding.ll new file mode 100644 index 0000000..d467d5b --- /dev/null +++ b/src/LLVM/test/CodeGen/Generic/2006-10-27-CondFolding.ll
@@ -0,0 +1,21 @@ +; RUN: llc < %s + +define void @start_pass_huff(i32 %gather_statistics) { +entry: + %tmp = icmp eq i32 %gather_statistics, 0 ; <i1> [#uses=1] + br i1 false, label %cond_next22, label %bb166 + +cond_next22: ; preds = %entry + %bothcond = and i1 false, %tmp ; <i1> [#uses=1] + br i1 %bothcond, label %bb34, label %bb46 + +bb34: ; preds = %cond_next22 + ret void + +bb46: ; preds = %cond_next22 + ret void + +bb166: ; preds = %entry + ret void +} +
diff --git a/src/LLVM/test/CodeGen/Generic/2006-10-29-Crash.ll b/src/LLVM/test/CodeGen/Generic/2006-10-29-Crash.ll new file mode 100644 index 0000000..d19b1e8 --- /dev/null +++ b/src/LLVM/test/CodeGen/Generic/2006-10-29-Crash.ll
@@ -0,0 +1,22 @@ +; RUN: llc < %s + +define void @form_component_prediction(i32 %dy) { +entry: + %tmp7 = and i32 %dy, 1 ; <i32> [#uses=1] + %tmp27 = icmp eq i32 %tmp7, 0 ; <i1> [#uses=1] + br i1 false, label %cond_next30, label %bb115 + +cond_next30: ; preds = %entry + ret void + +bb115: ; preds = %entry + %bothcond1 = or i1 %tmp27, false ; <i1> [#uses=1] + br i1 %bothcond1, label %bb228, label %cond_next125 + +cond_next125: ; preds = %bb115 + ret void + +bb228: ; preds = %bb115 + ret void +} +
diff --git a/src/LLVM/test/CodeGen/Generic/2006-11-20-DAGCombineCrash.ll b/src/LLVM/test/CodeGen/Generic/2006-11-20-DAGCombineCrash.ll new file mode 100644 index 0000000..9bd3783 --- /dev/null +++ b/src/LLVM/test/CodeGen/Generic/2006-11-20-DAGCombineCrash.ll
@@ -0,0 +1,41 @@ +; RUN: llc < %s +; PR1011 +%struct.mng_data = type { i8* (%struct.mng_data*, i32)*, i32, i32, i32, i8, i8, i32, i32, i32, i32, i32 } + +define void @mng_display_bgr565() { +entry: + br i1 false, label %bb.preheader, label %return + +bb.preheader: ; preds = %entry + br i1 false, label %cond_true48, label %cond_next80 + +cond_true48: ; preds = %bb.preheader + %tmp = load i8* null ; <i8> [#uses=1] + %tmp51 = zext i8 %tmp to i16 ; <i16> [#uses=1] + %tmp99 = load i8* null ; <i8> [#uses=1] + %tmp54 = bitcast i8 %tmp99 to i8 ; <i8> [#uses=1] + %tmp54.upgrd.1 = zext i8 %tmp54 to i32 ; <i32> [#uses=1] + %tmp55 = lshr i32 %tmp54.upgrd.1, 3 ; <i32> [#uses=1] + %tmp55.upgrd.2 = trunc i32 %tmp55 to i16 ; <i16> [#uses=1] + %tmp52 = shl i16 %tmp51, 5 ; <i16> [#uses=1] + %tmp56 = and i16 %tmp55.upgrd.2, 28 ; <i16> [#uses=1] + %tmp57 = or i16 %tmp56, %tmp52 ; <i16> [#uses=1] + %tmp60 = zext i16 %tmp57 to i32 ; <i32> [#uses=1] + %tmp62 = xor i32 0, 65535 ; <i32> [#uses=1] + %tmp63 = mul i32 %tmp60, %tmp62 ; <i32> [#uses=1] + %tmp65 = add i32 0, %tmp63 ; <i32> [#uses=1] + %tmp69 = add i32 0, %tmp65 ; <i32> [#uses=1] + %tmp70 = lshr i32 %tmp69, 16 ; <i32> [#uses=1] + %tmp70.upgrd.3 = trunc i32 %tmp70 to i16 ; <i16> [#uses=1] + %tmp75 = lshr i16 %tmp70.upgrd.3, 8 ; <i16> [#uses=1] + %tmp75.upgrd.4 = trunc i16 %tmp75 to i8 ; <i8> [#uses=1] + %tmp76 = lshr i8 %tmp75.upgrd.4, 5 ; <i8> [#uses=1] + store i8 %tmp76, i8* null + ret void + +cond_next80: ; preds = %bb.preheader + ret void + +return: ; preds = %entry + ret void +}
diff --git a/src/LLVM/test/CodeGen/Generic/2007-01-15-LoadSelectCycle.ll b/src/LLVM/test/CodeGen/Generic/2007-01-15-LoadSelectCycle.ll new file mode 100644 index 0000000..39e8dd5 --- /dev/null +++ b/src/LLVM/test/CodeGen/Generic/2007-01-15-LoadSelectCycle.ll
@@ -0,0 +1,12 @@ +; RUN: llc < %s +; PR1114 + +declare i1 @foo() + +define i32 @test(i32* %A, i32* %B) { + %a = load i32* %A + %b = load i32* %B + %cond = call i1 @foo() + %c = select i1 %cond, i32 %a, i32 %b + ret i32 %c +}
diff --git a/src/LLVM/test/CodeGen/Generic/2007-02-25-invoke.ll b/src/LLVM/test/CodeGen/Generic/2007-02-25-invoke.ll new file mode 100644 index 0000000..32d2b4d --- /dev/null +++ b/src/LLVM/test/CodeGen/Generic/2007-02-25-invoke.ll
@@ -0,0 +1,16 @@ +; RUN: llc < %s + +; PR1224 + +declare i32 @test() +define i32 @test2() { + %A = invoke i32 @test() to label %invcont unwind label %blat +invcont: + ret i32 %A +blat: + %lpad = landingpad { i8*, i32 } personality i32 (...)* @__gxx_personality_v0 + cleanup + ret i32 0 +} + +declare i32 @__gxx_personality_v0(...)
diff --git a/src/LLVM/test/CodeGen/Generic/2007-04-08-MultipleFrameIndices.ll b/src/LLVM/test/CodeGen/Generic/2007-04-08-MultipleFrameIndices.ll new file mode 100644 index 0000000..e50320d --- /dev/null +++ b/src/LLVM/test/CodeGen/Generic/2007-04-08-MultipleFrameIndices.ll
@@ -0,0 +1,11 @@ +; RUN: llc < %s +; XFAIL: sparc-sun-solaris2 +; PR1308 +; PR1557 + +define i32 @stuff(i32, ...) { + %foo = alloca i8* + %bar = alloca i32* + %A = call i32 asm sideeffect "inline asm $0 $2 $3 $4", "=r,0,i,m,m"( i32 0, i32 1, i8** %foo, i32** %bar ) + ret i32 %A +}
diff --git a/src/LLVM/test/CodeGen/Generic/2007-04-13-SwitchLowerBadPhi.ll b/src/LLVM/test/CodeGen/Generic/2007-04-13-SwitchLowerBadPhi.ll new file mode 100644 index 0000000..50ff36b --- /dev/null +++ b/src/LLVM/test/CodeGen/Generic/2007-04-13-SwitchLowerBadPhi.ll
@@ -0,0 +1,24 @@ +; RUN: llc < %s -O0 +; PR 1323 + + %struct.comp = type { i8*, i32, i8*, [3 x i8], i32 } + +define void @regbranch() { +cond_next240.i: + br i1 false, label %cond_true251.i, label %cond_next272.i + +cond_true251.i: ; preds = %cond_next240.i + switch i8 0, label %cond_next272.i [ + i8 42, label %bb268.i + i8 43, label %bb268.i + i8 63, label %bb268.i + ] + +bb268.i: ; preds = %cond_true251.i, %cond_true251.i, %cond_true251.i + br label %cond_next272.i + +cond_next272.i: ; preds = %bb268.i, %cond_true251.i, %cond_next240.i + %len.2.i = phi i32 [ 0, %bb268.i ], [ 0, %cond_next240.i ], [ 0, %cond_true251.i ] ; <i32> [#uses=1] + %tmp278.i = icmp eq i32 %len.2.i, 1 ; <i1> [#uses=0] + ret void +}
diff --git a/src/LLVM/test/CodeGen/Generic/2007-04-17-lsr-crash.ll b/src/LLVM/test/CodeGen/Generic/2007-04-17-lsr-crash.ll new file mode 100644 index 0000000..b5fbdd6 --- /dev/null +++ b/src/LLVM/test/CodeGen/Generic/2007-04-17-lsr-crash.ll
@@ -0,0 +1,35 @@ +; RUN: llc < %s + +define void @foo(i32 %inTextSize) { +entry: + br label %bb236.outer + +cond_next193: ; preds = %bb236 + %tmp211 = add i32 %inTextSize_addr.1.ph17, -2 ; <i32> [#uses=1] + br i1 false, label %cond_next232, label %cond_true227 + +cond_true227: ; preds = %cond_next193 + ret void + +cond_next232: ; preds = %cond_next193 + %indvar.next49 = add i32 %indvar48, 1 ; <i32> [#uses=1] + br label %bb236.outer + +bb236.outer: ; preds = %cond_next232, %entry + %indvar48 = phi i32 [ %indvar.next49, %cond_next232 ], [ 0, %entry ] ; <i32> [#uses=2] + %inTextSize_addr.1.ph17 = phi i32 [ %tmp211, %cond_next232 ], [ %inTextSize, %entry ] ; <i32> [#uses=3] + %tmp.50 = sub i32 0, %indvar48 ; <i32> [#uses=1] + %tmp219 = icmp eq i32 %tmp.50, 0 ; <i1> [#uses=1] + br i1 %tmp219, label %bb236.us, label %bb236 + +bb236.us: ; preds = %bb236.outer + %inTextSize_addr.1.us = add i32 0, %inTextSize_addr.1.ph17 ; <i32> [#uses=0] + ret void + +bb236: ; preds = %bb236.outer + %tmp238 = icmp eq i32 %inTextSize_addr.1.ph17, 0 ; <i1> [#uses=1] + br i1 %tmp238, label %exit, label %cond_next193 + +exit: ; preds = %bb236 + ret void +}
diff --git a/src/LLVM/test/CodeGen/Generic/2007-04-27-InlineAsm-X-Dest.ll b/src/LLVM/test/CodeGen/Generic/2007-04-27-InlineAsm-X-Dest.ll new file mode 100644 index 0000000..c7dacc4 --- /dev/null +++ b/src/LLVM/test/CodeGen/Generic/2007-04-27-InlineAsm-X-Dest.ll
@@ -0,0 +1,8 @@ +; RUN: llc < %s + +; Test that we can have an "X" output constraint. + +define void @test(i16 * %t) { + call void asm sideeffect "foo $0", "=*X,~{dirflag},~{fpsr},~{flags},~{memory}"( i16* %t ) + ret void +}
diff --git a/src/LLVM/test/CodeGen/Generic/2007-04-27-LargeMemObject.ll b/src/LLVM/test/CodeGen/Generic/2007-04-27-LargeMemObject.ll new file mode 100644 index 0000000..d71671c --- /dev/null +++ b/src/LLVM/test/CodeGen/Generic/2007-04-27-LargeMemObject.ll
@@ -0,0 +1,13 @@ +; RUN: llc < %s + + %struct..0anon = type { [100 x i32] } + +define void @test() { +entry: + %currfpu = alloca %struct..0anon, align 16 ; <%struct..0anon*> [#uses=2] + %mxcsr = alloca %struct..0anon, align 16 ; <%struct..0anon*> [#uses=1] + call void asm sideeffect "fnstenv $0", "=*m,~{dirflag},~{fpsr},~{flags}"( %struct..0anon* %currfpu ) + call void asm sideeffect "$0 $1", "=*m,*m,~{dirflag},~{fpsr},~{flags}"( %struct..0anon* %mxcsr, %struct..0anon* %currfpu ) + ret void +} +
diff --git a/src/LLVM/test/CodeGen/Generic/2007-04-30-LandingPadBranchFolding.ll b/src/LLVM/test/CodeGen/Generic/2007-04-30-LandingPadBranchFolding.ll new file mode 100644 index 0000000..2b0a25c --- /dev/null +++ b/src/LLVM/test/CodeGen/Generic/2007-04-30-LandingPadBranchFolding.ll
@@ -0,0 +1,63 @@ +; RUN: llc < %s +; PR1228 + + %"struct.std::basic_string<char,std::char_traits<char>,std::allocator<char> >::_Alloc_hider" = type { i8* } + %"struct.std::locale" = type { %"struct.std::locale::_Impl"* } + %"struct.std::locale::_Impl" = type { i32, %"struct.std::locale::facet"**, i32, %"struct.std::locale::facet"**, i8** } + %"struct.std::locale::facet" = type { i32 (...)**, i32 } + %"struct.std::string" = type { %"struct.std::basic_string<char,std::char_traits<char>,std::allocator<char> >::_Alloc_hider" } + +define void @_ZNKSt6locale4nameEv(%"struct.std::string"* %agg.result) { +entry: + %tmp105 = icmp eq i8* null, null ; <i1> [#uses=1] + br i1 %tmp105, label %cond_true, label %cond_true222 + +cond_true: ; preds = %entry + invoke void @_ZNSs14_M_replace_auxEjjjc( ) + to label %cond_next1328 unwind label %cond_true1402 + +cond_true222: ; preds = %cond_true222, %entry + %tmp207 = call i32 @strcmp( ) ; <i32> [#uses=1] + %tmp208 = icmp eq i32 %tmp207, 0 ; <i1> [#uses=2] + %bothcond1480 = and i1 %tmp208, false ; <i1> [#uses=1] + br i1 %bothcond1480, label %cond_true222, label %cond_next226.loopexit + +cond_next226.loopexit: ; preds = %cond_true222 + %phitmp = xor i1 %tmp208, true ; <i1> [#uses=1] + br i1 %phitmp, label %cond_false280, label %cond_true235 + +cond_true235: ; preds = %cond_next226.loopexit + invoke void @_ZNSs6assignEPKcj( ) + to label %cond_next1328 unwind label %cond_true1402 + +cond_false280: ; preds = %cond_next226.loopexit + invoke void @_ZNSs7reserveEj( ) + to label %invcont282 unwind label %cond_true1402 + +invcont282: ; preds = %cond_false280 + invoke void @_ZNSs6appendEPKcj( ) + to label %invcont317 unwind label %cond_true1402 + +invcont317: ; preds = %invcont282 + ret void + +cond_next1328: ; preds = %cond_true235, %cond_true + ret void + +cond_true1402: ; preds = %invcont282, %cond_false280, %cond_true235, %cond_true + %lpad = landingpad { i8*, i32 } personality i32 (...)* @__gxx_personality_v0 + cleanup + ret void +} + +declare void @_ZNSs14_M_replace_auxEjjjc() + +declare i32 @strcmp() + +declare void @_ZNSs6assignEPKcj() + +declare void @_ZNSs7reserveEj() + +declare void @_ZNSs6appendEPKcj() + +declare i32 @__gxx_personality_v0(...)
diff --git a/src/LLVM/test/CodeGen/Generic/2007-05-03-EHTypeInfo.ll b/src/LLVM/test/CodeGen/Generic/2007-05-03-EHTypeInfo.ll new file mode 100644 index 0000000..2880691 --- /dev/null +++ b/src/LLVM/test/CodeGen/Generic/2007-05-03-EHTypeInfo.ll
@@ -0,0 +1,12 @@ +; RUN: llc < %s + + %struct.exception = type { i8, i8, i32, i8*, i8*, i32, i8* } +@program_error = external global %struct.exception ; <%struct.exception*> [#uses=1] + +define void @typeinfo() { +entry: + %eh_typeid = tail call i32 @llvm.eh.typeid.for.i32( i8* getelementptr (%struct.exception* @program_error, i32 0, i32 0) ) ; <i32> [#uses=0] + ret void +} + +declare i32 @llvm.eh.typeid.for.i32(i8*)
diff --git a/src/LLVM/test/CodeGen/Generic/2007-05-15-InfiniteRecursion.ll b/src/LLVM/test/CodeGen/Generic/2007-05-15-InfiniteRecursion.ll new file mode 100644 index 0000000..ddfa15b --- /dev/null +++ b/src/LLVM/test/CodeGen/Generic/2007-05-15-InfiniteRecursion.ll
@@ -0,0 +1,90 @@ +; RUN: llc < %s + + %struct.AVClass = type { i8*, i8* (i8*)*, %struct.AVOption* } + %struct.AVCodec = type { i8*, i32, i32, i32, i32 (%struct.AVCodecContext*)*, i32 (%struct.AVCodecContext*, i8*, i32, i8*)*, i32 (%struct.AVCodecContext*)*, i32 (%struct.AVCodecContext*, i8*, i32*, i8*, i32)*, i32, %struct.AVCodec*, void (%struct.AVCodecContext*)*, %struct.AVRational*, i32* } + %struct.AVCodecContext = type { %struct.AVClass*, i32, i32, i32, i32, i32, i8*, i32, %struct.AVRational, i32, i32, i32, i32, i32, void (%struct.AVCodecContext*, %struct.AVFrame*, i32*, i32, i32, i32)*, i32, i32, i32, i32, i32, i32, i32, float, float, i32, i32, i32, i32, float, i32, i32, i32, %struct.AVCodec*, i8*, i32, i32, void (%struct.AVCodecContext*, i8*, i32, i32)*, i32, i32, i32, i32, i32, i32, i32, i32, i32, i8*, [32 x i8], i32, i32, i32, i32, i32, i32, i32, float, i32, i32 (%struct.AVCodecContext*, %struct.AVFrame*)*, void (%struct.AVCodecContext*, %struct.AVFrame*)*, i32, i32, i32, i32, i8*, i8*, float, float, i32, %struct.RcOverride*, i32, i8*, i32, i32, i32, float, float, float, float, i32, float, float, float, float, float, i32, i32, i32, i32*, i32, i32, i32, i32, %struct.AVRational, %struct.AVFrame*, i32, i32, [4 x i64], i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32 (%struct.AVCodecContext*, i32*)*, i32, i32, i32, i32, i32, i32, i8*, i32, i32, i32, i32, i32, i32, i16*, i16*, i32, i32, i32, i32, %struct.AVPaletteControl*, i32, i32 (%struct.AVCodecContext*, %struct.AVFrame*)*, i32, i32, i32, i32, i32, i32, i32, i32 (%struct.AVCodecContext*, i32 (%struct.AVCodecContext*, i8*)*, i8**, i32*, i32)*, i8*, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, i32, i32, i32, i32, i32, i32, i32, i32, float, i32, i32, i32, i32, i32, i32, float, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i64 } + %struct.AVEvalExpr = type opaque + %struct.AVFrame = type { [4 x i8*], [4 x i32], [4 x i8*], i32, i32, i64, i32, i32, i32, i32, i32, i8*, i32, i8*, [2 x [2 x i16]*], i32*, i8, i8*, [4 x i64], i32, i32, i32, i32, i32, %struct.AVPanScan*, i32, i32, i16*, [2 x i8*] } + %struct.AVOption = type opaque + %struct.AVPaletteControl = type { i32, [256 x i32] } + %struct.AVPanScan = type { i32, i32, i32, [3 x [2 x i16]] } + %struct.AVRational = type { i32, i32 } + %struct.DSPContext = type { void (i16*, i8*, i32)*, void (i16*, i8*, i8*, i32)*, void (i16*, i8*, i32)*, void (i16*, i8*, i32)*, void (i16*, i8*, i32)*, void (i8*, i16*, i32)*, void (i8*, i16*, i32)*, void (i8*, i8*, i32, i32, i32, i32, i32)*, void (i8*, i8*, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32)*, void (i16*)*, i32 (i8*, i32)*, i32 (i8*, i32)*, [5 x i32 (i8*, i8*, i8*, i32, i32)*], [5 x i32 (i8*, i8*, i8*, i32, i32)*], [5 x i32 (i8*, i8*, i8*, i32, i32)*], [5 x i32 (i8*, i8*, i8*, i32, i32)*], [5 x i32 (i8*, i8*, i8*, i32, i32)*], [5 x i32 (i8*, i8*, i8*, i32, i32)*], [5 x i32 (i8*, i8*, i8*, i32, i32)*], [5 x i32 (i8*, i8*, i8*, i32, i32)*], [5 x i32 (i8*, i8*, i8*, i32, i32)*], [5 x i32 (i8*, i8*, i8*, i32, i32)*], [5 x i32 (i8*, i8*, i8*, i32, i32)*], [5 x i32 (i8*, i8*, i8*, i32, i32)*], [5 x i32 (i8*, i8*, i8*, i32, i32)*], [5 x i32 (i8*, i8*, i8*, i32, i32)*], [5 x i32 (i8*, i8*, i8*, i32, i32)*], [5 x i32 (i8*, i8*, i8*, i32, i32)*], [5 x i32 (i8*, i8*, i8*, i32, i32)*], [5 x i32 (i8*, i8*, i8*, i32, i32)*], [5 x i32 (i8*, i8*, i8*, i32, i32)*], [5 x i32 (i8*, i8*, i8*, i32, i32)*], i32 (i8*, i16*, i32)*, [4 x [4 x void (i8*, i8*, i32, i32)*]], [4 x [4 x void (i8*, i8*, i32, i32)*]], [4 x [4 x void (i8*, i8*, i32, i32)*]], [4 x [4 x void (i8*, i8*, i32, i32)*]], [2 x void (i8*, i8*, i8*, i32, i32)*], [11 x void (i8*, i8*, i32, i32, i32)*], [11 x void (i8*, i8*, i32, i32, i32)*], [2 x [16 x void (i8*, i8*, i32)*]], [2 x [16 x void (i8*, i8*, i32)*]], [2 x [16 x void (i8*, i8*, i32)*]], [2 x [16 x void (i8*, i8*, i32)*]], [8 x void (i8*, i8*, i32)*], [3 x void (i8*, i8*, i32, i32, i32, i32)*], [3 x void (i8*, i8*, i32, i32, i32, i32)*], [3 x void (i8*, i8*, i32, i32, i32, i32)*], [4 x [16 x void (i8*, i8*, i32)*]], [4 x [16 x void (i8*, i8*, i32)*]], [4 x [16 x void (i8*, i8*, i32)*]], [4 x [16 x void (i8*, i8*, i32)*]], [10 x void (i8*, i32, i32, i32, i32)*], [10 x void (i8*, i8*, i32, i32, i32, i32, i32)*], [2 x [16 x void (i8*, i8*, i32)*]], [2 x [16 x void (i8*, i8*, i32)*]], void (i8*, i32, i32, i32, i32, i32, i32)*, void (i8*, i32, i32, i32, i32, i32, i32)*, void (i8*, i32, i32, i32, i32, i32, i32)*, void (i8*, i32, i32, i32, i32, i32, i32)*, void (i8*, i16*, i32)*, [2 x [4 x i32 (i8*, i8*, i8*, i32, i32)*]], void (i8*, i8*, i32)*, void (i8*, i8*, i8*, i32)*, void (i8*, i8*, i8*, i32, i32*, i32*)*, void (i32*, i32*, i32)*, void (i8*, i32, i32, i32, i8*)*, void (i8*, i32, i32, i32, i8*)*, void (i8*, i32, i32, i32, i8*)*, void (i8*, i32, i32, i32, i8*)*, void (i8*, i32, i32, i32)*, void (i8*, i32, i32, i32)*, void ([4 x [4 x i16]]*, i8*, [40 x i8]*, [40 x [2 x i16]]*, i32, i32, i32, i32, i32)*, void (i8*, i32, i32)*, void (i8*, i32, i32)*, void (i8*, i32)*, void (float*, float*, i32)*, void (float*, float*, i32)*, void (float*, float*, float*, i32)*, void (float*, float*, float*, float*, i32, i32, i32)*, void (i16*, float*, i32)*, void (i16*)*, void (i16*)*, void (i16*)*, void (i8*, i32, i16*)*, void (i8*, i32, i16*)*, [64 x i8], i32, i32 (i16*, i16*, i16*, i32)*, void (i16*, i16*, i32)*, void (i8*, i16*, i32)*, void (i8*, i16*, i32)*, void (i8*, i16*, i32)*, void (i8*, i16*, i32)*, void ([4 x i16]*)*, void (i32*, i32*, i32*, i32*, i32*, i32*, i32)*, void (i32*, i32)*, void (i8*, i32, i8**, i32, i32, i32, i32, i32, %struct.slice_buffer*, i32, i8*)*, void (i8*, i32, i32)*, [4 x void (i8*, i32, i8*, i32, i32, i32)*], void (i16*)*, void (i16*, i32)*, void (i16*, i32)*, void (i16*, i32)*, void (i8*, i32)*, void (i8*, i32)*, [16 x void (i8*, i8*, i32, i32)*] } + %struct.FILE = type { i32, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, %struct._IO_marker*, %struct.FILE*, i32, i32, i32, i16, i8, [1 x i8], i8*, i64, i8*, i8*, i8*, i8*, i32, i32, [40 x i8] } + %struct.GetBitContext = type { i8*, i8*, i32*, i32, i32, i32, i32 } + %struct.MJpegContext = type opaque + %struct.MotionEstContext = type { %struct.AVCodecContext*, i32, [4 x [2 x i32]], [4 x [2 x i32]], i8*, i8*, [2 x i8*], i8*, i32, i32*, i32*, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, [4 x [4 x i8*]], [4 x [4 x i8*]], i32, i32, i32, i32, i32, [4 x void (i8*, i8*, i32, i32)*]*, [4 x void (i8*, i8*, i32, i32)*]*, [16 x void (i8*, i8*, i32)*]*, [16 x void (i8*, i8*, i32)*]*, [4097 x i8]*, i8*, i32 (%struct.MpegEncContext*, i32*, i32*, i32, i32, i32, i32, i32)* } + %struct.MpegEncContext = type { %struct.AVCodecContext*, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, %struct.PutBitContext, i32, i32, i32, i32, i32, i32, i64, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, %struct.Picture*, %struct.Picture**, %struct.Picture**, i32, i32, [8 x %struct.MpegEncContext*], %struct.Picture, %struct.Picture, %struct.Picture, %struct.Picture, %struct.Picture*, %struct.Picture*, %struct.Picture*, [3 x i8*], [3 x i32], i16*, [3 x i16*], [20 x i16], i32, i32, i8*, i8*, i8*, i8*, i8*, [16 x i16]*, [3 x [16 x i16]*], i32, i8*, i32, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i32, i32, i32, i32, i32*, i32, i32, i32, i32, i32, i32, i32, [5 x i32], i32, i32, i32, i32, %struct.DSPContext, i32, i32, [2 x i16]*, [2 x i16]*, [2 x i16]*, [2 x i16]*, [2 x i16]*, [2 x i16]*, [2 x [2 x [2 x i16]*]], [2 x [2 x [2 x [2 x i16]*]]], [2 x i16]*, [2 x i16]*, [2 x i16]*, [2 x i16]*, [2 x i16]*, [2 x i16]*, [2 x [2 x [2 x i16]*]], [2 x [2 x [2 x [2 x i16]*]]], [2 x i8*], [2 x [2 x i8*]], i32, i32, i32, [2 x [4 x [2 x i32]]], [2 x [2 x i32]], [2 x [2 x [2 x i32]]], i8*, [2 x [64 x i16]], %struct.MotionEstContext, i32, i32, i32, i32, i32, i32, i16*, [6 x i32], [6 x i32], [3 x i8*], i32*, [64 x i16], [64 x i16], [64 x i16], [64 x i16], i32, i32, i32, i32, i32, i8*, i8*, i8*, i8*, i8*, i8*, [8 x i32], [64 x i32]*, [64 x i32]*, [2 x [64 x i16]]*, [2 x [64 x i16]]*, [12 x i32], %struct.ScanTable, %struct.ScanTable, %struct.ScanTable, %struct.ScanTable, [64 x i32]*, [2 x i32], [64 x i16]*, i8*, i64, i64, i32, i32, %struct.RateControlContext, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i8*, i32, i32, %struct.GetBitContext, i32, i32, i32, %struct.ParseContext, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i64, i64, i16, i16, i16, i16, i32, i32, i32, i32, i32, i32, i32, i32, i32, [2 x [2 x i32]], [2 x [2 x i32]], [2 x i32], i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, %struct.PutBitContext, %struct.PutBitContext, i32, i32, i32, i32, i32, i32, i8*, i32, i32, i32, i32, i32, [3 x i32], %struct.MJpegContext*, [3 x i32], [3 x i32], i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, [2 x [65 x [65 x [2 x i32]]]]*, i32, i32, %struct.GetBitContext, i32, i32, i32, i8*, i32, [2 x [2 x i32]], i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, [2 x i32], i32, i32, i32, i32, i8*, i32, [12 x i16*], [64 x i16]*, [8 x [64 x i16]]*, i32 (%struct.MpegEncContext*, [64 x i16]*)*, void (%struct.MpegEncContext*, i16*, i32, i32)*, void (%struct.MpegEncContext*, i16*, i32, i32)*, void (%struct.MpegEncContext*, i16*, i32, i32)*, void (%struct.MpegEncContext*, i16*, i32, i32)*, void (%struct.MpegEncContext*, i16*, i32, i32)*, void (%struct.MpegEncContext*, i16*, i32, i32)*, void (%struct.MpegEncContext*, i16*, i32, i32)*, void (%struct.MpegEncContext*, i16*, i32, i32)*, void (%struct.MpegEncContext*, i16*, i32, i32)*, void (%struct.MpegEncContext*, i16*, i32, i32)*, i32 (%struct.MpegEncContext*, i16*, i32, i32, i32*)*, i32 (%struct.MpegEncContext*, i16*, i32, i32, i32*)*, void (%struct.MpegEncContext*, i16*)* } + %struct.ParseContext = type { i8*, i32, i32, i32, i32, i32, i32, i32 } + %struct.Picture = type { [4 x i8*], [4 x i32], [4 x i8*], i32, i32, i64, i32, i32, i32, i32, i32, i8*, i32, i8*, [2 x [2 x i16]*], i32*, i8, i8*, [4 x i64], i32, i32, i32, i32, i32, %struct.AVPanScan*, i32, i32, i16*, [2 x i8*], [3 x i8*], [2 x [2 x i16]*], i32*, [2 x i32], i32, i32, i32, i32, [2 x [16 x i32]], [2 x i32], i32, i32, i16*, i16*, i8*, i32*, i32 } + %struct.Predictor = type { double, double, double } + %struct.PutBitContext = type { i32, i32, i8*, i8*, i8* } + %struct.RateControlContext = type { %struct.FILE*, i32, %struct.RateControlEntry*, double, [5 x %struct.Predictor], double, double, double, double, double, [5 x double], i32, i32, [5 x i64], [5 x i64], [5 x i64], [5 x i64], [5 x i32], i32, i8*, float, i32, %struct.AVEvalExpr* } + %struct.RateControlEntry = type { i32, float, i32, i32, i32, i32, i32, i64, i32, float, i32, i32, i32, i32, i32, i32 } + %struct.RcOverride = type { i32, i32, i32, float } + %struct.ScanTable = type { i8*, [64 x i8], [64 x i8] } + %struct._IO_marker = type { %struct._IO_marker*, %struct.FILE*, i32 } + %struct.slice_buffer = type opaque + +define float @ff_rate_estimate_qscale(%struct.MpegEncContext* %s, i32 %dry_run) { +entry: + br i1 false, label %cond_false163, label %cond_true135 + +cond_true135: ; preds = %entry + ret float 0.000000e+00 + +cond_false163: ; preds = %entry + br i1 false, label %cond_true203, label %cond_next211 + +cond_true203: ; preds = %cond_false163 + ret float 0.000000e+00 + +cond_next211: ; preds = %cond_false163 + br i1 false, label %cond_false243, label %cond_true220 + +cond_true220: ; preds = %cond_next211 + br i1 false, label %cond_next237, label %cond_true225 + +cond_true225: ; preds = %cond_true220 + ret float 0.000000e+00 + +cond_next237: ; preds = %cond_true220 + br i1 false, label %cond_false785, label %cond_true735 + +cond_false243: ; preds = %cond_next211 + ret float 0.000000e+00 + +cond_true735: ; preds = %cond_next237 + ret float 0.000000e+00 + +cond_false785: ; preds = %cond_next237 + br i1 false, label %cond_true356.i.preheader, label %bb359.i + +cond_true356.i.preheader: ; preds = %cond_false785 + %tmp116117.i = zext i8 0 to i32 ; <i32> [#uses=1] + br i1 false, label %cond_false.i, label %cond_next159.i + +cond_false.i: ; preds = %cond_true356.i.preheader + ret float 0.000000e+00 + +cond_next159.i: ; preds = %cond_true356.i.preheader + %tmp178.i = add i32 %tmp116117.i, -128 ; <i32> [#uses=2] + %tmp181.i = mul i32 %tmp178.i, %tmp178.i ; <i32> [#uses=1] + %tmp181182.i = sitofp i32 %tmp181.i to float ; <float> [#uses=1] + %tmp199200.pn.in.i = fmul float %tmp181182.i, 0.000000e+00 ; <float> [#uses=1] + %tmp199200.pn.i = fpext float %tmp199200.pn.in.i to double ; <double> [#uses=1] + %tmp201.pn.i = fsub double 1.000000e+00, %tmp199200.pn.i ; <double> [#uses=1] + %factor.2.in.i = fmul double 0.000000e+00, %tmp201.pn.i ; <double> [#uses=1] + %factor.2.i = fptrunc double %factor.2.in.i to float ; <float> [#uses=1] + br i1 false, label %cond_next312.i, label %cond_false222.i + +cond_false222.i: ; preds = %cond_next159.i + ret float 0.000000e+00 + +cond_next312.i: ; preds = %cond_next159.i + %tmp313314.i = fpext float %factor.2.i to double ; <double> [#uses=0] + ret float 0.000000e+00 + +bb359.i: ; preds = %cond_false785 + ret float 0.000000e+00 +}
diff --git a/src/LLVM/test/CodeGen/Generic/2007-12-17-InvokeAsm.ll b/src/LLVM/test/CodeGen/Generic/2007-12-17-InvokeAsm.ll new file mode 100644 index 0000000..27c7162 --- /dev/null +++ b/src/LLVM/test/CodeGen/Generic/2007-12-17-InvokeAsm.ll
@@ -0,0 +1,17 @@ +; RUN: llc < %s + +define fastcc void @bc__support__high_resolution_time__initialize_clock_rate() { +entry: + invoke void asm "rdtsc\0A\09movl %eax, $0\0A\09movl %edx, $1", "=*imr,=*imr,~{dirflag},~{fpsr},~{flags},~{dx},~{ax}"( i32* null, i32* null ) + to label %.noexc unwind label %cleanup144 + +.noexc: ; preds = %entry + ret void + +cleanup144: ; preds = %entry + %exn = landingpad {i8*, i32} personality i32 (...)* @__gxx_personality_v0 + cleanup + resume { i8*, i32 } %exn +} + +declare i32 @__gxx_personality_v0(...)
diff --git a/src/LLVM/test/CodeGen/Generic/2007-12-31-UnusedSelector.ll b/src/LLVM/test/CodeGen/Generic/2007-12-31-UnusedSelector.ll new file mode 100644 index 0000000..943ed88 --- /dev/null +++ b/src/LLVM/test/CodeGen/Generic/2007-12-31-UnusedSelector.ll
@@ -0,0 +1,37 @@ +; RUN: llc < %s +; PR1833 + + %struct.__class_type_info_pseudo = type { %struct.__type_info_pseudo } + %struct.__type_info_pseudo = type { i8*, i8* } +@_ZTI2e1 = external constant %struct.__class_type_info_pseudo ; <%struct.__class_type_info_pseudo*> [#uses=1] + +define void @_Z7ex_testv() { +entry: + invoke void @__cxa_throw( i8* null, i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI2e1 to i8*), void (i8*)* null ) noreturn + to label %UnifiedUnreachableBlock unwind label %lpad + +bb14: ; preds = %lpad + unreachable + +lpad: ; preds = %entry + %lpad1 = landingpad { i8*, i32 } personality i32 (...)* @__gxx_personality_v0 + catch i8* null + invoke void @__cxa_end_catch( ) + to label %bb14 unwind label %lpad17 + +lpad17: ; preds = %lpad + %lpad2 = landingpad { i8*, i32 } personality i32 (...)* @__gxx_personality_v0 + catch i8* null + unreachable + +UnifiedUnreachableBlock: ; preds = %entry + unreachable +} + +declare void @__cxa_throw(i8*, i8*, void (i8*)*) noreturn + +declare i32 @llvm.eh.selector.i32(i8*, i8*, ...) + +declare void @__cxa_end_catch() + +declare i32 @__gxx_personality_v0(...)
diff --git a/src/LLVM/test/CodeGen/Generic/2008-01-25-dag-combine-mul.ll b/src/LLVM/test/CodeGen/Generic/2008-01-25-dag-combine-mul.ll new file mode 100644 index 0000000..314bb05 --- /dev/null +++ b/src/LLVM/test/CodeGen/Generic/2008-01-25-dag-combine-mul.ll
@@ -0,0 +1,31 @@ +; RUN: llc < %s +; rdar://5707064 + +define i32 @f(i16* %pc) { +entry: + %acc = alloca i64, align 8 ; <i64*> [#uses=4] + %tmp97 = load i64* %acc, align 8 ; <i64> [#uses=1] + %tmp98 = and i64 %tmp97, 4294967295 ; <i64> [#uses=1] + %tmp99 = load i64* null, align 8 ; <i64> [#uses=1] + %tmp100 = and i64 %tmp99, 4294967295 ; <i64> [#uses=1] + %tmp101 = mul i64 %tmp98, %tmp100 ; <i64> [#uses=1] + %tmp103 = lshr i64 %tmp101, 0 ; <i64> [#uses=1] + %tmp104 = load i64* %acc, align 8 ; <i64> [#uses=1] + %.cast105 = zext i32 32 to i64 ; <i64> [#uses=1] + %tmp106 = lshr i64 %tmp104, %.cast105 ; <i64> [#uses=1] + %tmp107 = load i64* null, align 8 ; <i64> [#uses=1] + %tmp108 = and i64 %tmp107, 4294967295 ; <i64> [#uses=1] + %tmp109 = mul i64 %tmp106, %tmp108 ; <i64> [#uses=1] + %tmp112 = add i64 %tmp109, 0 ; <i64> [#uses=1] + %tmp116 = add i64 %tmp112, 0 ; <i64> [#uses=1] + %tmp117 = add i64 %tmp103, %tmp116 ; <i64> [#uses=1] + %tmp118 = load i64* %acc, align 8 ; <i64> [#uses=1] + %tmp120 = lshr i64 %tmp118, 0 ; <i64> [#uses=1] + %tmp121 = load i64* null, align 8 ; <i64> [#uses=1] + %tmp123 = lshr i64 %tmp121, 0 ; <i64> [#uses=1] + %tmp124 = mul i64 %tmp120, %tmp123 ; <i64> [#uses=1] + %tmp126 = shl i64 %tmp124, 0 ; <i64> [#uses=1] + %tmp127 = add i64 %tmp117, %tmp126 ; <i64> [#uses=1] + store i64 %tmp127, i64* %acc, align 8 + ret i32 0 +}
diff --git a/src/LLVM/test/CodeGen/Generic/2008-01-30-LoadCrash.ll b/src/LLVM/test/CodeGen/Generic/2008-01-30-LoadCrash.ll new file mode 100644 index 0000000..70c3aaa --- /dev/null +++ b/src/LLVM/test/CodeGen/Generic/2008-01-30-LoadCrash.ll
@@ -0,0 +1,19 @@ +; RUN: llc < %s + +@letters.3100 = external constant [63 x i8] ; <[63 x i8]*> [#uses=2] + +define i32 @mkstemps(i8* %pattern, i32 %suffix_len, i64 %tmp42.rle) nounwind { +bb20: + br label %bb41 + +bb41: ; preds = %bb20 + %tmp8182 = trunc i64 %tmp42.rle to i32 ; <i32> [#uses=1] + %tmp83 = getelementptr [63 x i8]* @letters.3100, i32 0, i32 %tmp8182 ; <i8*> [#uses=1] + %tmp84 = load i8* %tmp83, align 1 ; <i8> [#uses=1] + store i8 %tmp84, i8* null, align 1 + %tmp90 = urem i64 %tmp42.rle, 62 ; <i64> [#uses=1] + %tmp9091 = trunc i64 %tmp90 to i32 ; <i32> [#uses=1] + %tmp92 = getelementptr [63 x i8]* @letters.3100, i32 0, i32 %tmp9091 ; <i8*> [#uses=1] + store i8* %tmp92, i8** null, align 1 + ret i32 -1 +}
diff --git a/src/LLVM/test/CodeGen/Generic/2008-02-04-Ctlz.ll b/src/LLVM/test/CodeGen/Generic/2008-02-04-Ctlz.ll new file mode 100644 index 0000000..288bfd2 --- /dev/null +++ b/src/LLVM/test/CodeGen/Generic/2008-02-04-Ctlz.ll
@@ -0,0 +1,21 @@ +; RUN: llc < %s + +@.str = internal constant [14 x i8] c"%lld %d %d %d\00" + +define i32 @main(i64 %arg) nounwind { +entry: + %tmp37 = tail call i64 @llvm.ctlz.i64( i64 %arg ) ; <i64> [#uses=1] + %tmp47 = tail call i64 @llvm.cttz.i64( i64 %arg ) ; <i64> [#uses=1] + %tmp57 = tail call i64 @llvm.ctpop.i64( i64 %arg ) ; <i64> [#uses=1] + %tmp38 = trunc i64 %tmp37 to i32 ; <i32>:0 [#uses=1] + %tmp48 = trunc i64 %tmp47 to i32 ; <i32>:0 [#uses=1] + %tmp58 = trunc i64 %tmp57 to i32 ; <i32>:0 [#uses=1] + %tmp40 = tail call i32 (i8*, ...)* @printf( i8* noalias getelementptr ([14 x i8]* @.str, i32 0, i32 0), i64 %arg, i32 %tmp38, i32 %tmp48, i32 %tmp58 ) nounwind ; <i32> [#uses=0] + ret i32 0 +} + +declare i32 @printf(i8* noalias , ...) nounwind + +declare i64 @llvm.ctlz.i64(i64) nounwind readnone +declare i64 @llvm.cttz.i64(i64) nounwind readnone +declare i64 @llvm.ctpop.i64(i64) nounwind readnone
diff --git a/src/LLVM/test/CodeGen/Generic/2008-02-04-ExtractSubvector.ll b/src/LLVM/test/CodeGen/Generic/2008-02-04-ExtractSubvector.ll new file mode 100644 index 0000000..8bf82df --- /dev/null +++ b/src/LLVM/test/CodeGen/Generic/2008-02-04-ExtractSubvector.ll
@@ -0,0 +1,14 @@ +; RUN: llc < %s + +define i32 @main() nounwind { +entry: + br label %bb15 + +bb15: ; preds = %bb15, %entry + %tmp21 = fadd <8 x double> zeroinitializer, zeroinitializer ; <<8 x double>> [#uses=1] + br i1 false, label %bb30, label %bb15 + +bb30: ; preds = %bb15 + store <8 x double> %tmp21, <8 x double>* null, align 64 + ret i32 0 +}
diff --git a/src/LLVM/test/CodeGen/Generic/2008-02-20-MatchingMem.ll b/src/LLVM/test/CodeGen/Generic/2008-02-20-MatchingMem.ll new file mode 100644 index 0000000..da1aeb5 --- /dev/null +++ b/src/LLVM/test/CodeGen/Generic/2008-02-20-MatchingMem.ll
@@ -0,0 +1,9 @@ +; RUN: llc < %s +; PR1133 +define void @test(i32* %X) nounwind { +entry: + %tmp1 = getelementptr i32* %X, i32 10 ; <i32*> [#uses=2] + tail call void asm sideeffect " $0 $1 ", "=*im,*im,~{memory}"( i32* %tmp1, i32* %tmp1 ) nounwind + ret void +} +
diff --git a/src/LLVM/test/CodeGen/Generic/2008-02-25-NegateZero.ll b/src/LLVM/test/CodeGen/Generic/2008-02-25-NegateZero.ll new file mode 100644 index 0000000..97db667 --- /dev/null +++ b/src/LLVM/test/CodeGen/Generic/2008-02-25-NegateZero.ll
@@ -0,0 +1,14 @@ +; RUN: llc < %s +; rdar://5763967 + +define void @test() { +entry: + %tmp98 = load float* null, align 4 ; <float> [#uses=1] + %tmp106 = load float* null, align 4 ; <float> [#uses=1] + %tmp113 = fadd float %tmp98, %tmp106 ; <float> [#uses=1] + %tmp119 = fsub float %tmp113, 0.000000e+00 ; <float> [#uses=1] + call void (i32, ...)* @foo( i32 0, float 0.000000e+00, float %tmp119 ) nounwind + ret void +} + +declare void @foo(i32, ...)
diff --git a/src/LLVM/test/CodeGen/Generic/2008-02-26-NegatableCrash.ll b/src/LLVM/test/CodeGen/Generic/2008-02-26-NegatableCrash.ll new file mode 100644 index 0000000..10b3d44 --- /dev/null +++ b/src/LLVM/test/CodeGen/Generic/2008-02-26-NegatableCrash.ll
@@ -0,0 +1,50 @@ +; RUN: llc < %s +; PR2096 + %struct.AVClass = type { i8*, i8* (i8*)*, %struct.AVOption* } + %struct.AVCodec = type { i8*, i32, i32, i32, i32 (%struct.AVCodecContext*)*, i32 (%struct.AVCodecContext*, i8*, i32, i8*)*, i32 (%struct.AVCodecContext*)*, i32 (%struct.AVCodecContext*, i8*, i32*, i8*, i32)*, i32, %struct.AVCodec*, void (%struct.AVCodecContext*)*, %struct.AVRational*, i32* } + %struct.AVCodecContext = type { %struct.AVClass*, i32, i32, i32, i32, i32, i8*, i32, %struct.AVRational, i32, i32, i32, i32, i32, void (%struct.AVCodecContext*, %struct.AVFrame*, i32*, i32, i32, i32)*, i32, i32, i32, i32, i32, i32, i32, float, float, i32, i32, i32, i32, float, i32, i32, i32, %struct.AVCodec*, i8*, i32, i32, void (%struct.AVCodecContext*, i8*, i32, i32)*, i32, i32, i32, i32, i32, i32, i32, i32, i32, i8*, [32 x i8], i32, i32, i32, i32, i32, i32, i32, float, i32, i32 (%struct.AVCodecContext*, %struct.AVFrame*)*, void (%struct.AVCodecContext*, %struct.AVFrame*)*, i32, i32, i32, i32, i8*, i8*, float, float, i32, %struct.RcOverride*, i32, i8*, i32, i32, i32, float, float, float, float, i32, float, float, float, float, float, i32, i32, i32, i32*, i32, i32, i32, i32, %struct.AVRational, %struct.AVFrame*, i32, i32, [4 x i64], i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32 (%struct.AVCodecContext*, i32*)*, i32, i32, i32, i32, i32, i32, i8*, i32, i32, i32, i32, i32, i32, i16*, i16*, i32, i32, i32, i32, %struct.AVPaletteControl*, i32, i32 (%struct.AVCodecContext*, %struct.AVFrame*)*, i32, i32, i32, i32, i32, i32, i32, i32 (%struct.AVCodecContext*, i32 (%struct.AVCodecContext*, i8*)*, i8**, i32*, i32)*, i8*, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, i32, i32, i32, i32, i32, i32, i32, i32, float, i32, i32, i32, i32, i32, i32, float, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i64, i32, float } + %struct.AVFrame = type { [4 x i8*], [4 x i32], [4 x i8*], i32, i32, i64, i32, i32, i32, i32, i32, i8*, i32, i8*, [2 x [2 x i16]*], i32*, i8, i8*, [4 x i64], i32, i32, i32, i32, i32, %struct.AVPanScan*, i32, i32, i16*, [2 x i8*] } + %struct.AVOption = type opaque + %struct.AVPaletteControl = type { i32, [256 x i32] } + %struct.AVPanScan = type { i32, i32, i32, [3 x [2 x i16]] } + %struct.AVRational = type { i32, i32 } + %struct.RcOverride = type { i32, i32, i32, float } + +define i32 @sonic_encode_frame(%struct.AVCodecContext* %avctx, i8* %buf, i32 %buf_size, i8* %data) { +entry: + switch i32 0, label %bb429 [ + i32 0, label %bb244.preheader + i32 1, label %bb279.preheader + ] + +bb279.preheader: ; preds = %entry + ret i32 0 + +bb244.preheader: ; preds = %entry + ret i32 0 + +bb429: ; preds = %entry + br i1 false, label %bb.nph1770, label %bb627 + +bb.nph1770: ; preds = %bb429 + br i1 false, label %bb471, label %bb505 + +bb471: ; preds = %bb471, %bb.nph1770 + %tmp487 = fadd double 0.000000e+00, 0.000000e+00 ; <double> [#uses=1] + br i1 false, label %bb505, label %bb471 + +bb505: ; preds = %bb471, %bb.nph1770 + %xy.0.lcssa = phi double [ 0.000000e+00, %bb.nph1770 ], [ %tmp487, %bb471 ] ; <double> [#uses=1] + %tmp507 = fsub double -0.000000e+00, %xy.0.lcssa ; <double> [#uses=1] + %tmp509 = fdiv double %tmp507, 0.000000e+00 ; <double> [#uses=1] + %tmp510 = fmul double %tmp509, 1.024000e+03 ; <double> [#uses=1] + %tmp516 = fdiv double %tmp510, 0.000000e+00 ; <double> [#uses=1] + %tmp517 = fadd double %tmp516, 5.000000e-01 ; <double> [#uses=1] + %tmp518 = tail call double @floor( double %tmp517 ) nounwind readnone ; <double> [#uses=0] + ret i32 0 + +bb627: ; preds = %bb429 + ret i32 0 +} + +declare double @floor(double) nounwind readnone
diff --git a/src/LLVM/test/CodeGen/Generic/2008-08-07-PtrToInt-SmallerInt.ll b/src/LLVM/test/CodeGen/Generic/2008-08-07-PtrToInt-SmallerInt.ll new file mode 100644 index 0000000..00ca8c7 --- /dev/null +++ b/src/LLVM/test/CodeGen/Generic/2008-08-07-PtrToInt-SmallerInt.ll
@@ -0,0 +1,5 @@ +; RUN: llc < %s +; PR2603 + %struct.A = type { i8 } + %struct.B = type { i8, [1 x i8] } +@Foo = constant %struct.A { i8 ptrtoint (i8* getelementptr ([1 x i8]* inttoptr (i32 17 to [1 x i8]*), i32 0, i32 -16) to i8) } ; <%struct.A*> [#uses=0]
diff --git a/src/LLVM/test/CodeGen/Generic/2009-03-17-LSR-APInt.ll b/src/LLVM/test/CodeGen/Generic/2009-03-17-LSR-APInt.ll new file mode 100644 index 0000000..6281ada --- /dev/null +++ b/src/LLVM/test/CodeGen/Generic/2009-03-17-LSR-APInt.ll
@@ -0,0 +1,92 @@ +; RUN: llc < %s +; PR3806 + + %struct..0__pthread_mutex_s = type { i32, i32, i32, i32, i32, i32, %struct.__pthread_list_t } + %struct.Alignment = type { i32 } + %struct.QDesignerFormWindowInterface = type { %struct.QWidget } + %struct.QFont = type { %struct.QFontPrivate*, i32 } + %struct.QFontPrivate = type opaque + %"struct.QHash<QString,QList<QAbstractExtensionFactory*> >" = type { %"struct.QHash<QString,QList<QAbstractExtensionFactory*> >::._120" } + %"struct.QHash<QString,QList<QAbstractExtensionFactory*> >::._120" = type { %struct.QHashData* } + %struct.QHashData = type { %"struct.QHashData::Node"*, %"struct.QHashData::Node"**, %struct.Alignment, i32, i32, i16, i16, i32, i8 } + %"struct.QHashData::Node" = type { %"struct.QHashData::Node"*, i32 } + %"struct.QList<QAbstractExtensionFactory*>" = type { %"struct.QList<QAbstractExtensionFactory*>::._101" } + %"struct.QList<QAbstractExtensionFactory*>::._101" = type { %struct.QListData } + %struct.QListData = type { %"struct.QListData::Data"* } + %"struct.QListData::Data" = type { %struct.Alignment, i32, i32, i32, i8, [1 x i8*] } + %struct.QObject = type { i32 (...)**, %struct.QObjectData* } + %struct.QObjectData = type { i32 (...)**, %struct.QObject*, %struct.QObject*, %"struct.QList<QAbstractExtensionFactory*>", i32, i32 } + %struct.QPaintDevice.base = type { i32 (...)**, i16 } + %"struct.QPair<int,int>" = type { i32, i32 } + %struct.QPalette = type { %struct.QPalettePrivate*, i32 } + %struct.QPalettePrivate = type opaque + %struct.QRect = type { i32, i32, i32, i32 } + %struct.QWidget = type { %struct.QObject, %struct.QPaintDevice.base, %struct.QWidgetData* } + %struct.QWidgetData = type { i64, i32, %struct.Alignment, i8, i8, i16, %struct.QRect, %struct.QPalette, %struct.QFont, %struct.QRect } + %struct.__pthread_list_t = type { %struct.__pthread_list_t*, %struct.__pthread_list_t* } + %struct.pthread_attr_t = type { i64, [48 x i8] } + %struct.pthread_mutex_t = type { %struct..0__pthread_mutex_s } + %"struct.qdesigner_internal::Grid" = type { i32, i32, %struct.QWidget**, i8*, i8* } + %"struct.qdesigner_internal::GridLayout" = type { %"struct.qdesigner_internal::Layout", %"struct.QPair<int,int>", %"struct.qdesigner_internal::Grid"* } + %"struct.qdesigner_internal::Layout" = type { %struct.QObject, %"struct.QList<QAbstractExtensionFactory*>", %struct.QWidget*, %"struct.QHash<QString,QList<QAbstractExtensionFactory*> >", %struct.QWidget*, %struct.QDesignerFormWindowInterface*, i8, %"struct.QPair<int,int>", %struct.QRect, i8 } + +@_ZL20__gthrw_pthread_oncePiPFvvE = alias weak i32 (i32*, void ()*)* @pthread_once ; <i32 (i32*, void ()*)*> [#uses=0] +@_ZL27__gthrw_pthread_getspecificj = alias weak i8* (i32)* @pthread_getspecific ; <i8* (i32)*> [#uses=0] +@_ZL27__gthrw_pthread_setspecificjPKv = alias weak i32 (i32, i8*)* @pthread_setspecific ; <i32 (i32, i8*)*> [#uses=0] +@_ZL22__gthrw_pthread_createPmPK14pthread_attr_tPFPvS3_ES3_ = alias weak i32 (i64*, %struct.pthread_attr_t*, i8* (i8*)*, i8*)* @pthread_create ; <i32 (i64*, %struct.pthread_attr_t*, i8* (i8*)*, i8*)*> [#uses=0] +@_ZL22__gthrw_pthread_cancelm = alias weak i32 (i64)* @pthread_cancel ; <i32 (i64)*> [#uses=0] +@_ZL26__gthrw_pthread_mutex_lockP15pthread_mutex_t = alias weak i32 (%struct.pthread_mutex_t*)* @pthread_mutex_lock ; <i32 (%struct.pthread_mutex_t*)*> [#uses=0] +@_ZL29__gthrw_pthread_mutex_trylockP15pthread_mutex_t = alias weak i32 (%struct.pthread_mutex_t*)* @pthread_mutex_trylock ; <i32 (%struct.pthread_mutex_t*)*> [#uses=0] +@_ZL28__gthrw_pthread_mutex_unlockP15pthread_mutex_t = alias weak i32 (%struct.pthread_mutex_t*)* @pthread_mutex_unlock ; <i32 (%struct.pthread_mutex_t*)*> [#uses=0] +@_ZL26__gthrw_pthread_mutex_initP15pthread_mutex_tPK19pthread_mutexattr_t = alias weak i32 (%struct.pthread_mutex_t*, %struct.Alignment*)* @pthread_mutex_init ; <i32 (%struct.pthread_mutex_t*, %struct.Alignment*)*> [#uses=0] +@_ZL26__gthrw_pthread_key_createPjPFvPvE = alias weak i32 (i32*, void (i8*)*)* @pthread_key_create ; <i32 (i32*, void (i8*)*)*> [#uses=0] +@_ZL26__gthrw_pthread_key_deletej = alias weak i32 (i32)* @pthread_key_delete ; <i32 (i32)*> [#uses=0] +@_ZL30__gthrw_pthread_mutexattr_initP19pthread_mutexattr_t = alias weak i32 (%struct.Alignment*)* @pthread_mutexattr_init ; <i32 (%struct.Alignment*)*> [#uses=0] +@_ZL33__gthrw_pthread_mutexattr_settypeP19pthread_mutexattr_ti = alias weak i32 (%struct.Alignment*, i32)* @pthread_mutexattr_settype ; <i32 (%struct.Alignment*, i32)*> [#uses=0] +@_ZL33__gthrw_pthread_mutexattr_destroyP19pthread_mutexattr_t = alias weak i32 (%struct.Alignment*)* @pthread_mutexattr_destroy ; <i32 (%struct.Alignment*)*> [#uses=0] + +define void @_ZN18qdesigner_internal10GridLayout9buildGridEv(%"struct.qdesigner_internal::GridLayout"* %this) nounwind { +entry: + br label %bb44 + +bb44: ; preds = %bb47, %entry + %indvar = phi i128 [ %indvar.next144, %bb47 ], [ 0, %entry ] ; <i128> [#uses=2] + br i1 false, label %bb46, label %bb47 + +bb46: ; preds = %bb44 + %tmp = shl i128 %indvar, 64 ; <i128> [#uses=1] + %tmp96 = and i128 %tmp, 79228162495817593519834398720 ; <i128> [#uses=0] + br label %bb47 + +bb47: ; preds = %bb46, %bb44 + %indvar.next144 = add i128 %indvar, 1 ; <i128> [#uses=1] + br label %bb44 +} + +declare i32 @pthread_once(i32*, void ()*) + +declare i8* @pthread_getspecific(i32) + +declare i32 @pthread_setspecific(i32, i8*) + +declare i32 @pthread_create(i64*, %struct.pthread_attr_t*, i8* (i8*)*, i8*) + +declare i32 @pthread_cancel(i64) + +declare i32 @pthread_mutex_lock(%struct.pthread_mutex_t*) + +declare i32 @pthread_mutex_trylock(%struct.pthread_mutex_t*) + +declare i32 @pthread_mutex_unlock(%struct.pthread_mutex_t*) + +declare i32 @pthread_mutex_init(%struct.pthread_mutex_t*, %struct.Alignment*) + +declare i32 @pthread_key_create(i32*, void (i8*)*) + +declare i32 @pthread_key_delete(i32) + +declare i32 @pthread_mutexattr_init(%struct.Alignment*) + +declare i32 @pthread_mutexattr_settype(%struct.Alignment*, i32) + +declare i32 @pthread_mutexattr_destroy(%struct.Alignment*)
diff --git a/src/LLVM/test/CodeGen/Generic/2009-03-29-SoftFloatVectorExtract.ll b/src/LLVM/test/CodeGen/Generic/2009-03-29-SoftFloatVectorExtract.ll new file mode 100644 index 0000000..45b561a --- /dev/null +++ b/src/LLVM/test/CodeGen/Generic/2009-03-29-SoftFloatVectorExtract.ll
@@ -0,0 +1,10 @@ +; RUN: llc < %s -soft-float +; PR3899 + +@m = external global <2 x double> + +define double @vector_ex() nounwind { + %v = load <2 x double>* @m + %x = extractelement <2 x double> %v, i32 1 + ret double %x +}
diff --git a/src/LLVM/test/CodeGen/Generic/2009-04-10-SinkCrash.ll b/src/LLVM/test/CodeGen/Generic/2009-04-10-SinkCrash.ll new file mode 100644 index 0000000..125f875 --- /dev/null +++ b/src/LLVM/test/CodeGen/Generic/2009-04-10-SinkCrash.ll
@@ -0,0 +1,16 @@ +; RUN: llc < %s + +define void @QRiterate(i32 %p.1, double %tmp.212) nounwind { +entry: + br i1 false, label %shortcirc_next.1, label %exit.1.critedge + +shortcirc_next.1: ; preds = %shortcirc_next.1, %entry + %tmp.213 = fcmp une double %tmp.212, 0.000000e+00 ; <i1> [#uses=1] + br i1 %tmp.213, label %shortcirc_next.1, label %exit.1 + +exit.1.critedge: ; preds = %entry + ret void + +exit.1: ; preds = %shortcirc_next.1 + ret void +}
diff --git a/src/LLVM/test/CodeGen/Generic/2009-04-28-i128-cmp-crash.ll b/src/LLVM/test/CodeGen/Generic/2009-04-28-i128-cmp-crash.ll new file mode 100644 index 0000000..b62f811 --- /dev/null +++ b/src/LLVM/test/CodeGen/Generic/2009-04-28-i128-cmp-crash.ll
@@ -0,0 +1,32 @@ +; RUN: llc < %s +; rdar://6836460 +; rdar://7516906 +; PR5963 + +define i32 @test(i128* %P) nounwind { +entry: + %tmp48 = load i128* %P + %and49 = and i128 %tmp48, 18446744073709551616 ; <i128> [#uses=1] + %tobool = icmp ne i128 %and49, 0 ; <i1> [#uses=1] + br i1 %tobool, label %if.then50, label %if.end61 + +if.then50: ; preds = %if.then20 + ret i32 1241 + +if.end61: ; preds = %if.then50, %if.then20, %entry + ret i32 123 +} + +define i32 @test2(i320* %P) nounwind { +entry: + %tmp48 = load i320* %P + %and49 = and i320 %tmp48, 25108406941546723055343157692830665664409421777856138051584 + %tobool = icmp ne i320 %and49, 0 ; <i1> [#uses=1] + br i1 %tobool, label %if.then50, label %if.end61 + +if.then50: ; preds = %if.then20 + ret i32 1241 + +if.end61: ; preds = %if.then50, %if.then20, %entry + ret i32 123 +}
diff --git a/src/LLVM/test/CodeGen/Generic/2009-06-03-UnreachableSplitPad.ll b/src/LLVM/test/CodeGen/Generic/2009-06-03-UnreachableSplitPad.ll new file mode 100644 index 0000000..ad418f7 --- /dev/null +++ b/src/LLVM/test/CodeGen/Generic/2009-06-03-UnreachableSplitPad.ll
@@ -0,0 +1,19 @@ +; RUN: llc < %s +; PR4317 + +declare i32 @b() + +define void @a() { +entry: + ret void + +dummy: + invoke i32 @b() to label %reg unwind label %reg + +reg: + %lpad = landingpad { i8*, i32 } personality i32 (...)* @__gxx_personality_v0 + catch i8* null + ret void +} + +declare i32 @__gxx_personality_v0(...)
diff --git a/src/LLVM/test/CodeGen/Generic/2009-11-16-BadKillsCrash.ll b/src/LLVM/test/CodeGen/Generic/2009-11-16-BadKillsCrash.ll new file mode 100644 index 0000000..3cbf4c5 --- /dev/null +++ b/src/LLVM/test/CodeGen/Generic/2009-11-16-BadKillsCrash.ll
@@ -0,0 +1,79 @@ +; RUN: llc < %s +; PR5495 + +%"struct.std::__ctype_abstract_base<wchar_t>" = type { %"struct.std::locale::facet" } +%"struct.std::basic_ios<char,std::char_traits<char> >" = type { %"struct.std::ios_base", %"struct.std::basic_ostream<char,std::char_traits<char> >"*, i8, i8, %"struct.std::basic_streambuf<char,std::char_traits<char> >"*, %"struct.std::ctype<char>"*, %"struct.std::__ctype_abstract_base<wchar_t>"*, %"struct.std::__ctype_abstract_base<wchar_t>"* } +%"struct.std::basic_istream<char,std::char_traits<char> >" = type { i32 (...)**, i32, %"struct.std::basic_ios<char,std::char_traits<char> >" } +%"struct.std::basic_ostream<char,std::char_traits<char> >" = type { i32 (...)**, %"struct.std::basic_ios<char,std::char_traits<char> >" } +%"struct.std::basic_streambuf<char,std::char_traits<char> >" = type { i32 (...)**, i8*, i8*, i8*, i8*, i8*, i8*, %"struct.std::locale" } +%"struct.std::ctype<char>" = type { %"struct.std::locale::facet", i32*, i8, i32*, i32*, i16*, i8, [256 x i8], [256 x i8], i8 } +%"struct.std::ios_base" = type { i32 (...)**, i32, i32, i32, i32, i32, %"struct.std::ios_base::_Callback_list"*, %"struct.std::ios_base::_Words", [8 x %"struct.std::ios_base::_Words"], i32, %"struct.std::ios_base::_Words"*, %"struct.std::locale" } +%"struct.std::ios_base::_Callback_list" = type { %"struct.std::ios_base::_Callback_list"*, void (i32, %"struct.std::ios_base"*, i32)*, i32, i32 } +%"struct.std::ios_base::_Words" = type { i8*, i32 } +%"struct.std::locale" = type { %"struct.std::locale::_Impl"* } +%"struct.std::locale::_Impl" = type { i32, %"struct.std::locale::facet"**, i32, %"struct.std::locale::facet"**, i8** } +%"struct.std::locale::facet" = type { i32 (...)**, i32 } +%union..0._15 = type { i32 } + +declare i8* @llvm.eh.exception() nounwind readonly + +declare i8* @__cxa_begin_catch(i8*) nounwind + +declare %"struct.std::ctype<char>"* @_ZSt9use_facetISt5ctypeIcEERKT_RKSt6locale(%"struct.std::locale"*) + +define %"struct.std::basic_istream<char,std::char_traits<char> >"* @_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_PS3_(%"struct.std::basic_istream<char,std::char_traits<char> >"* %__in, i8* nocapture %__s) { +entry: + %0 = invoke %"struct.std::ctype<char>"* @_ZSt9use_facetISt5ctypeIcEERKT_RKSt6locale(%"struct.std::locale"* undef) + to label %invcont8 unwind label %lpad74 ; <%"struct.std::ctype<char>"*> [#uses=0] + +invcont8: ; preds = %entry + %1 = invoke i32 undef(%"struct.std::basic_streambuf<char,std::char_traits<char> >"* undef) + to label %bb26.preheader unwind label %lpad ; <i32> [#uses=0] + +bb26.preheader: ; preds = %invcont8 + br label %invcont38 + +bb1.i100: ; preds = %invcont38 + %2 = add nsw i32 1, %__extracted.0 ; <i32> [#uses=3] + br i1 undef, label %bb.i97, label %bb1.i + +bb.i97: ; preds = %bb1.i100 + br label %invcont38 + +bb1.i: ; preds = %bb1.i100 + %3 = invoke i32 undef(%"struct.std::basic_streambuf<char,std::char_traits<char> >"* undef) + to label %invcont38 unwind label %lpad ; <i32> [#uses=0] + +invcont24: ; preds = %invcont38 + %4 = invoke i32 undef(%"struct.std::basic_streambuf<char,std::char_traits<char> >"* undef) + to label %_ZNSt15basic_streambufIcSt11char_traitsIcEE6sbumpcEv.exit.i unwind label %lpad ; <i32> [#uses=0] + +_ZNSt15basic_streambufIcSt11char_traitsIcEE6sbumpcEv.exit.i: ; preds = %invcont24 + br i1 undef, label %invcont25, label %bb.i93 + +bb.i93: ; preds = %_ZNSt15basic_streambufIcSt11char_traitsIcEE6sbumpcEv.exit.i + %5 = invoke i32 undef(%"struct.std::basic_streambuf<char,std::char_traits<char> >"* undef) + to label %invcont25 unwind label %lpad ; <i32> [#uses=0] + +invcont25: ; preds = %bb.i93, %_ZNSt15basic_streambufIcSt11char_traitsIcEE6sbumpcEv.exit.i + br label %invcont38 + +invcont38: ; preds = %invcont25, %bb1.i, %bb.i97, %bb26.preheader + %__extracted.0 = phi i32 [ 0, %bb26.preheader ], [ undef, %invcont25 ], [ %2, %bb.i97 ], [ %2, %bb1.i ] ; <i32> [#uses=1] + br i1 false, label %bb1.i100, label %invcont24 + +lpad: ; preds = %bb.i93, %invcont24, %bb1.i, %invcont8 + %__extracted.1 = phi i32 [ 0, %invcont8 ], [ %2, %bb1.i ], [ undef, %bb.i93 ], [ undef, %invcont24 ] ; <i32> [#uses=0] + %lpad1 = landingpad { i8*, i32 } personality i32 (...)* @__gxx_personality_v0 + catch i8* null + %eh_ptr = extractvalue { i8*, i32 } %lpad1, 0 + %6 = call i8* @__cxa_begin_catch(i8* %eh_ptr) nounwind ; <i8*> [#uses=0] + unreachable + +lpad74: ; preds = %entry + %lpad2 = landingpad { i8*, i32 } personality i32 (...)* @__gxx_personality_v0 + cleanup + unreachable +} + +declare i32 @__gxx_personality_v0(...)
diff --git a/src/LLVM/test/CodeGen/Generic/2010-07-27-DAGCombineCrash.ll b/src/LLVM/test/CodeGen/Generic/2010-07-27-DAGCombineCrash.ll new file mode 100644 index 0000000..a2945aa --- /dev/null +++ b/src/LLVM/test/CodeGen/Generic/2010-07-27-DAGCombineCrash.ll
@@ -0,0 +1,6 @@ +; RUN: llc < %s + +define float @test1() +{ + ret float extractelement (<2 x float> bitcast (<1 x double> <double 0x3f800000> to <2 x float>), i32 1); +}
diff --git a/src/LLVM/test/CodeGen/Generic/2010-11-04-BigByval.ll b/src/LLVM/test/CodeGen/Generic/2010-11-04-BigByval.ll new file mode 100644 index 0000000..df2ca4c --- /dev/null +++ b/src/LLVM/test/CodeGen/Generic/2010-11-04-BigByval.ll
@@ -0,0 +1,11 @@ +; RUN: llc < %s +; PR7170 + +%big = type [131072 x i8] + +declare void @foo(%big* byval align 1) + +define void @bar(%big* byval align 1 %x) { + call void @foo(%big* byval align 1 %x) + ret void +}
diff --git a/src/LLVM/test/CodeGen/Generic/2010-ZeroSizedArg.ll b/src/LLVM/test/CodeGen/Generic/2010-ZeroSizedArg.ll new file mode 100644 index 0000000..d9d8374 --- /dev/null +++ b/src/LLVM/test/CodeGen/Generic/2010-ZeroSizedArg.ll
@@ -0,0 +1,17 @@ +; RUN: llc < %s +; PR4975 + +%0 = type <{ [0 x i32] }> +%union.T0 = type { } + +@.str = private constant [1 x i8] c" " + +define void @t(%0) nounwind { +entry: + %arg0 = alloca %union.T0 + %1 = bitcast %union.T0* %arg0 to %0* + store %0 %0, %0* %1, align 1 + ret void +} + +declare i32 @printf(i8*, ...)
diff --git a/src/LLVM/test/CodeGen/Generic/2011-01-06-BigNumberCrash.ll b/src/LLVM/test/CodeGen/Generic/2011-01-06-BigNumberCrash.ll new file mode 100644 index 0000000..05fdf4c --- /dev/null +++ b/src/LLVM/test/CodeGen/Generic/2011-01-06-BigNumberCrash.ll
@@ -0,0 +1,15 @@ +; RUN: llc < %s +; PR8582 + +define void @uint82() nounwind { +entry: + %tmp3 = select i1 undef, i960 4872657003430991806293355221650511486142000513558154090491761976385142772940676648094983476628187266917101386048750715027104076737938178423519545241493072038894065019132638919037781494702597609951702322267198307200588774905587225212622510286498675097141625012190497682454879271766334636032, i960 0 + br i1 undef, label %for.body25.for.body25_crit_edge, label %if.end + +for.body25.for.body25_crit_edge: ; preds = %entry + %ins = or i960 %tmp3, undef + ret void + +if.end: ; preds = %entry + ret void +}
diff --git a/src/LLVM/test/CodeGen/Generic/2011-07-07-ScheduleDAGCrash.ll b/src/LLVM/test/CodeGen/Generic/2011-07-07-ScheduleDAGCrash.ll new file mode 100644 index 0000000..da26504 --- /dev/null +++ b/src/LLVM/test/CodeGen/Generic/2011-07-07-ScheduleDAGCrash.ll
@@ -0,0 +1,19 @@ +; RUN: llc < %s +; This caused ScheduleDAG to crash in EmitPhysRegCopy when searching +; the uses of a copy to a physical register without ignoring non-data +; dependence, PR10220. + +; The ARM backend can't handle i256 math at the moment. +; XFAIL: arm + +define void @f(i256* nocapture %a, i256* nocapture %b, i256* nocapture %cc, i256* nocapture %dd) nounwind uwtable noinline ssp { +entry: + %c = load i256* %cc + %d = load i256* %dd + %add = add nsw i256 %c, %d + store i256 %add, i256* %a, align 8 + %or = or i256 %c, 1606938044258990275541962092341162602522202993782792835301376 + %add6 = add nsw i256 %or, %d + store i256 %add6, i256* %b, align 8 + ret void +}
diff --git a/src/LLVM/test/CodeGen/Generic/APIntLoadStore.ll b/src/LLVM/test/CodeGen/Generic/APIntLoadStore.ll new file mode 100644 index 0000000..7c71a33 --- /dev/null +++ b/src/LLVM/test/CodeGen/Generic/APIntLoadStore.ll
@@ -0,0 +1,2049 @@ +; RUN: llc < %s > %t +@i1_l = external global i1 ; <i1*> [#uses=1] +@i1_s = external global i1 ; <i1*> [#uses=1] +@i2_l = external global i2 ; <i2*> [#uses=1] +@i2_s = external global i2 ; <i2*> [#uses=1] +@i3_l = external global i3 ; <i3*> [#uses=1] +@i3_s = external global i3 ; <i3*> [#uses=1] +@i4_l = external global i4 ; <i4*> [#uses=1] +@i4_s = external global i4 ; <i4*> [#uses=1] +@i5_l = external global i5 ; <i5*> [#uses=1] +@i5_s = external global i5 ; <i5*> [#uses=1] +@i6_l = external global i6 ; <i6*> [#uses=1] +@i6_s = external global i6 ; <i6*> [#uses=1] +@i7_l = external global i7 ; <i7*> [#uses=1] +@i7_s = external global i7 ; <i7*> [#uses=1] +@i8_l = external global i8 ; <i8*> [#uses=1] +@i8_s = external global i8 ; <i8*> [#uses=1] +@i9_l = external global i9 ; <i9*> [#uses=1] +@i9_s = external global i9 ; <i9*> [#uses=1] +@i10_l = external global i10 ; <i10*> [#uses=1] +@i10_s = external global i10 ; <i10*> [#uses=1] +@i11_l = external global i11 ; <i11*> [#uses=1] +@i11_s = external global i11 ; <i11*> [#uses=1] +@i12_l = external global i12 ; <i12*> [#uses=1] +@i12_s = external global i12 ; <i12*> [#uses=1] +@i13_l = external global i13 ; <i13*> [#uses=1] +@i13_s = external global i13 ; <i13*> [#uses=1] +@i14_l = external global i14 ; <i14*> [#uses=1] +@i14_s = external global i14 ; <i14*> [#uses=1] +@i15_l = external global i15 ; <i15*> [#uses=1] +@i15_s = external global i15 ; <i15*> [#uses=1] +@i16_l = external global i16 ; <i16*> [#uses=1] +@i16_s = external global i16 ; <i16*> [#uses=1] +@i17_l = external global i17 ; <i17*> [#uses=1] +@i17_s = external global i17 ; <i17*> [#uses=1] +@i18_l = external global i18 ; <i18*> [#uses=1] +@i18_s = external global i18 ; <i18*> [#uses=1] +@i19_l = external global i19 ; <i19*> [#uses=1] +@i19_s = external global i19 ; <i19*> [#uses=1] +@i20_l = external global i20 ; <i20*> [#uses=1] +@i20_s = external global i20 ; <i20*> [#uses=1] +@i21_l = external global i21 ; <i21*> [#uses=1] +@i21_s = external global i21 ; <i21*> [#uses=1] +@i22_l = external global i22 ; <i22*> [#uses=1] +@i22_s = external global i22 ; <i22*> [#uses=1] +@i23_l = external global i23 ; <i23*> [#uses=1] +@i23_s = external global i23 ; <i23*> [#uses=1] +@i24_l = external global i24 ; <i24*> [#uses=1] +@i24_s = external global i24 ; <i24*> [#uses=1] +@i25_l = external global i25 ; <i25*> [#uses=1] +@i25_s = external global i25 ; <i25*> [#uses=1] +@i26_l = external global i26 ; <i26*> [#uses=1] +@i26_s = external global i26 ; <i26*> [#uses=1] +@i27_l = external global i27 ; <i27*> [#uses=1] +@i27_s = external global i27 ; <i27*> [#uses=1] +@i28_l = external global i28 ; <i28*> [#uses=1] +@i28_s = external global i28 ; <i28*> [#uses=1] +@i29_l = external global i29 ; <i29*> [#uses=1] +@i29_s = external global i29 ; <i29*> [#uses=1] +@i30_l = external global i30 ; <i30*> [#uses=1] +@i30_s = external global i30 ; <i30*> [#uses=1] +@i31_l = external global i31 ; <i31*> [#uses=1] +@i31_s = external global i31 ; <i31*> [#uses=1] +@i32_l = external global i32 ; <i32*> [#uses=1] +@i32_s = external global i32 ; <i32*> [#uses=1] +@i33_l = external global i33 ; <i33*> [#uses=1] +@i33_s = external global i33 ; <i33*> [#uses=1] +@i34_l = external global i34 ; <i34*> [#uses=1] +@i34_s = external global i34 ; <i34*> [#uses=1] +@i35_l = external global i35 ; <i35*> [#uses=1] +@i35_s = external global i35 ; <i35*> [#uses=1] +@i36_l = external global i36 ; <i36*> [#uses=1] +@i36_s = external global i36 ; <i36*> [#uses=1] +@i37_l = external global i37 ; <i37*> [#uses=1] +@i37_s = external global i37 ; <i37*> [#uses=1] +@i38_l = external global i38 ; <i38*> [#uses=1] +@i38_s = external global i38 ; <i38*> [#uses=1] +@i39_l = external global i39 ; <i39*> [#uses=1] +@i39_s = external global i39 ; <i39*> [#uses=1] +@i40_l = external global i40 ; <i40*> [#uses=1] +@i40_s = external global i40 ; <i40*> [#uses=1] +@i41_l = external global i41 ; <i41*> [#uses=1] +@i41_s = external global i41 ; <i41*> [#uses=1] +@i42_l = external global i42 ; <i42*> [#uses=1] +@i42_s = external global i42 ; <i42*> [#uses=1] +@i43_l = external global i43 ; <i43*> [#uses=1] +@i43_s = external global i43 ; <i43*> [#uses=1] +@i44_l = external global i44 ; <i44*> [#uses=1] +@i44_s = external global i44 ; <i44*> [#uses=1] +@i45_l = external global i45 ; <i45*> [#uses=1] +@i45_s = external global i45 ; <i45*> [#uses=1] +@i46_l = external global i46 ; <i46*> [#uses=1] +@i46_s = external global i46 ; <i46*> [#uses=1] +@i47_l = external global i47 ; <i47*> [#uses=1] +@i47_s = external global i47 ; <i47*> [#uses=1] +@i48_l = external global i48 ; <i48*> [#uses=1] +@i48_s = external global i48 ; <i48*> [#uses=1] +@i49_l = external global i49 ; <i49*> [#uses=1] +@i49_s = external global i49 ; <i49*> [#uses=1] +@i50_l = external global i50 ; <i50*> [#uses=1] +@i50_s = external global i50 ; <i50*> [#uses=1] +@i51_l = external global i51 ; <i51*> [#uses=1] +@i51_s = external global i51 ; <i51*> [#uses=1] +@i52_l = external global i52 ; <i52*> [#uses=1] +@i52_s = external global i52 ; <i52*> [#uses=1] +@i53_l = external global i53 ; <i53*> [#uses=1] +@i53_s = external global i53 ; <i53*> [#uses=1] +@i54_l = external global i54 ; <i54*> [#uses=1] +@i54_s = external global i54 ; <i54*> [#uses=1] +@i55_l = external global i55 ; <i55*> [#uses=1] +@i55_s = external global i55 ; <i55*> [#uses=1] +@i56_l = external global i56 ; <i56*> [#uses=1] +@i56_s = external global i56 ; <i56*> [#uses=1] +@i57_l = external global i57 ; <i57*> [#uses=1] +@i57_s = external global i57 ; <i57*> [#uses=1] +@i58_l = external global i58 ; <i58*> [#uses=1] +@i58_s = external global i58 ; <i58*> [#uses=1] +@i59_l = external global i59 ; <i59*> [#uses=1] +@i59_s = external global i59 ; <i59*> [#uses=1] +@i60_l = external global i60 ; <i60*> [#uses=1] +@i60_s = external global i60 ; <i60*> [#uses=1] +@i61_l = external global i61 ; <i61*> [#uses=1] +@i61_s = external global i61 ; <i61*> [#uses=1] +@i62_l = external global i62 ; <i62*> [#uses=1] +@i62_s = external global i62 ; <i62*> [#uses=1] +@i63_l = external global i63 ; <i63*> [#uses=1] +@i63_s = external global i63 ; <i63*> [#uses=1] +@i64_l = external global i64 ; <i64*> [#uses=1] +@i64_s = external global i64 ; <i64*> [#uses=1] +@i65_l = external global i65 ; <i65*> [#uses=1] +@i65_s = external global i65 ; <i65*> [#uses=1] +@i66_l = external global i66 ; <i66*> [#uses=1] +@i66_s = external global i66 ; <i66*> [#uses=1] +@i67_l = external global i67 ; <i67*> [#uses=1] +@i67_s = external global i67 ; <i67*> [#uses=1] +@i68_l = external global i68 ; <i68*> [#uses=1] +@i68_s = external global i68 ; <i68*> [#uses=1] +@i69_l = external global i69 ; <i69*> [#uses=1] +@i69_s = external global i69 ; <i69*> [#uses=1] +@i70_l = external global i70 ; <i70*> [#uses=1] +@i70_s = external global i70 ; <i70*> [#uses=1] +@i71_l = external global i71 ; <i71*> [#uses=1] +@i71_s = external global i71 ; <i71*> [#uses=1] +@i72_l = external global i72 ; <i72*> [#uses=1] +@i72_s = external global i72 ; <i72*> [#uses=1] +@i73_l = external global i73 ; <i73*> [#uses=1] +@i73_s = external global i73 ; <i73*> [#uses=1] +@i74_l = external global i74 ; <i74*> [#uses=1] +@i74_s = external global i74 ; <i74*> [#uses=1] +@i75_l = external global i75 ; <i75*> [#uses=1] +@i75_s = external global i75 ; <i75*> [#uses=1] +@i76_l = external global i76 ; <i76*> [#uses=1] +@i76_s = external global i76 ; <i76*> [#uses=1] +@i77_l = external global i77 ; <i77*> [#uses=1] +@i77_s = external global i77 ; <i77*> [#uses=1] +@i78_l = external global i78 ; <i78*> [#uses=1] +@i78_s = external global i78 ; <i78*> [#uses=1] +@i79_l = external global i79 ; <i79*> [#uses=1] +@i79_s = external global i79 ; <i79*> [#uses=1] +@i80_l = external global i80 ; <i80*> [#uses=1] +@i80_s = external global i80 ; <i80*> [#uses=1] +@i81_l = external global i81 ; <i81*> [#uses=1] +@i81_s = external global i81 ; <i81*> [#uses=1] +@i82_l = external global i82 ; <i82*> [#uses=1] +@i82_s = external global i82 ; <i82*> [#uses=1] +@i83_l = external global i83 ; <i83*> [#uses=1] +@i83_s = external global i83 ; <i83*> [#uses=1] +@i84_l = external global i84 ; <i84*> [#uses=1] +@i84_s = external global i84 ; <i84*> [#uses=1] +@i85_l = external global i85 ; <i85*> [#uses=1] +@i85_s = external global i85 ; <i85*> [#uses=1] +@i86_l = external global i86 ; <i86*> [#uses=1] +@i86_s = external global i86 ; <i86*> [#uses=1] +@i87_l = external global i87 ; <i87*> [#uses=1] +@i87_s = external global i87 ; <i87*> [#uses=1] +@i88_l = external global i88 ; <i88*> [#uses=1] +@i88_s = external global i88 ; <i88*> [#uses=1] +@i89_l = external global i89 ; <i89*> [#uses=1] +@i89_s = external global i89 ; <i89*> [#uses=1] +@i90_l = external global i90 ; <i90*> [#uses=1] +@i90_s = external global i90 ; <i90*> [#uses=1] +@i91_l = external global i91 ; <i91*> [#uses=1] +@i91_s = external global i91 ; <i91*> [#uses=1] +@i92_l = external global i92 ; <i92*> [#uses=1] +@i92_s = external global i92 ; <i92*> [#uses=1] +@i93_l = external global i93 ; <i93*> [#uses=1] +@i93_s = external global i93 ; <i93*> [#uses=1] +@i94_l = external global i94 ; <i94*> [#uses=1] +@i94_s = external global i94 ; <i94*> [#uses=1] +@i95_l = external global i95 ; <i95*> [#uses=1] +@i95_s = external global i95 ; <i95*> [#uses=1] +@i96_l = external global i96 ; <i96*> [#uses=1] +@i96_s = external global i96 ; <i96*> [#uses=1] +@i97_l = external global i97 ; <i97*> [#uses=1] +@i97_s = external global i97 ; <i97*> [#uses=1] +@i98_l = external global i98 ; <i98*> [#uses=1] +@i98_s = external global i98 ; <i98*> [#uses=1] +@i99_l = external global i99 ; <i99*> [#uses=1] +@i99_s = external global i99 ; <i99*> [#uses=1] +@i100_l = external global i100 ; <i100*> [#uses=1] +@i100_s = external global i100 ; <i100*> [#uses=1] +@i101_l = external global i101 ; <i101*> [#uses=1] +@i101_s = external global i101 ; <i101*> [#uses=1] +@i102_l = external global i102 ; <i102*> [#uses=1] +@i102_s = external global i102 ; <i102*> [#uses=1] +@i103_l = external global i103 ; <i103*> [#uses=1] +@i103_s = external global i103 ; <i103*> [#uses=1] +@i104_l = external global i104 ; <i104*> [#uses=1] +@i104_s = external global i104 ; <i104*> [#uses=1] +@i105_l = external global i105 ; <i105*> [#uses=1] +@i105_s = external global i105 ; <i105*> [#uses=1] +@i106_l = external global i106 ; <i106*> [#uses=1] +@i106_s = external global i106 ; <i106*> [#uses=1] +@i107_l = external global i107 ; <i107*> [#uses=1] +@i107_s = external global i107 ; <i107*> [#uses=1] +@i108_l = external global i108 ; <i108*> [#uses=1] +@i108_s = external global i108 ; <i108*> [#uses=1] +@i109_l = external global i109 ; <i109*> [#uses=1] +@i109_s = external global i109 ; <i109*> [#uses=1] +@i110_l = external global i110 ; <i110*> [#uses=1] +@i110_s = external global i110 ; <i110*> [#uses=1] +@i111_l = external global i111 ; <i111*> [#uses=1] +@i111_s = external global i111 ; <i111*> [#uses=1] +@i112_l = external global i112 ; <i112*> [#uses=1] +@i112_s = external global i112 ; <i112*> [#uses=1] +@i113_l = external global i113 ; <i113*> [#uses=1] +@i113_s = external global i113 ; <i113*> [#uses=1] +@i114_l = external global i114 ; <i114*> [#uses=1] +@i114_s = external global i114 ; <i114*> [#uses=1] +@i115_l = external global i115 ; <i115*> [#uses=1] +@i115_s = external global i115 ; <i115*> [#uses=1] +@i116_l = external global i116 ; <i116*> [#uses=1] +@i116_s = external global i116 ; <i116*> [#uses=1] +@i117_l = external global i117 ; <i117*> [#uses=1] +@i117_s = external global i117 ; <i117*> [#uses=1] +@i118_l = external global i118 ; <i118*> [#uses=1] +@i118_s = external global i118 ; <i118*> [#uses=1] +@i119_l = external global i119 ; <i119*> [#uses=1] +@i119_s = external global i119 ; <i119*> [#uses=1] +@i120_l = external global i120 ; <i120*> [#uses=1] +@i120_s = external global i120 ; <i120*> [#uses=1] +@i121_l = external global i121 ; <i121*> [#uses=1] +@i121_s = external global i121 ; <i121*> [#uses=1] +@i122_l = external global i122 ; <i122*> [#uses=1] +@i122_s = external global i122 ; <i122*> [#uses=1] +@i123_l = external global i123 ; <i123*> [#uses=1] +@i123_s = external global i123 ; <i123*> [#uses=1] +@i124_l = external global i124 ; <i124*> [#uses=1] +@i124_s = external global i124 ; <i124*> [#uses=1] +@i125_l = external global i125 ; <i125*> [#uses=1] +@i125_s = external global i125 ; <i125*> [#uses=1] +@i126_l = external global i126 ; <i126*> [#uses=1] +@i126_s = external global i126 ; <i126*> [#uses=1] +@i127_l = external global i127 ; <i127*> [#uses=1] +@i127_s = external global i127 ; <i127*> [#uses=1] +@i128_l = external global i128 ; <i128*> [#uses=1] +@i128_s = external global i128 ; <i128*> [#uses=1] +@i129_l = external global i129 ; <i129*> [#uses=1] +@i129_s = external global i129 ; <i129*> [#uses=1] +@i130_l = external global i130 ; <i130*> [#uses=1] +@i130_s = external global i130 ; <i130*> [#uses=1] +@i131_l = external global i131 ; <i131*> [#uses=1] +@i131_s = external global i131 ; <i131*> [#uses=1] +@i132_l = external global i132 ; <i132*> [#uses=1] +@i132_s = external global i132 ; <i132*> [#uses=1] +@i133_l = external global i133 ; <i133*> [#uses=1] +@i133_s = external global i133 ; <i133*> [#uses=1] +@i134_l = external global i134 ; <i134*> [#uses=1] +@i134_s = external global i134 ; <i134*> [#uses=1] +@i135_l = external global i135 ; <i135*> [#uses=1] +@i135_s = external global i135 ; <i135*> [#uses=1] +@i136_l = external global i136 ; <i136*> [#uses=1] +@i136_s = external global i136 ; <i136*> [#uses=1] +@i137_l = external global i137 ; <i137*> [#uses=1] +@i137_s = external global i137 ; <i137*> [#uses=1] +@i138_l = external global i138 ; <i138*> [#uses=1] +@i138_s = external global i138 ; <i138*> [#uses=1] +@i139_l = external global i139 ; <i139*> [#uses=1] +@i139_s = external global i139 ; <i139*> [#uses=1] +@i140_l = external global i140 ; <i140*> [#uses=1] +@i140_s = external global i140 ; <i140*> [#uses=1] +@i141_l = external global i141 ; <i141*> [#uses=1] +@i141_s = external global i141 ; <i141*> [#uses=1] +@i142_l = external global i142 ; <i142*> [#uses=1] +@i142_s = external global i142 ; <i142*> [#uses=1] +@i143_l = external global i143 ; <i143*> [#uses=1] +@i143_s = external global i143 ; <i143*> [#uses=1] +@i144_l = external global i144 ; <i144*> [#uses=1] +@i144_s = external global i144 ; <i144*> [#uses=1] +@i145_l = external global i145 ; <i145*> [#uses=1] +@i145_s = external global i145 ; <i145*> [#uses=1] +@i146_l = external global i146 ; <i146*> [#uses=1] +@i146_s = external global i146 ; <i146*> [#uses=1] +@i147_l = external global i147 ; <i147*> [#uses=1] +@i147_s = external global i147 ; <i147*> [#uses=1] +@i148_l = external global i148 ; <i148*> [#uses=1] +@i148_s = external global i148 ; <i148*> [#uses=1] +@i149_l = external global i149 ; <i149*> [#uses=1] +@i149_s = external global i149 ; <i149*> [#uses=1] +@i150_l = external global i150 ; <i150*> [#uses=1] +@i150_s = external global i150 ; <i150*> [#uses=1] +@i151_l = external global i151 ; <i151*> [#uses=1] +@i151_s = external global i151 ; <i151*> [#uses=1] +@i152_l = external global i152 ; <i152*> [#uses=1] +@i152_s = external global i152 ; <i152*> [#uses=1] +@i153_l = external global i153 ; <i153*> [#uses=1] +@i153_s = external global i153 ; <i153*> [#uses=1] +@i154_l = external global i154 ; <i154*> [#uses=1] +@i154_s = external global i154 ; <i154*> [#uses=1] +@i155_l = external global i155 ; <i155*> [#uses=1] +@i155_s = external global i155 ; <i155*> [#uses=1] +@i156_l = external global i156 ; <i156*> [#uses=1] +@i156_s = external global i156 ; <i156*> [#uses=1] +@i157_l = external global i157 ; <i157*> [#uses=1] +@i157_s = external global i157 ; <i157*> [#uses=1] +@i158_l = external global i158 ; <i158*> [#uses=1] +@i158_s = external global i158 ; <i158*> [#uses=1] +@i159_l = external global i159 ; <i159*> [#uses=1] +@i159_s = external global i159 ; <i159*> [#uses=1] +@i160_l = external global i160 ; <i160*> [#uses=1] +@i160_s = external global i160 ; <i160*> [#uses=1] +@i161_l = external global i161 ; <i161*> [#uses=1] +@i161_s = external global i161 ; <i161*> [#uses=1] +@i162_l = external global i162 ; <i162*> [#uses=1] +@i162_s = external global i162 ; <i162*> [#uses=1] +@i163_l = external global i163 ; <i163*> [#uses=1] +@i163_s = external global i163 ; <i163*> [#uses=1] +@i164_l = external global i164 ; <i164*> [#uses=1] +@i164_s = external global i164 ; <i164*> [#uses=1] +@i165_l = external global i165 ; <i165*> [#uses=1] +@i165_s = external global i165 ; <i165*> [#uses=1] +@i166_l = external global i166 ; <i166*> [#uses=1] +@i166_s = external global i166 ; <i166*> [#uses=1] +@i167_l = external global i167 ; <i167*> [#uses=1] +@i167_s = external global i167 ; <i167*> [#uses=1] +@i168_l = external global i168 ; <i168*> [#uses=1] +@i168_s = external global i168 ; <i168*> [#uses=1] +@i169_l = external global i169 ; <i169*> [#uses=1] +@i169_s = external global i169 ; <i169*> [#uses=1] +@i170_l = external global i170 ; <i170*> [#uses=1] +@i170_s = external global i170 ; <i170*> [#uses=1] +@i171_l = external global i171 ; <i171*> [#uses=1] +@i171_s = external global i171 ; <i171*> [#uses=1] +@i172_l = external global i172 ; <i172*> [#uses=1] +@i172_s = external global i172 ; <i172*> [#uses=1] +@i173_l = external global i173 ; <i173*> [#uses=1] +@i173_s = external global i173 ; <i173*> [#uses=1] +@i174_l = external global i174 ; <i174*> [#uses=1] +@i174_s = external global i174 ; <i174*> [#uses=1] +@i175_l = external global i175 ; <i175*> [#uses=1] +@i175_s = external global i175 ; <i175*> [#uses=1] +@i176_l = external global i176 ; <i176*> [#uses=1] +@i176_s = external global i176 ; <i176*> [#uses=1] +@i177_l = external global i177 ; <i177*> [#uses=1] +@i177_s = external global i177 ; <i177*> [#uses=1] +@i178_l = external global i178 ; <i178*> [#uses=1] +@i178_s = external global i178 ; <i178*> [#uses=1] +@i179_l = external global i179 ; <i179*> [#uses=1] +@i179_s = external global i179 ; <i179*> [#uses=1] +@i180_l = external global i180 ; <i180*> [#uses=1] +@i180_s = external global i180 ; <i180*> [#uses=1] +@i181_l = external global i181 ; <i181*> [#uses=1] +@i181_s = external global i181 ; <i181*> [#uses=1] +@i182_l = external global i182 ; <i182*> [#uses=1] +@i182_s = external global i182 ; <i182*> [#uses=1] +@i183_l = external global i183 ; <i183*> [#uses=1] +@i183_s = external global i183 ; <i183*> [#uses=1] +@i184_l = external global i184 ; <i184*> [#uses=1] +@i184_s = external global i184 ; <i184*> [#uses=1] +@i185_l = external global i185 ; <i185*> [#uses=1] +@i185_s = external global i185 ; <i185*> [#uses=1] +@i186_l = external global i186 ; <i186*> [#uses=1] +@i186_s = external global i186 ; <i186*> [#uses=1] +@i187_l = external global i187 ; <i187*> [#uses=1] +@i187_s = external global i187 ; <i187*> [#uses=1] +@i188_l = external global i188 ; <i188*> [#uses=1] +@i188_s = external global i188 ; <i188*> [#uses=1] +@i189_l = external global i189 ; <i189*> [#uses=1] +@i189_s = external global i189 ; <i189*> [#uses=1] +@i190_l = external global i190 ; <i190*> [#uses=1] +@i190_s = external global i190 ; <i190*> [#uses=1] +@i191_l = external global i191 ; <i191*> [#uses=1] +@i191_s = external global i191 ; <i191*> [#uses=1] +@i192_l = external global i192 ; <i192*> [#uses=1] +@i192_s = external global i192 ; <i192*> [#uses=1] +@i193_l = external global i193 ; <i193*> [#uses=1] +@i193_s = external global i193 ; <i193*> [#uses=1] +@i194_l = external global i194 ; <i194*> [#uses=1] +@i194_s = external global i194 ; <i194*> [#uses=1] +@i195_l = external global i195 ; <i195*> [#uses=1] +@i195_s = external global i195 ; <i195*> [#uses=1] +@i196_l = external global i196 ; <i196*> [#uses=1] +@i196_s = external global i196 ; <i196*> [#uses=1] +@i197_l = external global i197 ; <i197*> [#uses=1] +@i197_s = external global i197 ; <i197*> [#uses=1] +@i198_l = external global i198 ; <i198*> [#uses=1] +@i198_s = external global i198 ; <i198*> [#uses=1] +@i199_l = external global i199 ; <i199*> [#uses=1] +@i199_s = external global i199 ; <i199*> [#uses=1] +@i200_l = external global i200 ; <i200*> [#uses=1] +@i200_s = external global i200 ; <i200*> [#uses=1] +@i201_l = external global i201 ; <i201*> [#uses=1] +@i201_s = external global i201 ; <i201*> [#uses=1] +@i202_l = external global i202 ; <i202*> [#uses=1] +@i202_s = external global i202 ; <i202*> [#uses=1] +@i203_l = external global i203 ; <i203*> [#uses=1] +@i203_s = external global i203 ; <i203*> [#uses=1] +@i204_l = external global i204 ; <i204*> [#uses=1] +@i204_s = external global i204 ; <i204*> [#uses=1] +@i205_l = external global i205 ; <i205*> [#uses=1] +@i205_s = external global i205 ; <i205*> [#uses=1] +@i206_l = external global i206 ; <i206*> [#uses=1] +@i206_s = external global i206 ; <i206*> [#uses=1] +@i207_l = external global i207 ; <i207*> [#uses=1] +@i207_s = external global i207 ; <i207*> [#uses=1] +@i208_l = external global i208 ; <i208*> [#uses=1] +@i208_s = external global i208 ; <i208*> [#uses=1] +@i209_l = external global i209 ; <i209*> [#uses=1] +@i209_s = external global i209 ; <i209*> [#uses=1] +@i210_l = external global i210 ; <i210*> [#uses=1] +@i210_s = external global i210 ; <i210*> [#uses=1] +@i211_l = external global i211 ; <i211*> [#uses=1] +@i211_s = external global i211 ; <i211*> [#uses=1] +@i212_l = external global i212 ; <i212*> [#uses=1] +@i212_s = external global i212 ; <i212*> [#uses=1] +@i213_l = external global i213 ; <i213*> [#uses=1] +@i213_s = external global i213 ; <i213*> [#uses=1] +@i214_l = external global i214 ; <i214*> [#uses=1] +@i214_s = external global i214 ; <i214*> [#uses=1] +@i215_l = external global i215 ; <i215*> [#uses=1] +@i215_s = external global i215 ; <i215*> [#uses=1] +@i216_l = external global i216 ; <i216*> [#uses=1] +@i216_s = external global i216 ; <i216*> [#uses=1] +@i217_l = external global i217 ; <i217*> [#uses=1] +@i217_s = external global i217 ; <i217*> [#uses=1] +@i218_l = external global i218 ; <i218*> [#uses=1] +@i218_s = external global i218 ; <i218*> [#uses=1] +@i219_l = external global i219 ; <i219*> [#uses=1] +@i219_s = external global i219 ; <i219*> [#uses=1] +@i220_l = external global i220 ; <i220*> [#uses=1] +@i220_s = external global i220 ; <i220*> [#uses=1] +@i221_l = external global i221 ; <i221*> [#uses=1] +@i221_s = external global i221 ; <i221*> [#uses=1] +@i222_l = external global i222 ; <i222*> [#uses=1] +@i222_s = external global i222 ; <i222*> [#uses=1] +@i223_l = external global i223 ; <i223*> [#uses=1] +@i223_s = external global i223 ; <i223*> [#uses=1] +@i224_l = external global i224 ; <i224*> [#uses=1] +@i224_s = external global i224 ; <i224*> [#uses=1] +@i225_l = external global i225 ; <i225*> [#uses=1] +@i225_s = external global i225 ; <i225*> [#uses=1] +@i226_l = external global i226 ; <i226*> [#uses=1] +@i226_s = external global i226 ; <i226*> [#uses=1] +@i227_l = external global i227 ; <i227*> [#uses=1] +@i227_s = external global i227 ; <i227*> [#uses=1] +@i228_l = external global i228 ; <i228*> [#uses=1] +@i228_s = external global i228 ; <i228*> [#uses=1] +@i229_l = external global i229 ; <i229*> [#uses=1] +@i229_s = external global i229 ; <i229*> [#uses=1] +@i230_l = external global i230 ; <i230*> [#uses=1] +@i230_s = external global i230 ; <i230*> [#uses=1] +@i231_l = external global i231 ; <i231*> [#uses=1] +@i231_s = external global i231 ; <i231*> [#uses=1] +@i232_l = external global i232 ; <i232*> [#uses=1] +@i232_s = external global i232 ; <i232*> [#uses=1] +@i233_l = external global i233 ; <i233*> [#uses=1] +@i233_s = external global i233 ; <i233*> [#uses=1] +@i234_l = external global i234 ; <i234*> [#uses=1] +@i234_s = external global i234 ; <i234*> [#uses=1] +@i235_l = external global i235 ; <i235*> [#uses=1] +@i235_s = external global i235 ; <i235*> [#uses=1] +@i236_l = external global i236 ; <i236*> [#uses=1] +@i236_s = external global i236 ; <i236*> [#uses=1] +@i237_l = external global i237 ; <i237*> [#uses=1] +@i237_s = external global i237 ; <i237*> [#uses=1] +@i238_l = external global i238 ; <i238*> [#uses=1] +@i238_s = external global i238 ; <i238*> [#uses=1] +@i239_l = external global i239 ; <i239*> [#uses=1] +@i239_s = external global i239 ; <i239*> [#uses=1] +@i240_l = external global i240 ; <i240*> [#uses=1] +@i240_s = external global i240 ; <i240*> [#uses=1] +@i241_l = external global i241 ; <i241*> [#uses=1] +@i241_s = external global i241 ; <i241*> [#uses=1] +@i242_l = external global i242 ; <i242*> [#uses=1] +@i242_s = external global i242 ; <i242*> [#uses=1] +@i243_l = external global i243 ; <i243*> [#uses=1] +@i243_s = external global i243 ; <i243*> [#uses=1] +@i244_l = external global i244 ; <i244*> [#uses=1] +@i244_s = external global i244 ; <i244*> [#uses=1] +@i245_l = external global i245 ; <i245*> [#uses=1] +@i245_s = external global i245 ; <i245*> [#uses=1] +@i246_l = external global i246 ; <i246*> [#uses=1] +@i246_s = external global i246 ; <i246*> [#uses=1] +@i247_l = external global i247 ; <i247*> [#uses=1] +@i247_s = external global i247 ; <i247*> [#uses=1] +@i248_l = external global i248 ; <i248*> [#uses=1] +@i248_s = external global i248 ; <i248*> [#uses=1] +@i249_l = external global i249 ; <i249*> [#uses=1] +@i249_s = external global i249 ; <i249*> [#uses=1] +@i250_l = external global i250 ; <i250*> [#uses=1] +@i250_s = external global i250 ; <i250*> [#uses=1] +@i251_l = external global i251 ; <i251*> [#uses=1] +@i251_s = external global i251 ; <i251*> [#uses=1] +@i252_l = external global i252 ; <i252*> [#uses=1] +@i252_s = external global i252 ; <i252*> [#uses=1] +@i253_l = external global i253 ; <i253*> [#uses=1] +@i253_s = external global i253 ; <i253*> [#uses=1] +@i254_l = external global i254 ; <i254*> [#uses=1] +@i254_s = external global i254 ; <i254*> [#uses=1] +@i255_l = external global i255 ; <i255*> [#uses=1] +@i255_s = external global i255 ; <i255*> [#uses=1] +@i256_l = external global i256 ; <i256*> [#uses=1] +@i256_s = external global i256 ; <i256*> [#uses=1] + +define void @i1_ls() nounwind { + %tmp = load i1* @i1_l ; <i1> [#uses=1] + store i1 %tmp, i1* @i1_s + ret void +} + +define void @i2_ls() nounwind { + %tmp = load i2* @i2_l ; <i2> [#uses=1] + store i2 %tmp, i2* @i2_s + ret void +} + +define void @i3_ls() nounwind { + %tmp = load i3* @i3_l ; <i3> [#uses=1] + store i3 %tmp, i3* @i3_s + ret void +} + +define void @i4_ls() nounwind { + %tmp = load i4* @i4_l ; <i4> [#uses=1] + store i4 %tmp, i4* @i4_s + ret void +} + +define void @i5_ls() nounwind { + %tmp = load i5* @i5_l ; <i5> [#uses=1] + store i5 %tmp, i5* @i5_s + ret void +} + +define void @i6_ls() nounwind { + %tmp = load i6* @i6_l ; <i6> [#uses=1] + store i6 %tmp, i6* @i6_s + ret void +} + +define void @i7_ls() nounwind { + %tmp = load i7* @i7_l ; <i7> [#uses=1] + store i7 %tmp, i7* @i7_s + ret void +} + +define void @i8_ls() nounwind { + %tmp = load i8* @i8_l ; <i8> [#uses=1] + store i8 %tmp, i8* @i8_s + ret void +} + +define void @i9_ls() nounwind { + %tmp = load i9* @i9_l ; <i9> [#uses=1] + store i9 %tmp, i9* @i9_s + ret void +} + +define void @i10_ls() nounwind { + %tmp = load i10* @i10_l ; <i10> [#uses=1] + store i10 %tmp, i10* @i10_s + ret void +} + +define void @i11_ls() nounwind { + %tmp = load i11* @i11_l ; <i11> [#uses=1] + store i11 %tmp, i11* @i11_s + ret void +} + +define void @i12_ls() nounwind { + %tmp = load i12* @i12_l ; <i12> [#uses=1] + store i12 %tmp, i12* @i12_s + ret void +} + +define void @i13_ls() nounwind { + %tmp = load i13* @i13_l ; <i13> [#uses=1] + store i13 %tmp, i13* @i13_s + ret void +} + +define void @i14_ls() nounwind { + %tmp = load i14* @i14_l ; <i14> [#uses=1] + store i14 %tmp, i14* @i14_s + ret void +} + +define void @i15_ls() nounwind { + %tmp = load i15* @i15_l ; <i15> [#uses=1] + store i15 %tmp, i15* @i15_s + ret void +} + +define void @i16_ls() nounwind { + %tmp = load i16* @i16_l ; <i16> [#uses=1] + store i16 %tmp, i16* @i16_s + ret void +} + +define void @i17_ls() nounwind { + %tmp = load i17* @i17_l ; <i17> [#uses=1] + store i17 %tmp, i17* @i17_s + ret void +} + +define void @i18_ls() nounwind { + %tmp = load i18* @i18_l ; <i18> [#uses=1] + store i18 %tmp, i18* @i18_s + ret void +} + +define void @i19_ls() nounwind { + %tmp = load i19* @i19_l ; <i19> [#uses=1] + store i19 %tmp, i19* @i19_s + ret void +} + +define void @i20_ls() nounwind { + %tmp = load i20* @i20_l ; <i20> [#uses=1] + store i20 %tmp, i20* @i20_s + ret void +} + +define void @i21_ls() nounwind { + %tmp = load i21* @i21_l ; <i21> [#uses=1] + store i21 %tmp, i21* @i21_s + ret void +} + +define void @i22_ls() nounwind { + %tmp = load i22* @i22_l ; <i22> [#uses=1] + store i22 %tmp, i22* @i22_s + ret void +} + +define void @i23_ls() nounwind { + %tmp = load i23* @i23_l ; <i23> [#uses=1] + store i23 %tmp, i23* @i23_s + ret void +} + +define void @i24_ls() nounwind { + %tmp = load i24* @i24_l ; <i24> [#uses=1] + store i24 %tmp, i24* @i24_s + ret void +} + +define void @i25_ls() nounwind { + %tmp = load i25* @i25_l ; <i25> [#uses=1] + store i25 %tmp, i25* @i25_s + ret void +} + +define void @i26_ls() nounwind { + %tmp = load i26* @i26_l ; <i26> [#uses=1] + store i26 %tmp, i26* @i26_s + ret void +} + +define void @i27_ls() nounwind { + %tmp = load i27* @i27_l ; <i27> [#uses=1] + store i27 %tmp, i27* @i27_s + ret void +} + +define void @i28_ls() nounwind { + %tmp = load i28* @i28_l ; <i28> [#uses=1] + store i28 %tmp, i28* @i28_s + ret void +} + +define void @i29_ls() nounwind { + %tmp = load i29* @i29_l ; <i29> [#uses=1] + store i29 %tmp, i29* @i29_s + ret void +} + +define void @i30_ls() nounwind { + %tmp = load i30* @i30_l ; <i30> [#uses=1] + store i30 %tmp, i30* @i30_s + ret void +} + +define void @i31_ls() nounwind { + %tmp = load i31* @i31_l ; <i31> [#uses=1] + store i31 %tmp, i31* @i31_s + ret void +} + +define void @i32_ls() nounwind { + %tmp = load i32* @i32_l ; <i32> [#uses=1] + store i32 %tmp, i32* @i32_s + ret void +} + +define void @i33_ls() nounwind { + %tmp = load i33* @i33_l ; <i33> [#uses=1] + store i33 %tmp, i33* @i33_s + ret void +} + +define void @i34_ls() nounwind { + %tmp = load i34* @i34_l ; <i34> [#uses=1] + store i34 %tmp, i34* @i34_s + ret void +} + +define void @i35_ls() nounwind { + %tmp = load i35* @i35_l ; <i35> [#uses=1] + store i35 %tmp, i35* @i35_s + ret void +} + +define void @i36_ls() nounwind { + %tmp = load i36* @i36_l ; <i36> [#uses=1] + store i36 %tmp, i36* @i36_s + ret void +} + +define void @i37_ls() nounwind { + %tmp = load i37* @i37_l ; <i37> [#uses=1] + store i37 %tmp, i37* @i37_s + ret void +} + +define void @i38_ls() nounwind { + %tmp = load i38* @i38_l ; <i38> [#uses=1] + store i38 %tmp, i38* @i38_s + ret void +} + +define void @i39_ls() nounwind { + %tmp = load i39* @i39_l ; <i39> [#uses=1] + store i39 %tmp, i39* @i39_s + ret void +} + +define void @i40_ls() nounwind { + %tmp = load i40* @i40_l ; <i40> [#uses=1] + store i40 %tmp, i40* @i40_s + ret void +} + +define void @i41_ls() nounwind { + %tmp = load i41* @i41_l ; <i41> [#uses=1] + store i41 %tmp, i41* @i41_s + ret void +} + +define void @i42_ls() nounwind { + %tmp = load i42* @i42_l ; <i42> [#uses=1] + store i42 %tmp, i42* @i42_s + ret void +} + +define void @i43_ls() nounwind { + %tmp = load i43* @i43_l ; <i43> [#uses=1] + store i43 %tmp, i43* @i43_s + ret void +} + +define void @i44_ls() nounwind { + %tmp = load i44* @i44_l ; <i44> [#uses=1] + store i44 %tmp, i44* @i44_s + ret void +} + +define void @i45_ls() nounwind { + %tmp = load i45* @i45_l ; <i45> [#uses=1] + store i45 %tmp, i45* @i45_s + ret void +} + +define void @i46_ls() nounwind { + %tmp = load i46* @i46_l ; <i46> [#uses=1] + store i46 %tmp, i46* @i46_s + ret void +} + +define void @i47_ls() nounwind { + %tmp = load i47* @i47_l ; <i47> [#uses=1] + store i47 %tmp, i47* @i47_s + ret void +} + +define void @i48_ls() nounwind { + %tmp = load i48* @i48_l ; <i48> [#uses=1] + store i48 %tmp, i48* @i48_s + ret void +} + +define void @i49_ls() nounwind { + %tmp = load i49* @i49_l ; <i49> [#uses=1] + store i49 %tmp, i49* @i49_s + ret void +} + +define void @i50_ls() nounwind { + %tmp = load i50* @i50_l ; <i50> [#uses=1] + store i50 %tmp, i50* @i50_s + ret void +} + +define void @i51_ls() nounwind { + %tmp = load i51* @i51_l ; <i51> [#uses=1] + store i51 %tmp, i51* @i51_s + ret void +} + +define void @i52_ls() nounwind { + %tmp = load i52* @i52_l ; <i52> [#uses=1] + store i52 %tmp, i52* @i52_s + ret void +} + +define void @i53_ls() nounwind { + %tmp = load i53* @i53_l ; <i53> [#uses=1] + store i53 %tmp, i53* @i53_s + ret void +} + +define void @i54_ls() nounwind { + %tmp = load i54* @i54_l ; <i54> [#uses=1] + store i54 %tmp, i54* @i54_s + ret void +} + +define void @i55_ls() nounwind { + %tmp = load i55* @i55_l ; <i55> [#uses=1] + store i55 %tmp, i55* @i55_s + ret void +} + +define void @i56_ls() nounwind { + %tmp = load i56* @i56_l ; <i56> [#uses=1] + store i56 %tmp, i56* @i56_s + ret void +} + +define void @i57_ls() nounwind { + %tmp = load i57* @i57_l ; <i57> [#uses=1] + store i57 %tmp, i57* @i57_s + ret void +} + +define void @i58_ls() nounwind { + %tmp = load i58* @i58_l ; <i58> [#uses=1] + store i58 %tmp, i58* @i58_s + ret void +} + +define void @i59_ls() nounwind { + %tmp = load i59* @i59_l ; <i59> [#uses=1] + store i59 %tmp, i59* @i59_s + ret void +} + +define void @i60_ls() nounwind { + %tmp = load i60* @i60_l ; <i60> [#uses=1] + store i60 %tmp, i60* @i60_s + ret void +} + +define void @i61_ls() nounwind { + %tmp = load i61* @i61_l ; <i61> [#uses=1] + store i61 %tmp, i61* @i61_s + ret void +} + +define void @i62_ls() nounwind { + %tmp = load i62* @i62_l ; <i62> [#uses=1] + store i62 %tmp, i62* @i62_s + ret void +} + +define void @i63_ls() nounwind { + %tmp = load i63* @i63_l ; <i63> [#uses=1] + store i63 %tmp, i63* @i63_s + ret void +} + +define void @i64_ls() nounwind { + %tmp = load i64* @i64_l ; <i64> [#uses=1] + store i64 %tmp, i64* @i64_s + ret void +} + +define void @i65_ls() nounwind { + %tmp = load i65* @i65_l ; <i65> [#uses=1] + store i65 %tmp, i65* @i65_s + ret void +} + +define void @i66_ls() nounwind { + %tmp = load i66* @i66_l ; <i66> [#uses=1] + store i66 %tmp, i66* @i66_s + ret void +} + +define void @i67_ls() nounwind { + %tmp = load i67* @i67_l ; <i67> [#uses=1] + store i67 %tmp, i67* @i67_s + ret void +} + +define void @i68_ls() nounwind { + %tmp = load i68* @i68_l ; <i68> [#uses=1] + store i68 %tmp, i68* @i68_s + ret void +} + +define void @i69_ls() nounwind { + %tmp = load i69* @i69_l ; <i69> [#uses=1] + store i69 %tmp, i69* @i69_s + ret void +} + +define void @i70_ls() nounwind { + %tmp = load i70* @i70_l ; <i70> [#uses=1] + store i70 %tmp, i70* @i70_s + ret void +} + +define void @i71_ls() nounwind { + %tmp = load i71* @i71_l ; <i71> [#uses=1] + store i71 %tmp, i71* @i71_s + ret void +} + +define void @i72_ls() nounwind { + %tmp = load i72* @i72_l ; <i72> [#uses=1] + store i72 %tmp, i72* @i72_s + ret void +} + +define void @i73_ls() nounwind { + %tmp = load i73* @i73_l ; <i73> [#uses=1] + store i73 %tmp, i73* @i73_s + ret void +} + +define void @i74_ls() nounwind { + %tmp = load i74* @i74_l ; <i74> [#uses=1] + store i74 %tmp, i74* @i74_s + ret void +} + +define void @i75_ls() nounwind { + %tmp = load i75* @i75_l ; <i75> [#uses=1] + store i75 %tmp, i75* @i75_s + ret void +} + +define void @i76_ls() nounwind { + %tmp = load i76* @i76_l ; <i76> [#uses=1] + store i76 %tmp, i76* @i76_s + ret void +} + +define void @i77_ls() nounwind { + %tmp = load i77* @i77_l ; <i77> [#uses=1] + store i77 %tmp, i77* @i77_s + ret void +} + +define void @i78_ls() nounwind { + %tmp = load i78* @i78_l ; <i78> [#uses=1] + store i78 %tmp, i78* @i78_s + ret void +} + +define void @i79_ls() nounwind { + %tmp = load i79* @i79_l ; <i79> [#uses=1] + store i79 %tmp, i79* @i79_s + ret void +} + +define void @i80_ls() nounwind { + %tmp = load i80* @i80_l ; <i80> [#uses=1] + store i80 %tmp, i80* @i80_s + ret void +} + +define void @i81_ls() nounwind { + %tmp = load i81* @i81_l ; <i81> [#uses=1] + store i81 %tmp, i81* @i81_s + ret void +} + +define void @i82_ls() nounwind { + %tmp = load i82* @i82_l ; <i82> [#uses=1] + store i82 %tmp, i82* @i82_s + ret void +} + +define void @i83_ls() nounwind { + %tmp = load i83* @i83_l ; <i83> [#uses=1] + store i83 %tmp, i83* @i83_s + ret void +} + +define void @i84_ls() nounwind { + %tmp = load i84* @i84_l ; <i84> [#uses=1] + store i84 %tmp, i84* @i84_s + ret void +} + +define void @i85_ls() nounwind { + %tmp = load i85* @i85_l ; <i85> [#uses=1] + store i85 %tmp, i85* @i85_s + ret void +} + +define void @i86_ls() nounwind { + %tmp = load i86* @i86_l ; <i86> [#uses=1] + store i86 %tmp, i86* @i86_s + ret void +} + +define void @i87_ls() nounwind { + %tmp = load i87* @i87_l ; <i87> [#uses=1] + store i87 %tmp, i87* @i87_s + ret void +} + +define void @i88_ls() nounwind { + %tmp = load i88* @i88_l ; <i88> [#uses=1] + store i88 %tmp, i88* @i88_s + ret void +} + +define void @i89_ls() nounwind { + %tmp = load i89* @i89_l ; <i89> [#uses=1] + store i89 %tmp, i89* @i89_s + ret void +} + +define void @i90_ls() nounwind { + %tmp = load i90* @i90_l ; <i90> [#uses=1] + store i90 %tmp, i90* @i90_s + ret void +} + +define void @i91_ls() nounwind { + %tmp = load i91* @i91_l ; <i91> [#uses=1] + store i91 %tmp, i91* @i91_s + ret void +} + +define void @i92_ls() nounwind { + %tmp = load i92* @i92_l ; <i92> [#uses=1] + store i92 %tmp, i92* @i92_s + ret void +} + +define void @i93_ls() nounwind { + %tmp = load i93* @i93_l ; <i93> [#uses=1] + store i93 %tmp, i93* @i93_s + ret void +} + +define void @i94_ls() nounwind { + %tmp = load i94* @i94_l ; <i94> [#uses=1] + store i94 %tmp, i94* @i94_s + ret void +} + +define void @i95_ls() nounwind { + %tmp = load i95* @i95_l ; <i95> [#uses=1] + store i95 %tmp, i95* @i95_s + ret void +} + +define void @i96_ls() nounwind { + %tmp = load i96* @i96_l ; <i96> [#uses=1] + store i96 %tmp, i96* @i96_s + ret void +} + +define void @i97_ls() nounwind { + %tmp = load i97* @i97_l ; <i97> [#uses=1] + store i97 %tmp, i97* @i97_s + ret void +} + +define void @i98_ls() nounwind { + %tmp = load i98* @i98_l ; <i98> [#uses=1] + store i98 %tmp, i98* @i98_s + ret void +} + +define void @i99_ls() nounwind { + %tmp = load i99* @i99_l ; <i99> [#uses=1] + store i99 %tmp, i99* @i99_s + ret void +} + +define void @i100_ls() nounwind { + %tmp = load i100* @i100_l ; <i100> [#uses=1] + store i100 %tmp, i100* @i100_s + ret void +} + +define void @i101_ls() nounwind { + %tmp = load i101* @i101_l ; <i101> [#uses=1] + store i101 %tmp, i101* @i101_s + ret void +} + +define void @i102_ls() nounwind { + %tmp = load i102* @i102_l ; <i102> [#uses=1] + store i102 %tmp, i102* @i102_s + ret void +} + +define void @i103_ls() nounwind { + %tmp = load i103* @i103_l ; <i103> [#uses=1] + store i103 %tmp, i103* @i103_s + ret void +} + +define void @i104_ls() nounwind { + %tmp = load i104* @i104_l ; <i104> [#uses=1] + store i104 %tmp, i104* @i104_s + ret void +} + +define void @i105_ls() nounwind { + %tmp = load i105* @i105_l ; <i105> [#uses=1] + store i105 %tmp, i105* @i105_s + ret void +} + +define void @i106_ls() nounwind { + %tmp = load i106* @i106_l ; <i106> [#uses=1] + store i106 %tmp, i106* @i106_s + ret void +} + +define void @i107_ls() nounwind { + %tmp = load i107* @i107_l ; <i107> [#uses=1] + store i107 %tmp, i107* @i107_s + ret void +} + +define void @i108_ls() nounwind { + %tmp = load i108* @i108_l ; <i108> [#uses=1] + store i108 %tmp, i108* @i108_s + ret void +} + +define void @i109_ls() nounwind { + %tmp = load i109* @i109_l ; <i109> [#uses=1] + store i109 %tmp, i109* @i109_s + ret void +} + +define void @i110_ls() nounwind { + %tmp = load i110* @i110_l ; <i110> [#uses=1] + store i110 %tmp, i110* @i110_s + ret void +} + +define void @i111_ls() nounwind { + %tmp = load i111* @i111_l ; <i111> [#uses=1] + store i111 %tmp, i111* @i111_s + ret void +} + +define void @i112_ls() nounwind { + %tmp = load i112* @i112_l ; <i112> [#uses=1] + store i112 %tmp, i112* @i112_s + ret void +} + +define void @i113_ls() nounwind { + %tmp = load i113* @i113_l ; <i113> [#uses=1] + store i113 %tmp, i113* @i113_s + ret void +} + +define void @i114_ls() nounwind { + %tmp = load i114* @i114_l ; <i114> [#uses=1] + store i114 %tmp, i114* @i114_s + ret void +} + +define void @i115_ls() nounwind { + %tmp = load i115* @i115_l ; <i115> [#uses=1] + store i115 %tmp, i115* @i115_s + ret void +} + +define void @i116_ls() nounwind { + %tmp = load i116* @i116_l ; <i116> [#uses=1] + store i116 %tmp, i116* @i116_s + ret void +} + +define void @i117_ls() nounwind { + %tmp = load i117* @i117_l ; <i117> [#uses=1] + store i117 %tmp, i117* @i117_s + ret void +} + +define void @i118_ls() nounwind { + %tmp = load i118* @i118_l ; <i118> [#uses=1] + store i118 %tmp, i118* @i118_s + ret void +} + +define void @i119_ls() nounwind { + %tmp = load i119* @i119_l ; <i119> [#uses=1] + store i119 %tmp, i119* @i119_s + ret void +} + +define void @i120_ls() nounwind { + %tmp = load i120* @i120_l ; <i120> [#uses=1] + store i120 %tmp, i120* @i120_s + ret void +} + +define void @i121_ls() nounwind { + %tmp = load i121* @i121_l ; <i121> [#uses=1] + store i121 %tmp, i121* @i121_s + ret void +} + +define void @i122_ls() nounwind { + %tmp = load i122* @i122_l ; <i122> [#uses=1] + store i122 %tmp, i122* @i122_s + ret void +} + +define void @i123_ls() nounwind { + %tmp = load i123* @i123_l ; <i123> [#uses=1] + store i123 %tmp, i123* @i123_s + ret void +} + +define void @i124_ls() nounwind { + %tmp = load i124* @i124_l ; <i124> [#uses=1] + store i124 %tmp, i124* @i124_s + ret void +} + +define void @i125_ls() nounwind { + %tmp = load i125* @i125_l ; <i125> [#uses=1] + store i125 %tmp, i125* @i125_s + ret void +} + +define void @i126_ls() nounwind { + %tmp = load i126* @i126_l ; <i126> [#uses=1] + store i126 %tmp, i126* @i126_s + ret void +} + +define void @i127_ls() nounwind { + %tmp = load i127* @i127_l ; <i127> [#uses=1] + store i127 %tmp, i127* @i127_s + ret void +} + +define void @i128_ls() nounwind { + %tmp = load i128* @i128_l ; <i128> [#uses=1] + store i128 %tmp, i128* @i128_s + ret void +} + +define void @i129_ls() nounwind { + %tmp = load i129* @i129_l ; <i129> [#uses=1] + store i129 %tmp, i129* @i129_s + ret void +} + +define void @i130_ls() nounwind { + %tmp = load i130* @i130_l ; <i130> [#uses=1] + store i130 %tmp, i130* @i130_s + ret void +} + +define void @i131_ls() nounwind { + %tmp = load i131* @i131_l ; <i131> [#uses=1] + store i131 %tmp, i131* @i131_s + ret void +} + +define void @i132_ls() nounwind { + %tmp = load i132* @i132_l ; <i132> [#uses=1] + store i132 %tmp, i132* @i132_s + ret void +} + +define void @i133_ls() nounwind { + %tmp = load i133* @i133_l ; <i133> [#uses=1] + store i133 %tmp, i133* @i133_s + ret void +} + +define void @i134_ls() nounwind { + %tmp = load i134* @i134_l ; <i134> [#uses=1] + store i134 %tmp, i134* @i134_s + ret void +} + +define void @i135_ls() nounwind { + %tmp = load i135* @i135_l ; <i135> [#uses=1] + store i135 %tmp, i135* @i135_s + ret void +} + +define void @i136_ls() nounwind { + %tmp = load i136* @i136_l ; <i136> [#uses=1] + store i136 %tmp, i136* @i136_s + ret void +} + +define void @i137_ls() nounwind { + %tmp = load i137* @i137_l ; <i137> [#uses=1] + store i137 %tmp, i137* @i137_s + ret void +} + +define void @i138_ls() nounwind { + %tmp = load i138* @i138_l ; <i138> [#uses=1] + store i138 %tmp, i138* @i138_s + ret void +} + +define void @i139_ls() nounwind { + %tmp = load i139* @i139_l ; <i139> [#uses=1] + store i139 %tmp, i139* @i139_s + ret void +} + +define void @i140_ls() nounwind { + %tmp = load i140* @i140_l ; <i140> [#uses=1] + store i140 %tmp, i140* @i140_s + ret void +} + +define void @i141_ls() nounwind { + %tmp = load i141* @i141_l ; <i141> [#uses=1] + store i141 %tmp, i141* @i141_s + ret void +} + +define void @i142_ls() nounwind { + %tmp = load i142* @i142_l ; <i142> [#uses=1] + store i142 %tmp, i142* @i142_s + ret void +} + +define void @i143_ls() nounwind { + %tmp = load i143* @i143_l ; <i143> [#uses=1] + store i143 %tmp, i143* @i143_s + ret void +} + +define void @i144_ls() nounwind { + %tmp = load i144* @i144_l ; <i144> [#uses=1] + store i144 %tmp, i144* @i144_s + ret void +} + +define void @i145_ls() nounwind { + %tmp = load i145* @i145_l ; <i145> [#uses=1] + store i145 %tmp, i145* @i145_s + ret void +} + +define void @i146_ls() nounwind { + %tmp = load i146* @i146_l ; <i146> [#uses=1] + store i146 %tmp, i146* @i146_s + ret void +} + +define void @i147_ls() nounwind { + %tmp = load i147* @i147_l ; <i147> [#uses=1] + store i147 %tmp, i147* @i147_s + ret void +} + +define void @i148_ls() nounwind { + %tmp = load i148* @i148_l ; <i148> [#uses=1] + store i148 %tmp, i148* @i148_s + ret void +} + +define void @i149_ls() nounwind { + %tmp = load i149* @i149_l ; <i149> [#uses=1] + store i149 %tmp, i149* @i149_s + ret void +} + +define void @i150_ls() nounwind { + %tmp = load i150* @i150_l ; <i150> [#uses=1] + store i150 %tmp, i150* @i150_s + ret void +} + +define void @i151_ls() nounwind { + %tmp = load i151* @i151_l ; <i151> [#uses=1] + store i151 %tmp, i151* @i151_s + ret void +} + +define void @i152_ls() nounwind { + %tmp = load i152* @i152_l ; <i152> [#uses=1] + store i152 %tmp, i152* @i152_s + ret void +} + +define void @i153_ls() nounwind { + %tmp = load i153* @i153_l ; <i153> [#uses=1] + store i153 %tmp, i153* @i153_s + ret void +} + +define void @i154_ls() nounwind { + %tmp = load i154* @i154_l ; <i154> [#uses=1] + store i154 %tmp, i154* @i154_s + ret void +} + +define void @i155_ls() nounwind { + %tmp = load i155* @i155_l ; <i155> [#uses=1] + store i155 %tmp, i155* @i155_s + ret void +} + +define void @i156_ls() nounwind { + %tmp = load i156* @i156_l ; <i156> [#uses=1] + store i156 %tmp, i156* @i156_s + ret void +} + +define void @i157_ls() nounwind { + %tmp = load i157* @i157_l ; <i157> [#uses=1] + store i157 %tmp, i157* @i157_s + ret void +} + +define void @i158_ls() nounwind { + %tmp = load i158* @i158_l ; <i158> [#uses=1] + store i158 %tmp, i158* @i158_s + ret void +} + +define void @i159_ls() nounwind { + %tmp = load i159* @i159_l ; <i159> [#uses=1] + store i159 %tmp, i159* @i159_s + ret void +} + +define void @i160_ls() nounwind { + %tmp = load i160* @i160_l ; <i160> [#uses=1] + store i160 %tmp, i160* @i160_s + ret void +} + +define void @i161_ls() nounwind { + %tmp = load i161* @i161_l ; <i161> [#uses=1] + store i161 %tmp, i161* @i161_s + ret void +} + +define void @i162_ls() nounwind { + %tmp = load i162* @i162_l ; <i162> [#uses=1] + store i162 %tmp, i162* @i162_s + ret void +} + +define void @i163_ls() nounwind { + %tmp = load i163* @i163_l ; <i163> [#uses=1] + store i163 %tmp, i163* @i163_s + ret void +} + +define void @i164_ls() nounwind { + %tmp = load i164* @i164_l ; <i164> [#uses=1] + store i164 %tmp, i164* @i164_s + ret void +} + +define void @i165_ls() nounwind { + %tmp = load i165* @i165_l ; <i165> [#uses=1] + store i165 %tmp, i165* @i165_s + ret void +} + +define void @i166_ls() nounwind { + %tmp = load i166* @i166_l ; <i166> [#uses=1] + store i166 %tmp, i166* @i166_s + ret void +} + +define void @i167_ls() nounwind { + %tmp = load i167* @i167_l ; <i167> [#uses=1] + store i167 %tmp, i167* @i167_s + ret void +} + +define void @i168_ls() nounwind { + %tmp = load i168* @i168_l ; <i168> [#uses=1] + store i168 %tmp, i168* @i168_s + ret void +} + +define void @i169_ls() nounwind { + %tmp = load i169* @i169_l ; <i169> [#uses=1] + store i169 %tmp, i169* @i169_s + ret void +} + +define void @i170_ls() nounwind { + %tmp = load i170* @i170_l ; <i170> [#uses=1] + store i170 %tmp, i170* @i170_s + ret void +} + +define void @i171_ls() nounwind { + %tmp = load i171* @i171_l ; <i171> [#uses=1] + store i171 %tmp, i171* @i171_s + ret void +} + +define void @i172_ls() nounwind { + %tmp = load i172* @i172_l ; <i172> [#uses=1] + store i172 %tmp, i172* @i172_s + ret void +} + +define void @i173_ls() nounwind { + %tmp = load i173* @i173_l ; <i173> [#uses=1] + store i173 %tmp, i173* @i173_s + ret void +} + +define void @i174_ls() nounwind { + %tmp = load i174* @i174_l ; <i174> [#uses=1] + store i174 %tmp, i174* @i174_s + ret void +} + +define void @i175_ls() nounwind { + %tmp = load i175* @i175_l ; <i175> [#uses=1] + store i175 %tmp, i175* @i175_s + ret void +} + +define void @i176_ls() nounwind { + %tmp = load i176* @i176_l ; <i176> [#uses=1] + store i176 %tmp, i176* @i176_s + ret void +} + +define void @i177_ls() nounwind { + %tmp = load i177* @i177_l ; <i177> [#uses=1] + store i177 %tmp, i177* @i177_s + ret void +} + +define void @i178_ls() nounwind { + %tmp = load i178* @i178_l ; <i178> [#uses=1] + store i178 %tmp, i178* @i178_s + ret void +} + +define void @i179_ls() nounwind { + %tmp = load i179* @i179_l ; <i179> [#uses=1] + store i179 %tmp, i179* @i179_s + ret void +} + +define void @i180_ls() nounwind { + %tmp = load i180* @i180_l ; <i180> [#uses=1] + store i180 %tmp, i180* @i180_s + ret void +} + +define void @i181_ls() nounwind { + %tmp = load i181* @i181_l ; <i181> [#uses=1] + store i181 %tmp, i181* @i181_s + ret void +} + +define void @i182_ls() nounwind { + %tmp = load i182* @i182_l ; <i182> [#uses=1] + store i182 %tmp, i182* @i182_s + ret void +} + +define void @i183_ls() nounwind { + %tmp = load i183* @i183_l ; <i183> [#uses=1] + store i183 %tmp, i183* @i183_s + ret void +} + +define void @i184_ls() nounwind { + %tmp = load i184* @i184_l ; <i184> [#uses=1] + store i184 %tmp, i184* @i184_s + ret void +} + +define void @i185_ls() nounwind { + %tmp = load i185* @i185_l ; <i185> [#uses=1] + store i185 %tmp, i185* @i185_s + ret void +} + +define void @i186_ls() nounwind { + %tmp = load i186* @i186_l ; <i186> [#uses=1] + store i186 %tmp, i186* @i186_s + ret void +} + +define void @i187_ls() nounwind { + %tmp = load i187* @i187_l ; <i187> [#uses=1] + store i187 %tmp, i187* @i187_s + ret void +} + +define void @i188_ls() nounwind { + %tmp = load i188* @i188_l ; <i188> [#uses=1] + store i188 %tmp, i188* @i188_s + ret void +} + +define void @i189_ls() nounwind { + %tmp = load i189* @i189_l ; <i189> [#uses=1] + store i189 %tmp, i189* @i189_s + ret void +} + +define void @i190_ls() nounwind { + %tmp = load i190* @i190_l ; <i190> [#uses=1] + store i190 %tmp, i190* @i190_s + ret void +} + +define void @i191_ls() nounwind { + %tmp = load i191* @i191_l ; <i191> [#uses=1] + store i191 %tmp, i191* @i191_s + ret void +} + +define void @i192_ls() nounwind { + %tmp = load i192* @i192_l ; <i192> [#uses=1] + store i192 %tmp, i192* @i192_s + ret void +} + +define void @i193_ls() nounwind { + %tmp = load i193* @i193_l ; <i193> [#uses=1] + store i193 %tmp, i193* @i193_s + ret void +} + +define void @i194_ls() nounwind { + %tmp = load i194* @i194_l ; <i194> [#uses=1] + store i194 %tmp, i194* @i194_s + ret void +} + +define void @i195_ls() nounwind { + %tmp = load i195* @i195_l ; <i195> [#uses=1] + store i195 %tmp, i195* @i195_s + ret void +} + +define void @i196_ls() nounwind { + %tmp = load i196* @i196_l ; <i196> [#uses=1] + store i196 %tmp, i196* @i196_s + ret void +} + +define void @i197_ls() nounwind { + %tmp = load i197* @i197_l ; <i197> [#uses=1] + store i197 %tmp, i197* @i197_s + ret void +} + +define void @i198_ls() nounwind { + %tmp = load i198* @i198_l ; <i198> [#uses=1] + store i198 %tmp, i198* @i198_s + ret void +} + +define void @i199_ls() nounwind { + %tmp = load i199* @i199_l ; <i199> [#uses=1] + store i199 %tmp, i199* @i199_s + ret void +} + +define void @i200_ls() nounwind { + %tmp = load i200* @i200_l ; <i200> [#uses=1] + store i200 %tmp, i200* @i200_s + ret void +} + +define void @i201_ls() nounwind { + %tmp = load i201* @i201_l ; <i201> [#uses=1] + store i201 %tmp, i201* @i201_s + ret void +} + +define void @i202_ls() nounwind { + %tmp = load i202* @i202_l ; <i202> [#uses=1] + store i202 %tmp, i202* @i202_s + ret void +} + +define void @i203_ls() nounwind { + %tmp = load i203* @i203_l ; <i203> [#uses=1] + store i203 %tmp, i203* @i203_s + ret void +} + +define void @i204_ls() nounwind { + %tmp = load i204* @i204_l ; <i204> [#uses=1] + store i204 %tmp, i204* @i204_s + ret void +} + +define void @i205_ls() nounwind { + %tmp = load i205* @i205_l ; <i205> [#uses=1] + store i205 %tmp, i205* @i205_s + ret void +} + +define void @i206_ls() nounwind { + %tmp = load i206* @i206_l ; <i206> [#uses=1] + store i206 %tmp, i206* @i206_s + ret void +} + +define void @i207_ls() nounwind { + %tmp = load i207* @i207_l ; <i207> [#uses=1] + store i207 %tmp, i207* @i207_s + ret void +} + +define void @i208_ls() nounwind { + %tmp = load i208* @i208_l ; <i208> [#uses=1] + store i208 %tmp, i208* @i208_s + ret void +} + +define void @i209_ls() nounwind { + %tmp = load i209* @i209_l ; <i209> [#uses=1] + store i209 %tmp, i209* @i209_s + ret void +} + +define void @i210_ls() nounwind { + %tmp = load i210* @i210_l ; <i210> [#uses=1] + store i210 %tmp, i210* @i210_s + ret void +} + +define void @i211_ls() nounwind { + %tmp = load i211* @i211_l ; <i211> [#uses=1] + store i211 %tmp, i211* @i211_s + ret void +} + +define void @i212_ls() nounwind { + %tmp = load i212* @i212_l ; <i212> [#uses=1] + store i212 %tmp, i212* @i212_s + ret void +} + +define void @i213_ls() nounwind { + %tmp = load i213* @i213_l ; <i213> [#uses=1] + store i213 %tmp, i213* @i213_s + ret void +} + +define void @i214_ls() nounwind { + %tmp = load i214* @i214_l ; <i214> [#uses=1] + store i214 %tmp, i214* @i214_s + ret void +} + +define void @i215_ls() nounwind { + %tmp = load i215* @i215_l ; <i215> [#uses=1] + store i215 %tmp, i215* @i215_s + ret void +} + +define void @i216_ls() nounwind { + %tmp = load i216* @i216_l ; <i216> [#uses=1] + store i216 %tmp, i216* @i216_s + ret void +} + +define void @i217_ls() nounwind { + %tmp = load i217* @i217_l ; <i217> [#uses=1] + store i217 %tmp, i217* @i217_s + ret void +} + +define void @i218_ls() nounwind { + %tmp = load i218* @i218_l ; <i218> [#uses=1] + store i218 %tmp, i218* @i218_s + ret void +} + +define void @i219_ls() nounwind { + %tmp = load i219* @i219_l ; <i219> [#uses=1] + store i219 %tmp, i219* @i219_s + ret void +} + +define void @i220_ls() nounwind { + %tmp = load i220* @i220_l ; <i220> [#uses=1] + store i220 %tmp, i220* @i220_s + ret void +} + +define void @i221_ls() nounwind { + %tmp = load i221* @i221_l ; <i221> [#uses=1] + store i221 %tmp, i221* @i221_s + ret void +} + +define void @i222_ls() nounwind { + %tmp = load i222* @i222_l ; <i222> [#uses=1] + store i222 %tmp, i222* @i222_s + ret void +} + +define void @i223_ls() nounwind { + %tmp = load i223* @i223_l ; <i223> [#uses=1] + store i223 %tmp, i223* @i223_s + ret void +} + +define void @i224_ls() nounwind { + %tmp = load i224* @i224_l ; <i224> [#uses=1] + store i224 %tmp, i224* @i224_s + ret void +} + +define void @i225_ls() nounwind { + %tmp = load i225* @i225_l ; <i225> [#uses=1] + store i225 %tmp, i225* @i225_s + ret void +} + +define void @i226_ls() nounwind { + %tmp = load i226* @i226_l ; <i226> [#uses=1] + store i226 %tmp, i226* @i226_s + ret void +} + +define void @i227_ls() nounwind { + %tmp = load i227* @i227_l ; <i227> [#uses=1] + store i227 %tmp, i227* @i227_s + ret void +} + +define void @i228_ls() nounwind { + %tmp = load i228* @i228_l ; <i228> [#uses=1] + store i228 %tmp, i228* @i228_s + ret void +} + +define void @i229_ls() nounwind { + %tmp = load i229* @i229_l ; <i229> [#uses=1] + store i229 %tmp, i229* @i229_s + ret void +} + +define void @i230_ls() nounwind { + %tmp = load i230* @i230_l ; <i230> [#uses=1] + store i230 %tmp, i230* @i230_s + ret void +} + +define void @i231_ls() nounwind { + %tmp = load i231* @i231_l ; <i231> [#uses=1] + store i231 %tmp, i231* @i231_s + ret void +} + +define void @i232_ls() nounwind { + %tmp = load i232* @i232_l ; <i232> [#uses=1] + store i232 %tmp, i232* @i232_s + ret void +} + +define void @i233_ls() nounwind { + %tmp = load i233* @i233_l ; <i233> [#uses=1] + store i233 %tmp, i233* @i233_s + ret void +} + +define void @i234_ls() nounwind { + %tmp = load i234* @i234_l ; <i234> [#uses=1] + store i234 %tmp, i234* @i234_s + ret void +} + +define void @i235_ls() nounwind { + %tmp = load i235* @i235_l ; <i235> [#uses=1] + store i235 %tmp, i235* @i235_s + ret void +} + +define void @i236_ls() nounwind { + %tmp = load i236* @i236_l ; <i236> [#uses=1] + store i236 %tmp, i236* @i236_s + ret void +} + +define void @i237_ls() nounwind { + %tmp = load i237* @i237_l ; <i237> [#uses=1] + store i237 %tmp, i237* @i237_s + ret void +} + +define void @i238_ls() nounwind { + %tmp = load i238* @i238_l ; <i238> [#uses=1] + store i238 %tmp, i238* @i238_s + ret void +} + +define void @i239_ls() nounwind { + %tmp = load i239* @i239_l ; <i239> [#uses=1] + store i239 %tmp, i239* @i239_s + ret void +} + +define void @i240_ls() nounwind { + %tmp = load i240* @i240_l ; <i240> [#uses=1] + store i240 %tmp, i240* @i240_s + ret void +} + +define void @i241_ls() nounwind { + %tmp = load i241* @i241_l ; <i241> [#uses=1] + store i241 %tmp, i241* @i241_s + ret void +} + +define void @i242_ls() nounwind { + %tmp = load i242* @i242_l ; <i242> [#uses=1] + store i242 %tmp, i242* @i242_s + ret void +} + +define void @i243_ls() nounwind { + %tmp = load i243* @i243_l ; <i243> [#uses=1] + store i243 %tmp, i243* @i243_s + ret void +} + +define void @i244_ls() nounwind { + %tmp = load i244* @i244_l ; <i244> [#uses=1] + store i244 %tmp, i244* @i244_s + ret void +} + +define void @i245_ls() nounwind { + %tmp = load i245* @i245_l ; <i245> [#uses=1] + store i245 %tmp, i245* @i245_s + ret void +} + +define void @i246_ls() nounwind { + %tmp = load i246* @i246_l ; <i246> [#uses=1] + store i246 %tmp, i246* @i246_s + ret void +} + +define void @i247_ls() nounwind { + %tmp = load i247* @i247_l ; <i247> [#uses=1] + store i247 %tmp, i247* @i247_s + ret void +} + +define void @i248_ls() nounwind { + %tmp = load i248* @i248_l ; <i248> [#uses=1] + store i248 %tmp, i248* @i248_s + ret void +} + +define void @i249_ls() nounwind { + %tmp = load i249* @i249_l ; <i249> [#uses=1] + store i249 %tmp, i249* @i249_s + ret void +} + +define void @i250_ls() nounwind { + %tmp = load i250* @i250_l ; <i250> [#uses=1] + store i250 %tmp, i250* @i250_s + ret void +} + +define void @i251_ls() nounwind { + %tmp = load i251* @i251_l ; <i251> [#uses=1] + store i251 %tmp, i251* @i251_s + ret void +} + +define void @i252_ls() nounwind { + %tmp = load i252* @i252_l ; <i252> [#uses=1] + store i252 %tmp, i252* @i252_s + ret void +} + +define void @i253_ls() nounwind { + %tmp = load i253* @i253_l ; <i253> [#uses=1] + store i253 %tmp, i253* @i253_s + ret void +} + +define void @i254_ls() nounwind { + %tmp = load i254* @i254_l ; <i254> [#uses=1] + store i254 %tmp, i254* @i254_s + ret void +} + +define void @i255_ls() nounwind { + %tmp = load i255* @i255_l ; <i255> [#uses=1] + store i255 %tmp, i255* @i255_s + ret void +} + +define void @i256_ls() nounwind { + %tmp = load i256* @i256_l ; <i256> [#uses=1] + store i256 %tmp, i256* @i256_s + ret void +}
diff --git a/src/LLVM/test/CodeGen/Generic/APIntParam.ll b/src/LLVM/test/CodeGen/Generic/APIntParam.ll new file mode 100644 index 0000000..8aa0b49 --- /dev/null +++ b/src/LLVM/test/CodeGen/Generic/APIntParam.ll
@@ -0,0 +1,1537 @@ +; RUN: llc < %s > %t +@i1_s = external global i1 ; <i1*> [#uses=1] +@i2_s = external global i2 ; <i2*> [#uses=1] +@i3_s = external global i3 ; <i3*> [#uses=1] +@i4_s = external global i4 ; <i4*> [#uses=1] +@i5_s = external global i5 ; <i5*> [#uses=1] +@i6_s = external global i6 ; <i6*> [#uses=1] +@i7_s = external global i7 ; <i7*> [#uses=1] +@i8_s = external global i8 ; <i8*> [#uses=1] +@i9_s = external global i9 ; <i9*> [#uses=1] +@i10_s = external global i10 ; <i10*> [#uses=1] +@i11_s = external global i11 ; <i11*> [#uses=1] +@i12_s = external global i12 ; <i12*> [#uses=1] +@i13_s = external global i13 ; <i13*> [#uses=1] +@i14_s = external global i14 ; <i14*> [#uses=1] +@i15_s = external global i15 ; <i15*> [#uses=1] +@i16_s = external global i16 ; <i16*> [#uses=1] +@i17_s = external global i17 ; <i17*> [#uses=1] +@i18_s = external global i18 ; <i18*> [#uses=1] +@i19_s = external global i19 ; <i19*> [#uses=1] +@i20_s = external global i20 ; <i20*> [#uses=1] +@i21_s = external global i21 ; <i21*> [#uses=1] +@i22_s = external global i22 ; <i22*> [#uses=1] +@i23_s = external global i23 ; <i23*> [#uses=1] +@i24_s = external global i24 ; <i24*> [#uses=1] +@i25_s = external global i25 ; <i25*> [#uses=1] +@i26_s = external global i26 ; <i26*> [#uses=1] +@i27_s = external global i27 ; <i27*> [#uses=1] +@i28_s = external global i28 ; <i28*> [#uses=1] +@i29_s = external global i29 ; <i29*> [#uses=1] +@i30_s = external global i30 ; <i30*> [#uses=1] +@i31_s = external global i31 ; <i31*> [#uses=1] +@i32_s = external global i32 ; <i32*> [#uses=1] +@i33_s = external global i33 ; <i33*> [#uses=1] +@i34_s = external global i34 ; <i34*> [#uses=1] +@i35_s = external global i35 ; <i35*> [#uses=1] +@i36_s = external global i36 ; <i36*> [#uses=1] +@i37_s = external global i37 ; <i37*> [#uses=1] +@i38_s = external global i38 ; <i38*> [#uses=1] +@i39_s = external global i39 ; <i39*> [#uses=1] +@i40_s = external global i40 ; <i40*> [#uses=1] +@i41_s = external global i41 ; <i41*> [#uses=1] +@i42_s = external global i42 ; <i42*> [#uses=1] +@i43_s = external global i43 ; <i43*> [#uses=1] +@i44_s = external global i44 ; <i44*> [#uses=1] +@i45_s = external global i45 ; <i45*> [#uses=1] +@i46_s = external global i46 ; <i46*> [#uses=1] +@i47_s = external global i47 ; <i47*> [#uses=1] +@i48_s = external global i48 ; <i48*> [#uses=1] +@i49_s = external global i49 ; <i49*> [#uses=1] +@i50_s = external global i50 ; <i50*> [#uses=1] +@i51_s = external global i51 ; <i51*> [#uses=1] +@i52_s = external global i52 ; <i52*> [#uses=1] +@i53_s = external global i53 ; <i53*> [#uses=1] +@i54_s = external global i54 ; <i54*> [#uses=1] +@i55_s = external global i55 ; <i55*> [#uses=1] +@i56_s = external global i56 ; <i56*> [#uses=1] +@i57_s = external global i57 ; <i57*> [#uses=1] +@i58_s = external global i58 ; <i58*> [#uses=1] +@i59_s = external global i59 ; <i59*> [#uses=1] +@i60_s = external global i60 ; <i60*> [#uses=1] +@i61_s = external global i61 ; <i61*> [#uses=1] +@i62_s = external global i62 ; <i62*> [#uses=1] +@i63_s = external global i63 ; <i63*> [#uses=1] +@i64_s = external global i64 ; <i64*> [#uses=1] +@i65_s = external global i65 ; <i65*> [#uses=1] +@i66_s = external global i66 ; <i66*> [#uses=1] +@i67_s = external global i67 ; <i67*> [#uses=1] +@i68_s = external global i68 ; <i68*> [#uses=1] +@i69_s = external global i69 ; <i69*> [#uses=1] +@i70_s = external global i70 ; <i70*> [#uses=1] +@i71_s = external global i71 ; <i71*> [#uses=1] +@i72_s = external global i72 ; <i72*> [#uses=1] +@i73_s = external global i73 ; <i73*> [#uses=1] +@i74_s = external global i74 ; <i74*> [#uses=1] +@i75_s = external global i75 ; <i75*> [#uses=1] +@i76_s = external global i76 ; <i76*> [#uses=1] +@i77_s = external global i77 ; <i77*> [#uses=1] +@i78_s = external global i78 ; <i78*> [#uses=1] +@i79_s = external global i79 ; <i79*> [#uses=1] +@i80_s = external global i80 ; <i80*> [#uses=1] +@i81_s = external global i81 ; <i81*> [#uses=1] +@i82_s = external global i82 ; <i82*> [#uses=1] +@i83_s = external global i83 ; <i83*> [#uses=1] +@i84_s = external global i84 ; <i84*> [#uses=1] +@i85_s = external global i85 ; <i85*> [#uses=1] +@i86_s = external global i86 ; <i86*> [#uses=1] +@i87_s = external global i87 ; <i87*> [#uses=1] +@i88_s = external global i88 ; <i88*> [#uses=1] +@i89_s = external global i89 ; <i89*> [#uses=1] +@i90_s = external global i90 ; <i90*> [#uses=1] +@i91_s = external global i91 ; <i91*> [#uses=1] +@i92_s = external global i92 ; <i92*> [#uses=1] +@i93_s = external global i93 ; <i93*> [#uses=1] +@i94_s = external global i94 ; <i94*> [#uses=1] +@i95_s = external global i95 ; <i95*> [#uses=1] +@i96_s = external global i96 ; <i96*> [#uses=1] +@i97_s = external global i97 ; <i97*> [#uses=1] +@i98_s = external global i98 ; <i98*> [#uses=1] +@i99_s = external global i99 ; <i99*> [#uses=1] +@i100_s = external global i100 ; <i100*> [#uses=1] +@i101_s = external global i101 ; <i101*> [#uses=1] +@i102_s = external global i102 ; <i102*> [#uses=1] +@i103_s = external global i103 ; <i103*> [#uses=1] +@i104_s = external global i104 ; <i104*> [#uses=1] +@i105_s = external global i105 ; <i105*> [#uses=1] +@i106_s = external global i106 ; <i106*> [#uses=1] +@i107_s = external global i107 ; <i107*> [#uses=1] +@i108_s = external global i108 ; <i108*> [#uses=1] +@i109_s = external global i109 ; <i109*> [#uses=1] +@i110_s = external global i110 ; <i110*> [#uses=1] +@i111_s = external global i111 ; <i111*> [#uses=1] +@i112_s = external global i112 ; <i112*> [#uses=1] +@i113_s = external global i113 ; <i113*> [#uses=1] +@i114_s = external global i114 ; <i114*> [#uses=1] +@i115_s = external global i115 ; <i115*> [#uses=1] +@i116_s = external global i116 ; <i116*> [#uses=1] +@i117_s = external global i117 ; <i117*> [#uses=1] +@i118_s = external global i118 ; <i118*> [#uses=1] +@i119_s = external global i119 ; <i119*> [#uses=1] +@i120_s = external global i120 ; <i120*> [#uses=1] +@i121_s = external global i121 ; <i121*> [#uses=1] +@i122_s = external global i122 ; <i122*> [#uses=1] +@i123_s = external global i123 ; <i123*> [#uses=1] +@i124_s = external global i124 ; <i124*> [#uses=1] +@i125_s = external global i125 ; <i125*> [#uses=1] +@i126_s = external global i126 ; <i126*> [#uses=1] +@i127_s = external global i127 ; <i127*> [#uses=1] +@i128_s = external global i128 ; <i128*> [#uses=1] +@i129_s = external global i129 ; <i129*> [#uses=1] +@i130_s = external global i130 ; <i130*> [#uses=1] +@i131_s = external global i131 ; <i131*> [#uses=1] +@i132_s = external global i132 ; <i132*> [#uses=1] +@i133_s = external global i133 ; <i133*> [#uses=1] +@i134_s = external global i134 ; <i134*> [#uses=1] +@i135_s = external global i135 ; <i135*> [#uses=1] +@i136_s = external global i136 ; <i136*> [#uses=1] +@i137_s = external global i137 ; <i137*> [#uses=1] +@i138_s = external global i138 ; <i138*> [#uses=1] +@i139_s = external global i139 ; <i139*> [#uses=1] +@i140_s = external global i140 ; <i140*> [#uses=1] +@i141_s = external global i141 ; <i141*> [#uses=1] +@i142_s = external global i142 ; <i142*> [#uses=1] +@i143_s = external global i143 ; <i143*> [#uses=1] +@i144_s = external global i144 ; <i144*> [#uses=1] +@i145_s = external global i145 ; <i145*> [#uses=1] +@i146_s = external global i146 ; <i146*> [#uses=1] +@i147_s = external global i147 ; <i147*> [#uses=1] +@i148_s = external global i148 ; <i148*> [#uses=1] +@i149_s = external global i149 ; <i149*> [#uses=1] +@i150_s = external global i150 ; <i150*> [#uses=1] +@i151_s = external global i151 ; <i151*> [#uses=1] +@i152_s = external global i152 ; <i152*> [#uses=1] +@i153_s = external global i153 ; <i153*> [#uses=1] +@i154_s = external global i154 ; <i154*> [#uses=1] +@i155_s = external global i155 ; <i155*> [#uses=1] +@i156_s = external global i156 ; <i156*> [#uses=1] +@i157_s = external global i157 ; <i157*> [#uses=1] +@i158_s = external global i158 ; <i158*> [#uses=1] +@i159_s = external global i159 ; <i159*> [#uses=1] +@i160_s = external global i160 ; <i160*> [#uses=1] +@i161_s = external global i161 ; <i161*> [#uses=1] +@i162_s = external global i162 ; <i162*> [#uses=1] +@i163_s = external global i163 ; <i163*> [#uses=1] +@i164_s = external global i164 ; <i164*> [#uses=1] +@i165_s = external global i165 ; <i165*> [#uses=1] +@i166_s = external global i166 ; <i166*> [#uses=1] +@i167_s = external global i167 ; <i167*> [#uses=1] +@i168_s = external global i168 ; <i168*> [#uses=1] +@i169_s = external global i169 ; <i169*> [#uses=1] +@i170_s = external global i170 ; <i170*> [#uses=1] +@i171_s = external global i171 ; <i171*> [#uses=1] +@i172_s = external global i172 ; <i172*> [#uses=1] +@i173_s = external global i173 ; <i173*> [#uses=1] +@i174_s = external global i174 ; <i174*> [#uses=1] +@i175_s = external global i175 ; <i175*> [#uses=1] +@i176_s = external global i176 ; <i176*> [#uses=1] +@i177_s = external global i177 ; <i177*> [#uses=1] +@i178_s = external global i178 ; <i178*> [#uses=1] +@i179_s = external global i179 ; <i179*> [#uses=1] +@i180_s = external global i180 ; <i180*> [#uses=1] +@i181_s = external global i181 ; <i181*> [#uses=1] +@i182_s = external global i182 ; <i182*> [#uses=1] +@i183_s = external global i183 ; <i183*> [#uses=1] +@i184_s = external global i184 ; <i184*> [#uses=1] +@i185_s = external global i185 ; <i185*> [#uses=1] +@i186_s = external global i186 ; <i186*> [#uses=1] +@i187_s = external global i187 ; <i187*> [#uses=1] +@i188_s = external global i188 ; <i188*> [#uses=1] +@i189_s = external global i189 ; <i189*> [#uses=1] +@i190_s = external global i190 ; <i190*> [#uses=1] +@i191_s = external global i191 ; <i191*> [#uses=1] +@i192_s = external global i192 ; <i192*> [#uses=1] +@i193_s = external global i193 ; <i193*> [#uses=1] +@i194_s = external global i194 ; <i194*> [#uses=1] +@i195_s = external global i195 ; <i195*> [#uses=1] +@i196_s = external global i196 ; <i196*> [#uses=1] +@i197_s = external global i197 ; <i197*> [#uses=1] +@i198_s = external global i198 ; <i198*> [#uses=1] +@i199_s = external global i199 ; <i199*> [#uses=1] +@i200_s = external global i200 ; <i200*> [#uses=1] +@i201_s = external global i201 ; <i201*> [#uses=1] +@i202_s = external global i202 ; <i202*> [#uses=1] +@i203_s = external global i203 ; <i203*> [#uses=1] +@i204_s = external global i204 ; <i204*> [#uses=1] +@i205_s = external global i205 ; <i205*> [#uses=1] +@i206_s = external global i206 ; <i206*> [#uses=1] +@i207_s = external global i207 ; <i207*> [#uses=1] +@i208_s = external global i208 ; <i208*> [#uses=1] +@i209_s = external global i209 ; <i209*> [#uses=1] +@i210_s = external global i210 ; <i210*> [#uses=1] +@i211_s = external global i211 ; <i211*> [#uses=1] +@i212_s = external global i212 ; <i212*> [#uses=1] +@i213_s = external global i213 ; <i213*> [#uses=1] +@i214_s = external global i214 ; <i214*> [#uses=1] +@i215_s = external global i215 ; <i215*> [#uses=1] +@i216_s = external global i216 ; <i216*> [#uses=1] +@i217_s = external global i217 ; <i217*> [#uses=1] +@i218_s = external global i218 ; <i218*> [#uses=1] +@i219_s = external global i219 ; <i219*> [#uses=1] +@i220_s = external global i220 ; <i220*> [#uses=1] +@i221_s = external global i221 ; <i221*> [#uses=1] +@i222_s = external global i222 ; <i222*> [#uses=1] +@i223_s = external global i223 ; <i223*> [#uses=1] +@i224_s = external global i224 ; <i224*> [#uses=1] +@i225_s = external global i225 ; <i225*> [#uses=1] +@i226_s = external global i226 ; <i226*> [#uses=1] +@i227_s = external global i227 ; <i227*> [#uses=1] +@i228_s = external global i228 ; <i228*> [#uses=1] +@i229_s = external global i229 ; <i229*> [#uses=1] +@i230_s = external global i230 ; <i230*> [#uses=1] +@i231_s = external global i231 ; <i231*> [#uses=1] +@i232_s = external global i232 ; <i232*> [#uses=1] +@i233_s = external global i233 ; <i233*> [#uses=1] +@i234_s = external global i234 ; <i234*> [#uses=1] +@i235_s = external global i235 ; <i235*> [#uses=1] +@i236_s = external global i236 ; <i236*> [#uses=1] +@i237_s = external global i237 ; <i237*> [#uses=1] +@i238_s = external global i238 ; <i238*> [#uses=1] +@i239_s = external global i239 ; <i239*> [#uses=1] +@i240_s = external global i240 ; <i240*> [#uses=1] +@i241_s = external global i241 ; <i241*> [#uses=1] +@i242_s = external global i242 ; <i242*> [#uses=1] +@i243_s = external global i243 ; <i243*> [#uses=1] +@i244_s = external global i244 ; <i244*> [#uses=1] +@i245_s = external global i245 ; <i245*> [#uses=1] +@i246_s = external global i246 ; <i246*> [#uses=1] +@i247_s = external global i247 ; <i247*> [#uses=1] +@i248_s = external global i248 ; <i248*> [#uses=1] +@i249_s = external global i249 ; <i249*> [#uses=1] +@i250_s = external global i250 ; <i250*> [#uses=1] +@i251_s = external global i251 ; <i251*> [#uses=1] +@i252_s = external global i252 ; <i252*> [#uses=1] +@i253_s = external global i253 ; <i253*> [#uses=1] +@i254_s = external global i254 ; <i254*> [#uses=1] +@i255_s = external global i255 ; <i255*> [#uses=1] +@i256_s = external global i256 ; <i256*> [#uses=1] + +define void @i1_ls(i1 %x) nounwind { + store i1 %x, i1* @i1_s + ret void +} + +define void @i2_ls(i2 %x) nounwind { + store i2 %x, i2* @i2_s + ret void +} + +define void @i3_ls(i3 %x) nounwind { + store i3 %x, i3* @i3_s + ret void +} + +define void @i4_ls(i4 %x) nounwind { + store i4 %x, i4* @i4_s + ret void +} + +define void @i5_ls(i5 %x) nounwind { + store i5 %x, i5* @i5_s + ret void +} + +define void @i6_ls(i6 %x) nounwind { + store i6 %x, i6* @i6_s + ret void +} + +define void @i7_ls(i7 %x) nounwind { + store i7 %x, i7* @i7_s + ret void +} + +define void @i8_ls(i8 %x) nounwind { + store i8 %x, i8* @i8_s + ret void +} + +define void @i9_ls(i9 %x) nounwind { + store i9 %x, i9* @i9_s + ret void +} + +define void @i10_ls(i10 %x) nounwind { + store i10 %x, i10* @i10_s + ret void +} + +define void @i11_ls(i11 %x) nounwind { + store i11 %x, i11* @i11_s + ret void +} + +define void @i12_ls(i12 %x) nounwind { + store i12 %x, i12* @i12_s + ret void +} + +define void @i13_ls(i13 %x) nounwind { + store i13 %x, i13* @i13_s + ret void +} + +define void @i14_ls(i14 %x) nounwind { + store i14 %x, i14* @i14_s + ret void +} + +define void @i15_ls(i15 %x) nounwind { + store i15 %x, i15* @i15_s + ret void +} + +define void @i16_ls(i16 %x) nounwind { + store i16 %x, i16* @i16_s + ret void +} + +define void @i17_ls(i17 %x) nounwind { + store i17 %x, i17* @i17_s + ret void +} + +define void @i18_ls(i18 %x) nounwind { + store i18 %x, i18* @i18_s + ret void +} + +define void @i19_ls(i19 %x) nounwind { + store i19 %x, i19* @i19_s + ret void +} + +define void @i20_ls(i20 %x) nounwind { + store i20 %x, i20* @i20_s + ret void +} + +define void @i21_ls(i21 %x) nounwind { + store i21 %x, i21* @i21_s + ret void +} + +define void @i22_ls(i22 %x) nounwind { + store i22 %x, i22* @i22_s + ret void +} + +define void @i23_ls(i23 %x) nounwind { + store i23 %x, i23* @i23_s + ret void +} + +define void @i24_ls(i24 %x) nounwind { + store i24 %x, i24* @i24_s + ret void +} + +define void @i25_ls(i25 %x) nounwind { + store i25 %x, i25* @i25_s + ret void +} + +define void @i26_ls(i26 %x) nounwind { + store i26 %x, i26* @i26_s + ret void +} + +define void @i27_ls(i27 %x) nounwind { + store i27 %x, i27* @i27_s + ret void +} + +define void @i28_ls(i28 %x) nounwind { + store i28 %x, i28* @i28_s + ret void +} + +define void @i29_ls(i29 %x) nounwind { + store i29 %x, i29* @i29_s + ret void +} + +define void @i30_ls(i30 %x) nounwind { + store i30 %x, i30* @i30_s + ret void +} + +define void @i31_ls(i31 %x) nounwind { + store i31 %x, i31* @i31_s + ret void +} + +define void @i32_ls(i32 %x) nounwind { + store i32 %x, i32* @i32_s + ret void +} + +define void @i33_ls(i33 %x) nounwind { + store i33 %x, i33* @i33_s + ret void +} + +define void @i34_ls(i34 %x) nounwind { + store i34 %x, i34* @i34_s + ret void +} + +define void @i35_ls(i35 %x) nounwind { + store i35 %x, i35* @i35_s + ret void +} + +define void @i36_ls(i36 %x) nounwind { + store i36 %x, i36* @i36_s + ret void +} + +define void @i37_ls(i37 %x) nounwind { + store i37 %x, i37* @i37_s + ret void +} + +define void @i38_ls(i38 %x) nounwind { + store i38 %x, i38* @i38_s + ret void +} + +define void @i39_ls(i39 %x) nounwind { + store i39 %x, i39* @i39_s + ret void +} + +define void @i40_ls(i40 %x) nounwind { + store i40 %x, i40* @i40_s + ret void +} + +define void @i41_ls(i41 %x) nounwind { + store i41 %x, i41* @i41_s + ret void +} + +define void @i42_ls(i42 %x) nounwind { + store i42 %x, i42* @i42_s + ret void +} + +define void @i43_ls(i43 %x) nounwind { + store i43 %x, i43* @i43_s + ret void +} + +define void @i44_ls(i44 %x) nounwind { + store i44 %x, i44* @i44_s + ret void +} + +define void @i45_ls(i45 %x) nounwind { + store i45 %x, i45* @i45_s + ret void +} + +define void @i46_ls(i46 %x) nounwind { + store i46 %x, i46* @i46_s + ret void +} + +define void @i47_ls(i47 %x) nounwind { + store i47 %x, i47* @i47_s + ret void +} + +define void @i48_ls(i48 %x) nounwind { + store i48 %x, i48* @i48_s + ret void +} + +define void @i49_ls(i49 %x) nounwind { + store i49 %x, i49* @i49_s + ret void +} + +define void @i50_ls(i50 %x) nounwind { + store i50 %x, i50* @i50_s + ret void +} + +define void @i51_ls(i51 %x) nounwind { + store i51 %x, i51* @i51_s + ret void +} + +define void @i52_ls(i52 %x) nounwind { + store i52 %x, i52* @i52_s + ret void +} + +define void @i53_ls(i53 %x) nounwind { + store i53 %x, i53* @i53_s + ret void +} + +define void @i54_ls(i54 %x) nounwind { + store i54 %x, i54* @i54_s + ret void +} + +define void @i55_ls(i55 %x) nounwind { + store i55 %x, i55* @i55_s + ret void +} + +define void @i56_ls(i56 %x) nounwind { + store i56 %x, i56* @i56_s + ret void +} + +define void @i57_ls(i57 %x) nounwind { + store i57 %x, i57* @i57_s + ret void +} + +define void @i58_ls(i58 %x) nounwind { + store i58 %x, i58* @i58_s + ret void +} + +define void @i59_ls(i59 %x) nounwind { + store i59 %x, i59* @i59_s + ret void +} + +define void @i60_ls(i60 %x) nounwind { + store i60 %x, i60* @i60_s + ret void +} + +define void @i61_ls(i61 %x) nounwind { + store i61 %x, i61* @i61_s + ret void +} + +define void @i62_ls(i62 %x) nounwind { + store i62 %x, i62* @i62_s + ret void +} + +define void @i63_ls(i63 %x) nounwind { + store i63 %x, i63* @i63_s + ret void +} + +define void @i64_ls(i64 %x) nounwind { + store i64 %x, i64* @i64_s + ret void +} + +define void @i65_ls(i65 %x) nounwind { + store i65 %x, i65* @i65_s + ret void +} + +define void @i66_ls(i66 %x) nounwind { + store i66 %x, i66* @i66_s + ret void +} + +define void @i67_ls(i67 %x) nounwind { + store i67 %x, i67* @i67_s + ret void +} + +define void @i68_ls(i68 %x) nounwind { + store i68 %x, i68* @i68_s + ret void +} + +define void @i69_ls(i69 %x) nounwind { + store i69 %x, i69* @i69_s + ret void +} + +define void @i70_ls(i70 %x) nounwind { + store i70 %x, i70* @i70_s + ret void +} + +define void @i71_ls(i71 %x) nounwind { + store i71 %x, i71* @i71_s + ret void +} + +define void @i72_ls(i72 %x) nounwind { + store i72 %x, i72* @i72_s + ret void +} + +define void @i73_ls(i73 %x) nounwind { + store i73 %x, i73* @i73_s + ret void +} + +define void @i74_ls(i74 %x) nounwind { + store i74 %x, i74* @i74_s + ret void +} + +define void @i75_ls(i75 %x) nounwind { + store i75 %x, i75* @i75_s + ret void +} + +define void @i76_ls(i76 %x) nounwind { + store i76 %x, i76* @i76_s + ret void +} + +define void @i77_ls(i77 %x) nounwind { + store i77 %x, i77* @i77_s + ret void +} + +define void @i78_ls(i78 %x) nounwind { + store i78 %x, i78* @i78_s + ret void +} + +define void @i79_ls(i79 %x) nounwind { + store i79 %x, i79* @i79_s + ret void +} + +define void @i80_ls(i80 %x) nounwind { + store i80 %x, i80* @i80_s + ret void +} + +define void @i81_ls(i81 %x) nounwind { + store i81 %x, i81* @i81_s + ret void +} + +define void @i82_ls(i82 %x) nounwind { + store i82 %x, i82* @i82_s + ret void +} + +define void @i83_ls(i83 %x) nounwind { + store i83 %x, i83* @i83_s + ret void +} + +define void @i84_ls(i84 %x) nounwind { + store i84 %x, i84* @i84_s + ret void +} + +define void @i85_ls(i85 %x) nounwind { + store i85 %x, i85* @i85_s + ret void +} + +define void @i86_ls(i86 %x) nounwind { + store i86 %x, i86* @i86_s + ret void +} + +define void @i87_ls(i87 %x) nounwind { + store i87 %x, i87* @i87_s + ret void +} + +define void @i88_ls(i88 %x) nounwind { + store i88 %x, i88* @i88_s + ret void +} + +define void @i89_ls(i89 %x) nounwind { + store i89 %x, i89* @i89_s + ret void +} + +define void @i90_ls(i90 %x) nounwind { + store i90 %x, i90* @i90_s + ret void +} + +define void @i91_ls(i91 %x) nounwind { + store i91 %x, i91* @i91_s + ret void +} + +define void @i92_ls(i92 %x) nounwind { + store i92 %x, i92* @i92_s + ret void +} + +define void @i93_ls(i93 %x) nounwind { + store i93 %x, i93* @i93_s + ret void +} + +define void @i94_ls(i94 %x) nounwind { + store i94 %x, i94* @i94_s + ret void +} + +define void @i95_ls(i95 %x) nounwind { + store i95 %x, i95* @i95_s + ret void +} + +define void @i96_ls(i96 %x) nounwind { + store i96 %x, i96* @i96_s + ret void +} + +define void @i97_ls(i97 %x) nounwind { + store i97 %x, i97* @i97_s + ret void +} + +define void @i98_ls(i98 %x) nounwind { + store i98 %x, i98* @i98_s + ret void +} + +define void @i99_ls(i99 %x) nounwind { + store i99 %x, i99* @i99_s + ret void +} + +define void @i100_ls(i100 %x) nounwind { + store i100 %x, i100* @i100_s + ret void +} + +define void @i101_ls(i101 %x) nounwind { + store i101 %x, i101* @i101_s + ret void +} + +define void @i102_ls(i102 %x) nounwind { + store i102 %x, i102* @i102_s + ret void +} + +define void @i103_ls(i103 %x) nounwind { + store i103 %x, i103* @i103_s + ret void +} + +define void @i104_ls(i104 %x) nounwind { + store i104 %x, i104* @i104_s + ret void +} + +define void @i105_ls(i105 %x) nounwind { + store i105 %x, i105* @i105_s + ret void +} + +define void @i106_ls(i106 %x) nounwind { + store i106 %x, i106* @i106_s + ret void +} + +define void @i107_ls(i107 %x) nounwind { + store i107 %x, i107* @i107_s + ret void +} + +define void @i108_ls(i108 %x) nounwind { + store i108 %x, i108* @i108_s + ret void +} + +define void @i109_ls(i109 %x) nounwind { + store i109 %x, i109* @i109_s + ret void +} + +define void @i110_ls(i110 %x) nounwind { + store i110 %x, i110* @i110_s + ret void +} + +define void @i111_ls(i111 %x) nounwind { + store i111 %x, i111* @i111_s + ret void +} + +define void @i112_ls(i112 %x) nounwind { + store i112 %x, i112* @i112_s + ret void +} + +define void @i113_ls(i113 %x) nounwind { + store i113 %x, i113* @i113_s + ret void +} + +define void @i114_ls(i114 %x) nounwind { + store i114 %x, i114* @i114_s + ret void +} + +define void @i115_ls(i115 %x) nounwind { + store i115 %x, i115* @i115_s + ret void +} + +define void @i116_ls(i116 %x) nounwind { + store i116 %x, i116* @i116_s + ret void +} + +define void @i117_ls(i117 %x) nounwind { + store i117 %x, i117* @i117_s + ret void +} + +define void @i118_ls(i118 %x) nounwind { + store i118 %x, i118* @i118_s + ret void +} + +define void @i119_ls(i119 %x) nounwind { + store i119 %x, i119* @i119_s + ret void +} + +define void @i120_ls(i120 %x) nounwind { + store i120 %x, i120* @i120_s + ret void +} + +define void @i121_ls(i121 %x) nounwind { + store i121 %x, i121* @i121_s + ret void +} + +define void @i122_ls(i122 %x) nounwind { + store i122 %x, i122* @i122_s + ret void +} + +define void @i123_ls(i123 %x) nounwind { + store i123 %x, i123* @i123_s + ret void +} + +define void @i124_ls(i124 %x) nounwind { + store i124 %x, i124* @i124_s + ret void +} + +define void @i125_ls(i125 %x) nounwind { + store i125 %x, i125* @i125_s + ret void +} + +define void @i126_ls(i126 %x) nounwind { + store i126 %x, i126* @i126_s + ret void +} + +define void @i127_ls(i127 %x) nounwind { + store i127 %x, i127* @i127_s + ret void +} + +define void @i128_ls(i128 %x) nounwind { + store i128 %x, i128* @i128_s + ret void +} + +define void @i129_ls(i129 %x) nounwind { + store i129 %x, i129* @i129_s + ret void +} + +define void @i130_ls(i130 %x) nounwind { + store i130 %x, i130* @i130_s + ret void +} + +define void @i131_ls(i131 %x) nounwind { + store i131 %x, i131* @i131_s + ret void +} + +define void @i132_ls(i132 %x) nounwind { + store i132 %x, i132* @i132_s + ret void +} + +define void @i133_ls(i133 %x) nounwind { + store i133 %x, i133* @i133_s + ret void +} + +define void @i134_ls(i134 %x) nounwind { + store i134 %x, i134* @i134_s + ret void +} + +define void @i135_ls(i135 %x) nounwind { + store i135 %x, i135* @i135_s + ret void +} + +define void @i136_ls(i136 %x) nounwind { + store i136 %x, i136* @i136_s + ret void +} + +define void @i137_ls(i137 %x) nounwind { + store i137 %x, i137* @i137_s + ret void +} + +define void @i138_ls(i138 %x) nounwind { + store i138 %x, i138* @i138_s + ret void +} + +define void @i139_ls(i139 %x) nounwind { + store i139 %x, i139* @i139_s + ret void +} + +define void @i140_ls(i140 %x) nounwind { + store i140 %x, i140* @i140_s + ret void +} + +define void @i141_ls(i141 %x) nounwind { + store i141 %x, i141* @i141_s + ret void +} + +define void @i142_ls(i142 %x) nounwind { + store i142 %x, i142* @i142_s + ret void +} + +define void @i143_ls(i143 %x) nounwind { + store i143 %x, i143* @i143_s + ret void +} + +define void @i144_ls(i144 %x) nounwind { + store i144 %x, i144* @i144_s + ret void +} + +define void @i145_ls(i145 %x) nounwind { + store i145 %x, i145* @i145_s + ret void +} + +define void @i146_ls(i146 %x) nounwind { + store i146 %x, i146* @i146_s + ret void +} + +define void @i147_ls(i147 %x) nounwind { + store i147 %x, i147* @i147_s + ret void +} + +define void @i148_ls(i148 %x) nounwind { + store i148 %x, i148* @i148_s + ret void +} + +define void @i149_ls(i149 %x) nounwind { + store i149 %x, i149* @i149_s + ret void +} + +define void @i150_ls(i150 %x) nounwind { + store i150 %x, i150* @i150_s + ret void +} + +define void @i151_ls(i151 %x) nounwind { + store i151 %x, i151* @i151_s + ret void +} + +define void @i152_ls(i152 %x) nounwind { + store i152 %x, i152* @i152_s + ret void +} + +define void @i153_ls(i153 %x) nounwind { + store i153 %x, i153* @i153_s + ret void +} + +define void @i154_ls(i154 %x) nounwind { + store i154 %x, i154* @i154_s + ret void +} + +define void @i155_ls(i155 %x) nounwind { + store i155 %x, i155* @i155_s + ret void +} + +define void @i156_ls(i156 %x) nounwind { + store i156 %x, i156* @i156_s + ret void +} + +define void @i157_ls(i157 %x) nounwind { + store i157 %x, i157* @i157_s + ret void +} + +define void @i158_ls(i158 %x) nounwind { + store i158 %x, i158* @i158_s + ret void +} + +define void @i159_ls(i159 %x) nounwind { + store i159 %x, i159* @i159_s + ret void +} + +define void @i160_ls(i160 %x) nounwind { + store i160 %x, i160* @i160_s + ret void +} + +define void @i161_ls(i161 %x) nounwind { + store i161 %x, i161* @i161_s + ret void +} + +define void @i162_ls(i162 %x) nounwind { + store i162 %x, i162* @i162_s + ret void +} + +define void @i163_ls(i163 %x) nounwind { + store i163 %x, i163* @i163_s + ret void +} + +define void @i164_ls(i164 %x) nounwind { + store i164 %x, i164* @i164_s + ret void +} + +define void @i165_ls(i165 %x) nounwind { + store i165 %x, i165* @i165_s + ret void +} + +define void @i166_ls(i166 %x) nounwind { + store i166 %x, i166* @i166_s + ret void +} + +define void @i167_ls(i167 %x) nounwind { + store i167 %x, i167* @i167_s + ret void +} + +define void @i168_ls(i168 %x) nounwind { + store i168 %x, i168* @i168_s + ret void +} + +define void @i169_ls(i169 %x) nounwind { + store i169 %x, i169* @i169_s + ret void +} + +define void @i170_ls(i170 %x) nounwind { + store i170 %x, i170* @i170_s + ret void +} + +define void @i171_ls(i171 %x) nounwind { + store i171 %x, i171* @i171_s + ret void +} + +define void @i172_ls(i172 %x) nounwind { + store i172 %x, i172* @i172_s + ret void +} + +define void @i173_ls(i173 %x) nounwind { + store i173 %x, i173* @i173_s + ret void +} + +define void @i174_ls(i174 %x) nounwind { + store i174 %x, i174* @i174_s + ret void +} + +define void @i175_ls(i175 %x) nounwind { + store i175 %x, i175* @i175_s + ret void +} + +define void @i176_ls(i176 %x) nounwind { + store i176 %x, i176* @i176_s + ret void +} + +define void @i177_ls(i177 %x) nounwind { + store i177 %x, i177* @i177_s + ret void +} + +define void @i178_ls(i178 %x) nounwind { + store i178 %x, i178* @i178_s + ret void +} + +define void @i179_ls(i179 %x) nounwind { + store i179 %x, i179* @i179_s + ret void +} + +define void @i180_ls(i180 %x) nounwind { + store i180 %x, i180* @i180_s + ret void +} + +define void @i181_ls(i181 %x) nounwind { + store i181 %x, i181* @i181_s + ret void +} + +define void @i182_ls(i182 %x) nounwind { + store i182 %x, i182* @i182_s + ret void +} + +define void @i183_ls(i183 %x) nounwind { + store i183 %x, i183* @i183_s + ret void +} + +define void @i184_ls(i184 %x) nounwind { + store i184 %x, i184* @i184_s + ret void +} + +define void @i185_ls(i185 %x) nounwind { + store i185 %x, i185* @i185_s + ret void +} + +define void @i186_ls(i186 %x) nounwind { + store i186 %x, i186* @i186_s + ret void +} + +define void @i187_ls(i187 %x) nounwind { + store i187 %x, i187* @i187_s + ret void +} + +define void @i188_ls(i188 %x) nounwind { + store i188 %x, i188* @i188_s + ret void +} + +define void @i189_ls(i189 %x) nounwind { + store i189 %x, i189* @i189_s + ret void +} + +define void @i190_ls(i190 %x) nounwind { + store i190 %x, i190* @i190_s + ret void +} + +define void @i191_ls(i191 %x) nounwind { + store i191 %x, i191* @i191_s + ret void +} + +define void @i192_ls(i192 %x) nounwind { + store i192 %x, i192* @i192_s + ret void +} + +define void @i193_ls(i193 %x) nounwind { + store i193 %x, i193* @i193_s + ret void +} + +define void @i194_ls(i194 %x) nounwind { + store i194 %x, i194* @i194_s + ret void +} + +define void @i195_ls(i195 %x) nounwind { + store i195 %x, i195* @i195_s + ret void +} + +define void @i196_ls(i196 %x) nounwind { + store i196 %x, i196* @i196_s + ret void +} + +define void @i197_ls(i197 %x) nounwind { + store i197 %x, i197* @i197_s + ret void +} + +define void @i198_ls(i198 %x) nounwind { + store i198 %x, i198* @i198_s + ret void +} + +define void @i199_ls(i199 %x) nounwind { + store i199 %x, i199* @i199_s + ret void +} + +define void @i200_ls(i200 %x) nounwind { + store i200 %x, i200* @i200_s + ret void +} + +define void @i201_ls(i201 %x) nounwind { + store i201 %x, i201* @i201_s + ret void +} + +define void @i202_ls(i202 %x) nounwind { + store i202 %x, i202* @i202_s + ret void +} + +define void @i203_ls(i203 %x) nounwind { + store i203 %x, i203* @i203_s + ret void +} + +define void @i204_ls(i204 %x) nounwind { + store i204 %x, i204* @i204_s + ret void +} + +define void @i205_ls(i205 %x) nounwind { + store i205 %x, i205* @i205_s + ret void +} + +define void @i206_ls(i206 %x) nounwind { + store i206 %x, i206* @i206_s + ret void +} + +define void @i207_ls(i207 %x) nounwind { + store i207 %x, i207* @i207_s + ret void +} + +define void @i208_ls(i208 %x) nounwind { + store i208 %x, i208* @i208_s + ret void +} + +define void @i209_ls(i209 %x) nounwind { + store i209 %x, i209* @i209_s + ret void +} + +define void @i210_ls(i210 %x) nounwind { + store i210 %x, i210* @i210_s + ret void +} + +define void @i211_ls(i211 %x) nounwind { + store i211 %x, i211* @i211_s + ret void +} + +define void @i212_ls(i212 %x) nounwind { + store i212 %x, i212* @i212_s + ret void +} + +define void @i213_ls(i213 %x) nounwind { + store i213 %x, i213* @i213_s + ret void +} + +define void @i214_ls(i214 %x) nounwind { + store i214 %x, i214* @i214_s + ret void +} + +define void @i215_ls(i215 %x) nounwind { + store i215 %x, i215* @i215_s + ret void +} + +define void @i216_ls(i216 %x) nounwind { + store i216 %x, i216* @i216_s + ret void +} + +define void @i217_ls(i217 %x) nounwind { + store i217 %x, i217* @i217_s + ret void +} + +define void @i218_ls(i218 %x) nounwind { + store i218 %x, i218* @i218_s + ret void +} + +define void @i219_ls(i219 %x) nounwind { + store i219 %x, i219* @i219_s + ret void +} + +define void @i220_ls(i220 %x) nounwind { + store i220 %x, i220* @i220_s + ret void +} + +define void @i221_ls(i221 %x) nounwind { + store i221 %x, i221* @i221_s + ret void +} + +define void @i222_ls(i222 %x) nounwind { + store i222 %x, i222* @i222_s + ret void +} + +define void @i223_ls(i223 %x) nounwind { + store i223 %x, i223* @i223_s + ret void +} + +define void @i224_ls(i224 %x) nounwind { + store i224 %x, i224* @i224_s + ret void +} + +define void @i225_ls(i225 %x) nounwind { + store i225 %x, i225* @i225_s + ret void +} + +define void @i226_ls(i226 %x) nounwind { + store i226 %x, i226* @i226_s + ret void +} + +define void @i227_ls(i227 %x) nounwind { + store i227 %x, i227* @i227_s + ret void +} + +define void @i228_ls(i228 %x) nounwind { + store i228 %x, i228* @i228_s + ret void +} + +define void @i229_ls(i229 %x) nounwind { + store i229 %x, i229* @i229_s + ret void +} + +define void @i230_ls(i230 %x) nounwind { + store i230 %x, i230* @i230_s + ret void +} + +define void @i231_ls(i231 %x) nounwind { + store i231 %x, i231* @i231_s + ret void +} + +define void @i232_ls(i232 %x) nounwind { + store i232 %x, i232* @i232_s + ret void +} + +define void @i233_ls(i233 %x) nounwind { + store i233 %x, i233* @i233_s + ret void +} + +define void @i234_ls(i234 %x) nounwind { + store i234 %x, i234* @i234_s + ret void +} + +define void @i235_ls(i235 %x) nounwind { + store i235 %x, i235* @i235_s + ret void +} + +define void @i236_ls(i236 %x) nounwind { + store i236 %x, i236* @i236_s + ret void +} + +define void @i237_ls(i237 %x) nounwind { + store i237 %x, i237* @i237_s + ret void +} + +define void @i238_ls(i238 %x) nounwind { + store i238 %x, i238* @i238_s + ret void +} + +define void @i239_ls(i239 %x) nounwind { + store i239 %x, i239* @i239_s + ret void +} + +define void @i240_ls(i240 %x) nounwind { + store i240 %x, i240* @i240_s + ret void +} + +define void @i241_ls(i241 %x) nounwind { + store i241 %x, i241* @i241_s + ret void +} + +define void @i242_ls(i242 %x) nounwind { + store i242 %x, i242* @i242_s + ret void +} + +define void @i243_ls(i243 %x) nounwind { + store i243 %x, i243* @i243_s + ret void +} + +define void @i244_ls(i244 %x) nounwind { + store i244 %x, i244* @i244_s + ret void +} + +define void @i245_ls(i245 %x) nounwind { + store i245 %x, i245* @i245_s + ret void +} + +define void @i246_ls(i246 %x) nounwind { + store i246 %x, i246* @i246_s + ret void +} + +define void @i247_ls(i247 %x) nounwind { + store i247 %x, i247* @i247_s + ret void +} + +define void @i248_ls(i248 %x) nounwind { + store i248 %x, i248* @i248_s + ret void +} + +define void @i249_ls(i249 %x) nounwind { + store i249 %x, i249* @i249_s + ret void +} + +define void @i250_ls(i250 %x) nounwind { + store i250 %x, i250* @i250_s + ret void +} + +define void @i251_ls(i251 %x) nounwind { + store i251 %x, i251* @i251_s + ret void +} + +define void @i252_ls(i252 %x) nounwind { + store i252 %x, i252* @i252_s + ret void +} + +define void @i253_ls(i253 %x) nounwind { + store i253 %x, i253* @i253_s + ret void +} + +define void @i254_ls(i254 %x) nounwind { + store i254 %x, i254* @i254_s + ret void +} + +define void @i255_ls(i255 %x) nounwind { + store i255 %x, i255* @i255_s + ret void +} + +define void @i256_ls(i256 %x) nounwind { + store i256 %x, i256* @i256_s + ret void +}
diff --git a/src/LLVM/test/CodeGen/Generic/APIntSextParam.ll b/src/LLVM/test/CodeGen/Generic/APIntSextParam.ll new file mode 100644 index 0000000..acc0eeb --- /dev/null +++ b/src/LLVM/test/CodeGen/Generic/APIntSextParam.ll
@@ -0,0 +1,1537 @@ +; RUN: llc < %s > %t +@i1_s = external global i1 ; <i1*> [#uses=1] +@i2_s = external global i2 ; <i2*> [#uses=1] +@i3_s = external global i3 ; <i3*> [#uses=1] +@i4_s = external global i4 ; <i4*> [#uses=1] +@i5_s = external global i5 ; <i5*> [#uses=1] +@i6_s = external global i6 ; <i6*> [#uses=1] +@i7_s = external global i7 ; <i7*> [#uses=1] +@i8_s = external global i8 ; <i8*> [#uses=1] +@i9_s = external global i9 ; <i9*> [#uses=1] +@i10_s = external global i10 ; <i10*> [#uses=1] +@i11_s = external global i11 ; <i11*> [#uses=1] +@i12_s = external global i12 ; <i12*> [#uses=1] +@i13_s = external global i13 ; <i13*> [#uses=1] +@i14_s = external global i14 ; <i14*> [#uses=1] +@i15_s = external global i15 ; <i15*> [#uses=1] +@i16_s = external global i16 ; <i16*> [#uses=1] +@i17_s = external global i17 ; <i17*> [#uses=1] +@i18_s = external global i18 ; <i18*> [#uses=1] +@i19_s = external global i19 ; <i19*> [#uses=1] +@i20_s = external global i20 ; <i20*> [#uses=1] +@i21_s = external global i21 ; <i21*> [#uses=1] +@i22_s = external global i22 ; <i22*> [#uses=1] +@i23_s = external global i23 ; <i23*> [#uses=1] +@i24_s = external global i24 ; <i24*> [#uses=1] +@i25_s = external global i25 ; <i25*> [#uses=1] +@i26_s = external global i26 ; <i26*> [#uses=1] +@i27_s = external global i27 ; <i27*> [#uses=1] +@i28_s = external global i28 ; <i28*> [#uses=1] +@i29_s = external global i29 ; <i29*> [#uses=1] +@i30_s = external global i30 ; <i30*> [#uses=1] +@i31_s = external global i31 ; <i31*> [#uses=1] +@i32_s = external global i32 ; <i32*> [#uses=1] +@i33_s = external global i33 ; <i33*> [#uses=1] +@i34_s = external global i34 ; <i34*> [#uses=1] +@i35_s = external global i35 ; <i35*> [#uses=1] +@i36_s = external global i36 ; <i36*> [#uses=1] +@i37_s = external global i37 ; <i37*> [#uses=1] +@i38_s = external global i38 ; <i38*> [#uses=1] +@i39_s = external global i39 ; <i39*> [#uses=1] +@i40_s = external global i40 ; <i40*> [#uses=1] +@i41_s = external global i41 ; <i41*> [#uses=1] +@i42_s = external global i42 ; <i42*> [#uses=1] +@i43_s = external global i43 ; <i43*> [#uses=1] +@i44_s = external global i44 ; <i44*> [#uses=1] +@i45_s = external global i45 ; <i45*> [#uses=1] +@i46_s = external global i46 ; <i46*> [#uses=1] +@i47_s = external global i47 ; <i47*> [#uses=1] +@i48_s = external global i48 ; <i48*> [#uses=1] +@i49_s = external global i49 ; <i49*> [#uses=1] +@i50_s = external global i50 ; <i50*> [#uses=1] +@i51_s = external global i51 ; <i51*> [#uses=1] +@i52_s = external global i52 ; <i52*> [#uses=1] +@i53_s = external global i53 ; <i53*> [#uses=1] +@i54_s = external global i54 ; <i54*> [#uses=1] +@i55_s = external global i55 ; <i55*> [#uses=1] +@i56_s = external global i56 ; <i56*> [#uses=1] +@i57_s = external global i57 ; <i57*> [#uses=1] +@i58_s = external global i58 ; <i58*> [#uses=1] +@i59_s = external global i59 ; <i59*> [#uses=1] +@i60_s = external global i60 ; <i60*> [#uses=1] +@i61_s = external global i61 ; <i61*> [#uses=1] +@i62_s = external global i62 ; <i62*> [#uses=1] +@i63_s = external global i63 ; <i63*> [#uses=1] +@i64_s = external global i64 ; <i64*> [#uses=1] +@i65_s = external global i65 ; <i65*> [#uses=1] +@i66_s = external global i66 ; <i66*> [#uses=1] +@i67_s = external global i67 ; <i67*> [#uses=1] +@i68_s = external global i68 ; <i68*> [#uses=1] +@i69_s = external global i69 ; <i69*> [#uses=1] +@i70_s = external global i70 ; <i70*> [#uses=1] +@i71_s = external global i71 ; <i71*> [#uses=1] +@i72_s = external global i72 ; <i72*> [#uses=1] +@i73_s = external global i73 ; <i73*> [#uses=1] +@i74_s = external global i74 ; <i74*> [#uses=1] +@i75_s = external global i75 ; <i75*> [#uses=1] +@i76_s = external global i76 ; <i76*> [#uses=1] +@i77_s = external global i77 ; <i77*> [#uses=1] +@i78_s = external global i78 ; <i78*> [#uses=1] +@i79_s = external global i79 ; <i79*> [#uses=1] +@i80_s = external global i80 ; <i80*> [#uses=1] +@i81_s = external global i81 ; <i81*> [#uses=1] +@i82_s = external global i82 ; <i82*> [#uses=1] +@i83_s = external global i83 ; <i83*> [#uses=1] +@i84_s = external global i84 ; <i84*> [#uses=1] +@i85_s = external global i85 ; <i85*> [#uses=1] +@i86_s = external global i86 ; <i86*> [#uses=1] +@i87_s = external global i87 ; <i87*> [#uses=1] +@i88_s = external global i88 ; <i88*> [#uses=1] +@i89_s = external global i89 ; <i89*> [#uses=1] +@i90_s = external global i90 ; <i90*> [#uses=1] +@i91_s = external global i91 ; <i91*> [#uses=1] +@i92_s = external global i92 ; <i92*> [#uses=1] +@i93_s = external global i93 ; <i93*> [#uses=1] +@i94_s = external global i94 ; <i94*> [#uses=1] +@i95_s = external global i95 ; <i95*> [#uses=1] +@i96_s = external global i96 ; <i96*> [#uses=1] +@i97_s = external global i97 ; <i97*> [#uses=1] +@i98_s = external global i98 ; <i98*> [#uses=1] +@i99_s = external global i99 ; <i99*> [#uses=1] +@i100_s = external global i100 ; <i100*> [#uses=1] +@i101_s = external global i101 ; <i101*> [#uses=1] +@i102_s = external global i102 ; <i102*> [#uses=1] +@i103_s = external global i103 ; <i103*> [#uses=1] +@i104_s = external global i104 ; <i104*> [#uses=1] +@i105_s = external global i105 ; <i105*> [#uses=1] +@i106_s = external global i106 ; <i106*> [#uses=1] +@i107_s = external global i107 ; <i107*> [#uses=1] +@i108_s = external global i108 ; <i108*> [#uses=1] +@i109_s = external global i109 ; <i109*> [#uses=1] +@i110_s = external global i110 ; <i110*> [#uses=1] +@i111_s = external global i111 ; <i111*> [#uses=1] +@i112_s = external global i112 ; <i112*> [#uses=1] +@i113_s = external global i113 ; <i113*> [#uses=1] +@i114_s = external global i114 ; <i114*> [#uses=1] +@i115_s = external global i115 ; <i115*> [#uses=1] +@i116_s = external global i116 ; <i116*> [#uses=1] +@i117_s = external global i117 ; <i117*> [#uses=1] +@i118_s = external global i118 ; <i118*> [#uses=1] +@i119_s = external global i119 ; <i119*> [#uses=1] +@i120_s = external global i120 ; <i120*> [#uses=1] +@i121_s = external global i121 ; <i121*> [#uses=1] +@i122_s = external global i122 ; <i122*> [#uses=1] +@i123_s = external global i123 ; <i123*> [#uses=1] +@i124_s = external global i124 ; <i124*> [#uses=1] +@i125_s = external global i125 ; <i125*> [#uses=1] +@i126_s = external global i126 ; <i126*> [#uses=1] +@i127_s = external global i127 ; <i127*> [#uses=1] +@i128_s = external global i128 ; <i128*> [#uses=1] +@i129_s = external global i129 ; <i129*> [#uses=1] +@i130_s = external global i130 ; <i130*> [#uses=1] +@i131_s = external global i131 ; <i131*> [#uses=1] +@i132_s = external global i132 ; <i132*> [#uses=1] +@i133_s = external global i133 ; <i133*> [#uses=1] +@i134_s = external global i134 ; <i134*> [#uses=1] +@i135_s = external global i135 ; <i135*> [#uses=1] +@i136_s = external global i136 ; <i136*> [#uses=1] +@i137_s = external global i137 ; <i137*> [#uses=1] +@i138_s = external global i138 ; <i138*> [#uses=1] +@i139_s = external global i139 ; <i139*> [#uses=1] +@i140_s = external global i140 ; <i140*> [#uses=1] +@i141_s = external global i141 ; <i141*> [#uses=1] +@i142_s = external global i142 ; <i142*> [#uses=1] +@i143_s = external global i143 ; <i143*> [#uses=1] +@i144_s = external global i144 ; <i144*> [#uses=1] +@i145_s = external global i145 ; <i145*> [#uses=1] +@i146_s = external global i146 ; <i146*> [#uses=1] +@i147_s = external global i147 ; <i147*> [#uses=1] +@i148_s = external global i148 ; <i148*> [#uses=1] +@i149_s = external global i149 ; <i149*> [#uses=1] +@i150_s = external global i150 ; <i150*> [#uses=1] +@i151_s = external global i151 ; <i151*> [#uses=1] +@i152_s = external global i152 ; <i152*> [#uses=1] +@i153_s = external global i153 ; <i153*> [#uses=1] +@i154_s = external global i154 ; <i154*> [#uses=1] +@i155_s = external global i155 ; <i155*> [#uses=1] +@i156_s = external global i156 ; <i156*> [#uses=1] +@i157_s = external global i157 ; <i157*> [#uses=1] +@i158_s = external global i158 ; <i158*> [#uses=1] +@i159_s = external global i159 ; <i159*> [#uses=1] +@i160_s = external global i160 ; <i160*> [#uses=1] +@i161_s = external global i161 ; <i161*> [#uses=1] +@i162_s = external global i162 ; <i162*> [#uses=1] +@i163_s = external global i163 ; <i163*> [#uses=1] +@i164_s = external global i164 ; <i164*> [#uses=1] +@i165_s = external global i165 ; <i165*> [#uses=1] +@i166_s = external global i166 ; <i166*> [#uses=1] +@i167_s = external global i167 ; <i167*> [#uses=1] +@i168_s = external global i168 ; <i168*> [#uses=1] +@i169_s = external global i169 ; <i169*> [#uses=1] +@i170_s = external global i170 ; <i170*> [#uses=1] +@i171_s = external global i171 ; <i171*> [#uses=1] +@i172_s = external global i172 ; <i172*> [#uses=1] +@i173_s = external global i173 ; <i173*> [#uses=1] +@i174_s = external global i174 ; <i174*> [#uses=1] +@i175_s = external global i175 ; <i175*> [#uses=1] +@i176_s = external global i176 ; <i176*> [#uses=1] +@i177_s = external global i177 ; <i177*> [#uses=1] +@i178_s = external global i178 ; <i178*> [#uses=1] +@i179_s = external global i179 ; <i179*> [#uses=1] +@i180_s = external global i180 ; <i180*> [#uses=1] +@i181_s = external global i181 ; <i181*> [#uses=1] +@i182_s = external global i182 ; <i182*> [#uses=1] +@i183_s = external global i183 ; <i183*> [#uses=1] +@i184_s = external global i184 ; <i184*> [#uses=1] +@i185_s = external global i185 ; <i185*> [#uses=1] +@i186_s = external global i186 ; <i186*> [#uses=1] +@i187_s = external global i187 ; <i187*> [#uses=1] +@i188_s = external global i188 ; <i188*> [#uses=1] +@i189_s = external global i189 ; <i189*> [#uses=1] +@i190_s = external global i190 ; <i190*> [#uses=1] +@i191_s = external global i191 ; <i191*> [#uses=1] +@i192_s = external global i192 ; <i192*> [#uses=1] +@i193_s = external global i193 ; <i193*> [#uses=1] +@i194_s = external global i194 ; <i194*> [#uses=1] +@i195_s = external global i195 ; <i195*> [#uses=1] +@i196_s = external global i196 ; <i196*> [#uses=1] +@i197_s = external global i197 ; <i197*> [#uses=1] +@i198_s = external global i198 ; <i198*> [#uses=1] +@i199_s = external global i199 ; <i199*> [#uses=1] +@i200_s = external global i200 ; <i200*> [#uses=1] +@i201_s = external global i201 ; <i201*> [#uses=1] +@i202_s = external global i202 ; <i202*> [#uses=1] +@i203_s = external global i203 ; <i203*> [#uses=1] +@i204_s = external global i204 ; <i204*> [#uses=1] +@i205_s = external global i205 ; <i205*> [#uses=1] +@i206_s = external global i206 ; <i206*> [#uses=1] +@i207_s = external global i207 ; <i207*> [#uses=1] +@i208_s = external global i208 ; <i208*> [#uses=1] +@i209_s = external global i209 ; <i209*> [#uses=1] +@i210_s = external global i210 ; <i210*> [#uses=1] +@i211_s = external global i211 ; <i211*> [#uses=1] +@i212_s = external global i212 ; <i212*> [#uses=1] +@i213_s = external global i213 ; <i213*> [#uses=1] +@i214_s = external global i214 ; <i214*> [#uses=1] +@i215_s = external global i215 ; <i215*> [#uses=1] +@i216_s = external global i216 ; <i216*> [#uses=1] +@i217_s = external global i217 ; <i217*> [#uses=1] +@i218_s = external global i218 ; <i218*> [#uses=1] +@i219_s = external global i219 ; <i219*> [#uses=1] +@i220_s = external global i220 ; <i220*> [#uses=1] +@i221_s = external global i221 ; <i221*> [#uses=1] +@i222_s = external global i222 ; <i222*> [#uses=1] +@i223_s = external global i223 ; <i223*> [#uses=1] +@i224_s = external global i224 ; <i224*> [#uses=1] +@i225_s = external global i225 ; <i225*> [#uses=1] +@i226_s = external global i226 ; <i226*> [#uses=1] +@i227_s = external global i227 ; <i227*> [#uses=1] +@i228_s = external global i228 ; <i228*> [#uses=1] +@i229_s = external global i229 ; <i229*> [#uses=1] +@i230_s = external global i230 ; <i230*> [#uses=1] +@i231_s = external global i231 ; <i231*> [#uses=1] +@i232_s = external global i232 ; <i232*> [#uses=1] +@i233_s = external global i233 ; <i233*> [#uses=1] +@i234_s = external global i234 ; <i234*> [#uses=1] +@i235_s = external global i235 ; <i235*> [#uses=1] +@i236_s = external global i236 ; <i236*> [#uses=1] +@i237_s = external global i237 ; <i237*> [#uses=1] +@i238_s = external global i238 ; <i238*> [#uses=1] +@i239_s = external global i239 ; <i239*> [#uses=1] +@i240_s = external global i240 ; <i240*> [#uses=1] +@i241_s = external global i241 ; <i241*> [#uses=1] +@i242_s = external global i242 ; <i242*> [#uses=1] +@i243_s = external global i243 ; <i243*> [#uses=1] +@i244_s = external global i244 ; <i244*> [#uses=1] +@i245_s = external global i245 ; <i245*> [#uses=1] +@i246_s = external global i246 ; <i246*> [#uses=1] +@i247_s = external global i247 ; <i247*> [#uses=1] +@i248_s = external global i248 ; <i248*> [#uses=1] +@i249_s = external global i249 ; <i249*> [#uses=1] +@i250_s = external global i250 ; <i250*> [#uses=1] +@i251_s = external global i251 ; <i251*> [#uses=1] +@i252_s = external global i252 ; <i252*> [#uses=1] +@i253_s = external global i253 ; <i253*> [#uses=1] +@i254_s = external global i254 ; <i254*> [#uses=1] +@i255_s = external global i255 ; <i255*> [#uses=1] +@i256_s = external global i256 ; <i256*> [#uses=1] + +define void @i1_ls(i1 signext %x) nounwind { + store i1 %x, i1* @i1_s + ret void +} + +define void @i2_ls(i2 signext %x) nounwind { + store i2 %x, i2* @i2_s + ret void +} + +define void @i3_ls(i3 signext %x) nounwind { + store i3 %x, i3* @i3_s + ret void +} + +define void @i4_ls(i4 signext %x) nounwind { + store i4 %x, i4* @i4_s + ret void +} + +define void @i5_ls(i5 signext %x) nounwind { + store i5 %x, i5* @i5_s + ret void +} + +define void @i6_ls(i6 signext %x) nounwind { + store i6 %x, i6* @i6_s + ret void +} + +define void @i7_ls(i7 signext %x) nounwind { + store i7 %x, i7* @i7_s + ret void +} + +define void @i8_ls(i8 signext %x) nounwind { + store i8 %x, i8* @i8_s + ret void +} + +define void @i9_ls(i9 signext %x) nounwind { + store i9 %x, i9* @i9_s + ret void +} + +define void @i10_ls(i10 signext %x) nounwind { + store i10 %x, i10* @i10_s + ret void +} + +define void @i11_ls(i11 signext %x) nounwind { + store i11 %x, i11* @i11_s + ret void +} + +define void @i12_ls(i12 signext %x) nounwind { + store i12 %x, i12* @i12_s + ret void +} + +define void @i13_ls(i13 signext %x) nounwind { + store i13 %x, i13* @i13_s + ret void +} + +define void @i14_ls(i14 signext %x) nounwind { + store i14 %x, i14* @i14_s + ret void +} + +define void @i15_ls(i15 signext %x) nounwind { + store i15 %x, i15* @i15_s + ret void +} + +define void @i16_ls(i16 signext %x) nounwind { + store i16 %x, i16* @i16_s + ret void +} + +define void @i17_ls(i17 signext %x) nounwind { + store i17 %x, i17* @i17_s + ret void +} + +define void @i18_ls(i18 signext %x) nounwind { + store i18 %x, i18* @i18_s + ret void +} + +define void @i19_ls(i19 signext %x) nounwind { + store i19 %x, i19* @i19_s + ret void +} + +define void @i20_ls(i20 signext %x) nounwind { + store i20 %x, i20* @i20_s + ret void +} + +define void @i21_ls(i21 signext %x) nounwind { + store i21 %x, i21* @i21_s + ret void +} + +define void @i22_ls(i22 signext %x) nounwind { + store i22 %x, i22* @i22_s + ret void +} + +define void @i23_ls(i23 signext %x) nounwind { + store i23 %x, i23* @i23_s + ret void +} + +define void @i24_ls(i24 signext %x) nounwind { + store i24 %x, i24* @i24_s + ret void +} + +define void @i25_ls(i25 signext %x) nounwind { + store i25 %x, i25* @i25_s + ret void +} + +define void @i26_ls(i26 signext %x) nounwind { + store i26 %x, i26* @i26_s + ret void +} + +define void @i27_ls(i27 signext %x) nounwind { + store i27 %x, i27* @i27_s + ret void +} + +define void @i28_ls(i28 signext %x) nounwind { + store i28 %x, i28* @i28_s + ret void +} + +define void @i29_ls(i29 signext %x) nounwind { + store i29 %x, i29* @i29_s + ret void +} + +define void @i30_ls(i30 signext %x) nounwind { + store i30 %x, i30* @i30_s + ret void +} + +define void @i31_ls(i31 signext %x) nounwind { + store i31 %x, i31* @i31_s + ret void +} + +define void @i32_ls(i32 signext %x) nounwind { + store i32 %x, i32* @i32_s + ret void +} + +define void @i33_ls(i33 signext %x) nounwind { + store i33 %x, i33* @i33_s + ret void +} + +define void @i34_ls(i34 signext %x) nounwind { + store i34 %x, i34* @i34_s + ret void +} + +define void @i35_ls(i35 signext %x) nounwind { + store i35 %x, i35* @i35_s + ret void +} + +define void @i36_ls(i36 signext %x) nounwind { + store i36 %x, i36* @i36_s + ret void +} + +define void @i37_ls(i37 signext %x) nounwind { + store i37 %x, i37* @i37_s + ret void +} + +define void @i38_ls(i38 signext %x) nounwind { + store i38 %x, i38* @i38_s + ret void +} + +define void @i39_ls(i39 signext %x) nounwind { + store i39 %x, i39* @i39_s + ret void +} + +define void @i40_ls(i40 signext %x) nounwind { + store i40 %x, i40* @i40_s + ret void +} + +define void @i41_ls(i41 signext %x) nounwind { + store i41 %x, i41* @i41_s + ret void +} + +define void @i42_ls(i42 signext %x) nounwind { + store i42 %x, i42* @i42_s + ret void +} + +define void @i43_ls(i43 signext %x) nounwind { + store i43 %x, i43* @i43_s + ret void +} + +define void @i44_ls(i44 signext %x) nounwind { + store i44 %x, i44* @i44_s + ret void +} + +define void @i45_ls(i45 signext %x) nounwind { + store i45 %x, i45* @i45_s + ret void +} + +define void @i46_ls(i46 signext %x) nounwind { + store i46 %x, i46* @i46_s + ret void +} + +define void @i47_ls(i47 signext %x) nounwind { + store i47 %x, i47* @i47_s + ret void +} + +define void @i48_ls(i48 signext %x) nounwind { + store i48 %x, i48* @i48_s + ret void +} + +define void @i49_ls(i49 signext %x) nounwind { + store i49 %x, i49* @i49_s + ret void +} + +define void @i50_ls(i50 signext %x) nounwind { + store i50 %x, i50* @i50_s + ret void +} + +define void @i51_ls(i51 signext %x) nounwind { + store i51 %x, i51* @i51_s + ret void +} + +define void @i52_ls(i52 signext %x) nounwind { + store i52 %x, i52* @i52_s + ret void +} + +define void @i53_ls(i53 signext %x) nounwind { + store i53 %x, i53* @i53_s + ret void +} + +define void @i54_ls(i54 signext %x) nounwind { + store i54 %x, i54* @i54_s + ret void +} + +define void @i55_ls(i55 signext %x) nounwind { + store i55 %x, i55* @i55_s + ret void +} + +define void @i56_ls(i56 signext %x) nounwind { + store i56 %x, i56* @i56_s + ret void +} + +define void @i57_ls(i57 signext %x) nounwind { + store i57 %x, i57* @i57_s + ret void +} + +define void @i58_ls(i58 signext %x) nounwind { + store i58 %x, i58* @i58_s + ret void +} + +define void @i59_ls(i59 signext %x) nounwind { + store i59 %x, i59* @i59_s + ret void +} + +define void @i60_ls(i60 signext %x) nounwind { + store i60 %x, i60* @i60_s + ret void +} + +define void @i61_ls(i61 signext %x) nounwind { + store i61 %x, i61* @i61_s + ret void +} + +define void @i62_ls(i62 signext %x) nounwind { + store i62 %x, i62* @i62_s + ret void +} + +define void @i63_ls(i63 signext %x) nounwind { + store i63 %x, i63* @i63_s + ret void +} + +define void @i64_ls(i64 signext %x) nounwind { + store i64 %x, i64* @i64_s + ret void +} + +define void @i65_ls(i65 signext %x) nounwind { + store i65 %x, i65* @i65_s + ret void +} + +define void @i66_ls(i66 signext %x) nounwind { + store i66 %x, i66* @i66_s + ret void +} + +define void @i67_ls(i67 signext %x) nounwind { + store i67 %x, i67* @i67_s + ret void +} + +define void @i68_ls(i68 signext %x) nounwind { + store i68 %x, i68* @i68_s + ret void +} + +define void @i69_ls(i69 signext %x) nounwind { + store i69 %x, i69* @i69_s + ret void +} + +define void @i70_ls(i70 signext %x) nounwind { + store i70 %x, i70* @i70_s + ret void +} + +define void @i71_ls(i71 signext %x) nounwind { + store i71 %x, i71* @i71_s + ret void +} + +define void @i72_ls(i72 signext %x) nounwind { + store i72 %x, i72* @i72_s + ret void +} + +define void @i73_ls(i73 signext %x) nounwind { + store i73 %x, i73* @i73_s + ret void +} + +define void @i74_ls(i74 signext %x) nounwind { + store i74 %x, i74* @i74_s + ret void +} + +define void @i75_ls(i75 signext %x) nounwind { + store i75 %x, i75* @i75_s + ret void +} + +define void @i76_ls(i76 signext %x) nounwind { + store i76 %x, i76* @i76_s + ret void +} + +define void @i77_ls(i77 signext %x) nounwind { + store i77 %x, i77* @i77_s + ret void +} + +define void @i78_ls(i78 signext %x) nounwind { + store i78 %x, i78* @i78_s + ret void +} + +define void @i79_ls(i79 signext %x) nounwind { + store i79 %x, i79* @i79_s + ret void +} + +define void @i80_ls(i80 signext %x) nounwind { + store i80 %x, i80* @i80_s + ret void +} + +define void @i81_ls(i81 signext %x) nounwind { + store i81 %x, i81* @i81_s + ret void +} + +define void @i82_ls(i82 signext %x) nounwind { + store i82 %x, i82* @i82_s + ret void +} + +define void @i83_ls(i83 signext %x) nounwind { + store i83 %x, i83* @i83_s + ret void +} + +define void @i84_ls(i84 signext %x) nounwind { + store i84 %x, i84* @i84_s + ret void +} + +define void @i85_ls(i85 signext %x) nounwind { + store i85 %x, i85* @i85_s + ret void +} + +define void @i86_ls(i86 signext %x) nounwind { + store i86 %x, i86* @i86_s + ret void +} + +define void @i87_ls(i87 signext %x) nounwind { + store i87 %x, i87* @i87_s + ret void +} + +define void @i88_ls(i88 signext %x) nounwind { + store i88 %x, i88* @i88_s + ret void +} + +define void @i89_ls(i89 signext %x) nounwind { + store i89 %x, i89* @i89_s + ret void +} + +define void @i90_ls(i90 signext %x) nounwind { + store i90 %x, i90* @i90_s + ret void +} + +define void @i91_ls(i91 signext %x) nounwind { + store i91 %x, i91* @i91_s + ret void +} + +define void @i92_ls(i92 signext %x) nounwind { + store i92 %x, i92* @i92_s + ret void +} + +define void @i93_ls(i93 signext %x) nounwind { + store i93 %x, i93* @i93_s + ret void +} + +define void @i94_ls(i94 signext %x) nounwind { + store i94 %x, i94* @i94_s + ret void +} + +define void @i95_ls(i95 signext %x) nounwind { + store i95 %x, i95* @i95_s + ret void +} + +define void @i96_ls(i96 signext %x) nounwind { + store i96 %x, i96* @i96_s + ret void +} + +define void @i97_ls(i97 signext %x) nounwind { + store i97 %x, i97* @i97_s + ret void +} + +define void @i98_ls(i98 signext %x) nounwind { + store i98 %x, i98* @i98_s + ret void +} + +define void @i99_ls(i99 signext %x) nounwind { + store i99 %x, i99* @i99_s + ret void +} + +define void @i100_ls(i100 signext %x) nounwind { + store i100 %x, i100* @i100_s + ret void +} + +define void @i101_ls(i101 signext %x) nounwind { + store i101 %x, i101* @i101_s + ret void +} + +define void @i102_ls(i102 signext %x) nounwind { + store i102 %x, i102* @i102_s + ret void +} + +define void @i103_ls(i103 signext %x) nounwind { + store i103 %x, i103* @i103_s + ret void +} + +define void @i104_ls(i104 signext %x) nounwind { + store i104 %x, i104* @i104_s + ret void +} + +define void @i105_ls(i105 signext %x) nounwind { + store i105 %x, i105* @i105_s + ret void +} + +define void @i106_ls(i106 signext %x) nounwind { + store i106 %x, i106* @i106_s + ret void +} + +define void @i107_ls(i107 signext %x) nounwind { + store i107 %x, i107* @i107_s + ret void +} + +define void @i108_ls(i108 signext %x) nounwind { + store i108 %x, i108* @i108_s + ret void +} + +define void @i109_ls(i109 signext %x) nounwind { + store i109 %x, i109* @i109_s + ret void +} + +define void @i110_ls(i110 signext %x) nounwind { + store i110 %x, i110* @i110_s + ret void +} + +define void @i111_ls(i111 signext %x) nounwind { + store i111 %x, i111* @i111_s + ret void +} + +define void @i112_ls(i112 signext %x) nounwind { + store i112 %x, i112* @i112_s + ret void +} + +define void @i113_ls(i113 signext %x) nounwind { + store i113 %x, i113* @i113_s + ret void +} + +define void @i114_ls(i114 signext %x) nounwind { + store i114 %x, i114* @i114_s + ret void +} + +define void @i115_ls(i115 signext %x) nounwind { + store i115 %x, i115* @i115_s + ret void +} + +define void @i116_ls(i116 signext %x) nounwind { + store i116 %x, i116* @i116_s + ret void +} + +define void @i117_ls(i117 signext %x) nounwind { + store i117 %x, i117* @i117_s + ret void +} + +define void @i118_ls(i118 signext %x) nounwind { + store i118 %x, i118* @i118_s + ret void +} + +define void @i119_ls(i119 signext %x) nounwind { + store i119 %x, i119* @i119_s + ret void +} + +define void @i120_ls(i120 signext %x) nounwind { + store i120 %x, i120* @i120_s + ret void +} + +define void @i121_ls(i121 signext %x) nounwind { + store i121 %x, i121* @i121_s + ret void +} + +define void @i122_ls(i122 signext %x) nounwind { + store i122 %x, i122* @i122_s + ret void +} + +define void @i123_ls(i123 signext %x) nounwind { + store i123 %x, i123* @i123_s + ret void +} + +define void @i124_ls(i124 signext %x) nounwind { + store i124 %x, i124* @i124_s + ret void +} + +define void @i125_ls(i125 signext %x) nounwind { + store i125 %x, i125* @i125_s + ret void +} + +define void @i126_ls(i126 signext %x) nounwind { + store i126 %x, i126* @i126_s + ret void +} + +define void @i127_ls(i127 signext %x) nounwind { + store i127 %x, i127* @i127_s + ret void +} + +define void @i128_ls(i128 signext %x) nounwind { + store i128 %x, i128* @i128_s + ret void +} + +define void @i129_ls(i129 signext %x) nounwind { + store i129 %x, i129* @i129_s + ret void +} + +define void @i130_ls(i130 signext %x) nounwind { + store i130 %x, i130* @i130_s + ret void +} + +define void @i131_ls(i131 signext %x) nounwind { + store i131 %x, i131* @i131_s + ret void +} + +define void @i132_ls(i132 signext %x) nounwind { + store i132 %x, i132* @i132_s + ret void +} + +define void @i133_ls(i133 signext %x) nounwind { + store i133 %x, i133* @i133_s + ret void +} + +define void @i134_ls(i134 signext %x) nounwind { + store i134 %x, i134* @i134_s + ret void +} + +define void @i135_ls(i135 signext %x) nounwind { + store i135 %x, i135* @i135_s + ret void +} + +define void @i136_ls(i136 signext %x) nounwind { + store i136 %x, i136* @i136_s + ret void +} + +define void @i137_ls(i137 signext %x) nounwind { + store i137 %x, i137* @i137_s + ret void +} + +define void @i138_ls(i138 signext %x) nounwind { + store i138 %x, i138* @i138_s + ret void +} + +define void @i139_ls(i139 signext %x) nounwind { + store i139 %x, i139* @i139_s + ret void +} + +define void @i140_ls(i140 signext %x) nounwind { + store i140 %x, i140* @i140_s + ret void +} + +define void @i141_ls(i141 signext %x) nounwind { + store i141 %x, i141* @i141_s + ret void +} + +define void @i142_ls(i142 signext %x) nounwind { + store i142 %x, i142* @i142_s + ret void +} + +define void @i143_ls(i143 signext %x) nounwind { + store i143 %x, i143* @i143_s + ret void +} + +define void @i144_ls(i144 signext %x) nounwind { + store i144 %x, i144* @i144_s + ret void +} + +define void @i145_ls(i145 signext %x) nounwind { + store i145 %x, i145* @i145_s + ret void +} + +define void @i146_ls(i146 signext %x) nounwind { + store i146 %x, i146* @i146_s + ret void +} + +define void @i147_ls(i147 signext %x) nounwind { + store i147 %x, i147* @i147_s + ret void +} + +define void @i148_ls(i148 signext %x) nounwind { + store i148 %x, i148* @i148_s + ret void +} + +define void @i149_ls(i149 signext %x) nounwind { + store i149 %x, i149* @i149_s + ret void +} + +define void @i150_ls(i150 signext %x) nounwind { + store i150 %x, i150* @i150_s + ret void +} + +define void @i151_ls(i151 signext %x) nounwind { + store i151 %x, i151* @i151_s + ret void +} + +define void @i152_ls(i152 signext %x) nounwind { + store i152 %x, i152* @i152_s + ret void +} + +define void @i153_ls(i153 signext %x) nounwind { + store i153 %x, i153* @i153_s + ret void +} + +define void @i154_ls(i154 signext %x) nounwind { + store i154 %x, i154* @i154_s + ret void +} + +define void @i155_ls(i155 signext %x) nounwind { + store i155 %x, i155* @i155_s + ret void +} + +define void @i156_ls(i156 signext %x) nounwind { + store i156 %x, i156* @i156_s + ret void +} + +define void @i157_ls(i157 signext %x) nounwind { + store i157 %x, i157* @i157_s + ret void +} + +define void @i158_ls(i158 signext %x) nounwind { + store i158 %x, i158* @i158_s + ret void +} + +define void @i159_ls(i159 signext %x) nounwind { + store i159 %x, i159* @i159_s + ret void +} + +define void @i160_ls(i160 signext %x) nounwind { + store i160 %x, i160* @i160_s + ret void +} + +define void @i161_ls(i161 signext %x) nounwind { + store i161 %x, i161* @i161_s + ret void +} + +define void @i162_ls(i162 signext %x) nounwind { + store i162 %x, i162* @i162_s + ret void +} + +define void @i163_ls(i163 signext %x) nounwind { + store i163 %x, i163* @i163_s + ret void +} + +define void @i164_ls(i164 signext %x) nounwind { + store i164 %x, i164* @i164_s + ret void +} + +define void @i165_ls(i165 signext %x) nounwind { + store i165 %x, i165* @i165_s + ret void +} + +define void @i166_ls(i166 signext %x) nounwind { + store i166 %x, i166* @i166_s + ret void +} + +define void @i167_ls(i167 signext %x) nounwind { + store i167 %x, i167* @i167_s + ret void +} + +define void @i168_ls(i168 signext %x) nounwind { + store i168 %x, i168* @i168_s + ret void +} + +define void @i169_ls(i169 signext %x) nounwind { + store i169 %x, i169* @i169_s + ret void +} + +define void @i170_ls(i170 signext %x) nounwind { + store i170 %x, i170* @i170_s + ret void +} + +define void @i171_ls(i171 signext %x) nounwind { + store i171 %x, i171* @i171_s + ret void +} + +define void @i172_ls(i172 signext %x) nounwind { + store i172 %x, i172* @i172_s + ret void +} + +define void @i173_ls(i173 signext %x) nounwind { + store i173 %x, i173* @i173_s + ret void +} + +define void @i174_ls(i174 signext %x) nounwind { + store i174 %x, i174* @i174_s + ret void +} + +define void @i175_ls(i175 signext %x) nounwind { + store i175 %x, i175* @i175_s + ret void +} + +define void @i176_ls(i176 signext %x) nounwind { + store i176 %x, i176* @i176_s + ret void +} + +define void @i177_ls(i177 signext %x) nounwind { + store i177 %x, i177* @i177_s + ret void +} + +define void @i178_ls(i178 signext %x) nounwind { + store i178 %x, i178* @i178_s + ret void +} + +define void @i179_ls(i179 signext %x) nounwind { + store i179 %x, i179* @i179_s + ret void +} + +define void @i180_ls(i180 signext %x) nounwind { + store i180 %x, i180* @i180_s + ret void +} + +define void @i181_ls(i181 signext %x) nounwind { + store i181 %x, i181* @i181_s + ret void +} + +define void @i182_ls(i182 signext %x) nounwind { + store i182 %x, i182* @i182_s + ret void +} + +define void @i183_ls(i183 signext %x) nounwind { + store i183 %x, i183* @i183_s + ret void +} + +define void @i184_ls(i184 signext %x) nounwind { + store i184 %x, i184* @i184_s + ret void +} + +define void @i185_ls(i185 signext %x) nounwind { + store i185 %x, i185* @i185_s + ret void +} + +define void @i186_ls(i186 signext %x) nounwind { + store i186 %x, i186* @i186_s + ret void +} + +define void @i187_ls(i187 signext %x) nounwind { + store i187 %x, i187* @i187_s + ret void +} + +define void @i188_ls(i188 signext %x) nounwind { + store i188 %x, i188* @i188_s + ret void +} + +define void @i189_ls(i189 signext %x) nounwind { + store i189 %x, i189* @i189_s + ret void +} + +define void @i190_ls(i190 signext %x) nounwind { + store i190 %x, i190* @i190_s + ret void +} + +define void @i191_ls(i191 signext %x) nounwind { + store i191 %x, i191* @i191_s + ret void +} + +define void @i192_ls(i192 signext %x) nounwind { + store i192 %x, i192* @i192_s + ret void +} + +define void @i193_ls(i193 signext %x) nounwind { + store i193 %x, i193* @i193_s + ret void +} + +define void @i194_ls(i194 signext %x) nounwind { + store i194 %x, i194* @i194_s + ret void +} + +define void @i195_ls(i195 signext %x) nounwind { + store i195 %x, i195* @i195_s + ret void +} + +define void @i196_ls(i196 signext %x) nounwind { + store i196 %x, i196* @i196_s + ret void +} + +define void @i197_ls(i197 signext %x) nounwind { + store i197 %x, i197* @i197_s + ret void +} + +define void @i198_ls(i198 signext %x) nounwind { + store i198 %x, i198* @i198_s + ret void +} + +define void @i199_ls(i199 signext %x) nounwind { + store i199 %x, i199* @i199_s + ret void +} + +define void @i200_ls(i200 signext %x) nounwind { + store i200 %x, i200* @i200_s + ret void +} + +define void @i201_ls(i201 signext %x) nounwind { + store i201 %x, i201* @i201_s + ret void +} + +define void @i202_ls(i202 signext %x) nounwind { + store i202 %x, i202* @i202_s + ret void +} + +define void @i203_ls(i203 signext %x) nounwind { + store i203 %x, i203* @i203_s + ret void +} + +define void @i204_ls(i204 signext %x) nounwind { + store i204 %x, i204* @i204_s + ret void +} + +define void @i205_ls(i205 signext %x) nounwind { + store i205 %x, i205* @i205_s + ret void +} + +define void @i206_ls(i206 signext %x) nounwind { + store i206 %x, i206* @i206_s + ret void +} + +define void @i207_ls(i207 signext %x) nounwind { + store i207 %x, i207* @i207_s + ret void +} + +define void @i208_ls(i208 signext %x) nounwind { + store i208 %x, i208* @i208_s + ret void +} + +define void @i209_ls(i209 signext %x) nounwind { + store i209 %x, i209* @i209_s + ret void +} + +define void @i210_ls(i210 signext %x) nounwind { + store i210 %x, i210* @i210_s + ret void +} + +define void @i211_ls(i211 signext %x) nounwind { + store i211 %x, i211* @i211_s + ret void +} + +define void @i212_ls(i212 signext %x) nounwind { + store i212 %x, i212* @i212_s + ret void +} + +define void @i213_ls(i213 signext %x) nounwind { + store i213 %x, i213* @i213_s + ret void +} + +define void @i214_ls(i214 signext %x) nounwind { + store i214 %x, i214* @i214_s + ret void +} + +define void @i215_ls(i215 signext %x) nounwind { + store i215 %x, i215* @i215_s + ret void +} + +define void @i216_ls(i216 signext %x) nounwind { + store i216 %x, i216* @i216_s + ret void +} + +define void @i217_ls(i217 signext %x) nounwind { + store i217 %x, i217* @i217_s + ret void +} + +define void @i218_ls(i218 signext %x) nounwind { + store i218 %x, i218* @i218_s + ret void +} + +define void @i219_ls(i219 signext %x) nounwind { + store i219 %x, i219* @i219_s + ret void +} + +define void @i220_ls(i220 signext %x) nounwind { + store i220 %x, i220* @i220_s + ret void +} + +define void @i221_ls(i221 signext %x) nounwind { + store i221 %x, i221* @i221_s + ret void +} + +define void @i222_ls(i222 signext %x) nounwind { + store i222 %x, i222* @i222_s + ret void +} + +define void @i223_ls(i223 signext %x) nounwind { + store i223 %x, i223* @i223_s + ret void +} + +define void @i224_ls(i224 signext %x) nounwind { + store i224 %x, i224* @i224_s + ret void +} + +define void @i225_ls(i225 signext %x) nounwind { + store i225 %x, i225* @i225_s + ret void +} + +define void @i226_ls(i226 signext %x) nounwind { + store i226 %x, i226* @i226_s + ret void +} + +define void @i227_ls(i227 signext %x) nounwind { + store i227 %x, i227* @i227_s + ret void +} + +define void @i228_ls(i228 signext %x) nounwind { + store i228 %x, i228* @i228_s + ret void +} + +define void @i229_ls(i229 signext %x) nounwind { + store i229 %x, i229* @i229_s + ret void +} + +define void @i230_ls(i230 signext %x) nounwind { + store i230 %x, i230* @i230_s + ret void +} + +define void @i231_ls(i231 signext %x) nounwind { + store i231 %x, i231* @i231_s + ret void +} + +define void @i232_ls(i232 signext %x) nounwind { + store i232 %x, i232* @i232_s + ret void +} + +define void @i233_ls(i233 signext %x) nounwind { + store i233 %x, i233* @i233_s + ret void +} + +define void @i234_ls(i234 signext %x) nounwind { + store i234 %x, i234* @i234_s + ret void +} + +define void @i235_ls(i235 signext %x) nounwind { + store i235 %x, i235* @i235_s + ret void +} + +define void @i236_ls(i236 signext %x) nounwind { + store i236 %x, i236* @i236_s + ret void +} + +define void @i237_ls(i237 signext %x) nounwind { + store i237 %x, i237* @i237_s + ret void +} + +define void @i238_ls(i238 signext %x) nounwind { + store i238 %x, i238* @i238_s + ret void +} + +define void @i239_ls(i239 signext %x) nounwind { + store i239 %x, i239* @i239_s + ret void +} + +define void @i240_ls(i240 signext %x) nounwind { + store i240 %x, i240* @i240_s + ret void +} + +define void @i241_ls(i241 signext %x) nounwind { + store i241 %x, i241* @i241_s + ret void +} + +define void @i242_ls(i242 signext %x) nounwind { + store i242 %x, i242* @i242_s + ret void +} + +define void @i243_ls(i243 signext %x) nounwind { + store i243 %x, i243* @i243_s + ret void +} + +define void @i244_ls(i244 signext %x) nounwind { + store i244 %x, i244* @i244_s + ret void +} + +define void @i245_ls(i245 signext %x) nounwind { + store i245 %x, i245* @i245_s + ret void +} + +define void @i246_ls(i246 signext %x) nounwind { + store i246 %x, i246* @i246_s + ret void +} + +define void @i247_ls(i247 signext %x) nounwind { + store i247 %x, i247* @i247_s + ret void +} + +define void @i248_ls(i248 signext %x) nounwind { + store i248 %x, i248* @i248_s + ret void +} + +define void @i249_ls(i249 signext %x) nounwind { + store i249 %x, i249* @i249_s + ret void +} + +define void @i250_ls(i250 signext %x) nounwind { + store i250 %x, i250* @i250_s + ret void +} + +define void @i251_ls(i251 signext %x) nounwind { + store i251 %x, i251* @i251_s + ret void +} + +define void @i252_ls(i252 signext %x) nounwind { + store i252 %x, i252* @i252_s + ret void +} + +define void @i253_ls(i253 signext %x) nounwind { + store i253 %x, i253* @i253_s + ret void +} + +define void @i254_ls(i254 signext %x) nounwind { + store i254 %x, i254* @i254_s + ret void +} + +define void @i255_ls(i255 signext %x) nounwind { + store i255 %x, i255* @i255_s + ret void +} + +define void @i256_ls(i256 signext %x) nounwind { + store i256 %x, i256* @i256_s + ret void +}
diff --git a/src/LLVM/test/CodeGen/Generic/APIntZextParam.ll b/src/LLVM/test/CodeGen/Generic/APIntZextParam.ll new file mode 100644 index 0000000..173b9fd --- /dev/null +++ b/src/LLVM/test/CodeGen/Generic/APIntZextParam.ll
@@ -0,0 +1,1537 @@ +; RUN: llc < %s > %t +@i1_s = external global i1 ; <i1*> [#uses=1] +@i2_s = external global i2 ; <i2*> [#uses=1] +@i3_s = external global i3 ; <i3*> [#uses=1] +@i4_s = external global i4 ; <i4*> [#uses=1] +@i5_s = external global i5 ; <i5*> [#uses=1] +@i6_s = external global i6 ; <i6*> [#uses=1] +@i7_s = external global i7 ; <i7*> [#uses=1] +@i8_s = external global i8 ; <i8*> [#uses=1] +@i9_s = external global i9 ; <i9*> [#uses=1] +@i10_s = external global i10 ; <i10*> [#uses=1] +@i11_s = external global i11 ; <i11*> [#uses=1] +@i12_s = external global i12 ; <i12*> [#uses=1] +@i13_s = external global i13 ; <i13*> [#uses=1] +@i14_s = external global i14 ; <i14*> [#uses=1] +@i15_s = external global i15 ; <i15*> [#uses=1] +@i16_s = external global i16 ; <i16*> [#uses=1] +@i17_s = external global i17 ; <i17*> [#uses=1] +@i18_s = external global i18 ; <i18*> [#uses=1] +@i19_s = external global i19 ; <i19*> [#uses=1] +@i20_s = external global i20 ; <i20*> [#uses=1] +@i21_s = external global i21 ; <i21*> [#uses=1] +@i22_s = external global i22 ; <i22*> [#uses=1] +@i23_s = external global i23 ; <i23*> [#uses=1] +@i24_s = external global i24 ; <i24*> [#uses=1] +@i25_s = external global i25 ; <i25*> [#uses=1] +@i26_s = external global i26 ; <i26*> [#uses=1] +@i27_s = external global i27 ; <i27*> [#uses=1] +@i28_s = external global i28 ; <i28*> [#uses=1] +@i29_s = external global i29 ; <i29*> [#uses=1] +@i30_s = external global i30 ; <i30*> [#uses=1] +@i31_s = external global i31 ; <i31*> [#uses=1] +@i32_s = external global i32 ; <i32*> [#uses=1] +@i33_s = external global i33 ; <i33*> [#uses=1] +@i34_s = external global i34 ; <i34*> [#uses=1] +@i35_s = external global i35 ; <i35*> [#uses=1] +@i36_s = external global i36 ; <i36*> [#uses=1] +@i37_s = external global i37 ; <i37*> [#uses=1] +@i38_s = external global i38 ; <i38*> [#uses=1] +@i39_s = external global i39 ; <i39*> [#uses=1] +@i40_s = external global i40 ; <i40*> [#uses=1] +@i41_s = external global i41 ; <i41*> [#uses=1] +@i42_s = external global i42 ; <i42*> [#uses=1] +@i43_s = external global i43 ; <i43*> [#uses=1] +@i44_s = external global i44 ; <i44*> [#uses=1] +@i45_s = external global i45 ; <i45*> [#uses=1] +@i46_s = external global i46 ; <i46*> [#uses=1] +@i47_s = external global i47 ; <i47*> [#uses=1] +@i48_s = external global i48 ; <i48*> [#uses=1] +@i49_s = external global i49 ; <i49*> [#uses=1] +@i50_s = external global i50 ; <i50*> [#uses=1] +@i51_s = external global i51 ; <i51*> [#uses=1] +@i52_s = external global i52 ; <i52*> [#uses=1] +@i53_s = external global i53 ; <i53*> [#uses=1] +@i54_s = external global i54 ; <i54*> [#uses=1] +@i55_s = external global i55 ; <i55*> [#uses=1] +@i56_s = external global i56 ; <i56*> [#uses=1] +@i57_s = external global i57 ; <i57*> [#uses=1] +@i58_s = external global i58 ; <i58*> [#uses=1] +@i59_s = external global i59 ; <i59*> [#uses=1] +@i60_s = external global i60 ; <i60*> [#uses=1] +@i61_s = external global i61 ; <i61*> [#uses=1] +@i62_s = external global i62 ; <i62*> [#uses=1] +@i63_s = external global i63 ; <i63*> [#uses=1] +@i64_s = external global i64 ; <i64*> [#uses=1] +@i65_s = external global i65 ; <i65*> [#uses=1] +@i66_s = external global i66 ; <i66*> [#uses=1] +@i67_s = external global i67 ; <i67*> [#uses=1] +@i68_s = external global i68 ; <i68*> [#uses=1] +@i69_s = external global i69 ; <i69*> [#uses=1] +@i70_s = external global i70 ; <i70*> [#uses=1] +@i71_s = external global i71 ; <i71*> [#uses=1] +@i72_s = external global i72 ; <i72*> [#uses=1] +@i73_s = external global i73 ; <i73*> [#uses=1] +@i74_s = external global i74 ; <i74*> [#uses=1] +@i75_s = external global i75 ; <i75*> [#uses=1] +@i76_s = external global i76 ; <i76*> [#uses=1] +@i77_s = external global i77 ; <i77*> [#uses=1] +@i78_s = external global i78 ; <i78*> [#uses=1] +@i79_s = external global i79 ; <i79*> [#uses=1] +@i80_s = external global i80 ; <i80*> [#uses=1] +@i81_s = external global i81 ; <i81*> [#uses=1] +@i82_s = external global i82 ; <i82*> [#uses=1] +@i83_s = external global i83 ; <i83*> [#uses=1] +@i84_s = external global i84 ; <i84*> [#uses=1] +@i85_s = external global i85 ; <i85*> [#uses=1] +@i86_s = external global i86 ; <i86*> [#uses=1] +@i87_s = external global i87 ; <i87*> [#uses=1] +@i88_s = external global i88 ; <i88*> [#uses=1] +@i89_s = external global i89 ; <i89*> [#uses=1] +@i90_s = external global i90 ; <i90*> [#uses=1] +@i91_s = external global i91 ; <i91*> [#uses=1] +@i92_s = external global i92 ; <i92*> [#uses=1] +@i93_s = external global i93 ; <i93*> [#uses=1] +@i94_s = external global i94 ; <i94*> [#uses=1] +@i95_s = external global i95 ; <i95*> [#uses=1] +@i96_s = external global i96 ; <i96*> [#uses=1] +@i97_s = external global i97 ; <i97*> [#uses=1] +@i98_s = external global i98 ; <i98*> [#uses=1] +@i99_s = external global i99 ; <i99*> [#uses=1] +@i100_s = external global i100 ; <i100*> [#uses=1] +@i101_s = external global i101 ; <i101*> [#uses=1] +@i102_s = external global i102 ; <i102*> [#uses=1] +@i103_s = external global i103 ; <i103*> [#uses=1] +@i104_s = external global i104 ; <i104*> [#uses=1] +@i105_s = external global i105 ; <i105*> [#uses=1] +@i106_s = external global i106 ; <i106*> [#uses=1] +@i107_s = external global i107 ; <i107*> [#uses=1] +@i108_s = external global i108 ; <i108*> [#uses=1] +@i109_s = external global i109 ; <i109*> [#uses=1] +@i110_s = external global i110 ; <i110*> [#uses=1] +@i111_s = external global i111 ; <i111*> [#uses=1] +@i112_s = external global i112 ; <i112*> [#uses=1] +@i113_s = external global i113 ; <i113*> [#uses=1] +@i114_s = external global i114 ; <i114*> [#uses=1] +@i115_s = external global i115 ; <i115*> [#uses=1] +@i116_s = external global i116 ; <i116*> [#uses=1] +@i117_s = external global i117 ; <i117*> [#uses=1] +@i118_s = external global i118 ; <i118*> [#uses=1] +@i119_s = external global i119 ; <i119*> [#uses=1] +@i120_s = external global i120 ; <i120*> [#uses=1] +@i121_s = external global i121 ; <i121*> [#uses=1] +@i122_s = external global i122 ; <i122*> [#uses=1] +@i123_s = external global i123 ; <i123*> [#uses=1] +@i124_s = external global i124 ; <i124*> [#uses=1] +@i125_s = external global i125 ; <i125*> [#uses=1] +@i126_s = external global i126 ; <i126*> [#uses=1] +@i127_s = external global i127 ; <i127*> [#uses=1] +@i128_s = external global i128 ; <i128*> [#uses=1] +@i129_s = external global i129 ; <i129*> [#uses=1] +@i130_s = external global i130 ; <i130*> [#uses=1] +@i131_s = external global i131 ; <i131*> [#uses=1] +@i132_s = external global i132 ; <i132*> [#uses=1] +@i133_s = external global i133 ; <i133*> [#uses=1] +@i134_s = external global i134 ; <i134*> [#uses=1] +@i135_s = external global i135 ; <i135*> [#uses=1] +@i136_s = external global i136 ; <i136*> [#uses=1] +@i137_s = external global i137 ; <i137*> [#uses=1] +@i138_s = external global i138 ; <i138*> [#uses=1] +@i139_s = external global i139 ; <i139*> [#uses=1] +@i140_s = external global i140 ; <i140*> [#uses=1] +@i141_s = external global i141 ; <i141*> [#uses=1] +@i142_s = external global i142 ; <i142*> [#uses=1] +@i143_s = external global i143 ; <i143*> [#uses=1] +@i144_s = external global i144 ; <i144*> [#uses=1] +@i145_s = external global i145 ; <i145*> [#uses=1] +@i146_s = external global i146 ; <i146*> [#uses=1] +@i147_s = external global i147 ; <i147*> [#uses=1] +@i148_s = external global i148 ; <i148*> [#uses=1] +@i149_s = external global i149 ; <i149*> [#uses=1] +@i150_s = external global i150 ; <i150*> [#uses=1] +@i151_s = external global i151 ; <i151*> [#uses=1] +@i152_s = external global i152 ; <i152*> [#uses=1] +@i153_s = external global i153 ; <i153*> [#uses=1] +@i154_s = external global i154 ; <i154*> [#uses=1] +@i155_s = external global i155 ; <i155*> [#uses=1] +@i156_s = external global i156 ; <i156*> [#uses=1] +@i157_s = external global i157 ; <i157*> [#uses=1] +@i158_s = external global i158 ; <i158*> [#uses=1] +@i159_s = external global i159 ; <i159*> [#uses=1] +@i160_s = external global i160 ; <i160*> [#uses=1] +@i161_s = external global i161 ; <i161*> [#uses=1] +@i162_s = external global i162 ; <i162*> [#uses=1] +@i163_s = external global i163 ; <i163*> [#uses=1] +@i164_s = external global i164 ; <i164*> [#uses=1] +@i165_s = external global i165 ; <i165*> [#uses=1] +@i166_s = external global i166 ; <i166*> [#uses=1] +@i167_s = external global i167 ; <i167*> [#uses=1] +@i168_s = external global i168 ; <i168*> [#uses=1] +@i169_s = external global i169 ; <i169*> [#uses=1] +@i170_s = external global i170 ; <i170*> [#uses=1] +@i171_s = external global i171 ; <i171*> [#uses=1] +@i172_s = external global i172 ; <i172*> [#uses=1] +@i173_s = external global i173 ; <i173*> [#uses=1] +@i174_s = external global i174 ; <i174*> [#uses=1] +@i175_s = external global i175 ; <i175*> [#uses=1] +@i176_s = external global i176 ; <i176*> [#uses=1] +@i177_s = external global i177 ; <i177*> [#uses=1] +@i178_s = external global i178 ; <i178*> [#uses=1] +@i179_s = external global i179 ; <i179*> [#uses=1] +@i180_s = external global i180 ; <i180*> [#uses=1] +@i181_s = external global i181 ; <i181*> [#uses=1] +@i182_s = external global i182 ; <i182*> [#uses=1] +@i183_s = external global i183 ; <i183*> [#uses=1] +@i184_s = external global i184 ; <i184*> [#uses=1] +@i185_s = external global i185 ; <i185*> [#uses=1] +@i186_s = external global i186 ; <i186*> [#uses=1] +@i187_s = external global i187 ; <i187*> [#uses=1] +@i188_s = external global i188 ; <i188*> [#uses=1] +@i189_s = external global i189 ; <i189*> [#uses=1] +@i190_s = external global i190 ; <i190*> [#uses=1] +@i191_s = external global i191 ; <i191*> [#uses=1] +@i192_s = external global i192 ; <i192*> [#uses=1] +@i193_s = external global i193 ; <i193*> [#uses=1] +@i194_s = external global i194 ; <i194*> [#uses=1] +@i195_s = external global i195 ; <i195*> [#uses=1] +@i196_s = external global i196 ; <i196*> [#uses=1] +@i197_s = external global i197 ; <i197*> [#uses=1] +@i198_s = external global i198 ; <i198*> [#uses=1] +@i199_s = external global i199 ; <i199*> [#uses=1] +@i200_s = external global i200 ; <i200*> [#uses=1] +@i201_s = external global i201 ; <i201*> [#uses=1] +@i202_s = external global i202 ; <i202*> [#uses=1] +@i203_s = external global i203 ; <i203*> [#uses=1] +@i204_s = external global i204 ; <i204*> [#uses=1] +@i205_s = external global i205 ; <i205*> [#uses=1] +@i206_s = external global i206 ; <i206*> [#uses=1] +@i207_s = external global i207 ; <i207*> [#uses=1] +@i208_s = external global i208 ; <i208*> [#uses=1] +@i209_s = external global i209 ; <i209*> [#uses=1] +@i210_s = external global i210 ; <i210*> [#uses=1] +@i211_s = external global i211 ; <i211*> [#uses=1] +@i212_s = external global i212 ; <i212*> [#uses=1] +@i213_s = external global i213 ; <i213*> [#uses=1] +@i214_s = external global i214 ; <i214*> [#uses=1] +@i215_s = external global i215 ; <i215*> [#uses=1] +@i216_s = external global i216 ; <i216*> [#uses=1] +@i217_s = external global i217 ; <i217*> [#uses=1] +@i218_s = external global i218 ; <i218*> [#uses=1] +@i219_s = external global i219 ; <i219*> [#uses=1] +@i220_s = external global i220 ; <i220*> [#uses=1] +@i221_s = external global i221 ; <i221*> [#uses=1] +@i222_s = external global i222 ; <i222*> [#uses=1] +@i223_s = external global i223 ; <i223*> [#uses=1] +@i224_s = external global i224 ; <i224*> [#uses=1] +@i225_s = external global i225 ; <i225*> [#uses=1] +@i226_s = external global i226 ; <i226*> [#uses=1] +@i227_s = external global i227 ; <i227*> [#uses=1] +@i228_s = external global i228 ; <i228*> [#uses=1] +@i229_s = external global i229 ; <i229*> [#uses=1] +@i230_s = external global i230 ; <i230*> [#uses=1] +@i231_s = external global i231 ; <i231*> [#uses=1] +@i232_s = external global i232 ; <i232*> [#uses=1] +@i233_s = external global i233 ; <i233*> [#uses=1] +@i234_s = external global i234 ; <i234*> [#uses=1] +@i235_s = external global i235 ; <i235*> [#uses=1] +@i236_s = external global i236 ; <i236*> [#uses=1] +@i237_s = external global i237 ; <i237*> [#uses=1] +@i238_s = external global i238 ; <i238*> [#uses=1] +@i239_s = external global i239 ; <i239*> [#uses=1] +@i240_s = external global i240 ; <i240*> [#uses=1] +@i241_s = external global i241 ; <i241*> [#uses=1] +@i242_s = external global i242 ; <i242*> [#uses=1] +@i243_s = external global i243 ; <i243*> [#uses=1] +@i244_s = external global i244 ; <i244*> [#uses=1] +@i245_s = external global i245 ; <i245*> [#uses=1] +@i246_s = external global i246 ; <i246*> [#uses=1] +@i247_s = external global i247 ; <i247*> [#uses=1] +@i248_s = external global i248 ; <i248*> [#uses=1] +@i249_s = external global i249 ; <i249*> [#uses=1] +@i250_s = external global i250 ; <i250*> [#uses=1] +@i251_s = external global i251 ; <i251*> [#uses=1] +@i252_s = external global i252 ; <i252*> [#uses=1] +@i253_s = external global i253 ; <i253*> [#uses=1] +@i254_s = external global i254 ; <i254*> [#uses=1] +@i255_s = external global i255 ; <i255*> [#uses=1] +@i256_s = external global i256 ; <i256*> [#uses=1] + +define void @i1_ls(i1 zeroext %x) nounwind { + store i1 %x, i1* @i1_s + ret void +} + +define void @i2_ls(i2 zeroext %x) nounwind { + store i2 %x, i2* @i2_s + ret void +} + +define void @i3_ls(i3 zeroext %x) nounwind { + store i3 %x, i3* @i3_s + ret void +} + +define void @i4_ls(i4 zeroext %x) nounwind { + store i4 %x, i4* @i4_s + ret void +} + +define void @i5_ls(i5 zeroext %x) nounwind { + store i5 %x, i5* @i5_s + ret void +} + +define void @i6_ls(i6 zeroext %x) nounwind { + store i6 %x, i6* @i6_s + ret void +} + +define void @i7_ls(i7 zeroext %x) nounwind { + store i7 %x, i7* @i7_s + ret void +} + +define void @i8_ls(i8 zeroext %x) nounwind { + store i8 %x, i8* @i8_s + ret void +} + +define void @i9_ls(i9 zeroext %x) nounwind { + store i9 %x, i9* @i9_s + ret void +} + +define void @i10_ls(i10 zeroext %x) nounwind { + store i10 %x, i10* @i10_s + ret void +} + +define void @i11_ls(i11 zeroext %x) nounwind { + store i11 %x, i11* @i11_s + ret void +} + +define void @i12_ls(i12 zeroext %x) nounwind { + store i12 %x, i12* @i12_s + ret void +} + +define void @i13_ls(i13 zeroext %x) nounwind { + store i13 %x, i13* @i13_s + ret void +} + +define void @i14_ls(i14 zeroext %x) nounwind { + store i14 %x, i14* @i14_s + ret void +} + +define void @i15_ls(i15 zeroext %x) nounwind { + store i15 %x, i15* @i15_s + ret void +} + +define void @i16_ls(i16 zeroext %x) nounwind { + store i16 %x, i16* @i16_s + ret void +} + +define void @i17_ls(i17 zeroext %x) nounwind { + store i17 %x, i17* @i17_s + ret void +} + +define void @i18_ls(i18 zeroext %x) nounwind { + store i18 %x, i18* @i18_s + ret void +} + +define void @i19_ls(i19 zeroext %x) nounwind { + store i19 %x, i19* @i19_s + ret void +} + +define void @i20_ls(i20 zeroext %x) nounwind { + store i20 %x, i20* @i20_s + ret void +} + +define void @i21_ls(i21 zeroext %x) nounwind { + store i21 %x, i21* @i21_s + ret void +} + +define void @i22_ls(i22 zeroext %x) nounwind { + store i22 %x, i22* @i22_s + ret void +} + +define void @i23_ls(i23 zeroext %x) nounwind { + store i23 %x, i23* @i23_s + ret void +} + +define void @i24_ls(i24 zeroext %x) nounwind { + store i24 %x, i24* @i24_s + ret void +} + +define void @i25_ls(i25 zeroext %x) nounwind { + store i25 %x, i25* @i25_s + ret void +} + +define void @i26_ls(i26 zeroext %x) nounwind { + store i26 %x, i26* @i26_s + ret void +} + +define void @i27_ls(i27 zeroext %x) nounwind { + store i27 %x, i27* @i27_s + ret void +} + +define void @i28_ls(i28 zeroext %x) nounwind { + store i28 %x, i28* @i28_s + ret void +} + +define void @i29_ls(i29 zeroext %x) nounwind { + store i29 %x, i29* @i29_s + ret void +} + +define void @i30_ls(i30 zeroext %x) nounwind { + store i30 %x, i30* @i30_s + ret void +} + +define void @i31_ls(i31 zeroext %x) nounwind { + store i31 %x, i31* @i31_s + ret void +} + +define void @i32_ls(i32 zeroext %x) nounwind { + store i32 %x, i32* @i32_s + ret void +} + +define void @i33_ls(i33 zeroext %x) nounwind { + store i33 %x, i33* @i33_s + ret void +} + +define void @i34_ls(i34 zeroext %x) nounwind { + store i34 %x, i34* @i34_s + ret void +} + +define void @i35_ls(i35 zeroext %x) nounwind { + store i35 %x, i35* @i35_s + ret void +} + +define void @i36_ls(i36 zeroext %x) nounwind { + store i36 %x, i36* @i36_s + ret void +} + +define void @i37_ls(i37 zeroext %x) nounwind { + store i37 %x, i37* @i37_s + ret void +} + +define void @i38_ls(i38 zeroext %x) nounwind { + store i38 %x, i38* @i38_s + ret void +} + +define void @i39_ls(i39 zeroext %x) nounwind { + store i39 %x, i39* @i39_s + ret void +} + +define void @i40_ls(i40 zeroext %x) nounwind { + store i40 %x, i40* @i40_s + ret void +} + +define void @i41_ls(i41 zeroext %x) nounwind { + store i41 %x, i41* @i41_s + ret void +} + +define void @i42_ls(i42 zeroext %x) nounwind { + store i42 %x, i42* @i42_s + ret void +} + +define void @i43_ls(i43 zeroext %x) nounwind { + store i43 %x, i43* @i43_s + ret void +} + +define void @i44_ls(i44 zeroext %x) nounwind { + store i44 %x, i44* @i44_s + ret void +} + +define void @i45_ls(i45 zeroext %x) nounwind { + store i45 %x, i45* @i45_s + ret void +} + +define void @i46_ls(i46 zeroext %x) nounwind { + store i46 %x, i46* @i46_s + ret void +} + +define void @i47_ls(i47 zeroext %x) nounwind { + store i47 %x, i47* @i47_s + ret void +} + +define void @i48_ls(i48 zeroext %x) nounwind { + store i48 %x, i48* @i48_s + ret void +} + +define void @i49_ls(i49 zeroext %x) nounwind { + store i49 %x, i49* @i49_s + ret void +} + +define void @i50_ls(i50 zeroext %x) nounwind { + store i50 %x, i50* @i50_s + ret void +} + +define void @i51_ls(i51 zeroext %x) nounwind { + store i51 %x, i51* @i51_s + ret void +} + +define void @i52_ls(i52 zeroext %x) nounwind { + store i52 %x, i52* @i52_s + ret void +} + +define void @i53_ls(i53 zeroext %x) nounwind { + store i53 %x, i53* @i53_s + ret void +} + +define void @i54_ls(i54 zeroext %x) nounwind { + store i54 %x, i54* @i54_s + ret void +} + +define void @i55_ls(i55 zeroext %x) nounwind { + store i55 %x, i55* @i55_s + ret void +} + +define void @i56_ls(i56 zeroext %x) nounwind { + store i56 %x, i56* @i56_s + ret void +} + +define void @i57_ls(i57 zeroext %x) nounwind { + store i57 %x, i57* @i57_s + ret void +} + +define void @i58_ls(i58 zeroext %x) nounwind { + store i58 %x, i58* @i58_s + ret void +} + +define void @i59_ls(i59 zeroext %x) nounwind { + store i59 %x, i59* @i59_s + ret void +} + +define void @i60_ls(i60 zeroext %x) nounwind { + store i60 %x, i60* @i60_s + ret void +} + +define void @i61_ls(i61 zeroext %x) nounwind { + store i61 %x, i61* @i61_s + ret void +} + +define void @i62_ls(i62 zeroext %x) nounwind { + store i62 %x, i62* @i62_s + ret void +} + +define void @i63_ls(i63 zeroext %x) nounwind { + store i63 %x, i63* @i63_s + ret void +} + +define void @i64_ls(i64 zeroext %x) nounwind { + store i64 %x, i64* @i64_s + ret void +} + +define void @i65_ls(i65 zeroext %x) nounwind { + store i65 %x, i65* @i65_s + ret void +} + +define void @i66_ls(i66 zeroext %x) nounwind { + store i66 %x, i66* @i66_s + ret void +} + +define void @i67_ls(i67 zeroext %x) nounwind { + store i67 %x, i67* @i67_s + ret void +} + +define void @i68_ls(i68 zeroext %x) nounwind { + store i68 %x, i68* @i68_s + ret void +} + +define void @i69_ls(i69 zeroext %x) nounwind { + store i69 %x, i69* @i69_s + ret void +} + +define void @i70_ls(i70 zeroext %x) nounwind { + store i70 %x, i70* @i70_s + ret void +} + +define void @i71_ls(i71 zeroext %x) nounwind { + store i71 %x, i71* @i71_s + ret void +} + +define void @i72_ls(i72 zeroext %x) nounwind { + store i72 %x, i72* @i72_s + ret void +} + +define void @i73_ls(i73 zeroext %x) nounwind { + store i73 %x, i73* @i73_s + ret void +} + +define void @i74_ls(i74 zeroext %x) nounwind { + store i74 %x, i74* @i74_s + ret void +} + +define void @i75_ls(i75 zeroext %x) nounwind { + store i75 %x, i75* @i75_s + ret void +} + +define void @i76_ls(i76 zeroext %x) nounwind { + store i76 %x, i76* @i76_s + ret void +} + +define void @i77_ls(i77 zeroext %x) nounwind { + store i77 %x, i77* @i77_s + ret void +} + +define void @i78_ls(i78 zeroext %x) nounwind { + store i78 %x, i78* @i78_s + ret void +} + +define void @i79_ls(i79 zeroext %x) nounwind { + store i79 %x, i79* @i79_s + ret void +} + +define void @i80_ls(i80 zeroext %x) nounwind { + store i80 %x, i80* @i80_s + ret void +} + +define void @i81_ls(i81 zeroext %x) nounwind { + store i81 %x, i81* @i81_s + ret void +} + +define void @i82_ls(i82 zeroext %x) nounwind { + store i82 %x, i82* @i82_s + ret void +} + +define void @i83_ls(i83 zeroext %x) nounwind { + store i83 %x, i83* @i83_s + ret void +} + +define void @i84_ls(i84 zeroext %x) nounwind { + store i84 %x, i84* @i84_s + ret void +} + +define void @i85_ls(i85 zeroext %x) nounwind { + store i85 %x, i85* @i85_s + ret void +} + +define void @i86_ls(i86 zeroext %x) nounwind { + store i86 %x, i86* @i86_s + ret void +} + +define void @i87_ls(i87 zeroext %x) nounwind { + store i87 %x, i87* @i87_s + ret void +} + +define void @i88_ls(i88 zeroext %x) nounwind { + store i88 %x, i88* @i88_s + ret void +} + +define void @i89_ls(i89 zeroext %x) nounwind { + store i89 %x, i89* @i89_s + ret void +} + +define void @i90_ls(i90 zeroext %x) nounwind { + store i90 %x, i90* @i90_s + ret void +} + +define void @i91_ls(i91 zeroext %x) nounwind { + store i91 %x, i91* @i91_s + ret void +} + +define void @i92_ls(i92 zeroext %x) nounwind { + store i92 %x, i92* @i92_s + ret void +} + +define void @i93_ls(i93 zeroext %x) nounwind { + store i93 %x, i93* @i93_s + ret void +} + +define void @i94_ls(i94 zeroext %x) nounwind { + store i94 %x, i94* @i94_s + ret void +} + +define void @i95_ls(i95 zeroext %x) nounwind { + store i95 %x, i95* @i95_s + ret void +} + +define void @i96_ls(i96 zeroext %x) nounwind { + store i96 %x, i96* @i96_s + ret void +} + +define void @i97_ls(i97 zeroext %x) nounwind { + store i97 %x, i97* @i97_s + ret void +} + +define void @i98_ls(i98 zeroext %x) nounwind { + store i98 %x, i98* @i98_s + ret void +} + +define void @i99_ls(i99 zeroext %x) nounwind { + store i99 %x, i99* @i99_s + ret void +} + +define void @i100_ls(i100 zeroext %x) nounwind { + store i100 %x, i100* @i100_s + ret void +} + +define void @i101_ls(i101 zeroext %x) nounwind { + store i101 %x, i101* @i101_s + ret void +} + +define void @i102_ls(i102 zeroext %x) nounwind { + store i102 %x, i102* @i102_s + ret void +} + +define void @i103_ls(i103 zeroext %x) nounwind { + store i103 %x, i103* @i103_s + ret void +} + +define void @i104_ls(i104 zeroext %x) nounwind { + store i104 %x, i104* @i104_s + ret void +} + +define void @i105_ls(i105 zeroext %x) nounwind { + store i105 %x, i105* @i105_s + ret void +} + +define void @i106_ls(i106 zeroext %x) nounwind { + store i106 %x, i106* @i106_s + ret void +} + +define void @i107_ls(i107 zeroext %x) nounwind { + store i107 %x, i107* @i107_s + ret void +} + +define void @i108_ls(i108 zeroext %x) nounwind { + store i108 %x, i108* @i108_s + ret void +} + +define void @i109_ls(i109 zeroext %x) nounwind { + store i109 %x, i109* @i109_s + ret void +} + +define void @i110_ls(i110 zeroext %x) nounwind { + store i110 %x, i110* @i110_s + ret void +} + +define void @i111_ls(i111 zeroext %x) nounwind { + store i111 %x, i111* @i111_s + ret void +} + +define void @i112_ls(i112 zeroext %x) nounwind { + store i112 %x, i112* @i112_s + ret void +} + +define void @i113_ls(i113 zeroext %x) nounwind { + store i113 %x, i113* @i113_s + ret void +} + +define void @i114_ls(i114 zeroext %x) nounwind { + store i114 %x, i114* @i114_s + ret void +} + +define void @i115_ls(i115 zeroext %x) nounwind { + store i115 %x, i115* @i115_s + ret void +} + +define void @i116_ls(i116 zeroext %x) nounwind { + store i116 %x, i116* @i116_s + ret void +} + +define void @i117_ls(i117 zeroext %x) nounwind { + store i117 %x, i117* @i117_s + ret void +} + +define void @i118_ls(i118 zeroext %x) nounwind { + store i118 %x, i118* @i118_s + ret void +} + +define void @i119_ls(i119 zeroext %x) nounwind { + store i119 %x, i119* @i119_s + ret void +} + +define void @i120_ls(i120 zeroext %x) nounwind { + store i120 %x, i120* @i120_s + ret void +} + +define void @i121_ls(i121 zeroext %x) nounwind { + store i121 %x, i121* @i121_s + ret void +} + +define void @i122_ls(i122 zeroext %x) nounwind { + store i122 %x, i122* @i122_s + ret void +} + +define void @i123_ls(i123 zeroext %x) nounwind { + store i123 %x, i123* @i123_s + ret void +} + +define void @i124_ls(i124 zeroext %x) nounwind { + store i124 %x, i124* @i124_s + ret void +} + +define void @i125_ls(i125 zeroext %x) nounwind { + store i125 %x, i125* @i125_s + ret void +} + +define void @i126_ls(i126 zeroext %x) nounwind { + store i126 %x, i126* @i126_s + ret void +} + +define void @i127_ls(i127 zeroext %x) nounwind { + store i127 %x, i127* @i127_s + ret void +} + +define void @i128_ls(i128 zeroext %x) nounwind { + store i128 %x, i128* @i128_s + ret void +} + +define void @i129_ls(i129 zeroext %x) nounwind { + store i129 %x, i129* @i129_s + ret void +} + +define void @i130_ls(i130 zeroext %x) nounwind { + store i130 %x, i130* @i130_s + ret void +} + +define void @i131_ls(i131 zeroext %x) nounwind { + store i131 %x, i131* @i131_s + ret void +} + +define void @i132_ls(i132 zeroext %x) nounwind { + store i132 %x, i132* @i132_s + ret void +} + +define void @i133_ls(i133 zeroext %x) nounwind { + store i133 %x, i133* @i133_s + ret void +} + +define void @i134_ls(i134 zeroext %x) nounwind { + store i134 %x, i134* @i134_s + ret void +} + +define void @i135_ls(i135 zeroext %x) nounwind { + store i135 %x, i135* @i135_s + ret void +} + +define void @i136_ls(i136 zeroext %x) nounwind { + store i136 %x, i136* @i136_s + ret void +} + +define void @i137_ls(i137 zeroext %x) nounwind { + store i137 %x, i137* @i137_s + ret void +} + +define void @i138_ls(i138 zeroext %x) nounwind { + store i138 %x, i138* @i138_s + ret void +} + +define void @i139_ls(i139 zeroext %x) nounwind { + store i139 %x, i139* @i139_s + ret void +} + +define void @i140_ls(i140 zeroext %x) nounwind { + store i140 %x, i140* @i140_s + ret void +} + +define void @i141_ls(i141 zeroext %x) nounwind { + store i141 %x, i141* @i141_s + ret void +} + +define void @i142_ls(i142 zeroext %x) nounwind { + store i142 %x, i142* @i142_s + ret void +} + +define void @i143_ls(i143 zeroext %x) nounwind { + store i143 %x, i143* @i143_s + ret void +} + +define void @i144_ls(i144 zeroext %x) nounwind { + store i144 %x, i144* @i144_s + ret void +} + +define void @i145_ls(i145 zeroext %x) nounwind { + store i145 %x, i145* @i145_s + ret void +} + +define void @i146_ls(i146 zeroext %x) nounwind { + store i146 %x, i146* @i146_s + ret void +} + +define void @i147_ls(i147 zeroext %x) nounwind { + store i147 %x, i147* @i147_s + ret void +} + +define void @i148_ls(i148 zeroext %x) nounwind { + store i148 %x, i148* @i148_s + ret void +} + +define void @i149_ls(i149 zeroext %x) nounwind { + store i149 %x, i149* @i149_s + ret void +} + +define void @i150_ls(i150 zeroext %x) nounwind { + store i150 %x, i150* @i150_s + ret void +} + +define void @i151_ls(i151 zeroext %x) nounwind { + store i151 %x, i151* @i151_s + ret void +} + +define void @i152_ls(i152 zeroext %x) nounwind { + store i152 %x, i152* @i152_s + ret void +} + +define void @i153_ls(i153 zeroext %x) nounwind { + store i153 %x, i153* @i153_s + ret void +} + +define void @i154_ls(i154 zeroext %x) nounwind { + store i154 %x, i154* @i154_s + ret void +} + +define void @i155_ls(i155 zeroext %x) nounwind { + store i155 %x, i155* @i155_s + ret void +} + +define void @i156_ls(i156 zeroext %x) nounwind { + store i156 %x, i156* @i156_s + ret void +} + +define void @i157_ls(i157 zeroext %x) nounwind { + store i157 %x, i157* @i157_s + ret void +} + +define void @i158_ls(i158 zeroext %x) nounwind { + store i158 %x, i158* @i158_s + ret void +} + +define void @i159_ls(i159 zeroext %x) nounwind { + store i159 %x, i159* @i159_s + ret void +} + +define void @i160_ls(i160 zeroext %x) nounwind { + store i160 %x, i160* @i160_s + ret void +} + +define void @i161_ls(i161 zeroext %x) nounwind { + store i161 %x, i161* @i161_s + ret void +} + +define void @i162_ls(i162 zeroext %x) nounwind { + store i162 %x, i162* @i162_s + ret void +} + +define void @i163_ls(i163 zeroext %x) nounwind { + store i163 %x, i163* @i163_s + ret void +} + +define void @i164_ls(i164 zeroext %x) nounwind { + store i164 %x, i164* @i164_s + ret void +} + +define void @i165_ls(i165 zeroext %x) nounwind { + store i165 %x, i165* @i165_s + ret void +} + +define void @i166_ls(i166 zeroext %x) nounwind { + store i166 %x, i166* @i166_s + ret void +} + +define void @i167_ls(i167 zeroext %x) nounwind { + store i167 %x, i167* @i167_s + ret void +} + +define void @i168_ls(i168 zeroext %x) nounwind { + store i168 %x, i168* @i168_s + ret void +} + +define void @i169_ls(i169 zeroext %x) nounwind { + store i169 %x, i169* @i169_s + ret void +} + +define void @i170_ls(i170 zeroext %x) nounwind { + store i170 %x, i170* @i170_s + ret void +} + +define void @i171_ls(i171 zeroext %x) nounwind { + store i171 %x, i171* @i171_s + ret void +} + +define void @i172_ls(i172 zeroext %x) nounwind { + store i172 %x, i172* @i172_s + ret void +} + +define void @i173_ls(i173 zeroext %x) nounwind { + store i173 %x, i173* @i173_s + ret void +} + +define void @i174_ls(i174 zeroext %x) nounwind { + store i174 %x, i174* @i174_s + ret void +} + +define void @i175_ls(i175 zeroext %x) nounwind { + store i175 %x, i175* @i175_s + ret void +} + +define void @i176_ls(i176 zeroext %x) nounwind { + store i176 %x, i176* @i176_s + ret void +} + +define void @i177_ls(i177 zeroext %x) nounwind { + store i177 %x, i177* @i177_s + ret void +} + +define void @i178_ls(i178 zeroext %x) nounwind { + store i178 %x, i178* @i178_s + ret void +} + +define void @i179_ls(i179 zeroext %x) nounwind { + store i179 %x, i179* @i179_s + ret void +} + +define void @i180_ls(i180 zeroext %x) nounwind { + store i180 %x, i180* @i180_s + ret void +} + +define void @i181_ls(i181 zeroext %x) nounwind { + store i181 %x, i181* @i181_s + ret void +} + +define void @i182_ls(i182 zeroext %x) nounwind { + store i182 %x, i182* @i182_s + ret void +} + +define void @i183_ls(i183 zeroext %x) nounwind { + store i183 %x, i183* @i183_s + ret void +} + +define void @i184_ls(i184 zeroext %x) nounwind { + store i184 %x, i184* @i184_s + ret void +} + +define void @i185_ls(i185 zeroext %x) nounwind { + store i185 %x, i185* @i185_s + ret void +} + +define void @i186_ls(i186 zeroext %x) nounwind { + store i186 %x, i186* @i186_s + ret void +} + +define void @i187_ls(i187 zeroext %x) nounwind { + store i187 %x, i187* @i187_s + ret void +} + +define void @i188_ls(i188 zeroext %x) nounwind { + store i188 %x, i188* @i188_s + ret void +} + +define void @i189_ls(i189 zeroext %x) nounwind { + store i189 %x, i189* @i189_s + ret void +} + +define void @i190_ls(i190 zeroext %x) nounwind { + store i190 %x, i190* @i190_s + ret void +} + +define void @i191_ls(i191 zeroext %x) nounwind { + store i191 %x, i191* @i191_s + ret void +} + +define void @i192_ls(i192 zeroext %x) nounwind { + store i192 %x, i192* @i192_s + ret void +} + +define void @i193_ls(i193 zeroext %x) nounwind { + store i193 %x, i193* @i193_s + ret void +} + +define void @i194_ls(i194 zeroext %x) nounwind { + store i194 %x, i194* @i194_s + ret void +} + +define void @i195_ls(i195 zeroext %x) nounwind { + store i195 %x, i195* @i195_s + ret void +} + +define void @i196_ls(i196 zeroext %x) nounwind { + store i196 %x, i196* @i196_s + ret void +} + +define void @i197_ls(i197 zeroext %x) nounwind { + store i197 %x, i197* @i197_s + ret void +} + +define void @i198_ls(i198 zeroext %x) nounwind { + store i198 %x, i198* @i198_s + ret void +} + +define void @i199_ls(i199 zeroext %x) nounwind { + store i199 %x, i199* @i199_s + ret void +} + +define void @i200_ls(i200 zeroext %x) nounwind { + store i200 %x, i200* @i200_s + ret void +} + +define void @i201_ls(i201 zeroext %x) nounwind { + store i201 %x, i201* @i201_s + ret void +} + +define void @i202_ls(i202 zeroext %x) nounwind { + store i202 %x, i202* @i202_s + ret void +} + +define void @i203_ls(i203 zeroext %x) nounwind { + store i203 %x, i203* @i203_s + ret void +} + +define void @i204_ls(i204 zeroext %x) nounwind { + store i204 %x, i204* @i204_s + ret void +} + +define void @i205_ls(i205 zeroext %x) nounwind { + store i205 %x, i205* @i205_s + ret void +} + +define void @i206_ls(i206 zeroext %x) nounwind { + store i206 %x, i206* @i206_s + ret void +} + +define void @i207_ls(i207 zeroext %x) nounwind { + store i207 %x, i207* @i207_s + ret void +} + +define void @i208_ls(i208 zeroext %x) nounwind { + store i208 %x, i208* @i208_s + ret void +} + +define void @i209_ls(i209 zeroext %x) nounwind { + store i209 %x, i209* @i209_s + ret void +} + +define void @i210_ls(i210 zeroext %x) nounwind { + store i210 %x, i210* @i210_s + ret void +} + +define void @i211_ls(i211 zeroext %x) nounwind { + store i211 %x, i211* @i211_s + ret void +} + +define void @i212_ls(i212 zeroext %x) nounwind { + store i212 %x, i212* @i212_s + ret void +} + +define void @i213_ls(i213 zeroext %x) nounwind { + store i213 %x, i213* @i213_s + ret void +} + +define void @i214_ls(i214 zeroext %x) nounwind { + store i214 %x, i214* @i214_s + ret void +} + +define void @i215_ls(i215 zeroext %x) nounwind { + store i215 %x, i215* @i215_s + ret void +} + +define void @i216_ls(i216 zeroext %x) nounwind { + store i216 %x, i216* @i216_s + ret void +} + +define void @i217_ls(i217 zeroext %x) nounwind { + store i217 %x, i217* @i217_s + ret void +} + +define void @i218_ls(i218 zeroext %x) nounwind { + store i218 %x, i218* @i218_s + ret void +} + +define void @i219_ls(i219 zeroext %x) nounwind { + store i219 %x, i219* @i219_s + ret void +} + +define void @i220_ls(i220 zeroext %x) nounwind { + store i220 %x, i220* @i220_s + ret void +} + +define void @i221_ls(i221 zeroext %x) nounwind { + store i221 %x, i221* @i221_s + ret void +} + +define void @i222_ls(i222 zeroext %x) nounwind { + store i222 %x, i222* @i222_s + ret void +} + +define void @i223_ls(i223 zeroext %x) nounwind { + store i223 %x, i223* @i223_s + ret void +} + +define void @i224_ls(i224 zeroext %x) nounwind { + store i224 %x, i224* @i224_s + ret void +} + +define void @i225_ls(i225 zeroext %x) nounwind { + store i225 %x, i225* @i225_s + ret void +} + +define void @i226_ls(i226 zeroext %x) nounwind { + store i226 %x, i226* @i226_s + ret void +} + +define void @i227_ls(i227 zeroext %x) nounwind { + store i227 %x, i227* @i227_s + ret void +} + +define void @i228_ls(i228 zeroext %x) nounwind { + store i228 %x, i228* @i228_s + ret void +} + +define void @i229_ls(i229 zeroext %x) nounwind { + store i229 %x, i229* @i229_s + ret void +} + +define void @i230_ls(i230 zeroext %x) nounwind { + store i230 %x, i230* @i230_s + ret void +} + +define void @i231_ls(i231 zeroext %x) nounwind { + store i231 %x, i231* @i231_s + ret void +} + +define void @i232_ls(i232 zeroext %x) nounwind { + store i232 %x, i232* @i232_s + ret void +} + +define void @i233_ls(i233 zeroext %x) nounwind { + store i233 %x, i233* @i233_s + ret void +} + +define void @i234_ls(i234 zeroext %x) nounwind { + store i234 %x, i234* @i234_s + ret void +} + +define void @i235_ls(i235 zeroext %x) nounwind { + store i235 %x, i235* @i235_s + ret void +} + +define void @i236_ls(i236 zeroext %x) nounwind { + store i236 %x, i236* @i236_s + ret void +} + +define void @i237_ls(i237 zeroext %x) nounwind { + store i237 %x, i237* @i237_s + ret void +} + +define void @i238_ls(i238 zeroext %x) nounwind { + store i238 %x, i238* @i238_s + ret void +} + +define void @i239_ls(i239 zeroext %x) nounwind { + store i239 %x, i239* @i239_s + ret void +} + +define void @i240_ls(i240 zeroext %x) nounwind { + store i240 %x, i240* @i240_s + ret void +} + +define void @i241_ls(i241 zeroext %x) nounwind { + store i241 %x, i241* @i241_s + ret void +} + +define void @i242_ls(i242 zeroext %x) nounwind { + store i242 %x, i242* @i242_s + ret void +} + +define void @i243_ls(i243 zeroext %x) nounwind { + store i243 %x, i243* @i243_s + ret void +} + +define void @i244_ls(i244 zeroext %x) nounwind { + store i244 %x, i244* @i244_s + ret void +} + +define void @i245_ls(i245 zeroext %x) nounwind { + store i245 %x, i245* @i245_s + ret void +} + +define void @i246_ls(i246 zeroext %x) nounwind { + store i246 %x, i246* @i246_s + ret void +} + +define void @i247_ls(i247 zeroext %x) nounwind { + store i247 %x, i247* @i247_s + ret void +} + +define void @i248_ls(i248 zeroext %x) nounwind { + store i248 %x, i248* @i248_s + ret void +} + +define void @i249_ls(i249 zeroext %x) nounwind { + store i249 %x, i249* @i249_s + ret void +} + +define void @i250_ls(i250 zeroext %x) nounwind { + store i250 %x, i250* @i250_s + ret void +} + +define void @i251_ls(i251 zeroext %x) nounwind { + store i251 %x, i251* @i251_s + ret void +} + +define void @i252_ls(i252 zeroext %x) nounwind { + store i252 %x, i252* @i252_s + ret void +} + +define void @i253_ls(i253 zeroext %x) nounwind { + store i253 %x, i253* @i253_s + ret void +} + +define void @i254_ls(i254 zeroext %x) nounwind { + store i254 %x, i254* @i254_s + ret void +} + +define void @i255_ls(i255 zeroext %x) nounwind { + store i255 %x, i255* @i255_s + ret void +} + +define void @i256_ls(i256 zeroext %x) nounwind { + store i256 %x, i256* @i256_s + ret void +}
diff --git a/src/LLVM/test/CodeGen/Generic/BasicInstrs.ll b/src/LLVM/test/CodeGen/Generic/BasicInstrs.ll new file mode 100644 index 0000000..f9cd662 --- /dev/null +++ b/src/LLVM/test/CodeGen/Generic/BasicInstrs.ll
@@ -0,0 +1,54 @@ +; New testcase, this contains a bunch of simple instructions that should be +; handled by a code generator. + +; RUN: llc < %s + +define i32 @add(i32 %A, i32 %B) { + %R = add i32 %A, %B ; <i32> [#uses=1] + ret i32 %R +} + +define i32 @sub(i32 %A, i32 %B) { + %R = sub i32 %A, %B ; <i32> [#uses=1] + ret i32 %R +} + +define i32 @mul(i32 %A, i32 %B) { + %R = mul i32 %A, %B ; <i32> [#uses=1] + ret i32 %R +} + +define i32 @sdiv(i32 %A, i32 %B) { + %R = sdiv i32 %A, %B ; <i32> [#uses=1] + ret i32 %R +} + +define i32 @udiv(i32 %A, i32 %B) { + %R = udiv i32 %A, %B ; <i32> [#uses=1] + ret i32 %R +} + +define i32 @srem(i32 %A, i32 %B) { + %R = srem i32 %A, %B ; <i32> [#uses=1] + ret i32 %R +} + +define i32 @urem(i32 %A, i32 %B) { + %R = urem i32 %A, %B ; <i32> [#uses=1] + ret i32 %R +} + +define i32 @and(i32 %A, i32 %B) { + %R = and i32 %A, %B ; <i32> [#uses=1] + ret i32 %R +} + +define i32 @or(i32 %A, i32 %B) { + %R = or i32 %A, %B ; <i32> [#uses=1] + ret i32 %R +} + +define i32 @xor(i32 %A, i32 %B) { + %R = xor i32 %A, %B ; <i32> [#uses=1] + ret i32 %R +}
diff --git a/src/LLVM/test/CodeGen/Generic/ConstantExprLowering.ll b/src/LLVM/test/CodeGen/Generic/ConstantExprLowering.ll new file mode 100644 index 0000000..fcbe9ca --- /dev/null +++ b/src/LLVM/test/CodeGen/Generic/ConstantExprLowering.ll
@@ -0,0 +1,22 @@ +; RUN: llc < %s + +@.str_1 = internal constant [16 x i8] c"%d %d %d %d %d\0A\00" ; <[16 x i8]*> [#uses=1] +@XA = external global i32 ; <i32*> [#uses=1] +@XB = external global i32 ; <i32*> [#uses=1] + +declare i32 @printf(i8*, ...) + +define void @test(i32 %A, i32 %B, i32 %C, i32 %D) { +entry: + %t1 = icmp slt i32 %A, 0 ; <i1> [#uses=1] + br i1 %t1, label %less, label %not_less + +less: ; preds = %entry + br label %not_less + +not_less: ; preds = %less, %entry + %t2 = phi i32 [ sub (i32 ptrtoint (i32* @XA to i32), i32 ptrtoint (i32* @XB to i32)), %less ], [ sub (i32 ptrtoint (i32* @XA to i32), i32 ptrtoint (i32* @XB to i32)), %entry ] ; <i32> [#uses=1] + %tmp.39 = call i32 (i8*, ...)* @printf( i8* getelementptr ([16 x i8]* @.str_1, i64 0, i64 0), i32 %t2 ) ; <i32> [#uses=0] + ret void +} +
diff --git a/src/LLVM/test/CodeGen/Generic/Makefile b/src/LLVM/test/CodeGen/Generic/Makefile new file mode 100644 index 0000000..6f60af5 --- /dev/null +++ b/src/LLVM/test/CodeGen/Generic/Makefile
@@ -0,0 +1,23 @@ +# Makefile for running ad-hoc custom LLVM tests +# +%.bc: %.ll + llvm-as $< + +%.llc.s: %.bc + llc $< -o $@ + +%.gcc.s: %.c + gcc -O0 -S $< -o $@ + +%.nat: %.s + gcc -O0 -lm $< -o $@ + +%.cbe.out: %.cbe.nat + ./$< > $@ + +%.out: %.nat + ./$< > $@ + +%.clean: + rm -f $(patsubst %.clean,%.bc,$@) $(patsubst %.clean,%.*.s,$@) \ + $(patsubst %.clean,%.*.nat,$@) $(patsubst %.clean,%.*.out,$@)
diff --git a/src/LLVM/test/CodeGen/Generic/add-with-overflow-128.ll b/src/LLVM/test/CodeGen/Generic/add-with-overflow-128.ll new file mode 100644 index 0000000..33f44d6 --- /dev/null +++ b/src/LLVM/test/CodeGen/Generic/add-with-overflow-128.ll
@@ -0,0 +1,34 @@ +; RUN: llc < %s + +@ok = internal constant [4 x i8] c"%d\0A\00" +@no = internal constant [4 x i8] c"no\0A\00" + + + +define i1 @func2(i128 zeroext %v1, i128 zeroext %v2) nounwind { +entry: + %t = call {i128, i1} @llvm.uadd.with.overflow.i128(i128 %v1, i128 %v2) + %sum = extractvalue {i128, i1} %t, 0 + %sum32 = trunc i128 %sum to i32 + %obit = extractvalue {i128, i1} %t, 1 + br i1 %obit, label %carry, label %normal + +normal: + %t1 = tail call i32 (i8*, ...)* @printf( i8* getelementptr ([4 x i8]* @ok, i32 0, i32 0), i32 %sum32 ) nounwind + ret i1 true + +carry: + %t2 = tail call i32 (i8*, ...)* @printf( i8* getelementptr ([4 x i8]* @no, i32 0, i32 0) ) nounwind + ret i1 false +} + +declare i32 @printf(i8*, ...) nounwind +declare {i96, i1} @llvm.sadd.with.overflow.i96(i96, i96) +declare {i128, i1} @llvm.uadd.with.overflow.i128(i128, i128) + +define i1 @func1(i96 signext %v1, i96 signext %v2) nounwind { +entry: + %t = call {i96, i1} @llvm.sadd.with.overflow.i96(i96 %v1, i96 %v2) + %obit = extractvalue {i96, i1} %t, 1 + ret i1 %obit +}
diff --git a/src/LLVM/test/CodeGen/Generic/add-with-overflow-24.ll b/src/LLVM/test/CodeGen/Generic/add-with-overflow-24.ll new file mode 100644 index 0000000..63f5a22 --- /dev/null +++ b/src/LLVM/test/CodeGen/Generic/add-with-overflow-24.ll
@@ -0,0 +1,42 @@ +; RUN: llc < %s + +@ok = internal constant [4 x i8] c"%d\0A\00" +@no = internal constant [4 x i8] c"no\0A\00" + +define i1 @func1(i24 signext %v1, i24 signext %v2) nounwind { +entry: + %t = call {i24, i1} @llvm.sadd.with.overflow.i24(i24 %v1, i24 %v2) + %sum = extractvalue {i24, i1} %t, 0 + %sum32 = sext i24 %sum to i32 + %obit = extractvalue {i24, i1} %t, 1 + br i1 %obit, label %overflow, label %normal + +normal: + %t1 = tail call i32 (i8*, ...)* @printf( i8* getelementptr ([4 x i8]* @ok, i32 0, i32 0), i32 %sum32 ) nounwind + ret i1 true + +overflow: + %t2 = tail call i32 (i8*, ...)* @printf( i8* getelementptr ([4 x i8]* @no, i32 0, i32 0) ) nounwind + ret i1 false +} + +define i1 @func2(i24 zeroext %v1, i24 zeroext %v2) nounwind { +entry: + %t = call {i24, i1} @llvm.uadd.with.overflow.i24(i24 %v1, i24 %v2) + %sum = extractvalue {i24, i1} %t, 0 + %sum32 = zext i24 %sum to i32 + %obit = extractvalue {i24, i1} %t, 1 + br i1 %obit, label %carry, label %normal + +normal: + %t1 = tail call i32 (i8*, ...)* @printf( i8* getelementptr ([4 x i8]* @ok, i32 0, i32 0), i32 %sum32 ) nounwind + ret i1 true + +carry: + %t2 = tail call i32 (i8*, ...)* @printf( i8* getelementptr ([4 x i8]* @no, i32 0, i32 0) ) nounwind + ret i1 false +} + +declare i32 @printf(i8*, ...) nounwind +declare {i24, i1} @llvm.sadd.with.overflow.i24(i24, i24) +declare {i24, i1} @llvm.uadd.with.overflow.i24(i24, i24)
diff --git a/src/LLVM/test/CodeGen/Generic/add-with-overflow.ll b/src/LLVM/test/CodeGen/Generic/add-with-overflow.ll new file mode 100644 index 0000000..0c2c960 --- /dev/null +++ b/src/LLVM/test/CodeGen/Generic/add-with-overflow.ll
@@ -0,0 +1,41 @@ +; RUN: llc < %s +; RUN: llc < %s -fast-isel + +@ok = internal constant [4 x i8] c"%d\0A\00" +@no = internal constant [4 x i8] c"no\0A\00" + +define i1 @func1(i32 %v1, i32 %v2) nounwind { +entry: + %t = call {i32, i1} @llvm.sadd.with.overflow.i32(i32 %v1, i32 %v2) + %sum = extractvalue {i32, i1} %t, 0 + %obit = extractvalue {i32, i1} %t, 1 + br i1 %obit, label %overflow, label %normal + +normal: + %t1 = tail call i32 (i8*, ...)* @printf( i8* getelementptr ([4 x i8]* @ok, i32 0, i32 0), i32 %sum ) nounwind + ret i1 true + +overflow: + %t2 = tail call i32 (i8*, ...)* @printf( i8* getelementptr ([4 x i8]* @no, i32 0, i32 0) ) nounwind + ret i1 false +} + +define i1 @func2(i32 %v1, i32 %v2) nounwind { +entry: + %t = call {i32, i1} @llvm.uadd.with.overflow.i32(i32 %v1, i32 %v2) + %sum = extractvalue {i32, i1} %t, 0 + %obit = extractvalue {i32, i1} %t, 1 + br i1 %obit, label %overflow, label %normal + +normal: + %t1 = tail call i32 (i8*, ...)* @printf( i8* getelementptr ([4 x i8]* @ok, i32 0, i32 0), i32 %sum ) nounwind + ret i1 true + +overflow: + %t2 = tail call i32 (i8*, ...)* @printf( i8* getelementptr ([4 x i8]* @no, i32 0, i32 0) ) nounwind + ret i1 false +} + +declare i32 @printf(i8*, ...) nounwind +declare {i32, i1} @llvm.sadd.with.overflow.i32(i32, i32) +declare {i32, i1} @llvm.uadd.with.overflow.i32(i32, i32)
diff --git a/src/LLVM/test/CodeGen/Generic/addr-label.ll b/src/LLVM/test/CodeGen/Generic/addr-label.ll new file mode 100644 index 0000000..0dbe502 --- /dev/null +++ b/src/LLVM/test/CodeGen/Generic/addr-label.ll
@@ -0,0 +1,81 @@ +; RUN: llc %s -o - + +;; Reference to a label that gets deleted. +define i8* @test1() nounwind { +entry: + ret i8* blockaddress(@test1b, %test_label) +} + +define i32 @test1b() nounwind { +entry: + ret i32 -1 +test_label: + br label %ret +ret: + ret i32 -1 +} + + +;; Issues with referring to a label that gets RAUW'd later. +define i32 @test2a() nounwind { +entry: + %target = bitcast i8* blockaddress(@test2b, %test_label) to i8* + + call i32 @test2b(i8* %target) + + ret i32 0 +} + +define i32 @test2b(i8* %target) nounwind { +entry: + indirectbr i8* %target, [label %test_label] + +test_label: +; assume some code here... + br label %ret + +ret: + ret i32 -1 +} + +; Issues with a BB that gets RAUW'd to another one after references are +; generated. +define void @test3(i8** %P, i8** %Q) nounwind { +entry: + store i8* blockaddress(@test3b, %test_label), i8** %P + store i8* blockaddress(@test3b, %ret), i8** %Q + ret void +} + +define i32 @test3b() nounwind { +entry: + br label %test_label +test_label: + br label %ret +ret: + ret i32 -1 +} + + +; PR6673 + +define i64 @test4a() { + %target = bitcast i8* blockaddress(@test4b, %usermain) to i8* + %ret = call i64 @test4b(i8* %target) + + ret i64 %ret +} + +define i64 @test4b(i8* %Code) { +entry: + indirectbr i8* %Code, [label %usermain] +usermain: + br label %label_line_0 + +label_line_0: + br label %label_line_1 + +label_line_1: + %target = ptrtoint i8* blockaddress(@test4b, %label_line_0) to i64 + ret i64 %target +}
diff --git a/src/LLVM/test/CodeGen/Generic/asm-large-immediate.ll b/src/LLVM/test/CodeGen/Generic/asm-large-immediate.ll new file mode 100644 index 0000000..605665b --- /dev/null +++ b/src/LLVM/test/CodeGen/Generic/asm-large-immediate.ll
@@ -0,0 +1,8 @@ +; RUN: llc < %s | grep 68719476738 + +define void @test() { +entry: + tail call void asm sideeffect "/* result: ${0:c} */", "i,~{dirflag},~{fpsr},~{flags}"( i64 68719476738 ) + ret void +} +
diff --git a/src/LLVM/test/CodeGen/Generic/badCallArgLRLLVM.ll b/src/LLVM/test/CodeGen/Generic/badCallArgLRLLVM.ll new file mode 100644 index 0000000..239cc2f --- /dev/null +++ b/src/LLVM/test/CodeGen/Generic/badCallArgLRLLVM.ll
@@ -0,0 +1,31 @@ +; RUN: llc < %s + +; This caused a problem because the argument of a call was defined by +; the return value of another call that appears later in the code. +; When processing the first call, the second call has not yet been processed +; so no LiveRange has been created for its return value. +; +; llc dies in UltraSparcRegInfo::suggestRegs4CallArgs() with: +; ERROR: In call instr, no LR for arg: 0x1009e0740 +; + +declare i32 @getInt(i32) + +define i32 @main(i32 %argc, i8** %argv) { +bb0: + br label %bb2 + +bb1: ; preds = %bb2 + %reg222 = call i32 @getInt( i32 %reg218 ) ; <i32> [#uses=1] + %reg110 = add i32 %reg222, 1 ; <i32> [#uses=2] + %b = icmp sle i32 %reg110, 0 ; <i1> [#uses=1] + br i1 %b, label %bb2, label %bb3 + +bb2: ; preds = %bb1, %bb0 + %reg218 = call i32 @getInt( i32 %argc ) ; <i32> [#uses=1] + br label %bb1 + +bb3: ; preds = %bb1 + ret i32 %reg110 +} +
diff --git a/src/LLVM/test/CodeGen/Generic/badFoldGEP.ll b/src/LLVM/test/CodeGen/Generic/badFoldGEP.ll new file mode 100644 index 0000000..72c1b5e --- /dev/null +++ b/src/LLVM/test/CodeGen/Generic/badFoldGEP.ll
@@ -0,0 +1,27 @@ +; RUN: llc < %s + +;; GetMemInstArgs() folded the two getElementPtr instructions together, +;; producing an illegal getElementPtr. That's because the type generated +;; by the last index for the first one is a structure field, not an array +;; element, and the second one indexes off that structure field. +;; The code is legal but not type-safe and the two GEPs should not be folded. +;; +;; This code fragment is from Spec/CINT2000/197.parser/197.parser.bc, +;; file post_process.c, function build_domain(). +;; (Modified to replace store with load and return load value.) +;; + %Domain = type { i8*, i32, i32*, i32, i32, i32*, %Domain* } +@domain_array = external global [497 x %Domain] ; <[497 x %Domain]*> [#uses=2] + +declare void @opaque([497 x %Domain]*) + +define i32 @main(i32 %argc, i8** %argv) { +bb0: + call void @opaque( [497 x %Domain]* @domain_array ) + %cann-indvar-idxcast = sext i32 %argc to i64 ; <i64> [#uses=1] + %reg841 = getelementptr [497 x %Domain]* @domain_array, i64 0, i64 %cann-indvar-idxcast, i32 3 ; <i32*> [#uses=1] + %reg846 = getelementptr i32* %reg841, i64 1 ; <i32*> [#uses=1] + %reg820 = load i32* %reg846 ; <i32> [#uses=1] + ret i32 %reg820 +} +
diff --git a/src/LLVM/test/CodeGen/Generic/badarg6.ll b/src/LLVM/test/CodeGen/Generic/badarg6.ll new file mode 100644 index 0000000..cbd1187 --- /dev/null +++ b/src/LLVM/test/CodeGen/Generic/badarg6.ll
@@ -0,0 +1,32 @@ +; RUN: llc < %s + +; On this code, llc did not pass the sixth argument (%reg321) to printf. +; It passed the first five in %o0 - %o4, but never initialized %o5. +@.LC12 = internal global [44 x i8] c"\09\09M = %g, I = %g, V = %g\0A\09\09O = %g, E = %g\0A\0A\00" ; <[44 x i8]*> [#uses=1] + +declare i32 @printf(i8*, ...) + +declare double @opaque(double) + +define i32 @main(i32 %argc, i8** %argv) { +bb25: + %b = icmp sle i32 %argc, 2 ; <i1> [#uses=1] + br i1 %b, label %bb42, label %bb43 + +bb42: ; preds = %bb25 + %reg315 = call double @opaque( double 3.000000e+00 ) ; <double> [#uses=1] + %reg316 = call double @opaque( double 3.100000e+00 ) ; <double> [#uses=1] + %reg317 = call double @opaque( double 3.200000e+00 ) ; <double> [#uses=1] + %reg318 = call double @opaque( double 3.300000e+00 ) ; <double> [#uses=1] + %reg319 = call double @opaque( double 3.400000e+00 ) ; <double> [#uses=1] + br label %bb43 + +bb43: ; preds = %bb42, %bb25 + %reg321 = phi double [ 2.000000e-01, %bb25 ], [ %reg315, %bb42 ] ; <double> [#uses=1] + %reg322 = phi double [ 6.000000e+00, %bb25 ], [ %reg316, %bb42 ] ; <double> [#uses=1] + %reg323 = phi double [ -1.000000e+00, %bb25 ], [ %reg317, %bb42 ] ; <double> [#uses=1] + %reg324 = phi double [ -1.000000e+00, %bb25 ], [ %reg318, %bb42 ] ; <double> [#uses=1] + %reg325 = phi double [ 1.000000e+00, %bb25 ], [ %reg319, %bb42 ] ; <double> [#uses=1] + %reg609 = call i32 (i8*, ...)* @printf( i8* getelementptr ([44 x i8]* @.LC12, i64 0, i64 0), double %reg325, double %reg324, double %reg323, double %reg322, double %reg321 ) ; <i32> [#uses=0] + ret i32 0 +}
diff --git a/src/LLVM/test/CodeGen/Generic/bool-to-double.ll b/src/LLVM/test/CodeGen/Generic/bool-to-double.ll new file mode 100644 index 0000000..2cffded --- /dev/null +++ b/src/LLVM/test/CodeGen/Generic/bool-to-double.ll
@@ -0,0 +1,6 @@ +; RUN: llc < %s +define double @test(i1 %X) { + %Y = uitofp i1 %X to double ; <double> [#uses=1] + ret double %Y +} +
diff --git a/src/LLVM/test/CodeGen/Generic/bool-vector.ll b/src/LLVM/test/CodeGen/Generic/bool-vector.ll new file mode 100644 index 0000000..4758697 --- /dev/null +++ b/src/LLVM/test/CodeGen/Generic/bool-vector.ll
@@ -0,0 +1,11 @@ +; RUN: llc < %s +; PR1845 + +define void @boolVectorSelect(<4 x i1>* %boolVectorPtr) { +Body: + %castPtr = bitcast <4 x i1>* %boolVectorPtr to <4 x i1>* + %someBools = load <4 x i1>* %castPtr, align 1 ; <<4 x i1>> + %internal = alloca <4 x i1>, align 16 ; <<4 x i1>*> [#uses=1] + store <4 x i1> %someBools, <4 x i1>* %internal, align 1 + ret void +}
diff --git a/src/LLVM/test/CodeGen/Generic/builtin-expect.ll b/src/LLVM/test/CodeGen/Generic/builtin-expect.ll new file mode 100644 index 0000000..e8cd07b --- /dev/null +++ b/src/LLVM/test/CodeGen/Generic/builtin-expect.ll
@@ -0,0 +1,223 @@ +; RUN: llc < %s + +define i32 @test1(i32 %x) nounwind uwtable ssp { +entry: + %retval = alloca i32, align 4 + %x.addr = alloca i32, align 4 + store i32 %x, i32* %x.addr, align 4 + %tmp = load i32* %x.addr, align 4 + %cmp = icmp sgt i32 %tmp, 1 + %conv = zext i1 %cmp to i32 + %conv1 = sext i32 %conv to i64 + %expval = call i64 @llvm.expect.i64(i64 %conv1, i64 1) + %tobool = icmp ne i64 %expval, 0 + br i1 %tobool, label %if.then, label %if.end + +if.then: ; preds = %entry + %call = call i32 (...)* @f() + store i32 %call, i32* %retval + br label %return + +if.end: ; preds = %entry + store i32 1, i32* %retval + br label %return + +return: ; preds = %if.end, %if.then + %0 = load i32* %retval + ret i32 %0 +} + +declare i64 @llvm.expect.i64(i64, i64) nounwind readnone + +declare i32 @f(...) + +define i32 @test2(i32 %x) nounwind uwtable ssp { +entry: + %retval = alloca i32, align 4 + %x.addr = alloca i32, align 4 + store i32 %x, i32* %x.addr, align 4 + %tmp = load i32* %x.addr, align 4 + %conv = sext i32 %tmp to i64 + %expval = call i64 @llvm.expect.i64(i64 %conv, i64 1) + %tobool = icmp ne i64 %expval, 0 + br i1 %tobool, label %if.then, label %if.end + +if.then: ; preds = %entry + %call = call i32 (...)* @f() + store i32 %call, i32* %retval + br label %return + +if.end: ; preds = %entry + store i32 1, i32* %retval + br label %return + +return: ; preds = %if.end, %if.then + %0 = load i32* %retval + ret i32 %0 +} + +define i32 @test3(i32 %x) nounwind uwtable ssp { +entry: + %retval = alloca i32, align 4 + %x.addr = alloca i32, align 4 + store i32 %x, i32* %x.addr, align 4 + %tmp = load i32* %x.addr, align 4 + %tobool = icmp ne i32 %tmp, 0 + %lnot = xor i1 %tobool, true + %lnot.ext = zext i1 %lnot to i32 + %conv = sext i32 %lnot.ext to i64 + %expval = call i64 @llvm.expect.i64(i64 %conv, i64 1) + %tobool1 = icmp ne i64 %expval, 0 + br i1 %tobool1, label %if.then, label %if.end + +if.then: ; preds = %entry + %call = call i32 (...)* @f() + store i32 %call, i32* %retval + br label %return + +if.end: ; preds = %entry + store i32 1, i32* %retval + br label %return + +return: ; preds = %if.end, %if.then + %0 = load i32* %retval + ret i32 %0 +} + +define i32 @test4(i32 %x) nounwind uwtable ssp { +entry: + %retval = alloca i32, align 4 + %x.addr = alloca i32, align 4 + store i32 %x, i32* %x.addr, align 4 + %tmp = load i32* %x.addr, align 4 + %tobool = icmp ne i32 %tmp, 0 + %lnot = xor i1 %tobool, true + %lnot1 = xor i1 %lnot, true + %lnot.ext = zext i1 %lnot1 to i32 + %conv = sext i32 %lnot.ext to i64 + %expval = call i64 @llvm.expect.i64(i64 %conv, i64 1) + %tobool2 = icmp ne i64 %expval, 0 + br i1 %tobool2, label %if.then, label %if.end + +if.then: ; preds = %entry + %call = call i32 (...)* @f() + store i32 %call, i32* %retval + br label %return + +if.end: ; preds = %entry + store i32 1, i32* %retval + br label %return + +return: ; preds = %if.end, %if.then + %0 = load i32* %retval + ret i32 %0 +} + +define i32 @test5(i32 %x) nounwind uwtable ssp { +entry: + %retval = alloca i32, align 4 + %x.addr = alloca i32, align 4 + store i32 %x, i32* %x.addr, align 4 + %tmp = load i32* %x.addr, align 4 + %cmp = icmp slt i32 %tmp, 0 + %conv = zext i1 %cmp to i32 + %conv1 = sext i32 %conv to i64 + %expval = call i64 @llvm.expect.i64(i64 %conv1, i64 0) + %tobool = icmp ne i64 %expval, 0 + br i1 %tobool, label %if.then, label %if.end + +if.then: ; preds = %entry + %call = call i32 (...)* @f() + store i32 %call, i32* %retval + br label %return + +if.end: ; preds = %entry + store i32 1, i32* %retval + br label %return + +return: ; preds = %if.end, %if.then + %0 = load i32* %retval + ret i32 %0 +} + +define i32 @test6(i32 %x) nounwind uwtable ssp { +entry: + %retval = alloca i32, align 4 + %x.addr = alloca i32, align 4 + store i32 %x, i32* %x.addr, align 4 + %tmp = load i32* %x.addr, align 4 + %conv = sext i32 %tmp to i64 + %expval = call i64 @llvm.expect.i64(i64 %conv, i64 1) + switch i64 %expval, label %sw.epilog [ + i64 1, label %sw.bb + i64 2, label %sw.bb + ] + +sw.bb: ; preds = %entry, %entry + store i32 0, i32* %retval + br label %return + +sw.epilog: ; preds = %entry + store i32 1, i32* %retval + br label %return + +return: ; preds = %sw.epilog, %sw.bb + %0 = load i32* %retval + ret i32 %0 +} + +define i32 @test7(i32 %x) nounwind uwtable ssp { +entry: + %retval = alloca i32, align 4 + %x.addr = alloca i32, align 4 + store i32 %x, i32* %x.addr, align 4 + %tmp = load i32* %x.addr, align 4 + %conv = sext i32 %tmp to i64 + %expval = call i64 @llvm.expect.i64(i64 %conv, i64 1) + switch i64 %expval, label %sw.epilog [ + i64 2, label %sw.bb + i64 3, label %sw.bb + ] + +sw.bb: ; preds = %entry, %entry + %tmp1 = load i32* %x.addr, align 4 + store i32 %tmp1, i32* %retval + br label %return + +sw.epilog: ; preds = %entry + store i32 0, i32* %retval + br label %return + +return: ; preds = %sw.epilog, %sw.bb + %0 = load i32* %retval + ret i32 %0 +} + +define i32 @test8(i32 %x) nounwind uwtable ssp { +entry: + %retval = alloca i32, align 4 + %x.addr = alloca i32, align 4 + store i32 %x, i32* %x.addr, align 4 + %tmp = load i32* %x.addr, align 4 + %cmp = icmp sgt i32 %tmp, 1 + %conv = zext i1 %cmp to i32 + %expval = call i32 @llvm.expect.i32(i32 %conv, i32 1) + %tobool = icmp ne i32 %expval, 0 + br i1 %tobool, label %if.then, label %if.end + +if.then: ; preds = %entry + %call = call i32 (...)* @f() + store i32 %call, i32* %retval + br label %return + +if.end: ; preds = %entry + store i32 1, i32* %retval + br label %return + +return: ; preds = %if.end, %if.then + %0 = load i32* %retval + ret i32 %0 +} + +declare i32 @llvm.expect.i32(i32, i32) nounwind readnone +
diff --git a/src/LLVM/test/CodeGen/Generic/call-ret0.ll b/src/LLVM/test/CodeGen/Generic/call-ret0.ll new file mode 100644 index 0000000..b28ed70 --- /dev/null +++ b/src/LLVM/test/CodeGen/Generic/call-ret0.ll
@@ -0,0 +1,10 @@ +; RUN: llc < %s +define i32 @foo(i32 %x) { + ret i32 %x +} + +define i32 @main() { + %r = call i32 @foo( i32 0 ) ; <i32> [#uses=1] + ret i32 %r +} +
diff --git a/src/LLVM/test/CodeGen/Generic/call-ret42.ll b/src/LLVM/test/CodeGen/Generic/call-ret42.ll new file mode 100644 index 0000000..f43424c --- /dev/null +++ b/src/LLVM/test/CodeGen/Generic/call-ret42.ll
@@ -0,0 +1,10 @@ +; RUN: llc < %s + +define i32 @foo(i32 %x) { + ret i32 42 +} + +define i32 @main() { + %r = call i32 @foo( i32 15 ) ; <i32> [#uses=1] + ret i32 %r +}
diff --git a/src/LLVM/test/CodeGen/Generic/call-void.ll b/src/LLVM/test/CodeGen/Generic/call-void.ll new file mode 100644 index 0000000..37feeae --- /dev/null +++ b/src/LLVM/test/CodeGen/Generic/call-void.ll
@@ -0,0 +1,11 @@ +; RUN: llc < %s + +define void @foo() { + ret void +} + +define i32 @main() { + call void @foo( ) + ret i32 0 +} +
diff --git a/src/LLVM/test/CodeGen/Generic/call2-ret0.ll b/src/LLVM/test/CodeGen/Generic/call2-ret0.ll new file mode 100644 index 0000000..e7b7a4c --- /dev/null +++ b/src/LLVM/test/CodeGen/Generic/call2-ret0.ll
@@ -0,0 +1,16 @@ +; RUN: llc < %s + +define i32 @bar(i32 %x) { + ret i32 0 +} + +define i32 @foo(i32 %x) { + %q = call i32 @bar( i32 1 ) ; <i32> [#uses=1] + ret i32 %q +} + +define i32 @main() { + %r = call i32 @foo( i32 2 ) ; <i32> [#uses=1] + ret i32 %r +} +
diff --git a/src/LLVM/test/CodeGen/Generic/cast-fp.ll b/src/LLVM/test/CodeGen/Generic/cast-fp.ll new file mode 100644 index 0000000..90e53ee --- /dev/null +++ b/src/LLVM/test/CodeGen/Generic/cast-fp.ll
@@ -0,0 +1,33 @@ +; RUN: llc < %s +@a_fstr = internal constant [8 x i8] c"a = %f\0A\00" ; <[8 x i8]*> [#uses=1] +@a_lstr = internal constant [10 x i8] c"a = %lld\0A\00" ; <[10 x i8]*> [#uses=1] +@a_dstr = internal constant [8 x i8] c"a = %d\0A\00" ; <[8 x i8]*> [#uses=1] +@b_dstr = internal constant [8 x i8] c"b = %d\0A\00" ; <[8 x i8]*> [#uses=1] +@b_fstr = internal constant [8 x i8] c"b = %f\0A\00" ; <[8 x i8]*> [#uses=1] +@A = global double 2.000000e+00 ; <double*> [#uses=1] +@B = global i32 2 ; <i32*> [#uses=1] + +declare i32 @printf(i8*, ...) + +define i32 @main() { + %a = load double* @A ; <double> [#uses=4] + %a_fs = getelementptr [8 x i8]* @a_fstr, i64 0, i64 0 ; <i8*> [#uses=1] + call i32 (i8*, ...)* @printf( i8* %a_fs, double %a ) ; <i32>:1 [#uses=0] + %a_d2l = fptosi double %a to i64 ; <i64> [#uses=1] + %a_ls = getelementptr [10 x i8]* @a_lstr, i64 0, i64 0 ; <i8*> [#uses=1] + call i32 (i8*, ...)* @printf( i8* %a_ls, i64 %a_d2l ) ; <i32>:2 [#uses=0] + %a_d2i = fptosi double %a to i32 ; <i32> [#uses=2] + %a_ds = getelementptr [8 x i8]* @a_dstr, i64 0, i64 0 ; <i8*> [#uses=3] + call i32 (i8*, ...)* @printf( i8* %a_ds, i32 %a_d2i ) ; <i32>:3 [#uses=0] + %a_d2sb = fptosi double %a to i8 ; <i8> [#uses=1] + call i32 (i8*, ...)* @printf( i8* %a_ds, i8 %a_d2sb ) ; <i32>:4 [#uses=0] + %a_d2i2sb = trunc i32 %a_d2i to i8 ; <i8> [#uses=1] + call i32 (i8*, ...)* @printf( i8* %a_ds, i8 %a_d2i2sb ) ; <i32>:5 [#uses=0] + %b = load i32* @B ; <i32> [#uses=2] + %b_ds = getelementptr [8 x i8]* @b_dstr, i64 0, i64 0 ; <i8*> [#uses=1] + call i32 (i8*, ...)* @printf( i8* %b_ds, i32 %b ) ; <i32>:6 [#uses=0] + %b_i2d = sitofp i32 %b to double ; <double> [#uses=1] + %b_fs = getelementptr [8 x i8]* @b_fstr, i64 0, i64 0 ; <i8*> [#uses=1] + call i32 (i8*, ...)* @printf( i8* %b_fs, double %b_i2d ) ; <i32>:7 [#uses=0] + ret i32 0 +}
diff --git a/src/LLVM/test/CodeGen/Generic/constindices.ll b/src/LLVM/test/CodeGen/Generic/constindices.ll new file mode 100644 index 0000000..528cb5b --- /dev/null +++ b/src/LLVM/test/CodeGen/Generic/constindices.ll
@@ -0,0 +1,44 @@ +; RUN: llc < %s + +; Test that a sequence of constant indices are folded correctly +; into the equivalent offset at compile-time. + + %MixedA = type { float, [15 x i32], i8, float } + %MixedB = type { float, %MixedA, float } +@fmtArg = internal global [44 x i8] c"sqrt(2) = %g\0Aexp(1) = %g\0Api = %g\0Afive = %g\0A\00" ; <[44 x i8]*> [#uses=1] + +declare i32 @printf(i8*, ...) + +define i32 @main() { + %ScalarA = alloca %MixedA ; <%MixedA*> [#uses=1] + %ScalarB = alloca %MixedB ; <%MixedB*> [#uses=1] + %ArrayA = alloca %MixedA, i32 4 ; <%MixedA*> [#uses=3] + %ArrayB = alloca %MixedB, i32 3 ; <%MixedB*> [#uses=2] + %I1 = getelementptr %MixedA* %ScalarA, i64 0, i32 0 ; <float*> [#uses=2] + store float 0x3FF6A09020000000, float* %I1 + %I2 = getelementptr %MixedB* %ScalarB, i64 0, i32 1, i32 0 ; <float*> [#uses=2] + store float 0x4005BF1420000000, float* %I2 + %fptrA = getelementptr %MixedA* %ArrayA, i64 1, i32 0 ; <float*> [#uses=1] + %fptrB = getelementptr %MixedB* %ArrayB, i64 2, i32 1, i32 0 ; <float*> [#uses=1] + store float 0x400921CAC0000000, float* %fptrA + store float 5.000000e+00, float* %fptrB + + ;; Test that a sequence of GEPs with constant indices are folded right + %fptrA1 = getelementptr %MixedA* %ArrayA, i64 3 ; <%MixedA*> [#uses=1] + %fptrA2 = getelementptr %MixedA* %fptrA1, i64 0, i32 1 ; <[15 x i32]*> [#uses=1] + %fptrA3 = getelementptr [15 x i32]* %fptrA2, i64 0, i64 8 ; <i32*> [#uses=1] + store i32 5, i32* %fptrA3 + %sqrtTwo = load float* %I1 ; <float> [#uses=1] + %exp = load float* %I2 ; <float> [#uses=1] + %I3 = getelementptr %MixedA* %ArrayA, i64 1, i32 0 ; <float*> [#uses=1] + %pi = load float* %I3 ; <float> [#uses=1] + %I4 = getelementptr %MixedB* %ArrayB, i64 2, i32 1, i32 0 ; <float*> [#uses=1] + %five = load float* %I4 ; <float> [#uses=1] + %dsqrtTwo = fpext float %sqrtTwo to double ; <double> [#uses=1] + %dexp = fpext float %exp to double ; <double> [#uses=1] + %dpi = fpext float %pi to double ; <double> [#uses=1] + %dfive = fpext float %five to double ; <double> [#uses=1] + %castFmt = getelementptr [44 x i8]* @fmtArg, i64 0, i64 0 ; <i8*> [#uses=1] + call i32 (i8*, ...)* @printf( i8* %castFmt, double %dsqrtTwo, double %dexp, double %dpi, double %dfive ) ; <i32>:1 [#uses=0] + ret i32 0 +}
diff --git a/src/LLVM/test/CodeGen/Generic/crash.ll b/src/LLVM/test/CodeGen/Generic/crash.ll new file mode 100644 index 0000000..d889389 --- /dev/null +++ b/src/LLVM/test/CodeGen/Generic/crash.ll
@@ -0,0 +1,68 @@ +; RUN: llc %s -o - + +; PR6332 +%struct.AVCodecTag = type {} +@ff_codec_bmp_tags = external global [0 x %struct.AVCodecTag] +@tags = global [1 x %struct.AVCodecTag*] [%struct.AVCodecTag* getelementptr +inbounds ([0 x %struct.AVCodecTag]* @ff_codec_bmp_tags, i32 0, i32 0)] + + +; rdar://8878965 + +%struct.CAMERA = type { [3 x double], [3 x double], [3 x double], [3 x double], [3 x double], [3 x double], double, double, i32, double, double, i32, double, i32* } + +define void @Parse_Camera(%struct.CAMERA** nocapture %Camera_Ptr) nounwind { +entry: +%.pre = load %struct.CAMERA** %Camera_Ptr, align 4 +%0 = getelementptr inbounds %struct.CAMERA* %.pre, i32 0, i32 1, i32 0 +%1 = getelementptr inbounds %struct.CAMERA* %.pre, i32 0, i32 1, i32 2 +br label %bb32 + +bb32: ; preds = %bb6 +%2 = load double* %0, align 4 +%3 = load double* %1, align 4 +%4 = load double* %0, align 4 +call void @Parse_Vector(double* %0) nounwind +%5 = call i32 @llvm.objectsize.i32(i8* undef, i1 false) +%6 = icmp eq i32 %5, -1 +br i1 %6, label %bb34, label %bb33 + +bb33: ; preds = %bb32 +unreachable + +bb34: ; preds = %bb32 +unreachable + +} + +declare void @Parse_Vector(double*) +declare i32 @llvm.objectsize.i32(i8*, i1) + + +; PR9578 +%struct.S0 = type { i32, i8, i32 } + +define void @func_82() nounwind optsize { +entry: + br label %for.body.i + +for.body.i: ; preds = %for.body.i, %entry + br i1 undef, label %func_74.exit.for.cond29.thread_crit_edge, label %for.body.i + +func_74.exit.for.cond29.thread_crit_edge: ; preds = %for.body.i + %f13576.pre = getelementptr inbounds %struct.S0* undef, i64 0, i32 1 + store i8 0, i8* %f13576.pre, align 4, !tbaa !0 + br label %lbl_468 + +lbl_468: ; preds = %lbl_468, %func_74.exit.for.cond29.thread_crit_edge + %f13577.ph = phi i8* [ %f13576.pre, %func_74.exit.for.cond29.thread_crit_edge ], [ %f135.pre, %lbl_468 ] + store i8 1, i8* %f13577.ph, align 1 + %f135.pre = getelementptr inbounds %struct.S0* undef, i64 0, i32 1 + br i1 undef, label %lbl_468, label %for.end74 + +for.end74: ; preds = %lbl_468 + ret void +} + +!0 = metadata !{metadata !"omnipotent char", metadata !1} +!1 = metadata !{metadata !"Simple C/C++ TBAA", null}
diff --git a/src/LLVM/test/CodeGen/Generic/dbg_value.ll b/src/LLVM/test/CodeGen/Generic/dbg_value.ll new file mode 100644 index 0000000..ce3364d --- /dev/null +++ b/src/LLVM/test/CodeGen/Generic/dbg_value.ll
@@ -0,0 +1,13 @@ +; RUN: llc < %s +; rdar://7759395 + +%0 = type { i32, i32 } + +define void @t(%0*, i32, i32, i32, i32) nounwind { + tail call void @llvm.dbg.value(metadata !{%0* %0}, i64 0, metadata !0) + unreachable +} + +declare void @llvm.dbg.value(metadata, i64, metadata) nounwind readnone + +!0 = metadata !{i32 0} ;
diff --git a/src/LLVM/test/CodeGen/Generic/dg.exp b/src/LLVM/test/CodeGen/Generic/dg.exp new file mode 100644 index 0000000..f2e8f3b --- /dev/null +++ b/src/LLVM/test/CodeGen/Generic/dg.exp
@@ -0,0 +1,3 @@ +load_lib llvm.exp + +RunLLVMTests [lsort [glob -nocomplain $srcdir/$subdir/*.{ll,c,cpp}]]
diff --git a/src/LLVM/test/CodeGen/Generic/div-neg-power-2.ll b/src/LLVM/test/CodeGen/Generic/div-neg-power-2.ll new file mode 100644 index 0000000..753e3da --- /dev/null +++ b/src/LLVM/test/CodeGen/Generic/div-neg-power-2.ll
@@ -0,0 +1,7 @@ +; RUN: llc < %s + +define i32 @test(i32 %X) { + %Y = sdiv i32 %X, -2 ; <i32> [#uses=1] + ret i32 %Y +} +
diff --git a/src/LLVM/test/CodeGen/Generic/edge-bundles-blockIDs.ll b/src/LLVM/test/CodeGen/Generic/edge-bundles-blockIDs.ll new file mode 100644 index 0000000..b4ae415 --- /dev/null +++ b/src/LLVM/test/CodeGen/Generic/edge-bundles-blockIDs.ll
@@ -0,0 +1,81 @@ +; Make sure EdgeBoundles handles the case when the function size is less then +; the number of block IDs. +; RUN: llc -regalloc=fast < %s + +define void @foo() nounwind { +entry: + br i1 undef, label %bb5.i1632, label %bb1.i1605 + +bb1.i1605: ; preds = %entry + br i1 undef, label %bb5.i73.i, label %bb3.i68.i + +bb3.i68.i: ; preds = %bb1.i1605 + unreachable + +bb5.i73.i: ; preds = %bb1.i1605 + br i1 undef, label %bb7.i79.i, label %bb6.i76.i + +bb6.i76.i: ; preds = %bb5.i73.i + unreachable + +bb7.i79.i: ; preds = %bb5.i73.i + br i1 undef, label %bb.i.i1608, label %bb8.i82.i + +bb8.i82.i: ; preds = %bb7.i79.i + unreachable + +bb.i.i1608: ; preds = %bb.i.i1608, %bb7.i79.i + br i1 undef, label %bb1.i.dis.preheader_crit_edge.i, label %bb.i.i1608 + +bb1.i.dis.preheader_crit_edge.i: ; preds = %bb.i.i1608 + br label %dis.i + +bb3.i.i1610: ; preds = %bb8.i.i, %bb7.i.i1615 + br i1 undef, label %bb5.i.i1613, label %bb4.i.i1611 + +bb4.i.i1611: ; preds = %bb3.i.i1610 + br label %bb5.i.i1613 + +bb5.i.i1613: ; preds = %bb4.i.i1611, %bb3.i.i1610 + unreachable + +bb7.i.i1615: ; preds = %getfloder.exit.i + br i1 undef, label %bb3.i.i1610, label %bb8.i.i + +bb8.i.i: ; preds = %bb7.i.i1615 + br i1 undef, label %bb3.i.i1610, label %bb9.i.i + +bb9.i.i: ; preds = %bb8.i.i + br label %bb12.i.i + +bb12.i.i: ; preds = %bb12.i.i, %bb9.i.i + br i1 undef, label %bb13.i.bb14.i_crit_edge.i, label %bb12.i.i + +bb13.i.bb14.i_crit_edge.i: ; preds = %bb12.i.i + br i1 undef, label %bb25.i.i, label %bb20.i.i + +bb19.i.i: ; preds = %bb20.i.i + br label %bb20.i.i + +bb20.i.i: ; preds = %bb19.i.i, %bb13.i.bb14.i_crit_edge.i + %or.cond.i = or i1 undef, undef + br i1 %or.cond.i, label %bb25.i.i, label %bb19.i.i + +bb25.i.i: ; preds = %bb20.i.i, %bb13.i.bb14.i_crit_edge.i + unreachable + +bb5.i1632: ; preds = %entry + unreachable + +dis.i: ; preds = %getfloder.exit.i, %bb1.i.dis.preheader_crit_edge.i + br i1 undef, label %bb.i96.i, label %bb1.i102.i + +bb.i96.i: ; preds = %dis.i + br label %getfloder.exit.i + +bb1.i102.i: ; preds = %dis.i + br label %getfloder.exit.i + +getfloder.exit.i: ; preds = %bb1.i102.i, %bb.i96.i + br i1 undef, label %bb7.i.i1615, label %dis.i +}
diff --git a/src/LLVM/test/CodeGen/Generic/empty-load-store.ll b/src/LLVM/test/CodeGen/Generic/empty-load-store.ll new file mode 100644 index 0000000..bca7305 --- /dev/null +++ b/src/LLVM/test/CodeGen/Generic/empty-load-store.ll
@@ -0,0 +1,18 @@ +; RUN: llc < %s +; PR2612 + +@current_foo = internal global { } zeroinitializer + +define i32 @foo() { +entry: + %retval = alloca i32 + store i32 0, i32* %retval + %local_foo = alloca { } + load { }* @current_foo + store { } %0, { }* %local_foo + br label %return + +return: + load i32* %retval + ret i32 %1 +}
diff --git a/src/LLVM/test/CodeGen/Generic/exception-handling.ll b/src/LLVM/test/CodeGen/Generic/exception-handling.ll new file mode 100644 index 0000000..376e1f1 --- /dev/null +++ b/src/LLVM/test/CodeGen/Generic/exception-handling.ll
@@ -0,0 +1,29 @@ +; RUN: llc < %s +; PR10733 +declare void @_Znam() + +define void @_ZNK14gIndexOdometer15AfterExcisionOfERi() uwtable align 2 { +_ZN6Gambit5ArrayIiEC2Ej.exit36: + br label %"9" + +"9": ; preds = %"10", %_ZN6Gambit5ArrayIiEC2Ej.exit36 + %indvar82 = phi i64 [ 0, %_ZN6Gambit5ArrayIiEC2Ej.exit36 ], [ %tmp85, %"10" ] + %tmp85 = add i64 %indvar82, 1 + %tmp = trunc i64 %tmp85 to i32 + invoke void @_ZNK14gIndexOdometer9NoIndicesEv() + to label %"10" unwind label %lpad27 + +"10": ; preds = %"9" + invoke void @_Znam() + to label %"9" unwind label %lpad27 + +lpad27: ; preds = %"10", %"9" + %0 = phi i32 [ undef, %"9" ], [ %tmp, %"10" ] + %1 = landingpad { i8*, i32 } personality i32 (i32, i64, i8*, i8*)* @__gxx_personality_v0 + cleanup + resume { i8*, i32 } zeroinitializer +} + +declare void @_ZNK14gIndexOdometer9NoIndicesEv() + +declare i32 @__gxx_personality_v0(i32, i64, i8*, i8*)
diff --git a/src/LLVM/test/CodeGen/Generic/externally_available.ll b/src/LLVM/test/CodeGen/Generic/externally_available.ll new file mode 100644 index 0000000..7976cc9 --- /dev/null +++ b/src/LLVM/test/CodeGen/Generic/externally_available.ll
@@ -0,0 +1,10 @@ +; RUN: llc < %s | not grep test_ + +; test_function should not be emitted to the .s file. +define available_externally i32 @test_function() { + ret i32 4 +} + +; test_global should not be emitted to the .s file. +@test_global = available_externally global i32 4 +
diff --git a/src/LLVM/test/CodeGen/Generic/fastcall.ll b/src/LLVM/test/CodeGen/Generic/fastcall.ll new file mode 100644 index 0000000..35e04f1 --- /dev/null +++ b/src/LLVM/test/CodeGen/Generic/fastcall.ll
@@ -0,0 +1,14 @@ +; Test fastcc works. Test from bug 2770. +; RUN: llc < %s -relocation-model=pic + + +%struct.__gcov_var = type { i32 } +@__gcov_var = external global %struct.__gcov_var + +define fastcc void @gcov_read_words(i32 %words) { +entry: + store i32 %words, i32* getelementptr (%struct.__gcov_var* +@__gcov_var, +i32 0, i32 0) + ret void +}
diff --git a/src/LLVM/test/CodeGen/Generic/fneg-fabs.ll b/src/LLVM/test/CodeGen/Generic/fneg-fabs.ll new file mode 100644 index 0000000..4454ab7 --- /dev/null +++ b/src/LLVM/test/CodeGen/Generic/fneg-fabs.ll
@@ -0,0 +1,26 @@ +; RUN: llc < %s + +define double @fneg(double %X) { + %Y = fsub double -0.000000e+00, %X ; <double> [#uses=1] + ret double %Y +} + +define float @fnegf(float %X) { + %Y = fsub float -0.000000e+00, %X ; <float> [#uses=1] + ret float %Y +} + +declare double @fabs(double) + +declare float @fabsf(float) + +define double @fabstest(double %X) { + %Y = call double @fabs( double %X ) ; <double> [#uses=1] + ret double %Y +} + +define float @fabsftest(float %X) { + %Y = call float @fabsf( float %X ) ; <float> [#uses=1] + ret float %Y +} +
diff --git a/src/LLVM/test/CodeGen/Generic/fp-to-int-invalid.ll b/src/LLVM/test/CodeGen/Generic/fp-to-int-invalid.ll new file mode 100644 index 0000000..cdcc3a2 --- /dev/null +++ b/src/LLVM/test/CodeGen/Generic/fp-to-int-invalid.ll
@@ -0,0 +1,18 @@ +; RUN: llc < %s +; PR4057 +define void @test_cast_float_to_char(i8* %result) nounwind { +entry: + %result_addr = alloca i8* ; <i8**> [#uses=2] + %test = alloca float ; <float*> [#uses=2] + %"alloca point" = bitcast i32 0 to i32 ; <i32> [#uses=0] + store i8* %result, i8** %result_addr + store float 0x40B2AFA160000000, float* %test, align 4 + %0 = load float* %test, align 4 ; <float> [#uses=1] + %1 = fptosi float %0 to i8 ; <i8> [#uses=1] + %2 = load i8** %result_addr, align 4 ; <i8*> [#uses=1] + store i8 %1, i8* %2, align 1 + br label %return + +return: ; preds = %entry + ret void +}
diff --git a/src/LLVM/test/CodeGen/Generic/fp_to_int.ll b/src/LLVM/test/CodeGen/Generic/fp_to_int.ll new file mode 100644 index 0000000..9989ddf --- /dev/null +++ b/src/LLVM/test/CodeGen/Generic/fp_to_int.ll
@@ -0,0 +1,81 @@ +; RUN: llc < %s + +define i8 @test1(double %X) { + %tmp.1 = fptosi double %X to i8 ; <i8> [#uses=1] + ret i8 %tmp.1 +} + +define i16 @test2(double %X) { + %tmp.1 = fptosi double %X to i16 ; <i16> [#uses=1] + ret i16 %tmp.1 +} + +define i32 @test3(double %X) { + %tmp.1 = fptosi double %X to i32 ; <i32> [#uses=1] + ret i32 %tmp.1 +} + +define i64 @test4(double %X) { + %tmp.1 = fptosi double %X to i64 ; <i64> [#uses=1] + ret i64 %tmp.1 +} + +define i8 @test1u(double %X) { + %tmp.1 = fptoui double %X to i8 ; <i8> [#uses=1] + ret i8 %tmp.1 +} + +define i16 @test2u(double %X) { + %tmp.1 = fptoui double %X to i16 ; <i16> [#uses=1] + ret i16 %tmp.1 +} + +define i32 @test3u(double %X) { + %tmp.1 = fptoui double %X to i32 ; <i32> [#uses=1] + ret i32 %tmp.1 +} + +define i64 @test4u(double %X) { + %tmp.1 = fptoui double %X to i64 ; <i64> [#uses=1] + ret i64 %tmp.1 +} + +define i8 @test1f(float %X) { + %tmp.1 = fptosi float %X to i8 ; <i8> [#uses=1] + ret i8 %tmp.1 +} + +define i16 @test2f(float %X) { + %tmp.1 = fptosi float %X to i16 ; <i16> [#uses=1] + ret i16 %tmp.1 +} + +define i32 @test3f(float %X) { + %tmp.1 = fptosi float %X to i32 ; <i32> [#uses=1] + ret i32 %tmp.1 +} + +define i64 @test4f(float %X) { + %tmp.1 = fptosi float %X to i64 ; <i64> [#uses=1] + ret i64 %tmp.1 +} + +define i8 @test1uf(float %X) { + %tmp.1 = fptoui float %X to i8 ; <i8> [#uses=1] + ret i8 %tmp.1 +} + +define i16 @test2uf(float %X) { + %tmp.1 = fptoui float %X to i16 ; <i16> [#uses=1] + ret i16 %tmp.1 +} + +define i32 @test3uf(float %X) { + %tmp.1 = fptoui float %X to i32 ; <i32> [#uses=1] + ret i32 %tmp.1 +} + +define i64 @test4uf(float %X) { + %tmp.1 = fptoui float %X to i64 ; <i64> [#uses=1] + ret i64 %tmp.1 +}
diff --git a/src/LLVM/test/CodeGen/Generic/fpowi-promote.ll b/src/LLVM/test/CodeGen/Generic/fpowi-promote.ll new file mode 100644 index 0000000..f9d4716 --- /dev/null +++ b/src/LLVM/test/CodeGen/Generic/fpowi-promote.ll
@@ -0,0 +1,11 @@ +; RUN: llc < %s + +; PR1239 + +define float @test(float %tmp23302331, i32 %tmp23282329 ) { + +%tmp2339 = call float @llvm.powi.f32( float %tmp23302331, i32 %tmp23282329 ) + ret float %tmp2339 +} + +declare float @llvm.powi.f32(float,i32)
diff --git a/src/LLVM/test/CodeGen/Generic/fwdtwice.ll b/src/LLVM/test/CodeGen/Generic/fwdtwice.ll new file mode 100644 index 0000000..5107f36 --- /dev/null +++ b/src/LLVM/test/CodeGen/Generic/fwdtwice.ll
@@ -0,0 +1,29 @@ +; RUN: llc < %s + +;; +;; Test the sequence: +;; cast -> setle 0, %cast -> br %cond +;; This sequence should cause the cast value to be forwarded twice, +;; i.e., cast is forwarded to the setle and the setle is forwarded +;; to the branch. +;; register argument of the "branch-on-register" instruction, i.e., +;; +;; This produces the bogus output instruction: +;; brlez <NULL VALUE>, .L_SumArray_bb3. +;; This came from %bb1 of sumarrray.ll generated from sumarray.c. + +define i32 @SumArray(i32 %Num) { + %Num.upgrd.1 = alloca i32 ; <i32*> [#uses=2] + br label %Top + +Top: ; preds = %Top, %0 + store i32 %Num, i32* %Num.upgrd.1 + %reg108 = load i32* %Num.upgrd.1 ; <i32> [#uses=1] + %cast1006 = bitcast i32 %reg108 to i32 ; <i32> [#uses=1] + %cond1001 = icmp ule i32 %cast1006, 0 ; <i1> [#uses=1] + br i1 %cond1001, label %bb6, label %Top + +bb6: ; preds = %Top + ret i32 42 +} +
diff --git a/src/LLVM/test/CodeGen/Generic/global-ret0.ll b/src/LLVM/test/CodeGen/Generic/global-ret0.ll new file mode 100644 index 0000000..0838372 --- /dev/null +++ b/src/LLVM/test/CodeGen/Generic/global-ret0.ll
@@ -0,0 +1,8 @@ +; RUN: llc < %s + +@g = global i32 0 ; <i32*> [#uses=1] + +define i32 @main() { + %h = load i32* @g ; <i32> [#uses=1] + ret i32 %h +}
diff --git a/src/LLVM/test/CodeGen/Generic/hello.ll b/src/LLVM/test/CodeGen/Generic/hello.ll new file mode 100644 index 0000000..8d51008 --- /dev/null +++ b/src/LLVM/test/CodeGen/Generic/hello.ll
@@ -0,0 +1,11 @@ +; RUN: llc < %s + +@.str_1 = internal constant [7 x i8] c"hello\0A\00" ; <[7 x i8]*> [#uses=1] + +declare i32 @printf(i8*, ...) + +define i32 @main() { + %s = getelementptr [7 x i8]* @.str_1, i64 0, i64 0 ; <i8*> [#uses=1] + call i32 (i8*, ...)* @printf( i8* %s ) ; <i32>:1 [#uses=0] + ret i32 0 +}
diff --git a/src/LLVM/test/CodeGen/Generic/i128-addsub.ll b/src/LLVM/test/CodeGen/Generic/i128-addsub.ll new file mode 100644 index 0000000..f36c90f --- /dev/null +++ b/src/LLVM/test/CodeGen/Generic/i128-addsub.ll
@@ -0,0 +1,39 @@ +; RUN: llc < %s + +define void @test_add(i64 %AL, i64 %AH, i64 %BL, i64 %BH, i64* %RL, i64* %RH) { +entry: + %tmp1 = zext i64 %AL to i128 ; <i128> [#uses=1] + %tmp23 = zext i64 %AH to i128 ; <i128> [#uses=1] + %tmp4 = shl i128 %tmp23, 64 ; <i128> [#uses=1] + %tmp5 = or i128 %tmp4, %tmp1 ; <i128> [#uses=1] + %tmp67 = zext i64 %BL to i128 ; <i128> [#uses=1] + %tmp89 = zext i64 %BH to i128 ; <i128> [#uses=1] + %tmp11 = shl i128 %tmp89, 64 ; <i128> [#uses=1] + %tmp12 = or i128 %tmp11, %tmp67 ; <i128> [#uses=1] + %tmp15 = add i128 %tmp12, %tmp5 ; <i128> [#uses=2] + %tmp1617 = trunc i128 %tmp15 to i64 ; <i64> [#uses=1] + store i64 %tmp1617, i64* %RL + %tmp21 = lshr i128 %tmp15, 64 ; <i128> [#uses=1] + %tmp2122 = trunc i128 %tmp21 to i64 ; <i64> [#uses=1] + store i64 %tmp2122, i64* %RH + ret void +} + +define void @test_sub(i64 %AL, i64 %AH, i64 %BL, i64 %BH, i64* %RL, i64* %RH) { +entry: + %tmp1 = zext i64 %AL to i128 ; <i128> [#uses=1] + %tmp23 = zext i64 %AH to i128 ; <i128> [#uses=1] + %tmp4 = shl i128 %tmp23, 64 ; <i128> [#uses=1] + %tmp5 = or i128 %tmp4, %tmp1 ; <i128> [#uses=1] + %tmp67 = zext i64 %BL to i128 ; <i128> [#uses=1] + %tmp89 = zext i64 %BH to i128 ; <i128> [#uses=1] + %tmp11 = shl i128 %tmp89, 64 ; <i128> [#uses=1] + %tmp12 = or i128 %tmp11, %tmp67 ; <i128> [#uses=1] + %tmp15 = sub i128 %tmp5, %tmp12 ; <i128> [#uses=2] + %tmp1617 = trunc i128 %tmp15 to i64 ; <i64> [#uses=1] + store i64 %tmp1617, i64* %RL + %tmp21 = lshr i128 %tmp15, 64 ; <i128> [#uses=1] + %tmp2122 = trunc i128 %tmp21 to i64 ; <i64> [#uses=1] + store i64 %tmp2122, i64* %RH + ret void +}
diff --git a/src/LLVM/test/CodeGen/Generic/i128-arith.ll b/src/LLVM/test/CodeGen/Generic/i128-arith.ll new file mode 100644 index 0000000..5d69e64 --- /dev/null +++ b/src/LLVM/test/CodeGen/Generic/i128-arith.ll
@@ -0,0 +1,11 @@ +; RUN: llc < %s + +define i64 @foo(i64 %x, i64 %y, i32 %amt) { + %tmp0 = zext i64 %x to i128 + %tmp1 = sext i64 %y to i128 + %tmp2 = or i128 %tmp0, %tmp1 + %tmp7 = zext i32 13 to i128 + %tmp3 = lshr i128 %tmp2, %tmp7 + %tmp4 = trunc i128 %tmp3 to i64 + ret i64 %tmp4 +}
diff --git a/src/LLVM/test/CodeGen/Generic/inline-asm-special-strings.ll b/src/LLVM/test/CodeGen/Generic/inline-asm-special-strings.ll new file mode 100644 index 0000000..d18221e --- /dev/null +++ b/src/LLVM/test/CodeGen/Generic/inline-asm-special-strings.ll
@@ -0,0 +1,6 @@ +; RUN: llc < %s | grep "foo 0 0" + +define void @bar() nounwind { + tail call void asm sideeffect "foo ${:uid} ${:uid}", ""() nounwind + ret void +}
diff --git a/src/LLVM/test/CodeGen/Generic/intrinsics.ll b/src/LLVM/test/CodeGen/Generic/intrinsics.ll new file mode 100644 index 0000000..69b67e1 --- /dev/null +++ b/src/LLVM/test/CodeGen/Generic/intrinsics.ll
@@ -0,0 +1,40 @@ +; RUN: llc < %s + +;; SQRT +declare float @llvm.sqrt.f32(float) + +declare double @llvm.sqrt.f64(double) + +define double @test_sqrt(float %F) { + %G = call float @llvm.sqrt.f32( float %F ) ; <float> [#uses=1] + %H = fpext float %G to double ; <double> [#uses=1] + %I = call double @llvm.sqrt.f64( double %H ) ; <double> [#uses=1] + ret double %I +} + + +; SIN +declare float @sinf(float) readonly + +declare double @sin(double) readonly + +define double @test_sin(float %F) { + %G = call float @sinf( float %F ) ; <float> [#uses=1] + %H = fpext float %G to double ; <double> [#uses=1] + %I = call double @sin( double %H ) ; <double> [#uses=1] + ret double %I +} + + +; COS +declare float @cosf(float) readonly + +declare double @cos(double) readonly + +define double @test_cos(float %F) { + %G = call float @cosf( float %F ) ; <float> [#uses=1] + %H = fpext float %G to double ; <double> [#uses=1] + %I = call double @cos( double %H ) ; <double> [#uses=1] + ret double %I +} +
diff --git a/src/LLVM/test/CodeGen/Generic/invalid-memcpy.ll b/src/LLVM/test/CodeGen/Generic/invalid-memcpy.ll new file mode 100644 index 0000000..2dfa28b --- /dev/null +++ b/src/LLVM/test/CodeGen/Generic/invalid-memcpy.ll
@@ -0,0 +1,17 @@ +; RUN: llc < %s + +; This testcase is invalid (the alignment specified for memcpy is +; greater than the alignment guaranteed for Qux or C.0.1173), but it +; should compile, not crash the code generator. + +@C.0.1173 = external constant [33 x i8] + +define void @Bork() { +entry: + %Qux = alloca [33 x i8] + %Qux1 = bitcast [33 x i8]* %Qux to i8* + call void @llvm.memcpy.p0i8.p0i8.i64(i8* %Qux1, i8* getelementptr inbounds ([33 x i8]* @C.0.1173, i32 0, i32 0), i64 33, i32 8, i1 false) + ret void +} + +declare void @llvm.memcpy.p0i8.p0i8.i64(i8* nocapture, i8* nocapture, i64, i32, i1) nounwind
diff --git a/src/LLVM/test/CodeGen/Generic/isunord.ll b/src/LLVM/test/CodeGen/Generic/isunord.ll new file mode 100644 index 0000000..0cc4ecc --- /dev/null +++ b/src/LLVM/test/CodeGen/Generic/isunord.ll
@@ -0,0 +1,9 @@ +; RUN: llc < %s + +declare i1 @llvm.isunordered.f64(double, double) + +define i1 @test(double %X, double %Y) { + %tmp27 = fcmp uno double %X, %Y ; <i1> [#uses=1] + ret i1 %tmp27 +} +
diff --git a/src/LLVM/test/CodeGen/Generic/llvm-ct-intrinsics.ll b/src/LLVM/test/CodeGen/Generic/llvm-ct-intrinsics.ll new file mode 100644 index 0000000..bce3315 --- /dev/null +++ b/src/LLVM/test/CodeGen/Generic/llvm-ct-intrinsics.ll
@@ -0,0 +1,62 @@ +; Make sure this testcase is supported by all code generators +; RUN: llc < %s + +declare i64 @llvm.ctpop.i64(i64) + +declare i32 @llvm.ctpop.i32(i32) + +declare i16 @llvm.ctpop.i16(i16) + +declare i8 @llvm.ctpop.i8(i8) + +define void @ctpoptest(i8 %A, i16 %B, i32 %C, i64 %D, i8* %AP, i16* %BP, i32* %CP, i64* %DP) { + %a = call i8 @llvm.ctpop.i8( i8 %A ) ; <i8> [#uses=1] + %b = call i16 @llvm.ctpop.i16( i16 %B ) ; <i16> [#uses=1] + %c = call i32 @llvm.ctpop.i32( i32 %C ) ; <i32> [#uses=1] + %d = call i64 @llvm.ctpop.i64( i64 %D ) ; <i64> [#uses=1] + store i8 %a, i8* %AP + store i16 %b, i16* %BP + store i32 %c, i32* %CP + store i64 %d, i64* %DP + ret void +} + +declare i64 @llvm.ctlz.i64(i64) + +declare i32 @llvm.ctlz.i32(i32) + +declare i16 @llvm.ctlz.i16(i16) + +declare i8 @llvm.ctlz.i8(i8) + +define void @ctlztest(i8 %A, i16 %B, i32 %C, i64 %D, i8* %AP, i16* %BP, i32* %CP, i64* %DP) { + %a = call i8 @llvm.ctlz.i8( i8 %A ) ; <i8> [#uses=1] + %b = call i16 @llvm.ctlz.i16( i16 %B ) ; <i16> [#uses=1] + %c = call i32 @llvm.ctlz.i32( i32 %C ) ; <i32> [#uses=1] + %d = call i64 @llvm.ctlz.i64( i64 %D ) ; <i64> [#uses=1] + store i8 %a, i8* %AP + store i16 %b, i16* %BP + store i32 %c, i32* %CP + store i64 %d, i64* %DP + ret void +} + +declare i64 @llvm.cttz.i64(i64) + +declare i32 @llvm.cttz.i32(i32) + +declare i16 @llvm.cttz.i16(i16) + +declare i8 @llvm.cttz.i8(i8) + +define void @cttztest(i8 %A, i16 %B, i32 %C, i64 %D, i8* %AP, i16* %BP, i32* %CP, i64* %DP) { + %a = call i8 @llvm.cttz.i8( i8 %A ) ; <i8> [#uses=1] + %b = call i16 @llvm.cttz.i16( i16 %B ) ; <i16> [#uses=1] + %c = call i32 @llvm.cttz.i32( i32 %C ) ; <i32> [#uses=1] + %d = call i64 @llvm.cttz.i64( i64 %D ) ; <i64> [#uses=1] + store i8 %a, i8* %AP + store i16 %b, i16* %BP + store i32 %c, i32* %CP + store i64 %d, i64* %DP + ret void +}
diff --git a/src/LLVM/test/CodeGen/Generic/multiple-return-values-cross-block-with-invoke.ll b/src/LLVM/test/CodeGen/Generic/multiple-return-values-cross-block-with-invoke.ll new file mode 100644 index 0000000..e709080 --- /dev/null +++ b/src/LLVM/test/CodeGen/Generic/multiple-return-values-cross-block-with-invoke.ll
@@ -0,0 +1,21 @@ +; RUN: llc < %s + +declare { i64, double } @wild() + +define void @foo(i64* %p, double* %q) nounwind { + %t = invoke { i64, double } @wild() to label %normal unwind label %handler + +normal: + %mrv_gr = extractvalue { i64, double } %t, 0 + store i64 %mrv_gr, i64* %p + %mrv_gr12681 = extractvalue { i64, double } %t, 1 + store double %mrv_gr12681, double* %q + ret void + +handler: + %exn = landingpad {i8*, i32} personality i32 (...)* @__gxx_personality_v0 + catch i8* null + ret void +} + +declare i32 @__gxx_personality_v0(...)
diff --git a/src/LLVM/test/CodeGen/Generic/negintconst.ll b/src/LLVM/test/CodeGen/Generic/negintconst.ll new file mode 100644 index 0000000..896872f --- /dev/null +++ b/src/LLVM/test/CodeGen/Generic/negintconst.ll
@@ -0,0 +1,47 @@ +; RUN: llc < %s + +; Test that a negative constant smaller than 64 bits (e.g., int) +; is correctly implemented with sign-extension. +; In particular, the current code generated is: +; +; main: +; .L_main_LL_0: +; save %o6, -224, %o6 +; setx .G_fmtArg_1, %o1, %o0 +; setuw 1, %o1 ! i = 1 +; setuw 4294967295, %o3 ! THE BUG: 0x00000000ffffffff +; setsw 0, %i0 +; add %i6, 1999, %o2 ! fval +; add %o1, %g0, %o1 +; add %o0, 0, %o0 +; mulx %o1, %o3, %o1 ! ERROR: 0xffffffff; should be -1 +; add %o1, 3, %o1 ! ERROR: 0x100000002; should be 0x2 +; mulx %o1, 12, %o3 ! +; add %o2, %o3, %o3 ! produces bad address! +; call printf +; nop +; jmpl %i7+8, %g0 +; restore %g0, 0, %g0 +; +; llc produces: +; ioff = 2 fval = 0xffffffff7fffec90 &fval[2] = 0xb7fffeca8 +; instead of: +; ioff = 2 fval = 0xffffffff7fffec90 &fval[2] = 0xffffffff7fffeca8 +; + %Results = type { float, float, float } +@fmtArg = internal global [39 x i8] c"ioff = %u\09fval = 0x%p\09&fval[2] = 0x%p\0A\00" ; <[39 x i8]*> [#uses=1] + +declare i32 @printf(i8*, ...) + +define i32 @main() { + %fval = alloca %Results, i32 4 ; <%Results*> [#uses=2] + %i = add i32 1, 0 ; <i32> [#uses=1] + %iscale = mul i32 %i, -1 ; <i32> [#uses=1] + %ioff = add i32 %iscale, 3 ; <i32> [#uses=2] + %ioff.upgrd.1 = zext i32 %ioff to i64 ; <i64> [#uses=1] + %fptr = getelementptr %Results* %fval, i64 %ioff.upgrd.1 ; <%Results*> [#uses=1] + %castFmt = getelementptr [39 x i8]* @fmtArg, i64 0, i64 0 ; <i8*> [#uses=1] + call i32 (i8*, ...)* @printf( i8* %castFmt, i32 %ioff, %Results* %fval, %Results* %fptr ) ; <i32>:1 [#uses=0] + ret i32 0 +} +
diff --git a/src/LLVM/test/CodeGen/Generic/nested-select.ll b/src/LLVM/test/CodeGen/Generic/nested-select.ll new file mode 100644 index 0000000..e079271 --- /dev/null +++ b/src/LLVM/test/CodeGen/Generic/nested-select.ll
@@ -0,0 +1,19 @@ +; RUN: llc < %s -o /dev/null + +; Test that select of a select works + +%typedef.tree = type opaque + +define i32 @ic_test(double %p.0.2.0.val, double %p.0.2.1.val, double %p.0.2.2.val, %typedef.tree* %t) { + %result.1.0 = zext i1 false to i32 ; <i32> [#uses=1] + %tmp.55 = fcmp oge double 0.000000e+00, 1.000000e+00 ; <i1> [#uses=1] + %tmp.66 = fdiv double 0.000000e+00, 0.000000e+00 ; <double> [#uses=1] + br label %N + +N: ; preds = %0 + %result.1.1 = select i1 %tmp.55, i32 0, i32 %result.1.0 ; <i32> [#uses=1] + %tmp.75 = fcmp oge double %tmp.66, 1.000000e+00 ; <i1> [#uses=1] + %retval1 = select i1 %tmp.75, i32 0, i32 %result.1.1 ; <i32> [#uses=1] + ret i32 %retval1 +} +
diff --git a/src/LLVM/test/CodeGen/Generic/overflow.ll b/src/LLVM/test/CodeGen/Generic/overflow.ll new file mode 100644 index 0000000..4196855 --- /dev/null +++ b/src/LLVM/test/CodeGen/Generic/overflow.ll
@@ -0,0 +1,220 @@ +; RUN: llc < %s +; Verify codegen's don't crash on overflow intrinsics. + +;; SADD + +define zeroext i8 @sadd_i8(i8 signext %a, i8 signext %b) nounwind ssp { +entry: + %sadd = tail call { i8, i1 } @llvm.sadd.with.overflow.i8(i8 %a, i8 %b) + %cmp = extractvalue { i8, i1 } %sadd, 1 + %sadd.result = extractvalue { i8, i1 } %sadd, 0 + %X = select i1 %cmp, i8 %sadd.result, i8 42 + ret i8 %X +} + +declare { i8, i1 } @llvm.sadd.with.overflow.i8(i8, i8) nounwind readnone + +define zeroext i16 @sadd_i16(i16 signext %a, i16 signext %b) nounwind ssp { +entry: + %sadd = tail call { i16, i1 } @llvm.sadd.with.overflow.i16(i16 %a, i16 %b) + %cmp = extractvalue { i16, i1 } %sadd, 1 + %sadd.result = extractvalue { i16, i1 } %sadd, 0 + %X = select i1 %cmp, i16 %sadd.result, i16 42 + ret i16 %X +} + +declare { i16, i1 } @llvm.sadd.with.overflow.i16(i16, i16) nounwind readnone + +define zeroext i32 @sadd_i32(i32 signext %a, i32 signext %b) nounwind ssp { +entry: + %sadd = tail call { i32, i1 } @llvm.sadd.with.overflow.i32(i32 %a, i32 %b) + %cmp = extractvalue { i32, i1 } %sadd, 1 + %sadd.result = extractvalue { i32, i1 } %sadd, 0 + %X = select i1 %cmp, i32 %sadd.result, i32 42 + ret i32 %X +} + +declare { i32, i1 } @llvm.sadd.with.overflow.i32(i32, i32) nounwind readnone + + +;; UADD + +define zeroext i8 @uadd_i8(i8 signext %a, i8 signext %b) nounwind ssp { +entry: + %uadd = tail call { i8, i1 } @llvm.uadd.with.overflow.i8(i8 %a, i8 %b) + %cmp = extractvalue { i8, i1 } %uadd, 1 + %uadd.result = extractvalue { i8, i1 } %uadd, 0 + %X = select i1 %cmp, i8 %uadd.result, i8 42 + ret i8 %X +} + +declare { i8, i1 } @llvm.uadd.with.overflow.i8(i8, i8) nounwind readnone + +define zeroext i16 @uadd_i16(i16 signext %a, i16 signext %b) nounwind ssp { +entry: + %uadd = tail call { i16, i1 } @llvm.uadd.with.overflow.i16(i16 %a, i16 %b) + %cmp = extractvalue { i16, i1 } %uadd, 1 + %uadd.result = extractvalue { i16, i1 } %uadd, 0 + %X = select i1 %cmp, i16 %uadd.result, i16 42 + ret i16 %X +} + +declare { i16, i1 } @llvm.uadd.with.overflow.i16(i16, i16) nounwind readnone + +define zeroext i32 @uadd_i32(i32 signext %a, i32 signext %b) nounwind ssp { +entry: + %uadd = tail call { i32, i1 } @llvm.uadd.with.overflow.i32(i32 %a, i32 %b) + %cmp = extractvalue { i32, i1 } %uadd, 1 + %uadd.result = extractvalue { i32, i1 } %uadd, 0 + %X = select i1 %cmp, i32 %uadd.result, i32 42 + ret i32 %X +} + +declare { i32, i1 } @llvm.uadd.with.overflow.i32(i32, i32) nounwind readnone + + + +;; ssub + +define zeroext i8 @ssub_i8(i8 signext %a, i8 signext %b) nounwind ssp { +entry: + %ssub = tail call { i8, i1 } @llvm.ssub.with.overflow.i8(i8 %a, i8 %b) + %cmp = extractvalue { i8, i1 } %ssub, 1 + %ssub.result = extractvalue { i8, i1 } %ssub, 0 + %X = select i1 %cmp, i8 %ssub.result, i8 42 + ret i8 %X +} + +declare { i8, i1 } @llvm.ssub.with.overflow.i8(i8, i8) nounwind readnone + +define zeroext i16 @ssub_i16(i16 signext %a, i16 signext %b) nounwind ssp { +entry: + %ssub = tail call { i16, i1 } @llvm.ssub.with.overflow.i16(i16 %a, i16 %b) + %cmp = extractvalue { i16, i1 } %ssub, 1 + %ssub.result = extractvalue { i16, i1 } %ssub, 0 + %X = select i1 %cmp, i16 %ssub.result, i16 42 + ret i16 %X +} + +declare { i16, i1 } @llvm.ssub.with.overflow.i16(i16, i16) nounwind readnone + +define zeroext i32 @ssub_i32(i32 signext %a, i32 signext %b) nounwind ssp { +entry: + %ssub = tail call { i32, i1 } @llvm.ssub.with.overflow.i32(i32 %a, i32 %b) + %cmp = extractvalue { i32, i1 } %ssub, 1 + %ssub.result = extractvalue { i32, i1 } %ssub, 0 + %X = select i1 %cmp, i32 %ssub.result, i32 42 + ret i32 %X +} + +declare { i32, i1 } @llvm.ssub.with.overflow.i32(i32, i32) nounwind readnone + + +;; usub + +define zeroext i8 @usub_i8(i8 signext %a, i8 signext %b) nounwind ssp { +entry: + %usub = tail call { i8, i1 } @llvm.usub.with.overflow.i8(i8 %a, i8 %b) + %cmp = extractvalue { i8, i1 } %usub, 1 + %usub.result = extractvalue { i8, i1 } %usub, 0 + %X = select i1 %cmp, i8 %usub.result, i8 42 + ret i8 %X +} + +declare { i8, i1 } @llvm.usub.with.overflow.i8(i8, i8) nounwind readnone + +define zeroext i16 @usub_i16(i16 signext %a, i16 signext %b) nounwind ssp { +entry: + %usub = tail call { i16, i1 } @llvm.usub.with.overflow.i16(i16 %a, i16 %b) + %cmp = extractvalue { i16, i1 } %usub, 1 + %usub.result = extractvalue { i16, i1 } %usub, 0 + %X = select i1 %cmp, i16 %usub.result, i16 42 + ret i16 %X +} + +declare { i16, i1 } @llvm.usub.with.overflow.i16(i16, i16) nounwind readnone + +define zeroext i32 @usub_i32(i32 signext %a, i32 signext %b) nounwind ssp { +entry: + %usub = tail call { i32, i1 } @llvm.usub.with.overflow.i32(i32 %a, i32 %b) + %cmp = extractvalue { i32, i1 } %usub, 1 + %usub.result = extractvalue { i32, i1 } %usub, 0 + %X = select i1 %cmp, i32 %usub.result, i32 42 + ret i32 %X +} + +declare { i32, i1 } @llvm.usub.with.overflow.i32(i32, i32) nounwind readnone + + + +;; smul + +define zeroext i8 @smul_i8(i8 signext %a, i8 signext %b) nounwind ssp { +entry: + %smul = tail call { i8, i1 } @llvm.smul.with.overflow.i8(i8 %a, i8 %b) + %cmp = extractvalue { i8, i1 } %smul, 1 + %smul.result = extractvalue { i8, i1 } %smul, 0 + %X = select i1 %cmp, i8 %smul.result, i8 42 + ret i8 %X +} + +declare { i8, i1 } @llvm.smul.with.overflow.i8(i8, i8) nounwind readnone + +define zeroext i16 @smul_i16(i16 signext %a, i16 signext %b) nounwind ssp { +entry: + %smul = tail call { i16, i1 } @llvm.smul.with.overflow.i16(i16 %a, i16 %b) + %cmp = extractvalue { i16, i1 } %smul, 1 + %smul.result = extractvalue { i16, i1 } %smul, 0 + %X = select i1 %cmp, i16 %smul.result, i16 42 + ret i16 %X +} + +declare { i16, i1 } @llvm.smul.with.overflow.i16(i16, i16) nounwind readnone + +define zeroext i32 @smul_i32(i32 signext %a, i32 signext %b) nounwind ssp { +entry: + %smul = tail call { i32, i1 } @llvm.smul.with.overflow.i32(i32 %a, i32 %b) + %cmp = extractvalue { i32, i1 } %smul, 1 + %smul.result = extractvalue { i32, i1 } %smul, 0 + %X = select i1 %cmp, i32 %smul.result, i32 42 + ret i32 %X +} + +declare { i32, i1 } @llvm.smul.with.overflow.i32(i32, i32) nounwind readnone + + +;; umul + +define zeroext i8 @umul_i8(i8 signext %a, i8 signext %b) nounwind ssp { +entry: + %umul = tail call { i8, i1 } @llvm.umul.with.overflow.i8(i8 %a, i8 %b) + %cmp = extractvalue { i8, i1 } %umul, 1 + %umul.result = extractvalue { i8, i1 } %umul, 0 + %X = select i1 %cmp, i8 %umul.result, i8 42 + ret i8 %X +} + +declare { i8, i1 } @llvm.umul.with.overflow.i8(i8, i8) nounwind readnone + +define zeroext i16 @umul_i16(i16 signext %a, i16 signext %b) nounwind ssp { +entry: + %umul = tail call { i16, i1 } @llvm.umul.with.overflow.i16(i16 %a, i16 %b) + %cmp = extractvalue { i16, i1 } %umul, 1 + %umul.result = extractvalue { i16, i1 } %umul, 0 + %X = select i1 %cmp, i16 %umul.result, i16 42 + ret i16 %X +} + +declare { i16, i1 } @llvm.umul.with.overflow.i16(i16, i16) nounwind readnone + +define zeroext i32 @umul_i32(i32 signext %a, i32 signext %b) nounwind ssp { +entry: + %umul = tail call { i32, i1 } @llvm.umul.with.overflow.i32(i32 %a, i32 %b) + %cmp = extractvalue { i32, i1 } %umul, 1 + %umul.result = extractvalue { i32, i1 } %umul, 0 + %X = select i1 %cmp, i32 %umul.result, i32 42 + ret i32 %X +} + +declare { i32, i1 } @llvm.umul.with.overflow.i32(i32, i32) nounwind readnone +
diff --git a/src/LLVM/test/CodeGen/Generic/pr2625.ll b/src/LLVM/test/CodeGen/Generic/pr2625.ll new file mode 100644 index 0000000..3e3dc4b --- /dev/null +++ b/src/LLVM/test/CodeGen/Generic/pr2625.ll
@@ -0,0 +1,17 @@ +; RUN: llc < %s +; PR2625 + +define i32 @main({ i32, { i32 } }*) { +entry: + %state = alloca { i32, { i32 } }* ; <{ i32, { i32 } }**> [#uses=2] + store { i32, { i32 } }* %0, { i32, { i32 } }** %state + %retval = alloca i32 ; <i32*> [#uses=2] + store i32 0, i32* %retval + load { i32, { i32 } }** %state ; <{ i32, { i32 } }*>:1 [#uses=1] + store { i32, { i32 } } zeroinitializer, { i32, { i32 } }* %1 + br label %return + +return: ; preds = %entry + load i32* %retval ; <i32>:2 [#uses=1] + ret i32 %2 +}
diff --git a/src/LLVM/test/CodeGen/Generic/pr3288.ll b/src/LLVM/test/CodeGen/Generic/pr3288.ll new file mode 100644 index 0000000..b62710f --- /dev/null +++ b/src/LLVM/test/CodeGen/Generic/pr3288.ll
@@ -0,0 +1,67 @@ +; RUN: llc < %s +; PR3288 + +define void @a() { + %i = insertvalue [2 x [2 x i32]] undef, [2 x i32] undef, 1 + ret void +} +define void @b() { + %i = insertvalue {{i32,float},{i16,double}} undef, {i16,double} undef, 1 + ret void +} +define void @c() { + %i = insertvalue [2 x [2 x i32]] zeroinitializer, [2 x i32] zeroinitializer, 1 + ret void +} +define void @d() { + %i = insertvalue {{i32,float},{i16,double}} zeroinitializer, {i16,double} zeroinitializer, 1 + ret void +} +define void @e() { + %i = insertvalue [2 x [2 x i32]] undef, [2 x i32] undef, 0 + ret void +} +define void @f() { + %i = insertvalue {{i32,float},{i16,double}} undef, {i32,float} undef, 0 + ret void +} +define void @g() { + %i = insertvalue [2 x [2 x i32]] zeroinitializer, [2 x i32] zeroinitializer, 0 + ret void +} +define void @h() { + %i = insertvalue {{i32,float},{i16,double}} zeroinitializer, {i32,float} zeroinitializer, 0 + ret void +} +define void @ax() { + %i = insertvalue [2 x [2 x i32]] undef, i32 undef, 1, 1 + ret void +} +define void @bx() { + %i = insertvalue {{i32,float},{i16,double}} undef, double undef, 1, 1 + ret void +} +define void @cx() { + %i = insertvalue [2 x [2 x i32]] zeroinitializer, i32 zeroinitializer, 1, 1 + ret void +} +define void @dx() { + %i = insertvalue {{i32,float},{i16,double}} zeroinitializer, double zeroinitializer, 1, 1 + ret void +} +define void @ex() { + %i = insertvalue [2 x [2 x i32]] undef, i32 undef, 0, 1 + ret void +} +define void @fx() { + %i = insertvalue {{i32,float},{i16,double}} undef, float undef, 0, 1 + ret void +} +define void @gx() { + %i = insertvalue [2 x [2 x i32]] zeroinitializer, i32 zeroinitializer, 0, 1 + ret void +} +define void @hx() { + %i = insertvalue {{i32,float},{i16,double}} zeroinitializer, float zeroinitializer, 0, 1 + ret void +}
diff --git a/src/LLVM/test/CodeGen/Generic/print-add.ll b/src/LLVM/test/CodeGen/Generic/print-add.ll new file mode 100644 index 0000000..81e136d --- /dev/null +++ b/src/LLVM/test/CodeGen/Generic/print-add.ll
@@ -0,0 +1,18 @@ +; RUN: llc < %s + +@.str_1 = internal constant [4 x i8] c"%d\0A\00" ; <[4 x i8]*> [#uses=1] + +declare i32 @printf(i8*, ...) + +define i32 @main() { + %f = getelementptr [4 x i8]* @.str_1, i64 0, i64 0 ; <i8*> [#uses=3] + %d = add i32 1, 0 ; <i32> [#uses=3] + call i32 (i8*, ...)* @printf( i8* %f, i32 %d ) ; <i32>:1 [#uses=0] + %e = add i32 38, 2 ; <i32> [#uses=2] + call i32 (i8*, ...)* @printf( i8* %f, i32 %e ) ; <i32>:2 [#uses=0] + %g = add i32 %d, %d ; <i32> [#uses=1] + %h = add i32 %e, %g ; <i32> [#uses=1] + call i32 (i8*, ...)* @printf( i8* %f, i32 %h ) ; <i32>:3 [#uses=0] + ret i32 0 +} +
diff --git a/src/LLVM/test/CodeGen/Generic/print-arith-fp.ll b/src/LLVM/test/CodeGen/Generic/print-arith-fp.ll new file mode 100644 index 0000000..7f69808 --- /dev/null +++ b/src/LLVM/test/CodeGen/Generic/print-arith-fp.ll
@@ -0,0 +1,61 @@ +; RUN: llc < %s +@a_str = internal constant [8 x i8] c"a = %f\0A\00" ; <[8 x i8]*> [#uses=1] +@b_str = internal constant [8 x i8] c"b = %f\0A\00" ; <[8 x i8]*> [#uses=1] +@add_str = internal constant [12 x i8] c"a + b = %f\0A\00" ; <[12 x i8]*> [#uses=1] +@sub_str = internal constant [12 x i8] c"a - b = %f\0A\00" ; <[12 x i8]*> [#uses=1] +@mul_str = internal constant [12 x i8] c"a * b = %f\0A\00" ; <[12 x i8]*> [#uses=1] +@div_str = internal constant [12 x i8] c"b / a = %f\0A\00" ; <[12 x i8]*> [#uses=1] +@rem_str = internal constant [13 x i8] c"b %% a = %f\0A\00" ; <[13 x i8]*> [#uses=1] +@lt_str = internal constant [12 x i8] c"a < b = %d\0A\00" ; <[12 x i8]*> [#uses=1] +@le_str = internal constant [13 x i8] c"a <= b = %d\0A\00" ; <[13 x i8]*> [#uses=1] +@gt_str = internal constant [12 x i8] c"a > b = %d\0A\00" ; <[12 x i8]*> [#uses=1] +@ge_str = internal constant [13 x i8] c"a >= b = %d\0A\00" ; <[13 x i8]*> [#uses=1] +@eq_str = internal constant [13 x i8] c"a == b = %d\0A\00" ; <[13 x i8]*> [#uses=1] +@ne_str = internal constant [13 x i8] c"a != b = %d\0A\00" ; <[13 x i8]*> [#uses=1] +@A = global double 2.000000e+00 ; <double*> [#uses=1] +@B = global double 5.000000e+00 ; <double*> [#uses=1] + +declare i32 @printf(i8*, ...) + +define i32 @main() { + %a = load double* @A ; <double> [#uses=12] + %b = load double* @B ; <double> [#uses=12] + %a_s = getelementptr [8 x i8]* @a_str, i64 0, i64 0 ; <i8*> [#uses=1] + %b_s = getelementptr [8 x i8]* @b_str, i64 0, i64 0 ; <i8*> [#uses=1] + call i32 (i8*, ...)* @printf( i8* %a_s, double %a ) ; <i32>:1 [#uses=0] + call i32 (i8*, ...)* @printf( i8* %b_s, double %b ) ; <i32>:2 [#uses=0] + %add_r = fadd double %a, %b ; <double> [#uses=1] + %sub_r = fsub double %a, %b ; <double> [#uses=1] + %mul_r = fmul double %a, %b ; <double> [#uses=1] + %div_r = fdiv double %b, %a ; <double> [#uses=1] + %rem_r = frem double %b, %a ; <double> [#uses=1] + %add_s = getelementptr [12 x i8]* @add_str, i64 0, i64 0 ; <i8*> [#uses=1] + %sub_s = getelementptr [12 x i8]* @sub_str, i64 0, i64 0 ; <i8*> [#uses=1] + %mul_s = getelementptr [12 x i8]* @mul_str, i64 0, i64 0 ; <i8*> [#uses=1] + %div_s = getelementptr [12 x i8]* @div_str, i64 0, i64 0 ; <i8*> [#uses=1] + %rem_s = getelementptr [13 x i8]* @rem_str, i64 0, i64 0 ; <i8*> [#uses=1] + call i32 (i8*, ...)* @printf( i8* %add_s, double %add_r ) ; <i32>:3 [#uses=0] + call i32 (i8*, ...)* @printf( i8* %sub_s, double %sub_r ) ; <i32>:4 [#uses=0] + call i32 (i8*, ...)* @printf( i8* %mul_s, double %mul_r ) ; <i32>:5 [#uses=0] + call i32 (i8*, ...)* @printf( i8* %div_s, double %div_r ) ; <i32>:6 [#uses=0] + call i32 (i8*, ...)* @printf( i8* %rem_s, double %rem_r ) ; <i32>:7 [#uses=0] + %lt_r = fcmp olt double %a, %b ; <i1> [#uses=1] + %le_r = fcmp ole double %a, %b ; <i1> [#uses=1] + %gt_r = fcmp ogt double %a, %b ; <i1> [#uses=1] + %ge_r = fcmp oge double %a, %b ; <i1> [#uses=1] + %eq_r = fcmp oeq double %a, %b ; <i1> [#uses=1] + %ne_r = fcmp une double %a, %b ; <i1> [#uses=1] + %lt_s = getelementptr [12 x i8]* @lt_str, i64 0, i64 0 ; <i8*> [#uses=1] + %le_s = getelementptr [13 x i8]* @le_str, i64 0, i64 0 ; <i8*> [#uses=1] + %gt_s = getelementptr [12 x i8]* @gt_str, i64 0, i64 0 ; <i8*> [#uses=1] + %ge_s = getelementptr [13 x i8]* @ge_str, i64 0, i64 0 ; <i8*> [#uses=1] + %eq_s = getelementptr [13 x i8]* @eq_str, i64 0, i64 0 ; <i8*> [#uses=1] + %ne_s = getelementptr [13 x i8]* @ne_str, i64 0, i64 0 ; <i8*> [#uses=1] + call i32 (i8*, ...)* @printf( i8* %lt_s, i1 %lt_r ) ; <i32>:8 [#uses=0] + call i32 (i8*, ...)* @printf( i8* %le_s, i1 %le_r ) ; <i32>:9 [#uses=0] + call i32 (i8*, ...)* @printf( i8* %gt_s, i1 %gt_r ) ; <i32>:10 [#uses=0] + call i32 (i8*, ...)* @printf( i8* %ge_s, i1 %ge_r ) ; <i32>:11 [#uses=0] + call i32 (i8*, ...)* @printf( i8* %eq_s, i1 %eq_r ) ; <i32>:12 [#uses=0] + call i32 (i8*, ...)* @printf( i8* %ne_s, i1 %ne_r ) ; <i32>:13 [#uses=0] + ret i32 0 +}
diff --git a/src/LLVM/test/CodeGen/Generic/print-arith-int.ll b/src/LLVM/test/CodeGen/Generic/print-arith-int.ll new file mode 100644 index 0000000..d51b9eb --- /dev/null +++ b/src/LLVM/test/CodeGen/Generic/print-arith-int.ll
@@ -0,0 +1,84 @@ +; RUN: llc < %s +@a_str = internal constant [8 x i8] c"a = %d\0A\00" ; <[8 x i8]*> [#uses=1] +@b_str = internal constant [8 x i8] c"b = %d\0A\00" ; <[8 x i8]*> [#uses=1] +@add_str = internal constant [12 x i8] c"a + b = %d\0A\00" ; <[12 x i8]*> [#uses=1] +@sub_str = internal constant [12 x i8] c"a - b = %d\0A\00" ; <[12 x i8]*> [#uses=1] +@mul_str = internal constant [12 x i8] c"a * b = %d\0A\00" ; <[12 x i8]*> [#uses=1] +@div_str = internal constant [12 x i8] c"b / a = %d\0A\00" ; <[12 x i8]*> [#uses=1] +@rem_str = internal constant [13 x i8] c"b \5C% a = %d\0A\00" ; <[13 x i8]*> [#uses=1] +@lt_str = internal constant [12 x i8] c"a < b = %d\0A\00" ; <[12 x i8]*> [#uses=1] +@le_str = internal constant [13 x i8] c"a <= b = %d\0A\00" ; <[13 x i8]*> [#uses=1] +@gt_str = internal constant [12 x i8] c"a > b = %d\0A\00" ; <[12 x i8]*> [#uses=1] +@ge_str = internal constant [13 x i8] c"a >= b = %d\0A\00" ; <[13 x i8]*> [#uses=1] +@eq_str = internal constant [13 x i8] c"a == b = %d\0A\00" ; <[13 x i8]*> [#uses=1] +@ne_str = internal constant [13 x i8] c"a != b = %d\0A\00" ; <[13 x i8]*> [#uses=1] +@and_str = internal constant [12 x i8] c"a & b = %d\0A\00" ; <[12 x i8]*> [#uses=1] +@or_str = internal constant [12 x i8] c"a | b = %d\0A\00" ; <[12 x i8]*> [#uses=1] +@xor_str = internal constant [12 x i8] c"a ^ b = %d\0A\00" ; <[12 x i8]*> [#uses=1] +@shl_str = internal constant [13 x i8] c"b << a = %d\0A\00" ; <[13 x i8]*> [#uses=1] +@shr_str = internal constant [13 x i8] c"b >> a = %d\0A\00" ; <[13 x i8]*> [#uses=1] +@A = global i32 2 ; <i32*> [#uses=1] +@B = global i32 5 ; <i32*> [#uses=1] + +declare i32 @printf(i8*, ...) + +define i32 @main() { + %a = load i32* @A ; <i32> [#uses=16] + %b = load i32* @B ; <i32> [#uses=17] + %a_s = getelementptr [8 x i8]* @a_str, i64 0, i64 0 ; <i8*> [#uses=1] + %b_s = getelementptr [8 x i8]* @b_str, i64 0, i64 0 ; <i8*> [#uses=1] + call i32 (i8*, ...)* @printf( i8* %a_s, i32 %a ) ; <i32>:1 [#uses=0] + call i32 (i8*, ...)* @printf( i8* %b_s, i32 %b ) ; <i32>:2 [#uses=0] + %add_r = add i32 %a, %b ; <i32> [#uses=1] + %sub_r = sub i32 %a, %b ; <i32> [#uses=1] + %mul_r = mul i32 %a, %b ; <i32> [#uses=1] + %div_r = sdiv i32 %b, %a ; <i32> [#uses=1] + %rem_r = srem i32 %b, %a ; <i32> [#uses=1] + %add_s = getelementptr [12 x i8]* @add_str, i64 0, i64 0 ; <i8*> [#uses=1] + %sub_s = getelementptr [12 x i8]* @sub_str, i64 0, i64 0 ; <i8*> [#uses=1] + %mul_s = getelementptr [12 x i8]* @mul_str, i64 0, i64 0 ; <i8*> [#uses=1] + %div_s = getelementptr [12 x i8]* @div_str, i64 0, i64 0 ; <i8*> [#uses=1] + %rem_s = getelementptr [13 x i8]* @rem_str, i64 0, i64 0 ; <i8*> [#uses=1] + call i32 (i8*, ...)* @printf( i8* %add_s, i32 %add_r ) ; <i32>:3 [#uses=0] + call i32 (i8*, ...)* @printf( i8* %sub_s, i32 %sub_r ) ; <i32>:4 [#uses=0] + call i32 (i8*, ...)* @printf( i8* %mul_s, i32 %mul_r ) ; <i32>:5 [#uses=0] + call i32 (i8*, ...)* @printf( i8* %div_s, i32 %div_r ) ; <i32>:6 [#uses=0] + call i32 (i8*, ...)* @printf( i8* %rem_s, i32 %rem_r ) ; <i32>:7 [#uses=0] + %lt_r = icmp slt i32 %a, %b ; <i1> [#uses=1] + %le_r = icmp sle i32 %a, %b ; <i1> [#uses=1] + %gt_r = icmp sgt i32 %a, %b ; <i1> [#uses=1] + %ge_r = icmp sge i32 %a, %b ; <i1> [#uses=1] + %eq_r = icmp eq i32 %a, %b ; <i1> [#uses=1] + %ne_r = icmp ne i32 %a, %b ; <i1> [#uses=1] + %lt_s = getelementptr [12 x i8]* @lt_str, i64 0, i64 0 ; <i8*> [#uses=1] + %le_s = getelementptr [13 x i8]* @le_str, i64 0, i64 0 ; <i8*> [#uses=1] + %gt_s = getelementptr [12 x i8]* @gt_str, i64 0, i64 0 ; <i8*> [#uses=1] + %ge_s = getelementptr [13 x i8]* @ge_str, i64 0, i64 0 ; <i8*> [#uses=1] + %eq_s = getelementptr [13 x i8]* @eq_str, i64 0, i64 0 ; <i8*> [#uses=1] + %ne_s = getelementptr [13 x i8]* @ne_str, i64 0, i64 0 ; <i8*> [#uses=1] + call i32 (i8*, ...)* @printf( i8* %lt_s, i1 %lt_r ) ; <i32>:8 [#uses=0] + call i32 (i8*, ...)* @printf( i8* %le_s, i1 %le_r ) ; <i32>:9 [#uses=0] + call i32 (i8*, ...)* @printf( i8* %gt_s, i1 %gt_r ) ; <i32>:10 [#uses=0] + call i32 (i8*, ...)* @printf( i8* %ge_s, i1 %ge_r ) ; <i32>:11 [#uses=0] + call i32 (i8*, ...)* @printf( i8* %eq_s, i1 %eq_r ) ; <i32>:12 [#uses=0] + call i32 (i8*, ...)* @printf( i8* %ne_s, i1 %ne_r ) ; <i32>:13 [#uses=0] + %and_r = and i32 %a, %b ; <i32> [#uses=1] + %or_r = or i32 %a, %b ; <i32> [#uses=1] + %xor_r = xor i32 %a, %b ; <i32> [#uses=1] + %u = trunc i32 %a to i8 ; <i8> [#uses=2] + %shift.upgrd.1 = zext i8 %u to i32 ; <i32> [#uses=1] + %shl_r = shl i32 %b, %shift.upgrd.1 ; <i32> [#uses=1] + %shift.upgrd.2 = zext i8 %u to i32 ; <i32> [#uses=1] + %shr_r = ashr i32 %b, %shift.upgrd.2 ; <i32> [#uses=1] + %and_s = getelementptr [12 x i8]* @and_str, i64 0, i64 0 ; <i8*> [#uses=1] + %or_s = getelementptr [12 x i8]* @or_str, i64 0, i64 0 ; <i8*> [#uses=1] + %xor_s = getelementptr [12 x i8]* @xor_str, i64 0, i64 0 ; <i8*> [#uses=1] + %shl_s = getelementptr [13 x i8]* @shl_str, i64 0, i64 0 ; <i8*> [#uses=1] + %shr_s = getelementptr [13 x i8]* @shr_str, i64 0, i64 0 ; <i8*> [#uses=1] + call i32 (i8*, ...)* @printf( i8* %and_s, i32 %and_r ) ; <i32>:14 [#uses=0] + call i32 (i8*, ...)* @printf( i8* %or_s, i32 %or_r ) ; <i32>:15 [#uses=0] + call i32 (i8*, ...)* @printf( i8* %xor_s, i32 %xor_r ) ; <i32>:16 [#uses=0] + call i32 (i8*, ...)* @printf( i8* %shl_s, i32 %shl_r ) ; <i32>:17 [#uses=0] + call i32 (i8*, ...)* @printf( i8* %shr_s, i32 %shr_r ) ; <i32>:18 [#uses=0] + ret i32 0 +}
diff --git a/src/LLVM/test/CodeGen/Generic/print-int.ll b/src/LLVM/test/CodeGen/Generic/print-int.ll new file mode 100644 index 0000000..f252b4d --- /dev/null +++ b/src/LLVM/test/CodeGen/Generic/print-int.ll
@@ -0,0 +1,13 @@ +; RUN: llc < %s + +@.str_1 = internal constant [4 x i8] c"%d\0A\00" ; <[4 x i8]*> [#uses=1] + +declare i32 @printf(i8*, ...) + +define i32 @main() { + %f = getelementptr [4 x i8]* @.str_1, i64 0, i64 0 ; <i8*> [#uses=1] + %d = add i32 0, 0 ; <i32> [#uses=1] + %tmp.0 = call i32 (i8*, ...)* @printf( i8* %f, i32 %d ) ; <i32> [#uses=0] + ret i32 0 +} +
diff --git a/src/LLVM/test/CodeGen/Generic/print-mul-exp.ll b/src/LLVM/test/CodeGen/Generic/print-mul-exp.ll new file mode 100644 index 0000000..5441849 --- /dev/null +++ b/src/LLVM/test/CodeGen/Generic/print-mul-exp.ll
@@ -0,0 +1,55 @@ +; RUN: llc < %s + +@a_str = internal constant [8 x i8] c"a = %d\0A\00" ; <[8 x i8]*> [#uses=1] +@a_mul_str = internal constant [13 x i8] c"a * %d = %d\0A\00" ; <[13 x i8]*> [#uses=1] +@A = global i32 2 ; <i32*> [#uses=1] + +declare i32 @printf(i8*, ...) + +define i32 @main() { + %a = load i32* @A ; <i32> [#uses=21] + %a_s = getelementptr [8 x i8]* @a_str, i64 0, i64 0 ; <i8*> [#uses=1] + %a_mul_s = getelementptr [13 x i8]* @a_mul_str, i64 0, i64 0 ; <i8*> [#uses=20] + call i32 (i8*, ...)* @printf( i8* %a_s, i32 %a ) ; <i32>:1 [#uses=0] + %r_0 = mul i32 %a, 0 ; <i32> [#uses=1] + %r_1 = mul i32 %a, 1 ; <i32> [#uses=1] + %r_2 = mul i32 %a, 2 ; <i32> [#uses=1] + %r_3 = mul i32 %a, 3 ; <i32> [#uses=1] + %r_4 = mul i32 %a, 4 ; <i32> [#uses=1] + %r_5 = mul i32 %a, 5 ; <i32> [#uses=1] + %r_6 = mul i32 %a, 6 ; <i32> [#uses=1] + %r_7 = mul i32 %a, 7 ; <i32> [#uses=1] + %r_8 = mul i32 %a, 8 ; <i32> [#uses=1] + %r_9 = mul i32 %a, 9 ; <i32> [#uses=1] + %r_10 = mul i32 %a, 10 ; <i32> [#uses=1] + %r_11 = mul i32 %a, 11 ; <i32> [#uses=1] + %r_12 = mul i32 %a, 12 ; <i32> [#uses=1] + %r_13 = mul i32 %a, 13 ; <i32> [#uses=1] + %r_14 = mul i32 %a, 14 ; <i32> [#uses=1] + %r_15 = mul i32 %a, 15 ; <i32> [#uses=1] + %r_16 = mul i32 %a, 16 ; <i32> [#uses=1] + %r_17 = mul i32 %a, 17 ; <i32> [#uses=1] + %r_18 = mul i32 %a, 18 ; <i32> [#uses=1] + %r_19 = mul i32 %a, 19 ; <i32> [#uses=1] + call i32 (i8*, ...)* @printf( i8* %a_mul_s, i32 0, i32 %r_0 ) ; <i32>:2 [#uses=0] + call i32 (i8*, ...)* @printf( i8* %a_mul_s, i32 1, i32 %r_1 ) ; <i32>:3 [#uses=0] + call i32 (i8*, ...)* @printf( i8* %a_mul_s, i32 2, i32 %r_2 ) ; <i32>:4 [#uses=0] + call i32 (i8*, ...)* @printf( i8* %a_mul_s, i32 3, i32 %r_3 ) ; <i32>:5 [#uses=0] + call i32 (i8*, ...)* @printf( i8* %a_mul_s, i32 4, i32 %r_4 ) ; <i32>:6 [#uses=0] + call i32 (i8*, ...)* @printf( i8* %a_mul_s, i32 5, i32 %r_5 ) ; <i32>:7 [#uses=0] + call i32 (i8*, ...)* @printf( i8* %a_mul_s, i32 6, i32 %r_6 ) ; <i32>:8 [#uses=0] + call i32 (i8*, ...)* @printf( i8* %a_mul_s, i32 7, i32 %r_7 ) ; <i32>:9 [#uses=0] + call i32 (i8*, ...)* @printf( i8* %a_mul_s, i32 8, i32 %r_8 ) ; <i32>:10 [#uses=0] + call i32 (i8*, ...)* @printf( i8* %a_mul_s, i32 9, i32 %r_9 ) ; <i32>:11 [#uses=0] + call i32 (i8*, ...)* @printf( i8* %a_mul_s, i32 10, i32 %r_10 ) ; <i32>:12 [#uses=0] + call i32 (i8*, ...)* @printf( i8* %a_mul_s, i32 11, i32 %r_11 ) ; <i32>:13 [#uses=0] + call i32 (i8*, ...)* @printf( i8* %a_mul_s, i32 12, i32 %r_12 ) ; <i32>:14 [#uses=0] + call i32 (i8*, ...)* @printf( i8* %a_mul_s, i32 13, i32 %r_13 ) ; <i32>:15 [#uses=0] + call i32 (i8*, ...)* @printf( i8* %a_mul_s, i32 14, i32 %r_14 ) ; <i32>:16 [#uses=0] + call i32 (i8*, ...)* @printf( i8* %a_mul_s, i32 15, i32 %r_15 ) ; <i32>:17 [#uses=0] + call i32 (i8*, ...)* @printf( i8* %a_mul_s, i32 16, i32 %r_16 ) ; <i32>:18 [#uses=0] + call i32 (i8*, ...)* @printf( i8* %a_mul_s, i32 17, i32 %r_17 ) ; <i32>:19 [#uses=0] + call i32 (i8*, ...)* @printf( i8* %a_mul_s, i32 18, i32 %r_18 ) ; <i32>:20 [#uses=0] + call i32 (i8*, ...)* @printf( i8* %a_mul_s, i32 19, i32 %r_19 ) ; <i32>:21 [#uses=0] + ret i32 0 +}
diff --git a/src/LLVM/test/CodeGen/Generic/print-mul.ll b/src/LLVM/test/CodeGen/Generic/print-mul.ll new file mode 100644 index 0000000..d37b360 --- /dev/null +++ b/src/LLVM/test/CodeGen/Generic/print-mul.ll
@@ -0,0 +1,32 @@ +; RUN: llc < %s + +@a_str = internal constant [8 x i8] c"a = %d\0A\00" ; <[8 x i8]*> [#uses=1] +@b_str = internal constant [8 x i8] c"b = %d\0A\00" ; <[8 x i8]*> [#uses=1] +@a_mul_str = internal constant [13 x i8] c"a * %d = %d\0A\00" ; <[13 x i8]*> [#uses=1] +@A = global i32 2 ; <i32*> [#uses=1] +@B = global i32 5 ; <i32*> [#uses=1] + +declare i32 @printf(i8*, ...) + +define i32 @main() { +entry: + %a = load i32* @A ; <i32> [#uses=2] + %b = load i32* @B ; <i32> [#uses=1] + %a_s = getelementptr [8 x i8]* @a_str, i64 0, i64 0 ; <i8*> [#uses=1] + %b_s = getelementptr [8 x i8]* @b_str, i64 0, i64 0 ; <i8*> [#uses=1] + %a_mul_s = getelementptr [13 x i8]* @a_mul_str, i64 0, i64 0 ; <i8*> [#uses=1] + call i32 (i8*, ...)* @printf( i8* %a_s, i32 %a ) ; <i32>:0 [#uses=0] + call i32 (i8*, ...)* @printf( i8* %b_s, i32 %b ) ; <i32>:1 [#uses=0] + br label %shl_test + +shl_test: ; preds = %shl_test, %entry + %s = phi i32 [ 0, %entry ], [ %s_inc, %shl_test ] ; <i32> [#uses=4] + %result = mul i32 %a, %s ; <i32> [#uses=1] + call i32 (i8*, ...)* @printf( i8* %a_mul_s, i32 %s, i32 %result ) ; <i32>:2 [#uses=0] + %s_inc = add i32 %s, 1 ; <i32> [#uses=1] + %done = icmp eq i32 %s, 256 ; <i1> [#uses=1] + br i1 %done, label %fini, label %shl_test + +fini: ; preds = %shl_test + ret i32 0 +}
diff --git a/src/LLVM/test/CodeGen/Generic/print-shift.ll b/src/LLVM/test/CodeGen/Generic/print-shift.ll new file mode 100644 index 0000000..06866f3 --- /dev/null +++ b/src/LLVM/test/CodeGen/Generic/print-shift.ll
@@ -0,0 +1,34 @@ +; RUN: llc < %s + +@a_str = internal constant [8 x i8] c"a = %d\0A\00" ; <[8 x i8]*> [#uses=1] +@b_str = internal constant [8 x i8] c"b = %d\0A\00" ; <[8 x i8]*> [#uses=1] +@a_shl_str = internal constant [14 x i8] c"a << %d = %d\0A\00" ; <[14 x i8]*> [#uses=1] +@A = global i32 2 ; <i32*> [#uses=1] +@B = global i32 5 ; <i32*> [#uses=1] + +declare i32 @printf(i8*, ...) + +define i32 @main() { +entry: + %a = load i32* @A ; <i32> [#uses=2] + %b = load i32* @B ; <i32> [#uses=1] + %a_s = getelementptr [8 x i8]* @a_str, i64 0, i64 0 ; <i8*> [#uses=1] + %b_s = getelementptr [8 x i8]* @b_str, i64 0, i64 0 ; <i8*> [#uses=1] + %a_shl_s = getelementptr [14 x i8]* @a_shl_str, i64 0, i64 0 ; <i8*> [#uses=1] + call i32 (i8*, ...)* @printf( i8* %a_s, i32 %a ) ; <i32>:0 [#uses=0] + call i32 (i8*, ...)* @printf( i8* %b_s, i32 %b ) ; <i32>:1 [#uses=0] + br label %shl_test + +shl_test: ; preds = %shl_test, %entry + %s = phi i8 [ 0, %entry ], [ %s_inc, %shl_test ] ; <i8> [#uses=4] + %shift.upgrd.1 = zext i8 %s to i32 ; <i32> [#uses=1] + %result = shl i32 %a, %shift.upgrd.1 ; <i32> [#uses=1] + call i32 (i8*, ...)* @printf( i8* %a_shl_s, i8 %s, i32 %result ) ; <i32>:2 [#uses=0] + %s_inc = add i8 %s, 1 ; <i8> [#uses=1] + %done = icmp eq i8 %s, 32 ; <i1> [#uses=1] + br i1 %done, label %fini, label %shl_test + +fini: ; preds = %shl_test + ret i32 0 +} +
diff --git a/src/LLVM/test/CodeGen/Generic/ret0.ll b/src/LLVM/test/CodeGen/Generic/ret0.ll new file mode 100644 index 0000000..1da4375 --- /dev/null +++ b/src/LLVM/test/CodeGen/Generic/ret0.ll
@@ -0,0 +1,5 @@ +; RUN: llc < %s + +define i32 @main() { + ret i32 0 +}
diff --git a/src/LLVM/test/CodeGen/Generic/ret42.ll b/src/LLVM/test/CodeGen/Generic/ret42.ll new file mode 100644 index 0000000..587de2f --- /dev/null +++ b/src/LLVM/test/CodeGen/Generic/ret42.ll
@@ -0,0 +1,5 @@ +; RUN: llc < %s + +define i32 @main() { + ret i32 42 +}
diff --git a/src/LLVM/test/CodeGen/Generic/select-cc.ll b/src/LLVM/test/CodeGen/Generic/select-cc.ll new file mode 100644 index 0000000..b653e2a --- /dev/null +++ b/src/LLVM/test/CodeGen/Generic/select-cc.ll
@@ -0,0 +1,9 @@ +; RUN: llc < %s +; PR2504 + +define <2 x double> @vector_select(<2 x double> %x, <2 x double> %y) nounwind { + %x.lo = extractelement <2 x double> %x, i32 0 ; <double> [#uses=1] + %x.lo.ge = fcmp oge double %x.lo, 0.000000e+00 ; <i1> [#uses=1] + %a.d = select i1 %x.lo.ge, <2 x double> %y, <2 x double> %x ; <<2 x double>> [#uses=1] + ret <2 x double> %a.d +}
diff --git a/src/LLVM/test/CodeGen/Generic/select.ll b/src/LLVM/test/CodeGen/Generic/select.ll new file mode 100644 index 0000000..7ef63d5 --- /dev/null +++ b/src/LLVM/test/CodeGen/Generic/select.ll
@@ -0,0 +1,187 @@ +; RUN: llc < %s + +%Domain = type { i8*, i32, i32*, i32, i32, i32*, %Domain* } +@AConst = constant i32 123 ; <i32*> [#uses=1] + +; Test setting values of different constants in registers. +; +define void @testConsts(i32 %N, float %X) { + %a = add i32 %N, 1 ; <i32> [#uses=0] + %i = add i32 %N, 12345678 ; <i32> [#uses=0] + %b = add i16 4, 3 ; <i16> [#uses=0] + %c = fadd float %X, 0.000000e+00 ; <float> [#uses=0] + %d = fadd float %X, 0x400921CAC0000000 ; <float> [#uses=0] + %f = add i32 -1, 10 ; <i32> [#uses=0] + %g = add i16 20, -1 ; <i16> [#uses=0] + %j = add i16 -1, 30 ; <i16> [#uses=0] + %h = add i8 40, -1 ; <i8> [#uses=0] + %k = add i8 -1, 50 ; <i8> [#uses=0] + ret void +} + +; A SetCC whose result is used should produce instructions to +; compute the boolean value in a register. One whose result +; is unused will only generate the condition code but not +; the boolean result. +; +define void @unusedBool(i32* %x, i32* %y) { + icmp eq i32* %x, %y ; <i1>:1 [#uses=1] + xor i1 %1, true ; <i1>:2 [#uses=0] + icmp ne i32* %x, %y ; <i1>:3 [#uses=0] + ret void +} + +; A constant argument to a Phi produces a Cast instruction in the +; corresponding predecessor basic block. This checks a few things: +; -- phi arguments coming from the bottom of the same basic block +; (they should not be forward substituted in the machine code!) +; -- code generation for casts of various types +; -- use of immediate fields for integral constants of different sizes +; -- branch on a constant condition +; +define void @mergeConstants(i32* %x, i32* %y) { +; <label>:0 + br label %Top + +Top: ; preds = %Next, %Top, %0 + phi i32 [ 0, %0 ], [ 1, %Top ], [ 524288, %Next ] ; <i32>:1 [#uses=0] + phi float [ 0.000000e+00, %0 ], [ 1.000000e+00, %Top ], [ 2.000000e+00, %Next ] ; <float>:2 [#uses=0] + phi double [ 5.000000e-01, %0 ], [ 1.500000e+00, %Top ], [ 2.500000e+00, %Next ] + phi i1 [ true, %0 ], [ false, %Top ], [ true, %Next ] ; <i1>:4 [#uses=0] + br i1 true, label %Top, label %Next + +Next: ; preds = %Top + br label %Top +} + + + +; A constant argument to a cast used only once should be forward substituted +; and loaded where needed, which happens is: +; -- User of cast has no immediate field +; -- User of cast has immediate field but constant is too large to fit +; or constant is not resolved until later (e.g., global address) +; -- User of cast uses it as a call arg. or return value so it is an implicit +; use but has to be loaded into a virtual register so that the reg. +; allocator can allocate the appropriate phys. reg. for it +; +define i32* @castconst(float) { + %castbig = trunc i64 99999999 to i32 ; <i32> [#uses=1] + %castsmall = trunc i64 1 to i32 ; <i32> [#uses=1] + %usebig = add i32 %castbig, %castsmall ; <i32> [#uses=0] + %castglob = bitcast i32* @AConst to i64* ; <i64*> [#uses=1] + %dummyl = load i64* %castglob ; <i64> [#uses=0] + %castnull = inttoptr i64 0 to i32* ; <i32*> [#uses=1] + ret i32* %castnull +} + +; Test branch-on-comparison-with-zero, in two ways: +; 1. can be folded +; 2. cannot be folded because result of comparison is used twice +; +define void @testbool(i32 %A, i32 %B) { + br label %Top + +Top: ; preds = %loop, %0 + %D = add i32 %A, %B ; <i32> [#uses=2] + %E = sub i32 %D, -4 ; <i32> [#uses=1] + %C = icmp sle i32 %E, 0 ; <i1> [#uses=1] + br i1 %C, label %retlbl, label %loop + +loop: ; preds = %loop, %Top + %F = add i32 %A, %B ; <i32> [#uses=0] + %G = sub i32 %D, -4 ; <i32> [#uses=1] + %D.upgrd.1 = icmp sle i32 %G, 0 ; <i1> [#uses=1] + %E.upgrd.2 = xor i1 %D.upgrd.1, true ; <i1> [#uses=1] + br i1 %E.upgrd.2, label %loop, label %Top + +retlbl: ; preds = %Top + ret void +} + + +;; Test use of a boolean result in cast operations. +;; Requires converting a condition code result into a 0/1 value in a reg. +;; +define i32 @castbool(i32 %A, i32 %B) { +bb0: + %cond213 = icmp slt i32 %A, %B ; <i1> [#uses=1] + %cast110 = zext i1 %cond213 to i8 ; <i8> [#uses=1] + %cast109 = zext i8 %cast110 to i32 ; <i32> [#uses=1] + ret i32 %cast109 +} + +;; Test use of a boolean result in arithmetic and logical operations. +;; Requires converting a condition code result into a 0/1 value in a reg. +;; +define i1 @boolexpr(i1 %b, i32 %N) { + %b2 = icmp sge i32 %N, 0 ; <i1> [#uses=1] + %b3 = and i1 %b, %b2 ; <i1> [#uses=1] + ret i1 %b3 +} + +; Test branch on floating point comparison +; +define void @testfloatbool(float %x, float %y) { + br label %Top + +Top: ; preds = %Top, %0 + %p = fadd float %x, %y ; <float> [#uses=1] + %z = fsub float %x, %y ; <float> [#uses=1] + %b = fcmp ole float %p, %z ; <i1> [#uses=2] + %c = xor i1 %b, true ; <i1> [#uses=0] + br i1 %b, label %Top, label %goon + +goon: ; preds = %Top + ret void +} + + +; Test cases where an LLVM instruction requires no machine +; instructions (e.g., cast int* to long). But there are 2 cases: +; 1. If the result register has only a single use and the use is in the +; same basic block, the operand will be copy-propagated during +; instruction selection. +; 2. If the result register has multiple uses or is in a different +; basic block, it cannot (or will not) be copy propagated during +; instruction selection. It will generate a +; copy instruction (add-with-0), but this copy should get coalesced +; away by the register allocator. +; +define i32 @checkForward(i32 %N, i32* %A) { +bb2: + %reg114 = shl i32 %N, 2 ; <i32> [#uses=1] + %cast115 = sext i32 %reg114 to i64 ; <i64> [#uses=1] + %cast116 = ptrtoint i32* %A to i64 ; <i64> [#uses=1] + %reg116 = add i64 %cast116, %cast115 ; <i64> [#uses=1] + %castPtr = inttoptr i64 %reg116 to i32* ; <i32*> [#uses=1] + %reg118 = load i32* %castPtr ; <i32> [#uses=1] + %cast117 = sext i32 %reg118 to i64 ; <i64> [#uses=2] + %reg159 = add i64 1234567, %cast117 ; <i64> [#uses=0] + %reg160 = add i64 7654321, %cast117 ; <i64> [#uses=0] + ret i32 0 +} + + +; Test case for unary NOT operation constructed from XOR. +; +define void @checkNot(i1 %b, i32 %i) { + %notB = xor i1 %b, true ; <i1> [#uses=1] + %notI = xor i32 %i, -1 ; <i32> [#uses=2] + %F = icmp sge i32 %notI, 100 ; <i1> [#uses=1] + %J = add i32 %i, %i ; <i32> [#uses=1] + %andNotB = and i1 %F, %notB ; <i1> [#uses=0] + %andNotI = and i32 %J, %notI ; <i32> [#uses=0] + %notB2 = xor i1 true, %b ; <i1> [#uses=0] + %notI2 = xor i32 -1, %i ; <i32> [#uses=0] + ret void +} + +; Test case for folding getelementptr into a load/store +; +define i32 @checkFoldGEP(%Domain* %D, i64 %idx) { + %reg841 = getelementptr %Domain* %D, i64 0, i32 1 ; <i32*> [#uses=1] + %reg820 = load i32* %reg841 ; <i32> [#uses=1] + ret i32 %reg820 +} +
diff --git a/src/LLVM/test/CodeGen/Generic/shift-int64.ll b/src/LLVM/test/CodeGen/Generic/shift-int64.ll new file mode 100644 index 0000000..6b93a00 --- /dev/null +++ b/src/LLVM/test/CodeGen/Generic/shift-int64.ll
@@ -0,0 +1,12 @@ +; RUN: llc < %s + +define i64 @test_imm(i64 %X) { + %Y = ashr i64 %X, 17 ; <i64> [#uses=1] + ret i64 %Y +} + +define i64 @test_variable(i64 %X, i8 %Amt) { + %shift.upgrd.1 = zext i8 %Amt to i64 ; <i64> [#uses=1] + %Y = ashr i64 %X, %shift.upgrd.1 ; <i64> [#uses=1] + ret i64 %Y +}
diff --git a/src/LLVM/test/CodeGen/Generic/stacksave-restore.ll b/src/LLVM/test/CodeGen/Generic/stacksave-restore.ll new file mode 100644 index 0000000..25eb167 --- /dev/null +++ b/src/LLVM/test/CodeGen/Generic/stacksave-restore.ll
@@ -0,0 +1,14 @@ +; RUN: llc < %s + +declare i8* @llvm.stacksave() + +declare void @llvm.stackrestore(i8*) + +define i32* @test(i32 %N) { + %tmp = call i8* @llvm.stacksave( ) ; <i8*> [#uses=1] + %P = alloca i32, i32 %N ; <i32*> [#uses=1] + call void @llvm.stackrestore( i8* %tmp ) + %Q = alloca i32, i32 %N ; <i32*> [#uses=0] + ret i32* %P +} +
diff --git a/src/LLVM/test/CodeGen/Generic/storetrunc-fp.ll b/src/LLVM/test/CodeGen/Generic/storetrunc-fp.ll new file mode 100644 index 0000000..7f7c7f7 --- /dev/null +++ b/src/LLVM/test/CodeGen/Generic/storetrunc-fp.ll
@@ -0,0 +1,8 @@ +; RUN: llc < %s + +define void @foo(double %a, double %b, float* %fp) { + %c = fadd double %a, %b + %d = fptrunc double %c to float + store float %d, float* %fp + ret void +}
diff --git a/src/LLVM/test/CodeGen/Generic/switch-lower-feature.ll b/src/LLVM/test/CodeGen/Generic/switch-lower-feature.ll new file mode 100644 index 0000000..5c9e8da --- /dev/null +++ b/src/LLVM/test/CodeGen/Generic/switch-lower-feature.ll
@@ -0,0 +1,63 @@ +; RUN: llc < %s + +define i32 @test(i32 %tmp158) { +entry: + switch i32 %tmp158, label %bb336 [ + i32 120, label %bb338 + i32 121, label %bb338 + i32 122, label %bb338 + i32 123, label %bb338 + i32 124, label %bb338 + i32 125, label %bb338 + i32 126, label %bb338 + i32 1024, label %bb338 + i32 0, label %bb338 + i32 1, label %bb338 + i32 2, label %bb338 + i32 3, label %bb338 + i32 4, label %bb338 + i32 5, label %bb338 + ] +bb336: + ret i32 10 +bb338: + ret i32 11 +} + +define i32 @test2(i32 %tmp158) { +entry: + switch i32 %tmp158, label %bb336 [ + i32 -2147483648, label %bb338 + i32 -2147483647, label %bb338 + i32 -2147483646, label %bb338 + i32 120, label %bb338 + i32 121, label %bb339 + i32 122, label %bb340 + i32 123, label %bb341 + i32 124, label %bb342 + i32 125, label %bb343 + i32 126, label %bb336 + i32 1024, label %bb338 + i32 0, label %bb338 + i32 1, label %bb338 + i32 2, label %bb338 + i32 3, label %bb338 + i32 4, label %bb338 + i32 5, label %bb338 + ] +bb336: + ret i32 10 +bb338: + ret i32 11 +bb339: + ret i32 12 +bb340: + ret i32 13 +bb341: + ret i32 14 +bb342: + ret i32 15 +bb343: + ret i32 18 + +}
diff --git a/src/LLVM/test/CodeGen/Generic/switch-lower.ll b/src/LLVM/test/CodeGen/Generic/switch-lower.ll new file mode 100644 index 0000000..951cc97 --- /dev/null +++ b/src/LLVM/test/CodeGen/Generic/switch-lower.ll
@@ -0,0 +1,348 @@ +; RUN: llc < %s + + +; PR5421 +define void @test1() { +entry: + switch i128 undef, label %exit [ + i128 55340232221128654848, label %exit + i128 92233720368547758080, label %exit + i128 73786976294838206464, label %exit + i128 147573952589676412928, label %exit + ] +exit: + unreachable +} + + +; PR1197 +define void @test2() { +entry: + br i1 false, label %cond_next954, label %cond_true924 + +cond_true924: ; preds = %entry + ret void + +cond_next954: ; preds = %entry + switch i8 0, label %cleanup7419 [ + i8 1, label %bb956 + i8 2, label %bb1069 + i8 4, label %bb7328 + i8 5, label %bb1267 + i8 8, label %bb1348 + i8 9, label %bb7328 + i8 11, label %bb1439 + i8 12, label %bb1484 + i8 13, label %bb1706 + i8 14, label %bb1783 + i8 17, label %bb1925 + i8 18, label %bb1929 + i8 19, label %bb2240 + i8 25, label %bb2447 + i8 27, label %bb2480 + i8 29, label %bb2590 + i8 30, label %bb2594 + i8 31, label %bb2621 + i8 32, label %bb2664 + i8 33, label %bb2697 + i8 34, label %bb2735 + i8 37, label %bb2786 + i8 38, label %bb2849 + i8 39, label %bb3269 + i8 41, label %bb3303 + i8 42, label %bb3346 + i8 43, label %bb3391 + i8 44, label %bb3395 + i8 50, label %bb3673 + i8 52, label %bb3677 + i8 53, label %bb3693 + i8 54, label %bb7328 + i8 56, label %bb3758 + i8 57, label %bb3787 + i8 64, label %bb5019 + i8 68, label %cond_true4235 + i8 69, label %bb4325 + i8 70, label %bb4526 + i8 72, label %bb4618 + i8 73, label %bb4991 + i8 80, label %bb5012 + i8 82, label %bb5019 + i8 84, label %bb5518 + i8 86, label %bb5752 + i8 87, label %bb5953 + i8 89, label %bb6040 + i8 90, label %bb6132 + i8 92, label %bb6186 + i8 93, label %bb6151 + i8 94, label %bb6155 + i8 97, label %bb6355 + i8 98, label %bb5019 + i8 99, label %bb6401 + i8 101, label %bb5019 + i8 102, label %bb1484 + i8 104, label %bb7064 + i8 105, label %bb7068 + i8 106, label %bb7072 + i8 108, label %bb1065 + i8 109, label %bb1702 + i8 110, label %bb2200 + i8 111, label %bb2731 + i8 112, label %bb2782 + i8 113, label %bb2845 + i8 114, label %bb2875 + i8 115, label %bb3669 + i8 116, label %bb7316 + i8 117, label %bb7316 + i8 118, label %bb3875 + i8 119, label %bb4359 + i8 120, label %bb4987 + i8 121, label %bb5008 + i8 122, label %bb5786 + i8 123, label %bb6147 + i8 124, label %bb6916 + i8 125, label %bb6920 + i8 126, label %bb6955 + i8 127, label %bb6990 + i8 -128, label %bb7027 + i8 -127, label %bb3879 + i8 -126, label %bb4700 + i8 -125, label %bb7076 + i8 -124, label %bb2366 + i8 -123, label %bb2366 + i8 -122, label %bb5490 + ] + +bb956: ; preds = %cond_next954 + ret void + +bb1065: ; preds = %cond_next954 + ret void + +bb1069: ; preds = %cond_next954 + ret void + +bb1267: ; preds = %cond_next954 + ret void + +bb1348: ; preds = %cond_next954 + ret void + +bb1439: ; preds = %cond_next954 + ret void + +bb1484: ; preds = %cond_next954, %cond_next954 + ret void + +bb1702: ; preds = %cond_next954 + ret void + +bb1706: ; preds = %cond_next954 + ret void + +bb1783: ; preds = %cond_next954 + ret void + +bb1925: ; preds = %cond_next954 + ret void + +bb1929: ; preds = %cond_next954 + ret void + +bb2200: ; preds = %cond_next954 + ret void + +bb2240: ; preds = %cond_next954 + ret void + +bb2366: ; preds = %cond_next954, %cond_next954 + ret void + +bb2447: ; preds = %cond_next954 + ret void + +bb2480: ; preds = %cond_next954 + ret void + +bb2590: ; preds = %cond_next954 + ret void + +bb2594: ; preds = %cond_next954 + ret void + +bb2621: ; preds = %cond_next954 + ret void + +bb2664: ; preds = %cond_next954 + ret void + +bb2697: ; preds = %cond_next954 + ret void + +bb2731: ; preds = %cond_next954 + ret void + +bb2735: ; preds = %cond_next954 + ret void + +bb2782: ; preds = %cond_next954 + ret void + +bb2786: ; preds = %cond_next954 + ret void + +bb2845: ; preds = %cond_next954 + ret void + +bb2849: ; preds = %cond_next954 + ret void + +bb2875: ; preds = %cond_next954 + ret void + +bb3269: ; preds = %cond_next954 + ret void + +bb3303: ; preds = %cond_next954 + ret void + +bb3346: ; preds = %cond_next954 + ret void + +bb3391: ; preds = %cond_next954 + ret void + +bb3395: ; preds = %cond_next954 + ret void + +bb3669: ; preds = %cond_next954 + ret void + +bb3673: ; preds = %cond_next954 + ret void + +bb3677: ; preds = %cond_next954 + ret void + +bb3693: ; preds = %cond_next954 + ret void + +bb3758: ; preds = %cond_next954 + ret void + +bb3787: ; preds = %cond_next954 + ret void + +bb3875: ; preds = %cond_next954 + ret void + +bb3879: ; preds = %cond_next954 + ret void + +cond_true4235: ; preds = %cond_next954 + ret void + +bb4325: ; preds = %cond_next954 + ret void + +bb4359: ; preds = %cond_next954 + ret void + +bb4526: ; preds = %cond_next954 + ret void + +bb4618: ; preds = %cond_next954 + ret void + +bb4700: ; preds = %cond_next954 + ret void + +bb4987: ; preds = %cond_next954 + ret void + +bb4991: ; preds = %cond_next954 + ret void + +bb5008: ; preds = %cond_next954 + ret void + +bb5012: ; preds = %cond_next954 + ret void + +bb5019: ; preds = %cond_next954, %cond_next954, %cond_next954, %cond_next954 + ret void + +bb5490: ; preds = %cond_next954 + ret void + +bb5518: ; preds = %cond_next954 + ret void + +bb5752: ; preds = %cond_next954 + ret void + +bb5786: ; preds = %cond_next954 + ret void + +bb5953: ; preds = %cond_next954 + ret void + +bb6040: ; preds = %cond_next954 + ret void + +bb6132: ; preds = %cond_next954 + ret void + +bb6147: ; preds = %cond_next954 + ret void + +bb6151: ; preds = %cond_next954 + ret void + +bb6155: ; preds = %cond_next954 + ret void + +bb6186: ; preds = %cond_next954 + ret void + +bb6355: ; preds = %cond_next954 + ret void + +bb6401: ; preds = %cond_next954 + ret void + +bb6916: ; preds = %cond_next954 + ret void + +bb6920: ; preds = %cond_next954 + ret void + +bb6955: ; preds = %cond_next954 + ret void + +bb6990: ; preds = %cond_next954 + ret void + +bb7027: ; preds = %cond_next954 + ret void + +bb7064: ; preds = %cond_next954 + ret void + +bb7068: ; preds = %cond_next954 + ret void + +bb7072: ; preds = %cond_next954 + ret void + +bb7076: ; preds = %cond_next954 + ret void + +bb7316: ; preds = %cond_next954, %cond_next954 + ret void + +bb7328: ; preds = %cond_next954, %cond_next954, %cond_next954 + ret void + +cleanup7419: ; preds = %cond_next954 + ret void +}
diff --git a/src/LLVM/test/CodeGen/Generic/trap.ll b/src/LLVM/test/CodeGen/Generic/trap.ll new file mode 100644 index 0000000..67d1a7a --- /dev/null +++ b/src/LLVM/test/CodeGen/Generic/trap.ll
@@ -0,0 +1,9 @@ +; RUN: llc < %s +define i32 @test() noreturn nounwind { +entry: + tail call void @llvm.trap( ) + unreachable +} + +declare void @llvm.trap() nounwind +
diff --git a/src/LLVM/test/CodeGen/Generic/v-split.ll b/src/LLVM/test/CodeGen/Generic/v-split.ll new file mode 100644 index 0000000..634b562 --- /dev/null +++ b/src/LLVM/test/CodeGen/Generic/v-split.ll
@@ -0,0 +1,11 @@ +; RUN: llc < %s +%f8 = type <8 x float> + +define void @test_f8(%f8 *%P, %f8* %Q, %f8 *%S) { + %p = load %f8* %P + %q = load %f8* %Q + %R = fadd %f8 %p, %q + store %f8 %R, %f8 *%S + ret void +} +
diff --git a/src/LLVM/test/CodeGen/Generic/vector-casts.ll b/src/LLVM/test/CodeGen/Generic/vector-casts.ll new file mode 100644 index 0000000..a26918b --- /dev/null +++ b/src/LLVM/test/CodeGen/Generic/vector-casts.ll
@@ -0,0 +1,45 @@ +; RUN: llc < %s +; PR2671 + +define void @a(<2 x double>* %p, <2 x i8>* %q) { + %t = load <2 x double>* %p + %r = fptosi <2 x double> %t to <2 x i8> + store <2 x i8> %r, <2 x i8>* %q + ret void +} +define void @b(<2 x double>* %p, <2 x i8>* %q) { + %t = load <2 x double>* %p + %r = fptoui <2 x double> %t to <2 x i8> + store <2 x i8> %r, <2 x i8>* %q + ret void +} +define void @c(<2 x i8>* %p, <2 x double>* %q) { + %t = load <2 x i8>* %p + %r = sitofp <2 x i8> %t to <2 x double> + store <2 x double> %r, <2 x double>* %q + ret void +} +define void @d(<2 x i8>* %p, <2 x double>* %q) { + %t = load <2 x i8>* %p + %r = uitofp <2 x i8> %t to <2 x double> + store <2 x double> %r, <2 x double>* %q + ret void +} +define void @e(<2 x i8>* %p, <2 x i16>* %q) { + %t = load <2 x i8>* %p + %r = sext <2 x i8> %t to <2 x i16> + store <2 x i16> %r, <2 x i16>* %q + ret void +} +define void @f(<2 x i8>* %p, <2 x i16>* %q) { + %t = load <2 x i8>* %p + %r = zext <2 x i8> %t to <2 x i16> + store <2 x i16> %r, <2 x i16>* %q + ret void +} +define void @g(<2 x i16>* %p, <2 x i8>* %q) { + %t = load <2 x i16>* %p + %r = trunc <2 x i16> %t to <2 x i8> + store <2 x i8> %r, <2 x i8>* %q + ret void +}
diff --git a/src/LLVM/test/CodeGen/Generic/vector-constantexpr.ll b/src/LLVM/test/CodeGen/Generic/vector-constantexpr.ll new file mode 100644 index 0000000..0579174 --- /dev/null +++ b/src/LLVM/test/CodeGen/Generic/vector-constantexpr.ll
@@ -0,0 +1,7 @@ +; RUN: llc < %s + +define void @""(float* %inregs, float* %outregs) { + %a_addr.i = alloca <4 x float> ; <<4 x float>*> [#uses=1] + store <4 x float> < float undef, float undef, float undef, float undef >, <4 x float>* %a_addr.i + ret void +}
diff --git a/src/LLVM/test/CodeGen/Generic/vector-identity-shuffle.ll b/src/LLVM/test/CodeGen/Generic/vector-identity-shuffle.ll new file mode 100644 index 0000000..d800fea --- /dev/null +++ b/src/LLVM/test/CodeGen/Generic/vector-identity-shuffle.ll
@@ -0,0 +1,17 @@ +; RUN: llc < %s + + +define void @test(<4 x float>* %tmp2.i) { + %tmp2.i.upgrd.1 = load <4 x float>* %tmp2.i ; <<4 x float>> [#uses=4] + %xFloat0.48 = extractelement <4 x float> %tmp2.i.upgrd.1, i32 0 ; <float> [#uses=1] + %inFloat0.49 = insertelement <4 x float> undef, float %xFloat0.48, i32 0 ; <<4 x float>> [#uses=1] + %xFloat1.50 = extractelement <4 x float> %tmp2.i.upgrd.1, i32 1 ; <float> [#uses=1] + %inFloat1.52 = insertelement <4 x float> %inFloat0.49, float %xFloat1.50, i32 1 ; <<4 x float>> [#uses=1] + %xFloat2.53 = extractelement <4 x float> %tmp2.i.upgrd.1, i32 2 ; <float> [#uses=1] + %inFloat2.55 = insertelement <4 x float> %inFloat1.52, float %xFloat2.53, i32 2 ; <<4 x float>> [#uses=1] + %xFloat3.56 = extractelement <4 x float> %tmp2.i.upgrd.1, i32 3 ; <float> [#uses=1] + %inFloat3.58 = insertelement <4 x float> %inFloat2.55, float %xFloat3.56, i32 3 ; <<4 x float>> [#uses=1] + store <4 x float> %inFloat3.58, <4 x float>* %tmp2.i + ret void +} +
diff --git a/src/LLVM/test/CodeGen/Generic/vector.ll b/src/LLVM/test/CodeGen/Generic/vector.ll new file mode 100644 index 0000000..af1d787 --- /dev/null +++ b/src/LLVM/test/CodeGen/Generic/vector.ll
@@ -0,0 +1,154 @@ +; Test that vectors are scalarized/lowered correctly. +; RUN: llc < %s + + +%d8 = type <8 x double> +%f1 = type <1 x float> +%f2 = type <2 x float> +%f4 = type <4 x float> +%f8 = type <8 x float> +%i4 = type <4 x i32> + +;;; TEST HANDLING OF VARIOUS VECTOR SIZES + +define void @test_f1(%f1* %P, %f1* %Q, %f1* %S) { + %p = load %f1* %P ; <%f1> [#uses=1] + %q = load %f1* %Q ; <%f1> [#uses=1] + %R = fadd %f1 %p, %q ; <%f1> [#uses=1] + store %f1 %R, %f1* %S + ret void +} + +define void @test_f2(%f2* %P, %f2* %Q, %f2* %S) { + %p = load %f2* %P ; <%f2> [#uses=1] + %q = load %f2* %Q ; <%f2> [#uses=1] + %R = fadd %f2 %p, %q ; <%f2> [#uses=1] + store %f2 %R, %f2* %S + ret void +} + +define void @test_f4(%f4* %P, %f4* %Q, %f4* %S) { + %p = load %f4* %P ; <%f4> [#uses=1] + %q = load %f4* %Q ; <%f4> [#uses=1] + %R = fadd %f4 %p, %q ; <%f4> [#uses=1] + store %f4 %R, %f4* %S + ret void +} + +define void @test_f8(%f8* %P, %f8* %Q, %f8* %S) { + %p = load %f8* %P ; <%f8> [#uses=1] + %q = load %f8* %Q ; <%f8> [#uses=1] + %R = fadd %f8 %p, %q ; <%f8> [#uses=1] + store %f8 %R, %f8* %S + ret void +} + +define void @test_fmul(%f8* %P, %f8* %Q, %f8* %S) { + %p = load %f8* %P ; <%f8> [#uses=1] + %q = load %f8* %Q ; <%f8> [#uses=1] + %R = fmul %f8 %p, %q ; <%f8> [#uses=1] + store %f8 %R, %f8* %S + ret void +} + +define void @test_div(%f8* %P, %f8* %Q, %f8* %S) { + %p = load %f8* %P ; <%f8> [#uses=1] + %q = load %f8* %Q ; <%f8> [#uses=1] + %R = fdiv %f8 %p, %q ; <%f8> [#uses=1] + store %f8 %R, %f8* %S + ret void +} + +;;; TEST VECTOR CONSTRUCTS + + +define void @test_cst(%f4* %P, %f4* %S) { + %p = load %f4* %P ; <%f4> [#uses=1] + %R = fadd %f4 %p, < float 0x3FB99999A0000000, float 1.000000e+00, float 2.000000e+00, float 4.500000e+00 > ; <%f4> [#uses=1] + store %f4 %R, %f4* %S + ret void +} + +define void @test_zero(%f4* %P, %f4* %S) { + %p = load %f4* %P ; <%f4> [#uses=1] + %R = fadd %f4 %p, zeroinitializer ; <%f4> [#uses=1] + store %f4 %R, %f4* %S + ret void +} + +define void @test_undef(%f4* %P, %f4* %S) { + %p = load %f4* %P ; <%f4> [#uses=1] + %R = fadd %f4 %p, undef ; <%f4> [#uses=1] + store %f4 %R, %f4* %S + ret void +} + +define void @test_constant_insert(%f4* %S) { + %R = insertelement %f4 zeroinitializer, float 1.000000e+01, i32 0 ; <%f4> [#uses=1] + store %f4 %R, %f4* %S + ret void +} + +define void @test_variable_buildvector(float %F, %f4* %S) { + %R = insertelement %f4 zeroinitializer, float %F, i32 0 ; <%f4> [#uses=1] + store %f4 %R, %f4* %S + ret void +} + +define void @test_scalar_to_vector(float %F, %f4* %S) { + %R = insertelement %f4 undef, float %F, i32 0 ; <%f4> [#uses=1] + store %f4 %R, %f4* %S + ret void +} + +define float @test_extract_elt(%f8* %P) { + %p = load %f8* %P ; <%f8> [#uses=1] + %R = extractelement %f8 %p, i32 3 ; <float> [#uses=1] + ret float %R +} + +define double @test_extract_elt2(%d8* %P) { + %p = load %d8* %P ; <%d8> [#uses=1] + %R = extractelement %d8 %p, i32 3 ; <double> [#uses=1] + ret double %R +} + +define void @test_cast_1(%f4* %b, %i4* %a) { + %tmp = load %f4* %b ; <%f4> [#uses=1] + %tmp2 = fadd %f4 %tmp, < float 1.000000e+00, float 2.000000e+00, float 3.000000e+00, float 4.000000e+00 > ; <%f4> [#uses=1] + %tmp3 = bitcast %f4 %tmp2 to %i4 ; <%i4> [#uses=1] + %tmp4 = add %i4 %tmp3, < i32 1, i32 2, i32 3, i32 4 > ; <%i4> [#uses=1] + store %i4 %tmp4, %i4* %a + ret void +} + +define void @test_cast_2(%f8* %a, <8 x i32>* %b) { + %T = load %f8* %a ; <%f8> [#uses=1] + %T2 = bitcast %f8 %T to <8 x i32> ; <<8 x i32>> [#uses=1] + store <8 x i32> %T2, <8 x i32>* %b + ret void +} + +;;; TEST IMPORTANT IDIOMS + +define void @splat(%f4* %P, %f4* %Q, float %X) { + %tmp = insertelement %f4 undef, float %X, i32 0 ; <%f4> [#uses=1] + %tmp2 = insertelement %f4 %tmp, float %X, i32 1 ; <%f4> [#uses=1] + %tmp4 = insertelement %f4 %tmp2, float %X, i32 2 ; <%f4> [#uses=1] + %tmp6 = insertelement %f4 %tmp4, float %X, i32 3 ; <%f4> [#uses=1] + %q = load %f4* %Q ; <%f4> [#uses=1] + %R = fadd %f4 %q, %tmp6 ; <%f4> [#uses=1] + store %f4 %R, %f4* %P + ret void +} + +define void @splat_i4(%i4* %P, %i4* %Q, i32 %X) { + %tmp = insertelement %i4 undef, i32 %X, i32 0 ; <%i4> [#uses=1] + %tmp2 = insertelement %i4 %tmp, i32 %X, i32 1 ; <%i4> [#uses=1] + %tmp4 = insertelement %i4 %tmp2, i32 %X, i32 2 ; <%i4> [#uses=1] + %tmp6 = insertelement %i4 %tmp4, i32 %X, i32 3 ; <%i4> [#uses=1] + %q = load %i4* %Q ; <%i4> [#uses=1] + %R = add %i4 %q, %tmp6 ; <%i4> [#uses=1] + store %i4 %R, %i4* %P + ret void +}
diff --git a/src/LLVM/test/CodeGen/Generic/zero-sized-array.ll b/src/LLVM/test/CodeGen/Generic/zero-sized-array.ll new file mode 100644 index 0000000..280ba00 --- /dev/null +++ b/src/LLVM/test/CodeGen/Generic/zero-sized-array.ll
@@ -0,0 +1,81 @@ +; RUN: llc < %s +; PR9900 + +%zero = type [0 x i8] +%foobar = type { i32, %zero } + +define void @f(%foobar %arg) { + %arg1 = extractvalue %foobar %arg, 0 + %arg2 = extractvalue %foobar %arg, 1 + call i32 @f2(%zero %arg2, i32 5, i32 42) + ret void +} + +define i32 @f2(%zero %x, i32 %y, i32 %z) { + ret i32 %y +} + +define void @f3(%zero %x, i32 %y) { + call i32 @f2(%zero %x, i32 5, i32 %y) + ret void +} + +define void @f4(%zero %z) { + insertvalue %foobar undef, %zero %z, 1 + ret void +} + +define void @f5(%foobar %x) { +allocas: + %y = extractvalue %foobar %x, 1 + br label %b1 + +b1: + %insert120 = insertvalue %foobar undef, %zero %y, 1 + ret void +} + +define void @f6(%zero %x, %zero %y) { +b1: + br i1 undef, label %end, label %b2 + +b2: + br label %end + +end: + %z = phi %zero [ %y, %b1 ], [ %x, %b2 ] + call void @f4(%zero %z) + ret void +} + +%zero2 = type {} + +define i32 @g1(%zero2 %x, i32 %y, i32 %z) { + ret i32 %y +} + +define void @g2(%zero2 %x, i32 %y) { + call i32 @g1(%zero2 %x, i32 5, i32 %y) + ret void +} + +%zero2r = type {%zero2} + +define i32 @h1(%zero2r %x, i32 %y, i32 %z) { + ret i32 %y +} + +define void @h2(%zero2r %x, i32 %y) { + call i32 @h1(%zero2r %x, i32 5, i32 %y) + ret void +} + +%foobar2 = type { i32, %zero2r } + +define void @h3(%foobar2 %arg) { + %arg1 = extractvalue %foobar2 %arg, 0 + %arg2 = extractvalue %foobar2 %arg, 1 + %arg21 = extractvalue %zero2r %arg2, 0 + call void @g2(%zero2 %arg21, i32 5) + ret void +}