源码与产物,逐个调用对照

左边是一个 Dawn 函数,右边是它编出来的东西,可以在 Tile IR、C 与 JVM 字节码之间切换。点一个调用,它写出的那些行亮起来;点一行,它所属的调用亮起来。

  • Tile IR · C · JVM

怎么读

源码里每个带下划线的名字是一次调用。点它,或者用 Tab 走到它再按 Enter,它的整段会加下划线,它自己写出的行在每份产物里都被标出,它内部的调用写出的行用淡一点的标记。标签页切换产物,选中的调用保留,所以同一次调用可以从一个后端一路看到下一个。点产物里的一行,找到它所属的调用;在 C 和字节码里,嵌套调用的代码在外层调用的代码之内,同时含两者的行归内层那个。Esc 放手。

flash_attn,三种产物

cuTile 页上的融合注意力 kernel。kernel 是 !Dev 效果下的普通 Dawn 函数,所以同一份源码也能为宿主编译,C 与 JVM 两个标签显示的就是这个:在宿主上运行 kernel、并且搭出 Tile IR 的那段代码,其中每个 mma(..) 是对 packages/tileir 的一次调用。Tile IR 标签是那次运行记录下来的程序,也就是 tileiras 为 GPU 汇编的那份。同一次调用有两种读法:宿主上的一次函数调用,设备上的一条或几条操作。只是重新绑定一个宿主值的调用(比如 carry)自己没写出 Tile IR 行。

flash_attn25 个调用

Dawn 源码scripts/tile-golden/kernels.dawn:2176–2191

2176fn flash_attn(q: Param[Float], k: Param[Float], v: Param[Float], o: Param[Float], scale: Param[Float]) -> Unit !Dev = {2177  let tq = load_cell(q)2178  var m: Tile[Float] = full([FA_BQ, 1], -INFINITY)2179  var l: Tile[Float] = full([FA_BQ, 1], 0.0)2180  var acc = zeros(o)2181  for j in d_range(0, ATT_N / FA_BK) {2182    let s: Tile[Float] = mma(tq, load_at(k, [j]).transpose(), 0.0) * scalar(scale)2183    let m_new = max(m, reduce_max(s, keepdims: true))2184    let p = exp(s - m_new)2185    let alpha = exp(m - m_new)2186    l = l * alpha + reduce_sum(p, keepdims: true)2187    acc = mma(p, load_at(v, [j]), acc * alpha)2188    m = m_new2189  }2190  store_cell(o, acc / l)2191}

Tile IR,录下来的共 62 行,列出 62 行

1cuda_tile.module @m {2  entry @flash_attn(%arg0: tile<ptr<f64>>, %arg1: tile<ptr<f64>>, %arg2: tile<ptr<f64>>, %arg3: tile<ptr<f64>>, %arg4: tile<f64>) {3    %0 = make_token : token4    %1 = assume div_by<16>, %arg0 : tile<ptr<f64>>5    %2 = make_tensor_view %1, shape = [64, 32], strides = [32, 1] : tensor_view<64x32xf64, strides=[32, 1]>6    %3 = make_partition_view %2 : partition_view<tile=(32x32), padding_value = zero, tensor_view<64x32xf64, strides=[32, 1]>, dim_map=[0, 1]>7    %4, %5, %6 = get_tile_block_id : tile<i32>8    %7, %8, %9 = get_tile_block_id : tile<i32>9    %10, %11 = load_view_tko weak %3[%4, %8] token=%0 : partition_view<tile=(32x32), padding_value = zero, tensor_view<64x32xf64, strides=[32, 1]>, dim_map=[0, 1]>, tile<i32> -> tile<32x32xf64>, token10    %12 = constant <f64: -Infinity> : tile<32x1xf64>11    %13 = constant <f64: 0.0> : tile<32x1xf64>12    %14 = constant <f64: 0.0> : tile<32x32xf64>13    %15 = constant <i32: 0> : tile<i32>14    %16 = constant <i32: 2> : tile<i32>15    %17 = constant <i32: 1> : tile<i32>16    %18, %19, %20, %21 = for %22 in (%15 to %16, step %17) : tile<i32> iter_values(%23 = %12, %24 = %13, %25 = %14, %26 = %11) -> (tile<32x1xf64>, tile<32x1xf64>, tile<32x32xf64>, token) {17      %27 = assume div_by<16>, %arg1 : tile<ptr<f64>>18      %28 = make_tensor_view %27, shape = [64, 32], strides = [32, 1] : tensor_view<64x32xf64, strides=[32, 1]>19      %29 = make_partition_view %28 : partition_view<tile=(32x32), padding_value = zero, tensor_view<64x32xf64, strides=[32, 1]>, dim_map=[0, 1]>20      %30, %31 = load_view_tko weak %29[%22, %8] token=%26 : partition_view<tile=(32x32), padding_value = zero, tensor_view<64x32xf64, strides=[32, 1]>, dim_map=[0, 1]>, tile<i32> -> tile<32x32xf64>, token21      %32 = permute %30 [1, 0] : tile<32x32xf64> -> tile<32x32xf64>22      %33 = constant <f64: 0.0> : tile<32x32xf64>23      %34 = mmaf %10, %32, %33 : tile<32x32xf64>, tile<32x32xf64>, tile<32x32xf64>24      %35 = reshape %arg4 : tile<f64> -> tile<1x1xf64>25      %36 = broadcast %35 : tile<1x1xf64> -> tile<32x32xf64>26      %37 = mulf %34, %36 rounding<nearest_even> : tile<32x32xf64>27      %38 = reduce %37 dim=1 identities=[-Infinity : f64] : tile<32x32xf64> -> tile<32xf64> (%39: tile<f64>, %40: tile<f64>) {28        %41 = maxf %39, %40 : tile<f64>29        yield %41 : tile<f64>30      }31      %42 = reshape %38 : tile<32xf64> -> tile<32x1xf64>32      %43 = maxf %23, %42 : tile<32x1xf64>33      %44 = broadcast %43 : tile<32x1xf64> -> tile<32x32xf64>34      %45 = subf %37, %44 rounding<nearest_even> : tile<32x32xf64>35      %46 = exp %45 : tile<32x32xf64>36      %47 = subf %23, %43 rounding<nearest_even> : tile<32x1xf64>37      %48 = exp %47 : tile<32x1xf64>38      %49 = mulf %24, %48 rounding<nearest_even> : tile<32x1xf64>39      %50 = reduce %46 dim=1 identities=[0.0 : f64] : tile<32x32xf64> -> tile<32xf64> (%51: tile<f64>, %52: tile<f64>) {40        %53 = addf %51, %52 rounding<nearest_even> : tile<f64>41        yield %53 : tile<f64>42      }43      %54 = reshape %50 : tile<32xf64> -> tile<32x1xf64>44      %55 = addf %49, %54 rounding<nearest_even> : tile<32x1xf64>45      %56 = assume div_by<16>, %arg2 : tile<ptr<f64>>46      %57 = make_tensor_view %56, shape = [64, 32], strides = [32, 1] : tensor_view<64x32xf64, strides=[32, 1]>47      %58 = make_partition_view %57 : partition_view<tile=(32x32), padding_value = zero, tensor_view<64x32xf64, strides=[32, 1]>, dim_map=[0, 1]>48      %59, %60 = load_view_tko weak %58[%22, %8] token=%31 : partition_view<tile=(32x32), padding_value = zero, tensor_view<64x32xf64, strides=[32, 1]>, dim_map=[0, 1]>, tile<i32> -> tile<32x32xf64>, token49      %61 = broadcast %48 : tile<32x1xf64> -> tile<32x32xf64>50      %62 = mulf %25, %61 rounding<nearest_even> : tile<32x32xf64>51      %63 = mmaf %46, %59, %62 : tile<32x32xf64>, tile<32x32xf64>, tile<32x32xf64>52      continue %43, %55, %63, %60 : tile<32x1xf64>, tile<32x1xf64>, tile<32x32xf64>, token53    }54    %64 = broadcast %19 : tile<32x1xf64> -> tile<32x32xf64>55    %65 = divf %20, %64 rounding<nearest_even> : tile<32x32xf64>56    %66 = assume div_by<16>, %arg3 : tile<ptr<f64>>57    %67 = make_tensor_view %66, shape = [64, 32], strides = [32, 1] : tensor_view<64x32xf64, strides=[32, 1]>58    %68 = make_partition_view %67 : partition_view<tile=(32x32), padding_value = zero, tensor_view<64x32xf64, strides=[32, 1]>, dim_map=[0, 1]>59    %69 = store_view_tko weak %65, %68[%4, %8] token=%21 : tile<32x32xf64>, partition_view<tile=(32x32), padding_value = zero, tensor_view<64x32xf64, strides=[32, 1]>, dim_map=[0, 1]>, tile<i32> -> token60    return61  }62}

C,来自 dawn __emitc共 160728 行,列出 379 行

