diff --git a/lib/Target/WDC65816/WDC65816InstrFormats.td b/lib/Target/WDC65816/WDC65816InstrFormats.td index 3a7716f4..c035853b 100644 --- a/lib/Target/WDC65816/WDC65816InstrFormats.td +++ b/lib/Target/WDC65816/WDC65816InstrFormats.td @@ -49,7 +49,7 @@ def AddrModeGrp1AbsIdxY : AddrModeGrp1<25>; def AddrModeGrp1DPIdxIndirX : AddrModeGrp1<1>; def AddrModeGrp1DPIndirIdxY : AddrModeGrp1<17>; def AddrModeGrp1DPIndir : AddrModeGrp1<18>; -def AddrModeGrp1DPIndirLongIndY : AddrModeGrp1<23>; +def AddrModeGrp1DPIndirLongIdxY : AddrModeGrp1<23>; def AddrModeGrp1DPIndirLong : AddrModeGrp1<7>; def AddrModeGrp1AbsLong : AddrModeGrp1<15>; def AddrModeGrp1AbsLongIdxX : AddrModeGrp1<31>; diff --git a/lib/Target/WDC65816/WDC65816InstrInfo.td b/lib/Target/WDC65816/WDC65816InstrInfo.td index e977b0e1..0332aef8 100644 --- a/lib/Target/WDC65816/WDC65816InstrInfo.td +++ b/lib/Target/WDC65816/WDC65816InstrInfo.td @@ -28,11 +28,27 @@ include "WDC65816InstrFormats.td" //===----------------------------------------------------------------------===// // Adressing modes. -def ADDRabs : ComplexPattern; -def ADDRabsl : ComplexPattern; -def ADDRdp : ComplexPattern; +//def ADDRabs : ComplexPattern; +//def ADDRabsl : ComplexPattern; +//def ADDRdp : ComplexPattern; +// Address operands +def ADDRabs : Operand { + let PrintMethod = "printMemOperand"; + let MIOperandInfo = (ops ptr_rc, ptr_rc); +} + +def ADDRabsl : Operand { + let PrintMethod = "printMemOperand"; + let MIOperandInfo = (ops ptr_rc, ptr_rc); +} + +def ADDRdp : Operand { + let PrintMethod = "printMemOperand"; + let MIOperandInfo = (ops ptr_rc, ptr_rc); +} + //===----------------------------------------------------------------------===// // WDC 65816 Flag Conditions //===----------------------------------------------------------------------===// @@ -64,72 +80,72 @@ def ADCimm : Group1; def ADCabs : Group1; def ADCabsl : Group1$src2", [(set AccRegs:$dst, (add AccRegs:$src1, (load ADDRabsl:$src2)))]>; def ADCdp : Group1; def ADCdpindir : Group1; def ADCdpindirl : Group1; def ADCabsix : Group1; def ADCabsiy : Group1; def ADCabsixl : Group1$src2,$src3", []>; def ADCdpix : Group1; def ADCdpiindirx : Group1; def ADCdpindiriy : Group1; def ADCdpindirliy : Group1; def ADCsr : Group1; def ADCsrindir : Group1; @@ -139,72 +155,72 @@ def ANDimm : Group1; def ANDabs : Group1; def ANDabsl : Group1$src2", [(set AccRegs:$dst, (and AccRegs:$src1, (load ADDRabsl:$src2)))]>; def ANDdp : Group1; def ANDdpindir : Group1; def ANDdpindirl : Group1; def ANDabsix : Group1; def ANDabsiy : Group1; def ANDabsixl : Group1$src2,$src3", []>; def ANDdpix : Group1; def ANDdpiindirx : Group1; def ANDdpindiriy : Group1; def ANDdpindirliy : Group1; def ANDsr : Group1; def ANDsrindir : Group1; @@ -214,72 +230,72 @@ def CMPimm : Group1; def CMPabs : Group1; def CMPabsl : Group1$src2", []>; def CMPdp : Group1; def CMPdpindir : Group1; def CMPdpindirl : Group1; def CMPabsix : Group1; def CMPabsiy : Group1; def CMPabsixl : Group1$src2,$src3", []>; def CMPdpix : Group1; def CMPdpiindirx : Group1; def CMPdpindiriy : Group1; def CMPdpindirliy : Group1; def CMPsr : Group1; def CMPsrindir : Group1; @@ -289,72 +305,72 @@ def EORimm : Group1; def EORabs : Group1; def EORabsl : Group1$src2", [(set AccRegs:$dst, (xor AccRegs:$src1, (load ADDRabsl:$src2)))]>; def EORdp : Group1; def EORdpindir : Group1; def EORdpindirl : Group1; def EORabsix : Group1; def EORabsiy : Group1; def EORabsixl : Group1$src2,$src3", []>; def EORdpix : Group1; def EORdpiindirx : Group1; def EORdpindiriy : Group1; def EORdpindirliy : Group1; def EORsr : Group1; def EORsrindir : Group1; @@ -364,72 +380,72 @@ def LDAimm : Group1; def LDAabs : Group1; def LDAabsl : Group1$src2", [(set AccRegs:$dst, (load ADDRabsl:$src2))]>; def LDAdp : Group1; def LDAdpindir : Group1; def LDAdpindirl : Group1; def LDAabsix : Group1; def LDAabsiy : Group1; def LDAabsixl : Group1$src2,$src3", []>; def LDAdpix : Group1; def LDAdpiindirx : Group1; def LDAdpindiriy : Group1; def LDAdpindirliy : Group1; def LDAsr : Group1; def LDAsrindir : Group1; @@ -439,72 +455,72 @@ def ORAimm : Group1; def ORAabs : Group1; def ORAabsl : Group1$src2", [(set AccRegs:$dst, (or AccRegs:$src1, (load ADDRabsl:$src2)))]>; def ORAdp : Group1; def ORAdpindir : Group1; def ORAdpindirl : Group1; def ORAabsix : Group1; def ORAabsiy : Group1; def ORAabsixl : Group1$src2,$src3", []>; def ORAdpix : Group1; def ORAdpiindirx : Group1; def ORAdpindiriy : Group1; def ORAdpindirliy : Group1; def ORAsr : Group1; def ORAsrindir : Group1; @@ -514,142 +530,142 @@ def SBCimm : Group1; def SBCabs : Group1; + [(set AccRegs:$dst, (sub AccRegs:$src1, (load ADDRabs:$src2)))]>; def SBCabsl : Group1$src2", [(set AccRegs:$dst, (sub AccRegs:$src1, (load ADDRabsl:$src2)))]>; def SBCdp : Group1; def SBCdpindir : Group1; def SBCdpindirl : Group1; def SBCabsix : Group1; def SBCabsiy : Group1; def SBCabsixl : Group1$src2,$src3", []>; def SBCdpix : Group1; def SBCdpiindirx : Group1; def SBCdpindiriy : Group1; def SBCdpindirliy : Group1; def SBCsr : Group1; def SBCsrindir : Group1; def STAabs : Group1; def STAabsl : Group1$dst", [(store AccRegs:$src, ADDRabsl:$dst)]>; def STAdp : Group1; def STAdpindir : Group1; def STAdpindirl : Group1; def STAabsix : Group1; def STAabsiy : Group1; def STAabsixl : Group1$src2,$src3", []>; def STAdpix : Group1; def STAdpiindirx : Group1; def STAdpindiriy : Group1; def STAdpindirliy : Group1; def STAsr : Group1; def STAsrindir : Group1; @@ -661,22 +677,22 @@ def ASLacc : Group2; def ASLabs : Group2; + (outs ), (ins ADDRabs:$dst), + "ASL |$dst", + [(store (shl (load ADDRabs:$dst), (i8 1)), ADDRabs:$dst)]>; def ASLdp : Group2; + [(store (shl (load ADDRdp:$dst), (i8 1)), ADDRdp:$dst)]>; def ASLabsix : Group2; def ASLdpix : Group2; @@ -686,22 +702,22 @@ def DECacc : Group2; def DECabs : Group2; + (outs ), (ins ADDRabs:$dst), + "DEC |$dst", + [(store (sub (load ADDRabs:$dst), 1), ADDRabs:$dst)]>; def DECdp : Group2; + (outs ), (ins ADDRdp:$dst), + "DEC <$dst", + [(store (sub (load ADDRdp:$dst), 1), ADDRdp:$dst)]>; def DECabsix : Group2; def DECdpix : Group2; @@ -711,22 +727,22 @@ def INCacc : Group2; def INCabs : Group2; + (outs ), (ins ADDRabs:$dst), + "INC |$dst", + [(store (add (load ADDRabs:$dst), 1), ADDRabs:$dst)]>; def INCdp : Group2; + (outs ), (ins ADDRdp:$dst), + "INC <$dst", + [(store (add (load ADDRdp:$dst), 1), ADDRdp:$dst)]>; def INCabsix : Group2; def INCdpix : Group2; @@ -736,22 +752,22 @@ def LDXimm : Group2; def LDXabs : Group2; def LDXdp : Group2; def LDXabsiy : Group2; def LDXdpiy : Group2; @@ -761,47 +777,47 @@ def LDYimm : Group2_Y; def LDYabs : Group2_Y; def LDYdp : Group2_Y; def LDYabsix : Group2_Y; def LDYdpix : Group2_Y; def LSRacc : Group2; + [(set AccRegs:$dst, (srl AccRegs:$src, (i8 1)))]>; def LSRabs : Group2; + (outs ), (ins ADDRabs:$dst), + "LSR |$dst", + [(store (srl (load ADDRabs:$dst), (i8 1)), ADDRabs:$dst)]>; def LSRdp : Group2; + (outs ), (ins ADDRdp:$dst), + "LSR <$dst", + [(store (srl (load ADDRdp:$dst), (i8 1)), ADDRdp:$dst)]>; def LSRabsix : Group2; def LSRdpix : Group2; @@ -811,22 +827,22 @@ def ROLacc : Group2; def ROLabs : Group2; + (outs ), (ins ADDRabs:$dst), + "ROL |$dst", + [(store (rotl (load ADDRabs:$dst), (i8 1)), ADDRabs:$dst)]>; def ROLdp : Group2; + (outs ), (ins ADDRdp:$dst), + "ROL <$dst", + [(store (rotl (load ADDRdp:$dst), (i8 1)), ADDRdp:$dst)]>; def ROLabsix : Group2; def ROLdpix : Group2; @@ -836,52 +852,52 @@ def RORacc : Group2; def RORabs : Group2; + (outs ), (ins ADDRabs:$dst), + "ROR |$dst", + [(store (rotr (load ADDRabs:$dst), (i8 1)), ADDRabs:$dst)]>; def RORdp : Group2; + (outs ), (ins ADDRdp:$dst), + "ROR <$dst", + [(store (rotr (load ADDRdp:$dst), (i8 1)), ADDRdp:$dst)]>; def RORabsix : Group2; def RORdpix : Group2; def STXabs : Group2; def STXdp : Group2; def STXdpiy : Group2; def STYabs : Group2_Y; def STYdp : Group2_Y; def STYdpix : Group2_Y; @@ -890,17 +906,17 @@ def STYdpix : Group2_Y; def BCS : Group3; def BEQ : Group3; @@ -910,42 +926,42 @@ def BITimm : Group3; def BITabs : Group3; def BITdp : Group3; def BITabsix : Group3; def BITdpix : Group3; def BMI : Group3; def BNE : Group3; def BPL : Group3; def BRA : Group3; @@ -955,17 +971,17 @@ def BRK : Group3; def BRL : Group3; def BVC : Group3; def BVS : Group3; @@ -1000,12 +1016,12 @@ def CPXimm : Group3; def CPXabs : Group3; def CPXdp : Group3; @@ -1015,12 +1031,12 @@ def CPYimm : Group3; def CPYabs : Group3; def CPYdp : Group3; @@ -1045,52 +1061,52 @@ def INY : Group3; def JMPabs : Group3; def JMPindir : Group3; def JMPindiri : Group3; def JMLabs : Group3$src", []>; def JMLindirl : Group3$src]", []>; def JSL : Group3$src", []>; def JSRabs : Group3; def JSRindiri : Group3; def MVN : Group3; def MVP : Group3; @@ -1225,22 +1241,22 @@ def STP : Group3; def STZabs : Group3; def STZdp : Group3; def STZabsi : Group3; def STZdpi : Group3; @@ -1254,7 +1270,7 @@ def TAY : Group3; -def TCB : Group3; @@ -1270,22 +1286,22 @@ def TDC : Group3; def TRBabs : Group3; def TRBdp : Group3; def TSBabs : Group3; def TSBdp : Group3;