aboutsummaryrefslogtreecommitdiffstats
path: root/ref_vuzp.c
diff options
context:
space:
mode:
Diffstat (limited to 'ref_vuzp.c')
-rw-r--r--ref_vuzp.c18
1 files changed, 17 insertions, 1 deletions
diff --git a/ref_vuzp.c b/ref_vuzp.c
index 01a4040..a8d55bd 100644
--- a/ref_vuzp.c
+++ b/ref_vuzp.c
@@ -1,6 +1,6 @@
/*
-Copyright (c) 2009, 2010, 2011 STMicroelectronics
+Copyright (c) 2009, 2010, 2011, 2013 STMicroelectronics
Written by Christophe Lyon
Permission is hereby granted, free of charge, to any person obtaining a copy
@@ -79,6 +79,8 @@ FNNAME (INSN_NAME)
DECL_VUZP(uint, 8, 8); \
DECL_VUZP(uint, 16, 4); \
DECL_VUZP(uint, 32, 2); \
+ DECL_VUZP(poly, 8, 8); \
+ DECL_VUZP(poly, 16, 4); \
DECL_VUZP(float, 32, 2); \
DECL_VUZP(int, 8, 16); \
DECL_VUZP(int, 16, 8); \
@@ -86,6 +88,8 @@ FNNAME (INSN_NAME)
DECL_VUZP(uint, 8, 16); \
DECL_VUZP(uint, 16, 8); \
DECL_VUZP(uint, 32, 4); \
+ DECL_VUZP(poly, 8, 16); \
+ DECL_VUZP(poly, 16, 8); \
DECL_VUZP(float, 32, 4)
DECL_ALL_VUZP();
@@ -102,6 +106,8 @@ FNNAME (INSN_NAME)
TEST_VDUP(vector2, , uint, u, 8, 8, 0x55);
TEST_VDUP(vector2, , uint, u, 16, 4, 0x66);
TEST_VDUP(vector2, , uint, u, 32, 2, 0x77);
+ TEST_VDUP(vector2, , poly, p, 8, 8, 0x55);
+ TEST_VDUP(vector2, , poly, p, 16, 4, 0x66);
TEST_VDUP(vector2, , float, f, 32, 2, 33.6f);
TEST_VDUP(vector2, q, int, s, 8, 16, 0x11);
@@ -110,6 +116,8 @@ FNNAME (INSN_NAME)
TEST_VDUP(vector2, q, uint, u, 8, 16, 0x55);
TEST_VDUP(vector2, q, uint, u, 16, 8, 0x66);
TEST_VDUP(vector2, q, uint, u, 32, 4, 0x77);
+ TEST_VDUP(vector2, q, poly, p, 8, 16, 0x55);
+ TEST_VDUP(vector2, q, poly, p, 16, 8, 0x66);
TEST_VDUP(vector2, q, float, f, 32, 4, 33.8f);
#define TEST_ALL_VUZP(INSN) \
@@ -119,6 +127,8 @@ FNNAME (INSN_NAME)
TEST_VUZP(INSN, , uint, u, 8, 8); \
TEST_VUZP(INSN, , uint, u, 16, 4); \
TEST_VUZP(INSN, , uint, u, 32, 2); \
+ TEST_VUZP(INSN, , poly, p, 8, 8); \
+ TEST_VUZP(INSN, , poly, p, 16, 4); \
TEST_VUZP(INSN, , float, f, 32, 2); \
TEST_VUZP(INSN, q, int, s, 8, 16); \
TEST_VUZP(INSN, q, int, s, 16, 8); \
@@ -126,6 +136,8 @@ FNNAME (INSN_NAME)
TEST_VUZP(INSN, q, uint, u, 8, 16); \
TEST_VUZP(INSN, q, uint, u, 16, 8); \
TEST_VUZP(INSN, q, uint, u, 32, 4); \
+ TEST_VUZP(INSN, q, poly, p, 8, 16); \
+ TEST_VUZP(INSN, q, poly, p, 16, 8); \
TEST_VUZP(INSN, q, float, f, 32, 4)
#define TEST_ALL_EXTRA_CHUNKS() \
@@ -135,6 +147,8 @@ FNNAME (INSN_NAME)
TEST_EXTRA_CHUNK(uint, 8, 8, 1); \
TEST_EXTRA_CHUNK(uint, 16, 4, 1); \
TEST_EXTRA_CHUNK(uint, 32, 2, 1); \
+ TEST_EXTRA_CHUNK(poly, 8, 8, 1); \
+ TEST_EXTRA_CHUNK(poly, 16, 4, 1); \
TEST_EXTRA_CHUNK(float, 32, 2, 1); \
TEST_EXTRA_CHUNK(int, 8, 16, 1); \
TEST_EXTRA_CHUNK(int, 16, 8, 1); \
@@ -142,6 +156,8 @@ FNNAME (INSN_NAME)
TEST_EXTRA_CHUNK(uint, 8, 16, 1); \
TEST_EXTRA_CHUNK(uint, 16, 8, 1); \
TEST_EXTRA_CHUNK(uint, 32, 4, 1); \
+ TEST_EXTRA_CHUNK(poly, 8, 16, 1); \
+ TEST_EXTRA_CHUNK(poly, 16, 8, 1); \
TEST_EXTRA_CHUNK(float, 32, 4, 1)
/* Check vuzp/vuzpq */