[llvm] [X86, SimplifyCFG] Support hoisting load/store with conditional faulting (Part I) (PR #96878)

Shengchen Kan via llvm-commits llvm-commits at lists.llvm.org
Sun Aug 4 21:44:39 PDT 2024


KanRobert wrote:

### Summary for  comments being addressed

* [x]  Not do hoist if it's expensive. (checked by `not_cheap_to_hoist` in hoist-loads-stores-with-cf.ll) https://github.com/llvm/llvm-project/pull/96878#discussion_r1656831523

* [x]  Share code for check predictability in `SpeculativelyExecuteBB` with the newly added transform. https://github.com/llvm/llvm-project/pull/96878#issuecomment-2195923264

* [x]  Add all/nothing logic so that we don't ever hoist the loads/stores without removing the branch https://github.com/llvm/llvm-project/pull/96878#discussion_r1663692413

* [x]  Make sure that this patch doesn't cause crashes or miscompilation on the following benchmarks:
    * [ ]   Clang stage2 build
    * [x]   SPEC 2006/2017
    * [x]   llvm-test-suite
    * [x]  https://github.com/dtcxzyw/llvm-opt-benchmark
    * [x]   fuzzers (e.g., csmith)
    
    https://github.com/llvm/llvm-project/pull/96878#issuecomment-2198044038

* [x] Run these three transforms of SimplifyCFG  in CodeGen  to avoid the awkwardness in middle pass
https://github.com/llvm/llvm-project/pull/96878#issuecomment-2208335348

* [x] Support `load_from_gep`  in this PR or **the follow-up patches** (checked by `load_from_gep` in hoist-loads-stores-with-cf.ll) https://github.com/llvm/llvm-project/pull/96878#discussion_r1658169639

* [ ]  File **a separate PR** to support conditional load/store of ptrs with +cf https://github.com/llvm/llvm-project/pull/96878#issuecomment-2209436371

* [ ]  Extend LLVM IR to support scalar versioned masked.load/store gradually **in the follow-up patches** https://github.com/llvm/llvm-project/pull/96878#issuecomment-2212961381

https://github.com/llvm/llvm-project/pull/96878


More information about the llvm-commits mailing list