| 59 | } |
| 60 | |
| 61 | void NEBitwiseOrKernel::configure(const ITensor *input1, const ITensor *input2, ITensor *output) |
| 62 | { |
| 63 | ARM_COMPUTE_ERROR_ON_NULLPTR(input1, input2, output); |
| 64 | |
| 65 | set_shape_if_empty(*output->info(), input1->info()->tensor_shape()); |
| 66 | |
| 67 | set_format_if_unknown(*output->info(), Format::U8); |
| 68 | set_format_if_unknown(*input1->info(), Format::U8); |
| 69 | set_format_if_unknown(*input2->info(), Format::U8); |
| 70 | |
| 71 | ARM_COMPUTE_ERROR_ON_MISMATCHING_SHAPES(input1, input2, output); |
| 72 | ARM_COMPUTE_ERROR_ON_DATA_TYPE_CHANNEL_NOT_IN(input1, 1, DataType::U8); |
| 73 | ARM_COMPUTE_ERROR_ON_DATA_TYPE_CHANNEL_NOT_IN(input2, 1, DataType::U8); |
| 74 | ARM_COMPUTE_ERROR_ON_DATA_TYPE_CHANNEL_NOT_IN(output, 1, DataType::U8); |
| 75 | ARM_COMPUTE_ERROR_ON_MISMATCHING_DATA_TYPES(input1, input2, output); |
| 76 | ARM_COMPUTE_ERROR_ON_SIZE_UNSUPPORTED(input1->info(), input2->info(), output->info()); |
| 77 | |
| 78 | _input1 = input1; |
| 79 | _input2 = input2; |
| 80 | _output = output; |
| 81 | |
| 82 | constexpr unsigned int num_elems_processed_per_iteration = 16; |
| 83 | |
| 84 | // Configure kernel window |
| 85 | Window win = calculate_max_window(*input1->info(), Steps(num_elems_processed_per_iteration)); |
| 86 | AccessWindowHorizontal output_access(output->info(), 0, num_elems_processed_per_iteration); |
| 87 | |
| 88 | update_window_and_padding(win, AccessWindowHorizontal(input1->info(), 0, num_elems_processed_per_iteration), |
| 89 | AccessWindowHorizontal(input2->info(), 0, num_elems_processed_per_iteration), |
| 90 | output_access); |
| 91 | |
| 92 | INEKernel::configure(win); |
| 93 | } |
| 94 | |
| 95 | void NEBitwiseOrKernel::run(const Window &window, const ThreadInfo &info) |
| 96 | { |
nothing calls this directly
no test coverage detected