radeon/llvm: Remove AMDIL binary instrutions (OR, AND, XOR, NOT)
authorTom Stellard <thomas.stellard@amd.com>
Wed, 23 May 2012 18:48:36 +0000 (14:48 -0400)
committerTom Stellard <thomas.stellard@amd.com>
Thu, 24 May 2012 18:12:31 +0000 (14:12 -0400)
src/gallium/drivers/radeon/AMDGPUGenInstrEnums.pl
src/gallium/drivers/radeon/AMDILConversions.td
src/gallium/drivers/radeon/AMDILISelLowering.cpp
src/gallium/drivers/radeon/AMDILInstrPatterns.td
src/gallium/drivers/radeon/AMDILInstructions.td
src/gallium/drivers/radeon/R600InstrInfo.cpp
src/gallium/drivers/radeon/R600Instructions.td
src/gallium/drivers/radeon/R600LowerInstructions.cpp

index 1ba3afe9db08f0258e14e04148d82bd45130aac9..d40495925d8716ceaea7a1d0429092716cb0cb04 100644 (file)
@@ -36,7 +36,6 @@ my @F32_MULTICLASSES = qw {
 };
 
 my @I32_MULTICLASSES = qw {
-  BinaryOpMCInt
   BinaryOpMCi32
   BinaryOpMCi32Const
 };
@@ -54,7 +53,7 @@ my $FILE_TYPE = $ARGV[0];
 
 open AMDIL, '<', 'AMDILInstructions.td';
 
-my @INST_ENUMS = ('NONE', 'FEQ', 'FGE', 'FLT', 'FNE', 'MOVE_f32', 'MOVE_i32', 'FTOI', 'ITOF', 'UGT', 'IGE', 'INE', 'UGE', 'IEQ', 'BINARY_OR_i32', 'BINARY_NOT_i32');
+my @INST_ENUMS = ('NONE', 'FEQ', 'FGE', 'FLT', 'FNE', 'MOVE_f32', 'MOVE_i32', 'FTOI', 'ITOF', 'UGT', 'IGE', 'INE', 'UGE', 'IEQ');
 
 while (<AMDIL>) {
   if ($_ =~ /defm\s+([A-Z_]+)\s+:\s+([A-Za-z0-9]+)</) {
index 1bc5e4ddf37c49010debe4722095922ea39c2da5..6c00e65bed3f8c2e4600567f9db632527383349d 100644 (file)
@@ -210,22 +210,6 @@ def uctof_f32:Pat < (f32 (uint_to_fp GPRI8:$src)),
    (LOADCONST_i32 24)))) >;
 
 
-def ftosc_i8:Pat < (i8 (fp_to_sint GPRF32:$src)),
-(i8
- (IL_ASCHAR_i32
-  (BINARY_AND_i32
-(FTOI GPRF32:$src),
-   (LOADCONST_i32 0x000000FF)))) >;
-
-
-def ftouc_i8:Pat < (i8 (fp_to_uint GPRF32:$src)),
-(i8
- (IL_ASCHAR_i32
-  (BINARY_AND_i32
-(FTOU GPRF32:$src),
-   (LOADCONST_i32 0x000000FF)))) >;
-
-
 def sctod_f64:Pat < (f64 (sint_to_fp GPRI8:$src)),
 (f64 (FTOD
       (ITOF
@@ -245,23 +229,6 @@ def uctod_f64:Pat < (f64 (uint_to_fp GPRI8:$src)),
    (LOADCONST_i32 24)),
   (LOADCONST_i32 24))))) >;
 
-
-def dtosc_i8:Pat < (i8 (fp_to_sint GPRF64:$src)),
-(i8
- (IL_ASCHAR_i32
-  (BINARY_AND_i32
-(FTOI (DTOF GPRF64:$src)),
-   (LOADCONST_i32 0x000000FF)))) >;
-
-
-def dtouc_i8:Pat < (i8 (fp_to_uint GPRF64:$src)),
-(i8
- (IL_ASCHAR_i32
-  (BINARY_AND_i32
-(FTOU (DTOF GPRF64:$src)),
-   (LOADCONST_i32 0x000000FF)))) >;
-
-
 def sstof_f32:Pat < (f32 (sint_to_fp GPRI16:$src)),
 (f32
  (ITOF
@@ -281,23 +248,6 @@ def ustof_f32:Pat < (f32 (uint_to_fp GPRI16:$src)),
     (LOADCONST_i32 16)),
    (LOADCONST_i32 16)))) >;
 
