1 //===- SPIRVDebug.h - SPIR-V Debug Utility -----------------------*- C++ -*-===// 2 // 3 // The LLVM/SPIRV Translator 4 // 5 // This file is distributed under the University of Illinois Open Source 6 // License. See LICENSE.TXT for details. 7 // 8 // Copyright (c) 2014 Advanced Micro Devices, Inc. All rights reserved. 9 // 10 // Permission is hereby granted, free of charge, to any person obtaining a 11 // copy of this software and associated documentation files (the "Software"), 12 // to deal with the Software without restriction, including without limitation 13 // the rights to use, copy, modify, merge, publish, distribute, sublicense, 14 // and/or sell copies of the Software, and to permit persons to whom the 15 // Software is furnished to do so, subject to the following conditions: 16 // 17 // Redistributions of source code must retain the above copyright notice, 18 // this list of conditions and the following disclaimers. 19 // Redistributions in binary form must reproduce the above copyright notice, 20 // this list of conditions and the following disclaimers in the documentation 21 // and/or other materials provided with the distribution. 22 // Neither the names of Advanced Micro Devices, Inc., nor the names of its 23 // contributors may be used to endorse or promote products derived from this 24 // Software without specific prior written permission. 25 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 26 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 27 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 28 // CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 29 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 30 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH 31 // THE SOFTWARE. 32 // 33 //===----------------------------------------------------------------------===// 34 /// \file 35 /// 36 /// This file defines Macros and variables for debugging SPIRV. 37 /// 38 //===----------------------------------------------------------------------===// 39 40 #ifndef SPIRVDEBUG_HPP_ 41 #define SPIRVDEBUG_HPP_ 42 43 #include "SPIRVUtil.h" 44 #ifdef _SPIRV_LLVM_API 45 #include "llvm/Support/Debug.h" 46 #endif 47 #include <iostream> 48 49 namespace SPIRV{ 50 51 #define _SPIRVDBG 52 #ifdef _SPIRVDBG 53 54 #define SPIRVDBG(x) if(SPIRVDbgEnable) {x;} 55 56 // Enable debug output. 57 extern bool SPIRVDbgEnable; 58 59 // Include source file and line number in error message. 60 extern bool SPIRVDbgErrorMsgIncludesSourceInfo; 61 62 // Enable assert on error 63 extern bool SPIRVDbgAssertOnError; 64 65 // Output stream for SPIRV debug information. 66 inline spv_ostream &spvdbgs() { 67 #ifdef _SPIRV_LLVM_API 68 return llvm::dbgs(); 69 #else 70 return std::cerr; 71 #endif 72 } 73 74 #else 75 76 #define SPIRVDBG(x) 77 78 #endif 79 80 } 81 #endif /* SPIRVDEBUG_HPP_ */ 82