Skip to content

Commit 07f2df8

Browse files
committed
implement option __ARM_2D_CFG_OPTIMIZE_FOR_HOLLOW_OUT_MASK_IN_TRANSFORM__
1 parent 0aa64ce commit 07f2df8

File tree

1 file changed

+72
-3
lines changed

1 file changed

+72
-3
lines changed

Library/Source/__arm_2d_transform_helium.c

Lines changed: 72 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,8 @@
2121
* Title: arm-2d_transform_helium.c
2222
* Description: Acceleration extensions using Helium.
2323
*
24-
* $Date: 18. Nov 2025
25-
* $Revision: V.2.1.0
24+
* $Date: 20. Nov 2025
25+
* $Revision: V.2.2.0
2626
*
2727
* Target Processor: Cortex-M cores with Helium
2828
*
@@ -2569,6 +2569,12 @@ void __MVE_WRAPPER( __arm_2d_impl_rgb565_get_alpha_with_opacity )(ARM_2D_POINT_V
25692569
}
25702570
#endif
25712571

2572+
#if __ARM_2D_CFG_OPTIMIZE_FOR_HOLLOW_OUT_MASK_IN_TRANSFORM__
2573+
if (0 == vcmpneq_m_n_u16(vHwPixelAlpha, 0, predTail)) {
2574+
return ;
2575+
}
2576+
#endif
2577+
25722578
vHwPixelAlpha = vpselq(vdupq_n_u16(hwOpacity),
25732579
vrshrq_n_u16(vmulq(vHwPixelAlpha, (uint16_t) hwOpacity), 8),
25742580
vcmphiq_n_u16(vHwPixelAlpha, 255));
@@ -2628,6 +2634,12 @@ void __MVE_WRAPPER( __arm_2d_impl_rgb565_get_alpha_with_opacity_inside_src )(
26282634
}
26292635
#endif
26302636

