Skip to content

Commit 96ca4d0

Browse files
committed
Address comments and fix pre-checkin lit fail
1 parent e5821f9 commit 96ca4d0

File tree

7 files changed

+364
-333
lines changed

7 files changed

+364
-333
lines changed

clang/lib/Headers/avxintrin.h

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1569,6 +1569,31 @@ _mm256_blendv_ps(__m256 __a, __m256 __b, __m256 __c)
15691569
((__m256d)__builtin_ia32_shufpd256((__v4df)(__m256d)(a), \
15701570
(__v4df)(__m256d)(b), (int)(mask)))
15711571

1572+
#define _CMP_EQ_UQ 0x08 /* Equal (unordered, non-signaling) */
1573+
#define _CMP_NGE_US 0x09 /* Not-greater-than-or-equal (unordered, signaling) */
1574+
#define _CMP_NGT_US 0x0a /* Not-greater-than (unordered, signaling) */
1575+
#define _CMP_FALSE_OQ 0x0b /* False (ordered, non-signaling) */
1576+
#define _CMP_NEQ_OQ 0x0c /* Not-equal (ordered, non-signaling) */
1577+
#define _CMP_GE_OS 0x0d /* Greater-than-or-equal (ordered, signaling) */
1578+
#define _CMP_GT_OS 0x0e /* Greater-than (ordered, signaling) */
1579+
#define _CMP_TRUE_UQ 0x0f /* True (unordered, non-signaling) */
1580+
#define _CMP_EQ_OS 0x10 /* Equal (ordered, signaling) */
1581+
#define _CMP_LT_OQ 0x11 /* Less-than (ordered, non-signaling) */
1582+
#define _CMP_LE_OQ 0x12 /* Less-than-or-equal (ordered, non-signaling) */
1583+
#define _CMP_UNORD_S 0x13 /* Unordered (signaling) */
1584+
#define _CMP_NEQ_US 0x14 /* Not-equal (unordered, signaling) */
1585+
#define _CMP_NLT_UQ 0x15 /* Not-less-than (unordered, non-signaling) */
1586+
#define _CMP_NLE_UQ 0x16 /* Not-less-than-or-equal (unordered, non-signaling) */
1587+
#define _CMP_ORD_S 0x17 /* Ordered (signaling) */
1588+
#define _CMP_EQ_US 0x18 /* Equal (unordered, signaling) */
1589+
#define _CMP_NGE_UQ 0x19 /* Not-greater-than-or-equal (unordered, non-signaling) */
1590+
#define _CMP_NGT_UQ 0x1a /* Not-greater-than (unordered, non-signaling) */
1591+
#define _CMP_FALSE_OS 0x1b /* False (ordered, signaling) */
1592+
#define _CMP_NEQ_OS 0x1c /* Not-equal (ordered, signaling) */
1593+
#define _CMP_GE_OQ 0x1d /* Greater-than-or-equal (ordered, non-signaling) */
1594+
#define _CMP_GT_OQ 0x1e /* Greater-than (ordered, non-signaling) */
1595+
#define _CMP_TRUE_US 0x1f /* True (unordered, signaling) */
1596+
15721597
/// Compares each of the corresponding double-precision values of two
15731598
/// 256-bit vectors of [4 x double], using the operation specified by the
15741599
/// immediate integer operand.

clang/lib/Headers/xmmintrin.h

Lines changed: 8 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -2937,42 +2937,14 @@ _mm_movemask_ps(__m128 __a)
29372937
}
29382938

