Go to the documentation of this file.
13 #ifndef LLVM_XRAY_FDRRECORDS_H
14 #define LLVM_XRAY_FDRRECORDS_H
29 class RecordInitializer;
146 Seconds(
S), Nanos(
N) {}
252 int32_t
delta()
const {
return Delta; }
280 int32_t
delta()
const {
return Delta; }
327 int32_t
pid()
const {
return PID; }
350 int32_t
tid()
const {
return TID; }
378 static constexpr
unsigned kFunctionRecordSize = 8;
427 : E(DE), OffsetPtr(
OP), Version(V) {}
449 #endif // LLVM_XRAY_FDRRECORDS_H
static bool classof(const Record *R)
This is an optimization pass for GlobalISel generic memory operations.
We currently emits eax Perhaps this is what we really should generate is Is imull three or four cycles eax eax The current instruction priority is based on pattern complexity The former is more complex because it folds a load so the latter will not be emitted Perhaps we should use AddedComplexity to give LEA32r a higher priority We should always try to match LEA first since the LEA matching code does some estimate to determine whether the match is profitable if we care more about code then imull is better It s two bytes shorter than movl leal On a Pentium M
Record & operator=(const Record &)=delete
TypedEventRecord(int32_t S, int32_t D, uint16_t E, std::string P)
This currently compiles esp xmm0 movsd esp eax eax esp ret We should use not the dag combiner This is because dagcombine2 needs to be able to see through the X86ISD::Wrapper which DAGCombine can t really do The code for turning x load into a single vector load is target independent and should be moved to the dag combiner The code for turning x load into a vector load can only handle a direct load from a global or a direct load from the stack It should be generalized to handle any load from P
Error visit(BufferExtents &) override
@ RK_Metadata_LastMetadata
RecordTypes recordType() const
NewBufferRecord(int32_t T)
Error apply(RecordVisitor &V) override
BufferExtents(uint64_t S)
@ RK_Metadata_CustomEvent
static bool classof(const Record *R)
static constexpr uint16_t DefaultVersion
virtual ~RecordVisitor()=default
Error apply(RecordVisitor &V) override
amdgpu Simplify well known AMD library false FunctionCallee Value * Arg
Error apply(RecordVisitor &V) override
static GCRegistry::Add< CoreCLRGC > E("coreclr", "CoreCLR-compatible GC")
CustomEventRecordV5(int32_t S, int32_t D, std::string P)
(vector float) vec_cmpeq(*A, *B) C
Error apply(RecordVisitor &V) override
RecordTypes
Determines the supported types of records that could be seen in XRay traces.
FunctionRecord(RecordTypes K, int32_t F, uint32_t D)
@ RK_Metadata_WallClockTime
static GCRegistry::Add< OcamlGC > B("ocaml", "ocaml 3.10-compatible GC")
static bool classof(const Record *R)
Record(const Record &)=delete
@ RK_Metadata_BufferExtents
static bool classof(const Record *R)
static bool classof(const Record *R)
CallArgRecord(uint64_t A)
static bool classof(const Record *R)
@ RK_Metadata_EndOfBuffer
static bool classof(const Record *R)
static GCRegistry::Add< StatepointGC > D("statepoint-example", "an example strategy for statepoint")
uint16_t eventType() const
NewCPUIDRecord(uint16_t C, uint64_t T)
Error apply(RecordVisitor &V) override
virtual Error visit(BufferExtents &)=0
virtual ~Record()=default
Error apply(RecordVisitor &V) override
TSCWrapRecord(uint64_t B)
OutputIt move(R &&Range, OutputIt Out)
Provide wrappers to std::move which take ranges instead of having to pass begin/end explicitly.
WallclockRecord(uint64_t S, uint32_t N)
Error apply(RecordVisitor &V) override
static StringRef kindToString(RecordKind K)
Error apply(RecordVisitor &V) override
RecordKind getRecordType() const
RecordInitializer(DataExtractor &DE, uint64_t &OP)
static bool classof(const Record *R)
StringRef - Represent a constant reference to a string, i.e.
add sub stmia L5 ldr r0 bl L_printf $stub Instead of a and a wouldn t it be better to do three moves *Return an aggregate type is even return S
RecordInitializer(DataExtractor &DE, uint64_t &OP, uint16_t V)
static bool classof(const Record *R)
static bool classof(const Record *R)
Lightweight error class with error context and mandatory checking.
Error apply(RecordVisitor &V) override
@ RK_Metadata_CustomEventV5
static bool classof(const Record *R)
Error apply(RecordVisitor &V) override
static bool classof(const Record *R)
CustomEventRecord(uint64_t S, uint64_t T, uint16_t C, std::string D)
Error apply(RecordVisitor &V) override
virtual Error apply(RecordVisitor &V)=0
int32_t functionId() const
Error apply(RecordVisitor &V) override