Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 0 additions & 31 deletions libclc/libspirv/lib/generic/relational/genbinrelational.inc

This file was deleted.

26 changes: 16 additions & 10 deletions libclc/libspirv/lib/generic/relational/isequal.cl
Original file line number Diff line number Diff line change
Expand Up @@ -6,15 +6,21 @@
//
//===----------------------------------------------------------------------===//

#include <libspirv/relational.h>
#include <libspirv/spirv.h>
#include "clc/clc_convert.h"
#include "clc/relational/clc_isequal.h"
#include "clc/relational/clc_isunordered.h"

#define _CLC_SPIRV_BUILTIN __spirv_FUnordEqual
#define _CLC_BUILTIN_IMPL(X, Y) ((__spirv_Unordered(X, Y)) || (X == Y))
#include "genbinrelational.inc"
#undef _CLC_SPIRV_BUILTIN
#undef _CLC_BUILTIN_IMPL
#define __CLC_FUNCTION __spirv_FOrdEqual
#define __CLC_IMPL_FUNCTION(x) __clc_isequal
#define __CLC_BODY "relational_binary_def.inc"
#include "clc/math/gentype.inc"

#define _CLC_SPIRV_BUILTIN __spirv_FOrdEqual
#define _CLC_BUILTIN_IMPL(X, Y) ((__spirv_Ordered(X, Y)) && (X == Y))
#include "genbinrelational.inc"
#undef __CLC_FUNCTION
#undef __CLC_IMPL_FUNCTION

#define __CLC_FUNCTION __spirv_FUnordEqual
#define __CLC_IMPL_FUNCTION(x) __CLC_REL_OP_BODY
#define __CLC_REL_OP_BODY(x, y) \
((__clc_isunordered(x, y)) || (__clc_isequal(x, y)))
#define __CLC_BODY "relational_binary_def.inc"
#include "clc/math/gentype.inc"
26 changes: 16 additions & 10 deletions libclc/libspirv/lib/generic/relational/isgreater.cl
Original file line number Diff line number Diff line change
Expand Up @@ -6,15 +6,21 @@
//
//===----------------------------------------------------------------------===//

#include <libspirv/relational.h>
#include <libspirv/spirv.h>
#include "clc/clc_convert.h"
#include "clc/relational/clc_isgreater.h"
#include "clc/relational/clc_isunordered.h"

#define _CLC_SPIRV_BUILTIN __spirv_FOrdGreaterThan
#define _CLC_BUILTIN_IMPL __builtin_isgreater
#include "genbinrelational.inc"
#undef _CLC_SPIRV_BUILTIN
#undef _CLC_BUILTIN_IMPL
#define __CLC_FUNCTION __spirv_FOrdGreaterThan
#define __CLC_IMPL_FUNCTION(x) __clc_isgreater
#define __CLC_BODY "relational_binary_def.inc"
#include "clc/math/gentype.inc"

#define _CLC_SPIRV_BUILTIN __spirv_FUnordGreaterThan
#define _CLC_BUILTIN_IMPL(X, Y) ((__spirv_Unordered(X, Y)) || (X > Y))
#include "genbinrelational.inc"
#undef __CLC_FUNCTION
#undef __CLC_IMPL_FUNCTION

#define __CLC_FUNCTION __spirv_FUnordGreaterThan
#define __CLC_IMPL_FUNCTION(x) __CLC_REL_OP_BODY
#define __CLC_REL_OP_BODY(x, y) \
((__clc_isunordered(x, y)) || (__clc_isgreater(x, y)))
#define __CLC_BODY "relational_binary_def.inc"
#include "clc/math/gentype.inc"
26 changes: 16 additions & 10 deletions libclc/libspirv/lib/generic/relational/isgreaterequal.cl
Original file line number Diff line number Diff line change
Expand Up @@ -6,15 +6,21 @@
//
//===----------------------------------------------------------------------===//

#include <libspirv/relational.h>
#include <libspirv/spirv.h>
#include "clc/clc_convert.h"
#include "clc/relational/clc_isgreaterequal.h"
#include "clc/relational/clc_isunordered.h"

#define _CLC_SPIRV_BUILTIN __spirv_FOrdGreaterThanEqual
#define _CLC_BUILTIN_IMPL __builtin_isgreaterequal
#include "genbinrelational.inc"
#undef _CLC_SPIRV_BUILTIN
#undef _CLC_BUILTIN_IMPL
#define __CLC_FUNCTION __spirv_FOrdGreaterThanEqual
#define __CLC_IMPL_FUNCTION(x) __clc_isgreaterequal
#define __CLC_BODY "relational_binary_def.inc"
#include "clc/math/gentype.inc"

