Add a test that runs a single conv op w/ fixed input - This test runs an operator was identified as a bit of code that exposed a bug in Kelvin related to branches and multiplies. The input is fixed, and should be expected to pass on Kelvin after the MLU fix is integrated. Change-Id: I90e7a8a0452a56fb3d881363eae246846124161e
diff --git a/samples/branch_mul/CMakeLists.txt b/samples/branch_mul/CMakeLists.txt new file mode 100644 index 0000000..5f7b9f8 --- /dev/null +++ b/samples/branch_mul/CMakeLists.txt
@@ -0,0 +1,33 @@ +sparrow_static_module( + NAME + branch_mul + SRC + "branch_mul.mlir" + FLAGS + "-iree-input-type=tosa" + # NB: iree seems to step on the input tensors + # without this. + "-iree-flow-trace-dispatch-tensors" + EMITC + RVV_OFF +) + +sparrow_test( + NAME + branch_mul_emitc_static + SRCS + "branch_mul.c" + DEPS + ::branch_mul_emitc + ::branch_mul_lib + iree::base + iree::vm::bytecode::module + iree::hal::local::executable_environment + iree::hal::local::elf::elf_module + LINKOPTS + "LINKER:--defsym=__stack_size__=300k" + "LINKER:--defsym=__heap_size__=750k" + "LINKER:--defsym=__tcm_length__=4M" + TESTFILES + "branch_mul.run" +)
diff --git a/samples/branch_mul/branch_mul.c b/samples/branch_mul/branch_mul.c new file mode 100644 index 0000000..910d655 --- /dev/null +++ b/samples/branch_mul/branch_mul.c
@@ -0,0 +1,133 @@ +// Copyright 2023 Google, LLC. +// Copyright 2021 The IREE Authors +// +// Licensed under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception + +// Heavily based on the `runtime/src/iree/hal/local/elf/elf_module_test_main.c` +// sample from IREE. + +#include "iree/base/api.h" +#include "iree/base/internal/cpu.h" +#include "iree/hal/local/elf/elf_module.h" +#include "iree/hal/local/executable_environment.h" +#include "iree/hal/local/executable_library.h" +#include "samples/branch_mul/branch_mul_arg0.h" +#include "samples/branch_mul/branch_mul_arg1.h" +#include "samples/branch_mul/branch_mul_arg2.h" +#include "samples/branch_mul/branch_mul_c.h" +#include "samples/branch_mul/branch_mul_emitc.h" +#include "samples/branch_mul/branch_mul_expected.h" + +static int8_t ret0[3][2][256] = { 0 }; +static iree_status_t run_test() { + iree_hal_executable_environment_v0_t environment; + iree_hal_executable_environment_initialize(iree_allocator_system(), + &environment); + + void* query_fn_ptr = &llvm_module_linked_llvm_cpu_library_query; + + union { + const iree_hal_executable_library_header_t** header; + const iree_hal_executable_library_v0_t* v0; + } library; + library.header = + (const iree_hal_executable_library_header_t**)iree_elf_call_p_ip( + query_fn_ptr, IREE_HAL_EXECUTABLE_LIBRARY_VERSION_LATEST, + &environment); + if (library.header == NULL) { + return iree_make_status(IREE_STATUS_NOT_FOUND, + "library header is empty (version mismatch?)"); + } + + const iree_hal_executable_library_header_t* header = *library.header; + if (header->version != IREE_HAL_EXECUTABLE_LIBRARY_VERSION_LATEST) { + return iree_make_status(IREE_STATUS_INVALID_ARGUMENT, + "library version error"); + } + + if (strncmp(header->name, "llvm_module_linked_llvm_cpu", + strlen(header->name)) != 0) { + return iree_make_status(IREE_STATUS_INVALID_ARGUMENT, + "library name mismatches"); + } + + if (library.v0->exports.count != 6) { + return iree_make_status(IREE_STATUS_INVALID_ARGUMENT, + "entry point count mismatches"); + } + + size_t binding_lengths[4] = { + sizeof(arg0), + sizeof(arg1), + sizeof(arg2), + sizeof(ret0), + }; + void* binding_ptrs[4] = { + arg0, + arg1, + arg2, + ret0, + }; + const iree_hal_executable_dispatch_state_v0_t dispatch_state = { + .workgroup_size_x = 1, + .workgroup_size_y = 1, + .workgroup_size_z = 1, + .workgroup_count_x = 1, + .workgroup_count_y = 1, + .workgroup_count_z = 1, + .max_concurrency = 1, + .binding_count = 1, + .binding_lengths = binding_lengths, + .binding_ptrs = binding_ptrs, + }; + const iree_hal_executable_workgroup_state_v0_t workgroup_state = { + .workgroup_id_x = 0, + .workgroup_id_y = 0, + .workgroup_id_z = 0, + .processor_id = iree_cpu_query_processor_id(), + }; + int ret = iree_elf_call_i_ppp((const void*)library.v0->exports.ptrs[5], + (void*)&environment, (void*)&dispatch_state, + (void*)&workgroup_state); + if (ret != 0) { + return iree_make_status(IREE_STATUS_INTERNAL, + "dispatch function returned failure: %d", ret); + } + + int mismatch_count = 0; + iree_status_t status = iree_ok_status(); + for (int i = 0; i < 3; ++i) { + for (int j = 0; j < 2; ++j) { + for (int k = 0; k < 256; ++k) { + int8_t out = ret0[i][j][k]; + int8_t expect = expected[i][j][k]; + if (out != expect) { + mismatch_count++; + fprintf(stdout, "mismatch at [%d][%d][%d] %x != %x\n", i, j, k, out, + expect); + fprintf(stdout, "ins: %x %x %x\n", arg0[i][j][k], arg1[k], + arg2[i][j][k]); + } + } + } + } + if (mismatch_count) { + status = iree_make_status( + IREE_STATUS_INTERNAL, + "%d mismatches between actual and expected output", mismatch_count); + } + + return status; +} + +int main() { + const iree_status_t result = run_test(); + int ret = (int)iree_status_code(result); + if (!iree_status_is_ok(result)) { + iree_status_fprint(stderr, result); + iree_status_free(result); + } + return ret; +}
diff --git a/samples/branch_mul/branch_mul.mlir b/samples/branch_mul/branch_mul.mlir new file mode 100644 index 0000000..826920b --- /dev/null +++ b/samples/branch_mul/branch_mul.mlir Binary files differ
diff --git a/samples/branch_mul/branch_mul.run b/samples/branch_mul/branch_mul.run new file mode 100644 index 0000000..5f8c701 --- /dev/null +++ b/samples/branch_mul/branch_mul.run
@@ -0,0 +1 @@ +// RUN: ${TEST_RUNNER_CMD} %S/branch_mul_emitc_static
diff --git a/samples/branch_mul/branch_mul_arg0.h b/samples/branch_mul/branch_mul_arg0.h new file mode 100644 index 0000000..59aeca6 --- /dev/null +++ b/samples/branch_mul/branch_mul_arg0.h
@@ -0,0 +1,162 @@ +#ifndef DAREDEVIL_BRANCH_MUL_DAREDEVIL_BRANCH_MUL_ARG0_H_ +#define DAREDEVIL_BRANCH_MUL_DAREDEVIL_BRANCH_MUL_ARG0_H_ + +int32_t arg0[3][2][256] = { + {{49163, 39296, 47490, 46186, 48142, 35193, 34298, 38115, 40865, 31744, + 37957, 36338, 27958, 25986, -2445, 33464, 33996, 35141, 31692, 41384, + 34695, 27280, 38186, 38103, 33810, 51195, 35215, 35597, 47560, 41230, + 22883, 32145, 36772, 51865, 57408, 43500, 31464, 41112, 32753, 56186, + 48838, 45257, 40447, 39930, 53540, 38016, 36552, 48644, 33656, 37770, + 46227, 37636, 39103, 38740, 39254, 31003, 45361, 47539, 36883, 30846, + 41018, 35664, 48196, 25437, 35559, 38892, 46667, 36407, 46496, 31782, + 32274, 35295, 41009, 44750, 27384, 45100, 19412, 47392, 36107, 30351, + 60205, 45476, 16420, 40184, 42052, 37309, 30727, 36992, 52433, 25192, + 37577, 41866, 48061, 33515, 31908, 33464, 40468, 31160, 41293, 43578, + 27059, 25121, 47052, 40806, 43767, 33729, 48898, 31331, 29416, 42965, + 42500, 50930, 39955, 26024, 67928, 28831, 39769, 32954, 29182, 48404, + 51369, 33092, 31618, -2835, 44458, 34051, 40349, 44464, 40864, 33721, + 42162, 39482, 48241, 37396, 41366, 39252, 49384, 34136, 16768, 49536, + 52212, 49248, 39171, 43546, 51122, 39533, 40806, 42641, 37108, 32853, + 50297, 40942, 43596, 30535, 32615, 57834, 33792, 42975, 32657, 45319, + 31137, 43133, 55266, 43204, 34917, 32533, 42746, 34833, 38105, 24267, + 37612, 29619, 37552, 29783, 31186, 46877, 33083, 61460, 44698, 39925, + 48017, 19360, 36326, 33024, 48174, 35613, 60819, 36330, 35866, 51863, + 28726, 35482, 36141, 39092, 34034, 36807, 48338, 29582, 27196, 29380, + 53076, 51486, 40372, 33882, 57728, 43467, 41643, 34126, 43283, 43451, + 41347, 47527, 43652, 42938, 55279, 322, 48551, 78419, 43094, 29107, + 28197, 50348, 50604, 49348, 31840, 39827, 30541, 47429, 34163, 50816, + 40669, 28671, 38825, 34171, 35277, 48542, 24021, 48650, 33677, 24756, + 39333, 43658, 36864, 29332, 33020, 35668, 45411, 32548, 45977, 38670, + 44452, 25719, 45411, 32546, 28335, 64384}, + {39423, 38393, 43015, 45737, 48976, 28692, 34463, 39097, 48186, 35748, + 40334, 38528, 30512, 19837, -8042, 39234, 38264, 36412, 33611, 46687, + 34995, 26438, 44218, 40274, 39072, 64928, 33873, 38464, 40556, 46130, + 18335, 33049, 31110, 52828, 45741, 44787, 32712, 45874, 40117, 56704, + 52232, 45824, 39927, 41344, 47478, 38016, 40176, 51428, 31135, 44386, + 46976, 36539, 43921, 38879, 43758, 24214, 46336, 36528, 44421, 36700, + 43864, 36283, 49152, 20548, 28272, 40704, 49881, 36174, 48488, 35725, + 36182, 34670, 44870, 46976, 31335, 44612, 12075, 48034, 36736, 33823, + 52400, 47057, 14674, 39853, 45569, 37504, 37760, 36464, 47757, 23352, + 35689, 41414, 48256, 31804, 35242, 35772, 47048, 32000, 38043, 47362, + 29600, 32513, 42571, 40802, 35084, 36976, 50304, 35480, 34850, 45095, + 42488, 51360, 42240, 31734, 56685, 30948, 42854, 34944, 22855, 49152, + 42360, 33184, 33660, -1803, 47096, 37888, 42756, 31066, 37016, 38405, + 44894, 44815, 47164, 41068, 44416, 40902, 50792, 28954, 13122, 49536, + 52608, 49252, 41604, 41576, 51118, 42929, 44103, 44765, 40791, 36859, + 34444, 41600, 44252, 23865, 33876, 53343, 33792, 44237, 34081, 48005, + 32700, 44976, 56064, 33994, 35004, 24601, 46640, 32836, 42523, 31841, + 38601, 32044, 33496, 36600, 33382, 37879, 35718, 52996, 30864, 46996, + 49664, 21386, 41978, 45952, 44379, 40704, 61046, 38656, 34628, 44897, + 33747, 35269, 42240, 34365, 35628, 37744, 50432, 34730, 32841, 28182, + 55040, 47100, 41473, 34210, 57728, 44766, 39268, 35839, 45376, 45996, + 42496, 49672, 46095, 48128, 56251, 5248, 50058, 69076, 45216, 32512, + 30052, 47204, 47004, 45311, 33854, 41519, 18473, 49920, 37856, 42726, + 42892, 32141, 45488, 38875, 36932, 51200, 22497, 48896, 26393, 9373, + 51696, 45800, 36864, 27625, 25413, 41078, 48332, 35200, 29367, 43403, + 48468, 26368, 36375, 20366, 22391, 64384}}, + {{49408, 39296, 47393, 47104, 47031, 35885, 34858, 38156, 41607, 32389, + 37798, 35086, 25839, 25325, -2499, 30329, 37974, 35465, 30449, 38529, + 33227, 21832, 37449, 38334, 32985, 50980, 33671, 35513, 48375, 41991, + 19693, 32297, 36129, 52027, 57685, 42197, 32557, 43993, 28721, 55520, + 48792, 45312, 36673, 40261, 52110, 38016, 34758, 46238, 32894, 40776, + 46391, 32856, 38429, 38956, 41380, 30844, 44941, 47824, 31156, 29754, + 44164, 35611, 46172, 20196, 35415, 39426, 43094, 31594, 42276, 30332, + 30465, 33647, 40292, 42817, 29325, 45382, 19002, 47512, 35367, 28626, + 59884, 45723, 16149, 41275, 43755, 37309, 29783, 36992, 52565, 24175, + 38272, 44301, 47866, 37114, 29939, 32428, 43234, 31118, 42911, 43190, + 23985, 23150, 47790, 40832, 45308, 33285, 48553, 36625, 27912, 43235, + 43555, 49846, 38773, 21231, 68238, 29786, 39849, 32937, 29467, 47940, + 51717, 32945, 32291, -8118, 46904, 32790, 40690, 44996, 42433, 32484, + 39982, 36023, 48088, 35080, 39772, 38072, 48115, 36585, 16768, 49536, + 52168, 49408, 38978, 44845, 51200, 45443, 40530, 40855, 37012, 29375, + 51645, 39738, 43331, 30883, 32018, 56151, 33792, 41787, 34591, 44716, + 31645, 43165, 52260, 46460, 35328, 31548, 45854, 37680, 36589, 24687, + 38512, 28428, 37255, 30302, 28888, 42529, 35452, 61208, 44358, 36399, + 47519, 35217, 35427, 25280, 48408, 34002, 60933, 35198, 32942, 51960, + 28844, 33050, 35976, 39168, 34420, 39976, 49567, 28298, 27555, 32538, + 52952, 51240, 41345, 34816, 57728, 42234, 40073, 34621, 41862, 42005, + 40871, 48366, 42779, 41998, 54797, -315, 48873, 78464, 42743, 28371, + 27216, 49784, 51840, 46715, 33863, 39851, 31298, 45982, 34144, 50816, + 40418, 26212, 37847, 32243, 35290, 47962, 26563, 48896, 34560, 25120, + 35238, 44036, 36864, 29886, 33985, 36014, 45181, 31756, 46986, 35841, + 44107, 25475, 46096, 29590, 26978, 64318}, + {40574, 37910, 42755, 47104, 47976, 29366, 34902, 39272, 50533, 38069, + 39892, 38528, 30008, 19080, -6788, 39588, 41147, 36480, 33499, 46071, + 34118, 24363, 44306, 40300, 39264, 64021, 32644, 38105, 40941, 46298, + 16078, 33280, 32444, 52992, 46594, 43701, 33024, 47310, 40556, 56704, + 52736, 45824, 34027, 41344, 47298, 38016, 39752, 50168, 30426, 45574, + 46976, 34390, 44086, 38787, 44288, 22623, 46336, 37668, 43034, 36844, + 45184, 36120, 49152, 17718, 29811, 40704, 48950, 30258, 47062, 35261, + 33551, 34735, 44666, 46262, 32480, 44027, 12092, 47768, 36736, 33406, + 51922, 47084, 14813, 41054, 46447, 37504, 37760, 36992, 49266, 23758, + 38233, 44588, 48256, 35247, 34770, 35704, 48306, 32000, 38294, 47512, + 28226, 33038, 41801, 40832, 36367, 36868, 50304, 38648, 34954, 45312, + 43469, 50557, 42240, 30794, 57175, 31138, 43448, 34944, 23667, 49152, + 38338, 33121, 32547, -2249, 48873, 37888, 42789, 31696, 35574, 38528, + 43602, 43651, 47411, 41216, 44416, 41669, 50392, 30393, 13242, 49536, + 52608, 49408, 41870, 43608, 51200, 45775, 44140, 42893, 41042, 34947, + 33208, 41536, 44497, 25071, 33626, 52770, 33792, 43565, 35045, 47866, + 32868, 45338, 55768, 36085, 35328, 24076, 47706, 35592, 42040, 30743, + 39098, 33714, 35055, 37640, 33103, 34714, 37638, 52997, 30132, 47824, + 49664, 30293, 41795, 45952, 44390, 40704, 61255, 38542, 35641, 46070, + 33989, 34212, 42240, 33669, 35968, 40586, 50432, 34479, 33924, 29519, + 55040, 46878, 41672, 34816, 57728, 43891, 38806, 36348, 44905, 46122, + 42496, 50050, 45568, 48128, 56257, 5248, 50304, 69356, 44405, 32512, + 30380, 46035, 48872, 43699, 34299, 43057, 19332, 49920, 38332, 43036, + 43537, 32458, 45377, 38435, 36992, 51200, 24367, 48896, 26233, 7912, + 51647, 45838, 36864, 26613, 26307, 41344, 48619, 35108, 29374, 43162, + 48278, 26368, 36097, 18908, 20944, 64384}}, + {{49408, 28700, 50039, 39018, 41779, 32473, 26002, 31146, 44096, 24547, + 39771, 27713, 36384, 27611, -1900, 39822, 26297, 27229, 23953, 34743, + 22570, 17197, 35407, 32188, 25711, 54612, 42667, 27284, 48740, 35649, + 27791, 22898, 40323, 40719, 61580, 28701, 20525, 40550, 20920, 47770, + 42947, 33804, 35681, 25551, 54870, 31359, 29202, 40523, 35341, 35916, + 37404, 42542, 33515, 33803, 38434, 34214, 37577, 47869, 40694, 23639, + 35210, 26704, 37581, 30688, 39032, 30094, 34092, 33641, 37036, 36141, + 27961, 23879, 35895, 37018, 22504, 47751, 20012, 41737, 30664, 23664, + 60144, 36514, 18024, 45110, 40914, 29092, 25954, 32037, 53294, 26150, + 38272, 34957, 33553, 38528, 26270, 26074, 43817, 20729, 41589, 45252, + 31408, 15195, 48948, 26520, 48481, 27771, 35607, 26850, 37740, 37617, + 33713, 47243, 29066, 18436, 68352, 21218, 33250, 24854, 32913, 41334, + 52224, 25790, 35434, -3714, 45928, 28677, 23685, 45234, 43206, 29348, + 33691, 31043, 51298, 30677, 31880, 22078, 42592, 39088, 16768, 38171, + 39514, 37475, 33617, 45440, 40712, 34123, 35528, 34008, 30726, 20998, + 52748, 28514, 31881, 32768, 21545, 59108, 24521, 36611, 25642, 37142, + 22328, 44896, 55782, 49152, 27889, 33135, 39124, 40017, 32388, 24226, + 29379, 22634, 40584, 36396, 22467, 48188, 37273, 61568, 45176, 29386, + 38909, 33827, 28913, 25547, 48640, 34473, 53250, 30396, 19837, 52464, + 25481, 32263, 35082, 39168, 25621, 42784, 41739, 22875, 24046, 37952, + 41021, 52623, 28885, 27292, 47483, 42468, 42351, 27593, 33760, 33850, + 37008, 40911, 37570, 46232, 47468, -2582, 38462, 78464, 30743, 22451, + 34296, 52356, 46935, 51086, 28538, 44617, 31488, 35531, 25956, 50816, + 34563, 18354, 34567, 29169, 28427, 36499, 29696, 39576, 34560, 25600, + 48171, 36013, 24882, 31360, 34619, 29668, 40660, 34946, 45604, 32398, + 43725, 15965, 44813, 34444, 30713, 39788}, + {46914, 29749, 48724, 40208, 45116, 33006, 31555, 36472, 51525, 33070, + 40494, 35260, 37152, 25864, -2764, 43304, 33855, 33906, 31603, 42664, + 28821, 24023, 43396, 38160, 35669, 79400, 42654, 34351, 46688, 42350, + 26698, 29297, 40104, 47834, 58443, 36112, 26647, 45440, 33884, 55224, + 49499, 37154, 33962, 32663, 53698, 34056, 37384, 47210, 34384, 43432, + 43239, 43160, 41908, 36964, 42503, 31562, 43154, 43927, 47080, 33185, + 36568, 31036, 45609, 30120, 38014, 37130, 43787, 30664, 44575, 38004, + 30028, 29665, 42538, 44154, 29520, 46973, 17972, 45724, 35626, 31828, + 58344, 43344, 17772, 45180, 45232, 33904, 34822, 31584, 52392, 26252, + 38272, 39148, 41548, 37475, 33404, 32950, 48232, 28704, 39243, 47872, + 32408, 27557, 46984, 31539, 45160, 34564, 44653, 32480, 38752, 43166, + 37270, 49715, 37708, 27563, 66138, 27856, 40208, 31776, 31032, 46562, + 48493, 30590, 36417, 1808, 49173, 35127, 32227, 38268, 41020, 36641, + 40414, 41387, 51358, 38811, 39776, 32074, 48072, 37312, 15679, 44874, + 46264, 44767, 39324, 45224, 46497, 39205, 41772, 39290, 38482, 30467, + 46401, 37034, 39098, 31136, 28134, 59265, 30519, 42088, 31798, 44772, + 28444, 45440, 56064, 46036, 32370, 31149, 44340, 39453, 39468, 30337, + 36140, 28626, 40048, 38144, 31006, 45344, 38016, 58944, 39351, 41653, + 46115, 35851, 37363, 42590, 47424, 40392, 58170, 35882, 28954, 50984, + 32406, 32889, 40986, 34613, 32507, 41539, 47597, 31653, 32175, 38008, + 48531, 51311, 32949, 31752, 53644, 43024, 42280, 34198, 40510, 42202, + 41204, 46648, 43656, 48128, 53800, 4688, 45986, 76168, 37297, 30336, + 36003, 51231, 45184, 50220, 32252, 45751, 27142, 44341, 33960, 48416, + 41169, 26343, 42879, 36488, 34472, 45177, 28544, 44568, 31937, 19960, + 53209, 42418, 29080, 30075, 32590, 37886, 45749, 35820, 33766, 41844, + 47480, 22113, 40931, 31528, 28850, 52826}}}; + +#endif // DAREDEVIL_BRANCH_MUL_DAREDEVIL_BRANCH_MUL_ARG0_H_
diff --git a/samples/branch_mul/branch_mul_arg1.h b/samples/branch_mul/branch_mul_arg1.h new file mode 100644 index 0000000..05ec099 --- /dev/null +++ b/samples/branch_mul/branch_mul_arg1.h
@@ -0,0 +1,28 @@ +#ifndef DAREDEVIL_BRANCH_MUL_DAREDEVIL_BRANCH_MUL_ARG1_H_ +#define DAREDEVIL_BRANCH_MUL_DAREDEVIL_BRANCH_MUL_ARG1_H_ + +int32_t arg1[256] = { + -386, -307, -400, -368, -387, -361, -274, -309, -467, -312, -318, -301, + -299, -227, 14, -353, -343, -285, -266, -382, -277, -295, -370, -335, + -311, -482, -369, -304, -382, -364, -242, -260, -333, -414, -489, -355, + -258, -370, -318, -443, -412, -358, -367, -323, -439, -297, -323, -406, + -281, -359, -367, -366, -347, -311, -346, -275, -362, -377, -386, -290, + -353, -288, -384, -271, -314, -318, -393, -301, -380, -309, -313, -307, + -363, -377, -255, -376, -159, -383, -287, -276, -473, -398, -147, -365, + -368, -293, -295, -289, -417, -212, -299, -352, -377, -301, -291, -280, + -397, -250, -372, -379, -270, -281, -388, -319, -381, -290, -393, -316, + -309, -354, -347, -423, -330, -285, -534, -257, -341, -273, -261, -384, + -408, -267, -314, -45, -393, -296, -336, -354, -338, -301, -356, -379, + -409, -322, -347, -346, -399, -311, -131, -387, -411, -386, -328, -355, + -400, -374, -346, -351, -323, -311, -418, -325, -349, -256, -276, -480, + -264, -392, -276, -380, -262, -355, -438, -384, -276, -264, -373, -317, + -338, -292, -315, -284, -320, -298, -274, -385, -297, -481, -362, -377, + -388, -355, -336, -359, -380, -318, -485, -302, -288, -413, -276, -313, + -330, -306, -281, -344, -394, -283, -283, -325, -430, -414, -328, -272, + -451, -372, -342, -298, -357, -363, -332, -392, -368, -376, -449, -41, + -393, -613, -371, -254, -296, -417, -405, -412, -279, -362, -246, -390, + -300, -397, -341, -287, -363, -315, -289, -400, -232, -382, -270, -200, + -416, -359, -288, -250, -273, -323, -384, -284, -372, -359, -384, -206, + -385, -284, -247, -503}; + +#endif // DAREDEVIL_BRANCH_MUL_DAREDEVIL_BRANCH_MUL_ARG1_H_
diff --git a/samples/branch_mul/branch_mul_arg2.h b/samples/branch_mul/branch_mul_arg2.h new file mode 100644 index 0000000..19e34e8 --- /dev/null +++ b/samples/branch_mul/branch_mul_arg2.h
@@ -0,0 +1,163 @@ +#ifndef DAREDEVIL_BRANCH_MUL_DAREDEVIL_BRANCH_MUL_ARG2_H_ +#define DAREDEVIL_BRANCH_MUL_DAREDEVIL_BRANCH_MUL_ARG2_H_ + +int32_t arg2[3][2][256] = { + {{-1147, -1152, -1059, -1130, -1113, -887, -1130, -1109, -736, -910, + -1079, -1099, -845, -1035, -1126, -853, -883, -1119, -1087, -962, + -1125, -838, -914, -1021, -973, -937, -881, -1065, -1118, -1010, + -866, -1118, -983, -1123, -1051, -1103, -1106, -990, -931, -1138, + -1048, -1138, -991, -1111, -1090, -1152, -1027, -1068, -1086, -934, + -1133, -932, -1013, -1123, -1016, -1033, -1123, -1137, -821, -992, + -1034, -1119, -1125, -845, -1010, -1105, -1069, -1087, -1088, -924, + -921, -1036, -1010, -1080, -1018, -1065, -1124, -1107, -1135, -1014, + -1144, -1022, -1091, -970, -1016, -1147, -970, -1152, -1129, -1098, + -1134, -1072, -1147, -1011, -990, -1091, -899, -1132, -999, -1022, + -919, -845, -1084, -1151, -1016, -1061, -1114, -909, -869, -1084, + -1106, -1058, -1084, -830, -1141, -1023, -1045, -1094, -1016, -1130, + -1132, -1124, -902, -492, -984, -1057, -1090, -1133, -1083, -1029, + -1058, -937, -1053, -1049, -1072, -1015, -1104, -998, -1152, -1152, + -1143, -1148, -1075, -1099, -1150, -929, -1052, -1086, -1042, -951, + -1069, -1131, -1123, -1085, -1069, -1047, -1152, -990, -1077, -1070, + -1088, -1082, -1130, -990, -1141, -1108, -1016, -969, -1006, -754, + -1082, -945, -1057, -927, -1035, -1103, -1020, -1149, -1112, -924, + -1110, -481, -964, -823, -1138, -1016, -1122, -1095, -1120, -1128, + -959, -1011, -1002, -1150, -1099, -957, -1094, -955, -908, -823, + -1105, -1110, -1115, -1124, -1152, -1044, -1094, -1029, -1089, -1070, + -1116, -1081, -1063, -1017, -1088, -1028, -1107, -1151, -1046, -1063, + -884, -1080, -1118, -1063, -1036, -973, -1111, -1084, -1015, -1152, + -1077, -894, -940, -965, -1100, -1071, -972, -1146, -1131, -1137, + -792, -1085, -1152, -1078, -1078, -1009, -1051, -1054, -1106, -965, + -1020, -1135, -1061, -1023, -1033, -1152}, + {-921, -1131, -920, -1117, -1138, -704, -1134, -1139, -897, -1049, + -1141, -1152, -921, -868, -952, -1003, -1017, -1150, -1137, -1092, + -1140, -809, -1070, -1065, -1129, -947, -798, -1140, -946, -1141, + -774, -1145, -854, -1148, -752, -1132, -1144, -1120, -1134, -1152, + -1140, -1152, -970, -1152, -944, -1152, -1125, -1140, -1015, -1104, + -1152, -873, -1137, -1130, -1136, -851, -1152, -858, -1018, -1140, + -1119, -1119, -1152, -698, -819, -1152, -1143, -1082, -1148, -1055, + -1041, -1022, -1104, -1109, -1119, -1051, -906, -1127, -1152, -1103, + -950, -1070, -1047, -950, -1112, -1152, -1152, -1136, -1009, -1046, + -1085, -1058, -1152, -973, -1093, -1150, -1061, -1152, -913, -1125, + -1007, -1069, -965, -1151, -786, -1148, -1152, -1014, -1031, -1146, + -1106, -1099, -1152, -1008, -929, -1092, -1132, -1152, -831, -1152, + -923, -1124, -960, -877, -1043, -1152, -1143, -787, -978, -1149, + -1133, -1073, -1021, -1148, -1152, -1055, -1145, -876, -1050, -1152, + -1152, -1148, -1142, -1047, -1150, -1028, -1147, -1147, -1139, -1078, + -844, -1152, -1140, -879, -1107, -978, -1152, -1016, -1113, -1137, + -1120, -1138, -1152, -744, -1141, -880, -1123, -954, -1128, -992, + -1110, -1023, -957, -1102, -1102, -876, -1082, -931, -802, -1117, + -1152, -533, -1123, -1152, -1042, -1152, -1128, -1152, -1084, -964, + -1108, -1017, -1152, -1021, -1142, -978, -1152, -1110, -1065, -789, + -1152, -996, -1128, -1134, -1152, -1078, -1022, -1084, -1144, -1140, + -1152, -1140, -1127, -1152, -1118, -1152, -1146, -932, -1099, -1152, + -933, -994, -1028, -958, -1090, -1028, -771, -1152, -1136, -948, + -1132, -1013, -1127, -1106, -1150, -1152, -950, -1152, -965, -868, + -1108, -1148, -1152, -1027, -890, -1145, -1132, -1122, -730, -1078, + -1134, -1152, -823, -680, -871, -1152}}, + {{-1152, -1152, -1066, -1152, -1083, -899, -1146, -1111, -741, -950, + -1077, -1067, -788, -1010, -1127, -779, -993, -1127, -1052, -888, + -1078, -678, -892, -1029, -938, -933, -854, -1066, -1139, -1028, + -741, -1123, -971, -1127, -1058, -1079, -1139, -1062, -812, -1120, + -1042, -1140, -902, -1116, -1059, -1152, -981, -1012, -1064, -1005, + -1137, -807, -995, -1128, -1073, -1030, -1111, -1143, -689, -966, + -1122, -1116, -1071, -684, -1018, -1119, -980, -938, -986, -877, + -872, -991, -992, -1034, -1068, -1076, -1112, -1110, -1115, -965, + -1137, -1030, -1084, -991, -1063, -1147, -946, -1152, -1131, -1069, + -1152, -1133, -1142, -1115, -937, -1063, -935, -1131, -1042, -1008, + -819, -800, -1106, -1152, -1055, -1051, -1105, -1049, -830, -1091, + -1131, -1028, -1051, -693, -1149, -1048, -1048, -1093, -1031, -1117, + -1139, -1121, -919, 86, -1058, -1025, -1100, -1144, -1127, -998, + -1012, -842, -1054, -991, -1029, -979, -1070, -1072, -1152, -1152, + -1142, -1152, -1071, -1135, -1152, -1089, -1045, -1042, -1042, -843, + -1084, -1097, -1111, -1098, -1049, -1025, -1152, -964, -1133, -1058, + -1102, -1082, -1048, -1077, -1152, -1074, -1099, -1059, -969, -766, + -1106, -921, -1050, -946, -964, -991, -1086, -1142, -1104, -841, + -1098, -900, -940, -629, -1145, -971, -1124, -1065, -1035, -1130, + -971, -943, -1000, -1152, -1108, -1025, -1129, -918, -924, -901, + -1102, -1104, -1137, -1152, -1152, -1013, -1056, -1050, -1057, -1033, + -1102, -1104, -1042, -995, -1076, -1012, -1115, -1152, -1038, -1041, + -861, -1068, -1152, -998, -1092, -970, -1142, -1047, -1007, -1152, + -1068, -824, -914, -904, -1100, -1053, -1073, -1152, -1152, -1144, + -689, -1097, -1152, -1093, -1112, -1019, -1043, -1033, -1137, -899, + -1008, -1128, -1074, -922, -993, -1149}, + {-946, -1116, -913, -1152, -1114, -719, -1147, -1144, -946, -1106, + -1128, -1152, -909, -843, -992, -1012, -1081, -1152, -1133, -1075, + -1115, -751, -1072, -1066, -1135, -959, -761, -1131, -956, -1145, + -696, -1152, -888, -1152, -773, -1098, -1152, -1151, -1148, -1152, + -1152, -1152, -818, -1152, -941, -1152, -1115, -1111, -994, -1140, + -1152, -811, -1142, -1128, -1152, -806, -1152, -884, -984, -1144, + -1152, -1118, -1152, -607, -856, -1152, -1120, -909, -1106, -1050, + -974, -1026, -1099, -1088, -1148, -1035, -907, -1120, -1152, -1088, + -937, -1071, -1050, -982, -1135, -1152, -1152, -1152, -1047, -1057, + -1151, -1139, -1152, -1068, -1080, -1148, -1087, -1152, -918, -1127, + -963, -1082, -945, -1152, -822, -1145, -1152, -1102, -1033, -1152, + -1131, -1083, -1152, -980, -935, -1098, -1147, -1152, -859, -1152, + -826, -1121, -924, -770, -1103, -1152, -1143, -805, -938, -1152, + -1096, -1047, -1031, -1152, -1152, -1078, -1135, -910, -1054, -1152, + -1152, -1152, -1149, -1100, -1152, -1100, -1148, -1093, -1145, -1033, + -825, -1150, -1147, -918, -1099, -963, -1152, -1000, -1143, -1133, + -1126, -1149, -1144, -796, -1152, -865, -1151, -1023, -1109, -957, + -1123, -1076, -997, -1137, -1093, -793, -1138, -932, -781, -1140, + -1152, -777, -1118, -1152, -1042, -1152, -1133, -1149, -1115, -990, + -1115, -986, -1152, -999, -1152, -1050, -1152, -1103, -1092, -837, + -1152, -990, -1139, -1152, -1152, -1056, -1007, -1100, -1132, -1143, + -1152, -1149, -1114, -1152, -1118, -1152, -1152, -940, -1079, -1152, + -941, -963, -1074, -916, -1105, -1068, -798, -1152, -1150, -956, + -1149, -1023, -1124, -1094, -1152, -1152, -1008, -1152, -961, -843, + -1107, -1149, -1152, -998, -916, -1152, -1139, -1120, -750, -1071, + -1129, -1152, -813, -638, -830, -1152}}, + {{-1152, -855, -1128, -942, -939, -796, -902, -912, -762, -707, + -1129, -875, -1093, -1103, -1148, -1018, -681, -907, -891, -746, + -784, -572, -823, -857, -768, -724, -1051, -840, -1149, -851, + -1018, -845, -1090, -838, -1134, -726, -813, -972, -606, -914, + -874, -833, -860, -710, -1125, -976, -842, -848, -1133, -892, + -894, -1052, -866, -998, -985, -1123, -914, -1143, -936, -797, + -876, -848, -846, -1017, -1122, -872, -739, -1001, -839, -1054, + -825, -737, -859, -873, -902, -1142, -1142, -963, -987, -847, + -1142, -765, -1130, -1106, -983, -910, -821, -1003, -1150, -1123, + -1152, -880, -775, -1152, -851, -885, -957, -854, -985, -1065, + -1048, -650, -1135, -761, -1145, -911, -787, -798, -1098, -948, + -888, -931, -801, -633, -1152, -822, -872, -865, -1137, -939, + -1152, -918, -1016, -439, -1033, -898, -656, -1150, -1150, -898, + -835, -705, -1135, -875, -826, -539, -919, -1134, -1152, -875, + -824, -849, -916, -1152, -886, -776, -916, -861, -876, -618, + -1125, -802, -796, -1152, -764, -1074, -867, -796, -894, -854, + -854, -1135, -1146, -1152, -936, -1128, -909, -1135, -848, -768, + -867, -764, -1144, -1106, -812, -1131, -1133, -1152, -1123, -619, + -870, -841, -765, -631, -1152, -981, -938, -923, -661, -1142, + -890, -931, -970, -1152, -884, -1113, -913, -781, -845, -1057, + -801, -1143, -775, -935, -893, -1017, -1117, -871, -837, -823, + -1006, -901, -910, -1104, -882, -947, -845, -1152, -724, -867, + -1055, -1128, -1017, -1113, -927, -1103, -1152, -782, -801, -1152, + -915, -615, -826, -822, -898, -785, -1152, -905, -1152, -1152, + -1032, -884, -837, -1134, -1139, -837, -908, -1115, -1096, -799, + -992, -868, -1036, -1084, -1117, -716}, + {-1094, -873, -1084, -976, -1041, -813, -1049, -1064, -955, -955, + -1146, -1066, -1117, -1062, -1116, -1105, -878, -1074, -1062, -987, + -959, -744, -1043, -1026, -1028, -818, -1030, -1029, -1098, -1051, + -1014, -1033, -1086, -1024, -1056, -899, -970, -1104, -964, -1112, + -1069, -932, -818, -901, -1097, -1026, -1054, -1039, -1104, -1082, + -1051, -1052, -1076, -1075, -1101, -1045, -1066, -1041, -1096, -1037, + -930, -993, -1056, -1003, -1086, -1053, -991, -922, -1041, -1116, + -882, -879, -1047, -1037, -1074, -1119, -1082, -1069, -1122, -1048, + -1097, -967, -1123, -1108, -1104, -1052, -1074, -1000, -1128, -1126, + -1152, -1004, -980, -1125, -1040, -1067, -1084, -1049, -936, -1136, + -1088, -951, -1085, -879, -1064, -1081, -1004, -935, -1132, -1094, + -954, -1057, -1024, -888, -1098, -996, -1066, -1056, -1080, -1082, + -1061, -1054, -1041, -975, -1113, -1081, -870, -978, -1084, -1101, + -1006, -972, -1129, -1087, -1028, -826, -1077, -1088, -1119, -1046, + -1002, -1033, -1082, -1146, -1037, -924, -1084, -1000, -1066, -898, + -1040, -1014, -992, -1101, -947, -1077, -1053, -958, -1042, -1053, + -983, -1152, -1152, -1070, -1065, -1073, -1062, -1123, -1046, -955, + -1037, -936, -1128, -1152, -1028, -1056, -1152, -1088, -988, -967, + -1061, -904, -998, -1064, -1120, -1144, -1067, -1079, -926, -1105, + -1071, -948, -1119, -1022, -1051, -1083, -1071, -1017, -1040, -1061, + -1011, -1111, -937, -1062, -1052, -1035, -1108, -1043, -1019, -1040, + -1114, -1068, -1062, -1152, -1052, -1136, -1046, -1096, -891, -1088, + -1098, -1097, -990, -1091, -1044, -1137, -1025, -1013, -1024, -1092, + -1085, -849, -1062, -1044, -1068, -992, -1116, -1044, -1091, -1058, + -1151, -1059, -893, -1097, -1082, -1061, -1069, -1138, -888, -1034, + -1108, -1037, -935, -1009, -1066, -917}}, +}; + +#endif // DAREDEVIL_BRANCH_MUL_DAREDEVIL_BRANCH_MUL_ARG2_H_
diff --git a/samples/branch_mul/branch_mul_expected.h b/samples/branch_mul/branch_mul_expected.h new file mode 100644 index 0000000..c75b61a --- /dev/null +++ b/samples/branch_mul/branch_mul_expected.h
@@ -0,0 +1,138 @@ +#ifndef DAREDEVIL_BRANCH_MUL_DAREDEVIL_BRANCH_MUL_EXPECTED_H_ +#define DAREDEVIL_BRANCH_MUL_DAREDEVIL_BRANCH_MUL_EXPECTED_H_ + +const int8_t expected[3][2][256] = { + {{0x38, 0x38, 0x37, 0x37, 0x38, 0x32, 0x38, 0x39, 0x26, 0x3c, 0x38, 0x37, + 0x3d, 0x3e, 0x3a, 0x35, 0x38, 0x37, 0x38, 0x36, 0x39, 0x3e, 0x36, 0x38, + 0x3b, 0x2b, 0x2e, 0x38, 0x38, 0x37, 0x45, 0x39, 0x3a, 0x38, 0x31, 0x37, + 0x39, 0x37, 0x39, 0x38, 0x38, 0x38, 0x35, 0x39, 0x36, 0x38, 0x37, 0x37, + 0x39, 0x37, 0x38, 0x33, 0x37, 0x38, 0x38, 0x39, 0x39, 0x37, 0x37, 0x36, + 0x39, 0x38, 0x38, 0x43, 0x3b, 0x38, 0x35, 0x39, 0x39, 0x3b, 0x3c, 0x39, + 0x37, 0x34, 0x36, 0x39, 0x38, 0x38, 0x38, 0x39, 0x38, 0x35, 0x37, 0x39, + 0x38, 0x38, 0x36, 0x38, 0x38, 0x38, 0x38, 0x37, 0x38, 0x39, 0x3b, 0x37, + 0x33, 0x37, 0x35, 0x37, 0x3e, 0x3b, 0x38, 0x38, 0x38, 0x38, 0x38, 0x37, + 0x3a, 0x39, 0x37, 0x39, 0x39, 0x3f, 0x38, 0x3c, 0x38, 0x39, 0x3c, 0x38, + 0x37, 0x38, 0x3b, 0x88, 0x3a, 0x36, 0x36, 0x37, 0x39, 0x37, 0x38, 0x33, + 0x36, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, + 0x38, 0x38, 0x39, 0x39, 0x37, 0x3a, 0x37, 0x39, 0x38, 0x39, 0x3a, 0x39, + 0x38, 0x32, 0x39, 0x37, 0x38, 0x39, 0x38, 0x38, 0x38, 0x3a, 0x38, 0x3d, + 0x39, 0x40, 0x37, 0x3d, 0x39, 0x38, 0x3a, 0x35, 0x38, 0x38, 0x37, 0x39, + 0x38, 0x32, 0x39, 0x34, 0x38, 0x38, 0x37, 0x37, 0x39, 0x37, 0x3b, 0x3b, + 0x35, 0x38, 0x38, 0x38, 0x38, 0x3b, 0x38, 0x38, 0x37, 0x38, 0x37, 0x39, + 0x38, 0x37, 0x38, 0x3b, 0x38, 0x38, 0x39, 0x38, 0x37, 0x37, 0x39, 0x36, + 0x38, 0x38, 0x36, 0x37, 0x39, 0x36, 0x38, 0x38, 0x3a, 0x39, 0x3b, 0x38, + 0x3c, 0x38, 0x37, 0x40, 0x39, 0x3c, 0x39, 0x3a, 0x3d, 0x38, 0x37, 0x37, + 0x35, 0x39, 0x38, 0x38, 0x3c, 0x36, 0x38, 0x37, 0x38, 0x36, 0x39, 0x38, + 0x35, 0x3d, 0x3e, 0x38}, + {0x31, 0x37, 0x3a, 0x38, 0x38, 0x33, 0x38, 0x38, 0x2d, 0x36, 0x38, 0x38, + 0x3c, 0x3f, 0x3e, 0x36, 0x35, 0x38, 0x39, 0x38, 0x38, 0x3f, 0x37, 0x3b, + 0x39, 0x6f, 0x37, 0x38, 0x34, 0x38, 0x3f, 0x38, 0x36, 0x38, 0x2e, 0x38, + 0x38, 0x36, 0x38, 0x38, 0x38, 0x38, 0x36, 0x38, 0x33, 0x38, 0x37, 0x38, + 0x39, 0x39, 0x38, 0x38, 0x38, 0x37, 0x38, 0x39, 0x38, 0x34, 0x38, 0x38, + 0x37, 0x3b, 0x38, 0x46, 0x3a, 0x38, 0x38, 0x39, 0x38, 0x37, 0x39, 0x39, + 0x39, 0x3a, 0x38, 0x39, 0x3c, 0x38, 0x38, 0x3a, 0x35, 0x34, 0x37, 0x3b, + 0x38, 0x38, 0x38, 0x38, 0x36, 0x39, 0x37, 0x37, 0x38, 0x37, 0x39, 0x38, + 0x36, 0x38, 0x34, 0x37, 0x3a, 0x36, 0x37, 0x38, 0x37, 0x38, 0x38, 0x39, + 0x37, 0x38, 0x37, 0x34, 0x38, 0x3b, 0x27, 0x39, 0x38, 0x38, 0x3f, 0x38, + 0x31, 0x38, 0x3b, 0x45, 0x3c, 0x38, 0x38, 0x34, 0x39, 0x38, 0x38, 0x34, + 0x36, 0x38, 0x38, 0x39, 0x38, 0x35, 0x39, 0x38, 0x38, 0x38, 0x38, 0x38, + 0x38, 0x36, 0x38, 0x38, 0x38, 0x37, 0x11, 0x38, 0x38, 0x3e, 0x39, 0x30, + 0x38, 0x33, 0x39, 0x38, 0x3a, 0x38, 0x38, 0x38, 0x38, 0x3c, 0x38, 0x36, + 0x39, 0x3a, 0x37, 0x3a, 0x37, 0x3a, 0x39, 0x32, 0x39, 0x36, 0x2b, 0x38, + 0x38, 0x32, 0x38, 0x38, 0x37, 0x38, 0x37, 0x38, 0x39, 0x33, 0x38, 0x39, + 0x38, 0x38, 0x38, 0x39, 0x38, 0x38, 0x37, 0x38, 0x38, 0x37, 0x3a, 0x38, + 0x38, 0x37, 0x3a, 0x39, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, + 0x38, 0x32, 0x36, 0x38, 0x39, 0x36, 0x37, 0x37, 0x3a, 0x37, 0x3e, 0x38, + 0x38, 0x35, 0x38, 0x3b, 0x38, 0x39, 0x38, 0x38, 0x39, 0x38, 0x32, 0x1b, + 0x38, 0x38, 0x38, 0x39, 0x39, 0x38, 0x38, 0x38, 0x2b, 0x39, 0x38, 0x38, + 0x34, 0x40, 0x3e, 0x38}}, + {{0x38, 0x38, 0x35, 0x38, 0x38, 0x33, 0x38, 0x39, 0x29, 0x38, 0x37, 0x36, + 0x3d, 0x40, 0x39, 0x33, 0x38, 0x38, 0x39, 0x35, 0x3b, 0x40, 0x37, 0x38, + 0x3e, 0x2b, 0x2b, 0x37, 0x38, 0x38, 0x4c, 0x38, 0x39, 0x38, 0x31, 0x35, + 0x38, 0x38, 0x3b, 0x38, 0x39, 0x38, 0x33, 0x39, 0x35, 0x38, 0x37, 0x35, + 0x39, 0x39, 0x38, 0x32, 0x37, 0x38, 0x38, 0x39, 0x39, 0x37, 0x32, 0x36, + 0x38, 0x38, 0x38, 0x46, 0x39, 0x38, 0x34, 0x3d, 0x37, 0x3d, 0x3c, 0x3a, + 0x37, 0x33, 0x37, 0x38, 0x39, 0x38, 0x38, 0x39, 0x37, 0x34, 0x37, 0x3b, + 0x38, 0x38, 0x36, 0x38, 0x38, 0x39, 0x38, 0x38, 0x38, 0x38, 0x3b, 0x37, + 0x3a, 0x37, 0x35, 0x38, 0x41, 0x39, 0x37, 0x38, 0x39, 0x37, 0x38, 0x38, + 0x39, 0x39, 0x38, 0x39, 0x39, 0x41, 0x38, 0x3c, 0x38, 0x39, 0x3b, 0x38, + 0x38, 0x38, 0x3c, 0xda, 0x38, 0x36, 0x36, 0x38, 0x38, 0x36, 0x36, 0x33, + 0x35, 0x37, 0x38, 0x39, 0x38, 0x37, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, + 0x38, 0x37, 0x39, 0x38, 0x37, 0x3d, 0x3b, 0x39, 0x39, 0x39, 0x3b, 0x35, + 0x38, 0x31, 0x38, 0x36, 0x38, 0x3a, 0x38, 0x38, 0x38, 0x3b, 0x38, 0x3b, + 0x38, 0x40, 0x37, 0x3b, 0x38, 0x37, 0x3c, 0x34, 0x37, 0x38, 0x37, 0x36, + 0x37, 0x33, 0x39, 0x31, 0x38, 0x38, 0x37, 0x37, 0x3a, 0x38, 0x39, 0x3c, + 0x35, 0x38, 0x38, 0x3b, 0x38, 0x3c, 0x37, 0x39, 0x37, 0x38, 0x38, 0x38, + 0x38, 0x37, 0x37, 0x39, 0x36, 0x38, 0x39, 0x38, 0x37, 0x36, 0x39, 0x36, + 0x38, 0x38, 0x35, 0x38, 0x38, 0x36, 0x38, 0x36, 0x3a, 0x39, 0x39, 0x38, + 0x3e, 0x38, 0x37, 0x40, 0x39, 0x3e, 0x39, 0x3a, 0x37, 0x38, 0x38, 0x37, + 0x34, 0x39, 0x38, 0x38, 0x3b, 0x36, 0x38, 0x37, 0x38, 0x34, 0x39, 0x38, + 0x36, 0x41, 0x3e, 0x38}, + {0x32, 0x38, 0x3a, 0x38, 0x37, 0x34, 0x38, 0x38, 0x30, 0x37, 0x38, 0x38, + 0x3c, 0x3f, 0x3d, 0x36, 0x37, 0x38, 0x39, 0x38, 0x38, 0x3f, 0x38, 0x3b, + 0x38, 0x68, 0x37, 0x38, 0x34, 0x38, 0x42, 0x38, 0x36, 0x38, 0x2e, 0x39, + 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x35, 0x38, 0x32, 0x38, 0x37, 0x37, + 0x3a, 0x38, 0x38, 0x39, 0x38, 0x37, 0x38, 0x39, 0x38, 0x35, 0x37, 0x38, + 0x38, 0x3b, 0x38, 0x48, 0x3b, 0x38, 0x37, 0x3c, 0x39, 0x35, 0x38, 0x39, + 0x39, 0x3a, 0x38, 0x39, 0x3c, 0x38, 0x38, 0x3a, 0x35, 0x34, 0x37, 0x3b, + 0x38, 0x38, 0x38, 0x38, 0x37, 0x39, 0x38, 0x38, 0x38, 0x37, 0x39, 0x38, + 0x37, 0x38, 0x35, 0x38, 0x3b, 0x36, 0x37, 0x38, 0x37, 0x38, 0x38, 0x38, + 0x37, 0x38, 0x37, 0x33, 0x38, 0x3b, 0x28, 0x39, 0x38, 0x38, 0x3e, 0x38, + 0x2f, 0x38, 0x3c, 0x57, 0x3a, 0x38, 0x39, 0x34, 0x39, 0x38, 0x39, 0x33, + 0x36, 0x38, 0x38, 0x39, 0x38, 0x36, 0x39, 0x38, 0x38, 0x38, 0x38, 0x38, + 0x38, 0x37, 0x38, 0x39, 0x38, 0x36, 0xe, 0x38, 0x38, 0x3d, 0x39, 0x2f, + 0x38, 0x33, 0x38, 0x38, 0x39, 0x38, 0x38, 0x39, 0x38, 0x3d, 0x38, 0x37, + 0x3a, 0x3b, 0x37, 0x39, 0x37, 0x38, 0x39, 0x31, 0x39, 0x36, 0x2b, 0x38, + 0x38, 0x32, 0x38, 0x38, 0x37, 0x38, 0x37, 0x38, 0x39, 0x34, 0x38, 0x39, + 0x38, 0x39, 0x38, 0x3a, 0x38, 0x38, 0x38, 0x36, 0x38, 0x37, 0x39, 0x38, + 0x38, 0x37, 0x3a, 0x39, 0x38, 0x38, 0x38, 0x38, 0x37, 0x38, 0x38, 0x38, + 0x38, 0x32, 0x36, 0x38, 0x3a, 0x36, 0x38, 0x36, 0x3a, 0x37, 0x3d, 0x38, + 0x38, 0x35, 0x38, 0x3b, 0x38, 0x39, 0x38, 0x38, 0x38, 0x38, 0x32, 0x18, + 0x38, 0x38, 0x38, 0x3a, 0x38, 0x38, 0x38, 0x38, 0x27, 0x39, 0x38, 0x38, + 0x35, 0x40, 0x3e, 0x38}}, + {{0x38, 0x3a, 0x37, 0x36, 0x39, 0x35, 0x39, 0x3a, 0x32, 0x3d, 0x38, 0x35, + 0x3a, 0x3a, 0x38, 0x36, 0x37, 0x37, 0x36, 0x3c, 0x3c, 0x3d, 0x39, 0x39, + 0x39, 0x65, 0x34, 0x38, 0x38, 0x39, 0x41, 0x3d, 0x38, 0x35, 0x36, 0x33, + 0x38, 0x37, 0x3a, 0x37, 0x3b, 0x37, 0x35, 0x3b, 0x36, 0x37, 0x35, 0x37, + 0x38, 0x36, 0x38, 0x35, 0x36, 0x36, 0x3a, 0x38, 0x38, 0x38, 0x34, 0x36, + 0x39, 0x3e, 0x37, 0x3d, 0x38, 0x37, 0x33, 0x3c, 0x38, 0x39, 0x38, 0x38, + 0x39, 0x33, 0x33, 0x38, 0x38, 0x37, 0x38, 0x36, 0x38, 0x37, 0x38, 0x38, + 0x38, 0x3b, 0x3a, 0x3b, 0x38, 0x38, 0x38, 0x38, 0x34, 0x38, 0x39, 0x39, + 0x39, 0x37, 0x39, 0x38, 0x3c, 0x2d, 0x38, 0x39, 0x38, 0x36, 0x32, 0x35, + 0x39, 0x37, 0x33, 0x3e, 0x37, 0x3e, 0x38, 0x3b, 0x38, 0x3b, 0x38, 0x38, + 0x38, 0x39, 0x39, 0x8e, 0x38, 0x39, 0x33, 0x38, 0x38, 0x39, 0x37, 0x33, + 0x36, 0x37, 0x36, 0x3a, 0x39, 0x38, 0x38, 0x32, 0x33, 0x34, 0x3a, 0x38, + 0x35, 0x39, 0x38, 0x37, 0x36, 0x3d, 0x39, 0x37, 0x3a, 0x38, 0x3b, 0x3b, + 0x3e, 0x36, 0x37, 0x36, 0x37, 0x38, 0x38, 0x38, 0x3b, 0x39, 0x3a, 0x38, + 0x3a, 0x3d, 0x36, 0x3b, 0x38, 0x38, 0x38, 0x36, 0x38, 0x38, 0x38, 0x3c, + 0x36, 0x37, 0x39, 0x32, 0x38, 0x38, 0x33, 0x39, 0x3e, 0x38, 0x37, 0x3a, + 0x36, 0x38, 0x36, 0x39, 0x39, 0x3a, 0x34, 0x37, 0x33, 0x38, 0x3c, 0x3b, + 0x35, 0x37, 0x37, 0x37, 0x37, 0x36, 0x38, 0x38, 0x35, 0x37, 0x38, 0x37, + 0x36, 0x38, 0x33, 0x3a, 0x38, 0x37, 0x38, 0x37, 0x3e, 0x38, 0x38, 0x34, + 0x3b, 0x38, 0x36, 0x40, 0x39, 0x3d, 0x3c, 0x32, 0x38, 0x37, 0x38, 0x38, + 0x35, 0x38, 0x36, 0x38, 0x39, 0x38, 0x3b, 0x38, 0x38, 0x35, 0x3b, 0x39, + 0x37, 0x3b, 0x3a, 0xd}, + {0x36, 0x3c, 0x38, 0x36, 0x36, 0x35, 0x39, 0x39, 0x33, 0x3a, 0x38, 0x38, + 0x39, 0x39, 0x3a, 0x37, 0x38, 0x3a, 0x3d, 0x37, 0x3b, 0x3f, 0x38, 0x38, + 0x3a, 0xd1, 0x38, 0x38, 0x37, 0x35, 0x3c, 0x3a, 0x38, 0x36, 0x35, 0x38, + 0x3a, 0x37, 0x39, 0x38, 0x37, 0x35, 0x35, 0x3b, 0x36, 0x3c, 0x36, 0x35, + 0x39, 0x38, 0x38, 0x38, 0x3a, 0x38, 0x39, 0x3a, 0x38, 0x37, 0x37, 0x3a, + 0x36, 0x38, 0x38, 0x3d, 0x39, 0x38, 0x35, 0x3b, 0x38, 0x37, 0x38, 0x3a, + 0x38, 0x39, 0x37, 0x38, 0x39, 0x37, 0x38, 0x3a, 0x37, 0x34, 0x38, 0x38, + 0x38, 0x39, 0x38, 0x39, 0x38, 0x38, 0x38, 0x36, 0x36, 0x38, 0x3a, 0x39, + 0x38, 0x3b, 0x36, 0x38, 0x39, 0x33, 0x37, 0x3c, 0x36, 0x38, 0x37, 0x38, + 0x38, 0x38, 0x39, 0x33, 0x39, 0x3c, 0x37, 0x3c, 0x37, 0x3a, 0x39, 0x38, + 0x36, 0x38, 0x3a, 0x45, 0x3a, 0x37, 0x36, 0x35, 0x39, 0x38, 0x39, 0x36, + 0x37, 0x38, 0x38, 0x37, 0x37, 0x37, 0x39, 0x34, 0x34, 0x37, 0x38, 0x38, + 0x36, 0x37, 0x38, 0x38, 0x3a, 0x38, 0x29, 0x3b, 0x3a, 0x39, 0x3a, 0x3b, + 0x3a, 0x33, 0x3b, 0x37, 0x3e, 0x38, 0x38, 0x38, 0x39, 0x39, 0x38, 0x38, + 0x39, 0x39, 0x38, 0x39, 0x38, 0x38, 0x3b, 0x36, 0x38, 0x37, 0x33, 0x39, + 0x37, 0x36, 0x38, 0x37, 0x38, 0x38, 0x34, 0x38, 0x3a, 0x37, 0x38, 0x3a, + 0x38, 0x39, 0x39, 0x38, 0x39, 0x3a, 0x38, 0x37, 0x31, 0x37, 0x33, 0x39, + 0x36, 0x37, 0x39, 0x38, 0x37, 0x37, 0x39, 0x36, 0x37, 0x38, 0x38, 0x38, + 0x36, 0x37, 0x35, 0x39, 0x39, 0x37, 0x35, 0x37, 0x3b, 0x38, 0x3a, 0x36, + 0x3a, 0x37, 0x38, 0x3c, 0x37, 0x39, 0x3b, 0x37, 0x39, 0x36, 0x36, 0x2d, + 0x38, 0x38, 0x41, 0x39, 0x39, 0x38, 0x36, 0x38, 0x23, 0x39, 0x38, 0x38, + 0x36, 0x3a, 0x3a, 0x29}}}; + +#endif // DAREDEVIL_BRANCH_MUL_DAREDEVIL_BRANCH_MUL_EXPECTED_H_