diff options
author | Marat Dukhan <maratek@google.com> | 2022-08-19 16:06:40 -0700 |
---|---|---|
committer | XNNPACK Team <xnnpack-github-robot@google.com> | 2022-08-19 16:07:35 -0700 |
commit | 84f79bb87a782c14b870941d82bb40c400ebfff0 (patch) | |
tree | e75ecb0b7b8ba81b34184dff51c2c6cffbd6f3a2 /src | |
parent | 206794a050f08fec357893c6c4e4c20c12cc6e75 (diff) | |
download | XNNPACK-84f79bb87a782c14b870941d82bb40c400ebfff0.tar.gz |
Enable Relaxed SIMD microkernels for QS8/QU8 VCVT & VLRELU
PiperOrigin-RevId: 468804523
Diffstat (limited to 'src')
-rw-r--r-- | src/init.c | 120 |
1 files changed, 84 insertions, 36 deletions
diff --git a/src/init.c b/src/init.c index 480896556..266946fb3 100644 --- a/src/init.c +++ b/src/init.c @@ -5447,19 +5447,35 @@ static void init(void) { .element_tile = 8, }; - if (is_wasm_x86) { - xnn_params.qs8.lrelu = (struct vunary_parameters) { - .ukernel = (xnn_vunary_ukernel_function) xnn_qs8_vlrelu_ukernel__wasmsimd_x86_x16, - .init.qs8_lrelu = xnn_init_qs8_lrelu_wasmsimd_x86_params, - .element_tile = 16, - }; - } else { - xnn_params.qs8.lrelu = (struct vunary_parameters) { - .ukernel = (xnn_vunary_ukernel_function) xnn_qs8_vlrelu_ukernel__wasmsimd_arm_x32, - .init.qs8_lrelu = xnn_init_qs8_lrelu_wasmsimd_arm_params, - .element_tile = 32, - }; - } + #if XNN_ARCH_WASMRELAXEDSIMD + if (is_wasm_x86) { + xnn_params.qs8.lrelu = (struct vunary_parameters) { + .ukernel = (xnn_vunary_ukernel_function) xnn_qs8_vlrelu_ukernel__wasmrelaxedsimd_x86_x32, + .init.qs8_lrelu = xnn_init_qs8_lrelu_wasmsimd_x86_params, + .element_tile = 32, + }; + } else { + xnn_params.qs8.lrelu = (struct vunary_parameters) { + .ukernel = (xnn_vunary_ukernel_function) xnn_qs8_vlrelu_ukernel__wasmrelaxedsimd_arm_x32, + .init.qs8_lrelu = xnn_init_qs8_lrelu_wasmsimd_arm_params, + .element_tile = 32, + }; + } + #else + if (is_wasm_x86) { + xnn_params.qs8.lrelu = (struct vunary_parameters) { + .ukernel = (xnn_vunary_ukernel_function) xnn_qs8_vlrelu_ukernel__wasmsimd_x86_x16, + .init.qs8_lrelu = xnn_init_qs8_lrelu_wasmsimd_x86_params, + .element_tile = 16, + }; + } else { + xnn_params.qs8.lrelu = (struct vunary_parameters) { + .ukernel = (xnn_vunary_ukernel_function) xnn_qs8_vlrelu_ukernel__wasmsimd_arm_x32, + .init.qs8_lrelu = xnn_init_qs8_lrelu_wasmsimd_arm_params, + .element_tile = 32, + }; + } + #endif #endif // XNN_NO_QS8_OPERATORS /**************************** QU8 WAsm SIMD micro-kernels****************************/ @@ -5517,19 +5533,35 @@ static void init(void) { .element_tile = 8, }; - if (is_wasm_x86) { - xnn_params.qu8.lrelu = (struct vunary_parameters) { - .ukernel = (xnn_vunary_ukernel_function) xnn_qu8_vlrelu_ukernel__wasmsimd_x86_x16, - .init.qu8_lrelu = xnn_init_qu8_lrelu_wasmsimd_x86_params, - .element_tile = 16, - }; - } else { - xnn_params.qu8.lrelu = (struct vunary_parameters) { - .ukernel = (xnn_vunary_ukernel_function) xnn_qu8_vlrelu_ukernel__wasmsimd_arm_x32, - .init.qu8_lrelu = xnn_init_qu8_lrelu_wasmsimd_arm_params, - .element_tile = 32, - }; - } + #if XNN_ARCH_WASMRELAXEDSIMD + if (is_wasm_x86) { + xnn_params.qu8.lrelu = (struct vunary_parameters) { + .ukernel = (xnn_vunary_ukernel_function) xnn_qu8_vlrelu_ukernel__wasmrelaxedsimd_x86_x32, + .init.qu8_lrelu = xnn_init_qu8_lrelu_wasmsimd_x86_params, + .element_tile = 32, + }; + } else { + xnn_params.qu8.lrelu = (struct vunary_parameters) { + .ukernel = (xnn_vunary_ukernel_function) xnn_qu8_vlrelu_ukernel__wasmrelaxedsimd_arm_x32, + .init.qu8_lrelu = xnn_init_qu8_lrelu_wasmsimd_arm_params, + .element_tile = 32, + }; + } + #else + if (is_wasm_x86) { + xnn_params.qu8.lrelu = (struct vunary_parameters) { + .ukernel = (xnn_vunary_ukernel_function) xnn_qu8_vlrelu_ukernel__wasmsimd_x86_x16, + .init.qu8_lrelu = xnn_init_qu8_lrelu_wasmsimd_x86_params, + .element_tile = 16, + }; + } else { + xnn_params.qu8.lrelu = (struct vunary_parameters) { + .ukernel = (xnn_vunary_ukernel_function) xnn_qu8_vlrelu_ukernel__wasmsimd_arm_x32, + .init.qu8_lrelu = xnn_init_qu8_lrelu_wasmsimd_arm_params, + .element_tile = 32, + }; + } + #endif #endif // XNN_NO_QU8_OPERATORS /**************************** S8 WAsm SIMD micro-kernels****************************/ @@ -6206,21 +6238,37 @@ static void init(void) { .init.f32_qu8_cvt = xnn_init_f32_qu8_cvt_wasmsimd_magic_params, .element_tile = 32, }; - xnn_params.vcvt.qs8 = (struct vunary_parameters) { - .ukernel = (xnn_vunary_ukernel_function) xnn_qs8_vcvt_ukernel__wasmsimd_x16, - .init.qs8_cvt = xnn_init_qs8_cvt_wasmsimd_params, - .element_tile = 16, - }; + #if XNN_ARCH_WASMRELAXEDSIMD + xnn_params.vcvt.qs8 = (struct vunary_parameters) { + .ukernel = (xnn_vunary_ukernel_function) xnn_qs8_vcvt_ukernel__wasmrelaxedsimd_x32, + .init.qs8_cvt = xnn_init_qs8_cvt_wasmsimd_params, + .element_tile = 32, + }; + #else + xnn_params.vcvt.qs8 = (struct vunary_parameters) { + .ukernel = (xnn_vunary_ukernel_function) xnn_qs8_vcvt_ukernel__wasmsimd_x16, + .init.qs8_cvt = xnn_init_qs8_cvt_wasmsimd_params, + .element_tile = 16, + }; + #endif xnn_params.vcvt.qs8_to_f32 = (struct vunary_parameters) { .ukernel = (xnn_vunary_ukernel_function) xnn_qs8_f32_vcvt_ukernel__wasmsimd_x32, .init.qs8_f32_cvt = xnn_init_qs8_f32_cvt_wasmsimd_params, .element_tile = 32, }; - xnn_params.vcvt.qu8 = (struct vunary_parameters) { - .ukernel = (xnn_vunary_ukernel_function) xnn_qu8_vcvt_ukernel__wasmsimd_x16, - .init.qu8_cvt = xnn_init_qu8_cvt_wasmsimd_params, - .element_tile = 16, - }; + #if XNN_ARCH_WASMRELAXEDSIMD + xnn_params.vcvt.qu8 = (struct vunary_parameters) { + .ukernel = (xnn_vunary_ukernel_function) xnn_qu8_vcvt_ukernel__wasmrelaxedsimd_x32, + .init.qu8_cvt = xnn_init_qu8_cvt_wasmsimd_params, + .element_tile = 32, + }; + #else + xnn_params.vcvt.qu8 = (struct vunary_parameters) { + .ukernel = (xnn_vunary_ukernel_function) xnn_qu8_vcvt_ukernel__wasmsimd_x16, + .init.qu8_cvt = xnn_init_qu8_cvt_wasmsimd_params, + .element_tile = 16, + }; + #endif xnn_params.vcvt.qu8_to_f32 = (struct vunary_parameters) { .ukernel = (xnn_vunary_ukernel_function) xnn_qu8_f32_vcvt_ukernel__wasmsimd_x32, .init.qu8_f32_cvt = xnn_init_qu8_f32_cvt_wasmsimd_params, |