asm-block-11.C   [plain text]


/* APPLE LOCAL file CW asm blocks */
/* { dg-do assemble { target i?86*-*-darwin* } } */
/* { dg-options { -fasm-blocks -msse3 } } */
/* Radar 4211971 */

void foo() {
  const int Aligned64data_last_mult = 4;
  asm {
    movd mm1, [-1][eax][esi]	// middle row, misaligned to prevent GP
    movd mm0, [-1][eax]		// top row, misaligned to prevent GP
    movd mm2, [-1][eax][esi*2]	// bottom row, misaligned to prevent GP
    movq [edi][Aligned64data_last_mult], mm0
    lea  eax, [esi][ecx*2]	// ptr to 2 rows down in sPtr
    movd mm4, [esi]
    movd mm5, [esi][ecx]
    movd [-4][edi], mm3		// store 4 results
  }
}