Specifically, gc.result benefits from this greatly. Instead of:
gc.result.int.*
gc.result.float.*
gc.result.ptr.*
...
We now have a gc.result.* that can specialize to literally any type.
Paths
| Differential D7020
Intrinsics: introduce llvm_any_ty aka ValueType Any ClosedPublic Authored by artagnon on Jan 16 2015, 1:01 PM.
Details Summary Specifically, gc.result benefits from this greatly. Instead of: gc.result.int.* We now have a gc.result.* that can specialize to literally any type.
Diff Detail Event Timelineartagnon updated this object. Comment Actions I have no comment on the patch as a whole - I'm not qualified to comment on most of it - but I *specifically object* to the removal of the old gc intrinsics in the initial patch. I am fine adding the new form, but I want a migration period where both are supported and consumers can update. (This can be as a short as week or two, but it does need to exist.) Comment Actions Don't remove old intrinsics right away; just deprecate them. reames: My script dug through 3 years of history blaming the lines Comment Actions When you put "any", you probably mean any scalar of int, float, ptr. What happens if somebody specifies vector, i16, double or something else. May be you should put some code in the verifier? Comment Actions Elena Demikhovsky wrote:
iAny is integer-any (scalar or vector) By Any, I really mean absolutely anything: gc.result should be able to Comment Actions In my opinion, you can commit this patch. If you are ok with all possible types, I don't see any other problem. Closed by commit rL226857: Intrinsics: introduce llvm_any_ty aka ValueType Any (authored by artagnon). · Explain WhyJan 22 2015, 12:16 PM This revision was automatically updated to reflect the committed changes.
Revision Contents
Diff 18314 docs/Statepoints.rst
include/llvm/CodeGen/MachineValueType.h
include/llvm/CodeGen/ValueTypes.td
include/llvm/IR/Intrinsics.h
include/llvm/IR/Intrinsics.td
lib/Analysis/TargetTransformInfo.cpp
lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
lib/IR/IRBuilder.cpp
lib/IR/Statepoint.cpp
lib/IR/Verifier.cpp
test/CodeGen/X86/statepoint-call-lowering.ll
test/CodeGen/X86/statepoint-stackmap-format.ll
utils/TableGen/CodeGenDAGPatterns.cpp
utils/TableGen/CodeGenTarget.cpp
utils/TableGen/IntrinsicEmitter.cpp
|