TEST_VEVAL(f, f);
}
-/* -- Vector blend -- */
-
-#define TEST_VBLEND(m5) \
- { \
- ulong_v out; \
- register ulong_v c __asm__("v4") = vc; \
- __asm__(".insn vrr,0xe7000" #m5 "000089,%0,%1,%2,4,0,0" \
- : [out] "=v"(out) \
- : "v"(va), "v"(vb), "v"(c) \
- :); \
- printf("\t%016lx %016lx\n", out[0], out[1]); \
- }
-
-static void test_all_vblend(void)
-{
- puts("vblend");
- TEST_VBLEND(0);
- TEST_VBLEND(1);
- TEST_VBLEND(2);
- TEST_VBLEND(3);
- TEST_VBLEND(4);
-}
-
/* -- Vector generate element masks -- */
#define TEST_VGEM(m3, op) \
#define TEST_V3OP(m5, opc, a, b, c) \
{ \
ulong_v out; \
+ register ulong_v v3 __asm__("v3") = b; \
register ulong_v v4 __asm__("v4") = c; \
\
- __asm__(".insn vrr,0xe7000" #m5 "0000" opc ",%0,%1,%2,4,0,0" \
+ __asm__(".insn vri,0xe700000000" opc ",%0,%1,0x3" #m5 "0,4,0" \
: [out] "=v"(out) \
- : "v"(a), "v"(b), "v"(v4) \
+ : "v"(a), "v"(v3), "v"(v4) \
:); \
printf("\t%016lx %016lx\n", out[0], out[1]); \
}
static void test_all_v3op(void)
{
+ puts("vblend");
+ TEST_V3OP(0, "89", va, vb, vc);
+ TEST_V3OP(1, "89", va, vb, vc);
+ TEST_V3OP(2, "89", va, vb, vc);
+ TEST_V3OP(3, "89", va, vb, vc);
+ TEST_V3OP(4, "89", va, vb, vc);
+
puts("vmae");
TEST_V3OP(3, "ae", v8, vc, v0);
TEST_V3OP(3, "ae", va, vb, vc);
int main(void)
{
test_all_veval();
- test_all_vblend();
test_all_vgem();
test_all_v1op();
test_all_v2op();
0000444444440440 0000010101808080
5666aaaaaaaa6a26 bcfe4e74ba722e5c
ffffffffffffffff ffffffffffffffff
-vblend
- bbaabbbbbbbbaaaa 6789ccf0aa0f5533
- bbbbbbbbbbbbaaaa 6789ccf0aa335533
- bbbbbbbbbbbbbbbb 6789f0aaaa330f55
- bbbbbbbbbbbbbbbb 6789f0aa4c0f5533
- bbbbbbbbbbbbbbbb 6789f0aa4c0f5533
vgem
00ff00ff00ffff00 ff00ff00ff00ff00
0000ffff0000ffff 0000ffffffff0000
3f8e38e38e38e38e 29bc214695ac6999
004510000000412f 6b8dab5e0679dbaa
ffffffffffffffff fffffffffffffffe
+vblend
+ bbaabbbbbbbbaaaa 6789ccf0aa0f5533
+ bbbbbbbbbbbbaaaa 6789ccf0aa335533
+ bbbbbbbbbbbbbbbb 6789f0aaaa330f55
+ bbbbbbbbbbbbbbbb 6789f0aa4c0f5533
+ bbbbbbbbbbbbbbbb 6789f0aa4c0f5533
vmae
ff99ffffffff9fba 0000000000000000
e9af8e38e38ef96f 8e622da51dd80b3d