Advertisement
Guest User

Untitled

a guest
Mar 16th, 2018
118
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
LLVM 23.80 KB | None | 0 0
  1. define i8** @japi1_christoffel_63945(i8**, i8***, i32) #0 !dbg !5 {
  2. top:
  3.   %3 = alloca { i64, i64, %Slice }, align 8
  4.   %4 = alloca i8***, align 8
  5.   store volatile i8*** %1, i8**** %4, align 8
  6.   %5 = alloca [3 x i64], align 8
  7.   %6 = alloca [3 x i64], align 8
  8.   %7 = call i8**** @jl_get_ptls_states() #4
  9.   %8 = alloca [56 x i8**], align 8
  10.   %.sub = getelementptr inbounds [56 x i8**], [56 x i8**]* %8, i64 0, i64 0
  11.   %9 = getelementptr [56 x i8**], [56 x i8**]* %8, i64 0, i64 50
  12.   %10 = getelementptr [56 x i8**], [56 x i8**]* %8, i64 0, i64 2
  13.   %11 = getelementptr [56 x i8**], [56 x i8**]* %8, i64 0, i64 49
  14.   %12 = bitcast i8*** %9 to i8*
  15.   call void @llvm.memset.p0i8.i32(i8* %12, i8 0, i32 48, i32 8, i1 false)
  16.   %13 = bitcast [56 x i8**]* %8 to i64*
  17.   %14 = bitcast i8*** %10 to i8*
  18.   call void @llvm.memset.p0i8.i64(i8* %14, i8 0, i64 376, i32 8, i1 false)
  19.   store i64 108, i64* %13, align 8
  20.   %15 = bitcast i8**** %7 to i64*
  21.   %16 = load i64, i64* %15, align 8
  22.   %17 = getelementptr [56 x i8**], [56 x i8**]* %8, i64 0, i64 1
  23.   %18 = bitcast i8*** %17 to i64*
  24.   store i64 %16, i64* %18, align 8
  25.   store i8*** %.sub, i8**** %7, align 8
  26.   store i8** null, i8*** %11, align 8
  27.   %19 = icmp eq i32 %2, 2
  28.   br i1 %19, label %fail, label %pass
  29.  
  30. fail:                                             ; preds = %top
  31.   %20 = getelementptr i8**, i8*** %1, i64 2
  32.   call void @jl_bounds_error_tuple_int(i8*** %20, i64 0, i64 1)
  33.   unreachable
  34.  
  35. pass:                                             ; preds = %top
  36.   %21 = getelementptr [56 x i8**], [56 x i8**]* %8, i64 0, i64 3
  37.   %22 = getelementptr [56 x i8**], [56 x i8**]* %8, i64 0, i64 4
  38.   %23 = getelementptr [56 x i8**], [56 x i8**]* %8, i64 0, i64 5
  39.   %24 = getelementptr [56 x i8**], [56 x i8**]* %8, i64 0, i64 6
  40.   %25 = getelementptr [56 x i8**], [56 x i8**]* %8, i64 0, i64 7
  41.   %26 = getelementptr [56 x i8**], [56 x i8**]* %8, i64 0, i64 8
  42.   %27 = getelementptr [56 x i8**], [56 x i8**]* %8, i64 0, i64 52
  43.   %28 = getelementptr [56 x i8**], [56 x i8**]* %8, i64 0, i64 51
  44.   %29 = load i8**, i8*** %1, align 8
  45.   %30 = getelementptr i8**, i8*** %1, i64 1
  46.   %31 = bitcast i8*** %30 to i64*
  47.   %32 = load i64, i64* %31, align 8
  48.   %33 = getelementptr i8**, i8*** %1, i64 2
  49.   %34 = bitcast i8*** %33 to i64*
  50.   %35 = load i64, i64* %34, align 8
  51.   store i8** %29, i8*** %9, align 8
  52.   %36 = bitcast i8*** %28 to i64*
  53.   store i64 %32, i64* %36, align 8
  54.   %37 = bitcast i8*** %27 to i64*
  55.   store i64 %35, i64* %37, align 8
  56.   %38 = call i8** @japi1_evaluate_63689(i8** inttoptr (i64 4555326696 to i8**), i8*** %9, i32 3)
  57.   store i8** %38, i8*** %10, align 8
  58.   %39 = bitcast i8** %29 to i8***
  59.   %40 = load i8**, i8*** %39, align 8
  60.   store i8** %40, i8*** %21, align 8
  61.   %41 = getelementptr i8*, i8** %40, i64 3
  62.   %42 = bitcast i8** %41 to i64*
  63.   %43 = load i64, i64* %42, align 8
  64.   store i8** %40, i8*** %22, align 8
  65.   store i8** %40, i8*** %23, align 8
  66.   %44 = call i8** inttoptr (i64 4475159344 to i8** (i8**, i64, i64, i64)*)(i8** inttoptr (i64 4811895184 to i8**), i64 %43, i64 %43, i64 %43)
  67.   store i8** %44, i8*** %24, align 8
  68.   %45 = call i8** @"julia_fill!_63378"(i8** %44, double 0.000000e+00)
  69.   store i8** %45, i8*** %25, align 8
  70.   %46 = load i8**, i8*** %39, align 8
  71.   store i8** %46, i8*** %26, align 8
  72.   %47 = getelementptr i8*, i8** %46, i64 3
  73.   %48 = bitcast i8** %47 to i64*
  74.   %49 = load i64, i64* %48, align 8
  75.   %50 = icmp slt i64 %49, 1
  76.   br i1 %50, label %pass.L166_crit_edge, label %if.lr.ph
  77.  
  78. pass.L166_crit_edge:                              ; preds = %pass
  79.   %.pre98 = bitcast i8**** %7 to i8*
  80.   br label %L166
  81.  
  82. if.lr.ph:                                         ; preds = %pass
  83.   %51 = getelementptr [56 x i8**], [56 x i8**]* %8, i64 0, i64 9
  84.   %52 = getelementptr [56 x i8**], [56 x i8**]* %8, i64 0, i64 10
  85.   %53 = getelementptr [56 x i8**], [56 x i8**]* %8, i64 0, i64 11
  86.   %54 = getelementptr [56 x i8**], [56 x i8**]* %8, i64 0, i64 12
  87.   %55 = getelementptr [56 x i8**], [56 x i8**]* %8, i64 0, i64 13
  88.   %56 = getelementptr [56 x i8**], [56 x i8**]* %8, i64 0, i64 14
  89.   %57 = getelementptr [56 x i8**], [56 x i8**]* %8, i64 0, i64 15
  90.   %58 = getelementptr [56 x i8**], [56 x i8**]* %8, i64 0, i64 16
  91.   %59 = getelementptr [56 x i8**], [56 x i8**]* %8, i64 0, i64 17
  92.   %60 = getelementptr [56 x i8**], [56 x i8**]* %8, i64 0, i64 18
  93.   %61 = getelementptr [56 x i8**], [56 x i8**]* %8, i64 0, i64 19
  94.   %62 = getelementptr [56 x i8**], [56 x i8**]* %8, i64 0, i64 55
  95.   %63 = getelementptr [56 x i8**], [56 x i8**]* %8, i64 0, i64 54
  96.   %64 = getelementptr [56 x i8**], [56 x i8**]* %8, i64 0, i64 53
  97.   %65 = bitcast i8*** %64 to i64*
  98.   %66 = getelementptr i8*, i8** %45, i64 5
  99.   %67 = bitcast i8** %66 to i64*
  100.   %68 = getelementptr inbounds { i64, i64, %Slice }, { i64, i64, %Slice }* %3, i64 0, i32 0
  101.   %69 = getelementptr inbounds { i64, i64, %Slice }, { i64, i64, %Slice }* %3, i64 0, i32 1
  102.   %70 = getelementptr inbounds { i64, i64, %Slice }, { i64, i64, %Slice }* %3, i64 0, i32 2, i32 0, i32 0
  103.   %71 = getelementptr i8*, i8** %45, i64 3
  104.   %72 = bitcast i8** %71 to i64*
  105.   %73 = getelementptr i8*, i8** %45, i64 4
  106.   %74 = bitcast i8** %73 to i64*
  107.   %75 = bitcast i8**** %7 to i8*
  108.   br label %if
  109.  
  110. L60.loopexit.loopexit:                            ; preds = %L154
  111.   br label %L60.loopexit
  112.  
  113. L60.loopexit:                                     ; preds = %L60.loopexit.loopexit, %if
  114.   %76 = icmp eq i64 %"#temp#1.076", %49
  115.   br i1 %76, label %L166.loopexit, label %L60.loopexit.if_crit_edge
  116.  
  117. L60.loopexit.if_crit_edge:                        ; preds = %L60.loopexit
  118.   %77 = add i64 %"#temp#1.076", 1
  119.   %.pre = load i8**, i8*** %39, align 8
  120.   %.phi.trans.insert = getelementptr i8*, i8** %.pre, i64 3
  121.   %.phi.trans.insert92 = bitcast i8** %.phi.trans.insert to i64*
  122.   %.pre93 = load i64, i64* %.phi.trans.insert92, align 8
  123.   br label %if
  124.  
  125. if:                                               ; preds = %L60.loopexit.if_crit_edge, %if.lr.ph
  126.   %78 = phi i64 [ %49, %if.lr.ph ], [ %.pre93, %L60.loopexit.if_crit_edge ]
  127.   %79 = phi i8** [ %46, %if.lr.ph ], [ %.pre, %L60.loopexit.if_crit_edge ]
  128.   %"#temp#1.076" = phi i64 [ 1, %if.lr.ph ], [ %77, %L60.loopexit.if_crit_edge ]
  129.   store i8** %79, i8*** %51, align 8
  130.   %80 = icmp slt i64 %78, 1
  131.   br i1 %80, label %L60.loopexit, label %if3.lr.ph
  132.  
  133. if3.lr.ph:                                        ; preds = %if
  134.   %81 = add i64 %"#temp#1.076", -1
  135.   br label %if3
  136.  
  137. L166.loopexit:                                    ; preds = %L60.loopexit
  138.   br label %L166
  139.  
  140. L166:                                             ; preds = %L166.loopexit, %pass.L166_crit_edge
  141.   %.pre-phi = phi i8* [ %.pre98, %pass.L166_crit_edge ], [ %75, %L166.loopexit ]
  142.   %82 = getelementptr [56 x i8**], [56 x i8**]* %8, i64 0, i64 20
  143.   %83 = getelementptr [56 x i8**], [56 x i8**]* %8, i64 0, i64 21
  144.   %84 = getelementptr [56 x i8**], [56 x i8**]* %8, i64 0, i64 22
  145.   %85 = getelementptr [56 x i8**], [56 x i8**]* %8, i64 0, i64 23
  146.   %86 = getelementptr [56 x i8**], [56 x i8**]* %8, i64 0, i64 24
  147.   %87 = getelementptr [56 x i8**], [56 x i8**]* %8, i64 0, i64 25
  148.   %88 = getelementptr [56 x i8**], [56 x i8**]* %8, i64 0, i64 26
  149.   %89 = getelementptr [56 x i8**], [56 x i8**]* %8, i64 0, i64 27
  150.   %90 = getelementptr [56 x i8**], [56 x i8**]* %8, i64 0, i64 28
  151.   %91 = getelementptr [56 x i8**], [56 x i8**]* %8, i64 0, i64 29
  152.   %92 = getelementptr [56 x i8**], [56 x i8**]* %8, i64 0, i64 30
  153.   %93 = getelementptr [56 x i8**], [56 x i8**]* %8, i64 0, i64 31
  154.   %94 = getelementptr [56 x i8**], [56 x i8**]* %8, i64 0, i64 32
  155.   %95 = getelementptr [56 x i8**], [56 x i8**]* %8, i64 0, i64 33
  156.   %96 = getelementptr [56 x i8**], [56 x i8**]* %8, i64 0, i64 34
  157.   %97 = getelementptr [56 x i8**], [56 x i8**]* %8, i64 0, i64 35
  158.   %98 = getelementptr [56 x i8**], [56 x i8**]* %8, i64 0, i64 36
  159.   %99 = getelementptr [56 x i8**], [56 x i8**]* %8, i64 0, i64 37
  160.   %100 = getelementptr [56 x i8**], [56 x i8**]* %8, i64 0, i64 38
  161.   %101 = getelementptr [56 x i8**], [56 x i8**]* %8, i64 0, i64 39
  162.   %102 = getelementptr [56 x i8**], [56 x i8**]* %8, i64 0, i64 40
  163.   %103 = getelementptr [56 x i8**], [56 x i8**]* %8, i64 0, i64 41
  164.   %104 = getelementptr [56 x i8**], [56 x i8**]* %8, i64 0, i64 42
  165.   %105 = getelementptr [56 x i8**], [56 x i8**]* %8, i64 0, i64 43
  166.   %106 = getelementptr [56 x i8**], [56 x i8**]* %8, i64 0, i64 44
  167.   store i8** %38, i8*** %82, align 8
  168.   %107 = call i8** @julia_inv_63382(i8** %38)
  169.   store i8** %107, i8*** %83, align 8
  170.   store i8** %107, i8*** %84, align 8
  171.   %108 = call i8 @julia_checkindices_63396(i8** %107, i8** inttoptr (i64 4621134800 to i8**))
  172.   store i8** %45, i8*** %85, align 8
  173.   %109 = call i8 @julia_checkindices_63397(i8** %45, i8** inttoptr (i64 4621132528 to i8**))
  174.   store i8** %107, i8*** %86, align 8
  175.   %110 = call i8 @julia_checkindices_63396(i8** %107, i8** inttoptr (i64 4621137232 to i8**))
  176.   store i8** %45, i8*** %87, align 8
  177.   %111 = call i8** @julia_similar_from_indices_63398(i8** inttoptr (i64 4555741776 to i8**), [3 x i64]* nocapture nonnull readonly @0, i8** %107, i8** %45, i8** inttoptr (i64 4842295344 to i8**), i8** inttoptr (i64 4842295344 to i8**))
  178.   store i8** %111, i8*** %88, align 8
  179.   %112 = call i8** @"julia_contract!_63399"(double 5.000000e-01, i8** %107, i8** inttoptr (i64 4842295344 to i8**), i8** %45, i8** inttoptr (i64 4842295344 to i8**), i64 0, i8** %111, [1 x i64]* nocapture nonnull readonly @1, [1 x i64]* nocapture nonnull readonly @2, [2 x i64]* nocapture nonnull readonly @3, [1 x i64]* nocapture nonnull readonly @4, [3 x i64]* nocapture nonnull readonly @5, i8** inttoptr (i64 4847279344 to i8**))
  180.   store i8** %112, i8*** %89, align 8
  181.   store i8** %107, i8*** %90, align 8
  182.   %113 = call i8 @julia_checkindices_63396(i8** %107, i8** inttoptr (i64 4621197456 to i8**))
  183.   store i8** %45, i8*** %91, align 8
  184.   %114 = call i8 @julia_checkindices_63397(i8** %45, i8** inttoptr (i64 4621195312 to i8**))
  185.   store i8** %107, i8*** %92, align 8
  186.   %115 = call i8 @julia_checkindices_63396(i8** %107, i8** inttoptr (i64 4621199728 to i8**))
  187.   store i8** %45, i8*** %93, align 8
  188.   %116 = call i8** @julia_similar_from_indices_63398(i8** inttoptr (i64 4555741776 to i8**), [3 x i64]* nocapture nonnull readonly @6, i8** %107, i8** %45, i8** inttoptr (i64 4842295344 to i8**), i8** inttoptr (i64 4842295344 to i8**))
  189.   store i8** %116, i8*** %94, align 8
  190.   %117 = call i8** @"julia_contract!_63399"(double 5.000000e-01, i8** %107, i8** inttoptr (i64 4842295344 to i8**), i8** %45, i8** inttoptr (i64 4842295344 to i8**), i64 0, i8** %116, [1 x i64]* nocapture nonnull readonly @7, [1 x i64]* nocapture nonnull readonly @8, [2 x i64]* nocapture nonnull readonly @9, [1 x i64]* nocapture nonnull readonly @10, [3 x i64]* nocapture nonnull readonly @11, i8** inttoptr (i64 4847279344 to i8**))
  191.   store i8** %117, i8*** %95, align 8
  192.   store i8** %107, i8*** %96, align 8
  193.   %118 = call i8 @julia_checkindices_63396(i8** %107, i8** inttoptr (i64 4621209712 to i8**))
  194.   store i8** %45, i8*** %97, align 8
  195.   %119 = call i8 @julia_checkindices_63397(i8** %45, i8** inttoptr (i64 4621207440 to i8**))
  196.   store i8** %107, i8*** %98, align 8
  197.   %120 = call i8 @julia_checkindices_63396(i8** %107, i8** inttoptr (i64 4621212944 to i8**))
  198.   store i8** %45, i8*** %99, align 8
  199.   %121 = call i8** @julia_similar_from_indices_63398(i8** inttoptr (i64 4555741776 to i8**), [3 x i64]* nocapture nonnull readonly @12, i8** %107, i8** %45, i8** inttoptr (i64 4842295344 to i8**), i8** inttoptr (i64 4842295344 to i8**))
  200.   store i8** %121, i8*** %100, align 8
  201.   %122 = call i8** @"julia_contract!_63399"(double 5.000000e-01, i8** %107, i8** inttoptr (i64 4842295344 to i8**), i8** %45, i8** inttoptr (i64 4842295344 to i8**), i64 0, i8** %121, [1 x i64]* nocapture nonnull readonly @13, [1 x i64]* nocapture nonnull readonly @14, [2 x i64]* nocapture nonnull readonly @15, [1 x i64]* nocapture nonnull readonly @16, [3 x i64]* nocapture nonnull readonly @17, i8** inttoptr (i64 4847279344 to i8**))
  202.   store i8** %122, i8*** %101, align 8
  203.   %123 = call i8 @julia_checkindices_63397(i8** %112, i8** inttoptr (i64 4621257936 to i8**))
  204.   %124 = call i8 @julia_checkindices_63397(i8** %117, i8** inttoptr (i64 4621255760 to i8**))
  205.   call void @julia_add_indices_63443([3 x i64]* noalias nocapture nonnull sret %5, i8** inttoptr (i64 4621259920 to i8**), i8** inttoptr (i64 4621259952 to i8**))
  206.   %125 = call i8 @julia_checkindices_63397(i8** %122, i8** inttoptr (i64 4621220880 to i8**))
  207.   %126 = call i8** @jl_gc_pool_alloc(i8* %.pre-phi, i32 1408, i32 32)
  208.   %127 = getelementptr i8*, i8** %126, i64 -1
  209.   %128 = bitcast i8** %127 to i8***
  210.   store i8** inttoptr (i64 4559708720 to i8**), i8*** %128, align 8
  211.   store i8** %126, i8*** %102, align 8
  212.   %129 = bitcast i8** %126 to i8***
  213.   store i8** %112, i8*** %129, align 8
  214.   %130 = getelementptr i8*, i8** %126, i64 1
  215.   %131 = bitcast i8** %130 to i64*
  216.   store i64 1, i64* %131, align 8
  217.   %132 = call i8** @jl_gc_pool_alloc(i8* %.pre-phi, i32 1408, i32 32)
  218.   %133 = getelementptr i8*, i8** %132, i64 -1
  219.   %134 = bitcast i8** %133 to i8***
  220.   store i8** inttoptr (i64 4559708720 to i8**), i8*** %134, align 8
  221.   store i8** %132, i8*** %103, align 8
  222.   %135 = bitcast i8** %132 to i8***
  223.   store i8** %117, i8*** %135, align 8
  224.   %136 = getelementptr i8*, i8** %132, i64 1
  225.   %137 = bitcast i8** %136 to i64*
  226.   store i64 1, i64* %137, align 8
  227.   %138 = call i8 @julia_checkindices_63397(i8** %122, i8** inttoptr (i64 4621261584 to i8**))
  228.   %139 = load i8**, i8*** inttoptr (i64 4616977056 to i8***), align 32
  229.   %140 = call i8** @jlsys_getindex_59433(i8** %139, i64 1)
  230.   call void @julia_add_indices_63443([3 x i64]* noalias nocapture nonnull sret %6, i8** inttoptr (i64 4621262192 to i8**), i8** inttoptr (i64 4621262224 to i8**))
  231.   %141 = call i8** @jl_gc_pool_alloc(i8* %.pre-phi, i32 1384, i32 16)
  232.   %142 = getelementptr i8*, i8** %141, i64 -1
  233.   %143 = bitcast i8** %142 to i8***
  234.   store i8** inttoptr (i64 4619139920 to i8**), i8*** %143, align 8
  235.   store i8** %141, i8*** %104, align 8
  236.   %144 = bitcast i8** %141 to i8***
  237.   store i8** null, i8*** %144, align 8
  238.   %145 = call i8** @jl_gc_pool_alloc(i8* %.pre-phi, i32 1408, i32 32)
  239.   %146 = getelementptr i8*, i8** %145, i64 -1
  240.   %147 = bitcast i8** %146 to i8***
  241.   store i8** inttoptr (i64 4619136656 to i8**), i8*** %147, align 8
  242.   store i8** %145, i8*** %105, align 8
  243.   %148 = bitcast i8** %145 to i8***
  244.   %149 = getelementptr i8*, i8** %145, i64 1
  245.   %150 = bitcast i8** %149 to i8***
  246.   %151 = getelementptr i8*, i8** %145, i64 2
  247.   %152 = bitcast i8** %151 to i8***
  248.   %153 = getelementptr inbounds i8*, i8** %145, i64 2
  249.   %154 = bitcast i8** %153 to i64*
  250.   store i64 0, i64* %154, align 8
  251.   store i8** %126, i8*** %148, align 8
  252.   store i8** %132, i8*** %150, align 8
  253.   %155 = call i8** @jl_gc_pool_alloc(i8* %.pre-phi, i32 1408, i32 32)
  254.   %156 = getelementptr i8*, i8** %155, i64 -1
  255.   %157 = bitcast i8** %156 to i8***
  256.   store i8** inttoptr (i64 4559708720 to i8**), i8*** %157, align 8
  257.   store i8** %155, i8*** %106, align 8
  258.   %158 = bitcast i8** %155 to i8***
  259.   store i8** %122, i8*** %158, align 8
  260.   %159 = getelementptr i8*, i8** %155, i64 1
  261.   %160 = bitcast i8** %159 to i64*
  262.   store i64 -1, i64* %160, align 8
  263.   store i8** %155, i8*** %152, align 8
  264.   %161 = icmp eq i8** %155, null
  265.   br i1 %161, label %cont36, label %wb_not_null
  266.  
  267. if3:                                              ; preds = %L154.if3_crit_edge, %if3.lr.ph
  268.   %162 = phi i64 [ %78, %if3.lr.ph ], [ %.pre97, %L154.if3_crit_edge ]
  269.   %163 = phi i8** [ %79, %if3.lr.ph ], [ %.pre94, %L154.if3_crit_edge ]
  270.   %"#temp#.075" = phi i64 [ 1, %if3.lr.ph ], [ %210, %L154.if3_crit_edge ]
  271.   store i8** %163, i8*** %52, align 8
  272.   %164 = icmp ult i64 %81, %162
  273.   br i1 %164, label %ib, label %oob
  274.  
  275. ib:                                               ; preds = %if3
  276.   %165 = add i64 %"#temp#.075", -1
  277.   %166 = getelementptr i8*, i8** %163, i64 4
  278.   %167 = bitcast i8** %166 to i64*
  279.   %168 = load i64, i64* %167, align 8
  280.   %169 = icmp ult i64 %165, %168
  281.   br i1 %169, label %idxend, label %oob
  282.  
  283. oob:                                              ; preds = %ib, %if3
  284.   %170 = alloca [2 x i64], align 8
  285.   %.sub50 = getelementptr inbounds [2 x i64], [2 x i64]* %170, i64 0, i64 0
  286.   store i64 %"#temp#1.076", i64* %.sub50, align 8
  287.   %171 = getelementptr [2 x i64], [2 x i64]* %170, i64 0, i64 1
  288.   store i64 %"#temp#.075", i64* %171, align 8
  289.   call void @jl_bounds_error_ints(i8** %163, i64* %.sub50, i64 2)
  290.   unreachable
  291.  
  292. idxend:                                           ; preds = %ib
  293.   %172 = mul i64 %162, %165
  294.   %173 = add i64 %81, %172
  295.   %174 = bitcast i8** %163 to i8****
  296.   %175 = load i8***, i8**** %174, align 8
  297.   %176 = getelementptr i8**, i8*** %175, i64 %173
  298.   %177 = load i8**, i8*** %176, align 8
  299.   %178 = icmp eq i8** %177, null
  300.   br i1 %178, label %fail4, label %pass7
  301.  
  302. fail4:                                            ; preds = %idxend
  303.   call void @jl_throw(i8** inttoptr (i64 4578160424 to i8**))
  304.   unreachable
  305.  
  306. pass7:                                            ; preds = %idxend
  307.   store i8** %177, i8*** %53, align 8
  308.   %179 = load i64, i64* %34, align 8
  309.   store i8** inttoptr (i64 4555327968 to i8**), i8*** %9, align 8
  310.   store i8** %177, i8*** %28, align 8
  311.   store i64 %32, i64* %37, align 8
  312.   store i64 %179, i64* %65, align 8
  313.   %180 = call i8** @jl_apply_generic(i8*** %9, i32 4)
  314.   store i8** %180, i8*** %54, align 8
  315.   store i8** %45, i8*** %55, align 8
  316.   store i8** %45, i8*** %56, align 8
  317.   store i8** %45, i8*** %57, align 8
  318.   %181 = load i64, i64* %67, align 8
  319.   %182 = icmp slt i64 %181, 0
  320.   %183 = select i1 %182, i64 0, i64 %181
  321.   store i64 %"#temp#1.076", i64* %68, align 8
  322.   store i64 %"#temp#.075", i64* %69, align 8
  323.   store i64 %183, i64* %70, align 8
  324.   store i8** %45, i8*** %58, align 8
  325.   %184 = load i64, i64* %72, align 8
  326.   store i8** %45, i8*** %59, align 8
  327.   %185 = load i64, i64* %74, align 8
  328.   store i8** %45, i8*** %60, align 8
  329.   %186 = icmp slt i64 %184, 0
  330.   %187 = select i1 %186, i64 0, i64 %184
  331.   %188 = icmp slt i64 %185, 0
  332.   %189 = select i1 %188, i64 0, i64 %185
  333.   %190 = icmp sgt i64 %"#temp#1.076", 0
  334.   %191 = zext i1 %190 to i8
  335.   %192 = icmp sle i64 %"#temp#1.076", %187
  336.   %193 = zext i1 %192 to i8
  337.   %194 = icmp sgt i64 %"#temp#.075", 0
  338.   %195 = zext i1 %194 to i8
  339.   %196 = icmp sle i64 %"#temp#.075", %189
  340.   %197 = zext i1 %196 to i8
  341.   %198 = and i8 %191, %193
  342.   %199 = and i8 %198, %197
  343.   %200 = and i8 %199, %195
  344.   %201 = icmp eq i8 %200, 0
  345.   br i1 %201, label %L152, label %L154
  346.  
  347. L152:                                             ; preds = %pass7
  348.   store i8** %45, i8*** %61, align 8
  349.   call void @julia_throw_boundserror_63381(i8** %45, { i64, i64, %Slice }* nocapture nonnull readonly %3)
  350.   call void @llvm.trap()
  351.   unreachable
  352.  
  353. L154:                                             ; preds = %pass7
  354.   store i8** %45, i8*** %28, align 8
  355.   store i8** inttoptr (i64 4556518536 to i8**), i8*** %9, align 8
  356.   store i8** %180, i8*** %27, align 8
  357.   %202 = call i8** @jl_box_int64(i64 signext %"#temp#1.076")
  358.   store i8** %202, i8*** %64, align 8
  359.   %203 = call i8** @jl_box_int64(i64 signext %"#temp#.075")
  360.   store i8** %203, i8*** %63, align 8
  361.   %204 = call i8** @jl_gc_pool_alloc(i8* %75, i32 1384, i32 16)
  362.   %205 = getelementptr i8*, i8** %204, i64 -1
  363.   %206 = bitcast i8** %205 to i8***
  364.   store i8** inttoptr (i64 4841145104 to i8**), i8*** %206, align 8
  365.   %207 = bitcast i8** %204 to i64*
  366.   store i64 %183, i64* %207, align 8
  367.   store i8** %204, i8*** %62, align 8
  368.   %208 = call i8** @"japi1__unsafe_setindex!_63379"(i8** inttoptr (i64 4565385672 to i8**), i8*** %9, i32 6)
  369.   %209 = icmp eq i64 %"#temp#.075", %78
  370.   br i1 %209, label %L60.loopexit.loopexit, label %L154.if3_crit_edge
  371.  
  372. L154.if3_crit_edge:                               ; preds = %L154
  373.   %210 = add i64 %"#temp#.075", 1
  374.   %.pre94 = load i8**, i8*** %39, align 8
  375.   %.phi.trans.insert95 = getelementptr i8*, i8** %.pre94, i64 3
  376.   %.phi.trans.insert96 = bitcast i8** %.phi.trans.insert95 to i64*
  377.   %.pre97 = load i64, i64* %.phi.trans.insert96, align 8
  378.   br label %if3
  379.  
  380. wb_not_null:                                      ; preds = %L166
  381.   %211 = bitcast i8** %146 to i64*
  382.   %212 = load i64, i64* %211, align 8
  383.   %213 = and i64 %212, 3
  384.   %214 = icmp eq i64 %213, 3
  385.   br i1 %214, label %wb_trigger, label %cont36.thread
  386.  
  387. wb_trigger:                                       ; preds = %wb_not_null
  388.   call void @jl_gc_queue_root(i8** %145)
  389.   br label %cont36.thread
  390.  
  391. cont36.thread:                                    ; preds = %wb_not_null, %wb_trigger
  392.   store i8** %145, i8*** %144, align 8
  393.   br label %wb_not_null37
  394.  
  395. cont36:                                           ; preds = %L166
  396.   store i8** %145, i8*** %144, align 8
  397.   %215 = icmp eq i8** %145, null
  398.   br i1 %215, label %cont41, label %wb_not_null37
  399.  
  400. wb_not_null37:                                    ; preds = %cont36.thread, %cont36
  401.   %216 = bitcast i8** %142 to i64*
  402.   %217 = load i64, i64* %216, align 8
  403.   %218 = and i64 %217, 3
  404.   %219 = icmp eq i64 %218, 3
  405.   br i1 %219, label %wb_may_trigger38, label %cont41
  406.  
  407. wb_may_trigger38:                                 ; preds = %wb_not_null37
  408.   %220 = bitcast i8** %146 to i64*
  409.   %221 = load i64, i64* %220, align 8
  410.   %222 = and i64 %221, 1
  411.   %223 = icmp eq i64 %222, 0
  412.   br i1 %223, label %wb_trigger39, label %cont41
  413.  
  414. wb_trigger39:                                     ; preds = %wb_may_trigger38
  415.   call void @jl_gc_queue_root(i8** %141)
  416.   br label %cont41
  417.  
  418. cont41:                                           ; preds = %cont36, %wb_not_null37, %wb_may_trigger38, %wb_trigger39
  419.   %224 = getelementptr [56 x i8**], [56 x i8**]* %8, i64 0, i64 45
  420.   %225 = getelementptr [56 x i8**], [56 x i8**]* %8, i64 0, i64 46
  421.   %226 = call i8** @julia_deindexify_63444(i8** %141)
  422.   store i8** %226, i8*** %224, align 8
  423.   store i8** %226, i8*** %225, align 8
  424.   %227 = call %OneTo @julia_eachindex_63379(i8** %226)
  425.   %228 = extractvalue %OneTo %227, 0
  426.   %229 = icmp eq i64 %228, 0
  427.   br i1 %229, label %L425, label %if42.lr.ph
  428.  
  429. if42.lr.ph:                                       ; preds = %cont41
  430.   %230 = getelementptr [56 x i8**], [56 x i8**]* %8, i64 0, i64 47
  431.   %231 = getelementptr [56 x i8**], [56 x i8**]* %8, i64 0, i64 48
  432.   %232 = bitcast i8** %226 to double**
  433.   %233 = load double*, double** %232, align 8
  434.   %234 = getelementptr inbounds i8*, i8** %226, i64 1
  435.   %235 = bitcast i8** %234 to i64*
  436.   %236 = load i64, i64* %235, align 8
  437.   br label %if42
  438.  
  439. if42:                                             ; preds = %if42.lr.ph, %L411.backedge
  440.   %"#temp#2.074" = phi i64 [ 1, %if42.lr.ph ], [ %246, %L411.backedge ]
  441.   store i8** %226, i8*** %230, align 8
  442.   %237 = add i64 %"#temp#2.074", -1
  443.   %238 = icmp ult i64 %237, %236
  444.   br i1 %238, label %idxend46, label %oob43
  445.  
  446. L425.loopexit:                                    ; preds = %L411.backedge
  447.   br label %L425
  448.  
  449. L425:                                             ; preds = %L425.loopexit, %cont41
  450.   %239 = load i64, i64* %18, align 8
  451.   store i64 %239, i64* %15, align 8
  452.   ret i8** %226
  453.  
  454. oob43:                                            ; preds = %if42
  455.   %240 = alloca i64, align 8
  456.   store i64 %"#temp#2.074", i64* %240, align 8
  457.   call void @jl_bounds_error_ints(i8** %226, i64* nonnull %240, i64 1)
  458.   unreachable
  459.  
  460. idxend46:                                         ; preds = %if42
  461.   store i8** %226, i8*** %231, align 8
  462.   %241 = getelementptr double, double* %233, i64 %237
  463.   %242 = load double, double* %241, align 8
  464.   %243 = call double @llvm.fabs.f64(double %242)
  465.   %244 = call double @jlsys_eps_37946(double %242)
  466.   %245 = fcmp uge double %243, %244
  467.   br i1 %245, label %L411.backedge, label %idxend49
  468.  
  469. idxend49:                                         ; preds = %idxend46
  470.   store i8** %226, i8*** %11, align 8
  471.   store double 0.000000e+00, double* %241, align 8
  472.   br label %L411.backedge
  473.  
  474. L411.backedge:                                    ; preds = %idxend49, %idxend46
  475.   %246 = add i64 %"#temp#2.074", 1
  476.   %247 = icmp eq i64 %"#temp#2.074", %228
  477.   br i1 %247, label %L425.loopexit, label %if42
  478. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement