99 lines · plain
1; RUN: llc -verify-machineinstrs < %s2; <rdar://problem/10270968>3target 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-n8:16:32:64-S128"4target triple = "x86_64-apple-macosx10.7.2"5 6%struct.optab = type { i32, [59 x %struct.anon.3] }7%struct.anon.3 = type { i32, ptr }8%struct.rtx_def = type { [2 x i8], i8, i8, [1 x %union.rtunion_def] }9%union.rtunion_def = type { i64 }10%struct.insn_data = type { ptr, ptr, ptr, ptr, i8, i8, i8, i8 }11%struct.insn_operand_data = type { ptr, ptr, [2 x i8], i8, i8 }12 13@optab_table = external global [49 x ptr], align 1614@insn_data = external constant [0 x %struct.insn_data]15 16define ptr @gen_add3_insn(ptr %r0, ptr %r1, ptr %c) nounwind uwtable ssp {17entry:18 %0 = load i32, ptr %r0, align 819 %1 = lshr i32 %0, 1620 %bf.clear = and i32 %1, 25521 %idxprom = sext i32 %bf.clear to i6422 %2 = load ptr, ptr @optab_table, align 823 %handlers = getelementptr inbounds %struct.optab, ptr %2, i32 0, i32 124 %arrayidx = getelementptr inbounds [59 x %struct.anon.3], ptr %handlers, i32 0, i64 %idxprom25 %3 = load i32, ptr %arrayidx, align 426 %cmp = icmp eq i32 %3, 131727 br i1 %cmp, label %if.then, label %lor.lhs.false28 29lor.lhs.false: ; preds = %entry30 %idxprom1 = sext i32 %3 to i6431 %arrayidx2 = getelementptr inbounds [0 x %struct.insn_data], ptr @insn_data, i32 0, i64 %idxprom132 %operand = getelementptr inbounds %struct.insn_data, ptr %arrayidx2, i32 0, i32 333 %4 = load ptr, ptr %operand, align 834 %5 = load ptr, ptr %4, align 835 %idxprom4 = sext i32 %3 to i6436 %arrayidx5 = getelementptr inbounds [0 x %struct.insn_data], ptr @insn_data, i32 0, i64 %idxprom437 %operand6 = getelementptr inbounds %struct.insn_data, ptr %arrayidx5, i32 0, i32 338 %6 = load ptr, ptr %operand6, align 839 %bf.field.offs = getelementptr i8, ptr %6, i32 1640 %7 = load i32, ptr %bf.field.offs, align 841 %bf.clear8 = and i32 %7, 6553542 %call = tail call i32 %5(ptr %r0, i32 %bf.clear8)43 %tobool = icmp ne i32 %call, 044 br i1 %tobool, label %lor.lhs.false9, label %if.then45 46lor.lhs.false9: ; preds = %lor.lhs.false47 %idxprom10 = sext i32 %3 to i6448 %arrayidx11 = getelementptr inbounds [0 x %struct.insn_data], ptr @insn_data, i32 0, i64 %idxprom1049 %operand12 = getelementptr inbounds %struct.insn_data, ptr %arrayidx11, i32 0, i32 350 %8 = load ptr, ptr %operand12, align 851 %arrayidx13 = getelementptr inbounds %struct.insn_operand_data, ptr %8, i64 152 %9 = load ptr, ptr %arrayidx13, align 853 %idxprom15 = sext i32 %3 to i6454 %arrayidx16 = getelementptr inbounds [0 x %struct.insn_data], ptr @insn_data, i32 0, i64 %idxprom1555 %operand17 = getelementptr inbounds %struct.insn_data, ptr %arrayidx16, i32 0, i32 356 %10 = load ptr, ptr %operand17, align 857 %arrayidx18 = getelementptr inbounds %struct.insn_operand_data, ptr %10, i64 158 %bf.field.offs19 = getelementptr i8, ptr %arrayidx18, i32 1659 %11 = load i32, ptr %bf.field.offs19, align 860 %bf.clear20 = and i32 %11, 6553561 %call21 = tail call i32 %9(ptr %r1, i32 %bf.clear20)62 %tobool22 = icmp ne i32 %call21, 063 br i1 %tobool22, label %lor.lhs.false23, label %if.then64 65lor.lhs.false23: ; preds = %lor.lhs.false966 %idxprom24 = sext i32 %3 to i6467 %arrayidx25 = getelementptr inbounds [0 x %struct.insn_data], ptr @insn_data, i32 0, i64 %idxprom2468 %operand26 = getelementptr inbounds %struct.insn_data, ptr %arrayidx25, i32 0, i32 369 %12 = load ptr, ptr %operand26, align 870 %arrayidx27 = getelementptr inbounds %struct.insn_operand_data, ptr %12, i64 271 %13 = load ptr, ptr %arrayidx27, align 872 %idxprom29 = sext i32 %3 to i6473 %arrayidx30 = getelementptr inbounds [0 x %struct.insn_data], ptr @insn_data, i32 0, i64 %idxprom2974 %operand31 = getelementptr inbounds %struct.insn_data, ptr %arrayidx30, i32 0, i32 375 %14 = load ptr, ptr %operand31, align 876 %arrayidx32 = getelementptr inbounds %struct.insn_operand_data, ptr %14, i64 277 %bf.field.offs33 = getelementptr i8, ptr %arrayidx32, i32 1678 %15 = load i32, ptr %bf.field.offs33, align 879 %bf.clear34 = and i32 %15, 6553580 %call35 = tail call i32 %13(ptr %c, i32 %bf.clear34)81 %tobool36 = icmp ne i32 %call35, 082 br i1 %tobool36, label %if.end, label %if.then83 84if.then: ; preds = %lor.lhs.false23, %lor.lhs.false9, %lor.lhs.false, %entry85 br label %return86 87if.end: ; preds = %lor.lhs.false2388 %idxprom37 = sext i32 %3 to i6489 %arrayidx38 = getelementptr inbounds [0 x %struct.insn_data], ptr @insn_data, i32 0, i64 %idxprom3790 %genfun = getelementptr inbounds %struct.insn_data, ptr %arrayidx38, i32 0, i32 291 %16 = load ptr, ptr %genfun, align 892 %call39 = tail call ptr (ptr, ...) %16(ptr %r0, ptr %r1, ptr %c)93 br label %return94 95return: ; preds = %if.end, %if.then96 %17 = phi ptr [ %call39, %if.end ], [ null, %if.then ]97 ret ptr %1798}99