]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - contrib/llvm/lib/Target/AMDGPU/AMDGPUSearchableTables.td
Merge llvm, clang, compiler-rt, libc++, libunwind, lld, lldb and openmp
[FreeBSD/FreeBSD.git] / contrib / llvm / lib / Target / AMDGPU / AMDGPUSearchableTables.td
1 //===-- AMDGPUSearchableTables.td - ------------------------*- 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 //===----------------------------------------------------------------------===//
11 // Resource intrinsics table.
12 //===----------------------------------------------------------------------===//
13
14 class RsrcIntrinsic<AMDGPURsrcIntrinsic intr> {
15   Intrinsic Intr = !cast<Intrinsic>(intr);
16   bits<8> RsrcArg = intr.RsrcArg;
17   bit IsImage = intr.IsImage;
18 }
19
20 def RsrcIntrinsics : GenericTable {
21   let FilterClass = "RsrcIntrinsic";
22   let Fields = ["Intr", "RsrcArg", "IsImage"];
23
24   let PrimaryKey = ["Intr"];
25   let PrimaryKeyName = "lookupRsrcIntrinsic";
26 }
27
28 foreach intr = !listconcat(AMDGPUBufferIntrinsics,
29                            AMDGPUImageDimIntrinsics,
30                            AMDGPUImageDimAtomicIntrinsics) in {
31   def : RsrcIntrinsic<!cast<AMDGPURsrcIntrinsic>(intr)>;
32 }
33
34 class SourceOfDivergence<Intrinsic intr> {
35   Intrinsic Intr = intr;
36 }
37
38 def SourcesOfDivergence : GenericTable {
39   let FilterClass = "SourceOfDivergence";
40   let Fields = ["Intr"];
41
42   let PrimaryKey = ["Intr"];
43   let PrimaryKeyName = "lookupSourceOfDivergence";
44 }
45
46 def : SourceOfDivergence<int_amdgcn_workitem_id_x>;
47 def : SourceOfDivergence<int_amdgcn_workitem_id_y>;
48 def : SourceOfDivergence<int_amdgcn_workitem_id_z>;
49 def : SourceOfDivergence<int_amdgcn_interp_mov>;
50 def : SourceOfDivergence<int_amdgcn_interp_p1>;
51 def : SourceOfDivergence<int_amdgcn_interp_p2>;
52 def : SourceOfDivergence<int_amdgcn_mbcnt_hi>;
53 def : SourceOfDivergence<int_amdgcn_mbcnt_lo>;
54 def : SourceOfDivergence<int_r600_read_tidig_x>;
55 def : SourceOfDivergence<int_r600_read_tidig_y>;
56 def : SourceOfDivergence<int_r600_read_tidig_z>;
57 def : SourceOfDivergence<int_amdgcn_atomic_inc>;
58 def : SourceOfDivergence<int_amdgcn_atomic_dec>;
59 def : SourceOfDivergence<int_amdgcn_ds_fadd>;
60 def : SourceOfDivergence<int_amdgcn_ds_fmin>;
61 def : SourceOfDivergence<int_amdgcn_ds_fmax>;
62 def : SourceOfDivergence<int_amdgcn_buffer_atomic_swap>;
63 def : SourceOfDivergence<int_amdgcn_buffer_atomic_add>;
64 def : SourceOfDivergence<int_amdgcn_buffer_atomic_sub>;
65 def : SourceOfDivergence<int_amdgcn_buffer_atomic_smin>;
66 def : SourceOfDivergence<int_amdgcn_buffer_atomic_umin>;
67 def : SourceOfDivergence<int_amdgcn_buffer_atomic_smax>;
68 def : SourceOfDivergence<int_amdgcn_buffer_atomic_umax>;
69 def : SourceOfDivergence<int_amdgcn_buffer_atomic_and>;
70 def : SourceOfDivergence<int_amdgcn_buffer_atomic_or>;
71 def : SourceOfDivergence<int_amdgcn_buffer_atomic_xor>;
72 def : SourceOfDivergence<int_amdgcn_buffer_atomic_cmpswap>;
73 def : SourceOfDivergence<int_amdgcn_ps_live>;
74 def : SourceOfDivergence<int_amdgcn_ds_swizzle>;
75 def : SourceOfDivergence<int_amdgcn_ds_ordered_add>;
76 def : SourceOfDivergence<int_amdgcn_ds_ordered_swap>;
77
78 foreach intr = AMDGPUImageDimAtomicIntrinsics in
79 def : SourceOfDivergence<intr>;