Skip to content

Commit c9a1c0a

Browse files
committed
Address more comments
1 parent 4919eb8 commit c9a1c0a

File tree

3 files changed

+31
-18
lines changed

3 files changed

+31
-18
lines changed

llvm/lib/Target/AArch64/AArch64ISelLowering.cpp

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13966,22 +13966,29 @@ SDValue AArch64TargetLowering::LowerVECTOR_SHUFFLE(SDValue Op,
1396613966
auto BuildZipLike = [&DAG, &dl](unsigned OpNum, SDValue OpLHS,
1396713967
SDValue OpRHS) {
1396813968
EVT VT = OpLHS.getValueType();
13969+
unsigned Opc = 0;
1396913970
switch (OpNum) {
1397013971
default:
1397113972
llvm_unreachable("Unexpected perfect shuffle opcode");
1397213973
case OP_VUZPL:
13973-
return DAG.getNode(AArch64ISD::UZP1, dl, VT, OpLHS, OpRHS);
13974+
Opc = AArch64ISD::UZP1;
13975+
break;
1397413976
case OP_VUZPR:
13975-
return DAG.getNode(AArch64ISD::UZP2, dl, VT, OpLHS, OpRHS);
13977+
Opc = AArch64ISD::UZP2;
13978+
break;
1397613979
case OP_VZIPL:
13977-
return DAG.getNode(AArch64ISD::ZIP1, dl, VT, OpLHS, OpRHS);
13980+
Opc = AArch64ISD::ZIP1;
13981+
break;
1397813982
case OP_VZIPR:
13979-
return DAG.getNode(AArch64ISD::ZIP2, dl, VT, OpLHS, OpRHS);
13983+
Opc = AArch64ISD::ZIP2;
13984+
break;
1398013985
case OP_VTRNL:
13981-
return DAG.getNode(AArch64ISD::TRN1, dl, VT, OpLHS, OpRHS);
13986+
Opc = AArch64ISD::TRN1;
13987+
break;
1398213988
case OP_VTRNR:
13983-
return DAG.getNode(AArch64ISD::TRN2, dl, VT, OpLHS, OpRHS);
13989+
Opc = AArch64ISD::TRN2;
1398413990
}
13991+
return DAG.getNode(Opc, dl, VT, OpLHS, OpRHS);
1398513992
};
1398613993
auto BuildExtractInsert64 = [&DAG, &dl](SDValue ExtSrc, unsigned ExtLane,
1398713994
SDValue InsSrc, unsigned InsLane) {

llvm/lib/Target/AArch64/AArch64PerfectShuffle.h

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6802,13 +6802,12 @@ inline Val generatePerfectShuffle(unsigned ID, Val V1, Val V2, unsigned PFEntry,
68026802
ExtLane = MaskElt < 2 ? MaskElt : (MaskElt - 2);
68036803
Input = MaskElt < 2 ? V1 : V2;
68046804
return BuildExtractInsert64(Input, ExtLane, OpLHS, RHSID & 0x3);
6805-
} else {
6806-
int MaskElt = getPFIDLane(ID, RHSID);
6807-
assert(MaskElt >= 0 && "Didn't expect an undef movlane index!");
6808-
ExtLane = MaskElt < 4 ? MaskElt : (MaskElt - 4);
6809-
Input = MaskElt < 4 ? V1 : V2;
6810-
return BuildExtractInsert32(Input, ExtLane, OpLHS, RHSID & 0x3);
68116805
}
6806+
int MaskElt = getPFIDLane(ID, RHSID);
6807+
assert(MaskElt >= 0 && "Didn't expect an undef movlane index!");
6808+
ExtLane = MaskElt < 4 ? MaskElt : (MaskElt - 4);
6809+
Input = MaskElt < 4 ? V1 : V2;
6810+
return BuildExtractInsert32(Input, ExtLane, OpLHS, RHSID & 0x3);
68126811
}
68136812

68146813
Val OpLHS, OpRHS;

llvm/lib/Target/AArch64/GISel/AArch64PostLegalizerLowering.cpp

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -591,22 +591,29 @@ void applyPerfectShuffle(MachineInstr &MI, MachineRegisterInfo &MRI,
591591
auto BuildZipLike = [&MIB, &MRI](unsigned OpNum, Register OpLHS,
592592
Register OpRHS) {
593593
LLT Ty = MRI.getType(OpLHS);
594+
unsigned Opc = 0;
594595
switch (OpNum) {
595596
default:
596597
llvm_unreachable("Unexpected perfect shuffle opcode");
597598
case OP_VUZPL:
598-
return MIB.buildInstr(AArch64::G_UZP1, {Ty}, {OpLHS, OpRHS}).getReg(0);
599+
Opc = AArch64::G_UZP1;
600+
break;
599601
case OP_VUZPR:
600-
return MIB.buildInstr(AArch64::G_UZP2, {Ty}, {OpLHS, OpRHS}).getReg(0);
602+
Opc = AArch64::G_UZP2;
603+
break;
601604
case OP_VZIPL:
602-
return MIB.buildInstr(AArch64::G_ZIP1, {Ty}, {OpLHS, OpRHS}).getReg(0);
605+
Opc = AArch64::G_ZIP1;
606+
break;
603607
case OP_VZIPR:
604-
return MIB.buildInstr(AArch64::G_ZIP2, {Ty}, {OpLHS, OpRHS}).getReg(0);
608+
Opc = AArch64::G_ZIP2;
609+
break;
605610
case OP_VTRNL:
606-
return MIB.buildInstr(AArch64::G_TRN1, {Ty}, {OpLHS, OpRHS}).getReg(0);
611+
Opc = AArch64::G_TRN1;
612+
break;
607613
case OP_VTRNR:
608-
return MIB.buildInstr(AArch64::G_TRN2, {Ty}, {OpLHS, OpRHS}).getReg(0);
614+
Opc = AArch64::G_TRN2;
609615
}
616+
return MIB.buildInstr(Opc, {Ty}, {OpLHS, OpRHS}).getReg(0);
610617
};
611618
auto BuildExtractInsert64 = [&MIB, &MRI](Register ExtSrc, unsigned ExtLane,
612619
Register InsSrc, unsigned InsLane) {

0 commit comments

Comments
 (0)