[llvm-dev] [RFC] Intrinsic naming convention (words with dots)
Hal Finkel via llvm-dev
llvm-dev at lists.llvm.org
Tue Dec 1 02:26:07 PST 2015
Hi everyone,
We seem to have allowed our documented target-independent intrinsics to acquire a somewhat-haphazard naming system, and I think we should standardize on one convention. All of the intrinsics have 'llvm.' as a prefix, and some also have some additional prefix 'llvm.dbg.', 'llvm.eh.', 'llvm.experimental.', etc., but after that we lose consistency. When there is just a single word (or acronym) everything is fine, but the way we join multiple words (or acronyms) falls into three categories:
1. No separator (e.g. @llvm.readcyclecounter)
2. Using '.' as a separator (e.g. @llvm.sadd.with.overflow)
3. Using '_' as a separator (e.g. @llvm.read_register)
I propose that we standardize on (2) -- words with dots -- as it seems to have a plurality of more-recent intrinsics (and I think it is easy to read, as is (3)). Thoughts?
Although this is somewhat subjective, here's our current set of intrinsics with multiple words (or acronyms) by these categories. I'm excluding here externally-defined terms (e.g. llvm.va_start):
No separators (except for the initial namespace prefix):
@llvm.gcroot
@llvm.gcread
@llvm.gcwrite
@llvm.experimental.stackmap
@llvm.experimental.patchpoint
@llvm.experimental.gc.statepoint
@llvm.returnaddress
@llvm.frameaddress
@llvm.localescape
@llvm.localrecover
@llvm.stacksave
@llvm.stackrestore
@llvm.pcmarker
@llvm.readcyclecounter
@llvm.bitreverse
@llvm.eh.begincatch
@llvm.eh.endcatch
@llvm.eh.padparam
@llvm.stackprotector
@llvm.stackprotectorcheck
@llvm.objectsize
@llvm.donothing
Words with dots:
@llvm.sadd.with.overflow
@llvm.uadd.with.overflow
@llvm.ssub.with.overflow
@llvm.usub.with.overflow
@llvm.smul.with.overflow
@llvm.umul.with.overflow
@llvm.convert.to.fp16
@llvm.convert.from.fp16
@llvm.eh.typeid.for
@llvm.init.trampoline
@llvm.adjust.trampoline
@llvm.masked.load
@llvm.masked.store
@llvm.masked.gather
@llvm.masked.scatter
@llvm.lifetime.start
@llvm.lifetime.end
@llvm.invariant.start
@llvm.invariant.end
@llvm.invariant.group.barrier
@llvm.var.annotation
@llvm.ptr.annotation
@llvm.bitset.test
Words with underscores (except for the initial namespace prefix):
@llvm.read_register
@llvm.write_register
@llvm.clear_cache
@llvm.instrprof_increment
@llvm.instrprof_value_profile
Thanks again,
Hal
--
Hal Finkel
Assistant Computational Scientist
Leadership Computing Facility
Argonne National Laboratory
More information about the llvm-dev
mailing list