#define _CLC_SPIRV_BUILTIN __spirv_FUnordGreaterThanEqual
#define _CLC_BUILTIN_IMPL(X, Y) ((__spirv_Unordered(X, Y)) || (X >= Y))
#include "genbinrelational.inc"
#undef __CLC_FUNCTION
#undef __CLC_IMPL_FUNCTION

#define __CLC_FUNCTION __spirv_FUnordGreaterThanEqual
#define __CLC_IMPL_FUNCTION(x) __CLC_REL_OP_BODY
#define __CLC_REL_OP_BODY(x, y) \
((__clc_isunordered(x, y)) || (__clc_isgreaterequal(x, y)))
#define __CLC_BODY "relational_binary_def.inc"
#include "clc/math/gentype.inc"
26 changes: 16 additions & 10 deletions libclc/libspirv/lib/generic/relational/isless.cl
Original file line number Diff line number Diff line change
Expand Up @@ -6,15 +6,21 @@
//
//===----------------------------------------------------------------------===//

#include <libspirv/relational.h>
#include <libspirv/spirv.h>
#include "clc/clc_convert.h"
#include "clc/relational/clc_isless.h"
#include "clc/relational/clc_isunordered.h"

#define _CLC_SPIRV_BUILTIN __spirv_FOrdLessThan
#define _CLC_BUILTIN_IMPL __builtin_isless
#include "genbinrelational.inc"
#undef _CLC_SPIRV_BUILTIN
#undef _CLC_BUILTIN_IMPL
#define __CLC_FUNCTION __spirv_FOrdLessThan
#define __CLC_IMPL_FUNCTION(x) __clc_isless
#define __CLC_BODY "relational_binary_def.inc"
#include "clc/math/gentype.inc"

#define _CLC_SPIRV_BUILTIN __spirv_FUnordLessThan
#define _CLC_BUILTIN_IMPL(X, Y) ((__spirv_Unordered(X, Y)) || (X < Y))
#include "genbinrelational.inc"
#undef __CLC_FUNCTION
#undef __CLC_IMPL_FUNCTION

#define __CLC_FUNCTION __spirv_FUnordLessThan
#define __CLC_IMPL_FUNCTION(x) __CLC_REL_OP_BODY
#define __CLC_REL_OP_BODY(x, y) \
((__clc_isunordered(x, y)) || (__clc_isless(x, y)))
#define __CLC_BODY "relational_binary_def.inc"
#include "clc/math/gentype.inc"
26 changes: 16 additions & 10 deletions libclc/libspirv/lib/generic/relational/islessequal.cl
Original file line number Diff line number Diff line change
Expand Up @@ -6,15 +6,21 @@
//
//===----------------------------------------------------------------------===//

#include <libspirv/relational.h>
#include <libspirv/spirv.h>
#include "clc/clc_convert.h"
#include "clc/relational/clc_islessequal.h"
#include "clc/relational/clc_isunordered.h"

#define _CLC_SPIRV_BUILTIN __spirv_FOrdLessThanEqual
#define _CLC_BUILTIN_IMPL __builtin_islessequal
#include "genbinrelational.inc"
#undef _CLC_SPIRV_BUILTIN
#undef _CLC_BUILTIN_IMPL
#define __CLC_FUNCTION __spirv_FOrdLessThanEqual
#define __CLC_IMPL_FUNCTION(x) __clc_islessequal
#define __CLC_BODY "relational_binary_def.inc"
#include "clc/math/gentype.inc"

#define _CLC_SPIRV_BUILTIN __spirv_FUnordLessThanEqual
#define _CLC_BUILTIN_IMPL(X, Y) ((__spirv_Unordered(X, Y)) || (X <= Y))
#include "genbinrelational.inc"
#undef __CLC_FUNCTION
#undef __CLC_IMPL_FUNCTION

#define __CLC_FUNCTION __spirv_FUnordLessThanEqual
#define __CLC_IMPL_FUNCTION(x) __CLC_REL_OP_BODY
#define __CLC_REL_OP_BODY(x, y) \
((__clc_isunordered(x, y)) || (__clc_islessequal(x, y)))
#define __CLC_BODY "relational_binary_def.inc"
#include "clc/math/gentype.inc"
12 changes: 7 additions & 5 deletions libclc/libspirv/lib/generic/relational/islessgreater.cl
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,11 @@
//
//===----------------------------------------------------------------------===//

