1 //- WebAssemblyISelLowering.h - WebAssembly DAG Lowering Interface -*- C++ -*-// 2 // 3 // The LLVM Compiler Infrastructure 4 // 5 // This file is distributed under the University of Illinois Open Source 6 // License. See LICENSE.TXT for details. 7 // 8 //===----------------------------------------------------------------------===// 9 /// 10 /// \file 11 /// \brief This file defines the interfaces that WebAssembly uses to lower LLVM 12 /// code into a selection DAG. 13 /// 14 //===----------------------------------------------------------------------===// 15 16 #ifndef LLVM_LIB_TARGET_WEBASSEMBLY_WEBASSEMBLYISELLOWERING_H 17 #define LLVM_LIB_TARGET_WEBASSEMBLY_WEBASSEMBLYISELLOWERING_H 18 19 #include "llvm/Target/TargetLowering.h" 20 21 namespace llvm { 22 23 namespace WebAssemblyISD { 24 25 enum { 26 FIRST_NUMBER = ISD::BUILTIN_OP_END, 27 28 // add memory opcodes starting at ISD::FIRST_TARGET_MEMORY_OPCODE here... 29 }; 30 31 } // end namespace WebAssemblyISD 32 33 class WebAssemblySubtarget; 34 class WebAssemblyTargetMachine; 35 36 class WebAssemblyTargetLowering final : public TargetLowering { 37 public: 38 WebAssemblyTargetLowering(const TargetMachine &TM, 39 const WebAssemblySubtarget &STI); 40 41 private: 42 /// Keep a pointer to the WebAssemblySubtarget around so that we can make the 43 /// right decision when generating code for different targets. 44 const WebAssemblySubtarget *Subtarget; 45 }; 46 47 } // end namespace llvm 48 49 #endif 50