1 //===-- AMDGPUSearchableTables.td - ------------------------*- tablegen -*-===//
3 // The LLVM Compiler Infrastructure
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
8 //===----------------------------------------------------------------------===//
10 //===----------------------------------------------------------------------===//
11 // Resource intrinsics table.
12 //===----------------------------------------------------------------------===//
14 class RsrcIntrinsic<AMDGPURsrcIntrinsic intr> {
15 Intrinsic Intr = !cast<Intrinsic>(intr);
16 bits<8> RsrcArg = intr.RsrcArg;
17 bit IsImage = intr.IsImage;
20 def RsrcIntrinsics : GenericTable {
21 let FilterClass = "RsrcIntrinsic";
22 let Fields = ["Intr", "RsrcArg", "IsImage"];
24 let PrimaryKey = ["Intr"];
25 let PrimaryKeyName = "lookupRsrcIntrinsic";
28 foreach intr = !listconcat(AMDGPUBufferIntrinsics,
29 AMDGPUImageDimIntrinsics,
30 AMDGPUImageDimAtomicIntrinsics) in {
31 def : RsrcIntrinsic<!cast<AMDGPURsrcIntrinsic>(intr)>;
34 class SourceOfDivergence<Intrinsic intr> {
35 Intrinsic Intr = intr;
38 def SourcesOfDivergence : GenericTable {
39 let FilterClass = "SourceOfDivergence";
40 let Fields = ["Intr"];
42 let PrimaryKey = ["Intr"];
43 let PrimaryKeyName = "lookupSourceOfDivergence";
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>;
76 foreach intr = AMDGPUImageDimAtomicIntrinsics in
77 def : SourceOfDivergence<intr>;