File: cmpccxadd-builtins.c

package info (click to toggle)
llvm-toolchain-17 1%3A17.0.6-22
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 1,799,624 kB
  • sloc: cpp: 6,428,607; ansic: 1,383,196; asm: 793,408; python: 223,504; objc: 75,364; f90: 60,502; lisp: 33,869; pascal: 15,282; sh: 9,684; perl: 7,453; ml: 4,937; awk: 3,523; makefile: 2,889; javascript: 2,149; xml: 888; fortran: 619; cs: 573
file content (197 lines) | stat: -rw-r--r-- 8,030 bytes parent folder | download | duplicates (8)
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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
// RUN: %clang_cc1 %s -ffreestanding -triple=x86_64-unknown-unknown -target-feature +cmpccxadd \
// RUN: -emit-llvm -o - -Wall -Werror -pedantic -Wno-gnu-statement-expression | FileCheck %s

#include <immintrin.h>
#include <stddef.h>

int test_cmpbexadd32(void *__A, int __B, int __C) {
  // CHECK-LABEL: @test_cmpbexadd32(
  // CHECK: call i32 @llvm.x86.cmpccxadd32(ptr %{{.*}}, i32 %{{.*}}, i32 %{{.*}}, i32 0)
  return _cmpccxadd_epi32(__A, __B, __C, _CMPCCX_O);
}

long long test_cmpbexadd64(void *__A, long long __B, long long __C) {
  // CHECK-LABEL: @test_cmpbexadd64(
  // CHECK: call i64 @llvm.x86.cmpccxadd64(ptr %{{.*}}, i64 %{{.*}}, i64 %{{.*}}, i32 0)
  return _cmpccxadd_epi64(__A, __B, __C, _CMPCCX_O);
}

int test_cmpbxadd32(void *__A, int __B, int __C) {
  // CHECK-LABEL: @test_cmpbxadd32(
  // CHECK: call i32 @llvm.x86.cmpccxadd32(ptr %{{.*}}, i32 %{{.*}}, i32 %{{.*}}, i32 1)
  return _cmpccxadd_epi32(__A, __B, __C, _CMPCCX_NO);
}

long long test_cmpbxadd64(void *__A, long long __B, long long __C) {
  // CHECK-LABEL: @test_cmpbxadd64(
  // CHECK: call i64 @llvm.x86.cmpccxadd64(ptr %{{.*}}, i64 %{{.*}}, i64 %{{.*}}, i32 1)
  return _cmpccxadd_epi64(__A, __B, __C, _CMPCCX_NO);
}

int test_cmplexadd32(void *__A, int __B, int __C) {
  // CHECK-LABEL: @test_cmplexadd32(
  // CHECK: call i32 @llvm.x86.cmpccxadd32(ptr %{{.*}}, i32 %{{.*}}, i32 %{{.*}}, i32 2)
  return _cmpccxadd_epi32(__A, __B, __C, _CMPCCX_B);
}

long long test_cmplexadd64(void *__A, long long __B, long long __C) {
  // CHECK-LABEL: @test_cmplexadd64(
  // CHECK: call i64 @llvm.x86.cmpccxadd64(ptr %{{.*}}, i64 %{{.*}}, i64 %{{.*}}, i32 2)
  return _cmpccxadd_epi64(__A, __B, __C, _CMPCCX_B);
}

int test_cmplxadd32(void *__A, int __B, int __C) {
  // CHECK-LABEL: @test_cmplxadd32(
  // CHECK: call i32 @llvm.x86.cmpccxadd32(ptr %{{.*}}, i32 %{{.*}}, i32 %{{.*}}, i32 3)
  return _cmpccxadd_epi32(__A, __B, __C, _CMPCCX_NB);
}

long long test_cmplxadd64(void *__A, long long __B, long long __C) {
  // CHECK-LABEL: @test_cmplxadd64(
  // CHECK: call i64 @llvm.x86.cmpccxadd64(ptr %{{.*}}, i64 %{{.*}}, i64 %{{.*}}, i32 3)
  return _cmpccxadd_epi64(__A, __B, __C, _CMPCCX_NB);
}

int test_cmpnbexadd32(void *__A, int __B, int __C) {
  // CHECK-LABEL: @test_cmpnbexadd32(
  // CHECK: call i32 @llvm.x86.cmpccxadd32(ptr %{{.*}}, i32 %{{.*}}, i32 %{{.*}}, i32 4)
  return _cmpccxadd_epi32(__A, __B, __C, _CMPCCX_Z);
}

