		i	synthesize instructions events
		b	synthesize branches events (branch misses for Arm SPE)
		c	synthesize branches events (calls only)
		r	synthesize branches events (returns only)
		x	synthesize transactions events
		w	synthesize ptwrite events
		p	synthesize power events (incl. PSB events for Intel PT)
		o	synthesize other events recorded due to the use
			of aux-output (refer to perf record)
		e	synthesize error events
		d	create a debug log
		f	synthesize first level cache events
		m	synthesize last level cache events
		M	synthesize memory events
		t	synthesize TLB events
		a	synthesize remote access events
		g	synthesize a call chain (use with i or x)
		G	synthesize a call chain on existing event records
		l	synthesize last branch entries (use with i or x)
		L	synthesize last branch entries on existing event records
		s       skip initial number of events
		q	quicker (less detailed) decoding
		Z	prefer to ignore timestamps (so-called "timeless" decoding)

	The default is all events i.e. the same as --itrace=ibxwpe,
	except for perf script where it is --itrace=ce

	In addition, the period (default 100000, except for perf script where it is 1)
	for instructions events can be specified in units of:

		i	instructions
		t	ticks
		ms	milliseconds
		us	microseconds
		ns	nanoseconds (default)

	Also the call chain size (default 16, max. 1024) for instructions or
	transactions events can be specified.

	Also the number of last branch entries (default 64, max. 1024) for
	instructions or transactions events can be specified.

	Similar to options g and l, size may also be specified for options G and L.
	On x86, note that G and L work poorly when data has been recorded with
	large PEBS. Refer linkperf:perf-intel-pt[1] man page for details.

	It is also possible to skip events generated (instructions, branches, transactions,
	ptwrite, power) at the beginning. This is useful to ignore initialization code.

	--itrace=i0nss1000000

	skips the first million instructions.

	The 'e' option may be followed by flags which affect what errors will or
	will not be reported. Each flag must be preceded by either '+' or '-'.
	The flags are:
		o	overflow
		l	trace data lost

	If supported, the 'd' option may be followed by flags which affect what
	debug messages will or will not be logged. Each flag must be preceded
	by either '+' or '-'. The flags are:
		a	all perf events

	If supported, the 'q' option may be repeated to increase the effect.
