1 //===- LLToken.h - Token Codes for LLVM Assembly Files ----------*- C++ -*-===// 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 // This file defines the enums for the .ll lexer. 10 // 11 //===----------------------------------------------------------------------===// 12 13 #ifndef LLVM_ASMPARSER_LLTOKEN_H 14 #define LLVM_ASMPARSER_LLTOKEN_H 15 16 namespace llvm { 17 namespace lltok { 18 enum Kind { 19 // Markers 20 Eof, 21 Error, 22 23 // Tokens with no info. 24 dotdotdot, // ... 25 equal, 26 comma, // = , 27 star, // * 28 lsquare, 29 rsquare, // [ ] 30 lbrace, 31 rbrace, // { } 32 less, 33 greater, // < > 34 lparen, 35 rparen, // ( ) 36 exclaim, // ! 37 bar, // | 38 colon, // : 39 40 kw_vscale, 41 kw_x, 42 kw_true, 43 kw_false, 44 kw_declare, 45 kw_define, 46 kw_global, 47 kw_constant, 48 49 kw_dso_local, 50 kw_dso_preemptable, 51 52 kw_private, 53 kw_internal, 54 kw_linkonce, 55 kw_linkonce_odr, 56 kw_weak, // Used as a linkage, and a modifier for "cmpxchg". 57 kw_weak_odr, 58 kw_appending, 59 kw_dllimport, 60 kw_dllexport, 61 kw_common, 62 kw_available_externally, 63 kw_default, 64 kw_hidden, 65 kw_protected, 66 kw_unnamed_addr, 67 kw_local_unnamed_addr, 68 kw_externally_initialized, 69 kw_extern_weak, 70 kw_external, 71 kw_thread_local, 72 kw_localdynamic, 73 kw_initialexec, 74 kw_localexec, 75 kw_zeroinitializer, 76 kw_undef, 77 kw_poison, 78 kw_null, 79 kw_none, 80 kw_to, 81 kw_caller, 82 kw_within, 83 kw_from, 84 kw_tail, 85 kw_musttail, 86 kw_notail, 87 kw_target, 88 kw_triple, 89 kw_source_filename, 90 kw_unwind, 91 kw_deplibs, // FIXME: Remove in 4.0 92 kw_datalayout, 93 kw_volatile, 94 kw_atomic, 95 kw_unordered, 96 kw_monotonic, 97 kw_acquire, 98 kw_release, 99 kw_acq_rel, 100 kw_seq_cst, 101 kw_syncscope, 102 kw_nnan, 103 kw_ninf, 104 kw_nsz, 105 kw_arcp, 106 kw_contract, 107 kw_reassoc, 108 kw_afn, 109 kw_fast, 110 kw_nuw, 111 kw_nsw, 112 kw_exact, 113 kw_inbounds, 114 kw_inrange, 115 kw_align, 116 kw_addrspace, 117 kw_section, 118 kw_partition, 119 kw_alias, 120 kw_ifunc, 121 kw_module, 122 kw_asm, 123 kw_sideeffect, 124 kw_alignstack, 125 kw_inteldialect, 126 kw_gc, 127 kw_prefix, 128 kw_prologue, 129 kw_c, 130 131 kw_cc, 132 kw_ccc, 133 kw_fastcc, 134 kw_coldcc, 135 kw_intel_ocl_bicc, 136 kw_cfguard_checkcc, 137 kw_x86_stdcallcc, 138 kw_x86_fastcallcc, 139 kw_x86_thiscallcc, 140 kw_x86_vectorcallcc, 141 kw_x86_regcallcc, 142 kw_arm_apcscc, 143 kw_arm_aapcscc, 144 kw_arm_aapcs_vfpcc, 145 kw_aarch64_vector_pcs, 146 kw_aarch64_sve_vector_pcs, 147 kw_msp430_intrcc, 148 kw_avr_intrcc, 149 kw_avr_signalcc, 150 kw_ptx_kernel, 151 kw_ptx_device, 152 kw_spir_kernel, 153 kw_spir_func, 154 kw_x86_64_sysvcc, 155 kw_win64cc, 156 kw_webkit_jscc, 157 kw_anyregcc, 158 kw_swiftcc, 159 kw_swifttailcc, 160 kw_preserve_mostcc, 161 kw_preserve_allcc, 162 kw_ghccc, 163 kw_x86_intrcc, 164 kw_hhvmcc, 165 kw_hhvm_ccc, 166 kw_cxx_fast_tlscc, 167 kw_amdgpu_vs, 168 kw_amdgpu_ls, 169 kw_amdgpu_hs, 170 kw_amdgpu_es, 171 kw_amdgpu_gs, 172 kw_amdgpu_ps, 173 kw_amdgpu_cs, 174 kw_amdgpu_kernel, 175 kw_amdgpu_gfx, 176 kw_tailcc, 177 178 // Attributes: 179 kw_attributes, 180 kw_allocsize, 181 kw_alwaysinline, 182 kw_argmemonly, 183 kw_sanitize_address, 184 kw_sanitize_hwaddress, 185 kw_sanitize_memtag, 186 kw_builtin, 187 kw_byval, 188 kw_inalloca, 189 kw_cold, 190 kw_convergent, 191 kw_dereferenceable, 192 kw_dereferenceable_or_null, 193 kw_disable_sanitizer_instrumentation, 194 kw_elementtype, 195 kw_inaccessiblememonly, 196 kw_inaccessiblemem_or_argmemonly, 197 kw_inlinehint, 198 kw_inreg, 199 kw_jumptable, 200 kw_minsize, 201 kw_naked, 202 kw_nest, 203 kw_noalias, 204 kw_noundef, 205 kw_nobuiltin, 206 kw_nocallback, 207 kw_nocapture, 208 kw_noduplicate, 209 kw_nofree, 210 kw_noimplicitfloat, 211 kw_noinline, 212 kw_norecurse, 213 kw_nonlazybind, 214 kw_nomerge, 215 kw_nonnull, 216 kw_noprofile, 217 kw_noredzone, 218 kw_noreturn, 219 kw_nosync, 220 kw_nocf_check, 221 kw_nounwind, 222 kw_nosanitize_coverage, 223 kw_null_pointer_is_valid, 224 kw_optforfuzzing, 225 kw_optnone, 226 kw_optsize, 227 kw_preallocated, 228 kw_readnone, 229 kw_readonly, 230 kw_returned, 231 kw_returns_twice, 232 kw_signext, 233 kw_speculatable, 234 kw_ssp, 235 kw_sspreq, 236 kw_sspstrong, 237 kw_safestack, 238 kw_shadowcallstack, 239 kw_sret, 240 kw_sanitize_thread, 241 kw_sanitize_memory, 242 kw_speculative_load_hardening, 243 kw_strictfp, 244 kw_swifterror, 245 kw_swiftself, 246 kw_swiftasync, 247 kw_uwtable, 248 kw_vscale_range, 249 kw_willreturn, 250 kw_writeonly, 251 kw_zeroext, 252 kw_immarg, 253 kw_byref, 254 kw_mustprogress, 255 256 kw_type, 257 kw_opaque, 258 259 kw_comdat, 260 261 // Comdat types 262 kw_any, 263 kw_exactmatch, 264 kw_largest, 265 kw_nodeduplicate, 266 kw_samesize, 267 268 kw_eq, 269 kw_ne, 270 kw_slt, 271 kw_sgt, 272 kw_sle, 273 kw_sge, 274 kw_ult, 275 kw_ugt, 276 kw_ule, 277 kw_uge, 278 kw_oeq, 279 kw_one, 280 kw_olt, 281 kw_ogt, 282 kw_ole, 283 kw_oge, 284 kw_ord, 285 kw_uno, 286 kw_ueq, 287 kw_une, 288 289 // atomicrmw operations that aren't also instruction keywords. 290 kw_xchg, 291 kw_nand, 292 kw_max, 293 kw_min, 294 kw_umax, 295 kw_umin, 296 297 // Instruction Opcodes (Opcode in UIntVal). 298 kw_fneg, 299 kw_add, 300 kw_fadd, 301 kw_sub, 302 kw_fsub, 303 kw_mul, 304 kw_fmul, 305 kw_udiv, 306 kw_sdiv, 307 kw_fdiv, 308 kw_urem, 309 kw_srem, 310 kw_frem, 311 kw_shl, 312 kw_lshr, 313 kw_ashr, 314 kw_and, 315 kw_or, 316 kw_xor, 317 kw_icmp, 318 kw_fcmp, 319 320 kw_phi, 321 kw_call, 322 kw_trunc, 323 kw_zext, 324 kw_sext, 325 kw_fptrunc, 326 kw_fpext, 327 kw_uitofp, 328 kw_sitofp, 329 kw_fptoui, 330 kw_fptosi, 331 kw_inttoptr, 332 kw_ptrtoint, 333 kw_bitcast, 334 kw_addrspacecast, 335 kw_select, 336 kw_va_arg, 337 338 kw_landingpad, 339 kw_personality, 340 kw_cleanup, 341 kw_catch, 342 kw_filter, 343 344 kw_ret, 345 kw_br, 346 kw_switch, 347 kw_indirectbr, 348 kw_invoke, 349 kw_resume, 350 kw_unreachable, 351 kw_cleanupret, 352 kw_catchswitch, 353 kw_catchret, 354 kw_catchpad, 355 kw_cleanuppad, 356 kw_callbr, 357 358 kw_alloca, 359 kw_load, 360 kw_store, 361 kw_fence, 362 kw_cmpxchg, 363 kw_atomicrmw, 364 kw_getelementptr, 365 366 kw_extractelement, 367 kw_insertelement, 368 kw_shufflevector, 369 kw_extractvalue, 370 kw_insertvalue, 371 kw_blockaddress, 372 kw_dso_local_equivalent, 373 kw_no_cfi, 374 375 kw_freeze, 376 377 // Metadata types. 378 kw_distinct, 379 380 // Use-list order directives. 381 kw_uselistorder, 382 kw_uselistorder_bb, 383 384 // Summary index keywords 385 kw_path, 386 kw_hash, 387 kw_gv, 388 kw_guid, 389 kw_name, 390 kw_summaries, 391 kw_flags, 392 kw_blockcount, 393 kw_linkage, 394 kw_visibility, 395 kw_notEligibleToImport, 396 kw_live, 397 kw_dsoLocal, 398 kw_canAutoHide, 399 kw_function, 400 kw_insts, 401 kw_funcFlags, 402 kw_readNone, 403 kw_readOnly, 404 kw_noRecurse, 405 kw_returnDoesNotAlias, 406 kw_noInline, 407 kw_alwaysInline, 408 kw_noUnwind, 409 kw_mayThrow, 410 kw_hasUnknownCall, 411 kw_mustBeUnreachable, 412 kw_calls, 413 kw_callee, 414 kw_params, 415 kw_param, 416 kw_hotness, 417 kw_unknown, 418 kw_hot, 419 kw_critical, 420 kw_relbf, 421 kw_variable, 422 kw_vTableFuncs, 423 kw_virtFunc, 424 kw_aliasee, 425 kw_refs, 426 kw_typeIdInfo, 427 kw_typeTests, 428 kw_typeTestAssumeVCalls, 429 kw_typeCheckedLoadVCalls, 430 kw_typeTestAssumeConstVCalls, 431 kw_typeCheckedLoadConstVCalls, 432 kw_vFuncId, 433 kw_offset, 434 kw_args, 435 kw_typeid, 436 kw_typeidCompatibleVTable, 437 kw_summary, 438 kw_typeTestRes, 439 kw_kind, 440 kw_unsat, 441 kw_byteArray, 442 kw_inline, 443 kw_single, 444 kw_allOnes, 445 kw_sizeM1BitWidth, 446 kw_alignLog2, 447 kw_sizeM1, 448 kw_bitMask, 449 kw_inlineBits, 450 kw_vcall_visibility, 451 kw_wpdResolutions, 452 kw_wpdRes, 453 kw_indir, 454 kw_singleImpl, 455 kw_branchFunnel, 456 kw_singleImplName, 457 kw_resByArg, 458 kw_byArg, 459 kw_uniformRetVal, 460 kw_uniqueRetVal, 461 kw_virtualConstProp, 462 kw_info, 463 kw_byte, 464 kw_bit, 465 kw_varFlags, 466 467 // Unsigned Valued tokens (UIntVal). 468 LabelID, // 42: 469 GlobalID, // @42 470 LocalVarID, // %42 471 AttrGrpID, // #42 472 SummaryID, // ^42 473 474 // String valued tokens (StrVal). 475 LabelStr, // foo: 476 GlobalVar, // @foo @"foo" 477 ComdatVar, // $foo 478 LocalVar, // %foo %"foo" 479 MetadataVar, // !foo 480 StringConstant, // "foo" 481 DwarfTag, // DW_TAG_foo 482 DwarfAttEncoding, // DW_ATE_foo 483 DwarfVirtuality, // DW_VIRTUALITY_foo 484 DwarfLang, // DW_LANG_foo 485 DwarfCC, // DW_CC_foo 486 EmissionKind, // lineTablesOnly 487 NameTableKind, // GNU 488 DwarfOp, // DW_OP_foo 489 DIFlag, // DIFlagFoo 490 DISPFlag, // DISPFlagFoo 491 DwarfMacinfo, // DW_MACINFO_foo 492 ChecksumKind, // CSK_foo 493 494 // Type valued tokens (TyVal). 495 Type, 496 497 APFloat, // APFloatVal 498 APSInt // APSInt 499 }; 500 } // end namespace lltok 501 } // end namespace llvm 502 503 #endif 504