@@ -371,6 +371,78 @@ inline __m128i _mm_setr_epi32(int e3, int e2, int e1, int e0)
371371}
372372#endif
373373
374+ /* FUNCTION: _mm_set_epi16 */
375+
376+ #ifdef _MSC_VER
377+ # ifndef __CPROVER_INTRIN_H_INCLUDED
378+ # include <intrin.h>
379+ # define __CPROVER_INTRIN_H_INCLUDED
380+ # endif
381+
382+ inline __m128i _mm_set_epi16 (
383+ short e7 ,
384+ short e6 ,
385+ short e5 ,
386+ short e4 ,
387+ short e3 ,
388+ short e2 ,
389+ short e1 ,
390+ short e0 )
391+ {
392+ return (__m128i ){.m128i_i16 = {e0 , e1 , e2 , e3 , e4 , e5 , e6 , e7 }};
393+ }
394+ #endif
395+
396+ /* FUNCTION: _mm_setr_epi16 */
397+
398+ #ifdef _MSC_VER
399+ # ifndef __CPROVER_INTRIN_H_INCLUDED
400+ # include <intrin.h>
401+ # define __CPROVER_INTRIN_H_INCLUDED
402+ # endif
403+
404+ inline __m128i _mm_setr_epi16 (
405+ short e7 ,
406+ short e6 ,
407+ short e5 ,
408+ short e4 ,
409+ short e3 ,
410+ short e2 ,
411+ short e1 ,
412+ short e0 )
413+ {
414+ return (__m128i ){.m128i_i16 = {e7 , e6 , e5 , e4 , e3 , e2 , e1 , e0 }};
415+ }
416+ #endif
417+
418+ /* FUNCTION: _mm_set_pi16 */
419+
420+ #ifdef _MSC_VER
421+ # ifndef __CPROVER_INTRIN_H_INCLUDED
422+ # include <intrin.h>
423+ # define __CPROVER_INTRIN_H_INCLUDED
424+ # endif
425+
426+ inline __m64 _mm_set_pi16 (short e3 , short e2 , short e1 , short e0 )
427+ {
428+ return (__m64 ){.m64_i16 = {e0 , e1 , e2 , e3 }};
429+ }
430+ #endif
431+
432+ /* FUNCTION: _mm_setr_pi16 */
433+
434+ #ifdef _MSC_VER
435+ # ifndef __CPROVER_INTRIN_H_INCLUDED
436+ # include <intrin.h>
437+ # define __CPROVER_INTRIN_H_INCLUDED
438+ # endif
439+
440+ inline __m64 _mm_setr_pi16 (short e3 , short e2 , short e1 , short e0 )
441+ {
442+ return (__m64 ){.m64_i16 = {e3 , e2 , e1 , e0 }};
443+ }
444+ #endif
445+
374446/* FUNCTION: _mm_extract_epi32 */
375447
376448#ifdef _MSC_VER
@@ -384,3 +456,127 @@ inline int _mm_extract_epi32(__m128i a, const int imm8)
384456 return a .m128i_i32 [imm8 ];
385457}
386458#endif
459+
460+ /* FUNCTION: _mm_extract_epi16 */
461+
462+ #ifdef _MSC_VER
463+ # ifndef __CPROVER_INTRIN_H_INCLUDED
464+ # include <intrin.h>
465+ # define __CPROVER_INTRIN_H_INCLUDED
466+ # endif
467+
468+ inline int _mm_extract_epi16 (__m128i a , const int imm8 )
469+ {
470+ return a .m128i_i16 [imm8 ];
471+ }
472+ #endif
473+
474+ /* FUNCTION: _mm_extract_pi16 */
475+
476+ #ifdef _MSC_VER
477+ # ifndef __CPROVER_INTRIN_H_INCLUDED
478+ # include <intrin.h>
479+ # define __CPROVER_INTRIN_H_INCLUDED
480+ # endif
481+
482+ inline int _mm_extract_pi16 (__m64 a , const int imm8 )
483+ {
484+ return a .m64_i16 [imm8 ];
485+ }
486+ #endif
487+
488+ /* FUNCTION: _mm_adds_epi16 */
489+
490+ #ifdef _MSC_VER
491+ # ifndef __CPROVER_INTRIN_H_INCLUDED
492+ # include <intrin.h>
493+ # define __CPROVER_INTRIN_H_INCLUDED
494+ # endif
495+
496+ inline __m128i _mm_adds_epi16 (__m128i a , __m128i b )
497+ {
498+ return (__m128i ){
499+ .m128i_i16 = {
500+ __CPROVER_saturating_plus (a .m128i_i16 [0 ], b .m128i_i16 [0 ]),
501+ __CPROVER_saturating_plus (a .m128i_i16 [1 ], b .m128i_i16 [1 ]),
502+ __CPROVER_saturating_plus (a .m128i_i16 [2 ], b .m128i_i16 [2 ]),
503+ __CPROVER_saturating_plus (a .m128i_i16 [3 ], b .m128i_i16 [3 ]),
504+ __CPROVER_saturating_plus (a .m128i_i16 [4 ], b .m128i_i16 [4 ]),
505+ __CPROVER_saturating_plus (a .m128i_i16 [5 ], b .m128i_i16 [5 ]),
506+ __CPROVER_saturating_plus (a .m128i_i16 [6 ], b .m128i_i16 [6 ]),
507+ __CPROVER_saturating_plus (a .m128i_i16 [7 ], b .m128i_i16 [7 ]),
508+ }};
509+ }
510+ #endif
511+
512+ /* FUNCTION: _mm_subs_epi16 */
513+
514+ #ifdef _MSC_VER
515+ # ifndef __CPROVER_INTRIN_H_INCLUDED
516+ # include <intrin.h>
517+ # define __CPROVER_INTRIN_H_INCLUDED
518+ # endif
519+
520+ inline __m128i _mm_subs_epi16 (__m128i a , __m128i b )
521+ {
522+ return (__m128i ){
523+ .m128i_i16 = {
524+ __CPROVER_saturating_minus (a .m128i_i16 [0 ], b .m128i_i16 [0 ]),
525+ __CPROVER_saturating_minus (a .m128i_i16 [1 ], b .m128i_i16 [1 ]),
526+ __CPROVER_saturating_minus (a .m128i_i16 [2 ], b .m128i_i16 [2 ]),
527+ __CPROVER_saturating_minus (a .m128i_i16 [3 ], b .m128i_i16 [3 ]),
528+ __CPROVER_saturating_minus (a .m128i_i16 [4 ], b .m128i_i16 [4 ]),
529+ __CPROVER_saturating_minus (a .m128i_i16 [5 ], b .m128i_i16 [5 ]),
530+ __CPROVER_saturating_minus (a .m128i_i16 [6 ], b .m128i_i16 [6 ]),
531+ __CPROVER_saturating_minus (a .m128i_i16 [7 ], b .m128i_i16 [7 ]),
532+ }};
533+ }
534+ #endif
535+
536+ /* FUNCTION: _mm_subs_epi16 */
537+
538+ #ifdef _MSC_VER
539+ # ifndef __CPROVER_INTRIN_H_INCLUDED
540+ # include <intrin.h>
541+ # define __CPROVER_INTRIN_H_INCLUDED
542+ # endif
543+
544+ inline __m128i _mm_subs_epi16 (__m128i a , __m128i b )
545+ {
546+ return (__m128i ){
547+ .m128i_i16 = {
548+ __CPROVER_saturating_minus (a .m128i_i16 [0 ], b .m128i_i16 [0 ]),
549+ __CPROVER_saturating_minus (a .m128i_i16 [1 ], b .m128i_i16 [1 ]),
550+ __CPROVER_saturating_minus (a .m128i_i16 [2 ], b .m128i_i16 [2 ]),
551+ __CPROVER_saturating_minus (a .m128i_i16 [3 ], b .m128i_i16 [3 ]),
552+ __CPROVER_saturating_minus (a .m128i_i16 [4 ], b .m128i_i16 [4 ]),
553+ __CPROVER_saturating_minus (a .m128i_i16 [5 ], b .m128i_i16 [5 ]),
554+ __CPROVER_saturating_minus (a .m128i_i16 [6 ], b .m128i_i16 [6 ]),
555+ __CPROVER_saturating_minus (a .m128i_i16 [7 ], b .m128i_i16 [7 ]),
556+ }};
557+ }
558+ #endif
559+
560+ /* FUNCTION: _mm_subs_epu16 */
561+
562+ #ifdef _MSC_VER
563+ # ifndef __CPROVER_INTRIN_H_INCLUDED
564+ # include <intrin.h>
565+ # define __CPROVER_INTRIN_H_INCLUDED
566+ # endif
567+
568+ inline __m128i _mm_subs_epu16 (__m128i a , __m128i b )
569+ {
570+ return (__m128i ){
571+ .m128i_u16 = {
572+ __CPROVER_saturating_minus (a .m128i_u16 [0 ], b .m128i_u16 [0 ]),
573+ __CPROVER_saturating_minus (a .m128i_u16 [1 ], b .m128i_u16 [1 ]),
574+ __CPROVER_saturating_minus (a .m128i_u16 [2 ], b .m128i_u16 [2 ]),
575+ __CPROVER_saturating_minus (a .m128i_u16 [3 ], b .m128i_u16 [3 ]),
576+ __CPROVER_saturating_minus (a .m128i_u16 [4 ], b .m128i_u16 [4 ]),
577+ __CPROVER_saturating_minus (a .m128i_u16 [5 ], b .m128i_u16 [5 ]),
578+ __CPROVER_saturating_minus (a .m128i_u16 [6 ], b .m128i_u16 [6 ]),
579+ __CPROVER_saturating_minus (a .m128i_u16 [7 ], b .m128i_u16 [7 ]),
580+ }};
581+ }
582+ #endif
0 commit comments