1/*========================== begin_copyright_notice ============================ 2 3Copyright (C) 2017-2021 Intel Corporation 4 5SPDX-License-Identifier: MIT 6 7============================= end_copyright_notice ===========================*/ 8 9#include "../include/BiF_Definitions.cl" 10#include "../../Headers/spirv.h" 11 12 13INLINE 14short SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_upsample, _i8_i8, )( char hi, 15 uchar lo ) 16{ 17 return ((short)(hi) << (short)8) | (short)(lo); 18} 19 20INLINE 21short2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_upsample, _v2i8_v2i8, )( char2 hi, 22 uchar2 lo ) 23{ 24 short2 temp; 25 temp.s0 = SPIRV_OCL_BUILTIN(s_upsample, _i8_i8, )(hi.s0, lo.s0); 26 temp.s1 = SPIRV_OCL_BUILTIN(s_upsample, _i8_i8, )(hi.s1, lo.s1); 27 return temp; 28} 29 30INLINE 31short3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_upsample, _v3i8_v3i8, )( char3 hi, 32 uchar3 lo ) 33{ 34 short3 temp; 35 temp.s0 = SPIRV_OCL_BUILTIN(s_upsample, _i8_i8, )(hi.s0, lo.s0); 36 temp.s1 = SPIRV_OCL_BUILTIN(s_upsample, _i8_i8, )(hi.s1, lo.s1); 37 temp.s2 = SPIRV_OCL_BUILTIN(s_upsample, _i8_i8, )(hi.s2, lo.s2); 38 return temp; 39} 40 41INLINE 42short4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_upsample, _v4i8_v4i8, )( char4 hi, 43 uchar4 lo ) 44{ 45 short4 temp; 46 temp.s0 = SPIRV_OCL_BUILTIN(s_upsample, _i8_i8, )(hi.s0, lo.s0); 47 temp.s1 = SPIRV_OCL_BUILTIN(s_upsample, _i8_i8, )(hi.s1, lo.s1); 48 temp.s2 = SPIRV_OCL_BUILTIN(s_upsample, _i8_i8, )(hi.s2, lo.s2); 49 temp.s3 = SPIRV_OCL_BUILTIN(s_upsample, _i8_i8, )(hi.s3, lo.s3); 50 return temp; 51} 52 53INLINE 54short8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_upsample, _v8i8_v8i8, )( char8 hi, 55 uchar8 lo ) 56{ 57 short8 temp; 58 temp.s0 = SPIRV_OCL_BUILTIN(s_upsample, _i8_i8, )(hi.s0, lo.s0); 59 temp.s1 = SPIRV_OCL_BUILTIN(s_upsample, _i8_i8, )(hi.s1, lo.s1); 60 temp.s2 = SPIRV_OCL_BUILTIN(s_upsample, _i8_i8, )(hi.s2, lo.s2); 61 temp.s3 = SPIRV_OCL_BUILTIN(s_upsample, _i8_i8, )(hi.s3, lo.s3); 62 temp.s4 = SPIRV_OCL_BUILTIN(s_upsample, _i8_i8, )(hi.s4, lo.s4); 63 temp.s5 = SPIRV_OCL_BUILTIN(s_upsample, _i8_i8, )(hi.s5, lo.s5); 64 temp.s6 = SPIRV_OCL_BUILTIN(s_upsample, _i8_i8, )(hi.s6, lo.s6); 65 temp.s7 = SPIRV_OCL_BUILTIN(s_upsample, _i8_i8, )(hi.s7, lo.s7); 66 return temp; 67} 68 69INLINE 70short16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_upsample, _v16i8_v16i8, )( char16 hi, 71 uchar16 lo ) 72{ 73 short16 temp; 74 temp.s0 = SPIRV_OCL_BUILTIN(s_upsample, _i8_i8, )(hi.s0, lo.s0); 75 temp.s1 = SPIRV_OCL_BUILTIN(s_upsample, _i8_i8, )(hi.s1, lo.s1); 76 temp.s2 = SPIRV_OCL_BUILTIN(s_upsample, _i8_i8, )(hi.s2, lo.s2); 77 temp.s3 = SPIRV_OCL_BUILTIN(s_upsample, _i8_i8, )(hi.s3, lo.s3); 78 temp.s4 = SPIRV_OCL_BUILTIN(s_upsample, _i8_i8, )(hi.s4, lo.s4); 79 temp.s5 = SPIRV_OCL_BUILTIN(s_upsample, _i8_i8, )(hi.s5, lo.s5); 80 temp.s6 = SPIRV_OCL_BUILTIN(s_upsample, _i8_i8, )(hi.s6, lo.s6); 81 temp.s7 = SPIRV_OCL_BUILTIN(s_upsample, _i8_i8, )(hi.s7, lo.s7); 82 temp.s8 = SPIRV_OCL_BUILTIN(s_upsample, _i8_i8, )(hi.s8, lo.s8); 83 temp.s9 = SPIRV_OCL_BUILTIN(s_upsample, _i8_i8, )(hi.s9, lo.s9); 84 temp.sa = SPIRV_OCL_BUILTIN(s_upsample, _i8_i8, )(hi.sa, lo.sa); 85 temp.sb = SPIRV_OCL_BUILTIN(s_upsample, _i8_i8, )(hi.sb, lo.sb); 86 temp.sc = SPIRV_OCL_BUILTIN(s_upsample, _i8_i8, )(hi.sc, lo.sc); 87 temp.sd = SPIRV_OCL_BUILTIN(s_upsample, _i8_i8, )(hi.sd, lo.sd); 88 temp.se = SPIRV_OCL_BUILTIN(s_upsample, _i8_i8, )(hi.se, lo.se); 89 temp.sf = SPIRV_OCL_BUILTIN(s_upsample, _i8_i8, )(hi.sf, lo.sf); 90 return temp; 91} 92 93INLINE 94ushort SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_upsample, _i8_i8, )( uchar hi, 95 uchar lo ) 96{ 97 return ((ushort)(hi) << (ushort)8) | (ushort)(lo); 98} 99 100INLINE 101ushort2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_upsample, _v2i8_v2i8, )( uchar2 hi, 102 uchar2 lo ) 103{ 104 ushort2 temp; 105 temp.s0 = SPIRV_OCL_BUILTIN(u_upsample, _i8_i8, )(hi.s0, lo.s0); 106 temp.s1 = SPIRV_OCL_BUILTIN(u_upsample, _i8_i8, )(hi.s1, lo.s1); 107 return temp; 108} 109 110INLINE 111ushort3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_upsample, _v3i8_v3i8, )( uchar3 hi, 112 uchar3 lo ) 113{ 114 ushort3 temp; 115 temp.s0 = SPIRV_OCL_BUILTIN(u_upsample, _i8_i8, )(hi.s0, lo.s0); 116 temp.s1 = SPIRV_OCL_BUILTIN(u_upsample, _i8_i8, )(hi.s1, lo.s1); 117 temp.s2 = SPIRV_OCL_BUILTIN(u_upsample, _i8_i8, )(hi.s2, lo.s2); 118 return temp; 119} 120 121INLINE 122ushort4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_upsample, _v4i8_v4i8, )( uchar4 hi, 123 uchar4 lo ) 124{ 125 ushort4 temp; 126 temp.s0 = SPIRV_OCL_BUILTIN(u_upsample, _i8_i8, )(hi.s0, lo.s0); 127 temp.s1 = SPIRV_OCL_BUILTIN(u_upsample, _i8_i8, )(hi.s1, lo.s1); 128 temp.s2 = SPIRV_OCL_BUILTIN(u_upsample, _i8_i8, )(hi.s2, lo.s2); 129 temp.s3 = SPIRV_OCL_BUILTIN(u_upsample, _i8_i8, )(hi.s3, lo.s3); 130 return temp; 131} 132 133INLINE 134ushort8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_upsample, _v8i8_v8i8, )( uchar8 hi, 135 uchar8 lo ) 136{ 137 ushort8 temp; 138 temp.s0 = SPIRV_OCL_BUILTIN(u_upsample, _i8_i8, )(hi.s0, lo.s0); 139 temp.s1 = SPIRV_OCL_BUILTIN(u_upsample, _i8_i8, )(hi.s1, lo.s1); 140 temp.s2 = SPIRV_OCL_BUILTIN(u_upsample, _i8_i8, )(hi.s2, lo.s2); 141 temp.s3 = SPIRV_OCL_BUILTIN(u_upsample, _i8_i8, )(hi.s3, lo.s3); 142 temp.s4 = SPIRV_OCL_BUILTIN(u_upsample, _i8_i8, )(hi.s4, lo.s4); 143 temp.s5 = SPIRV_OCL_BUILTIN(u_upsample, _i8_i8, )(hi.s5, lo.s5); 144 temp.s6 = SPIRV_OCL_BUILTIN(u_upsample, _i8_i8, )(hi.s6, lo.s6); 145 temp.s7 = SPIRV_OCL_BUILTIN(u_upsample, _i8_i8, )(hi.s7, lo.s7); 146 return temp; 147} 148 149INLINE 150ushort16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_upsample, _v16i8_v16i8, )( uchar16 hi, 151 uchar16 lo ) 152{ 153 ushort16 temp; 154 temp.s0 = SPIRV_OCL_BUILTIN(u_upsample, _i8_i8, )(hi.s0, lo.s0); 155 temp.s1 = SPIRV_OCL_BUILTIN(u_upsample, _i8_i8, )(hi.s1, lo.s1); 156 temp.s2 = SPIRV_OCL_BUILTIN(u_upsample, _i8_i8, )(hi.s2, lo.s2); 157 temp.s3 = SPIRV_OCL_BUILTIN(u_upsample, _i8_i8, )(hi.s3, lo.s3); 158 temp.s4 = SPIRV_OCL_BUILTIN(u_upsample, _i8_i8, )(hi.s4, lo.s4); 159 temp.s5 = SPIRV_OCL_BUILTIN(u_upsample, _i8_i8, )(hi.s5, lo.s5); 160 temp.s6 = SPIRV_OCL_BUILTIN(u_upsample, _i8_i8, )(hi.s6, lo.s6); 161 temp.s7 = SPIRV_OCL_BUILTIN(u_upsample, _i8_i8, )(hi.s7, lo.s7); 162 temp.s8 = SPIRV_OCL_BUILTIN(u_upsample, _i8_i8, )(hi.s8, lo.s8); 163 temp.s9 = SPIRV_OCL_BUILTIN(u_upsample, _i8_i8, )(hi.s9, lo.s9); 164 temp.sa = SPIRV_OCL_BUILTIN(u_upsample, _i8_i8, )(hi.sa, lo.sa); 165 temp.sb = SPIRV_OCL_BUILTIN(u_upsample, _i8_i8, )(hi.sb, lo.sb); 166 temp.sc = SPIRV_OCL_BUILTIN(u_upsample, _i8_i8, )(hi.sc, lo.sc); 167 temp.sd = SPIRV_OCL_BUILTIN(u_upsample, _i8_i8, )(hi.sd, lo.sd); 168 temp.se = SPIRV_OCL_BUILTIN(u_upsample, _i8_i8, )(hi.se, lo.se); 169 temp.sf = SPIRV_OCL_BUILTIN(u_upsample, _i8_i8, )(hi.sf, lo.sf); 170 return temp; 171} 172 173INLINE 174int SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_upsample, _i16_i16, )( short hi, 175 ushort lo ) 176{ 177 return ((int)(hi) << (int)16) | (int)(lo); 178} 179 180INLINE 181int2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_upsample, _v2i16_v2i16, )( short2 hi, 182 ushort2 lo ) 183{ 184 int2 temp; 185 temp.s0 = SPIRV_OCL_BUILTIN(s_upsample, _i16_i16, )(hi.s0, lo.s0); 186 temp.s1 = SPIRV_OCL_BUILTIN(s_upsample, _i16_i16, )(hi.s1, lo.s1); 187 return temp; 188} 189 190INLINE 191int3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_upsample, _v3i16_v3i16, )( short3 hi, 192 ushort3 lo ) 193{ 194 int3 temp; 195 temp.s0 = SPIRV_OCL_BUILTIN(s_upsample, _i16_i16, )(hi.s0, lo.s0); 196 temp.s1 = SPIRV_OCL_BUILTIN(s_upsample, _i16_i16, )(hi.s1, lo.s1); 197 temp.s2 = SPIRV_OCL_BUILTIN(s_upsample, _i16_i16, )(hi.s2, lo.s2); 198 return temp; 199} 200 201INLINE 202int4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_upsample, _v4i16_v4i16, )( short4 hi, 203 ushort4 lo ) 204{ 205 int4 temp; 206 temp.s0 = SPIRV_OCL_BUILTIN(s_upsample, _i16_i16, )(hi.s0, lo.s0); 207 temp.s1 = SPIRV_OCL_BUILTIN(s_upsample, _i16_i16, )(hi.s1, lo.s1); 208 temp.s2 = SPIRV_OCL_BUILTIN(s_upsample, _i16_i16, )(hi.s2, lo.s2); 209 temp.s3 = SPIRV_OCL_BUILTIN(s_upsample, _i16_i16, )(hi.s3, lo.s3); 210 return temp; 211} 212 213INLINE 214int8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_upsample, _v8i16_v8i16, )( short8 hi, 215 ushort8 lo ) 216{ 217 int8 temp; 218 temp.s0 = SPIRV_OCL_BUILTIN(s_upsample, _i16_i16, )(hi.s0, lo.s0); 219 temp.s1 = SPIRV_OCL_BUILTIN(s_upsample, _i16_i16, )(hi.s1, lo.s1); 220 temp.s2 = SPIRV_OCL_BUILTIN(s_upsample, _i16_i16, )(hi.s2, lo.s2); 221 temp.s3 = SPIRV_OCL_BUILTIN(s_upsample, _i16_i16, )(hi.s3, lo.s3); 222 temp.s4 = SPIRV_OCL_BUILTIN(s_upsample, _i16_i16, )(hi.s4, lo.s4); 223 temp.s5 = SPIRV_OCL_BUILTIN(s_upsample, _i16_i16, )(hi.s5, lo.s5); 224 temp.s6 = SPIRV_OCL_BUILTIN(s_upsample, _i16_i16, )(hi.s6, lo.s6); 225 temp.s7 = SPIRV_OCL_BUILTIN(s_upsample, _i16_i16, )(hi.s7, lo.s7); 226 return temp; 227} 228 229INLINE 230int16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_upsample, _v16i16_v16i16, )( short16 hi, 231 ushort16 lo ) 232{ 233 int16 temp; 234 temp.s0 = SPIRV_OCL_BUILTIN(s_upsample, _i16_i16, )(hi.s0, lo.s0); 235 temp.s1 = SPIRV_OCL_BUILTIN(s_upsample, _i16_i16, )(hi.s1, lo.s1); 236 temp.s2 = SPIRV_OCL_BUILTIN(s_upsample, _i16_i16, )(hi.s2, lo.s2); 237 temp.s3 = SPIRV_OCL_BUILTIN(s_upsample, _i16_i16, )(hi.s3, lo.s3); 238 temp.s4 = SPIRV_OCL_BUILTIN(s_upsample, _i16_i16, )(hi.s4, lo.s4); 239 temp.s5 = SPIRV_OCL_BUILTIN(s_upsample, _i16_i16, )(hi.s5, lo.s5); 240 temp.s6 = SPIRV_OCL_BUILTIN(s_upsample, _i16_i16, )(hi.s6, lo.s6); 241 temp.s7 = SPIRV_OCL_BUILTIN(s_upsample, _i16_i16, )(hi.s7, lo.s7); 242 temp.s8 = SPIRV_OCL_BUILTIN(s_upsample, _i16_i16, )(hi.s8, lo.s8); 243 temp.s9 = SPIRV_OCL_BUILTIN(s_upsample, _i16_i16, )(hi.s9, lo.s9); 244 temp.sa = SPIRV_OCL_BUILTIN(s_upsample, _i16_i16, )(hi.sa, lo.sa); 245 temp.sb = SPIRV_OCL_BUILTIN(s_upsample, _i16_i16, )(hi.sb, lo.sb); 246 temp.sc = SPIRV_OCL_BUILTIN(s_upsample, _i16_i16, )(hi.sc, lo.sc); 247 temp.sd = SPIRV_OCL_BUILTIN(s_upsample, _i16_i16, )(hi.sd, lo.sd); 248 temp.se = SPIRV_OCL_BUILTIN(s_upsample, _i16_i16, )(hi.se, lo.se); 249 temp.sf = SPIRV_OCL_BUILTIN(s_upsample, _i16_i16, )(hi.sf, lo.sf); 250 return temp; 251} 252 253INLINE 254uint SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_upsample, _i16_i16, )( ushort hi, 255 ushort lo ) 256{ 257 return ((uint)(hi) << (uint)16) | (uint)(lo); 258} 259 260INLINE 261uint2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_upsample, _v2i16_v2i16, )( ushort2 hi, 262 ushort2 lo ) 263{ 264 uint2 temp; 265 temp.s0 = SPIRV_OCL_BUILTIN(u_upsample, _i16_i16, )(hi.s0, lo.s0); 266 temp.s1 = SPIRV_OCL_BUILTIN(u_upsample, _i16_i16, )(hi.s1, lo.s1); 267 return temp; 268} 269 270INLINE 271uint3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_upsample, _v3i16_v3i16, )( ushort3 hi, 272 ushort3 lo ) 273{ 274 uint3 temp; 275 temp.s0 = SPIRV_OCL_BUILTIN(u_upsample, _i16_i16, )(hi.s0, lo.s0); 276 temp.s1 = SPIRV_OCL_BUILTIN(u_upsample, _i16_i16, )(hi.s1, lo.s1); 277 temp.s2 = SPIRV_OCL_BUILTIN(u_upsample, _i16_i16, )(hi.s2, lo.s2); 278 return temp; 279} 280 281INLINE 282uint4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_upsample, _v4i16_v4i16, )( ushort4 hi, 283 ushort4 lo ) 284{ 285 uint4 temp; 286 temp.s0 = SPIRV_OCL_BUILTIN(u_upsample, _i16_i16, )(hi.s0, lo.s0); 287 temp.s1 = SPIRV_OCL_BUILTIN(u_upsample, _i16_i16, )(hi.s1, lo.s1); 288 temp.s2 = SPIRV_OCL_BUILTIN(u_upsample, _i16_i16, )(hi.s2, lo.s2); 289 temp.s3 = SPIRV_OCL_BUILTIN(u_upsample, _i16_i16, )(hi.s3, lo.s3); 290 return temp; 291} 292 293INLINE 294uint8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_upsample, _v8i16_v8i16, )( ushort8 hi, 295 ushort8 lo ) 296{ 297 uint8 temp; 298 temp.s0 = SPIRV_OCL_BUILTIN(u_upsample, _i16_i16, )(hi.s0, lo.s0); 299 temp.s1 = SPIRV_OCL_BUILTIN(u_upsample, _i16_i16, )(hi.s1, lo.s1); 300 temp.s2 = SPIRV_OCL_BUILTIN(u_upsample, _i16_i16, )(hi.s2, lo.s2); 301 temp.s3 = SPIRV_OCL_BUILTIN(u_upsample, _i16_i16, )(hi.s3, lo.s3); 302 temp.s4 = SPIRV_OCL_BUILTIN(u_upsample, _i16_i16, )(hi.s4, lo.s4); 303 temp.s5 = SPIRV_OCL_BUILTIN(u_upsample, _i16_i16, )(hi.s5, lo.s5); 304 temp.s6 = SPIRV_OCL_BUILTIN(u_upsample, _i16_i16, )(hi.s6, lo.s6); 305 temp.s7 = SPIRV_OCL_BUILTIN(u_upsample, _i16_i16, )(hi.s7, lo.s7); 306 return temp; 307} 308 309INLINE 310uint16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_upsample, _v16i16_v16i16, )( ushort16 hi, 311 ushort16 lo ) 312{ 313 uint16 temp; 314 temp.s0 = SPIRV_OCL_BUILTIN(u_upsample, _i16_i16, )(hi.s0, lo.s0); 315 temp.s1 = SPIRV_OCL_BUILTIN(u_upsample, _i16_i16, )(hi.s1, lo.s1); 316 temp.s2 = SPIRV_OCL_BUILTIN(u_upsample, _i16_i16, )(hi.s2, lo.s2); 317 temp.s3 = SPIRV_OCL_BUILTIN(u_upsample, _i16_i16, )(hi.s3, lo.s3); 318 temp.s4 = SPIRV_OCL_BUILTIN(u_upsample, _i16_i16, )(hi.s4, lo.s4); 319 temp.s5 = SPIRV_OCL_BUILTIN(u_upsample, _i16_i16, )(hi.s5, lo.s5); 320 temp.s6 = SPIRV_OCL_BUILTIN(u_upsample, _i16_i16, )(hi.s6, lo.s6); 321 temp.s7 = SPIRV_OCL_BUILTIN(u_upsample, _i16_i16, )(hi.s7, lo.s7); 322 temp.s8 = SPIRV_OCL_BUILTIN(u_upsample, _i16_i16, )(hi.s8, lo.s8); 323 temp.s9 = SPIRV_OCL_BUILTIN(u_upsample, _i16_i16, )(hi.s9, lo.s9); 324 temp.sa = SPIRV_OCL_BUILTIN(u_upsample, _i16_i16, )(hi.sa, lo.sa); 325 temp.sb = SPIRV_OCL_BUILTIN(u_upsample, _i16_i16, )(hi.sb, lo.sb); 326 temp.sc = SPIRV_OCL_BUILTIN(u_upsample, _i16_i16, )(hi.sc, lo.sc); 327 temp.sd = SPIRV_OCL_BUILTIN(u_upsample, _i16_i16, )(hi.sd, lo.sd); 328 temp.se = SPIRV_OCL_BUILTIN(u_upsample, _i16_i16, )(hi.se, lo.se); 329 temp.sf = SPIRV_OCL_BUILTIN(u_upsample, _i16_i16, )(hi.sf, lo.sf); 330 return temp; 331} 332 333INLINE 334long SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_upsample, _i32_i32, )( int hi, 335 uint lo ) 336{ 337 return ((long)(hi) << (long)32) | (long)(lo); 338} 339 340INLINE 341long2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_upsample, _v2i32_v2i32, )( int2 hi, 342 uint2 lo ) 343{ 344 long2 temp; 345 temp.s0 = SPIRV_OCL_BUILTIN(s_upsample, _i32_i32, )(hi.s0, lo.s0); 346 temp.s1 = SPIRV_OCL_BUILTIN(s_upsample, _i32_i32, )(hi.s1, lo.s1); 347 return temp; 348} 349 350INLINE 351long3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_upsample, _v3i32_v3i32, )( int3 hi, 352 uint3 lo ) 353{ 354 long3 temp; 355 temp.s0 = SPIRV_OCL_BUILTIN(s_upsample, _i32_i32, )(hi.s0, lo.s0); 356 temp.s1 = SPIRV_OCL_BUILTIN(s_upsample, _i32_i32, )(hi.s1, lo.s1); 357 temp.s2 = SPIRV_OCL_BUILTIN(s_upsample, _i32_i32, )(hi.s2, lo.s2); 358 return temp; 359} 360 361INLINE 362long4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_upsample, _v4i32_v4i32, )( int4 hi, 363 uint4 lo ) 364{ 365 long4 temp; 366 temp.s0 = SPIRV_OCL_BUILTIN(s_upsample, _i32_i32, )(hi.s0, lo.s0); 367 temp.s1 = SPIRV_OCL_BUILTIN(s_upsample, _i32_i32, )(hi.s1, lo.s1); 368 temp.s2 = SPIRV_OCL_BUILTIN(s_upsample, _i32_i32, )(hi.s2, lo.s2); 369 temp.s3 = SPIRV_OCL_BUILTIN(s_upsample, _i32_i32, )(hi.s3, lo.s3); 370 return temp; 371} 372 373INLINE 374long8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_upsample, _v8i32_v8i32, )( int8 hi, 375 uint8 lo ) 376{ 377 long8 temp; 378 temp.s0 = SPIRV_OCL_BUILTIN(s_upsample, _i32_i32, )(hi.s0, lo.s0); 379 temp.s1 = SPIRV_OCL_BUILTIN(s_upsample, _i32_i32, )(hi.s1, lo.s1); 380 temp.s2 = SPIRV_OCL_BUILTIN(s_upsample, _i32_i32, )(hi.s2, lo.s2); 381 temp.s3 = SPIRV_OCL_BUILTIN(s_upsample, _i32_i32, )(hi.s3, lo.s3); 382 temp.s4 = SPIRV_OCL_BUILTIN(s_upsample, _i32_i32, )(hi.s4, lo.s4); 383 temp.s5 = SPIRV_OCL_BUILTIN(s_upsample, _i32_i32, )(hi.s5, lo.s5); 384 temp.s6 = SPIRV_OCL_BUILTIN(s_upsample, _i32_i32, )(hi.s6, lo.s6); 385 temp.s7 = SPIRV_OCL_BUILTIN(s_upsample, _i32_i32, )(hi.s7, lo.s7); 386 return temp; 387} 388 389INLINE 390long16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(s_upsample, _v16i32_v16i32, )( int16 hi, 391 uint16 lo ) 392{ 393 long16 temp; 394 temp.s0 = SPIRV_OCL_BUILTIN(s_upsample, _i32_i32, )(hi.s0, lo.s0); 395 temp.s1 = SPIRV_OCL_BUILTIN(s_upsample, _i32_i32, )(hi.s1, lo.s1); 396 temp.s2 = SPIRV_OCL_BUILTIN(s_upsample, _i32_i32, )(hi.s2, lo.s2); 397 temp.s3 = SPIRV_OCL_BUILTIN(s_upsample, _i32_i32, )(hi.s3, lo.s3); 398 temp.s4 = SPIRV_OCL_BUILTIN(s_upsample, _i32_i32, )(hi.s4, lo.s4); 399 temp.s5 = SPIRV_OCL_BUILTIN(s_upsample, _i32_i32, )(hi.s5, lo.s5); 400 temp.s6 = SPIRV_OCL_BUILTIN(s_upsample, _i32_i32, )(hi.s6, lo.s6); 401 temp.s7 = SPIRV_OCL_BUILTIN(s_upsample, _i32_i32, )(hi.s7, lo.s7); 402 temp.s8 = SPIRV_OCL_BUILTIN(s_upsample, _i32_i32, )(hi.s8, lo.s8); 403 temp.s9 = SPIRV_OCL_BUILTIN(s_upsample, _i32_i32, )(hi.s9, lo.s9); 404 temp.sa = SPIRV_OCL_BUILTIN(s_upsample, _i32_i32, )(hi.sa, lo.sa); 405 temp.sb = SPIRV_OCL_BUILTIN(s_upsample, _i32_i32, )(hi.sb, lo.sb); 406 temp.sc = SPIRV_OCL_BUILTIN(s_upsample, _i32_i32, )(hi.sc, lo.sc); 407 temp.sd = SPIRV_OCL_BUILTIN(s_upsample, _i32_i32, )(hi.sd, lo.sd); 408 temp.se = SPIRV_OCL_BUILTIN(s_upsample, _i32_i32, )(hi.se, lo.se); 409 temp.sf = SPIRV_OCL_BUILTIN(s_upsample, _i32_i32, )(hi.sf, lo.sf); 410 return temp; 411} 412 413INLINE 414ulong SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_upsample, _i32_i32, )( uint hi, 415 uint lo ) 416{ 417 return ((ulong)(hi) << (ulong)32) | (ulong)(lo); 418} 419 420INLINE 421ulong2 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_upsample, _v2i32_v2i32, )( uint2 hi, 422 uint2 lo ) 423{ 424 ulong2 temp; 425 temp.s0 = SPIRV_OCL_BUILTIN(u_upsample, _i32_i32, )(hi.s0, lo.s0); 426 temp.s1 = SPIRV_OCL_BUILTIN(u_upsample, _i32_i32, )(hi.s1, lo.s1); 427 return temp; 428} 429 430INLINE 431ulong3 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_upsample, _v3i32_v3i32, )( uint3 hi, 432 uint3 lo ) 433{ 434 ulong3 temp; 435 temp.s0 = SPIRV_OCL_BUILTIN(u_upsample, _i32_i32, )(hi.s0, lo.s0); 436 temp.s1 = SPIRV_OCL_BUILTIN(u_upsample, _i32_i32, )(hi.s1, lo.s1); 437 temp.s2 = SPIRV_OCL_BUILTIN(u_upsample, _i32_i32, )(hi.s2, lo.s2); 438 return temp; 439} 440 441INLINE 442ulong4 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_upsample, _v4i32_v4i32, )( uint4 hi, 443 uint4 lo ) 444{ 445 ulong4 temp; 446 temp.s0 = SPIRV_OCL_BUILTIN(u_upsample, _i32_i32, )(hi.s0, lo.s0); 447 temp.s1 = SPIRV_OCL_BUILTIN(u_upsample, _i32_i32, )(hi.s1, lo.s1); 448 temp.s2 = SPIRV_OCL_BUILTIN(u_upsample, _i32_i32, )(hi.s2, lo.s2); 449 temp.s3 = SPIRV_OCL_BUILTIN(u_upsample, _i32_i32, )(hi.s3, lo.s3); 450 return temp; 451} 452 453INLINE 454ulong8 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_upsample, _v8i32_v8i32, )( uint8 hi, 455 uint8 lo ) 456{ 457 ulong8 temp; 458 temp.s0 = SPIRV_OCL_BUILTIN(u_upsample, _i32_i32, )(hi.s0, lo.s0); 459 temp.s1 = SPIRV_OCL_BUILTIN(u_upsample, _i32_i32, )(hi.s1, lo.s1); 460 temp.s2 = SPIRV_OCL_BUILTIN(u_upsample, _i32_i32, )(hi.s2, lo.s2); 461 temp.s3 = SPIRV_OCL_BUILTIN(u_upsample, _i32_i32, )(hi.s3, lo.s3); 462 temp.s4 = SPIRV_OCL_BUILTIN(u_upsample, _i32_i32, )(hi.s4, lo.s4); 463 temp.s5 = SPIRV_OCL_BUILTIN(u_upsample, _i32_i32, )(hi.s5, lo.s5); 464 temp.s6 = SPIRV_OCL_BUILTIN(u_upsample, _i32_i32, )(hi.s6, lo.s6); 465 temp.s7 = SPIRV_OCL_BUILTIN(u_upsample, _i32_i32, )(hi.s7, lo.s7); 466 return temp; 467} 468 469INLINE 470ulong16 SPIRV_OVERLOADABLE SPIRV_OCL_BUILTIN(u_upsample, _v16i32_v16i32, )( uint16 hi, 471 uint16 lo ) 472{ 473 ulong16 temp; 474 temp.s0 = SPIRV_OCL_BUILTIN(u_upsample, _i32_i32, )(hi.s0, lo.s0); 475 temp.s1 = SPIRV_OCL_BUILTIN(u_upsample, _i32_i32, )(hi.s1, lo.s1); 476 temp.s2 = SPIRV_OCL_BUILTIN(u_upsample, _i32_i32, )(hi.s2, lo.s2); 477 temp.s3 = SPIRV_OCL_BUILTIN(u_upsample, _i32_i32, )(hi.s3, lo.s3); 478 temp.s4 = SPIRV_OCL_BUILTIN(u_upsample, _i32_i32, )(hi.s4, lo.s4); 479 temp.s5 = SPIRV_OCL_BUILTIN(u_upsample, _i32_i32, )(hi.s5, lo.s5); 480 temp.s6 = SPIRV_OCL_BUILTIN(u_upsample, _i32_i32, )(hi.s6, lo.s6); 481 temp.s7 = SPIRV_OCL_BUILTIN(u_upsample, _i32_i32, )(hi.s7, lo.s7); 482 temp.s8 = SPIRV_OCL_BUILTIN(u_upsample, _i32_i32, )(hi.s8, lo.s8); 483 temp.s9 = SPIRV_OCL_BUILTIN(u_upsample, _i32_i32, )(hi.s9, lo.s9); 484 temp.sa = SPIRV_OCL_BUILTIN(u_upsample, _i32_i32, )(hi.sa, lo.sa); 485 temp.sb = SPIRV_OCL_BUILTIN(u_upsample, _i32_i32, )(hi.sb, lo.sb); 486 temp.sc = SPIRV_OCL_BUILTIN(u_upsample, _i32_i32, )(hi.sc, lo.sc); 487 temp.sd = SPIRV_OCL_BUILTIN(u_upsample, _i32_i32, )(hi.sd, lo.sd); 488 temp.se = SPIRV_OCL_BUILTIN(u_upsample, _i32_i32, )(hi.se, lo.se); 489 temp.sf = SPIRV_OCL_BUILTIN(u_upsample, _i32_i32, )(hi.sf, lo.sf); 490 return temp; 491} 492 493