1dawn_unit dawn_main__flash_1attn(dawn_adt* p1498, dawn_adt* p1499, dawn_adt* p1500, dawn_adt* p1501, dawn_adt* p1502, dawn_adt* p1503) {2  DAWN_OWN_FRAME(64);3  dawn_own[1] = p1498;4  dawn_own[2] = p1499;5  dawn_own[3] = p1500;6  dawn_own[4] = p1501;7  dawn_own[5] = p1502;8  dawn_own[6] = p1503;9  dawn_adt* t0 = ((dawn_adt*)dawn_dup(((dawn_adt*)dawn_own[6])));10  int64_t v1504 = dawn_dawn_3pkg_3tileir_2dev__load_1cell(((dawn_adt*)dawn_take(&dawn_own[1])), t0);11  dawn_own[7] = dawn_array_new();12  dawn_own[8] = ((void*)dawn_take(&dawn_own[7]));13  dawn_own[9] = dawn_box_int(INT64_C(32));14  dawn_own[10] = dawn_array_push(((void*)dawn_own[8]), ((void*)dawn_own[9]));15  dawn_drop(dawn_own[9]); dawn_own[9] = NULL;16  dawn_drop(dawn_own[8]); dawn_own[8] = NULL;17  dawn_own[11] = ((void*)dawn_take(&dawn_own[10]));18  dawn_own[7] = ((void*)dawn_take(&dawn_own[11]));19  dawn_own[12] = ((void*)dawn_take(&dawn_own[7]));20  dawn_own[13] = dawn_box_int(INT64_C(1));21  dawn_own[14] = dawn_array_push(((void*)dawn_own[12]), ((void*)dawn_own[13]));22  dawn_drop(dawn_own[13]); dawn_own[13] = NULL;23  dawn_drop(dawn_own[12]); dawn_own[12] = NULL;24  dawn_own[15] = ((void*)dawn_take(&dawn_own[14]));25  dawn_own[7] = ((void*)dawn_take(&dawn_own[15]));26  dawn_own[16] = dawn_std_2pvec__from_1array(((void*)dawn_take(&dawn_own[7])));27  dawn_own[17] = dawn_box_float((-((1.0/0.0))));28  dawn_adt* t1 = ((dawn_adt*)dawn_dup(((dawn_adt*)dawn_own[6])));29  int64_t v1505 = dawn_dawn_3pkg_3tileir_2dev__full(((void*)dawn_take(&dawn_own[16])), ((void*)dawn_take(&dawn_own[17])), (&dawn_dict_320911459306561_3Float), t1);30  dawn_own[18] = dawn_array_new();31  dawn_own[19] = ((void*)dawn_take(&dawn_own[18]));32  dawn_own[20] = dawn_box_int(INT64_C(32));33  dawn_own[21] = dawn_array_push(((void*)dawn_own[19]), ((void*)dawn_own[20]));34  dawn_drop(dawn_own[20]); dawn_own[20] = NULL;35  dawn_drop(dawn_own[19]); dawn_own[19] = NULL;36  dawn_own[22] = ((void*)dawn_take(&dawn_own[21]));37  dawn_own[18] = ((void*)dawn_take(&dawn_own[22]));38  dawn_own[23] = ((void*)dawn_take(&dawn_own[18]));39  dawn_own[24] = dawn_box_int(INT64_C(1));40  dawn_own[25] = dawn_array_push(((void*)dawn_own[23]), ((void*)dawn_own[24]));41  dawn_drop(dawn_own[24]); dawn_own[24] = NULL;42  dawn_drop(dawn_own[23]); dawn_own[23] = NULL;43  dawn_own[26] = ((void*)dawn_take(&dawn_own[25]));44  dawn_own[18] = ((void*)dawn_take(&dawn_own[26]));45  dawn_own[27] = dawn_std_2pvec__from_1array(((void*)dawn_take(&dawn_own[18])));46  dawn_own[28] = dawn_box_float(0.0);47  dawn_adt* t2 = ((dawn_adt*)dawn_dup(((dawn_adt*)dawn_own[6])));48  int64_t v1506 = dawn_dawn_3pkg_3tileir_2dev__full(((void*)dawn_take(&dawn_own[27])), ((void*)dawn_take(&dawn_own[28])), (&dawn_dict_320911459306561_3Float), t2);49  dawn_own[29] = ((dawn_adt*)dawn_dup(((dawn_adt*)dawn_own[4])));50  dawn_adt* t3 = ((dawn_adt*)dawn_dup(((dawn_adt*)dawn_own[6])));51  int64_t v1507 = dawn_dawn_3pkg_3tileir_2dev__zeros(((dawn_adt*)dawn_take(&dawn_own[29])), t3);52  int64_t v1509 = INT64_C(0);53  int64_t t4 = INT64_C(64);54  int64_t t5 = INT64_C(32);55  int64_t v1510 = dawn_idiv(t4, t5);56  dawn_own[30] = dawn_box_int(v1509);57  dawn_own[31] = dawn_box_int(v1510);58  dawn_own[32] = dawn_dawn_3pkg_3tileir_2dev__d_1range_3default_32(((void*)dawn_own[30]), ((void*)dawn_own[31]), (&dawn_dict_3117621157097227_3Int));59  dawn_drop(dawn_own[31]); dawn_own[31] = NULL;60  dawn_drop(dawn_own[30]); dawn_own[30] = NULL;61  dawn_own[33] = ((dawn_adt*)dawn_take(&dawn_own[32]));62  dawn_own[34] = dawn_box_int(v1509);63  dawn_own[35] = dawn_box_int(v1510);64  dawn_own[36] = ((dawn_adt*)dawn_dup(((dawn_adt*)dawn_own[33])));65  bool v8690 = dawn_dawn_3pkg_3tileir_2dev__d_1range_3default_33(((void*)dawn_own[34]), ((void*)dawn_own[35]), ((dawn_adt*)dawn_own[36]), (&dawn_dict_3117621157097227_3Int));66  dawn_drop(dawn_own[36]); dawn_own[36] = NULL;67  dawn_drop(dawn_own[35]); dawn_own[35] = NULL;68  dawn_drop(dawn_own[34]); dawn_own[34] = NULL;69  bool v1512 = v8690;70  dawn_own[37] = dawn_box_int(v1509);71  dawn_own[38] = dawn_box_int(v1510);72  dawn_adt* t6 = ((dawn_adt*)dawn_take(&dawn_own[33]));73  dawn_own[39] = dawn_dawn_3pkg_3tileir_2dev__d_1range(((void*)dawn_take(&dawn_own[37])), ((void*)dawn_take(&dawn_own[38])), t6, v1512, (&dawn_dict_3117621157097227_3Int));74  dawn_own[40] = ((void*)(((dawn_adt*)dawn_dup(((dawn_adt*)dawn_own[6])))));75  void* t7 = ((void*)dawn_unit_box);76  dawn_adt* t8 = dawn_adt_new(0, 3, UINT64_C(0x0000000000000006));77  t8->fields[0].i = INT64_C(130822816777737);78  t8->fields[1].p = ((void*)dawn_take(&dawn_own[40]));79  t8->fields[2].p = t7;80  dawn_own[41] = t8;81  int64_t v8692 = INT64_C(130822816777737);82  dawn_own[42] = ((void*)dawn_dup(dawn_ev_get(((dawn_adt*)dawn_own[41]), v8692)));83  dawn_drop(dawn_own[41]); dawn_own[41] = NULL;84  int64_t v1513 = dawn_dawn_3pkg_3tileir_2dev__impl_316_3Op110591509872810_3var_1open(v1505, ((dawn_adt*)(((void*)dawn_take(&dawn_own[42])))));85  dawn_own[43] = ((void*)(((dawn_adt*)dawn_dup(((dawn_adt*)dawn_own[6])))));86  void* t9 = ((void*)dawn_unit_box);87  dawn_adt* t10 = dawn_adt_new(0, 3, UINT64_C(0x0000000000000006));88  t10->fields[0].i = INT64_C(130822816777737);89  t10->fields[1].p = ((void*)dawn_take(&dawn_own[43]));90  t10->fields[2].p = t9;91  dawn_own[44] = t10;92  int64_t v8695 = INT64_C(130822816777737);93  dawn_own[45] = ((void*)dawn_dup(dawn_ev_get(((dawn_adt*)dawn_own[44]), v8695)));94  dawn_drop(dawn_own[44]); dawn_own[44] = NULL;95  int64_t v1514 = dawn_dawn_3pkg_3tileir_2dev__impl_316_3Op110591509872810_3var_1open(v1506, ((dawn_adt*)(((void*)dawn_take(&dawn_own[45])))));96  dawn_own[46] = ((void*)(((dawn_adt*)dawn_dup(((dawn_adt*)dawn_own[6])))));97  void* t11 = ((void*)dawn_unit_box);98  dawn_adt* t12 = dawn_adt_new(0, 3, UINT64_C(0x0000000000000006));99  t12->fields[0].i = INT64_C(130822816777737);100  t12->fields[1].p = ((void*)dawn_take(&dawn_own[46]));101  t12->fields[2].p = t11;102  dawn_own[47] = t12;103  int64_t v8698 = INT64_C(130822816777737);104  dawn_own[48] = ((void*)dawn_dup(dawn_ev_get(((dawn_adt*)dawn_own[47]), v8698)));105  dawn_drop(dawn_own[47]); dawn_own[47] = NULL;106  int64_t v1515 = dawn_dawn_3pkg_3tileir_2dev__impl_316_3Op110591509872810_3var_1open(v1507, ((dawn_adt*)(((void*)dawn_take(&dawn_own[48])))));107  dawn_clo* t13 = dawn_clo_new((void*)dawn_main__lambda_334__clo, 7, UINT64_C(0x0000000000000046));108  t13->caps[0].i = v1504;109  t13->caps[1].p = ((dawn_adt*)dawn_take(&dawn_own[2]));110  t13->caps[2].p = ((dawn_adt*)dawn_take(&dawn_own[5]));111  t13->caps[3].i = v1513;112  t13->caps[4].i = v1514;113  t13->caps[5].i = v1515;114  t13->caps[6].p = ((dawn_adt*)dawn_take(&dawn_own[3]));115  dawn_own[49] = t13;116  dawn_own[50] = ((void*)(((dawn_adt*)dawn_dup(((dawn_adt*)dawn_own[6])))));117  void* t14 = ((void*)dawn_unit_box);118  dawn_adt* t15 = dawn_adt_new(0, 3, UINT64_C(0x0000000000000006));119  t15->fields[0].i = INT64_C(130822816777737);120  t15->fields[1].p = ((void*)dawn_take(&dawn_own[50]));121  t15->fields[2].p = t14;122  dawn_own[51] = t15;123  int64_t v8701 = INT64_C(130822816777737);124  dawn_own[52] = ((void*)dawn_dup(dawn_ev_get(((dawn_adt*)dawn_own[51]), v8701)));125  dawn_drop(dawn_own[51]); dawn_own[51] = NULL;126  dawn_adt* t16 = ((dawn_adt*)(((void*)dawn_take(&dawn_own[52]))));127  (void)(dawn_dawn_3pkg_3tileir_2dev__impl_315_3Adt140017593632795_3staged_1for(((dawn_adt*)dawn_take(&dawn_own[39])), ((dawn_clo*)dawn_take(&dawn_own[49])), (&dawn_dict_3117621157097227_3Int), t16));128  dawn_own[53] = ((void*)(((dawn_adt*)dawn_dup(((dawn_adt*)dawn_own[6])))));129  void* t17 = ((void*)dawn_unit_box);130  dawn_adt* t18 = dawn_adt_new(0, 3, UINT64_C(0x0000000000000006));131  t18->fields[0].i = INT64_C(130822816777737);132  t18->fields[1].p = ((void*)dawn_take(&dawn_own[53]));133  t18->fields[2].p = t17;134  dawn_own[54] = t18;135  int64_t v8704 = INT64_C(130822816777737);136  dawn_own[55] = ((void*)dawn_dup(dawn_ev_get(((dawn_adt*)dawn_own[54]), v8704)));137  dawn_drop(dawn_own[54]); dawn_own[54] = NULL;138  v1505 = dawn_dawn_3pkg_3tileir_2dev__impl_316_3Op110591509872810_3var_1get(v1513, ((dawn_adt*)(((void*)dawn_take(&dawn_own[55])))));139  dawn_own[56] = ((void*)(((dawn_adt*)dawn_dup(((dawn_adt*)dawn_own[6])))));140  void* t19 = ((void*)dawn_unit_box);141  dawn_adt* t20 = dawn_adt_new(0, 3, UINT64_C(0x0000000000000006));142  t20->fields[0].i = INT64_C(130822816777737);143  t20->fields[1].p = ((void*)dawn_take(&dawn_own[56]));144  t20->fields[2].p = t19;145  dawn_own[57] = t20;146  int64_t v8707 = INT64_C(130822816777737);147  dawn_own[58] = ((void*)dawn_dup(dawn_ev_get(((dawn_adt*)dawn_own[57]), v8707)));148  dawn_drop(dawn_own[57]); dawn_own[57] = NULL;149  v1506 = dawn_dawn_3pkg_3tileir_2dev__impl_316_3Op110591509872810_3var_1get(v1514, ((dawn_adt*)(((void*)dawn_take(&dawn_own[58])))));150  dawn_own[59] = ((void*)(((dawn_adt*)dawn_dup(((dawn_adt*)dawn_own[6])))));151  void* t21 = ((void*)dawn_unit_box);152  dawn_adt* t22 = dawn_adt_new(0, 3, UINT64_C(0x0000000000000006));153  t22->fields[0].i = INT64_C(130822816777737);154  t22->fields[1].p = ((void*)dawn_take(&dawn_own[59]));155  t22->fields[2].p = t21;156  dawn_own[60] = t22;157  int64_t v8710 = INT64_C(130822816777737);158  dawn_own[61] = ((void*)dawn_dup(dawn_ev_get(((dawn_adt*)dawn_own[60]), v8710)));159  dawn_drop(dawn_own[60]); dawn_own[60] = NULL;160  v1507 = dawn_dawn_3pkg_3tileir_2dev__impl_316_3Op110591509872810_3var_1get(v1515, ((dawn_adt*)(((void*)dawn_take(&dawn_own[61])))));161  dawn_own[62] = ((void*)(((dawn_adt*)dawn_dup(((dawn_adt*)dawn_own[6])))));162  void* t23 = ((void*)dawn_unit_box);163  dawn_adt* t24 = dawn_adt_new(0, 3, UINT64_C(0x0000000000000006));164  t24->fields[0].i = INT64_C(130822816777737);165  t24->fields[1].p = ((void*)dawn_take(&dawn_own[62]));166  t24->fields[2].p = t23;167  dawn_own[63] = t24;168  int64_t v8713 = INT64_C(130822816777737);169  dawn_own[64] = ((void*)dawn_dup(dawn_ev_get(((dawn_adt*)dawn_own[63]), v8713)));170  dawn_drop(dawn_own[63]); dawn_own[63] = NULL;171  int64_t t25 = dawn_dawn_3pkg_3tileir_2dev__impl_310_3Op110591509872810_3div(v1507, v1506, ((dawn_adt*)(((void*)dawn_take(&dawn_own[64])))));172  dawn_adt* t26 = ((dawn_adt*)dawn_dup(((dawn_adt*)dawn_own[6])));173  (void)(dawn_dawn_3pkg_3tileir_2dev__store_1cell(((dawn_adt*)dawn_take(&dawn_own[4])), t25, t26));174  dawn_drop(dawn_own[6]); dawn_own[6] = NULL;175  DAWN_RETURN(DAWN_UNIT);176}177178dawn_unit dawn_main__lambda_334(int64_t v1504, dawn_adt* p1499, dawn_adt* p1502, int64_t v1513, int64_t v1514, int64_t v1515, dawn_adt* p1500, int64_t v6321, void* p6322) {179  DAWN_OWN_FRAME(48);180  dawn_own[1] = p1499;181  dawn_own[2] = p1502;182  dawn_own[3] = p1500;183  dawn_own[4] = p6322;184  dawn_array* t0 = dawn_array_new();185  t0 = dawn_array_push_own(t0, ((void*)(dawn_box_int(v6321))));186  dawn_own[5] = dawn_std_2pvec__from_1array(t0);187  dawn_adt* t1 = ((dawn_adt*)(((void*)dawn_dup(dawn_ev_get(((void*)dawn_own[4]), INT64_C(130822816777737))))));188  int64_t t2 = dawn_dawn_3pkg_3tileir_2dev__load_1at(((dawn_adt*)dawn_take(&dawn_own[1])), ((void*)dawn_take(&dawn_own[5])), t1);189  dawn_adt* t3 = ((dawn_adt*)(((void*)dawn_dup(dawn_ev_get(((void*)dawn_own[4]), INT64_C(130822816777737))))));190  int64_t t4 = dawn_dawn_3pkg_3tileir_2dev__transpose(t2, t3);191  dawn_own[6] = ((void*)(((dawn_adt*)(((void*)dawn_dup(dawn_ev_get(((void*)dawn_own[4]), INT64_C(130822816777737))))))));192  void* t5 = ((void*)dawn_unit_box);193  dawn_adt* t6 = dawn_adt_new(0, 3, UINT64_C(0x0000000000000006));194  t6->fields[0].i = INT64_C(130822816777737);195  t6->fields[1].p = ((void*)dawn_take(&dawn_own[6]));196  t6->fields[2].p = t5;197  dawn_own[7] = t6;198  int64_t v14537 = INT64_C(130822816777737);199  dawn_own[8] = ((void*)dawn_dup(dawn_ev_get(((dawn_adt*)dawn_own[7]), v14537)));200  dawn_drop(dawn_own[7]); dawn_own[7] = NULL;201  int64_t t7 = dawn_dawn_3pkg_3tileir_2dev__impl_314_3Op110591509872810_3from_1float(0.0, ((dawn_adt*)(((void*)dawn_take(&dawn_own[8])))));202  dawn_adt* t8 = ((dawn_adt*)(((void*)dawn_dup(dawn_ev_get(((void*)dawn_own[4]), INT64_C(130822816777737))))));203  int64_t t9 = dawn_dawn_3pkg_3tileir_2dev__mma(v1504, t4, t7, (&dawn_dict_320911459306561_3Float), t8);204  dawn_adt* t10 = ((dawn_adt*)(((void*)dawn_dup(dawn_ev_get(((void*)dawn_own[4]), INT64_C(130822816777737))))));205  int64_t t11 = dawn_dawn_3pkg_3tileir_2dev__scalar(((dawn_adt*)dawn_take(&dawn_own[2])), (&dawn_dict_382204871448550_3Float), t10);206  dawn_own[9] = ((void*)(((dawn_adt*)(((void*)dawn_dup(dawn_ev_get(((void*)dawn_own[4]), INT64_C(130822816777737))))))));207  void* t12 = ((void*)dawn_unit_box);208  dawn_adt* t13 = dawn_adt_new(0, 3, UINT64_C(0x0000000000000006));209  t13->fields[0].i = INT64_C(130822816777737);210  t13->fields[1].p = ((void*)dawn_take(&dawn_own[9]));211  t13->fields[2].p = t12;212  dawn_own[10] = t13;213  int64_t v14540 = INT64_C(130822816777737);214  dawn_own[11] = ((void*)dawn_dup(dawn_ev_get(((dawn_adt*)dawn_own[10]), v14540)));215  dawn_drop(dawn_own[10]); dawn_own[10] = NULL;216  dawn_adt* t14 = ((dawn_adt*)(((void*)dawn_take(&dawn_own[11]))));217  int64_t v6323 = dawn_dawn_3pkg_3tileir_2dev__impl_39_3Op110591509872810_3mul(t9, t11, t14);218  dawn_own[12] = ((void*)(((dawn_adt*)(((void*)dawn_dup(dawn_ev_get(((void*)dawn_own[4]), INT64_C(130822816777737))))))));219  void* t15 = ((void*)dawn_unit_box);220  dawn_adt* t16 = dawn_adt_new(0, 3, UINT64_C(0x0000000000000006));221  t16->fields[0].i = INT64_C(130822816777737);222  t16->fields[1].p = ((void*)dawn_take(&dawn_own[12]));223  t16->fields[2].p = t15;224  dawn_own[13] = t16;225  int64_t v14543 = INT64_C(130822816777737);226  dawn_own[14] = ((void*)dawn_dup(dawn_ev_get(((dawn_adt*)dawn_own[13]), v14543)));227  dawn_drop(dawn_own[13]); dawn_own[13] = NULL;228  int64_t v6325 = dawn_dawn_3pkg_3tileir_2dev__impl_316_3Op110591509872810_3var_1get(v1513, ((dawn_adt*)(((void*)dawn_take(&dawn_own[14])))));229  int64_t v6327 = v6323;230  bool v6328 = true;231  int64_t v6329 = dawn_dawn_3pkg_3tileir_2dev__reduce_1max_3default_31(v6327);232  int64_t v6326 = dawn_dawn_3pkg_3tileir_2dev__reduce_1max(v6327, v6329, v6328, ((dawn_adt*)(((void*)dawn_dup(dawn_ev_get(((void*)dawn_own[4]), INT64_C(130822816777737)))))));233  bool v6330 = dawn_dawn_3pkg_3tileir_2dev__max_3default_32(v6325, v6326);234  int64_t v6324 = dawn_dawn_3pkg_3tileir_2dev__max(v6325, v6326, v6330, ((dawn_adt*)(((void*)dawn_dup(dawn_ev_get(((void*)dawn_own[4]), INT64_C(130822816777737)))))));235  dawn_own[15] = ((void*)(((dawn_adt*)(((void*)dawn_dup(dawn_ev_get(((void*)dawn_own[4]), INT64_C(130822816777737))))))));236  void* t17 = ((void*)dawn_unit_box);237  dawn_adt* t18 = dawn_adt_new(0, 3, UINT64_C(0x0000000000000006));238  t18->fields[0].i = INT64_C(130822816777737);239  t18->fields[1].p = ((void*)dawn_take(&dawn_own[15]));240  t18->fields[2].p = t17;241  dawn_own[16] = t18;242  int64_t v14546 = INT64_C(130822816777737);243  dawn_own[17] = ((void*)dawn_dup(dawn_ev_get(((dawn_adt*)dawn_own[16]), v14546)));244  dawn_drop(dawn_own[16]); dawn_own[16] = NULL;245  int64_t t19 = dawn_dawn_3pkg_3tileir_2dev__impl_38_3Op110591509872810_3sub(v6323, v6324, ((dawn_adt*)(((void*)dawn_take(&dawn_own[17])))));246  dawn_adt* t20 = ((dawn_adt*)(((void*)dawn_dup(dawn_ev_get(((void*)dawn_own[4]), INT64_C(130822816777737))))));247  int64_t v6331 = dawn_dawn_3pkg_3tileir_2dev__exp(t19, t20);248  dawn_own[18] = ((void*)(((dawn_adt*)(((void*)dawn_dup(dawn_ev_get(((void*)dawn_own[4]), INT64_C(130822816777737))))))));249  void* t21 = ((void*)dawn_unit_box);250  dawn_adt* t22 = dawn_adt_new(0, 3, UINT64_C(0x0000000000000006));251  t22->fields[0].i = INT64_C(130822816777737);252  t22->fields[1].p = ((void*)dawn_take(&dawn_own[18]));253  t22->fields[2].p = t21;254  dawn_own[19] = t22;255  int64_t v14549 = INT64_C(130822816777737);256  dawn_own[20] = ((void*)dawn_dup(dawn_ev_get(((dawn_adt*)dawn_own[19]), v14549)));257  dawn_drop(dawn_own[19]); dawn_own[19] = NULL;258  int64_t t23 = dawn_dawn_3pkg_3tileir_2dev__impl_316_3Op110591509872810_3var_1get(v1513, ((dawn_adt*)(((void*)dawn_take(&dawn_own[20])))));259  dawn_own[21] = ((void*)(((dawn_adt*)(((void*)dawn_dup(dawn_ev_get(((void*)dawn_own[4]), INT64_C(130822816777737))))))));260  void* t24 = ((void*)dawn_unit_box);261  dawn_adt* t25 = dawn_adt_new(0, 3, UINT64_C(0x0000000000000006));262  t25->fields[0].i = INT64_C(130822816777737);263  t25->fields[1].p = ((void*)dawn_take(&dawn_own[21]));264  t25->fields[2].p = t24;265  dawn_own[22] = t25;266  int64_t v14552 = INT64_C(130822816777737);267  dawn_own[23] = ((void*)dawn_dup(dawn_ev_get(((dawn_adt*)dawn_own[22]), v14552)));268  dawn_drop(dawn_own[22]); dawn_own[22] = NULL;269  dawn_adt* t26 = ((dawn_adt*)(((void*)dawn_take(&dawn_own[23]))));270  int64_t t27 = dawn_dawn_3pkg_3tileir_2dev__impl_38_3Op110591509872810_3sub(t23, v6324, t26);271  dawn_adt* t28 = ((dawn_adt*)(((void*)dawn_dup(dawn_ev_get(((void*)dawn_own[4]), INT64_C(130822816777737))))));272  int64_t v6332 = dawn_dawn_3pkg_3tileir_2dev__exp(t27, t28);273  dawn_own[24] = ((void*)(((dawn_adt*)(((void*)dawn_dup(dawn_ev_get(((void*)dawn_own[4]), INT64_C(130822816777737))))))));274  void* t29 = ((void*)dawn_unit_box);275  dawn_adt* t30 = dawn_adt_new(0, 3, UINT64_C(0x0000000000000006));276  t30->fields[0].i = INT64_C(130822816777737);277  t30->fields[1].p = ((void*)dawn_take(&dawn_own[24]));278  t30->fields[2].p = t29;279  dawn_own[25] = t30;280  int64_t v14555 = INT64_C(130822816777737);281  dawn_own[26] = ((void*)dawn_dup(dawn_ev_get(((dawn_adt*)dawn_own[25]), v14555)));282  dawn_drop(dawn_own[25]); dawn_own[25] = NULL;283  int64_t t31 = dawn_dawn_3pkg_3tileir_2dev__impl_316_3Op110591509872810_3var_1get(v1514, ((dawn_adt*)(((void*)dawn_take(&dawn_own[26])))));284  dawn_own[27] = ((void*)(((dawn_adt*)(((void*)dawn_dup(dawn_ev_get(((void*)dawn_own[4]), INT64_C(130822816777737))))))));285  void* t32 = ((void*)dawn_unit_box);286  dawn_adt* t33 = dawn_adt_new(0, 3, UINT64_C(0x0000000000000006));287  t33->fields[0].i = INT64_C(130822816777737);288  t33->fields[1].p = ((void*)dawn_take(&dawn_own[27]));289  t33->fields[2].p = t32;290  dawn_own[28] = t33;291  int64_t v14558 = INT64_C(130822816777737);292  dawn_own[29] = ((void*)dawn_dup(dawn_ev_get(((dawn_adt*)dawn_own[28]), v14558)));293  dawn_drop(dawn_own[28]); dawn_own[28] = NULL;294  dawn_adt* t34 = ((dawn_adt*)(((void*)dawn_take(&dawn_own[29]))));295  int64_t t35 = dawn_dawn_3pkg_3tileir_2dev__impl_39_3Op110591509872810_3mul(t31, v6332, t34);296  int64_t v6333 = v6331;297  bool v6334 = true;298  int64_t v6335 = dawn_dawn_3pkg_3tileir_2dev__reduce_1sum_3default_31(v6333);299  int64_t t36 = dawn_dawn_3pkg_3tileir_2dev__reduce_1sum(v6333, v6335, v6334, ((dawn_adt*)(((void*)dawn_dup(dawn_ev_get(((void*)dawn_own[4]), INT64_C(130822816777737)))))));300  dawn_own[30] = ((void*)(((dawn_adt*)(((void*)dawn_dup(dawn_ev_get(((void*)dawn_own[4]), INT64_C(130822816777737))))))));301  void* t37 = ((void*)dawn_unit_box);302  dawn_adt* t38 = dawn_adt_new(0, 3, UINT64_C(0x0000000000000006));303  t38->fields[0].i = INT64_C(130822816777737);304  t38->fields[1].p = ((void*)dawn_take(&dawn_own[30]));305  t38->fields[2].p = t37;306  dawn_own[31] = t38;307  int64_t v14561 = INT64_C(130822816777737);308  dawn_own[32] = ((void*)dawn_dup(dawn_ev_get(((dawn_adt*)dawn_own[31]), v14561)));309  dawn_drop(dawn_own[31]); dawn_own[31] = NULL;310  dawn_adt* t39 = ((dawn_adt*)(((void*)dawn_take(&dawn_own[32]))));311  int64_t t40 = dawn_dawn_3pkg_3tileir_2dev__impl_37_3Op110591509872810_3add(t35, t36, t39);312  dawn_own[33] = ((void*)(((dawn_adt*)(((void*)dawn_dup(dawn_ev_get(((void*)dawn_own[4]), INT64_C(130822816777737))))))));313  void* t41 = ((void*)dawn_unit_box);314  dawn_adt* t42 = dawn_adt_new(0, 3, UINT64_C(0x0000000000000006));315  t42->fields[0].i = INT64_C(130822816777737);316  t42->fields[1].p = ((void*)dawn_take(&dawn_own[33]));317  t42->fields[2].p = t41;318  dawn_own[34] = t42;319  int64_t v14564 = INT64_C(130822816777737);320  dawn_own[35] = ((void*)dawn_dup(dawn_ev_get(((dawn_adt*)dawn_own[34]), v14564)));321  dawn_drop(dawn_own[34]); dawn_own[34] = NULL;322  dawn_adt* t43 = ((dawn_adt*)(((void*)dawn_take(&dawn_own[35]))));323  (void)(dawn_dawn_3pkg_3tileir_2dev__impl_316_3Op110591509872810_3var_1set(v1514, t40, t43));324  dawn_array* t44 = dawn_array_new();325  t44 = dawn_array_push_own(t44, ((void*)(dawn_box_int(v6321))));326  dawn_own[36] = dawn_std_2pvec__from_1array(t44);327  dawn_adt* t45 = ((dawn_adt*)(((void*)dawn_dup(dawn_ev_get(((void*)dawn_own[4]), INT64_C(130822816777737))))));328  int64_t t46 = dawn_dawn_3pkg_3tileir_2dev__load_1at(((dawn_adt*)dawn_take(&dawn_own[3])), ((void*)dawn_take(&dawn_own[36])), t45);329  dawn_own[37] = ((void*)(((dawn_adt*)(((void*)dawn_dup(dawn_ev_get(((void*)dawn_own[4]), INT64_C(130822816777737))))))));330  void* t47 = ((void*)dawn_unit_box);331  dawn_adt* t48 = dawn_adt_new(0, 3, UINT64_C(0x0000000000000006));332  t48->fields[0].i = INT64_C(130822816777737);333  t48->fields[1].p = ((void*)dawn_take(&dawn_own[37]));334  t48->fields[2].p = t47;335  dawn_own[38] = t48;336  int64_t v14567 = INT64_C(130822816777737);337  dawn_own[39] = ((void*)dawn_dup(dawn_ev_get(((dawn_adt*)dawn_own[38]), v14567)));338  dawn_drop(dawn_own[38]); dawn_own[38] = NULL;339  int64_t t49 = dawn_dawn_3pkg_3tileir_2dev__impl_316_3Op110591509872810_3var_1get(v1515, ((dawn_adt*)(((void*)dawn_take(&dawn_own[39])))));340  dawn_own[40] = ((void*)(((dawn_adt*)(((void*)dawn_dup(dawn_ev_get(((void*)dawn_own[4]), INT64_C(130822816777737))))))));341  void* t50 = ((void*)dawn_unit_box);342  dawn_adt* t51 = dawn_adt_new(0, 3, UINT64_C(0x0000000000000006));343  t51->fields[0].i = INT64_C(130822816777737);344  t51->fields[1].p = ((void*)dawn_take(&dawn_own[40]));345  t51->fields[2].p = t50;346  dawn_own[41] = t51;347  int64_t v14570 = INT64_C(130822816777737);348  dawn_own[42] = ((void*)dawn_dup(dawn_ev_get(((dawn_adt*)dawn_own[41]), v14570)));349  dawn_drop(dawn_own[41]); dawn_own[41] = NULL;350  dawn_adt* t52 = ((dawn_adt*)(((void*)dawn_take(&dawn_own[42]))));351  int64_t t53 = dawn_dawn_3pkg_3tileir_2dev__impl_39_3Op110591509872810_3mul(t49, v6332, t52);352  dawn_adt* t54 = ((dawn_adt*)(((void*)dawn_dup(dawn_ev_get(((void*)dawn_own[4]), INT64_C(130822816777737))))));353  int64_t t55 = dawn_dawn_3pkg_3tileir_2dev__mma(v6331, t46, t53, (&dawn_dict_320911459306561_3Float), t54);354  dawn_own[43] = ((void*)(((dawn_adt*)(((void*)dawn_dup(dawn_ev_get(((void*)dawn_own[4]), INT64_C(130822816777737))))))));355  void* t56 = ((void*)dawn_unit_box);356  dawn_adt* t57 = dawn_adt_new(0, 3, UINT64_C(0x0000000000000006));357  t57->fields[0].i = INT64_C(130822816777737);358  t57->fields[1].p = ((void*)dawn_take(&dawn_own[43]));359  t57->fields[2].p = t56;360  dawn_own[44] = t57;361  int64_t v14573 = INT64_C(130822816777737);362  dawn_own[45] = ((void*)dawn_dup(dawn_ev_get(((dawn_adt*)dawn_own[44]), v14573)));363  dawn_drop(dawn_own[44]); dawn_own[44] = NULL;364  dawn_adt* t58 = ((dawn_adt*)(((void*)dawn_take(&dawn_own[45]))));365  (void)(dawn_dawn_3pkg_3tileir_2dev__impl_316_3Op110591509872810_3var_1set(v1515, t55, t58));366  dawn_own[46] = ((void*)(((dawn_adt*)(((void*)dawn_dup(dawn_ev_get(((void*)dawn_own[4]), INT64_C(130822816777737))))))));367  void* t59 = ((void*)dawn_unit_box);368  dawn_adt* t60 = dawn_adt_new(0, 3, UINT64_C(0x0000000000000006));369  t60->fields[0].i = INT64_C(130822816777737);370  t60->fields[1].p = ((void*)dawn_take(&dawn_own[46]));371  t60->fields[2].p = t59;372  dawn_own[47] = t60;373  int64_t v14576 = INT64_C(130822816777737);374  dawn_own[48] = ((void*)dawn_dup(dawn_ev_get(((dawn_adt*)dawn_own[47]), v14576)));375  dawn_drop(dawn_own[47]); dawn_own[47] = NULL;376  (void)(dawn_dawn_3pkg_3tileir_2dev__impl_316_3Op110591509872810_3var_1set(v1513, v6324, ((dawn_adt*)(((void*)dawn_take(&dawn_own[48]))))));377  dawn_drop(dawn_own[4]); dawn_own[4] = NULL;378  DAWN_RETURN(DAWN_UNIT);379}

