@@ -596,6 +596,306 @@ __m256 test_mm256_cmp_ps_true_us(__m256 a, __m256 b) {
596
596
return _mm256_cmp_ps (a , b , _CMP_TRUE_US );
597
597
}
598
598
599
+ __m128d test_mm_cmp_pd_eq_uq (__m128d a , __m128d b ) {
600
+ // CHECK-LABEL: test_mm_cmp_pd_eq_uq
601
+ // CHECK: fcmp ueq <2 x double> %{{.*}}, %{{.*}}
602
+ return _mm_cmp_pd (a , b , _CMP_EQ_UQ );
603
+ }
604
+
605
+ __m128d test_mm_cmp_pd_nge_us (__m128d a , __m128d b ) {
606
+ // CHECK-LABEL: test_mm_cmp_pd_nge_us
607
+ // CHECK: fcmp ult <2 x double> %{{.*}}, %{{.*}}
608
+ return _mm_cmp_pd (a , b , _CMP_NGE_US );
609
+ }
610
+
611
+ __m128d test_mm_cmp_pd_ngt_us (__m128d a , __m128d b ) {
612
+ // CHECK-LABEL: test_mm_cmp_pd_ngt_us
613
+ // CHECK: fcmp ule <2 x double> %{{.*}}, %{{.*}}
614
+ return _mm_cmp_pd (a , b , _CMP_NGT_US );
615
+ }
616
+
617
+ __m128d test_mm_cmp_pd_false_oq (__m128d a , __m128d b ) {
618
+ // CHECK-LABEL: test_mm_cmp_pd_false_oq
619
+ // CHECK: fcmp false <2 x double> %{{.*}}, %{{.*}}
620
+ return _mm_cmp_pd (a , b , _CMP_FALSE_OQ );
621
+ }
622
+
623
+ __m128d test_mm_cmp_pd_neq_oq (__m128d a , __m128d b ) {
624
+ // CHECK-LABEL: test_mm_cmp_pd_neq_oq
625
+ // CHECK: fcmp one <2 x double> %{{.*}}, %{{.*}}
626
+ return _mm_cmp_pd (a , b , _CMP_NEQ_OQ );
627
+ }
628
+
629
+ __m128d test_mm_cmp_pd_ge_os (__m128d a , __m128d b ) {
630
+ // CHECK-LABEL: test_mm_cmp_pd_ge_os
631
+ // CHECK: fcmp oge <2 x double> %{{.*}}, %{{.*}}
632
+ return _mm_cmp_pd (a , b , _CMP_GE_OS );
633
+ }
634
+
635
+ __m128d test_mm_cmp_pd_gt_os (__m128d a , __m128d b ) {
636
+ // CHECK-LABEL: test_mm_cmp_pd_gt_os
637
+ // CHECK: fcmp ogt <2 x double> %{{.*}}, %{{.*}}
638
+ return _mm_cmp_pd (a , b , _CMP_GT_OS );
639
+ }
640
+
641
+ __m128d test_mm_cmp_pd_true_uq (__m128d a , __m128d b ) {
642
+ // CHECK-LABEL: test_mm_cmp_pd_true_uq
643
+ // CHECK: fcmp true <2 x double> %{{.*}}, %{{.*}}
644
+ return _mm_cmp_pd (a , b , _CMP_TRUE_UQ );
645
+ }
646
+
647
+ __m128d test_mm_cmp_pd_eq_os (__m128d a , __m128d b ) {
648
+ // CHECK-LABEL: test_mm_cmp_pd_eq_os
649
+ // CHECK: fcmp oeq <2 x double> %{{.*}}, %{{.*}}
650
+ return _mm_cmp_pd (a , b , _CMP_EQ_OS );
651
+ }
652
+
653
+ __m128d test_mm_cmp_pd_lt_oq (__m128d a , __m128d b ) {
654
+ // CHECK-LABEL: test_mm_cmp_pd_lt_oq
655
+ // CHECK: fcmp olt <2 x double> %{{.*}}, %{{.*}}
656
+ return _mm_cmp_pd (a , b , _CMP_LT_OQ );
657
+ }
658
+
659
+ __m128d test_mm_cmp_pd_le_oq (__m128d a , __m128d b ) {
660
+ // CHECK-LABEL: test_mm_cmp_pd_le_oq
661
+ // CHECK: fcmp ole <2 x double> %{{.*}}, %{{.*}}
662
+ return _mm_cmp_pd (a , b , _CMP_LE_OQ );
663
+ }
664
+
665
+ __m128d test_mm_cmp_pd_unord_s (__m128d a , __m128d b ) {
666
+ // CHECK-LABEL: test_mm_cmp_pd_unord_s
667
+ // CHECK: fcmp uno <2 x double> %{{.*}}, %{{.*}}
668
+ return _mm_cmp_pd (a , b , _CMP_UNORD_S );
669
+ }
670
+
671
+ __m128d test_mm_cmp_pd_neq_us (__m128d a , __m128d b ) {
672
+ // CHECK-LABEL: test_mm_cmp_pd_neq_us
673
+ // CHECK: fcmp une <2 x double> %{{.*}}, %{{.*}}
674
+ return _mm_cmp_pd (a , b , _CMP_NEQ_US );
675
+ }
676
+
677
+ __m128d test_mm_cmp_pd_nlt_uq (__m128d a , __m128d b ) {
678
+ // CHECK-LABEL: test_mm_cmp_pd_nlt_uq
679
+ // CHECK: fcmp uge <2 x double> %{{.*}}, %{{.*}}
680
+ return _mm_cmp_pd (a , b , _CMP_NLT_UQ );
681
+ }
682
+
683
+ __m128d test_mm_cmp_pd_nle_uq (__m128d a , __m128d b ) {
684
+ // CHECK-LABEL: test_mm_cmp_pd_nle_uq
685
+ // CHECK: fcmp ugt <2 x double> %{{.*}}, %{{.*}}
686
+ return _mm_cmp_pd (a , b , _CMP_NLE_UQ );
687
+ }
688
+
689
+ __m128d test_mm_cmp_pd_ord_s (__m128d a , __m128d b ) {
690
+ // CHECK-LABEL: test_mm_cmp_pd_ord_s
691
+ // CHECK: fcmp ord <2 x double> %{{.*}}, %{{.*}}
692
+ return _mm_cmp_pd (a , b , _CMP_ORD_S );
693
+ }
694
+
695
+ __m128d test_mm_cmp_pd_eq_us (__m128d a , __m128d b ) {
696
+ // CHECK-LABEL: test_mm_cmp_pd_eq_us
697
+ // CHECK: fcmp ueq <2 x double> %{{.*}}, %{{.*}}
698
+ return _mm_cmp_pd (a , b , _CMP_EQ_US );
699
+ }
700
+
701
+ __m128d test_mm_cmp_pd_nge_uq (__m128d a , __m128d b ) {
702
+ // CHECK-LABEL: test_mm_cmp_pd_nge_uq
703
+ // CHECK: fcmp ult <2 x double> %{{.*}}, %{{.*}}
704
+ return _mm_cmp_pd (a , b , _CMP_NGE_UQ );
705
+ }
706
+
707
+ __m128d test_mm_cmp_pd_ngt_uq (__m128d a , __m128d b ) {
708
+ // CHECK-LABEL: test_mm_cmp_pd_ngt_uq
709
+ // CHECK: fcmp ule <2 x double> %{{.*}}, %{{.*}}
710
+ return _mm_cmp_pd (a , b , _CMP_NGT_UQ );
711
+ }
712
+
713
+ __m128d test_mm_cmp_pd_false_os (__m128d a , __m128d b ) {
714
+ // CHECK-LABEL: test_mm_cmp_pd_false_os
715
+ // CHECK: fcmp false <2 x double> %{{.*}}, %{{.*}}
716
+ return _mm_cmp_pd (a , b , _CMP_FALSE_OS );
717
+ }
718
+
719
+ __m128d test_mm_cmp_pd_neq_os (__m128d a , __m128d b ) {
720
+ // CHECK-LABEL: test_mm_cmp_pd_neq_os
721
+ // CHECK: fcmp one <2 x double> %{{.*}}, %{{.*}}
722
+ return _mm_cmp_pd (a , b , _CMP_NEQ_OS );
723
+ }
724
+
725
+ __m128d test_mm_cmp_pd_ge_oq (__m128d a , __m128d b ) {
726
+ // CHECK-LABEL: test_mm_cmp_pd_ge_oq
727
+ // CHECK: fcmp oge <2 x double> %{{.*}}, %{{.*}}
728
+ return _mm_cmp_pd (a , b , _CMP_GE_OQ );
729
+ }
730
+
731
+ __m128d test_mm_cmp_pd_gt_oq (__m128d a , __m128d b ) {
732
+ // CHECK-LABEL: test_mm_cmp_pd_gt_oq
733
+ // CHECK: fcmp ogt <2 x double> %{{.*}}, %{{.*}}
734
+ return _mm_cmp_pd (a , b , _CMP_GT_OQ );
735
+ }
736
+
737
+ __m128d test_mm_cmp_pd_true_us (__m128d a , __m128d b ) {
738
+ // CHECK-LABEL: test_mm_cmp_pd_true_us
739
+ // CHECK: fcmp true <2 x double> %{{.*}}, %{{.*}}
740
+ return _mm_cmp_pd (a , b , _CMP_TRUE_US );
741
+ }
742
+
743
+ __m128 test_mm_cmp_ps_eq_uq (__m128 a , __m128 b ) {
744
+ // CHECK-LABEL: test_mm_cmp_ps_eq_uq
745
+ // CHECK: fcmp ueq <4 x float> %{{.*}}, %{{.*}}
746
+ return _mm_cmp_ps (a , b , _CMP_EQ_UQ );
747
+ }
748
+
749
+ __m128 test_mm_cmp_ps_nge_us (__m128 a , __m128 b ) {
750
+ // CHECK-LABEL: test_mm_cmp_ps_nge_us
751
+ // CHECK: fcmp ult <4 x float> %{{.*}}, %{{.*}}
752
+ return _mm_cmp_ps (a , b , _CMP_NGE_US );
753
+ }
754
+
755
+ __m128 test_mm_cmp_ps_ngt_us (__m128 a , __m128 b ) {
756
+ // CHECK-LABEL: test_mm_cmp_ps_ngt_us
757
+ // CHECK: fcmp ule <4 x float> %{{.*}}, %{{.*}}
758
+ return _mm_cmp_ps (a , b , _CMP_NGT_US );
759
+ }
760
+
761
+ __m128 test_mm_cmp_ps_false_oq (__m128 a , __m128 b ) {
762
+ // CHECK-LABEL: test_mm_cmp_ps_false_oq
763
+ // CHECK: fcmp false <4 x float> %{{.*}}, %{{.*}}
764
+ return _mm_cmp_ps (a , b , _CMP_FALSE_OQ );
765
+ }
766
+
767
+ __m128 test_mm_cmp_ps_neq_oq (__m128 a , __m128 b ) {
768
+ // CHECK-LABEL: test_mm_cmp_ps_neq_oq
769
+ // CHECK: fcmp one <4 x float> %{{.*}}, %{{.*}}
770
+ return _mm_cmp_ps (a , b , _CMP_NEQ_OQ );
771
+ }
772
+
773
+ __m128 test_mm_cmp_ps_ge_os (__m128 a , __m128 b ) {
774
+ // CHECK-LABEL: test_mm_cmp_ps_ge_os
775
+ // CHECK: fcmp oge <4 x float> %{{.*}}, %{{.*}}
776
+ return _mm_cmp_ps (a , b , _CMP_GE_OS );
777
+ }
778
+
779
+ __m128 test_mm_cmp_ps_gt_os (__m128 a , __m128 b ) {
780
+ // CHECK-LABEL: test_mm_cmp_ps_gt_os
781
+ // CHECK: fcmp ogt <4 x float> %{{.*}}, %{{.*}}
782
+ return _mm_cmp_ps (a , b , _CMP_GT_OS );
783
+ }
784
+
785
+ __m128 test_mm_cmp_ps_true_uq (__m128 a , __m128 b ) {
786
+ // CHECK-LABEL: test_mm_cmp_ps_true_uq
787
+ // CHECK: fcmp true <4 x float> %{{.*}}, %{{.*}}
788
+ return _mm_cmp_ps (a , b , _CMP_TRUE_UQ );
789
+ }
790
+
791
+ __m128 test_mm_cmp_ps_eq_os (__m128 a , __m128 b ) {
792
+ // CHECK-LABEL: test_mm_cmp_ps_eq_os
793
+ // CHECK: fcmp oeq <4 x float> %{{.*}}, %{{.*}}
794
+ return _mm_cmp_ps (a , b , _CMP_EQ_OS );
795
+ }
796
+
797
+ __m128 test_mm_cmp_ps_lt_oq (__m128 a , __m128 b ) {
798
+ // CHECK-LABEL: test_mm_cmp_ps_lt_oq
799
+ // CHECK: fcmp olt <4 x float> %{{.*}}, %{{.*}}
800
+ return _mm_cmp_ps (a , b , _CMP_LT_OQ );
801
+ }
802
+
803
+ __m128 test_mm_cmp_ps_le_oq (__m128 a , __m128 b ) {
804
+ // CHECK-LABEL: test_mm_cmp_ps_le_oq
805
+ // CHECK: fcmp ole <4 x float> %{{.*}}, %{{.*}}
806
+ return _mm_cmp_ps (a , b , _CMP_LE_OQ );
807
+ }
808
+
809
+ __m128 test_mm_cmp_ps_unord_s (__m128 a , __m128 b ) {
810
+ // CHECK-LABEL: test_mm_cmp_ps_unord_s
811
+ // CHECK: fcmp uno <4 x float> %{{.*}}, %{{.*}}
812
+ return _mm_cmp_ps (a , b , _CMP_UNORD_S );
813
+ }
814
+
815
+ __m128 test_mm_cmp_ps_neq_us (__m128 a , __m128 b ) {
816
+ // CHECK-LABEL: test_mm_cmp_ps_neq_us
817
+ // CHECK: fcmp une <4 x float> %{{.*}}, %{{.*}}
818
+ return _mm_cmp_ps (a , b , _CMP_NEQ_US );
819
+ }
820
+
821
+ __m128 test_mm_cmp_ps_nlt_uq (__m128 a , __m128 b ) {
822
+ // CHECK-LABEL: test_mm_cmp_ps_nlt_uq
823
+ // CHECK: fcmp uge <4 x float> %{{.*}}, %{{.*}}
824
+ return _mm_cmp_ps (a , b , _CMP_NLT_UQ );
825
+ }
826
+
827
+ __m128 test_mm_cmp_ps_nle_uq (__m128 a , __m128 b ) {
828
+ // CHECK-LABEL: test_mm_cmp_ps_nle_uq
829
+ // CHECK: fcmp ugt <4 x float> %{{.*}}, %{{.*}}
830
+ return _mm_cmp_ps (a , b , _CMP_NLE_UQ );
831
+ }
832
+
833
+ __m128 test_mm_cmp_ps_ord_s (__m128 a , __m128 b ) {
834
+ // CHECK-LABEL: test_mm_cmp_ps_ord_s
835
+ // CHECK: fcmp ord <4 x float> %{{.*}}, %{{.*}}
836
+ return _mm_cmp_ps (a , b , _CMP_ORD_S );
837
+ }
838
+
839
+ __m128 test_mm_cmp_ps_eq_us (__m128 a , __m128 b ) {
840
+ // CHECK-LABEL: test_mm_cmp_ps_eq_us
841
+ // CHECK: fcmp ueq <4 x float> %{{.*}}, %{{.*}}
842
+ return _mm_cmp_ps (a , b , _CMP_EQ_US );
843
+ }
844
+
845
+ __m128 test_mm_cmp_ps_nge_uq (__m128 a , __m128 b ) {
846
+ // CHECK-LABEL: test_mm_cmp_ps_nge_uq
847
+ // CHECK: fcmp ult <4 x float> %{{.*}}, %{{.*}}
848
+ return _mm_cmp_ps (a , b , _CMP_NGE_UQ );
849
+ }
850
+
851
+ __m128 test_mm_cmp_ps_ngt_uq (__m128 a , __m128 b ) {
852
+ // CHECK-LABEL: test_mm_cmp_ps_ngt_uq
853
+ // CHECK: fcmp ule <4 x float> %{{.*}}, %{{.*}}
854
+ return _mm_cmp_ps (a , b , _CMP_NGT_UQ );
855
+ }
856
+
857
+ __m128 test_mm_cmp_ps_false_os (__m128 a , __m128 b ) {
858
+ // CHECK-LABEL: test_mm_cmp_ps_false_os
859
+ // CHECK: fcmp false <4 x float> %{{.*}}, %{{.*}}
860
+ return _mm_cmp_ps (a , b , _CMP_FALSE_OS );
861
+ }
862
+
863
+ __m128 test_mm_cmp_ps_neq_os (__m128 a , __m128 b ) {
864
+ // CHECK-LABEL: test_mm_cmp_ps_neq_os
865
+ // CHECK: fcmp one <4 x float> %{{.*}}, %{{.*}}
866
+ return _mm_cmp_ps (a , b , _CMP_NEQ_OS );
867
+ }
868
+
869
+ __m128 test_mm_cmp_ps_ge_oq (__m128 a , __m128 b ) {
870
+ // CHECK-LABEL: test_mm_cmp_ps_ge_oq
871
+ // CHECK: fcmp oge <4 x float> %{{.*}}, %{{.*}}
872
+ return _mm_cmp_ps (a , b , _CMP_GE_OQ );
873
+ }
874
+
875
+ __m128 test_mm_cmp_ps_gt_oq (__m128 a , __m128 b ) {
876
+ // CHECK-LABEL: test_mm_cmp_ps_gt_oq
877
+ // CHECK: fcmp ogt <4 x float> %{{.*}}, %{{.*}}
878
+ return _mm_cmp_ps (a , b , _CMP_GT_OQ );
879
+ }
880
+
881
+ __m128 test_mm_cmp_ps_true_us (__m128 a , __m128 b ) {
882
+ // CHECK-LABEL: test_mm_cmp_ps_true_us
883
+ // CHECK: fcmp true <4 x float> %{{.*}}, %{{.*}}
884
+ return _mm_cmp_ps (a , b , _CMP_TRUE_US );
885
+ }
886
+
887
+ __m128d test_mm_cmp_sd (__m128d A , __m128d B ) {
888
+ // CHECK-LABEL: test_mm_cmp_sd
889
+ // CHECK: call <2 x double> @llvm.x86.sse2.cmp.sd(<2 x double> %{{.*}}, <2 x double> %{{.*}}, i8 13)
890
+ return _mm_cmp_sd (A , B , _CMP_GE_OS );
891
+ }
892
+
893
+ __m128 test_mm_cmp_ss (__m128 A , __m128 B ) {
894
+ // CHECK-LABEL: test_mm_cmp_ss
895
+ // CHECK: call <4 x float> @llvm.x86.sse.cmp.ss(<4 x float> %{{.*}}, <4 x float> %{{.*}}, i8 13)
896
+ return _mm_cmp_ss (A , B , _CMP_GE_OS );
897
+ }
898
+
599
899
__m256d test_mm256_cvtepi32_pd (__m128i A ) {
600
900
// CHECK-LABEL: test_mm256_cvtepi32_pd
601
901
// CHECK: sitofp <4 x i32> %{{.*}} to <4 x double>
0 commit comments