1  /* { dg-do compile } */
       2  /* { dg-options "-O2 -msse4.1 -mstv -mno-stackrealign" } */
       3  
       4  void foo (int *dc, int *mc, int *tpdd, int *tpmd, int M)
       5  {
       6    int sc;
       7    int k;
       8    for (k = 1; k <= M; k++)
       9      {
      10        dc[k] = dc[k-1] + tpdd[k-1];
      11        if ((sc = mc[k-1] + tpmd[k-1]) > dc[k]) dc[k] = sc;
      12        if (dc[k] < -987654321) dc[k] = -987654321;
      13      }
      14  }
      15  
      16  /* We want to convert the loop to SSE since SSE pmaxsd is faster than
      17     compare + conditional move.  */
      18  /* { dg-final { scan-assembler-not "cmov" } } */
      19  /* { dg-final { scan-assembler-times "pmaxsd" 2 } } */
      20  /* { dg-final { scan-assembler-times "paddd" 2 } } */