#include <libspirv/relational.h>
#include <libspirv/spirv.h>
#include "clc/clc_convert.h"
#include "clc/relational/clc_islessgreater.h"
#include "libspirv/spirv.h"

#define _CLC_SPIRV_BUILTIN __spirv_LessOrGreater
#define _CLC_BUILTIN_IMPL __spirv_FOrdNotEqual
#include "genbinrelational.inc"
#define __CLC_FUNCTION __spirv_LessOrGreater
#define __CLC_IMPL_FUNCTION(x) __clc_islessgreater
#define __CLC_BODY "relational_binary_def.inc"
#include "clc/math/gentype.inc"
26 changes: 16 additions & 10 deletions libclc/libspirv/lib/generic/relational/isnotequal.cl
Original file line number Diff line number Diff line change
Expand Up @@ -6,15 +6,21 @@
//
//===----------------------------------------------------------------------===//

#include <libspirv/relational.h>
#include <libspirv/spirv.h>
#include "clc/clc_convert.h"
#include "clc/relational/clc_isnotequal.h"
#include "clc/relational/clc_isordered.h"

#define _CLC_SPIRV_BUILTIN __spirv_FUnordNotEqual
#define _CLC_BUILTIN_IMPL(X, Y) ((__spirv_Unordered(X, Y)) || (X != Y))
#include "genbinrelational.inc"
#undef _CLC_SPIRV_BUILTIN
#undef _CLC_BUILTIN_IMPL
#define __CLC_FUNCTION __spirv_FUnordNotEqual
#define __CLC_IMPL_FUNCTION(x) __clc_isnotequal
#define __CLC_BODY "relational_binary_def.inc"
#include "clc/math/gentype.inc"

#define _CLC_SPIRV_BUILTIN __spirv_FOrdNotEqual
#define _CLC_BUILTIN_IMPL(X, Y) ((__spirv_Ordered(X, Y)) && (X != Y))
#include "genbinrelational.inc"
#undef __CLC_FUNCTION
#undef __CLC_IMPL_FUNCTION

#define __CLC_FUNCTION __spirv_FOrdNotEqual
#define __CLC_IMPL_FUNCTION(x) __CLC_REL_OP_BODY
#define __CLC_REL_OP_BODY(x, y) \
((__clc_isordered(x, y)) && (__clc_isnotequal(x, y)))
#define __CLC_BODY "relational_binary_def.inc"
#include "clc/math/gentype.inc"
11 changes: 6 additions & 5 deletions libclc/libspirv/lib/generic/relational/isordered.cl
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,10 @@
//
//===----------------------------------------------------------------------===//

#include <libspirv/relational.h>
#include <libspirv/spirv.h>
#include "clc/clc_convert.h"
#include "clc/relational/clc_isordered.h"

#define _CLC_SPIRV_BUILTIN __spirv_Ordered
#define _CLC_BUILTIN_IMPL(X, Y) !__spirv_Unordered(x, y)
#include "genbinrelational.inc"
#define __CLC_FUNCTION __spirv_Ordered
#define __CLC_IMPL_FUNCTION(x) __clc_isordered
#define __CLC_BODY "relational_binary_def.inc"
#include "clc/math/gentype.inc"
11 changes: 6 additions & 5 deletions libclc/libspirv/lib/generic/relational/isunordered.cl
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,10 @@
//
//===----------------------------------------------------------------------===//

#include <libspirv/relational.h>
#include <libspirv/spirv.h>
#include "clc/clc_convert.h"
#include "clc/relational/clc_isunordered.h"

#define _CLC_SPIRV_BUILTIN __spirv_Unordered
#define _CLC_BUILTIN_IMPL __builtin_isunordered
#include "genbinrelational.inc"
#define __CLC_FUNCTION __spirv_Unordered
#define __CLC_IMPL_FUNCTION(x) __clc_isunordered
#define __CLC_BODY "relational_binary_def.inc"
#include "clc/math/gentype.inc"
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#include "clc/utils.h"

#if __CLC_VECSIZE_OR_1 == 1
#define __CLC_RETTYPE bool
#else
#define __CLC_RETTYPE __CLC_CHARN
#endif

_CLC_OVERLOAD _CLC_DEF __CLC_RETTYPE __CLC_FUNCTION(__CLC_GENTYPE x,
__CLC_GENTYPE y) {
return __CLC_CONVERT_CHARN(__CLC_IMPL_FUNCTION(__CLC_FUNCTION)(x, y));
}

#undef __CLC_RETTYPE