aboutsummaryrefslogtreecommitdiff
path: root/test/CodeGen/avx-cmp-builtins.c
blob: 44903005cc1399e315d8878b03313cd92499be7a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
// RUN: %clang -mavx -c -emit-llvm %s -o - | llvm-dis | FileCheck %s
#include <immintrin.h>

//
// Test if third argument of cmp_XY function in LLVM IR form has immediate value.
//
void test_cmp_ps256() {
    __m256 a, b, c;
    a = _mm256_cmp_ps(b, c, _CMP_GE_OS);
    // CHECK: @test_cmp_ps256
    // CHECK: call <8 x float> @llvm.x86.avx.cmp.ps.256(<8 x float> {{%.*}}, <8 x float> {{%.*}}, i8 13)
}

void test_cmp_pd256() {
    __m256d a, b, c;
    a = _mm256_cmp_pd(b, c, _CMP_GE_OS);
    // CHECK: @test_cmp_pd256
    // CHECK: call <4 x double> @llvm.x86.avx.cmp.pd.256(<4 x double> {{%.*}}, <4 x double> {{%.*}}, i8 13)
}

void test_cmp_ps() {
    __m128 a, b, c;
    a = _mm_cmp_ps(b, c, _CMP_GE_OS);
    // CHECK: @test_cmp_ps
    // CHECK: call <4 x float> @llvm.x86.sse.cmp.ps(<4 x float> {{%.*}}, <4 x float> {{%.*}}, i8 13)
}

void test_cmp_pd() {
    __m128d a, b, c;
    a = _mm_cmp_pd(b, c, _CMP_GE_OS);
    // CHECK: @test_cmp_pd
    // CHECK: call <2 x double> @llvm.x86.sse2.cmp.pd(<2 x double> {{%.*}}, <2 x double> {{%.*}}, i8 13)
}

void test_cmp_sd() {
    __m128d a, b, c;
    a = _mm_cmp_sd(b, c, _CMP_GE_OS);
    // CHECK: @test_cmp_sd
    // CHECK: call <2 x double> @llvm.x86.sse2.cmp.sd(<2 x double> {{%.*}}, <2 x double> {{%.*}}, i8 13)
}

void test_cmp_ss() {
    __m128 a, b, c;
    a = _mm_cmp_ss(b, c, _CMP_GE_OS);
    // CHECK: @test_cmp_ss
    // CHECK: call <4 x float> @llvm.x86.sse.cmp.ss(<4 x float> {{%.*}}, <4 x float> {{%.*}}, i8 13)
}