aboutsummaryrefslogtreecommitdiff
path: root/tests/tcg/hexagon/preg_alias.c
diff options
context:
space:
mode:
Diffstat (limited to 'tests/tcg/hexagon/preg_alias.c')
-rw-r--r--tests/tcg/hexagon/preg_alias.c111
1 files changed, 53 insertions, 58 deletions
diff --git a/tests/tcg/hexagon/preg_alias.c b/tests/tcg/hexagon/preg_alias.c
index 8798fbcaf3..892ecbbdbf 100644
--- a/tests/tcg/hexagon/preg_alias.c
+++ b/tests/tcg/hexagon/preg_alias.c
@@ -16,10 +16,15 @@
*/
#include <stdio.h>
+#include <stdint.h>
-static inline int preg_alias(int v0, int v1, int v2, int v3)
+int err;
+
+#include "hex_test.h"
+
+static uint32_t preg_alias(uint8_t v0, uint8_t v1, uint8_t v2, uint8_t v3)
{
- int ret;
+ uint32_t ret;
asm volatile("p0 = %1\n\t"
"p1 = %2\n\t"
"p2 = %3\n\t"
@@ -31,9 +36,9 @@ static inline int preg_alias(int v0, int v1, int v2, int v3)
return ret;
}
-static inline int preg_alias_pair(int v0, int v1, int v2, int v3)
+static uint32_t preg_alias_pair(uint8_t v0, uint8_t v1, uint8_t v2, uint8_t v3)
{
- long long c54;
+ uint64_t c54;
asm volatile("p0 = %1\n\t"
"p1 = %2\n\t"
"p2 = %3\n\t"
@@ -42,20 +47,20 @@ static inline int preg_alias_pair(int v0, int v1, int v2, int v3)
: "=r"(c54)
: "r"(v0), "r"(v1), "r"(v2), "r"(v3)
: "p0", "p1", "p2", "p3");
- return (int)c54;
+ return (uint32_t)c54;
}
typedef union {
- int creg;
+ uint32_t creg;
struct {
- unsigned char p0;
- unsigned char p1;
- unsigned char p2;
- unsigned char p3;
+ uint8_t p0;
+ uint8_t p1;
+ uint8_t p2;
+ uint8_t p3;
} pregs;
} PRegs;
-static inline void creg_alias(int cval, PRegs *pregs)
+static inline void creg_alias(uint32_t cval, PRegs *pregs)
{
asm("c4 = %4\n\t"
"%0 = p0\n\t"
@@ -68,20 +73,10 @@ static inline void creg_alias(int cval, PRegs *pregs)
: "c4", "p0", "p1", "p2", "p3");
}
-int err;
-
-static void check(int val, int expect)
-{
- if (val != expect) {
- printf("ERROR: 0x%08x != 0x%08x\n", val, expect);
- err++;
- }
-}
-
-static inline void creg_alias_pair(unsigned int cval, PRegs *pregs)
+static inline void creg_alias_pair(uint32_t cval, PRegs *pregs)
{
- unsigned long long cval_pair = (0xdeadbeefULL << 32) | cval;
- int c5;
+ uint64_t cval_pair = (0xdeadbeefULL << 32) | cval;
+ uint32_t c5;
asm ("c5:4 = %5\n\t"
"%0 = p0\n\t"
@@ -94,7 +89,7 @@ static inline void creg_alias_pair(unsigned int cval, PRegs *pregs)
: "r"(cval_pair)
: "c4", "c5", "p0", "p1", "p2", "p3");
- check(c5, 0xdeadbeef);
+ check32(c5, 0xdeadbeef);
}
static void test_packet(void)
@@ -104,8 +99,8 @@ static void test_packet(void)
* that are read during the packet.
*/
- int result;
- int old_val = 0x0000001c;
+ uint32_t result;
+ uint32_t old_val = 0x0000001c;
/* Test a predicated register transfer */
result = old_val;
@@ -118,7 +113,7 @@ static void test_packet(void)
: "+r"(result)
: "r"(0xffffffff), "r"(0xff00ffff), "r"(0x837ed653)
: "c4", "p0", "p1", "p2", "p3");
- check(result, old_val);
+ check32(result, old_val);
/* Test a predicated store */
result = 0xffffffff;
@@ -130,73 +125,73 @@ static void test_packet(void)
:
: "r"(0), "r"(0xffffffff), "r"(&result)
: "c4", "p0", "p1", "p2", "p3", "memory");
- check(result, 0x0);
+ check32(result, 0x0);
}
int main()
{
- int c4;
+ uint32_t c4;
PRegs pregs;
c4 = preg_alias(0xff, 0x00, 0xff, 0x00);
- check(c4, 0x00ff00ff);
+ check32(c4, 0x00ff00ff);
c4 = preg_alias(0xff, 0x00, 0x00, 0x00);
- check(c4, 0x000000ff);
+ check32(c4, 0x000000ff);
c4 = preg_alias(0x00, 0xff, 0x00, 0x00);
- check(c4, 0x0000ff00);
+ check32(c4, 0x0000ff00);
c4 = preg_alias(0x00, 0x00, 0xff, 0x00);
- check(c4, 0x00ff0000);
+ check32(c4, 0x00ff0000);
c4 = preg_alias(0x00, 0x00, 0x00, 0xff);
- check(c4, 0xff000000);
+ check32(c4, 0xff000000);
c4 = preg_alias(0xff, 0xff, 0xff, 0xff);
- check(c4, 0xffffffff);
+ check32(c4, 0xffffffff);
c4 = preg_alias_pair(0xff, 0x00, 0xff, 0x00);
- check(c4, 0x00ff00ff);
+ check32(c4, 0x00ff00ff);
c4 = preg_alias_pair(0xff, 0x00, 0x00, 0x00);
- check(c4, 0x000000ff);
+ check32(c4, 0x000000ff);
c4 = preg_alias_pair(0x00, 0xff, 0x00, 0x00);
- check(c4, 0x0000ff00);
+ check32(c4, 0x0000ff00);
c4 = preg_alias_pair(0x00, 0x00, 0xff, 0x00);
- check(c4, 0x00ff0000);
+ check32(c4, 0x00ff0000);
c4 = preg_alias_pair(0x00, 0x00, 0x00, 0xff);
- check(c4, 0xff000000);
+ check32(c4, 0xff000000);
c4 = preg_alias_pair(0xff, 0xff, 0xff, 0xff);
- check(c4, 0xffffffff);
+ check32(c4, 0xffffffff);
creg_alias(0x00ff00ff, &pregs);
- check(pregs.creg, 0x00ff00ff);
+ check32(pregs.creg, 0x00ff00ff);
creg_alias(0x00ffff00, &pregs);
- check(pregs.creg, 0x00ffff00);
+ check32(pregs.creg, 0x00ffff00);
creg_alias(0x00000000, &pregs);
- check(pregs.creg, 0x00000000);
+ check32(pregs.creg, 0x00000000);
creg_alias(0xff000000, &pregs);
- check(pregs.creg, 0xff000000);
+ check32(pregs.creg, 0xff000000);
creg_alias(0x00ff0000, &pregs);
- check(pregs.creg, 0x00ff0000);
+ check32(pregs.creg, 0x00ff0000);
creg_alias(0x0000ff00, &pregs);
- check(pregs.creg, 0x0000ff00);
+ check32(pregs.creg, 0x0000ff00);
creg_alias(0x000000ff, &pregs);
- check(pregs.creg, 0x000000ff);
+ check32(pregs.creg, 0x000000ff);
creg_alias(0xffffffff, &pregs);
- check(pregs.creg, 0xffffffff);
+ check32(pregs.creg, 0xffffffff);
creg_alias_pair(0x00ff00ff, &pregs);
- check(pregs.creg, 0x00ff00ff);
+ check32(pregs.creg, 0x00ff00ff);
creg_alias_pair(0x00ffff00, &pregs);
- check(pregs.creg, 0x00ffff00);
+ check32(pregs.creg, 0x00ffff00);
creg_alias_pair(0x00000000, &pregs);
- check(pregs.creg, 0x00000000);
+ check32(pregs.creg, 0x00000000);
creg_alias_pair(0xff000000, &pregs);
- check(pregs.creg, 0xff000000);
+ check32(pregs.creg, 0xff000000);
creg_alias_pair(0x00ff0000, &pregs);
- check(pregs.creg, 0x00ff0000);
+ check32(pregs.creg, 0x00ff0000);
creg_alias_pair(0x0000ff00, &pregs);
- check(pregs.creg, 0x0000ff00);
+ check32(pregs.creg, 0x0000ff00);
creg_alias_pair(0x000000ff, &pregs);
- check(pregs.creg, 0x000000ff);
+ check32(pregs.creg, 0x000000ff);
creg_alias_pair(0xffffffff, &pregs);
- check(pregs.creg, 0xffffffff);
+ check32(pregs.creg, 0xffffffff);
test_packet();