0001
0002
0003
0004
0005 #define VEC_MAX 128
0006 #define VSX_MAX 32
0007 #define VMX_MAX 32
0008
0009
0010
0011
0012
0013 int validate_vsx(unsigned long *vsx, unsigned long *load)
0014 {
0015 int i;
0016
0017 for (i = 0; i < VSX_MAX; i++) {
0018 if (vsx[i] != load[2 * i + 1]) {
0019 printf("vsx[%d]: %lx load[%d] %lx\n",
0020 i, vsx[i], 2 * i + 1, load[2 * i + 1]);
0021 return TEST_FAIL;
0022 }
0023 }
0024 return TEST_PASS;
0025 }
0026
0027
0028
0029
0030
0031 int validate_vmx(unsigned long vmx[][2], unsigned long *load)
0032 {
0033 int i;
0034
0035 for (i = 0; i < VMX_MAX; i++) {
0036 #if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
0037 if ((vmx[i][0] != load[64 + 2 * i]) ||
0038 (vmx[i][1] != load[65 + 2 * i])) {
0039 printf("vmx[%d][0]: %lx load[%d] %lx\n",
0040 i, vmx[i][0], 64 + 2 * i,
0041 load[64 + 2 * i]);
0042 printf("vmx[%d][1]: %lx load[%d] %lx\n",
0043 i, vmx[i][1], 65 + 2 * i,
0044 load[65 + 2 * i]);
0045 return TEST_FAIL;
0046 }
0047 #else
0048
0049
0050
0051 if ((vmx[i][0] != load[65 + 2 * i]) ||
0052 (vmx[i][1] != load[64 + 2 * i])) {
0053 printf("vmx[%d][0]: %lx load[%d] %lx\n",
0054 i, vmx[i][0], 65 + 2 * i,
0055 load[65 + 2 * i]);
0056 printf("vmx[%d][1]: %lx load[%d] %lx\n",
0057 i, vmx[i][1], 64 + 2 * i,
0058 load[64 + 2 * i]);
0059 return TEST_FAIL;
0060 }
0061 #endif
0062 }
0063 return TEST_PASS;
0064 }
0065
0066
0067
0068
0069
0070 int compare_vsx_vmx(unsigned long *store, unsigned long *load)
0071 {
0072 int i;
0073
0074 for (i = 0; i < VSX_MAX; i++) {
0075 if (store[1 + 2 * i] != load[1 + 2 * i]) {
0076 printf("store[%d]: %lx load[%d] %lx\n",
0077 1 + 2 * i, store[i],
0078 1 + 2 * i, load[i]);
0079 return TEST_FAIL;
0080 }
0081 }
0082
0083 #if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
0084 for (i = 64; i < VEC_MAX; i++) {
0085 if (store[i] != load[i]) {
0086 printf("store[%d]: %lx load[%d] %lx\n",
0087 i, store[i], i, load[i]);
0088 return TEST_FAIL;
0089 }
0090 }
0091 #else
0092 for (i = 64; i < VEC_MAX; i++) {
0093 if (!(i % 2) && (store[i] != load[i+1])) {
0094 printf("store[%d]: %lx load[%d] %lx\n",
0095 i, store[i], i+1, load[i+1]);
0096 return TEST_FAIL;
0097 }
0098 if ((i % 2) && (store[i] != load[i-1])) {
0099 printf("here store[%d]: %lx load[%d] %lx\n",
0100 i, store[i], i-1, load[i-1]);
0101 return TEST_FAIL;
0102 }
0103 }
0104 #endif
0105 return TEST_PASS;
0106 }
0107
0108 void load_vsx_vmx(unsigned long *load, unsigned long *vsx,
0109 unsigned long vmx[][2])
0110 {
0111 int i;
0112
0113 for (i = 0; i < VSX_MAX; i++)
0114 vsx[i] = load[1 + 2 * i];
0115
0116 for (i = 0; i < VMX_MAX; i++) {
0117 vmx[i][0] = load[64 + 2 * i];
0118 vmx[i][1] = load[65 + 2 * i];
0119 }
0120 }
0121
0122 void loadvsx(void *p, int tmp);
0123 void storevsx(void *p, int tmp);