diff options
author | Chris Lattner <sabre@nondot.org> | 2009-02-02 06:55:45 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2009-02-02 06:55:45 +0000 |
commit | d42bd99696f0a7fd12c3d299be9aa9711a0747bd (patch) | |
tree | 613c95a3a41d1dbaae8830ad1df3061f807e1a34 | |
parent | c82bf9b268eb63f7cf6f435d9ea222ddb8e3c5a8 (diff) |
reduce testcase.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63499 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | test/Transforms/InstCombine/2009-01-31-InfIterate.ll | 498 |
1 files changed, 18 insertions, 480 deletions
diff --git a/test/Transforms/InstCombine/2009-01-31-InfIterate.ll b/test/Transforms/InstCombine/2009-01-31-InfIterate.ll index 5c26c06bfc..6620e4fadd 100644 --- a/test/Transforms/InstCombine/2009-01-31-InfIterate.ll +++ b/test/Transforms/InstCombine/2009-01-31-InfIterate.ll @@ -1,484 +1,22 @@ ; RUN: llvm-as < %s | opt -instcombine | llvm-dis ; PR3452 -target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128" -target triple = "x86_64-unknown-linux-gnu" -@__clz_tab = external constant [256 x i8] ; <[256 x i8]*> [#uses=3] -@llvm.used = appending global [1 x i8*] [ i8* bitcast (void (i128, i128, i128*)* @__udivmodti4 to i8*) ], section "llvm.metadata" ; <[1 x i8*]*> [#uses=0] - -define fastcc void @__udivmodti4(i128 %n, i128 %d, i128* %rp) nounwind alwaysinline { +define i128 @test(i64 %A, i64 %B, i1 %C, i128 %Z, i128 %Y, i64* %P, i64* %Q) { entry: - %tmp1 = trunc i128 %n to i64 ; <i64> [#uses=12] - %sroa.store.elt = lshr i128 %n, 64 ; <i128> [#uses=1] - %tmp2 = trunc i128 %sroa.store.elt to i64 ; <i64> [#uses=12] - %tmp3 = trunc i128 %d to i64 ; <i64> [#uses=12] - %sroa.store.elt16 = lshr i128 %d, 64 ; <i128> [#uses=1] - %tmp4 = trunc i128 %sroa.store.elt16 to i64 ; <i64> [#uses=7] - %tmp5 = icmp eq i64 %tmp4, 0 ; <i1> [#uses=1] - br i1 %tmp5, label %bb, label %bb86 - -bb: ; preds = %entry - %tmp6 = icmp ugt i64 %tmp3, %tmp2 ; <i1> [#uses=1] - br i1 %tmp6, label %bb33.thread, label %bb50 - -bb33.thread: ; preds = %bb - br label %bb31 - -bb31: ; preds = %bb33, %bb33.thread - %__a28.0.reg2mem.0 = phi i64 [ 56, %bb33.thread ], [ %tmp9, %bb33 ] ; <i64> [#uses=3] - %.cast = and i64 %__a28.0.reg2mem.0, 4294967288 ; <i64> [#uses=1] - %tmp = shl i64 255, %.cast ; <i64> [#uses=1] - %tmp7 = and i64 %tmp3, %tmp ; <i64> [#uses=1] - %tmp8 = icmp eq i64 %tmp7, 0 ; <i1> [#uses=1] - br i1 %tmp8, label %bb33, label %bb34 - -bb33: ; preds = %bb31 - %tmp9 = add i64 %__a28.0.reg2mem.0, -8 ; <i64> [#uses=3] - %tmp10 = icmp eq i64 %tmp9, 0 ; <i1> [#uses=1] - br i1 %tmp10, label %bb34, label %bb31 - -bb34: ; preds = %bb33, %bb31 - %__a28.0.reg2mem.1 = phi i64 [ %__a28.0.reg2mem.0, %bb31 ], [ %tmp9, %bb33 ] ; <i64> [#uses=2] - %.cast35 = and i64 %__a28.0.reg2mem.1, 4294967288 ; <i64> [#uses=1] - %tmp11 = lshr i64 %tmp3, %.cast35 ; <i64> [#uses=1] - %tmp12 = getelementptr [256 x i8]* @__clz_tab, i64 0, i64 %tmp11 ; <i8*> [#uses=1] - %tmp13 = load i8* %tmp12, align 1 ; <i8> [#uses=1] - %tmp14 = zext i8 %tmp13 to i64 ; <i64> [#uses=1] - %tmp15 = add i64 %tmp14, %__a28.0.reg2mem.1 ; <i64> [#uses=2] - %tmp16 = sub i64 64, %tmp15 ; <i64> [#uses=7] - %tmp17 = icmp eq i64 %tmp15, 64 ; <i1> [#uses=1] - br i1 %tmp17, label %bb41, label %bb36 - -bb36: ; preds = %bb34 - %.cast37 = and i64 %tmp16, 4294967295 ; <i64> [#uses=1] - %tmp18 = shl i64 %tmp3, %.cast37 ; <i64> [#uses=1] - %.cast38 = and i64 %tmp16, 4294967295 ; <i64> [#uses=1] - %tmp19 = shl i64 %tmp2, %.cast38 ; <i64> [#uses=1] - %tmp20 = sub i64 64, %tmp16 ; <i64> [#uses=1] - %.cast39 = and i64 %tmp20, 4294967295 ; <i64> [#uses=1] - %tmp21 = lshr i64 %tmp1, %.cast39 ; <i64> [#uses=1] - %tmp22 = or i64 %tmp19, %tmp21 ; <i64> [#uses=1] - %.cast40 = and i64 %tmp16, 4294967295 ; <i64> [#uses=1] - %tmp23 = shl i64 %tmp1, %.cast40 ; <i64> [#uses=1] - br label %bb41 - -bb41: ; preds = %bb36, %bb34 - %n1.0 = phi i64 [ %tmp2, %bb34 ], [ %tmp22, %bb36 ] ; <i64> [#uses=2] - %n0.0 = phi i64 [ %tmp1, %bb34 ], [ %tmp23, %bb36 ] ; <i64> [#uses=2] - %d0.0 = phi i64 [ %tmp3, %bb34 ], [ %tmp18, %bb36 ] ; <i64> [#uses=8] - %tmp24 = lshr i64 %d0.0, 32 ; <i64> [#uses=4] - %tmp25 = and i64 %d0.0, 4294967295 ; <i64> [#uses=2] - %tmp26 = urem i64 %n1.0, %tmp24 ; <i64> [#uses=1] - %tmp27 = udiv i64 %n1.0, %tmp24 ; <i64> [#uses=1] - %tmp28 = mul i64 %tmp27, %tmp25 ; <i64> [#uses=3] - %tmp29 = shl i64 %tmp26, 32 ; <i64> [#uses=1] - %tmp30 = lshr i64 %n0.0, 32 ; <i64> [#uses=1] - %tmp31 = or i64 %tmp29, %tmp30 ; <i64> [#uses=3] - %tmp32 = icmp ult i64 %tmp31, %tmp28 ; <i1> [#uses=1] - br i1 %tmp32, label %bb42, label %bb45 - -bb42: ; preds = %bb41 - %tmp33 = add i64 %tmp31, %d0.0 ; <i64> [#uses=4] - %.not = icmp uge i64 %tmp33, %d0.0 ; <i1> [#uses=1] - %tmp34 = icmp ult i64 %tmp33, %tmp28 ; <i1> [#uses=1] - %or.cond = and i1 %tmp34, %.not ; <i1> [#uses=1] - br i1 %or.cond, label %bb44, label %bb45 - -bb44: ; preds = %bb42 - %tmp35 = add i64 %tmp33, %d0.0 ; <i64> [#uses=1] - br label %bb45 - -bb45: ; preds = %bb44, %bb42, %bb41 - %__r123.0 = phi i64 [ %tmp31, %bb41 ], [ %tmp33, %bb42 ], [ %tmp35, %bb44 ] ; <i64> [#uses=1] - %tmp36 = sub i64 %__r123.0, %tmp28 ; <i64> [#uses=2] - %tmp37 = urem i64 %tmp36, %tmp24 ; <i64> [#uses=1] - %tmp38 = udiv i64 %tmp36, %tmp24 ; <i64> [#uses=1] - %tmp39 = mul i64 %tmp38, %tmp25 ; <i64> [#uses=5] - %tmp40 = shl i64 %tmp37, 32 ; <i64> [#uses=1] - %tmp41 = and i64 %n0.0, 4294967295 ; <i64> [#uses=1] - %tmp42 = or i64 %tmp40, %tmp41 ; <i64> [#uses=3] - %tmp43 = icmp ult i64 %tmp42, %tmp39 ; <i1> [#uses=1] - br i1 %tmp43, label %bb46, label %bb83 - -bb46: ; preds = %bb45 - %tmp44 = add i64 %tmp42, %d0.0 ; <i64> [#uses=4] - %.not137 = icmp uge i64 %tmp44, %d0.0 ; <i1> [#uses=1] - %tmp45 = icmp ult i64 %tmp44, %tmp39 ; <i1> [#uses=1] - %or.cond138 = and i1 %tmp45, %.not137 ; <i1> [#uses=1] - br i1 %or.cond138, label %bb48, label %bb83 - -bb48: ; preds = %bb46 - %tmp46 = add i64 %tmp44, %d0.0 ; <i64> [#uses=1] - br label %bb83 - -bb50: ; preds = %bb - %tmp47 = icmp eq i64 %tmp3, 0 ; <i1> [#uses=1] - br i1 %tmp47, label %bb51, label %bb56.thread - -bb51: ; preds = %bb50 - %tmp48 = udiv i64 1, %tmp3 ; <i64> [#uses=1] - br label %bb56.thread - -bb53: ; preds = %bb56, %bb56.thread - %__a19.0.reg2mem.0 = phi i64 [ 56, %bb56.thread ], [ %tmp51, %bb56 ] ; <i64> [#uses=3] - %.cast54 = and i64 %__a19.0.reg2mem.0, 4294967288 ; <i64> [#uses=1] - %tmp133 = shl i64 255, %.cast54 ; <i64> [#uses=1] - %tmp49 = and i64 %d0.1.ph, %tmp133 ; <i64> [#uses=1] - %tmp50 = icmp eq i64 %tmp49, 0 ; <i1> [#uses=1] - br i1 %tmp50, label %bb56, label %bb57 - -bb56.thread: ; preds = %bb51, %bb50 - %d0.1.ph = phi i64 [ %tmp48, %bb51 ], [ %tmp3, %bb50 ] ; <i64> [#uses=5] - br label %bb53 - -bb56: ; preds = %bb53 - %tmp51 = add i64 %__a19.0.reg2mem.0, -8 ; <i64> [#uses=3] - %tmp52 = icmp eq i64 %tmp51, 0 ; <i1> [#uses=1] - br i1 %tmp52, label %bb57, label %bb53 - -bb57: ; preds = %bb56, %bb53 - %__a19.0.reg2mem.1 = phi i64 [ %__a19.0.reg2mem.0, %bb53 ], [ %tmp51, %bb56 ] ; <i64> [#uses=2] - %.cast58 = and i64 %__a19.0.reg2mem.1, 4294967288 ; <i64> [#uses=1] - %tmp53 = lshr i64 %d0.1.ph, %.cast58 ; <i64> [#uses=1] - %tmp54 = getelementptr [256 x i8]* @__clz_tab, i64 0, i64 %tmp53 ; <i8*> [#uses=1] - %tmp55 = load i8* %tmp54, align 1 ; <i8> [#uses=1] - %tmp56 = zext i8 %tmp55 to i64 ; <i64> [#uses=1] - %tmp57 = add i64 %tmp56, %__a19.0.reg2mem.1 ; <i64> [#uses=2] - %tmp58 = sub i64 64, %tmp57 ; <i64> [#uses=7] - %tmp59 = icmp eq i64 %tmp57, 64 ; <i1> [#uses=1] - br i1 %tmp59, label %bb74, label %bb60 - -bb60: ; preds = %bb57 - %tmp60 = sub i64 64, %tmp58 ; <i64> [#uses=2] - %.cast61 = and i64 %tmp58, 4294967295 ; <i64> [#uses=1] - %tmp61 = shl i64 %d0.1.ph, %.cast61 ; <i64> [#uses=9] - %.cast62 = and i64 %tmp60, 4294967295 ; <i64> [#uses=1] - %tmp62 = lshr i64 %tmp2, %.cast62 ; <i64> [#uses=2] - %.cast63 = and i64 %tmp58, 4294967295 ; <i64> [#uses=1] - %tmp63 = shl i64 %tmp2, %.cast63 ; <i64> [#uses=1] - %.cast64 = and i64 %tmp60, 4294967295 ; <i64> [#uses=1] - %tmp64 = lshr i64 %tmp1, %.cast64 ; <i64> [#uses=1] - %tmp65 = or i64 %tmp63, %tmp64 ; <i64> [#uses=2] - %.cast65 = and i64 %tmp58, 4294967295 ; <i64> [#uses=1] - %tmp66 = shl i64 %tmp1, %.cast65 ; <i64> [#uses=1] - %tmp67 = lshr i64 %tmp61, 32 ; <i64> [#uses=4] - %tmp68 = and i64 %tmp61, 4294967295 ; <i64> [#uses=2] - %tmp69 = urem i64 %tmp62, %tmp67 ; <i64> [#uses=1] - %tmp70 = udiv i64 %tmp62, %tmp67 ; <i64> [#uses=1] - %tmp71 = mul i64 %tmp70, %tmp68 ; <i64> [#uses=3] - %tmp72 = shl i64 %tmp69, 32 ; <i64> [#uses=1] - %tmp73 = lshr i64 %tmp65, 32 ; <i64> [#uses=1] - %tmp74 = or i64 %tmp72, %tmp73 ; <i64> [#uses=3] - %tmp75 = icmp ult i64 %tmp74, %tmp71 ; <i1> [#uses=1] - br i1 %tmp75, label %bb66, label %bb69 - -bb66: ; preds = %bb60 - %tmp76 = add i64 %tmp74, %tmp61 ; <i64> [#uses=4] - %.not139 = icmp uge i64 %tmp76, %tmp61 ; <i1> [#uses=1] - %tmp77 = icmp ult i64 %tmp76, %tmp71 ; <i1> [#uses=1] - %or.cond140 = and i1 %tmp77, %.not139 ; <i1> [#uses=1] - br i1 %or.cond140, label %bb68, label %bb69 - -bb68: ; preds = %bb66 - %tmp78 = add i64 %tmp76, %tmp61 ; <i64> [#uses=1] - br label %bb69 - -bb69: ; preds = %bb68, %bb66, %bb60 - %__r114.0 = phi i64 [ %tmp74, %bb60 ], [ %tmp76, %bb66 ], [ %tmp78, %bb68 ] ; <i64> [#uses=1] - %tmp79 = sub i64 %__r114.0, %tmp71 ; <i64> [#uses=2] - %tmp80 = urem i64 %tmp79, %tmp67 ; <i64> [#uses=1] - %tmp81 = udiv i64 %tmp79, %tmp67 ; <i64> [#uses=1] - %tmp82 = mul i64 %tmp81, %tmp68 ; <i64> [#uses=3] - %tmp83 = shl i64 %tmp80, 32 ; <i64> [#uses=1] - %tmp84 = and i64 %tmp65, 4294967295 ; <i64> [#uses=1] - %tmp85 = or i64 %tmp83, %tmp84 ; <i64> [#uses=3] - %tmp86 = icmp ult i64 %tmp85, %tmp82 ; <i1> [#uses=1] - br i1 %tmp86, label %bb70, label %bb73 - -bb70: ; preds = %bb69 - %tmp87 = add i64 %tmp85, %tmp61 ; <i64> [#uses=4] - %.not141 = icmp uge i64 %tmp87, %tmp61 ; <i1> [#uses=1] - %tmp88 = icmp ult i64 %tmp87, %tmp82 ; <i1> [#uses=1] - %or.cond142 = and i1 %tmp88, %.not141 ; <i1> [#uses=1] - br i1 %or.cond142, label %bb72, label %bb73 - -bb72: ; preds = %bb70 - %tmp89 = add i64 %tmp87, %tmp61 ; <i64> [#uses=1] - br label %bb73 - -bb73: ; preds = %bb72, %bb70, %bb69 - %__r013.0 = phi i64 [ %tmp85, %bb69 ], [ %tmp87, %bb70 ], [ %tmp89, %bb72 ] ; <i64> [#uses=1] - br label %bb74 - -bb74: ; preds = %bb73, %bb57 - %__r013.0.pn = phi i64 [ %__r013.0, %bb73 ], [ %tmp2, %bb57 ] ; <i64> [#uses=1] - %.pn135 = phi i64 [ %tmp82, %bb73 ], [ %d0.1.ph, %bb57 ] ; <i64> [#uses=1] - %n0.2 = phi i64 [ %tmp66, %bb73 ], [ %tmp1, %bb57 ] ; <i64> [#uses=2] - %d0.2 = phi i64 [ %tmp61, %bb73 ], [ %d0.1.ph, %bb57 ] ; <i64> [#uses=8] - %n1.1 = sub i64 %__r013.0.pn, %.pn135 ; <i64> [#uses=2] - %tmp90 = lshr i64 %d0.2, 32 ; <i64> [#uses=4] - %tmp91 = and i64 %d0.2, 4294967295 ; <i64> [#uses=2] - %tmp92 = urem i64 %n1.1, %tmp90 ; <i64> [#uses=1] - %tmp93 = udiv i64 %n1.1, %tmp90 ; <i64> [#uses=1] - %tmp94 = mul i64 %tmp93, %tmp91 ; <i64> [#uses=3] - %tmp95 = shl i64 %tmp92, 32 ; <i64> [#uses=1] - %tmp96 = lshr i64 %n0.2, 32 ; <i64> [#uses=1] - %tmp97 = or i64 %tmp95, %tmp96 ; <i64> [#uses=3] - %tmp98 = icmp ult i64 %tmp97, %tmp94 ; <i1> [#uses=1] - br i1 %tmp98, label %bb75, label %bb78 - -bb75: ; preds = %bb74 - %tmp99 = add i64 %tmp97, %d0.2 ; <i64> [#uses=4] - %.not143 = icmp uge i64 %tmp99, %d0.2 ; <i1> [#uses=1] - %tmp100 = icmp ult i64 %tmp99, %tmp94 ; <i1> [#uses=1] - %or.cond144 = and i1 %tmp100, %.not143 ; <i1> [#uses=1] - br i1 %or.cond144, label %bb77, label %bb78 - -bb77: ; preds = %bb75 - %tmp101 = add i64 %tmp99, %d0.2 ; <i64> [#uses=1] - br label %bb78 - -bb78: ; preds = %bb77, %bb75, %bb74 - %__r17.0 = phi i64 [ %tmp97, %bb74 ], [ %tmp99, %bb75 ], [ %tmp101, %bb77 ] ; <i64> [#uses=1] - %tmp102 = sub i64 %__r17.0, %tmp94 ; <i64> [#uses=2] - %tmp103 = urem i64 %tmp102, %tmp90 ; <i64> [#uses=1] - %tmp104 = udiv i64 %tmp102, %tmp90 ; <i64> [#uses=1] - %tmp105 = mul i64 %tmp104, %tmp91 ; <i64> [#uses=5] - %tmp106 = shl i64 %tmp103, 32 ; <i64> [#uses=1] - %tmp107 = and i64 %n0.2, 4294967295 ; <i64> [#uses=1] - %tmp108 = or i64 %tmp106, %tmp107 ; <i64> [#uses=3] - %tmp109 = icmp ult i64 %tmp108, %tmp105 ; <i1> [#uses=1] - br i1 %tmp109, label %bb79, label %bb83 - -bb79: ; preds = %bb78 - %tmp110 = add i64 %tmp108, %d0.2 ; <i64> [#uses=4] - %.not145 = icmp uge i64 %tmp110, %d0.2 ; <i1> [#uses=1] - %tmp111 = icmp ult i64 %tmp110, %tmp105 ; <i1> [#uses=1] - %or.cond146 = and i1 %tmp111, %.not145 ; <i1> [#uses=1] - br i1 %or.cond146, label %bb81, label %bb83 - -bb81: ; preds = %bb79 - %tmp112 = add i64 %tmp110, %d0.2 ; <i64> [#uses=1] - br label %bb83 - -bb83: ; preds = %bb81, %bb79, %bb78, %bb48, %bb46, %bb45 - %bm.0 = phi i64 [ %tmp16, %bb46 ], [ %tmp16, %bb48 ], [ %tmp16, %bb45 ], [ %tmp58, %bb79 ], [ %tmp58, %bb81 ], [ %tmp58, %bb78 ] ; <i64> [#uses=1] - %__r06.0.pn = phi i64 [ %tmp42, %bb45 ], [ %tmp44, %bb46 ], [ %tmp46, %bb48 ], [ %tmp108, %bb78 ], [ %tmp110, %bb79 ], [ %tmp112, %bb81 ] ; <i64> [#uses=1] - %.pn = phi i64 [ %tmp39, %bb46 ], [ %tmp39, %bb48 ], [ %tmp39, %bb45 ], [ %tmp105, %bb79 ], [ %tmp105, %bb81 ], [ %tmp105, %bb78 ] ; <i64> [#uses=1] - %tmp113 = icmp eq i128* %rp, null ; <i1> [#uses=1] - br i1 %tmp113, label %bb131, label %bb84 - -bb84: ; preds = %bb83 - %n0.1 = sub i64 %__r06.0.pn, %.pn ; <i64> [#uses=1] - %.cast85 = and i64 %bm.0, 4294967295 ; <i64> [#uses=1] - %tmp114 = lshr i64 %n0.1, %.cast85 ; <i64> [#uses=1] - %tmp115 = zext i64 %tmp114 to i128 ; <i128> [#uses=1] - store i128 %tmp115, i128* %rp, align 16 - br label %bb131 - -bb86: ; preds = %entry - %tmp116 = icmp ugt i64 %tmp4, %tmp2 ; <i1> [#uses=1] - br i1 %tmp116, label %bb87, label %bb93.thread - -bb93.thread: ; preds = %bb86 - br label %bb90 - -bb87: ; preds = %bb86 - %tmp117 = icmp eq i128* %rp, null ; <i1> [#uses=1] - br i1 %tmp117, label %bb131, label %bb88 - -bb88: ; preds = %bb87 - store i128 %n, i128* %rp, align 16 - br label %bb131 - -bb90: ; preds = %bb93, %bb93.thread - %__a.0.reg2mem.0 = phi i64 [ 56, %bb93.thread ], [ %tmp120, %bb93 ] ; <i64> [#uses=3] - %.cast91 = and i64 %__a.0.reg2mem.0, 4294967288 ; <i64> [#uses=1] - %tmp136 = shl i64 255, %.cast91 ; <i64> [#uses=1] - %tmp118 = and i64 %tmp4, %tmp136 ; <i64> [#uses=1] - %tmp119 = icmp eq i64 %tmp118, 0 ; <i1> [#uses=1] - br i1 %tmp119, label %bb93, label %bb94 - -bb93: ; preds = %bb90 - %tmp120 = add i64 %__a.0.reg2mem.0, -8 ; <i64> [#uses=3] - %tmp121 = icmp eq i64 %tmp120, 0 ; <i1> [#uses=1] - br i1 %tmp121, label %bb94, label %bb90 - -bb94: ; preds = %bb93, %bb90 - %__a.0.reg2mem.1 = phi i64 [ %__a.0.reg2mem.0, %bb90 ], [ %tmp120, %bb93 ] ; <i64> [#uses=2] - %.cast95 = and i64 %__a.0.reg2mem.1, 4294967288 ; <i64> [#uses=1] - %tmp122 = lshr i64 %tmp4, %.cast95 ; <i64> [#uses=1] - %tmp123 = getelementptr [256 x i8]* @__clz_tab, i64 0, i64 %tmp122 ; <i8*> [#uses=1] - %tmp124 = load i8* %tmp123, align 1 ; <i8> [#uses=1] - %tmp125 = zext i8 %tmp124 to i64 ; <i64> [#uses=1] - %tmp126 = add i64 %tmp125, %__a.0.reg2mem.1 ; <i64> [#uses=2] - %tmp127 = sub i64 64, %tmp126 ; <i64> [#uses=7] - %tmp128 = icmp eq i64 %tmp126, 64 ; <i1> [#uses=1] - br i1 %tmp128, label %bb96, label %bb103 - -bb96: ; preds = %bb94 - %tmp129 = icmp ugt i64 %tmp2, %tmp4 ; <i1> [#uses=1] - %tmp130 = icmp uge i64 %tmp1, %tmp3 ; <i1> [#uses=1] - %tmp131 = or i1 %tmp129, %tmp130 ; <i1> [#uses=1] - br i1 %tmp131, label %bb99, label %bb101 - -bb99: ; preds = %bb96 - %tmp132 = sub i64 %tmp1, %tmp3 ; <i64> [#uses=2] - %tmp134 = sub i64 %tmp2, %tmp4 ; <i64> [#uses=1] - %tmp135 = icmp ugt i64 %tmp132, %tmp1 ; <i1> [#uses=1] - %tmp137 = zext i1 %tmp135 to i64 ; <i64> [#uses=1] - %tmp138 = sub i64 %tmp134, %tmp137 ; <i64> [#uses=1] - br label %bb101 - -bb101: ; preds = %bb99, %bb96 - %tmp139 = phi i64 [ %tmp138, %bb99 ], [ %tmp2, %bb96 ] ; <i64> [#uses=1] - %n0.3 = phi i64 [ %tmp132, %bb99 ], [ %tmp1, %bb96 ] ; <i64> [#uses=1] - %tmp140 = icmp eq i128* %rp, null ; <i1> [#uses=1] - br i1 %tmp140, label %bb131, label %bb102 - -bb102: ; preds = %bb101 - %tmp141 = zext i64 %n0.3 to i128 ; <i128> [#uses=1] - %tmp142 = zext i64 %tmp139 to i128 ; <i128> [#uses=1] - %tmp143 = shl i128 %tmp142, 64 ; <i128> [#uses=1] - %tmp144 = or i128 %tmp143, %tmp141 ; <i128> [#uses=1] - store i128 %tmp144, i128* %rp, align 16 - br label %bb131 - -bb103: ; preds = %bb94 - %tmp145 = sub i64 64, %tmp127 ; <i64> [#uses=4] - %.cast104 = and i64 %tmp127, 4294967295 ; <i64> [#uses=1] - %tmp146 = shl i64 %tmp4, %.cast104 ; <i64> [#uses=1] - %.cast105 = and i64 %tmp145, 4294967295 ; <i64> [#uses=1] - %tmp147 = lshr i64 %tmp3, %.cast105 ; <i64> [#uses=1] - %tmp148 = or i64 %tmp146, %tmp147 ; <i64> [#uses=9] - %.cast106 = and i64 %tmp127, 4294967295 ; <i64> [#uses=1] - %tmp149 = shl i64 %tmp3, %.cast106 ; <i64> [#uses=3] - %.cast107 = and i64 %tmp145, 4294967295 ; <i64> [#uses=1] - %tmp150 = lshr i64 %tmp2, %.cast107 ; <i64> [#uses=2] - %.cast108 = and i64 %tmp127, 4294967295 ; <i64> [#uses=1] - %tmp151 = shl i64 %tmp2, %.cast108 ; <i64> [#uses=1] - %.cast109 = and i64 %tmp145, 4294967295 ; <i64> [#uses=1] - %tmp152 = lshr i64 %tmp1, %.cast109 ; <i64> [#uses=1] - %tmp153 = or i64 %tmp151, %tmp152 ; <i64> [#uses=2] - %.cast110 = and i64 %tmp127, 4294967295 ; <i64> [#uses=1] - %tmp154 = shl i64 %tmp1, %.cast110 ; <i64> [#uses=3] - %tmp155 = lshr i64 %tmp148, 32 ; <i64> [#uses=4] - %tmp156 = and i64 %tmp148, 4294967295 ; <i64> [#uses=2] - %tmp157 = urem i64 %tmp150, %tmp155 ; <i64> [#uses=1] - %tmp158 = udiv i64 %tmp150, %tmp155 ; <i64> [#uses=4] - %tmp159 = mul i64 %tmp158, %tmp156 ; <i64> [#uses=3] - %tmp160 = shl i64 %tmp157, 32 ; <i64> [#uses=1] - %tmp161 = lshr i64 %tmp153, 32 ; <i64> [#uses=1] - %tmp162 = or i64 %tmp160, %tmp161 ; <i64> [#uses=3] - %tmp163 = icmp ult i64 %tmp162, %tmp159 ; <i1> [#uses=1] - br i1 %tmp163, label %bb111, label %bb114 - -bb111: ; preds = %bb103 - %tmp164 = add i64 %tmp158, -1 ; <i64> [#uses=1] - %tmp165 = add i64 %tmp162, %tmp148 ; <i64> [#uses=4] - %.not147 = icmp uge i64 %tmp165, %tmp148 ; <i1> [#uses=1] - %tmp166 = icmp ult i64 %tmp165, %tmp159 ; <i1> [#uses=1] - %or.cond148 = and i1 %tmp166, %.not147 ; <i1> [#uses=1] - br i1 %or.cond148, label %bb113, label %bb114 - -bb113: ; preds = %bb111 - %tmp167 = add i64 %tmp158, -2 ; <i64> [#uses=1] - %tmp168 = add i64 %tmp165, %tmp148 ; <i64> [#uses=1] - br label %bb114 - -bb114: ; preds = %bb113, %bb111, %bb103 - %__q1.0 = phi i64 [ %tmp158, %bb103 ], [ %tmp164, %bb111 ], [ %tmp167, %bb113 ] ; <i64> [#uses=1] - %__r1.0 = phi i64 [ %tmp162, %bb103 ], [ %tmp165, %bb111 ], [ %tmp168, %bb113 ] ; <i64> [#uses=1] - %tmp169 = sub i64 %__r1.0, %tmp159 ; <i64> [#uses=2] - %tmp170 = urem i64 %tmp169, %tmp155 ; <i64> [#uses=1] - %tmp171 = udiv i64 %tmp169, %tmp155 ; <i64> [#uses=4] - %tmp172 = mul i64 %tmp171, %tmp156 ; <i64> [#uses=3] - %tmp173 = shl i64 %tmp170, 32 ; <i64> [#uses=1] - %tmp174 = and i64 %tmp153, 4294967295 ; <i64> [#uses=1] - %tmp175 = or i64 %tmp173, %tmp174 ; <i64> [#uses=3] - %tmp176 = icmp ult i64 %tmp175, %tmp172 ; <i1> [#uses=1] - br i1 %tmp176, label %bb115, label %bb118 - -bb115: ; preds = %bb114 - %tmp177 = add i64 %tmp171, -1 ; <i64> [#uses=1] - %tmp178 = add i64 %tmp175, %tmp148 ; <i64> [#uses=4] - %.not149 = icmp uge i64 %tmp178, %tmp148 ; <i1> [#uses=1] - %tmp179 = icmp ult i64 %tmp178, %tmp172 ; <i1> [#uses=1] - %or.cond150 = and i1 %tmp179, %.not149 ; <i1> [#uses=1] - br i1 %or.cond150, label %bb117, label %bb118 - -bb117: ; preds = %bb115 - %tmp180 = add i64 %tmp171, -2 ; <i64> [#uses=1] - %tmp181 = add i64 %tmp178, %tmp148 ; <i64> [#uses=1] - br label %bb118 - -bb118: ; preds = %bb117, %bb115, %bb114 - %__q0.0 = phi i64 [ %tmp171, %bb114 ], [ %tmp177, %bb115 ], [ %tmp180, %bb117 ] ; <i64> [#uses=2] - %__r0.0 = phi i64 [ %tmp175, %bb114 ], [ %tmp178, %bb115 ], [ %tmp181, %bb117 ] ; <i64> [#uses=1] - %tmp182 = sub i64 %__r0.0, %tmp172 ; <i64> [#uses=3] - %tmp183 = shl i64 %__q1.0, 32 ; <i64> [#uses=1] - %tmp184 = or i64 %tmp183, %__q0.0 ; <i64> [#uses=1] - %tmp185 = and i64 %__q0.0, 4294967295 ; <i64> [#uses=2] - %tmp186 = lshr i64 %tmp184, 32 ; <i64> [#uses=2] - %tmp187 = and i64 %tmp149, 4294967295 ; <i64> [#uses=2] - %tmp188 = lshr i64 %tmp149, 32 ; <i64> [#uses=2] - %tmp189 = mul i64 %tmp185, %tmp187 ; <i64> [#uses=2] - %tmp190 = mul i64 %tmp185, %tmp188 ; <i64> [#uses=1] - %tmp191 = mul i64 %tmp186, %tmp187 ; <i64> [#uses=2] - %tmp192 = mul i64 %tmp186, %tmp188 ; <i64> [#uses=1] - %tmp193 = lshr i64 %tmp189, 32 ; <i64> [#uses=1] - %tmp194 = add i64 %tmp193, %tmp190 ; <i64> [#uses=1] - %tmp195 = add i64 %tmp194, %tmp191 ; <i64> [#uses=3] - %tmp196 = icmp ult i64 %tmp195, %tmp191 ; <i1> [#uses=1] - %tmp197 = select i1 %tmp196, i64 4294967296, i64 0 ; <i64> [#uses=1] - %__x3.0 = add i64 %tmp192, %tmp197 ; <i64> [#uses=1] - %tmp198 = lshr i64 %tmp195, 32 ; <i64> [#uses=1] - %tmp199 = add i64 %tmp198, %__x3.0 ; <i64> [#uses=4] - %tmp200 = shl i64 %tmp195, 32 ; <i64> [#uses=1] - %tmp201 = and i64 %tmp189, 4294967295 ; <i64> [#uses=1] - %tmp202 = or i64 %tmp200, %tmp201 ; <i64> [#uses=4] - %tmp203 = icmp ugt i64 %tmp199, %tmp182 ; <i1> [#uses=1] - br i1 %tmp203, label %bb125, label %bb121 - -bb121: ; preds = %bb118 - %tmp204 = icmp eq i64 %tmp199, %tmp182 ; <i1> [#uses=1] - %tmp205 = icmp ugt i64 %tmp202, %tmp154 ; <i1> [#uses=1] - %tmp206 = and i1 %tmp204, %tmp205 ; <i1> [#uses=1] - br i1 %tmp206, label %bb125, label %bb126 - -bb125: ; preds = %bb121, %bb118 - %tmp207 = sub i64 %tmp202, %tmp149 ; <i64> [#uses=2] - %tmp208 = sub i64 %tmp199, %tmp148 ; <i64> [#uses=1] - %tmp209 = icmp ugt i64 %tmp207, %tmp202 ; <i1> [#uses=1] - %tmp210 = zext i1 %tmp209 to i64 ; <i64> [#uses=1] - %tmp211 = sub i64 %tmp208, %tmp210 ; <i64> [#uses=1] - br label %bb126 - -bb126: ; preds = %bb125, %bb121 - %m1.0 = phi i64 [ %tmp199, %bb121 ], [ %tmp211, %bb125 ] ; <i64> [#uses=1] - %m0.0 = phi i64 [ %tmp202, %bb121 ], [ %tmp207, %bb125 ] ; <i64> [#uses=1] - %tmp212 = icmp eq i128* %rp, null ; <i1> [#uses=1] - br i1 %tmp212, label %bb131, label %bb127 - -bb127: ; preds = %bb126 - %tmp213 = sub i64 %tmp154, %m0.0 ; <i64> [#uses=2] - %tmp214 = sub i64 %tmp182, %m1.0 ; <i64> [#uses=1] - %tmp215 = icmp ugt i64 %tmp213, %tmp154 ; <i1> [#uses=1] - %tmp216 = zext i1 %tmp215 to i64 ; <i64> [#uses=1] - %tmp217 = sub i64 %tmp214, %tmp216 ; <i64> [#uses=2] - %.cast128 = and i64 %tmp145, 4294967295 ; <i64> [#uses=1] - %tmp218 = shl i64 %tmp217, %.cast128 ; <i64> [#uses=1] - %.cast129 = and i64 %tmp127, 4294967295 ; <i64> [#uses=1] - %tmp219 = lshr i64 %tmp213, %.cast129 ; <i64> [#uses=1] - %tmp220 = or i64 %tmp218, %tmp219 ; <i64> [#uses=1] - %.cast130 = and i64 %tmp127, 4294967295 ; <i64> [#uses=1] - %tmp221 = lshr i64 %tmp217, %.cast130 ; <i64> [#uses=1] - %tmp222 = zext i64 %tmp220 to i128 ; <i128> [#uses=1] - %tmp223 = zext i64 %tmp221 to i128 ; <i128> [#uses=1] - %tmp224 = shl i128 %tmp223, 64 ; <i128> [#uses=1] - %tmp225 = or i128 %tmp224, %tmp222 ; <i128> [#uses=1] - store i128 %tmp225, i128* %rp, align 16 - br label %bb131 - -bb131: ; preds = %bb127, %bb126, %bb102, %bb101, %bb88, %bb87, %bb84, %bb83 - ret void + %tmp2 = trunc i128 %Z to i64 + %tmp4 = trunc i128 %Y to i64 + store i64 %tmp2, i64* %P + store i64 %tmp4, i64* %Q + %x = sub i64 %tmp2, %tmp4 + %c = sub i64 %tmp2, %tmp4 + %tmp137 = zext i1 %C to i64 + %tmp138 = sub i64 %c, %tmp137 + br label %T + +T: + %G = phi i64 [%tmp138, %entry], [%tmp2, %Fal] + %F = zext i64 %G to i128 + ret i128 %F + +Fal: + br label %T } |