1. May 20, 2020
    • Matt Morehouse's avatar
      Entropic: Boosting LibFuzzer Performance · e2e38fca
      Matt Morehouse authored
      Summary:
      This is collaboration between Marcel Boehme @ Monash, Australia and Valentin Manès plus Sang Kil Cha @ KAIST, South Korea.
      
      We have made a few modifications to boost LibFuzzer performance by changing how weights are assigned to the seeds in the corpus. Essentially, seeds that reveal more "information" about globally rare features are assigned a higher weight. Our results on the Fuzzer Test Suite seem quite promising. In terms of bug finding, our Entropic patch usually finds the same errors much faster and in more runs. In terms of coverage, our version Entropic achieves the same coverage in less than half the time for the majority of subjects. For the lack of space, we shared more detailed performance results directly with @kcc. We'll publish the preprint with all the technical details as soon as it is accepted. Happy to share if you drop us an email.
      
      There should be plenty of opportunities to optimise further. For instance, while Entropic achieves the same coverage in less than half the time, Entropic has a much lower #execs per second. We ran the perf-tool and found a few performance bottlenecks.
      
      Thanks for open-sourcing LibFuzzer (and the entire LLVM Compiler Infrastructure)! This has been such a tremendous help to my research.
      
      Patch By: Marcel Boehme
      
      Reviewers: kcc, metzman, morehouse, Dor1s, vitalybuka
      
      Reviewed By: kcc
      
      Subscribers: dgg5503, Valentin, llvm-commits, kcc
      
      Tags: #llvm
      
      Differential Revision: https://reviews.llvm.org/D73776
      e2e38fca
    • Andrea Di Biagio's avatar
      [X86] Split masked integer vector stores into vXi32/vXi64 variants (PR45975). NFC · 0980c9c6
      Andrea Di Biagio authored
      This effectively splits the scheduling WriteVecMaskedStore(Y) classes
      into four different classes (one per each variant).
      
      The new VecMaskedStore scheduling classes are now correctly marked as
      'unsupported' by the bdver2 and btver2 models.
      
      No functional change intended.
      
      Reviewed By: RKSimon
      
      Differential Revision: https://reviews.llvm.org/D80201
      0980c9c6
    • Florian Hahn's avatar
      [LV] Remove duplicated return stmt (NFC). · 7cefd1b4
      Florian Hahn authored
      7cefd1b4
    • Jay Foad's avatar
      [InstCombine] Remove hasNoInfs check for pow(C,y) -> exp2(log2(C)*y) · 9bc989a4
      Jay Foad authored
      We already check hasNoNaNs and that x is finite and strictly positive.
      That only leaves the following special cases (taken from the Linux man
      page for pow):
      
      If x is +1, the result is 1.0 (even if y is a NaN).
      If the absolute value of x is less than 1, and y is negative infinity, the result is positive infinity.
      If the absolute value of x is greater than 1, and y is negative infinity, the result is +0.
      If the absolute value of x is less than 1, and y is positive infinity, the result is +0.
      If the absolute value of x is greater than 1, and y is positive infinity, the result is positive infinity.
      
      The first case is handled elsewhere, and this transformation preserves
      all the others, so there is no need to limit it to hasNoInfs.
      
      Differential Revision: https://reviews.llvm.org/D79409
      9bc989a4
  2. May 19, 2020