Do not attempt to use ROR for Thumb1.
Patch by Matt Fischer! llvm-svn: 159538
This commit is contained in:
parent
d0bcfe4d9d
commit
2297221028
|
@ -2161,8 +2161,8 @@ defm t2ROR : T2I_sh_ir<0b11, "ror", imm0_31,
|
|||
BinOpFrag<(rotr node:$LHS, node:$RHS)>, "t2ROR">;
|
||||
|
||||
// (rotr x, (and y, 0x...1f)) ==> (ROR x, y)
|
||||
def : Pat<(rotr rGPR:$lhs, (and rGPR:$rhs, lo5AllOne)),
|
||||
(t2RORrr rGPR:$lhs, rGPR:$rhs)>;
|
||||
def : T2Pat<(rotr rGPR:$lhs, (and rGPR:$rhs, lo5AllOne)),
|
||||
(t2RORrr rGPR:$lhs, rGPR:$rhs)>;
|
||||
|
||||
let Uses = [CPSR] in {
|
||||
def t2RRX : T2sTwoReg<(outs rGPR:$Rd), (ins rGPR:$Rm), IIC_iMOVsi,
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
; RUN: llc < %s -march=thumb -mattr=+thumb2 | FileCheck %s
|
||||
|
||||
; RUN: llc < %s -march=thumb | FileCheck %s -check-prefix=THUMB1
|
||||
|
||||
; CHECK: f1:
|
||||
; CHECK: ror.w r0, r0, #22
|
||||
|
@ -13,6 +13,8 @@ define i32 @f1(i32 %a) {
|
|||
; CHECK: f2:
|
||||
; CHECK-NOT: and
|
||||
; CHECK: ror
|
||||
; THUMB1: f2
|
||||
; THUMB1: and
|
||||
define i32 @f2(i32 %v, i32 %nbits) {
|
||||
entry:
|
||||
%and = and i32 %nbits, 31
|
||||
|
@ -21,4 +23,4 @@ entry:
|
|||
%shl = shl i32 %v, %sub
|
||||
%or = or i32 %shl, %shr
|
||||
ret i32 %or
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue