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