-
-def ftoss_i16:Pat < (i16 (fp_to_sint GPRF32:$src)),
-(i16
- (IL_ASSHORT_i32
-  (BINARY_AND_i32
-(FTOI GPRF32:$src),
-   (LOADCONST_i32 0x0000FFFF)))) >;
-
-
-def ftous_i16:Pat < (i16 (fp_to_uint GPRF32:$src)),
-(i16
- (IL_ASSHORT_i32
-  (BINARY_AND_i32
-(FTOU GPRF32:$src),
-   (LOADCONST_i32 0x0000FFFF)))) >;
-
-
 def sstod_f64:Pat < (f64 (sint_to_fp GPRI16:$src)),
 (f64 (FTOD
       (ITOF
@@ -318,73 +268,6 @@ def ustod_f64:Pat < (f64 (uint_to_fp GPRI16:$src)),
   (LOADCONST_i32 16))))) >;
 
 
-def dtoss_i16:Pat < (i16 (fp_to_sint GPRF64:$src)),
-(i16
- (IL_ASSHORT_i32
-  (BINARY_AND_i32
-(FTOI (DTOF GPRF64:$src)),
-   (LOADCONST_i32 0x0000FFFF)))) >;
-
-
-def dtous_i16:Pat < (i16 (fp_to_uint GPRF64:$src)),
-(i16
- (IL_ASSHORT_i32
-  (BINARY_AND_i32
-(FTOU (DTOF GPRF64:$src)),
-   (LOADCONST_i32 0x0000FFFF)))) >;
-
-
-
-
-
-def stoc_i8:Pat < (i8 (trunc GPRI16:$src)),
-(IL_ASCHAR_i32
-   (IL_ASINT_i16
-(BINARY_AND_i16 GPRI16:$src,
-     (LOADCONST_i16 0x000000FF)))
-  ) >;
-
-
-def itoc_i8:Pat < (i8 (trunc GPRI32:$src)),
-(IL_ASCHAR_i32
-   (IL_ASINT_i32
-(BINARY_AND_i32 GPRI32:$src,
-     (LOADCONST_i32 0x000000FF)))
-  ) >;
-
-
-def itos_i16:Pat < (i16 (trunc GPRI32:$src)),
-(IL_ASSHORT_i32
-   (IL_ASINT_i32
-(BINARY_AND_i32 GPRI32:$src,
-     (LOADCONST_i32 0x0000FFFF)))
-  ) >;
-
-
-def ltoc_i8:Pat < (i8 (trunc GPRI64:$src)),
-(IL_ASCHAR_i32
-   (BINARY_AND_i32
-(LLO GPRI64:$src),
-    (LOADCONST_i32 0x000000FF))
-  ) >;
-
-
-def ltos_i16:Pat < (i16 (trunc GPRI64:$src)),
-(IL_ASSHORT_i32
-   (BINARY_AND_i32
-(LLO GPRI64:$src),
-    (LOADCONST_i32 0x0000FFFF))
-  ) >;
-
-
-def ltoi_i32:Pat < (i32 (trunc GPRI64:$src)),
-(IL_ASINT_i32
-   (BINARY_AND_i32
-(LLO GPRI64:$src),
-    (LOADCONST_i32 0xFFFFFFFF))
-  ) >;
-
-
 def actos_v2i16:Pat < (v2i16 (anyext GPRV2I8:$src)),
 (IL_ASV2SHORT_v2i32
  (USHRVEC_v2i32
@@ -589,21 +472,6 @@ def uctof_v2f32:Pat < (v2f32 (uint_to_fp GPRV2I8:$src)),
    (VCREATE_v2i32 (LOADCONST_i32 24))))) >;
 
 
