Advertisement
Guest User

Untitled

a guest
Jun 24th, 2019
172
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
LLVM 15.65 KB | None | 0 0
  1. define double @julia_sqcube_1(%jl_value_t addrspace(10)* nonnull align 16 dereferenceable(40)) !dbg !22 {
  2. L30:
  3.   %gcframe = alloca %jl_value_t addrspace(10)*, i32 4
  4.   %1 = bitcast %jl_value_t addrspace(10)** %gcframe to i8*
  5.   call void @llvm.memset.p0i8.i32(i8* %1, i8 0, i32 32, i1 false), !tbaa !24
  6.   %2 = alloca [1 x { i64 }], align 8
  7.   %3 = alloca [1 x { i64 }], align 8
  8.   %thread_ptr = call i8* asm "movq %fs:0, $0", "=r"()
  9.   %ptls_i8 = getelementptr i8, i8* %thread_ptr, i64 -15560
  10.   %ptls = bitcast i8* %ptls_i8 to %jl_value_t***
  11.   %4 = getelementptr %jl_value_t addrspace(10)*, %jl_value_t addrspace(10)** %gcframe, i32 0, !dbg !26
  12.   %5 = bitcast %jl_value_t addrspace(10)** %4 to i64*, !dbg !26
  13.   store i64 4, i64* %5, !dbg !26, !tbaa !24
  14.   %6 = getelementptr %jl_value_t**, %jl_value_t*** %ptls, i32 0, !dbg !26
  15.   %7 = getelementptr %jl_value_t addrspace(10)*, %jl_value_t addrspace(10)** %gcframe, i32 1, !dbg !26
  16.   %8 = bitcast %jl_value_t addrspace(10)** %7 to %jl_value_t***, !dbg !26
  17.   %9 = load %jl_value_t**, %jl_value_t*** %6, !dbg !26
  18.   store %jl_value_t** %9, %jl_value_t*** %8, !dbg !26, !tbaa !24
  19.   %10 = bitcast %jl_value_t*** %6 to %jl_value_t addrspace(10)***, !dbg !26
  20.   store %jl_value_t addrspace(10)** %gcframe, %jl_value_t addrspace(10)*** %10, !dbg !26
  21.   %11 = addrspacecast %jl_value_t addrspace(10)* %0 to %jl_value_t addrspace(11)*, !dbg !26
  22.   %12 = bitcast %jl_value_t addrspace(11)* %11 to %jl_value_t addrspace(10)* addrspace(11)*, !dbg !26
  23.   %13 = getelementptr inbounds %jl_value_t addrspace(10)*, %jl_value_t addrspace(10)* addrspace(11)* %12, i64 3, !dbg !26
  24.   %14 = bitcast %jl_value_t addrspace(10)* addrspace(11)* %13 to i64 addrspace(11)*, !dbg !26
  25.   %15 = load i64, i64 addrspace(11)* %14, align 8, !dbg !26, !tbaa !40
  26.   %16 = icmp sgt i64 %15, 0, !dbg !43
  27.   %17 = select i1 %16, i64 %15, i64 0, !dbg !43
  28.   %.sroa.04.0..sroa_idx5 = getelementptr inbounds [1 x { i64 }], [1 x { i64 }]* %2, i64 0, i64 0, i32 0, !dbg !53
  29.   store i64 %17, i64* %.sroa.04.0..sroa_idx5, align 8, !dbg !53, !tbaa !57
  30.   %18 = call %jl_value_t addrspace(10)* inttoptr (i64 139815437576480 to %jl_value_t addrspace(10)* (%jl_value_t addrspace(10)*, i64)*)(%jl_value_t addrspace(10)* addrspacecast (%jl_value_t* inttoptr (i64 139815156322112 to %jl_value_t*) to %jl_value_t addrspace(10)*), i64 %17), !dbg !59
  31.   %19 = addrspacecast %jl_value_t addrspace(10)* %18 to %jl_value_t addrspace(11)*, !dbg !71
  32.   %20 = bitcast %jl_value_t addrspace(11)* %19 to %jl_value_t addrspace(10)* addrspace(11)*, !dbg !71
  33.   %21 = getelementptr inbounds %jl_value_t addrspace(10)*, %jl_value_t addrspace(10)* addrspace(11)* %20, i64 3, !dbg !71
  34.   %22 = bitcast %jl_value_t addrspace(10)* addrspace(11)* %21 to i64 addrspace(11)*, !dbg !71
  35.   %23 = load i64, i64 addrspace(11)* %22, align 8, !dbg !71, !tbaa !40
  36.   %24 = icmp sgt i64 %23, 0, !dbg !76
  37.   %25 = select i1 %24, i64 %23, i64 0, !dbg !76
  38.   %26 = icmp eq i64 %25, %17, !dbg !80
  39.   br i1 %26, label %L54, label %L171, !dbg !73
  40.  
  41. L54:                                              ; preds = %L30
  42.   %27 = icmp eq %jl_value_t addrspace(11)* %19, %11, !dbg !88
  43.   br i1 %27, label %L80, label %L57, !dbg !88
  44.  
  45. L57:                                              ; preds = %L54
  46.   %28 = load i8, i8* inttoptr (i64 139815156322185 to i8*), align 1, !dbg !96, !tbaa !106
  47.   %29 = and i8 %28, 1, !dbg !102
  48.   %30 = icmp eq i8 %29, 0, !dbg !102
  49.   br i1 %30, label %L63, label %L92, !dbg !102
  50.  
  51. L63:                                              ; preds = %L57
  52.   %31 = addrspacecast %jl_value_t addrspace(11)* %19 to %jl_value_t*
  53.   %32 = bitcast %jl_value_t* %31 to i64*, !dbg !107
  54.   %33 = load i64, i64* %32, align 8, !dbg !107, !tbaa !114, !range !116
  55.   %34 = addrspacecast %jl_value_t addrspace(11)* %11 to %jl_value_t*
  56.   %35 = bitcast %jl_value_t* %34 to i64*, !dbg !107
  57.   %36 = load i64, i64* %35, align 8, !dbg !107, !tbaa !114, !range !116
  58.   %37 = icmp eq i64 %33, %36, !dbg !117
  59.   br i1 %37, label %L75, label %L92, !dbg !104
  60.  
  61. L75:                                              ; preds = %L63
  62.   %38 = getelementptr %jl_value_t addrspace(10)*, %jl_value_t addrspace(10)** %gcframe, i32 3
  63.   store %jl_value_t addrspace(10)* %18, %jl_value_t addrspace(10)** %38
  64.   %39 = call %jl_value_t addrspace(10)* inttoptr (i64 139815437588992 to %jl_value_t addrspace(10)* (%jl_value_t addrspace(10)*)*)(%jl_value_t addrspace(10)* nonnull %0), !dbg !123
  65.   br label %L92, !dbg !104
  66.  
  67. L80:                                              ; preds = %L54
  68.   %40 = addrspacecast %jl_value_t addrspace(10)* %0 to %jl_value_t addrspace(11)*, !dbg !127
  69.   %41 = bitcast %jl_value_t addrspace(11)* %40 to %jl_value_t addrspace(10)* addrspace(11)*, !dbg !127
  70.   %42 = getelementptr inbounds %jl_value_t addrspace(10)*, %jl_value_t addrspace(10)* addrspace(11)* %41, i64 3, !dbg !127
  71.   %43 = bitcast %jl_value_t addrspace(10)* addrspace(11)* %42 to i64 addrspace(11)*, !dbg !127
  72.   %44 = load i64, i64 addrspace(11)* %43, align 8, !dbg !127, !tbaa !40
  73.   br label %L115
  74.  
  75. L92:                                              ; preds = %L63, %L57, %L75
  76.   %value_phi7.ph = phi %jl_value_t addrspace(10)* [ %0, %L57 ], [ %0, %L63 ], [ %39, %L75 ]
  77.   %45 = addrspacecast %jl_value_t addrspace(10)* %value_phi7.ph to %jl_value_t addrspace(11)*, !dbg !127
  78.   %46 = bitcast %jl_value_t addrspace(11)* %45 to %jl_value_t addrspace(10)* addrspace(11)*, !dbg !127
  79.   %47 = getelementptr inbounds %jl_value_t addrspace(10)*, %jl_value_t addrspace(10)* addrspace(11)* %46, i64 3, !dbg !127
  80.   %48 = bitcast %jl_value_t addrspace(10)* addrspace(11)* %47 to i64 addrspace(11)*, !dbg !127
  81.   %49 = load i64, i64 addrspace(11)* %48, align 8, !dbg !127, !tbaa !40
  82.   %50 = load i8, i8* inttoptr (i64 139815156322185 to i8*), align 1, !dbg !133, !tbaa !106
  83.   %51 = and i8 %50, 1, !dbg !135
  84.   %52 = icmp eq i8 %51, 0, !dbg !135
  85.   br i1 %52, label %L98, label %L115, !dbg !135
  86.  
  87. L98:                                              ; preds = %L92
  88.   %53 = addrspacecast %jl_value_t addrspace(11)* %19 to %jl_value_t*
  89.   %54 = bitcast %jl_value_t* %53 to i64*, !dbg !140
  90.   %55 = load i64, i64* %54, align 8, !dbg !140, !tbaa !114, !range !116
  91.   %56 = addrspacecast %jl_value_t addrspace(11)* %11 to %jl_value_t*
  92.   %57 = bitcast %jl_value_t* %56 to i64*, !dbg !140
  93.   %58 = load i64, i64* %57, align 8, !dbg !140, !tbaa !114, !range !116
  94.   %59 = icmp eq i64 %55, %58, !dbg !143
  95.   br i1 %59, label %L110, label %L115, !dbg !136
  96.  
  97. L110:                                             ; preds = %L98
  98.   %60 = getelementptr %jl_value_t addrspace(10)*, %jl_value_t addrspace(10)** %gcframe, i32 3
  99.   store %jl_value_t addrspace(10)* %18, %jl_value_t addrspace(10)** %60
  100.   %61 = getelementptr %jl_value_t addrspace(10)*, %jl_value_t addrspace(10)** %gcframe, i32 2
  101.   store %jl_value_t addrspace(10)* %value_phi7.ph, %jl_value_t addrspace(10)** %61
  102.   %62 = call %jl_value_t addrspace(10)* inttoptr (i64 139815437588992 to %jl_value_t addrspace(10)* (%jl_value_t addrspace(10)*)*)(%jl_value_t addrspace(10)* nonnull %0), !dbg !146
  103.   br label %L115, !dbg !136
  104.  
  105. L115:                                             ; preds = %L80, %L98, %L92, %L110
  106.   %63 = phi i64 [ %49, %L110 ], [ %49, %L98 ], [ %44, %L80 ], [ %49, %L92 ]
  107.   %64 = phi %jl_value_t addrspace(11)* [ %45, %L110 ], [ %45, %L98 ], [ %40, %L80 ], [ %45, %L92 ]
  108.   %value_phi8 = phi %jl_value_t addrspace(10)* [ %62, %L110 ], [ %0, %L98 ], [ %0, %L80 ], [ %0, %L92 ]
  109.   %65 = icmp slt i64 %15, 1, !dbg !148
  110.   br i1 %65, label %L181, label %L136.lr.ph, !dbg !151
  111.  
  112. L136.lr.ph:                                       ; preds = %L115
  113.   %66 = icmp eq i64 %63, 1, !dbg !155
  114.   %67 = addrspacecast %jl_value_t addrspace(10)* %value_phi8 to %jl_value_t addrspace(11)*, !dbg !161
  115.   %68 = bitcast %jl_value_t addrspace(11)* %67 to %jl_value_t addrspace(10)* addrspace(11)*, !dbg !161
  116.   %69 = getelementptr inbounds %jl_value_t addrspace(10)*, %jl_value_t addrspace(10)* addrspace(11)* %68, i64 3, !dbg !161
  117.   %70 = bitcast %jl_value_t addrspace(10)* addrspace(11)* %69 to i64 addrspace(11)*, !dbg !161
  118.   %71 = load i64, i64 addrspace(11)* %70, align 8, !dbg !161, !tbaa !40
  119.   %72 = icmp eq i64 %71, 1, !dbg !165
  120.   %73 = bitcast %jl_value_t addrspace(11)* %64 to double addrspace(13)* addrspace(11)*
  121.   %74 = load double addrspace(13)*, double addrspace(13)* addrspace(11)* %73, align 8, !tbaa !114, !nonnull !4
  122.   %75 = bitcast %jl_value_t addrspace(11)* %67 to double addrspace(13)* addrspace(11)*
  123.   %76 = load double addrspace(13)*, double addrspace(13)* addrspace(11)* %75, align 8, !tbaa !114, !nonnull !4
  124.   %77 = bitcast %jl_value_t addrspace(11)* %19 to double addrspace(13)* addrspace(11)*
  125.   %78 = load double addrspace(13)*, double addrspace(13)* addrspace(11)* %77, align 8, !tbaa !114, !nonnull !4
  126.   br i1 %66, label %L136.lr.ph.split.us, label %L136.lr.ph.L136.lr.ph.split_crit_edge, !dbg !169
  127.  
  128. L136.lr.ph.L136.lr.ph.split_crit_edge:            ; preds = %L136.lr.ph
  129.   br i1 %72, label %L136.us28.preheader, label %L136.preheader, !dbg !169
  130.  
  131. L136.preheader:                                   ; preds = %L136.lr.ph.L136.lr.ph.split_crit_edge
  132.   br label %L136, !dbg !170
  133.  
  134. L136.us28.preheader:                              ; preds = %L136.lr.ph.L136.lr.ph.split_crit_edge
  135.   br label %L136.us28, !dbg !170
  136.  
  137. L136.lr.ph.split.us:                              ; preds = %L136.lr.ph
  138.   br i1 %72, label %L136.us.us.preheader, label %L136.us.preheader, !dbg !169
  139.  
  140. L136.us.preheader:                                ; preds = %L136.lr.ph.split.us
  141.   br label %L136.us, !dbg !170
  142.  
  143. L136.us.us.preheader:                             ; preds = %L136.lr.ph.split.us
  144.   br label %L136.us.us, !dbg !170
  145.  
  146. L136.us.us:                                       ; preds = %L136.us.us.preheader, %L136.us.us
  147.   %value_phi927.us.us = phi i64 [ %83, %L136.us.us ], [ 0, %L136.us.us.preheader ]
  148.   %79 = load double, double addrspace(13)* %74, align 8, !dbg !170, !tbaa !182
  149.   %80 = load double, double addrspace(13)* %76, align 8, !dbg !184, !tbaa !182
  150.   %81 = fmul double %79, %80, !dbg !187
  151.   %82 = getelementptr inbounds double, double addrspace(13)* %78, i64 %value_phi927.us.us, !dbg !193
  152.   store double %81, double addrspace(13)* %82, align 8, !dbg !193, !tbaa !182
  153.   %83 = add nuw nsw i64 %value_phi927.us.us, 1, !dbg !195
  154.   %84 = icmp ult i64 %83, %17, !dbg !198
  155.   br i1 %84, label %L136.us.us, label %L181, !dbg !169, !llvm.loop !199
  156.  
  157. L136.us:                                          ; preds = %L136.us.preheader, %L136.us
  158.   %value_phi927.us = phi i64 [ %90, %L136.us ], [ 0, %L136.us.preheader ]
  159.   %85 = load double, double addrspace(13)* %74, align 8, !dbg !170, !tbaa !182
  160.   %86 = getelementptr inbounds double, double addrspace(13)* %76, i64 %value_phi927.us, !dbg !184
  161.   %87 = load double, double addrspace(13)* %86, align 8, !dbg !184, !tbaa !182
  162.   %88 = fmul double %85, %87, !dbg !187
  163.   %89 = getelementptr inbounds double, double addrspace(13)* %78, i64 %value_phi927.us, !dbg !193
  164.   store double %88, double addrspace(13)* %89, align 8, !dbg !193, !tbaa !182
  165.   %90 = add nuw nsw i64 %value_phi927.us, 1, !dbg !195
  166.   %91 = icmp ult i64 %90, %17, !dbg !198
  167.   br i1 %91, label %L136.us, label %L181, !dbg !169, !llvm.loop !199
  168.  
  169. L136.us28:                                        ; preds = %L136.us28.preheader, %L136.us28
  170.   %value_phi927.us29 = phi i64 [ %97, %L136.us28 ], [ 0, %L136.us28.preheader ]
  171.   %92 = getelementptr inbounds double, double addrspace(13)* %74, i64 %value_phi927.us29, !dbg !170
  172.   %93 = load double, double addrspace(13)* %92, align 8, !dbg !170, !tbaa !182
  173.   %94 = load double, double addrspace(13)* %76, align 8, !dbg !184, !tbaa !182
  174.   %95 = fmul double %93, %94, !dbg !187
  175.   %96 = getelementptr inbounds double, double addrspace(13)* %78, i64 %value_phi927.us29, !dbg !193
  176.   store double %95, double addrspace(13)* %96, align 8, !dbg !193, !tbaa !182
  177.   %97 = add nuw nsw i64 %value_phi927.us29, 1, !dbg !195
  178.   %98 = icmp ult i64 %97, %17, !dbg !198
  179.   br i1 %98, label %L136.us28, label %L181, !dbg !169, !llvm.loop !199
  180.  
  181. L136:                                             ; preds = %L136.preheader, %L136
  182.   %value_phi927 = phi i64 [ %105, %L136 ], [ 0, %L136.preheader ]
  183.   %99 = getelementptr inbounds double, double addrspace(13)* %74, i64 %value_phi927, !dbg !170
  184.   %100 = load double, double addrspace(13)* %99, align 8, !dbg !170, !tbaa !182
  185.   %101 = getelementptr inbounds double, double addrspace(13)* %76, i64 %value_phi927, !dbg !184
  186.   %102 = load double, double addrspace(13)* %101, align 8, !dbg !184, !tbaa !182
  187.   %103 = fmul double %100, %102, !dbg !187
  188.   %104 = getelementptr inbounds double, double addrspace(13)* %78, i64 %value_phi927, !dbg !193
  189.   store double %103, double addrspace(13)* %104, align 8, !dbg !193, !tbaa !182
  190.   %105 = add nuw nsw i64 %value_phi927, 1, !dbg !195
  191.   %106 = icmp ult i64 %105, %17, !dbg !198
  192.   br i1 %106, label %L136, label %L181, !dbg !169, !llvm.loop !199
  193.  
  194. L171:                                             ; preds = %L30
  195.   %.sroa.0.0..sroa_idx = getelementptr inbounds [1 x { i64 }], [1 x { i64 }]* %3, i64 0, i64 0, i32 0, !dbg !79
  196.   store i64 %25, i64* %.sroa.0.0..sroa_idx, align 8, !dbg !79, !tbaa !57
  197.   %107 = addrspacecast [1 x { i64 }]* %3 to [1 x { i64 }] addrspace(11)*, !dbg !73
  198.   %108 = addrspacecast [1 x { i64 }]* %2 to [1 x { i64 }] addrspace(11)*, !dbg !73
  199.   call void @julia_throwdm_16067([1 x { i64 }] addrspace(11)* nocapture readonly %107, [1 x { i64 }] addrspace(11)* nocapture readonly %108), !dbg !73
  200.   unreachable
  201.  
  202. L181:                                             ; preds = %L136, %L136.us28, %L136.us, %L136.us.us, %L115
  203.   %109 = bitcast %jl_value_t addrspace(11)* %19 to %0 addrspace(11)*, !dbg !200
  204.   %110 = getelementptr inbounds %0, %0 addrspace(11)* %109, i64 0, i32 1, !dbg !200
  205.   %111 = load i64, i64 addrspace(11)* %110, align 8, !dbg !200, !tbaa !207
  206.   %112 = icmp slt i64 %111, 1, !dbg !202
  207.   br i1 %112, label %L220, label %L194, !dbg !202
  208.  
  209. L194:                                             ; preds = %L181
  210.   %113 = bitcast %jl_value_t addrspace(11)* %19 to double addrspace(13)* addrspace(11)*, !dbg !209
  211.   %114 = load double addrspace(13)*, double addrspace(13)* addrspace(11)* %113, align 8, !dbg !209, !tbaa !114, !nonnull !4
  212.   %value_phi1525 = load double, double addrspace(13)* %114, align 8, !dbg !209, !tbaa !182
  213.   %115 = fadd double %value_phi1525, 0.000000e+00, !dbg !210
  214.   %116 = icmp eq i64 %111, 1, !dbg !213
  215.   br i1 %116, label %L220, label %L212.preheader, !dbg !215
  216.  
  217. L212.preheader:                                   ; preds = %L194
  218.   br label %L212, !dbg !216
  219.  
  220. L212:                                             ; preds = %L212.preheader, %L212
  221.   %117 = phi i64 [ %value_phi1626, %L212 ], [ 1, %L212.preheader ]
  222.   %118 = phi double [ %121, %L212 ], [ %115, %L212.preheader ]
  223.   %value_phi1626 = phi i64 [ %120, %L212 ], [ 2, %L212.preheader ]
  224.   %119 = getelementptr inbounds double, double addrspace(13)* %114, i64 %117, !dbg !216
  225.   %120 = add i64 %value_phi1626, 1, !dbg !217
  226.   %value_phi15 = load double, double addrspace(13)* %119, align 8, !dbg !209, !tbaa !182
  227.   %121 = fadd double %118, %value_phi15, !dbg !210
  228.   %122 = icmp ult i64 %value_phi1626, %111, !dbg !213
  229.   br i1 %122, label %L212, label %L220, !dbg !215
  230.  
  231. L220:                                             ; preds = %L212, %L194, %L181
  232.   %value_phi20 = phi double [ 0.000000e+00, %L181 ], [ %115, %L194 ], [ %121, %L212 ]
  233.   %123 = getelementptr %jl_value_t addrspace(10)*, %jl_value_t addrspace(10)** %gcframe, i32 1, !dbg !39
  234.   %124 = load %jl_value_t addrspace(10)*, %jl_value_t addrspace(10)** %123, !dbg !39, !tbaa !24
  235.   %125 = getelementptr %jl_value_t**, %jl_value_t*** %ptls, i32 0, !dbg !39
  236.   %126 = bitcast %jl_value_t*** %125 to %jl_value_t addrspace(10)**, !dbg !39
  237.   store %jl_value_t addrspace(10)* %124, %jl_value_t addrspace(10)** %126, !dbg !39, !tbaa !24
  238.   ret double %value_phi20, !dbg !39
  239. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement