@@ -371,6 +371,78 @@ inline __m128i _mm_setr_epi32(int e3, int e2, int e1, int e0)
371
371
}
372
372
#endif
373
373
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
+
374
446
/* FUNCTION: _mm_extract_epi32 */
375
447
376
448
#ifdef _MSC_VER
@@ -384,3 +456,127 @@ inline int _mm_extract_epi32(__m128i a, const int imm8)
384
456
return a .m128i_i32 [imm8 ];
385
457
}
386
458
#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