hipcub/block/block_adjacent_difference.hpp Source File# hipCUB: hipcub/block/block_adjacent_difference.hpp Source File hipcubblock block_adjacent_difference.hpp 1 /****************************************************************************** 2 * Copyright (c) 2010-2011, Duane Merrill. All rights reserved. 3 * Copyright (c) 2011-2018, NVIDIA CORPORATION. All rights reserved. 4 * Modifications Copyright (c) 2021, Advanced Micro Devices, Inc. All rights reserved. 5 * 6 * Redistribution and use in source and binary forms, with or without 7 * modification, are permitted provided that the following conditions are met: 8 * * Redistributions of source code must retain the above copyright 9 * notice, this list of conditions and the following disclaimer. 10 * * Redistributions in binary form must reproduce the above copyright 11 * notice, this list of conditions and the following disclaimer in the 12 * documentation and/or other materials provided with the distribution. 13 * * Neither the name of the NVIDIA CORPORATION nor the 14 * names of its contributors may be used to endorse or promote products 15 * derived from this software without specific prior written permission. 16 * 17 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 18 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 19 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 20 * DISCLAIMED. IN NO EVENT SHALL NVIDIA CORPORATION BE LIABLE FOR ANY 21 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 22 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 23 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 24 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 25 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 26 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27 * 28 ******************************************************************************/ 29 30 #ifndef HIPCUB_BLOCK_BLOCK_AJACENT_DIFFERENCE_HPP_ 31 #define HIPCUB_BLOCK_BLOCK_AJACENT_DIFFERENCE_HPP_ 32 33 BEGIN_HIPCUB_NAMESPACE 34 35 namespace detail 36 { 37 // Trait checks if FlagOp can be called with 3 arguments (a, b, b_index) 38 template<class T, class FlagOp, class = void> 39 struct WithBIndexArg 40 : std::false_type 41 { }; 42 43 template<class T, class FlagOp> 44 struct WithBIndexArg< 45 T, FlagOp, 46 typename std::conditional< 47 true, 48 void, 49 decltype(std::declval<FlagOp>()(std::declval<T>(), std::declval<T>(), 0)) 50 >::type 51 > : std::true_type 52 { }; 53 54 } 55 56 END_HIPCUB_NAMESPACE 57 58 #ifdef __HIP_PLATFORM_AMD__ 59 #include "../backend/rocprim/block/block_adjacent_difference.hpp" 60 #elif defined(__HIP_PLATFORM_NVIDIA__) 61 #include "../config.hpp" 62 #include <cub/block/block_adjacent_difference.cuh> 63 #endif 64 65 #endif // HIPCUB_BLOCK_BLOCK_AJACENT_DIFFERENCE_HPP_