Cómo conseguir GCC utilizar más de dos registros SIMD cuando el uso de las características intrínsecas?

StackOverflow https://stackoverflow.com/questions/124405

  •  02-07-2019
  •  | 
  •  

Pregunta

Me siento a escribir algo de código y tratando de acelerar el uso de SIMD de las características intrínsecas SSE2/3.Mi código es de tal naturaleza que necesito para cargar algunos datos en un XMM registro y de actuar sobre ella muchas veces.Cuando estoy mirando el código ensamblador generado, parece que GCC mantiene flushing los datos de nuevo a la memoria, con el fin de volver a cargar algo más en XMM0 y XMM1.Estoy compilando para x86-64, así que tengo 15 registros.¿Por qué es GCC, utilizando solamente dos y ¿qué puedo hacer para pedir el uso de más?Hay alguna manera de que yo pueda "pin" algo de valor en un registro?He añadido el "registro" palabra clave para mi la definición de variables, pero el ensamblado generado el código es idéntico.

¿Fue útil?

Solución

Sí, se puede. Explícito Reg Vars habla acerca de la sintaxis necesaria para el pin de una variable a un registro específico.

Otros consejos

Si usted está llegando al punto en el que está especificando registros individuales para cada intrínseca, usted puede ser que también acaba de escribir el directorio de la asamblea, especialmente teniendo en cuenta gcc mala costumbre de pessimizing de las características intrínsecas innecesariamente en muchos casos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top