Skip to content
Merged
Show file tree
Hide file tree
Changes from 18 commits
Commits
Show all changes
46 commits
Select commit Hold shift + click to select a range
d1bc220
refactor row-IR
lamarrr May 14, 2026
b8872f8
Add an operators library
lamarrr May 14, 2026
cbaaa96
documentation, test, & refactoring fixes
lamarrr May 14, 2026
0f0c134
documentation, test, & refactoring fixes
lamarrr May 14, 2026
c612ac8
Add validation for predicate input column sizes in filter function
lamarrr May 14, 2026
01320e6
remove linter warning
lamarrr May 14, 2026
2830fc4
Merge branch 'main' into ansi-jit-1--refactor-row-ir
lamarrr May 14, 2026
a4f14ef
doc fix
lamarrr May 15, 2026
451da98
Merge branch 'ansi-jit-1--refactor-row-ir' of https://github.com/lama…
lamarrr May 15, 2026
1511c32
Merge branch 'main' into ansi-jit-1--refactor-row-ir
lamarrr May 15, 2026
ac99883
Update cpp/src/join/filter_join_indices_jit.cu
lamarrr May 19, 2026
e2c17fa
Merge branch 'main' into ansi-jit-1--refactor-row-ir
lamarrr May 19, 2026
4671ac9
Merge remote-tracking branch 'upstream/main' into ansi-jit-1--refacto…
lamarrr May 20, 2026
6d92a29
fix user_data usage
lamarrr May 20, 2026
d4d4077
Merge branch 'ansi-jit-1--refactor-row-ir' into ansi-jit-2--operator-…
lamarrr May 20, 2026
77993a0
bug fixes
lamarrr May 20, 2026
49fbf4c
Merge remote-tracking branch 'upstream/main' into ansi-jit-2--operato…
lamarrr May 20, 2026
655689a
docs: clarify parameter description for ipow10 function
lamarrr May 20, 2026
4775b56
docs: fix formatting of comments for ansi_abs function
lamarrr May 20, 2026
29bec09
fix: handle negative scale in ceil and floor functions for decimal types
lamarrr May 20, 2026
c7c8745
refactor: simplify arithmetic operations with overflow detection for …
lamarrr May 20, 2026
05fa30d
fix: improve error handling in ansi_div for division by zero and over…
lamarrr May 20, 2026
03c3ef9
WARs for doxygen checks
lamarrr May 21, 2026
84032a4
refactor: remove unused promote header
lamarrr May 21, 2026
92ef3e9
refactor: change enum to enum class for better type safety in error h…
lamarrr May 21, 2026
74fa4c2
Merge branch 'main' into ansi-jit-2--operator-library
lamarrr May 21, 2026
fae557c
Refactor null handling and trigonometric operations to use cuda::std:…
lamarrr May 22, 2026
fc45531
fix if_else logic
lamarrr May 22, 2026
85bdb0a
doc: clarify if_else parameter description for false_value
lamarrr May 22, 2026
0393ffc
Merge branch 'main' into ansi-jit-2--operator-library
lamarrr May 22, 2026
0dc859e
refactoring + doc cleanup
lamarrr May 28, 2026
44a8942
Merge branch 'ansi-jit-2--operator-library' of https://github.com/lam…
lamarrr May 28, 2026
1653923
Fix precision check and update requirements for fixed point types in …
lamarrr May 28, 2026
aff7de9
Merge branch 'main' into ansi-jit-2--operator-library
lamarrr May 28, 2026
c96c444
Fix overflow checks in ansi_add and update comparison functions to re…
lamarrr May 28, 2026
da53667
Add all.cuh header file with operator includes
lamarrr May 29, 2026
d7bd548
merge AST operators into operator library
lamarrr May 30, 2026
a014c89
Refactor operator functor calls to remove unnecessary 'false' paramet…
lamarrr May 30, 2026
172524f
Update predicate references to use cudf::ops in row_ir code generation
lamarrr May 30, 2026
e6da432
Add ordered concept for pre-CUDA 12.3 compatibility and update compar…
lamarrr May 30, 2026
106cbc9
Refactor operator functions to use template type parameters for impro…
lamarrr May 30, 2026
b60e31a
update
lamarrr May 31, 2026
3a85d86
Refactor result struct to use CUDF_HOST_DEVICE for device and host co…
lamarrr Jun 1, 2026
3e97bb5
Merge branch 'main' into ansi-jit-2--operator-library
lamarrr Jun 1, 2026
87fe99a
Potential fix for pull request finding
lamarrr Jun 1, 2026
2f62ba3
refactoring and cleanup
lamarrr Jun 2, 2026
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
961 changes: 961 additions & 0 deletions cpp/include/cudf/operators/ansi_arithmetic.cuh

Large diffs are not rendered by default.

526 changes: 526 additions & 0 deletions cpp/include/cudf/operators/arithmetic.cuh

Large diffs are not rendered by default.

239 changes: 239 additions & 0 deletions cpp/include/cudf/operators/bitwise.cuh
Original file line number Diff line number Diff line change
@@ -0,0 +1,239 @@
/*
* SPDX-FileCopyrightText: Copyright (c) 2026, NVIDIA CORPORATION.
* SPDX-License-Identifier: Apache-2.0
*/
#pragma once

#include <cudf/operators/types.cuh>

