evas: do not cast uint64x1_t to int in evas_common_convert_argb_premul 85/107285/2
authorCedric BAIL <cedric@osg.samsung.com>
Tue, 28 Apr 2015 21:40:58 +0000 (23:40 +0200)
committerShinwoo Kim <cinoo.kim@samsung.com>
Tue, 27 Dec 2016 11:08:03 +0000 (20:08 +0900)
Summary:
In GCC 5.1 arm_neon header for aarch64 was changed. It is not possible anymore to silently cast uint64x1_t to int.

So replace cast with proper getter function to avoid following error:
lib/evas/common/evas_convert_color.c:50:18: error: incompatible types when assigning to type 'DATA32 {aka unsigned int}' from type 'uint64x1_t'
nas += vpaddl_u32(vpaddl_u16(vpaddl_u8(cmp)));

Reviewers: raster, cedric, devilhorns

Subscribers: cedric

Projects: #efl

Differential Revision: https://phab.enlightenment.org/D2443

Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Conflicts:
src/lib/evas/common/evas_convert_color.c

Change-Id: I068c77c387e396120fa34cce87cbda2d3dbfd7af

src/lib/evas/common/evas_convert_color.c

index 3e68cdb..5648d31 100644 (file)
@@ -39,16 +39,17 @@ evas_common_convert_argb_premul(DATA32 *data, unsigned int len)
         uint8x8_t mask_0x01 = vdup_n_u8(1);
         uint8x8_t mask_0xff = vdup_n_u8(255);
         uint8x8_t cmp;
+        uint64x1_t tmp;
 
         while (data <= de - 8)
           {
              uint8x8x4_t rgba = vld4_u8(data);
 
-             cmp = vand_u8(vorr_u8(
-                   vceq_u8(rgba.val[3], mask_0xff),
-                   vceq_u8(rgba.val[3], mask_0x00)
-                   ), mask_0x01);
-             nas += vpaddl_u32(vpaddl_u16(vpaddl_u8(cmp)));
+             cmp = vand_u8(vorr_u8(vceq_u8(rgba.val[3], mask_0xff),
+                                   vceq_u8(rgba.val[3], mask_0x00)),
+                           mask_0x01);
+             tmp = vpaddl_u32(vpaddl_u16(vpaddl_u8(cmp)));
+             nas += vget_lane_u32(vreinterpret_u32_u64(tmp), 0);
 
              uint16x8x4_t lrgba;
              lrgba.val[0] = vmovl_u8(rgba.val[0]);