-def ftosc_v2i8:Pat < (v2i8 (fp_to_sint GPRV2F32:$src)),
-(v2i8
- (IL_ASV2CHAR_v2i32
-  (BINARY_AND_v2i32
-(FTOI_v2i32 GPRV2F32:$src),
-   (VCREATE_v2i32 (LOADCONST_i32 0x000000FF))))) >;
-
-
-def ftouc_v2i8:Pat < (v2i8 (fp_to_uint GPRV2F32:$src)),
-(v2i8
- (IL_ASV2CHAR_v2i32
-  (BINARY_AND_v2i32
-(FTOU_v2i32 GPRV2F32:$src),
-   (VCREATE_v2i32 (LOADCONST_i32 0x000000FF))))) >;
-
 def sctod_v2f64:Pat < (v2f64 (sint_to_fp GPRV2I8:$src)),
 (v2f64 
  (VINSERT_v2f64
@@ -656,29 +524,6 @@ def uctod_v2f64:Pat < (v2f64 (uint_to_fp GPRV2I8:$src)),
   ), 1, 256)
  ) >;
 
-
-def dtosc_v2i8:Pat < (v2i8 (fp_to_sint GPRV2F64:$src)),
-(v2i8
- (IL_ASV2CHAR_v2i32
-  (BINARY_AND_v2i32
-(FTOI_v2i32 (VINSERT_v2f32 
-             (VCREATE_v2f32 
-              (DTOF (VEXTRACT_v2f64 GPRV2F64:$src, 1))),
-             (DTOF (VEXTRACT_v2f64 GPRV2F64:$src, 2)), 1, 256)),
-   (VCREATE_v2i32 (LOADCONST_i32 0x000000FF))))) >;
-
-
-def dtouc_v2i8:Pat < (v2i8 (fp_to_uint GPRV2F64:$src)),
-(v2i8
- (IL_ASV2CHAR_v2i32
-  (BINARY_AND_v2i32
-(FTOU_v2i32 (VINSERT_v2f32 
-             (VCREATE_v2f32 
-              (DTOF (VEXTRACT_v2f64 GPRV2F64:$src, 1))),
-             (DTOF (VEXTRACT_v2f64 GPRV2F64:$src, 2)), 1, 256)),
-   (VCREATE_v2i32 (LOADCONST_i32 0x000000FF))))) >;
-
-
 def sstof_v2f32:Pat < (v2f32 (sint_to_fp GPRV2I16:$src)),
 (v2f32
  (ITOF_v2f32
@@ -699,22 +544,6 @@ def ustof_v2f32:Pat < (v2f32 (uint_to_fp GPRV2I16:$src)),
    (VCREATE_v2i32 (LOADCONST_i32 16))))) >;
 
 
