|  | // Copyright 2021 The IREE Authors | 
|  | // | 
|  | // Licensed 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 | 
|  |  | 
|  | #ifndef IREE_HAL_ROCM_STATUS_UTIL_H_ | 
|  | #define IREE_HAL_ROCM_STATUS_UTIL_H_ | 
|  |  | 
|  | #include <stdint.h> | 
|  |  | 
|  | #include "experimental/rocm/dynamic_symbols.h" | 
|  | #include "iree/base/api.h" | 
|  |  | 
|  | #ifdef __cplusplus | 
|  | extern "C" { | 
|  | #endif  // __cplusplus | 
|  |  | 
|  | // Converts a hipError_t to an iree_status_t. | 
|  | // | 
|  | // Usage: | 
|  | //   iree_status_t status = ROCM_RESULT_TO_STATUS(rocmDoThing(...)); | 
|  | #define ROCM_RESULT_TO_STATUS(syms, expr, ...) \ | 
|  | iree_hal_rocm_result_to_status((syms), ((syms)->expr), __FILE__, __LINE__) | 
|  |  | 
|  | // IREE_RETURN_IF_ERROR but implicitly converts the hipError_t return value to | 
|  | // a Status. | 
|  | // | 
|  | // Usage: | 
|  | //   ROCM_RETURN_IF_ERROR(rocmDoThing(...), "message"); | 
|  | #define ROCM_RETURN_IF_ERROR(syms, expr, ...)                                 \ | 
|  | IREE_RETURN_IF_ERROR(iree_hal_rocm_result_to_status((syms), ((syms)->expr), \ | 
|  | __FILE__, __LINE__),    \ | 
|  | __VA_ARGS__) | 
|  |  | 
|  | // IREE_IGNORE_ERROR but implicitly converts the hipError_t return value to a | 
|  | // Status. | 
|  | // | 
|  | // Usage: | 
|  | //   ROCM_IGNORE_ERROR(rocmDoThing(...)); | 
|  | #define ROCM_IGNORE_ERROR(syms, expr)                                      \ | 
|  | IREE_IGNORE_ERROR(iree_hal_rocm_result_to_status((syms), ((syms)->expr), \ | 
|  | __FILE__, __LINE__)) | 
|  |  | 
|  | // Converts a hipError_t to a Status object. | 
|  | iree_status_t iree_hal_rocm_result_to_status( | 
|  | iree_hal_rocm_dynamic_symbols_t* syms, hipError_t result, const char* file, | 
|  | uint32_t line); | 
|  |  | 
|  | #ifdef __cplusplus | 
|  | }  // extern "C" | 
|  | #endif  // __cplusplus | 
|  |  | 
|  | #endif  // IREE_HAL_ROCM_STATUS_UTIL_H_ |