Merge "sw/vec_iree: Add build option for intermediate output"
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_