summaryrefslogtreecommitdiffstats
path: root/llvm/lib
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2005-01-11 04:31:30 +0000
committerChris Lattner <sabre@nondot.org>2005-01-11 04:31:30 +0000
commit9d7cf998ca7de5366e34971c00b5d0e2e16a08d4 (patch)
tree155cf41b10a35aed9d03af6d09f8debdc9b3773f /llvm/lib
parent87e645c5bd3086c4efab0562e196a13eac732557 (diff)
downloadbcm5719-llvm-9d7cf998ca7de5366e34971c00b5d0e2e16a08d4.tar.gz
bcm5719-llvm-9d7cf998ca7de5366e34971c00b5d0e2e16a08d4.zip
Emit NOT instructions.
llvm-svn: 19455
Diffstat (limited to 'llvm/lib')
-rw-r--r--llvm/lib/Target/X86/X86ISelPattern.cpp15
1 files changed, 14 insertions, 1 deletions
diff --git a/llvm/lib/Target/X86/X86ISelPattern.cpp b/llvm/lib/Target/X86/X86ISelPattern.cpp
index e9531c5db9f..f2edb651ae0 100644
--- a/llvm/lib/Target/X86/X86ISelPattern.cpp
+++ b/llvm/lib/Target/X86/X86ISelPattern.cpp
@@ -1382,8 +1382,21 @@ unsigned ISel::SelectExpr(SDOperand N) {
case ISD::XOR:
if (ConstantSDNode *CN = dyn_cast<ConstantSDNode>(N.getOperand(1))) {
Tmp1 = SelectExpr(N.getOperand(0));
+
+ if (CN->isAllOnesValue()) {
+ switch (N.getValueType()) {
+ default: assert(0 && "Cannot add this type!");
+ case MVT::i1:
+ case MVT::i8: Opc = X86::NOT8r; break;
+ case MVT::i16: Opc = X86::NOT16r; break;
+ case MVT::i32: Opc = X86::NOT32r; break;
+ }
+ BuildMI(BB, Opc, 1, Result).addReg(Tmp1);
+ return Result;
+ }
+
switch (N.getValueType()) {
- default: assert(0 && "Cannot add this type!");
+ default: assert(0 && "Cannot xor this type!");
case MVT::i1:
case MVT::i8: Opc = X86::XOR8ri; break;
case MVT::i16: Opc = X86::XOR16ri; break;
OpenPOWER on IntegriCloud