; LLVM 21 https://llvm.org/docs/LangRef.html
;! Keywords ===========================================================
; Linkage Types
; https://llvm.org/docs/LangRef.html#linkage-types
private
internal
available_externally
linkonce
weak
common
appending
extern_weak
linkonce_odr
weak_odr
external
; Global Variables
; https://llvm.org/docs/LangRef.html#global-variables
global
constant
section
partition
; align
comdat
; Functions
; https://llvm.org/docs/LangRef.html#functions
define
section
comdat
declare
; Garbage Collector Strategy Names
; https://llvm.org/docs/LangRef.html#garbage-collector-strategy-names
gc
; Prefix Data
; https://llvm.org/docs/LangRef.html#prefix-data
prefix
; Aliases
; https://llvm.org/docs/LangRef.html#aliases
alias
; IFuncs
; https://llvm.org/docs/LangRef.html#ifuncs
ifunc
; Attribute Groups
; https://llvm.org/docs/LangRef.html#attribute-groups
attributes
; Module-Level Inline Assembly
; https://llvm.org/docs/LangRef.html#module-level-inline-assembly
module asm
; Data Layout
; https://llvm.org/docs/LangRef.html#data-layout
target datalayout
; Target Triple
; https://llvm.org/docs/LangRef.html#target-triple
target triple
; Use-list Order Directives
; https://llvm.org/docs/LangRef.html#use-list-order-directives
uselistorder uselistorder_bb
; Source Filename
; https://llvm.org/docs/LangRef.html#source-filename
source_filename
; Constants
; https://llvm.org/docs/LangRef.html#constants
true false
null none
global
undef
poison
; Metadata
; https://llvm.org/docs/LangRef.html#metadata
distinct
;! Type ===========================================================
; https://llvm.org/docs/LangRef.html#type-system
void
i1 i8 i16 i32 i64 i128
half
bfloat
float
double
fp128
x86_fp80
ppc_fp128
x86_amx
ptr ; Pointer Type
vscale ; Vector Type
label ; Label Type
token ; Token Type
metadata ; Metadata Type
type ; Structure Type
opaque ; Opaque Structure Types
;! Attribute ===========================================================
; Calling Conventions
; https://llvm.org/docs/LangRef.html#calling-conventions
ccc
fastcc
coldcc
ghccc
anyregcc
preserve_mostcc
preserve_allcc
preserve_nonecc
cxx_fast_tlscc
tailcc
swiftcc
swifttailcc
cfguard_checkcc
; Visibility Styles
; https://llvm.org/docs/LangRef.html#visibility-styles
default
hidden
protected
; DLL Storage Classes
; https://llvm.org/docs/LangRef.html#dll-storage-classes
dllimport
dllexport
; Thread Local Storage Models
; https://llvm.org/docs/LangRef.html#thread-local-storage-models
thread_local()
localdynamic
initialexec
localexec
; Runtime Preemption Specifiers
; https://llvm.org/docs/LangRef.html#runtime-preemption-specifiers
dso_preemptable
dso_local
; Global Variables
; https://llvm.org/docs/LangRef.html#global-variables
unnamed_addr
local_unnamed_addr
code_model
no_sanitize_address
no_sanitize_hwaddress
sanitize_address_dyninit
sanitize_memtag
; Comdats
; https://llvm.org/docs/LangRef.html#comdats
any
exactmatch
largest
noduplicates
samesize
; Parameter Attributes
; https://llvm.org/docs/LangRef.html#parameter-attributes
zeroext
signext
noext
inreg
byval()
preallocated()
inalloca()
sret()
elementtype()
align
align()
noalias
captures(...)
nofree
nest
returned
nonnull
dereferenceable()
dereferenceable_or_null()
swiftself
swiftasync
swifterror
immarg
noundef
nofpclass()
alignstack()
allocalign
allocptr
readnone
readonly
writeonly
writable
initializes((Lo1, Hi1), ...)
dead_on_unwind
dead_on_return
range( , )
; Prologue Data
; https://llvm.org/docs/LangRef.html#prologue-data
prologue
; Personality Function
; https://llvm.org/docs/LangRef.html#personality-function
personality
; Function Attributes
; https://llvm.org/docs/LangRef.html#function-attributes
alignstack()
alloc-family
allockind("KIND")
alloc-variant-zeroed
allocsize([, ])
alwaysinline
builtin
cold
convergent
disable_sanitizer_instrumentation
dontcall-error
dontcall-warn
fn_ret_thunk_extern
frame-pointer
hot
inlinehint
jumptable
memory(...)
minsize
naked
no-inline-line-tables
no-jump-tables
nobuiltin
nocallback
nodivergencesource
noduplicate
nofree
noimplicitfloat
noinline
nomerge
nonlazybind
noprofile
skipprofile
noredzone
indirect-tls-seg-refs
noreturn
norecurse
willreturn
nosync
nounwind
nosanitize_bounds
nosanitize_coverage
null_pointer_is_valid
optdebug
optforfuzzing
optnone
optsize
patchable-function
probe-stack
stack-probe-size
no-stack-arg-probe
returns_twice
safestack
sanitize_address
sanitize_memory
sanitize_thread
sanitize_hwaddress
sanitize_memtag
sanitize_realtime
sanitize_realtime_blocking
sanitize_alloc_token
speculative_load_hardening
speculatable
ssp
sspstrong
sspreq
strictfp
denormal-fp-math
denormal-fp-math-f32
thunk
uwtable[(sync|async)]
nocf_check
shadowcallstack
mustprogress
warn-stack-size
vscale_range([, ])
nooutline
; Call Site Attributes
; https://llvm.org/docs/LangRef.html#call-site-attributes
vector-function-abi-variant
preallocated()
; Global Attributes
; https://llvm.org/docs/LangRef.html#global-attributes
no_sanitize_address
no_sanitize_hwaddress
sanitize_memtag
sanitize_address_dyninit
; Assume Operand Bundles
; https://llvm.org/docs/LangRef.html#assume-operand-bundles
separate_storage(, )
; Atomic Memory Ordering Constraints
; https://llvm.org/docs/LangRef.html#atomic-memory-ordering-constraints
unordered
monotonic
acquire
release
acq_rel
seq_cst
; Fast-Math Flags
; https://llvm.org/docs/LangRef.html#fast-math-flags
fast
nnan
ninf
nsz
arcp
contract
afn
reassoc
; Pointer Type
addrspace()
; Constants
zeroinitializer
blockaddress(@function, %block)
dso_local_equivalent
no_cfi @func
; Inline Assembler Expressions
; https://llvm.org/docs/LangRef.html#inline-assembler-expressions
sideeffect
alignstack
inteldialect
; Instruction
nuw
nsw
exact
atomic
volatile
inbounds
inrange
syncscope("")
;! Instruction ===========================================================
; https://llvm.org/docs/LangRef.html#instruction-reference
; Terminator Instructions
; https://llvm.org/docs/LangRef.html#terminator-instructions
ret
ret void
br i1 , label , label
br label
switch , label [ , label ... ]
indirectbr * , [ label , label , ... ]
invoke [cconv] [ret attrs] [addrspace()] | () [fn attrs]
[operand bundles] to label
unwind label
callbr [cconv] [ret attrs] [addrspace()] | () [fn attrs]
[operand bundles] to label [indirect labels]
resume
catchswitch
within [ label , label , ... ] unwind to
caller
catchswitch within [ label , label , ... ] unwind label
catchret
from to label
cleanupret from unwind label
cleanupret from unwind to caller
unreachable
; Unary Operations
; https://llvm.org/docs/LangRef.html#unary-operations
fneg [fast-math flags]*
; Binary Operations
; https://llvm.org/docs/LangRef.html#binary-operations
add ,
add nuw ,
add nsw ,
add nuw nsw ,
fadd [fast-math flags]* ,
sub ,
sub nuw ,
sub nsw ,
sub nuw nsw ,
fsub [fast-math flags]* ,
mul ,
mul nuw ,
mul nsw ,
mul nuw nsw ,
fmul [fast-math flags]* ,
udiv ,
udiv exact ,
sdiv ,
sdiv exact ,
fdiv [fast-math flags]* ,
urem ,
srem ,
frem [fast-math flags]* ,
; Bitwise Binary Operations
; https://llvm.org/docs/LangRef.html#bitwise-binary-operations
shl ,
shl nuw ,
shl nsw ,
shl nuw nsw ,
lshr ,
lshr exact ,
ashr ,
ashr exact ,
and ,
or ,
xor ,
; Vector Operations
; https://llvm.org/docs/LangRef.html#vector-operations
extractelement > ,
extractelement > ,
insertelement > , ,
insertelement > , ,
shufflevector > , > ,
shufflevector > , > v2,
; Aggregate Operations
; https://llvm.org/docs/LangRef.html#aggregate-operations
extractvalue , {, }*
insertvalue , , {, }*
; Memory Access and Addressing Operations
; https://llvm.org/docs/LangRef.html#memory-access-and-addressing-operations
alloca [inalloca] [, ] [, align ] [, addrspace()]
load [volatile] , ptr [, align ][, !nontemporal !][, !invariant.load !][, !invariant.group !][, !nonnull !][, !dereferenceable !][, !dereferenceable_or_null !][, !align !][, !noundef !]
load atomic [volatile] , ptr [syncscope("")] , align [, !invariant.group !]
! = !{ i32 1 }
! = !{}
! = !{ i64 }
! = !{ i64 }
store [volatile] , ptr [, align ][, !nontemporal !][, !invariant.group !]
store atomic [volatile] , ptr [syncscope("")] , align [, !invariant.group !]
! = !{ i32 1 }
! = !{}
fence [syncscope("