Skip to content

Commit b504cf9

Browse files
committed
missing ops
1 parent 5ad9f0b commit b504cf9

File tree

2 files changed

+81
-4
lines changed

2 files changed

+81
-4
lines changed

linalg/arm64/arm64simd/arm64simd_act_f32_32n.tmpl

Lines changed: 52 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -152,10 +152,12 @@
152152
adr x4, .load_jmp_table
153153
add x4, x4, x7, LSL#2
154154
br x4
155+
155156
.load_jmp_table:
156157
b .load_a
157158
b .load_b
158159
b .load_c
160+
159161
.load_a:
160162
dup v0.4s, v24.s[0]
161163
dup v1.4s, v24.s[0]
@@ -166,6 +168,7 @@
166168
dup v6.4s, v24.s[0]
167169
dup v7.4s, v24.s[0]
168170
b .inner_loop
171+
169172
.load_b:
170173
dup v8.4s, v24.s[0]
171174
dup v9.4s, v24.s[0]
@@ -176,6 +179,7 @@
176179
dup v14.4s, v24.s[0]
177180
dup v15.4s, v24.s[0]
178181
b .inner_loop
182+
179183
.load_c:
180184
dup v16.4s, v24.s[0]
181185
dup v17.4s, v24.s[0]
@@ -186,6 +190,7 @@
186190
dup v22.4s, v24.s[0]
187191
dup v23.4s, v24.s[0]
188192
b .inner_loop
193+
189194
.abs:
190195
fabs v0.4s, v0.4s
191196
fabs v1.4s, v1.4s
@@ -196,6 +201,7 @@
196201
fabs v6.4s, v6.4s
197202
fabs v7.4s, v7.4s
198203
b .inner_loop
204+
199205
.recip:
200206
fmov v24.4s, #1.0
201207
fdiv v0.4s, v24.4s, v0.4s
@@ -207,10 +213,29 @@
207213
fdiv v6.4s, v24.4s, v6.4s
208214
fdiv v7.4s, v24.4s, v7.4s
209215
b .inner_loop
216+
210217
.add:
211-
b .unsupported
218+
fadd v0.4s, v0.4s, v8.4s
219+
fadd v1.4s, v1.4s, v9.4s
220+
fadd v2.4s, v2.4s, v10.4s
221+
fadd v3.4s, v3.4s, v11.4s
222+
fadd v4.4s, v4.4s, v12.4s
223+
fadd v5.4s, v5.4s, v13.4s
224+
fadd v6.4s, v6.4s, v14.4s
225+
fadd v7.4s, v7.4s, v15.4s
226+
b .inner_loop
227+
212228
.sub:
213-
b .unsupported
229+
fsub v0.4s, v0.4s, v8.4s
230+
fsub v1.4s, v1.4s, v9.4s
231+
fsub v2.4s, v2.4s, v10.4s
232+
fsub v3.4s, v3.4s, v11.4s
233+
fsub v4.4s, v4.4s, v12.4s
234+
fsub v5.4s, v5.4s, v13.4s
235+
fsub v6.4s, v6.4s, v14.4s
236+
fsub v7.4s, v7.4s, v15.4s
237+
b .inner_loop
238+
214239
.mul:
215240
fmul v0.4s, v0.4s, v8.4s
216241
fmul v1.4s, v1.4s, v9.4s
@@ -221,10 +246,29 @@
221246
fmul v6.4s, v6.4s, v14.4s
222247
fmul v7.4s, v7.4s, v15.4s
223248
b .inner_loop
249+
224250
.min:
225-
b .unsupported
251+
fmin v0.4s, v0.4s, v8.4s
252+
fmin v1.4s, v1.4s, v9.4s
253+
fmin v2.4s, v2.4s, v10.4s
254+
fmin v3.4s, v3.4s, v11.4s
255+
fmin v4.4s, v4.4s, v12.4s
256+
fmin v5.4s, v5.4s, v13.4s
257+
fmin v6.4s, v6.4s, v14.4s
258+
fmin v7.4s, v7.4s, v15.4s
259+
b .inner_loop
260+
226261
.max:
227-
b .unsupported
262+
fmax v0.4s, v0.4s, v8.4s
263+
fmax v1.4s, v1.4s, v9.4s
264+
fmax v2.4s, v2.4s, v10.4s
265+
fmax v3.4s, v3.4s, v11.4s
266+
fmax v4.4s, v4.4s, v12.4s
267+
fmax v5.4s, v5.4s, v13.4s
268+
fmax v6.4s, v6.4s, v14.4s
269+
fmax v7.4s, v7.4s, v15.4s
270+
b .inner_loop
271+
228272
.add_const:
229273
ins v24.s[0], w3
230274
add x5, x5, 4
@@ -297,6 +341,7 @@
297341

298342
.fma:
299343
b .unsupported
344+
300345
.if_pos_then_else:
301346
fcmge v0.4s, v0.4s, #0.0
302347
fcmge v1.4s, v1.4s, #0.0
@@ -315,10 +360,13 @@
315360
bsl v6.16b, v14.16b, v22.16b
316361
bsl v7.16b, v15.16b, v23.16b
317362
b .inner_loop
363+
318364
.swap_b_c:
319365
b .unsupported
366+
320367
.floor:
321368
b .unsupported
369+
322370
.two_pow_of_int:
323371
b .unsupported
324372

linalg/src/frame/activations/tests.rs

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -147,13 +147,42 @@ macro_rules! act_tests {
147147
}
148148
}
149149

150+
#[test]
151+
fn add_prop(x in x_strat(), v in any::<$ti>()) {
152+
if $cond {
153+
run_kernel_test::<$ti, $ker>(&x, &[Load(RegisterId::B, v), Add], |x| x + v);
154+
}
155+
}
156+
157+
#[test]
158+
fn sub_prop(x in x_strat(), v in any::<$ti>()) {
159+
if $cond {
160+
run_kernel_test::<$ti, $ker>(&x, &[Load(RegisterId::B, v), Sub], |x| x - v);
161+
}
162+
}
163+
150164
#[test]
151165
fn mul_prop(x in x_strat(), v in any::<$ti>()) {
152166
if $cond {
153167
run_kernel_test::<$ti, $ker>(&x, &[Load(RegisterId::B, v), Mul], |x| x * v);
154168
}
155169
}
156170

171+
#[test]
172+
fn min_prop(x in x_strat(), v in any::<$ti>()) {
173+
if $cond {
174+
run_kernel_test::<$ti, $ker>(&x, &[Load(RegisterId::B, v), Min], |x| x.min(v));
175+
}
176+
}
177+
178+
#[test]
179+
fn max_prop(x in x_strat(), v in any::<$ti>()) {
180+
if $cond {
181+
run_kernel_test::<$ti, $ker>(&x, &[Load(RegisterId::B, v), Max], |x| x.max(v));
182+
}
183+
}
184+
185+
157186
#[test]
158187
fn ifposte_prop(x in x_strat()) {
159188
if $cond {

0 commit comments

Comments
 (0)