-def ftoss_v2i16:Pat < (v2i16 (fp_to_sint GPRV2F32:$src)),
-(v2i16
- (IL_ASV2SHORT_v2i32
-  (BINARY_AND_v2i32
-(FTOI_v2i32 GPRV2F32:$src),
-   (VCREATE_v2i32 (LOADCONST_i32 0x0000FFFF))))) >;
-
-
-def ftous_v2i16:Pat < (v2i16 (fp_to_uint GPRV2F32:$src)),
-(v2i16
- (IL_ASV2SHORT_v2i32
-  (BINARY_AND_v2i32
-(FTOU_v2i32 GPRV2F32:$src),
-   (VCREATE_v2i32 (LOADCONST_i32 0x0000FFFF))))) >;
-
-
 def sstod_v2f64:Pat < (v2f64 (sint_to_fp GPRV2I16:$src)),
 (v2f64 
  (VINSERT_v2f64
@@ -768,77 +597,6 @@ def ustod_v2f64:Pat < (v2f64 (uint_to_fp GPRV2I16:$src)),
  ) >;
 
 
-def dtoss_v2i16:Pat < (v2i16 (fp_to_sint GPRV2F64:$src)),
-(v2i16
- (IL_ASV2SHORT_v2i32
-  (BINARY_AND_v2i32
-(FTOI_v2i32 (VINSERT_v2f32 
-             (VCREATE_v2f32 
-              (DTOF (VEXTRACT_v2f64 GPRV2F64:$src, 1))),
-             (DTOF (VEXTRACT_v2f64 GPRV2F64:$src, 2)), 1, 256)),
-   (VCREATE_v2i32 (LOADCONST_i32 0x0000FFFF))))) >;
-
-
-def dtous_v2i16:Pat < (v2i16 (fp_to_uint GPRV2F64:$src)),
-(v2i16
- (IL_ASV2SHORT_v2i32
-  (BINARY_AND_v2i32
-(FTOU_v2i32 (VINSERT_v2f32 
-             (VCREATE_v2f32 
-              (DTOF (VEXTRACT_v2f64 GPRV2F64:$src, 1))),
-             (DTOF (VEXTRACT_v2f64 GPRV2F64:$src, 2)), 1, 256)),
-   (VCREATE_v2i32 (LOADCONST_i32 0x0000FFFF))))) >;
-
-def stoc_v2i8:Pat < (v2i8 (trunc GPRV2I16:$src)),
-(IL_ASV2CHAR_v2i32
-   (IL_ASV2INT_v2i16
-(BINARY_AND_v2i16 GPRV2I16:$src,
-     (VCREATE_v2i16 (LOADCONST_i16 0x000000FF))))
-  ) >;
-
-
-def itoc_v2i8:Pat < (v2i8 (trunc GPRV2I32:$src)),
-(IL_ASV2CHAR_v2i32
-   (IL_ASV2INT_v2i32
-(BINARY_AND_v2i32 GPRV2I32:$src,
-     (VCREATE_v2i32 (LOADCONST_i32 0x000000FF))))
-  ) >;
-
-
-def itos_v2i16:Pat < (v2i16 (trunc GPRV2I32:$src)),
-(IL_ASV2SHORT_v2i32
-   (IL_ASV2INT_v2i32
-(BINARY_AND_v2i32 GPRV2I32:$src,
-     (VCREATE_v2i32 (LOADCONST_i32 0x0000FFFF))))
-  ) >;
-
-
-def ltoc_v2i8:Pat < (v2i8 (trunc GPRV2I64:$src)),
-(IL_ASV2CHAR_v2i32
-   (BINARY_AND_v2i32
-(LLO_v2i64 GPRV2I64:$src),
-    (VCREATE_v2i32 (LOADCONST_i32 0x000000FF)))
-  ) >;
-
-
-def ltos_v2i16:Pat < (v2i16 (trunc GPRV2I64:$src)),
-(IL_ASV2SHORT_v2i32
-   (BINARY_AND_v2i32
-(LLO_v2i64 GPRV2I64:$src),
-    (VCREATE_v2i32 (LOADCONST_i32 0x0000FFFF)))
-  ) >;
-
-
-def ltoi_v2i32:Pat < (v2i32 (trunc GPRV2I64:$src)),
-(IL_ASV2INT_v2i32
-   (BINARY_AND_v2i32
-(LLO_v2i64 GPRV2I64:$src),
-    (VCREATE_v2i32 (LOADCONST_i32 0xFFFFFFFF)))
-  ) >;
-
-
-
-
 def actos_v4i16:Pat < (v4i16 (anyext GPRV4I8:$src)),
 (IL_ASV4SHORT_v4i32
  (USHRVEC_v4i32
@@ -941,22 +699,6 @@ def uctof_v4f32:Pat < (v4f32 (uint_to_fp GPRV4I8:$src)),
    (VCREATE_v4i32 (LOADCONST_i32 24))))) >;
 
 
-def ftosc_v4i8:Pat < (v4i8 (fp_to_sint GPRV4F32:$src)),
-(v4i8
- (IL_ASV4CHAR_v4i32
-  (BINARY_AND_v4i32
-(FTOI_v4i32 GPRV4F32:$src),
-   (VCREATE_v4i32 (LOADCONST_i32 0x000000FF))))) >;
-
-
-def ftouc_v4i8:Pat < (v4i8 (fp_to_uint GPRV4F32:$src)),
-(v4i8
- (IL_ASV4CHAR_v4i32
-  (BINARY_AND_v4i32
-(FTOU_v4i32 GPRV4F32:$src),
-   (VCREATE_v4i32 (LOADCONST_i32 0x000000FF))))) >;
-
-
 def sstof_v4f32:Pat < (v4f32 (sint_to_fp GPRV4I16:$src)),
 (v4f32
  (ITOF_v4f32
@@ -976,47 +718,3 @@ def ustof_v4f32:Pat < (v4f32 (uint_to_fp GPRV4I16:$src)),
     (VCREATE_v4i32 (LOADCONST_i32 16))),
    (VCREATE_v4i32 (LOADCONST_i32 16))))) >;
 
