summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJim Grosbach <grosbach@apple.com>2010-07-28 23:25:44 +0000
committerJim Grosbach <grosbach@apple.com>2010-07-28 23:25:44 +0000
commitc445a7d29bd7d8d8952fc4b7e447ed5dd031ae4a (patch)
treebc98a18ae53227d2ac6fcfc2f743896f8c77b5a7
parentea4c4fbf079a2ce9cc76cd51b8f7585eaddb4996 (diff)
downloadbcm5719-llvm-c445a7d29bd7d8d8952fc4b7e447ed5dd031ae4a.tar.gz
bcm5719-llvm-c445a7d29bd7d8d8952fc4b7e447ed5dd031ae4a.zip
ARM mode version of r109693. Remove incorrect substitution pattern for UXTB16. It wrongly assumed the input shift was actually a rotate. rdar://8240138
llvm-svn: 109696
-rw-r--r--llvm/lib/Target/ARM/ARMInstrInfo.td8
1 files changed, 6 insertions, 2 deletions
diff --git a/llvm/lib/Target/ARM/ARMInstrInfo.td b/llvm/lib/Target/ARM/ARMInstrInfo.td
index 7e00b4bedd4..761434b4f8d 100644
--- a/llvm/lib/Target/ARM/ARMInstrInfo.td
+++ b/llvm/lib/Target/ARM/ARMInstrInfo.td
@@ -1567,8 +1567,12 @@ defm UXTH : AI_unary_rrot<0b01101111,
defm UXTB16 : AI_unary_rrot<0b01101100,
"uxtb16", UnOpFrag<(and node:$Src, 0x00FF00FF)>>;
-def : ARMV6Pat<(and (shl GPR:$Src, (i32 8)), 0xFF00FF),
- (UXTB16r_rot GPR:$Src, 24)>;
+// FIXME: This pattern incorrectly assumes the shl operator is a rotate.
+// The transformation should probably be done as a combiner action
+// instead so we can include a check for masking back in the upper
+// eight bits of the source into the lower eight bits of the result.
+//def : ARMV6Pat<(and (shl GPR:$Src, (i32 8)), 0xFF00FF),
+// (UXTB16r_rot GPR:$Src, 24)>;
def : ARMV6Pat<(and (srl GPR:$Src, (i32 8)), 0xFF00FF),
(UXTB16r_rot GPR:$Src, 8)>;
OpenPOWER on IntegriCloud