JVM,来自 javap -c -p -s共 89511 行,列出 1631 行

1  public static dawn.rt.Unit flash_attn(dawn.rt.Tuple2, dawn.rt.Tuple2, dawn.rt.Tuple2, dawn.rt.Tuple2, dawn.rt.Tuple2, dawn$pkg$tileir.dev$ev$Dev);2    descriptor: (Ldawn/rt/Tuple2;Ldawn/rt/Tuple2;Ldawn/rt/Tuple2;Ldawn/rt/Tuple2;Ldawn/rt/Tuple2;Ldawn$pkg$tileir/dev$ev$Dev;)Ldawn/rt/Unit;3    Code:4       0: aload_05       1: aload         56       3: invokestatic  #14                 // Method dawn$pkg$tileir/dev.load_cell:(Ldawn/rt/Tuple2;Ldawn$pkg$tileir/dev$ev$Dev;)J7       6: lstore        68       8: invokestatic  #80                 // Method dawn/rt/Array.array_new:()Ldawn/rt/Array;9      11: ldc2_w        #428                // long 32l10      14: invokestatic  #86                 // Method java/lang/Long.valueOf:(J)Ljava/lang/Long;11      17: invokestatic  #90                 // Method dawn/rt/Array.array_push:(Ldawn/rt/Array;Ljava/lang/Object;)Ldawn/rt/Array;12      20: ldc2_w        #101                // long 1l13      23: invokestatic  #86                 // Method java/lang/Long.valueOf:(J)Ljava/lang/Long;14      26: invokestatic  #90                 // Method dawn/rt/Array.array_push:(Ldawn/rt/Array;Ljava/lang/Object;)Ldawn/rt/Array;15      29: invokestatic  #96                 // Method std/pvec.from_array:(Ldawn/rt/Array;)Lstd/pvec$Vec;16      32: ldc2_w        #393                // double Infinityd17      35: dneg18      36: invokestatic  #172                // Method java/lang/Double.valueOf:(D)Ljava/lang/Double;19      39: getstatic     #177                // Field dawn/dict/main$dict$20911459306561$Float.INSTANCE:Ldawn/tr/dawn$pkg$tileir$dev$FloatDtype;20      42: aload         521      44: invokestatic  #1164               // Method dawn$pkg$tileir/dev.full:(Lstd/pvec$Vec;Ljava/lang/Object;Ljava/lang/Object;Ldawn$pkg$tileir/dev$ev$Dev;)J22      47: lstore        823      49: invokestatic  #80                 // Method dawn/rt/Array.array_new:()Ldawn/rt/Array;24      52: ldc2_w        #428                // long 32l25      55: invokestatic  #86                 // Method java/lang/Long.valueOf:(J)Ljava/lang/Long;26      58: invokestatic  #90                 // Method dawn/rt/Array.array_push:(Ldawn/rt/Array;Ljava/lang/Object;)Ldawn/rt/Array;27      61: ldc2_w        #101                // long 1l28      64: invokestatic  #86                 // Method java/lang/Long.valueOf:(J)Ljava/lang/Long;29      67: invokestatic  #90                 // Method dawn/rt/Array.array_push:(Ldawn/rt/Array;Ljava/lang/Object;)Ldawn/rt/Array;30      70: invokestatic  #96                 // Method std/pvec.from_array:(Ldawn/rt/Array;)Lstd/pvec$Vec;31      73: ldc2_w        #166                // double 0.0d32      76: invokestatic  #172                // Method java/lang/Double.valueOf:(D)Ljava/lang/Double;33      79: getstatic     #177                // Field dawn/dict/main$dict$20911459306561$Float.INSTANCE:Ldawn/tr/dawn$pkg$tileir$dev$FloatDtype;34      82: aload         535      84: invokestatic  #1164               // Method dawn$pkg$tileir/dev.full:(Lstd/pvec$Vec;Ljava/lang/Object;Ljava/lang/Object;Ldawn$pkg$tileir/dev$ev$Dev;)J36      87: lstore        1037      89: aload_338      90: aload         539      92: invokestatic  #425                // Method dawn$pkg$tileir/dev.zeros:(Ldawn/rt/Tuple2;Ldawn$pkg$tileir/dev$ev$Dev;)J40      95: lstore        1241      97: ldc2_w        #63                 // long 0l42     100: lstore        1443     102: ldc2_w        #461                // long 64l44     105: ldc2_w        #428                // long 32l45     108: dup246     109: lconst_047     110: lcmp48     111: ifne          12549     114: new           #41                 // class dawn/rt/PanicError50     117: dup51     118: ldc_w         #431                // String Int division by zero52     121: invokespecial #46                 // Method dawn/rt/PanicError."<init>":(Ljava/lang/String;)V53     124: athrow54     125: ldiv55     126: lstore        1656     128: lload         1457     130: invokestatic  #86                 // Method java/lang/Long.valueOf:(J)Ljava/lang/Long;58     133: lload         1659     135: invokestatic  #86                 // Method java/lang/Long.valueOf:(J)Ljava/lang/Long;60     138: getstatic     #434                // Field dawn/dict/main$dict$117621157097227$Int.INSTANCE:Ldawn/tr/dawn$pkg$tileir$dev$RangeBound;61     141: invokestatic  #438                // Method dawn$pkg$tileir/dev.d_range$default$2:(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ldawn$pkg$tileir/dev$Step;62     144: astore        1863     146: lload         1464     148: invokestatic  #86                 // Method java/lang/Long.valueOf:(J)Ljava/lang/Long;65     151: lload         1666     153: invokestatic  #86                 // Method java/lang/Long.valueOf:(J)Ljava/lang/Long;67     156: aload         1868     158: getstatic     #434                // Field dawn/dict/main$dict$117621157097227$Int.INSTANCE:Ldawn/tr/dawn$pkg$tileir$dev$RangeBound;69     161: invokestatic  #119                // Method dawn$pkg$tileir/dev.d_range$default$3:(Ljava/lang/Object;Ljava/lang/Object;Ldawn$pkg$tileir/dev$Step;Ljava/lang/Object;)Z70     164: istore        1971     166: lload         1472     168: invokestatic  #86                 // Method java/lang/Long.valueOf:(J)Ljava/lang/Long;73     171: lload         1674     173: invokestatic  #86                 // Method java/lang/Long.valueOf:(J)Ljava/lang/Long;75     176: aload         1876     178: iload         1977     180: getstatic     #434                // Field dawn/dict/main$dict$117621157097227$Int.INSTANCE:Ldawn/tr/dawn$pkg$tileir$dev$RangeBound;78     183: invokestatic  #123                // Method dawn$pkg$tileir/dev.d_range:(Ljava/lang/Object;Ljava/lang/Object;Ldawn$pkg$tileir/dev$Step;ZLjava/lang/Object;)Ldawn$pkg$tileir/dev$DRange;79     186: astore        2080     188: lload         881     190: new           #16                 // class ev$Pack82     193: dup83     194: ldc2_w        #17                 // long 130822816777737l84     197: aload         585     199: getstatic     #24                 // Field dawn/rt/Unit.INSTANCE:Ldawn/rt/Unit;86     202: invokespecial #28                 // Method ev$Pack."<init>":(JLjava/lang/Object;Ljava/lang/Object;)V87     205: ldc2_w        #17                 // long 130822816777737l88     208: lstore        2189     210: astore        2390     212: aload         2391     214: instanceof    #16                 // class ev$Pack92     217: ifeq          25893     220: aload         2394     222: checkcast     #16                 // class ev$Pack95     225: getfield      #32                 // Field ev$Pack.key:J96     228: lload         2197     230: lcmp98     231: ifne          24599     234: aload         23100     236: checkcast     #16                 // class ev$Pack101     239: getfield      #36                 // Field ev$Pack.ev:Ljava/lang/Object;102     242: goto          268103     245: aload         23104     247: checkcast     #16                 // class ev$Pack105     250: getfield      #39                 // Field ev$Pack.outer:Ljava/lang/Object;106     253: astore        23107     255: goto          212108     258: new           #41                 // class dawn/rt/PanicError109     261: dup110     262: ldc           #43                 // String effect evidence missing: no pack entry for the atom this call site asked for111     264: invokespecial #46                 // Method dawn/rt/PanicError."<init>":(Ljava/lang/String;)V112     267: athrow113     268: checkcast     #48                 // class dawn$pkg$tileir/dev$ev$Dev114     271: invokestatic  #126                // Method dawn$pkg$tileir/dev.dawn$impl$StagedVar$Tile$var_open:(JLdawn$pkg$tileir/dev$ev$Dev;)J115     274: lstore        24116     276: lload         10117     278: new           #16                 // class ev$Pack118     281: dup119     282: ldc2_w        #17                 // long 130822816777737l120     285: aload         5121     287: getstatic     #24                 // Field dawn/rt/Unit.INSTANCE:Ldawn/rt/Unit;122     290: invokespecial #28                 // Method ev$Pack."<init>":(JLjava/lang/Object;Ljava/lang/Object;)V123     293: ldc2_w        #17                 // long 130822816777737l124     296: lstore        26125     298: astore        28126     300: aload         28127     302: instanceof    #16                 // class ev$Pack128     305: ifeq          346129     308: aload         28130     310: checkcast     #16                 // class ev$Pack131     313: getfield      #32                 // Field ev$Pack.key:J132     316: lload         26133     318: lcmp134     319: ifne          333135     322: aload         28136     324: checkcast     #16                 // class ev$Pack137     327: getfield      #36                 // Field ev$Pack.ev:Ljava/lang/Object;138     330: goto          356139     333: aload         28140     335: checkcast     #16                 // class ev$Pack141     338: getfield      #39                 // Field ev$Pack.outer:Ljava/lang/Object;142     341: astore        28143     343: goto          300144     346: new           #41                 // class dawn/rt/PanicError145     349: dup146     350: ldc           #43                 // String effect evidence missing: no pack entry for the atom this call site asked for147     352: invokespecial #46                 // Method dawn/rt/PanicError."<init>":(Ljava/lang/String;)V148     355: athrow149     356: checkcast     #48                 // class dawn$pkg$tileir/dev$ev$Dev150     359: invokestatic  #126                // Method dawn$pkg$tileir/dev.dawn$impl$StagedVar$Tile$var_open:(JLdawn$pkg$tileir/dev$ev$Dev;)J151     362: lstore        29152     364: lload         12153     366: new           #16                 // class ev$Pack154     369: dup155     370: ldc2_w        #17                 // long 130822816777737l156     373: aload         5157     375: getstatic     #24                 // Field dawn/rt/Unit.INSTANCE:Ldawn/rt/Unit;158     378: invokespecial #28                 // Method ev$Pack."<init>":(JLjava/lang/Object;Ljava/lang/Object;)V159     381: ldc2_w        #17                 // long 130822816777737l160     384: lstore        31161     386: astore        33162     388: aload         33163     390: instanceof    #16                 // class ev$Pack164     393: ifeq          434165     396: aload         33166     398: checkcast     #16                 // class ev$Pack167     401: getfield      #32                 // Field ev$Pack.key:J168     404: lload         31169     406: lcmp170     407: ifne          421171     410: aload         33172     412: checkcast     #16                 // class ev$Pack173     415: getfield      #36                 // Field ev$Pack.ev:Ljava/lang/Object;174     418: goto          444175     421: aload         33176     423: checkcast     #16                 // class ev$Pack177     426: getfield      #39                 // Field ev$Pack.outer:Ljava/lang/Object;178     429: astore        33179     431: goto          388180     434: new           #41                 // class dawn/rt/PanicError181     437: dup182     438: ldc           #43                 // String effect evidence missing: no pack entry for the atom this call site asked for183     440: invokespecial #46                 // Method dawn/rt/PanicError."<init>":(Ljava/lang/String;)V184     443: athrow185     444: checkcast     #48                 // class dawn$pkg$tileir/dev$ev$Dev186     447: invokestatic  #126                // Method dawn$pkg$tileir/dev.dawn$impl$StagedVar$Tile$var_open:(JLdawn$pkg$tileir/dev$ev$Dev;)J187     450: lstore        34188     452: aload         20189     454: new           #1166               // class dawn/fn/main$34190     457: dup191     458: lload         6192     460: aload_1193     461: aload         4194     463: lload         24195     465: lload         29196     467: lload         34197     469: aload_2198     470: invokespecial #1169               // Method dawn/fn/main$34."<init>":(JLdawn/rt/Tuple2;Ldawn/rt/Tuple2;JJJLdawn/rt/Tuple2;)V199     473: getstatic     #434                // Field dawn/dict/main$dict$117621157097227$Int.INSTANCE:Ldawn/tr/dawn$pkg$tileir$dev$RangeBound;200     476: new           #16                 // class ev$Pack201     479: dup202     480: ldc2_w        #17                 // long 130822816777737l203     483: aload         5204     485: getstatic     #24                 // Field dawn/rt/Unit.INSTANCE:Ldawn/rt/Unit;205     488: invokespecial #28                 // Method ev$Pack."<init>":(JLjava/lang/Object;Ljava/lang/Object;)V206     491: ldc2_w        #17                 // long 130822816777737l207     494: lstore        36208     496: astore        38209     498: aload         38210     500: instanceof    #16                 // class ev$Pack211     503: ifeq          544212     506: aload         38213     508: checkcast     #16                 // class ev$Pack214     511: getfield      #32                 // Field ev$Pack.key:J215     514: lload         36216     516: lcmp217     517: ifne          531218     520: aload         38219     522: checkcast     #16                 // class ev$Pack220     525: getfield      #36                 // Field ev$Pack.ev:Ljava/lang/Object;221     528: goto          554222     531: aload         38223     533: checkcast     #16                 // class ev$Pack224     536: getfield      #39                 // Field ev$Pack.outer:Ljava/lang/Object;225     539: astore        38226     541: goto          498227     544: new           #41                 // class dawn/rt/PanicError228     547: dup229     548: ldc           #43                 // String effect evidence missing: no pack entry for the atom this call site asked for230     550: invokespecial #46                 // Method dawn/rt/PanicError."<init>":(Ljava/lang/String;)V231     553: athrow232     554: checkcast     #48                 // class dawn$pkg$tileir/dev$ev$Dev233     557: invokestatic  #135                // Method dawn$pkg$tileir/dev.dawn$impl$StagedIter$DRange$staged_for:(Ldawn$pkg$tileir/dev$DRange;Ldawn/rt/Fn2;Ljava/lang/Object;Ldawn$pkg$tileir/dev$ev$Dev;)Ldawn/rt/Unit;234     560: pop235     561: lload         24236     563: new           #16                 // class ev$Pack237     566: dup238     567: ldc2_w        #17                 // long 130822816777737l239     570: aload         5240     572: getstatic     #24                 // Field dawn/rt/Unit.INSTANCE:Ldawn/rt/Unit;241     575: invokespecial #28                 // Method ev$Pack."<init>":(JLjava/lang/Object;Ljava/lang/Object;)V242     578: ldc2_w        #17                 // long 130822816777737l243     581: lstore        39244     583: astore        41245     585: aload         41246     587: instanceof    #16                 // class ev$Pack247     590: ifeq          631248     593: aload         41249     595: checkcast     #16                 // class ev$Pack250     598: getfield      #32                 // Field ev$Pack.key:J251     601: lload         39252     603: lcmp253     604: ifne          618254     607: aload         41255     609: checkcast     #16                 // class ev$Pack256     612: getfield      #36                 // Field ev$Pack.ev:Ljava/lang/Object;257     615: goto          641258     618: aload         41259     620: checkcast     #16                 // class ev$Pack260     623: getfield      #39                 // Field ev$Pack.outer:Ljava/lang/Object;261     626: astore        41262     628: goto          585263     631: new           #41                 // class dawn/rt/PanicError264     634: dup265     635: ldc           #43                 // String effect evidence missing: no pack entry for the atom this call site asked for266     637: invokespecial #46                 // Method dawn/rt/PanicError."<init>":(Ljava/lang/String;)V267     640: athrow268     641: checkcast     #48                 // class dawn$pkg$tileir/dev$ev$Dev269     644: invokestatic  #138                // Method dawn$pkg$tileir/dev.dawn$impl$StagedVar$Tile$var_get:(JLdawn$pkg$tileir/dev$ev$Dev;)J270     647: lstore        8271     649: lload         29272     651: new           #16                 // class ev$Pack273     654: dup274     655: ldc2_w        #17                 // long 130822816777737l275     658: aload         5276     660: getstatic     #24                 // Field dawn/rt/Unit.INSTANCE:Ldawn/rt/Unit;277     663: invokespecial #28                 // Method ev$Pack."<init>":(JLjava/lang/Object;Ljava/lang/Object;)V278     666: ldc2_w        #17                 // long 130822816777737l279     669: lstore        42280     671: astore        44281     673: aload         44282     675: instanceof    #16                 // class ev$Pack283     678: ifeq          719284     681: aload         44285     683: checkcast     #16                 // class ev$Pack286     686: getfield      #32                 // Field ev$Pack.key:J287     689: lload         42288     691: lcmp289     692: ifne          706290     695: aload         44291     697: checkcast     #16                 // class ev$Pack292     700: getfield      #36                 // Field ev$Pack.ev:Ljava/lang/Object;293     703: goto          729294     706: aload         44295     708: checkcast     #16                 // class ev$Pack296     711: getfield      #39                 // Field ev$Pack.outer:Ljava/lang/Object;297     714: astore        44298     716: goto          673299     719: new           #41                 // class dawn/rt/PanicError300     722: dup301     723: ldc           #43                 // String effect evidence missing: no pack entry for the atom this call site asked for302     725: invokespecial #46                 // Method dawn/rt/PanicError."<init>":(Ljava/lang/String;)V303     728: athrow304     729: checkcast     #48                 // class dawn$pkg$tileir/dev$ev$Dev305     732: invokestatic  #138                // Method dawn$pkg$tileir/dev.dawn$impl$StagedVar$Tile$var_get:(JLdawn$pkg$tileir/dev$ev$Dev;)J306     735: lstore        10307     737: lload         34308     739: new           #16                 // class ev$Pack309     742: dup310     743: ldc2_w        #17                 // long 130822816777737l311     746: aload         5312     748: getstatic     #24                 // Field dawn/rt/Unit.INSTANCE:Ldawn/rt/Unit;313     751: invokespecial #28                 // Method ev$Pack."<init>":(JLjava/lang/Object;Ljava/lang/Object;)V314     754: ldc2_w        #17                 // long 130822816777737l315     757: lstore        45316     759: astore        47317     761: aload         47318     763: instanceof    #16                 // class ev$Pack319     766: ifeq          807320     769: aload         47321     771: checkcast     #16                 // class ev$Pack322     774: getfield      #32                 // Field ev$Pack.key:J323     777: lload         45324     779: lcmp325     780: ifne          794326     783: aload         47327     785: checkcast     #16                 // class ev$Pack328     788: getfield      #36                 // Field ev$Pack.ev:Ljava/lang/Object;329     791: goto          817330     794: aload         47331     796: checkcast     #16                 // class ev$Pack332     799: getfield      #39                 // Field ev$Pack.outer:Ljava/lang/Object;333     802: astore        47334     804: goto          761335     807: new           #41                 // class dawn/rt/PanicError336     810: dup337     811: ldc           #43                 // String effect evidence missing: no pack entry for the atom this call site asked for338     813: invokespecial #46                 // Method dawn/rt/PanicError."<init>":(Ljava/lang/String;)V339     816: athrow340     817: checkcast     #48                 // class dawn$pkg$tileir/dev$ev$Dev341     820: invokestatic  #138                // Method dawn$pkg$tileir/dev.dawn$impl$StagedVar$Tile$var_get:(JLdawn$pkg$tileir/dev$ev$Dev;)J342     823: lstore        12343     825: getstatic     #24                 // Field dawn/rt/Unit.INSTANCE:Ldawn/rt/Unit;344     828: pop345     829: aload_3346     830: lload         12347     832: lload         10348     834: new           #16                 // class ev$Pack349     837: dup350     838: ldc2_w        #17                 // long 130822816777737l351     841: aload         5352     843: getstatic     #24                 // Field dawn/rt/Unit.INSTANCE:Ldawn/rt/Unit;353     846: invokespecial #28                 // Method ev$Pack."<init>":(JLjava/lang/Object;Ljava/lang/Object;)V354     849: ldc2_w        #17                 // long 130822816777737l355     852: lstore        48356     854: astore        50357     856: aload         50358     858: instanceof    #16                 // class ev$Pack359     861: ifeq          902360     864: aload         50361     866: checkcast     #16                 // class ev$Pack362     869: getfield      #32                 // Field ev$Pack.key:J363     872: lload         48364     874: lcmp365     875: ifne          889366     878: aload         50367     880: checkcast     #16                 // class ev$Pack368     883: getfield      #36                 // Field ev$Pack.ev:Ljava/lang/Object;369     886: goto          912370     889: aload         50371     891: checkcast     #16                 // class ev$Pack372     894: getfield      #39                 // Field ev$Pack.outer:Ljava/lang/Object;373     897: astore        50374     899: goto          856375     902: new           #41                 // class dawn/rt/PanicError376     905: dup377     906: ldc           #43                 // String effect evidence missing: no pack entry for the atom this call site asked for378     908: invokespecial #46                 // Method dawn/rt/PanicError."<init>":(Ljava/lang/String;)V379     911: athrow380     912: checkcast     #48                 // class dawn$pkg$tileir/dev$ev$Dev381     915: invokestatic  #236                // Method dawn$pkg$tileir/dev.dawn$impl$Div$Tile$div:(JJLdawn$pkg$tileir/dev$ev$Dev;)J382     918: aload         5383     920: invokestatic  #56                 // Method dawn$pkg$tileir/dev.store_cell:(Ldawn/rt/Tuple2;JLdawn$pkg$tileir/dev$ev$Dev;)Ldawn/rt/Unit;384     923: areturn385386  public static dawn.rt.Unit lambda$34(long, dawn.rt.Tuple2, dawn.rt.Tuple2, long, long, long, dawn.rt.Tuple2, long, java.lang.Object);387    descriptor: (JLdawn/rt/Tuple2;Ldawn/rt/Tuple2;JJJLdawn/rt/Tuple2;JLjava/lang/Object;)Ldawn/rt/Unit;388    Code:389       0: lload_0390       1: aload_2391       2: invokestatic  #80                 // Method dawn/rt/Array.array_new:()Ldawn/rt/Array;392       5: lload         11393       7: invokestatic  #86                 // Method java/lang/Long.valueOf:(J)Ljava/lang/Long;394      10: invokestatic  #90                 // Method dawn/rt/Array.array_push:(Ldawn/rt/Array;Ljava/lang/Object;)Ldawn/rt/Array;395      13: invokestatic  #96                 // Method std/pvec.from_array:(Ldawn/rt/Array;)Lstd/pvec$Vec;396      16: aload         13397      18: ldc2_w        #17                 // long 130822816777737l398      21: lstore        14399      23: astore        16400      25: aload         16401      27: instanceof    #16                 // class ev$Pack402      30: ifeq          71403      33: aload         16404      35: checkcast     #16                 // class ev$Pack405      38: getfield      #32                 // Field ev$Pack.key:J406      41: lload         14407      43: lcmp408      44: ifne          58409      47: aload         16410      49: checkcast     #16                 // class ev$Pack411      52: getfield      #36                 // Field ev$Pack.ev:Ljava/lang/Object;412      55: goto          81413      58: aload         16414      60: checkcast     #16                 // class ev$Pack415      63: getfield      #39                 // Field ev$Pack.outer:Ljava/lang/Object;416      66: astore        16417      68: goto          25418      71: new           #41                 // class dawn/rt/PanicError419      74: dup420      75: ldc           #43                 // String effect evidence missing: no pack entry for the atom this call site asked for421      77: invokespecial #46                 // Method dawn/rt/PanicError."<init>":(Ljava/lang/String;)V422      80: athrow423      81: checkcast     #48                 // class dawn$pkg$tileir/dev$ev$Dev424      84: invokestatic  #100                // Method dawn$pkg$tileir/dev.load_at:(Ldawn/rt/Tuple2;Lstd/pvec$Vec;Ldawn$pkg$tileir/dev$ev$Dev;)J425      87: aload         13426      89: ldc2_w        #17                 // long 130822816777737l427      92: lstore        17428      94: astore        19429      96: aload         19430      98: instanceof    #16                 // class ev$Pack431     101: ifeq          142432     104: aload         19433     106: checkcast     #16                 // class ev$Pack434     109: getfield      #32                 // Field ev$Pack.key:J435     112: lload         17436     114: lcmp437     115: ifne          129438     118: aload         19439     120: checkcast     #16                 // class ev$Pack440     123: getfield      #36                 // Field ev$Pack.ev:Ljava/lang/Object;441     126: goto          152442     129: aload         19443     131: checkcast     #16                 // class ev$Pack444     134: getfield      #39                 // Field ev$Pack.outer:Ljava/lang/Object;445     137: astore        19446     139: goto          96447     142: new           #41                 // class dawn/rt/PanicError448     145: dup449     146: ldc           #43                 // String effect evidence missing: no pack entry for the atom this call site asked for450     148: invokespecial #46                 // Method dawn/rt/PanicError."<init>":(Ljava/lang/String;)V451     151: athrow452     152: checkcast     #48                 // class dawn$pkg$tileir/dev$ev$Dev453     155: invokestatic  #1142               // Method dawn$pkg$tileir/dev.transpose:(JLdawn$pkg$tileir/dev$ev$Dev;)J454     158: ldc2_w        #166                // double 0.0d455     161: new           #16                 // class ev$Pack456     164: dup457     165: ldc2_w        #17                 // long 130822816777737l458     168: aload         13459     170: ldc2_w        #17                 // long 130822816777737l460     173: lstore        20461     175: astore        22462     177: aload         22463     179: instanceof    #16                 // class ev$Pack464     182: ifeq          223465     185: aload         22466     187: checkcast     #16                 // class ev$Pack467     190: getfield      #32                 // Field ev$Pack.key:J468     193: lload         20469     195: lcmp470     196: ifne          210471     199: aload         22472     201: checkcast     #16                 // class ev$Pack473     204: getfield      #36                 // Field ev$Pack.ev:Ljava/lang/Object;474     207: goto          233475     210: aload         22476     212: checkcast     #16                 // class ev$Pack477     215: getfield      #39                 // Field ev$Pack.outer:Ljava/lang/Object;478     218: astore        22479     220: goto          177480     223: new           #41                 // class dawn/rt/PanicError481     226: dup482     227: ldc           #43                 // String effect evidence missing: no pack entry for the atom this call site asked for483     229: invokespecial #46                 // Method dawn/rt/PanicError."<init>":(Ljava/lang/String;)V484     232: athrow485     233: checkcast     #48                 // class dawn$pkg$tileir/dev$ev$Dev486     236: getstatic     #24                 // Field dawn/rt/Unit.INSTANCE:Ldawn/rt/Unit;487     239: invokespecial #28                 // Method ev$Pack."<init>":(JLjava/lang/Object;Ljava/lang/Object;)V488     242: ldc2_w        #17                 // long 130822816777737l489     245: lstore        23490     247: astore        25491     249: aload         25492     251: instanceof    #16                 // class ev$Pack493     254: ifeq          295494     257: aload         25495     259: checkcast     #16                 // class ev$Pack496     262: getfield      #32                 // Field ev$Pack.key:J497     265: lload         23498     267: lcmp499     268: ifne          282500     271: aload         25501     273: checkcast     #16                 // class ev$Pack502     276: getfield      #36                 // Field ev$Pack.ev:Ljava/lang/Object;503     279: goto          305504     282: aload         25505     284: checkcast     #16                 // class ev$Pack506     287: getfield      #39                 // Field ev$Pack.outer:Ljava/lang/Object;507     290: astore        25508     292: goto          249509     295: new           #41                 // class dawn/rt/PanicError510     298: dup511     299: ldc           #43                 // String effect evidence missing: no pack entry for the atom this call site asked for512     301: invokespecial #46                 // Method dawn/rt/PanicError."<init>":(Ljava/lang/String;)V513     304: athrow514     305: checkcast     #48                 // class dawn$pkg$tileir/dev$ev$Dev515     308: invokestatic  #1187               // Method dawn$pkg$tileir/dev.dawn$impl$FromFloat$Tile$from_float:(DLdawn$pkg$tileir/dev$ev$Dev;)J516     311: getstatic     #177                // Field dawn/dict/main$dict$20911459306561$Float.INSTANCE:Ldawn/tr/dawn$pkg$tileir$dev$FloatDtype;517     314: aload         13518     316: ldc2_w        #17                 // long 130822816777737l519     319: lstore        26520     321: astore        28521     323: aload         28522     325: instanceof    #16                 // class ev$Pack523     328: ifeq          369524     331: aload         28525     333: checkcast     #16                 // class ev$Pack526     336: getfield      #32                 // Field ev$Pack.key:J527     339: lload         26528     341: lcmp529     342: ifne          356530     345: aload         28531     347: checkcast     #16                 // class ev$Pack532     350: getfield      #36                 // Field ev$Pack.ev:Ljava/lang/Object;533     353: goto          379534     356: aload         28535     358: checkcast     #16                 // class ev$Pack536     361: getfield      #39                 // Field ev$Pack.outer:Ljava/lang/Object;537     364: astore        28538     366: goto          323539     369: new           #41                 // class dawn/rt/PanicError540     372: dup541     373: ldc           #43                 // String effect evidence missing: no pack entry for the atom this call site asked for542     375: invokespecial #46                 // Method dawn/rt/PanicError."<init>":(Ljava/lang/String;)V543     378: athrow544     379: checkcast     #48                 // class dawn$pkg$tileir/dev$ev$Dev545     382: invokestatic  #455                // Method dawn$pkg$tileir/dev.mma:(JJJLjava/lang/Object;Ldawn$pkg$tileir/dev$ev$Dev;)J546     385: aload_3547     386: getstatic     #1192               // Field dawn/dict/main$dict$82204871448550$Float.INSTANCE:Ldawn/tr/std$gpu$ScalarDtype;548     389: aload         13549     391: ldc2_w        #17                 // long 130822816777737l550     394: lstore        29551     396: astore        31552     398: aload         31553     400: instanceof    #16                 // class ev$Pack554     403: ifeq          444555     406: aload         31556     408: checkcast     #16                 // class ev$Pack557     411: getfield      #32                 // Field ev$Pack.key:J558     414: lload         29559     416: lcmp560     417: ifne          431561     420: aload         31562     422: checkcast     #16                 // class ev$Pack563     425: getfield      #36                 // Field ev$Pack.ev:Ljava/lang/Object;564     428: goto          454565     431: aload         31566     433: checkcast     #16                 // class ev$Pack567     436: getfield      #39                 // Field ev$Pack.outer:Ljava/lang/Object;568     439: astore        31569     441: goto          398570     444: new           #41                 // class dawn/rt/PanicError571     447: dup572     448: ldc           #43                 // String effect evidence missing: no pack entry for the atom this call site asked for573     450: invokespecial #46                 // Method dawn/rt/PanicError."<init>":(Ljava/lang/String;)V574     453: athrow575     454: checkcast     #48                 // class dawn$pkg$tileir/dev$ev$Dev576     457: invokestatic  #1196               // Method dawn$pkg$tileir/dev.scalar:(Ldawn/rt/Tuple2;Ljava/lang/Object;Ldawn$pkg$tileir/dev$ev$Dev;)J577     460: new           #16                 // class ev$Pack578     463: dup579     464: ldc2_w        #17                 // long 130822816777737l580     467: aload         13581     469: ldc2_w        #17                 // long 130822816777737l582     472: lstore        32583     474: astore        34584     476: aload         34585     478: instanceof    #16                 // class ev$Pack586     481: ifeq          522587     484: aload         34588     486: checkcast     #16                 // class ev$Pack589     489: getfield      #32                 // Field ev$Pack.key:J590     492: lload         32591     494: lcmp592     495: ifne          509593     498: aload         34594     500: checkcast     #16                 // class ev$Pack595     503: getfield      #36                 // Field ev$Pack.ev:Ljava/lang/Object;596     506: goto          532597     509: aload         34598     511: checkcast     #16                 // class ev$Pack599     514: getfield      #39                 // Field ev$Pack.outer:Ljava/lang/Object;600     517: astore        34601     519: goto          476602     522: new           #41                 // class dawn/rt/PanicError603     525: dup604     526: ldc           #43                 // String effect evidence missing: no pack entry for the atom this call site asked for605     528: invokespecial #46                 // Method dawn/rt/PanicError."<init>":(Ljava/lang/String;)V606     531: athrow607     532: checkcast     #48                 // class dawn$pkg$tileir/dev$ev$Dev608     535: getstatic     #24                 // Field dawn/rt/Unit.INSTANCE:Ldawn/rt/Unit;609     538: invokespecial #28                 // Method ev$Pack."<init>":(JLjava/lang/Object;Ljava/lang/Object;)V610     541: ldc2_w        #17                 // long 130822816777737l611     544: lstore        35612     546: astore        37613     548: aload         37614     550: instanceof    #16                 // class ev$Pack615     553: ifeq          594616     556: aload         37617     558: checkcast     #16                 // class ev$Pack618     561: getfield      #32                 // Field ev$Pack.key:J619     564: lload         35620     566: lcmp621     567: ifne          581622     570: aload         37623     572: checkcast     #16                 // class ev$Pack624     575: getfield      #36                 // Field ev$Pack.ev:Ljava/lang/Object;625     578: goto          604626     581: aload         37627     583: checkcast     #16                 // class ev$Pack628     586: getfield      #39                 // Field ev$Pack.outer:Ljava/lang/Object;629     589: astore        37630     591: goto          548631     594: new           #41                 // class dawn/rt/PanicError632     597: dup633     598: ldc           #43                 // String effect evidence missing: no pack entry for the atom this call site asked for634     600: invokespecial #46                 // Method dawn/rt/PanicError."<init>":(Ljava/lang/String;)V635     603: athrow636     604: checkcast     #48                 // class dawn$pkg$tileir/dev$ev$Dev637     607: invokestatic  #214                // Method dawn$pkg$tileir/dev.dawn$impl$Mul$Tile$mul:(JJLdawn$pkg$tileir/dev$ev$Dev;)J638     610: lstore        38639     612: lload         4640     614: new           #16                 // class ev$Pack641     617: dup642     618: ldc2_w        #17                 // long 130822816777737l643     621: aload         13644     623: ldc2_w        #17                 // long 130822816777737l645     626: lstore        40646     628: astore        42647     630: aload         42648     632: instanceof    #16                 // class ev$Pack649     635: ifeq          676650     638: aload         42651     640: checkcast     #16                 // class ev$Pack652     643: getfield      #32                 // Field ev$Pack.key:J653     646: lload         40654     648: lcmp655     649: ifne          663656     652: aload         42657     654: checkcast     #16                 // class ev$Pack658     657: getfield      #36                 // Field ev$Pack.ev:Ljava/lang/Object;659     660: goto          686660     663: aload         42661     665: checkcast     #16                 // class ev$Pack662     668: getfield      #39                 // Field ev$Pack.outer:Ljava/lang/Object;663     671: astore        42664     673: goto          630665     676: new           #41                 // class dawn/rt/PanicError666     679: dup667     680: ldc           #43                 // String effect evidence missing: no pack entry for the atom this call site asked for668     682: invokespecial #46                 // Method dawn/rt/PanicError."<init>":(Ljava/lang/String;)V669     685: athrow670     686: checkcast     #48                 // class dawn$pkg$tileir/dev$ev$Dev671     689: getstatic     #24                 // Field dawn/rt/Unit.INSTANCE:Ldawn/rt/Unit;672     692: invokespecial #28                 // Method ev$Pack."<init>":(JLjava/lang/Object;Ljava/lang/Object;)V673     695: ldc2_w        #17                 // long 130822816777737l674     698: lstore        43675     700: astore        45676     702: aload         45677     704: instanceof    #16                 // class ev$Pack678     707: ifeq          748679     710: aload         45680     712: checkcast     #16                 // class ev$Pack681     715: getfield      #32                 // Field ev$Pack.key:J682     718: lload         43683     720: lcmp684     721: ifne          735685     724: aload         45686     726: checkcast     #16                 // class ev$Pack687     729: getfield      #36                 // Field ev$Pack.ev:Ljava/lang/Object;688     732: goto          758689     735: aload         45690     737: checkcast     #16                 // class ev$Pack691     740: getfield      #39                 // Field ev$Pack.outer:Ljava/lang/Object;692     743: astore        45693     745: goto          702694     748: new           #41                 // class dawn/rt/PanicError695     751: dup696     752: ldc           #43                 // String effect evidence missing: no pack entry for the atom this call site asked for697     754: invokespecial #46                 // Method dawn/rt/PanicError."<init>":(Ljava/lang/String;)V698     757: athrow699     758: checkcast     #48                 // class dawn$pkg$tileir/dev$ev$Dev700     761: invokestatic  #138                // Method dawn$pkg$tileir/dev.dawn$impl$StagedVar$Tile$var_get:(JLdawn$pkg$tileir/dev$ev$Dev;)J701     764: lstore        46702     766: lload         38703     768: lstore        48704     770: iconst_1705     771: istore        50706     773: lload         48707     775: invokestatic  #281                // Method dawn$pkg$tileir/dev.reduce_max$default$1:(J)J708     778: lstore        51709     780: lload         48710     782: lload         51711     784: iload         50712     786: aload         13713     788: ldc2_w        #17                 // long 130822816777737l714     791: lstore        53715     793: astore        55716     795: aload         55717     797: instanceof    #16                 // class ev$Pack718     800: ifeq          841719     803: aload         55720     805: checkcast     #16                 // class ev$Pack721     808: getfield      #32                 // Field ev$Pack.key:J722     811: lload         53723     813: lcmp724     814: ifne          828725     817: aload         55726     819: checkcast     #16                 // class ev$Pack727     822: getfield      #36                 // Field ev$Pack.ev:Ljava/lang/Object;728     825: goto          851729     828: aload         55730     830: checkcast     #16                 // class ev$Pack731     833: getfield      #39                 // Field ev$Pack.outer:Ljava/lang/Object;732     836: astore        55733     838: goto          795734     841: new           #41                 // class dawn/rt/PanicError735     844: dup736     845: ldc           #43                 // String effect evidence missing: no pack entry for the atom this call site asked for737     847: invokespecial #46                 // Method dawn/rt/PanicError."<init>":(Ljava/lang/String;)V738     850: athrow739     851: checkcast     #48                 // class dawn$pkg$tileir/dev$ev$Dev740     854: invokestatic  #287                // Method dawn$pkg$tileir/dev.reduce_max:(JJZLdawn$pkg$tileir/dev$ev$Dev;)J741     857: lstore        56742     859: lload         46743     861: lload         56744     863: invokestatic  #185                // Method dawn$pkg$tileir/dev.max$default$2:(JJ)Z745     866: istore        58746     868: lload         46747     870: lload         56748     872: iload         58749     874: aload         13750     876: ldc2_w        #17                 // long 130822816777737l751     879: lstore        59752     881: astore        61753     883: aload         61754     885: instanceof    #16                 // class ev$Pack755     888: ifeq          929756     891: aload         61757     893: checkcast     #16                 // class ev$Pack758     896: getfield      #32                 // Field ev$Pack.key:J759     899: lload         59760     901: lcmp761     902: ifne          916762     905: aload         61763     907: checkcast     #16                 // class ev$Pack764     910: getfield      #36                 // Field ev$Pack.ev:Ljava/lang/Object;765     913: goto          939766     916: aload         61767     918: checkcast     #16                 // class ev$Pack768     921: getfield      #39                 // Field ev$Pack.outer:Ljava/lang/Object;769     924: astore        61770     926: goto          883771     929: new           #41                 // class dawn/rt/PanicError772     932: dup773     933: ldc           #43                 // String effect evidence missing: no pack entry for the atom this call site asked for774     935: invokespecial #46                 // Method dawn/rt/PanicError."<init>":(Ljava/lang/String;)V775     938: athrow776     939: checkcast     #48                 // class dawn$pkg$tileir/dev$ev$Dev777     942: invokestatic  #189                // Method dawn$pkg$tileir/dev.max:(JJZLdawn$pkg$tileir/dev$ev$Dev;)J778     945: lstore        62779     947: lload         38780     949: lload         62781     951: new           #16                 // class ev$Pack782     954: dup783     955: ldc2_w        #17                 // long 130822816777737l784     958: aload         13785     960: ldc2_w        #17                 // long 130822816777737l786     963: lstore        64787     965: astore        66788     967: aload         66789     969: instanceof    #16                 // class ev$Pack790     972: ifeq          1013791     975: aload         66792     977: checkcast     #16                 // class ev$Pack793     980: getfield      #32                 // Field ev$Pack.key:J794     983: lload         64795     985: lcmp796     986: ifne          1000797     989: aload         66798     991: checkcast     #16                 // class ev$Pack799     994: getfield      #36                 // Field ev$Pack.ev:Ljava/lang/Object;800     997: goto          1023801    1000: aload         66802    1002: checkcast     #16                 // class ev$Pack803    1005: getfield      #39                 // Field ev$Pack.outer:Ljava/lang/Object;804    1008: astore        66805    1010: goto          967806    1013: new           #41                 // class dawn/rt/PanicError807    1016: dup808    1017: ldc           #43                 // String effect evidence missing: no pack entry for the atom this call site asked for809    1019: invokespecial #46                 // Method dawn/rt/PanicError."<init>":(Ljava/lang/String;)V810    1022: athrow811    1023: checkcast     #48                 // class dawn$pkg$tileir/dev$ev$Dev812    1026: getstatic     #24                 // Field dawn/rt/Unit.INSTANCE:Ldawn/rt/Unit;813    1029: invokespecial #28                 // Method ev$Pack."<init>":(JLjava/lang/Object;Ljava/lang/Object;)V814    1032: ldc2_w        #17                 // long 130822816777737l815    1035: lstore        67816    1037: astore        69817    1039: aload         69818    1041: instanceof    #16                 // class ev$Pack819    1044: ifeq          1085820    1047: aload         69821    1049: checkcast     #16                 // class ev$Pack822    1052: getfield      #32                 // Field ev$Pack.key:J823    1055: lload         67824    1057: lcmp825    1058: ifne          1072826    1061: aload         69827    1063: checkcast     #16                 // class ev$Pack828    1066: getfield      #36                 // Field ev$Pack.ev:Ljava/lang/Object;829    1069: goto          1095830    1072: aload         69831    1074: checkcast     #16                 // class ev$Pack832    1077: getfield      #39                 // Field ev$Pack.outer:Ljava/lang/Object;833    1080: astore        69834    1082: goto          1039835    1085: new           #41                 // class dawn/rt/PanicError836    1088: dup837    1089: ldc           #43                 // String effect evidence missing: no pack entry for the atom this call site asked for838    1091: invokespecial #46                 // Method dawn/rt/PanicError."<init>":(Ljava/lang/String;)V839    1094: athrow840    1095: checkcast     #48                 // class dawn$pkg$tileir/dev$ev$Dev841    1098: invokestatic  #233                // Method dawn$pkg$tileir/dev.dawn$impl$Sub$Tile$sub:(JJLdawn$pkg$tileir/dev$ev$Dev;)J842    1101: aload         13843    1103: ldc2_w        #17                 // long 130822816777737l844    1106: lstore        70845    1108: astore        72846    1110: aload         72847    1112: instanceof    #16                 // class ev$Pack848    1115: ifeq          1156849    1118: aload         72850    1120: checkcast     #16                 // class ev$Pack851    1123: getfield      #32                 // Field ev$Pack.key:J852    1126: lload         70853    1128: lcmp854    1129: ifne          1143855    1132: aload         72856    1134: checkcast     #16                 // class ev$Pack857    1137: getfield      #36                 // Field ev$Pack.ev:Ljava/lang/Object;858    1140: goto          1166859    1143: aload         72860    1145: checkcast     #16                 // class ev$Pack861    1148: getfield      #39                 // Field ev$Pack.outer:Ljava/lang/Object;862    1151: astore        72863    1153: goto          1110864    1156: new           #41                 // class dawn/rt/PanicError865    1159: dup866    1160: ldc           #43                 // String effect evidence missing: no pack entry for the atom this call site asked for867    1162: invokespecial #46                 // Method dawn/rt/PanicError."<init>":(Ljava/lang/String;)V868    1165: athrow869    1166: checkcast     #48                 // class dawn$pkg$tileir/dev$ev$Dev870    1169: invokestatic  #290                // Method dawn$pkg$tileir/dev.exp:(JLdawn$pkg$tileir/dev$ev$Dev;)J871    1172: lstore        73872    1174: lload         4873    1176: new           #16                 // class ev$Pack874    1179: dup875    1180: ldc2_w        #17                 // long 130822816777737l876    1183: aload         13877    1185: ldc2_w        #17                 // long 130822816777737l878    1188: lstore        75879    1190: astore        77880    1192: aload         77881    1194: instanceof    #16                 // class ev$Pack882    1197: ifeq          1238883    1200: aload         77884    1202: checkcast     #16                 // class ev$Pack885    1205: getfield      #32                 // Field ev$Pack.key:J886    1208: lload         75887    1210: lcmp888    1211: ifne          1225889    1214: aload         77890    1216: checkcast     #16                 // class ev$Pack891    1219: getfield      #36                 // Field ev$Pack.ev:Ljava/lang/Object;892    1222: goto          1248893    1225: aload         77894    1227: checkcast     #16                 // class ev$Pack895    1230: getfield      #39                 // Field ev$Pack.outer:Ljava/lang/Object;896    1233: astore        77897    1235: goto          1192898    1238: new           #41                 // class dawn/rt/PanicError899    1241: dup900    1242: ldc           #43                 // String effect evidence missing: no pack entry for the atom this call site asked for901    1244: invokespecial #46                 // Method dawn/rt/PanicError."<init>":(Ljava/lang/String;)V902    1247: athrow903    1248: checkcast     #48                 // class dawn$pkg$tileir/dev$ev$Dev904    1251: getstatic     #24                 // Field dawn/rt/Unit.INSTANCE:Ldawn/rt/Unit;905    1254: invokespecial #28                 // Method ev$Pack."<init>":(JLjava/lang/Object;Ljava/lang/Object;)V906    1257: ldc2_w        #17                 // long 130822816777737l907    1260: lstore        78908    1262: astore        80909    1264: aload         80910    1266: instanceof    #16                 // class ev$Pack911    1269: ifeq          1310912    1272: aload         80913    1274: checkcast     #16                 // class ev$Pack914    1277: getfield      #32                 // Field ev$Pack.key:J915    1280: lload         78916    1282: lcmp917    1283: ifne          1297918    1286: aload         80919    1288: checkcast     #16                 // class ev$Pack920    1291: getfield      #36                 // Field ev$Pack.ev:Ljava/lang/Object;921    1294: goto          1320922    1297: aload         80923    1299: checkcast     #16                 // class ev$Pack924    1302: getfield      #39                 // Field ev$Pack.outer:Ljava/lang/Object;925    1305: astore        80926    1307: goto          1264927    1310: new           #41                 // class dawn/rt/PanicError928    1313: dup929    1314: ldc           #43                 // String effect evidence missing: no pack entry for the atom this call site asked for930    1316: invokespecial #46                 // Method dawn/rt/PanicError."<init>":(Ljava/lang/String;)V931    1319: athrow932    1320: checkcast     #48                 // class dawn$pkg$tileir/dev$ev$Dev933    1323: invokestatic  #138                // Method dawn$pkg$tileir/dev.dawn$impl$StagedVar$Tile$var_get:(JLdawn$pkg$tileir/dev$ev$Dev;)J934    1326: lload         62935    1328: new           #16                 // class ev$Pack936    1331: dup937    1332: ldc2_w        #17                 // long 130822816777737l938    1335: aload         13939    1337: ldc2_w        #17                 // long 130822816777737l940    1340: lstore        81941    1342: astore        83942    1344: aload         83943    1346: instanceof    #16                 // class ev$Pack944    1349: ifeq          1390945    1352: aload         83946    1354: checkcast     #16                 // class ev$Pack947    1357: getfield      #32                 // Field ev$Pack.key:J948    1360: lload         81949    1362: lcmp950    1363: ifne          1377951    1366: aload         83952    1368: checkcast     #16                 // class ev$Pack953    1371: getfield      #36                 // Field ev$Pack.ev:Ljava/lang/Object;954    1374: goto          1400955    1377: aload         83956    1379: checkcast     #16                 // class ev$Pack957    1382: getfield      #39                 // Field ev$Pack.outer:Ljava/lang/Object;958    1385: astore        83959    1387: goto          1344960    1390: new           #41                 // class dawn/rt/PanicError961    1393: dup962    1394: ldc           #43                 // String effect evidence missing: no pack entry for the atom this call site asked for963    1396: invokespecial #46                 // Method dawn/rt/PanicError."<init>":(Ljava/lang/String;)V964    1399: athrow965    1400: checkcast     #48                 // class dawn$pkg$tileir/dev$ev$Dev966    1403: getstatic     #24                 // Field dawn/rt/Unit.INSTANCE:Ldawn/rt/Unit;967    1406: invokespecial #28                 // Method ev$Pack."<init>":(JLjava/lang/Object;Ljava/lang/Object;)V968    1409: ldc2_w        #17                 // long 130822816777737l969    1412: lstore        84970    1414: astore        86971    1416: aload         86972    1418: instanceof    #16                 // class ev$Pack973    1421: ifeq          1462974    1424: aload         86975    1426: checkcast     #16                 // class ev$Pack976    1429: getfield      #32                 // Field ev$Pack.key:J977    1432: lload         84978    1434: lcmp979    1435: ifne          1449980    1438: aload         86981    1440: checkcast     #16                 // class ev$Pack982    1443: getfield      #36                 // Field ev$Pack.ev:Ljava/lang/Object;983    1446: goto          1472984    1449: aload         86985    1451: checkcast     #16                 // class ev$Pack986    1454: getfield      #39                 // Field ev$Pack.outer:Ljava/lang/Object;987    1457: astore        86988    1459: goto          1416989    1462: new           #41                 // class dawn/rt/PanicError990    1465: dup991    1466: ldc           #43                 // String effect evidence missing: no pack entry for the atom this call site asked for992    1468: invokespecial #46                 // Method dawn/rt/PanicError."<init>":(Ljava/lang/String;)V993    1471: athrow994    1472: checkcast     #48                 // class dawn$pkg$tileir/dev$ev$Dev995    1475: invokestatic  #233                // Method dawn$pkg$tileir/dev.dawn$impl$Sub$Tile$sub:(JJLdawn$pkg$tileir/dev$ev$Dev;)J996    1478: aload         13997    1480: ldc2_w        #17                 // long 130822816777737l998    1483: lstore        87999    1485: astore        891000    1487: aload         891001    1489: instanceof    #16                 // class ev$Pack1002    1492: ifeq          15331003    1495: aload         891004    1497: checkcast     #16                 // class ev$Pack1005    1500: getfield      #32                 // Field ev$Pack.key:J1006    1503: lload         871007    1505: lcmp1008    1506: ifne          15201009    1509: aload         891010    1511: checkcast     #16                 // class ev$Pack1011    1514: getfield      #36                 // Field ev$Pack.ev:Ljava/lang/Object;1012    1517: goto          15431013    1520: aload         891014    1522: checkcast     #16                 // class ev$Pack1015    1525: getfield      #39                 // Field ev$Pack.outer:Ljava/lang/Object;1016    1528: astore        891017    1530: goto          14871018    1533: new           #41                 // class dawn/rt/PanicError1019    1536: dup1020    1537: ldc           #43                 // String effect evidence missing: no pack entry for the atom this call site asked for1021    1539: invokespecial #46                 // Method dawn/rt/PanicError."<init>":(Ljava/lang/String;)V1022    1542: athrow1023    1543: checkcast     #48                 // class dawn$pkg$tileir/dev$ev$Dev1024    1546: invokestatic  #290                // Method dawn$pkg$tileir/dev.exp:(JLdawn$pkg$tileir/dev$ev$Dev;)J1025    1549: lstore        901026    1551: lload         61027    1553: lload         61028    1555: new           #16                 // class ev$Pack1029    1558: dup1030    1559: ldc2_w        #17                 // long 130822816777737l1031    1562: aload         131032    1564: ldc2_w        #17                 // long 130822816777737l1033    1567: lstore        921034    1569: astore        941035    1571: aload         941036    1573: instanceof    #16                 // class ev$Pack1037    1576: ifeq          16171038    1579: aload         941039    1581: checkcast     #16                 // class ev$Pack1040    1584: getfield      #32                 // Field ev$Pack.key:J1041    1587: lload         921042    1589: lcmp1043    1590: ifne          16041044    1593: aload         941045    1595: checkcast     #16                 // class ev$Pack1046    1598: getfield      #36                 // Field ev$Pack.ev:Ljava/lang/Object;1047    1601: goto          16271048    1604: aload         941049    1606: checkcast     #16                 // class ev$Pack1050    1609: getfield      #39                 // Field ev$Pack.outer:Ljava/lang/Object;1051    1612: astore        941052    1614: goto          15711053    1617: new           #41                 // class dawn/rt/PanicError1054    1620: dup1055    1621: ldc           #43                 // String effect evidence missing: no pack entry for the atom this call site asked for1056    1623: invokespecial #46                 // Method dawn/rt/PanicError."<init>":(Ljava/lang/String;)V1057    1626: athrow1058    1627: checkcast     #48                 // class dawn$pkg$tileir/dev$ev$Dev1059    1630: getstatic     #24                 // Field dawn/rt/Unit.INSTANCE:Ldawn/rt/Unit;1060    1633: invokespecial #28                 // Method ev$Pack."<init>":(JLjava/lang/Object;Ljava/lang/Object;)V1061    1636: ldc2_w        #17                 // long 130822816777737l1062    1639: lstore        951063    1641: astore        971064    1643: aload         971065    1645: instanceof    #16                 // class ev$Pack1066    1648: ifeq          16891067    1651: aload         971068    1653: checkcast     #16                 // class ev$Pack1069    1656: getfield      #32                 // Field ev$Pack.key:J1070    1659: lload         951071    1661: lcmp1072    1662: ifne          16761073    1665: aload         971074    1667: checkcast     #16                 // class ev$Pack1075    1670: getfield      #36                 // Field ev$Pack.ev:Ljava/lang/Object;1076    1673: goto          16991077    1676: aload         971078    1678: checkcast     #16                 // class ev$Pack1079    1681: getfield      #39                 // Field ev$Pack.outer:Ljava/lang/Object;1080    1684: astore        971081    1686: goto          16431082    1689: new           #41                 // class dawn/rt/PanicError1083    1692: dup1084    1693: ldc           #43                 // String effect evidence missing: no pack entry for the atom this call site asked for1085    1695: invokespecial #46                 // Method dawn/rt/PanicError."<init>":(Ljava/lang/String;)V1086    1698: athrow1087    1699: checkcast     #48                 // class dawn$pkg$tileir/dev$ev$Dev1088    1702: invokestatic  #138                // Method dawn$pkg$tileir/dev.dawn$impl$StagedVar$Tile$var_get:(JLdawn$pkg$tileir/dev$ev$Dev;)J1089    1705: lload         901090    1707: new           #16                 // class ev$Pack1091    1710: dup1092    1711: ldc2_w        #17                 // long 130822816777737l1093    1714: aload         131094    1716: ldc2_w        #17                 // long 130822816777737l1095    1719: lstore        981096    1721: astore        1001097    1723: aload         1001098    1725: instanceof    #16                 // class ev$Pack1099    1728: ifeq          17691100    1731: aload         1001101    1733: checkcast     #16                 // class ev$Pack1102    1736: getfield      #32                 // Field ev$Pack.key:J1103    1739: lload         981104    1741: lcmp1105    1742: ifne          17561106    1745: aload         1001107    1747: checkcast     #16                 // class ev$Pack1108    1750: getfield      #36                 // Field ev$Pack.ev:Ljava/lang/Object;1109    1753: goto          17791110    1756: aload         1001111    1758: checkcast     #16                 // class ev$Pack1112    1761: getfield      #39                 // Field ev$Pack.outer:Ljava/lang/Object;1113    1764: astore        1001114    1766: goto          17231115    1769: new           #41                 // class dawn/rt/PanicError1116    1772: dup1117    1773: ldc           #43                 // String effect evidence missing: no pack entry for the atom this call site asked for1118    1775: invokespecial #46                 // Method dawn/rt/PanicError."<init>":(Ljava/lang/String;)V1119    1778: athrow1120    1779: checkcast     #48                 // class dawn$pkg$tileir/dev$ev$Dev1121    1782: getstatic     #24                 // Field dawn/rt/Unit.INSTANCE:Ldawn/rt/Unit;1122    1785: invokespecial #28                 // Method ev$Pack."<init>":(JLjava/lang/Object;Ljava/lang/Object;)V1123    1788: ldc2_w        #17                 // long 130822816777737l1124    1791: lstore        1011125    1793: astore        1031126    1795: aload         1031127    1797: instanceof    #16                 // class ev$Pack1128    1800: ifeq          18411129    1803: aload         1031130    1805: checkcast     #16                 // class ev$Pack1131    1808: getfield      #32                 // Field ev$Pack.key:J1132    1811: lload         1011133    1813: lcmp1134    1814: ifne          18281135    1817: aload         1031136    1819: checkcast     #16                 // class ev$Pack1137    1822: getfield      #36                 // Field ev$Pack.ev:Ljava/lang/Object;1138    1825: goto          18511139    1828: aload         1031140    1830: checkcast     #16                 // class ev$Pack1141    1833: getfield      #39                 // Field ev$Pack.outer:Ljava/lang/Object;1142    1836: astore        1031143    1838: goto          17951144    1841: new           #41                 // class dawn/rt/PanicError1145    1844: dup1146    1845: ldc           #43                 // String effect evidence missing: no pack entry for the atom this call site asked for1147    1847: invokespecial #46                 // Method dawn/rt/PanicError."<init>":(Ljava/lang/String;)V1148    1850: athrow1149    1851: checkcast     #48                 // class dawn$pkg$tileir/dev$ev$Dev1150    1854: invokestatic  #214                // Method dawn$pkg$tileir/dev.dawn$impl$Mul$Tile$mul:(JJLdawn$pkg$tileir/dev$ev$Dev;)J1151    1857: lload         731152    1859: lstore        1041153    1861: iconst_11154    1862: istore        1061155    1864: lload         1041156    1866: invokestatic  #268                // Method dawn$pkg$tileir/dev.reduce_sum$default$1:(J)J1157    1869: lstore        1071158    1871: lload         1041159    1873: lload         1071160    1875: iload         1061161    1877: aload         131162    1879: ldc2_w        #17                 // long 130822816777737l1163    1882: lstore        1091164    1884: astore        1111165    1886: aload         1111166    1888: instanceof    #16                 // class ev$Pack1167    1891: ifeq          19321168    1894: aload         1111169    1896: checkcast     #16                 // class ev$Pack1170    1899: getfield      #32                 // Field ev$Pack.key:J1171    1902: lload         1091172    1904: lcmp1173    1905: ifne          19191174    1908: aload         1111175    1910: checkcast     #16                 // class ev$Pack1176    1913: getfield      #36                 // Field ev$Pack.ev:Ljava/lang/Object;1177    1916: goto          19421178    1919: aload         1111179    1921: checkcast     #16                 // class ev$Pack1180    1924: getfield      #39                 // Field ev$Pack.outer:Ljava/lang/Object;1181    1927: astore        1111182    1929: goto          18861183    1932: new           #41                 // class dawn/rt/PanicError1184    1935: dup1185    1936: ldc           #43                 // String effect evidence missing: no pack entry for the atom this call site asked for1186    1938: invokespecial #46                 // Method dawn/rt/PanicError."<init>":(Ljava/lang/String;)V1187    1941: athrow1188    1942: checkcast     #48                 // class dawn$pkg$tileir/dev$ev$Dev1189    1945: invokestatic  #274                // Method dawn$pkg$tileir/dev.reduce_sum:(JJZLdawn$pkg$tileir/dev$ev$Dev;)J1190    1948: new           #16                 // class ev$Pack1191    1951: dup1192    1952: ldc2_w        #17                 // long 130822816777737l1193    1955: aload         131194    1957: ldc2_w        #17                 // long 130822816777737l1195    1960: lstore        1121196    1962: astore        1141197    1964: aload         1141198    1966: instanceof    #16                 // class ev$Pack1199    1969: ifeq          20101200    1972: aload         1141201    1974: checkcast     #16                 // class ev$Pack1202    1977: getfield      #32                 // Field ev$Pack.key:J1203    1980: lload         1121204    1982: lcmp1205    1983: ifne          19971206    1986: aload         1141207    1988: checkcast     #16                 // class ev$Pack1208    1991: getfield      #36                 // Field ev$Pack.ev:Ljava/lang/Object;1209    1994: goto          20201210    1997: aload         1141211    1999: checkcast     #16                 // class ev$Pack1212    2002: getfield      #39                 // Field ev$Pack.outer:Ljava/lang/Object;1213    2005: astore        1141214    2007: goto          19641215    2010: new           #41                 // class dawn/rt/PanicError1216    2013: dup1217    2014: ldc           #43                 // String effect evidence missing: no pack entry for the atom this call site asked for1218    2016: invokespecial #46                 // Method dawn/rt/PanicError."<init>":(Ljava/lang/String;)V1219    2019: athrow1220    2020: checkcast     #48                 // class dawn$pkg$tileir/dev$ev$Dev1221    2023: getstatic     #24                 // Field dawn/rt/Unit.INSTANCE:Ldawn/rt/Unit;1222    2026: invokespecial #28                 // Method ev$Pack."<init>":(JLjava/lang/Object;Ljava/lang/Object;)V1223    2029: ldc2_w        #17                 // long 130822816777737l1224    2032: lstore        1151225    2034: astore        1171226    2036: aload         1171227    2038: instanceof    #16                 // class ev$Pack1228    2041: ifeq          20821229    2044: aload         1171230    2046: checkcast     #16                 // class ev$Pack1231    2049: getfield      #32                 // Field ev$Pack.key:J1232    2052: lload         1151233    2054: lcmp1234    2055: ifne          20691235    2058: aload         1171236    2060: checkcast     #16                 // class ev$Pack1237    2063: getfield      #36                 // Field ev$Pack.ev:Ljava/lang/Object;1238    2066: goto          20921239    2069: aload         1171240    2071: checkcast     #16                 // class ev$Pack1241    2074: getfield      #39                 // Field ev$Pack.outer:Ljava/lang/Object;1242    2077: astore        1171243    2079: goto          20361244    2082: new           #41                 // class dawn/rt/PanicError1245    2085: dup1246    2086: ldc           #43                 // String effect evidence missing: no pack entry for the atom this call site asked for1247    2088: invokespecial #46                 // Method dawn/rt/PanicError."<init>":(Ljava/lang/String;)V1248    2091: athrow1249    2092: checkcast     #48                 // class dawn$pkg$tileir/dev$ev$Dev1250    2095: invokestatic  #52                 // Method dawn$pkg$tileir/dev.dawn$impl$Add$Tile$add:(JJLdawn$pkg$tileir/dev$ev$Dev;)J1251    2098: new           #16                 // class ev$Pack1252    2101: dup1253    2102: ldc2_w        #17                 // long 130822816777737l1254    2105: aload         131255    2107: ldc2_w        #17                 // long 130822816777737l1256    2110: lstore        1181257    2112: astore        1201258    2114: aload         1201259    2116: instanceof    #16                 // class ev$Pack1260    2119: ifeq          21601261    2122: aload         1201262    2124: checkcast     #16                 // class ev$Pack1263    2127: getfield      #32                 // Field ev$Pack.key:J1264    2130: lload         1181265    2132: lcmp1266    2133: ifne          21471267    2136: aload         1201268    2138: checkcast     #16                 // class ev$Pack1269    2141: getfield      #36                 // Field ev$Pack.ev:Ljava/lang/Object;1270    2144: goto          21701271    2147: aload         1201272    2149: checkcast     #16                 // class ev$Pack1273    2152: getfield      #39                 // Field ev$Pack.outer:Ljava/lang/Object;1274    2155: astore        1201275    2157: goto          21141276    2160: new           #41                 // class dawn/rt/PanicError1277    2163: dup1278    2164: ldc           #43                 // String effect evidence missing: no pack entry for the atom this call site asked for1279    2166: invokespecial #46                 // Method dawn/rt/PanicError."<init>":(Ljava/lang/String;)V1280    2169: athrow1281    2170: checkcast     #48                 // class dawn$pkg$tileir/dev$ev$Dev1282    2173: getstatic     #24                 // Field dawn/rt/Unit.INSTANCE:Ldawn/rt/Unit;1283    2176: invokespecial #28                 // Method ev$Pack."<init>":(JLjava/lang/Object;Ljava/lang/Object;)V1284    2179: ldc2_w        #17                 // long 130822816777737l1285    2182: lstore        1211286    2184: astore        1231287    2186: aload         1231288    2188: instanceof    #16                 // class ev$Pack1289    2191: ifeq          22321290    2194: aload         1231291    2196: checkcast     #16                 // class ev$Pack1292    2199: getfield      #32                 // Field ev$Pack.key:J1293    2202: lload         1211294    2204: lcmp1295    2205: ifne          22191296    2208: aload         1231297    2210: checkcast     #16                 // class ev$Pack1298    2213: getfield      #36                 // Field ev$Pack.ev:Ljava/lang/Object;1299    2216: goto          22421300    2219: aload         1231301    2221: checkcast     #16                 // class ev$Pack1302    2224: getfield      #39                 // Field ev$Pack.outer:Ljava/lang/Object;1303    2227: astore        1231304    2229: goto          21861305    2232: new           #41                 // class dawn/rt/PanicError1306    2235: dup1307    2236: ldc           #43                 // String effect evidence missing: no pack entry for the atom this call site asked for1308    2238: invokespecial #46                 // Method dawn/rt/PanicError."<init>":(Ljava/lang/String;)V1309    2241: athrow1310    2242: checkcast     #48                 // class dawn$pkg$tileir/dev$ev$Dev1311    2245: invokestatic  #157                // Method dawn$pkg$tileir/dev.dawn$impl$StagedVar$Tile$var_set:(JJLdawn$pkg$tileir/dev$ev$Dev;)Ldawn/rt/Unit;1312    2248: pop1313    2249: lload         81314    2251: lload         731315    2253: aload         101316    2255: invokestatic  #80                 // Method dawn/rt/Array.array_new:()Ldawn/rt/Array;1317    2258: lload         111318    2260: invokestatic  #86                 // Method java/lang/Long.valueOf:(J)Ljava/lang/Long;1319    2263: invokestatic  #90                 // Method dawn/rt/Array.array_push:(Ldawn/rt/Array;Ljava/lang/Object;)Ldawn/rt/Array;1320    2266: invokestatic  #96                 // Method std/pvec.from_array:(Ldawn/rt/Array;)Lstd/pvec$Vec;1321    2269: aload         131322    2271: ldc2_w        #17                 // long 130822816777737l1323    2274: lstore        1241324    2276: astore        1261325    2278: aload         1261326    2280: instanceof    #16                 // class ev$Pack1327    2283: ifeq          23241328    2286: aload         1261329    2288: checkcast     #16                 // class ev$Pack1330    2291: getfield      #32                 // Field ev$Pack.key:J1331    2294: lload         1241332    2296: lcmp1333    2297: ifne          23111334    2300: aload         1261335    2302: checkcast     #16                 // class ev$Pack1336    2305: getfield      #36                 // Field ev$Pack.ev:Ljava/lang/Object;1337    2308: goto          23341338    2311: aload         1261339    2313: checkcast     #16                 // class ev$Pack1340    2316: getfield      #39                 // Field ev$Pack.outer:Ljava/lang/Object;1341    2319: astore        1261342    2321: goto          22781343    2324: new           #41                 // class dawn/rt/PanicError1344    2327: dup1345    2328: ldc           #43                 // String effect evidence missing: no pack entry for the atom this call site asked for1346    2330: invokespecial #46                 // Method dawn/rt/PanicError."<init>":(Ljava/lang/String;)V1347    2333: athrow1348    2334: checkcast     #48                 // class dawn$pkg$tileir/dev$ev$Dev1349    2337: invokestatic  #100                // Method dawn$pkg$tileir/dev.load_at:(Ldawn/rt/Tuple2;Lstd/pvec$Vec;Ldawn$pkg$tileir/dev$ev$Dev;)J1350    2340: lload         81351    2342: new           #16                 // class ev$Pack1352    2345: dup1353    2346: ldc2_w        #17                 // long 130822816777737l1354    2349: aload         131355    2351: ldc2_w        #17                 // long 130822816777737l1356    2354: lstore        1271357    2356: astore        1291358    2358: aload         1291359    2360: instanceof    #16                 // class ev$Pack1360    2363: ifeq          24041361    2366: aload         1291362    2368: checkcast     #16                 // class ev$Pack1363    2371: getfield      #32                 // Field ev$Pack.key:J1364    2374: lload         1271365    2376: lcmp1366    2377: ifne          23911367    2380: aload         1291368    2382: checkcast     #16                 // class ev$Pack1369    2385: getfield      #36                 // Field ev$Pack.ev:Ljava/lang/Object;1370    2388: goto          24141371    2391: aload         1291372    2393: checkcast     #16                 // class ev$Pack1373    2396: getfield      #39                 // Field ev$Pack.outer:Ljava/lang/Object;1374    2399: astore        1291375    2401: goto          23581376    2404: new           #41                 // class dawn/rt/PanicError1377    2407: dup1378    2408: ldc           #43                 // String effect evidence missing: no pack entry for the atom this call site asked for1379    2410: invokespecial #46                 // Method dawn/rt/PanicError."<init>":(Ljava/lang/String;)V1380    2413: athrow1381    2414: checkcast     #48                 // class dawn$pkg$tileir/dev$ev$Dev1382    2417: getstatic     #24                 // Field dawn/rt/Unit.INSTANCE:Ldawn/rt/Unit;1383    2420: invokespecial #28                 // Method ev$Pack."<init>":(JLjava/lang/Object;Ljava/lang/Object;)V1384    2423: ldc2_w        #17                 // long 130822816777737l1385    2426: lstore        1301386    2428: astore        1321387    2430: aload         1321388    2432: instanceof    #16                 // class ev$Pack1389    2435: ifeq          24761390    2438: aload         1321391    2440: checkcast     #16                 // class ev$Pack1392    2443: getfield      #32                 // Field ev$Pack.key:J1393    2446: lload         1301394    2448: lcmp1395    2449: ifne          24631396    2452: aload         1321397    2454: checkcast     #16                 // class ev$Pack1398    2457: getfield      #36                 // Field ev$Pack.ev:Ljava/lang/Object;1399    2460: goto          24861400    2463: aload         1321401    2465: checkcast     #16                 // class ev$Pack1402    2468: getfield      #39                 // Field ev$Pack.outer:Ljava/lang/Object;1403    2471: astore        1321404    2473: goto          24301405    2476: new           #41                 // class dawn/rt/PanicError1406    2479: dup1407    2480: ldc           #43                 // String effect evidence missing: no pack entry for the atom this call site asked for1408    2482: invokespecial #46                 // Method dawn/rt/PanicError."<init>":(Ljava/lang/String;)V1409    2485: athrow1410    2486: checkcast     #48                 // class dawn$pkg$tileir/dev$ev$Dev1411    2489: invokestatic  #138                // Method dawn$pkg$tileir/dev.dawn$impl$StagedVar$Tile$var_get:(JLdawn$pkg$tileir/dev$ev$Dev;)J1412    2492: lload         901413    2494: new           #16                 // class ev$Pack1414    2497: dup1415    2498: ldc2_w        #17                 // long 130822816777737l1416    2501: aload         131417    2503: ldc2_w        #17                 // long 130822816777737l1418    2506: lstore        1331419    2508: astore        1351420    2510: aload         1351421    2512: instanceof    #16                 // class ev$Pack1422    2515: ifeq          25561423    2518: aload         1351424    2520: checkcast     #16                 // class ev$Pack1425    2523: getfield      #32                 // Field ev$Pack.key:J1426    2526: lload         1331427    2528: lcmp1428    2529: ifne          25431429    2532: aload         1351430    2534: checkcast     #16                 // class ev$Pack1431    2537: getfield      #36                 // Field ev$Pack.ev:Ljava/lang/Object;1432    2540: goto          25661433    2543: aload         1351434    2545: checkcast     #16                 // class ev$Pack1435    2548: getfield      #39                 // Field ev$Pack.outer:Ljava/lang/Object;1436    2551: astore        1351437    2553: goto          25101438    2556: new           #41                 // class dawn/rt/PanicError1439    2559: dup1440    2560: ldc           #43                 // String effect evidence missing: no pack entry for the atom this call site asked for1441    2562: invokespecial #46                 // Method dawn/rt/PanicError."<init>":(Ljava/lang/String;)V1442    2565: athrow1443    2566: checkcast     #48                 // class dawn$pkg$tileir/dev$ev$Dev1444    2569: getstatic     #24                 // Field dawn/rt/Unit.INSTANCE:Ldawn/rt/Unit;1445    2572: invokespecial #28                 // Method ev$Pack."<init>":(JLjava/lang/Object;Ljava/lang/Object;)V1446    2575: ldc2_w        #17                 // long 130822816777737l1447    2578: lstore        1361448    2580: astore        1381449    2582: aload         1381450    2584: instanceof    #16                 // class ev$Pack1451    2587: ifeq          26281452    2590: aload         1381453    2592: checkcast     #16                 // class ev$Pack1454    2595: getfield      #32                 // Field ev$Pack.key:J1455    2598: lload         1361456    2600: lcmp1457    2601: ifne          26151458    2604: aload         1381459    2606: checkcast     #16                 // class ev$Pack1460    2609: getfield      #36                 // Field ev$Pack.ev:Ljava/lang/Object;1461    2612: goto          26381462    2615: aload         1381463    2617: checkcast     #16                 // class ev$Pack1464    2620: getfield      #39                 // Field ev$Pack.outer:Ljava/lang/Object;1465    2623: astore        1381466    2625: goto          25821467    2628: new           #41                 // class dawn/rt/PanicError1468    2631: dup1469    2632: ldc           #43                 // String effect evidence missing: no pack entry for the atom this call site asked for1470    2634: invokespecial #46                 // Method dawn/rt/PanicError."<init>":(Ljava/lang/String;)V1471    2637: athrow1472    2638: checkcast     #48                 // class dawn$pkg$tileir/dev$ev$Dev1473    2641: invokestatic  #214                // Method dawn$pkg$tileir/dev.dawn$impl$Mul$Tile$mul:(JJLdawn$pkg$tileir/dev$ev$Dev;)J1474    2644: getstatic     #177                // Field dawn/dict/main$dict$20911459306561$Float.INSTANCE:Ldawn/tr/dawn$pkg$tileir$dev$FloatDtype;1475    2647: aload         131476    2649: ldc2_w        #17                 // long 130822816777737l1477    2652: lstore        1391478    2654: astore        1411479    2656: aload         1411480    2658: instanceof    #16                 // class ev$Pack1481    2661: ifeq          27021482    2664: aload         1411483    2666: checkcast     #16                 // class ev$Pack1484    2669: getfield      #32                 // Field ev$Pack.key:J1485    2672: lload         1391486    2674: lcmp1487    2675: ifne          26891488    2678: aload         1411489    2680: checkcast     #16                 // class ev$Pack1490    2683: getfield      #36                 // Field ev$Pack.ev:Ljava/lang/Object;1491    2686: goto          27121492    2689: aload         1411493    2691: checkcast     #16                 // class ev$Pack1494    2694: getfield      #39                 // Field ev$Pack.outer:Ljava/lang/Object;1495    2697: astore        1411496    2699: goto          26561497    2702: new           #41                 // class dawn/rt/PanicError1498    2705: dup1499    2706: ldc           #43                 // String effect evidence missing: no pack entry for the atom this call site asked for1500    2708: invokespecial #46                 // Method dawn/rt/PanicError."<init>":(Ljava/lang/String;)V1501    2711: athrow1502    2712: checkcast     #48                 // class dawn$pkg$tileir/dev$ev$Dev1503    2715: invokestatic  #455                // Method dawn$pkg$tileir/dev.mma:(JJJLjava/lang/Object;Ldawn$pkg$tileir/dev$ev$Dev;)J1504    2718: new           #16                 // class ev$Pack1505    2721: dup1506    2722: ldc2_w        #17                 // long 130822816777737l1507    2725: aload         131508    2727: ldc2_w        #17                 // long 130822816777737l1509    2730: lstore        1421510    2732: astore        1441511    2734: aload         1441512    2736: instanceof    #16                 // class ev$Pack1513    2739: ifeq          27801514    2742: aload         1441515    2744: checkcast     #16                 // class ev$Pack1516    2747: getfield      #32                 // Field ev$Pack.key:J1517    2750: lload         1421518    2752: lcmp1519    2753: ifne          27671520    2756: aload         1441521    2758: checkcast     #16                 // class ev$Pack1522    2761: getfield      #36                 // Field ev$Pack.ev:Ljava/lang/Object;1523    2764: goto          27901524    2767: aload         1441525    2769: checkcast     #16                 // class ev$Pack1526    2772: getfield      #39                 // Field ev$Pack.outer:Ljava/lang/Object;1527    2775: astore        1441528    2777: goto          27341529    2780: new           #41                 // class dawn/rt/PanicError1530    2783: dup1531    2784: ldc           #43                 // String effect evidence missing: no pack entry for the atom this call site asked for1532    2786: invokespecial #46                 // Method dawn/rt/PanicError."<init>":(Ljava/lang/String;)V1533    2789: athrow1534    2790: checkcast     #48                 // class dawn$pkg$tileir/dev$ev$Dev1535    2793: getstatic     #24                 // Field dawn/rt/Unit.INSTANCE:Ldawn/rt/Unit;1536    2796: invokespecial #28                 // Method ev$Pack."<init>":(JLjava/lang/Object;Ljava/lang/Object;)V1537    2799: ldc2_w        #17                 // long 130822816777737l1538    2802: lstore        1451539    2804: astore        1471540    2806: aload         1471541    2808: instanceof    #16                 // class ev$Pack1542    2811: ifeq          28521543    2814: aload         1471544    2816: checkcast     #16                 // class ev$Pack1545    2819: getfield      #32                 // Field ev$Pack.key:J1546    2822: lload         1451547    2824: lcmp1548    2825: ifne          28391549    2828: aload         1471550    2830: checkcast     #16                 // class ev$Pack1551    2833: getfield      #36                 // Field ev$Pack.ev:Ljava/lang/Object;1552    2836: goto          28621553    2839: aload         1471554    2841: checkcast     #16                 // class ev$Pack1555    2844: getfield      #39                 // Field ev$Pack.outer:Ljava/lang/Object;1556    2847: astore        1471557    2849: goto          28061558    2852: new           #41                 // class dawn/rt/PanicError1559    2855: dup1560    2856: ldc           #43                 // String effect evidence missing: no pack entry for the atom this call site asked for1561    2858: invokespecial #46                 // Method dawn/rt/PanicError."<init>":(Ljava/lang/String;)V1562    2861: athrow1563    2862: checkcast     #48                 // class dawn$pkg$tileir/dev$ev$Dev1564    2865: invokestatic  #157                // Method dawn$pkg$tileir/dev.dawn$impl$StagedVar$Tile$var_set:(JJLdawn$pkg$tileir/dev$ev$Dev;)Ldawn/rt/Unit;1565    2868: pop1566    2869: lload         41567    2871: lload         621568    2873: new           #16                 // class ev$Pack1569    2876: dup1570    2877: ldc2_w        #17                 // long 130822816777737l1571    2880: aload         131572    2882: ldc2_w        #17                 // long 130822816777737l1573    2885: lstore        1481574    2887: astore        1501575    2889: aload         1501576    2891: instanceof    #16                 // class ev$Pack1577    2894: ifeq          29351578    2897: aload         1501579    2899: checkcast     #16                 // class ev$Pack1580    2902: getfield      #32                 // Field ev$Pack.key:J1581    2905: lload         1481582    2907: lcmp1583    2908: ifne          29221584    2911: aload         1501585    2913: checkcast     #16                 // class ev$Pack1586    2916: getfield      #36                 // Field ev$Pack.ev:Ljava/lang/Object;1587    2919: goto          29451588    2922: aload         1501589    2924: checkcast     #16                 // class ev$Pack1590    2927: getfield      #39                 // Field ev$Pack.outer:Ljava/lang/Object;1591    2930: astore        1501592    2932: goto          28891593    2935: new           #41                 // class dawn/rt/PanicError1594    2938: dup1595    2939: ldc           #43                 // String effect evidence missing: no pack entry for the atom this call site asked for1596    2941: invokespecial #46                 // Method dawn/rt/PanicError."<init>":(Ljava/lang/String;)V1597    2944: athrow1598    2945: checkcast     #48                 // class dawn$pkg$tileir/dev$ev$Dev1599    2948: getstatic     #24                 // Field dawn/rt/Unit.INSTANCE:Ldawn/rt/Unit;1600    2951: invokespecial #28                 // Method ev$Pack."<init>":(JLjava/lang/Object;Ljava/lang/Object;)V1601    2954: ldc2_w        #17                 // long 130822816777737l1602    2957: lstore        1511603    2959: astore        1531604    2961: aload         1531605    2963: instanceof    #16                 // class ev$Pack1606    2966: ifeq          30071607    2969: aload         1531608    2971: checkcast     #16                 // class ev$Pack1609    2974: getfield      #32                 // Field ev$Pack.key:J1610    2977: lload         1511611    2979: lcmp1612    2980: ifne          29941613    2983: aload         1531614    2985: checkcast     #16                 // class ev$Pack1615    2988: getfield      #36                 // Field ev$Pack.ev:Ljava/lang/Object;1616    2991: goto          30171617    2994: aload         1531618    2996: checkcast     #16                 // class ev$Pack1619    2999: getfield      #39                 // Field ev$Pack.outer:Ljava/lang/Object;1620    3002: astore        1531621    3004: goto          29611622    3007: new           #41                 // class dawn/rt/PanicError1623    3010: dup1624    3011: ldc           #43                 // String effect evidence missing: no pack entry for the atom this call site asked for1625    3013: invokespecial #46                 // Method dawn/rt/PanicError."<init>":(Ljava/lang/String;)V1626    3016: athrow1627    3017: checkcast     #48                 // class dawn$pkg$tileir/dev$ev$Dev1628    3020: invokestatic  #157                // Method dawn$pkg$tileir/dev.dawn$impl$StagedVar$Tile$var_set:(JJLdawn$pkg$tileir/dev$ev$Dev;)Ldawn/rt/Unit;1629    3023: pop1630    3024: getstatic     #24                 // Field dawn/rt/Unit.INSTANCE:Ldawn/rt/Unit;1631    3027: areturn

