summaryrefslogtreecommitdiffstatshomepage
path: root/src/emu/video/rgbvmx.h
diff options
context:
space:
mode:
author R. Belmont <rb6502@users.noreply.github.com>2008-12-12 04:20:19 +0000
committer R. Belmont <rb6502@users.noreply.github.com>2008-12-12 04:20:19 +0000
commit2c7aed307aa9b98db08a87e40d8bed5ed578a8ea (patch)
tree9fd737a9c236a5a40d525ae0e06dc380838366d4 /src/emu/video/rgbvmx.h
parentcd7f972c5e17f5a9e77ef3d6113a33dc9616742b (diff)
Fix Altivec RGB primitives on newer GCCs. [budge, Vas Crabb]
Diffstat (limited to 'src/emu/video/rgbvmx.h')
-rw-r--r--src/emu/video/rgbvmx.h64
1 files changed, 32 insertions, 32 deletions
diff --git a/src/emu/video/rgbvmx.h b/src/emu/video/rgbvmx.h
index fc83baadbe8..8c70f0597ef 100644
--- a/src/emu/video/rgbvmx.h
+++ b/src/emu/video/rgbvmx.h
@@ -65,7 +65,7 @@ INLINE void rgba_comp_to_rgbaint(rgbaint *rgb, INT16 a, INT16 r, INT16 g, INT16
INLINE void rgb_to_rgbint(rgbint *rgb, rgb_t color)
{
vector signed char temp = (vector signed char)vec_perm((vector signed int)vec_lde(0, &color), vec_splat_s32(0), vec_lvsl(0, &color));
- *rgb = vec_mergeh((vector signed char)vec_splat_s32(0), temp);
+ *rgb = (rgbint)vec_mergeh((vector signed char)vec_splat_s32(0), temp);
}
@@ -77,7 +77,7 @@ INLINE void rgb_to_rgbint(rgbint *rgb, rgb_t color)
INLINE void rgba_to_rgbaint(rgbaint *rgb, rgb_t color)
{
vector signed char temp = (vector signed char)vec_perm((vector signed int)vec_lde(0, &color), vec_splat_s32(0), vec_lvsl(0, &color));
- *rgb = vec_mergeh((vector signed char)vec_splat_s32(0), temp);
+ *rgb = (rgbaint)vec_mergeh((vector signed char)vec_splat_s32(0), temp);
}
@@ -438,19 +438,19 @@ INLINE rgb_t rgb_bilinear_filter(rgb_t rgb00, rgb_t rgb01, rgb_t rgb10, rgb_t rg
rgbint color11 = (rgbint)vec_perm((vector signed int)vec_lde(0, &rgb11), vec_splat_s32(0), vec_lvsl(0, &rgb11));
/* interleave color01 and color00 at the byte level */
- color01 = vec_mergeh((vector signed char)color01, (vector signed char)color00);
- color11 = vec_mergeh((vector signed char)color11, (vector signed char)color10);
- color01 = vec_mergeh((vector signed char)vec_splat_s32(0), (vector signed char)color01);
- color11 = vec_mergeh((vector signed char)vec_splat_s32(0), (vector signed char)color11);
- color01 = vec_msum(color01, rgbvmx_statics.scale_table[u], vec_splat_s32(0));
- color11 = vec_msum(color11, rgbvmx_statics.scale_table[u], vec_splat_s32(0));
+ color01 = (rgbint)vec_mergeh((vector signed char)color01, (vector signed char)color00);
+ color11 = (rgbint)vec_mergeh((vector signed char)color11, (vector signed char)color10);
+ color01 = (rgbint)vec_mergeh((vector signed char)vec_splat_s32(0), (vector signed char)color01);
+ color11 = (rgbint)vec_mergeh((vector signed char)vec_splat_s32(0), (vector signed char)color11);
+ color01 = (rgbint)vec_msum(color01, rgbvmx_statics.scale_table[u], vec_splat_s32(0));
+ color11 = (rgbint)vec_msum(color11, rgbvmx_statics.scale_table[u], vec_splat_s32(0));
color01 = (rgbint)vec_sr((vector signed int)color01, vec_splat_u32(1));
color11 = (rgbint)vec_sl((vector signed int)color11, vec_splat_u32(15));
color01 = vec_max(color01, color11);
- color01 = vec_msum(color01, rgbvmx_statics.scale_table[v], vec_splat_s32(0));
+ color01 = (rgbint)vec_msum(color01, rgbvmx_statics.scale_table[v], vec_splat_s32(0));
color01 = (rgbint)vec_sr((vector signed int)color01, vec_splat_u32(15));
color01 = vec_packs((vector signed int)color01, (vector signed int)color01);
- color01 = vec_packsu(color01, color01);
+ color01 = (rgbint)vec_packsu(color01, color01);
vec_ste((vector unsigned int)color01, 0, &result);
return result;
}
@@ -470,19 +470,19 @@ INLINE rgb_t rgba_bilinear_filter(rgb_t rgb00, rgb_t rgb01, rgb_t rgb10, rgb_t r
rgbaint color11 = (rgbaint)vec_perm((vector signed int)vec_lde(0, &rgb11), vec_splat_s32(0), vec_lvsl(0, &rgb11));
/* interleave color01 and color00 at the byte level */
- color01 = vec_mergeh((vector signed char)color01, (vector signed char)color00);
- color11 = vec_mergeh((vector signed char)color11, (vector signed char)color10);
- color01 = vec_mergeh((vector signed char)vec_splat_s32(0), (vector signed char)color01);
- color11 = vec_mergeh((vector signed char)vec_splat_s32(0), (vector signed char)color11);
- color01 = vec_msum(color01, rgbvmx_statics.scale_table[u], vec_splat_s32(0));
- color11 = vec_msum(color11, rgbvmx_statics.scale_table[u], vec_splat_s32(0));
+ color01 = (rgbaint)vec_mergeh((vector signed char)color01, (vector signed char)color00);
+ color11 = (rgbaint)vec_mergeh((vector signed char)color11, (vector signed char)color10);
+ color01 = (rgbaint)vec_mergeh((vector signed char)vec_splat_s32(0), (vector signed char)color01);
+ color11 = (rgbaint)vec_mergeh((vector signed char)vec_splat_s32(0), (vector signed char)color11);
+ color01 = (rgbaint)vec_msum(color01, rgbvmx_statics.scale_table[u], vec_splat_s32(0));
+ color11 = (rgbaint)vec_msum(color11, rgbvmx_statics.scale_table[u], vec_splat_s32(0));
color01 = (rgbaint)vec_sr((vector signed int)color01, vec_splat_u32(1));
color11 = (rgbaint)vec_sl((vector signed int)color11, vec_splat_u32(15));
color01 = vec_max(color01, color11);
- color01 = vec_msum(color01, rgbvmx_statics.scale_table[v], vec_splat_s32(0));
+ color01 = (rgbaint)vec_msum(color01, rgbvmx_statics.scale_table[v], vec_splat_s32(0));
color01 = (rgbaint)vec_sr((vector signed int)color01, vec_splat_u32(15));
color01 = vec_packs((vector signed int)color01, (vector signed int)color01);
- color01 = vec_packsu(color01, color01);
+ color01 = (rgbaint)vec_packsu(color01, color01);
vec_ste((vector unsigned int)color01, 0, &result);
return result;
}
@@ -501,16 +501,16 @@ INLINE void rgbint_bilinear_filter(rgbint *color, rgb_t rgb00, rgb_t rgb01, rgb_
rgbint color11 = (rgbint)vec_perm((vector signed int)vec_lde(0, &rgb11), vec_splat_s32(0), vec_lvsl(0, &rgb11));
/* interleave color01 and color00 at the byte level */
- color01 = vec_mergeh((vector signed char)color01, (vector signed char)color00);
- color11 = vec_mergeh((vector signed char)color11, (vector signed char)color10);
- color01 = vec_mergeh((vector signed char)vec_splat_s32(0), (vector signed char)color01);
- color11 = vec_mergeh((vector signed char)vec_splat_s32(0), (vector signed char)color11);
- color01 = vec_msum(color01, rgbvmx_statics.scale_table[u], vec_splat_s32(0));
- color11 = vec_msum(color11, rgbvmx_statics.scale_table[u], vec_splat_s32(0));
+ color01 = (rgbint)vec_mergeh((vector signed char)color01, (vector signed char)color00);
+ color11 = (rgbint)vec_mergeh((vector signed char)color11, (vector signed char)color10);
+ color01 = (rgbint)vec_mergeh((vector signed char)vec_splat_s32(0), (vector signed char)color01);
+ color11 = (rgbint)vec_mergeh((vector signed char)vec_splat_s32(0), (vector signed char)color11);
+ color01 = (rgbint)vec_msum(color01, rgbvmx_statics.scale_table[u], vec_splat_s32(0));
+ color11 = (rgbint)vec_msum(color11, rgbvmx_statics.scale_table[u], vec_splat_s32(0));
color01 = (rgbint)vec_sr((vector signed int)color01, vec_splat_u32(1));
color11 = (rgbint)vec_sl((vector signed int)color11, vec_splat_u32(15));
color01 = vec_max(color01, color11);
- color01 = vec_msum(color01, rgbvmx_statics.scale_table[v], vec_splat_s32(0));
+ color01 = (rgbint)vec_msum(color01, rgbvmx_statics.scale_table[v], vec_splat_s32(0));
color01 = (rgbint)vec_sr((vector signed int)color01, vec_splat_u32(15));
*color = vec_packs((vector signed int)color01, (vector signed int)color01);
}
@@ -529,16 +529,16 @@ INLINE void rgbaint_bilinear_filter(rgbaint *color, rgb_t rgb00, rgb_t rgb01, rg
rgbaint color11 = (rgbaint)vec_perm((vector signed int)vec_lde(0, &rgb11), vec_splat_s32(0), vec_lvsl(0, &rgb11));
/* interleave color01 and color00 at the byte level */
- color01 = vec_mergeh((vector signed char)color01, (vector signed char)color00);
- color11 = vec_mergeh((vector signed char)color11, (vector signed char)color10);
- color01 = vec_mergeh((vector signed char)vec_splat_s32(0), (vector signed char)color01);
- color11 = vec_mergeh((vector signed char)vec_splat_s32(0), (vector signed char)color11);
- color01 = vec_msum(color01, rgbvmx_statics.scale_table[u], vec_splat_s32(0));
- color11 = vec_msum(color11, rgbvmx_statics.scale_table[u], vec_splat_s32(0));
+ color01 = (rgbaint)vec_mergeh((vector signed char)color01, (vector signed char)color00);
+ color11 = (rgbaint)vec_mergeh((vector signed char)color11, (vector signed char)color10);
+ color01 = (rgbaint)vec_mergeh((vector signed char)vec_splat_s32(0), (vector signed char)color01);
+ color11 = (rgbaint)vec_mergeh((vector signed char)vec_splat_s32(0), (vector signed char)color11);
+ color01 = (rgbaint)vec_msum(color01, rgbvmx_statics.scale_table[u], vec_splat_s32(0));
+ color11 = (rgbaint)vec_msum(color11, rgbvmx_statics.scale_table[u], vec_splat_s32(0));
color01 = (rgbaint)vec_sr((vector signed int)color01, vec_splat_u32(1));
color11 = (rgbaint)vec_sl((vector signed int)color11, vec_splat_u32(15));
color01 = vec_max(color01, color11);
- color01 = vec_msum(color01, rgbvmx_statics.scale_table[v], vec_splat_s32(0));
+ color01 = (rgbaint)vec_msum(color01, rgbvmx_statics.scale_table[v], vec_splat_s32(0));
color01 = (rgbaint)vec_sr((vector signed int)color01, vec_splat_u32(15));
*color = vec_packs((vector signed int)color01, (vector signed int)color01);
}