return len + perf_sample__fprintf_pt_spacing(len, fp);
 }
 
+/* Intel PT Event Trace */
+static int perf_sample__fprintf_synth_evt(struct perf_sample *sample, FILE *fp)
+{
+       struct perf_synth_intel_evt *data = perf_sample__synth_ptr(sample);
+       const char *cfe[32] = {NULL, "INTR", "IRET", "SMI", "RSM", "SIPI",
+                              "INIT", "VMENTRY", "VMEXIT", "VMEXIT_INTR",
+                              "SHUTDOWN"};
+       const char *evd[64] = {"PFA", "VMXQ", "VMXR"};
+       const char *s;
+       int len, i;
+
+       if (perf_sample__bad_synth_size(sample, *data))
+               return 0;
+
+       s = cfe[data->type];
+       if (s) {
+               len = fprintf(fp, " cfe: %s IP: %d vector: %u",
+                             s, data->ip, data->vector);
+       } else {
+               len = fprintf(fp, " cfe: %u IP: %d vector: %u",
+                             data->type, data->ip, data->vector);
+       }
+       for (i = 0; i < data->evd_cnt; i++) {
+               unsigned int et = data->evd[i].evd_type & 0x3f;
+
+               s = evd[et];
+               if (s) {
+                       len += fprintf(fp, " %s: %#" PRIx64,
+                                      s, data->evd[i].payload);
+               } else {
+                       len += fprintf(fp, " EVD_%u: %#" PRIx64,
+                                      et, data->evd[i].payload);
+               }
+       }
+       return len + perf_sample__fprintf_pt_spacing(len, fp);
+}
+
 static int perf_sample__fprintf_synth(struct perf_sample *sample,
                                      struct evsel *evsel, FILE *fp)
 {
                return perf_sample__fprintf_synth_cbr(sample, fp);
        case PERF_SYNTH_INTEL_PSB:
                return perf_sample__fprintf_synth_psb(sample, fp);
+       case PERF_SYNTH_INTEL_EVT:
+               return perf_sample__fprintf_synth_evt(sample, fp);
        default:
                break;
        }