attend,只在宿主上

没有指数函数的注意力,在列表上做:点积、归一化、加权和。它不是 kernel,所以没有 Tile IR 标签。它有的是三种值得点的形状:一个调用、调用里的调用(range(0, len(xs))),以及交给调用的闭包,编译器把闭包体提升成它自己的函数。

attend12 个调用

Dawn 源码site/explorer/attend.dawn:1–25

1# The explorer page's host-only program (site/explorer/record.py): attention2# without the exponential, on lists. Small enough to read whole, and made of3# the three shapes the page shows (a call, a call inside a call, a closure4# handed to a call), so a click on any of them has something to light in the5# C and the JVM listing. It is not a kernel: it has no Tile IR.67fn dot(xs: List[Float], ys: List[Float]) -> Float = {8  let ps = map(range(0, len(xs)), i => xs[i] * ys[i])9  fold(ps, 0.0, (a, b) => a + b)10}1112fn normalize(xs: List[Float]) -> List[Float] = {13  let total = fold(xs, 0.0, (a, b) => a + b)14  map(xs, x => x / total)15}1617fn attend(q: List[Float], keys: List[List[Float]], vals: List[Float]) -> Float = {18  let w = normalize(map(keys, k => dot(q, k)))19  dot(w, vals)20}2122pub fn main() -> Unit !io = {23  let out = attend([1.0, 2.0], [[1.0, 0.0], [0.0, 1.0]], [10.0, 20.0])24  println("out = ${out}")25}

C,来自 dawn __emitc共 7625 行,列出 142 行

1double dawn_attend__dot(void* p0, void* p1) {2  DAWN_OWN_FRAME(8);3  dawn_own[1] = p0;4  dawn_own[2] = p1;5  dawn_own[3] = dawn_std_2pvec__range(INT64_C(0), dawn_std_2pvec__count(((void*)dawn_own[1])));6  dawn_clo* t0 = dawn_clo_new((void*)dawn_attend__lambda_30__clo, 2, UINT64_C(0x0000000000000003));7  t0->caps[0].p = ((void*)dawn_dup(((void*)dawn_own[1])));8  t0->caps[1].p = ((void*)dawn_take(&dawn_own[2]));9  dawn_own[4] = t0;10  void* t1 = ((void*)dawn_unit_box);11  dawn_own[5] = dawn_std_2list__map(((void*)dawn_take(&dawn_own[3])), ((dawn_clo*)dawn_take(&dawn_own[4])), t1);12  dawn_drop(dawn_own[1]); dawn_own[1] = NULL;13  dawn_own[6] = dawn_box_float(0.0);14  dawn_clo* t2 = dawn_clo_new((void*)dawn_attend__lambda_31__clo, 0, UINT64_C(0));15  dawn_own[7] = t2;16  void* t3 = ((void*)dawn_unit_box);17  dawn_own[8] = dawn_std_2list__fold(((void*)dawn_take(&dawn_own[5])), ((void*)dawn_take(&dawn_own[6])), ((dawn_clo*)dawn_take(&dawn_own[7])), t3);18  double v23 = (((dawn_box*)(((void*)dawn_own[8])))->val.f);19  dawn_drop(dawn_own[8]); dawn_own[8] = NULL;20  DAWN_RETURN(v23);21}2223void* dawn_attend__normalize(void* p3) {24  DAWN_OWN_FRAME(6);25  dawn_own[1] = p3;26  dawn_own[2] = ((void*)dawn_dup(((void*)dawn_own[1])));27  dawn_own[3] = dawn_box_float(0.0);28  dawn_clo* t0 = dawn_clo_new((void*)dawn_attend__lambda_32__clo, 0, UINT64_C(0));29  dawn_own[4] = t0;30  void* t1 = ((void*)dawn_unit_box);31  dawn_own[5] = dawn_std_2list__fold(((void*)dawn_take(&dawn_own[2])), ((void*)dawn_take(&dawn_own[3])), ((dawn_clo*)dawn_take(&dawn_own[4])), t1);32  double v25 = (((dawn_box*)(((void*)dawn_own[5])))->val.f);33  dawn_drop(dawn_own[5]); dawn_own[5] = NULL;34  double v4 = v25;35  dawn_clo* t2 = dawn_clo_new((void*)dawn_attend__lambda_33__clo, 1, UINT64_C(0x0000000000000000));36  t2->caps[0].f = v4;37  dawn_own[6] = t2;38  void* t3 = ((void*)dawn_unit_box);39  DAWN_RETURN(dawn_std_2list__map(((void*)dawn_take(&dawn_own[1])), ((dawn_clo*)dawn_take(&dawn_own[6])), t3));40}4142double dawn_attend__attend(void* p5, void* p6, void* p7) {43  DAWN_OWN_FRAME(5);44  dawn_own[1] = p5;45  dawn_own[2] = p6;46  dawn_own[3] = p7;47  dawn_clo* t0 = dawn_clo_new((void*)dawn_attend__lambda_34__clo, 1, UINT64_C(0x0000000000000001));48  t0->caps[0].p = ((void*)dawn_take(&dawn_own[1]));49  dawn_own[4] = t0;50  void* t1 = ((void*)dawn_unit_box);51  dawn_own[5] = dawn_attend__normalize(dawn_std_2list__map(((void*)dawn_take(&dawn_own[2])), ((dawn_clo*)dawn_take(&dawn_own[4])), t1));52  void* t2 = ((void*)dawn_take(&dawn_own[3]));53  DAWN_RETURN(dawn_attend__dot(((void*)dawn_take(&dawn_own[5])), t2));54}5556dawn_unit dawn_attend__main(void) {57  DAWN_OWN_FRAME(6);58  dawn_array* t0 = dawn_array_new();59  t0 = dawn_array_push_own(t0, ((void*)(dawn_box_float(1.0))));60  t0 = dawn_array_push_own(t0, ((void*)(dawn_box_float(2.0))));61  dawn_own[1] = dawn_std_2pvec__from_1array(t0);62  dawn_array* t1 = dawn_array_new();63  dawn_array* t2 = dawn_array_new();64  t2 = dawn_array_push_own(t2, ((void*)(dawn_box_float(1.0))));65  t2 = dawn_array_push_own(t2, ((void*)(dawn_box_float(0.0))));66  t1 = dawn_array_push_own(t1, ((void*)(((void*)(dawn_std_2pvec__from_1array(t2))))));67  dawn_array* t3 = dawn_array_new();68  t3 = dawn_array_push_own(t3, ((void*)(dawn_box_float(0.0))));69  t3 = dawn_array_push_own(t3, ((void*)(dawn_box_float(1.0))));70  t1 = dawn_array_push_own(t1, ((void*)(((void*)(dawn_std_2pvec__from_1array(t3))))));71  dawn_own[2] = dawn_std_2pvec__from_1array(t1);72  dawn_array* t4 = dawn_array_new();73  t4 = dawn_array_push_own(t4, ((void*)(dawn_box_float(10.0))));74  t4 = dawn_array_push_own(t4, ((void*)(dawn_box_float(20.0))));75  void* t5 = dawn_std_2pvec__from_1array(t4);76  double v9 = dawn_attend__attend(((void*)dawn_take(&dawn_own[1])), ((void*)dawn_take(&dawn_own[2])), t5);77  static dawn_str t6_lit = {{DAWN_IMMORTAL, DAWN_K_STR}, 6, "out = "};78  dawn_own[3] = (&t6_lit);79  dawn_own[4] = dawn_std_2fmt__dtoa(v9);80  dawn_own[5] = dawn_str_concat(((dawn_str*)dawn_own[3]), ((dawn_str*)dawn_own[4]));81  dawn_drop(dawn_own[4]); dawn_own[4] = NULL;82  dawn_drop(dawn_own[3]); dawn_own[3] = NULL;83  dawn_own[6] = ((dawn_str*)dawn_take(&dawn_own[5]));84  (void)(dawn_std_2io__println(((dawn_str*)dawn_own[6])));85  dawn_drop(dawn_own[6]); dawn_own[6] = NULL;86  DAWN_RETURN(DAWN_UNIT);87}8889double dawn_attend__lambda_30(void* p0, void* p1, int64_t v10, void* p11) {90  DAWN_OWN_FRAME(5);91  dawn_own[1] = p0;92  dawn_own[2] = p1;93  dawn_own[3] = p11;94  dawn_own[4] = dawn_std_2pvec__index(((void*)dawn_own[1]), v10);95  double v31 = (((dawn_box*)(((void*)dawn_own[4])))->val.f);96  dawn_drop(dawn_own[4]); dawn_own[4] = NULL;97  double t0 = v31;98  dawn_own[5] = dawn_std_2pvec__index(((void*)dawn_own[2]), v10);99  double v33 = (((dawn_box*)(((void*)dawn_own[5])))->val.f);100  dawn_drop(dawn_own[5]); dawn_own[5] = NULL;101  double t1 = v33;102  double v34 = (t0 * t1);103  dawn_drop(dawn_own[1]); dawn_own[1] = NULL;104  dawn_drop(dawn_own[2]); dawn_own[2] = NULL;105  dawn_drop(dawn_own[3]); dawn_own[3] = NULL;106  DAWN_RETURN(v34);107}108109double dawn_attend__lambda_31(double v12, double v13, void* p14) {110  DAWN_QUIET_FRAME(1);111  dawn_own[1] = p14;112  double v35 = (v12 + v13);113  dawn_drop(dawn_own[1]); dawn_own[1] = NULL;114  DAWN_RETURN(v35);115}116117double dawn_attend__lambda_32(double v15, double v16, void* p17) {118  DAWN_QUIET_FRAME(1);119  dawn_own[1] = p17;120  double v36 = (v15 + v16);121  dawn_drop(dawn_own[1]); dawn_own[1] = NULL;122  DAWN_RETURN(v36);123}124125double dawn_attend__lambda_33(double v4, double v18, void* p19) {126  DAWN_QUIET_FRAME(1);127  dawn_own[1] = p19;128  double v37 = (v18 / v4);129  dawn_drop(dawn_own[1]); dawn_own[1] = NULL;130  DAWN_RETURN(v37);131}132133double dawn_attend__lambda_34(void* p5, void* p20, void* p21) {134  DAWN_OWN_FRAME(3);135  dawn_own[1] = p5;136  dawn_own[2] = p20;137  dawn_own[3] = p21;138  void* t0 = ((void*)dawn_take(&dawn_own[2]));139  double v38 = dawn_attend__dot(((void*)dawn_take(&dawn_own[1])), t0);140  dawn_drop(dawn_own[3]); dawn_own[3] = NULL;141  DAWN_RETURN(v38);142}

