1  /* { dg-do compile { target ia32 } } */
       2  /* { dg-options "-O2 -msse4" } */
       3  
       4  typedef int __v4si __attribute__ ((__vector_size__ (16)));
       5  
       6  long long test1(__v4si v) {
       7    unsigned int loVal = (unsigned int)v[0];
       8    unsigned int hiVal = (unsigned int)v[1];
       9    return (long long)(loVal) | ((long long)(hiVal) << 32);
      10  }
      11  
      12  long long test2(__v4si v) {
      13    unsigned int loVal = (unsigned int)v[2];
      14    unsigned int hiVal = (unsigned int)v[3];
      15    return (long long)(loVal) | ((long long)(hiVal) << 32);
      16  }
      17  
      18  long long test3(__v4si v) {
      19    unsigned int loVal = (unsigned int)v[0];
      20    unsigned int hiVal = (unsigned int)v[1];
      21    return (long long)(loVal) ^ ((long long)(hiVal) << 32);
      22  }
      23  
      24  long long test4(__v4si v) {
      25    unsigned int loVal = (unsigned int)v[2];
      26    unsigned int hiVal = (unsigned int)v[3];
      27    return (long long)(loVal) ^ ((long long)(hiVal) << 32);
      28  }
      29  
      30  long long test5(__v4si v) {
      31    unsigned int loVal = (unsigned int)v[0];
      32    unsigned int hiVal = (unsigned int)v[1];
      33    return (long long)(loVal) + ((long long)(hiVal) << 32);
      34  }
      35  
      36  long long test6(__v4si v) {
      37    unsigned int loVal = (unsigned int)v[2];
      38    unsigned int hiVal = (unsigned int)v[3];
      39    return (long long)(loVal) + ((long long)(hiVal) << 32);
      40  }
      41  
      42  /* { dg-final { scan-assembler-not "\tor" } } */
      43  /* { dg-final { scan-assembler-not "\txor" } } */
      44  /* { dg-final { scan-assembler-not "\tadd" } } */