Skip to content

Instantly share code, notes, and snippets.

@AmosLewis
Last active February 10, 2025 03:31
Show Gist options
  • Save AmosLewis/32df5b270353cb555f99a117e6d00f05 to your computer and use it in GitHub Desktop.
Save AmosLewis/32df5b270353cb555f99a117e6d00f05 to your computer and use it in GitHub Desktop.
# iree-base-compiler 3.2.0rc20250206
# iree-base-runtime 3.2.0rc20250206
# iree-turbine 3.2.0rc20250205
cd /home/chi/src/shark-ai
git checkout upstream/users/dan-garvey/enable_custom_fp8_matmul
wget https://gist.githubusercontent.com/AmosLewis/0775e6286be89476e9f2a4946c634370/raw/bbc3c9bceca30f888d7dd42c37372686cad3efe5/2048.diff
git apply 2048.diff
python -m sharktank.examples.paged_llm_v1 --irpa-file=/home/chi/src/test/llama/dan/fp8.irpa --tokenizer-config-json=/home/chi/src/test/llama/dan/tokenizer.json --dump-bins "t"
/home/chi/src/shark-ai/.venv/lib/python3.11/site-packages/iree/turbine/aot/params.py:163: UserWarning: The given NumPy array is not writable, and PyTorch does not support non-writable tensors. This means writing to this tensor will result in undefined behavior. You may want to copy the array to protect its data or make it writable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at ../torch/csrc/utils/tensor_numpy.cpp:206.)
return torch.from_numpy(wrapper)
:: Prompting:
b't'
:: Prompt tokens: tensor([[2728, 3593, 9195, 5847, 5453, 5069, 8310, 1687, 8685, 5106, 5835, 5791,
5520, 963, 7433, 4648, 894, 7937, 5775, 9798, 8421, 8146, 7993, 6194,
2700, 7131, 7773, 1983, 7597, 9439, 6141, 3663, 4187, 990, 5810, 8109,
9097, 5343, 8996, 2695, 2359, 1253, 2392, 6808, 9655, 1421, 1274, 9049,
4336, 4226, 5198, 8622, 4679, 2856, 5208, 572, 4096, 7551, 3523, 4442,
6601, 7714, 1573, 195, 6855, 1308, 5238, 2293, 2637, 1478, 9689, 8638,
1135, 1724, 5931, 7293, 2105, 7848, 285, 4874, 495, 2159, 5617, 5704,
630, 8206, 5053, 6155, 7330, 4361, 2918, 755, 7167, 6910, 2977, 284,
8671, 6045, 2952, 4393, 7875, 9040, 4604, 1044, 904, 8209, 2365, 6917,
2150, 2430, 8089, 4135, 9394, 8354, 5980, 345, 493, 5206, 3052, 6840,
5835, 341, 9389, 6320, 5146, 9016, 2163, 4787, 8546, 5209, 4172, 3370,
853, 797, 4961, 7835, 1382, 9229, 8929, 7573, 9357, 1470, 1834, 1002,
3933, 3428, 2130, 4284, 403, 7590, 6640, 21, 6639, 5276, 7026, 4537,
2457, 8627, 2791, 8908, 9537, 5394, 4023, 2010, 6919, 1877, 7808, 4575,
4390, 1482, 900, 298, 6107, 3520, 383, 8579, 1194, 7373, 3329, 7416,
3829, 9259, 9337, 8424, 9263, 8149, 2907, 9586, 5724, 2799, 1581, 9288,
6032, 9145, 5446, 5241, 6721, 8801, 5482, 4539, 2946, 9964, 4114, 8197,
2064, 8239, 7853, 3873, 2896, 3916, 4815, 1063, 4748, 2818, 8464, 893,
1463, 166, 8041, 6483, 9545, 4629, 6137, 7138, 704, 5609, 2451, 1841,
4528, 3439, 9012, 4637, 6645, 4706, 6110, 6545, 1950, 6289, 2706, 59,
9276, 3203, 6145, 5296, 2370, 7032, 1339, 3274, 3260, 1330, 1313, 901,
6685, 3998, 6809, 7464, 8933, 5858, 9209, 6175, 6983, 8460, 8572, 2622,
2707, 9157, 1494, 5448, 6771, 9692, 4976, 1391, 5956, 5197, 8751, 9738,
991, 3992, 8068, 7410, 5593, 6404, 1733, 3236, 9095, 6004, 3834, 2475,
1466, 1613, 3763, 3727, 4289, 9774, 516, 4447, 6827, 1447, 9307, 2057,
3987, 8523, 7387, 6710, 545, 3600, 8234, 4849, 8686, 8862, 962, 7218,
7005, 5565, 3102, 4628, 5747, 7043, 3738, 4926, 4024, 9524, 3522, 5992,
4774, 5060, 6033, 4676, 7261, 5936, 8989, 2038, 4442, 6304, 8371, 1298,
1939, 9612, 6376, 4591, 1706, 8491, 5690, 586, 559, 989, 6083, 569,
6247, 1476, 8247, 4685, 560, 2151, 7291, 5553, 4436, 9598, 4550, 7406,
9263, 80, 8473, 1560, 604, 7420, 6033, 5192, 9363, 7228, 9953, 7857,
3586, 7226, 321, 2085, 8186, 2305, 2575, 8678, 9617, 8989, 7330, 1868,
9827, 1084, 6784, 323, 6876, 6878, 2889, 505, 7433, 2365, 1869, 7641,
5794, 8893, 3119, 3342, 5409, 9753, 2609, 5579, 5330, 9142, 6751, 3256,
2604, 7959, 4647, 4979, 7314, 6038, 1667, 2280, 6278, 7803, 2792, 9381,
5170, 9397, 7389, 9428, 7119, 7110, 8215, 9890, 1190, 8624, 6821, 2763,
7594, 4544, 6885, 6269, 755, 5775, 3947, 9907, 5725, 7179, 8709, 2688,
6079, 6215, 7332, 9214, 9179, 1258, 3734, 9217, 7991, 8015, 32, 7728,
5418, 7236, 0, 9057, 6472, 2611, 3379, 3463, 3749, 9476, 4248, 7364,
7663, 1748, 6038, 6574, 1222, 2357, 1951, 7915, 3372, 5845, 7537, 7613,
1981, 7275, 8167, 5708, 844, 4448, 8388, 5570, 6583, 5991, 1345, 4000,
8918, 4645, 3148, 3044, 4321, 9441, 5443, 6283, 653, 6534, 864, 4977,
5370, 424, 216, 8926, 6610, 226, 4780, 2914, 8420, 801, 6634, 1454,
6988, 4581, 7097, 3397, 9040, 9256, 4996, 4295, 1012, 2840, 3262, 9870,
9010, 6762, 4686, 9912, 1217, 912, 8818, 2014, 2657, 9540, 141, 2113,
1918, 1909, 3254, 7471, 2674, 8326, 7570, 1357, 8671, 4396, 4338, 5460,
4822, 26, 4250, 7341, 9162, 1742, 7847, 8340, 336, 1294, 5472, 8826,
5178, 2773, 6918, 1503, 6871, 7945, 3058, 7678, 1653, 6635, 8785, 4,
6853, 311, 6063, 201, 783, 819, 6919, 7002, 8205, 1057, 9886, 6091,
9161, 1532, 3879, 1107, 262, 755, 1227, 1432, 3554, 4367, 4410, 2586,
8643, 4738, 7422, 3996, 5796, 3730, 4324, 5427, 9040, 807, 7503, 2278,
9116, 3285, 9545, 1080, 797, 9211, 2516, 6372, 7285, 2912, 7313, 8168,
2672, 164, 7378, 4664, 7391, 1241, 6877, 8082, 9362, 4997, 7377, 4788,
8911, 4416, 3659, 3000, 2864, 6769, 5087, 9030, 7762, 5995, 796, 4650,
4882, 320, 5550, 6461, 7914, 8576, 4241, 1045, 4060, 6750, 1721, 8685,
4793, 9631, 1562, 7966, 8508, 8959, 6825, 667, 7250, 4766, 3672, 7403,
9515, 8479, 7620, 4839, 1301, 4118, 7933, 3496, 3705, 6429, 5354, 6395,
5576, 4343, 5556, 3216, 211, 9591, 554, 4586, 5559, 2935, 7188, 1840,
2530, 1239, 6137, 7446, 1489, 9610, 1280, 3612, 9467, 3409, 1132, 1637,
309, 3091, 8047, 2730, 3485, 2727, 415, 8817, 3902, 7037, 3736, 7042,
3160, 2116, 8311, 4925, 7697, 2057, 4937, 1100, 7150, 3679, 5905, 5477,
4490, 345, 8276, 3438, 4283, 3430, 2756, 9026, 4778, 1691, 4779, 6919,
8822, 1008, 6298, 7707, 2984, 8049, 8795, 5879, 9937, 6968, 1295, 6295,
9621, 3175, 9482, 6579, 337, 4161, 3229, 8375, 9654, 9963, 5122, 597,
6789, 8778, 1771, 6594, 76, 4364, 753, 4004, 4371, 7290, 3571, 7428,
4964, 6881, 8700, 7529, 9421, 8093, 2738, 9183, 4206, 5456, 5732, 6332,
2439, 8519, 3902, 8650, 5168, 1292, 1041, 2635, 5840, 8885, 1720, 5871,
8306, 5628, 8544, 8248, 8115, 9086, 1885, 5875, 1072, 6647, 9704, 347,
356, 7863, 2040, 4688, 6143, 7589, 841, 5667, 9814, 7737, 2509, 5041,
6027, 6008, 8659, 8072, 2778, 4568, 9049, 7229, 2921, 5589, 4648, 2529,
6950, 1405, 3480, 4385, 7096, 1069, 439, 458, 505, 3608, 9603, 7926,
5702, 6458, 4258, 1374, 9478, 7409, 6532, 4653, 7194, 1706, 367, 8425,
7472, 572, 8400, 6587, 7911, 3354, 3893, 4250, 1128, 8195, 1156, 2291,
7756, 225, 6374, 2574, 1696, 947, 6239, 3520, 6701, 7831, 2512, 8035,
2675, 6839, 6013, 6630, 9942, 2440, 2569, 1944, 452, 2155, 9880, 3419,
647, 5985, 533, 8113, 4153, 3492, 5743, 4606, 9718, 7209, 855, 9384,
4826, 3405, 4030, 686, 1141, 218, 5212, 3535, 7865, 8395, 7975, 9781,
153, 663, 7270, 5704, 6279, 5977, 3021, 798, 7166, 6250, 2010, 9855,
6262, 5521, 2050, 6878, 173, 5629, 7117, 4351, 3332, 9251, 408, 3103,
4014, 6167, 2536, 5676, 9714, 7350, 5825, 9361, 4733, 1834, 7236, 1256,
5202, 1421, 9962, 9066, 5502, 2497, 3770, 2250, 296, 7612, 4460, 751,
3471, 1665, 1363, 1196, 1813, 1419, 3472, 9246, 258, 998, 8291, 6907,
6400, 4055, 8482, 8962, 2036, 9080, 8736, 65, 7671, 8460, 5614, 3237,
4271, 7861, 7891, 5110, 322, 8442, 6545, 1604, 3043, 6692, 4348, 2682,
3828, 5488, 1675, 6624, 1766, 6418, 2393, 4288, 4526, 2956, 1811, 4724,
6127, 8775, 9173, 5555, 7524, 900, 244, 5925, 7798, 3650, 5432, 9959,
8870, 4245, 3566, 259, 4, 400, 9511, 563, 4994, 9090, 6149, 1078,
7910, 528, 6061, 3989, 7192, 2158, 9782, 4184, 4764, 8687, 1059, 6856,
4791, 9410, 6576, 4335, 6770, 3698, 2563, 4823, 5274, 3051, 4856, 4383,
2633, 766, 1200, 452, 5727, 262, 5278, 439, 9455, 1257, 2562, 5661,
3940, 4081, 4942, 2869, 6115, 9892, 7734, 1064, 9883, 2237, 9679, 1282,
2278, 8779, 6514, 336, 2583, 4450, 2055, 4629, 1446, 5558, 4017, 6515,
9846, 1910, 4524, 1354, 6358, 150, 3826, 4203, 7194, 5955, 2304, 5579,
128, 5480, 6524, 9764, 5164, 8049, 6029, 3179, 9502, 7628, 6041, 2832,
9745, 8561, 2765, 2891, 934, 1436, 9888, 5377, 1372, 3181, 776, 6421,
8293, 2978, 5726, 2665, 8867, 6273, 6099, 7405, 8711, 3519, 6923, 9024,
4119, 571, 8514, 6866, 9661, 5922, 4766, 142, 7604, 7877, 6027, 2867,
5119, 2915, 8794, 6703, 1958, 837, 3645, 7856, 9874, 6884, 127, 2461,
8243, 3396, 9870, 2074, 240, 7528, 7851, 4900, 1692, 2576, 2695, 1025,
6874, 3475, 1203, 7079, 989, 6668, 9898, 1743, 8671, 331, 7774, 406,
8134, 1845, 1074, 2334, 1059, 2703, 382, 2632, 7041, 2402, 8288, 3602,
1840, 8976, 4148, 6930, 8624, 7098, 1008, 2776, 386, 6398, 5919, 9921,
8693, 2518, 4071, 6971, 8002, 5584, 161, 7499, 1781, 7427, 1914, 1935,
1801, 5835, 3778, 8586, 2495, 1323, 7443, 8622, 9172, 9473, 5671, 4047,
5341, 2665, 1520, 1980, 1416, 9914, 8224, 5990, 6729, 2257, 1513, 5766,
4580, 8177, 1381, 1785, 7081, 9005, 9497, 4217, 65, 8384, 1090, 7359,
2584, 1889, 6336, 5426, 8176, 2, 4695, 439, 3431, 8292, 3373, 4603,
8718, 5916, 6844, 3995, 5575, 6581, 7601, 3505, 7187, 2599, 6435, 7482,
1244, 3618, 2087, 7962, 4744, 8775, 7051, 1835, 7917, 4815, 6146, 8412,
1374, 5674, 9014, 2327, 5966, 237, 1687, 5788, 237, 9345, 2784, 2447,
9982, 7698, 7220, 3582, 1056, 1498, 5821, 4147, 2340, 7388, 3802, 2755,
9858, 9916, 4453, 1472, 9012, 2588, 8808, 2392, 7526, 3920, 5652, 6504,
2920, 8259, 7063, 5856, 5651, 6368, 7847, 7278, 5933, 4231, 4252, 6526,
8569, 9354, 3352, 5249, 1696, 8388, 2768, 7837, 868, 2546, 2899, 6589,
6891, 9611, 3597, 9624, 2554, 5610, 4202, 2963, 7179, 8102, 4795, 31,
3823, 908, 2482, 7906, 8754, 445, 2104, 1760, 3818, 5776, 5591, 5726,
5259, 2681, 7383, 2954, 6492, 3675, 9283, 9377, 5505, 3045, 699, 8305,
7399, 3030, 295, 7090, 6212, 6320, 371, 8340, 379, 3827, 8518, 1858,
8920, 6862, 2058, 4102, 9267, 2099, 3406, 3390, 2727, 1416, 660, 6290,
5350, 3597, 5588, 9438, 9514, 8055, 4565, 271, 4578, 3874, 464, 5968,
3498, 6967, 6505, 2954, 952, 1931, 4275, 8189, 9962, 4693, 891, 6416,
1026, 3218, 9114, 6243, 527, 3001, 7780, 373, 5876, 7951, 9253, 2050,
5882, 3095, 3277, 2711, 9548, 3724, 5962, 3469, 3608, 9557, 2031, 3406,
707, 4392, 6913, 3323, 7054, 1411, 9541, 315, 3520, 9010, 2215, 8477,
6927, 2628, 8822, 7594, 7498, 6925, 5774, 4129, 7995, 5597, 5019, 1199,
9378, 1355, 8876, 6073, 6285, 2352, 4723, 6631, 9255, 4712, 9790, 2384,
7292, 1146, 9481, 6487, 2358, 7036, 9883, 1504, 8604, 688, 7845, 6212,
4538, 2809, 4625, 183, 3992, 8013, 5165, 2178, 5780, 7870, 8216, 6856,
5319, 581, 3992, 1604, 5010, 2599, 1389, 4434, 8251, 2240, 4585, 6274,
9499, 1001, 5447, 817, 750, 3250, 1943, 8793, 5599, 8410, 9971, 702,
9099, 8613, 7142, 4502, 8122, 2796, 3432, 4984, 4001, 2365, 4732, 4902,
5593, 8165, 388, 9769, 1102, 8421, 5882, 5012, 1242, 3233, 9442, 4085,
3, 2239, 2602, 5694, 7183, 5899, 61, 2186, 396, 5438, 83, 4133,
4382, 1840, 1697, 6354, 8761, 3542, 7048, 9671, 3199, 1040, 8456, 4308,
8995, 6473, 5042, 5037, 856, 4315, 4838, 6972, 1652, 3756, 4110, 758,
3431, 8105, 7296, 6965, 2099, 6498, 9527, 7026, 6705, 5289, 7628, 8119,
7531, 7796, 9112, 7901, 1664, 9283, 6664, 198, 3243, 307, 7422, 7630,
4142, 8804, 5129, 7368, 6565, 9760, 2519, 9156, 52, 1292, 4835, 6336,
8797, 8269, 4134, 7048, 1118, 135, 4439, 156, 8897, 9966, 3887, 2843,
9477, 9072, 4166, 4428, 7838, 6081, 7824, 632, 1615, 3788, 5127, 3981,
4246, 5119, 9243, 6304, 4374, 8209, 1662, 7685, 9078, 4850, 1468, 4471,
2812, 8912, 7756, 7575, 9093, 9336, 7773, 120, 6692, 9214, 4378, 8636,
3495, 8866, 1087, 60, 5538, 2799, 9067, 241, 1126, 7148, 1748, 5326,
9935, 635, 9102, 179, 6196, 8925, 9388, 4373, 6924, 3115, 496, 2608,
7513, 1424, 4585, 5535, 7618, 4535, 3094, 8220, 2106, 2168, 5070, 7045,
8174, 2245, 5529, 5381, 19, 2937, 8294, 7709, 9138, 9368, 4072, 4370,
4961, 1942, 5801, 1199, 6408, 6210, 3545, 5613, 11, 7004, 1570, 4184,
9553, 821, 561, 5697, 6178, 177, 2608, 9704, 9006, 7700, 8723, 9785,
2034, 2298, 7983, 8134, 7345, 6936, 4465, 3023, 6721, 370, 3127, 3358,
4279, 8928, 4730, 2348, 1422, 4061, 5242, 1795, 6606, 347, 9000, 4152,
420, 4974, 8542, 3136, 3731, 8430, 8600, 6921, 6088, 6448, 2030, 9441,
1594, 7660, 9983, 8061, 3879, 2757, 9618, 6258, 5489, 9276, 8116, 6649,
3268, 177, 1810, 5457, 2854, 6469, 2092, 9889, 1810, 1924, 2106, 1859,
4485, 8174, 9338, 2633, 6792, 7118, 7839, 4806, 8085, 5, 1936, 1338,
2990, 521, 734, 8055, 3835, 9186, 9967, 5808, 8753, 187, 4946, 2810,
8113, 2135, 3532, 8797, 7462, 8401, 4568, 593, 6582, 4245, 2711, 7869,
7827, 8514, 288, 5914, 7357, 8604, 6339, 7984, 4193, 8501, 269, 3149,
9013, 8617, 6177, 24, 637, 690, 9999, 1175, 4732, 4867, 1444, 6189,
905, 4779, 4480, 7338, 8218, 4396, 7785, 2236, 8201, 3652, 1136, 2972,
2468, 8992, 3892, 1050, 5670, 8930, 162, 251, 5340, 1101, 8051, 6448,
8361, 4855, 7477, 1795, 4244, 772, 8091, 1328, 301, 4503, 3925, 2797,
4355, 4825, 1997, 8731, 5477, 403, 6520, 9699, 1092, 1583, 8798, 6182,
9722, 2738, 4473, 3008, 8111, 1288, 4257, 8869, 7720, 908, 256, 8183,
8421, 305, 9869, 7426, 1538, 2332, 1199, 8954, 7826, 9360, 5798, 2419,
3219, 9344, 8967, 1234, 6362, 6225, 1626, 6882, 8327, 6245, 7502, 6271,
6159, 7914, 172, 951, 6352, 1939, 7415, 1081, 6473, 6323, 7814, 7267,
6397, 1985, 2778, 6924, 3737, 6955, 1210, 1093, 9478, 101, 8063, 7131,
9937, 6038, 7055, 9482, 6516, 9089, 5255, 8523, 8199, 212, 8472, 8132,
1757, 7972, 9045, 3707, 9494, 1671, 5413, 6325, 7992, 1048, 2001, 6669,
1007, 6618, 8880, 6493, 1667, 5813, 3797, 1588, 5574, 5930, 9527, 8748,
1892, 911, 2876, 4209, 3020, 8670, 695, 9677],
[6527, 7363, 6010, 6567, 2342, 5381, 4251, 6115, 211, 2371, 7561, 5474,
3938, 6732, 3471, 5625, 863, 7388, 5232, 3677, 6460, 3308, 4891, 5893,
625, 2855, 250, 7331, 3635, 4870, 5925, 8193, 2009, 217, 1804, 6184,
1636, 7286, 1847, 8839, 2366, 3068, 5968, 4746, 2757, 9965, 246, 5792,
611, 8542, 8101, 4575, 7189, 8049, 1760, 6288, 3892, 7069, 1455, 7853,
4858, 7503, 2214, 4325, 6900, 3784, 7144, 4285, 8008, 3495, 6574, 8788,
141, 1980, 9954, 7743, 8106, 4017, 6144, 9595, 8836, 5026, 8414, 9934,
2203, 7678, 2722, 9917, 3337, 8305, 7230, 8808, 293, 9431, 5194, 944,
6649, 2160, 4088, 394, 9667, 3729, 9377, 9469, 8406, 8775, 2613, 6071,
342, 5418, 2717, 6744, 8534, 2342, 62, 7755, 9793, 8239, 6977, 2064,
5560, 8403, 8082, 798, 9814, 3322, 1596, 7472, 665, 2973, 4851, 6288,
8003, 471, 8780, 257, 6267, 8145, 3870, 2152, 9264, 4677, 9338, 8213,
9854, 5073, 7300, 2717, 6583, 3817, 8253, 8080, 568, 5627, 509, 6290,
5404, 845, 6940, 5741, 1216, 4110, 4760, 122, 7913, 3264, 6161, 1640,
952, 7369, 1426, 6044, 7190, 680, 7855, 3132, 9073, 7456, 8444, 7188,
8788, 5825, 3725, 8404, 40, 5029, 7398, 471, 4270, 4971, 8306, 3300,
1517, 8916, 2608, 5322, 6143, 850, 9849, 7029, 2677, 1347, 2877, 9613,
6428, 8135, 556, 5607, 7608, 1303, 5840, 7818, 2629, 8979, 5836, 4771,
6917, 2957, 1830, 2616, 4292, 6823, 5865, 16, 6344, 9139, 1602, 5398,
4477, 9612, 4941, 4807, 8057, 3181, 4137, 4376, 6185, 9410, 5691, 9804,
9035, 4227, 7283, 9619, 8634, 267, 6423, 1220, 5436, 2812, 9360, 4402,
6968, 102, 9968, 24, 2818, 7939, 6550, 1143, 1775, 8243, 3074, 6595,
8149, 1390, 7687, 2652, 4318, 2071, 6583, 9889, 2734, 9682, 1127, 5300,
4909, 446, 1485, 201, 7552, 4375, 9608, 5539, 9145, 952, 9287, 7799,
142, 163, 2005, 7756, 8669, 1793, 2633, 2593, 2644, 5685, 3187, 3837,
2741, 5554, 5241, 3096, 6244, 984, 5483, 7427, 5152, 2740, 5555, 7539,
6758, 3598, 9445, 2362, 2408, 3926, 2101, 9279, 7077, 2288, 1052, 6618,
4842, 8551, 8915, 7945, 4389, 5448, 3331, 7617, 586, 1114, 7741, 1668,
5126, 6989, 2280, 3544, 1881, 5439, 6336, 5384, 2508, 1361, 9798, 8843,
447, 2100, 2813, 1129, 8228, 2147, 5894, 3117, 7383, 731, 3539, 1076,
8603, 7699, 5689, 8247, 5988, 7523, 812, 2362, 2954, 2838, 9830, 5750,
5389, 1194, 1981, 7983, 1945, 1023, 2629, 69, 4623, 8772, 8103, 7014,
8982, 3956, 342, 4283, 7706, 5263, 9598, 6642, 4865, 3619, 8631, 3513,
658, 8130, 3341, 5777, 1078, 3213, 4709, 2502, 7414, 5086, 2859, 41,
2303, 4641, 2474, 4803, 7813, 5236, 7458, 6298, 1091, 8931, 9305, 5604,
3193, 6993, 2916, 2105, 9514, 8876, 6515, 2073, 1963, 3489, 6613, 2856,
2887, 5831, 7834, 7272, 8628, 1706, 3643, 593, 5390, 6784, 8887, 7792,
7739, 7190, 8343, 4575, 7572, 3625, 4950, 2928, 3079, 3499, 6426, 9420,
8917, 3692, 9935, 6897, 3973, 3013, 4448, 3899, 2451, 2539, 1340, 6747,
2582, 1198, 8450, 4895, 2617, 543, 4923, 8438, 36, 543, 2371, 7863,
3342, 4467, 8497, 9108, 7199, 4045, 136, 5661, 3998, 8087, 7714, 535,
5968, 5979, 2191, 7163, 9181, 3115, 5302, 1701, 47, 8994, 8043, 2145,
8057, 8521, 1728, 7427, 7277, 8772, 8873, 9154, 4480, 4644, 3440, 7255,
7833, 3200, 9291, 56, 8784, 1239, 9559, 2298, 8553, 9708, 9421, 2620,
4131, 7860, 5332, 6023, 1870, 9580, 8734, 4344, 9025, 6404, 8437, 301,
8923, 2203, 4478, 1379, 9180, 8674, 6350, 8568, 1904, 4149, 4893, 9544,
2710, 88, 1421, 225, 8892, 3791, 8333, 8321, 3330, 7270, 3612, 7752,
3934, 2919, 8463, 8742, 1480, 2626, 6594, 7507, 3457, 2958, 7734, 6322,
6799, 7926, 5019, 8452, 8438, 6820, 3183, 2306, 7102, 3166, 3120, 4911,
3679, 9034, 8421, 194, 3932, 7009, 3042, 8567, 8149, 5051, 94, 7439,
9747, 3555, 4303, 9514, 7908, 6989, 9670, 311, 9550, 3452, 1022, 512,
3786, 3513, 1403, 6810, 9956, 9074, 1072, 3131, 565, 6539, 8037, 1304,
4085, 4576, 235, 8614, 9040, 3329, 1583, 561, 7086, 9985, 560, 7338,
9785, 1307, 2325, 692, 9278, 8888, 2822, 465, 4571, 6330, 361, 8262,
1603, 9988, 1905, 3511, 9208, 2231, 1160, 1160, 9120, 8328, 6196, 1722,
723, 8901, 7133, 5429, 4998, 2758, 3206, 7311, 2763, 1337, 2896, 1112,
3416, 8521, 3993, 1499, 6202, 1418, 8825, 581, 7844, 2501, 294, 9389,
7628, 2319, 5905, 7449, 2044, 2713, 2360, 6583, 9567, 3108, 231, 7918,
6754, 3546, 7681, 7763, 5397, 4062, 8771, 1232, 2159, 6130, 7041, 3508,
9409, 7102, 6435, 4539, 4563, 9539, 6640, 8928, 8569, 6515, 3431, 4938,
6277, 4955, 9147, 23, 4334, 9062, 8430, 5194, 1658, 9018, 6951, 5762,
8571, 792, 9804, 3511, 4691, 2153, 2401, 8969, 5813, 9651, 4286, 5366,
7445, 234, 5363, 578, 7327, 7228, 2094, 5268, 6847, 4258, 670, 8735,
8920, 6263, 8877, 3767, 2125, 8812, 8751, 90, 3714, 3571, 1080, 1198,
5319, 5513, 8070, 3334, 7774, 323, 6791, 5015, 7012, 408, 9753, 3550,
2908, 5680, 149, 7889, 4611, 7753, 3054, 8976, 7300, 4234, 6181, 1563,
9892, 1584, 2884, 5169, 7549, 7837, 120, 9612, 3715, 4041, 3383, 8868,
641, 8113, 5359, 1368, 2315, 7215, 7399, 5358, 2610, 3535, 4357, 7145,
8084, 3228, 3079, 2345, 2592, 820, 6994, 3912, 6652, 8976, 9705, 2307,
4380, 8037, 194, 2232, 4432, 2517, 8604, 5892, 4044, 2974, 7946, 3491,
6877, 3134, 6039, 5511, 4023, 326, 1419, 6814, 4735, 9856, 1427, 631,
78, 239, 901, 7922, 595, 6153, 6884, 7118, 3452, 6186, 6902, 1335,
9260, 552, 3905, 2840, 5791, 9386, 4745, 6731, 1623, 288, 9043, 7501,
1456, 8687, 8409, 5527, 2181, 9911, 1367, 174, 2143, 3964, 3242, 6027,
2075, 3579, 2148, 7631, 3916, 92, 5950, 571, 3759, 3805, 1168, 2700,
6793, 2895, 2579, 3567, 8229, 9139, 9282, 7868, 5751, 6265, 4242, 1900,
9216, 5372, 5118, 2203, 6851, 9693, 6762, 9933, 4728, 5103, 8681, 5106,
5805, 3923, 9081, 5306, 375, 1202, 8091, 9296, 1991, 6954, 9861, 9466,
6241, 5411, 8622, 1566, 3462, 1449, 9056, 8445, 2681, 2983, 3574, 2909,
8753, 7624, 236, 5718, 3463, 2122, 6476, 5581, 9048, 7924, 364, 4981,
4852, 68, 6416, 4760, 8248, 1151, 6152, 1663, 7815, 6911, 3337, 6709,
8248, 9397, 2364, 2563, 2059, 9272, 5907, 4564, 4054, 4850, 9917, 5860,
6598, 898, 8905, 2552, 4189, 5110, 3477, 3051, 3091, 9156, 7686, 8137,
9860, 5518, 9279, 4309, 6057, 7179, 3541, 79, 7448, 8514, 3713, 8285,
8519, 9388, 5024, 9251, 8201, 2487, 4283, 4342, 8041, 4918, 8789, 2901,
3375, 1590, 8556, 7762, 6660, 7270, 1318, 2921, 8087, 9725, 426, 3612,
8585, 9028, 7549, 2412, 7161, 2584, 2273, 4837, 8617, 6274, 4130, 740,
5806, 8558, 4486, 4917, 541, 5931, 5215, 3430, 8093, 8216, 5141, 6316,
9364, 5519, 5586, 9098, 8305, 4813, 2261, 7779, 5543, 2521, 1478, 3521,
6312, 4719, 2993, 5831, 8071, 1800, 3281, 3052, 8962, 7880, 9340, 3806,
3943, 9678, 7402, 8163, 4567, 6112, 1663, 3275, 16, 4291, 4631, 2219,
751, 3640, 4157, 7678, 293, 2443, 5328, 8885, 3571, 7897, 9195, 396,
4863, 2888, 5117, 9163, 392, 3215, 42, 3608, 966, 3376, 440, 4559,
9071, 9363, 1493, 4620, 6270, 2816, 4821, 4189, 8529, 6148, 9141, 4677,
7683, 7607, 2775, 9476, 4517, 8410, 1279, 9106, 7914, 9996, 3429, 4983,
9768, 1462, 8034, 7010, 4974, 7555, 4525, 4679, 3815, 1473, 7077, 6705,
8195, 1008, 5207, 9163, 3170, 5832, 8203, 3503, 7378, 2955, 6275, 7965,
6295, 4180, 574, 7117, 857, 6384, 3113, 5721, 7935, 9844, 2808, 5875,
2722, 3175, 5440, 3226, 6795, 5816, 6699, 7971, 3366, 5177, 8494, 3920,
6699, 6818, 2121, 9872, 8136, 2654, 5628, 7399, 9247, 3774, 8977, 8635,
8825, 9657, 5450, 6644, 916, 9222, 7107, 8237, 9227, 4659, 7295, 438,
4702, 6083, 8356, 2700, 4640, 2257, 8826, 1787, 8063, 4176, 516, 743,
1290, 3255, 8797, 2345, 7961, 1085, 3816, 5266, 3623, 2857, 6387, 6132,
9527, 5609, 4728, 7449, 172, 4260, 8936, 5909, 6311, 4101, 7975, 1344,
5098, 975, 1144, 8913, 8348, 4777, 5536, 6443, 2695, 2411, 6774, 9427,
5085, 7009, 8678, 1184, 684, 5916, 8219, 5422, 1704, 2184, 8680, 9576,
6113, 3681, 2307, 1881, 1090, 5170, 8712, 8540, 3625, 463, 7819, 989,
6902, 4897, 2571, 5787, 8270, 4648, 5150, 7307, 10, 1280, 2126, 7596,
9739, 2235, 7719, 7464, 4245, 5996, 3413, 116, 2966, 5011, 5931, 6197,
6108, 8053, 4521, 5644, 7390, 6464, 7226, 4710, 6547, 5772, 6282, 9000,
4048, 4955, 9821, 3572, 5472, 1183, 4638, 3207, 422, 1951, 3688, 4948,
9538, 1650, 4635, 6676, 13, 9182, 5728, 1978, 1904, 5700, 9069, 2216,
9366, 2979, 9404, 4885, 9793, 1009, 6491, 3465, 1534, 8253, 8261, 5907,
4515, 9775, 3558, 3670, 3496, 2086, 2630, 7843, 7478, 4136, 8143, 4803,
906, 6787, 4153, 9731, 6328, 4960, 1164, 1719, 4961, 1479, 8409, 1930,
2726, 9393, 8788, 1710, 6439, 2970, 6909, 6654, 2685, 4075, 8851, 9999,
235, 692, 803, 3271, 7857, 2571, 5910, 2442, 9784, 86, 7920, 7936,
1499, 1027, 3427, 7732, 9964, 534, 1754, 2199, 3924, 4241, 4656, 2891,
627, 3025, 644, 7077, 8637, 1990, 399, 7618, 3493, 7444, 7988, 800,
9709, 6074, 9681, 3431, 313, 20, 1949, 1586, 7312, 5468, 3900, 6844,
1983, 4959, 4142, 3434, 2012, 2998, 2152, 573, 4534, 3234, 1581, 2312,
3954, 8574, 780, 8636, 2952, 5295, 7966, 1433, 9874, 692, 3270, 3912,
4193, 1719, 2596, 1793, 616, 27, 1832, 5048, 3313, 5496, 4744, 9200,
3146, 3314, 2674, 9495, 7912, 8214, 5915, 5608, 7836, 8295, 8186, 6736,
6755, 6914, 628, 5260, 7936, 4434, 4272, 2813, 1115, 1303, 9284, 6146,
5550, 9042, 7195, 2734, 3493, 9968, 6721, 174, 3827, 7369, 9979, 5421,
3132, 8671, 265, 6591, 821, 2122, 486, 1907, 6250, 9381, 6005, 4766,
600, 6251, 6556, 2315, 4776, 4848, 1370, 4297, 3238, 6466, 28, 1118,
8670, 4386, 9594, 5461, 6909, 9571, 3637, 8439, 3551, 9246, 1591, 7320,
9000, 7788, 1416, 4180, 8783, 5297, 4630, 5323, 7468, 3624, 2043, 3120,
2053, 8601, 5884, 22, 8204, 7018, 6510, 428, 7799, 3139, 4401, 2261,
8835, 9100, 1120, 8172, 7714, 2618, 6569, 1567, 1784, 4801, 3751, 1714,
9897, 667, 8310, 4765, 5032, 3115, 9330, 6191, 6850, 7817, 2335, 2565,
4959, 4733, 4219, 8695, 9219, 5070, 5892, 8594, 5554, 7596, 9156, 2357,
5222, 5872, 6649, 6789, 1900, 8700, 8632, 8065, 6151, 1267, 4707, 1875,
3786, 3895, 5510, 3836, 2375, 1954, 9164, 6066, 4468, 2144, 7443, 1033,
5554, 3828, 9564, 275, 4752, 6498, 6583, 7297, 5125, 1072, 3314, 8504,
1001, 475, 8706, 1960, 5279, 2175, 4434, 3946, 2789, 3705, 6174, 3227,
2184, 3640, 112, 6984, 2674, 196, 3203, 9819, 1337, 3357, 5164, 1754,
7531, 7621, 5893, 6936, 9289, 9738, 4948, 2152, 9383, 3600, 4447, 4384,
331, 5655, 2966, 8444, 5574, 3692, 760, 7991, 1344, 7762, 6139, 3155,
2450, 6904, 1745, 4237, 8320, 1244, 8876, 3480, 3112, 3406, 6940, 3473,
4541, 9399, 6637, 9916, 3557, 3819, 1798, 2805, 6131, 4580, 2934, 2133,
6875, 9320, 2935, 4242, 856, 9880, 1866, 4188, 4285, 5073, 7936, 6936,
5222, 9073, 8918, 8567, 3049, 8385, 344, 3998, 9282, 4773, 5073, 9194,
8246, 3513, 9353, 8403, 5997, 5864, 571, 8008, 5558, 5449, 4809, 5778,
4218, 5210, 9674, 678, 6499, 1750, 9946, 9560, 720, 4382, 1323, 1419,
7715, 2341, 4903, 5829, 304, 1707, 797, 1861, 380, 3915, 1261, 4545,
4728, 4886, 4210, 2447, 6408, 8237, 5376, 2236, 622, 3047, 3066, 8421,
3413, 5239, 2411, 341, 4198, 266, 6126, 7308, 1889, 2137, 5600, 8110,
915, 6958, 5965, 2883, 509, 1505, 6232, 2975, 251, 2003, 5151, 4429,
3525, 1957, 244, 4736, 3122, 3211, 118, 4727, 4220, 3269, 9772, 4132,
2232, 7843, 8188, 480, 7206, 1186, 2611, 5200, 6245, 4351, 1768, 4565,
4728, 7280, 1262, 195, 9453, 9685, 6624, 4762, 665, 3110, 1236, 4090,
2616, 6831, 7664, 3276, 9028, 4352, 6935, 824, 2573, 9681, 8118, 1686,
3977, 5033, 1775, 165, 340, 6115, 8575, 483, 9584, 2804, 435, 1879,
4805, 4560, 4968, 6663, 40, 4061, 9446, 9809, 7230, 8826, 3375, 9529,
9114, 964, 2461, 5399, 4032, 7396, 430, 3200, 1301, 5008, 2471, 3158,
4721, 3565, 2916, 8848, 2030, 1246, 6456, 3845, 4010, 7877, 1454, 2902,
6809, 8377, 9774, 5524, 5229, 4152, 9330, 877, 6042, 6644, 3582, 8028,
2717, 1242, 8797, 5333, 694, 7116, 4821, 8634, 3652, 515, 5214, 9997,
6484, 9866, 8317, 5330, 4121, 2909, 8635, 2656, 7768, 1786, 4536, 4583,
4926, 8721, 6294, 9357, 8730, 6380, 5787, 114, 5964, 9135, 4931, 8156,
9872, 6268, 572, 5968, 7803, 9693, 7280, 3701, 5043, 5727, 7628, 7464,
7338, 965, 7223, 1490, 4691, 8520, 5269, 4219, 7632, 1965, 7617, 9424,
4015, 7363, 2332, 1438, 2978, 8763, 3542, 4215, 9657, 8443, 7462, 9792,
1275, 1093, 2939, 8349, 7036, 6520, 3674, 1400, 8617, 6194, 8069, 2643,
3286, 4434, 7075, 1162, 2307, 6701, 6242, 5562, 5452, 4805, 1301, 872,
1447, 7977, 6636, 8524, 6737, 209, 574, 5816, 7306, 6320, 6895, 5720,
3635, 196, 5718, 6771, 9223, 967, 1355, 3316, 7248, 3086, 7385, 2965,
9320, 3579, 8562, 6635, 6975, 5206, 1277, 4111],
[3202, 6329, 5615, 8358, 500, 2422, 6535, 4029, 4889, 5271, 94, 1459,
4239, 2371, 3897, 5271, 3049, 9081, 3579, 4010, 6951, 3748, 1711, 2601,
9844, 5950, 9148, 3332, 2150, 8839, 5093, 2810, 1413, 2146, 612, 1580,
2924, 6040, 5563, 6021, 4940, 6829, 3474, 6348, 69, 2623, 1248, 4075,
9893, 4743, 4902, 8658, 6832, 2784, 7760, 8163, 684, 6514, 895, 239,
7281, 8739, 7054, 5599, 7603, 1514, 7106, 4021, 5626, 8409, 8612, 777,
6754, 7844, 4316, 3772, 646, 5102, 5297, 7565, 3590, 7690, 7074, 4282,
2670, 4116, 3663, 6747, 2843, 8063, 9741, 3455, 6559, 1334, 3360, 9899,
8459, 7188, 7429, 3793, 6432, 9907, 9283, 7749, 3790, 3814, 6832, 5534,
9567, 8852, 4120, 5813, 9292, 7671, 7136, 8131, 6906, 7889, 6162, 3763,
4382, 2689, 1574, 4458, 3682, 9552, 8671, 7534, 7753, 1083, 7013, 3236,
5426, 2622, 3527, 9082, 1985, 7300, 746, 985, 8706, 6480, 3071, 7871,
8523, 2387, 7031, 550, 5857, 8224, 5634, 9215, 5736, 2569, 8633, 3527,
7204, 5479, 682, 1732, 1041, 5611, 5591, 5219, 3565, 4022, 9324, 9790,
6025, 7797, 2785, 6726, 3904, 9981, 5745, 7451, 9918, 7839, 2399, 4270,
632, 8427, 6831, 9380, 3288, 660, 4286, 6163, 498, 2401, 7578, 6702,
2490, 4051, 8090, 4623, 6546, 9337, 2930, 648, 2838, 8259, 1752, 6878,
512, 3442, 5871, 8357, 171, 8224, 997, 5663, 6624, 2123, 3992, 1068,
8290, 9720, 1571, 9801, 4841, 5546, 1861, 7055, 2491, 2106, 408, 1933,
1166, 9837, 4118, 4405, 484, 8158, 6726, 2622, 1222, 966, 9265, 4058,
5387, 4450, 3945, 1785, 9277, 171, 5820, 429, 5889, 1559, 7181, 4781,
535, 9568, 9940, 9508, 2984, 7440, 1537, 8264, 793, 7532, 1254, 9206,
6859, 5336, 6087, 2885, 690, 9426, 5639, 2065, 9613, 2308, 4369, 3382,
8461, 4155, 4614, 3143, 8446, 1969, 9721, 7183, 8839, 6871, 3180, 3615,
3247, 5977, 4134, 6805, 9609, 3996, 9947, 938, 3139, 6383, 7290, 2878,
901, 1883, 1644, 4537, 5430, 4766, 8546, 9524, 8932, 7092, 92, 2439,
3444, 1483, 8558, 3929, 9271, 9685, 268, 2089, 4175, 1434, 3246, 5185,
785, 7358, 2113, 7858, 1228, 4519, 1331, 9071, 4409, 2425, 5323, 8755,
6703, 6639, 2972, 9358, 5682, 7662, 5482, 4400, 1763, 1464, 6538, 9262,
6062, 7451, 4788, 1024, 2536, 7355, 5610, 4586, 4828, 9588, 4745, 9896,
2511, 614, 6329, 6557, 357, 8404, 2673, 7699, 6453, 3530, 8595, 1694,
2766, 1014, 4559, 3706, 9078, 1901, 3084, 8790, 7185, 2075, 4692, 6953,
8263, 6828, 714, 9867, 635, 944, 2041, 7982, 4788, 953, 6324, 4238,
2805, 6057, 2552, 6556, 6447, 1013, 9843, 2336, 6982, 4414, 8572, 2815,
6433, 5108, 9938, 7141, 8809, 8484, 7344, 6504, 7325, 1366, 3104, 8946,
6374, 1384, 8271, 9543, 9696, 1493, 4688, 7646, 5214, 9754, 6850, 6219,
2106, 744, 7363, 3602, 4191, 4753, 5952, 868, 7811, 9883, 9025, 4135,
1452, 1624, 2095, 5275, 2380, 3677, 9843, 8302, 3435, 728, 4113, 5932,
2584, 7445, 7264, 2903, 344, 9377, 5060, 5771, 9402, 6007, 9265, 7876,
9848, 3249, 1029, 659, 3481, 3145, 8372, 531, 5457, 1660, 8414, 7634,
8194, 3831, 5675, 683, 8787, 2286, 2262, 2761, 5656, 4300, 957, 1216,
6767, 5879, 6314, 2938, 1443, 8168, 9767, 9340, 4013, 459, 662, 9242,
5710, 2416, 6708, 1398, 9965, 3433, 7067, 3989, 9630, 6253, 392, 3127,
8410, 609, 9514, 6058, 5583, 5379, 1951, 1600, 8398, 8952, 4976, 2995,
2196, 67, 965, 1147, 8773, 9504, 5128, 2394, 500, 869, 7771, 2298,
7976, 6132, 5710, 4962, 8074, 2760, 1181, 3178, 9854, 2643, 1285, 104,
2718, 7415, 1848, 853, 7477, 5037, 931, 4389, 1168, 5340, 5040, 5315,
7531, 7559, 9896, 7601, 5223, 6859, 442, 5410, 9847, 7764, 5245, 8416,
8108, 1545, 4918, 1387, 1973, 8120, 8028, 2207, 741, 6810, 2099, 6257,
8778, 3014, 5620, 7387, 7188, 906, 9954, 3344, 3714, 1603, 6484, 8635,
2922, 5237, 2566, 5893, 4599, 2496, 4346, 2498, 463, 3291, 2473, 7737,
8457, 773, 1762, 3389, 2710, 4563, 1479, 3863, 9551, 6636, 7794, 8017,
5365, 4931, 5593, 615, 2588, 6273, 31, 15, 1724, 707, 2431, 939,
5848, 8553, 6815, 3084, 2886, 8227, 7223, 3674, 5936, 5184, 361, 9702,
2973, 5236, 7036, 1996, 8547, 6981, 6659, 6687, 2590, 44, 7933, 256,
2200, 7318, 7163, 3797, 3945, 5234, 6735, 3612, 1360, 3581, 4263, 3140,
841, 7349, 7828, 5202, 5838, 8136, 2295, 4855, 4108, 5466, 6198, 5351,
5084, 1216, 3084, 8627, 6371, 7422, 2282, 7225, 2356, 605, 393, 1053,
104, 7900, 3890, 1138, 8473, 4767, 6274, 6877, 9422, 8999, 7028, 1910,
1926, 574, 9627, 4719, 2950, 8727, 126, 5084, 7515, 9, 7657, 9366,
2024, 3688, 5801, 623, 2682, 2139, 3685, 7466, 3295, 1662, 5243, 3760,
8006, 4610, 7289, 1860, 138, 3802, 1487, 6213, 2491, 2622, 2123, 4616,
3510, 3400, 1006, 2049, 6667, 9356, 234, 5815, 1760, 5155, 4006, 8833,
2550, 3714, 6010, 7610, 6421, 4342, 7072, 8293, 2873, 8077, 698, 8262,
7135, 9265, 3136, 6935, 9749, 1322, 5825, 1663, 7997, 6048, 4766, 1820,
5827, 3066, 7968, 9949, 6711, 1851, 8028, 7595, 5467, 3373, 6127, 8035,
7726, 8814, 8932, 3144, 4077, 4754, 9463, 3913, 6185, 3083, 7720, 5970,
3278, 7694, 4676, 3025, 8891, 3478, 4670, 5630, 9065, 2325, 3788, 6870,
181, 9890, 9765, 8274, 7053, 9079, 8935, 2910, 2413, 2538, 4540, 8063,
3598, 3044, 1295, 1640, 7113, 4518, 6890, 9762, 3994, 5895, 9329, 7410,
6435, 7652, 5789, 908, 5196, 5207, 6144, 1396, 985, 7825, 6170, 3692,
135, 6407, 9013, 242, 2293, 8985, 5505, 222, 4292, 4476, 4880, 8861,
2829, 3633, 2318, 2253, 4813, 1816, 7390, 3297, 6716, 1832, 4322, 8757,
6090, 3039, 9094, 6140, 6236, 4288, 5391, 6008, 2583, 496, 4601, 3913,
6452, 7656, 1824, 9922, 7209, 8197, 105, 4913, 5409, 8131, 5114, 2647,
3083, 1108, 4178, 6162, 7889, 9008, 5076, 8332, 798, 5695, 5179, 7956,
8411, 5402, 3564, 5648, 172, 4848, 8835, 1153, 1705, 7911, 2519, 8594,
8312, 6295, 4233, 422, 5536, 6699, 1544, 9881, 2056, 5268, 6871, 1390,
1052, 9537, 6684, 7932, 7237, 9016, 6041, 8568, 8979, 3826, 2146, 7334,
2056, 5298, 2717, 9683, 443, 6864, 9012, 8353, 3463, 7340, 3371, 3519,
4410, 9453, 4088, 2638, 7284, 4804, 9678, 6050, 5620, 7798, 6340, 9576,
1080, 2157, 9070, 6820, 1714, 4604, 6257, 2669, 7645, 9621, 9003, 2348,
982, 7762, 4298, 7259, 3096, 9602, 6616, 229, 4044, 648, 2607, 4162,
8683, 274, 9350, 1642, 1261, 4523, 542, 9696, 7862, 5552, 636, 3361,
1742, 9637, 290, 9582, 6525, 7866, 4714, 1369, 4891, 3625, 8849, 4415,
5933, 237, 1529, 7545, 6558, 8269, 1904, 3409, 9157, 8727, 9377, 2429,
2484, 562, 896, 6016, 9057, 4337, 8877, 2301, 3090, 7369, 1966, 8244,
9982, 6950, 3646, 4256, 1029, 7170, 586, 3720, 2033, 1499, 9731, 5410,
1071, 1692, 9693, 4369, 336, 7766, 7666, 9979, 2407, 8503, 2037, 2991,
3031, 7412, 9304, 8468, 1317, 396, 9651, 4894, 4479, 6661, 9937, 5223,
6516, 5362, 4083, 3709, 5183, 6683, 1327, 2332, 9777, 4473, 7310, 6344,
3758, 6530, 3949, 6127, 6186, 6975, 9578, 5550, 6859, 6004, 5124, 7555,
8872, 6178, 2915, 7507, 1326, 1894, 6951, 7913, 7823, 5424, 9864, 6271,
7607, 7199, 8502, 3721, 6583, 7740, 5716, 740, 9001, 3360, 750, 7705,
4509, 7723, 2223, 9781, 4046, 7241, 774, 4257, 1079, 8690, 6059, 9444,
4433, 2793, 2645, 1789, 5913, 8369, 3975, 7140, 5976, 6723, 1448, 6799,
2933, 4904, 1621, 1400, 100, 1587, 6127, 5006, 4850, 4811, 6403, 1872,
4172, 4189, 5843, 9679, 8902, 1996, 2005, 2956, 4509, 7996, 7912, 4036,
6795, 3474, 7662, 3244, 1181, 7446, 5955, 9947, 3663, 5911, 3882, 7774,
9603, 2039, 9961, 4062, 3741, 8573, 346, 8879, 6093, 7549, 1782, 2306,
5743, 4164, 567, 7643, 5282, 3911, 1832, 2627, 1590, 4422, 3371, 8691,
9705, 1346, 8281, 6686, 7516, 5350, 4178, 7171, 9145, 2051, 8518, 6800,
7320, 5497, 842, 1420, 4366, 9921, 313, 9594, 8376, 7698, 3276, 3679,
4914, 3557, 580, 2126, 5670, 700, 5711, 9741, 456, 743, 2706, 8031,
973, 6234, 8925, 7495, 7097, 3649, 4214, 7925, 2390, 5339, 323, 8943,
7092, 2245, 3867, 842, 2108, 6621, 8325, 1883, 7804, 9629, 2212, 3325,
7665, 3613, 2044, 536, 2824, 7461, 3912, 9274, 5110, 8743, 7418, 4856,
8326, 9836, 6632, 3006, 9577, 6646, 5830, 2872, 7429, 4029, 3140, 9875,
9944, 7598, 6031, 1753, 2970, 5658, 220, 350, 2990, 8634, 2651, 6810,
368, 5344, 7856, 1300, 1520, 3399, 5482, 4384, 8258, 1857, 4736, 5819,
905, 4776, 3133, 8732, 9920, 5765, 8964, 8348, 3509, 4381, 2867, 598,
6197, 6454, 2271, 6082, 7623, 6444, 2190, 8851, 9077, 9896, 9698, 4704,
5789, 3972, 8819, 2551, 6341, 8382, 4978, 7092, 5035, 8467, 7643, 2717,
1291, 2919, 1842, 7202, 3310, 6592, 9227, 6692, 3716, 2878, 3149, 8294,
4011, 8995, 4670, 1235, 5648, 7821, 9296, 2929, 1233, 252, 3776, 4738,
7286, 1454, 62, 5504, 5142, 7686, 7715, 1787, 4557, 5460, 4450, 2673,
9175, 2690, 5318, 367, 17, 5069, 1454, 6251, 3205, 6750, 7544, 5955,
2171, 6817, 4109, 41, 3776, 8188, 4645, 9715, 3472, 692, 4453, 455,
2469, 5258, 727, 3642, 5286, 7515, 6421, 9967, 556, 1866, 1805, 1111,
3066, 7477, 1651, 6610, 5255, 9262, 2507, 5568, 9135, 1932, 5175, 4853,
324, 8448, 3843, 9752, 3344, 8663, 3644, 7001, 2665, 7911, 7006, 3420,
8433, 1275, 8973, 170, 5666, 3690, 9038, 8860, 1633, 6097, 5635, 7001,
7670, 5243, 8876, 1589, 3153, 2165, 4529, 5397, 2652, 203, 4625, 9284,
7846, 142, 9300, 9464, 9410, 5654, 7053, 2808, 9477, 547, 3494, 3190,
8187, 2518, 2519, 630, 8788, 661, 2201, 2090, 1523, 8251, 5984, 3573,
1377, 7935, 5474, 450, 9386, 9935, 1996, 1033, 2771, 1349, 6120, 7162,
1364, 9023, 4158, 4787, 7588, 5980, 974, 6676, 2064, 5808, 6942, 6758,
8265, 8761, 7805, 1073, 412, 4231, 28, 9570, 8613, 9375, 6626, 883,
4465, 1446, 3424, 754, 5758, 5500, 3431, 7241, 8432, 9181, 1317, 810,
9054, 8551, 1849, 4634, 3806, 5295, 465, 9696, 9911, 8115, 2601, 5837,
7997, 4772, 4845, 9973, 3924, 6968, 2220, 8962, 3840, 2216, 5211, 4961,
8813, 3574, 5724, 6317, 8192, 6992, 8107, 7058, 2792, 6212, 5402, 1007,
4565, 8633, 4407, 3619, 9453, 5989, 7852, 7274, 8350, 221, 467, 113,
5248, 4105, 2121, 341, 2038, 9007, 6782, 7493, 8051, 582, 9885, 4062,
6002, 6704, 6905, 8810, 2318, 2170, 1702, 9762, 2542, 444, 1792, 1463,
3333, 8149, 3978, 1577, 2123, 6530, 1016, 2495, 1144, 5163, 5835, 9748,
6983, 6451, 3970, 9174, 142, 8865, 3404, 3789, 5276, 862, 5683, 926,
6783, 8577, 6880, 883, 5038, 3444, 4075, 2423, 9682, 7804, 7181, 3225,
7397, 5797, 5397, 9922, 550, 1790, 3425, 2168, 2657, 5353, 9148, 7598,
8126, 4494, 8301, 5413, 4208, 7688, 464, 158, 9517, 8334, 9418, 4453,
479, 2735, 454, 2655, 3102, 7925, 9683, 9802, 5571, 4876, 1166, 9145,
5324, 5040, 9001, 5775, 6267, 2030, 8789, 1180, 6942, 8926, 5616, 4617,
6919, 1856, 3492, 8788, 6994, 3546, 6329, 9088, 5661, 6630, 9016, 5588,
473, 8571, 2291, 5214, 8236, 8933, 3294, 1758, 6163, 4054, 1320, 8467,
48, 7881, 2566, 7853, 3235, 2916, 3916, 4071, 3484, 2447, 4918, 2622,
4434, 4903, 3671, 9477, 793, 6341, 2868, 1846, 6476, 2335, 2043, 2203,
7660, 2267, 2375, 9447, 2921, 674, 3591, 4108, 4084, 2551, 7728, 7916,
565, 6105, 6178, 2386, 9674, 6472, 2385, 5533, 1794, 8492, 6775, 3754,
4498, 4775, 4353, 9082, 5980, 8238, 7022, 2227, 9298, 8173, 2966, 2940,
6499, 107, 1954, 9474, 5324, 4415, 1377, 8134, 2937, 9278, 7542, 2671,
6635, 788, 5135, 5700, 3724, 7018, 8375, 6378, 9238, 3747, 9365, 5170,
2357, 2628, 3958, 6588, 3629, 2899, 6315, 69, 8178, 3089, 9727, 3626,
2036, 6990, 4500, 2572, 4080, 9848, 5754, 4453, 9512, 8053, 6627, 2246,
8927, 472, 7891, 4437, 7025, 8694, 5370, 5688, 4155, 3837, 3878, 981,
8620, 6195, 7393, 5891, 2392, 639, 6373, 2370, 164, 5906, 5234, 5189,
1937, 5768, 4155, 6666, 2468, 1808, 190, 8900, 4879, 8553, 6126, 2474,
6687, 505, 3335, 7095, 4665, 7958, 2249, 5768, 8172, 6242, 9533, 5888,
5671, 6676, 8571, 8737, 2679, 5219, 3003, 6229, 1867, 4453, 9480, 4963,
4948, 3970, 4056, 3424, 7539, 6779, 7460, 4456, 8446, 7783, 2980, 954,
2587, 3849, 1207, 9980, 1639, 2001, 4488, 5476, 1658, 3745, 6519, 8435,
7260, 9084, 5276, 9196, 86, 2427, 5857, 3894, 6354, 167, 7210, 864,
5229, 9863, 4973, 6234, 2138, 3480, 6061, 7896, 5579, 3798, 3031, 1300,
3889, 8844, 4146, 6626, 6058, 3018, 3650, 4767, 4367, 5668, 9025, 5644,
7635, 3182, 9410, 3285, 334, 2844, 6486, 4476, 6709, 6887, 7807, 8383,
8157, 2734, 4643, 9850, 3486, 2547, 3964, 651, 87, 1562, 6373, 5975,
6560, 3602, 878, 6151, 1191, 9048, 5448, 9581, 2853, 934, 260, 5355,
4483, 1018, 7683, 6445, 797, 4397, 6355, 5040, 5616, 5134, 6962, 6875,
4666, 6695, 3870, 4902, 4535, 6141, 8404, 8278, 1076, 1574, 3166, 6048,
5574, 4716, 4152, 7331, 83, 5301, 3120, 6723, 4189, 6615, 4441, 4918,
2689, 9045, 7377, 6472, 4572, 8907, 3498, 8543, 6983, 7422, 73, 5191,
264, 8390, 9101, 7665, 8189, 3445, 6881, 5850],
[6294, 1079, 2380, 4363, 5449, 2244, 1024, 1590, 3751, 3617, 6866, 5695,
2373, 2221, 1043, 730, 9520, 7366, 6068, 2578, 647, 3158, 8943, 3895,
5447, 5110, 4196, 5788, 8689, 6579, 2653, 6152, 6987, 2114, 4041, 7903,
5611, 3062, 5237, 598, 2095, 7419, 5581, 8907, 5251, 9243, 6342, 3179,
6322, 7122, 8245, 938, 282, 5062, 8905, 2875, 4583, 8146, 993, 7000,
6763, 4002, 1418, 8015, 501, 4607, 1675, 5643, 4481, 2436, 3021, 6478,
1402, 8860, 7048, 9364, 2349, 9108, 6209, 4501, 4018, 4767, 9358, 8913,
2103, 2344, 4338, 5701, 654, 802, 4436, 5445, 7054, 9917, 2376, 1031,
8385, 5607, 4930, 4840, 7063, 7913, 5733, 8103, 2742, 1552, 8103, 7149,
89, 9998, 1692, 4219, 6999, 1233, 362, 3032, 2128, 6838, 2929, 5808,
3204, 8003, 6255, 6057, 3185, 6064, 3657, 680, 267, 4766, 9548, 5175,
283, 8530, 8963, 630, 3771, 8077, 6052, 7959, 5548, 5505, 3158, 8989,
1534, 8032, 8915, 4386, 3323, 7244, 2055, 9150, 9998, 8793, 4497, 2699,
5113, 4253, 2336, 2636, 4392, 8184, 115, 1589, 204, 2700, 744, 5017,
3011, 352, 2788, 9093, 206, 2853, 1565, 7507, 6882, 2027, 930, 4149,
5676, 3020, 5674, 6356, 9963, 2376, 6051, 7126, 9247, 9013, 5311, 6030,
2222, 2793, 7126, 9618, 5387, 5368, 444, 7047, 972, 464, 2548, 1285,
3151, 603, 6634, 726, 9179, 1927, 9356, 1630, 1715, 3305, 4403, 6262,
5813, 7854, 8108, 7407, 6349, 8084, 4114, 5039, 4405, 1143, 7957, 1783,
5799, 8325, 2372, 3780, 6626, 5931, 9388, 3126, 7239, 9810, 2001, 5231,
8123, 2986, 2783, 8377, 857, 9592, 3162, 207, 5805, 9190, 9877, 1242,
4576, 2939, 8267, 7344, 324, 3358, 8333, 8129, 2581, 509, 4406, 7154,
1032, 908, 857, 8629, 4451, 174, 7907, 5318, 8398, 7674, 7734, 9942,
7266, 7700, 5169, 8669, 5098, 8172, 3477, 7832, 2756, 5444, 42, 3244,
97, 1131, 1988, 4594, 5128, 5546, 6676, 3666, 5350, 6564, 5461, 1481,
9014, 3770, 7618, 3641, 7579, 873, 8887, 1912, 5609, 4176, 3432, 9274,
9664, 4914, 3516, 6898, 1482, 4524, 1931, 9582, 6840, 3369, 5923, 5030,
5230, 490, 8657, 6831, 2699, 8836, 3148, 4685, 8569, 8417, 1993, 5077,
4891, 942, 6492, 779, 6464, 5154, 5870, 8236, 8006, 6878, 2007, 4486,
7193, 2057, 1653, 3210, 3334, 4195, 4537, 5991, 2261, 7480, 5131, 3230,
5021, 5148, 6668, 7749, 4422, 7657, 191, 7718, 9060, 5585, 7678, 7381,
6714, 1634, 4312, 6097, 3010, 9177, 7865, 8238, 2576, 4103, 1821, 4721,
8700, 6203, 6338, 7400, 6627, 8106, 993, 6922, 7031, 762, 85, 4878,
8934, 9183, 2396, 3007, 3250, 1928, 4533, 9833, 6282, 3234, 6054, 979,
5004, 6252, 7482, 8014, 5312, 2776, 9911, 3269, 7444, 4960, 9483, 4867,
2907, 5665, 4453, 1916, 2411, 1485, 1560, 4831, 2539, 863, 2130, 5789,
5283, 8370, 7259, 4002, 1239, 4795, 3776, 4464, 2060, 8084, 5500, 7184,
4771, 8596, 2880, 2224, 6025, 2073, 4363, 6133, 1918, 2294, 8195, 5448,
9919, 8213, 7268, 5365, 2474, 1106, 5591, 7259, 5265, 8638, 9583, 7546,
3344, 9350, 1864, 3845, 7320, 6663, 7684, 5006, 6753, 8585, 6567, 1514,
5891, 899, 415, 879, 4364, 9263, 1618, 4239, 5376, 1927, 9646, 143,
9687, 5030, 5637, 6790, 9649, 303, 976, 9467, 7982, 438, 3185, 8449,
7631, 949, 8366, 7108, 4897, 9114, 4085, 5046, 7347, 2399, 4031, 622,
6010, 5131, 9727, 3209, 1199, 4702, 9114, 3118, 5756, 6286, 1651, 3336,
960, 7506, 9988, 5284, 3895, 3201, 6582, 6256, 7613, 5108, 2583, 1901,
9050, 3987, 7421, 5119, 2703, 2315, 6794, 5021, 2874, 9578, 5567, 5365,
1997, 5947, 5821, 4273, 4933, 7064, 4744, 7236, 9428, 2230, 3033, 8690,
471, 9690, 8605, 3707, 1893, 7285, 8398, 8032, 2228, 6858, 974, 6640,
7288, 9084, 3764, 9619, 5510, 1985, 9142, 936, 6927, 4206, 8823, 6775,
2847, 3869, 8014, 7655, 5235, 3649, 378, 5695, 8370, 2595, 3228, 2440,
9131, 1952, 9736, 3161, 4899, 9477, 8831, 3578, 2498, 4052, 5555, 4068,
9404, 3415, 2937, 6409, 2918, 9884, 4075, 5392, 143, 5043, 2225, 3739,
9780, 2164, 400, 4512, 5932, 5568, 7207, 2887, 3973, 2344, 1211, 2262,
3837, 423, 6825, 1516, 2316, 2649, 3442, 5059, 5619, 1374, 5576, 9163,
9985, 1675, 7562, 6490, 1829, 1054, 7505, 4550, 9658, 5301, 3312, 5452,
6718, 1331, 9903, 9690, 8947, 3569, 6991, 2549, 555, 1437, 4315, 9428,
5846, 648, 4182, 9867, 7662, 4436, 2974, 4430, 8695, 317, 546, 4789,
9710, 451, 1950, 3160, 8147, 2190, 8435, 1173, 1887, 884, 5269, 1835,
2116, 8429, 2152, 4928, 1073, 2959, 8040, 5852, 3079, 7206, 7983, 9235,
256, 9411, 385, 3251, 1801, 9196, 7438, 3873, 3378, 4967, 8641, 7031,
8576, 9876, 6421, 545, 8368, 8485, 4448, 9859, 3094, 5120, 8020, 5516,
2393, 5549, 3925, 1746, 4371, 3913, 8147, 8430, 8524, 1925, 1993, 5505,
2178, 6622, 3341, 3408, 7841, 8564, 5794, 824, 4990, 7430, 4837, 4980,
5411, 8240, 9401, 8964, 9379, 9150, 1041, 8026, 502, 5544, 916, 9650,
7441, 6383, 9117, 890, 2929, 8756, 2182, 3407, 5512, 2760, 9222, 3542,
6157, 9469, 3809, 1336, 485, 2220, 4034, 3435, 7237, 2969, 7127, 4120,
3927, 8435, 1335, 435, 8436, 257, 2527, 6558, 2017, 1583, 5178, 6286,
1573, 6574, 160, 588, 3691, 5648, 7470, 6858, 9043, 2764, 8175, 588,
7138, 4151, 760, 6118, 4039, 4715, 8626, 5917, 7278, 8307, 8663, 7932,
6978, 8953, 2866, 2594, 6193, 2794, 8287, 9231, 7754, 1481, 3568, 1786,
2254, 8819, 5439, 5578, 5300, 9545, 185, 1866, 5985, 56, 8874, 7946,
2598, 2202, 5177, 900, 3894, 9347, 3650, 3415, 4235, 256, 7640, 2024,
9138, 2653, 6105, 6826, 6700, 9762, 9329, 4764, 5620, 5056, 5384, 788,
6949, 6124, 9344, 7589, 8621, 6489, 5656, 8961, 6355, 7179, 2763, 2987,
5696, 1537, 2936, 9528, 8792, 6715, 5736, 7763, 8384, 3631, 6947, 3425,
4822, 2087, 2227, 4276, 1231, 7291, 8580, 9112, 8833, 2696, 9737, 2147,
1694, 1115, 7587, 569, 5330, 826, 2032, 5165, 776, 5243, 8155, 4738,
5753, 1461, 4980, 9589, 1526, 3857, 714, 4093, 9477, 7121, 4091, 8502,
677, 678, 5959, 8244, 873, 7174, 9628, 205, 6803, 2926, 8844, 6251,
4015, 7272, 7302, 3315, 8565, 4857, 2095, 9049, 9022, 7552, 615, 5638,
5005, 5383, 1501, 5589, 8388, 3238, 7089, 366, 6371, 9189, 7977, 8095,
7723, 6413, 4424, 5151, 2066, 9818, 5139, 1429, 2486, 2884, 7679, 6992,
2564, 2229, 5268, 3519, 5519, 6756, 148, 2742, 166, 4583, 7507, 7091,
9858, 5394, 6374, 5032, 7166, 3520, 8018, 240, 5797, 4324, 4040, 8064,
4893, 9291, 5044, 7598, 4717, 67, 5241, 5542, 4241, 6581, 489, 9062,
2985, 358, 8465, 6937, 9862, 5226, 2269, 2445, 9400, 3666, 4349, 9857,
2089, 9943, 9312, 2508, 9261, 3524, 243, 2062, 3631, 3478, 4744, 5032,
1396, 9944, 8945, 2273, 933, 7584, 9894, 9774, 5216, 2877, 8981, 7383,
155, 3133, 2621, 6220, 7811, 6358, 7217, 3800, 696, 3053, 5005, 1561,
1976, 8088, 7966, 4797, 3088, 6205, 9710, 7649, 1157, 1577, 3971, 6291,
5453, 1754, 5900, 2216, 7418, 8391, 9331, 5876, 4213, 2271, 4190, 6371,
5249, 2726, 1593, 6794, 9456, 4671, 844, 7694, 9557, 6704, 2527, 8525,
6741, 5927, 8489, 8766, 5116, 8920, 1092, 3, 7325, 4768, 1442, 4749,
1779, 8003, 8961, 6292, 4009, 7655, 4058, 6896, 554, 1960, 4146, 8610,
1247, 2763, 1682, 3195, 613, 1771, 2579, 2854, 421, 3833, 2761, 4274,
5444, 9105, 9473, 4040, 6677, 7676, 3035, 7154, 7103, 3869, 8450, 4798,
8888, 603, 7618, 6816, 5350, 3768, 8431, 4544, 2802, 6631, 6664, 2116,
1296, 3258, 2572, 3751, 4301, 6804, 268, 1783, 269, 1905, 3545, 96,
4461, 7870, 8904, 5485, 140, 4278, 9705, 4088, 6722, 7687, 63, 7128,
2607, 440, 201, 7088, 8257, 378, 5589, 1955, 9386, 6198, 3811, 7190,
6398, 8687, 5584, 1327, 74, 2613, 8739, 6479, 6143, 9848, 26, 9564,
8991, 2987, 7447, 5319, 2369, 7054, 7708, 7741, 768, 3528, 3883, 2662,
7816, 6041, 569, 9939, 2151, 6201, 2757, 4018, 7222, 1706, 6179, 9531,
5157, 3699, 9845, 7603, 5418, 7431, 4815, 3495, 8901, 2503, 526, 4099,
3585, 1621, 2583, 6398, 8255, 9809, 7001, 808, 9725, 5128, 8989, 419,
881, 9364, 5610, 3456, 6524, 2000, 3680, 7775, 4253, 1399, 211, 9536,
2711, 7596, 6891, 1582, 6050, 8817, 4518, 6173, 7332, 338, 1830, 1661,
1991, 8399, 3194, 5680, 3700, 1737, 4286, 718, 8044, 3628, 916, 3124,
2821, 9900, 8808, 2263, 1132, 7832, 2607, 8316, 5407, 2459, 1903, 7315,
4098, 7768, 7447, 380, 3096, 6659, 3913, 718, 4370, 733, 2773, 8559,
7058, 5072, 4794, 6424, 7348, 4148, 4558, 2718, 652, 922, 9821, 6418,
8221, 2824, 7782, 6189, 4456, 1989, 2121, 9722, 1176, 9711, 3213, 8102,
7720, 7367, 3590, 3767, 9097, 2853, 5489, 9470, 8306, 7253, 5404, 6040,
9727, 3941, 2594, 6442, 2133, 1166, 3618, 6977, 7409, 9866, 1050, 1971,
1155, 831, 8471, 7886, 458, 7737, 9441, 7236, 823, 4540, 2626, 1570,
2609, 5210, 4196, 5840, 840, 1761, 1994, 5020, 5883, 6128, 7689, 6179,
2728, 5351, 1677, 2147, 8633, 3203, 2485, 1396, 2436, 3612, 5830, 9942,
5194, 1316, 855, 8757, 4313, 7912, 8913, 3138, 6799, 6846, 5885, 9457,
196, 1798, 9553, 4720, 3048, 9649, 9240, 2239, 8655, 2314, 7161, 1641,
5231, 3527, 5561, 2096, 9126, 2481, 9151, 3423, 4717, 7930, 7277, 3800,
9489, 9239, 4917, 1256, 8035, 3247, 3315, 1763, 4709, 2157, 723, 2854,
6249, 8458, 3423, 9060, 2300, 9255, 8304, 7263, 7971, 1355, 5637, 5291,
899, 8684, 5083, 2725, 9058, 2951, 2370, 753, 5021, 6484, 4862, 724,
8190, 2136, 2159, 2855, 8526, 3911, 738, 8992, 4654, 3753, 8319, 1287,
6221, 8044, 2456, 6005, 2957, 598, 9003, 640, 3939, 4169, 38, 2932,
3008, 7000, 7318, 1561, 9439, 6033, 2392, 4101, 1319, 2351, 2630, 466,
2269, 9042, 7082, 427, 7876, 6529, 9613, 3684, 3434, 9919, 2381, 9816,
7402, 8491, 15, 2280, 7524, 298, 1706, 7962, 8001, 1034, 9128, 2951,
8256, 1184, 3575, 554, 390, 522, 7808, 8276, 3549, 5111, 9979, 8831,
8501, 9049, 7152, 9053, 7504, 111, 5794, 8308, 7898, 2239, 9023, 6054,
8752, 2111, 4186, 1080, 4207, 3175, 7969, 398, 80, 464, 1273, 6473,
171, 2845, 1919, 5888, 6270, 5381, 4885, 3817, 7186, 5745, 6674, 2540,
7342, 1854, 6191, 8040, 6626, 3563, 6783, 3147, 9680, 8743, 5362, 5110,
6304, 9803, 8175, 3581, 2998, 1782, 7722, 6221, 9028, 3101, 8611, 4584,
141, 4048, 5488, 9810, 6598, 6064, 1661, 7375, 1692, 6317, 9686, 8370,
3167, 8056, 4406, 1649, 5742, 482, 9394, 8000, 516, 4176, 168, 3986,
3813, 2161, 246, 4832, 6274, 8096, 3549, 9768, 3165, 4404, 6055, 846,
652, 8686, 7019, 2253, 5040, 1555, 7003, 2300, 8565, 5503, 3016, 3159,
4973, 4518, 6381, 3406, 5262, 9594, 7369, 8149, 4400, 845, 8159, 2080,
2688, 4510, 5215, 2674, 5833, 4683, 8469, 7948, 4115, 3092, 6835, 339,
592, 8534, 7525, 4170, 4424, 1488, 6673, 5292, 7345, 5016, 800, 3405,
8807, 3102, 6650, 791, 8329, 7372, 7746, 3999, 4466, 5921, 3117, 5697,
2315, 7914, 3046, 4268, 3103, 9074, 6910, 2176, 3141, 4544, 1402, 1737,
6780, 9549, 6811, 6705, 7727, 7760, 8907, 9911, 2049, 3920, 8839, 9075,
6141, 6628, 8306, 8991, 604, 4627, 797, 634, 188, 8097, 7460, 9880,
9853, 3857, 4406, 5899, 5313, 5962, 3062, 224, 6901, 728, 9001, 6786,
4429, 8847, 8805, 8730, 1581, 4084, 2338, 1259, 1332, 4867, 5186, 1867,
3646, 6311, 8558, 1885, 8557, 2782, 9062, 6638, 128, 4375, 5004, 746,
2322, 4612, 122, 6093, 2954, 8864, 7716, 2522, 516, 8176, 5268, 3297,
4295, 5734, 7301, 6372, 4136, 529, 3605, 9135, 9615, 3210, 529, 5425,
675, 6613, 9816, 9308, 9790, 5505, 481, 3306, 5643, 1851, 8291, 1198,
1784, 3926, 5077, 1541, 1502, 5968, 6732, 3696, 1992, 1312, 3584, 3342,
741, 4926, 1009, 7686, 5535, 7537, 2835, 5372, 2634, 8144, 1973, 1195,
4703, 3941, 1537, 6120, 3332, 5383, 7697, 7028, 7177, 163, 810, 8049,
2561, 7722, 7523, 3250, 9855, 5353, 1757, 3312, 4249, 8538, 3417, 1647,
3565, 423, 4861, 7601, 5086, 1731, 6681, 5079, 9812, 2161, 5430, 2217,
1656, 5575, 8153, 3005, 5089, 4616, 8515, 1925, 479, 7603, 6970, 2710,
7950, 4218, 4786, 8202, 9342, 3859, 6495, 6498, 1061, 7399, 5185, 4941,
4076, 6349, 2801, 2242, 527, 7960, 1074, 7896, 9934, 4841, 5967, 2899,
1470, 4332, 19, 3322, 7633, 8892, 5271, 1408, 7565, 2615, 6892, 5110,
7522, 7749, 6797, 7070, 1878, 1699, 3150, 8487, 2661, 6026, 1999, 2587,
2952, 2330, 4777, 6046, 4494, 4876, 6731, 830, 1200, 4450, 2556, 1018,
9704, 6018, 6517, 1202, 1839, 2265, 1720, 8220, 6604, 9300, 4985, 8622,
4704, 7081, 7494, 6202, 6489, 6696, 9424, 8959, 7880, 8562, 7096, 8075,
6859, 231, 4307, 1095, 8727, 1503, 5673, 4278, 404, 3626, 2726, 9906,
7818, 9818, 5590, 7976, 2004, 4263, 6264, 1518, 9534, 8860, 6752, 5161,
7319, 7968, 3560, 1246, 5924, 540, 1014, 7523, 1995, 809, 9692, 4355,
8347, 829, 3582, 7761, 5491, 3880, 8305, 5537, 9266, 9611, 6341, 7970,
7314, 9955, 3794, 3333, 4874, 2325, 2250, 2129, 7622, 103, 4799, 5417,
4235, 6025, 762, 1283, 6409, 3190, 2131, 1845, 5778, 1724, 7063, 4248,
3587, 7338, 8555, 3063, 6840, 1697, 4507, 9768]])
:: Invoke prefill:
failed to translate executables
<unknown>:0: error: 'llvm.fpext' op operand #0 must be floating point LLVM type or LLVM dialect-compatible vector of floating point LLVM type, but got 'vector<16xi8>'
<unknown>:0: note: see current operation: %295 = "llvm.fpext"(%284) : (vector<16xi8>) -> vector<16xf32>
source.mlir:16:10: error: failed to run translation of source executable to target executable for backend #hal.executable.target<"llvm-cpu", "embedded-elf-x86_64", {cpu = "znver4", cpu_features = "+prfchw,-cldemote,+avx,+aes,+sahf,+pclmul,-xop,+crc32,-amx-fp8,+xsaves,-avx512fp16,-usermsr,-sm4,-egpr,+sse4.1,+avx512ifma,+xsave,+sse4.2,-tsxldtrk,-sm3,-ptwrite,-widekl,-movrs,+invpcid,+64bit,+xsavec,-avx10.1-512,+avx512vpopcntdq,+cmov,-avx512vp2intersect,+avx512cd,+movbe,-avxvnniint8,-ccmp,-amx-int8,-kl,-avx10.1-256,+evex512,-avxvnni,-rtm,+adx,+avx2,-hreset,-movdiri,-serialize,-sha512,+vpclmulqdq,+avx512vl,-uintr,-cf,+clflushopt,-raoint,-cmpccxadd,+bmi,-amx-tile,+sse,-avx10.2-256,+gfni,-avxvnniint16,-amx-fp16,-zu,-ndd,+xsaveopt,+rdrnd,+avx512f,-amx-bf16,+avx512bf16,+avx512vnni,-push2pop2,+cx8,+avx512bw,+sse3,+pku,-nf,-amx-tf32,-amx-avx512,+fsgsbase,+clzero,+mwaitx,-lwp,+lzcnt,+sha,-movdir64b,-ppx,+wbnoinvd,-enqcmd,-amx-transpose,-avx10.2-512,-avxneconvert,-tbm,-pconfig,-amx-complex,+ssse3,+cx16,+bmi2,+fma,+popcnt,-avxifma,+f16c,+avx512bitalg,+rdpru,+clwb,+mmx,+sse2,+rdseed,+avx512vbmi2,-prefetchi,-amx-movrs,+rdpid,-fma4,+avx512vbmi,+shstk,+vaes,-waitpkg,-sgx,+fxsr,+avx512dq,+sse4a", data_layout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128", native_vector_size = 64 : i64, target_triple = "x86_64-unknown-unknown-eabi-elf"}>
%2 = linalg.batch_matmul_transpose_b ins(%arg0, %arg1 : tensor<4x2048x4096xf8E4M3FNUZ>, tensor<4x4096x4096xf8E4M3FNUZ>) outs(%1 : tensor<4x2048x4096xf32>) -> tensor<4x2048x4096xf32>
^
source.mlir:2:3: note: called from
func.func @main(%arg0: tensor<4x2048x4096xf8E4M3FNUZ>, %arg1: tensor<4x4096x4096xf8E4M3FNUZ>) -> tensor<4x2048x4096xf32> {
^
source.mlir:16:10: note: see current operation:
"hal.executable.variant"() ({
"hal.executable.export"() ({
^bb0(%arg3: !hal.device):
%570 = "arith.constant"() <{value = 256 : index}> : () -> index
%571 = "arith.constant"() <{value = 128 : index}> : () -> index
%572 = "arith.constant"() <{value = 4 : index}> : () -> index
"hal.return"(%570, %571, %572) : (index, index, index) -> ()
}) {layout = #hal.pipeline.layout<bindings = [#hal.pipeline.binding<storage_buffer, "ReadOnly|Indirect">, #hal.pipeline.binding<storage_buffer, Indirect>], flags = Indirect>, ordinal = 0 : index, sym_name = "main_dispatch_2_batch_mmt4d_4x128x256x4096x16x16x1_f8E4M3FNUZxf8E4M3FNUZxf32", workgroup_size = [1 : index, 1 : index, 1 : index]} : () -> ()
"builtin.module"() ({
"llvm.func"() <{CConv = #llvm.cconv<ccc>, arg_attrs = [{llvm.align = 16 : i64, llvm.noalias, llvm.nonnull, llvm.noundef}, {llvm.align = 16 : i64, llvm.noalias, llvm.nonnull, llvm.noundef}, {llvm.align = 16 : i64, llvm.noalias, llvm.nonnull, llvm.noundef}], function_type = !llvm.func<i32 (ptr, ptr, ptr)>, linkage = #llvm.linkage<external>, sym_name = "main_dispatch_2_batch_mmt4d_4x128x256x4096x16x16x1_f8E4M3FNUZxf8E4M3FNUZxf32", visibility_ = 0 : i64}> ({
^bb0(%arg0: !llvm.ptr, %arg1: !llvm.ptr, %arg2: !llvm.ptr):
%0 = "llvm.mlir.constant"() <{value = 15 : i64}> : () -> i64
%1 = "llvm.mlir.constant"() <{value = 14 : i64}> : () -> i64
%2 = "llvm.mlir.constant"() <{value = 13 : i64}> : () -> i64
%3 = "llvm.mlir.constant"() <{value = 12 : i64}> : () -> i64
%4 = "llvm.mlir.constant"() <{value = 11 : i64}> : () -> i64
%5 = "llvm.mlir.constant"() <{value = 10 : i64}> : () -> i64
%6 = "llvm.mlir.constant"() <{value = 9 : i64}> : () -> i64
%7 = "llvm.mlir.constant"() <{value = 8 : i64}> : () -> i64
%8 = "llvm.mlir.constant"() <{value = 7 : i64}> : () -> i64
%9 = "llvm.mlir.constant"() <{value = 6 : i64}> : () -> i64
%10 = "llvm.mlir.constant"() <{value = 5 : i64}> : () -> i64
%11 = "llvm.mlir.constant"() <{value = 4 : i64}> : () -> i64
%12 = "llvm.mlir.constant"() <{value = 3 : i64}> : () -> i64
%13 = "llvm.mlir.constant"() <{value = 2 : i64}> : () -> i64
%14 = "llvm.mlir.constant"() <{value = 1 : i64}> : () -> i64
%15 = "llvm.mlir.constant"() <{value = 0 : i32}> : () -> i32
%16 = "llvm.mlir.undef"() : () -> vector<16xf32>
%17 = "llvm.mlir.constant"() <{value = 0 : i64}> : () -> i64
%18 = "llvm.mlir.constant"() <{value = 256 : index}> : () -> i64
%19 = "llvm.mlir.constant"() <{value = 16777216 : index}> : () -> i64
%20 = "llvm.mlir.constant"() <{value = 64 : index}> : () -> i64
%21 = "llvm.mlir.constant"() <{value = true}> : () -> i1
%22 = "llvm.mlir.constant"() <{value = 65536 : index}> : () -> i64
%23 = "llvm.mlir.constant"() <{value = 8388608 : index}> : () -> i64
%24 = "llvm.mlir.constant"() <{value = 15 : index}> : () -> i64
%25 = "llvm.mlir.constant"() <{value = 14 : index}> : () -> i64
%26 = "llvm.mlir.constant"() <{value = 13 : index}> : () -> i64
%27 = "llvm.mlir.constant"() <{value = 12 : index}> : () -> i64
%28 = "llvm.mlir.constant"() <{value = 11 : index}> : () -> i64
%29 = "llvm.mlir.constant"() <{value = 10 : index}> : () -> i64
%30 = "llvm.mlir.constant"() <{value = 9 : index}> : () -> i64
%31 = "llvm.mlir.constant"() <{value = 8 : index}> : () -> i64
%32 = "llvm.mlir.constant"() <{value = 7 : index}> : () -> i64
%33 = "llvm.mlir.constant"() <{value = 6 : index}> : () -> i64
%34 = "llvm.mlir.constant"() <{value = 5 : index}> : () -> i64
%35 = "llvm.mlir.constant"() <{value = 4 : index}> : () -> i64
%36 = "llvm.mlir.constant"() <{value = 3 : index}> : () -> i64
%37 = "llvm.mlir.constant"() <{value = 2 : index}> : () -> i64
%38 = "llvm.mlir.constant"() <{value = 16 : index}> : () -> i64
%39 = "llvm.mlir.constant"() <{value = dense<0.000000e+00> : vector<16x16xf32>}> : () -> !llvm.array<16 x vector<16xf32>>
%40 = "llvm.mlir.constant"() <{value = 1 : index}> : () -> i64
%41 = "llvm.mlir.constant"() <{value = 4096 : index}> : () -> i64
%42 = "llvm.mlir.constant"() <{value = 0.000000e+00 : f32}> : () -> f32
%43 = "llvm.mlir.constant"() <{value = 0 : index}> : () -> i64
%44 = "llvm.load"(%arg1) <{ordering = 0 : i64}> : (!llvm.ptr) -> !llvm.struct<"iree_hal_executable_dispatch_state_v0_t", (i32, i32, i16, i16, i32, i32, i16, i8, i8, ptr, ptr, ptr)>
%45 = "llvm.extractvalue"(%44) <{position = array<i64: 10>}> : (!llvm.struct<"iree_hal_executable_dispatch_state_v0_t", (i32, i32, i16, i16, i32, i32, i16, i8, i8, ptr, ptr, ptr)>) -> !llvm.ptr
%46 = "llvm.load"(%45) <{ordering = 0 : i64}> : (!llvm.ptr) -> !llvm.ptr
"llvm.intr.assume"(%21, %46, %20) <{op_bundle_sizes = array<i32: 2>, op_bundle_tags = ["align"]}> : (i1, !llvm.ptr, i64) -> ()
%47 = "llvm.load"(%arg1) <{ordering = 0 : i64}> : (!llvm.ptr) -> !llvm.struct<"iree_hal_executable_dispatch_state_v0_t", (i32, i32, i16, i16, i32, i32, i16, i8, i8, ptr, ptr, ptr)>
%48 = "llvm.extractvalue"(%47) <{position = array<i64: 10>}> : (!llvm.struct<"iree_hal_executable_dispatch_state_v0_t", (i32, i32, i16, i16, i32, i32, i16, i8, i8, ptr, ptr, ptr)>) -> !llvm.ptr
%49 = "llvm.load"(%48) <{ordering = 0 : i64}> : (!llvm.ptr) -> !llvm.ptr
%50 = "llvm.getelementptr"(%49) <{elem_type = i8, rawConstantIndices = array<i32: 33554432>}> : (!llvm.ptr) -> !llvm.ptr
"llvm.intr.assume"(%21, %50, %20) <{op_bundle_sizes = array<i32: 2>, op_bundle_tags = ["align"]}> : (i1, !llvm.ptr, i64) -> ()
%51 = "llvm.load"(%arg1) <{ordering = 0 : i64}> : (!llvm.ptr) -> !llvm.struct<"iree_hal_executable_dispatch_state_v0_t", (i32, i32, i16, i16, i32, i32, i16, i8, i8, ptr, ptr, ptr)>
%52 = "llvm.extractvalue"(%51) <{position = array<i64: 10>}> : (!llvm.struct<"iree_hal_executable_dispatch_state_v0_t", (i32, i32, i16, i16, i32, i32, i16, i8, i8, ptr, ptr, ptr)>) -> !llvm.ptr
%53 = "llvm.getelementptr"(%52) <{elem_type = !llvm.ptr, rawConstantIndices = array<i32: 1>}> : (!llvm.ptr) -> !llvm.ptr
%54 = "llvm.load"(%53) <{ordering = 0 : i64}> : (!llvm.ptr) -> !llvm.ptr
%55 = "llvm.getelementptr"(%54) <{elem_type = f32, rawConstantIndices = array<i32: 25165824>}> : (!llvm.ptr) -> !llvm.ptr
"llvm.intr.assume"(%21, %55, %20) <{op_bundle_sizes = array<i32: 2>, op_bundle_tags = ["align"]}> : (i1, !llvm.ptr, i64) -> ()
%56 = "llvm.load"(%arg2) <{ordering = 0 : i64}> : (!llvm.ptr) -> !llvm.struct<"iree_hal_executable_workgroup_state_v0_t", (i32, i32, i16, i16, i32, ptr, i32)>
%57 = "llvm.extractvalue"(%56) <{position = array<i64: 0>}> : (!llvm.struct<"iree_hal_executable_workgroup_state_v0_t", (i32, i32, i16, i16, i32, ptr, i32)>) -> i32
%58 = "llvm.zext"(%57) : (i32) -> i64
%59 = "llvm.load"(%arg2) <{ordering = 0 : i64}> : (!llvm.ptr) -> !llvm.struct<"iree_hal_executable_workgroup_state_v0_t", (i32, i32, i16, i16, i32, ptr, i32)>
%60 = "llvm.extractvalue"(%59) <{position = array<i64: 1>}> : (!llvm.struct<"iree_hal_executable_workgroup_state_v0_t", (i32, i32, i16, i16, i32, ptr, i32)>) -> i32
%61 = "llvm.zext"(%60) : (i32) -> i64
%62 = "llvm.load"(%arg2) <{ordering = 0 : i64}> : (!llvm.ptr) -> !llvm.struct<"iree_hal_executable_workgroup_state_v0_t", (i32, i32, i16, i16, i32, ptr, i32)>
%63 = "llvm.extractvalue"(%62) <{position = array<i64: 2>}> : (!llvm.struct<"iree_hal_executable_workgroup_state_v0_t", (i32, i32, i16, i16, i32, ptr, i32)>) -> i16
%64 = "llvm.zext"(%63) : (i16) -> i64
"llvm.br"(%43)[^bb1] : (i64) -> ()
^bb1(%65: i64): // 2 preds: ^bb0, ^bb4
%66 = "llvm.icmp"(%65, %38) <{predicate = 2 : i64}> : (i64, i64) -> i1
"llvm.cond_br"(%66, %43)[^bb2, ^bb5] <{operandSegmentSizes = array<i32: 1, 1, 0>}> : (i1, i64) -> ()
^bb2(%67: i64): // 2 preds: ^bb1, ^bb3
%68 = "llvm.icmp"(%67, %38) <{predicate = 2 : i64}> : (i64, i64) -> i1
"llvm.cond_br"(%68)[^bb3, ^bb4] <{operandSegmentSizes = array<i32: 1, 0, 0>}> : (i1) -> ()
^bb3: // pred: ^bb2
%69 = "llvm.getelementptr"(%54) <{elem_type = f32, rawConstantIndices = array<i32: 25165824>}> : (!llvm.ptr) -> !llvm.ptr
%70 = "llvm.mul"(%64, %23) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%71 = "llvm.mul"(%61, %22) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%72 = "llvm.add"(%70, %71) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%73 = "llvm.mul"(%58, %18) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%74 = "llvm.add"(%72, %73) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%75 = "llvm.mul"(%65, %38) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%76 = "llvm.add"(%74, %75) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%77 = "llvm.add"(%76, %67) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%78 = "llvm.getelementptr"(%69, %77) <{elem_type = f32, rawConstantIndices = array<i32: -2147483648>}> : (!llvm.ptr, i64) -> !llvm.ptr
"llvm.store"(%42, %78) <{ordering = 0 : i64}> : (f32, !llvm.ptr) -> ()
%79 = "llvm.add"(%67, %40) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
"llvm.br"(%79)[^bb2] : (i64) -> ()
^bb4: // pred: ^bb2
%80 = "llvm.add"(%65, %40) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
"llvm.br"(%80)[^bb1] : (i64) -> ()
^bb5: // pred: ^bb1
%81 = "llvm.getelementptr"(%54) <{elem_type = f32, rawConstantIndices = array<i32: 25165824>}> : (!llvm.ptr) -> !llvm.ptr
%82 = "llvm.mul"(%64, %23) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%83 = "llvm.mul"(%61, %22) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%84 = "llvm.add"(%82, %83) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%85 = "llvm.mul"(%58, %18) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%86 = "llvm.add"(%84, %85) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%87 = "llvm.mul"(%43, %38) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%88 = "llvm.add"(%86, %87) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%89 = "llvm.add"(%88, %43) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%90 = "llvm.getelementptr"(%81, %89) <{elem_type = f32, rawConstantIndices = array<i32: -2147483648>}> : (!llvm.ptr, i64) -> !llvm.ptr
%91 = "llvm.load"(%90) <{alignment = 4 : i64, ordering = 0 : i64}> : (!llvm.ptr) -> vector<16xf32>
%92 = "llvm.insertvalue"(%39, %91) <{position = array<i64: 0>}> : (!llvm.array<16 x vector<16xf32>>, vector<16xf32>) -> !llvm.array<16 x vector<16xf32>>
%93 = "llvm.getelementptr"(%54) <{elem_type = f32, rawConstantIndices = array<i32: 25165824>}> : (!llvm.ptr) -> !llvm.ptr
%94 = "llvm.mul"(%64, %23) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%95 = "llvm.mul"(%61, %22) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%96 = "llvm.add"(%94, %95) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%97 = "llvm.mul"(%58, %18) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%98 = "llvm.add"(%96, %97) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%99 = "llvm.mul"(%40, %38) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%100 = "llvm.add"(%98, %99) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%101 = "llvm.add"(%100, %43) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%102 = "llvm.getelementptr"(%93, %101) <{elem_type = f32, rawConstantIndices = array<i32: -2147483648>}> : (!llvm.ptr, i64) -> !llvm.ptr
%103 = "llvm.load"(%102) <{alignment = 4 : i64, ordering = 0 : i64}> : (!llvm.ptr) -> vector<16xf32>
%104 = "llvm.insertvalue"(%92, %103) <{position = array<i64: 1>}> : (!llvm.array<16 x vector<16xf32>>, vector<16xf32>) -> !llvm.array<16 x vector<16xf32>>
%105 = "llvm.getelementptr"(%54) <{elem_type = f32, rawConstantIndices = array<i32: 25165824>}> : (!llvm.ptr) -> !llvm.ptr
%106 = "llvm.mul"(%64, %23) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%107 = "llvm.mul"(%61, %22) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%108 = "llvm.add"(%106, %107) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%109 = "llvm.mul"(%58, %18) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%110 = "llvm.add"(%108, %109) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%111 = "llvm.mul"(%37, %38) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%112 = "llvm.add"(%110, %111) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%113 = "llvm.add"(%112, %43) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%114 = "llvm.getelementptr"(%105, %113) <{elem_type = f32, rawConstantIndices = array<i32: -2147483648>}> : (!llvm.ptr, i64) -> !llvm.ptr
%115 = "llvm.load"(%114) <{alignment = 4 : i64, ordering = 0 : i64}> : (!llvm.ptr) -> vector<16xf32>
%116 = "llvm.insertvalue"(%104, %115) <{position = array<i64: 2>}> : (!llvm.array<16 x vector<16xf32>>, vector<16xf32>) -> !llvm.array<16 x vector<16xf32>>
%117 = "llvm.getelementptr"(%54) <{elem_type = f32, rawConstantIndices = array<i32: 25165824>}> : (!llvm.ptr) -> !llvm.ptr
%118 = "llvm.mul"(%64, %23) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%119 = "llvm.mul"(%61, %22) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%120 = "llvm.add"(%118, %119) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%121 = "llvm.mul"(%58, %18) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%122 = "llvm.add"(%120, %121) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%123 = "llvm.mul"(%36, %38) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%124 = "llvm.add"(%122, %123) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%125 = "llvm.add"(%124, %43) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%126 = "llvm.getelementptr"(%117, %125) <{elem_type = f32, rawConstantIndices = array<i32: -2147483648>}> : (!llvm.ptr, i64) -> !llvm.ptr
%127 = "llvm.load"(%126) <{alignment = 4 : i64, ordering = 0 : i64}> : (!llvm.ptr) -> vector<16xf32>
%128 = "llvm.insertvalue"(%116, %127) <{position = array<i64: 3>}> : (!llvm.array<16 x vector<16xf32>>, vector<16xf32>) -> !llvm.array<16 x vector<16xf32>>
%129 = "llvm.getelementptr"(%54) <{elem_type = f32, rawConstantIndices = array<i32: 25165824>}> : (!llvm.ptr) -> !llvm.ptr
%130 = "llvm.mul"(%64, %23) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%131 = "llvm.mul"(%61, %22) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%132 = "llvm.add"(%130, %131) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%133 = "llvm.mul"(%58, %18) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%134 = "llvm.add"(%132, %133) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%135 = "llvm.mul"(%35, %38) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%136 = "llvm.add"(%134, %135) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%137 = "llvm.add"(%136, %43) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%138 = "llvm.getelementptr"(%129, %137) <{elem_type = f32, rawConstantIndices = array<i32: -2147483648>}> : (!llvm.ptr, i64) -> !llvm.ptr
%139 = "llvm.load"(%138) <{alignment = 4 : i64, ordering = 0 : i64}> : (!llvm.ptr) -> vector<16xf32>
%140 = "llvm.insertvalue"(%128, %139) <{position = array<i64: 4>}> : (!llvm.array<16 x vector<16xf32>>, vector<16xf32>) -> !llvm.array<16 x vector<16xf32>>
%141 = "llvm.getelementptr"(%54) <{elem_type = f32, rawConstantIndices = array<i32: 25165824>}> : (!llvm.ptr) -> !llvm.ptr
%142 = "llvm.mul"(%64, %23) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%143 = "llvm.mul"(%61, %22) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%144 = "llvm.add"(%142, %143) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%145 = "llvm.mul"(%58, %18) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%146 = "llvm.add"(%144, %145) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%147 = "llvm.mul"(%34, %38) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%148 = "llvm.add"(%146, %147) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%149 = "llvm.add"(%148, %43) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%150 = "llvm.getelementptr"(%141, %149) <{elem_type = f32, rawConstantIndices = array<i32: -2147483648>}> : (!llvm.ptr, i64) -> !llvm.ptr
%151 = "llvm.load"(%150) <{alignment = 4 : i64, ordering = 0 : i64}> : (!llvm.ptr) -> vector<16xf32>
%152 = "llvm.insertvalue"(%140, %151) <{position = array<i64: 5>}> : (!llvm.array<16 x vector<16xf32>>, vector<16xf32>) -> !llvm.array<16 x vector<16xf32>>
%153 = "llvm.getelementptr"(%54) <{elem_type = f32, rawConstantIndices = array<i32: 25165824>}> : (!llvm.ptr) -> !llvm.ptr
%154 = "llvm.mul"(%64, %23) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%155 = "llvm.mul"(%61, %22) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%156 = "llvm.add"(%154, %155) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%157 = "llvm.mul"(%58, %18) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%158 = "llvm.add"(%156, %157) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%159 = "llvm.mul"(%33, %38) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%160 = "llvm.add"(%158, %159) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%161 = "llvm.add"(%160, %43) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%162 = "llvm.getelementptr"(%153, %161) <{elem_type = f32, rawConstantIndices = array<i32: -2147483648>}> : (!llvm.ptr, i64) -> !llvm.ptr
%163 = "llvm.load"(%162) <{alignment = 4 : i64, ordering = 0 : i64}> : (!llvm.ptr) -> vector<16xf32>
%164 = "llvm.insertvalue"(%152, %163) <{position = array<i64: 6>}> : (!llvm.array<16 x vector<16xf32>>, vector<16xf32>) -> !llvm.array<16 x vector<16xf32>>
%165 = "llvm.getelementptr"(%54) <{elem_type = f32, rawConstantIndices = array<i32: 25165824>}> : (!llvm.ptr) -> !llvm.ptr
%166 = "llvm.mul"(%64, %23) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%167 = "llvm.mul"(%61, %22) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%168 = "llvm.add"(%166, %167) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%169 = "llvm.mul"(%58, %18) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%170 = "llvm.add"(%168, %169) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%171 = "llvm.mul"(%32, %38) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%172 = "llvm.add"(%170, %171) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%173 = "llvm.add"(%172, %43) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%174 = "llvm.getelementptr"(%165, %173) <{elem_type = f32, rawConstantIndices = array<i32: -2147483648>}> : (!llvm.ptr, i64) -> !llvm.ptr
%175 = "llvm.load"(%174) <{alignment = 4 : i64, ordering = 0 : i64}> : (!llvm.ptr) -> vector<16xf32>
%176 = "llvm.insertvalue"(%164, %175) <{position = array<i64: 7>}> : (!llvm.array<16 x vector<16xf32>>, vector<16xf32>) -> !llvm.array<16 x vector<16xf32>>
%177 = "llvm.getelementptr"(%54) <{elem_type = f32, rawConstantIndices = array<i32: 25165824>}> : (!llvm.ptr) -> !llvm.ptr
%178 = "llvm.mul"(%64, %23) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%179 = "llvm.mul"(%61, %22) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%180 = "llvm.add"(%178, %179) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%181 = "llvm.mul"(%58, %18) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%182 = "llvm.add"(%180, %181) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%183 = "llvm.mul"(%31, %38) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%184 = "llvm.add"(%182, %183) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%185 = "llvm.add"(%184, %43) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%186 = "llvm.getelementptr"(%177, %185) <{elem_type = f32, rawConstantIndices = array<i32: -2147483648>}> : (!llvm.ptr, i64) -> !llvm.ptr
%187 = "llvm.load"(%186) <{alignment = 4 : i64, ordering = 0 : i64}> : (!llvm.ptr) -> vector<16xf32>
%188 = "llvm.insertvalue"(%176, %187) <{position = array<i64: 8>}> : (!llvm.array<16 x vector<16xf32>>, vector<16xf32>) -> !llvm.array<16 x vector<16xf32>>
%189 = "llvm.getelementptr"(%54) <{elem_type = f32, rawConstantIndices = array<i32: 25165824>}> : (!llvm.ptr) -> !llvm.ptr
%190 = "llvm.mul"(%64, %23) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%191 = "llvm.mul"(%61, %22) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%192 = "llvm.add"(%190, %191) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%193 = "llvm.mul"(%58, %18) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%194 = "llvm.add"(%192, %193) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%195 = "llvm.mul"(%30, %38) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%196 = "llvm.add"(%194, %195) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%197 = "llvm.add"(%196, %43) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%198 = "llvm.getelementptr"(%189, %197) <{elem_type = f32, rawConstantIndices = array<i32: -2147483648>}> : (!llvm.ptr, i64) -> !llvm.ptr
%199 = "llvm.load"(%198) <{alignment = 4 : i64, ordering = 0 : i64}> : (!llvm.ptr) -> vector<16xf32>
%200 = "llvm.insertvalue"(%188, %199) <{position = array<i64: 9>}> : (!llvm.array<16 x vector<16xf32>>, vector<16xf32>) -> !llvm.array<16 x vector<16xf32>>
%201 = "llvm.getelementptr"(%54) <{elem_type = f32, rawConstantIndices = array<i32: 25165824>}> : (!llvm.ptr) -> !llvm.ptr
%202 = "llvm.mul"(%64, %23) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%203 = "llvm.mul"(%61, %22) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%204 = "llvm.add"(%202, %203) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%205 = "llvm.mul"(%58, %18) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%206 = "llvm.add"(%204, %205) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%207 = "llvm.mul"(%29, %38) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%208 = "llvm.add"(%206, %207) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%209 = "llvm.add"(%208, %43) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%210 = "llvm.getelementptr"(%201, %209) <{elem_type = f32, rawConstantIndices = array<i32: -2147483648>}> : (!llvm.ptr, i64) -> !llvm.ptr
%211 = "llvm.load"(%210) <{alignment = 4 : i64, ordering = 0 : i64}> : (!llvm.ptr) -> vector<16xf32>
%212 = "llvm.insertvalue"(%200, %211) <{position = array<i64: 10>}> : (!llvm.array<16 x vector<16xf32>>, vector<16xf32>) -> !llvm.array<16 x vector<16xf32>>
%213 = "llvm.getelementptr"(%54) <{elem_type = f32, rawConstantIndices = array<i32: 25165824>}> : (!llvm.ptr) -> !llvm.ptr
%214 = "llvm.mul"(%64, %23) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%215 = "llvm.mul"(%61, %22) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%216 = "llvm.add"(%214, %215) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%217 = "llvm.mul"(%58, %18) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%218 = "llvm.add"(%216, %217) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%219 = "llvm.mul"(%28, %38) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%220 = "llvm.add"(%218, %219) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%221 = "llvm.add"(%220, %43) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%222 = "llvm.getelementptr"(%213, %221) <{elem_type = f32, rawConstantIndices = array<i32: -2147483648>}> : (!llvm.ptr, i64) -> !llvm.ptr
%223 = "llvm.load"(%222) <{alignment = 4 : i64, ordering = 0 : i64}> : (!llvm.ptr) -> vector<16xf32>
%224 = "llvm.insertvalue"(%212, %223) <{position = array<i64: 11>}> : (!llvm.array<16 x vector<16xf32>>, vector<16xf32>) -> !llvm.array<16 x vector<16xf32>>
%225 = "llvm.getelementptr"(%54) <{elem_type = f32, rawConstantIndices = array<i32: 25165824>}> : (!llvm.ptr) -> !llvm.ptr
%226 = "llvm.mul"(%64, %23) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%227 = "llvm.mul"(%61, %22) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%228 = "llvm.add"(%226, %227) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%229 = "llvm.mul"(%58, %18) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%230 = "llvm.add"(%228, %229) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%231 = "llvm.mul"(%27, %38) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%232 = "llvm.add"(%230, %231) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%233 = "llvm.add"(%232, %43) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%234 = "llvm.getelementptr"(%225, %233) <{elem_type = f32, rawConstantIndices = array<i32: -2147483648>}> : (!llvm.ptr, i64) -> !llvm.ptr
%235 = "llvm.load"(%234) <{alignment = 4 : i64, ordering = 0 : i64}> : (!llvm.ptr) -> vector<16xf32>
%236 = "llvm.insertvalue"(%224, %235) <{position = array<i64: 12>}> : (!llvm.array<16 x vector<16xf32>>, vector<16xf32>) -> !llvm.array<16 x vector<16xf32>>
%237 = "llvm.getelementptr"(%54) <{elem_type = f32, rawConstantIndices = array<i32: 25165824>}> : (!llvm.ptr) -> !llvm.ptr
%238 = "llvm.mul"(%64, %23) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%239 = "llvm.mul"(%61, %22) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%240 = "llvm.add"(%238, %239) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%241 = "llvm.mul"(%58, %18) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%242 = "llvm.add"(%240, %241) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%243 = "llvm.mul"(%26, %38) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%244 = "llvm.add"(%242, %243) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%245 = "llvm.add"(%244, %43) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%246 = "llvm.getelementptr"(%237, %245) <{elem_type = f32, rawConstantIndices = array<i32: -2147483648>}> : (!llvm.ptr, i64) -> !llvm.ptr
%247 = "llvm.load"(%246) <{alignment = 4 : i64, ordering = 0 : i64}> : (!llvm.ptr) -> vector<16xf32>
%248 = "llvm.insertvalue"(%236, %247) <{position = array<i64: 13>}> : (!llvm.array<16 x vector<16xf32>>, vector<16xf32>) -> !llvm.array<16 x vector<16xf32>>
%249 = "llvm.getelementptr"(%54) <{elem_type = f32, rawConstantIndices = array<i32: 25165824>}> : (!llvm.ptr) -> !llvm.ptr
%250 = "llvm.mul"(%64, %23) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%251 = "llvm.mul"(%61, %22) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%252 = "llvm.add"(%250, %251) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%253 = "llvm.mul"(%58, %18) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%254 = "llvm.add"(%252, %253) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%255 = "llvm.mul"(%25, %38) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%256 = "llvm.add"(%254, %255) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%257 = "llvm.add"(%256, %43) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%258 = "llvm.getelementptr"(%249, %257) <{elem_type = f32, rawConstantIndices = array<i32: -2147483648>}> : (!llvm.ptr, i64) -> !llvm.ptr
%259 = "llvm.load"(%258) <{alignment = 4 : i64, ordering = 0 : i64}> : (!llvm.ptr) -> vector<16xf32>
%260 = "llvm.insertvalue"(%248, %259) <{position = array<i64: 14>}> : (!llvm.array<16 x vector<16xf32>>, vector<16xf32>) -> !llvm.array<16 x vector<16xf32>>
%261 = "llvm.getelementptr"(%54) <{elem_type = f32, rawConstantIndices = array<i32: 25165824>}> : (!llvm.ptr) -> !llvm.ptr
%262 = "llvm.mul"(%64, %23) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%263 = "llvm.mul"(%61, %22) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%264 = "llvm.add"(%262, %263) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%265 = "llvm.mul"(%58, %18) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%266 = "llvm.add"(%264, %265) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%267 = "llvm.mul"(%24, %38) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%268 = "llvm.add"(%266, %267) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%269 = "llvm.add"(%268, %43) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%270 = "llvm.getelementptr"(%261, %269) <{elem_type = f32, rawConstantIndices = array<i32: -2147483648>}> : (!llvm.ptr, i64) -> !llvm.ptr
%271 = "llvm.load"(%270) <{alignment = 4 : i64, ordering = 0 : i64}> : (!llvm.ptr) -> vector<16xf32>
%272 = "llvm.insertvalue"(%260, %271) <{position = array<i64: 15>}> : (!llvm.array<16 x vector<16xf32>>, vector<16xf32>) -> !llvm.array<16 x vector<16xf32>>
"llvm.br"(%43, %272)[^bb6] : (i64, !llvm.array<16 x vector<16xf32>>) -> ()
^bb6(%273: i64, %274: !llvm.array<16 x vector<16xf32>>): // 2 preds: ^bb5, ^bb7
%275 = "llvm.icmp"(%273, %41) <{predicate = 2 : i64}> : (i64, i64) -> i1
"llvm.cond_br"(%275)[^bb7, ^bb8] <{operandSegmentSizes = array<i32: 1, 0, 0>}> : (i1) -> ()
^bb7: // pred: ^bb6
%276 = "llvm.mul"(%64, %23) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%277 = "llvm.mul"(%61, %22) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%278 = "llvm.add"(%276, %277) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%279 = "llvm.mul"(%273, %38) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%280 = "llvm.add"(%278, %279) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%281 = "llvm.add"(%280, %43) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%282 = "llvm.add"(%281, %43) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%283 = "llvm.getelementptr"(%46, %282) <{elem_type = i8, rawConstantIndices = array<i32: -2147483648>}> : (!llvm.ptr, i64) -> !llvm.ptr
%284 = "llvm.load"(%283) <{alignment = 1 : i64, ordering = 0 : i64}> : (!llvm.ptr) -> vector<16xi8>
%285 = "llvm.getelementptr"(%49) <{elem_type = i8, rawConstantIndices = array<i32: 33554432>}> : (!llvm.ptr) -> !llvm.ptr
%286 = "llvm.mul"(%64, %19) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%287 = "llvm.mul"(%58, %22) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%288 = "llvm.add"(%286, %287) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%289 = "llvm.mul"(%273, %38) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%290 = "llvm.add"(%288, %289) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%291 = "llvm.add"(%290, %43) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%292 = "llvm.add"(%291, %43) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%293 = "llvm.getelementptr"(%285, %292) <{elem_type = i8, rawConstantIndices = array<i32: -2147483648>}> : (!llvm.ptr, i64) -> !llvm.ptr
%294 = "llvm.load"(%293) <{alignment = 1 : i64, ordering = 0 : i64}> : (!llvm.ptr) -> vector<16xi8>
%295 = "llvm.fpext"(%284) : (vector<16xi8>) -> vector<16xf32>
%296 = "llvm.fpext"(%294) : (vector<16xi8>) -> vector<16xf32>
%297 = "llvm.extractelement"(%295, %17) : (vector<16xf32>, i64) -> f32
%298 = "llvm.insertelement"(%16, %297, %15) : (vector<16xf32>, f32, i32) -> vector<16xf32>
%299 = "llvm.shufflevector"(%298, %16) <{mask = array<i32: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0>}> : (vector<16xf32>, vector<16xf32>) -> vector<16xf32>
%300 = "llvm.extractvalue"(%274) <{position = array<i64: 0>}> : (!llvm.array<16 x vector<16xf32>>) -> vector<16xf32>
%301 = "llvm.intr.fmuladd"(%299, %296, %300) <{fastmathFlags = #llvm.fastmath<none>}> : (vector<16xf32>, vector<16xf32>, vector<16xf32>) -> vector<16xf32>
%302 = "llvm.insertvalue"(%39, %301) <{position = array<i64: 0>}> : (!llvm.array<16 x vector<16xf32>>, vector<16xf32>) -> !llvm.array<16 x vector<16xf32>>
%303 = "llvm.extractelement"(%295, %14) : (vector<16xf32>, i64) -> f32
%304 = "llvm.insertelement"(%16, %303, %15) : (vector<16xf32>, f32, i32) -> vector<16xf32>
%305 = "llvm.shufflevector"(%304, %16) <{mask = array<i32: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0>}> : (vector<16xf32>, vector<16xf32>) -> vector<16xf32>
%306 = "llvm.extractvalue"(%274) <{position = array<i64: 1>}> : (!llvm.array<16 x vector<16xf32>>) -> vector<16xf32>
%307 = "llvm.intr.fmuladd"(%305, %296, %306) <{fastmathFlags = #llvm.fastmath<none>}> : (vector<16xf32>, vector<16xf32>, vector<16xf32>) -> vector<16xf32>
%308 = "llvm.insertvalue"(%302, %307) <{position = array<i64: 1>}> : (!llvm.array<16 x vector<16xf32>>, vector<16xf32>) -> !llvm.array<16 x vector<16xf32>>
%309 = "llvm.extractelement"(%295, %13) : (vector<16xf32>, i64) -> f32
%310 = "llvm.insertelement"(%16, %309, %15) : (vector<16xf32>, f32, i32) -> vector<16xf32>
%311 = "llvm.shufflevector"(%310, %16) <{mask = array<i32: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0>}> : (vector<16xf32>, vector<16xf32>) -> vector<16xf32>
%312 = "llvm.extractvalue"(%274) <{position = array<i64: 2>}> : (!llvm.array<16 x vector<16xf32>>) -> vector<16xf32>
%313 = "llvm.intr.fmuladd"(%311, %296, %312) <{fastmathFlags = #llvm.fastmath<none>}> : (vector<16xf32>, vector<16xf32>, vector<16xf32>) -> vector<16xf32>
%314 = "llvm.insertvalue"(%308, %313) <{position = array<i64: 2>}> : (!llvm.array<16 x vector<16xf32>>, vector<16xf32>) -> !llvm.array<16 x vector<16xf32>>
%315 = "llvm.extractelement"(%295, %12) : (vector<16xf32>, i64) -> f32
%316 = "llvm.insertelement"(%16, %315, %15) : (vector<16xf32>, f32, i32) -> vector<16xf32>
%317 = "llvm.shufflevector"(%316, %16) <{mask = array<i32: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0>}> : (vector<16xf32>, vector<16xf32>) -> vector<16xf32>
%318 = "llvm.extractvalue"(%274) <{position = array<i64: 3>}> : (!llvm.array<16 x vector<16xf32>>) -> vector<16xf32>
%319 = "llvm.intr.fmuladd"(%317, %296, %318) <{fastmathFlags = #llvm.fastmath<none>}> : (vector<16xf32>, vector<16xf32>, vector<16xf32>) -> vector<16xf32>
%320 = "llvm.insertvalue"(%314, %319) <{position = array<i64: 3>}> : (!llvm.array<16 x vector<16xf32>>, vector<16xf32>) -> !llvm.array<16 x vector<16xf32>>
%321 = "llvm.extractelement"(%295, %11) : (vector<16xf32>, i64) -> f32
%322 = "llvm.insertelement"(%16, %321, %15) : (vector<16xf32>, f32, i32) -> vector<16xf32>
%323 = "llvm.shufflevector"(%322, %16) <{mask = array<i32: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0>}> : (vector<16xf32>, vector<16xf32>) -> vector<16xf32>
%324 = "llvm.extractvalue"(%274) <{position = array<i64: 4>}> : (!llvm.array<16 x vector<16xf32>>) -> vector<16xf32>
%325 = "llvm.intr.fmuladd"(%323, %296, %324) <{fastmathFlags = #llvm.fastmath<none>}> : (vector<16xf32>, vector<16xf32>, vector<16xf32>) -> vector<16xf32>
%326 = "llvm.insertvalue"(%320, %325) <{position = array<i64: 4>}> : (!llvm.array<16 x vector<16xf32>>, vector<16xf32>) -> !llvm.array<16 x vector<16xf32>>
%327 = "llvm.extractelement"(%295, %10) : (vector<16xf32>, i64) -> f32
%328 = "llvm.insertelement"(%16, %327, %15) : (vector<16xf32>, f32, i32) -> vector<16xf32>
%329 = "llvm.shufflevector"(%328, %16) <{mask = array<i32: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0>}> : (vector<16xf32>, vector<16xf32>) -> vector<16xf32>
%330 = "llvm.extractvalue"(%274) <{position = array<i64: 5>}> : (!llvm.array<16 x vector<16xf32>>) -> vector<16xf32>
%331 = "llvm.intr.fmuladd"(%329, %296, %330) <{fastmathFlags = #llvm.fastmath<none>}> : (vector<16xf32>, vector<16xf32>, vector<16xf32>) -> vector<16xf32>
%332 = "llvm.insertvalue"(%326, %331) <{position = array<i64: 5>}> : (!llvm.array<16 x vector<16xf32>>, vector<16xf32>) -> !llvm.array<16 x vector<16xf32>>
%333 = "llvm.extractelement"(%295, %9) : (vector<16xf32>, i64) -> f32
%334 = "llvm.insertelement"(%16, %333, %15) : (vector<16xf32>, f32, i32) -> vector<16xf32>
%335 = "llvm.shufflevector"(%334, %16) <{mask = array<i32: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0>}> : (vector<16xf32>, vector<16xf32>) -> vector<16xf32>
%336 = "llvm.extractvalue"(%274) <{position = array<i64: 6>}> : (!llvm.array<16 x vector<16xf32>>) -> vector<16xf32>
%337 = "llvm.intr.fmuladd"(%335, %296, %336) <{fastmathFlags = #llvm.fastmath<none>}> : (vector<16xf32>, vector<16xf32>, vector<16xf32>) -> vector<16xf32>
%338 = "llvm.insertvalue"(%332, %337) <{position = array<i64: 6>}> : (!llvm.array<16 x vector<16xf32>>, vector<16xf32>) -> !llvm.array<16 x vector<16xf32>>
%339 = "llvm.extractelement"(%295, %8) : (vector<16xf32>, i64) -> f32
%340 = "llvm.insertelement"(%16, %339, %15) : (vector<16xf32>, f32, i32) -> vector<16xf32>
%341 = "llvm.shufflevector"(%340, %16) <{mask = array<i32: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0>}> : (vector<16xf32>, vector<16xf32>) -> vector<16xf32>
%342 = "llvm.extractvalue"(%274) <{position = array<i64: 7>}> : (!llvm.array<16 x vector<16xf32>>) -> vector<16xf32>
%343 = "llvm.intr.fmuladd"(%341, %296, %342) <{fastmathFlags = #llvm.fastmath<none>}> : (vector<16xf32>, vector<16xf32>, vector<16xf32>) -> vector<16xf32>
%344 = "llvm.insertvalue"(%338, %343) <{position = array<i64: 7>}> : (!llvm.array<16 x vector<16xf32>>, vector<16xf32>) -> !llvm.array<16 x vector<16xf32>>
%345 = "llvm.extractelement"(%295, %7) : (vector<16xf32>, i64) -> f32
%346 = "llvm.insertelement"(%16, %345, %15) : (vector<16xf32>, f32, i32) -> vector<16xf32>
%347 = "llvm.shufflevector"(%346, %16) <{mask = array<i32: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0>}> : (vector<16xf32>, vector<16xf32>) -> vector<16xf32>
%348 = "llvm.extractvalue"(%274) <{position = array<i64: 8>}> : (!llvm.array<16 x vector<16xf32>>) -> vector<16xf32>
%349 = "llvm.intr.fmuladd"(%347, %296, %348) <{fastmathFlags = #llvm.fastmath<none>}> : (vector<16xf32>, vector<16xf32>, vector<16xf32>) -> vector<16xf32>
%350 = "llvm.insertvalue"(%344, %349) <{position = array<i64: 8>}> : (!llvm.array<16 x vector<16xf32>>, vector<16xf32>) -> !llvm.array<16 x vector<16xf32>>
%351 = "llvm.extractelement"(%295, %6) : (vector<16xf32>, i64) -> f32
%352 = "llvm.insertelement"(%16, %351, %15) : (vector<16xf32>, f32, i32) -> vector<16xf32>
%353 = "llvm.shufflevector"(%352, %16) <{mask = array<i32: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0>}> : (vector<16xf32>, vector<16xf32>) -> vector<16xf32>
%354 = "llvm.extractvalue"(%274) <{position = array<i64: 9>}> : (!llvm.array<16 x vector<16xf32>>) -> vector<16xf32>
%355 = "llvm.intr.fmuladd"(%353, %296, %354) <{fastmathFlags = #llvm.fastmath<none>}> : (vector<16xf32>, vector<16xf32>, vector<16xf32>) -> vector<16xf32>
%356 = "llvm.insertvalue"(%350, %355) <{position = array<i64: 9>}> : (!llvm.array<16 x vector<16xf32>>, vector<16xf32>) -> !llvm.array<16 x vector<16xf32>>
%357 = "llvm.extractelement"(%295, %5) : (vector<16xf32>, i64) -> f32
%358 = "llvm.insertelement"(%16, %357, %15) : (vector<16xf32>, f32, i32) -> vector<16xf32>
%359 = "llvm.shufflevector"(%358, %16) <{mask = array<i32: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0>}> : (vector<16xf32>, vector<16xf32>) -> vector<16xf32>
%360 = "llvm.extractvalue"(%274) <{position = array<i64: 10>}> : (!llvm.array<16 x vector<16xf32>>) -> vector<16xf32>
%361 = "llvm.intr.fmuladd"(%359, %296, %360) <{fastmathFlags = #llvm.fastmath<none>}> : (vector<16xf32>, vector<16xf32>, vector<16xf32>) -> vector<16xf32>
%362 = "llvm.insertvalue"(%356, %361) <{position = array<i64: 10>}> : (!llvm.array<16 x vector<16xf32>>, vector<16xf32>) -> !llvm.array<16 x vector<16xf32>>
%363 = "llvm.extractelement"(%295, %4) : (vector<16xf32>, i64) -> f32
%364 = "llvm.insertelement"(%16, %363, %15) : (vector<16xf32>, f32, i32) -> vector<16xf32>
%365 = "llvm.shufflevector"(%364, %16) <{mask = array<i32: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0>}> : (vector<16xf32>, vector<16xf32>) -> vector<16xf32>
%366 = "llvm.extractvalue"(%274) <{position = array<i64: 11>}> : (!llvm.array<16 x vector<16xf32>>) -> vector<16xf32>
%367 = "llvm.intr.fmuladd"(%365, %296, %366) <{fastmathFlags = #llvm.fastmath<none>}> : (vector<16xf32>, vector<16xf32>, vector<16xf32>) -> vector<16xf32>
%368 = "llvm.insertvalue"(%362, %367) <{position = array<i64: 11>}> : (!llvm.array<16 x vector<16xf32>>, vector<16xf32>) -> !llvm.array<16 x vector<16xf32>>
%369 = "llvm.extractelement"(%295, %3) : (vector<16xf32>, i64) -> f32
%370 = "llvm.insertelement"(%16, %369, %15) : (vector<16xf32>, f32, i32) -> vector<16xf32>
%371 = "llvm.shufflevector"(%370, %16) <{mask = array<i32: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0>}> : (vector<16xf32>, vector<16xf32>) -> vector<16xf32>
%372 = "llvm.extractvalue"(%274) <{position = array<i64: 12>}> : (!llvm.array<16 x vector<16xf32>>) -> vector<16xf32>
%373 = "llvm.intr.fmuladd"(%371, %296, %372) <{fastmathFlags = #llvm.fastmath<none>}> : (vector<16xf32>, vector<16xf32>, vector<16xf32>) -> vector<16xf32>
%374 = "llvm.insertvalue"(%368, %373) <{position = array<i64: 12>}> : (!llvm.array<16 x vector<16xf32>>, vector<16xf32>) -> !llvm.array<16 x vector<16xf32>>
%375 = "llvm.extractelement"(%295, %2) : (vector<16xf32>, i64) -> f32
%376 = "llvm.insertelement"(%16, %375, %15) : (vector<16xf32>, f32, i32) -> vector<16xf32>
%377 = "llvm.shufflevector"(%376, %16) <{mask = array<i32: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0>}> : (vector<16xf32>, vector<16xf32>) -> vector<16xf32>
%378 = "llvm.extractvalue"(%274) <{position = array<i64: 13>}> : (!llvm.array<16 x vector<16xf32>>) -> vector<16xf32>
%379 = "llvm.intr.fmuladd"(%377, %296, %378) <{fastmathFlags = #llvm.fastmath<none>}> : (vector<16xf32>, vector<16xf32>, vector<16xf32>) -> vector<16xf32>
%380 = "llvm.insertvalue"(%374, %379) <{position = array<i64: 13>}> : (!llvm.array<16 x vector<16xf32>>, vector<16xf32>) -> !llvm.array<16 x vector<16xf32>>
%381 = "llvm.extractelement"(%295, %1) : (vector<16xf32>, i64) -> f32
%382 = "llvm.insertelement"(%16, %381, %15) : (vector<16xf32>, f32, i32) -> vector<16xf32>
%383 = "llvm.shufflevector"(%382, %16) <{mask = array<i32: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0>}> : (vector<16xf32>, vector<16xf32>) -> vector<16xf32>
%384 = "llvm.extractvalue"(%274) <{position = array<i64: 14>}> : (!llvm.array<16 x vector<16xf32>>) -> vector<16xf32>
%385 = "llvm.intr.fmuladd"(%383, %296, %384) <{fastmathFlags = #llvm.fastmath<none>}> : (vector<16xf32>, vector<16xf32>, vector<16xf32>) -> vector<16xf32>
%386 = "llvm.insertvalue"(%380, %385) <{position = array<i64: 14>}> : (!llvm.array<16 x vector<16xf32>>, vector<16xf32>) -> !llvm.array<16 x vector<16xf32>>
%387 = "llvm.extractelement"(%295, %0) : (vector<16xf32>, i64) -> f32
%388 = "llvm.insertelement"(%16, %387, %15) : (vector<16xf32>, f32, i32) -> vector<16xf32>
%389 = "llvm.shufflevector"(%388, %16) <{mask = array<i32: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0>}> : (vector<16xf32>, vector<16xf32>) -> vector<16xf32>
%390 = "llvm.extractvalue"(%274) <{position = array<i64: 15>}> : (!llvm.array<16 x vector<16xf32>>) -> vector<16xf32>
%391 = "llvm.intr.fmuladd"(%389, %296, %390) <{fastmathFlags = #llvm.fastmath<none>}> : (vector<16xf32>, vector<16xf32>, vector<16xf32>) -> vector<16xf32>
%392 = "llvm.insertvalue"(%386, %391) <{position = array<i64: 15>}> : (!llvm.array<16 x vector<16xf32>>, vector<16xf32>) -> !llvm.array<16 x vector<16xf32>>
%393 = "llvm.add"(%273, %40) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
"llvm.br"(%393, %392)[^bb6] : (i64, !llvm.array<16 x vector<16xf32>>) -> ()
^bb8: // pred: ^bb6
%394 = "llvm.extractvalue"(%274) <{position = array<i64: 0>}> : (!llvm.array<16 x vector<16xf32>>) -> vector<16xf32>
%395 = "llvm.getelementptr"(%54) <{elem_type = f32, rawConstantIndices = array<i32: 25165824>}> : (!llvm.ptr) -> !llvm.ptr
%396 = "llvm.mul"(%64, %23) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%397 = "llvm.mul"(%61, %22) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%398 = "llvm.add"(%396, %397) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%399 = "llvm.mul"(%58, %18) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%400 = "llvm.add"(%398, %399) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%401 = "llvm.mul"(%43, %38) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%402 = "llvm.add"(%400, %401) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%403 = "llvm.add"(%402, %43) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%404 = "llvm.getelementptr"(%395, %403) <{elem_type = f32, rawConstantIndices = array<i32: -2147483648>}> : (!llvm.ptr, i64) -> !llvm.ptr
"llvm.store"(%394, %404) <{alignment = 4 : i64, ordering = 0 : i64}> : (vector<16xf32>, !llvm.ptr) -> ()
%405 = "llvm.extractvalue"(%274) <{position = array<i64: 1>}> : (!llvm.array<16 x vector<16xf32>>) -> vector<16xf32>
%406 = "llvm.getelementptr"(%54) <{elem_type = f32, rawConstantIndices = array<i32: 25165824>}> : (!llvm.ptr) -> !llvm.ptr
%407 = "llvm.mul"(%64, %23) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%408 = "llvm.mul"(%61, %22) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%409 = "llvm.add"(%407, %408) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%410 = "llvm.mul"(%58, %18) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%411 = "llvm.add"(%409, %410) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%412 = "llvm.mul"(%40, %38) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%413 = "llvm.add"(%411, %412) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%414 = "llvm.add"(%413, %43) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%415 = "llvm.getelementptr"(%406, %414) <{elem_type = f32, rawConstantIndices = array<i32: -2147483648>}> : (!llvm.ptr, i64) -> !llvm.ptr
"llvm.store"(%405, %415) <{alignment = 4 : i64, ordering = 0 : i64}> : (vector<16xf32>, !llvm.ptr) -> ()
%416 = "llvm.extractvalue"(%274) <{position = array<i64: 2>}> : (!llvm.array<16 x vector<16xf32>>) -> vector<16xf32>
%417 = "llvm.getelementptr"(%54) <{elem_type = f32, rawConstantIndices = array<i32: 25165824>}> : (!llvm.ptr) -> !llvm.ptr
%418 = "llvm.mul"(%64, %23) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%419 = "llvm.mul"(%61, %22) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%420 = "llvm.add"(%418, %419) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%421 = "llvm.mul"(%58, %18) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%422 = "llvm.add"(%420, %421) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%423 = "llvm.mul"(%37, %38) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%424 = "llvm.add"(%422, %423) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%425 = "llvm.add"(%424, %43) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%426 = "llvm.getelementptr"(%417, %425) <{elem_type = f32, rawConstantIndices = array<i32: -2147483648>}> : (!llvm.ptr, i64) -> !llvm.ptr
"llvm.store"(%416, %426) <{alignment = 4 : i64, ordering = 0 : i64}> : (vector<16xf32>, !llvm.ptr) -> ()
%427 = "llvm.extractvalue"(%274) <{position = array<i64: 3>}> : (!llvm.array<16 x vector<16xf32>>) -> vector<16xf32>
%428 = "llvm.getelementptr"(%54) <{elem_type = f32, rawConstantIndices = array<i32: 25165824>}> : (!llvm.ptr) -> !llvm.ptr
%429 = "llvm.mul"(%64, %23) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%430 = "llvm.mul"(%61, %22) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%431 = "llvm.add"(%429, %430) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%432 = "llvm.mul"(%58, %18) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%433 = "llvm.add"(%431, %432) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%434 = "llvm.mul"(%36, %38) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%435 = "llvm.add"(%433, %434) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%436 = "llvm.add"(%435, %43) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%437 = "llvm.getelementptr"(%428, %436) <{elem_type = f32, rawConstantIndices = array<i32: -2147483648>}> : (!llvm.ptr, i64) -> !llvm.ptr
"llvm.store"(%427, %437) <{alignment = 4 : i64, ordering = 0 : i64}> : (vector<16xf32>, !llvm.ptr) -> ()
%438 = "llvm.extractvalue"(%274) <{position = array<i64: 4>}> : (!llvm.array<16 x vector<16xf32>>) -> vector<16xf32>
%439 = "llvm.getelementptr"(%54) <{elem_type = f32, rawConstantIndices = array<i32: 25165824>}> : (!llvm.ptr) -> !llvm.ptr
%440 = "llvm.mul"(%64, %23) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%441 = "llvm.mul"(%61, %22) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%442 = "llvm.add"(%440, %441) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%443 = "llvm.mul"(%58, %18) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%444 = "llvm.add"(%442, %443) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%445 = "llvm.mul"(%35, %38) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%446 = "llvm.add"(%444, %445) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%447 = "llvm.add"(%446, %43) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%448 = "llvm.getelementptr"(%439, %447) <{elem_type = f32, rawConstantIndices = array<i32: -2147483648>}> : (!llvm.ptr, i64) -> !llvm.ptr
"llvm.store"(%438, %448) <{alignment = 4 : i64, ordering = 0 : i64}> : (vector<16xf32>, !llvm.ptr) -> ()
%449 = "llvm.extractvalue"(%274) <{position = array<i64: 5>}> : (!llvm.array<16 x vector<16xf32>>) -> vector<16xf32>
%450 = "llvm.getelementptr"(%54) <{elem_type = f32, rawConstantIndices = array<i32: 25165824>}> : (!llvm.ptr) -> !llvm.ptr
%451 = "llvm.mul"(%64, %23) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%452 = "llvm.mul"(%61, %22) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%453 = "llvm.add"(%451, %452) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%454 = "llvm.mul"(%58, %18) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%455 = "llvm.add"(%453, %454) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%456 = "llvm.mul"(%34, %38) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%457 = "llvm.add"(%455, %456) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%458 = "llvm.add"(%457, %43) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%459 = "llvm.getelementptr"(%450, %458) <{elem_type = f32, rawConstantIndices = array<i32: -2147483648>}> : (!llvm.ptr, i64) -> !llvm.ptr
"llvm.store"(%449, %459) <{alignment = 4 : i64, ordering = 0 : i64}> : (vector<16xf32>, !llvm.ptr) -> ()
%460 = "llvm.extractvalue"(%274) <{position = array<i64: 6>}> : (!llvm.array<16 x vector<16xf32>>) -> vector<16xf32>
%461 = "llvm.getelementptr"(%54) <{elem_type = f32, rawConstantIndices = array<i32: 25165824>}> : (!llvm.ptr) -> !llvm.ptr
%462 = "llvm.mul"(%64, %23) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%463 = "llvm.mul"(%61, %22) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%464 = "llvm.add"(%462, %463) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%465 = "llvm.mul"(%58, %18) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%466 = "llvm.add"(%464, %465) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%467 = "llvm.mul"(%33, %38) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%468 = "llvm.add"(%466, %467) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%469 = "llvm.add"(%468, %43) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%470 = "llvm.getelementptr"(%461, %469) <{elem_type = f32, rawConstantIndices = array<i32: -2147483648>}> : (!llvm.ptr, i64) -> !llvm.ptr
"llvm.store"(%460, %470) <{alignment = 4 : i64, ordering = 0 : i64}> : (vector<16xf32>, !llvm.ptr) -> ()
%471 = "llvm.extractvalue"(%274) <{position = array<i64: 7>}> : (!llvm.array<16 x vector<16xf32>>) -> vector<16xf32>
%472 = "llvm.getelementptr"(%54) <{elem_type = f32, rawConstantIndices = array<i32: 25165824>}> : (!llvm.ptr) -> !llvm.ptr
%473 = "llvm.mul"(%64, %23) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%474 = "llvm.mul"(%61, %22) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%475 = "llvm.add"(%473, %474) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%476 = "llvm.mul"(%58, %18) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%477 = "llvm.add"(%475, %476) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%478 = "llvm.mul"(%32, %38) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%479 = "llvm.add"(%477, %478) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%480 = "llvm.add"(%479, %43) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%481 = "llvm.getelementptr"(%472, %480) <{elem_type = f32, rawConstantIndices = array<i32: -2147483648>}> : (!llvm.ptr, i64) -> !llvm.ptr
"llvm.store"(%471, %481) <{alignment = 4 : i64, ordering = 0 : i64}> : (vector<16xf32>, !llvm.ptr) -> ()
%482 = "llvm.extractvalue"(%274) <{position = array<i64: 8>}> : (!llvm.array<16 x vector<16xf32>>) -> vector<16xf32>
%483 = "llvm.getelementptr"(%54) <{elem_type = f32, rawConstantIndices = array<i32: 25165824>}> : (!llvm.ptr) -> !llvm.ptr
%484 = "llvm.mul"(%64, %23) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%485 = "llvm.mul"(%61, %22) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%486 = "llvm.add"(%484, %485) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%487 = "llvm.mul"(%58, %18) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%488 = "llvm.add"(%486, %487) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%489 = "llvm.mul"(%31, %38) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%490 = "llvm.add"(%488, %489) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%491 = "llvm.add"(%490, %43) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%492 = "llvm.getelementptr"(%483, %491) <{elem_type = f32, rawConstantIndices = array<i32: -2147483648>}> : (!llvm.ptr, i64) -> !llvm.ptr
"llvm.store"(%482, %492) <{alignment = 4 : i64, ordering = 0 : i64}> : (vector<16xf32>, !llvm.ptr) -> ()
%493 = "llvm.extractvalue"(%274) <{position = array<i64: 9>}> : (!llvm.array<16 x vector<16xf32>>) -> vector<16xf32>
%494 = "llvm.getelementptr"(%54) <{elem_type = f32, rawConstantIndices = array<i32: 25165824>}> : (!llvm.ptr) -> !llvm.ptr
%495 = "llvm.mul"(%64, %23) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%496 = "llvm.mul"(%61, %22) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%497 = "llvm.add"(%495, %496) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%498 = "llvm.mul"(%58, %18) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%499 = "llvm.add"(%497, %498) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%500 = "llvm.mul"(%30, %38) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%501 = "llvm.add"(%499, %500) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%502 = "llvm.add"(%501, %43) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%503 = "llvm.getelementptr"(%494, %502) <{elem_type = f32, rawConstantIndices = array<i32: -2147483648>}> : (!llvm.ptr, i64) -> !llvm.ptr
"llvm.store"(%493, %503) <{alignment = 4 : i64, ordering = 0 : i64}> : (vector<16xf32>, !llvm.ptr) -> ()
%504 = "llvm.extractvalue"(%274) <{position = array<i64: 10>}> : (!llvm.array<16 x vector<16xf32>>) -> vector<16xf32>
%505 = "llvm.getelementptr"(%54) <{elem_type = f32, rawConstantIndices = array<i32: 25165824>}> : (!llvm.ptr) -> !llvm.ptr
%506 = "llvm.mul"(%64, %23) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%507 = "llvm.mul"(%61, %22) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%508 = "llvm.add"(%506, %507) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%509 = "llvm.mul"(%58, %18) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%510 = "llvm.add"(%508, %509) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%511 = "llvm.mul"(%29, %38) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%512 = "llvm.add"(%510, %511) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%513 = "llvm.add"(%512, %43) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%514 = "llvm.getelementptr"(%505, %513) <{elem_type = f32, rawConstantIndices = array<i32: -2147483648>}> : (!llvm.ptr, i64) -> !llvm.ptr
"llvm.store"(%504, %514) <{alignment = 4 : i64, ordering = 0 : i64}> : (vector<16xf32>, !llvm.ptr) -> ()
%515 = "llvm.extractvalue"(%274) <{position = array<i64: 11>}> : (!llvm.array<16 x vector<16xf32>>) -> vector<16xf32>
%516 = "llvm.getelementptr"(%54) <{elem_type = f32, rawConstantIndices = array<i32: 25165824>}> : (!llvm.ptr) -> !llvm.ptr
%517 = "llvm.mul"(%64, %23) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%518 = "llvm.mul"(%61, %22) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%519 = "llvm.add"(%517, %518) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%520 = "llvm.mul"(%58, %18) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%521 = "llvm.add"(%519, %520) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%522 = "llvm.mul"(%28, %38) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%523 = "llvm.add"(%521, %522) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%524 = "llvm.add"(%523, %43) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%525 = "llvm.getelementptr"(%516, %524) <{elem_type = f32, rawConstantIndices = array<i32: -2147483648>}> : (!llvm.ptr, i64) -> !llvm.ptr
"llvm.store"(%515, %525) <{alignment = 4 : i64, ordering = 0 : i64}> : (vector<16xf32>, !llvm.ptr) -> ()
%526 = "llvm.extractvalue"(%274) <{position = array<i64: 12>}> : (!llvm.array<16 x vector<16xf32>>) -> vector<16xf32>
%527 = "llvm.getelementptr"(%54) <{elem_type = f32, rawConstantIndices = array<i32: 25165824>}> : (!llvm.ptr) -> !llvm.ptr
%528 = "llvm.mul"(%64, %23) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%529 = "llvm.mul"(%61, %22) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%530 = "llvm.add"(%528, %529) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%531 = "llvm.mul"(%58, %18) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%532 = "llvm.add"(%530, %531) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%533 = "llvm.mul"(%27, %38) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%534 = "llvm.add"(%532, %533) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%535 = "llvm.add"(%534, %43) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%536 = "llvm.getelementptr"(%527, %535) <{elem_type = f32, rawConstantIndices = array<i32: -2147483648>}> : (!llvm.ptr, i64) -> !llvm.ptr
"llvm.store"(%526, %536) <{alignment = 4 : i64, ordering = 0 : i64}> : (vector<16xf32>, !llvm.ptr) -> ()
%537 = "llvm.extractvalue"(%274) <{position = array<i64: 13>}> : (!llvm.array<16 x vector<16xf32>>) -> vector<16xf32>
%538 = "llvm.getelementptr"(%54) <{elem_type = f32, rawConstantIndices = array<i32: 25165824>}> : (!llvm.ptr) -> !llvm.ptr
%539 = "llvm.mul"(%64, %23) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%540 = "llvm.mul"(%61, %22) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%541 = "llvm.add"(%539, %540) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%542 = "llvm.mul"(%58, %18) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%543 = "llvm.add"(%541, %542) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%544 = "llvm.mul"(%26, %38) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%545 = "llvm.add"(%543, %544) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%546 = "llvm.add"(%545, %43) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%547 = "llvm.getelementptr"(%538, %546) <{elem_type = f32, rawConstantIndices = array<i32: -2147483648>}> : (!llvm.ptr, i64) -> !llvm.ptr
"llvm.store"(%537, %547) <{alignment = 4 : i64, ordering = 0 : i64}> : (vector<16xf32>, !llvm.ptr) -> ()
%548 = "llvm.extractvalue"(%274) <{position = array<i64: 14>}> : (!llvm.array<16 x vector<16xf32>>) -> vector<16xf32>
%549 = "llvm.getelementptr"(%54) <{elem_type = f32, rawConstantIndices = array<i32: 25165824>}> : (!llvm.ptr) -> !llvm.ptr
%550 = "llvm.mul"(%64, %23) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%551 = "llvm.mul"(%61, %22) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%552 = "llvm.add"(%550, %551) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%553 = "llvm.mul"(%58, %18) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%554 = "llvm.add"(%552, %553) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%555 = "llvm.mul"(%25, %38) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%556 = "llvm.add"(%554, %555) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%557 = "llvm.add"(%556, %43) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%558 = "llvm.getelementptr"(%549, %557) <{elem_type = f32, rawConstantIndices = array<i32: -2147483648>}> : (!llvm.ptr, i64) -> !llvm.ptr
"llvm.store"(%548, %558) <{alignment = 4 : i64, ordering = 0 : i64}> : (vector<16xf32>, !llvm.ptr) -> ()
%559 = "llvm.extractvalue"(%274) <{position = array<i64: 15>}> : (!llvm.array<16 x vector<16xf32>>) -> vector<16xf32>
%560 = "llvm.getelementptr"(%54) <{elem_type = f32, rawConstantIndices = array<i32: 25165824>}> : (!llvm.ptr) -> !llvm.ptr
%561 = "llvm.mul"(%64, %23) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%562 = "llvm.mul"(%61, %22) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%563 = "llvm.add"(%561, %562) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%564 = "llvm.mul"(%58, %18) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%565 = "llvm.add"(%563, %564) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%566 = "llvm.mul"(%24, %38) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%567 = "llvm.add"(%565, %566) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%568 = "llvm.add"(%567, %43) <{overflowFlags = #llvm.overflow<none>}> : (i64, i64) -> i64
%569 = "llvm.getelementptr"(%560, %568) <{elem_type = f32, rawConstantIndices = array<i32: -2147483648>}> : (!llvm.ptr, i64) -> !llvm.ptr
"llvm.store"(%559, %569) <{alignment = 4 : i64, ordering = 0 : i64}> : (vector<16xf32>, !llvm.ptr) -> ()
"llvm.return"(%15) : (i32) -> ()
}) : () -> ()
}) {llvm.data_layout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128", llvm.target_triple = "x86_64-unknown-unknown-eabi-elf"} : () -> ()
"hal.executable.variant_end"() : () -> ()
}) {sym_name = "embedded_elf_x86_64", target = #hal.executable.target<"llvm-cpu", "embedded-elf-x86_64", {cpu = "znver4", cpu_features = "+prfchw,-cldemote,+avx,+aes,+sahf,+pclmul,-xop,+crc32,-amx-fp8,+xsaves,-avx512fp16,-usermsr,-sm4,-egpr,+sse4.1,+avx512ifma,+xsave,+sse4.2,-tsxldtrk,-sm3,-ptwrite,-widekl,-movrs,+invpcid,+64bit,+xsavec,-avx10.1-512,+avx512vpopcntdq,+cmov,-avx512vp2intersect,+avx512cd,+movbe,-avxvnniint8,-ccmp,-amx-int8,-kl,-avx10.1-256,+evex512,-avxvnni,-rtm,+adx,+avx2,-hreset,-movdiri,-serialize,-sha512,+vpclmulqdq,+avx512vl,-uintr,-cf,+clflushopt,-raoint,-cmpccxadd,+bmi,-amx-tile,+sse,-avx10.2-256,+gfni,-avxvnniint16,-amx-fp16,-zu,-ndd,+xsaveopt,+rdrnd,+avx512f,-amx-bf16,+avx512bf16,+avx512vnni,-push2pop2,+cx8,+avx512bw,+sse3,+pku,-nf,-amx-tf32,-amx-avx512,+fsgsbase,+clzero,+mwaitx,-lwp,+lzcnt,+sha,-movdir64b,-ppx,+wbnoinvd,-enqcmd,-amx-transpose,-avx10.2-512,-avxneconvert,-tbm,-pconfig,-amx-complex,+ssse3,+cx16,+bmi2,+fma,+popcnt,-avxifma,+f16c,+avx512bitalg,+rdpru,+clwb,+mmx,+sse2,+rdseed,+avx512vbmi2,-prefetchi,-amx-movrs,+rdpid,-fma4,+avx512vbmi,+shstk,+vaes,-waitpkg,-sgx,+fxsr,+avx512dq,+sse4a", data_layout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128", native_vector_size = 64 : i64, target_triple = "x86_64-unknown-unknown-eabi-elf"}>} : () -> ()
%2 = linalg.batch_matmul_transpose_b ins(%arg0, %arg1 : tensor<4x2048x4096xf8E4M3FNUZ>, tensor<4x4096x4096xf8E4M3FNUZ>) outs(%1 : tensor<4x2048x4096xf32>) -> tensor<4x2048x4096xf32>
^
Traceback (most recent call last):
File "<frozen runpy>", line 198, in _run_module_as_main
File "<frozen runpy>", line 88, in _run_code
File "/home/chi/src/shark-ai/sharktank/sharktank/examples/paged_llm_v1.py", line 345, in <module>
main()
File "/home/chi/src/shark-ai/sharktank/sharktank/examples/paged_llm_v1.py", line 324, in main
batch.prefill()
File "/home/chi/src/shark-ai/sharktank/sharktank/examples/paged_llm_v1.py", line 176, in prefill
logits = model.prefill(
^^^^^^^^^^^^^^
File "/home/chi/src/shark-ai/sharktank/sharktank/models/llama/llama.py", line 150, in prefill
h = block(
^^^^^^
File "/home/chi/src/shark-ai/.venv/lib/python3.11/site-packages/torch/nn/modules/module.py", line 1736, in _wrapped_call_impl
return self._call_impl(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/chi/src/shark-ai/.venv/lib/python3.11/site-packages/torch/nn/modules/module.py", line 1747, in _call_impl
return forward_call(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/chi/src/shark-ai/sharktank/sharktank/models/llama/llama.py", line 286, in forward
h = self.attn(
^^^^^^^^^^
File "/home/chi/src/shark-ai/.venv/lib/python3.11/site-packages/torch/nn/modules/module.py", line 1736, in _wrapped_call_impl
return self._call_impl(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/chi/src/shark-ai/.venv/lib/python3.11/site-packages/torch/nn/modules/module.py", line 1747, in _call_impl
return forward_call(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/chi/src/shark-ai/sharktank/sharktank/layers/paged_llama_attention_block.py", line 107, in forward
xq = self.attn_q(x)
^^^^^^^^^^^^^^
File "/home/chi/src/shark-ai/.venv/lib/python3.11/site-packages/torch/nn/modules/module.py", line 1736, in _wrapped_call_impl
return self._call_impl(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/chi/src/shark-ai/.venv/lib/python3.11/site-packages/torch/nn/modules/module.py", line 1747, in _call_impl
return forward_call(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/chi/src/shark-ai/sharktank/sharktank/layers/linear.py", line 80, in forward
y = ops.linear(x, weight, bias)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/chi/src/shark-ai/sharktank/sharktank/ops/_registry.py", line 199, in __call__
selected_override, *results = trampoline(self, *args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/chi/src/shark-ai/sharktank/sharktank/ops/signatures.py", line 663, in _linear_trampoline
result = override(input, weight, bias, accum_dtype=accum_dtype)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/chi/src/shark-ai/sharktank/sharktank/ops/qlinear_impls.py", line 95, in qlinear_tensor_scaled
y_qs = _invoke_mmt_kernel(x_qs, weight_qs, accum_dtype=accum_dtype)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/chi/src/shark-ai/sharktank/sharktank/ops/qlinear_impls.py", line 206, in _invoke_mmt_kernel
y_qs = kernels.batch_matmul_transpose_b(lhs, rhs, accum_dtype=accum_dtype)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/chi/src/shark-ai/sharktank/sharktank/kernels/batch_matmul_transpose_b.py", line 33, in batch_matmul_transpose_b
return _batch_matmul_transpose_b(
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/chi/src/shark-ai/.venv/lib/python3.11/site-packages/torch/_ops.py", line 1116, in __call__
return self._op(*args, **(kwargs or {}))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/chi/src/shark-ai/.venv/lib/python3.11/site-packages/iree/turbine/runtime/op_reg/base.py", line 928, in handler
return eager_dispatch(ksel)
^^^^^^^^^^^^^^^^^^^^
File "/home/chi/src/shark-ai/.venv/lib/python3.11/site-packages/iree/turbine/runtime/op_reg/eager.py", line 98, in eager_dispatch
vm_context, vm_f, config = compile_standalone_kernel(device, ksel)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/chi/src/shark-ai/.venv/lib/python3.11/site-packages/iree/turbine/runtime/op_reg/compiler.py", line 126, in compile_standalone_kernel
raise GeneralError(f"Kernel compilation failed. See diagnostics.")
iree.turbine.support.exceptions.GeneralError: Kernel compilation failed. See diagnostics.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment