고입재를 사용할 때 GCC가 두 개 이상의 SIMD 레지스터를 사용하도록하는 방법은 무엇입니까?

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

  •  02-07-2019
  •  | 
  •  

문제

나는 일부 코드를 작성하고 Simd Intrinsics SSE2/3을 사용하여 속도를 높이려고 노력하고 있습니다. 내 코드는 이러한 특성이 XMM 레지스터에 일부 데이터를로드하고 여러 번 작동해야합니다. 생성 된 어셈블러 코드를 살펴보면 XMM0 및 XMM1에 다른 것을 다시로드하기 위해 GCC가 메모리로 다시 플러시되는 것으로 보입니다. x86-64로 컴파일하고 있으므로 15 개의 레지스터가 있습니다. GCC가 두 개만 사용하는 이유는 무엇이며 더 많은 것을 사용하도록 요청하려면 어떻게해야합니까? 레지스터에서 일부 값을 "고정"할 수있는 방법이 있습니까? 변수 정의에 "등록"키워드를 추가했지만 생성 된 어셈블리 코드는 동일합니다.

도움이 되었습니까?

해결책

그래 넌 할수있어. 명백한 reg vars 변수를 특정 레지스터에 고정 해야하는 구문에 대해 이야기합니다.

다른 팁

각각의 고유에 대한 개별 레지스터를 지정하는 시점에 도달하는 경우, 특히 GCC의 불필요하게 비난하는 GCC의 불쾌한 습관을 고려할 때 어셈블리 디렉토리를 작성할 수도 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top