[Codegen] Alter the default promotion for saturating adds and subs
[llvm-complete.git] / lib / Target / AMDGPU / AMDGPUSearchableTables.td
blob26b8b784027095934277a4d400d4b414d7d73999
1 //===-- AMDGPUSearchableTables.td - ------------------------*- tablegen -*-===//
2 //
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6 //
7 //===----------------------------------------------------------------------===//
9 //===----------------------------------------------------------------------===//
10 // Resource intrinsics table.
11 //===----------------------------------------------------------------------===//
13 class RsrcIntrinsic<AMDGPURsrcIntrinsic intr> {
14   Intrinsic Intr = !cast<Intrinsic>(intr);
15   bits<8> RsrcArg = intr.RsrcArg;
16   bit IsImage = intr.IsImage;
19 def RsrcIntrinsics : GenericTable {
20   let FilterClass = "RsrcIntrinsic";
21   let Fields = ["Intr", "RsrcArg", "IsImage"];
23   let PrimaryKey = ["Intr"];
24   let PrimaryKeyName = "lookupRsrcIntrinsic";
27 foreach intr = !listconcat(AMDGPUBufferIntrinsics,
28                            AMDGPUImageDimIntrinsics,
29                            AMDGPUImageDimAtomicIntrinsics) in {
30   def : RsrcIntrinsic<!cast<AMDGPURsrcIntrinsic>(intr)>;
33 class SourceOfDivergence<Intrinsic intr> {
34   Intrinsic Intr = intr;
37 def SourcesOfDivergence : GenericTable {
38   let FilterClass = "SourceOfDivergence";
39   let Fields = ["Intr"];
41   let PrimaryKey = ["Intr"];
42   let PrimaryKeyName = "lookupSourceOfDivergence";
45 def : SourceOfDivergence<int_amdgcn_workitem_id_x>;
46 def : SourceOfDivergence<int_amdgcn_workitem_id_y>;
47 def : SourceOfDivergence<int_amdgcn_workitem_id_z>;
48 def : SourceOfDivergence<int_amdgcn_interp_mov>;
49 def : SourceOfDivergence<int_amdgcn_interp_p1>;
50 def : SourceOfDivergence<int_amdgcn_interp_p2>;
51 def : SourceOfDivergence<int_amdgcn_interp_p1_f16>;
52 def : SourceOfDivergence<int_amdgcn_interp_p2_f16>;
53 def : SourceOfDivergence<int_amdgcn_mbcnt_hi>;
54 def : SourceOfDivergence<int_amdgcn_mbcnt_lo>;
55 def : SourceOfDivergence<int_r600_read_tidig_x>;
56 def : SourceOfDivergence<int_r600_read_tidig_y>;
57 def : SourceOfDivergence<int_r600_read_tidig_z>;
58 def : SourceOfDivergence<int_amdgcn_atomic_inc>;
59 def : SourceOfDivergence<int_amdgcn_atomic_dec>;
60 def : SourceOfDivergence<int_amdgcn_ds_fadd>;
61 def : SourceOfDivergence<int_amdgcn_ds_fmin>;
62 def : SourceOfDivergence<int_amdgcn_ds_fmax>;
63 def : SourceOfDivergence<int_amdgcn_buffer_atomic_swap>;
64 def : SourceOfDivergence<int_amdgcn_buffer_atomic_add>;
65 def : SourceOfDivergence<int_amdgcn_buffer_atomic_sub>;
66 def : SourceOfDivergence<int_amdgcn_buffer_atomic_smin>;
67 def : SourceOfDivergence<int_amdgcn_buffer_atomic_umin>;
68 def : SourceOfDivergence<int_amdgcn_buffer_atomic_smax>;
69 def : SourceOfDivergence<int_amdgcn_buffer_atomic_umax>;
70 def : SourceOfDivergence<int_amdgcn_buffer_atomic_and>;
71 def : SourceOfDivergence<int_amdgcn_buffer_atomic_or>;
72 def : SourceOfDivergence<int_amdgcn_buffer_atomic_xor>;
73 def : SourceOfDivergence<int_amdgcn_buffer_atomic_cmpswap>;
74 def : SourceOfDivergence<int_amdgcn_raw_buffer_atomic_swap>;
75 def : SourceOfDivergence<int_amdgcn_raw_buffer_atomic_add>;
76 def : SourceOfDivergence<int_amdgcn_raw_buffer_atomic_sub>;
77 def : SourceOfDivergence<int_amdgcn_raw_buffer_atomic_smin>;
78 def : SourceOfDivergence<int_amdgcn_raw_buffer_atomic_umin>;
79 def : SourceOfDivergence<int_amdgcn_raw_buffer_atomic_smax>;
80 def : SourceOfDivergence<int_amdgcn_raw_buffer_atomic_umax>;
81 def : SourceOfDivergence<int_amdgcn_raw_buffer_atomic_and>;
82 def : SourceOfDivergence<int_amdgcn_raw_buffer_atomic_or>;
83 def : SourceOfDivergence<int_amdgcn_raw_buffer_atomic_xor>;
84 def : SourceOfDivergence<int_amdgcn_raw_buffer_atomic_inc>;
85 def : SourceOfDivergence<int_amdgcn_raw_buffer_atomic_dec>;
86 def : SourceOfDivergence<int_amdgcn_raw_buffer_atomic_cmpswap>;
87 def : SourceOfDivergence<int_amdgcn_struct_buffer_atomic_swap>;
88 def : SourceOfDivergence<int_amdgcn_struct_buffer_atomic_add>;
89 def : SourceOfDivergence<int_amdgcn_struct_buffer_atomic_sub>;
90 def : SourceOfDivergence<int_amdgcn_struct_buffer_atomic_smin>;
91 def : SourceOfDivergence<int_amdgcn_struct_buffer_atomic_umin>;
92 def : SourceOfDivergence<int_amdgcn_struct_buffer_atomic_smax>;
93 def : SourceOfDivergence<int_amdgcn_struct_buffer_atomic_umax>;
94 def : SourceOfDivergence<int_amdgcn_struct_buffer_atomic_and>;
95 def : SourceOfDivergence<int_amdgcn_struct_buffer_atomic_or>;
96 def : SourceOfDivergence<int_amdgcn_struct_buffer_atomic_xor>;
97 def : SourceOfDivergence<int_amdgcn_struct_buffer_atomic_inc>;
98 def : SourceOfDivergence<int_amdgcn_struct_buffer_atomic_dec>;
99 def : SourceOfDivergence<int_amdgcn_struct_buffer_atomic_cmpswap>;
100 def : SourceOfDivergence<int_amdgcn_ps_live>;
101 def : SourceOfDivergence<int_amdgcn_ds_swizzle>;
102 def : SourceOfDivergence<int_amdgcn_ds_ordered_add>;
103 def : SourceOfDivergence<int_amdgcn_ds_ordered_swap>;
104 def : SourceOfDivergence<int_amdgcn_permlane16>;
105 def : SourceOfDivergence<int_amdgcn_permlanex16>;
106 def : SourceOfDivergence<int_amdgcn_mov_dpp>;
107 def : SourceOfDivergence<int_amdgcn_mov_dpp8>;
108 def : SourceOfDivergence<int_amdgcn_update_dpp>;
110 def : SourceOfDivergence<int_amdgcn_mfma_f32_4x4x1f32>;
111 def : SourceOfDivergence<int_amdgcn_mfma_f32_4x4x1f32>;
112 def : SourceOfDivergence<int_amdgcn_mfma_f32_4x4x4f16>;
113 def : SourceOfDivergence<int_amdgcn_mfma_i32_4x4x4i8>;
114 def : SourceOfDivergence<int_amdgcn_mfma_f32_4x4x2bf16>;
115 def : SourceOfDivergence<int_amdgcn_mfma_f32_16x16x1f32>;
116 def : SourceOfDivergence<int_amdgcn_mfma_f32_16x16x4f32>;
117 def : SourceOfDivergence<int_amdgcn_mfma_f32_16x16x4f16>;
118 def : SourceOfDivergence<int_amdgcn_mfma_f32_16x16x16f16>;
119 def : SourceOfDivergence<int_amdgcn_mfma_i32_16x16x4i8>;
120 def : SourceOfDivergence<int_amdgcn_mfma_i32_16x16x16i8>;
121 def : SourceOfDivergence<int_amdgcn_mfma_f32_16x16x2bf16>;
122 def : SourceOfDivergence<int_amdgcn_mfma_f32_16x16x8bf16>;
123 def : SourceOfDivergence<int_amdgcn_mfma_f32_32x32x1f32>;
124 def : SourceOfDivergence<int_amdgcn_mfma_f32_32x32x2f32>;
125 def : SourceOfDivergence<int_amdgcn_mfma_f32_32x32x4f16>;
126 def : SourceOfDivergence<int_amdgcn_mfma_f32_32x32x8f16>;
127 def : SourceOfDivergence<int_amdgcn_mfma_i32_32x32x4i8>;
128 def : SourceOfDivergence<int_amdgcn_mfma_i32_32x32x8i8>;
129 def : SourceOfDivergence<int_amdgcn_mfma_f32_32x32x2bf16>;
130 def : SourceOfDivergence<int_amdgcn_mfma_f32_32x32x4bf16>;
132 foreach intr = AMDGPUImageDimAtomicIntrinsics in
133 def : SourceOfDivergence<intr>;