long long test_cmpnbexadd64(void *__A, long long __B, long long __C) {
  // CHECK-LABEL: @test_cmpnbexadd64(
  // CHECK: call i64 @llvm.x86.cmpccxadd64(ptr %{{.*}}, i64 %{{.*}}, i64 %{{.*}}, i32 4)
  return _cmpccxadd_epi64(__A, __B, __C, _CMPCCX_Z);
}

int test_cmpnbxadd32(void *__A, int __B, int __C) {
  // CHECK-LABEL: @test_cmpnbxadd32(
  // CHECK: call i32 @llvm.x86.cmpccxadd32(ptr %{{.*}}, i32 %{{.*}}, i32 %{{.*}}, i32 5)
  return _cmpccxadd_epi32(__A, __B, __C, _CMPCCX_NZ);
}

long long test_cmpnbxadd64(void *__A, long long __B, long long __C) {
  // CHECK-LABEL: @test_cmpnbxadd64(
  // CHECK: call i64 @llvm.x86.cmpccxadd64(ptr %{{.*}}, i64 %{{.*}}, i64 %{{.*}}, i32 5)
  return _cmpccxadd_epi64(__A, __B, __C, _CMPCCX_NZ);
}

int test_cmpnlexadd32(void *__A, int __B, int __C) {
  // CHECK-LABEL: @test_cmpnlexadd32(
  // CHECK: call i32 @llvm.x86.cmpccxadd32(ptr %{{.*}}, i32 %{{.*}}, i32 %{{.*}}, i32 6)
  return _cmpccxadd_epi32(__A, __B, __C, _CMPCCX_BE);
}

long long test_cmpnlexadd64(void *__A, long long __B, long long __C) {
  // CHECK-LABEL: @test_cmpnlexadd64(
  // CHECK: call i64 @llvm.x86.cmpccxadd64(ptr %{{.*}}, i64 %{{.*}}, i64 %{{.*}}, i32 6)
  return _cmpccxadd_epi64(__A, __B, __C, _CMPCCX_BE);
}

int test_cmpnlxadd32(void *__A, int __B, int __C) {
  // CHECK-LABEL: @test_cmpnlxadd32(
  // CHECK: call i32 @llvm.x86.cmpccxadd32(ptr %{{.*}}, i32 %{{.*}}, i32 %{{.*}}, i32 7)
  return _cmpccxadd_epi32(__A, __B, __C, _CMPCCX_NBE);
}

long long test_cmpnlxadd64(void *__A, long long __B, long long __C) {
  // CHECK-LABEL: @test_cmpnlxadd64(
  // CHECK: call i64 @llvm.x86.cmpccxadd64(ptr %{{.*}}, i64 %{{.*}}, i64 %{{.*}}, i32 7)
  return _cmpccxadd_epi64(__A, __B, __C, _CMPCCX_NBE);
}

int test_cmpnoxadd32(void *__A, int __B, int __C) {
  // CHECK-LABEL: @test_cmpnoxadd32(
  // CHECK: call i32 @llvm.x86.cmpccxadd32(ptr %{{.*}}, i32 %{{.*}}, i32 %{{.*}}, i32 8)
  return _cmpccxadd_epi32(__A, __B, __C, _CMPCCX_S);
}

long long test_cmpnoxadd64(void *__A, long long __B, long long __C) {
  // CHECK-LABEL: @test_cmpnoxadd64(
  // CHECK: call i64 @llvm.x86.cmpccxadd64(ptr %{{.*}}, i64 %{{.*}}, i64 %{{.*}}, i32 8)
  return _cmpccxadd_epi64(__A, __B, __C, _CMPCCX_S);
}

int test_cmpnpxadd32(void *__A, int __B, int __C) {
  // CHECK-LABEL: @test_cmpnpxadd32(
  // CHECK: call i32 @llvm.x86.cmpccxadd32(ptr %{{.*}}, i32 %{{.*}}, i32 %{{.*}}, i32 9)
  return _cmpccxadd_epi32(__A, __B, __C, _CMPCCX_NS);
}

long long test_cmpnpxadd64(void *__A, long long __B, long long __C) {
  // CHECK-LABEL: @test_cmpnpxadd64(
  // CHECK: call i64 @llvm.x86.cmpccxadd64(ptr %{{.*}}, i64 %{{.*}}, i64 %{{.*}}, i32 9)
  return _cmpccxadd_epi64(__A, __B, __C, _CMPCCX_NS);
}

int test_cmpnsxadd32(void *__A, int __B, int __C) {
  // CHECK-LABEL: @test_cmpnsxadd32(
  // CHECK: call i32 @llvm.x86.cmpccxadd32(ptr %{{.*}}, i32 %{{.*}}, i32 %{{.*}}, i32 10)
  return _cmpccxadd_epi32(__A, __B, __C, _CMPCCX_P);
}

