brintos

brintos / llvm-project-archived public Read only

0
0
Text · 37.2 KiB · c81282b Raw
781 lines · c
1// RUN: %clang_cc1 -x c -flax-vector-conversions=none -ffreestanding %s -triple=x86_64-apple-darwin -target-feature +avx -emit-llvm -ffp-exception-behavior=maytrap -o - -Wall -Werror | FileCheck %s2// RUN: %clang_cc1 -x c -flax-vector-conversions=none -ffreestanding %s -triple=i386-apple-darwin -target-feature +avx -emit-llvm -ffp-exception-behavior=maytrap -o - -Wall -Werror | FileCheck %s3// RUN: %clang_cc1 -x c++ -flax-vector-conversions=none -ffreestanding %s -triple=x86_64-apple-darwin -target-feature +avx -emit-llvm -ffp-exception-behavior=maytrap -o - -Wall -Werror | FileCheck %s4// RUN: %clang_cc1 -x c++ -flax-vector-conversions=none -ffreestanding %s -triple=i386-apple-darwin -target-feature +avx -emit-llvm -ffp-exception-behavior=maytrap -o - -Wall -Werror | FileCheck %s5 6// Test that the constrained intrinsics are picking up the exception7// metadata from the AST instead of the global default from the command line.8 9#pragma float_control(except, on)10 11 12#include <immintrin.h>13 14__m256d test_mm256_cmp_pd_eq_oq(__m256d a, __m256d b) {15  // CHECK-LABEL: test_mm256_cmp_pd_eq_oq16  // CHECK: call <4 x i1> @llvm.experimental.constrained.fcmp.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, metadata !"oeq", metadata !"fpexcept.strict")17  return _mm256_cmp_pd(a, b, _CMP_EQ_OQ);18}19 20__m256d test_mm256_cmp_pd_lt_os(__m256d a, __m256d b) {21  // CHECK-LABEL: test_mm256_cmp_pd_lt_os22  // CHECK: call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, metadata !"olt", metadata !"fpexcept.strict")23  return _mm256_cmp_pd(a, b, _CMP_LT_OS);24}25 26__m256d test_mm256_cmp_pd_le_os(__m256d a, __m256d b) {27  // CHECK-LABEL: test_mm256_cmp_pd_le_os28  // CHECK: call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, metadata !"ole", metadata !"fpexcept.strict")29  return _mm256_cmp_pd(a, b, _CMP_LE_OS);30}31 32__m256d test_mm256_cmp_pd_unord_q(__m256d a, __m256d b) {33  // CHECK-LABEL: test_mm256_cmp_pd_unord_q34  // CHECK: all <4 x i1> @llvm.experimental.constrained.fcmp.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, metadata !"uno", metadata !"fpexcept.strict")35  return _mm256_cmp_pd(a, b, _CMP_UNORD_Q);36}37 38__m256d test_mm256_cmp_pd_neq_uq(__m256d a, __m256d b) {39  // CHECK-LABEL: test_mm256_cmp_pd_neq_uq40  // CHECK: call <4 x i1> @llvm.experimental.constrained.fcmp.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, metadata !"une", metadata !"fpexcept.strict")41  return _mm256_cmp_pd(a, b, _CMP_NEQ_UQ);42}43 44__m256d test_mm256_cmp_pd_nlt_us(__m256d a, __m256d b) {45  // CHECK-LABEL: test_mm256_cmp_pd_nlt_us46  // CHECK: call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, metadata !"uge", metadata !"fpexcept.strict")47  return _mm256_cmp_pd(a, b, _CMP_NLT_US);48}49 50__m256d test_mm256_cmp_pd_nle_us(__m256d a, __m256d b) {51  // CHECK-LABEL: test_mm256_cmp_pd_nle_us52  // CHECK: call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, metadata !"ugt", metadata !"fpexcept.strict")53  return _mm256_cmp_pd(a, b, _CMP_NLE_US);54}55 56__m256d test_mm256_cmp_pd_ord_q(__m256d a, __m256d b) {57  // CHECK-LABEL: test_mm256_cmp_pd_ord_q58  // CHECK: call <4 x i1> @llvm.experimental.constrained.fcmp.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, metadata !"ord", metadata !"fpexcept.strict")59  return _mm256_cmp_pd(a, b, _CMP_ORD_Q);60}61 62__m256d test_mm256_cmp_pd_eq_uq(__m256d a, __m256d b) {63  // CHECK-LABEL: test_mm256_cmp_pd_eq_uq64  // CHECK: call <4 x i1> @llvm.experimental.constrained.fcmp.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, metadata !"ueq", metadata !"fpexcept.strict")65  return _mm256_cmp_pd(a, b, _CMP_EQ_UQ);66}67 68__m256d test_mm256_cmp_pd_nge_us(__m256d a, __m256d b) {69  // CHECK-LABEL: test_mm256_cmp_pd_nge_us70  // CHECK: call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, metadata !"ult", metadata !"fpexcept.strict")71  return _mm256_cmp_pd(a, b, _CMP_NGE_US);72}73 74__m256d test_mm256_cmp_pd_ngt_us(__m256d a, __m256d b) {75  // CHECK-LABEL: test_mm256_cmp_pd_ngt_us76  // CHECK: call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, metadata !"ule", metadata !"fpexcept.strict")77  return _mm256_cmp_pd(a, b, _CMP_NGT_US);78}79 80__m256d test_mm256_cmp_pd_false_oq(__m256d a, __m256d b) {81  // CHECK-LABEL: test_mm256_cmp_pd_false_oq82  // CHECK: call <4 x double> @llvm.x86.avx.cmp.pd.256(<4 x double> %{{.*}}, <4 x double> %{{.*}}, i8 11)83  return _mm256_cmp_pd(a, b, _CMP_FALSE_OQ);84}85 86__m256d test_mm256_cmp_pd_neq_oq(__m256d a, __m256d b) {87  // CHECK-LABEL: test_mm256_cmp_pd_neq_oq88  // CHECK: call <4 x i1> @llvm.experimental.constrained.fcmp.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, metadata !"one", metadata !"fpexcept.strict")89  return _mm256_cmp_pd(a, b, _CMP_NEQ_OQ);90}91 92__m256d test_mm256_cmp_pd_ge_os(__m256d a, __m256d b) {93  // CHECK-LABEL: test_mm256_cmp_pd_ge_os94  // CHECK: call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, metadata !"oge", metadata !"fpexcept.strict")95  return _mm256_cmp_pd(a, b, _CMP_GE_OS);96}97 98__m256d test_mm256_cmp_pd_gt_os(__m256d a, __m256d b) {99  // CHECK-LABEL: test_mm256_cmp_pd_gt_os100  // CHECK: call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, metadata !"ogt", metadata !"fpexcept.strict")101  return _mm256_cmp_pd(a, b, _CMP_GT_OS);102}103 104__m256d test_mm256_cmp_pd_true_uq(__m256d a, __m256d b) {105  // CHECK-LABEL: test_mm256_cmp_pd_true_uq106  // CHECK: call <4 x double> @llvm.x86.avx.cmp.pd.256(<4 x double> %{{.*}}, <4 x double> %{{.*}}, i8 15)107  return _mm256_cmp_pd(a, b, _CMP_TRUE_UQ);108}109 110__m256d test_mm256_cmp_pd_eq_os(__m256d a, __m256d b) {111  // CHECK-LABEL: test_mm256_cmp_pd_eq_os112  // CHECK: call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, metadata !"oeq", metadata !"fpexcept.strict")113  return _mm256_cmp_pd(a, b, _CMP_EQ_OS);114}115 116__m256d test_mm256_cmp_pd_lt_oq(__m256d a, __m256d b) {117  // CHECK-LABEL: test_mm256_cmp_pd_lt_oq118  // CHECK: call <4 x i1> @llvm.experimental.constrained.fcmp.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, metadata !"olt", metadata !"fpexcept.strict")119  return _mm256_cmp_pd(a, b, _CMP_LT_OQ);120}121 122__m256d test_mm256_cmp_pd_le_oq(__m256d a, __m256d b) {123  // CHECK-LABEL: test_mm256_cmp_pd_le_oq124  // CHECK: call <4 x i1> @llvm.experimental.constrained.fcmp.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, metadata !"ole", metadata !"fpexcept.strict")125  return _mm256_cmp_pd(a, b, _CMP_LE_OQ);126}127 128__m256d test_mm256_cmp_pd_unord_s(__m256d a, __m256d b) {129  // CHECK-LABEL: test_mm256_cmp_pd_unord_s130  // CHECK: call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, metadata !"uno", metadata !"fpexcept.strict")131  return _mm256_cmp_pd(a, b, _CMP_UNORD_S);132}133 134__m256d test_mm256_cmp_pd_neq_us(__m256d a, __m256d b) {135  // CHECK-LABEL: test_mm256_cmp_pd_neq_us136  // CHECK: call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, metadata !"une", metadata !"fpexcept.strict")137  return _mm256_cmp_pd(a, b, _CMP_NEQ_US);138}139 140__m256d test_mm256_cmp_pd_nlt_uq(__m256d a, __m256d b) {141  // CHECK-LABEL: test_mm256_cmp_pd_nlt_uq142  // CHECK: call <4 x i1> @llvm.experimental.constrained.fcmp.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, metadata !"uge", metadata !"fpexcept.strict")143  return _mm256_cmp_pd(a, b, _CMP_NLT_UQ);144}145 146__m256d test_mm256_cmp_pd_nle_uq(__m256d a, __m256d b) {147  // CHECK-LABEL: test_mm256_cmp_pd_nle_uq148  // CHECK: call <4 x i1> @llvm.experimental.constrained.fcmp.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, metadata !"ugt", metadata !"fpexcept.strict")149  return _mm256_cmp_pd(a, b, _CMP_NLE_UQ);150}151 152__m256d test_mm256_cmp_pd_ord_s(__m256d a, __m256d b) {153  // CHECK-LABEL: test_mm256_cmp_pd_ord_s154  // CHECK: call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, metadata !"ord", metadata !"fpexcept.strict")155  return _mm256_cmp_pd(a, b, _CMP_ORD_S);156}157 158__m256d test_mm256_cmp_pd_eq_us(__m256d a, __m256d b) {159  // CHECK-LABEL: test_mm256_cmp_pd_eq_us160  // CHECK: call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, metadata !"ueq", metadata !"fpexcept.strict")161  return _mm256_cmp_pd(a, b, _CMP_EQ_US);162}163 164__m256d test_mm256_cmp_pd_nge_uq(__m256d a, __m256d b) {165  // CHECK-LABEL: test_mm256_cmp_pd_nge_uq166  // CHECK: call <4 x i1> @llvm.experimental.constrained.fcmp.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, metadata !"ult", metadata !"fpexcept.strict")167  return _mm256_cmp_pd(a, b, _CMP_NGE_UQ);168}169 170__m256d test_mm256_cmp_pd_ngt_uq(__m256d a, __m256d b) {171  // CHECK-LABEL: test_mm256_cmp_pd_ngt_uq172  // CHECK: call <4 x i1> @llvm.experimental.constrained.fcmp.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, metadata !"ule", metadata !"fpexcept.strict")173  return _mm256_cmp_pd(a, b, _CMP_NGT_UQ);174}175 176__m256d test_mm256_cmp_pd_false_os(__m256d a, __m256d b) {177  // CHECK-LABEL: test_mm256_cmp_pd_false_os178  // CHECK: call <4 x double> @llvm.x86.avx.cmp.pd.256(<4 x double> %{{.*}}, <4 x double> %{{.*}}, i8 27)179  return _mm256_cmp_pd(a, b, _CMP_FALSE_OS);180}181 182__m256d test_mm256_cmp_pd_neq_os(__m256d a, __m256d b) {183  // CHECK-LABEL: test_mm256_cmp_pd_neq_os184  // CHECK: call <4 x i1> @llvm.experimental.constrained.fcmps.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, metadata !"one", metadata !"fpexcept.strict")185  return _mm256_cmp_pd(a, b, _CMP_NEQ_OS);186}187 188__m256d test_mm256_cmp_pd_ge_oq(__m256d a, __m256d b) {189  // CHECK-LABEL: test_mm256_cmp_pd_ge_oq190  // CHECK: call <4 x i1> @llvm.experimental.constrained.fcmp.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, metadata !"oge", metadata !"fpexcept.strict")191  return _mm256_cmp_pd(a, b, _CMP_GE_OQ);192}193 194__m256d test_mm256_cmp_pd_gt_oq(__m256d a, __m256d b) {195  // CHECK-LABEL: test_mm256_cmp_pd_gt_oq196  // CHECK: call <4 x i1> @llvm.experimental.constrained.fcmp.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, metadata !"ogt", metadata !"fpexcept.strict")197  return _mm256_cmp_pd(a, b, _CMP_GT_OQ);198}199 200__m256d test_mm256_cmp_pd_true_us(__m256d a, __m256d b) {201  // CHECK-LABEL: test_mm256_cmp_pd_true_us202  // CHECK: call <4 x double> @llvm.x86.avx.cmp.pd.256(<4 x double> %{{.*}}, <4 x double> %{{.*}}, i8 31)203  return _mm256_cmp_pd(a, b, _CMP_TRUE_US);204}205 206__m256 test_mm256_cmp_ps_eq_oq(__m256 a, __m256 b) {207  // CHECK-LABEL: test_mm256_cmp_ps_eq_oq208  // CHECK: call <8 x i1> @llvm.experimental.constrained.fcmp.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, metadata !"oeq", metadata !"fpexcept.strict")209  return _mm256_cmp_ps(a, b, _CMP_EQ_OQ);210}211 212__m256 test_mm256_cmp_ps_lt_os(__m256 a, __m256 b) {213  // CHECK-LABEL: test_mm256_cmp_ps_lt_os214  // CHECK: call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, metadata !"olt", metadata !"fpexcept.strict")215  return _mm256_cmp_ps(a, b, _CMP_LT_OS);216}217 218__m256 test_mm256_cmp_ps_le_os(__m256 a, __m256 b) {219  // CHECK-LABEL: test_mm256_cmp_ps_le_os220  // CHECK: call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, metadata !"ole", metadata !"fpexcept.strict")221  return _mm256_cmp_ps(a, b, _CMP_LE_OS);222}223 224__m256 test_mm256_cmp_ps_unord_q(__m256 a, __m256 b) {225  // CHECK-LABEL: test_mm256_cmp_ps_unord_q226  // CHECK: call <8 x i1> @llvm.experimental.constrained.fcmp.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, metadata !"uno", metadata !"fpexcept.strict")227  return _mm256_cmp_ps(a, b, _CMP_UNORD_Q);228}229 230__m256 test_mm256_cmp_ps_neq_uq(__m256 a, __m256 b) {231  // CHECK-LABEL: test_mm256_cmp_ps_neq_uq232  // CHECK: call <8 x i1> @llvm.experimental.constrained.fcmp.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, metadata !"une", metadata !"fpexcept.strict")233  return _mm256_cmp_ps(a, b, _CMP_NEQ_UQ);234}235 236__m256 test_mm256_cmp_ps_nlt_us(__m256 a, __m256 b) {237  // CHECK-LABEL: test_mm256_cmp_ps_nlt_us238  // CHECK: call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, metadata !"uge", metadata !"fpexcept.strict")239  return _mm256_cmp_ps(a, b, _CMP_NLT_US);240}241 242__m256 test_mm256_cmp_ps_nle_us(__m256 a, __m256 b) {243  // CHECK-LABEL: test_mm256_cmp_ps_nle_us244  // CHECK: call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, metadata !"ugt", metadata !"fpexcept.strict")245  return _mm256_cmp_ps(a, b, _CMP_NLE_US);246}247 248__m256 test_mm256_cmp_ps_ord_q(__m256 a, __m256 b) {249  // CHECK-LABEL: test_mm256_cmp_ps_ord_q250  // CHECK: call <8 x i1> @llvm.experimental.constrained.fcmp.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, metadata !"ord", metadata !"fpexcept.strict")251  return _mm256_cmp_ps(a, b, _CMP_ORD_Q);252}253 254__m256 test_mm256_cmp_ps_eq_uq(__m256 a, __m256 b) {255  // CHECK-LABEL: test_mm256_cmp_ps_eq_uq256  // CHECK: call <8 x i1> @llvm.experimental.constrained.fcmp.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, metadata !"ueq", metadata !"fpexcept.strict")257  return _mm256_cmp_ps(a, b, _CMP_EQ_UQ);258}259 260__m256 test_mm256_cmp_ps_nge_us(__m256 a, __m256 b) {261  // CHECK-LABEL: test_mm256_cmp_ps_nge_us262  // CHECK: call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, metadata !"ult", metadata !"fpexcept.strict")263  return _mm256_cmp_ps(a, b, _CMP_NGE_US);264}265 266__m256 test_mm256_cmp_ps_ngt_us(__m256 a, __m256 b) {267  // CHECK-LABEL: test_mm256_cmp_ps_ngt_us268  // CHECK: call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, metadata !"ule", metadata !"fpexcept.strict")269  return _mm256_cmp_ps(a, b, _CMP_NGT_US);270}271 272__m256 test_mm256_cmp_ps_false_oq(__m256 a, __m256 b) {273  // CHECK-LABEL: test_mm256_cmp_ps_false_oq274  // CHECK: call <8 x float> @llvm.x86.avx.cmp.ps.256(<8 x float> %{{.*}}, <8 x float> %{{.*}}, i8 11)275  return _mm256_cmp_ps(a, b, _CMP_FALSE_OQ);276}277 278__m256 test_mm256_cmp_ps_neq_oq(__m256 a, __m256 b) {279  // CHECK-LABEL: test_mm256_cmp_ps_neq_oq280  // CHECK: call <8 x i1> @llvm.experimental.constrained.fcmp.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, metadata !"one", metadata !"fpexcept.strict")281  return _mm256_cmp_ps(a, b, _CMP_NEQ_OQ);282}283 284__m256 test_mm256_cmp_ps_ge_os(__m256 a, __m256 b) {285  // CHECK-LABEL: test_mm256_cmp_ps_ge_os286  // CHECK: call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, metadata !"oge", metadata !"fpexcept.strict")287  return _mm256_cmp_ps(a, b, _CMP_GE_OS);288}289 290__m256 test_mm256_cmp_ps_gt_os(__m256 a, __m256 b) {291  // CHECK-LABEL: test_mm256_cmp_ps_gt_os292  // CHECK: call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, metadata !"ogt", metadata !"fpexcept.strict")293  return _mm256_cmp_ps(a, b, _CMP_GT_OS);294}295 296__m256 test_mm256_cmp_ps_true_uq(__m256 a, __m256 b) {297  // CHECK-LABEL: test_mm256_cmp_ps_true_uq298  // CHECK: call <8 x float> @llvm.x86.avx.cmp.ps.256(<8 x float> %{{.*}}, <8 x float> %{{.*}}, i8 15)299  return _mm256_cmp_ps(a, b, _CMP_TRUE_UQ);300}301 302__m256 test_mm256_cmp_ps_eq_os(__m256 a, __m256 b) {303  // CHECK-LABEL: test_mm256_cmp_ps_eq_os304  // CHECK: call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, metadata !"oeq", metadata !"fpexcept.strict")305  return _mm256_cmp_ps(a, b, _CMP_EQ_OS);306}307 308__m256 test_mm256_cmp_ps_lt_oq(__m256 a, __m256 b) {309  // CHECK-LABEL: test_mm256_cmp_ps_lt_oq310  // CHECK: call <8 x i1> @llvm.experimental.constrained.fcmp.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, metadata !"olt", metadata !"fpexcept.strict")311  return _mm256_cmp_ps(a, b, _CMP_LT_OQ);312}313 314__m256 test_mm256_cmp_ps_le_oq(__m256 a, __m256 b) {315  // CHECK-LABEL: test_mm256_cmp_ps_le_oq316  // CHECK: call <8 x i1> @llvm.experimental.constrained.fcmp.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, metadata !"ole", metadata !"fpexcept.strict")317  return _mm256_cmp_ps(a, b, _CMP_LE_OQ);318}319 320__m256 test_mm256_cmp_ps_unord_s(__m256 a, __m256 b) {321  // CHECK-LABEL: test_mm256_cmp_ps_unord_s322  // CHECK: call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, metadata !"uno", metadata !"fpexcept.strict")323  return _mm256_cmp_ps(a, b, _CMP_UNORD_S);324}325 326__m256 test_mm256_cmp_ps_neq_us(__m256 a, __m256 b) {327  // CHECK-LABEL: test_mm256_cmp_ps_neq_us328  // CHECK: call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, metadata !"une", metadata !"fpexcept.strict")329  return _mm256_cmp_ps(a, b, _CMP_NEQ_US);330}331 332__m256 test_mm256_cmp_ps_nlt_uq(__m256 a, __m256 b) {333  // CHECK-LABEL: test_mm256_cmp_ps_nlt_uq334  // CHECK: call <8 x i1> @llvm.experimental.constrained.fcmp.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, metadata !"uge", metadata !"fpexcept.strict")335  return _mm256_cmp_ps(a, b, _CMP_NLT_UQ);336}337 338__m256 test_mm256_cmp_ps_nle_uq(__m256 a, __m256 b) {339  // CHECK-LABEL: test_mm256_cmp_ps_nle_uq340  // CHECK: call <8 x i1> @llvm.experimental.constrained.fcmp.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, metadata !"ugt", metadata !"fpexcept.strict")341  return _mm256_cmp_ps(a, b, _CMP_NLE_UQ);342}343 344__m256 test_mm256_cmp_ps_ord_s(__m256 a, __m256 b) {345  // CHECK-LABEL: test_mm256_cmp_ps_ord_s346  // CHECK: call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, metadata !"ord", metadata !"fpexcept.strict")347  return _mm256_cmp_ps(a, b, _CMP_ORD_S);348}349 350__m256 test_mm256_cmp_ps_eq_us(__m256 a, __m256 b) {351  // CHECK-LABEL: test_mm256_cmp_ps_eq_us352  // CHECK: call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, metadata !"ueq", metadata !"fpexcept.strict")353  return _mm256_cmp_ps(a, b, _CMP_EQ_US);354}355 356__m256 test_mm256_cmp_ps_nge_uq(__m256 a, __m256 b) {357  // CHECK-LABEL: test_mm256_cmp_ps_nge_uq358  // CHECK: call <8 x i1> @llvm.experimental.constrained.fcmp.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, metadata !"ult", metadata !"fpexcept.strict")359  return _mm256_cmp_ps(a, b, _CMP_NGE_UQ);360}361 362__m256 test_mm256_cmp_ps_ngt_uq(__m256 a, __m256 b) {363  // CHECK-LABEL: test_mm256_cmp_ps_ngt_uq364  // CHECK: call <8 x i1> @llvm.experimental.constrained.fcmp.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, metadata !"ule", metadata !"fpexcept.strict")365  return _mm256_cmp_ps(a, b, _CMP_NGT_UQ);366}367 368__m256 test_mm256_cmp_ps_false_os(__m256 a, __m256 b) {369  // CHECK-LABEL: test_mm256_cmp_ps_false_os370  // CHECK: call <8 x float> @llvm.x86.avx.cmp.ps.256(<8 x float> %{{.*}}, <8 x float> %{{.*}}, i8 27)371  return _mm256_cmp_ps(a, b, _CMP_FALSE_OS);372}373 374__m256 test_mm256_cmp_ps_neq_os(__m256 a, __m256 b) {375  // CHECK-LABEL: test_mm256_cmp_ps_neq_os376  // CHECK: call <8 x i1> @llvm.experimental.constrained.fcmps.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, metadata !"one", metadata !"fpexcept.strict")377  return _mm256_cmp_ps(a, b, _CMP_NEQ_OS);378}379 380__m256 test_mm256_cmp_ps_ge_oq(__m256 a, __m256 b) {381  // CHECK-LABEL: test_mm256_cmp_ps_ge_oq382  // CHECK: call <8 x i1> @llvm.experimental.constrained.fcmp.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, metadata !"oge", metadata !"fpexcept.strict")383  return _mm256_cmp_ps(a, b, _CMP_GE_OQ);384}385 386__m256 test_mm256_cmp_ps_gt_oq(__m256 a, __m256 b) {387  // CHECK-LABEL: test_mm256_cmp_ps_gt_oq388  // CHECK: call <8 x i1> @llvm.experimental.constrained.fcmp.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, metadata !"ogt", metadata !"fpexcept.strict")389  return _mm256_cmp_ps(a, b, _CMP_GT_OQ);390}391 392__m256 test_mm256_cmp_ps_true_us(__m256 a, __m256 b) {393  // CHECK-LABEL: test_mm256_cmp_ps_true_us394  // CHECK: call <8 x float> @llvm.x86.avx.cmp.ps.256(<8 x float> %{{.*}}, <8 x float> %{{.*}}, i8 31)395  return _mm256_cmp_ps(a, b, _CMP_TRUE_US);396}397 398__m128d test_mm_cmp_pd_eq_oq(__m128d a, __m128d b) {399  // CHECK-LABEL: test_mm_cmp_pd_eq_oq400  // CHECK: call <2 x i1> @llvm.experimental.constrained.fcmp.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, metadata !"oeq", metadata !"fpexcept.strict")401  return _mm_cmp_pd(a, b, _CMP_EQ_OQ);402}403 404__m128d test_mm_cmp_pd_lt_os(__m128d a, __m128d b) {405  // CHECK-LABEL: test_mm_cmp_pd_lt_os406  // CHECK: call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, metadata !"olt", metadata !"fpexcept.strict")407  return _mm_cmp_pd(a, b, _CMP_LT_OS);408}409 410__m128d test_mm_cmp_pd_le_os(__m128d a, __m128d b) {411  // CHECK-LABEL: test_mm_cmp_pd_le_os412  // CHECK: call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, metadata !"ole", metadata !"fpexcept.strict")413  return _mm_cmp_pd(a, b, _CMP_LE_OS);414}415 416__m128d test_mm_cmp_pd_unord_q(__m128d a, __m128d b) {417  // CHECK-LABEL: test_mm_cmp_pd_unord_q418  // CHECK: call <2 x i1> @llvm.experimental.constrained.fcmp.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, metadata !"uno", metadata !"fpexcept.strict")419  return _mm_cmp_pd(a, b, _CMP_UNORD_Q);420}421 422__m128d test_mm_cmp_pd_neq_uq(__m128d a, __m128d b) {423  // CHECK-LABEL: test_mm_cmp_pd_neq_uq424  // CHECK: call <2 x i1> @llvm.experimental.constrained.fcmp.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, metadata !"une", metadata !"fpexcept.strict")425  return _mm_cmp_pd(a, b, _CMP_NEQ_UQ);426}427 428__m128d test_mm_cmp_pd_nlt_us(__m128d a, __m128d b) {429  // CHECK-LABEL: test_mm_cmp_pd_nlt_us430  // CHECK: call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, metadata !"uge", metadata !"fpexcept.strict")431  return _mm_cmp_pd(a, b, _CMP_NLT_US);432}433 434__m128d test_mm_cmp_pd_nle_us(__m128d a, __m128d b) {435  // CHECK-LABEL: test_mm_cmp_pd_nle_us436  // CHECK: call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, metadata !"ugt", metadata !"fpexcept.strict")437  return _mm_cmp_pd(a, b, _CMP_NLE_US);438}439 440__m128d test_mm_cmp_pd_ord_q(__m128d a, __m128d b) {441  // CHECK-LABEL: test_mm_cmp_pd_ord_q442  // CHECK: call <2 x i1> @llvm.experimental.constrained.fcmp.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, metadata !"ord", metadata !"fpexcept.strict")443  return _mm_cmp_pd(a, b, _CMP_ORD_Q);444}445 446__m128d test_mm_cmp_pd_eq_uq(__m128d a, __m128d b) {447  // CHECK-LABEL: test_mm_cmp_pd_eq_uq448  // CHECK: call <2 x i1> @llvm.experimental.constrained.fcmp.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, metadata !"ueq", metadata !"fpexcept.strict")449  return _mm_cmp_pd(a, b, _CMP_EQ_UQ);450}451 452__m128d test_mm_cmp_pd_nge_us(__m128d a, __m128d b) {453  // CHECK-LABEL: test_mm_cmp_pd_nge_us454  // CHECK: call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, metadata !"ult", metadata !"fpexcept.strict")455  return _mm_cmp_pd(a, b, _CMP_NGE_US);456}457 458__m128d test_mm_cmp_pd_ngt_us(__m128d a, __m128d b) {459  // CHECK-LABEL: test_mm_cmp_pd_ngt_us460  // CHECK: call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, metadata !"ule", metadata !"fpexcept.strict")461  return _mm_cmp_pd(a, b, _CMP_NGT_US);462}463 464__m128d test_mm_cmp_pd_false_oq(__m128d a, __m128d b) {465  // CHECK-LABEL: test_mm_cmp_pd_false_oq466  // CHECK: call <2 x double> @llvm.x86.sse2.cmp.pd(<2 x double> %{{.*}}, <2 x double> %{{.*}}, i8 11)467  return _mm_cmp_pd(a, b, _CMP_FALSE_OQ);468}469 470__m128d test_mm_cmp_pd_neq_oq(__m128d a, __m128d b) {471  // CHECK-LABEL: test_mm_cmp_pd_neq_oq472  // CHECK: call <2 x i1> @llvm.experimental.constrained.fcmp.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, metadata !"one", metadata !"fpexcept.strict")473  return _mm_cmp_pd(a, b, _CMP_NEQ_OQ);474}475 476__m128d test_mm_cmp_pd_ge_os(__m128d a, __m128d b) {477  // CHECK-LABEL: test_mm_cmp_pd_ge_os478  // CHECK: call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, metadata !"oge", metadata !"fpexcept.strict")479  return _mm_cmp_pd(a, b, _CMP_GE_OS);480}481 482__m128d test_mm_cmp_pd_gt_os(__m128d a, __m128d b) {483  // CHECK-LABEL: test_mm_cmp_pd_gt_os484  // CHECK: call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, metadata !"ogt", metadata !"fpexcept.strict")485  return _mm_cmp_pd(a, b, _CMP_GT_OS);486}487 488__m128d test_mm_cmp_pd_true_uq(__m128d a, __m128d b) {489  // CHECK-LABEL: test_mm_cmp_pd_true_uq490  // CHECK: call <2 x double> @llvm.x86.sse2.cmp.pd(<2 x double> %{{.*}}, <2 x double> %{{.*}}, i8 15)491  return _mm_cmp_pd(a, b, _CMP_TRUE_UQ);492}493 494__m128d test_mm_cmp_pd_eq_os(__m128d a, __m128d b) {495  // CHECK-LABEL: test_mm_cmp_pd_eq_os496  // CHECK: call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, metadata !"oeq", metadata !"fpexcept.strict")497  return _mm_cmp_pd(a, b, _CMP_EQ_OS);498}499 500__m128d test_mm_cmp_pd_lt_oq(__m128d a, __m128d b) {501  // CHECK-LABEL: test_mm_cmp_pd_lt_oq502  // CHECK: call <2 x i1> @llvm.experimental.constrained.fcmp.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, metadata !"olt", metadata !"fpexcept.strict")503  return _mm_cmp_pd(a, b, _CMP_LT_OQ);504}505 506__m128d test_mm_cmp_pd_le_oq(__m128d a, __m128d b) {507  // CHECK-LABEL: test_mm_cmp_pd_le_oq508  // CHECK: call <2 x i1> @llvm.experimental.constrained.fcmp.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, metadata !"ole", metadata !"fpexcept.strict")509  return _mm_cmp_pd(a, b, _CMP_LE_OQ);510}511 512__m128d test_mm_cmp_pd_unord_s(__m128d a, __m128d b) {513  // CHECK-LABEL: test_mm_cmp_pd_unord_s514  // CHECK: call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, metadata !"uno", metadata !"fpexcept.strict")515  return _mm_cmp_pd(a, b, _CMP_UNORD_S);516}517 518__m128d test_mm_cmp_pd_neq_us(__m128d a, __m128d b) {519  // CHECK-LABEL: test_mm_cmp_pd_neq_us520  // CHECK: call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, metadata !"une", metadata !"fpexcept.strict")521  return _mm_cmp_pd(a, b, _CMP_NEQ_US);522}523 524__m128d test_mm_cmp_pd_nlt_uq(__m128d a, __m128d b) {525  // CHECK-LABEL: test_mm_cmp_pd_nlt_uq526  // CHECK: call <2 x i1> @llvm.experimental.constrained.fcmp.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, metadata !"uge", metadata !"fpexcept.strict")527  return _mm_cmp_pd(a, b, _CMP_NLT_UQ);528}529 530__m128d test_mm_cmp_pd_nle_uq(__m128d a, __m128d b) {531  // CHECK-LABEL: test_mm_cmp_pd_nle_uq532  // CHECK: call <2 x i1> @llvm.experimental.constrained.fcmp.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, metadata !"ugt", metadata !"fpexcept.strict")533  return _mm_cmp_pd(a, b, _CMP_NLE_UQ);534}535 536__m128d test_mm_cmp_pd_ord_s(__m128d a, __m128d b) {537  // CHECK-LABEL: test_mm_cmp_pd_ord_s538  // CHECK: call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, metadata !"ord", metadata !"fpexcept.strict")539  return _mm_cmp_pd(a, b, _CMP_ORD_S);540}541 542__m128d test_mm_cmp_pd_eq_us(__m128d a, __m128d b) {543  // CHECK-LABEL: test_mm_cmp_pd_eq_us544  // CHECK: call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, metadata !"ueq", metadata !"fpexcept.strict")545  return _mm_cmp_pd(a, b, _CMP_EQ_US);546}547 548__m128d test_mm_cmp_pd_nge_uq(__m128d a, __m128d b) {549  // CHECK-LABEL: test_mm_cmp_pd_nge_uq550  // CHECK: call <2 x i1> @llvm.experimental.constrained.fcmp.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, metadata !"ult", metadata !"fpexcept.strict")551  return _mm_cmp_pd(a, b, _CMP_NGE_UQ);552}553 554__m128d test_mm_cmp_pd_ngt_uq(__m128d a, __m128d b) {555  // CHECK-LABEL: test_mm_cmp_pd_ngt_uq556  // CHECK: call <2 x i1> @llvm.experimental.constrained.fcmp.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, metadata !"ule", metadata !"fpexcept.strict")557  return _mm_cmp_pd(a, b, _CMP_NGT_UQ);558}559 560__m128d test_mm_cmp_pd_false_os(__m128d a, __m128d b) {561  // CHECK-LABEL: test_mm_cmp_pd_false_os562  // CHECK: call <2 x double> @llvm.x86.sse2.cmp.pd(<2 x double> %{{.*}}, <2 x double> %{{.*}}, i8 27)563  return _mm_cmp_pd(a, b, _CMP_FALSE_OS);564}565 566__m128d test_mm_cmp_pd_neq_os(__m128d a, __m128d b) {567  // CHECK-LABEL: test_mm_cmp_pd_neq_os568  // CHECK: call <2 x i1> @llvm.experimental.constrained.fcmps.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, metadata !"one", metadata !"fpexcept.strict")569  return _mm_cmp_pd(a, b, _CMP_NEQ_OS);570}571 572__m128d test_mm_cmp_pd_ge_oq(__m128d a, __m128d b) {573  // CHECK-LABEL: test_mm_cmp_pd_ge_oq574  // CHECK: call <2 x i1> @llvm.experimental.constrained.fcmp.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, metadata !"oge", metadata !"fpexcept.strict")575  return _mm_cmp_pd(a, b, _CMP_GE_OQ);576}577 578__m128d test_mm_cmp_pd_gt_oq(__m128d a, __m128d b) {579  // CHECK-LABEL: test_mm_cmp_pd_gt_oq580  // CHECK: call <2 x i1> @llvm.experimental.constrained.fcmp.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, metadata !"ogt", metadata !"fpexcept.strict")581  return _mm_cmp_pd(a, b, _CMP_GT_OQ);582}583 584__m128d test_mm_cmp_pd_true_us(__m128d a, __m128d b) {585  // CHECK-LABEL: test_mm_cmp_pd_true_us586  // CHECK: call <2 x double> @llvm.x86.sse2.cmp.pd(<2 x double> %{{.*}}, <2 x double> %{{.*}}, i8 31)587  return _mm_cmp_pd(a, b, _CMP_TRUE_US);588}589 590__m128 test_mm_cmp_ps_eq_oq(__m128 a, __m128 b) {591  // CHECK-LABEL: test_mm_cmp_ps_eq_oq592  // CHECK: call <4 x i1> @llvm.experimental.constrained.fcmp.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, metadata !"oeq", metadata !"fpexcept.strict")593  return _mm_cmp_ps(a, b, _CMP_EQ_OQ);594}595 596__m128 test_mm_cmp_ps_lt_os(__m128 a, __m128 b) {597  // CHECK-LABEL: test_mm_cmp_ps_lt_os598  // CHECK: call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, metadata !"olt", metadata !"fpexcept.strict")599  return _mm_cmp_ps(a, b, _CMP_LT_OS);600}601 602__m128 test_mm_cmp_ps_le_os(__m128 a, __m128 b) {603  // CHECK-LABEL: test_mm_cmp_ps_le_os604  // CHECK: call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, metadata !"ole", metadata !"fpexcept.strict")605  return _mm_cmp_ps(a, b, _CMP_LE_OS);606}607 608__m128 test_mm_cmp_ps_unord_q(__m128 a, __m128 b) {609  // CHECK-LABEL: test_mm_cmp_ps_unord_q610  // CHECK: call <4 x i1> @llvm.experimental.constrained.fcmp.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, metadata !"uno", metadata !"fpexcept.strict")611  return _mm_cmp_ps(a, b, _CMP_UNORD_Q);612}613 614__m128 test_mm_cmp_ps_neq_uq(__m128 a, __m128 b) {615  // CHECK-LABEL: test_mm_cmp_ps_neq_uq616  // CHECK: call <4 x i1> @llvm.experimental.constrained.fcmp.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, metadata !"une", metadata !"fpexcept.strict")617  return _mm_cmp_ps(a, b, _CMP_NEQ_UQ);618}619 620__m128 test_mm_cmp_ps_nlt_us(__m128 a, __m128 b) {621  // CHECK-LABEL: test_mm_cmp_ps_nlt_us622  // CHECK: call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, metadata !"uge", metadata !"fpexcept.strict")623  return _mm_cmp_ps(a, b, _CMP_NLT_US);624}625 626__m128 test_mm_cmp_ps_nle_us(__m128 a, __m128 b) {627  // CHECK-LABEL: test_mm_cmp_ps_nle_us628  // CHECK: call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, metadata !"ugt", metadata !"fpexcept.strict")629  return _mm_cmp_ps(a, b, _CMP_NLE_US);630}631 632__m128 test_mm_cmp_ps_ord_q(__m128 a, __m128 b) {633  // CHECK-LABEL: test_mm_cmp_ps_ord_q634  // CHECK: call <4 x i1> @llvm.experimental.constrained.fcmp.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, metadata !"ord", metadata !"fpexcept.strict")635  return _mm_cmp_ps(a, b, _CMP_ORD_Q);636}637 638__m128 test_mm_cmp_ps_eq_uq(__m128 a, __m128 b) {639  // CHECK-LABEL: test_mm_cmp_ps_eq_uq640  // CHECK: call <4 x i1> @llvm.experimental.constrained.fcmp.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, metadata !"ueq", metadata !"fpexcept.strict")641  return _mm_cmp_ps(a, b, _CMP_EQ_UQ);642}643 644__m128 test_mm_cmp_ps_nge_us(__m128 a, __m128 b) {645  // CHECK-LABEL: test_mm_cmp_ps_nge_us646  // CHECK: call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, metadata !"ult", metadata !"fpexcept.strict")647  return _mm_cmp_ps(a, b, _CMP_NGE_US);648}649 650__m128 test_mm_cmp_ps_ngt_us(__m128 a, __m128 b) {651  // CHECK-LABEL: test_mm_cmp_ps_ngt_us652  // CHECK: call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, metadata !"ule", metadata !"fpexcept.strict")653  return _mm_cmp_ps(a, b, _CMP_NGT_US);654}655 656__m128 test_mm_cmp_ps_false_oq(__m128 a, __m128 b) {657  // CHECK-LABEL: test_mm_cmp_ps_false_oq658  // CHECK: call <4 x float> @llvm.x86.sse.cmp.ps(<4 x float> %{{.*}}, <4 x float> %{{.*}}, i8 11)659  return _mm_cmp_ps(a, b, _CMP_FALSE_OQ);660}661 662__m128 test_mm_cmp_ps_neq_oq(__m128 a, __m128 b) {663  // CHECK-LABEL: test_mm_cmp_ps_neq_oq664  // CHECK: call <4 x i1> @llvm.experimental.constrained.fcmp.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, metadata !"one", metadata !"fpexcept.strict")665  return _mm_cmp_ps(a, b, _CMP_NEQ_OQ);666}667 668__m128 test_mm_cmp_ps_ge_os(__m128 a, __m128 b) {669  // CHECK-LABEL: test_mm_cmp_ps_ge_os670  // CHECK: call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, metadata !"oge", metadata !"fpexcept.strict")671  return _mm_cmp_ps(a, b, _CMP_GE_OS);672}673 674__m128 test_mm_cmp_ps_gt_os(__m128 a, __m128 b) {675  // CHECK-LABEL: test_mm_cmp_ps_gt_os676  // CHECK: call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, metadata !"ogt", metadata !"fpexcept.strict")677  return _mm_cmp_ps(a, b, _CMP_GT_OS);678}679 680__m128 test_mm_cmp_ps_true_uq(__m128 a, __m128 b) {681  // CHECK-LABEL: test_mm_cmp_ps_true_uq682  // CHECK: call <4 x float> @llvm.x86.sse.cmp.ps(<4 x float> %{{.*}}, <4 x float> %{{.*}}, i8 15)683  return _mm_cmp_ps(a, b, _CMP_TRUE_UQ);684}685 686__m128 test_mm_cmp_ps_eq_os(__m128 a, __m128 b) {687  // CHECK-LABEL: test_mm_cmp_ps_eq_os688  // CHECK: call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, metadata !"oeq", metadata !"fpexcept.strict")689  return _mm_cmp_ps(a, b, _CMP_EQ_OS);690}691 692__m128 test_mm_cmp_ps_lt_oq(__m128 a, __m128 b) {693  // CHECK-LABEL: test_mm_cmp_ps_lt_oq694  // CHECK: call <4 x i1> @llvm.experimental.constrained.fcmp.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, metadata !"olt", metadata !"fpexcept.strict")695  return _mm_cmp_ps(a, b, _CMP_LT_OQ);696}697 698__m128 test_mm_cmp_ps_le_oq(__m128 a, __m128 b) {699  // CHECK-LABEL: test_mm_cmp_ps_le_oq700  // CHECK: call <4 x i1> @llvm.experimental.constrained.fcmp.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, metadata !"ole", metadata !"fpexcept.strict")701  return _mm_cmp_ps(a, b, _CMP_LE_OQ);702}703 704__m128 test_mm_cmp_ps_unord_s(__m128 a, __m128 b) {705  // CHECK-LABEL: test_mm_cmp_ps_unord_s706  // CHECK: call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, metadata !"uno", metadata !"fpexcept.strict")707  return _mm_cmp_ps(a, b, _CMP_UNORD_S);708}709 710__m128 test_mm_cmp_ps_neq_us(__m128 a, __m128 b) {711  // CHECK-LABEL: test_mm_cmp_ps_neq_us712  // CHECK: call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, metadata !"une", metadata !"fpexcept.strict")713  return _mm_cmp_ps(a, b, _CMP_NEQ_US);714}715 716__m128 test_mm_cmp_ps_nlt_uq(__m128 a, __m128 b) {717  // CHECK-LABEL: test_mm_cmp_ps_nlt_uq718  // CHECK: call <4 x i1> @llvm.experimental.constrained.fcmp.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, metadata !"uge", metadata !"fpexcept.strict")719  return _mm_cmp_ps(a, b, _CMP_NLT_UQ);720}721 722__m128 test_mm_cmp_ps_nle_uq(__m128 a, __m128 b) {723  // CHECK-LABEL: test_mm_cmp_ps_nle_uq724  // CHECK: call <4 x i1> @llvm.experimental.constrained.fcmp.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, metadata !"ugt", metadata !"fpexcept.strict")725  return _mm_cmp_ps(a, b, _CMP_NLE_UQ);726}727 728__m128 test_mm_cmp_ps_ord_s(__m128 a, __m128 b) {729  // CHECK-LABEL: test_mm_cmp_ps_ord_s730  // CHECK: call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, metadata !"ord", metadata !"fpexcept.strict")731  return _mm_cmp_ps(a, b, _CMP_ORD_S);732}733 734__m128 test_mm_cmp_ps_eq_us(__m128 a, __m128 b) {735  // CHECK-LABEL: test_mm_cmp_ps_eq_us736  // CHECK: call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, metadata !"ueq", metadata !"fpexcept.strict")737  return _mm_cmp_ps(a, b, _CMP_EQ_US);738}739 740__m128 test_mm_cmp_ps_nge_uq(__m128 a, __m128 b) {741  // CHECK-LABEL: test_mm_cmp_ps_nge_uq742  // CHECK: call <4 x i1> @llvm.experimental.constrained.fcmp.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, metadata !"ult", metadata !"fpexcept.strict")743  return _mm_cmp_ps(a, b, _CMP_NGE_UQ);744}745 746__m128 test_mm_cmp_ps_ngt_uq(__m128 a, __m128 b) {747  // CHECK-LABEL: test_mm_cmp_ps_ngt_uq748  // CHECK: call <4 x i1> @llvm.experimental.constrained.fcmp.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, metadata !"ule", metadata !"fpexcept.strict")749  return _mm_cmp_ps(a, b, _CMP_NGT_UQ);750}751 752__m128 test_mm_cmp_ps_false_os(__m128 a, __m128 b) {753  // CHECK-LABEL: test_mm_cmp_ps_false_os754  // CHECK: call <4 x float> @llvm.x86.sse.cmp.ps(<4 x float> %{{.*}}, <4 x float> %{{.*}}, i8 27)755  return _mm_cmp_ps(a, b, _CMP_FALSE_OS);756}757 758__m128 test_mm_cmp_ps_neq_os(__m128 a, __m128 b) {759  // CHECK-LABEL: test_mm_cmp_ps_neq_os760  // CHECK: call <4 x i1> @llvm.experimental.constrained.fcmps.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, metadata !"one", metadata !"fpexcept.strict")761  return _mm_cmp_ps(a, b, _CMP_NEQ_OS);762}763 764__m128 test_mm_cmp_ps_ge_oq(__m128 a, __m128 b) {765  // CHECK-LABEL: test_mm_cmp_ps_ge_oq766  // CHECK: call <4 x i1> @llvm.experimental.constrained.fcmp.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, metadata !"oge", metadata !"fpexcept.strict")767  return _mm_cmp_ps(a, b, _CMP_GE_OQ);768}769 770__m128 test_mm_cmp_ps_gt_oq(__m128 a, __m128 b) {771  // CHECK-LABEL: test_mm_cmp_ps_gt_oq772  // CHECK: call <4 x i1> @llvm.experimental.constrained.fcmp.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, metadata !"ogt", metadata !"fpexcept.strict")773  return _mm_cmp_ps(a, b, _CMP_GT_OQ);774}775 776__m128 test_mm_cmp_ps_true_us(__m128 a, __m128 b) {777  // CHECK-LABEL: test_mm_cmp_ps_true_us778  // CHECK: call <4 x float> @llvm.x86.sse.cmp.ps(<4 x float> %{{.*}}, <4 x float> %{{.*}}, i8 31)779  return _mm_cmp_ps(a, b, _CMP_TRUE_US);780}781