module LLVM.FFI.Core.Attribute (
    Name(Name),
    zeroext,
    signext,
    inreg,
    byval,
    sret,
    align,
    noalias,
    nocapture,
    nest,
    returned,
    nonnull,
    dereferenceable,
    dereferenceableOrNull,
    swiftself,
    swifterror,
    immarg,
    alignstack,
    allocsize,
    alwaysinline,
    builtin,
    cold,
    convergent,
    inaccessiblememonly,
    inaccessiblememOrArgmemonly,
    inlinehint,
    jumptable,
    minsize,
    naked,
    noJumpTables,
    nobuiltin,
    noduplicate,
    nofree,
    noimplicitfloat,
    noinline,
    nonlazybind,
    noredzone,
    indirectTlsSegRefs,
    noreturn,
    norecurse,
    willreturn,
    nosync,
    nounwind,
    nullPointerIsValid,
    optforfuzzing,
    optnone,
    optsize,
    patchableFunction,
    probeStack,
    readnone,
    readonly,
    stackProbeSize,
    noStackArgProbe,
    writeonly,
    argmemonly,
    returnsTwice,
    safestack,
    sanitizeAddress,
    sanitizeMemory,
    sanitizeThread,
    sanitizeHwaddress,
    sanitizeMemtag,
    speculativeLoadHardening,
    speculatable,
    ssp,
    sspreq,
    sspstrong,
    strictfp,
    uwtable,
    nocfCheck,
    shadowcallstack,
    ) where


-- data Function
-- data Parameter
newtype Name = Name String

-- fgrep '<dt><code class="docutils literal' /usr/share/doc/llvm-9*/html/LangRef.html

-- * Parameter attributes

zeroext :: Name
zeroext :: Name
zeroext = String -> Name
Name String
"zeroext"

signext :: Name
signext :: Name
signext = String -> Name
Name String
"signext"

inreg :: Name
inreg :: Name
inreg = String -> Name
Name String
"inreg"

byval :: Name
byval :: Name
byval = String -> Name
Name String
"byval"

sret :: Name
sret :: Name
sret = String -> Name
Name String
"sret"

align :: Name
align :: Name
align = String -> Name
Name String
"align"

noalias :: Name
noalias :: Name
noalias = String -> Name
Name String
"noalias"

nocapture :: Name
nocapture :: Name
nocapture = String -> Name
Name String
"nocapture"

nest :: Name
nest :: Name
nest = String -> Name
Name String
"nest"

returned :: Name
returned :: Name
returned = String -> Name
Name String
"returned"

nonnull :: Name
nonnull :: Name
nonnull = String -> Name
Name String
"nonnull"

dereferenceable :: Name
dereferenceable :: Name
dereferenceable = String -> Name
Name String
"dereferenceable"

dereferenceableOrNull :: Name
dereferenceableOrNull :: Name
dereferenceableOrNull = String -> Name
Name String
"dereferenceable_or_null"

swiftself :: Name
swiftself :: Name
swiftself = String -> Name
Name String
"swiftself"

swifterror :: Name
swifterror :: Name
swifterror = String -> Name
Name String
"swifterror"

immarg :: Name
immarg :: Name
immarg = String -> Name
Name String
"immarg"


-- * Function attributes

alignstack :: Name
alignstack :: Name
alignstack = String -> Name
Name String
"alignstack"

allocsize :: Name
allocsize :: Name
allocsize = String -> Name
Name String
"allocsize"

alwaysinline :: Name
alwaysinline :: Name
alwaysinline = String -> Name
Name String
"alwaysinline"

builtin :: Name
builtin :: Name
builtin = String -> Name
Name String
"builtin"

cold :: Name
cold :: Name
cold = String -> Name
Name String
"cold"

convergent :: Name
convergent :: Name
convergent = String -> Name
Name String
"convergent"

inaccessiblememonly :: Name
inaccessiblememonly :: Name
inaccessiblememonly = String -> Name
Name String
"inaccessiblememonly"

inaccessiblememOrArgmemonly :: Name
inaccessiblememOrArgmemonly :: Name
inaccessiblememOrArgmemonly = String -> Name
Name String
"inaccessiblemem_or_argmemonly"

inlinehint :: Name
inlinehint :: Name
inlinehint = String -> Name
Name String
"inlinehint"

jumptable :: Name
jumptable :: Name
jumptable = String -> Name
Name String
"jumptable"

minsize :: Name
minsize :: Name
minsize = String -> Name
Name String
"minsize"

naked :: Name
naked :: Name
naked = String -> Name
Name String
"naked"

noJumpTables :: Name
noJumpTables :: Name
noJumpTables = String -> Name
Name String
"no-jump-tables"

