We can set additional bits in a mask given that we know the other operand of an AND already has some bits set to zero. This can be more efficient if doing so allows us to use an instruction which implicitly sign extends the immediate. This fixes PR24085. Differential Revision: http://reviews.llvm.org/D11289 llvm-svn: 245169
12 lines
202 B
LLVM
12 lines
202 B
LLVM
; RUN: llc < %s -march=x86-64 | FileCheck %s
|
|
|
|
define i64 @test(i64 %A) {
|
|
; CHECK: @test
|
|
; CHECK: shrq $54
|
|
; CHECK: andq $-4
|
|
; CHECK: ret
|
|
%B = lshr i64 %A, 56
|
|
%C = shl i64 %B, 2
|
|
ret i64 %C
|
|
}
|