¿Falta los intrínsecos AVX-512 para las máscaras?

Guía intrínseca de Intelenumera una serie de intrínsecos para las instrucciones de la máscara AVX-512 K *, pero parece que faltan algunas:

KSHIFT {L / R}KADDKTEST

El manual del desarrollador de Intel afirma que los intrínsecos no son necesarios ya que el compilador los genera automáticamente. ¿Cómo se hace esto? Si esto significa que los tipos __mmask * pueden tratarse como enteros regulares, tendría mucho sentido, pero probar algo comomask << 4 parece hacer que el compilador mueva la máscara a un registro regular, la cambie y luego vuelva a una máscara. Esto fue probado usandoGodboltLos últimos GCC e ICC con-O2 -mavx512bw.

También es interesante notar que los intrínsecos solo tratan con__mmask16 y no otros tipos. No he probado mucho, pero parece que a ICC no le importa tomar un tipo incorrecto, pero GCC parece intentar asegurarse de que solo haya 16 bits en la máscara, si usa los intrínsecos.

¿No estoy mirando más allá de los intrínsecos correctos para las instrucciones anteriores, así como otras variantes de tipo __mmask *, o hay otra forma de lograr lo mismo sin recurrir al ensamblaje en línea?

Respuestas a la pregunta(1)

Su respuesta a la pregunta