ISLESS(3clc)
💖 ISLESS — the 3clc girlies' guide 💖
okay so bestie, we're in the OpenCL Manual today and the star of the show is isless. sit down, grab a strawberry 🍓, we're doing relational functions.
✨ NAME ✨
isless — the compare of x < y. literally that's it, that's the whole job.
here's every single flavor of it, no cap:
int isless(float x, float y);
intn isless(floatn x, floatn y);
int isless(double x, double y);
longn isless(doublen x, doublen y);
int isless (half x, half y) // if half extension enabled
shortn isless (halfn x, halfn y) // if half extension enabled
🌸 DESCRIPTION 🌸
it returns the component-wise compare of x < y. component-wise. every single lane gets its own lil verdict. periodt.
🎀 NOTES 🎀
bestie this part is important, don't skip it
if an implementation extends this spec to support IEEE-754 flags or exceptions, then all built-in relational functions shall proceed without raising the invalid floating-point exception when one or more of the operands are NaNs. like, they're just built different. no dramatic alarms.
the built-in relational functions are extended with cl_khr_fp16(3clc) to include appropriate versions of functions that take half, and half{2|3|4|8|16} as arguments and return values. so yeah, half girlies get their moment too 💅
now the return values, because this is where people get got:
- the function returns a
0if the specified relation is false and a1if the specified relation is true for scalar argument types. - these functions shall return a
0if the specified relation is false and a- 1(i.e. all bits set) if the specified relation is true for vector argument types.
yes, vectors get -1 and not 1. that's not a typo, that's the whole vibe. all bits set, she's committed. 😭
and the NaN tea: the relational functions isequal, isgreater, isgreaterequal, isless, islessequal, and islessgreater always return 0 if either argument is not a number (NaN). meanwhile isnotequal returns 1 if one or both arguments are not a number (NaN) and the argument type is a scalar, and returns -1 if one or both arguments are not a number (NaN) and the argument type is a vector.
⭐ SPECIFICATION ⭐
OpenCL Specification[1] — go read it, it's giving main character energy.
🦋 SEE ALSO 🦋
👑 AUTHORS 👑
The Khronos Group
🌈 COPYRIGHT 🌈
Copyright © 2007-2011 The Khronos Group Inc.
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and/or associated documentation files (the "Materials"), to deal in the Materials without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Materials, and to permit persons to whom the Materials are furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Materials.
🧚 NOTES 🧚
OpenCL Specificationpage264, section6.12.6— Relational Functions
and that's the whole page, bestie!! 🫶 sign-off time: this iconic piece of documentation is brought to you by The Khronos Group, dated 01/14/2021, and filed under ISLESS(3clc). go forth and compare responsibly 💜✨
📦 where this page comes from
- ubuntu jammy: opencl-1.2-man-doc 1.0~svn33624-5 · other
- ubuntu noble: opencl-1.2-man-doc 1.0~svn33624-5 · other
- 💖 girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms