On Thu, May 16, 2013 at 1:16 PM, Peter Zijlstra <pet...@infradead.org> wrote: > On Thu, May 16, 2013 at 08:15:17PM +1000, Michael Neuling wrote: >> Peter, >> >> BTW PowerPC also has the ability to filter on conditional branches. Any >> chance we could add something like the follow to perf also? >> > > I don't see an immediate problem with that except that we on x86 need to > implement that in the software filter. Stephane do you see any > fundamental issue with that? > On X86, the LBR cannot filter on conditional in HW. Thus as Peter said, it would have to be done in SW. I did not add that because I think those branches are not necessarily useful for tools.
>> >> diff --git a/include/uapi/linux/perf_event.h >> b/include/uapi/linux/perf_event.h >> index fb104e5..891c769 100644 >> --- a/include/uapi/linux/perf_event.h >> +++ b/include/uapi/linux/perf_event.h >> @@ -157,8 +157,9 @@ enum perf_branch_sample_type { >> PERF_SAMPLE_BRANCH_ANY_CALL = 1U << 4, /* any call branch */ >> PERF_SAMPLE_BRANCH_ANY_RETURN = 1U << 5, /* any return branch */ >> PERF_SAMPLE_BRANCH_IND_CALL = 1U << 6, /* indirect calls */ >> + PERF_SAMPLE_BRANCH_CONDITIONAL = 1U << 7, /* conditional branches */ >> >> - PERF_SAMPLE_BRANCH_MAX = 1U << 7, /* non-ABI */ >> + PERF_SAMPLE_BRANCH_MAX = 1U << 8, /* non-ABI */ >> }; >> >> #define PERF_SAMPLE_BRANCH_PLM_ALL \ >> diff --git a/tools/perf/builtin-record.c b/tools/perf/builtin-record.c >> index cdf58ec..5b0b89d 100644 >> --- a/tools/perf/builtin-record.c >> +++ b/tools/perf/builtin-record.c >> @@ -676,6 +676,7 @@ static const struct branch_mode branch_modes[] = { >> BRANCH_OPT("any_call", PERF_SAMPLE_BRANCH_ANY_CALL), >> BRANCH_OPT("any_ret", PERF_SAMPLE_BRANCH_ANY_RETURN), >> BRANCH_OPT("ind_call", PERF_SAMPLE_BRANCH_IND_CALL), >> + BRANCH_OPT("cnd", PERF_SAMPLE_BRANCH_CONDITIONAL), >> BRANCH_END >> }; >> -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/