implement  zextload bool and truncstore bool

llvm-svn: 31348
diff --git a/llvm/lib/Target/ARM/ARMInstrInfo.td b/llvm/lib/Target/ARM/ARMInstrInfo.td
index f2100e1..fce25c9 100644
--- a/llvm/lib/Target/ARM/ARMInstrInfo.td
+++ b/llvm/lib/Target/ARM/ARMInstrInfo.td
@@ -347,3 +347,13 @@
           (LDRB IntRegs:$addr)>;
 def : Pat<(extloadi16 IntRegs:$addr),
           (LDRH IntRegs:$addr)>;
+
+// zextload bool -> zextload byte
+def : Pat<(i32 (zextloadi1 IntRegs:$addr)), (LDRB IntRegs:$addr)>;
+def : Pat<(i32 (zextloadi1 IntRegs:$addr)), (LDRB IntRegs:$addr)>;
+
+// truncstore bool -> truncstore byte.
+def : Pat<(truncstorei1 IntRegs:$src, IntRegs:$addr),
+          (STRB IntRegs:$addr, IntRegs:$src)>;
+def : Pat<(truncstorei1 IntRegs:$src, IntRegs:$addr),
+          (STRB IntRegs:$addr, IntRegs:$src)>;