arm.md: Provide a big-endian version of the (zero_extend:SI (subreg:QI ...)) splitter.
authorRichard Sandiford <richard@codesourcery.com>
Wed, 14 Dec 2005 17:55:16 +0000 (17:55 +0000)
committerRichard Sandiford <rsandifo@gcc.gnu.org>
Wed, 14 Dec 2005 17:55:16 +0000 (17:55 +0000)
* gcc/config/arm/arm.md: Provide a big-endian version of the
(zero_extend:SI (subreg:QI ...)) splitter.

From-SVN: r108524

gcc/ChangeLog
gcc/config/arm/arm.md

index 62be1623c165e062dbca7dc05b1bb9578581a1d1..3831d49dfdbbcd987fb3a40dfd04a07d897d1e30 100644 (file)
@@ -1,3 +1,8 @@
+2005-12-14  Richard Sandiford  <richard@codesourcery.com>
+
+       * gcc/config/arm/arm.md: Provide a big-endian version of the
+       (zero_extend:SI (subreg:QI ...)) splitter.
+
 2005-12-14  J"orn Rennecke <joern.rennecke@st.com>
 
        * struct-equiv.c (note_local_live): Handle hard regs with different
index aa28c3fae77f566fc9bfa73940b07b21451b03e4..f9d4743380b28b1efc9d1bcfd121b8ebffe6043e 100644 (file)
   ""
 )
 
+(define_split
+  [(set (match_operand:SI 0 "s_register_operand" "")
+       (zero_extend:SI (subreg:QI (match_operand:SI 1 "" "") 3)))
+   (clobber (match_operand:SI 2 "s_register_operand" ""))]
+  "TARGET_ARM && (GET_CODE (operands[1]) != MEM) && BYTES_BIG_ENDIAN"
+  [(set (match_dup 2) (match_dup 1))
+   (set (match_dup 0) (and:SI (match_dup 2) (const_int 255)))]
+  ""
+)
+
 (define_insn "*compareqi_eq0"
   [(set (reg:CC_Z CC_REGNUM)
        (compare:CC_Z (match_operand:QI 0 "s_register_operand" "r")