singe-npp 0.1.0-alpha.8

Safe Rust wrappers for NVIDIA Performance Primitives library (NPP).
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
use super::*;

impl_constant_operation!(add_constant_f32, f32, nppsAddC_32f_Ctx);
impl_constant_operation!(add_constant_f64, f64, nppsAddC_64f_Ctx);
impl_constant_operation!(add_constant_f32_complex, Complex32, nppsAddC_32fc_Ctx);
impl_constant_operation!(add_constant_f64_complex, Complex64, nppsAddC_64fc_Ctx);
impl_constant_operation!(subtract_constant_f32, f32, nppsSubC_32f_Ctx);
impl_constant_operation!(subtract_constant_f64, f64, nppsSubC_64f_Ctx);
impl_constant_operation!(subtract_constant_f32_complex, Complex32, nppsSubC_32fc_Ctx);
impl_constant_operation!(subtract_constant_f64_complex, Complex64, nppsSubC_64fc_Ctx);
impl_constant_operation!(subtract_from_constant_f32, f32, nppsSubCRev_32f_Ctx);
impl_constant_operation!(subtract_from_constant_f64, f64, nppsSubCRev_64f_Ctx);
impl_constant_operation!(
    subtract_from_constant_f32_complex,
    Complex32,
    nppsSubCRev_32fc_Ctx
);
impl_constant_operation!(
    subtract_from_constant_f64_complex,
    Complex64,
    nppsSubCRev_64fc_Ctx
);
impl_constant_operation!(multiply_constant_f32, f32, nppsMulC_32f_Ctx);
impl_constant_operation!(multiply_constant_f64, f64, nppsMulC_64f_Ctx);
impl_constant_operation!(multiply_constant_f32_complex, Complex32, nppsMulC_32fc_Ctx);
impl_constant_operation!(multiply_constant_f64_complex, Complex64, nppsMulC_64fc_Ctx);
impl_constant_operation!(divide_constant_f32, f32, nppsDivC_32f_Ctx);
impl_constant_operation!(divide_constant_f64, f64, nppsDivC_64f_Ctx);
impl_constant_operation!(divide_constant_f32_complex, Complex32, nppsDivC_32fc_Ctx);
impl_constant_operation!(divide_constant_f64_complex, Complex64, nppsDivC_64fc_Ctx);
impl_constant_operation!(divide_into_constant_u16, u16, nppsDivCRev_16u_Ctx);
impl_constant_operation!(divide_into_constant_f32, f32, nppsDivCRev_32f_Ctx);
impl_constant_operation!(and_constant_u8, u8, nppsAndC_8u_Ctx);
impl_constant_operation!(and_constant_u16, u16, nppsAndC_16u_Ctx);
impl_constant_operation!(and_constant_u32, u32, nppsAndC_32u_Ctx);
impl_constant_operation!(or_constant_u8, u8, nppsOrC_8u_Ctx);
impl_constant_operation!(or_constant_u16, u16, nppsOrC_16u_Ctx);
impl_constant_operation!(or_constant_u32, u32, nppsOrC_32u_Ctx);
impl_constant_operation!(xor_constant_u8, u8, nppsXorC_8u_Ctx);
impl_constant_operation!(xor_constant_u16, u16, nppsXorC_16u_Ctx);
impl_constant_operation!(xor_constant_u32, u32, nppsXorC_32u_Ctx);

