@@ -596,6 +596,306 @@ __m256 test_mm256_cmp_ps_true_us(__m256 a, __m256 b) {
596596 return _mm256_cmp_ps (a , b , _CMP_TRUE_US );
597597}
598598
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+
599899__m256d test_mm256_cvtepi32_pd (__m128i A ) {
600900 // CHECK-LABEL: test_mm256_cvtepi32_pd
601901 // CHECK: sitofp <4 x i32> %{{.*}} to <4 x double>
0 commit comments