Create an ARMISD::AND node. This node is exactly like the "ARM::AND" node, but
authorBill Wendling <isanbard@gmail.com>
Sun, 29 Aug 2010 03:02:11 +0000 (03:02 +0000)
committerBill Wendling <isanbard@gmail.com>
Sun, 29 Aug 2010 03:02:11 +0000 (03:02 +0000)
it sets the CPSR register.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112393 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/ARM/ARMISelLowering.cpp
lib/Target/ARM/ARMISelLowering.h
lib/Target/ARM/ARMInstrThumb2.td

index 5a10b728d4f5fb50b1692e097e949498f9c1f39b..2fafb4fd008bfb73935166ee88c45da4ccfa5285 100644 (file)
@@ -609,6 +609,7 @@ const char *ARMTargetLowering::getTargetNodeName(unsigned Opcode) const {
   case ARMISD::BR2_JT:        return "ARMISD::BR2_JT";
   case ARMISD::RET_FLAG:      return "ARMISD::RET_FLAG";
   case ARMISD::PIC_ADD:       return "ARMISD::PIC_ADD";
+  case ARMISD::AND:           return "ARMISD::AND";
   case ARMISD::CMP:           return "ARMISD::CMP";
   case ARMISD::CMPZ:          return "ARMISD::CMPZ";
   case ARMISD::CMPFP:         return "ARMISD::CMPFP";
index 51dee2de52a15e06eed21e6b5899cb4c7bff8eac..2e0d81d887b5dadd4e55f8c492e38a49ac2a3362 100644 (file)
@@ -47,6 +47,8 @@ namespace llvm {
 
       PIC_ADD,      // Add with a PC operand and a PIC label.
 
+      AND,          // ARM "and" instruction that sets the 's' flag in CPSR.
+
       CMP,          // ARM compare instructions.
       CMPZ,         // ARM compare that sets only Z flag.
       CMPFP,        // ARM VFP compare instruction, sets FPSCR.
index 31c1eeffdbc9b3b0ebb9231b90f7e6082e05ded0..62f6ecd7572517bc648fed9625c2ebc13c63795f 100644 (file)
@@ -1631,6 +1631,10 @@ defm t2EOR  : T2I_bin_w_irs<0b0100, "eor",
 defm t2BIC  : T2I_bin_w_irs<0b0001, "bic",
                             BinOpFrag<(and node:$LHS, (not node:$RHS))>>;
 
+let Defs = [CPSR] in
+defm t2ANDflag : T2I_bin_w_irs<0b0000, "and",
+                               BinOpFrag<(ARMand node:$LHS, node:$RHS)>, 1>;
+
 let Constraints = "$src = $dst" in
 def t2BFC : T2I<(outs rGPR:$dst), (ins rGPR:$src, bf_inv_mask_imm:$imm),
                 IIC_iUNAsi, "bfc", "\t$dst, $imm",