-
-def ftoss_v4i16:Pat < (v4i16 (fp_to_sint GPRV4F32:$src)),
-(v4i16
- (IL_ASV4SHORT_v4i32
-  (BINARY_AND_v4i32
-(FTOI_v4i32 GPRV4F32:$src),
-   (VCREATE_v4i32 (LOADCONST_i32 0x0000FFFF))))) >;
-
-
-def ftous_v4i16:Pat < (v4i16 (fp_to_uint GPRV4F32:$src)),
-(v4i16
- (IL_ASV4SHORT_v4i32
-  (BINARY_AND_v4i32
-(FTOU_v4i32 GPRV4F32:$src),
-   (VCREATE_v4i32 (LOADCONST_i32 0x0000FFFF))))) >;
-
-
-
-
-
-def stoc_v4i8:Pat < (v4i8 (trunc GPRV4I16:$src)),
-(IL_ASV4CHAR_v4i32
-   (IL_ASV4INT_v4i16
-(BINARY_AND_v4i16 GPRV4I16:$src,
-     (VCREATE_v4i16 (LOADCONST_i16 0x000000FF))))
-  ) >;
-
-
-def itoc_v4i8:Pat < (v4i8 (trunc GPRV4I32:$src)),
-(IL_ASV4CHAR_v4i32
-   (IL_ASV4INT_v4i32
-(BINARY_AND_v4i32 GPRV4I32:$src,
-     (VCREATE_v4i32 (LOADCONST_i32 0x000000FF))))
-  ) >;
-
-
-def itos_v4i16:Pat < (v4i16 (trunc GPRV4I32:$src)),
-(IL_ASV4SHORT_v4i32
-   (IL_ASV4INT_v4i32
-(BINARY_AND_v4i32 GPRV4I32:$src,
-     (VCREATE_v4i32 (LOADCONST_i32 0x0000FFFF))))
-  ) >;
-
-
index bb9dcf18d55c580d7026148745ae2363cd475ffd..492c18123645568a1e887110896ece6846de9d7b 100644 (file)
@@ -701,7 +701,6 @@ AMDILTargetLowering::convertToReg(MachineOperand op) const
     setOperationAction(ISD::SIGN_EXTEND_INREG, VT, Custom);
     setOperationAction(ISD::EXTRACT_SUBVECTOR, VT, Custom);
     setOperationAction(ISD::FP_ROUND, VT, Expand);
-    setOperationAction(ISD::OR, VT, Custom);
     setOperationAction(ISD::SUBE, VT, Expand);
     setOperationAction(ISD::SUBC, VT, Expand);
     setOperationAction(ISD::ADD, VT, Custom);
@@ -1599,10 +1598,7 @@ AMDILTargetLowering::LowerOperation(SDValue Op, SelectionDAG &DAG) const
       LOWER(EXTRACT_SUBVECTOR);
       LOWER(SCALAR_TO_VECTOR);
       LOWER(CONCAT_VECTORS);
-      LOWER(AND);
-      LOWER(OR);
       LOWER(SELECT);
-      LOWER(SELECT_CC);
       LOWER(SETCC);
       LOWER(SIGN_EXTEND_INREG);
       LOWER(BITCAST);
@@ -3565,29 +3561,6 @@ AMDILTargetLowering::LowerSCALAR_TO_VECTOR(SDValue Op,
   return Res;
 }
 SDValue
-AMDILTargetLowering::LowerAND(SDValue Op, SelectionDAG &DAG) const
-{
-  SDValue andOp;
-  andOp = DAG.getNode(
-      AMDILISD::AND,
-      Op.getDebugLoc(),
-      Op.getValueType(),
-      Op.getOperand(0),
-      Op.getOperand(1));
-  return andOp;
-}
-SDValue
-AMDILTargetLowering::LowerOR(SDValue Op, SelectionDAG &DAG) const
-{
-  SDValue orOp;
-  orOp = DAG.getNode(AMDILISD::OR,
-      Op.getDebugLoc(),
-      Op.getValueType(),
-      Op.getOperand(0),
-      Op.getOperand(1));
-  return orOp;
-}
-SDValue
 AMDILTargetLowering::LowerSELECT(SDValue Op, SelectionDAG &DAG) const
 {
   SDValue Cond = Op.getOperand(0);
@@ -3601,60 +3574,6 @@ AMDILTargetLowering::LowerSELECT(SDValue Op, SelectionDAG &DAG) const
   return Cond;
 }
 SDValue
