How to read it
Each underlined name in the source is a call. Click one, or move to it with Tab and press Enter, and its whole span is underlined and the lines it wrote itself are marked in every listing, a fainter mark on the lines of the calls inside it. The tabs switch listings and keep what is picked, so the same call can be followed from one backend to the next. Click a line of a listing to find the call it belongs to; in C and in bytecode the code of a nested call sits inside its caller's, and a line that holds both belongs to the inner one. Escape lets go.
flash_attn, three ways
The fused-attention kernel of the cuTile page. A kernel is an ordinary Dawn function under the !Dev effect, so the same source compiles for the host too, and that is what the C and JVM tabs show: the host code that runs the kernel and builds the Tile IR, where each mma(..) is a call into packages/tileir. The Tile IR tab is the program that run recorded, the one tileiras assembles for the GPU. One call, two readings: a function call on the host, one or more operations on the device. A call that only rebinds a host value, such as carry, wrote no Tile IR line of its own.
flash_attn25 callsDawn sourcescripts/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, as recorded62 of 62 lines
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, from dawn __emitc379 of 160728 lines
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, from javap -c -p -s1631 of 89511 lines
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
Click a call's name, or press Enter on it, to mark its span and the lines it wrote in every listing. Click a line to find its call. Escape lets go.
attend, host only
Attention without the exponential, on lists: dot products, a normalisation and a weighted sum. It is not a kernel, so it has no Tile IR tab. What it does have is the three shapes worth clicking: a call, a call inside a call (range(0, len(xs))), and a closure handed to a call, whose body the compiler lifts out into a function of its own.
attend12 callsDawn sourcesite/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, from dawn __emitc142 of 7625 lines
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, from javap -c -p -s158 of 190 lines
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
Click a call's name, or press Enter on it, to mark its span and the lines it wrote in every listing. Click a line to find its call. Escape lets go.
Where the lines come from
Nothing here is a hand-written table. Each compiler says which call wrote which lines: dawn __emitc --map for C, dawn __emit --map for bytecode (listed by javap -c -p -s), and the recording behind the cuTile page for Tile IR. site/explorer/record.py restricts them to the function shown, and the generator checks them again, so a call without a place in a listing, or a range outside it, stops the build. The listings are made when the site is built and are not checked in, since they change whenever the compiler does. Only the function shown is listed: the rest of a program's C and bytecode is the standard library's and tileir's.