[PATCH] D87464: [TargetLowering] Improve SimplifyDemandedBits for AND and OR
Jay Foad via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Fri Sep 11 07:46:10 PDT 2020
foad added inline comments.
================
Comment at: llvm/lib/CodeGen/SelectionDAG/TargetLowering.cpp:1220
+ return true;
+ assert(!Known.hasConflict() && "Bits known to be one AND zero?");
+
----------------
RKSimon wrote:
> If we're worried about the cost of the extra SimplifyDemandedBits, we might be able to just create Op0DemandedBits/Op1DemandedBits from the knowbits and only use these on the SimplifyMultipleUseDemandedBits cases below? The calls currently only use the original DemandedBits.
I did try using Op0DemandedBits/Op1DemandedBits for the calls to SimplifyMultipleUseDemandedBits, in addition to the current patch. It only affected one test case and the diff isn't very compelling:
```
diff --git a/llvm/test/CodeGen/X86/shift-parts.ll b/llvm/test/CodeGen/X86/shift-parts.ll
index da00f377020d..ef82065ad12a 100644
--- a/llvm/test/CodeGen/X86/shift-parts.ll
+++ b/llvm/test/CodeGen/X86/shift-parts.ll
@@ -12,11 +12,12 @@ define i32 @int87(i32 %uint64p_8, i1 %cond) nounwind {
; CHECK-NEXT: movq g_144+{{.*}}(%rip), %rax
; CHECK-NEXT: movq g_144+{{.*}}(%rip), %rcx
; CHECK-NEXT: movzbl %sil, %edx
+; CHECK-NEXT: andl $1, %edx
; CHECK-NEXT: shll $6, %edx
; CHECK-NEXT: .p2align 4, 0x90
; CHECK-NEXT: .LBB0_1: # %for.cond
; CHECK-NEXT: # =>This Inner Loop Header: Depth=1
-; CHECK-NEXT: testb $64, %dl
+; CHECK-NEXT: testb %dl, %dl
; CHECK-NEXT: movq %rcx, %rsi
; CHECK-NEXT: cmovneq %rax, %rsi
; CHECK-NEXT: orl $0, %esi
```
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D87464/new/
https://reviews.llvm.org/D87464
More information about the llvm-commits
mailing list