[llvm-commits] [llvm] r77329 - in /llvm/trunk: lib/Target/ARM/ARMInstrThumb2.td test/CodeGen/Thumb2/thumb2-lsr3.ll

David Goodwin david_goodwin at apple.com
Tue Jul 28 10:06:56 PDT 2009


Author: david_goodwin
Date: Tue Jul 28 12:06:49 2009
New Revision: 77329

URL: http://llvm.org/viewvc/llvm-project?rev=77329&view=rev
Log:
Add Thumb-2 patterns for ARMsrl_flag and ARMsra_flag.

Added:
    llvm/trunk/test/CodeGen/Thumb2/thumb2-lsr3.ll
Modified:
    llvm/trunk/lib/Target/ARM/ARMInstrThumb2.td

Modified: llvm/trunk/lib/Target/ARM/ARMInstrThumb2.td
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ARM/ARMInstrThumb2.td?rev=77329&r1=77328&r2=77329&view=diff

==============================================================================
--- llvm/trunk/lib/Target/ARM/ARMInstrThumb2.td (original)
+++ llvm/trunk/lib/Target/ARM/ARMInstrThumb2.td Tue Jul 28 12:06:49 2009
@@ -715,9 +715,18 @@
 defm t2ROR  : T2I_sh_ir<"ror", BinOpFrag<(rotr node:$LHS, node:$RHS)>>;
 
 def t2MOVrx : T2sI<(outs GPR:$dst), (ins GPR:$src),
-                   "mov", " $dst, $src, rrx",
+                   "rrx", " $dst, $src",
                    [(set GPR:$dst, (ARMrrx GPR:$src))]>;
 
+let Defs = [CPSR] in {
+def t2MOVsrl_flag : T2XI<(outs GPR:$dst), (ins GPR:$src),
+                         "lsrs.w $dst, $src, #1",
+                         [(set GPR:$dst, (ARMsrl_flag GPR:$src))]>;
+def t2MOVsra_flag : T2XI<(outs GPR:$dst), (ins GPR:$src),
+                         "asrs.w $dst, $src, #1",
+                         [(set GPR:$dst, (ARMsra_flag GPR:$src))]>;
+}
+
 //===----------------------------------------------------------------------===//
 //  Bitwise Instructions.
 //

Added: llvm/trunk/test/CodeGen/Thumb2/thumb2-lsr3.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/Thumb2/thumb2-lsr3.ll?rev=77329&view=auto

==============================================================================
--- llvm/trunk/test/CodeGen/Thumb2/thumb2-lsr3.ll (added)
+++ llvm/trunk/test/CodeGen/Thumb2/thumb2-lsr3.ll Tue Jul 28 12:06:49 2009
@@ -0,0 +1,19 @@
+; RUN: llvm-as < %s | llc -march=thumb -mattr=+thumb2
+
+define i1 @test1(i64 %poscnt, i32 %work) {
+entry:
+; CHECK: rrx r0, r0
+; CHECK: lsrs.w r1, r1, #1
+	%0 = lshr i64 %poscnt, 1
+	%1 = icmp eq i64 %0, 0
+	ret i1 %1
+}
+
+define i1 @test2(i64 %poscnt, i32 %work) {
+entry:
+; CHECK: rrx r0, r0
+; CHECK: asrs.w r1, r1, #1
+	%0 = ashr i64 %poscnt, 1
+	%1 = icmp eq i64 %0, 0
+	ret i1 %1
+}





More information about the llvm-commits mailing list