[llvm] [CVP] Propagate constant range on icmp at use level (PR #73767)

Yingwei Zheng via llvm-commits llvm-commits at lists.llvm.org
Mon Dec 18 23:00:49 PST 2023


dtcxzyw wrote:

Could you please have a look at https://github.com/dtcxzyw/llvm-opt-benchmark/commit/a71358ff9fb7233749342fa22e417556e5880532?

Our CI detected a regression in `simdjson.cpp`.
```
--- a/bench/simdjson/optimized/simdjson.cpp.ll
+++ b/bench/simdjson/optimized/simdjson.cpp.ll
@@ -4867,8 +4867,10 @@ _ZNK8simdjson7haswell12_GLOBAL__N_16stage116buf_block_readerILm128EE13get_remain
   call fastcc void @_ZN8simdjson7haswell12_GLOBAL__N_16stage111bit_indexer5writeEjm(ptr noundef nonnull align 8 dereferenceable(8) %indexer.i.i, i32 noundef %conv.i.i, i64 noundef %15)
   %16 = getelementptr inbounds i8, ptr %indexer.i, i64 16
   %this.val.i.i = load i64, ptr %16, align 16
-  %tobool.i.not.i.not.i.i = icmp eq i64 %this.val.i.i, 0
+  %tobool.i.not.i.i.i = icmp ne i64 %this.val.i.i, 0
+  %tobool.i.not.i.not.i.i = xor i1 %tobool.i.not.i.i.i, true
   %brmerge.i.i = select i1 %cmp.i.i, i1 true, i1 %tobool.i.not.i.not.i.i
+  %tobool.i.not.i.mux.i.i = select i1 %cmp.i.i, i1 %tobool.i.not.i.i.i, i1 false
   br i1 %brmerge.i.i, label %if.end.i25.i, label %_ZN8simdjson7haswell12_GLOBAL__N_16stage123json_structural_indexer5indexILm128EEENS_10error_codeEPKhmRNS0_25dom_parser_implementationENS_11stage1_modeE.exit
 
 if.end.i25.i:                                     ; preds = %_ZNK8simdjson7haswell12_GLOBAL__N_16stage116buf_block_readerILm128EE13get_remainderEPh.exit.i
```

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


More information about the llvm-commits mailing list