1  #include "harness.h"
       2  
       3  static void test()
       4  {
       5    /* Input vectors.  */
       6    vector unsigned char vuca = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
       7    vector unsigned char vucb
       8      = {16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31};
       9    vector signed char vsca
      10      = {-16,-15,-14,-13,-12,-11,-10,-9,-8,-7,-6,-5,-4,-3,-2,-1};
      11    vector signed char vscb = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
      12    vector unsigned short vusa = {0,1,2,3,4,5,6,7};
      13    vector unsigned short vusb = {8,9,10,11,12,13,14,15};
      14    vector signed short vssa = {-8,-7,-6,-5,-4,-3,-2,-1};
      15    vector signed short vssb = {0,1,2,3,4,5,6,7};
      16    vector unsigned int vuia = {0,1,2,3};
      17    vector unsigned int vuib = {4,5,6,7};
      18    vector signed int vsia = {-4,-3,-2,-1};
      19    vector signed int vsib = {0,1,2,3};
      20    vector float vfa = {-4.0,-3.0,-2.0,-1.0};
      21    vector float vfb = {0.0,1.0,2.0,3.0};
      22  
      23    /* Result vectors.  */
      24    vector unsigned char vuch, vucl;
      25    vector signed char vsch, vscl;
      26    vector unsigned short vush, vusl;
      27    vector signed short vssh, vssl;
      28    vector unsigned int vuih, vuil;
      29    vector signed int vsih, vsil;
      30    vector float vfh, vfl;
      31  
      32    /* Expected result vectors.  */
      33    vector unsigned char vucrh = {0,16,1,17,2,18,3,19,4,20,5,21,6,22,7,23};
      34    vector unsigned char vucrl = {8,24,9,25,10,26,11,27,12,28,13,29,14,30,15,31};
      35    vector signed char vscrh = {-16,0,-15,1,-14,2,-13,3,-12,4,-11,5,-10,6,-9,7};
      36    vector signed char vscrl = {-8,8,-7,9,-6,10,-5,11,-4,12,-3,13,-2,14,-1,15};
      37    vector unsigned short vusrh = {0,8,1,9,2,10,3,11};
      38    vector unsigned short vusrl = {4,12,5,13,6,14,7,15};
      39    vector signed short vssrh = {-8,0,-7,1,-6,2,-5,3};
      40    vector signed short vssrl = {-4,4,-3,5,-2,6,-1,7};
      41    vector unsigned int vuirh = {0,4,1,5};
      42    vector unsigned int vuirl = {2,6,3,7};
      43    vector signed int vsirh = {-4,0,-3,1};
      44    vector signed int vsirl = {-2,2,-1,3};
      45    vector float vfrh = {-4.0,0.0,-3.0,1.0};
      46    vector float vfrl = {-2.0,2.0,-1.0,3.0};
      47  
      48    vuch = vec_mergeh (vuca, vucb);
      49    vucl = vec_mergel (vuca, vucb);
      50    vsch = vec_mergeh (vsca, vscb);
      51    vscl = vec_mergel (vsca, vscb);
      52    vush = vec_mergeh (vusa, vusb);
      53    vusl = vec_mergel (vusa, vusb);
      54    vssh = vec_mergeh (vssa, vssb);
      55    vssl = vec_mergel (vssa, vssb);
      56    vuih = vec_mergeh (vuia, vuib);
      57    vuil = vec_mergel (vuia, vuib);
      58    vsih = vec_mergeh (vsia, vsib);
      59    vsil = vec_mergel (vsia, vsib);
      60    vfh  = vec_mergeh (vfa,  vfb );
      61    vfl  = vec_mergel (vfa,  vfb );
      62  
      63    check (vec_all_eq (vuch, vucrh), "vuch");
      64    check (vec_all_eq (vucl, vucrl), "vucl");
      65    check (vec_all_eq (vsch, vscrh), "vsch");
      66    check (vec_all_eq (vscl, vscrl), "vscl");
      67    check (vec_all_eq (vush, vusrh), "vush");
      68    check (vec_all_eq (vusl, vusrl), "vusl");
      69    check (vec_all_eq (vssh, vssrh), "vssh");
      70    check (vec_all_eq (vssl, vssrl), "vssl");
      71    check (vec_all_eq (vuih, vuirh), "vuih");
      72    check (vec_all_eq (vuil, vuirl), "vuil");
      73    check (vec_all_eq (vsih, vsirh), "vsih");
      74    check (vec_all_eq (vsil, vsirl), "vsil");
      75    check (vec_all_eq (vfh,  vfrh),  "vfh");
      76    check (vec_all_eq (vfl,  vfrl),  "vfl");
      77  }