怎么读
源码里每个带下划线的名字是一次调用。点它,或者用 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
点调用的名字(或在它上面按 Enter),在每份产物里标出它的整段与它写出的行。点一行找到它的调用。Esc 放手。
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
点调用的名字(或在它上面按 Enter),在每份产物里标出它的整段与它写出的行。点一行找到它的调用。Esc 放手。
这些行从哪里来
这里没有任何手写的对照表。每个编译器自己说哪次调用写了哪几行:C 是 dawn __emitc --map,字节码是 dawn __emit --map(列表由 javap -c -p -s 给出),Tile IR 是 cuTile 页背后的那份记录。site/explorer/record.py 把它们限定到所展示的函数,生成器再查一遍,所以一个调用在某份产物里没有位置、或区间越出产物,建站就失败。产物是建站时生成的、不入库,因为编译器一变它们就变。只列出所展示的函数:一个程序其余的 C 与字节码是标准库与 tileir 的。