nobuiltin :: Name
nobuiltin :: Name
nobuiltin = String -> Name
Name String
"nobuiltin"

noduplicate :: Name
noduplicate :: Name
noduplicate = String -> Name
Name String
"noduplicate"

nofree :: Name
nofree :: Name
nofree = String -> Name
Name String
"nofree"

noimplicitfloat :: Name
noimplicitfloat :: Name
noimplicitfloat = String -> Name
Name String
"noimplicitfloat"

noinline :: Name
noinline :: Name
noinline = String -> Name
Name String
"noinline"

nonlazybind :: Name
nonlazybind :: Name
nonlazybind = String -> Name
Name String
"nonlazybind"

noredzone :: Name
noredzone :: Name
noredzone = String -> Name
Name String
"noredzone"

indirectTlsSegRefs :: Name
indirectTlsSegRefs :: Name
indirectTlsSegRefs = String -> Name
Name String
"indirect-tls-seg-refs"

noreturn :: Name
noreturn :: Name
noreturn = String -> Name
Name String
"noreturn"

norecurse :: Name
norecurse :: Name
norecurse = String -> Name
Name String
"norecurse"

willreturn :: Name
willreturn :: Name
willreturn = String -> Name
Name String
"willreturn"

nosync :: Name
nosync :: Name
nosync = String -> Name
Name String
"nosync"

nounwind :: Name
nounwind :: Name
nounwind = String -> Name
Name String
"nounwind"

nullPointerIsValid :: Name
nullPointerIsValid :: Name
nullPointerIsValid = String -> Name
Name String
"null-pointer-is-valid"

optforfuzzing :: Name
optforfuzzing :: Name
optforfuzzing = String -> Name
Name String
"optforfuzzing"

optnone :: Name
optnone :: Name
optnone = String -> Name
Name String
"optnone"

optsize :: Name
optsize :: Name
optsize = String -> Name
Name String
"optsize"

patchableFunction :: Name
patchableFunction :: Name
patchableFunction = String -> Name
Name String
"patchable-function"

probeStack :: Name
probeStack :: Name
probeStack = String -> Name
Name String
"probe-stack"

readnone :: Name
readnone :: Name
readnone = String -> Name
Name String
"readnone"

readonly :: Name
readonly :: Name
readonly = String -> Name
Name String
"readonly"

stackProbeSize :: Name
stackProbeSize :: Name
stackProbeSize = String -> Name
Name String
"stack-probe-size"

noStackArgProbe :: Name
noStackArgProbe :: Name
noStackArgProbe = String -> Name
Name String
"no-stack-arg-probe"

writeonly :: Name
writeonly :: Name
writeonly = String -> Name
Name String
"writeonly"

argmemonly :: Name
argmemonly :: Name
argmemonly = String -> Name
Name String
"argmemonly"

returnsTwice :: Name
returnsTwice :: Name
returnsTwice = String -> Name
Name String
"returns_twice"

safestack :: Name
safestack :: Name
safestack = String -> Name
Name String
"safestack"

sanitizeAddress :: Name
sanitizeAddress :: Name
sanitizeAddress = String -> Name
Name String
"sanitize_address"

sanitizeMemory :: Name
sanitizeMemory :: Name
sanitizeMemory = String -> Name
Name String
"sanitize_memory"

sanitizeThread :: Name
sanitizeThread :: Name
sanitizeThread = String -> Name
Name String
"sanitize_thread"

sanitizeHwaddress :: Name
sanitizeHwaddress :: Name
sanitizeHwaddress = String -> Name
Name String
"sanitize_hwaddress"

sanitizeMemtag :: Name
sanitizeMemtag :: Name
sanitizeMemtag = String -> Name
Name String
"sanitize_memtag"

speculativeLoadHardening :: Name
speculativeLoadHardening :: Name
speculativeLoadHardening = String -> Name
Name String
"speculative_load_hardening"

speculatable :: Name
speculatable :: Name
speculatable = String -> Name
Name String
"speculatable"

ssp :: Name
ssp :: Name
ssp = String -> Name
Name String
"ssp"

sspreq :: Name
sspreq :: Name
sspreq = String -> Name
Name String
"sspreq"

sspstrong :: Name
sspstrong :: Name
sspstrong = String -> Name
Name String
"sspstrong"

strictfp :: Name
strictfp :: Name
strictfp = String -> Name
Name String
"strictfp"

uwtable :: Name
uwtable :: Name
uwtable = String -> Name
Name String
"uwtable"

nocfCheck :: Name
nocfCheck :: Name
nocfCheck = String -> Name
Name String
"nocf_check"

shadowcallstack :: Name
shadowcallstack :: Name
shadowcallstack = String -> Name
Name String
"shadowcallstack"