impl_scaled_constant_operation!(add_constant_u8_scaled, u8, nppsAddC_8u_Sfs_Ctx);
impl_scaled_constant_operation!(add_constant_u16_scaled, u16, nppsAddC_16u_Sfs_Ctx);
impl_scaled_constant_operation!(add_constant_i16_scaled, i16, nppsAddC_16s_Sfs_Ctx);
impl_scaled_constant_operation!(add_constant_i32_scaled, i32, nppsAddC_32s_Sfs_Ctx);
impl_scaled_constant_operation!(
    add_constant_i16_complex_scaled,
    ComplexI16,
    nppsAddC_16sc_Sfs_Ctx
);
impl_scaled_constant_operation!(
    add_constant_i32_complex_scaled,
    ComplexI32,
    nppsAddC_32sc_Sfs_Ctx
);
impl_scaled_constant_operation!(subtract_constant_u8_scaled, u8, nppsSubC_8u_Sfs_Ctx);
impl_scaled_constant_operation!(subtract_constant_u16_scaled, u16, nppsSubC_16u_Sfs_Ctx);
impl_scaled_constant_operation!(subtract_constant_i16_scaled, i16, nppsSubC_16s_Sfs_Ctx);
impl_scaled_constant_operation!(subtract_constant_i32_scaled, i32, nppsSubC_32s_Sfs_Ctx);
impl_scaled_constant_operation!(
    subtract_constant_i16_complex_scaled,
    ComplexI16,
    nppsSubC_16sc_Sfs_Ctx
);
impl_scaled_constant_operation!(
    subtract_constant_i32_complex_scaled,
    ComplexI32,
    nppsSubC_32sc_Sfs_Ctx
);
impl_scaled_constant_operation!(subtract_from_constant_u8_scaled, u8, nppsSubCRev_8u_Sfs_Ctx);
impl_scaled_constant_operation!(
    subtract_from_constant_u16_scaled,
    u16,
    nppsSubCRev_16u_Sfs_Ctx
);
impl_scaled_constant_operation!(
    subtract_from_constant_i16_scaled,
    i16,
    nppsSubCRev_16s_Sfs_Ctx
);
impl_scaled_constant_operation!(
    subtract_from_constant_i32_scaled,
    i32,
    nppsSubCRev_32s_Sfs_Ctx
);
impl_scaled_constant_operation!(
    subtract_from_constant_i16_complex_scaled,
    ComplexI16,
    nppsSubCRev_16sc_Sfs_Ctx
);
impl_scaled_constant_operation!(
    subtract_from_constant_i32_complex_scaled,
    ComplexI32,
    nppsSubCRev_32sc_Sfs_Ctx
);
impl_scaled_constant_operation!(multiply_constant_u8_scaled, u8, nppsMulC_8u_Sfs_Ctx);
impl_scaled_constant_operation!(multiply_constant_u16_scaled, u16, nppsMulC_16u_Sfs_Ctx);
impl_scaled_constant_operation!(multiply_constant_i16_scaled, i16, nppsMulC_16s_Sfs_Ctx);
impl_scaled_constant_operation!(multiply_constant_i32_scaled, i32, nppsMulC_32s_Sfs_Ctx);
impl_scaled_constant_operation!(
    multiply_constant_i16_complex_scaled,
    ComplexI16,
    nppsMulC_16sc_Sfs_Ctx
);
impl_scaled_constant_operation!(
    multiply_constant_i32_complex_scaled,
    ComplexI32,
    nppsMulC_32sc_Sfs_Ctx
);
impl_scaled_constant_operation!(divide_constant_u8_scaled, u8, nppsDivC_8u_Sfs_Ctx);
impl_scaled_constant_operation!(divide_constant_u16_scaled, u16, nppsDivC_16u_Sfs_Ctx);
impl_scaled_constant_operation!(divide_constant_i16_scaled, i16, nppsDivC_16s_Sfs_Ctx);
impl_scaled_constant_operation!(
    divide_constant_i16_complex_scaled,
    ComplexI16,
    nppsDivC_16sc_Sfs_Ctx
);
impl_destination_update_constant_operation!(add_product_constant_f32, f32, nppsAddProductC_32f_Ctx);
impl_mixed_constant_operation!(
    multiply_constant_f32_to_i16_low,
    f32,
    i16,
    nppsMulC_Low_32f16s_Ctx
);
impl_scaled_mixed_constant_operation!(
    multiply_constant_f32_to_i16_scaled,
    f32,
    i16,
    nppsMulC_32f16s_Sfs_Ctx
);

impl_constant_operation_in_place!(add_constant_f32_in_place, f32, nppsAddC_32f_I_Ctx);
impl_constant_operation_in_place!(add_constant_f64_in_place, f64, nppsAddC_64f_I_Ctx);
impl_constant_operation_in_place!(
    add_constant_f32_complex_in_place,
    Complex32,
    nppsAddC_32fc_I_Ctx
);
impl_constant_operation_in_place!(
    add_constant_f64_complex_in_place,
    Complex64,
    nppsAddC_64fc_I_Ctx
);
impl_constant_operation_in_place!(subtract_constant_f32_in_place, f32, nppsSubC_32f_I_Ctx);
impl_constant_operation_in_place!(subtract_constant_f64_in_place, f64, nppsSubC_64f_I_Ctx);
impl_constant_operation_in_place!(
    subtract_constant_f32_complex_in_place,
    Complex32,
    nppsSubC_32fc_I_Ctx
);
impl_constant_operation_in_place!(
    subtract_constant_f64_complex_in_place,
    Complex64,
    nppsSubC_64fc_I_Ctx
);
impl_constant_operation_in_place!(
    subtract_from_constant_f32_in_place,
    f32,
    nppsSubCRev_32f_I_Ctx
);
impl_constant_operation_in_place!(
    subtract_from_constant_f64_in_place,
    f64,
    nppsSubCRev_64f_I_Ctx
);
impl_constant_operation_in_place!(
    subtract_from_constant_f32_complex_in_place,
    Complex32,
    nppsSubCRev_32fc_I_Ctx
);
impl_constant_operation_in_place!(
    subtract_from_constant_f64_complex_in_place,
    Complex64,
    nppsSubCRev_64fc_I_Ctx
);
impl_constant_operation_in_place!(multiply_constant_f32_in_place, f32, nppsMulC_32f_I_Ctx);
impl_constant_operation_in_place!(multiply_constant_f64_in_place, f64, nppsMulC_64f_I_Ctx);
impl_constant_operation_in_place!(
    multiply_constant_f32_complex_in_place,
    Complex32,
    nppsMulC_32fc_I_Ctx
);
impl_constant_operation_in_place!(
    multiply_constant_f64_complex_in_place,
    Complex64,
    nppsMulC_64fc_I_Ctx
);
impl_constant_operation_in_place!(divide_constant_f32_in_place, f32, nppsDivC_32f_I_Ctx);
impl_constant_operation_in_place!(divide_constant_f64_in_place, f64, nppsDivC_64f_I_Ctx);
impl_constant_operation_in_place!(
    divide_constant_f32_complex_in_place,
    Complex32,
    nppsDivC_32fc_I_Ctx
);
impl_constant_operation_in_place!(
    divide_constant_f64_complex_in_place,
    Complex64,
    nppsDivC_64fc_I_Ctx
);
impl_constant_operation_in_place!(
    divide_into_constant_u16_in_place,
    u16,
    nppsDivCRev_16u_I_Ctx
);
impl_constant_operation_in_place!(
    divide_into_constant_f32_in_place,
    f32,
    nppsDivCRev_32f_I_Ctx
);
impl_constant_operation_in_place!(and_constant_u8_in_place, u8, nppsAndC_8u_I_Ctx);
impl_constant_operation_in_place!(and_constant_u16_in_place, u16, nppsAndC_16u_I_Ctx);
impl_constant_operation_in_place!(and_constant_u32_in_place, u32, nppsAndC_32u_I_Ctx);
impl_constant_operation_in_place!(or_constant_u8_in_place, u8, nppsOrC_8u_I_Ctx);
impl_constant_operation_in_place!(or_constant_u16_in_place, u16, nppsOrC_16u_I_Ctx);
impl_constant_operation_in_place!(or_constant_u32_in_place, u32, nppsOrC_32u_I_Ctx);
impl_constant_operation_in_place!(xor_constant_u8_in_place, u8, nppsXorC_8u_I_Ctx);
impl_constant_operation_in_place!(xor_constant_u16_in_place, u16, nppsXorC_16u_I_Ctx);
impl_constant_operation_in_place!(xor_constant_u32_in_place, u32, nppsXorC_32u_I_Ctx);

