[WebAssembly] CodeGen support for __builtin_wasm_page_size()
[oota-llvm.git] / lib / Target / WebAssembly / WebAssemblyInstrMemory.td
1 // WebAssemblyInstrMemory.td-WebAssembly Memory codegen support -*- tablegen -*-
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 WebAssembly Memory operand code-gen constructs.
12 ///
13 //===----------------------------------------------------------------------===//
14
15 /*
16  * TODO(jfb): Add the following.
17  * Each has optional alignment and immediate byte offset.
18  *
19  * int32.load_sx[int8]: sign-extend to int32
20  * int32.load_sx[int16]: sign-extend to int32
21  * int32.load_zx[int8]: zero-extend to int32
22  * int32.load_zx[int16]: zero-extend to int32
23  * int32.load[int32]: (no conversion)
24  * int64.load_sx[int8]: sign-extend to int64
25  * int64.load_sx[int16]: sign-extend to int64
26  * int64.load_sx[int32]: sign-extend to int64
27  * int64.load_zx[int8]: zero-extend to int64
28  * int64.load_zx[int16]: zero-extend to int64
29  * int64.load_zx[int32]: zero-extend to int64
30  * int64.load[int64]: (no conversion)
31  * float32.load[float32]: (no conversion)
32  * float64.load[float64]: (no conversion)
33  * 
34  * int32.store[int8]: wrap int32 to int8
35  * int32.store[int16]: wrap int32 to int16
36  * int32.store[int32]: (no conversion)
37  * int64.store[int8]: wrap int64 to int8
38  * int64.store[int16]: wrap int64 to int16
39  * int64.store[int32]: wrap int64 to int32
40  * int64.store[int64]: (no conversion)
41  * float32.store[float32]: (no conversion)
42  * float64.store[float64]: (no conversion)
43  * 
44  * load_global: load the value of a given global variable
45  * store_global: store a given value to a given global variable
46  */
47
48 def page_size_I32 : I<(outs Int32:$dst), (ins),
49                       [(set Int32:$dst, (int_wasm_page_size))]>,
50                     Requires<[HasAddr32]>;
51 def page_size_I64 : I<(outs Int64:$dst), (ins),
52                       [(set Int64:$dst, (int_wasm_page_size))]>,
53                     Requires<[HasAddr64]>;