brintos

brintos / llvm-project-archived public Read only

0
0
Text · 13.8 KiB · 76413df Raw
456 lines · c
1// RUN: %clang_cc1 -flax-vector-conversions=none -ffreestanding %s -triple=x86_64-apple-darwin -target-feature +xop -emit-llvm -o - -Wall -Werror | FileCheck %s2// RUN: %clang_cc1 -flax-vector-conversions=none -ffreestanding %s -triple=x86_64-apple-darwin -target-feature +xop -fno-signed-char -emit-llvm -o - -Wall -Werror | FileCheck %s3// RUN: %clang_cc1 -flax-vector-conversions=none -ffreestanding %s -triple=i386-apple-darwin -target-feature +xop -emit-llvm -o - -Wall -Werror | FileCheck %s4// RUN: %clang_cc1 -flax-vector-conversions=none -ffreestanding %s -triple=i386-apple-darwin -target-feature +xop -fno-signed-char -emit-llvm -o - -Wall -Werror | FileCheck %s5 6 7#include <x86intrin.h>8 9// _MM_PCOMCTRL_LT10 11__m128i test_mm_comlt_epu8(__m128i a, __m128i b) {12  // CHECK-LABEL: test_mm_comlt_epu813  // CHECK: icmp ult <16 x i8> %{{.*}}, %{{.*}}14  // CHECK: sext <16 x i1> %{{.*}} to <16 x i8>15  return _mm_comlt_epu8(a, b);16}17 18__m128i test_mm_comlt_epu16(__m128i a, __m128i b) {19  // CHECK-LABEL: test_mm_comlt_epu1620  // CHECK: icmp ult <8 x i16> %{{.*}}, %{{.*}}21  // CHECK: sext <8 x i1> %{{.*}} to <8 x i16>22  return _mm_comlt_epu16(a, b);23}24 25__m128i test_mm_comlt_epu32(__m128i a, __m128i b) {26  // CHECK-LABEL: test_mm_comlt_epu3227  // CHECK: icmp ult <4 x i32> %{{.*}}, %{{.*}}28  // CHECK: sext <4 x i1> %{{.*}} to <4 x i32>29  return _mm_comlt_epu32(a, b);30}31 32__m128i test_mm_comlt_epu64(__m128i a, __m128i b) {33  // CHECK-LABEL: test_mm_comlt_epu6434  // CHECK: icmp ult <2 x i64> %{{.*}}, %{{.*}}35  // CHECK: sext <2 x i1> %{{.*}} to <2 x i64>36  return _mm_comlt_epu64(a, b);37}38 39__m128i test_mm_comlt_epi8(__m128i a, __m128i b) {40  // CHECK-LABEL: test_mm_comlt_epi841  // CHECK: icmp slt <16 x i8> %{{.*}}, %{{.*}}42  // CHECK: sext <16 x i1> %{{.*}} to <16 x i8>43  return _mm_comlt_epi8(a, b);44}45 46__m128i test_mm_comlt_epi16(__m128i a, __m128i b) {47  // CHECK-LABEL: test_mm_comlt_epi1648  // CHECK: icmp slt <8 x i16> %{{.*}}, %{{.*}}49  // CHECK: sext <8 x i1> %{{.*}} to <8 x i16>50  return _mm_comlt_epi16(a, b);51}52 53__m128i test_mm_comlt_epi32(__m128i a, __m128i b) {54  // CHECK-LABEL: test_mm_comlt_epi3255  // CHECK: icmp slt <4 x i32> %{{.*}}, %{{.*}}56  // CHECK: sext <4 x i1> %{{.*}} to <4 x i32>57  return _mm_comlt_epi32(a, b);58}59 60__m128i test_mm_comlt_epi64(__m128i a, __m128i b) {61  // CHECK-LABEL: test_mm_comlt_epi6462  // CHECK: icmp slt <2 x i64> %{{.*}}, %{{.*}}63  // CHECK: sext <2 x i1> %{{.*}} to <2 x i64>64  return _mm_comlt_epi64(a, b);65}66 67// _MM_PCOMCTRL_LE68 69__m128i test_mm_comle_epu8(__m128i a, __m128i b) {70  // CHECK-LABEL: test_mm_comle_epu871  // CHECK: icmp ule <16 x i8> %{{.*}}, %{{.*}}72  // CHECK: sext <16 x i1> %{{.*}} to <16 x i8>73  return _mm_comle_epu8(a, b);74}75 76__m128i test_mm_comle_epu16(__m128i a, __m128i b) {77  // CHECK-LABEL: test_mm_comle_epu1678  // CHECK: icmp ule <8 x i16> %{{.*}}, %{{.*}}79  // CHECK: sext <8 x i1> %{{.*}} to <8 x i16>80  return _mm_comle_epu16(a, b);81}82 83__m128i test_mm_comle_epu32(__m128i a, __m128i b) {84  // CHECK-LABEL: test_mm_comle_epu3285  // CHECK: icmp ule <4 x i32> %{{.*}}, %{{.*}}86  // CHECK: sext <4 x i1> %{{.*}} to <4 x i32>87  return _mm_comle_epu32(a, b);88}89 90__m128i test_mm_comle_epu64(__m128i a, __m128i b) {91  // CHECK-LABEL: test_mm_comle_epu6492  // CHECK: icmp ule <2 x i64> %{{.*}}, %{{.*}}93  // CHECK: sext <2 x i1> %{{.*}} to <2 x i64>94  return _mm_comle_epu64(a, b);95}96 97__m128i test_mm_comle_epi8(__m128i a, __m128i b) {98  // CHECK-LABEL: test_mm_comle_epi899  // CHECK: icmp sle <16 x i8> %{{.*}}, %{{.*}}100  // CHECK: sext <16 x i1> %{{.*}} to <16 x i8>101  return _mm_comle_epi8(a, b);102}103 104__m128i test_mm_comle_epi16(__m128i a, __m128i b) {105  // CHECK-LABEL: test_mm_comle_epi16106  // CHECK: icmp sle <8 x i16> %{{.*}}, %{{.*}}107  // CHECK: sext <8 x i1> %{{.*}} to <8 x i16>108  return _mm_comle_epi16(a, b);109}110 111__m128i test_mm_comle_epi32(__m128i a, __m128i b) {112  // CHECK-LABEL: test_mm_comle_epi32113  // CHECK: icmp sle <4 x i32> %{{.*}}, %{{.*}}114  // CHECK: sext <4 x i1> %{{.*}} to <4 x i32>115  return _mm_comle_epi32(a, b);116}117 118__m128i test_mm_comle_epi64(__m128i a, __m128i b) {119  // CHECK-LABEL: test_mm_comle_epi64120  // CHECK: icmp sle <2 x i64> %{{.*}}, %{{.*}}121  // CHECK: sext <2 x i1> %{{.*}} to <2 x i64>122  return _mm_comle_epi64(a, b);123}124 125// _MM_PCOMCTRL_GT126 127__m128i test_mm_comgt_epu8(__m128i a, __m128i b) {128  // CHECK-LABEL: test_mm_comgt_epu8129  // CHECK: icmp ugt <16 x i8> %{{.*}}, %{{.*}}130  // CHECK: sext <16 x i1> %{{.*}} to <16 x i8>131  return _mm_comgt_epu8(a, b);132}133 134__m128i test_mm_comgt_epu16(__m128i a, __m128i b) {135  // CHECK-LABEL: test_mm_comgt_epu16136  // CHECK: icmp ugt <8 x i16> %{{.*}}, %{{.*}}137  // CHECK: sext <8 x i1> %{{.*}} to <8 x i16>138  return _mm_comgt_epu16(a, b);139}140 141__m128i test_mm_comgt_epu32(__m128i a, __m128i b) {142  // CHECK-LABEL: test_mm_comgt_epu32143  // CHECK: icmp ugt <4 x i32> %{{.*}}, %{{.*}}144  // CHECK: sext <4 x i1> %{{.*}} to <4 x i32>145  return _mm_comgt_epu32(a, b);146}147 148__m128i test_mm_comgt_epu64(__m128i a, __m128i b) {149  // CHECK-LABEL: test_mm_comgt_epu64150  // CHECK: icmp ugt <2 x i64> %{{.*}}, %{{.*}}151  // CHECK: sext <2 x i1> %{{.*}} to <2 x i64>152  return _mm_comgt_epu64(a, b);153}154 155__m128i test_mm_comgt_epi8(__m128i a, __m128i b) {156  // CHECK-LABEL: test_mm_comgt_epi8157  // CHECK: icmp sgt <16 x i8> %{{.*}}, %{{.*}}158  // CHECK: sext <16 x i1> %{{.*}} to <16 x i8>159  return _mm_comgt_epi8(a, b);160}161 162__m128i test_mm_comgt_epi16(__m128i a, __m128i b) {163  // CHECK-LABEL: test_mm_comgt_epi16164  // CHECK: icmp sgt <8 x i16> %{{.*}}, %{{.*}}165  // CHECK: sext <8 x i1> %{{.*}} to <8 x i16>166  return _mm_comgt_epi16(a, b);167}168 169__m128i test_mm_comgt_epi32(__m128i a, __m128i b) {170  // CHECK-LABEL: test_mm_comgt_epi32171  // CHECK: icmp sgt <4 x i32> %{{.*}}, %{{.*}}172  // CHECK: sext <4 x i1> %{{.*}} to <4 x i32>173  return _mm_comgt_epi32(a, b);174}175 176__m128i test_mm_comgt_epi64(__m128i a, __m128i b) {177  // CHECK-LABEL: test_mm_comgt_epi64178  // CHECK: icmp sgt <2 x i64> %{{.*}}, %{{.*}}179  // CHECK: sext <2 x i1> %{{.*}} to <2 x i64>180  return _mm_comgt_epi64(a, b);181}182 183// _MM_PCOMCTRL_GE184 185__m128i test_mm_comge_epu8(__m128i a, __m128i b) {186  // CHECK-LABEL: test_mm_comge_epu8187  // CHECK: icmp uge <16 x i8> %{{.*}}, %{{.*}}188  // CHECK: sext <16 x i1> %{{.*}} to <16 x i8>189  return _mm_comge_epu8(a, b);190}191 192__m128i test_mm_comge_epu16(__m128i a, __m128i b) {193  // CHECK-LABEL: test_mm_comge_epu16194  // CHECK: icmp uge <8 x i16> %{{.*}}, %{{.*}}195  // CHECK: sext <8 x i1> %{{.*}} to <8 x i16>196  return _mm_comge_epu16(a, b);197}198 199__m128i test_mm_comge_epu32(__m128i a, __m128i b) {200  // CHECK-LABEL: test_mm_comge_epu32201  // CHECK: icmp uge <4 x i32> %{{.*}}, %{{.*}}202  // CHECK: sext <4 x i1> %{{.*}} to <4 x i32>203  return _mm_comge_epu32(a, b);204}205 206__m128i test_mm_comge_epu64(__m128i a, __m128i b) {207  // CHECK-LABEL: test_mm_comge_epu64208  // CHECK: icmp uge <2 x i64> %{{.*}}, %{{.*}}209  // CHECK: sext <2 x i1> %{{.*}} to <2 x i64>210  return _mm_comge_epu64(a, b);211}212 213__m128i test_mm_comge_epi8(__m128i a, __m128i b) {214  // CHECK-LABEL: test_mm_comge_epi8215  // CHECK: icmp sge <16 x i8> %{{.*}}, %{{.*}}216  // CHECK: sext <16 x i1> %{{.*}} to <16 x i8>217  return _mm_comge_epi8(a, b);218}219 220__m128i test_mm_comge_epi16(__m128i a, __m128i b) {221  // CHECK-LABEL: test_mm_comge_epi16222  // CHECK: icmp sge <8 x i16> %{{.*}}, %{{.*}}223  // CHECK: sext <8 x i1> %{{.*}} to <8 x i16>224  return _mm_comge_epi16(a, b);225}226 227__m128i test_mm_comge_epi32(__m128i a, __m128i b) {228  // CHECK-LABEL: test_mm_comge_epi32229  // CHECK: icmp sge <4 x i32> %{{.*}}, %{{.*}}230  // CHECK: sext <4 x i1> %{{.*}} to <4 x i32>231  return _mm_comge_epi32(a, b);232}233 234__m128i test_mm_comge_epi64(__m128i a, __m128i b) {235  // CHECK-LABEL: test_mm_comge_epi64236  // CHECK: icmp sge <2 x i64> %{{.*}}, %{{.*}}237  // CHECK: sext <2 x i1> %{{.*}} to <2 x i64>238  return _mm_comge_epi64(a, b);239}240 241// _MM_PCOMCTRL_EQ242 243__m128i test_mm_comeq_epu8(__m128i a, __m128i b) {244  // CHECK-LABEL: test_mm_comeq_epu8245  // CHECK: icmp eq <16 x i8> %{{.*}}, %{{.*}}246  // CHECK: sext <16 x i1> %{{.*}} to <16 x i8>247  return _mm_comeq_epu8(a, b);248}249 250__m128i test_mm_comeq_epu16(__m128i a, __m128i b) {251  // CHECK-LABEL: test_mm_comeq_epu16252  // CHECK: icmp eq <8 x i16> %{{.*}}, %{{.*}}253  // CHECK: sext <8 x i1> %{{.*}} to <8 x i16>254  return _mm_comeq_epu16(a, b);255}256 257__m128i test_mm_comeq_epu32(__m128i a, __m128i b) {258  // CHECK-LABEL: test_mm_comeq_epu32259  // CHECK: icmp eq <4 x i32> %{{.*}}, %{{.*}}260  // CHECK: sext <4 x i1> %{{.*}} to <4 x i32>261  return _mm_comeq_epu32(a, b);262}263 264__m128i test_mm_comeq_epu64(__m128i a, __m128i b) {265  // CHECK-LABEL: test_mm_comeq_epu64266  // CHECK: icmp eq <2 x i64> %{{.*}}, %{{.*}}267  // CHECK: sext <2 x i1> %{{.*}} to <2 x i64>268  return _mm_comeq_epu64(a, b);269}270 271__m128i test_mm_comeq_epi8(__m128i a, __m128i b) {272  // CHECK-LABEL: test_mm_comeq_epi8273  // CHECK: icmp eq <16 x i8> %{{.*}}, %{{.*}}274  // CHECK: sext <16 x i1> %{{.*}} to <16 x i8>275  return _mm_comeq_epi8(a, b);276}277 278__m128i test_mm_comeq_epi16(__m128i a, __m128i b) {279  // CHECK-LABEL: test_mm_comeq_epi16280  // CHECK: icmp eq <8 x i16> %{{.*}}, %{{.*}}281  // CHECK: sext <8 x i1> %{{.*}} to <8 x i16>282  return _mm_comeq_epi16(a, b);283}284 285__m128i test_mm_comeq_epi32(__m128i a, __m128i b) {286  // CHECK-LABEL: test_mm_comeq_epi32287  // CHECK: icmp eq <4 x i32> %{{.*}}, %{{.*}}288  // CHECK: sext <4 x i1> %{{.*}} to <4 x i32>289  return _mm_comeq_epi32(a, b);290}291 292__m128i test_mm_comeq_epi64(__m128i a, __m128i b) {293  // CHECK-LABEL: test_mm_comeq_epi64294  // CHECK: icmp eq <2 x i64> %{{.*}}, %{{.*}}295  // CHECK: sext <2 x i1> %{{.*}} to <2 x i64>296  return _mm_comeq_epi64(a, b);297}298 299// _MM_PCOMCTRL_NEQ300 301__m128i test_mm_comneq_epu8(__m128i a, __m128i b) {302  // CHECK-LABEL: test_mm_comneq_epu8303  // CHECK: icmp ne <16 x i8> %{{.*}}, %{{.*}}304  // CHECK: sext <16 x i1> %{{.*}} to <16 x i8>305  return _mm_comneq_epu8(a, b);306}307 308__m128i test_mm_comneq_epu16(__m128i a, __m128i b) {309  // CHECK-LABEL: test_mm_comneq_epu16310  // CHECK: icmp ne <8 x i16> %{{.*}}, %{{.*}}311  // CHECK: sext <8 x i1> %{{.*}} to <8 x i16>312  return _mm_comneq_epu16(a, b);313}314 315__m128i test_mm_comneq_epu32(__m128i a, __m128i b) {316  // CHECK-LABEL: test_mm_comneq_epu32317  // CHECK: icmp ne <4 x i32> %{{.*}}, %{{.*}}318  // CHECK: sext <4 x i1> %{{.*}} to <4 x i32>319  return _mm_comneq_epu32(a, b);320}321 322__m128i test_mm_comneq_epu64(__m128i a, __m128i b) {323  // CHECK-LABEL: test_mm_comneq_epu64324  // CHECK: icmp ne <2 x i64> %{{.*}}, %{{.*}}325  // CHECK: sext <2 x i1> %{{.*}} to <2 x i64>326  return _mm_comneq_epu64(a, b);327}328 329__m128i test_mm_comneq_epi8(__m128i a, __m128i b) {330  // CHECK-LABEL: test_mm_comneq_epi8331  // CHECK: icmp ne <16 x i8> %{{.*}}, %{{.*}}332  // CHECK: sext <16 x i1> %{{.*}} to <16 x i8>333  return _mm_comneq_epi8(a, b);334}335 336__m128i test_mm_comneq_epi16(__m128i a, __m128i b) {337  // CHECK-LABEL: test_mm_comneq_epi16338  // CHECK: icmp ne <8 x i16> %{{.*}}, %{{.*}}339  // CHECK: sext <8 x i1> %{{.*}} to <8 x i16>340  return _mm_comneq_epi16(a, b);341}342 343__m128i test_mm_comneq_epi32(__m128i a, __m128i b) {344  // CHECK-LABEL: test_mm_comneq_epi32345  // CHECK: icmp ne <4 x i32> %{{.*}}, %{{.*}}346  // CHECK: sext <4 x i1> %{{.*}} to <4 x i32>347  return _mm_comneq_epi32(a, b);348}349 350__m128i test_mm_comneq_epi64(__m128i a, __m128i b) {351  // CHECK-LABEL: test_mm_comneq_epi64352  // CHECK: icmp ne <2 x i64> %{{.*}}, %{{.*}}353  // CHECK: sext <2 x i1> %{{.*}} to <2 x i64>354  return _mm_comneq_epi64(a, b);355}356 357// _MM_PCOMCTRL_FALSE358 359__m128i test_mm_comfalse_epu8(__m128i a, __m128i b) {360  // CHECK-LABEL: test_mm_comfalse_epu8361  // CHECK: ret <2 x i64> zeroinitializer362  return _mm_comfalse_epu8(a, b);363}364 365__m128i test_mm_comfalse_epu16(__m128i a, __m128i b) {366  // CHECK-LABEL: test_mm_comfalse_epu16367  // CHECK: ret <2 x i64> zeroinitializer368  return _mm_comfalse_epu16(a, b);369}370 371__m128i test_mm_comfalse_epu32(__m128i a, __m128i b) {372  // CHECK-LABEL: test_mm_comfalse_epu32373  // CHECK: ret <2 x i64> zeroinitializer374  return _mm_comfalse_epu32(a, b);375}376 377__m128i test_mm_comfalse_epu64(__m128i a, __m128i b) {378  // CHECK-LABEL: test_mm_comfalse_epu64379  // CHECK: ret <2 x i64> zeroinitializer380  return _mm_comfalse_epu64(a, b);381}382 383__m128i test_mm_comfalse_epi8(__m128i a, __m128i b) {384  // CHECK-LABEL: test_mm_comfalse_epi8385  // CHECK: ret <2 x i64> zeroinitializer386  return _mm_comfalse_epi8(a, b);387}388 389__m128i test_mm_comfalse_epi16(__m128i a, __m128i b) {390  // CHECK-LABEL: test_mm_comfalse_epi16391  // CHECK: ret <2 x i64> zeroinitializer392  return _mm_comfalse_epi16(a, b);393}394 395__m128i test_mm_comfalse_epi32(__m128i a, __m128i b) {396  // CHECK-LABEL: test_mm_comfalse_epi32397  // CHECK: ret <2 x i64> zeroinitializer398  return _mm_comfalse_epi32(a, b);399}400 401__m128i test_mm_comfalse_epi64(__m128i a, __m128i b) {402  // CHECK-LABEL: test_mm_comfalse_epi64403  // CHECK: ret <2 x i64> zeroinitializer404  return _mm_comfalse_epi64(a, b);405}406 407// _MM_PCOMCTRL_TRUE408 409__m128i test_mm_comtrue_epu8(__m128i a, __m128i b) {410  // CHECK-LABEL: test_mm_comtrue_epu8411  // CHECK: ret <2 x i64> splat (i64 -1)412  return _mm_comtrue_epu8(a, b);413}414 415__m128i test_mm_comtrue_epu16(__m128i a, __m128i b) {416  // CHECK-LABEL: test_mm_comtrue_epu16417  // CHECK: ret <2 x i64> splat (i64 -1)418  return _mm_comtrue_epu16(a, b);419}420 421__m128i test_mm_comtrue_epu32(__m128i a, __m128i b) {422  // CHECK-LABEL: test_mm_comtrue_epu32423  // CHECK: ret <2 x i64> splat (i64 -1)424  return _mm_comtrue_epu32(a, b);425}426 427__m128i test_mm_comtrue_epu64(__m128i a, __m128i b) {428  // CHECK-LABEL: test_mm_comtrue_epu64429  // CHECK: ret <2 x i64> splat (i64 -1)430  return _mm_comtrue_epu64(a, b);431}432 433__m128i test_mm_comtrue_epi8(__m128i a, __m128i b) {434  // CHECK-LABEL: test_mm_comtrue_epi8435  // CHECK: ret <2 x i64> splat (i64 -1)436  return _mm_comtrue_epi8(a, b);437}438 439__m128i test_mm_comtrue_epi16(__m128i a, __m128i b) {440  // CHECK-LABEL: test_mm_comtrue_epi16441  // CHECK: ret <2 x i64> splat (i64 -1)442  return _mm_comtrue_epi16(a, b);443}444 445__m128i test_mm_comtrue_epi32(__m128i a, __m128i b) {446  // CHECK-LABEL: test_mm_comtrue_epi32447  // CHECK: ret <2 x i64> splat (i64 -1)448  return _mm_comtrue_epi32(a, b);449}450 451__m128i test_mm_comtrue_epi64(__m128i a, __m128i b) {452  // CHECK-LABEL: test_mm_comtrue_epi64453  // CHECK: ret <2 x i64> splat (i64 -1)454  return _mm_comtrue_epi64(a, b);455}456