Skip to content

Commit a6905a4

Browse files
committed
[PowerPC] Add load/store support for v2048i1 and DMF cryptography instructions
This commit adds support for loading and storing v2048i1 DMR pairs and introduces Dense Math Facility cryptography instructions: DMSHA2HASH, DMSHA3HASH, and DMXXSHAPAD, along with their corresponding intrinsics and tests.
1 parent e98b095 commit a6905a4

File tree

9 files changed

+575
-29
lines changed

9 files changed

+575
-29
lines changed

llvm/include/llvm/IR/Intrinsics.td

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -544,6 +544,7 @@ def llvm_v128i1_ty : LLVMType<v128i1>; // 128 x i1
544544
def llvm_v256i1_ty : LLVMType<v256i1>; // 256 x i1
545545
def llvm_v512i1_ty : LLVMType<v512i1>; // 512 x i1
546546
def llvm_v1024i1_ty : LLVMType<v1024i1>; //1024 x i1
547+
def llvm_v2048i1_ty : LLVMType<v2048i1>; //2048 x i1
547548
def llvm_v4096i1_ty : LLVMType<v4096i1>; //4096 x i1
548549

549550
def llvm_v1i8_ty : LLVMType<v1i8>; // 1 x i8

llvm/include/llvm/IR/IntrinsicsPowerPC.td

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1778,6 +1778,20 @@ let TargetPrefix = "ppc" in {
17781778
defm int_ppc_mma_pmdmxvf16gerx2 :
17791779
PowerPC_MMA_DMR_Intrinsic<[llvm_v256i1_ty, llvm_v16i8_ty, llvm_i32_ty,
17801780
llvm_i32_ty, llvm_i32_ty]>;
1781+
def int_ppc_mma_dmsha2hash :
1782+
DefaultAttrsIntrinsic<[llvm_v1024i1_ty], [llvm_v1024i1_ty,
1783+
llvm_v1024i1_ty, llvm_i32_ty],
1784+
[IntrNoMem, ImmArg<ArgIndex<2>>]>;
1785+
1786+
def int_ppc_mma_dmsha3hash :
1787+
DefaultAttrsIntrinsic<[llvm_v2048i1_ty], [llvm_v2048i1_ty,
1788+
llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<1>>]>;
1789+
1790+
def int_ppc_mma_dmxxshapad :
1791+
DefaultAttrsIntrinsic<[llvm_v1024i1_ty], [llvm_v1024i1_ty,
1792+
llvm_v16i8_ty, llvm_i32_ty, llvm_i32_ty,
1793+
llvm_i32_ty], [IntrNoMem, ImmArg<ArgIndex<2>>,
1794+
ImmArg<ArgIndex<3>>, ImmArg<ArgIndex<4>>]>;
17811795
}
17821796

17831797
// XL Compat intrinsics.

llvm/lib/Target/PowerPC/PPCISelLowering.cpp