namespace CUDF_EXPORT cudf {
namespace ops {

/**
* @brief Computes bitwise AND of two values.
*
* @tparam T Operand and result type.
* @param out Destination for the computed value.
* @param a Left input operand.
* @param b Right input operand.
* @return errc::OK.
*/
template <typename T>
__device__ inline errc bit_and(T* out, T const* a, T const* b)
{
*out = (*a & *b);
return errc::OK;
}

/**
* @brief Computes bitwise AND for optional operands.
*
* @tparam T Operand and result type.
* @param out Destination optional result.
* @param a Left optional operand.
* @param b Right optional operand.
* @return errc::OK.
*/
template <typename T>
__device__ inline errc bit_and(optional<T>* out, optional<T> const* a, optional<T> const* b)
{
if (a->has_value() && b->has_value()) {
T r;
bit_and(&r, &a->value(), &b->value());
*out = r;
} else {
*out = nullopt;
}
return errc::OK;
}

/**
* @brief Computes bitwise NOT of one value.
*
* @tparam T Operand and result type.
* @param out Destination for the computed value.
* @param a Input operand.
* @return errc::OK.
*/
template <typename T>
__device__ inline errc bit_invert(T* out, T const* a)
{
*out = ~(*a);
return errc::OK;
}

/**
* @brief Computes bitwise NOT for an optional operand.
*
* @tparam T Operand and result type.
* @param out Destination optional result.
* @param a Optional input operand.
* @return errc::OK.
*/
template <typename T>
__device__ inline errc bit_invert(optional<T>* out, optional<T> const* a)
{
if (a->has_value()) {
T r;
bit_invert(&r, &a->value());
*out = r;
} else {
*out = nullopt;
}
return errc::OK;
}

/**
* @brief Computes bitwise OR of two values.
*
* @tparam T Operand and result type.
* @param out Destination for the computed value.
* @param a Left input operand.
* @param b Right input operand.
* @return errc::OK.
*/
template <typename T>
__device__ inline errc bit_or(T* out, T const* a, T const* b)
{
*out = (*a | *b);
return errc::OK;
}

/**
* @brief Computes bitwise OR for optional operands.
*
* @tparam T Operand and result type.
* @param out Destination optional result.
* @param a Left optional operand.
* @param b Right optional operand.
* @return errc::OK.
*/
template <typename T>
__device__ inline errc bit_or(optional<T>* out, optional<T> const* a, optional<T> const* b)
{
if (a->has_value() && b->has_value()) {
T r;
bit_or(&r, &a->value(), &b->value());
*out = r;
} else {
*out = nullopt;
}
return errc::OK;
}

/**
* @brief Computes bitwise XOR of two values.
*
* @tparam T Operand and result type.
* @param out Destination for the computed value.
* @param a Left input operand.
* @param b Right input operand.
* @return errc::OK.
*/
template <typename T>
__device__ inline errc bit_xor(T* out, T const* a, T const* b)
{
*out = (*a ^ *b);
return errc::OK;
}

/**
* @brief Computes bitwise XOR for optional operands.
*
* @tparam T Operand and result type.
* @param out Destination optional result.
* @param a Left optional operand.
* @param b Right optional operand.
* @return errc::OK.
*/
template <typename T>
__device__ inline errc bit_xor(optional<T>* out, optional<T> const* a, optional<T> const* b)
{
if (a->has_value() && b->has_value()) {
T r;
bit_xor(&r, &a->value(), &b->value());
*out = r;
} else {
*out = nullopt;
}
return errc::OK;
}

/**
* @brief Shifts a value left by a bit count.
*
* @tparam T Operand and result type.
* @param out Destination for the computed value.
* @param a Input value.
* @param b Shift count.
* @return errc::OK.
*/
template <typename T>
__device__ inline errc bit_shift_left(T* out, T const* a, T const* b)
{
*out = (*a << *b);
return errc::OK;
}

/**
* @brief Shifts an optional value left by an optional bit count.
*
* @tparam T Operand and result type.
* @param out Destination optional result.
* @param a Optional input value.
* @param b Optional shift count.
* @return errc::OK.
*/
template <typename T>
__device__ inline errc bit_shift_left(optional<T>* out, optional<T> const* a, optional<T> const* b)
{
if (a->has_value() && b->has_value()) {
T r;
bit_shift_left(&r, &a->value(), &b->value());
*out = r;
} else {
*out = nullopt;
}
return errc::OK;
}

/**
* @brief Shifts a value right by a bit count.
*
* @tparam T Operand and result type.
* @param out Destination for the computed value.
* @param a Input value.
* @param b Shift count.
* @return errc::OK.
*/
template <typename T>
__device__ inline errc bit_shift_right(T* out, T const* a, T const* b)
{
*out = (*a >> *b);
return errc::OK;
}

/**
* @brief Shifts an optional value right by an optional bit count.
*
* @tparam T Operand and result type.
* @param out Destination optional result.
* @param a Optional input value.
* @param b Optional shift count.
* @return errc::OK.
*/
template <typename T>
__device__ inline errc bit_shift_right(optional<T>* out, optional<T> const* a, optional<T> const* b)
{
if (a->has_value() && b->has_value()) {
T r;
bit_shift_right(&r, &a->value(), &b->value());
*out = r;
} else {
*out = nullopt;
}
return errc::OK;
}

} // namespace ops
} // namespace CUDF_EXPORT cudf
Loading
Loading