DPC++ Runtime
Runtime libraries for oneAPI DPC++
imf_integer_utils.hpp
Go to the documentation of this file.
1 //==--------------------------- imf_integer_utils.hpp ----------------------==//
2 //
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6 //
7 //===----------------------------------------------------------------------===//
8 // C++ APIs for simple integer util funcitons
9 //===----------------------------------------------------------------------===//
10 
11 #pragma once
12 
13 extern "C" {
14 unsigned __imf_brev(unsigned);
15 unsigned long long __imf_brevll(unsigned long long);
16 unsigned __imf_byte_perm(unsigned, unsigned, unsigned);
17 long long __imf_llmax(long long x, long long y);
18 long long __imf_llmin(long long x, long long y);
19 int __imf_max(int x, int y);
20 int __imf_min(int x, int y);
21 unsigned long long __imf_ullmax(unsigned long long x, unsigned long long y);
22 unsigned long long __imf_ullmin(unsigned long long x, unsigned long long y);
23 unsigned __imf_umax(unsigned x, unsigned y);
24 unsigned __imf_umin(unsigned x, unsigned y);
25 int __imf_clz(int);
26 int __imf_clzll(long long);
27 int __imf_ffs(int);
28 int __imf_ffsll(long long);
29 int __imf_mul24(int, int);
30 int __imf_mulhi(int, int);
31 long long __imf_mul64hi(long long, long long);
32 int __imf_popc(unsigned);
33 int __imf_popcll(unsigned long long);
34 int __imf_rhadd(int, int);
35 int __imf_hadd(int, int);
36 unsigned __imf_sad(int, int, unsigned);
37 unsigned __imf_uhadd(unsigned, unsigned);
38 unsigned __imf_umul24(unsigned, unsigned);
39 unsigned __imf_umulhi(unsigned, unsigned);
40 unsigned long long __imf_umul64hi(unsigned long long, unsigned long long);
41 unsigned __imf_urhadd(unsigned, unsigned);
42 unsigned __imf_usad(unsigned, unsigned, unsigned);
43 }
44 
45 namespace sycl {
46 inline namespace _V1 {
47 namespace ext::intel::math {
48 
49 template <typename Tp = unsigned> unsigned brev(Tp x) { return __imf_brev(x); }
50 
51 template <typename Tp = unsigned long long> unsigned long long brevll(Tp x) {
52  return __imf_brevll(x);
53 }
54 
55 template <typename Tp = unsigned> unsigned byte_perm(Tp x, Tp y, Tp z) {
56  return __imf_byte_perm(x, y, z);
57 }
58 
59 template <typename Tp = int> int max(Tp x, Tp y) { return __imf_max(x, y); }
60 
61 template <typename Tp = int> int min(Tp x, Tp y) { return __imf_min(x, y); }
62 
63 template <typename Tp = unsigned> unsigned umax(Tp x, Tp y) {
64  return __imf_umax(x, y);
65 }
66 
67 template <typename Tp = unsigned> unsigned umin(Tp x, Tp y) {
68  return __imf_umin(x, y);
69 }
70 
71 template <typename Tp = long long> long long llmax(Tp x, Tp y) {
72  return __imf_llmax(x, y);
73 }
74 
75 template <typename Tp = long long> long long llmin(Tp x, Tp y) {
76  return __imf_llmin(x, y);
77 }
78 
79 template <typename Tp = unsigned long long>
80 unsigned long long ullmax(Tp x, Tp y) {
81  return __imf_ullmax(x, y);
82 }
83 
84 template <typename Tp = unsigned long long>
85 unsigned long long ullmin(Tp x, Tp y) {
86  return __imf_ullmin(x, y);
87 }
88 
89 template <typename Tp = int> int clz(Tp x) { return __imf_clz(x); }
90 
91 template <typename Tp = long long> int clzll(Tp x) { return __imf_clzll(x); }
92 
93 template <typename Tp = int> int ffs(Tp x) { return __imf_ffs(x); }
94 
95 template <typename Tp = long long> int ffsll(Tp x) { return __imf_ffsll(x); }
96 
97 template <typename Tp = int> int hadd(Tp x, Tp y) { return __imf_hadd(x, y); }
98 
99 template <typename Tp = int> int rhadd(Tp x, Tp y) { return __imf_rhadd(x, y); }
100 
101 template <typename Tp = unsigned> unsigned urhadd(Tp x, Tp y) {
102  return __imf_urhadd(x, y);
103 }
104 
105 template <typename Tp = int> int mul24(Tp x, Tp y) { return __imf_mul24(x, y); }
106 
107 template <typename Tp = unsigned> unsigned umul24(Tp x, Tp y) {
108  return __imf_umul24(x, y);
109 }
110 
111 template <typename Tp = int> int mulhi(Tp x, Tp y) { return __imf_mulhi(x, y); }
112 
113 template <typename Tp = unsigned> unsigned umulhi(Tp x, Tp y) {
114  return __imf_umulhi(x, y);
115 }
116 
117 template <typename Tp = long long> long long mul64hi(Tp x, Tp y) {
118  return __imf_mul64hi(x, y);
119 }
120 
121 template <typename Tp = unsigned long long>
122 unsigned long long umul64hi(Tp x, Tp y) {
123  return __imf_umul64hi(x, y);
124 }
125 
126 template <typename Tp = unsigned> int popc(Tp x) { return __imf_popc(x); }
127 
128 template <typename Tp = unsigned long long> int popcll(Tp x) {
129  return __imf_popcll(x);
130 }
131 
132 template <typename Tp1 = int, typename Tp2 = unsigned>
133 unsigned sad(Tp1 x, Tp1 y, Tp2 z) {
134  return __imf_sad(x, y, z);
135 }
136 
137 template <typename Tp = unsigned> unsigned usad(Tp x, Tp y, Tp z) {
138  return __imf_usad(x, y, z);
139 }
140 
141 template <typename Tp = unsigned> unsigned uhadd(Tp x, Tp y) {
142  return __imf_uhadd(x, y);
143 }
144 
145 } // namespace ext::intel::math
146 } // namespace _V1
147 } // namespace sycl
int __imf_mul24(int, int)
unsigned long long __imf_ullmin(unsigned long long x, unsigned long long y)
int __imf_clz(int)
int __imf_min(int x, int y)
long long __imf_llmax(long long x, long long y)
unsigned long long __imf_umul64hi(unsigned long long, unsigned long long)
unsigned long long __imf_brevll(unsigned long long)
unsigned __imf_umin(unsigned x, unsigned y)
unsigned __imf_usad(unsigned, unsigned, unsigned)
int __imf_ffsll(long long)
unsigned __imf_umul24(unsigned, unsigned)
long long __imf_llmin(long long x, long long y)
int __imf_mulhi(int, int)
unsigned __imf_uhadd(unsigned, unsigned)
long long __imf_mul64hi(long long, long long)
unsigned long long __imf_ullmax(unsigned long long x, unsigned long long y)
unsigned __imf_brev(unsigned)
unsigned __imf_urhadd(unsigned, unsigned)
int __imf_popc(unsigned)
int __imf_ffs(int)
unsigned __imf_umax(unsigned x, unsigned y)
unsigned __imf_umulhi(unsigned, unsigned)
int __imf_hadd(int, int)
int __imf_popcll(unsigned long long)
int __imf_max(int x, int y)
unsigned __imf_byte_perm(unsigned, unsigned, unsigned)
int __imf_clzll(long long)
unsigned __imf_sad(int, int, unsigned)
int __imf_rhadd(int, int)
unsigned long long ullmin(Tp x, Tp y)
unsigned usad(Tp x, Tp y, Tp z)
unsigned long long ullmax(Tp x, Tp y)
unsigned long long umul64hi(Tp x, Tp y)
unsigned byte_perm(Tp x, Tp y, Tp z)
long long mul64hi(Tp x, Tp y)
unsigned sad(Tp1 x, Tp1 y, Tp2 z)
long long llmin(Tp x, Tp y)
unsigned long long brevll(Tp x)
sycl::half hadd(sycl::half x, sycl::half y)
long long llmax(Tp x, Tp y)
auto auto autodecltype(x) z
autodecltype(x) x
Definition: access.hpp:18