128 비트 변수/레지스터에 16 개의 아스키 문자 (따라서 16 개의 8 비트 숫자)가 있다고 가정합니다. 그 비트가 높을 비트 마스크 (비트 위치 (인덱스)가 16 문자로 표시됨)를 만들고 싶습니다.SSE/SSE2/SSE3/SSE4 명령어를 사용하여 여러 개의 숫자에서 비트 마스크를 효율적으로 생성하는 방법
예를 들어, 16 자로 구성된 문자열이 "CAD..."
이면 비트 마스크 67 번째 비트에서 65 번째 비트, 68 번째 비트 등은 1이어야합니다. 나머지 비트는 0이어야합니다. SIMD 명령어를 사용하여 특별히 할 수있는 방법은 무엇입니까?
기술 중 하나가 다음과 같이 추가 된 것을 알고 있습니다. 2^(67-1)+2^(65-1)+2^(68-1)+...
그러나 많은 수의 작업이 필요합니다. 가능하다면 1/2 작업/지침으로 수행하고 싶습니다.
해결 방법을 알려주세요.
글자를 테스트했거나 누락 된 것처럼 들릴까요? – Mysticial
AVX2도 수집/분산이 효율적으로 할 수 있다고 생각하지 않습니다 ... – Mysticial
@ 신비로운, 코멘트 주셔서 감사. 예, 당신의 권리, 나는 발생했거나 누락 된 문자를 테스트하려고합니다. 무차별 대입 (2의 거듭 제곱) 방법보다 다른 방법을 더 잘 상상할 수 있습니까? –