2637+
#if __ARM_2D_CFG_OPTIMIZE_FOR_HOLLOW_OUT_MASK_IN_TRANSFORM__
2638+
if (0 == vcmpneq_n_u16(vHwPixelAlpha, 0)) {
2639+
return ;
2640+
}
2641+
#endif
2642+
26312643
vHwPixelAlpha =
26322644
vpselq(vdupq_n_u16(hwOpacity),
26332645
vrshrq_n_u16(vmulq(vHwPixelAlpha, (uint16_t) hwOpacity), 8),
@@ -2692,6 +2704,12 @@ void __MVE_WRAPPER(
26922704
}
26932705
#endif
26942706

2707+
#if __ARM_2D_CFG_OPTIMIZE_FOR_HOLLOW_OUT_MASK_IN_TRANSFORM__
2708+
if (0 == vcmpneq_m_n_u16(vHwPixelAlpha, 0, predTail)) {
2709+
return ;
2710+
}
2711+
#endif
2712+
26952713
vHwPixelAlpha = __arm_2d_scale_alpha_mask_opa( vHwPixelAlpha,
26962714
vldrbq_z_u16(pchTargetMask, predTail),
26972715
hwOpacity);
@@ -2755,6 +2773,12 @@ void __MVE_WRAPPER(
27552773
}
27562774
#endif
27572775

2776+
#if __ARM_2D_CFG_OPTIMIZE_FOR_HOLLOW_OUT_MASK_IN_TRANSFORM__
2777+
if (0 == vcmpneq_n_u16(vHwPixelAlpha, 0)) {
2778+
return ;
2779+
}
2780+
#endif
2781+
27582782
vHwPixelAlpha = __arm_2d_scale_alpha_mask_opa( vHwPixelAlpha,
27592783
vldrbq_u16(pchTargetMask),
27602784
hwOpacity);
@@ -2817,6 +2841,12 @@ void __MVE_WRAPPER(
28172841
}
28182842
#endif
28192843

2844+
#if __ARM_2D_CFG_OPTIMIZE_FOR_HOLLOW_OUT_MASK_IN_TRANSFORM__
2845+
if (0 == vcmpneq_m_n_u16(vHwPixelAlpha, 0, predTail)) {
2846+
return ;
2847+
}
2848+
#endif
2849+
28202850
vHwPixelAlpha = __arm_2d_scale_alpha_mask( vHwPixelAlpha,
28212851
vldrbq_z_u16(pchTargetMask, predTail));
28222852

@@ -2878,6 +2908,12 @@ void __MVE_WRAPPER(
28782908
}
28792909
#endif
28802910

2911+
#if __ARM_2D_CFG_OPTIMIZE_FOR_HOLLOW_OUT_MASK_IN_TRANSFORM__
2912+
if (0 == vcmpneq_n_u16(vHwPixelAlpha, 0)) {
2913+
return ;
2914+
}
2915+
#endif
2916+
28812917
vHwPixelAlpha = __arm_2d_scale_alpha_mask( vHwPixelAlpha,
28822918
vldrbq_u16(pchTargetMask));
28832919

@@ -2935,6 +2971,12 @@ void __MVE_WRAPPER( __arm_2d_impl_cccn888_get_alpha_with_opacity )(ARM_2D_POINT_
29352971
}
29362972
#endif
29372973

2974+
#if __ARM_2D_CFG_OPTIMIZE_FOR_HOLLOW_OUT_MASK_IN_TRANSFORM__
2975+
if (0 == vcmpneq_m_n_u16(vHwPixelAlpha, 0, predTail)) {
2976+
return ;
2977+
}
2978+
#endif
2979+
29382980
vHwPixelAlpha = vpselq(vdupq_n_u16(hwOpacity),
29392981
vrshrq_n_u16(vmulq(vHwPixelAlpha, (uint16_t) hwOpacity), 8),
29402982
vcmphiq_n_u16(vHwPixelAlpha, 255));
@@ -3025,6 +3067,12 @@ void __MVE_WRAPPER( __arm_2d_impl_cccn888_get_alpha_with_opacity_inside_src )(
30253067
}
30263068
#endif
30273069

3070+
#if __ARM_2D_CFG_OPTIMIZE_FOR_HOLLOW_OUT_MASK_IN_TRANSFORM__
3071+
if (0 == vcmpneq_n_u16(vHwPixelAlpha, 0)) {
3072+
return ;
3073+
}
3074+
#endif
3075+
30283076
vHwPixelAlpha = vpselq(vdupq_n_u16(hwOpacity),
30293077
vrshrq_n_u16(vmulq(vHwPixelAlpha, (uint16_t) hwOpacity), 8),
30303078
vcmphiq_n_u16(vHwPixelAlpha, 255));
@@ -3119,6 +3167,11 @@ void __MVE_WRAPPER(
31193167

31203168
}
31213169
#endif
3170+
#if __ARM_2D_CFG_OPTIMIZE_FOR_HOLLOW_OUT_MASK_IN_TRANSFORM__
3171+
if (0 == vcmpneq_m_n_u16(vHwPixelAlpha, 0, predTail)) {
3172+
return ;
3173+
}
3174+
#endif
31223175

31233176
vHwPixelAlpha = __arm_2d_scale_alpha_mask_opa( vHwPixelAlpha,
31243177
vldrbq_z_u16(pchTargetMask, predTail),
@@ -3212,7 +3265,11 @@ void __MVE_WRAPPER(
32123265

32133266
}
32143267
#endif
3215-
3268+
#if __ARM_2D_CFG_OPTIMIZE_FOR_HOLLOW_OUT_MASK_IN_TRANSFORM__
3269+
if (0 == vcmpneq_n_u16(vHwPixelAlpha, 0)) {
3270+
return ;
3271+
}
3272+
#endif
32163273
vHwPixelAlpha = __arm_2d_scale_alpha_mask_opa( vHwPixelAlpha,
32173274
vldrbq_u16(pchTargetMask),
32183275
hwOpacity);
@@ -3306,6 +3363,12 @@ void __MVE_WRAPPER(
33063363
}
33073364
#endif
33083365

3366+
#if __ARM_2D_CFG_OPTIMIZE_FOR_HOLLOW_OUT_MASK_IN_TRANSFORM__
3367+
if (0 == vcmpneq_m_n_u16(vHwPixelAlpha, 0, predTail)) {
3368+
return ;
3369+
}
3370+
#endif
3371+
33093372
vHwPixelAlpha = __arm_2d_scale_alpha_mask( vHwPixelAlpha,
33103373
vldrbq_z_u16(pchTargetMask, predTail));
33113374

@@ -3397,6 +3460,12 @@ void __MVE_WRAPPER(
33973460
}
33983461
#endif
33993462

3463+
#if __ARM_2D_CFG_OPTIMIZE_FOR_HOLLOW_OUT_MASK_IN_TRANSFORM__
3464+
if (0 == vcmpneq_n_u16(vHwPixelAlpha, 0)) {
3465+
return ;
3466+
}
3467+
#endif
3468+
34003469
vHwPixelAlpha = __arm_2d_scale_alpha_mask( vHwPixelAlpha,
34013470
vldrbq_u16(pchTargetMask));
34023471

0 commit comments

Comments
 (0)