|
21 | 21 | * Title: arm-2d_transform_helium.c |
22 | 22 | * Description: Acceleration extensions using Helium. |
23 | 23 | * |
24 | | - * $Date: 18. Nov 2025 |
25 | | - * $Revision: V.2.1.0 |
| 24 | + * $Date: 20. Nov 2025 |
| 25 | + * $Revision: V.2.2.0 |
26 | 26 | * |
27 | 27 | * Target Processor: Cortex-M cores with Helium |
28 | 28 | * |
@@ -2569,6 +2569,12 @@ void __MVE_WRAPPER( __arm_2d_impl_rgb565_get_alpha_with_opacity )(ARM_2D_POINT_V |
2569 | 2569 | } |
2570 | 2570 | #endif |
2571 | 2571 |
|
| 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 | + |
2572 | 2578 | vHwPixelAlpha = vpselq(vdupq_n_u16(hwOpacity), |
2573 | 2579 | vrshrq_n_u16(vmulq(vHwPixelAlpha, (uint16_t) hwOpacity), 8), |
2574 | 2580 | vcmphiq_n_u16(vHwPixelAlpha, 255)); |
@@ -2628,6 +2634,12 @@ void __MVE_WRAPPER( __arm_2d_impl_rgb565_get_alpha_with_opacity_inside_src )( |
2628 | 2634 | } |
2629 | 2635 | #endif |
2630 | 2636 |
|
| 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 | + |
2631 | 2643 | vHwPixelAlpha = |
2632 | 2644 | vpselq(vdupq_n_u16(hwOpacity), |
2633 | 2645 | vrshrq_n_u16(vmulq(vHwPixelAlpha, (uint16_t) hwOpacity), 8), |
@@ -2692,6 +2704,12 @@ void __MVE_WRAPPER( |
2692 | 2704 | } |
2693 | 2705 | #endif |
2694 | 2706 |
|
| 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 | + |
2695 | 2713 | vHwPixelAlpha = __arm_2d_scale_alpha_mask_opa( vHwPixelAlpha, |
2696 | 2714 | vldrbq_z_u16(pchTargetMask, predTail), |
2697 | 2715 | hwOpacity); |
@@ -2755,6 +2773,12 @@ void __MVE_WRAPPER( |
2755 | 2773 | } |
2756 | 2774 | #endif |
2757 | 2775 |
|
| 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 | + |
2758 | 2782 | vHwPixelAlpha = __arm_2d_scale_alpha_mask_opa( vHwPixelAlpha, |
2759 | 2783 | vldrbq_u16(pchTargetMask), |
2760 | 2784 | hwOpacity); |
@@ -2817,6 +2841,12 @@ void __MVE_WRAPPER( |
2817 | 2841 | } |
2818 | 2842 | #endif |
2819 | 2843 |
|
| 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 | + |
2820 | 2850 | vHwPixelAlpha = __arm_2d_scale_alpha_mask( vHwPixelAlpha, |
2821 | 2851 | vldrbq_z_u16(pchTargetMask, predTail)); |
2822 | 2852 |
|
@@ -2878,6 +2908,12 @@ void __MVE_WRAPPER( |
2878 | 2908 | } |
2879 | 2909 | #endif |
2880 | 2910 |
|
| 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 | + |
2881 | 2917 | vHwPixelAlpha = __arm_2d_scale_alpha_mask( vHwPixelAlpha, |
2882 | 2918 | vldrbq_u16(pchTargetMask)); |
2883 | 2919 |
|
@@ -2935,6 +2971,12 @@ void __MVE_WRAPPER( __arm_2d_impl_cccn888_get_alpha_with_opacity )(ARM_2D_POINT_ |
2935 | 2971 | } |
2936 | 2972 | #endif |
2937 | 2973 |
|
| 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 | + |
2938 | 2980 | vHwPixelAlpha = vpselq(vdupq_n_u16(hwOpacity), |
2939 | 2981 | vrshrq_n_u16(vmulq(vHwPixelAlpha, (uint16_t) hwOpacity), 8), |
2940 | 2982 | vcmphiq_n_u16(vHwPixelAlpha, 255)); |
@@ -3025,6 +3067,12 @@ void __MVE_WRAPPER( __arm_2d_impl_cccn888_get_alpha_with_opacity_inside_src )( |
3025 | 3067 | } |
3026 | 3068 | #endif |
3027 | 3069 |
|
| 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 | + |
3028 | 3076 | vHwPixelAlpha = vpselq(vdupq_n_u16(hwOpacity), |
3029 | 3077 | vrshrq_n_u16(vmulq(vHwPixelAlpha, (uint16_t) hwOpacity), 8), |
3030 | 3078 | vcmphiq_n_u16(vHwPixelAlpha, 255)); |
@@ -3119,6 +3167,11 @@ void __MVE_WRAPPER( |
3119 | 3167 |
|
3120 | 3168 | } |
3121 | 3169 | #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 |
3122 | 3175 |
|
3123 | 3176 | vHwPixelAlpha = __arm_2d_scale_alpha_mask_opa( vHwPixelAlpha, |
3124 | 3177 | vldrbq_z_u16(pchTargetMask, predTail), |
@@ -3212,7 +3265,11 @@ void __MVE_WRAPPER( |
3212 | 3265 |
|
3213 | 3266 | } |
3214 | 3267 | #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 |
3216 | 3273 | vHwPixelAlpha = __arm_2d_scale_alpha_mask_opa( vHwPixelAlpha, |
3217 | 3274 | vldrbq_u16(pchTargetMask), |
3218 | 3275 | hwOpacity); |
@@ -3306,6 +3363,12 @@ void __MVE_WRAPPER( |
3306 | 3363 | } |
3307 | 3364 | #endif |
3308 | 3365 |
|
| 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 | + |
3309 | 3372 | vHwPixelAlpha = __arm_2d_scale_alpha_mask( vHwPixelAlpha, |
3310 | 3373 | vldrbq_z_u16(pchTargetMask, predTail)); |
3311 | 3374 |
|
@@ -3397,6 +3460,12 @@ void __MVE_WRAPPER( |
3397 | 3460 | } |
3398 | 3461 | #endif |
3399 | 3462 |
|
| 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 | + |
3400 | 3469 | vHwPixelAlpha = __arm_2d_scale_alpha_mask( vHwPixelAlpha, |
3401 | 3470 | vldrbq_u16(pchTargetMask)); |
3402 | 3471 |
|
|
0 commit comments