aboutsummaryrefslogtreecommitdiffstats
path: root/test/CodeGen/Generic
diff options
context:
space:
mode:
authorShih-wei Liao <sliao@google.com>2010-02-10 11:10:31 -0800
committerShih-wei Liao <sliao@google.com>2010-02-10 11:10:31 -0800
commite264f62ca09a8f65c87a46d562a4d0f9ec5d457e (patch)
tree59e3d57ef656cef79afa708ae0a3daf25cd91fcf /test/CodeGen/Generic
downloadexternal_llvm-e264f62ca09a8f65c87a46d562a4d0f9ec5d457e.zip
external_llvm-e264f62ca09a8f65c87a46d562a4d0f9ec5d457e.tar.gz
external_llvm-e264f62ca09a8f65c87a46d562a4d0f9ec5d457e.tar.bz2
Check in LLVM r95781.
Diffstat (limited to 'test/CodeGen/Generic')
-rw-r--r--test/CodeGen/Generic/2002-04-14-UnexpectedUnsignedType.ll13
-rw-r--r--test/CodeGen/Generic/2002-04-16-StackFrameSizeAlignment.ll14
-rw-r--r--test/CodeGen/Generic/2003-05-27-phifcmpd.ll19
-rw-r--r--test/CodeGen/Generic/2003-05-27-useboolinotherbb.ll13
-rw-r--r--test/CodeGen/Generic/2003-05-27-usefsubasbool.ll14
-rw-r--r--test/CodeGen/Generic/2003-05-28-ManyArgs.ll153
-rw-r--r--test/CodeGen/Generic/2003-05-30-BadFoldGEP.ll39
-rw-r--r--test/CodeGen/Generic/2003-05-30-BadPreselectPhi.ll33
-rw-r--r--test/CodeGen/Generic/2003-07-06-BadIntCmp.ll51
-rw-r--r--test/CodeGen/Generic/2003-07-07-BadLongConst.ll20
-rw-r--r--test/CodeGen/Generic/2003-07-08-BadCastToBool.ll34
-rw-r--r--test/CodeGen/Generic/2003-07-29-BadConstSbyte.ll40
-rw-r--r--test/CodeGen/Generic/2004-02-08-UnwindSupport.ll17
-rw-r--r--test/CodeGen/Generic/2004-05-09-LiveVarPartialRegister.ll13
-rw-r--r--test/CodeGen/Generic/2005-01-18-SetUO-InfLoop.ll20
-rw-r--r--test/CodeGen/Generic/2005-04-09-GlobalInPHI.ll20
-rw-r--r--test/CodeGen/Generic/2005-07-12-memcpy-i64-length.ll11
-rw-r--r--test/CodeGen/Generic/2005-10-18-ZeroSizeStackObject.ll6
-rw-r--r--test/CodeGen/Generic/2005-10-21-longlonggtu.ll16
-rw-r--r--test/CodeGen/Generic/2005-12-01-Crash.ll20
-rw-r--r--test/CodeGen/Generic/2005-12-12-ExpandSextInreg.ll7
-rw-r--r--test/CodeGen/Generic/2006-01-12-BadSetCCFold.ll35
-rw-r--r--test/CodeGen/Generic/2006-01-18-InvalidBranchOpcodeAssert.ll15
-rw-r--r--test/CodeGen/Generic/2006-02-12-InsertLibcall.ll60
-rw-r--r--test/CodeGen/Generic/2006-03-01-dagcombineinfloop.ll95
-rw-r--r--test/CodeGen/Generic/2006-04-26-SetCCAnd.ll40
-rw-r--r--test/CodeGen/Generic/2006-04-28-Sign-extend-bool.ll9
-rw-r--r--test/CodeGen/Generic/2006-05-06-GEP-Cast-Sink-Crash.ll29
-rw-r--r--test/CodeGen/Generic/2006-06-12-LowerSwitchCrash.ll10
-rw-r--r--test/CodeGen/Generic/2006-06-13-ComputeMaskedBitsCrash.ll35
-rw-r--r--test/CodeGen/Generic/2006-06-28-SimplifySetCCCrash.ll279
-rw-r--r--test/CodeGen/Generic/2006-07-03-schedulers.ll32
-rw-r--r--test/CodeGen/Generic/2006-08-30-CoalescerCrash.ll112
-rw-r--r--test/CodeGen/Generic/2006-09-02-LocalAllocCrash.ll117
-rw-r--r--test/CodeGen/Generic/2006-09-06-SwitchLowering.ll96
-rw-r--r--test/CodeGen/Generic/2006-10-27-CondFolding.ll21
-rw-r--r--test/CodeGen/Generic/2006-10-29-Crash.ll22
-rw-r--r--test/CodeGen/Generic/2006-11-20-DAGCombineCrash.ll41
-rw-r--r--test/CodeGen/Generic/2007-01-15-LoadSelectCycle.ll12
-rw-r--r--test/CodeGen/Generic/2007-02-16-BranchFold.ll95
-rw-r--r--test/CodeGen/Generic/2007-02-25-invoke.ll12
-rw-r--r--test/CodeGen/Generic/2007-04-08-MultipleFrameIndices.ll11
-rw-r--r--test/CodeGen/Generic/2007-04-13-SwitchLowerBadPhi.ll27
-rw-r--r--test/CodeGen/Generic/2007-04-17-lsr-crash.ll35
-rw-r--r--test/CodeGen/Generic/2007-04-27-InlineAsm-X-Dest.ll8
-rw-r--r--test/CodeGen/Generic/2007-04-27-LargeMemObject.ll13
-rw-r--r--test/CodeGen/Generic/2007-04-30-LandingPadBranchFolding.ll59
-rw-r--r--test/CodeGen/Generic/2007-05-03-EHTypeInfo.ll12
-rw-r--r--test/CodeGen/Generic/2007-05-05-Personality.ll35
-rw-r--r--test/CodeGen/Generic/2007-05-15-InfiniteRecursion.ll90
-rw-r--r--test/CodeGen/Generic/2007-11-21-UndeadIllegalNode.ll159
-rw-r--r--test/CodeGen/Generic/2007-12-17-InvokeAsm.ll15
-rw-r--r--test/CodeGen/Generic/2007-12-31-UnusedSelector.ll36
-rw-r--r--test/CodeGen/Generic/2008-01-25-dag-combine-mul.ll31
-rw-r--r--test/CodeGen/Generic/2008-01-30-LoadCrash.ll19
-rw-r--r--test/CodeGen/Generic/2008-02-04-Ctlz.ll21
-rw-r--r--test/CodeGen/Generic/2008-02-04-ExtractSubvector.ll14
-rw-r--r--test/CodeGen/Generic/2008-02-20-MatchingMem.ll9
-rw-r--r--test/CodeGen/Generic/2008-02-25-NegateZero.ll14
-rw-r--r--test/CodeGen/Generic/2008-02-26-NegatableCrash.ll50
-rw-r--r--test/CodeGen/Generic/2008-08-07-PtrToInt-SmallerInt.ll7
-rw-r--r--test/CodeGen/Generic/2009-03-17-LSR-APInt.ll92
-rw-r--r--test/CodeGen/Generic/2009-03-29-SoftFloatVectorExtract.ll10
-rw-r--r--test/CodeGen/Generic/2009-04-10-SinkCrash.ll16
-rw-r--r--test/CodeGen/Generic/2009-04-28-i128-cmp-crash.ll32
-rw-r--r--test/CodeGen/Generic/2009-06-03-UnreachableSplitPad.ll15
-rw-r--r--test/CodeGen/Generic/2009-11-16-BadKillsCrash.ll75
-rw-r--r--test/CodeGen/Generic/APIntLoadStore.ll2049
-rw-r--r--test/CodeGen/Generic/APIntParam.ll1537
-rw-r--r--test/CodeGen/Generic/APIntSextParam.ll1537
-rw-r--r--test/CodeGen/Generic/APIntZextParam.ll1537
-rw-r--r--test/CodeGen/Generic/BasicInstrs.ll54
-rw-r--r--test/CodeGen/Generic/BurgBadRegAlloc.ll829
-rw-r--r--test/CodeGen/Generic/ConstantExprLowering.ll22
-rw-r--r--test/CodeGen/Generic/GC/alloc_loop.ll53
-rw-r--r--test/CodeGen/Generic/GC/argpromotion.ll19
-rw-r--r--test/CodeGen/Generic/GC/badreadproto.ll13
-rw-r--r--test/CodeGen/Generic/GC/badrootproto.ll13
-rw-r--r--test/CodeGen/Generic/GC/badwriteproto.ll22
-rw-r--r--test/CodeGen/Generic/GC/deadargelim.ll16
-rw-r--r--test/CodeGen/Generic/GC/dg.exp3
-rw-r--r--test/CodeGen/Generic/GC/fat.ll10
-rw-r--r--test/CodeGen/Generic/GC/inline.ll23
-rw-r--r--test/CodeGen/Generic/GC/inline2.ll24
-rw-r--r--test/CodeGen/Generic/GC/lower_gcroot.ll11
-rw-r--r--test/CodeGen/Generic/GC/outside.ll10
-rw-r--r--test/CodeGen/Generic/GC/redundant_init.ll17
-rw-r--r--test/CodeGen/Generic/GC/simple_ocaml.ll42
-rw-r--r--test/CodeGen/Generic/Makefile23
-rw-r--r--test/CodeGen/Generic/add-with-overflow-24.ll42
-rw-r--r--test/CodeGen/Generic/add-with-overflow.ll41
-rw-r--r--test/CodeGen/Generic/asm-large-immediate.ll8
-rw-r--r--test/CodeGen/Generic/badCallArgLRLLVM.ll31
-rw-r--r--test/CodeGen/Generic/badFoldGEP.ll27
-rw-r--r--test/CodeGen/Generic/badarg6.ll32
-rw-r--r--test/CodeGen/Generic/badlive.ll28
-rw-r--r--test/CodeGen/Generic/bool-to-double.ll6
-rw-r--r--test/CodeGen/Generic/bool-vector.ll11
-rw-r--r--test/CodeGen/Generic/call-ret0.ll10
-rw-r--r--test/CodeGen/Generic/call-ret42.ll10
-rw-r--r--test/CodeGen/Generic/call-void.ll11
-rw-r--r--test/CodeGen/Generic/call2-ret0.ll16
-rw-r--r--test/CodeGen/Generic/cast-fp.ll33
-rw-r--r--test/CodeGen/Generic/constindices.ll44
-rw-r--r--test/CodeGen/Generic/debug-info.ll19
-rw-r--r--test/CodeGen/Generic/dg.exp3
-rw-r--r--test/CodeGen/Generic/div-neg-power-2.ll7
-rw-r--r--test/CodeGen/Generic/empty-load-store.ll18
-rw-r--r--test/CodeGen/Generic/externally_available.ll10
-rw-r--r--test/CodeGen/Generic/fastcall.ll14
-rw-r--r--test/CodeGen/Generic/fneg-fabs.ll26
-rw-r--r--test/CodeGen/Generic/fp-to-int-invalid.ll18
-rw-r--r--test/CodeGen/Generic/fp_to_int.ll81
-rw-r--r--test/CodeGen/Generic/fpowi-promote.ll11
-rw-r--r--test/CodeGen/Generic/fwdtwice.ll29
-rw-r--r--test/CodeGen/Generic/getresult-undef.ll6
-rw-r--r--test/CodeGen/Generic/global-ret0.ll8
-rw-r--r--test/CodeGen/Generic/hello.ll11
-rw-r--r--test/CodeGen/Generic/i128-addsub.ll39
-rw-r--r--test/CodeGen/Generic/i128-arith.ll11
-rw-r--r--test/CodeGen/Generic/inline-asm-special-strings.ll6
-rw-r--r--test/CodeGen/Generic/intrinsics.ll40
-rw-r--r--test/CodeGen/Generic/invalid-memcpy.ll19
-rw-r--r--test/CodeGen/Generic/isunord.ll9
-rw-r--r--test/CodeGen/Generic/llvm-ct-intrinsics.ll62
-rw-r--r--test/CodeGen/Generic/multiple-return-values-cross-block-with-invoke.ll18
-rw-r--r--test/CodeGen/Generic/negintconst.ll47
-rw-r--r--test/CodeGen/Generic/nested-select.ll19
-rw-r--r--test/CodeGen/Generic/pr2625.ll17
-rw-r--r--test/CodeGen/Generic/pr3288.ll67
-rw-r--r--test/CodeGen/Generic/print-add.ll18
-rw-r--r--test/CodeGen/Generic/print-arith-fp.ll61
-rw-r--r--test/CodeGen/Generic/print-arith-int.ll84
-rw-r--r--test/CodeGen/Generic/print-int.ll13
-rw-r--r--test/CodeGen/Generic/print-mul-exp.ll55
-rw-r--r--test/CodeGen/Generic/print-mul.ll32
-rw-r--r--test/CodeGen/Generic/print-shift.ll34
-rw-r--r--test/CodeGen/Generic/ret0.ll5
-rw-r--r--test/CodeGen/Generic/ret42.ll5
-rw-r--r--test/CodeGen/Generic/select-cc.ll9
-rw-r--r--test/CodeGen/Generic/select.ll187
-rw-r--r--test/CodeGen/Generic/shift-int64.ll12
-rw-r--r--test/CodeGen/Generic/spillccr.ll49
-rw-r--r--test/CodeGen/Generic/stack-protector.ll25
-rw-r--r--test/CodeGen/Generic/stacksave-restore.ll14
-rw-r--r--test/CodeGen/Generic/storetrunc-fp.ll8
-rw-r--r--test/CodeGen/Generic/switch-lower-feature.ll63
-rw-r--r--test/CodeGen/Generic/switch-lower.ll348
-rw-r--r--test/CodeGen/Generic/trap.ll9
-rw-r--r--test/CodeGen/Generic/v-split.ll11
-rw-r--r--test/CodeGen/Generic/vector-casts.ll45
-rw-r--r--test/CodeGen/Generic/vector-constantexpr.ll7
-rw-r--r--test/CodeGen/Generic/vector-identity-shuffle.ll17
-rw-r--r--test/CodeGen/Generic/vector.ll154
154 files changed, 12739 insertions, 0 deletions
diff --git a/test/CodeGen/Generic/2002-04-14-UnexpectedUnsignedType.ll b/test/CodeGen/Generic/2002-04-14-UnexpectedUnsignedType.ll
new file mode 100644
index 0000000..dd382cf
--- /dev/null
+++ b/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/test/CodeGen/Generic/2002-04-16-StackFrameSizeAlignment.ll b/test/CodeGen/Generic/2002-04-16-StackFrameSizeAlignment.ll
new file mode 100644
index 0000000..751ed40
--- /dev/null
+++ b/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/test/CodeGen/Generic/2003-05-27-phifcmpd.ll b/test/CodeGen/Generic/2003-05-27-phifcmpd.ll
new file mode 100644
index 0000000..6fb1799
--- /dev/null
+++ b/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/test/CodeGen/Generic/2003-05-27-useboolinotherbb.ll b/test/CodeGen/Generic/2003-05-27-useboolinotherbb.ll
new file mode 100644
index 0000000..14bb000
--- /dev/null
+++ b/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/test/CodeGen/Generic/2003-05-27-usefsubasbool.ll b/test/CodeGen/Generic/2003-05-27-usefsubasbool.ll
new file mode 100644
index 0000000..cc0eb5c
--- /dev/null
+++ b/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/test/CodeGen/Generic/2003-05-28-ManyArgs.ll b/test/CodeGen/Generic/2003-05-28-ManyArgs.ll
new file mode 100644
index 0000000..c6fbdae
--- /dev/null
+++ b/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/test/CodeGen/Generic/2003-05-30-BadFoldGEP.ll b/test/CodeGen/Generic/2003-05-30-BadFoldGEP.ll
new file mode 100644
index 0000000..10d3a11
--- /dev/null
+++ b/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/test/CodeGen/Generic/2003-05-30-BadPreselectPhi.ll b/test/CodeGen/Generic/2003-05-30-BadPreselectPhi.ll
new file mode 100644
index 0000000..f7c3e42
--- /dev/null
+++ b/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/test/CodeGen/Generic/2003-07-06-BadIntCmp.ll b/test/CodeGen/Generic/2003-07-06-BadIntCmp.ll
new file mode 100644
index 0000000..1d1aad5
--- /dev/null
+++ b/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/test/CodeGen/Generic/2003-07-07-BadLongConst.ll b/test/CodeGen/Generic/2003-07-07-BadLongConst.ll
new file mode 100644
index 0000000..64312ba
--- /dev/null
+++ b/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/test/CodeGen/Generic/2003-07-08-BadCastToBool.ll b/test/CodeGen/Generic/2003-07-08-BadCastToBool.ll
new file mode 100644
index 0000000..8019caa
--- /dev/null
+++ b/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/test/CodeGen/Generic/2003-07-29-BadConstSbyte.ll b/test/CodeGen/Generic/2003-07-29-BadConstSbyte.ll
new file mode 100644
index 0000000..4e6fe1c
--- /dev/null
+++ b/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/test/CodeGen/Generic/2004-02-08-UnwindSupport.ll b/test/CodeGen/Generic/2004-02-08-UnwindSupport.ll
new file mode 100644
index 0000000..393062a
--- /dev/null
+++ b/test/CodeGen/Generic/2004-02-08-UnwindSupport.ll
@@ -0,0 +1,17 @@
+; RUN: llc < %s -enable-correct-eh-support
+
+define i32 @test() {
+ unwind
+}
+
+define i32 @main() {
+ %X = invoke i32 @test( )
+ to label %cont unwind label %EH ; <i32> [#uses=0]
+
+cont: ; preds = %0
+ ret i32 1
+
+EH: ; preds = %0
+ ret i32 0
+}
+
diff --git a/test/CodeGen/Generic/2004-05-09-LiveVarPartialRegister.ll b/test/CodeGen/Generic/2004-05-09-LiveVarPartialRegister.ll
new file mode 100644
index 0000000..d4a4cf8
--- /dev/null
+++ b/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/test/CodeGen/Generic/2005-01-18-SetUO-InfLoop.ll b/test/CodeGen/Generic/2005-01-18-SetUO-InfLoop.ll
new file mode 100644
index 0000000..7fd2361
--- /dev/null
+++ b/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/test/CodeGen/Generic/2005-04-09-GlobalInPHI.ll b/test/CodeGen/Generic/2005-04-09-GlobalInPHI.ll
new file mode 100644
index 0000000..353e411
--- /dev/null
+++ b/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/test/CodeGen/Generic/2005-07-12-memcpy-i64-length.ll b/test/CodeGen/Generic/2005-07-12-memcpy-i64-length.ll
new file mode 100644
index 0000000..733202c
--- /dev/null
+++ b/test/CodeGen/Generic/2005-07-12-memcpy-i64-length.ll
@@ -0,0 +1,11 @@
+; RUN: llc < %s
+; Test that llvm.memcpy works with a i64 length operand on all targets.
+
+declare void @llvm.memcpy.i64(i8*, i8*, i64, i32)
+
+define void @l12_l94_bc_divide_endif_2E_3_2E_ce() {
+newFuncRoot:
+ tail call void @llvm.memcpy.i64( i8* null, i8* null, i64 0, i32 1 )
+ unreachable
+}
+
diff --git a/test/CodeGen/Generic/2005-10-18-ZeroSizeStackObject.ll b/test/CodeGen/Generic/2005-10-18-ZeroSizeStackObject.ll
new file mode 100644
index 0000000..08060bf
--- /dev/null
+++ b/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/test/CodeGen/Generic/2005-10-21-longlonggtu.ll b/test/CodeGen/Generic/2005-10-21-longlonggtu.ll
new file mode 100644
index 0000000..53a9cd0
--- /dev/null
+++ b/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/test/CodeGen/Generic/2005-12-01-Crash.ll b/test/CodeGen/Generic/2005-12-01-Crash.ll
new file mode 100644
index 0000000..a9eedde
--- /dev/null
+++ b/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/test/CodeGen/Generic/2005-12-12-ExpandSextInreg.ll b/test/CodeGen/Generic/2005-12-12-ExpandSextInreg.ll
new file mode 100644
index 0000000..349540f
--- /dev/null
+++ b/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/test/CodeGen/Generic/2006-01-12-BadSetCCFold.ll b/test/CodeGen/Generic/2006-01-12-BadSetCCFold.ll
new file mode 100644
index 0000000..42e8ed0
--- /dev/null
+++ b/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/test/CodeGen/Generic/2006-01-18-InvalidBranchOpcodeAssert.ll b/test/CodeGen/Generic/2006-01-18-InvalidBranchOpcodeAssert.ll
new file mode 100644
index 0000000..f06d341
--- /dev/null
+++ b/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/test/CodeGen/Generic/2006-02-12-InsertLibcall.ll b/test/CodeGen/Generic/2006-02-12-InsertLibcall.ll
new file mode 100644
index 0000000..5508272
--- /dev/null
+++ b/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/test/CodeGen/Generic/2006-03-01-dagcombineinfloop.ll b/test/CodeGen/Generic/2006-03-01-dagcombineinfloop.ll
new file mode 100644
index 0000000..2a6cc0c
--- /dev/null
+++ b/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/test/CodeGen/Generic/2006-04-26-SetCCAnd.ll b/test/CodeGen/Generic/2006-04-26-SetCCAnd.ll
new file mode 100644
index 0000000..8465b82
--- /dev/null
+++ b/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/test/CodeGen/Generic/2006-04-28-Sign-extend-bool.ll b/test/CodeGen/Generic/2006-04-28-Sign-extend-bool.ll
new file mode 100644
index 0000000..22d8f99
--- /dev/null
+++ b/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/test/CodeGen/Generic/2006-05-06-GEP-Cast-Sink-Crash.ll b/test/CodeGen/Generic/2006-05-06-GEP-Cast-Sink-Crash.ll
new file mode 100644
index 0000000..1a9fa9f
--- /dev/null
+++ b/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/test/CodeGen/Generic/2006-06-12-LowerSwitchCrash.ll b/test/CodeGen/Generic/2006-06-12-LowerSwitchCrash.ll
new file mode 100644
index 0000000..a3720a9
--- /dev/null
+++ b/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/test/CodeGen/Generic/2006-06-13-ComputeMaskedBitsCrash.ll b/test/CodeGen/Generic/2006-06-13-ComputeMaskedBitsCrash.ll
new file mode 100644
index 0000000..bd922b3
--- /dev/null
+++ b/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/test/CodeGen/Generic/2006-06-28-SimplifySetCCCrash.ll b/test/CodeGen/Generic/2006-06-28-SimplifySetCCCrash.ll
new file mode 100644
index 0000000..c4f2fb0
--- /dev/null
+++ b/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/test/CodeGen/Generic/2006-07-03-schedulers.ll b/test/CodeGen/Generic/2006-07-03-schedulers.ll
new file mode 100644
index 0000000..756bd5d
--- /dev/null
+++ b/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/test/CodeGen/Generic/2006-08-30-CoalescerCrash.ll b/test/CodeGen/Generic/2006-08-30-CoalescerCrash.ll
new file mode 100644
index 0000000..cbe8b15
--- /dev/null
+++ b/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/test/CodeGen/Generic/2006-09-02-LocalAllocCrash.ll b/test/CodeGen/Generic/2006-09-02-LocalAllocCrash.ll
new file mode 100644
index 0000000..4b332b3
--- /dev/null
+++ b/test/CodeGen/Generic/2006-09-02-LocalAllocCrash.ll
@@ -0,0 +1,117 @@
+; RUN: llc < %s -regalloc=local
+
+%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/test/CodeGen/Generic/2006-09-06-SwitchLowering.ll b/test/CodeGen/Generic/2006-09-06-SwitchLowering.ll
new file mode 100644
index 0000000..3d592b3
--- /dev/null
+++ b/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/test/CodeGen/Generic/2006-10-27-CondFolding.ll b/test/CodeGen/Generic/2006-10-27-CondFolding.ll
new file mode 100644
index 0000000..51902c8
--- /dev/null
+++ b/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/test/CodeGen/Generic/2006-10-29-Crash.ll b/test/CodeGen/Generic/2006-10-29-Crash.ll
new file mode 100644
index 0000000..7dcb52c
--- /dev/null
+++ b/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/test/CodeGen/Generic/2006-11-20-DAGCombineCrash.ll b/test/CodeGen/Generic/2006-11-20-DAGCombineCrash.ll
new file mode 100644
index 0000000..26d0f4f
--- /dev/null
+++ b/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/test/CodeGen/Generic/2007-01-15-LoadSelectCycle.ll b/test/CodeGen/Generic/2007-01-15-LoadSelectCycle.ll
new file mode 100644
index 0000000..255b120
--- /dev/null
+++ b/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/test/CodeGen/Generic/2007-02-16-BranchFold.ll b/test/CodeGen/Generic/2007-02-16-BranchFold.ll
new file mode 100644
index 0000000..6bf5631
--- /dev/null
+++ b/test/CodeGen/Generic/2007-02-16-BranchFold.ll
@@ -0,0 +1,95 @@
+; PR 1200
+; RUN: llc < %s -enable-tail-merge=0 | not grep jmp
+
+; ModuleID = '<stdin>'
+target datalayout = "e-p:32:32"
+target triple = "i686-apple-darwin8"
+ %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.Index_Map = type { i32, %struct.item_set** }
+ %struct.Item = type { [4 x i16], %struct.rule* }
+ %struct.__sFILEX = type opaque
+ %struct.__sbuf = type { i8*, i32 }
+ %struct.dimension = type { i16*, %struct.Index_Map, %struct.mapping*, i32, %struct.plankMap* }
+ %struct.item_set = type { i32, i32, %struct.operator*, [2 x %struct.item_set*], %struct.item_set*, i16*, %struct.Item*, %struct.Item* }
+ %struct.list = type { i8*, %struct.list* }
+ %struct.mapping = type { %struct.list**, i32, i32, i32, %struct.item_set** }
+ %struct.nonterminal = type { i8*, i32, i32, i32, %struct.plankMap*, %struct.rule* }
+ %struct.operator = type { i8*, i8, i32, i32, i32, i32, %struct.table* }
+ %struct.pattern = type { %struct.nonterminal*, %struct.operator*, [2 x %struct.nonterminal*] }
+ %struct.plank = type { i8*, %struct.list*, i32 }
+ %struct.plankMap = type { %struct.list*, i32, %struct.stateMap* }
+ %struct.rule = type { [4 x i16], i32, i32, i32, %struct.nonterminal*, %struct.pattern*, i8 }
+ %struct.stateMap = type { i8*, %struct.plank*, i32, i16* }
+ %struct.table = type { %struct.operator*, %struct.list*, i16*, [2 x %struct.dimension*], %struct.item_set** }
+@outfile = external global %struct.FILE* ; <%struct.FILE**> [#uses=1]
+@str1 = external global [11 x i8] ; <[11 x i8]*> [#uses=1]
+
+declare i32 @fprintf(%struct.FILE*, i8*, ...)
+
+define i16 @main_bb_2E_i9_2E_i_2E_i932_2E_ce(%struct.list* %l_addr.01.0.i2.i.i929, %struct.operator** %tmp66.i62.i.out) {
+newFuncRoot:
+ br label %bb.i9.i.i932.ce
+
+NewDefault: ; preds = %LeafBlock, %LeafBlock1, %LeafBlock2, %LeafBlock3
+ br label %bb36.i.i.exitStub
+
+bb36.i.i.exitStub: ; preds = %NewDefault
+ store %struct.operator* %tmp66.i62.i, %struct.operator** %tmp66.i62.i.out
+ ret i16 0
+
+bb.i14.i.exitStub: ; preds = %LeafBlock
+ store %struct.operator* %tmp66.i62.i, %struct.operator** %tmp66.i62.i.out
+ ret i16 1
+
+bb12.i.i935.exitStub: ; preds = %LeafBlock1
+ store %struct.operator* %tmp66.i62.i, %struct.operator** %tmp66.i62.i.out
+ ret i16 2
+
+bb20.i.i937.exitStub: ; preds = %LeafBlock2
+ store %struct.operator* %tmp66.i62.i, %struct.operator** %tmp66.i62.i.out
+ ret i16 3
+
+bb28.i.i938.exitStub: ; preds = %LeafBlock3
+ store %struct.operator* %tmp66.i62.i, %struct.operator** %tmp66.i62.i.out
+ ret i16 4
+
+bb.i9.i.i932.ce: ; preds = %newFuncRoot
+ %tmp1.i3.i.i930 = getelementptr %struct.list* %l_addr.01.0.i2.i.i929, i32 0, i32 0 ; <i8**> [#uses=1]
+ %tmp2.i4.i.i931 = load i8** %tmp1.i3.i.i930 ; <i8*> [#uses=1]
+ %tmp66.i62.i = bitcast i8* %tmp2.i4.i.i931 to %struct.operator* ; <%struct.operator*> [#uses=7]
+ %tmp1.i6.i = getelementptr %struct.operator* %tmp66.i62.i, i32 0, i32 2 ; <i32*> [#uses=1]
+ %tmp2.i7.i = load i32* %tmp1.i6.i ; <i32> [#uses=1]
+ %tmp3.i8.i = load %struct.FILE** @outfile ; <%struct.FILE*> [#uses=1]
+ %tmp5.i9.i = call i32 (%struct.FILE*, i8*, ...)* @fprintf( %struct.FILE* %tmp3.i8.i, i8* getelementptr ([11 x i8]* @str1, i32 0, i32 0), i32 %tmp2.i7.i ) ; <i32> [#uses=0]
+ %tmp7.i10.i = getelementptr %struct.operator* %tmp66.i62.i, i32 0, i32 5 ; <i32*> [#uses=1]
+ %tmp8.i11.i = load i32* %tmp7.i10.i ; <i32> [#uses=7]
+ br label %NodeBlock5
+
+NodeBlock5: ; preds = %bb.i9.i.i932.ce
+ icmp slt i32 %tmp8.i11.i, 1 ; <i1>:0 [#uses=1]
+ br i1 %0, label %NodeBlock, label %NodeBlock4
+
+NodeBlock4: ; preds = %NodeBlock5
+ icmp slt i32 %tmp8.i11.i, 2 ; <i1>:1 [#uses=1]
+ br i1 %1, label %LeafBlock2, label %LeafBlock3
+
+LeafBlock3: ; preds = %NodeBlock4
+ icmp eq i32 %tmp8.i11.i, 2 ; <i1>:2 [#uses=1]
+ br i1 %2, label %bb28.i.i938.exitStub, label %NewDefault
+
+LeafBlock2: ; preds = %NodeBlock4
+ icmp eq i32 %tmp8.i11.i, 1 ; <i1>:3 [#uses=1]
+ br i1 %3, label %bb20.i.i937.exitStub, label %NewDefault
+
+NodeBlock: ; preds = %NodeBlock5
+ icmp slt i32 %tmp8.i11.i, 0 ; <i1>:4 [#uses=1]
+ br i1 %4, label %LeafBlock, label %LeafBlock1
+
+LeafBlock1: ; preds = %NodeBlock
+ icmp eq i32 %tmp8.i11.i, 0 ; <i1>:5 [#uses=1]
+ br i1 %5, label %bb12.i.i935.exitStub, label %NewDefault
+
+LeafBlock: ; preds = %NodeBlock
+ icmp eq i32 %tmp8.i11.i, -1 ; <i1>:6 [#uses=1]
+ br i1 %6, label %bb.i14.i.exitStub, label %NewDefault
+}
diff --git a/test/CodeGen/Generic/2007-02-25-invoke.ll b/test/CodeGen/Generic/2007-02-25-invoke.ll
new file mode 100644
index 0000000..6e20eaa
--- /dev/null
+++ b/test/CodeGen/Generic/2007-02-25-invoke.ll
@@ -0,0 +1,12 @@
+; 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:
+ ret i32 0
+}
diff --git a/test/CodeGen/Generic/2007-04-08-MultipleFrameIndices.ll b/test/CodeGen/Generic/2007-04-08-MultipleFrameIndices.ll
new file mode 100644
index 0000000..339f0f7
--- /dev/null
+++ b/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/test/CodeGen/Generic/2007-04-13-SwitchLowerBadPhi.ll b/test/CodeGen/Generic/2007-04-13-SwitchLowerBadPhi.ll
new file mode 100644
index 0000000..a0b1403
--- /dev/null
+++ b/test/CodeGen/Generic/2007-04-13-SwitchLowerBadPhi.ll
@@ -0,0 +1,27 @@
+; RUN: llc < %s -O0
+; PR 1323
+
+; ModuleID = 'test.bc'
+target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64"
+target triple = "i686-apple-darwin8"
+ %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/test/CodeGen/Generic/2007-04-17-lsr-crash.ll b/test/CodeGen/Generic/2007-04-17-lsr-crash.ll
new file mode 100644
index 0000000..98f87e5
--- /dev/null
+++ b/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/test/CodeGen/Generic/2007-04-27-InlineAsm-X-Dest.ll b/test/CodeGen/Generic/2007-04-27-InlineAsm-X-Dest.ll
new file mode 100644
index 0000000..af522dc
--- /dev/null
+++ b/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/test/CodeGen/Generic/2007-04-27-LargeMemObject.ll b/test/CodeGen/Generic/2007-04-27-LargeMemObject.ll
new file mode 100644
index 0000000..f2c9b7f
--- /dev/null
+++ b/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/test/CodeGen/Generic/2007-04-30-LandingPadBranchFolding.ll b/test/CodeGen/Generic/2007-04-30-LandingPadBranchFolding.ll
new file mode 100644
index 0000000..568b88f
--- /dev/null
+++ b/test/CodeGen/Generic/2007-04-30-LandingPadBranchFolding.ll
@@ -0,0 +1,59 @@
+; 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
+ ret void
+}
+
+declare void @_ZNSs14_M_replace_auxEjjjc()
+
+declare i32 @strcmp()
+
+declare void @_ZNSs6assignEPKcj()
+
+declare void @_ZNSs7reserveEj()
+
+declare void @_ZNSs6appendEPKcj()
diff --git a/test/CodeGen/Generic/2007-05-03-EHTypeInfo.ll b/test/CodeGen/Generic/2007-05-03-EHTypeInfo.ll
new file mode 100644
index 0000000..bb774b4
--- /dev/null
+++ b/test/CodeGen/Generic/2007-05-03-EHTypeInfo.ll
@@ -0,0 +1,12 @@
+; RUN: llc < %s -enable-eh
+
+ %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/test/CodeGen/Generic/2007-05-05-Personality.ll b/test/CodeGen/Generic/2007-05-05-Personality.ll
new file mode 100644
index 0000000..2749326
--- /dev/null
+++ b/test/CodeGen/Generic/2007-05-05-Personality.ll
@@ -0,0 +1,35 @@
+; RUN: llc < %s -mtriple=i686-pc-linux-gnu -enable-eh -o - | grep zPLR
+
+@error = external global i8 ; <i8*> [#uses=2]
+
+define void @_ada_x() {
+entry:
+ invoke void @raise( )
+ to label %eh_then unwind label %unwind
+
+unwind: ; preds = %entry
+ %eh_ptr = tail call i8* @llvm.eh.exception( ) ; <i8*> [#uses=2]
+ %eh_select = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector.i32( i8* %eh_ptr, i8* bitcast (i32 (...)* @__gnat_eh_personality to i8*), i8* @error ) ; <i32> [#uses=1]
+ %eh_typeid = tail call i32 @llvm.eh.typeid.for.i32( i8* @error ) ; <i32> [#uses=1]
+ %tmp2 = icmp eq i32 %eh_select, %eh_typeid ; <i1> [#uses=1]
+ br i1 %tmp2, label %eh_then, label %Unwind
+
+eh_then: ; preds = %unwind, %entry
+ ret void
+
+Unwind: ; preds = %unwind
+ tail call i32 (...)* @_Unwind_Resume( i8* %eh_ptr ) ; <i32>:0 [#uses=0]
+ unreachable
+}
+
+declare void @raise()
+
+declare i8* @llvm.eh.exception()
+
+declare i32 @llvm.eh.selector.i32(i8*, i8*, ...)
+
+declare i32 @llvm.eh.typeid.for.i32(i8*)
+
+declare i32 @__gnat_eh_personality(...)
+
+declare i32 @_Unwind_Resume(...)
diff --git a/test/CodeGen/Generic/2007-05-15-InfiniteRecursion.ll b/test/CodeGen/Generic/2007-05-15-InfiniteRecursion.ll
new file mode 100644
index 0000000..b989819
--- /dev/null
+++ b/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/test/CodeGen/Generic/2007-11-21-UndeadIllegalNode.ll b/test/CodeGen/Generic/2007-11-21-UndeadIllegalNode.ll
new file mode 100644
index 0000000..e220be6
--- /dev/null
+++ b/test/CodeGen/Generic/2007-11-21-UndeadIllegalNode.ll
@@ -0,0 +1,159 @@
+; RUN: llc < %s -o -
+
+target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:32:32"
+target triple = "i686-pc-linux-gnu"
+ %struct.RETURN = type { i32, i32 }
+ %struct.ada__finalization__controlled = type { %struct.system__finalization_root__root_controlled }
+ %struct.ada__streams__root_stream_type = type { %struct.ada__tags__dispatch_table* }
+ %struct.ada__strings__unbounded__string_access = type { i8*, %struct.RETURN* }
+ %struct.ada__strings__unbounded__unbounded_string = type { %struct.ada__finalization__controlled, %struct.ada__strings__unbounded__string_access, i32 }
+ %struct.ada__tags__dispatch_table = type { [1 x i32] }
+ %struct.exception = type { i8, i8, i32, i8*, i8*, i32, i8* }
+ %struct.system__finalization_root__root_controlled = type { %struct.ada__streams__root_stream_type, %struct.system__finalization_root__root_controlled*, %struct.system__finalization_root__root_controlled* }
+ %struct.system__standard_library__exception_data = type { i8, i8, i32, i32, %struct.system__standard_library__exception_data*, i32, void ()* }
+@C.495.7639 = internal constant %struct.RETURN { i32 1, i32 16 } ; <%struct.RETURN*> [#uses=1]
+@ada__strings__index_error = external global %struct.exception ; <%struct.exception*> [#uses=1]
+@.str5 = internal constant [16 x i8] c"a-strunb.adb:690" ; <[16 x i8]*> [#uses=1]
+
+declare void @llvm.memcpy.i32(i8*, i8*, i32, i32)
+
+declare void @ada__strings__unbounded__realloc_for_chunk(%struct.ada__strings__unbounded__unbounded_string*, i32)
+
+declare void @__gnat_raise_exception(%struct.system__standard_library__exception_data*, i64)
+
+define void @ada__strings__unbounded__insert__2(%struct.ada__strings__unbounded__unbounded_string* %source, i32 %before, i64 %new_item.0.0) {
+entry:
+ %tmp24636 = lshr i64 %new_item.0.0, 32 ; <i64> [#uses=1]
+ %tmp24637 = trunc i64 %tmp24636 to i32 ; <i32> [#uses=1]
+ %tmp24638 = inttoptr i32 %tmp24637 to %struct.RETURN* ; <%struct.RETURN*> [#uses=2]
+ %tmp25 = getelementptr %struct.RETURN* %tmp24638, i32 0, i32 0 ; <i32*> [#uses=1]
+ %tmp26 = load i32* %tmp25, align 4 ; <i32> [#uses=1]
+ %tmp29 = getelementptr %struct.RETURN* %tmp24638, i32 0, i32 1 ; <i32*> [#uses=1]
+ %tmp30 = load i32* %tmp29, align 4 ; <i32> [#uses=1]
+ %tmp63 = getelementptr %struct.ada__strings__unbounded__unbounded_string* %source, i32 0, i32 1, i32 1 ; <%struct.RETURN**> [#uses=5]
+ %tmp64 = load %struct.RETURN** %tmp63, align 4 ; <%struct.RETURN*> [#uses=1]
+ %tmp65 = getelementptr %struct.RETURN* %tmp64, i32 0, i32 0 ; <i32*> [#uses=1]
+ %tmp66 = load i32* %tmp65, align 4 ; <i32> [#uses=1]
+ %tmp67 = icmp sgt i32 %tmp66, %before ; <i1> [#uses=1]
+ br i1 %tmp67, label %bb77, label %bb
+
+bb: ; preds = %entry
+ %tmp71 = getelementptr %struct.ada__strings__unbounded__unbounded_string* %source, i32 0, i32 2 ; <i32*> [#uses=4]
+ %tmp72 = load i32* %tmp71, align 4 ; <i32> [#uses=1]
+ %tmp73 = add i32 %tmp72, 1 ; <i32> [#uses=1]
+ %tmp74 = icmp slt i32 %tmp73, %before ; <i1> [#uses=1]
+ br i1 %tmp74, label %bb77, label %bb84
+
+bb77: ; preds = %bb, %entry
+ tail call void @__gnat_raise_exception( %struct.system__standard_library__exception_data* bitcast (%struct.exception* @ada__strings__index_error to %struct.system__standard_library__exception_data*), i64 or (i64 zext (i32 ptrtoint ([16 x i8]* @.str5 to i32) to i64), i64 shl (i64 zext (i32 ptrtoint (%struct.RETURN* @C.495.7639 to i32) to i64), i64 32)) )
+ unreachable
+
+bb84: ; preds = %bb
+ %tmp93 = sub i32 %tmp30, %tmp26 ; <i32> [#uses=2]
+ %tmp9394 = sext i32 %tmp93 to i36 ; <i36> [#uses=1]
+ %tmp95 = shl i36 %tmp9394, 3 ; <i36> [#uses=1]
+ %tmp96 = add i36 %tmp95, 8 ; <i36> [#uses=2]
+ %tmp97 = icmp sgt i36 %tmp96, -1 ; <i1> [#uses=1]
+ %tmp100 = select i1 %tmp97, i36 %tmp96, i36 0 ; <i36> [#uses=2]
+ %tmp101 = icmp slt i36 %tmp100, 17179869177 ; <i1> [#uses=1]
+ %tmp100.cast = trunc i36 %tmp100 to i32 ; <i32> [#uses=1]
+ %min102 = select i1 %tmp101, i32 %tmp100.cast, i32 -8 ; <i32> [#uses=1]
+ tail call void @ada__strings__unbounded__realloc_for_chunk( %struct.ada__strings__unbounded__unbounded_string* %source, i32 %min102 )
+ %tmp148 = load i32* %tmp71, align 4 ; <i32> [#uses=4]
+ %tmp152 = add i32 %tmp93, 1 ; <i32> [#uses=2]
+ %tmp153 = icmp sgt i32 %tmp152, -1 ; <i1> [#uses=1]
+ %max154 = select i1 %tmp153, i32 %tmp152, i32 0 ; <i32> [#uses=5]
+ %tmp155 = add i32 %tmp148, %max154 ; <i32> [#uses=5]
+ %tmp315 = getelementptr %struct.ada__strings__unbounded__unbounded_string* %source, i32 0, i32 1, i32 0 ; <i8**> [#uses=4]
+ %tmp328 = load %struct.RETURN** %tmp63, align 4 ; <%struct.RETURN*> [#uses=1]
+ %tmp329 = getelementptr %struct.RETURN* %tmp328, i32 0, i32 0 ; <i32*> [#uses=1]
+ %tmp330 = load i32* %tmp329, align 4 ; <i32> [#uses=4]
+ %tmp324 = add i32 %max154, %before ; <i32> [#uses=3]
+ %tmp331 = sub i32 %tmp324, %tmp330 ; <i32> [#uses=1]
+ %tmp349 = sub i32 %before, %tmp330 ; <i32> [#uses=1]
+ %tmp356 = icmp sgt i32 %tmp331, %tmp349 ; <i1> [#uses=1]
+ %tmp431 = icmp sgt i32 %tmp324, %tmp155 ; <i1> [#uses=2]
+ br i1 %tmp356, label %bb420, label %bb359
+
+bb359: ; preds = %bb84
+ br i1 %tmp431, label %bb481, label %bb382
+
+bb382: ; preds = %bb382, %bb359
+ %indvar = phi i32 [ 0, %bb359 ], [ %indvar.next, %bb382 ] ; <i32> [#uses=2]
+ %max379.pn = phi i32 [ %max154, %bb359 ], [ %L492b.0, %bb382 ] ; <i32> [#uses=1]
+ %before.pn = phi i32 [ %before, %bb359 ], [ 1, %bb382 ] ; <i32> [#uses=1]
+ %L492b.0 = add i32 %before.pn, %max379.pn ; <i32> [#uses=3]
+ %tmp386 = load %struct.RETURN** %tmp63, align 4 ; <%struct.RETURN*> [#uses=1]
+ %tmp387 = getelementptr %struct.RETURN* %tmp386, i32 0, i32 0 ; <i32*> [#uses=1]
+ %tmp388 = load i32* %tmp387, align 4 ; <i32> [#uses=2]
+ %tmp392 = load i8** %tmp315, align 4 ; <i8*> [#uses=2]
+ %R493b.0 = add i32 %indvar, %before ; <i32> [#uses=1]
+ %tmp405 = sub i32 %R493b.0, %tmp388 ; <i32> [#uses=1]
+ %tmp406 = getelementptr i8* %tmp392, i32 %tmp405 ; <i8*> [#uses=1]
+ %tmp407 = load i8* %tmp406, align 1 ; <i8> [#uses=1]
+ %tmp408 = sub i32 %L492b.0, %tmp388 ; <i32> [#uses=1]
+ %tmp409 = getelementptr i8* %tmp392, i32 %tmp408 ; <i8*> [#uses=1]
+ store i8 %tmp407, i8* %tmp409, align 1
+ %tmp414 = icmp eq i32 %L492b.0, %tmp155 ; <i1> [#uses=1]
+ %indvar.next = add i32 %indvar, 1 ; <i32> [#uses=1]
+ br i1 %tmp414, label %bb481, label %bb382
+
+bb420: ; preds = %bb84
+ br i1 %tmp431, label %bb481, label %bb436.preheader
+
+bb436.preheader: ; preds = %bb420
+ %tmp4468 = load i8** %tmp315, align 4 ; <i8*> [#uses=2]
+ %tmp4599 = sub i32 %tmp148, %tmp330 ; <i32> [#uses=1]
+ %tmp46010 = getelementptr i8* %tmp4468, i32 %tmp4599 ; <i8*> [#uses=1]
+ %tmp46111 = load i8* %tmp46010, align 1 ; <i8> [#uses=1]
+ %tmp46212 = sub i32 %tmp155, %tmp330 ; <i32> [#uses=1]
+ %tmp46313 = getelementptr i8* %tmp4468, i32 %tmp46212 ; <i8*> [#uses=1]
+ store i8 %tmp46111, i8* %tmp46313, align 1
+ %exitcond14 = icmp eq i32 %tmp155, %tmp324 ; <i1> [#uses=1]
+ br i1 %exitcond14, label %bb481, label %bb.nph
+
+bb.nph: ; preds = %bb436.preheader
+ %tmp5 = sub i32 %tmp148, %before ; <i32> [#uses=1]
+ br label %bb478
+
+bb478: ; preds = %bb478, %bb.nph
+ %indvar6422 = phi i32 [ 0, %bb.nph ], [ %indvar.next643, %bb478 ] ; <i32> [#uses=1]
+ %indvar.next643 = add i32 %indvar6422, 1 ; <i32> [#uses=4]
+ %L490b.0 = sub i32 %tmp155, %indvar.next643 ; <i32> [#uses=1]
+ %R491b.0 = sub i32 %tmp148, %indvar.next643 ; <i32> [#uses=1]
+ %tmp440 = load %struct.RETURN** %tmp63, align 4 ; <%struct.RETURN*> [#uses=1]
+ %tmp441 = getelementptr %struct.RETURN* %tmp440, i32 0, i32 0 ; <i32*> [#uses=1]
+ %tmp442 = load i32* %tmp441, align 4 ; <i32> [#uses=2]
+ %tmp446 = load i8** %tmp315, align 4 ; <i8*> [#uses=2]
+ %tmp459 = sub i32 %R491b.0, %tmp442 ; <i32> [#uses=1]
+ %tmp460 = getelementptr i8* %tmp446, i32 %tmp459 ; <i8*> [#uses=1]
+ %tmp461 = load i8* %tmp460, align 1 ; <i8> [#uses=1]
+ %tmp462 = sub i32 %L490b.0, %tmp442 ; <i32> [#uses=1]
+ %tmp463 = getelementptr i8* %tmp446, i32 %tmp462 ; <i8*> [#uses=1]
+ store i8 %tmp461, i8* %tmp463, align 1
+ %exitcond = icmp eq i32 %indvar.next643, %tmp5 ; <i1> [#uses=1]
+ br i1 %exitcond, label %bb481, label %bb478
+
+bb481: ; preds = %bb478, %bb436.preheader, %bb420, %bb382, %bb359
+ %tmp577 = add i32 %before, -1 ; <i32> [#uses=3]
+ %tmp578 = add i32 %max154, %tmp577 ; <i32> [#uses=2]
+ %tmp581 = icmp sge i32 %tmp578, %tmp577 ; <i1> [#uses=1]
+ %max582 = select i1 %tmp581, i32 %tmp578, i32 %tmp577 ; <i32> [#uses=1]
+ %tmp584 = sub i32 %max582, %before ; <i32> [#uses=1]
+ %tmp585 = add i32 %tmp584, 1 ; <i32> [#uses=2]
+ %tmp586 = icmp sgt i32 %tmp585, -1 ; <i1> [#uses=1]
+ %max587 = select i1 %tmp586, i32 %tmp585, i32 0 ; <i32> [#uses=1]
+ %tmp591 = load %struct.RETURN** %tmp63, align 4 ; <%struct.RETURN*> [#uses=1]
+ %tmp592 = getelementptr %struct.RETURN* %tmp591, i32 0, i32 0 ; <i32*> [#uses=1]
+ %tmp593 = load i32* %tmp592, align 4 ; <i32> [#uses=1]
+ %tmp597 = load i8** %tmp315, align 4 ; <i8*> [#uses=1]
+ %tmp600621 = trunc i64 %new_item.0.0 to i32 ; <i32> [#uses=1]
+ %tmp600622 = inttoptr i32 %tmp600621 to i8* ; <i8*> [#uses=1]
+ %tmp601 = sub i32 %before, %tmp593 ; <i32> [#uses=1]
+ %tmp602 = getelementptr i8* %tmp597, i32 %tmp601 ; <i8*> [#uses=1]
+ tail call void @llvm.memcpy.i32( i8* %tmp602, i8* %tmp600622, i32 %max587, i32 1 )
+ %tmp606 = load i32* %tmp71, align 4 ; <i32> [#uses=1]
+ %tmp613 = add i32 %tmp606, %max154 ; <i32> [#uses=1]
+ store i32 %tmp613, i32* %tmp71, align 4
+ ret void
+}
diff --git a/test/CodeGen/Generic/2007-12-17-InvokeAsm.ll b/test/CodeGen/Generic/2007-12-17-InvokeAsm.ll
new file mode 100644
index 0000000..bd26481
--- /dev/null
+++ b/test/CodeGen/Generic/2007-12-17-InvokeAsm.ll
@@ -0,0 +1,15 @@
+; RUN: llc < %s -enable-eh
+
+target triple = "i686-pc-linux-gnu"
+
+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
+ unwind
+}
diff --git a/test/CodeGen/Generic/2007-12-31-UnusedSelector.ll b/test/CodeGen/Generic/2007-12-31-UnusedSelector.ll
new file mode 100644
index 0000000..fc9164f
--- /dev/null
+++ b/test/CodeGen/Generic/2007-12-31-UnusedSelector.ll
@@ -0,0 +1,36 @@
+; RUN: llc < %s -enable-eh
+; PR1833
+
+target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:32:32"
+target triple = "i686-pc-linux-gnu"
+ %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
+ invoke void @__cxa_end_catch( )
+ to label %bb14 unwind label %lpad17
+
+lpad17: ; preds = %lpad
+ %eh_select20 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector.i32( i8* null, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i8* null ) ; <i32> [#uses=0]
+ 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/test/CodeGen/Generic/2008-01-25-dag-combine-mul.ll b/test/CodeGen/Generic/2008-01-25-dag-combine-mul.ll
new file mode 100644
index 0000000..314bb05
--- /dev/null
+++ b/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/test/CodeGen/Generic/2008-01-30-LoadCrash.ll b/test/CodeGen/Generic/2008-01-30-LoadCrash.ll
new file mode 100644
index 0000000..70c3aaa
--- /dev/null
+++ b/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/test/CodeGen/Generic/2008-02-04-Ctlz.ll b/test/CodeGen/Generic/2008-02-04-Ctlz.ll
new file mode 100644
index 0000000..288bfd2
--- /dev/null
+++ b/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/test/CodeGen/Generic/2008-02-04-ExtractSubvector.ll b/test/CodeGen/Generic/2008-02-04-ExtractSubvector.ll
new file mode 100644
index 0000000..8bf82df
--- /dev/null
+++ b/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/test/CodeGen/Generic/2008-02-20-MatchingMem.ll b/test/CodeGen/Generic/2008-02-20-MatchingMem.ll
new file mode 100644
index 0000000..da1aeb5
--- /dev/null
+++ b/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/test/CodeGen/Generic/2008-02-25-NegateZero.ll b/test/CodeGen/Generic/2008-02-25-NegateZero.ll
new file mode 100644
index 0000000..97db667
--- /dev/null
+++ b/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/test/CodeGen/Generic/2008-02-26-NegatableCrash.ll b/test/CodeGen/Generic/2008-02-26-NegatableCrash.ll
new file mode 100644
index 0000000..10b3d44
--- /dev/null
+++ b/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/test/CodeGen/Generic/2008-08-07-PtrToInt-SmallerInt.ll b/test/CodeGen/Generic/2008-08-07-PtrToInt-SmallerInt.ll
new file mode 100644
index 0000000..4f95dfe
--- /dev/null
+++ b/test/CodeGen/Generic/2008-08-07-PtrToInt-SmallerInt.ll
@@ -0,0 +1,7 @@
+; RUN: llc < %s
+; PR2603
+target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:32:32"
+target triple = "i386-pc-linux-gnu"
+ %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/test/CodeGen/Generic/2009-03-17-LSR-APInt.ll b/test/CodeGen/Generic/2009-03-17-LSR-APInt.ll
new file mode 100644
index 0000000..6281ada
--- /dev/null
+++ b/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/test/CodeGen/Generic/2009-03-29-SoftFloatVectorExtract.ll b/test/CodeGen/Generic/2009-03-29-SoftFloatVectorExtract.ll
new file mode 100644
index 0000000..45b561a
--- /dev/null
+++ b/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/test/CodeGen/Generic/2009-04-10-SinkCrash.ll b/test/CodeGen/Generic/2009-04-10-SinkCrash.ll
new file mode 100644
index 0000000..125f875
--- /dev/null
+++ b/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/test/CodeGen/Generic/2009-04-28-i128-cmp-crash.ll b/test/CodeGen/Generic/2009-04-28-i128-cmp-crash.ll
new file mode 100644
index 0000000..b62f811
--- /dev/null
+++ b/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/test/CodeGen/Generic/2009-06-03-UnreachableSplitPad.ll b/test/CodeGen/Generic/2009-06-03-UnreachableSplitPad.ll
new file mode 100644
index 0000000..112cac4
--- /dev/null
+++ b/test/CodeGen/Generic/2009-06-03-UnreachableSplitPad.ll
@@ -0,0 +1,15 @@
+; RUN: llc < %s
+; PR4317
+
+declare i32 @b()
+
+define void @a() {
+entry:
+ ret void
+
+dummy:
+ invoke i32 @b() to label %reg unwind label %reg
+
+reg:
+ ret void
+}
diff --git a/test/CodeGen/Generic/2009-11-16-BadKillsCrash.ll b/test/CodeGen/Generic/2009-11-16-BadKillsCrash.ll
new file mode 100644
index 0000000..a51c75d
--- /dev/null
+++ b/test/CodeGen/Generic/2009-11-16-BadKillsCrash.ll
@@ -0,0 +1,75 @@
+; RUN: llc < %s
+; PR5495
+target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:32:32-n8:16:32"
+target triple = "i386-pc-linux-gnu"
+
+%"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]
+ %eh_ptr = call i8* @llvm.eh.exception() ; <i8*> [#uses=1]
+ %6 = call i8* @__cxa_begin_catch(i8* %eh_ptr) nounwind ; <i8*> [#uses=0]
+ unreachable
+
+lpad74: ; preds = %entry
+ unreachable
+}
diff --git a/test/CodeGen/Generic/APIntLoadStore.ll b/test/CodeGen/Generic/APIntLoadStore.ll
new file mode 100644
index 0000000..7c71a33
--- /dev/null
+++ b/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/test/CodeGen/Generic/APIntParam.ll b/test/CodeGen/Generic/APIntParam.ll
new file mode 100644
index 0000000..8aa0b49
--- /dev/null
+++ b/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/test/CodeGen/Generic/APIntSextParam.ll b/test/CodeGen/Generic/APIntSextParam.ll
new file mode 100644
index 0000000..acc0eeb
--- /dev/null
+++ b/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/test/CodeGen/Generic/APIntZextParam.ll b/test/CodeGen/Generic/APIntZextParam.ll
new file mode 100644
index 0000000..173b9fd
--- /dev/null
+++ b/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/test/CodeGen/Generic/BasicInstrs.ll b/test/CodeGen/Generic/BasicInstrs.ll
new file mode 100644
index 0000000..578431e
--- /dev/null
+++ b/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/test/CodeGen/Generic/BurgBadRegAlloc.ll b/test/CodeGen/Generic/BurgBadRegAlloc.ll
new file mode 100644
index 0000000..99d856a
--- /dev/null
+++ b/test/CodeGen/Generic/BurgBadRegAlloc.ll
@@ -0,0 +1,829 @@
+; RUN: llc < %s
+
+;; Register allocation is doing a very poor job on this routine from yyparse
+;; in Burg:
+;; -- at least two long-lived values are being allocated to %o? registers
+;; -- even worse, those registers are being saved and restored repeatedly
+;; at function calls, even though there are no intervening uses.
+;; -- outgoing args of some function calls have to be swapped, causing
+;; another write/read from stack to do the exchange (use -dregalloc=y).
+;;
+%Arity = type %struct.arity*
+ %Binding = type %struct.binding*
+ %DeltaCost = type [4 x i16]
+ %Dimension = type %struct.dimension*
+ %Index_Map = type { i32, %Item_Set* }
+ %IntList = type %struct.intlist*
+ %Item = type { %DeltaCost, %Rule }
+ %ItemArray = type %Item*
+ %Item_Set = type %struct.item_set*
+ %List = type %struct.list*
+ %Mapping = type %struct.mapping*
+ %NonTerminal = type %struct.nonterminal*
+ %Operator = type %struct.operator*
+ %Pattern = type %struct.pattern*
+ %PatternAST = type %struct.patternAST*
+ %Plank = type %struct.plank*
+ %PlankMap = type %struct.plankMap*
+ %ReadFn = type i32 ()*
+ %Rule = type %struct.rule*
+ %RuleAST = type %struct.ruleAST*
+ %StateMap = type %struct.stateMap*
+ %StrTableElement = type %struct.strTableElement*
+ %Symbol = type %struct.symbol*
+ %Table = type %struct.table*
+ %YYSTYPE = type { %IntList }
+ %struct.arity = type { i32, %List }
+ %struct.binding = type { i8*, i32 }
+ %struct.dimension = type { i16*, %Index_Map, %Mapping, i32, %PlankMap }
+ %struct.index_map = type { i32, %Item_Set* }
+ %struct.intlist = type { i32, %IntList }
+ %struct.item = type { %DeltaCost, %Rule }
+ %struct.item_set = type { i32, i32, %Operator, [2 x %Item_Set], %Item_Set, i16*, %ItemArray, %ItemArray }
+ %struct.list = type { i8*, %List }
+ %struct.mapping = type { %List*, i32, i32, i32, %Item_Set* }
+ %struct.nonterminal = type { i8*, i32, i32, i32, %PlankMap, %Rule }
+ %struct.operator = type { i8*, i32, i32, i32, i32, i32, %Table }
+ %struct.pattern = type { %NonTerminal, %Operator, [2 x %NonTerminal] }
+ %struct.patternAST = type { %Symbol, i8*, %List }
+ %struct.plank = type { i8*, %List, i32 }
+ %struct.plankMap = type { %List, i32, %StateMap }
+ %struct.rule = type { %DeltaCost, i32, i32, i32, %NonTerminal, %Pattern, i32 }
+ %struct.ruleAST = type { i8*, %PatternAST, i32, %IntList, %Rule, %StrTableElement, %StrTableElement }
+ %struct.stateMap = type { i8*, %Plank, i32, i16* }
+ %struct.strTableElement = type { i8*, %IntList, i8* }
+ %struct.symbol = type { i8*, i32, { %Operator } }
+ %struct.table = type { %Operator, %List, i16*, [2 x %Dimension], %Item_Set* }
+@yylval = external global %YYSTYPE ; <%YYSTYPE*> [#uses=1]
+@yylhs = external global [25 x i16] ; <[25 x i16]*> [#uses=1]
+@yylen = external global [25 x i16] ; <[25 x i16]*> [#uses=1]
+@yydefred = external global [43 x i16] ; <[43 x i16]*> [#uses=1]
+@yydgoto = external global [12 x i16] ; <[12 x i16]*> [#uses=1]
+@yysindex = external global [43 x i16] ; <[43 x i16]*> [#uses=2]
+@yyrindex = external global [43 x i16] ; <[43 x i16]*> [#uses=1]
+@yygindex = external global [12 x i16] ; <[12 x i16]*> [#uses=1]
+@yytable = external global [263 x i16] ; <[263 x i16]*> [#uses=4]
+@yycheck = external global [263 x i16] ; <[263 x i16]*> [#uses=4]
+@yynerrs = external global i32 ; <i32*> [#uses=3]
+@yyerrflag = external global i32 ; <i32*> [#uses=6]
+@yychar = external global i32 ; <i32*> [#uses=15]
+@yyssp = external global i16* ; <i16**> [#uses=15]
+@yyvsp = external global %YYSTYPE* ; <%YYSTYPE**> [#uses=30]
+@yyval = external global %YYSTYPE ; <%YYSTYPE*> [#uses=1]
+@yyss = external global i16* ; <i16**> [#uses=3]
+@yysslim = external global i16* ; <i16**> [#uses=3]
+@yyvs = external global %YYSTYPE* ; <%YYSTYPE**> [#uses=1]
+@.LC01 = external global [13 x i8] ; <[13 x i8]*> [#uses=1]
+@.LC1 = external global [20 x i8] ; <[20 x i8]*> [#uses=1]
+
+define i32 @yyparse() {
+bb0:
+ store i32 0, i32* @yynerrs
+ store i32 0, i32* @yyerrflag
+ store i32 -1, i32* @yychar
+ %reg113 = load i16** @yyss ; <i16*> [#uses=1]
+ %cond581 = icmp ne i16* %reg113, null ; <i1> [#uses=1]
+ br i1 %cond581, label %bb3, label %bb2
+
+bb2: ; preds = %bb0
+ %reg584 = call i32 @yygrowstack( ) ; <i32> [#uses=1]
+ %cond584 = icmp ne i32 %reg584, 0 ; <i1> [#uses=1]
+ br i1 %cond584, label %bb113, label %bb3
+
+bb3: ; preds = %bb2, %bb0
+ %reg115 = load i16** @yyss ; <i16*> [#uses=1]
+ store i16* %reg115, i16** @yyssp
+ %reg116 = load %YYSTYPE** @yyvs ; <%YYSTYPE*> [#uses=1]
+ store %YYSTYPE* %reg116, %YYSTYPE** @yyvsp
+ %reg117 = load i16** @yyssp ; <i16*> [#uses=1]
+ store i16 0, i16* %reg117
+ br label %bb4
+
+bb4: ; preds = %bb112, %bb102, %bb35, %bb31, %bb15, %bb14, %bb3
+ %reg458 = phi i32 [ %reg476, %bb112 ], [ 1, %bb102 ], [ %reg458, %bb35 ], [ %cast768, %bb31 ], [ %cast658, %bb15 ], [ %cast658, %bb14 ], [ 0, %bb3 ] ; <i32> [#uses=2]
+ %reg458-idxcast = zext i32 %reg458 to i64 ; <i64> [#uses=3]
+ %reg594 = getelementptr [43 x i16]* @yydefred, i64 0, i64 %reg458-idxcast ; <i16*> [#uses=1]
+ %reg125 = load i16* %reg594 ; <i16> [#uses=1]
+ %cast599 = sext i16 %reg125 to i32 ; <i32> [#uses=2]
+ %cond600 = icmp ne i32 %cast599, 0 ; <i1> [#uses=1]
+ br i1 %cond600, label %bb36, label %bb5
+
+bb5: ; preds = %bb4
+ %reg127 = load i32* @yychar ; <i32> [#uses=1]
+ %cond603 = icmp sge i32 %reg127, 0 ; <i1> [#uses=1]
+ br i1 %cond603, label %bb8, label %bb6
+
+bb6: ; preds = %bb5
+ %reg607 = call i32 @yylex( ) ; <i32> [#uses=1]
+ store i32 %reg607, i32* @yychar
+ %reg129 = load i32* @yychar ; <i32> [#uses=1]
+ %cond609 = icmp sge i32 %reg129, 0 ; <i1> [#uses=1]
+ br i1 %cond609, label %bb8, label %bb7
+
+bb7: ; preds = %bb6
+ store i32 0, i32* @yychar
+ br label %bb8
+
+bb8: ; preds = %bb7, %bb6, %bb5
+ %reg615 = getelementptr [43 x i16]* @yysindex, i64 0, i64 %reg458-idxcast ; <i16*> [#uses=1]
+ %reg137 = load i16* %reg615 ; <i16> [#uses=1]
+ %cast620 = sext i16 %reg137 to i32 ; <i32> [#uses=2]
+ %cond621 = icmp eq i32 %cast620, 0 ; <i1> [#uses=1]
+ br i1 %cond621, label %bb16, label %bb9
+
+bb9: ; preds = %bb8
+ %reg139 = load i32* @yychar ; <i32> [#uses=2]
+ %reg460 = add i32 %cast620, %reg139 ; <i32> [#uses=3]
+ %cond624 = icmp slt i32 %reg460, 0 ; <i1> [#uses=1]
+ br i1 %cond624, label %bb16, label %bb10
+
+bb10: ; preds = %bb9
+ %cond627 = icmp sgt i32 %reg460, 262 ; <i1> [#uses=1]
+ br i1 %cond627, label %bb16, label %bb11
+
+bb11: ; preds = %bb10
+ %reg460-idxcast = sext i32 %reg460 to i64 ; <i64> [#uses=2]
+ %reg632 = getelementptr [263 x i16]* @yycheck, i64 0, i64 %reg460-idxcast ; <i16*> [#uses=1]
+ %reg148 = load i16* %reg632 ; <i16> [#uses=1]
+ %cast637 = sext i16 %reg148 to i32 ; <i32> [#uses=1]
+ %cond639 = icmp ne i32 %cast637, %reg139 ; <i1> [#uses=1]
+ br i1 %cond639, label %bb16, label %bb12
+
+bb12: ; preds = %bb11
+ %reg150 = load i16** @yyssp ; <i16*> [#uses=1]
+ %cast640 = bitcast i16* %reg150 to i8* ; <i8*> [#uses=1]
+ %reg151 = load i16** @yysslim ; <i16*> [#uses=1]
+ %cast641 = bitcast i16* %reg151 to i8* ; <i8*> [#uses=1]
+ %cond642 = icmp ult i8* %cast640, %cast641 ; <i1> [#uses=1]
+ br i1 %cond642, label %bb14, label %bb13
+
+bb13: ; preds = %bb12
+ %reg644 = call i32 @yygrowstack( ) ; <i32> [#uses=1]
+ %cond644 = icmp ne i32 %reg644, 0 ; <i1> [#uses=1]
+ br i1 %cond644, label %bb113, label %bb14
+
+bb14: ; preds = %bb13, %bb12
+ %reg153 = load i16** @yyssp ; <i16*> [#uses=1]
+ %reg647 = getelementptr i16* %reg153, i64 1 ; <i16*> [#uses=2]
+ store i16* %reg647, i16** @yyssp
+ %reg653 = getelementptr [263 x i16]* @yytable, i64 0, i64 %reg460-idxcast ; <i16*> [#uses=1]
+ %reg162 = load i16* %reg653 ; <i16> [#uses=2]
+ %cast658 = sext i16 %reg162 to i32 ; <i32> [#uses=2]
+ store i16 %reg162, i16* %reg647
+ %reg164 = load %YYSTYPE** @yyvsp ; <%YYSTYPE*> [#uses=2]
+ %reg661 = getelementptr %YYSTYPE* %reg164, i64 1 ; <%YYSTYPE*> [#uses=1]
+ store %YYSTYPE* %reg661, %YYSTYPE** @yyvsp
+ %reg167 = load %IntList* getelementptr (%YYSTYPE* @yylval, i64 0, i32 0) ; <%IntList> [#uses=1]
+ %reg661.idx1 = getelementptr %YYSTYPE* %reg164, i64 1, i32 0 ; <%IntList*> [#uses=1]
+ store %IntList %reg167, %IntList* %reg661.idx1
+ store i32 -1, i32* @yychar
+ %reg169 = load i32* @yyerrflag ; <i32> [#uses=2]
+ %cond669 = icmp sle i32 %reg169, 0 ; <i1> [#uses=1]
+ br i1 %cond669, label %bb4, label %bb15
+
+bb15: ; preds = %bb14
+ %reg171 = add i32 %reg169, -1 ; <i32> [#uses=1]
+ store i32 %reg171, i32* @yyerrflag
+ br label %bb4
+
+bb16: ; preds = %bb11, %bb10, %bb9, %bb8
+ %reg677 = getelementptr [43 x i16]* @yyrindex, i64 0, i64 %reg458-idxcast ; <i16*> [#uses=1]
+ %reg178 = load i16* %reg677 ; <i16> [#uses=1]
+ %cast682 = sext i16 %reg178 to i32 ; <i32> [#uses=2]
+ %cond683 = icmp eq i32 %cast682, 0 ; <i1> [#uses=1]
+ br i1 %cond683, label %bb21, label %bb17
+
+bb17: ; preds = %bb16
+ %reg180 = load i32* @yychar ; <i32> [#uses=2]
+ %reg463 = add i32 %cast682, %reg180 ; <i32> [#uses=3]
+ %cond686 = icmp slt i32 %reg463, 0 ; <i1> [#uses=1]
+ br i1 %cond686, label %bb21, label %bb18
+
+bb18: ; preds = %bb17
+ %cond689 = icmp sgt i32 %reg463, 262 ; <i1> [#uses=1]
+ br i1 %cond689, label %bb21, label %bb19
+
+bb19: ; preds = %bb18
+ %reg463-idxcast = sext i32 %reg463 to i64 ; <i64> [#uses=2]
+ %reg694 = getelementptr [263 x i16]* @yycheck, i64 0, i64 %reg463-idxcast ; <i16*> [#uses=1]
+ %reg189 = load i16* %reg694 ; <i16> [#uses=1]
+ %cast699 = sext i16 %reg189 to i32 ; <i32> [#uses=1]
+ %cond701 = icmp ne i32 %cast699, %reg180 ; <i1> [#uses=1]
+ br i1 %cond701, label %bb21, label %bb20
+
+bb20: ; preds = %bb19
+ %reg704 = getelementptr [263 x i16]* @yytable, i64 0, i64 %reg463-idxcast ; <i16*> [#uses=1]
+ %reg197 = load i16* %reg704 ; <i16> [#uses=1]
+ %cast709 = sext i16 %reg197 to i32 ; <i32> [#uses=1]
+ br label %bb36
+
+bb21: ; preds = %bb19, %bb18, %bb17, %bb16
+ %reg198 = load i32* @yyerrflag ; <i32> [#uses=1]
+ %cond711 = icmp ne i32 %reg198, 0 ; <i1> [#uses=1]
+ br i1 %cond711, label %bb23, label %bb22
+
+bb22: ; preds = %bb21
+ call void @yyerror( i8* getelementptr ([13 x i8]* @.LC01, i64 0, i64 0) )
+ %reg200 = load i32* @yynerrs ; <i32> [#uses=1]
+ %reg201 = add i32 %reg200, 1 ; <i32> [#uses=1]
+ store i32 %reg201, i32* @yynerrs
+ br label %bb23
+
+bb23: ; preds = %bb22, %bb21
+ %reg202 = load i32* @yyerrflag ; <i32> [#uses=1]
+ %cond719 = icmp sgt i32 %reg202, 2 ; <i1> [#uses=1]
+ br i1 %cond719, label %bb34, label %bb24
+
+bb24: ; preds = %bb23
+ store i32 3, i32* @yyerrflag
+ %reg241 = load i16** @yyss ; <i16*> [#uses=1]
+ %cast778 = bitcast i16* %reg241 to i8* ; <i8*> [#uses=1]
+ br label %bb25
+
+bb25: ; preds = %bb33, %bb24
+ %reg204 = load i16** @yyssp ; <i16*> [#uses=4]
+ %reg206 = load i16* %reg204 ; <i16> [#uses=1]
+ %reg206-idxcast = sext i16 %reg206 to i64 ; <i64> [#uses=1]
+ %reg727 = getelementptr [43 x i16]* @yysindex, i64 0, i64 %reg206-idxcast ; <i16*> [#uses=1]
+ %reg212 = load i16* %reg727 ; <i16> [#uses=2]
+ %cast732 = sext i16 %reg212 to i32 ; <i32> [#uses=2]
+ %cond733 = icmp eq i32 %cast732, 0 ; <i1> [#uses=1]
+ br i1 %cond733, label %bb32, label %bb26
+
+bb26: ; preds = %bb25
+ %reg466 = add i32 %cast732, 256 ; <i32> [#uses=2]
+ %cond736 = icmp slt i32 %reg466, 0 ; <i1> [#uses=1]
+ br i1 %cond736, label %bb32, label %bb27
+
+bb27: ; preds = %bb26
+ %cond739 = icmp sgt i32 %reg466, 262 ; <i1> [#uses=1]
+ br i1 %cond739, label %bb32, label %bb28
+
+bb28: ; preds = %bb27
+ %reg212-idxcast = sext i16 %reg212 to i64 ; <i64> [#uses=1]
+ %reg212-idxcast-offset = add i64 %reg212-idxcast, 256 ; <i64> [#uses=2]
+ %reg744 = getelementptr [263 x i16]* @yycheck, i64 0, i64 %reg212-idxcast-offset ; <i16*> [#uses=1]
+ %reg221 = load i16* %reg744 ; <i16> [#uses=1]
+ %cond748 = icmp ne i16 %reg221, 256 ; <i1> [#uses=1]
+ br i1 %cond748, label %bb32, label %bb29
+
+bb29: ; preds = %bb28
+ %cast750 = bitcast i16* %reg204 to i8* ; <i8*> [#uses=1]
+ %reg223 = load i16** @yysslim ; <i16*> [#uses=1]
+ %cast751 = bitcast i16* %reg223 to i8* ; <i8*> [#uses=1]
+ %cond752 = icmp ult i8* %cast750, %cast751 ; <i1> [#uses=1]
+ br i1 %cond752, label %bb31, label %bb30
+
+bb30: ; preds = %bb29
+ %reg754 = call i32 @yygrowstack( ) ; <i32> [#uses=1]
+ %cond754 = icmp ne i32 %reg754, 0 ; <i1> [#uses=1]
+ br i1 %cond754, label %bb113, label %bb31
+
+bb31: ; preds = %bb30, %bb29
+ %reg225 = load i16** @yyssp ; <i16*> [#uses=1]
+ %reg757 = getelementptr i16* %reg225, i64 1 ; <i16*> [#uses=2]
+ store i16* %reg757, i16** @yyssp
+ %reg763 = getelementptr [263 x i16]* @yytable, i64 0, i64 %reg212-idxcast-offset ; <i16*> [#uses=1]
+ %reg234 = load i16* %reg763 ; <i16> [#uses=2]
+ %cast768 = sext i16 %reg234 to i32 ; <i32> [#uses=1]
+ store i16 %reg234, i16* %reg757
+ %reg236 = load %YYSTYPE** @yyvsp ; <%YYSTYPE*> [#uses=2]
+ %reg771 = getelementptr %YYSTYPE* %reg236, i64 1 ; <%YYSTYPE*> [#uses=1]
+ store %YYSTYPE* %reg771, %YYSTYPE** @yyvsp
+ %reg239 = load %IntList* getelementptr (%YYSTYPE* @yylval, i64 0, i32 0) ; <%IntList> [#uses=1]
+ %reg771.idx1 = getelementptr %YYSTYPE* %reg236, i64 1, i32 0 ; <%IntList*> [#uses=1]
+ store %IntList %reg239, %IntList* %reg771.idx1
+ br label %bb4
+
+bb32: ; preds = %bb28, %bb27, %bb26, %bb25
+ %cast777 = bitcast i16* %reg204 to i8* ; <i8*> [#uses=1]
+ %cond779 = icmp ule i8* %cast777, %cast778 ; <i1> [#uses=1]
+ br i1 %cond779, label %UnifiedExitNode, label %bb33
+
+bb33: ; preds = %bb32
+ %reg781 = getelementptr i16* %reg204, i64 -1 ; <i16*> [#uses=1]
+ store i16* %reg781, i16** @yyssp
+ %reg244 = load %YYSTYPE** @yyvsp ; <%YYSTYPE*> [#uses=1]
+ %reg786 = getelementptr %YYSTYPE* %reg244, i64 -1 ; <%YYSTYPE*> [#uses=1]
+ store %YYSTYPE* %reg786, %YYSTYPE** @yyvsp
+ br label %bb25
+
+bb34: ; preds = %bb23
+ %reg246 = load i32* @yychar ; <i32> [#uses=1]
+ %cond791 = icmp eq i32 %reg246, 0 ; <i1> [#uses=1]
+ br i1 %cond791, label %UnifiedExitNode, label %bb35
+
+bb35: ; preds = %bb34
+ store i32 -1, i32* @yychar
+ br label %bb4
+
+bb36: ; preds = %bb20, %bb4
+ %reg468 = phi i32 [ %cast709, %bb20 ], [ %cast599, %bb4 ] ; <i32> [#uses=31]
+ %reg468-idxcast = sext i32 %reg468 to i64 ; <i64> [#uses=2]
+ %reg796 = getelementptr [25 x i16]* @yylen, i64 0, i64 %reg468-idxcast ; <i16*> [#uses=1]
+ %reg254 = load i16* %reg796 ; <i16> [#uses=2]
+ %reg259 = load %YYSTYPE** @yyvsp ; <%YYSTYPE*> [#uses=1]
+ %reg254-idxcast = sext i16 %reg254 to i64 ; <i64> [#uses=1]
+ %reg254-idxcast-scale = mul i64 %reg254-idxcast, -1 ; <i64> [#uses=1]
+ %reg254-idxcast-scale-offset = add i64 %reg254-idxcast-scale, 1 ; <i64> [#uses=1]
+ %reg261.idx1 = getelementptr %YYSTYPE* %reg259, i64 %reg254-idxcast-scale-offset, i32 0 ; <%IntList*> [#uses=1]
+ %reg261 = load %IntList* %reg261.idx1 ; <%IntList> [#uses=1]
+ store %IntList %reg261, %IntList* getelementptr (%YYSTYPE* @yyval, i64 0, i32 0)
+ %cond812 = icmp eq i32 %reg468, 13 ; <i1> [#uses=1]
+ br i1 %cond812, label %bb85, label %bb37
+
+bb37: ; preds = %bb36
+ %cond814 = icmp sgt i32 %reg468, 13 ; <i1> [#uses=1]
+ br i1 %cond814, label %bb56, label %bb38
+
+bb38: ; preds = %bb37
+ %cond817 = icmp eq i32 %reg468, 7 ; <i1> [#uses=1]
+ br i1 %cond817, label %bb79, label %bb39
+
+bb39: ; preds = %bb38
+ %cond819 = icmp sgt i32 %reg468, 7 ; <i1> [#uses=1]
+ br i1 %cond819, label %bb48, label %bb40
+
+bb40: ; preds = %bb39
+ %cond822 = icmp eq i32 %reg468, 4 ; <i1> [#uses=1]
+ br i1 %cond822, label %bb76, label %bb41
+
+bb41: ; preds = %bb40
+ %cond824 = icmp sgt i32 %reg468, 4 ; <i1> [#uses=1]
+ br i1 %cond824, label %bb45, label %bb42
+
+bb42: ; preds = %bb41
+ %cond827 = icmp eq i32 %reg468, 2 ; <i1> [#uses=1]
+ br i1 %cond827, label %bb74, label %bb43
+
+bb43: ; preds = %bb42
+ %cond829 = icmp eq i32 %reg468, 3 ; <i1> [#uses=1]
+ br i1 %cond829, label %bb75, label %bb97
+
+bb45: ; preds = %bb41
+ %cond831 = icmp eq i32 %reg468, 5 ; <i1> [#uses=1]
+ br i1 %cond831, label %bb77, label %bb46
+
+bb46: ; preds = %bb45
+ %cond833 = icmp eq i32 %reg468, 6 ; <i1> [#uses=1]
+ br i1 %cond833, label %bb78, label %bb97
+
+bb48: ; preds = %bb39
+ %cond835 = icmp eq i32 %reg468, 10 ; <i1> [#uses=1]
+ br i1 %cond835, label %bb82, label %bb49
+
+bb49: ; preds = %bb48
+ %cond837 = icmp sgt i32 %reg468, 10 ; <i1> [#uses=1]
+ br i1 %cond837, label %bb53, label %bb50
+
+bb50: ; preds = %bb49
+ %cond840 = icmp eq i32 %reg468, 8 ; <i1> [#uses=1]
+ br i1 %cond840, label %bb80, label %bb51
+
+bb51: ; preds = %bb50
+ %cond842 = icmp eq i32 %reg468, 9 ; <i1> [#uses=1]
+ br i1 %cond842, label %bb81, label %bb97
+
+bb53: ; preds = %bb49
+ %cond844 = icmp eq i32 %reg468, 11 ; <i1> [#uses=1]
+ br i1 %cond844, label %bb83, label %bb54
+
+bb54: ; preds = %bb53
+ %cond846 = icmp eq i32 %reg468, 12 ; <i1> [#uses=1]
+ br i1 %cond846, label %bb84, label %bb97
+
+bb56: ; preds = %bb37
+ %cond848 = icmp eq i32 %reg468, 19 ; <i1> [#uses=1]
+ br i1 %cond848, label %bb91, label %bb57
+
+bb57: ; preds = %bb56
+ %cond850 = icmp sgt i32 %reg468, 19 ; <i1> [#uses=1]
+ br i1 %cond850, label %bb66, label %bb58
+
+bb58: ; preds = %bb57
+ %cond853 = icmp eq i32 %reg468, 16 ; <i1> [#uses=1]
+ br i1 %cond853, label %bb88, label %bb59
+
+bb59: ; preds = %bb58
+ %cond855 = icmp sgt i32 %reg468, 16 ; <i1> [#uses=1]
+ br i1 %cond855, label %bb63, label %bb60
+
+bb60: ; preds = %bb59
+ %cond858 = icmp eq i32 %reg468, 14 ; <i1> [#uses=1]
+ br i1 %cond858, label %bb86, label %bb61
+
+bb61: ; preds = %bb60
+ %cond860 = icmp eq i32 %reg468, 15 ; <i1> [#uses=1]
+ br i1 %cond860, label %bb87, label %bb97
+
+bb63: ; preds = %bb59
+ %cond862 = icmp eq i32 %reg468, 17 ; <i1> [#uses=1]
+ br i1 %cond862, label %bb89, label %bb64
+
+bb64: ; preds = %bb63
+ %cond864 = icmp eq i32 %reg468, 18 ; <i1> [#uses=1]
+ br i1 %cond864, label %bb90, label %bb97
+
+bb66: ; preds = %bb57
+ %cond866 = icmp eq i32 %reg468, 22 ; <i1> [#uses=1]
+ br i1 %cond866, label %bb94, label %bb67
+
+bb67: ; preds = %bb66
+ %cond868 = icmp sgt i32 %reg468, 22 ; <i1> [#uses=1]
+ br i1 %cond868, label %bb71, label %bb68
+
+bb68: ; preds = %bb67
+ %cond871 = icmp eq i32 %reg468, 20 ; <i1> [#uses=1]
+ br i1 %cond871, label %bb92, label %bb69
+
+bb69: ; preds = %bb68
+ %cond873 = icmp eq i32 %reg468, 21 ; <i1> [#uses=1]
+ br i1 %cond873, label %bb93, label %bb97
+
+bb71: ; preds = %bb67
+ %cond875 = icmp eq i32 %reg468, 23 ; <i1> [#uses=1]
+ br i1 %cond875, label %bb95, label %bb72
+
+bb72: ; preds = %bb71
+ %cond877 = icmp eq i32 %reg468, 24 ; <i1> [#uses=1]
+ br i1 %cond877, label %bb96, label %bb97
+
+bb74: ; preds = %bb42
+ call void @yyfinished( )
+ br label %bb97
+
+bb75: ; preds = %bb43
+ %reg262 = load %YYSTYPE** @yyvsp ; <%YYSTYPE*> [#uses=2]
+ %reg264.idx1 = getelementptr %YYSTYPE* %reg262, i64 -2, i32 0 ; <%IntList*> [#uses=1]
+ %reg264 = load %IntList* %reg264.idx1 ; <%IntList> [#uses=1]
+ %reg265.idx = getelementptr %YYSTYPE* %reg262, i64 0, i32 0 ; <%IntList*> [#uses=1]
+ %reg265 = load %IntList* %reg265.idx ; <%IntList> [#uses=1]
+ %cast889 = bitcast %IntList %reg265 to %List ; <%List> [#uses=1]
+ %cast890 = bitcast %IntList %reg264 to %List ; <%List> [#uses=1]
+ call void @doSpec( %List %cast890, %List %cast889 )
+ br label %bb97
+
+bb76: ; preds = %bb40
+ store %IntList null, %IntList* getelementptr (%YYSTYPE* @yyval, i64 0, i32 0)
+ br label %bb97
+
+bb77: ; preds = %bb45
+ %reg269 = load %YYSTYPE** @yyvsp ; <%YYSTYPE*> [#uses=2]
+ %cast894 = getelementptr %YYSTYPE* %reg269, i64 0, i32 0 ; <%IntList*> [#uses=1]
+ %reg271 = load %IntList* %cast894 ; <%IntList> [#uses=1]
+ %reg271.upgrd.1 = bitcast %IntList %reg271 to i8* ; <i8*> [#uses=1]
+ %reg272.idx1 = getelementptr %YYSTYPE* %reg269, i64 -1, i32 0 ; <%IntList*> [#uses=1]
+ %reg272 = load %IntList* %reg272.idx1 ; <%IntList> [#uses=1]
+ %cast901 = bitcast %IntList %reg272 to %List ; <%List> [#uses=1]
+ %reg901 = call %List @newList( i8* %reg271.upgrd.1, %List %cast901 ) ; <%List> [#uses=1]
+ bitcast %List %reg901 to %IntList ; <%IntList>:0 [#uses=1]
+ store %IntList %0, %IntList* getelementptr (%YYSTYPE* @yyval, i64 0, i32 0)
+ br label %bb97
+
+bb78: ; preds = %bb46
+ %reg275 = load %YYSTYPE** @yyvsp ; <%YYSTYPE*> [#uses=1]
+ %reg277.idx = getelementptr %YYSTYPE* %reg275, i64 0, i32 0 ; <%IntList*> [#uses=1]
+ %reg277 = load %IntList* %reg277.idx ; <%IntList> [#uses=1]
+ %cast907 = bitcast %IntList %reg277 to %List ; <%List> [#uses=1]
+ %reg907 = call %Arity @newArity( i32 -1, %List %cast907 ) ; <%Arity> [#uses=1]
+ bitcast %Arity %reg907 to %IntList ; <%IntList>:1 [#uses=1]
+ store %IntList %1, %IntList* getelementptr (%YYSTYPE* @yyval, i64 0, i32 0)
+ br label %bb97
+
+bb79: ; preds = %bb38
+ store %IntList null, %IntList* getelementptr (%YYSTYPE* @yyval, i64 0, i32 0)
+ %reg281 = load %YYSTYPE** @yyvsp ; <%YYSTYPE*> [#uses=1]
+ %cast912 = getelementptr %YYSTYPE* %reg281, i64 0, i32 0 ; <%IntList*> [#uses=1]
+ %reg282 = load %IntList* %cast912 ; <%IntList> [#uses=1]
+ %reg282.upgrd.2 = bitcast %IntList %reg282 to %List ; <%List> [#uses=1]
+ call void @doGram( %List %reg282.upgrd.2 )
+ br label %bb97
+
+bb80: ; preds = %bb50
+ store %IntList null, %IntList* getelementptr (%YYSTYPE* @yyval, i64 0, i32 0)
+ %reg285 = load %YYSTYPE** @yyvsp ; <%YYSTYPE*> [#uses=1]
+ %cast917 = getelementptr %YYSTYPE* %reg285, i64 0, i32 0 ; <%IntList*> [#uses=1]
+ %reg286 = load %IntList* %cast917 ; <%IntList> [#uses=1]
+ %reg286.upgrd.3 = bitcast %IntList %reg286 to i8* ; <i8*> [#uses=1]
+ call void @doStart( i8* %reg286.upgrd.3 )
+ br label %bb97
+
+bb81: ; preds = %bb51
+ store %IntList null, %IntList* getelementptr (%YYSTYPE* @yyval, i64 0, i32 0)
+ br label %bb97
+
+bb82: ; preds = %bb48
+ %reg290 = load %YYSTYPE** @yyvsp ; <%YYSTYPE*> [#uses=2]
+ %cast923 = getelementptr %YYSTYPE* %reg290, i64 0, i32 0 ; <%IntList*> [#uses=1]
+ %reg292 = load %IntList* %cast923 ; <%IntList> [#uses=1]
+ %reg292.upgrd.4 = bitcast %IntList %reg292 to i8* ; <i8*> [#uses=1]
+ %reg293.idx1 = getelementptr %YYSTYPE* %reg290, i64 -1, i32 0 ; <%IntList*> [#uses=1]
+ %reg293 = load %IntList* %reg293.idx1 ; <%IntList> [#uses=1]
+ %cast930 = bitcast %IntList %reg293 to %List ; <%List> [#uses=1]
+ %reg930 = call %List @newList( i8* %reg292.upgrd.4, %List %cast930 ) ; <%List> [#uses=1]
+ bitcast %List %reg930 to %IntList ; <%IntList>:2 [#uses=1]
+ store %IntList %2, %IntList* getelementptr (%YYSTYPE* @yyval, i64 0, i32 0)
+ br label %bb97
+
+bb83: ; preds = %bb53
+ store %IntList null, %IntList* getelementptr (%YYSTYPE* @yyval, i64 0, i32 0)
+ br label %bb97
+
+bb84: ; preds = %bb54
+ %reg298 = load %YYSTYPE** @yyvsp ; <%YYSTYPE*> [#uses=2]
+ %cast936 = getelementptr %YYSTYPE* %reg298, i64 0, i32 0 ; <%IntList*> [#uses=1]
+ %reg300 = load %IntList* %cast936 ; <%IntList> [#uses=1]
+ %reg300.upgrd.5 = bitcast %IntList %reg300 to i8* ; <i8*> [#uses=1]
+ %reg301.idx1 = getelementptr %YYSTYPE* %reg298, i64 -1, i32 0 ; <%IntList*> [#uses=1]
+ %reg301 = load %IntList* %reg301.idx1 ; <%IntList> [#uses=1]
+ %cast943 = bitcast %IntList %reg301 to %List ; <%List> [#uses=1]
+ %reg943 = call %List @newList( i8* %reg300.upgrd.5, %List %cast943 ) ; <%List> [#uses=1]
+ bitcast %List %reg943 to %IntList ; <%IntList>:3 [#uses=1]
+ store %IntList %3, %IntList* getelementptr (%YYSTYPE* @yyval, i64 0, i32 0)
+ br label %bb97
+
+bb85: ; preds = %bb36
+ %reg304 = load %YYSTYPE** @yyvsp ; <%YYSTYPE*> [#uses=2]
+ %cast9521 = getelementptr %YYSTYPE* %reg304, i64 -2, i32 0 ; <%IntList*> [#uses=1]
+ %reg306 = load %IntList* %cast9521 ; <%IntList> [#uses=1]
+ %reg306.upgrd.6 = bitcast %IntList %reg306 to i8* ; <i8*> [#uses=1]
+ %cast953 = bitcast %YYSTYPE* %reg304 to i32* ; <i32*> [#uses=1]
+ %reg307 = load i32* %cast953 ; <i32> [#uses=1]
+ %reg955 = call %Binding @newBinding( i8* %reg306.upgrd.6, i32 %reg307 ) ; <%Binding> [#uses=1]
+ bitcast %Binding %reg955 to %IntList ; <%IntList>:4 [#uses=1]
+ store %IntList %4, %IntList* getelementptr (%YYSTYPE* @yyval, i64 0, i32 0)
+ br label %bb97
+
+bb86: ; preds = %bb60
+ store %IntList null, %IntList* getelementptr (%YYSTYPE* @yyval, i64 0, i32 0)
+ br label %bb97
+
+bb87: ; preds = %bb61
+ %reg312 = load %YYSTYPE** @yyvsp ; <%YYSTYPE*> [#uses=2]
+ %cast961 = getelementptr %YYSTYPE* %reg312, i64 0, i32 0 ; <%IntList*> [#uses=1]
+ %reg314 = load %IntList* %cast961 ; <%IntList> [#uses=1]
+ %reg314.upgrd.7 = bitcast %IntList %reg314 to i8* ; <i8*> [#uses=1]
+ %reg315.idx1 = getelementptr %YYSTYPE* %reg312, i64 -1, i32 0 ; <%IntList*> [#uses=1]
+ %reg315 = load %IntList* %reg315.idx1 ; <%IntList> [#uses=1]
+ %cast968 = bitcast %IntList %reg315 to %List ; <%List> [#uses=1]
+ %reg968 = call %List @newList( i8* %reg314.upgrd.7, %List %cast968 ) ; <%List> [#uses=1]
+ bitcast %List %reg968 to %IntList ; <%IntList>:5 [#uses=1]
+ store %IntList %5, %IntList* getelementptr (%YYSTYPE* @yyval, i64 0, i32 0)
+ br label %bb97
+
+bb88: ; preds = %bb58
+ %reg318 = load %YYSTYPE** @yyvsp ; <%YYSTYPE*> [#uses=4]
+ %cast9791 = getelementptr %YYSTYPE* %reg318, i64 -6, i32 0 ; <%IntList*> [#uses=1]
+ %reg322 = load %IntList* %cast9791 ; <%IntList> [#uses=1]
+ %reg322.upgrd.8 = bitcast %IntList %reg322 to i8* ; <i8*> [#uses=1]
+ %reg323.idx1 = getelementptr %YYSTYPE* %reg318, i64 -4, i32 0 ; <%IntList*> [#uses=1]
+ %reg323 = load %IntList* %reg323.idx1 ; <%IntList> [#uses=1]
+ %reg987 = getelementptr %YYSTYPE* %reg318, i64 -2 ; <%YYSTYPE*> [#uses=1]
+ %cast989 = bitcast %YYSTYPE* %reg987 to i32* ; <i32*> [#uses=1]
+ %reg324 = load i32* %cast989 ; <i32> [#uses=1]
+ %reg325.idx1 = getelementptr %YYSTYPE* %reg318, i64 -1, i32 0 ; <%IntList*> [#uses=1]
+ %reg325 = load %IntList* %reg325.idx1 ; <%IntList> [#uses=1]
+ %cast998 = bitcast %IntList %reg323 to %PatternAST ; <%PatternAST> [#uses=1]
+ %reg996 = call %RuleAST @newRuleAST( i8* %reg322.upgrd.8, %PatternAST %cast998, i32 %reg324, %IntList %reg325 ) ; <%RuleAST> [#uses=1]
+ bitcast %RuleAST %reg996 to %IntList ; <%IntList>:6 [#uses=1]
+ store %IntList %6, %IntList* getelementptr (%YYSTYPE* @yyval, i64 0, i32 0)
+ br label %bb97
+
+bb89: ; preds = %bb63
+ %reg328 = load %YYSTYPE** @yyvsp ; <%YYSTYPE*> [#uses=1]
+ %cast1002 = getelementptr %YYSTYPE* %reg328, i64 0, i32 0 ; <%IntList*> [#uses=1]
+ %reg329 = load %IntList* %cast1002 ; <%IntList> [#uses=1]
+ %reg329.upgrd.9 = bitcast %IntList %reg329 to i8* ; <i8*> [#uses=1]
+ %reg1004 = call %PatternAST @newPatternAST( i8* %reg329.upgrd.9, %List null ) ; <%PatternAST> [#uses=1]
+ bitcast %PatternAST %reg1004 to %IntList ; <%IntList>:7 [#uses=1]
+ store %IntList %7, %IntList* getelementptr (%YYSTYPE* @yyval, i64 0, i32 0)
+ br label %bb97
+
+bb90: ; preds = %bb64
+ %reg333 = load %YYSTYPE** @yyvsp ; <%YYSTYPE*> [#uses=2]
+ %cast10131 = getelementptr %YYSTYPE* %reg333, i64 -1, i32 0 ; <%IntList*> [#uses=1]
+ %reg335 = load %IntList* %cast10131 ; <%IntList> [#uses=1]
+ %reg335.upgrd.10 = bitcast %IntList %reg335 to i8* ; <i8*> [#uses=1]
+ %reg1015 = call %List @newList( i8* %reg335.upgrd.10, %List null ) ; <%List> [#uses=1]
+ %cast10211 = getelementptr %YYSTYPE* %reg333, i64 -3, i32 0 ; <%IntList*> [#uses=1]
+ %reg338 = load %IntList* %cast10211 ; <%IntList> [#uses=1]
+ %reg338.upgrd.11 = bitcast %IntList %reg338 to i8* ; <i8*> [#uses=1]
+ %reg1023 = call %PatternAST @newPatternAST( i8* %reg338.upgrd.11, %List %reg1015 ) ; <%PatternAST> [#uses=1]
+ bitcast %PatternAST %reg1023 to %IntList ; <%IntList>:8 [#uses=1]
+ store %IntList %8, %IntList* getelementptr (%YYSTYPE* @yyval, i64 0, i32 0)
+ br label %bb97
+
+bb91: ; preds = %bb56
+ %reg341 = load %YYSTYPE** @yyvsp ; <%YYSTYPE*> [#uses=3]
+ %cast10331 = getelementptr %YYSTYPE* %reg341, i64 -1, i32 0 ; <%IntList*> [#uses=1]
+ %reg344 = load %IntList* %cast10331 ; <%IntList> [#uses=1]
+ %reg344.upgrd.12 = bitcast %IntList %reg344 to i8* ; <i8*> [#uses=1]
+ %reg1035 = call %List @newList( i8* %reg344.upgrd.12, %List null ) ; <%List> [#uses=1]
+ %cast10411 = getelementptr %YYSTYPE* %reg341, i64 -3, i32 0 ; <%IntList*> [#uses=1]
+ %reg347 = load %IntList* %cast10411 ; <%IntList> [#uses=1]
+ %reg347.upgrd.13 = bitcast %IntList %reg347 to i8* ; <i8*> [#uses=1]
+ %reg1043 = call %List @newList( i8* %reg347.upgrd.13, %List %reg1035 ) ; <%List> [#uses=1]
+ %cast10491 = getelementptr %YYSTYPE* %reg341, i64 -5, i32 0 ; <%IntList*> [#uses=1]
+ %reg349 = load %IntList* %cast10491 ; <%IntList> [#uses=1]
+ %reg349.upgrd.14 = bitcast %IntList %reg349 to i8* ; <i8*> [#uses=1]
+ %reg1051 = call %PatternAST @newPatternAST( i8* %reg349.upgrd.14, %List %reg1043 ) ; <%PatternAST> [#uses=1]
+ bitcast %PatternAST %reg1051 to %IntList ; <%IntList>:9 [#uses=1]
+ store %IntList %9, %IntList* getelementptr (%YYSTYPE* @yyval, i64 0, i32 0)
+ br label %bb97
+
+bb92: ; preds = %bb68
+ store %IntList null, %IntList* getelementptr (%YYSTYPE* @yyval, i64 0, i32 0)
+ br label %bb97
+
+bb93: ; preds = %bb69
+ %reg354 = load %YYSTYPE** @yyvsp ; <%YYSTYPE*> [#uses=2]
+ %reg1059 = getelementptr %YYSTYPE* %reg354, i64 -2 ; <%YYSTYPE*> [#uses=1]
+ %cast1061 = bitcast %YYSTYPE* %reg1059 to i32* ; <i32*> [#uses=1]
+ %reg356 = load i32* %cast1061 ; <i32> [#uses=1]
+ %reg357.idx1 = getelementptr %YYSTYPE* %reg354, i64 -1, i32 0 ; <%IntList*> [#uses=1]
+ %reg357 = load %IntList* %reg357.idx1 ; <%IntList> [#uses=1]
+ %reg1068 = call %IntList @newIntList( i32 %reg356, %IntList %reg357 ) ; <%IntList> [#uses=1]
+ store %IntList %reg1068, %IntList* getelementptr (%YYSTYPE* @yyval, i64 0, i32 0)
+ br label %bb97
+
+bb94: ; preds = %bb66
+ store %IntList null, %IntList* getelementptr (%YYSTYPE* @yyval, i64 0, i32 0)
+ br label %bb97
+
+bb95: ; preds = %bb71
+ %reg362 = load %YYSTYPE** @yyvsp ; <%YYSTYPE*> [#uses=2]
+ %reg1076 = getelementptr %YYSTYPE* %reg362, i64 -1 ; <%YYSTYPE*> [#uses=1]
+ %cast1078 = bitcast %YYSTYPE* %reg1076 to i32* ; <i32*> [#uses=1]
+ %reg364 = load i32* %cast1078 ; <i32> [#uses=1]
+ %reg365.idx = getelementptr %YYSTYPE* %reg362, i64 0, i32 0 ; <%IntList*> [#uses=1]
+ %reg365 = load %IntList* %reg365.idx ; <%IntList> [#uses=1]
+ %reg1081 = call %IntList @newIntList( i32 %reg364, %IntList %reg365 ) ; <%IntList> [#uses=1]
+ store %IntList %reg1081, %IntList* getelementptr (%YYSTYPE* @yyval, i64 0, i32 0)
+ br label %bb97
+
+bb96: ; preds = %bb72
+ %reg368 = load %YYSTYPE** @yyvsp ; <%YYSTYPE*> [#uses=2]
+ %reg1088 = getelementptr %YYSTYPE* %reg368, i64 -1 ; <%YYSTYPE*> [#uses=1]
+ %cast1090 = bitcast %YYSTYPE* %reg1088 to i32* ; <i32*> [#uses=1]
+ %reg370 = load i32* %cast1090 ; <i32> [#uses=1]
+ %reg371.idx = getelementptr %YYSTYPE* %reg368, i64 0, i32 0 ; <%IntList*> [#uses=1]
+ %reg371 = load %IntList* %reg371.idx ; <%IntList> [#uses=1]
+ %reg1093 = call %IntList @newIntList( i32 %reg370, %IntList %reg371 ) ; <%IntList> [#uses=1]
+ store %IntList %reg1093, %IntList* getelementptr (%YYSTYPE* @yyval, i64 0, i32 0)
+ br label %bb97
+
+bb97: ; preds = %bb96, %bb95, %bb94, %bb93, %bb92, %bb91, %bb90, %bb89, %bb88, %bb87, %bb86, %bb85, %bb84, %bb83, %bb82, %bb81, %bb80, %bb79, %bb78, %bb77, %bb76, %bb75, %bb74, %bb72, %bb69, %bb64, %bb61, %bb54, %bb51, %bb46, %bb43
+ %cast1097 = sext i16 %reg254 to i64 ; <i64> [#uses=3]
+ %reg375 = add i64 %cast1097, %cast1097 ; <i64> [#uses=1]
+ %reg377 = load i16** @yyssp ; <i16*> [#uses=1]
+ %cast379 = ptrtoint i16* %reg377 to i64 ; <i64> [#uses=1]
+ %reg381 = sub i64 %cast379, %reg375 ; <i64> [#uses=1]
+ %cast1099 = inttoptr i64 %reg381 to i16* ; <i16*> [#uses=1]
+ store i16* %cast1099, i16** @yyssp
+ %reg382 = load i16** @yyssp ; <i16*> [#uses=3]
+ %reg383 = load i16* %reg382 ; <i16> [#uses=1]
+ %cast1103 = sext i16 %reg383 to i32 ; <i32> [#uses=3]
+ %reg385 = mul i64 %cast1097, 8 ; <i64> [#uses=1]
+ %reg387 = load %YYSTYPE** @yyvsp ; <%YYSTYPE*> [#uses=1]
+ %cast389 = ptrtoint %YYSTYPE* %reg387 to i64 ; <i64> [#uses=1]
+ %reg391 = sub i64 %cast389, %reg385 ; <i64> [#uses=1]
+ %cast1108 = inttoptr i64 %reg391 to %YYSTYPE* ; <%YYSTYPE*> [#uses=1]
+ store %YYSTYPE* %cast1108, %YYSTYPE** @yyvsp
+ %reg1111 = getelementptr [25 x i16]* @yylhs, i64 0, i64 %reg468-idxcast ; <i16*> [#uses=1]
+ %reg398 = load i16* %reg1111 ; <i16> [#uses=2]
+ %cast1116 = sext i16 %reg398 to i32 ; <i32> [#uses=1]
+ %cond1117 = icmp ne i32 %cast1103, 0 ; <i1> [#uses=1]
+ br i1 %cond1117, label %bb104, label %bb98
+
+bb98: ; preds = %bb97
+ %cond1119 = icmp ne i32 %cast1116, 0 ; <i1> [#uses=1]
+ br i1 %cond1119, label %bb104, label %bb99
+
+bb99: ; preds = %bb98
+ %reg1122 = getelementptr i16* %reg382, i64 1 ; <i16*> [#uses=2]
+ store i16* %reg1122, i16** @yyssp
+ store i16 1, i16* %reg1122
+ %reg403 = load %YYSTYPE** @yyvsp ; <%YYSTYPE*> [#uses=2]
+ %reg1128 = getelementptr %YYSTYPE* %reg403, i64 1 ; <%YYSTYPE*> [#uses=1]
+ store %YYSTYPE* %reg1128, %YYSTYPE** @yyvsp
+ %reg406 = load %IntList* getelementptr (%YYSTYPE* @yyval, i64 0, i32 0) ; <%IntList> [#uses=1]
+ %reg1128.idx1 = getelementptr %YYSTYPE* %reg403, i64 1, i32 0 ; <%IntList*> [#uses=1]
+ store %IntList %reg406, %IntList* %reg1128.idx1
+ %reg407 = load i32* @yychar ; <i32> [#uses=1]
+ %cond1135 = icmp sge i32 %reg407, 0 ; <i1> [#uses=1]
+ br i1 %cond1135, label %bb102, label %bb100
+
+bb100: ; preds = %bb99
+ %reg1139 = call i32 @yylex( ) ; <i32> [#uses=1]
+ store i32 %reg1139, i32* @yychar
+ %reg409 = load i32* @yychar ; <i32> [#uses=1]
+ %cond1141 = icmp sge i32 %reg409, 0 ; <i1> [#uses=1]
+ br i1 %cond1141, label %bb102, label %bb101
+
+bb101: ; preds = %bb100
+ store i32 0, i32* @yychar
+ br label %bb102
+
+bb102: ; preds = %bb101, %bb100, %bb99
+ %reg411 = load i32* @yychar ; <i32> [#uses=1]
+ %cond1146 = icmp ne i32 %reg411, 0 ; <i1> [#uses=1]
+ br i1 %cond1146, label %bb4, label %UnifiedExitNode
+
+bb104: ; preds = %bb98, %bb97
+ %reg398-idxcast = sext i16 %reg398 to i64 ; <i64> [#uses=2]
+ %reg1150 = getelementptr [12 x i16]* @yygindex, i64 0, i64 %reg398-idxcast ; <i16*> [#uses=1]
+ %reg418 = load i16* %reg1150 ; <i16> [#uses=1]
+ %cast1155 = sext i16 %reg418 to i32 ; <i32> [#uses=2]
+ %cond1156 = icmp eq i32 %cast1155, 0 ; <i1> [#uses=1]
+ br i1 %cond1156, label %bb109, label %bb105
+
+bb105: ; preds = %bb104
+ %reg473 = add i32 %cast1155, %cast1103 ; <i32> [#uses=3]
+ %cond1158 = icmp slt i32 %reg473, 0 ; <i1> [#uses=1]
+ br i1 %cond1158, label %bb109, label %bb106
+
+bb106: ; preds = %bb105
+ %cond1161 = icmp sgt i32 %reg473, 262 ; <i1> [#uses=1]
+ br i1 %cond1161, label %bb109, label %bb107
+
+bb107: ; preds = %bb106
+ %reg473-idxcast = sext i32 %reg473 to i64 ; <i64> [#uses=2]
+ %reg1166 = getelementptr [263 x i16]* @yycheck, i64 0, i64 %reg473-idxcast ; <i16*> [#uses=1]
+ %reg428 = load i16* %reg1166 ; <i16> [#uses=1]
+ %cast1171 = sext i16 %reg428 to i32 ; <i32> [#uses=1]
+ %cond1172 = icmp ne i32 %cast1171, %cast1103 ; <i1> [#uses=1]
+ br i1 %cond1172, label %bb109, label %bb108
+
+bb108: ; preds = %bb107
+ %reg1175 = getelementptr [263 x i16]* @yytable, i64 0, i64 %reg473-idxcast ; <i16*> [#uses=1]
+ %reg435 = load i16* %reg1175 ; <i16> [#uses=1]
+ %cast1180 = sext i16 %reg435 to i32 ; <i32> [#uses=1]
+ br label %bb110
+
+bb109: ; preds = %bb107, %bb106, %bb105, %bb104
+ %reg1183 = getelementptr [12 x i16]* @yydgoto, i64 0, i64 %reg398-idxcast ; <i16*> [#uses=1]
+ %reg442 = load i16* %reg1183 ; <i16> [#uses=1]
+ %cast1188 = sext i16 %reg442 to i32 ; <i32> [#uses=1]
+ br label %bb110
+
+bb110: ; preds = %bb109, %bb108
+ %reg476 = phi i32 [ %cast1188, %bb109 ], [ %cast1180, %bb108 ] ; <i32> [#uses=2]
+ %cast1189 = bitcast i16* %reg382 to i8* ; <i8*> [#uses=1]
+ %reg444 = load i16** @yysslim ; <i16*> [#uses=1]
+ %cast1190 = bitcast i16* %reg444 to i8* ; <i8*> [#uses=1]
+ %cond1191 = icmp ult i8* %cast1189, %cast1190 ; <i1> [#uses=1]
+ br i1 %cond1191, label %bb112, label %bb111
+
+bb111: ; preds = %bb110
+ %reg1193 = call i32 @yygrowstack( ) ; <i32> [#uses=1]
+ %cond1193 = icmp ne i32 %reg1193, 0 ; <i1> [#uses=1]
+ br i1 %cond1193, label %bb113, label %bb112
+
+bb112: ; preds = %bb111, %bb110
+ %reg446 = load i16** @yyssp ; <i16*> [#uses=1]
+ %reg1196 = getelementptr i16* %reg446, i64 1 ; <i16*> [#uses=2]
+ store i16* %reg1196, i16** @yyssp
+ %cast1357 = trunc i32 %reg476 to i16 ; <i16> [#uses=1]
+ store i16 %cast1357, i16* %reg1196
+ %reg449 = load %YYSTYPE** @yyvsp ; <%YYSTYPE*> [#uses=2]
+ %reg1202 = getelementptr %YYSTYPE* %reg449, i64 1 ; <%YYSTYPE*> [#uses=1]
+ store %YYSTYPE* %reg1202, %YYSTYPE** @yyvsp
+ %reg452 = load %IntList* getelementptr (%YYSTYPE* @yyval, i64 0, i32 0) ; <%IntList> [#uses=1]
+ %reg1202.idx1 = getelementptr %YYSTYPE* %reg449, i64 1, i32 0 ; <%IntList*> [#uses=1]
+ store %IntList %reg452, %IntList* %reg1202.idx1
+ br label %bb4
+
+bb113: ; preds = %bb111, %bb30, %bb13, %bb2
+ call void @yyerror( i8* getelementptr ([20 x i8]* @.LC1, i64 0, i64 0) )
+ br label %UnifiedExitNode
+
+UnifiedExitNode: ; preds = %bb113, %bb102, %bb34, %bb32
+ %UnifiedRetVal = phi i32 [ 1, %bb113 ], [ 1, %bb34 ], [ 1, %bb32 ], [ 0, %bb102 ] ; <i32> [#uses=1]
+ ret i32 %UnifiedRetVal
+}
+
+declare %List @newList(i8*, %List)
+
+declare %IntList @newIntList(i32, %IntList)
+
+declare void @doStart(i8*)
+
+declare void @yyerror(i8*)
+
+declare void @doSpec(%List, %List)
+
+declare %Arity @newArity(i32, %List)
+
+declare %Binding @newBinding(i8*, i32)
+
+declare %PatternAST @newPatternAST(i8*, %List)
+
+declare %RuleAST @newRuleAST(i8*, %PatternAST, i32, %IntList)
+
+declare void @yyfinished()
+
+declare i32 @yylex()
+
+declare void @doGram(%List)
+
+declare i32 @yygrowstack()
diff --git a/test/CodeGen/Generic/ConstantExprLowering.ll b/test/CodeGen/Generic/ConstantExprLowering.ll
new file mode 100644
index 0000000..428d712
--- /dev/null
+++ b/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/test/CodeGen/Generic/GC/alloc_loop.ll b/test/CodeGen/Generic/GC/alloc_loop.ll
new file mode 100644
index 0000000..fb78ba2
--- /dev/null
+++ b/test/CodeGen/Generic/GC/alloc_loop.ll
@@ -0,0 +1,53 @@
+; RUN: llc < %s
+
+
+declare i8* @llvm_gc_allocate(i32)
+declare void @llvm_gc_initialize(i32)
+
+declare void @llvm.gcroot(i8**, i8*)
+declare void @llvm.gcwrite(i8*, i8*, i8**)
+
+define i32 @main() gc "shadow-stack" {
+entry:
+ %A = alloca i8*
+ %B = alloca i8**
+
+ call void @llvm_gc_initialize(i32 1048576) ; Start with 1MB heap
+
+ ;; void *A;
+ call void @llvm.gcroot(i8** %A, i8* null)
+
+ ;; A = gcalloc(10);
+ %Aptr = call i8* @llvm_gc_allocate(i32 10)
+ store i8* %Aptr, i8** %A
+
+ ;; void **B;
+ %tmp.1 = bitcast i8*** %B to i8**
+ call void @llvm.gcroot(i8** %tmp.1, i8* null)
+
+ ;; B = gcalloc(4);
+ %B.upgrd.1 = call i8* @llvm_gc_allocate(i32 8)
+ %tmp.2 = bitcast i8* %B.upgrd.1 to i8**
+ store i8** %tmp.2, i8*** %B
+
+ ;; *B = A;
+ %B.1 = load i8*** %B
+ %A.1 = load i8** %A
+ call void @llvm.gcwrite(i8* %A.1, i8* %B.upgrd.1, i8** %B.1)
+
+ br label %AllocLoop
+
+AllocLoop:
+ %i = phi i32 [ 0, %entry ], [ %indvar.next, %AllocLoop ]
+ ;; Allocated mem: allocated memory is immediately dead.
+ call i8* @llvm_gc_allocate(i32 100)
+
+ %indvar.next = add i32 %i, 1
+ %exitcond = icmp eq i32 %indvar.next, 10000000
+ br i1 %exitcond, label %Exit, label %AllocLoop
+
+Exit:
+ ret i32 0
+}
+
+declare void @__main()
diff --git a/test/CodeGen/Generic/GC/argpromotion.ll b/test/CodeGen/Generic/GC/argpromotion.ll
new file mode 100644
index 0000000..dda376d
--- /dev/null
+++ b/test/CodeGen/Generic/GC/argpromotion.ll
@@ -0,0 +1,19 @@
+; RUN: opt < %s -anders-aa -argpromotion
+
+declare void @llvm.gcroot(i8**, i8*)
+
+define i32 @g() {
+entry:
+ %var = alloca i32
+ store i32 1, i32* %var
+ %x = call i32 @f(i32* %var)
+ ret i32 %x
+}
+
+define internal i32 @f(i32* %xp) gc "example" {
+entry:
+ %var = alloca i8*
+ call void @llvm.gcroot(i8** %var, i8* null)
+ %x = load i32* %xp
+ ret i32 %x
+}
diff --git a/test/CodeGen/Generic/GC/badreadproto.ll b/test/CodeGen/Generic/GC/badreadproto.ll
new file mode 100644
index 0000000..4fe90b9
--- /dev/null
+++ b/test/CodeGen/Generic/GC/badreadproto.ll
@@ -0,0 +1,13 @@
+; RUN: not llvm-as < %s >& /dev/null
+
+ %list = type { i32, %list* }
+
+; This usage is invalid now; instead, objects must be bitcast to i8* for input
+; to the gc intrinsics.
+declare %list* @llvm.gcread(%list*, %list**)
+
+define %list* @tl(%list* %l) gc "example" {
+ %hd.ptr = getelementptr %list* %l, i32 0, i32 0
+ %hd = call %list* @llvm.gcread(%list* %l, %list** %hd.ptr)
+ ret i32 %tmp
+}
diff --git a/test/CodeGen/Generic/GC/badrootproto.ll b/test/CodeGen/Generic/GC/badrootproto.ll
new file mode 100644
index 0000000..ff86d03
--- /dev/null
+++ b/test/CodeGen/Generic/GC/badrootproto.ll
@@ -0,0 +1,13 @@
+; RUN: not llvm-as < %s >& /dev/null
+
+ %list = type { i32, %list* }
+ %meta = type opaque
+
+; This usage is invalid now; instead, objects must be bitcast to i8* for input
+; to the gc intrinsics.
+declare void @llvm.gcroot(%list*, %meta*)
+
+define void @root() gc "example" {
+ %x.var = alloca i8*
+ call void @llvm.gcroot(i8** %x.var, %meta* null)
+}
diff --git a/test/CodeGen/Generic/GC/badwriteproto.ll b/test/CodeGen/Generic/GC/badwriteproto.ll
new file mode 100644
index 0000000..be81f84
--- /dev/null
+++ b/test/CodeGen/Generic/GC/badwriteproto.ll
@@ -0,0 +1,22 @@
+; RUN: not llvm-as < %s >& /dev/null
+
+ %list = type { i32, %list* }
+
+; This usage is invalid now; instead, objects must be bitcast to i8* for input
+; to the gc intrinsics.
+declare void @llvm.gcwrite(%list*, %list*, %list**)
+
+define %list* @cons(i32 %hd, %list* %tl) gc "example" {
+ %tmp = call i8* @gcalloc(i32 bitcast(%list* getelementptr(%list* null, i32 1) to i32))
+ %cell = bitcast i8* %tmp to %list*
+
+ %hd.ptr = getelementptr %list* %cell, i32 0, i32 0
+ store i32 %hd, i32* %hd.ptr
+
+ %tl.ptr = getelementptr %list* %cell, i32 0, i32 0
+ call void @llvm.gcwrite(%list* %tl, %list* %cell, %list** %tl.ptr)
+
+ ret %cell.2
+}
+
+declare i8* @gcalloc(i32)
diff --git a/test/CodeGen/Generic/GC/deadargelim.ll b/test/CodeGen/Generic/GC/deadargelim.ll
new file mode 100644
index 0000000..1760190
--- /dev/null
+++ b/test/CodeGen/Generic/GC/deadargelim.ll
@@ -0,0 +1,16 @@
+; RUN: opt < %s -deadargelim
+
+declare void @llvm.gcroot(i8**, i8*)
+
+define void @g() {
+entry:
+ call void @f(i32 0)
+ ret void
+}
+
+define internal void @f(i32 %unused) gc "example" {
+entry:
+ %var = alloca i8*
+ call void @llvm.gcroot(i8** %var, i8* null)
+ ret void
+}
diff --git a/test/CodeGen/Generic/GC/dg.exp b/test/CodeGen/Generic/GC/dg.exp
new file mode 100644
index 0000000..f200589
--- /dev/null
+++ b/test/CodeGen/Generic/GC/dg.exp
@@ -0,0 +1,3 @@
+load_lib llvm.exp
+
+RunLLVMTests [lsort [glob -nocomplain $srcdir/$subdir/*.{ll,c,cpp}]]
diff --git a/test/CodeGen/Generic/GC/fat.ll b/test/CodeGen/Generic/GC/fat.ll
new file mode 100644
index 0000000..d05ca3d
--- /dev/null
+++ b/test/CodeGen/Generic/GC/fat.ll
@@ -0,0 +1,10 @@
+; RUN: not llvm-as < %s >& /dev/null
+
+declare void @llvm.gcroot(i8**, i8*) nounwind
+
+define void @f() gc "x" {
+ %st = alloca { i8*, i1 } ; <{ i8*, i1 }*> [#uses=1]
+ %st_ptr = bitcast { i8*, i1 }* %st to i8** ; <i8**> [#uses=1]
+ call void @llvm.gcroot(i8** %st_ptr, i8* null)
+ ret void
+}
diff --git a/test/CodeGen/Generic/GC/inline.ll b/test/CodeGen/Generic/GC/inline.ll
new file mode 100644
index 0000000..9da33ae
--- /dev/null
+++ b/test/CodeGen/Generic/GC/inline.ll
@@ -0,0 +1,23 @@
+; RUN: opt < %s -inline -S | grep example
+
+ %IntArray = type { i32, [0 x i32*] }
+
+declare void @llvm.gcroot(i8**, i8*) nounwind
+
+define i32 @f() {
+ %x = call i32 @g( ) ; <i32> [#uses=1]
+ ret i32 %x
+}
+
+define internal i32 @g() gc "example" {
+ %root = alloca i8* ; <i8**> [#uses=2]
+ call void @llvm.gcroot( i8** %root, i8* null )
+ %obj = call %IntArray* @h( ) ; <%IntArray*> [#uses=2]
+ %obj.2 = bitcast %IntArray* %obj to i8* ; <i8*> [#uses=1]
+ store i8* %obj.2, i8** %root
+ %Length.ptr = getelementptr %IntArray* %obj, i32 0, i32 0 ; <i32*> [#uses=1]
+ %Length = load i32* %Length.ptr ; <i32> [#uses=1]
+ ret i32 %Length
+}
+
+declare %IntArray* @h()
diff --git a/test/CodeGen/Generic/GC/inline2.ll b/test/CodeGen/Generic/GC/inline2.ll
new file mode 100644
index 0000000..1594705
--- /dev/null
+++ b/test/CodeGen/Generic/GC/inline2.ll
@@ -0,0 +1,24 @@
+; RUN: opt < %s -inline -S | grep sample
+; RUN: opt < %s -inline -S | grep example
+
+ %IntArray = type { i32, [0 x i32*] }
+
+declare void @llvm.gcroot(i8**, i8*) nounwind
+
+define i32 @f() gc "sample" {
+ %x = call i32 @g( ) ; <i32> [#uses=1]
+ ret i32 %x
+}
+
+define internal i32 @g() gc "example" {
+ %root = alloca i8* ; <i8**> [#uses=2]
+ call void @llvm.gcroot( i8** %root, i8* null )
+ %obj = call %IntArray* @h( ) ; <%IntArray*> [#uses=2]
+ %obj.2 = bitcast %IntArray* %obj to i8* ; <i8*> [#uses=1]
+ store i8* %obj.2, i8** %root
+ %Length.ptr = getelementptr %IntArray* %obj, i32 0, i32 0 ; <i32*> [#uses=1]
+ %Length = load i32* %Length.ptr ; <i32> [#uses=1]
+ ret i32 %Length
+}
+
+declare %IntArray* @h()
diff --git a/test/CodeGen/Generic/GC/lower_gcroot.ll b/test/CodeGen/Generic/GC/lower_gcroot.ll
new file mode 100644
index 0000000..c2d418a
--- /dev/null
+++ b/test/CodeGen/Generic/GC/lower_gcroot.ll
@@ -0,0 +1,11 @@
+; RUN: llc < %s
+
+ %Env = type i8*
+
+define void @.main(%Env) gc "shadow-stack" {
+ %Root = alloca %Env
+ call void @llvm.gcroot( %Env* %Root, %Env null )
+ unreachable
+}
+
+declare void @llvm.gcroot(%Env*, %Env)
diff --git a/test/CodeGen/Generic/GC/outside.ll b/test/CodeGen/Generic/GC/outside.ll
new file mode 100644
index 0000000..2968c69
--- /dev/null
+++ b/test/CodeGen/Generic/GC/outside.ll
@@ -0,0 +1,10 @@
+; RUN: not llvm-as < %s >& /dev/null
+
+declare void @llvm.gcroot(i8**, i8*)
+
+define void @f(i8* %x) {
+ %root = alloca i8*
+ call void @llvm.gcroot(i8** %root, i8* null)
+ store i8* %x, i8** %root
+ ret void
+}
diff --git a/test/CodeGen/Generic/GC/redundant_init.ll b/test/CodeGen/Generic/GC/redundant_init.ll
new file mode 100644
index 0000000..10c70e7
--- /dev/null
+++ b/test/CodeGen/Generic/GC/redundant_init.ll
@@ -0,0 +1,17 @@
+; RUN: llc < %s -march=x86 | \
+; RUN: ignore grep {movl..0} | count 0
+
+%struct.obj = type { i8*, %struct.obj* }
+
+declare void @g() gc "shadow-stack"
+
+define void @f(i8* %o) gc "shadow-stack" {
+entry:
+ %root = alloca i8*
+ call void @llvm.gcroot(i8** %root, i8* null)
+ store i8* %o, i8** %root
+ call void @g()
+ ret void
+}
+
+declare void @llvm.gcroot(i8**, i8*)
diff --git a/test/CodeGen/Generic/GC/simple_ocaml.ll b/test/CodeGen/Generic/GC/simple_ocaml.ll
new file mode 100644
index 0000000..f765dc0
--- /dev/null
+++ b/test/CodeGen/Generic/GC/simple_ocaml.ll
@@ -0,0 +1,42 @@
+; RUN: llc < %s | grep caml.*__frametable
+; RUN: llc < %s -march=x86 | grep {movl .0}
+
+%struct.obj = type { i8*, %struct.obj* }
+
+define %struct.obj* @fun(%struct.obj* %head) gc "ocaml" {
+entry:
+ %gcroot.0 = alloca i8*
+ %gcroot.1 = alloca i8*
+
+ call void @llvm.gcroot(i8** %gcroot.0, i8* null)
+ call void @llvm.gcroot(i8** %gcroot.1, i8* null)
+
+ %local.0 = bitcast i8** %gcroot.0 to %struct.obj**
+ %local.1 = bitcast i8** %gcroot.1 to %struct.obj**
+
+ store %struct.obj* %head, %struct.obj** %local.0
+ br label %bb.loop
+bb.loop:
+ %t0 = load %struct.obj** %local.0
+ %t1 = getelementptr %struct.obj* %t0, i32 0, i32 1
+ %t2 = bitcast %struct.obj* %t0 to i8*
+ %t3 = bitcast %struct.obj** %t1 to i8**
+ %t4 = call i8* @llvm.gcread(i8* %t2, i8** %t3)
+ %t5 = bitcast i8* %t4 to %struct.obj*
+ %t6 = icmp eq %struct.obj* %t5, null
+ br i1 %t6, label %bb.loop, label %bb.end
+bb.end:
+ %t7 = malloc %struct.obj
+ store %struct.obj* %t7, %struct.obj** %local.1
+ %t8 = bitcast %struct.obj* %t7 to i8*
+ %t9 = load %struct.obj** %local.0
+ %t10 = getelementptr %struct.obj* %t9, i32 0, i32 1
+ %t11 = bitcast %struct.obj* %t9 to i8*
+ %t12 = bitcast %struct.obj** %t10 to i8**
+ call void @llvm.gcwrite(i8* %t8, i8* %t11, i8** %t12)
+ ret %struct.obj* %t7
+}
+
+declare void @llvm.gcroot(i8** %value, i8* %tag)
+declare void @llvm.gcwrite(i8* %value, i8* %obj, i8** %field)
+declare i8* @llvm.gcread(i8* %obj, i8** %field)
diff --git a/test/CodeGen/Generic/Makefile b/test/CodeGen/Generic/Makefile
new file mode 100644
index 0000000..26ebc31
--- /dev/null
+++ b/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/test/CodeGen/Generic/add-with-overflow-24.ll b/test/CodeGen/Generic/add-with-overflow-24.ll
new file mode 100644
index 0000000..63f5a22
--- /dev/null
+++ b/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/test/CodeGen/Generic/add-with-overflow.ll b/test/CodeGen/Generic/add-with-overflow.ll
new file mode 100644
index 0000000..0c2c960
--- /dev/null
+++ b/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/test/CodeGen/Generic/asm-large-immediate.ll b/test/CodeGen/Generic/asm-large-immediate.ll
new file mode 100644
index 0000000..605665b
--- /dev/null
+++ b/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/test/CodeGen/Generic/badCallArgLRLLVM.ll b/test/CodeGen/Generic/badCallArgLRLLVM.ll
new file mode 100644
index 0000000..4ed88df
--- /dev/null
+++ b/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/test/CodeGen/Generic/badFoldGEP.ll b/test/CodeGen/Generic/badFoldGEP.ll
new file mode 100644
index 0000000..2d4474b
--- /dev/null
+++ b/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/test/CodeGen/Generic/badarg6.ll b/test/CodeGen/Generic/badarg6.ll
new file mode 100644
index 0000000..d6e5ac5
--- /dev/null
+++ b/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/test/CodeGen/Generic/badlive.ll b/test/CodeGen/Generic/badlive.ll
new file mode 100644
index 0000000..43b03e3
--- /dev/null
+++ b/test/CodeGen/Generic/badlive.ll
@@ -0,0 +1,28 @@
+; RUN: llc < %s
+
+define i32 @main() {
+bb0:
+ %reg109 = malloc i32, i32 100 ; <i32*> [#uses=2]
+ br label %bb2
+
+bb2: ; preds = %bb2, %bb0
+ %cann-indvar1 = phi i32 [ 0, %bb0 ], [ %add1-indvar1, %bb2 ] ; <i32> [#uses=2]
+ %reg127 = mul i32 %cann-indvar1, 2 ; <i32> [#uses=1]
+ %add1-indvar1 = add i32 %cann-indvar1, 1 ; <i32> [#uses=1]
+ store i32 999, i32* %reg109
+ %cond1015 = icmp sle i32 1, 99 ; <i1> [#uses=1]
+ %reg128 = add i32 %reg127, 2 ; <i32> [#uses=0]
+ br i1 %cond1015, label %bb2, label %bb4
+
+bb4: ; preds = %bb4, %bb2
+ %cann-indvar = phi i32 [ %add1-indvar, %bb4 ], [ 0, %bb2 ] ; <i32> [#uses=1]
+ %add1-indvar = add i32 %cann-indvar, 1 ; <i32> [#uses=2]
+ store i32 333, i32* %reg109
+ %reg131 = add i32 %add1-indvar, 3 ; <i32> [#uses=1]
+ %cond1017 = icmp ule i32 %reg131, 99 ; <i1> [#uses=1]
+ br i1 %cond1017, label %bb4, label %bb5
+
+bb5: ; preds = %bb4
+ ret i32 0
+}
+
diff --git a/test/CodeGen/Generic/bool-to-double.ll b/test/CodeGen/Generic/bool-to-double.ll
new file mode 100644
index 0000000..81350a4
--- /dev/null
+++ b/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/test/CodeGen/Generic/bool-vector.ll b/test/CodeGen/Generic/bool-vector.ll
new file mode 100644
index 0000000..4758697
--- /dev/null
+++ b/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/test/CodeGen/Generic/call-ret0.ll b/test/CodeGen/Generic/call-ret0.ll
new file mode 100644
index 0000000..a8e00cd
--- /dev/null
+++ b/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/test/CodeGen/Generic/call-ret42.ll b/test/CodeGen/Generic/call-ret42.ll
new file mode 100644
index 0000000..95cc286
--- /dev/null
+++ b/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/test/CodeGen/Generic/call-void.ll b/test/CodeGen/Generic/call-void.ll
new file mode 100644
index 0000000..9ed4179
--- /dev/null
+++ b/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/test/CodeGen/Generic/call2-ret0.ll b/test/CodeGen/Generic/call2-ret0.ll
new file mode 100644
index 0000000..4e57ef8
--- /dev/null
+++ b/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/test/CodeGen/Generic/cast-fp.ll b/test/CodeGen/Generic/cast-fp.ll
new file mode 100644
index 0000000..590b7ce
--- /dev/null
+++ b/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/test/CodeGen/Generic/constindices.ll b/test/CodeGen/Generic/constindices.ll
new file mode 100644
index 0000000..7deb30f
--- /dev/null
+++ b/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/test/CodeGen/Generic/debug-info.ll b/test/CodeGen/Generic/debug-info.ll
new file mode 100644
index 0000000..20d9f91
--- /dev/null
+++ b/test/CodeGen/Generic/debug-info.ll
@@ -0,0 +1,19 @@
+; RUN: llc < %s
+
+ %lldb.compile_unit = type { i32, i16, i16, i8*, i8*, i8*, { }* }
+@d.compile_unit7 = external global %lldb.compile_unit ; <%lldb.compile_unit*> [#uses=1]
+
+declare void @llvm.dbg.stoppoint(i32, i32, %lldb.compile_unit*)
+
+define void @rb_raise(i32, ...) {
+entry:
+ br i1 false, label %strlen.exit, label %no_exit.i
+
+no_exit.i: ; preds = %entry
+ ret void
+
+strlen.exit: ; preds = %entry
+ call void @llvm.dbg.stoppoint( i32 4358, i32 0, %lldb.compile_unit* @d.compile_unit7 )
+ unreachable
+}
+
diff --git a/test/CodeGen/Generic/dg.exp b/test/CodeGen/Generic/dg.exp
new file mode 100644
index 0000000..f200589
--- /dev/null
+++ b/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/test/CodeGen/Generic/div-neg-power-2.ll b/test/CodeGen/Generic/div-neg-power-2.ll
new file mode 100644
index 0000000..246cd03
--- /dev/null
+++ b/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/test/CodeGen/Generic/empty-load-store.ll b/test/CodeGen/Generic/empty-load-store.ll
new file mode 100644
index 0000000..bca7305
--- /dev/null
+++ b/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/test/CodeGen/Generic/externally_available.ll b/test/CodeGen/Generic/externally_available.ll
new file mode 100644
index 0000000..7976cc9
--- /dev/null
+++ b/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/test/CodeGen/Generic/fastcall.ll b/test/CodeGen/Generic/fastcall.ll
new file mode 100644
index 0000000..35e04f1
--- /dev/null
+++ b/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/test/CodeGen/Generic/fneg-fabs.ll b/test/CodeGen/Generic/fneg-fabs.ll
new file mode 100644
index 0000000..2f2f597
--- /dev/null
+++ b/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/test/CodeGen/Generic/fp-to-int-invalid.ll b/test/CodeGen/Generic/fp-to-int-invalid.ll
new file mode 100644
index 0000000..cdcc3a2
--- /dev/null
+++ b/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/test/CodeGen/Generic/fp_to_int.ll b/test/CodeGen/Generic/fp_to_int.ll
new file mode 100644
index 0000000..ad94413
--- /dev/null
+++ b/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/test/CodeGen/Generic/fpowi-promote.ll b/test/CodeGen/Generic/fpowi-promote.ll
new file mode 100644
index 0000000..8dacebe
--- /dev/null
+++ b/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/test/CodeGen/Generic/fwdtwice.ll b/test/CodeGen/Generic/fwdtwice.ll
new file mode 100644
index 0000000..6b38f04
--- /dev/null
+++ b/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/test/CodeGen/Generic/getresult-undef.ll b/test/CodeGen/Generic/getresult-undef.ll
new file mode 100644
index 0000000..c675535
--- /dev/null
+++ b/test/CodeGen/Generic/getresult-undef.ll
@@ -0,0 +1,6 @@
+; RUN: llc < %s
+
+define double @foo() {
+ %t = getresult {double, double} undef, 1
+ ret double %t
+}
diff --git a/test/CodeGen/Generic/global-ret0.ll b/test/CodeGen/Generic/global-ret0.ll
new file mode 100644
index 0000000..74bff87
--- /dev/null
+++ b/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/test/CodeGen/Generic/hello.ll b/test/CodeGen/Generic/hello.ll
new file mode 100644
index 0000000..705945c
--- /dev/null
+++ b/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/test/CodeGen/Generic/i128-addsub.ll b/test/CodeGen/Generic/i128-addsub.ll
new file mode 100644
index 0000000..e7cbf4a
--- /dev/null
+++ b/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/test/CodeGen/Generic/i128-arith.ll b/test/CodeGen/Generic/i128-arith.ll
new file mode 100644
index 0000000..cf10463
--- /dev/null
+++ b/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/test/CodeGen/Generic/inline-asm-special-strings.ll b/test/CodeGen/Generic/inline-asm-special-strings.ll
new file mode 100644
index 0000000..d18221e
--- /dev/null
+++ b/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/test/CodeGen/Generic/intrinsics.ll b/test/CodeGen/Generic/intrinsics.ll
new file mode 100644
index 0000000..29bc499
--- /dev/null
+++ b/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/test/CodeGen/Generic/invalid-memcpy.ll b/test/CodeGen/Generic/invalid-memcpy.ll
new file mode 100644
index 0000000..8448565
--- /dev/null
+++ b/test/CodeGen/Generic/invalid-memcpy.ll
@@ -0,0 +1,19 @@
+; 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] ; <[33 x i8]*> [#uses=1]
+
+define void @Bork() {
+entry:
+ %Qux = alloca [33 x i8] ; <[33 x i8]*> [#uses=1]
+ %Qux1 = bitcast [33 x i8]* %Qux to i8* ; <i8*> [#uses=1]
+ call void @llvm.memcpy.i64( i8* %Qux1, i8* getelementptr ([33 x i8]* @C.0.1173, i32 0, i32 0), i64 33, i32 8 )
+ ret void
+}
+
+declare void @llvm.memcpy.i64(i8*, i8*, i64, i32)
+
+
diff --git a/test/CodeGen/Generic/isunord.ll b/test/CodeGen/Generic/isunord.ll
new file mode 100644
index 0000000..ebbba01
--- /dev/null
+++ b/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/test/CodeGen/Generic/llvm-ct-intrinsics.ll b/test/CodeGen/Generic/llvm-ct-intrinsics.ll
new file mode 100644
index 0000000..1db7549
--- /dev/null
+++ b/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/test/CodeGen/Generic/multiple-return-values-cross-block-with-invoke.ll b/test/CodeGen/Generic/multiple-return-values-cross-block-with-invoke.ll
new file mode 100644
index 0000000..282e973
--- /dev/null
+++ b/test/CodeGen/Generic/multiple-return-values-cross-block-with-invoke.ll
@@ -0,0 +1,18 @@
+; 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 = getresult { i64, double } %t, 0
+ store i64 %mrv_gr, i64* %p
+ %mrv_gr12681 = getresult { i64, double } %t, 1
+ store double %mrv_gr12681, double* %q
+ ret void
+
+handler:
+ ret void
+}
+
diff --git a/test/CodeGen/Generic/negintconst.ll b/test/CodeGen/Generic/negintconst.ll
new file mode 100644
index 0000000..67d775e
--- /dev/null
+++ b/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/test/CodeGen/Generic/nested-select.ll b/test/CodeGen/Generic/nested-select.ll
new file mode 100644
index 0000000..f81fed3
--- /dev/null
+++ b/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/test/CodeGen/Generic/pr2625.ll b/test/CodeGen/Generic/pr2625.ll
new file mode 100644
index 0000000..3e3dc4b
--- /dev/null
+++ b/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/test/CodeGen/Generic/pr3288.ll b/test/CodeGen/Generic/pr3288.ll
new file mode 100644
index 0000000..b62710f
--- /dev/null
+++ b/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/test/CodeGen/Generic/print-add.ll b/test/CodeGen/Generic/print-add.ll
new file mode 100644
index 0000000..95608dc
--- /dev/null
+++ b/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/test/CodeGen/Generic/print-arith-fp.ll b/test/CodeGen/Generic/print-arith-fp.ll
new file mode 100644
index 0000000..d129ff8
--- /dev/null
+++ b/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/test/CodeGen/Generic/print-arith-int.ll b/test/CodeGen/Generic/print-arith-int.ll
new file mode 100644
index 0000000..ce938cf
--- /dev/null
+++ b/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/test/CodeGen/Generic/print-int.ll b/test/CodeGen/Generic/print-int.ll
new file mode 100644
index 0000000..7ca4b3d
--- /dev/null
+++ b/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/test/CodeGen/Generic/print-mul-exp.ll b/test/CodeGen/Generic/print-mul-exp.ll
new file mode 100644
index 0000000..90fc55b
--- /dev/null
+++ b/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/test/CodeGen/Generic/print-mul.ll b/test/CodeGen/Generic/print-mul.ll
new file mode 100644
index 0000000..0707f3c
--- /dev/null
+++ b/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/test/CodeGen/Generic/print-shift.ll b/test/CodeGen/Generic/print-shift.ll
new file mode 100644
index 0000000..6c5d222
--- /dev/null
+++ b/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/test/CodeGen/Generic/ret0.ll b/test/CodeGen/Generic/ret0.ll
new file mode 100644
index 0000000..9e628a1
--- /dev/null
+++ b/test/CodeGen/Generic/ret0.ll
@@ -0,0 +1,5 @@
+; RUN: llc < %s
+
+define i32 @main() {
+ ret i32 0
+}
diff --git a/test/CodeGen/Generic/ret42.ll b/test/CodeGen/Generic/ret42.ll
new file mode 100644
index 0000000..f5cd33d
--- /dev/null
+++ b/test/CodeGen/Generic/ret42.ll
@@ -0,0 +1,5 @@
+; RUN: llc < %s
+
+define i32 @main() {
+ ret i32 42
+}
diff --git a/test/CodeGen/Generic/select-cc.ll b/test/CodeGen/Generic/select-cc.ll
new file mode 100644
index 0000000..b653e2a
--- /dev/null
+++ b/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/test/CodeGen/Generic/select.ll b/test/CodeGen/Generic/select.ll
new file mode 100644
index 0000000..63052c1
--- /dev/null
+++ b/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/test/CodeGen/Generic/shift-int64.ll b/test/CodeGen/Generic/shift-int64.ll
new file mode 100644
index 0000000..670ef20
--- /dev/null
+++ b/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/test/CodeGen/Generic/spillccr.ll b/test/CodeGen/Generic/spillccr.ll
new file mode 100644
index 0000000..0a774c6
--- /dev/null
+++ b/test/CodeGen/Generic/spillccr.ll
@@ -0,0 +1,49 @@
+; RUN: llc < %s
+
+; July 6, 2002 -- LLC Regression test
+; This test case checks if the integer CC register %xcc (or %ccr)
+; is correctly spilled. The code fragment came from function
+; MakeGraph in Olden-mst.
+; The original code made all comparisons with 0, so that the %xcc
+; register is not needed for the branch in the first basic block.
+; Replace 0 with 1 in the first comparson so that the
+; branch-on-register instruction cannot be used directly, i.e.,
+; the %xcc register is needed for the first branch.
+;
+
+ %Graph = type %struct.graph_st*
+ %Hash = type %struct.hash*
+ %HashEntry = type %struct.hash_entry*
+ %Vertex = type %struct.vert_st*
+ %struct.graph_st = type { [1 x %Vertex] }
+ %struct.hash = type { %HashEntry*, i32 (i32)*, i32 }
+ %struct.hash_entry = type { i32, i8*, %HashEntry }
+ %struct.vert_st = type { i32, %Vertex, %Hash }
+@HashRange = external global i32 ; <i32*> [#uses=0]
+@.LC0 = internal global [13 x i8] c"Make phase 2\00" ; <[13 x i8]*> [#uses=0]
+@.LC1 = internal global [13 x i8] c"Make phase 3\00" ; <[13 x i8]*> [#uses=0]
+@.LC2 = internal global [13 x i8] c"Make phase 4\00" ; <[13 x i8]*> [#uses=0]
+@.LC3 = internal global [15 x i8] c"Make returning\00" ; <[15 x i8]*> [#uses=0]
+
+define %Graph @MakeGraph(i32 %numvert, i32 %numproc) {
+bb1:
+ %reg111 = add i32 %numproc, -1 ; <i32> [#uses=2]
+ %cond275 = icmp slt i32 %reg111, 1 ; <i1> [#uses=1]
+ %cond276 = icmp sle i32 %reg111, 0 ; <i1> [#uses=1]
+ %cond277 = icmp sge i32 %numvert, 0 ; <i1> [#uses=1]
+ %reg162 = add i32 %numvert, 3 ; <i32> [#uses=0]
+ br i1 %cond275, label %bb7, label %bb4
+
+bb4: ; preds = %bb1
+ br i1 %cond276, label %bb7, label %bb5
+
+bb5: ; preds = %bb4
+ br i1 %cond277, label %bb7, label %bb6
+
+bb6: ; preds = %bb5
+ ret %Graph null
+
+bb7: ; preds = %bb5, %bb4, %bb1
+ ret %Graph null
+}
+
diff --git a/test/CodeGen/Generic/stack-protector.ll b/test/CodeGen/Generic/stack-protector.ll
new file mode 100644
index 0000000..a59c649
--- /dev/null
+++ b/test/CodeGen/Generic/stack-protector.ll
@@ -0,0 +1,25 @@
+; RUN: llc < %s -o - | grep {__stack_chk_guard}
+; RUN: llc < %s -o - | grep {__stack_chk_fail}
+
+@"\01LC" = internal constant [11 x i8] c"buf == %s\0A\00" ; <[11 x i8]*> [#uses=1]
+
+define void @test(i8* %a) nounwind ssp {
+entry:
+ %a_addr = alloca i8* ; <i8**> [#uses=2]
+ %buf = alloca [8 x i8] ; <[8 x i8]*> [#uses=2]
+ %"alloca point" = bitcast i32 0 to i32 ; <i32> [#uses=0]
+ store i8* %a, i8** %a_addr
+ %buf1 = bitcast [8 x i8]* %buf to i8* ; <i8*> [#uses=1]
+ %0 = load i8** %a_addr, align 4 ; <i8*> [#uses=1]
+ %1 = call i8* @strcpy(i8* %buf1, i8* %0) nounwind ; <i8*> [#uses=0]
+ %buf2 = bitcast [8 x i8]* %buf to i8* ; <i8*> [#uses=1]
+ %2 = call i32 (i8*, ...)* @printf(i8* getelementptr ([11 x i8]* @"\01LC", i32 0, i32 0), i8* %buf2) nounwind ; <i32> [#uses=0]
+ br label %return
+
+return: ; preds = %entry
+ ret void
+}
+
+declare i8* @strcpy(i8*, i8*) nounwind
+
+declare i32 @printf(i8*, ...) nounwind
diff --git a/test/CodeGen/Generic/stacksave-restore.ll b/test/CodeGen/Generic/stacksave-restore.ll
new file mode 100644
index 0000000..b124b5f
--- /dev/null
+++ b/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/test/CodeGen/Generic/storetrunc-fp.ll b/test/CodeGen/Generic/storetrunc-fp.ll
new file mode 100644
index 0000000..7f7c7f7
--- /dev/null
+++ b/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/test/CodeGen/Generic/switch-lower-feature.ll b/test/CodeGen/Generic/switch-lower-feature.ll
new file mode 100644
index 0000000..1e9dbee
--- /dev/null
+++ b/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/test/CodeGen/Generic/switch-lower.ll b/test/CodeGen/Generic/switch-lower.ll
new file mode 100644
index 0000000..1cefe82
--- /dev/null
+++ b/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/test/CodeGen/Generic/trap.ll b/test/CodeGen/Generic/trap.ll
new file mode 100644
index 0000000..67d1a7a
--- /dev/null
+++ b/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/test/CodeGen/Generic/v-split.ll b/test/CodeGen/Generic/v-split.ll
new file mode 100644
index 0000000..634b562
--- /dev/null
+++ b/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/test/CodeGen/Generic/vector-casts.ll b/test/CodeGen/Generic/vector-casts.ll
new file mode 100644
index 0000000..a26918b
--- /dev/null
+++ b/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/test/CodeGen/Generic/vector-constantexpr.ll b/test/CodeGen/Generic/vector-constantexpr.ll
new file mode 100644
index 0000000..d8e0258
--- /dev/null
+++ b/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/test/CodeGen/Generic/vector-identity-shuffle.ll b/test/CodeGen/Generic/vector-identity-shuffle.ll
new file mode 100644
index 0000000..332d6d8
--- /dev/null
+++ b/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/test/CodeGen/Generic/vector.ll b/test/CodeGen/Generic/vector.ll
new file mode 100644
index 0000000..a0f9a02
--- /dev/null
+++ b/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
+}