Skip to content

Commit db77943

Browse files
fbarchardxnnpack-bot
authored andcommitted
Refactor pthreadpool to remove FXdiv dependency from source code.
PiperOrigin-RevId: 923722929
1 parent 0246058 commit db77943

6 files changed

Lines changed: 812 additions & 807 deletions

File tree

src/fastpath.c

Lines changed: 329 additions & 331 deletions
Large diffs are not rendered by default.

src/legacy-api.c

Lines changed: 25 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,6 @@
1111
#include <stddef.h>
1212

1313
/* Dependencies */
14-
#include <fxdiv.h>
15-
1614
/* Public library header */
1715
#include <pthreadpool.h>
1816

@@ -55,8 +53,8 @@ void pthreadpool_compute_2d_tiled(pthreadpool_t threadpool,
5553
struct compute_3d_tiled_context {
5654
pthreadpool_function_3d_tiled_t function;
5755
void* argument;
58-
struct fxdiv_divisor_size_t tile_range_j;
59-
struct fxdiv_divisor_size_t tile_range_k;
56+
size_t tile_range_j;
57+
size_t tile_range_k;
6058
size_t range_i;
6159
size_t range_j;
6260
size_t range_k;
@@ -67,12 +65,12 @@ struct compute_3d_tiled_context {
6765

6866
static void compute_3d_tiled(const struct compute_3d_tiled_context* context,
6967
size_t linear_index) {
70-
const struct fxdiv_divisor_size_t tile_range_k = context->tile_range_k;
71-
const struct fxdiv_result_size_t tile_index_ij_k =
72-
fxdiv_divide_size_t(linear_index, tile_range_k);
73-
const struct fxdiv_divisor_size_t tile_range_j = context->tile_range_j;
74-
const struct fxdiv_result_size_t tile_index_i_j =
75-
fxdiv_divide_size_t(tile_index_ij_k.quotient, tile_range_j);
68+
const size_t tile_range_k = context->tile_range_k;
69+
const struct pthreadpool_div_result tile_index_ij_k =
70+
pthreadpool_div_size_t(linear_index, tile_range_k);
71+
const size_t tile_range_j = context->tile_range_j;
72+
const struct pthreadpool_div_result tile_index_i_j =
73+
pthreadpool_div_size_t(tile_index_ij_k.quotient, tile_range_j);
7674
const size_t max_tile_i = context->tile_i;
7775
const size_t max_tile_j = context->tile_j;
7876
const size_t max_tile_k = context->tile_k;
@@ -110,8 +108,8 @@ void pthreadpool_compute_3d_tiled(pthreadpool_t threadpool,
110108
struct compute_3d_tiled_context context = {
111109
.function = function,
112110
.argument = argument,
113-
.tile_range_j = fxdiv_init_size_t(tile_range_j),
114-
.tile_range_k = fxdiv_init_size_t(tile_range_k),
111+
.tile_range_j = tile_range_j,
112+
.tile_range_k = tile_range_k,
115113
.range_i = range_i,
116114
.range_j = range_j,
117115
.range_k = range_k,
@@ -127,9 +125,9 @@ void pthreadpool_compute_3d_tiled(pthreadpool_t threadpool,
127125
struct compute_4d_tiled_context {
128126
pthreadpool_function_4d_tiled_t function;
129127
void* argument;
130-
struct fxdiv_divisor_size_t tile_range_kl;
131-
struct fxdiv_divisor_size_t tile_range_j;
132-
struct fxdiv_divisor_size_t tile_range_l;
128+
size_t tile_range_kl;
129+
size_t tile_range_j;
130+
size_t tile_range_l;
133131
size_t range_i;
134132
size_t range_j;
135133
size_t range_k;
@@ -142,15 +140,15 @@ struct compute_4d_tiled_context {
142140

143141
static void compute_4d_tiled(const struct compute_4d_tiled_context* context,
144142
size_t linear_index) {
145-
const struct fxdiv_divisor_size_t tile_range_kl = context->tile_range_kl;
146-
const struct fxdiv_result_size_t tile_index_ij_kl =
147-
fxdiv_divide_size_t(linear_index, tile_range_kl);
148-
const struct fxdiv_divisor_size_t tile_range_j = context->tile_range_j;
149-
const struct fxdiv_result_size_t tile_index_i_j =
150-
fxdiv_divide_size_t(tile_index_ij_kl.quotient, tile_range_j);
151-
const struct fxdiv_divisor_size_t tile_range_l = context->tile_range_l;
152-
const struct fxdiv_result_size_t tile_index_k_l =
153-
fxdiv_divide_size_t(tile_index_ij_kl.remainder, tile_range_l);
143+
const size_t tile_range_kl = context->tile_range_kl;
144+
const struct pthreadpool_div_result tile_index_ij_kl =
145+
pthreadpool_div_size_t(linear_index, tile_range_kl);
146+
const size_t tile_range_j = context->tile_range_j;
147+
const struct pthreadpool_div_result tile_index_i_j =
148+
pthreadpool_div_size_t(tile_index_ij_kl.quotient, tile_range_j);
149+
const size_t tile_range_l = context->tile_range_l;
150+
const struct pthreadpool_div_result tile_index_k_l =
151+
pthreadpool_div_size_t(tile_index_ij_kl.remainder, tile_range_l);
154152
const size_t max_tile_i = context->tile_i;
155153
const size_t max_tile_j = context->tile_j;
156154
const size_t max_tile_k = context->tile_k;
@@ -196,9 +194,9 @@ void pthreadpool_compute_4d_tiled(pthreadpool_t threadpool,
196194
struct compute_4d_tiled_context context = {
197195
.function = function,
198196
.argument = argument,
199-
.tile_range_kl = fxdiv_init_size_t(tile_range_k * tile_range_l),
200-
.tile_range_j = fxdiv_init_size_t(tile_range_j),
201-
.tile_range_l = fxdiv_init_size_t(tile_range_l),
197+
.tile_range_kl = tile_range_k * tile_range_l,
198+
.tile_range_j = tile_range_j,
199+
.tile_range_l = tile_range_l,
202200
.range_i = range_i,
203201
.range_j = range_j,
204202
.range_k = range_k,

0 commit comments

Comments
 (0)