[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [6181] Add saturating arithmetic conversion functions for s
From: |
Aurelien Jarno |
Subject: |
[Qemu-devel] [6181] Add saturating arithmetic conversion functions for subsequent instructions . |
Date: |
Sun, 04 Jan 2009 22:11:59 +0000 |
Revision: 6181
http://svn.sv.gnu.org/viewvc/?view=rev&root=qemu&revision=6181
Author: aurel32
Date: 2009-01-04 22:11:59 +0000 (Sun, 04 Jan 2009)
Log Message:
-----------
Add saturating arithmetic conversion functions for subsequent instructions.
Signed-off-by: Nathan Froyd <address@hidden>
Signed-off-by: Aurelien Jarno <address@hidden>
Modified Paths:
--------------
trunk/target-ppc/op_helper.c
Modified: trunk/target-ppc/op_helper.c
===================================================================
--- trunk/target-ppc/op_helper.c 2009-01-04 22:11:49 UTC (rev 6180)
+++ trunk/target-ppc/op_helper.c 2009-01-04 22:11:59 UTC (rev 6181)
@@ -1972,6 +1972,33 @@
for (index = ARRAY_SIZE(r->element)-1; index >= 0; index--)
#endif
+/* Saturating arithmetic helpers. */
+#define SATCVT(from, to, from_type, to_type, min, max, use_min, use_max) \
+ static always_inline to_type cvt##from##to (from_type x, int *sat) \
+ { \
+ to_type r; \
+ if (use_min && x < min) { \
+ r = min; \
+ *sat = 1; \
+ } else if (use_max && x > max) { \
+ r = max; \
+ *sat = 1; \
+ } else { \
+ r = x; \
+ } \
+ return r; \
+ }
+SATCVT(sh, sb, int16_t, int8_t, INT8_MIN, INT8_MAX, 1, 1)
+SATCVT(sw, sh, int32_t, int16_t, INT16_MIN, INT16_MAX, 1, 1)
+SATCVT(sd, sw, int64_t, int32_t, INT32_MIN, INT32_MAX, 1, 1)
+SATCVT(uh, ub, uint16_t, uint8_t, 0, UINT8_MAX, 0, 1)
+SATCVT(uw, uh, uint32_t, uint16_t, 0, UINT16_MAX, 0, 1)
+SATCVT(ud, uw, uint64_t, uint32_t, 0, UINT32_MAX, 0, 1)
+SATCVT(sh, ub, int16_t, uint8_t, 0, UINT8_MAX, 1, 1)
+SATCVT(sw, uh, int32_t, uint16_t, 0, UINT16_MAX, 1, 1)
+SATCVT(sd, uw, int64_t, uint32_t, 0, UINT32_MAX, 1, 1)
+#undef SATCVT
+
void helper_lvsl (ppc_avr_t *r, target_ulong sh)
{
int i, j = (sh & 0xf);
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Qemu-devel] [6181] Add saturating arithmetic conversion functions for subsequent instructions .,
Aurelien Jarno <=
- Prev by Date:
[Qemu-devel] [6180] Add vsel and vperm instructions.
- Next by Date:
[Qemu-devel] [6182] Add vpks{h, w}{s, u}s, vpku{h, w}us, and vpku{h, w}um instructions.
- Previous by thread:
[Qemu-devel] [6180] Add vsel and vperm instructions.
- Next by thread:
[Qemu-devel] [6182] Add vpks{h, w}{s, u}s, vpku{h, w}us, and vpku{h, w}um instructions.
- Index(es):