Changes in directory llvm-test/SingleSource/UnitTests/Vector:
multiplies.c added (r1.1) helpers.h updated: 1.4 -> 1.5 --- Log message: new testcase for multiplies --- Diffs of the changes: (+50 -0) helpers.h | 16 ++++++++++++++++ multiplies.c | 34 ++++++++++++++++++++++++++++++++++ 2 files changed, 50 insertions(+) Index: llvm-test/SingleSource/UnitTests/Vector/multiplies.c diff -c /dev/null llvm-test/SingleSource/UnitTests/Vector/multiplies.c:1.1 *** /dev/null Tue Apr 4 01:50:34 2006 --- llvm-test/SingleSource/UnitTests/Vector/multiplies.c Tue Apr 4 01:50:24 2006 *************** *** 0 **** --- 1,34 ---- + #include "helpers.h" + + #define ARRAYSIZE 100000 + double TheArray[ARRAYSIZE]; + + #define ProcessArray(VECTY) { \ + VECTY V = (VECTY)((v4i32){0,0,0,0}); \ + VECTY *AP = (VECTY*)TheArray; \ + IV vu; \ + for (j = 0; j < 1000; ++j) \ + for (i = 0; i != sizeof(TheArray)/sizeof(VECTY); ++i) \ + V *= AP[i]; \ + vu.V = (v4i32)V; \ + printIV(&vu); \ + } + + + int main(int argc, char **Argv) { + unsigned i, j; + for (i = 0; i < ARRAYSIZE; ++i) + TheArray[i] = i*12.345; + + ProcessArray(v16i8); + ProcessArray(v8i16); + ProcessArray(v4i32); + ProcessArray(v2i64); + + // These break native gcc. :( + #if 0 + ProcessArray(v4f32); + ProcessArray(v2f64); + #endif + } + Index: llvm-test/SingleSource/UnitTests/Vector/helpers.h diff -u llvm-test/SingleSource/UnitTests/Vector/helpers.h:1.4 llvm-test/SingleSource/UnitTests/Vector/helpers.h:1.5 --- llvm-test/SingleSource/UnitTests/Vector/helpers.h:1.4 Thu Mar 30 20:11:46 2006 +++ llvm-test/SingleSource/UnitTests/Vector/helpers.h Tue Apr 4 01:50:24 2006 @@ -7,6 +7,18 @@ typedef float v8sf __attribute__ ((__vector_size__ (32))); typedef double v8sd __attribute__ ((__vector_size__ (64))); +typedef int v2i64 __attribute__ ((__vector_size__ (16))); +typedef int v4i32 __attribute__ ((__vector_size__ (16))); +typedef short v8i16 __attribute__ ((__vector_size__ (16))); +typedef char v16i8 __attribute__ ((__vector_size__ (16))); +typedef float v4f32 __attribute__ ((__vector_size__ (16))); +typedef double v2f64 __attribute__ ((__vector_size__ (16))); + +typedef union { + v4i32 V; + int A[4]; +} IV; + typedef union { v4sf V; float A[4]; @@ -22,6 +34,10 @@ double A[8]; } D8V; +static void printIV(IV *F) { + printf("%u %u %u %u\n", F->A[0], F->A[1], F->A[2], F->A[3]); +} + static void printFV(FV *F) { printf("%f %f %f %f\n", F->A[0], F->A[1], F->A[2], F->A[3]); } _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits