From ece53c911447fb9632b4e0596b5ec3e3f0a4de77 Mon Sep 17 00:00:00 2001 From: Wei Guozhi Date: Wed, 7 Jul 2010 17:55:27 +0000 Subject: [PATCH] thumb2.md (peephole2 to convert zero_extract/compare of lowest bits to lshift/compare): New. 2010-07-07 Wei Guozhi * config/arm/thumb2.md (peephole2 to convert zero_extract/compare of lowest bits to lshift/compare): New. From-SVN: r161929 --- gcc/ChangeLog | 5 +++++ gcc/config/arm/thumb2.md | 23 +++++++++++++++++++++++ 2 files changed, 28 insertions(+) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 45e211a531f..e3330dc4150 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2010-07-07 Wei Guozhi + + * config/arm/thumb2.md (peephole2 to convert zero_extract/compare + of lowest bits to lshift/compare): New. + 2010-07-07 Tom Tromey * doc/tm.texi: Update. diff --git a/gcc/config/arm/thumb2.md b/gcc/config/arm/thumb2.md index 2e03b8d6430..77f1ac49f49 100644 --- a/gcc/config/arm/thumb2.md +++ b/gcc/config/arm/thumb2.md @@ -1501,3 +1501,26 @@ VOIDmode, operands[0], const0_rtx); ") +(define_peephole2 + [(set (match_operand:CC_NOOV 0 "cc_register" "") + (compare:CC_NOOV (zero_extract:SI + (match_operand:SI 1 "low_register_operand" "") + (match_operand:SI 2 "const_int_operand" "") + (const_int 0)) + (const_int 0))) + (match_scratch:SI 3 "l") + (set (pc) + (if_then_else (match_operator:CC_NOOV 4 "equality_operator" + [(match_dup 0) (const_int 0)]) + (match_operand 5 "" "") + (match_operand 6 "" "")))] + "TARGET_THUMB2 + && (INTVAL (operands[2]) > 0 && INTVAL (operands[2]) < 32)" + [(parallel [(set (match_dup 0) + (compare:CC_NOOV (ashift:SI (match_dup 1) (match_dup 2)) + (const_int 0))) + (clobber (match_dup 3))]) + (set (pc) + (if_then_else (match_op_dup 4 [(match_dup 0) (const_int 0)]) + (match_dup 5) (match_dup 6)))] + ") -- 2.30.2