impl_scaled_constant_operation_in_place!(add_constant_u8_scaled_in_place, u8, nppsAddC_8u_ISfs_Ctx);
impl_scaled_constant_operation_in_place!(
    add_constant_u16_scaled_in_place,
    u16,
    nppsAddC_16u_ISfs_Ctx
);
impl_scaled_constant_operation_in_place!(
    add_constant_i16_scaled_in_place,
    i16,
    nppsAddC_16s_ISfs_Ctx
);
impl_scaled_constant_operation_in_place!(
    add_constant_i32_scaled_in_place,
    i32,
    nppsAddC_32s_ISfs_Ctx
);
impl_scaled_constant_operation_in_place!(
    add_constant_i16_complex_scaled_in_place,
    ComplexI16,
    nppsAddC_16sc_ISfs_Ctx
);
impl_scaled_constant_operation_in_place!(
    add_constant_i32_complex_scaled_in_place,
    ComplexI32,
    nppsAddC_32sc_ISfs_Ctx
);
impl_scaled_constant_operation_in_place!(
    subtract_constant_u8_scaled_in_place,
    u8,
    nppsSubC_8u_ISfs_Ctx
);
impl_scaled_constant_operation_in_place!(
    subtract_constant_u16_scaled_in_place,
    u16,
    nppsSubC_16u_ISfs_Ctx
);
impl_scaled_constant_operation_in_place!(
    subtract_constant_i16_scaled_in_place,
    i16,
    nppsSubC_16s_ISfs_Ctx
);
impl_scaled_constant_operation_in_place!(
    subtract_constant_i32_scaled_in_place,
    i32,
    nppsSubC_32s_ISfs_Ctx
);
impl_scaled_constant_operation_in_place!(
    subtract_constant_i16_complex_scaled_in_place,
    ComplexI16,
    nppsSubC_16sc_ISfs_Ctx
);
impl_scaled_constant_operation_in_place!(
    subtract_constant_i32_complex_scaled_in_place,
    ComplexI32,
    nppsSubC_32sc_ISfs_Ctx
);
impl_scaled_constant_operation_in_place!(
    subtract_from_constant_u8_scaled_in_place,
    u8,
    nppsSubCRev_8u_ISfs_Ctx
);
impl_scaled_constant_operation_in_place!(
    subtract_from_constant_u16_scaled_in_place,
    u16,
    nppsSubCRev_16u_ISfs_Ctx
);
impl_scaled_constant_operation_in_place!(
    subtract_from_constant_i16_scaled_in_place,
    i16,
    nppsSubCRev_16s_ISfs_Ctx
);
impl_scaled_constant_operation_in_place!(
    subtract_from_constant_i32_scaled_in_place,
    i32,
    nppsSubCRev_32s_ISfs_Ctx
);
impl_scaled_constant_operation_in_place!(
    subtract_from_constant_i16_complex_scaled_in_place,
    ComplexI16,
    nppsSubCRev_16sc_ISfs_Ctx
);
impl_scaled_constant_operation_in_place!(
    subtract_from_constant_i32_complex_scaled_in_place,
    ComplexI32,
    nppsSubCRev_32sc_ISfs_Ctx
);
impl_scaled_constant_operation_in_place!(
    multiply_constant_u8_scaled_in_place,
    u8,
    nppsMulC_8u_ISfs_Ctx
);
impl_scaled_constant_operation_in_place!(
    multiply_constant_u16_scaled_in_place,
    u16,
    nppsMulC_16u_ISfs_Ctx
);
impl_scaled_constant_operation_in_place!(
    multiply_constant_i16_scaled_in_place,
    i16,
    nppsMulC_16s_ISfs_Ctx
);
impl_scaled_constant_operation_in_place!(
    multiply_constant_i32_scaled_in_place,
    i32,
    nppsMulC_32s_ISfs_Ctx
);
impl_scaled_constant_operation_in_place!(
    multiply_constant_i16_complex_scaled_in_place,
    ComplexI16,
    nppsMulC_16sc_ISfs_Ctx
);
impl_scaled_constant_operation_in_place!(
    multiply_constant_i32_complex_scaled_in_place,
    ComplexI32,
    nppsMulC_32sc_ISfs_Ctx
);
impl_scaled_mixed_constant_operation_in_place!(
    multiply_constant_f64_to_i64_scaled_in_place,
    i64,
    f64,
    nppsMulC_64f64s_ISfs_Ctx
);
impl_scaled_constant_operation_in_place!(
    divide_constant_u8_scaled_in_place,
    u8,
    nppsDivC_8u_ISfs_Ctx
);
impl_scaled_constant_operation_in_place!(
    divide_constant_u16_scaled_in_place,
    u16,
    nppsDivC_16u_ISfs_Ctx
);
impl_scaled_constant_operation_in_place!(
    divide_constant_i16_scaled_in_place,
    i16,
    nppsDivC_16s_ISfs_Ctx
);
impl_scaled_constant_operation_in_place!(
    divide_constant_i16_complex_scaled_in_place,
    ComplexI16,
    nppsDivC_16sc_ISfs_Ctx
);

