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//===----------------------------------------------------------------------===// 8 9//===----------------------------------------------------------------------===// 10// Resource intrinsics table. 11//===----------------------------------------------------------------------===// 12 13class RsrcIntrinsic<AMDGPURsrcIntrinsic intr> { 14 Intrinsic Intr = !cast<Intrinsic>(intr); 15 bits<8> RsrcArg = intr.RsrcArg; 16 bit IsImage = intr.IsImage; 17} 18 19def RsrcIntrinsics : GenericTable { 20 let FilterClass = "RsrcIntrinsic"; 21 let Fields = ["Intr", "RsrcArg", "IsImage"]; 22 23 let PrimaryKey = ["Intr"]; 24 let PrimaryKeyName = "lookupRsrcIntrinsic"; 25} 26 27foreach intr = !listconcat(AMDGPUBufferIntrinsics, 28 AMDGPUImageDimIntrinsics, 29 AMDGPUImageDimAtomicIntrinsics) in { 30 def : RsrcIntrinsic<!cast<AMDGPURsrcIntrinsic>(intr)>; 31} 32 33class SourceOfDivergence<Intrinsic intr> { 34 Intrinsic Intr = intr; 35} 36 37def SourcesOfDivergence : GenericTable { 38 let FilterClass = "SourceOfDivergence"; 39 let Fields = ["Intr"]; 40 41 let PrimaryKey = ["Intr"]; 42 let PrimaryKeyName = "lookupSourceOfDivergence"; 43} 44 45def : SourceOfDivergence<int_amdgcn_workitem_id_x>; 46def : SourceOfDivergence<int_amdgcn_workitem_id_y>; 47def : SourceOfDivergence<int_amdgcn_workitem_id_z>; 48def : SourceOfDivergence<int_amdgcn_interp_mov>; 49def : SourceOfDivergence<int_amdgcn_interp_p1>; 50def : SourceOfDivergence<int_amdgcn_interp_p2>; 51def : SourceOfDivergence<int_amdgcn_interp_p1_f16>; 52def : SourceOfDivergence<int_amdgcn_interp_p2_f16>; 53def : SourceOfDivergence<int_amdgcn_mbcnt_hi>; 54def : SourceOfDivergence<int_amdgcn_mbcnt_lo>; 55def : SourceOfDivergence<int_r600_read_tidig_x>; 56def : SourceOfDivergence<int_r600_read_tidig_y>; 57def : SourceOfDivergence<int_r600_read_tidig_z>; 58def : SourceOfDivergence<int_amdgcn_atomic_inc>; 59def : SourceOfDivergence<int_amdgcn_atomic_dec>; 60def : SourceOfDivergence<int_amdgcn_ds_fadd>; 61def : SourceOfDivergence<int_amdgcn_ds_fmin>; 62def : SourceOfDivergence<int_amdgcn_ds_fmax>; 63def : SourceOfDivergence<int_amdgcn_buffer_atomic_swap>; 64def : SourceOfDivergence<int_amdgcn_buffer_atomic_add>; 65def : SourceOfDivergence<int_amdgcn_buffer_atomic_sub>; 66def : SourceOfDivergence<int_amdgcn_buffer_atomic_smin>; 67def : SourceOfDivergence<int_amdgcn_buffer_atomic_umin>; 68def : SourceOfDivergence<int_amdgcn_buffer_atomic_smax>; 69def : SourceOfDivergence<int_amdgcn_buffer_atomic_umax>; 70def : SourceOfDivergence<int_amdgcn_buffer_atomic_and>; 71def : SourceOfDivergence<int_amdgcn_buffer_atomic_or>; 72def : SourceOfDivergence<int_amdgcn_buffer_atomic_xor>; 73def : SourceOfDivergence<int_amdgcn_buffer_atomic_cmpswap>; 74def : SourceOfDivergence<int_amdgcn_raw_buffer_atomic_swap>; 75def : SourceOfDivergence<int_amdgcn_raw_buffer_atomic_add>; 76def : SourceOfDivergence<int_amdgcn_raw_buffer_atomic_sub>; 77def : SourceOfDivergence<int_amdgcn_raw_buffer_atomic_smin>; 78def : SourceOfDivergence<int_amdgcn_raw_buffer_atomic_umin>; 79def : SourceOfDivergence<int_amdgcn_raw_buffer_atomic_smax>; 80def : SourceOfDivergence<int_amdgcn_raw_buffer_atomic_umax>; 81def : SourceOfDivergence<int_amdgcn_raw_buffer_atomic_and>; 82def : SourceOfDivergence<int_amdgcn_raw_buffer_atomic_or>; 83def : SourceOfDivergence<int_amdgcn_raw_buffer_atomic_xor>; 84def : SourceOfDivergence<int_amdgcn_raw_buffer_atomic_cmpswap>; 85def : SourceOfDivergence<int_amdgcn_struct_buffer_atomic_swap>; 86def : SourceOfDivergence<int_amdgcn_struct_buffer_atomic_add>; 87def : SourceOfDivergence<int_amdgcn_struct_buffer_atomic_sub>; 88def : SourceOfDivergence<int_amdgcn_struct_buffer_atomic_smin>; 89def : SourceOfDivergence<int_amdgcn_struct_buffer_atomic_umin>; 90def : SourceOfDivergence<int_amdgcn_struct_buffer_atomic_smax>; 91def : SourceOfDivergence<int_amdgcn_struct_buffer_atomic_umax>; 92def : SourceOfDivergence<int_amdgcn_struct_buffer_atomic_and>; 93def : SourceOfDivergence<int_amdgcn_struct_buffer_atomic_or>; 94def : SourceOfDivergence<int_amdgcn_struct_buffer_atomic_xor>; 95def : SourceOfDivergence<int_amdgcn_struct_buffer_atomic_cmpswap>; 96def : SourceOfDivergence<int_amdgcn_ps_live>; 97def : SourceOfDivergence<int_amdgcn_ds_swizzle>; 98def : SourceOfDivergence<int_amdgcn_ds_ordered_add>; 99def : SourceOfDivergence<int_amdgcn_ds_ordered_swap>; 100def : SourceOfDivergence<int_amdgcn_permlane16>; 101def : SourceOfDivergence<int_amdgcn_permlanex16>; 102def : SourceOfDivergence<int_amdgcn_mov_dpp>; 103def : SourceOfDivergence<int_amdgcn_mov_dpp8>; 104def : SourceOfDivergence<int_amdgcn_update_dpp>; 105 106foreach intr = AMDGPUImageDimAtomicIntrinsics in 107def : SourceOfDivergence<intr>; 108