-AMDILTargetLowering::LowerSELECT_CC(SDValue Op, SelectionDAG &DAG) const
-{
-  SDValue Cond;
-  SDValue LHS = Op.getOperand(0);
-  SDValue RHS = Op.getOperand(1);
-  SDValue TRUE = Op.getOperand(2);
-  SDValue FALSE = Op.getOperand(3);
-  SDValue CC = Op.getOperand(4);
-  DebugLoc DL = Op.getDebugLoc();
-  bool skipCMov = false;
-  bool genINot = false;
-  EVT OVT = Op.getValueType();
-
-  // Check for possible elimination of cmov
-  if (TRUE.getValueType().getSimpleVT().SimpleTy == MVT::i32) {
-    const ConstantSDNode *trueConst
-      = dyn_cast<ConstantSDNode>( TRUE.getNode() );
-    const ConstantSDNode *falseConst
-      = dyn_cast<ConstantSDNode>( FALSE.getNode() );
-    if (trueConst && falseConst) {
-      // both possible result values are constants
-      if (trueConst->isAllOnesValue()
-          && falseConst->isNullValue()) { // and convenient constants
-        skipCMov = true;
-      }
-      else if (trueConst->isNullValue()
-          && falseConst->isAllOnesValue()) { // less convenient
-        skipCMov = true;
-        genINot = true;
-      }
-    }
-  }
-  ISD::CondCode SetCCOpcode = cast<CondCodeSDNode>(CC)->get();
-  unsigned int AMDILCC = CondCCodeToCC(
-      SetCCOpcode,
-      LHS.getValueType().getSimpleVT().SimpleTy);
-  assert((AMDILCC != AMDILCC::COND_ERROR) && "Invalid SetCC!");
-  Cond = DAG.getNode(
-      AMDILISD::CMP,
-      DL,
-      LHS.getValueType(),
-      DAG.getConstant(AMDILCC, MVT::i32),
-      LHS,
-      RHS);
-  Cond = getConversionNode(DAG, Cond, Op, true);
-  if (genINot) {
-    Cond = DAG.getNode(AMDILISD::NOT, DL, OVT, Cond);
-  }
-  if (!skipCMov) {
-    Cond = DAG.getNode(AMDILISD::CMOVLOG, DL, OVT, Cond, TRUE, FALSE);
-  }
-  return Cond;
-}
-SDValue
 AMDILTargetLowering::LowerSETCC(SDValue Op, SelectionDAG &DAG) const
 {
   SDValue Cond;
index 0314598d6e3a7592d4ba2e96082c29108c2526eb..4a78aa1278c47e9b6a0e4eb79d5f5ce47a61d576 100644 (file)
@@ -13,9 +13,6 @@
 //===--------------------------------------------------------------------===//
 // Custom patterns for conversion operations
 //===--------------------------------------------------------------------===////
-// Pattern to remap integer or to IL_or
-def : Pat<(i32 (or GPRI32:$src0, GPRI32:$src1)),
-          (i32 (BINARY_OR_i32 GPRI32:$src0, GPRI32:$src1))>;
 // float ==> long patterns
 // unsigned: f32 -> i64
 def FTOUL : Pat<(i64 (fp_to_uint GPRF32:$src)),
index 1e8ed3ddf206368ba2a1f4f0ffb369ef79755b3d..bd37ff0d19585d62aac7b6d92072ff6a102c433d 100644 (file)
@@ -14,11 +14,6 @@ let isReMaterializable = 1, isAsCheapAsAMove = 1 in {
   defm MOVE       : UnaryOpMC<IL_OP_MOV, IL_mov>;
   defm PHIMOVE    : UnaryOpMC<IL_OP_MOV, IL_phimov>;
 }
-defm BINARY_NOT : UnaryOpMC<IL_OP_I_NOT, IL_not>;
-defm BINARY_OR  : BinaryOpMC<IL_OP_I_OR, IL_or>;
-defm BINARY_AND : BinaryOpMC<IL_OP_AND, IL_and>;
-defm BINARY_XOR : BinaryOpMC<IL_OP_I_XOR, IL_xor>;
-defm AND        : BinaryOpMCInt<IL_OP_AND, and>;
 defm CMOV       : BinaryOpMC<IL_OP_CMOV, IL_cmov>;
 defm DIV_INF    : BinaryOpMC<IL_OP_DIV_INF, IL_div_inf>;
 defm SMAX       : BinaryOpMCInt<IL_OP_I_MAX, IL_smax>;
@@ -63,7 +58,6 @@ defm SHR        : BinaryOpMCi32Const<IL_OP_I_SHR, sra>;
 defm SHLVEC     : BinaryOpMCi32<IL_OP_I_SHL, shl>;
 defm SHRVEC     : BinaryOpMCi32<IL_OP_I_SHR, sra>;
 defm ADD        : BinaryOpMCi32<IL_OP_I_ADD, add>;
-defm CUSTOM_XOR : BinaryOpMCInt<IL_OP_I_XOR, xor>;
 // get rid of the addri via the tablegen instead of custom lowered instruction
 defm CUSTOM_ADD : BinaryOpMCi32<IL_OP_I_ADD, IL_add>;
 defm EADD   : BinaryOpMCi32<IL_OP_I_ADD, adde>;
index 684001593e7764a0ec8ac543795c12713b60f187..075bac559dd73bb1710f559657ed64bcfa069031 100644 (file)
@@ -67,8 +67,6 @@ unsigned R600InstrInfo::getISAOpcode(unsigned opcode) const
     default: return AMDGPUInstrInfo::getISAOpcode(opcode);
     case AMDIL::CUSTOM_ADD_i32:
       return AMDIL::ADD_INT;
-    case AMDIL::CUSTOM_XOR_i32:
-      return AMDIL::XOR_INT;
     case AMDIL::IEQ:
       return AMDIL::SETE_INT;
     case AMDIL::INE:
index 92e3cc112e8062abd0997ec525c906021b4284d5..c8db93805714dd98e9c60b1a0b3a51c3470094ac 100644 (file)
@@ -390,26 +390,23 @@ def KILLGT : R600_2OP <
 
 def AND_INT : R600_2OP <
   0x30, "AND_INT",
-  []> {
-  let AMDILOp = AMDILInst.AND_i32;
-}
+  [(set R600_Reg32:$dst, (and R600_Reg32:$src0, R600_Reg32:$src1))]
+>;
 
 def OR_INT : R600_2OP <
   0x31, "OR_INT",
-  []>{
-  let AMDILOp = AMDILInst.BINARY_OR_i32;
-}
+  [(set R600_Reg32:$dst, (or R600_Reg32:$src0, R600_Reg32:$src1))]
+>;
 
 def XOR_INT : R600_2OP <
   0x32, "XOR_INT",
-  []
+  [(set R600_Reg32:$dst, (xor R600_Reg32:$src0, R600_Reg32:$src1))]
 >;
 
 def NOT_INT : R600_1OP <
   0x33, "NOT_INT",
-  []>{
-  let AMDILOp = AMDILInst.BINARY_NOT_i32;
-}
+  [(set R600_Reg32:$dst, (not R600_Reg32:$src))]
+>;
 
 def ADD_INT : R600_2OP <
   0x34, "ADD_INT",
index a5f57cc1d36e3e6b3ad808493dbff130820d92d2..75113683032d4a98f2a703611fa741c6d7a8431e 100644 (file)
@@ -98,22 +98,6 @@ bool R600LowerInstructionsPass::runOnMachineFunction(MachineFunction &MF)
                 .addOperand(MI.getOperand(1));
         break;
 
-      case AMDIL::BINARY_OR_f32:
-        {
-        unsigned tmp0 = MRI->createVirtualRegister(&AMDIL::GPRI32RegClass);
-        BuildMI(MBB, I, MBB.findDebugLoc(I), TM.getInstrInfo()->get(AMDIL::FTOI), tmp0)
-                .addOperand(MI.getOperand(1));
-        unsigned tmp1 = MRI->createVirtualRegister(&AMDIL::GPRI32RegClass);
-        BuildMI(MBB, I, MBB.findDebugLoc(I), TM.getInstrInfo()->get(AMDIL::FTOI), tmp1)
-                .addOperand(MI.getOperand(2));
-        unsigned tmp2 = MRI->createVirtualRegister(&AMDIL::GPRI32RegClass);
-        BuildMI(MBB, I, MBB.findDebugLoc(I), TM.getInstrInfo()->get(AMDIL::BINARY_OR_i32), tmp2)
-                .addReg(tmp0)
-                .addReg(tmp1);
-        BuildMI(MBB, I, MBB.findDebugLoc(I), TM.getInstrInfo()->get(AMDIL::ITOF), MI.getOperand(0).getReg())
-                .addReg(tmp2);
-        break;
-        }
       case AMDIL::CLAMP_f32:
         {
           MachineOperand lowOp = MI.getOperand(2);