long long test_cmpnsxadd64(void *__A, long long __B, long long __C) {
  // CHECK-LABEL: @test_cmpnsxadd64(
  // CHECK: call i64 @llvm.x86.cmpccxadd64(ptr %{{.*}}, i64 %{{.*}}, i64 %{{.*}}, i32 10)
  return _cmpccxadd_epi64(__A, __B, __C, _CMPCCX_P);
}

int test_cmpnzxadd32(void *__A, int __B, int __C) {
  // CHECK-LABEL: @test_cmpnzxadd32(
  // CHECK: call i32 @llvm.x86.cmpccxadd32(ptr %{{.*}}, i32 %{{.*}}, i32 %{{.*}}, i32 11)
  return _cmpccxadd_epi32(__A, __B, __C, _CMPCCX_NP);
}

long long test_cmpnzxadd64(void *__A, long long __B, long long __C) {
  // CHECK-LABEL: @test_cmpnzxadd64(
  // CHECK: call i64 @llvm.x86.cmpccxadd64(ptr %{{.*}}, i64 %{{.*}}, i64 %{{.*}}, i32 11)
  return _cmpccxadd_epi64(__A, __B, __C, _CMPCCX_NP);
}

int test_cmpoxadd32(void *__A, int __B, int __C) {
  // CHECK-LABEL: @test_cmpoxadd32(
  // CHECK: call i32 @llvm.x86.cmpccxadd32(ptr %{{.*}}, i32 %{{.*}}, i32 %{{.*}}, i32 12)
  return _cmpccxadd_epi32(__A, __B, __C, _CMPCCX_L);
}

long long test_cmpoxadd64(void *__A, long long __B, long long __C) {
  // CHECK-LABEL: @test_cmpoxadd64(
  // CHECK: call i64 @llvm.x86.cmpccxadd64(ptr %{{.*}}, i64 %{{.*}}, i64 %{{.*}}, i32 12)
  return _cmpccxadd_epi64(__A, __B, __C, _CMPCCX_L);
}

int test_cmppxadd32(void *__A, int __B, int __C) {
  // CHECK-LABEL: @test_cmppxadd32(
  // CHECK: call i32 @llvm.x86.cmpccxadd32(ptr %{{.*}}, i32 %{{.*}}, i32 %{{.*}}, i32 13)
  return _cmpccxadd_epi32(__A, __B, __C, _CMPCCX_NL);
}

long long test_cmppxadd64(void *__A, long long __B, long long __C) {
  // CHECK-LABEL: @test_cmppxadd64(
  // CHECK: call i64 @llvm.x86.cmpccxadd64(ptr %{{.*}}, i64 %{{.*}}, i64 %{{.*}}, i32 13)
  return _cmpccxadd_epi64(__A, __B, __C, _CMPCCX_NL);
}

int test_cmpsxadd32(void *__A, int __B, int __C) {
  // CHECK-LABEL: @test_cmpsxadd32(
  // CHECK: call i32 @llvm.x86.cmpccxadd32(ptr %{{.*}}, i32 %{{.*}}, i32 %{{.*}}, i32 14)
  return _cmpccxadd_epi32(__A, __B, __C, _CMPCCX_LE);
}

long long test_cmpsxadd64(void *__A, long long __B, long long __C) {
  // CHECK-LABEL: @test_cmpsxadd64(
  // CHECK: call i64 @llvm.x86.cmpccxadd64(ptr %{{.*}}, i64 %{{.*}}, i64 %{{.*}}, i32 14)
  return _cmpccxadd_epi64(__A, __B, __C, _CMPCCX_LE);
}

int test_cmpzxadd32(void *__A, int __B, int __C) {
  // CHECK-LABEL: @test_cmpzxadd32(
  // CHECK: call i32 @llvm.x86.cmpccxadd32(ptr %{{.*}}, i32 %{{.*}}, i32 %{{.*}}, i32 15)
  return _cmpccxadd_epi32(__A, __B, __C, _CMPCCX_NLE);
}

long long test_cmpzxadd64(void *__A, long long __B, long long __C) {
  // CHECK-LABEL: @test_cmpzxadd64(
  // CHECK: call i64 @llvm.x86.cmpccxadd64(ptr %{{.*}}, i64 %{{.*}}, i64 %{{.*}}, i32 15)
  return _cmpccxadd_epi64(__A, __B, __C, _CMPCCX_NLE);
}