Skip to content

Commit

Permalink
[PatternMatch] Remove 64-bit or less restriction from m_SpecificInt
Browse files Browse the repository at this point in the history
Not sure why this restriction existed, but it seems like we should support any size Constant here.

The particular pattern in the tests is not the only use of this matcher in the tree. There's one in CodeGenPrepare and one in InstSimplify as well.

Differential Revision: https://reviews.llvm.org/D34666

llvm-svn: 306417
  • Loading branch information
topperc committed Jun 27, 2017
1 parent 0a60d85 commit 81cbb0c
Show file tree
Hide file tree
Showing 2 changed files with 5 additions and 12 deletions.
5 changes: 1 addition & 4 deletions llvm/include/llvm/IR/PatternMatch.h
Expand Up @@ -399,10 +399,7 @@ struct specific_intval {
if (const auto *C = dyn_cast<Constant>(V))
CI = dyn_cast_or_null<ConstantInt>(C->getSplatValue());

if (CI && CI->getBitWidth() <= 64)
return CI->getZExtValue() == Val;

return false;
return CI && CI->getValue() == Val;
}
};

Expand Down
12 changes: 4 additions & 8 deletions llvm/test/Transforms/InstCombine/select-cmp-cttz-ctlz.ll
Expand Up @@ -320,10 +320,8 @@ entry:

define i128 @test7(i128 %x) {
; CHECK-LABEL: @test7(
; CHECK-NEXT: [[TMP0:%.*]] = tail call i128 @llvm.ctlz.i128(i128 [[X:%.*]], i1 true), !range !3
; CHECK-NEXT: [[TOBOOL:%.*]] = icmp ne i128 [[X]], 0
; CHECK-NEXT: [[COND:%.*]] = select i1 [[TOBOOL]], i128 [[TMP0]], i128 128
; CHECK-NEXT: ret i128 [[COND]]
; CHECK-NEXT: [[TMP1:%.*]] = tail call i128 @llvm.ctlz.i128(i128 [[X:%.*]], i1 false), !range !3
; CHECK-NEXT: ret i128 [[TMP1]]
;
%1 = tail call i128 @llvm.ctlz.i128(i128 %x, i1 true)
%tobool = icmp ne i128 %x, 0
Expand All @@ -333,10 +331,8 @@ define i128 @test7(i128 %x) {

define i128 @test8(i128 %x) {
; CHECK-LABEL: @test8(
; CHECK-NEXT: [[TMP0:%.*]] = tail call i128 @llvm.cttz.i128(i128 [[X:%.*]], i1 true), !range !3
; CHECK-NEXT: [[TOBOOL:%.*]] = icmp ne i128 [[X]], 0
; CHECK-NEXT: [[COND:%.*]] = select i1 [[TOBOOL]], i128 [[TMP0]], i128 128
; CHECK-NEXT: ret i128 [[COND]]
; CHECK-NEXT: [[TMP1:%.*]] = tail call i128 @llvm.cttz.i128(i128 [[X:%.*]], i1 false), !range !3
; CHECK-NEXT: ret i128 [[TMP1]]
;
%1 = tail call i128 @llvm.cttz.i128(i128 %x, i1 true)
%tobool = icmp ne i128 %x, 0
Expand Down

0 comments on commit 81cbb0c

Please sign in to comment.