impl_shift_constant_operation!(left_shift_constant_u8, u8, nppsLShiftC_8u_Ctx);
impl_shift_constant_operation!(left_shift_constant_u16, u16, nppsLShiftC_16u_Ctx);
impl_shift_constant_operation!(left_shift_constant_i16, i16, nppsLShiftC_16s_Ctx);
impl_shift_constant_operation!(left_shift_constant_u32, u32, nppsLShiftC_32u_Ctx);
impl_shift_constant_operation!(left_shift_constant_i32, i32, nppsLShiftC_32s_Ctx);
impl_shift_constant_operation!(right_shift_constant_u8, u8, nppsRShiftC_8u_Ctx);
impl_shift_constant_operation!(right_shift_constant_u16, u16, nppsRShiftC_16u_Ctx);
impl_shift_constant_operation!(right_shift_constant_i16, i16, nppsRShiftC_16s_Ctx);
impl_shift_constant_operation!(right_shift_constant_u32, u32, nppsRShiftC_32u_Ctx);
impl_shift_constant_operation!(right_shift_constant_i32, i32, nppsRShiftC_32s_Ctx);

impl_shift_constant_operation_in_place!(left_shift_constant_u8_in_place, u8, nppsLShiftC_8u_I_Ctx);
impl_shift_constant_operation_in_place!(
    left_shift_constant_u16_in_place,
    u16,
    nppsLShiftC_16u_I_Ctx
);
impl_shift_constant_operation_in_place!(
    left_shift_constant_i16_in_place,
    i16,
    nppsLShiftC_16s_I_Ctx
);
impl_shift_constant_operation_in_place!(
    left_shift_constant_u32_in_place,
    u32,
    nppsLShiftC_32u_I_Ctx
);
impl_shift_constant_operation_in_place!(
    left_shift_constant_i32_in_place,
    i32,
    nppsLShiftC_32s_I_Ctx
);
impl_shift_constant_operation_in_place!(right_shift_constant_u8_in_place, u8, nppsRShiftC_8u_I_Ctx);
impl_shift_constant_operation_in_place!(
    right_shift_constant_u16_in_place,
    u16,
    nppsRShiftC_16u_I_Ctx
);
impl_shift_constant_operation_in_place!(
    right_shift_constant_i16_in_place,
    i16,
    nppsRShiftC_16s_I_Ctx
);
impl_shift_constant_operation_in_place!(
    right_shift_constant_u32_in_place,
    u32,
    nppsRShiftC_32u_I_Ctx
);
impl_shift_constant_operation_in_place!(
    right_shift_constant_i32_in_place,
    i32,
    nppsRShiftC_32s_I_Ctx
);