1import("//llvm/utils/TableGen/tablegen.gni") 2 3tablegen("Attributes") { 4 visibility = [ ":public_tablegen" ] 5 args = [ "-gen-attrs" ] 6} 7 8tablegen("IntrinsicImpl") { 9 visibility = [ "//llvm/lib/IR" ] 10 args = [ "-gen-intrinsic-impl" ] 11 td_file = "Intrinsics.td" 12} 13 14tablegen("IntrinsicEnums") { 15 visibility = [ ":public_tablegen" ] 16 args = [ "-gen-intrinsic-enums" ] 17 td_file = "Intrinsics.td" 18} 19 20template("gen_arch_intrinsics") { 21 tablegen(target_name) { 22 visibility = [ ":public_tablegen" ] 23 output_name = "$target_name.h" 24 args = [ 25 "-gen-intrinsic-enums", 26 "-intrinsic-prefix=${invoker.intrinsic_prefix}", 27 ] 28 td_file = "Intrinsics.td" 29 } 30} 31 32gen_arch_intrinsics("IntrinsicsAArch64") { 33 intrinsic_prefix = "aarch64" 34} 35 36gen_arch_intrinsics("IntrinsicsAMDGPU") { 37 intrinsic_prefix = "amdgcn" 38} 39 40gen_arch_intrinsics("IntrinsicsARM") { 41 intrinsic_prefix = "arm" 42} 43 44gen_arch_intrinsics("IntrinsicsBPF") { 45 intrinsic_prefix = "bpf" 46} 47 48gen_arch_intrinsics("IntrinsicsDirectX") { 49 intrinsic_prefix = "dx" 50} 51 52gen_arch_intrinsics("IntrinsicsHexagon") { 53 intrinsic_prefix = "hexagon" 54} 55 56gen_arch_intrinsics("IntrinsicsLoongArch") { 57 intrinsic_prefix = "loongarch" 58} 59 60gen_arch_intrinsics("IntrinsicsMips") { 61 intrinsic_prefix = "mips" 62} 63 64gen_arch_intrinsics("IntrinsicsNVPTX") { 65 intrinsic_prefix = "nvvm" 66} 67 68gen_arch_intrinsics("IntrinsicsPowerPC") { 69 intrinsic_prefix = "ppc" 70} 71 72gen_arch_intrinsics("IntrinsicsR600") { 73 intrinsic_prefix = "r600" 74} 75 76gen_arch_intrinsics("IntrinsicsRISCV") { 77 intrinsic_prefix = "riscv" 78} 79 80gen_arch_intrinsics("IntrinsicsS390") { 81 intrinsic_prefix = "s390" 82} 83 84gen_arch_intrinsics("IntrinsicsVE") { 85 intrinsic_prefix = "ve" 86} 87 88gen_arch_intrinsics("IntrinsicsWebAssembly") { 89 intrinsic_prefix = "wasm" 90} 91 92gen_arch_intrinsics("IntrinsicsX86") { 93 intrinsic_prefix = "x86" 94} 95 96gen_arch_intrinsics("IntrinsicsXCore") { 97 intrinsic_prefix = "xcore" 98} 99 100# Groups all tablegen() calls that create .inc files that are included in 101# IR's public headers. //llvm/lib/IR has this as a public_dep, so targets 102# depending on //llvm/lib/IR don't need to depend on this. This exists 103# solely for targets that use IR's public headers but don't link against IR. 104group("public_tablegen") { 105 public_deps = [ 106 # IR's public headers include Attributes.inc. 107 ":Attributes", 108 109 # IR's public headers include IntrinsicEnums.inc. 110 ":IntrinsicEnums", 111 112 # FIXME: These are only included from .cpp files at first glance. 113 # Try removing them from the public_tablegen target. 114 ":IntrinsicsAArch64", 115 ":IntrinsicsAMDGPU", 116 ":IntrinsicsARM", 117 ":IntrinsicsBPF", 118 ":IntrinsicsDirectX", 119 ":IntrinsicsHexagon", 120 ":IntrinsicsLoongArch", 121 ":IntrinsicsMips", 122 ":IntrinsicsNVPTX", 123 ":IntrinsicsPowerPC", 124 ":IntrinsicsR600", 125 ":IntrinsicsRISCV", 126 ":IntrinsicsS390", 127 ":IntrinsicsVE", 128 ":IntrinsicsWebAssembly", 129 ":IntrinsicsX86", 130 ":IntrinsicsXCore", 131 ] 132} 133