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_inc>; 85def : SourceOfDivergence<int_amdgcn_raw_buffer_atomic_dec>; 86def : SourceOfDivergence<int_amdgcn_raw_buffer_atomic_cmpswap>; 87def : SourceOfDivergence<int_amdgcn_struct_buffer_atomic_swap>; 88def : SourceOfDivergence<int_amdgcn_struct_buffer_atomic_add>; 89def : SourceOfDivergence<int_amdgcn_struct_buffer_atomic_sub>; 90def : SourceOfDivergence<int_amdgcn_struct_buffer_atomic_smin>; 91def : SourceOfDivergence<int_amdgcn_struct_buffer_atomic_umin>; 92def : SourceOfDivergence<int_amdgcn_struct_buffer_atomic_smax>; 93def : SourceOfDivergence<int_amdgcn_struct_buffer_atomic_umax>; 94def : SourceOfDivergence<int_amdgcn_struct_buffer_atomic_and>; 95def : SourceOfDivergence<int_amdgcn_struct_buffer_atomic_or>; 96def : SourceOfDivergence<int_amdgcn_struct_buffer_atomic_xor>; 97def : SourceOfDivergence<int_amdgcn_struct_buffer_atomic_inc>; 98def : SourceOfDivergence<int_amdgcn_struct_buffer_atomic_dec>; 99def : SourceOfDivergence<int_amdgcn_struct_buffer_atomic_cmpswap>; 100def : SourceOfDivergence<int_amdgcn_ps_live>; 101def : SourceOfDivergence<int_amdgcn_ds_swizzle>; 102def : SourceOfDivergence<int_amdgcn_ds_ordered_add>; 103def : SourceOfDivergence<int_amdgcn_ds_ordered_swap>; 104def : SourceOfDivergence<int_amdgcn_permlane16>; 105def : SourceOfDivergence<int_amdgcn_permlanex16>; 106def : SourceOfDivergence<int_amdgcn_mov_dpp>; 107def : SourceOfDivergence<int_amdgcn_mov_dpp8>; 108def : SourceOfDivergence<int_amdgcn_update_dpp>; 109 110def : SourceOfDivergence<int_amdgcn_mfma_f32_4x4x1f32>; 111def : SourceOfDivergence<int_amdgcn_mfma_f32_4x4x1f32>; 112def : SourceOfDivergence<int_amdgcn_mfma_f32_4x4x4f16>; 113def : SourceOfDivergence<int_amdgcn_mfma_i32_4x4x4i8>; 114def : SourceOfDivergence<int_amdgcn_mfma_f32_4x4x2bf16>; 115def : SourceOfDivergence<int_amdgcn_mfma_f32_16x16x1f32>; 116def : SourceOfDivergence<int_amdgcn_mfma_f32_16x16x4f32>; 117def : SourceOfDivergence<int_amdgcn_mfma_f32_16x16x4f16>; 118def : SourceOfDivergence<int_amdgcn_mfma_f32_16x16x16f16>; 119def : SourceOfDivergence<int_amdgcn_mfma_i32_16x16x4i8>; 120def : SourceOfDivergence<int_amdgcn_mfma_i32_16x16x16i8>; 121def : SourceOfDivergence<int_amdgcn_mfma_f32_16x16x2bf16>; 122def : SourceOfDivergence<int_amdgcn_mfma_f32_16x16x8bf16>; 123def : SourceOfDivergence<int_amdgcn_mfma_f32_32x32x1f32>; 124def : SourceOfDivergence<int_amdgcn_mfma_f32_32x32x2f32>; 125def : SourceOfDivergence<int_amdgcn_mfma_f32_32x32x4f16>; 126def : SourceOfDivergence<int_amdgcn_mfma_f32_32x32x8f16>; 127def : SourceOfDivergence<int_amdgcn_mfma_i32_32x32x4i8>; 128def : SourceOfDivergence<int_amdgcn_mfma_i32_32x32x8i8>; 129def : SourceOfDivergence<int_amdgcn_mfma_f32_32x32x2bf16>; 130def : SourceOfDivergence<int_amdgcn_mfma_f32_32x32x4bf16>; 131 132foreach intr = AMDGPUImageDimAtomicIntrinsics in 133def : SourceOfDivergence<intr>; 134