qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH v1 1/5] target-ppc: add vector insert instructio


From: Richard Henderson
Subject: Re: [Qemu-devel] [PATCH v1 1/5] target-ppc: add vector insert instructions
Date: Thu, 4 Aug 2016 22:08:17 +0530
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.1.1

On 08/04/2016 06:33 PM, Rajalakshmi Srinivasaraghavan wrote:
+#if defined(HOST_WORDS_BIGENDIAN)
+#define VINSERT(suffix, element, index)                                     \
+    void helper_vinsert##suffix(ppc_avr_t *r, ppc_avr_t *b, uint32_t splat) \
+    {                                                                       \
+        memcpy(&r->u8[SPLAT_ELEMENT(u8)], &b->element[index],               \
+               sizeof(r->element[0]));                                      \
+    }
+#else
+#define VINSERT(suffix, element, index)                                     \
+    void helper_vinsert##suffix(ppc_avr_t *r, ppc_avr_t *b, uint32_t splat) \
+    {                                                                       \
+        memcpy(&r->u8[(16 - splat) - sizeof(r->element[0])],                \
+               &b->element[(ARRAY_SIZE(r->element) - index) - 1],           \
+               sizeof(r->element[0]));                                      \
+    }

Something somewhere needs to check for out of bounds SPLAT, for evil guests.

The spec says it's undefined; I don't recall if that gives you the latitude to generate an illegal instruction trap during translate.


r~



reply via email to

[Prev in Thread] Current Thread [Next in Thread]