JVM,来自 javap -c -p -s共 190 行,列出 158 行

1  public static double attend(std.pvec$Vec, std.pvec$Vec, std.pvec$Vec);2    descriptor: (Lstd/pvec$Vec;Lstd/pvec$Vec;Lstd/pvec$Vec;)D3    Code:4       0: aload_15       1: new           #82                 // class dawn/fn/attend$46       4: dup7       5: aload_08       6: invokespecial #85                 // Method dawn/fn/attend$4."<init>":(Lstd/pvec$Vec;)V9       9: getstatic     #32                 // Field dawn/rt/Unit.INSTANCE:Ldawn/rt/Unit;10      12: invokestatic  #38                 // Method std/list.map:(Lstd/pvec$Vec;Ldawn/rt/Fn2;Ljava/lang/Object;)Lstd/pvec$Vec;11      15: invokestatic  #87                 // Method normalize:(Lstd/pvec$Vec;)Lstd/pvec$Vec;12      18: astore_313      19: aload_314      20: aload_215      21: invokestatic  #89                 // Method dot:(Lstd/pvec$Vec;Lstd/pvec$Vec;)D16      24: dreturn1718  public static double dot(std.pvec$Vec, std.pvec$Vec);19    descriptor: (Lstd/pvec$Vec;Lstd/pvec$Vec;)D20    Code:21       0: ldc2_w        #9                  // long 0l22       3: aload_023       4: invokestatic  #16                 // Method std/pvec.count:(Lstd/pvec$Vec;)J24       7: invokestatic  #20                 // Method std/pvec.range:(JJ)Lstd/pvec$Vec;25      10: new           #22                 // class dawn/fn/attend$026      13: dup27      14: aload_028      15: aload_129      16: invokespecial #26                 // Method dawn/fn/attend$0."<init>":(Lstd/pvec$Vec;Lstd/pvec$Vec;)V30      19: getstatic     #32                 // Field dawn/rt/Unit.INSTANCE:Ldawn/rt/Unit;31      22: invokestatic  #38                 // Method std/list.map:(Lstd/pvec$Vec;Ldawn/rt/Fn2;Ljava/lang/Object;)Lstd/pvec$Vec;32      25: astore_233      26: aload_234      27: ldc2_w        #39                 // double 0.0d35      30: invokestatic  #46                 // Method java/lang/Double.valueOf:(D)Ljava/lang/Double;36      33: getstatic     #51                 // Field dawn/fn/attend$1.INSTANCE:Ldawn/rt/Fn3;37      36: getstatic     #32                 // Field dawn/rt/Unit.INSTANCE:Ldawn/rt/Unit;38      39: invokestatic  #55                 // Method std/list.fold:(Lstd/pvec$Vec;Ljava/lang/Object;Ldawn/rt/Fn3;Ljava/lang/Object;)Ljava/lang/Object;39      42: checkcast     #42                 // class java/lang/Double40      45: invokevirtual #59                 // Method java/lang/Double.doubleValue:()D41      48: dreturn4243  public static dawn.rt.Unit main();44    descriptor: ()Ldawn/rt/Unit;45    Code:46       0: invokestatic  #99                 // Method dawn/rt/Array.array_new:()Ldawn/rt/Array;47       3: ldc2_w        #100                // double 1.0d48       6: invokestatic  #46                 // Method java/lang/Double.valueOf:(D)Ljava/lang/Double;49       9: invokestatic  #105                // Method dawn/rt/Array.array_push:(Ldawn/rt/Array;Ljava/lang/Object;)Ldawn/rt/Array;50      12: ldc2_w        #106                // double 2.0d51      15: invokestatic  #46                 // Method java/lang/Double.valueOf:(D)Ljava/lang/Double;52      18: invokestatic  #105                // Method dawn/rt/Array.array_push:(Ldawn/rt/Array;Ljava/lang/Object;)Ldawn/rt/Array;53      21: invokestatic  #111                // Method std/pvec.from_array:(Ldawn/rt/Array;)Lstd/pvec$Vec;54      24: invokestatic  #99                 // Method dawn/rt/Array.array_new:()Ldawn/rt/Array;55      27: invokestatic  #99                 // Method dawn/rt/Array.array_new:()Ldawn/rt/Array;56      30: ldc2_w        #100                // double 1.0d57      33: invokestatic  #46                 // Method java/lang/Double.valueOf:(D)Ljava/lang/Double;58      36: invokestatic  #105                // Method dawn/rt/Array.array_push:(Ldawn/rt/Array;Ljava/lang/Object;)Ldawn/rt/Array;59      39: ldc2_w        #39                 // double 0.0d60      42: invokestatic  #46                 // Method java/lang/Double.valueOf:(D)Ljava/lang/Double;61      45: invokestatic  #105                // Method dawn/rt/Array.array_push:(Ldawn/rt/Array;Ljava/lang/Object;)Ldawn/rt/Array;62      48: invokestatic  #111                // Method std/pvec.from_array:(Ldawn/rt/Array;)Lstd/pvec$Vec;63      51: invokestatic  #105                // Method dawn/rt/Array.array_push:(Ldawn/rt/Array;Ljava/lang/Object;)Ldawn/rt/Array;64      54: invokestatic  #99                 // Method dawn/rt/Array.array_new:()Ldawn/rt/Array;65      57: ldc2_w        #39                 // double 0.0d66      60: invokestatic  #46                 // Method java/lang/Double.valueOf:(D)Ljava/lang/Double;67      63: invokestatic  #105                // Method dawn/rt/Array.array_push:(Ldawn/rt/Array;Ljava/lang/Object;)Ldawn/rt/Array;68      66: ldc2_w        #100                // double 1.0d69      69: invokestatic  #46                 // Method java/lang/Double.valueOf:(D)Ljava/lang/Double;70      72: invokestatic  #105                // Method dawn/rt/Array.array_push:(Ldawn/rt/Array;Ljava/lang/Object;)Ldawn/rt/Array;71      75: invokestatic  #111                // Method std/pvec.from_array:(Ldawn/rt/Array;)Lstd/pvec$Vec;72      78: invokestatic  #105                // Method dawn/rt/Array.array_push:(Ldawn/rt/Array;Ljava/lang/Object;)Ldawn/rt/Array;73      81: invokestatic  #111                // Method std/pvec.from_array:(Ldawn/rt/Array;)Lstd/pvec$Vec;74      84: invokestatic  #99                 // Method dawn/rt/Array.array_new:()Ldawn/rt/Array;75      87: ldc2_w        #112                // double 10.0d76      90: invokestatic  #46                 // Method java/lang/Double.valueOf:(D)Ljava/lang/Double;77      93: invokestatic  #105                // Method dawn/rt/Array.array_push:(Ldawn/rt/Array;Ljava/lang/Object;)Ldawn/rt/Array;78      96: ldc2_w        #114                // double 20.0d79      99: invokestatic  #46                 // Method java/lang/Double.valueOf:(D)Ljava/lang/Double;80     102: invokestatic  #105                // Method dawn/rt/Array.array_push:(Ldawn/rt/Array;Ljava/lang/Object;)Ldawn/rt/Array;81     105: invokestatic  #111                // Method std/pvec.from_array:(Ldawn/rt/Array;)Lstd/pvec$Vec;82     108: invokestatic  #117                // Method attend:(Lstd/pvec$Vec;Lstd/pvec$Vec;Lstd/pvec$Vec;)D83     111: dstore_084     112: ldc           #119                // String out =85     114: dload_086     115: invokestatic  #125                // Method std/fmt.dtoa:(D)Ljava/lang/String;87     118: invokevirtual #131                // Method java/lang/String.concat:(Ljava/lang/String;)Ljava/lang/String;88     121: invokestatic  #137                // Method std/io.println:(Ljava/lang/String;)Ldawn/rt/Unit;89     124: areturn9091  public static std.pvec$Vec normalize(std.pvec$Vec);92    descriptor: (Lstd/pvec$Vec;)Lstd/pvec$Vec;93    Code:94       0: aload_095       1: ldc2_w        #39                 // double 0.0d96       4: invokestatic  #46                 // Method java/lang/Double.valueOf:(D)Ljava/lang/Double;97       7: getstatic     #72                 // Field dawn/fn/attend$2.INSTANCE:Ldawn/rt/Fn3;98      10: getstatic     #32                 // Field dawn/rt/Unit.INSTANCE:Ldawn/rt/Unit;99      13: invokestatic  #55                 // Method std/list.fold:(Lstd/pvec$Vec;Ljava/lang/Object;Ldawn/rt/Fn3;Ljava/lang/Object;)Ljava/lang/Object;100      16: checkcast     #42                 // class java/lang/Double101      19: invokevirtual #59                 // Method java/lang/Double.doubleValue:()D102      22: dstore_1103      23: aload_0104      24: new           #74                 // class dawn/fn/attend$3105      27: dup106      28: dload_1107      29: invokespecial #77                 // Method dawn/fn/attend$3."<init>":(D)V108      32: getstatic     #32                 // Field dawn/rt/Unit.INSTANCE:Ldawn/rt/Unit;109      35: invokestatic  #38                 // Method std/list.map:(Lstd/pvec$Vec;Ldawn/rt/Fn2;Ljava/lang/Object;)Lstd/pvec$Vec;110      38: areturn111112  public static double lambda$0(std.pvec$Vec, std.pvec$Vec, long, java.lang.Object);113    descriptor: (Lstd/pvec$Vec;Lstd/pvec$Vec;JLjava/lang/Object;)D114    Code:115       0: aload_0116       1: lload_2117       2: invokestatic  #65                 // Method std/pvec.index:(Lstd/pvec$Vec;J)Ljava/lang/Object;118       5: checkcast     #42                 // class java/lang/Double119       8: invokevirtual #59                 // Method java/lang/Double.doubleValue:()D120      11: aload_1121      12: lload_2122      13: invokestatic  #65                 // Method std/pvec.index:(Lstd/pvec$Vec;J)Ljava/lang/Object;123      16: checkcast     #42                 // class java/lang/Double124      19: invokevirtual #59                 // Method java/lang/Double.doubleValue:()D125      22: dmul126      23: dreturn127128  public static double lambda$1(double, double, java.lang.Object);129    descriptor: (DDLjava/lang/Object;)D130    Code:131       0: dload_0132       1: dload_2133       2: dadd134       3: dreturn135136  public static double lambda$2(double, double, java.lang.Object);137    descriptor: (DDLjava/lang/Object;)D138    Code:139       0: dload_0140       1: dload_2141       2: dadd142       3: dreturn143144  public static double lambda$3(double, double, java.lang.Object);145    descriptor: (DDLjava/lang/Object;)D146    Code:147       0: dload_2148       1: dload_0149       2: ddiv150       3: dreturn151152  public static double lambda$4(std.pvec$Vec, std.pvec$Vec, java.lang.Object);153    descriptor: (Lstd/pvec$Vec;Lstd/pvec$Vec;Ljava/lang/Object;)D154    Code:155       0: aload_0156       1: aload_1157       2: invokestatic  #89                 // Method dot:(Lstd/pvec$Vec;Lstd/pvec$Vec;)D158       5: dreturn

这些行从哪里来

这里没有任何手写的对照表。每个编译器自己说哪次调用写了哪几行:C 是 dawn __emitc --map,字节码是 dawn __emit --map(列表由 javap -c -p -s 给出),Tile IR 是 cuTile 页背后的那份记录。site/explorer/record.py 把它们限定到所展示的函数,生成器再查一遍,所以一个调用在某份产物里没有位置、或区间越出产物,建站就失败。产物是建站时生成的、不入库,因为编译器一变它们就变。只列出所展示的函数:一个程序其余的 C 与字节码是标准库与 tileir 的。