ISLESS(3clc)

📦
version 1.0~svn33624 · 3 versions
, in ubuntu jammy, ubuntu noble

💖 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 0 if the specified relation is false and a 1 if the specified relation is true for scalar argument types.
  • these functions shall return a 0 if 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 © 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 🧚

  1. OpenCL Specification page 264, section 6.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