29392939
/* Compare */
2940-
#define _CMP_EQ_OQ 0x00 /* Equal (ordered, non-signaling) */
2941-
#define _CMP_LT_OS 0x01 /* Less-than (ordered, signaling) */
2942-
#define _CMP_LE_OS 0x02 /* Less-than-or-equal (ordered, signaling) */
2943-
#define _CMP_UNORD_Q 0x03 /* Unordered (non-signaling) */
2944-
#define _CMP_NEQ_UQ 0x04 /* Not-equal (unordered, non-signaling) */
2945-
#define _CMP_NLT_US 0x05 /* Not-less-than (unordered, signaling) */
2946-
#define _CMP_NLE_US 0x06 /* Not-less-than-or-equal (unordered, signaling) */
2947-
#define _CMP_ORD_Q 0x07 /* Ordered (non-signaling) */
2948-
#define _CMP_EQ_UQ 0x08 /* Equal (unordered, non-signaling) */
2949-
#define _CMP_NGE_US \
2950-
0x09 /* Not-greater-than-or-equal (unordered, signaling) \
2951-
*/
2952-
#define _CMP_NGT_US 0x0a /* Not-greater-than (unordered, signaling) */
2953-
#define _CMP_FALSE_OQ 0x0b /* False (ordered, non-signaling) */
2954-
#define _CMP_NEQ_OQ 0x0c /* Not-equal (ordered, non-signaling) */
2955-
#define _CMP_GE_OS 0x0d /* Greater-than-or-equal (ordered, signaling) */
2956-
#define _CMP_GT_OS 0x0e /* Greater-than (ordered, signaling) */
2957-
#define _CMP_TRUE_UQ 0x0f /* True (unordered, non-signaling) */
2958-
#define _CMP_EQ_OS 0x10 /* Equal (ordered, signaling) */
2959-
#define _CMP_LT_OQ 0x11 /* Less-than (ordered, non-signaling) */
2960-
#define _CMP_LE_OQ 0x12 /* Less-than-or-equal (ordered, non-signaling) */
2961-
#define _CMP_UNORD_S 0x13 /* Unordered (signaling) */
2962-
#define _CMP_NEQ_US 0x14 /* Not-equal (unordered, signaling) */
2963-
#define _CMP_NLT_UQ 0x15 /* Not-less-than (unordered, non-signaling) */
2964-
#define _CMP_NLE_UQ \
2965-
0x16 /* Not-less-than-or-equal (unordered, non-signaling) */
2966-
#define _CMP_ORD_S 0x17 /* Ordered (signaling) */
2967-
#define _CMP_EQ_US 0x18 /* Equal (unordered, signaling) */
2968-
#define _CMP_NGE_UQ \
2969-
0x19 /* Not-greater-than-or-equal (unordered, non-signaling) */
2970-
#define _CMP_NGT_UQ 0x1a /* Not-greater-than (unordered, non-signaling) */
2971-
#define _CMP_FALSE_OS 0x1b /* False (ordered, signaling) */
2972-
#define _CMP_NEQ_OS 0x1c /* Not-equal (ordered, signaling) */
2973-
#define _CMP_GE_OQ 0x1d /* Greater-than-or-equal (ordered, non-signaling) */
2974-
#define _CMP_GT_OQ 0x1e /* Greater-than (ordered, non-signaling) */
2975-
#define _CMP_TRUE_US 0x1f /* True (unordered, signaling) */
2940+
#define _CMP_EQ_OQ 0x00 /* Equal (ordered, non-signaling) */
2941+
#define _CMP_LT_OS 0x01 /* Less-than (ordered, signaling) */
2942+
#define _CMP_LE_OS 0x02 /* Less-than-or-equal (ordered, signaling) */
2943+
#define _CMP_UNORD_Q 0x03 /* Unordered (non-signaling) */
2944+
#define _CMP_NEQ_UQ 0x04 /* Not-equal (unordered, non-signaling) */
2945+
#define _CMP_NLT_US 0x05 /* Not-less-than (unordered, signaling) */
2946+
#define _CMP_NLE_US 0x06 /* Not-less-than-or-equal (unordered, signaling) */
2947+
#define _CMP_ORD_Q 0x07 /* Ordered (non-signaling) */
29762948

29772949
/// Compares each of the corresponding values of two 128-bit vectors of
29782950
/// [4 x float], using the operation specified by the immediate integer

clang/test/CodeGen/X86/avx-builtins.c

Lines changed: 300 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)