// Copyright (c) NXAI GmbH and its affiliates 2023
// Korbinian Poeppel
// Adapted from the haste library

// See:
// Copyright 2020 LMNT, Inc. All Rights Reserved.

// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at

//    http://www.apache.org/licenses/LICENSE-2.0

// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
// ==============================================================================

#pragma once

extern "C" __host__ __device__ void
__assertfail(const char *__assertion, const char *__file, unsigned int __line,
             const char *__function, size_t charsize);

#define device_assert_fail(msg)                                                \
  __assertfail((msg), __FILE__, __LINE__, __PRETTY_FUNCTION__, sizeof(char))
