@@ -80,39 +80,11 @@ typedef VipsUnaryClass VipsAbsClass;
80
80
81
81
G_DEFINE_TYPE (VipsAbs , vips_abs , VIPS_TYPE_UNARY );
82
82
83
- static void *
84
- vips_abs_orc_init_cb (void * a )
85
- {
86
- VipsAbs * abs = (VipsAbs * ) a ;
87
- VipsArithmeticClass * aclass = VIPS_ARITHMETIC_GET_CLASS (abs );
88
-
89
- VipsVector * v ;
90
-
91
- vips_arithmetic_set_vector (aclass );
92
-
93
- v = vips_arithmetic_get_program (aclass , VIPS_FORMAT_CHAR );
94
- vips_vector_asm2 (v , "absb" , "d1" , "s1" );
95
-
96
- v = vips_arithmetic_get_program (aclass , VIPS_FORMAT_SHORT );
97
- vips_vector_asm2 (v , "absw" , "d1" , "s1" );
98
-
99
- v = vips_arithmetic_get_program (aclass , VIPS_FORMAT_INT );
100
- vips_vector_asm2 (v , "absl" , "d1" , "s1" );
101
-
102
- vips_arithmetic_compile (aclass );
103
-
104
- return NULL ;
105
- }
106
-
107
83
static int
108
84
vips_abs_build (VipsObject * object )
109
85
{
110
- static GOnce once = G_ONCE_INIT ;
111
-
112
86
VipsUnary * unary = (VipsUnary * ) object ;
113
87
114
- VIPS_ONCE (& once , vips_abs_orc_init_cb , object );
115
-
116
88
if (unary -> in &&
117
89
vips_band_format_isuint (unary -> in -> BandFmt ))
118
90
return vips_unary_copy (unary );
@@ -199,50 +171,35 @@ static void
199
171
vips_abs_buffer (VipsArithmetic * arithmetic ,
200
172
VipsPel * out , VipsPel * * in , int width )
201
173
{
202
- VipsArithmeticClass * class = VIPS_ARITHMETIC_GET_CLASS (arithmetic );
203
174
VipsImage * im = arithmetic -> ready [0 ];
204
175
const int bands = vips_image_get_bands (im );
205
176
int sz = width * bands ;
206
177
207
- VipsVector * v ;
208
-
209
- if ((v = vips_arithmetic_get_vector (class ,
210
- vips_image_get_format (im )))) {
211
- VipsExecutor ex ;
212
-
213
- vips_executor_set_program (& ex , v , sz );
214
- vips_executor_set_array (& ex , v -> s [0 ], in [0 ]);
215
- vips_executor_set_destination (& ex , out );
216
-
217
- vips_executor_run (& ex );
218
- }
219
- else {
220
- switch (vips_image_get_format (im )) {
221
- case VIPS_FORMAT_CHAR :
222
- ABS_INT (signed char ) ;
223
- break ;
224
- case VIPS_FORMAT_SHORT :
225
- ABS_INT (signed short ) ;
226
- break ;
227
- case VIPS_FORMAT_INT :
228
- ABS_INT (signed int ) ;
229
- break ;
230
- case VIPS_FORMAT_FLOAT :
231
- ABS_FLOAT (float );
232
- break ;
233
- case VIPS_FORMAT_DOUBLE :
234
- ABS_FLOAT (double );
235
- break ;
236
- case VIPS_FORMAT_COMPLEX :
237
- ABS_COMPLEX (float );
238
- break ;
239
- case VIPS_FORMAT_DPCOMPLEX :
240
- ABS_COMPLEX (double );
241
- break ;
242
-
243
- default :
244
- g_assert_not_reached ();
245
- }
178
+ switch (vips_image_get_format (im )) {
179
+ case VIPS_FORMAT_CHAR :
180
+ ABS_INT (signed char ) ;
181
+ break ;
182
+ case VIPS_FORMAT_SHORT :
183
+ ABS_INT (signed short ) ;
184
+ break ;
185
+ case VIPS_FORMAT_INT :
186
+ ABS_INT (signed int ) ;
187
+ break ;
188
+ case VIPS_FORMAT_FLOAT :
189
+ ABS_FLOAT (float );
190
+ break ;
191
+ case VIPS_FORMAT_DOUBLE :
192
+ ABS_FLOAT (double );
193
+ break ;
194
+ case VIPS_FORMAT_COMPLEX :
195
+ ABS_COMPLEX (float );
196
+ break ;
197
+ case VIPS_FORMAT_DPCOMPLEX :
198
+ ABS_COMPLEX (double );
199
+ break ;
200
+
201
+ default :
202
+ g_assert_not_reached ();
246
203
}
247
204
}
248
205
0 commit comments