Lines changed: 116 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1361,8 +1361,11 @@ PPCTargetLowering::PPCTargetLowering(const PPCTargetMachine &TM,
13611361
if (Subtarget.isISAFuture()) {
13621362
addRegisterClass(MVT::v512i1, &PPC::WACCRCRegClass);
13631363
addRegisterClass(MVT::v1024i1, &PPC::DMRRCRegClass);
1364+
addRegisterClass(MVT::v2048i1, &PPC::DMRpRCRegClass);
13641365
setOperationAction(ISD::LOAD, MVT::v1024i1, Custom);
13651366
setOperationAction(ISD::STORE, MVT::v1024i1, Custom);
1367+
setOperationAction(ISD::LOAD, MVT::v2048i1, Custom);
1368+
setOperationAction(ISD::STORE, MVT::v2048i1, Custom);
13661369
} else {
13671370
addRegisterClass(MVT::v512i1, &PPC::UACCRCRegClass);
13681371
}
@@ -11890,15 +11893,19 @@ SDValue PPCTargetLowering::LowerDMFVectorLoad(SDValue Op,
1189011893
SDValue LoadChain = LN->getChain();
1189111894
SDValue BasePtr = LN->getBasePtr();
1189211895
EVT VT = Op.getValueType();
11896+
bool IsV1024i1 = VT == MVT::v1024i1;
11897+
bool IsV2048i1 = VT == MVT::v2048i1;
1189311898

11894-
// Type v1024i1 is used for Dense Math dmr registers.
11895-
assert(VT == MVT::v1024i1 && "Unsupported type.");
11899+
// The types v1024i1 and v2048i1 are used for Dense Math dmr registers and
11900+
// Dense Math dmr pair registers, respectively.
11901+
assert((IsV1024i1 || IsV2048i1) && "Unsupported type.");
1189611902
assert((Subtarget.hasMMA() && Subtarget.isISAFuture()) &&
1189711903
"Dense Math support required.");
1189811904
assert(Subtarget.pairedVectorMemops() && "Vector pair support required.");
1189911905

11900-
SmallVector<SDValue, 4> Loads;
11901-
SmallVector<SDValue, 4> LoadChains;
11906+
SmallVector<SDValue, 8> Loads;
11907+
SmallVector<SDValue, 8> LoadChains;
11908+
1190211909
SDValue IntrinID = DAG.getConstant(Intrinsic::ppc_vsx_lxvp, dl, MVT::i32);
1190311910
SDValue LoadOps[] = {LoadChain, IntrinID, BasePtr};
1190411911
MachineMemOperand *MMO = LN->getMemOperand();
@@ -11934,10 +11941,40 @@ SDValue PPCTargetLowering::LowerDMFVectorLoad(SDValue Op,
1193411941
SDValue HiSub = DAG.getTargetConstant(PPC::sub_wacc_hi, dl, MVT::i32);
1193511942
SDValue RC = DAG.getTargetConstant(PPC::DMRRCRegClassID, dl, MVT::i32);
1193611943
const SDValue Ops[] = {RC, Lo, LoSub, Hi, HiSub};
11944+
1193711945
SDValue Value =
1193811946
SDValue(DAG.getMachineNode(PPC::REG_SEQUENCE, dl, MVT::v1024i1, Ops), 0);
1193911947

11940-
SDValue RetOps[] = {Value, TF};
11948+
SDValue DmrPValue;
11949+
if (IsV2048i1) {
11950+
// This corresponds to v2048i1 which represents a dmr pair.
11951+
SDValue Dmr1Lo(DAG.getMachineNode(PPC::DMXXINSTDMR512, dl, MVT::v512i1, Loads[4],
11952+
Loads[5]), 0);
11953+
SDValue Dmr1Hi(DAG.getMachineNode(PPC::DMXXINSTDMR512_HI, dl, MVT::v512i1,
11954+
Loads[6], Loads[7]), 0);
11955+
const SDValue Dmr1Ops[] = {RC, Dmr1Lo, LoSub, Dmr1Hi, HiSub};
11956+
SDValue Dmr1Value =
11957+
SDValue(DAG.getMachineNode(PPC::REG_SEQUENCE, dl,
11958+
MVT::v1024i1, Dmr1Ops), 0);
11959+
11960+
SDValue Dmr0Sub = DAG.getTargetConstant(PPC::sub_dmr0, dl, MVT::i32);
11961+
SDValue Dmr1Sub = DAG.getTargetConstant(PPC::sub_dmr1, dl, MVT::i32);
11962+
11963+
SDValue DmrPRC = DAG.getTargetConstant(PPC::DMRpRCRegClassID, dl, MVT::i32);
11964+
const SDValue DmrPOps[] = {DmrPRC, Value, Dmr0Sub, Dmr1Value, Dmr1Sub};
11965+
11966+
DmrPValue =
11967+
SDValue(DAG.getMachineNode(PPC::REG_SEQUENCE, dl, MVT::v2048i1,
11968+
DmrPOps), 0);
11969+
}
11970+
11971+
SDValue RetOps[2];
11972+
if (IsV1024i1)
11973+
RetOps[0] = Value;
11974+
else
11975+
RetOps[0] = DmrPValue;
11976+
RetOps[1] = TF;
11977+
1194111978
return DAG.getMergeValues(RetOps, dl);
1194211979
}
1194311980

@@ -11949,7 +11986,7 @@ SDValue PPCTargetLowering::LowerVectorLoad(SDValue Op,
1194911986
SDValue BasePtr = LN->getBasePtr();
1195011987
EVT VT = Op.getValueType();
1195111988

11952-
if (VT == MVT::v1024i1)
11989+
if (VT == MVT::v1024i1 || VT == MVT::v2048i1)
1195311990
return LowerDMFVectorLoad(Op, DAG);
1195411991

1195511992
if (VT != MVT::v256i1 && VT != MVT::v512i1)
@@ -11996,34 +12033,85 @@ SDValue PPCTargetLowering::LowerDMFVectorStore(SDValue Op,
1199612033
StoreSDNode *SN = cast<StoreSDNode>(Op.getNode());
1199712034
SDValue StoreChain = SN->getChain();
1199812035
SDValue BasePtr = SN->getBasePtr();
11999-
SmallVector<SDValue, 4> Values;
12000-
SmallVector<SDValue, 4> Stores;
12036+
SmallVector<SDValue, 8> Values;
12037+
SmallVector<SDValue, 8> Stores;
1200112038
EVT VT = SN->getValue().getValueType();
12039+
bool IsV1024i1 = VT == MVT::v1024i1;
12040+
bool IsV2048i1 = VT == MVT::v2048i1;
1200212041

12003-
// Type v1024i1 is used for Dense Math dmr registers.
12004-
assert(VT == MVT::v1024i1 && "Unsupported type.");
12042+
// The types v1024i1 and v2048i1 are used for Dense Math dmr registers and
12043+
// Dense Math dmr pair registers, respectively.
12044+
assert((IsV1024i1 || IsV2048i1)&& "Unsupported type.");
1200512045
assert((Subtarget.hasMMA() && Subtarget.isISAFuture()) &&
1200612046
"Dense Math support required.");
1200712047
assert(Subtarget.pairedVectorMemops() && "Vector pair support required.");
1200812048

12009-
SDValue Lo(
12010-
DAG.getMachineNode(TargetOpcode::EXTRACT_SUBREG, dl, MVT::v512i1,
12011-
Op.getOperand(1),
12012-
DAG.getTargetConstant(PPC::sub_wacc_lo, dl, MVT::i32)),
12013-
0);
12014-
SDValue Hi(
12015-
DAG.getMachineNode(TargetOpcode::EXTRACT_SUBREG, dl, MVT::v512i1,
12016-
Op.getOperand(1),
12017-
DAG.getTargetConstant(PPC::sub_wacc_hi, dl, MVT::i32)),
12018-
0);
1201912049
EVT ReturnTypes[] = {MVT::v256i1, MVT::v256i1};
12020-
MachineSDNode *ExtNode =
12021-
DAG.getMachineNode(PPC::DMXXEXTFDMR512, dl, ReturnTypes, Lo);
12022-
Values.push_back(SDValue(ExtNode, 0));
12023-
Values.push_back(SDValue(ExtNode, 1));
12024-
ExtNode = DAG.getMachineNode(PPC::DMXXEXTFDMR512_HI, dl, ReturnTypes, Hi);
12025-
Values.push_back(SDValue(ExtNode, 0));
12026-
Values.push_back(SDValue(ExtNode, 1));
12050+
if (IsV1024i1) {
12051+
SDValue Lo(
12052+
DAG.getMachineNode(TargetOpcode::EXTRACT_SUBREG, dl, MVT::v512i1,
12053+
Op.getOperand(1),
12054+
DAG.getTargetConstant(PPC::sub_wacc_lo, dl, MVT::i32)),
12055+
0);
12056+
SDValue Hi(
12057+
DAG.getMachineNode(TargetOpcode::EXTRACT_SUBREG, dl, MVT::v512i1,
12058+
Op.getOperand(1),
12059+
DAG.getTargetConstant(PPC::sub_wacc_hi, dl, MVT::i32)),
12060+
0);
12061+
MachineSDNode *ExtNode =
12062+
DAG.getMachineNode(PPC::DMXXEXTFDMR512, dl, ReturnTypes, Lo);
12063+
Values.push_back(SDValue(ExtNode, 0));
12064+
Values.push_back(SDValue(ExtNode, 1));
12065+
ExtNode = DAG.getMachineNode(PPC::DMXXEXTFDMR512_HI, dl, ReturnTypes, Hi);
12066+
Values.push_back(SDValue(ExtNode, 0));
12067+
Values.push_back(SDValue(ExtNode, 1));
12068+
}
12069+
else {
12070+
// This corresponds to v2048i1 which represents a dmr pair.
12071+
SDValue Dmr0(
12072+
DAG.getMachineNode(TargetOpcode::EXTRACT_SUBREG, dl, MVT::v1024i1,
12073+
Op.getOperand(1),
12074+
DAG.getTargetConstant(PPC::sub_dmr0, dl, MVT::i32)), 0);
12075+
12076+
SDValue Dmr1(
12077+
DAG.getMachineNode(TargetOpcode::EXTRACT_SUBREG, dl, MVT::v1024i1,
12078+
Op.getOperand(1),
12079+
DAG.getTargetConstant(PPC::sub_dmr1, dl, MVT::i32)), 0);
12080+
12081+
SDValue Dmr0Lo(
12082+
DAG.getMachineNode(TargetOpcode::EXTRACT_SUBREG, dl, MVT::v512i1,
12083+
Dmr0,
12084+
DAG.getTargetConstant(PPC::sub_wacc_lo, dl, MVT::i32)), 0);
12085+
12086+
SDValue Dmr0Hi(
12087+
DAG.getMachineNode(TargetOpcode::EXTRACT_SUBREG, dl, MVT::v512i1,
12088+
Dmr0,
12089+
DAG.getTargetConstant(PPC::sub_wacc_hi, dl, MVT::i32)), 0);
12090+
12091+
SDValue Dmr1Lo(
12092+
DAG.getMachineNode(TargetOpcode::EXTRACT_SUBREG, dl, MVT::v512i1,
12093+
Dmr1,
12094+
DAG.getTargetConstant(PPC::sub_wacc_lo, dl, MVT::i32)), 0);
12095+
12096+
SDValue Dmr1Hi(
12097+
DAG.getMachineNode(TargetOpcode::EXTRACT_SUBREG, dl, MVT::v512i1,
12098+
Dmr1,
12099+
DAG.getTargetConstant(PPC::sub_wacc_hi, dl, MVT::i32)), 0);
12100+
12101+
MachineSDNode *ExtNode =
12102+
DAG.getMachineNode(PPC::DMXXEXTFDMR512, dl, ReturnTypes, Dmr0Lo);
12103+
Values.push_back(SDValue(ExtNode, 0));
12104+
Values.push_back(SDValue(ExtNode, 1));
12105+
ExtNode = DAG.getMachineNode(PPC::DMXXEXTFDMR512_HI, dl, ReturnTypes, Dmr0Hi);
12106+
Values.push_back(SDValue(ExtNode, 0));
12107+
Values.push_back(SDValue(ExtNode, 1));
12108+
ExtNode = DAG.getMachineNode(PPC::DMXXEXTFDMR512, dl, ReturnTypes, Dmr1Lo);
12109+
Values.push_back(SDValue(ExtNode, 0));
12110+
Values.push_back(SDValue(ExtNode, 1));
12111+
ExtNode = DAG.getMachineNode(PPC::DMXXEXTFDMR512_HI, dl, ReturnTypes, Dmr1Hi);
12112+
Values.push_back(SDValue(ExtNode, 0));
12113+
Values.push_back(SDValue(ExtNode, 1));
12114+
}
1202712115

1202812116
if (Subtarget.isLittleEndian())
1202912117
std::reverse(Values.begin(), Values.end());
@@ -12062,7 +12150,7 @@ SDValue PPCTargetLowering::LowerVectorStore(SDValue Op,
1206212150
SDValue Value2 = SN->getValue();
1206312151
EVT StoreVT = Value.getValueType();
1206412152

12065-
if (StoreVT == MVT::v1024i1)
12153+
if (StoreVT == MVT::v1024i1 || StoreVT == MVT::v2048i1)
1206612154
return LowerDMFVectorStore(Op, DAG);
1206712155

1206812156
if (StoreVT != MVT::v256i1 && StoreVT != MVT::v512i1)

llvm/lib/Target/PowerPC/PPCInstrFutureMMA.td

Lines changed: 127 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -333,6 +333,63 @@ multiclass DMR_NEG_UM_M284_XOXORd11188<bits<6> opcode, bits<8> xo, dag IOL,
333333
}
334334
}
335335

336+
class XForm_AT3_T1_AB3<bits<6> opcode, bits<5> o, bits<10> xo, dag OOL, dag IOL,
337+
string asmstr, list<dag> pattern>
338+
: I <opcode, OOL, IOL, asmstr, NoItinerary> {
339+
bits<3> AT;
340+
bits<3> AB;
341+
bits<1> T;
342+
343+
let Pattern = pattern;
344+
345+
let Inst{6-8} = AT{2-0};
346+
let Inst{9} = 0;
347+
let Inst{10} = T;
348+
let Inst{11-15} = o;
349+
let Inst{16-18} = AB{2-0};
350+
let Inst{19-20} = 0;
351+
let Inst{21-30} = xo;
352+
let Inst{31} = 0;
353+
}
354+
355+
class XForm_ATp2_SR5<bits<6> opcode, bits<5> o, bits<10> xo, dag OOL, dag IOL,
356+
string asmstr, list<dag> pattern>
357+
: I <opcode, OOL, IOL, asmstr, NoItinerary> {
358+
bits<2> ATp;
359+
bits<5> SR;
360+
361+
let Pattern = pattern;
362+
363+
let Inst{6-7} = ATp{1-0};
364+
let Inst{8-10} = 0;
365+
let Inst{11-15} = o;
366+
let Inst{16-20} = SR{4-0};
367+
let Inst{21-30} = xo;
368+
let Inst{31} = 0;
369+
}
370+
371+
class XX2Form_AT3_XB6_ID2_E1_BL2<bits<6> opcode, bits<9> xo, dag OOL, dag IOL,
372+
string asmstr, list<dag> pattern>
373+
: I<opcode, OOL, IOL, asmstr, NoItinerary> {
374+
bits<3> AT;
375+
bits<6> XB;
376+
bits<2> ID;
377+
bits<1> E;
378+
bits<2> BL;
379+
380+
let Pattern = pattern;
381+
382+
let Inst{6-8} = AT{2-0};
383+
let Inst{9-10} = 0;
384+
let Inst{11-12} = ID{1-0};
385+
let Inst{13} = E;
386+
let Inst{14-15} = BL{1-0};
387+
let Inst{16-20} = XB{4-0};
388+
let Inst{21-29} = xo;
389+
let Inst{30} = XB{5};
390+
let Inst{31} = 0;
391+
}
392+
336393
let Predicates = [IsISAFuture] in {
337394
def DMXXEXTFDMR512 : XX3Form_AT3_XABp5_P1<60, 226,
338395
(outs vsrprc:$XAp, vsrprc:$XBp),
@@ -415,6 +472,25 @@ defm DMXVBF16GERX2 : DMR_NEG_UM_M284_XOXORf939a0<59, 74, (ins vsrprc:$XAp, vsrc:
415472
defm DMXVF16GERX2 : DMR_NEG_UM_M284_XOXORd11188<59, 66, (ins vsrprc:$XAp, vsrc:$XB),
416473
"dmxvf16gerx2", "$AT, $XAp, $XB">;
417474

475+
// DMF cryptography [support] Instructions
476+
let Predicates = [IsISAFuture] in {
477+
def DMSHA2HASH :
478+
XForm_AT3_T1_AB3<31, 14, 177, (outs dmr:$AT), (ins dmr:$ATi, dmr:$AB, u1imm:$T),
479+
"dmsha2hash $AT, $AB, $T", []>,
480+
RegConstraint<"$ATi = $AT">, NoEncode<"$ATi">;
481+
482+
def DMSHA3HASH :
483+
XForm_ATp2_SR5<31, 15, 177, (outs dmrprc:$ATp), (ins dmrprc:$ATpi , u5imm:$SR),
484+
"dmsha3hash $ATp, $SR", []>,
485+
RegConstraint<"$ATpi = $ATp">, NoEncode<"$ATpi">;
486+
487+
def DMXXSHAPAD :
488+
XX2Form_AT3_XB6_ID2_E1_BL2<60, 421, (outs dmr:$AT),
489+
(ins dmr:$ATi, vsrc:$XB, u2imm:$ID, u1imm:$E, u2imm:$BL),
490+
"dmxxshapad $AT, $XB, $ID, $E, $BL", []>,
491+
RegConstraint<"$ATi = $AT">, NoEncode<"$ATi">;
492+
}
493+
418494
// MMA+ Intrinsics
419495
let Predicates = [MMA, IsISAFuture] in {
420496
def : Pat<(v1024i1 (int_ppc_mma_dmxvi8gerx4 v256i1:$XAp, v16i8:$XB)),
@@ -532,3 +608,54 @@ let Predicates = [MMA, PrefixInstrs, IsISAFuture] in {
532608
(PMDMXVF16GERX2NN $ATi, $XAp, RCCp.BToVSRC, Msk8Imm:$XMSK,
533609
Msk4Imm:$YMSK, Msk2Imm:$PMSK)>;
534610
}
611+
612+
// cryptography Intrinsics
613+
let Predicates = [IsISAFuture] in {
614+
def : Pat<(v1024i1 (int_ppc_mma_dmsha2hash v1024i1:$ATi, v1024i1:$AB, timm:$T)),
615+
(DMSHA2HASH $ATi, $AB, $T)>;
616+
617+
def : Pat<(v2048i1 (int_ppc_mma_dmsha3hash v2048i1:$ATpi, timm:$SR)),
618+
(DMSHA3HASH $ATpi, $SR)>;
619+
620+
def : Pat<(v1024i1 (int_ppc_mma_dmxxshapad v1024i1:$ATi, v16i8:$XB, timm:$ID,
621+
timm:$E, timm:$BL)), (DMXXSHAPAD $ATi, RCCp.BToVSRC, $ID, $E, $BL)>;
622+
}
623+
624+
// MMA+ Instruction aliases
625+
let Predicates = [IsISAFuture] in {
626+
def : InstAlias<"dmsha256hash $AT, $AB",
627+
(DMSHA2HASH dmr:$AT, dmr:$AB, 0)>;
628+
629+
def : InstAlias<"dmsha512hash $AT, $AB",
630+
(DMSHA2HASH dmr:$AT, dmr:$AB, 1)>;
631+
632+
def : InstAlias<"dmsha3dw $ATp",
633+
(DMSHA3HASH dmrprc:$ATp, 0)>;
634+
635+
def : InstAlias<"dmcryshash $ATp",
636+
(DMSHA3HASH dmrprc:$ATp, 12)>;
637+
638+
def : InstAlias<"dmxxsha3512pad $AT, $XB, $E",
639+
(DMXXSHAPAD dmr:$AT, vsrc:$XB, 0, u1imm:$E, 0)>;
640+
641+
def : InstAlias<"dmxxsha3384pad $AT, $XB, $E",
642+
(DMXXSHAPAD dmr:$AT, vsrc:$XB, 0, u1imm:$E, 1)>;
643+
644+
def : InstAlias<"dmxxsha3256pad $AT, $XB, $E",
645+
(DMXXSHAPAD dmr:$AT, vsrc:$XB, 0, u1imm:$E, 2)>;
646+
647+
def : InstAlias<"dmxxsha3224pad $AT, $XB, $E",
648+
(DMXXSHAPAD dmr:$AT, vsrc:$XB, 0, u1imm:$E, 3)>;
649+
650+
def : InstAlias<"dmxxshake256pad $AT, $XB, $E",
651+
(DMXXSHAPAD dmr:$AT, vsrc:$XB, 1, u1imm:$E, 0)>;
652+
653+
def : InstAlias<"dmxxshake128pad $AT, $XB, $E",
654+
(DMXXSHAPAD dmr:$AT, vsrc:$XB, 1, u1imm:$E, 1)>;
655+
656+
def : InstAlias<"dmxxsha384512pad $AT, $XB",
657+
(DMXXSHAPAD dmr:$AT, vsrc:$XB, 2, 0, 0)>;
658+
659+
def : InstAlias<"dmxxsha224256pad $AT, $XB",
660+
(DMXXSHAPAD dmr:$AT, vsrc:$XB, 3, 0, 0)>;
661+
}

llvm/lib/Target/PowerPC/PPCRegisterInfo.td

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1140,6 +1140,6 @@ def PPCRegDMRpRCAsmOperand : AsmOperandClass {
11401140
let PredicateMethod = "isDMRpRegNumber";
11411141
}
11421142

1143-
def dmrp : RegisterOperand<DMRpRC> {
1143+
def dmrprc : RegisterOperand<DMRpRC> {
11441144
let ParserMatchClass = PPCRegDMRpRCAsmOperand;
11451145
}

0 commit comments

Comments
 (0)