@@ -26032,118 +26032,73 @@ static SDValue LowerINTRINSIC_W_CHAIN(SDValue Op, const X86Subtarget &Subtarget,
26032
26032
case Intrinsic::x86_aesenc256kl:
26033
26033
case Intrinsic::x86_aesdec256kl: {
26034
26034
SDLoc DL(Op);
26035
- SDVTList VTs = DAG.getVTList(MVT::v16i8 , MVT::Other , MVT::Glue );
26035
+ SDVTList VTs = DAG.getVTList(MVT::v2i64 , MVT::i32 , MVT::Other );
26036
26036
SDValue Chain = Op.getOperand(0);
26037
26037
unsigned Opcode;
26038
26038
26039
26039
switch (IntNo) {
26040
26040
default: llvm_unreachable("Impossible intrinsic");
26041
26041
case Intrinsic::x86_aesenc128kl:
26042
- Opcode = X86 ::AESENC128KL;
26042
+ Opcode = X86ISD ::AESENC128KL;
26043
26043
break;
26044
26044
case Intrinsic::x86_aesdec128kl:
26045
- Opcode = X86 ::AESDEC128KL;
26045
+ Opcode = X86ISD ::AESDEC128KL;
26046
26046
break;
26047
26047
case Intrinsic::x86_aesenc256kl:
26048
- Opcode = X86 ::AESENC256KL;
26048
+ Opcode = X86ISD ::AESENC256KL;
26049
26049
break;
26050
26050
case Intrinsic::x86_aesdec256kl:
26051
- Opcode = X86 ::AESDEC256KL;
26051
+ Opcode = X86ISD ::AESDEC256KL;
26052
26052
break;
26053
26053
}
26054
26054
26055
- SDValue XMM = Op.getOperand(2);
26056
- SDValue Base = Op.getOperand(3);
26057
- SDValue Index = DAG.getRegister(0, MVT::i32);
26058
- SDValue Scale = DAG.getTargetConstant(1, DL, MVT::i8);
26059
- SDValue Disp = DAG.getTargetConstant(0, DL, MVT::i32);
26060
- SDValue Segment = DAG.getRegister(0, MVT::i32);
26061
-
26062
- SDNode *Res = DAG.getMachineNode(Opcode, DL, VTs, {XMM, Base, Scale, Index,
26063
- Disp, Segment, Chain});
26064
- Chain = SDValue(Res, 1);
26065
- SDValue EFLAGS = DAG.getCopyFromReg(Chain, DL, X86::EFLAGS, MVT::i32,
26066
- SDValue(Res, 2));
26067
- SDValue ZF = getSETCC(X86::COND_E, EFLAGS.getValue(0), DL, DAG);
26055
+ SDValue Operation = DAG.getNode(Opcode, DL, VTs, Chain, Op.getOperand(2),
26056
+ Op.getOperand(3));
26057
+ SDValue ZF = getSETCC(X86::COND_E, Operation.getValue(1), DL, DAG);
26068
26058
26069
26059
return DAG.getNode(ISD::MERGE_VALUES, DL, Op->getVTList(),
26070
- {ZF, SDValue(Res, 0), EFLAGS .getValue(1 )});
26060
+ {ZF, Operation.getValue( 0), Operation .getValue(2 )});
26071
26061
}
26072
26062
case Intrinsic::x86_aesencwide128kl:
26073
26063
case Intrinsic::x86_aesdecwide128kl:
26074
26064
case Intrinsic::x86_aesencwide256kl:
26075
26065
case Intrinsic::x86_aesdecwide256kl: {
26076
26066
SDLoc DL(Op);
26077
- SDVTList VTs = DAG.getVTList(MVT::Other, MVT::Glue);
26067
+ SDVTList VTs = DAG.getVTList(
26068
+ {MVT::i32, MVT::v2i64, MVT::v2i64, MVT::v2i64, MVT::v2i64, MVT::v2i64,
26069
+ MVT::v2i64, MVT::v2i64, MVT::v2i64, MVT::Other});
26078
26070
SDValue Chain = Op.getOperand(0);
26079
26071
unsigned Opcode;
26080
26072
26081
26073
switch (IntNo) {
26082
26074
default: llvm_unreachable("Impossible intrinsic");
26083
26075
case Intrinsic::x86_aesencwide128kl:
26084
- Opcode = X86 ::AESENCWIDE128KL;
26076
+ Opcode = X86ISD ::AESENCWIDE128KL;
26085
26077
break;
26086
26078
case Intrinsic::x86_aesdecwide128kl:
26087
- Opcode = X86 ::AESDECWIDE128KL;
26079
+ Opcode = X86ISD ::AESDECWIDE128KL;
26088
26080
break;
26089
26081
case Intrinsic::x86_aesencwide256kl:
26090
- Opcode = X86 ::AESENCWIDE256KL;
26082
+ Opcode = X86ISD ::AESENCWIDE256KL;
26091
26083
break;
26092
26084
case Intrinsic::x86_aesdecwide256kl:
26093
- Opcode = X86 ::AESDECWIDE256KL;
26085
+ Opcode = X86ISD ::AESDECWIDE256KL;
26094
26086
break;
26095
26087
}
26096
26088
26097
- SDValue Base = Op.getOperand(2);
26098
- SDValue Index = DAG.getRegister(0, MVT::i32);
26099
- SDValue Scale = DAG.getTargetConstant(1, DL, MVT::i8);
26100
- SDValue Disp = DAG.getTargetConstant(0, DL, MVT::i32);
26101
- SDValue Segment = DAG.getRegister(0, MVT::i32);
26089
+ SDValue Operation = DAG.getNode(
26090
+ Opcode, DL, VTs,
26091
+ {Chain, Op.getOperand(2), Op.getOperand(3), Op.getOperand(4),
26092
+ Op.getOperand(5), Op.getOperand(6), Op.getOperand(7),
26093
+ Op.getOperand(8), Op.getOperand(9), Op.getOperand(10)});
26094
+ SDValue ZF = getSETCC(X86::COND_E, Operation.getValue(0), DL, DAG);
26102
26095
26103
- Chain = DAG.getCopyToReg(Chain, DL, X86::XMM0, Op->getOperand(3),
26104
- SDValue());
26105
- Chain = DAG.getCopyToReg(Chain.getValue(0), DL, X86::XMM1,
26106
- Op->getOperand(4), Chain.getValue(1));
26107
- Chain = DAG.getCopyToReg(Chain.getValue(0), DL, X86::XMM2,
26108
- Op->getOperand(5), Chain.getValue(1));
26109
- Chain = DAG.getCopyToReg(Chain.getValue(0), DL, X86::XMM3,
26110
- Op->getOperand(6), Chain.getValue(1));
26111
- Chain = DAG.getCopyToReg(Chain.getValue(0), DL, X86::XMM4,
26112
- Op->getOperand(7), Chain.getValue(1));
26113
- Chain = DAG.getCopyToReg(Chain.getValue(0), DL, X86::XMM5,
26114
- Op->getOperand(8), Chain.getValue(1));
26115
- Chain = DAG.getCopyToReg(Chain.getValue(0), DL, X86::XMM6,
26116
- Op->getOperand(9), Chain.getValue(1));
26117
- Chain = DAG.getCopyToReg(Chain.getValue(0), DL, X86::XMM7,
26118
- Op->getOperand(10),Chain.getValue(1));
26119
-
26120
- SDNode *Res = DAG.getMachineNode(Opcode, DL, VTs, {Base, Scale, Index,
26121
- Disp, Segment, Chain,
26122
- Chain.getValue(1)});
26123
-
26124
- Chain = SDValue(Res, 0);
26125
- SDValue EFLAGS = DAG.getCopyFromReg(Chain, DL, X86::EFLAGS, MVT::i32,
26126
- SDValue(Res, 1));
26127
- SDValue ZF = getSETCC(X86::COND_E, EFLAGS.getValue(0), DL, DAG);
26128
- SDValue XMM0 = DAG.getCopyFromReg(EFLAGS.getValue(1), DL, X86::XMM0,
26129
- MVT::v16i8, EFLAGS.getValue(2));
26130
- SDValue XMM1 = DAG.getCopyFromReg(XMM0.getValue(1), DL, X86::XMM1,
26131
- MVT::v16i8, XMM0.getValue(2));
26132
- SDValue XMM2 = DAG.getCopyFromReg(XMM1.getValue(1), DL, X86::XMM2,
26133
- MVT::v16i8, XMM1.getValue(2));
26134
- SDValue XMM3 = DAG.getCopyFromReg(XMM2.getValue(1), DL, X86::XMM3,
26135
- MVT::v16i8, XMM2.getValue(2));
26136
- SDValue XMM4 = DAG.getCopyFromReg(XMM3.getValue(1), DL, X86::XMM4,
26137
- MVT::v16i8, XMM3.getValue(2));
26138
- SDValue XMM5 = DAG.getCopyFromReg(XMM4.getValue(1), DL, X86::XMM5,
26139
- MVT::v16i8, XMM4.getValue(2));
26140
- SDValue XMM6 = DAG.getCopyFromReg(XMM5.getValue(1), DL, X86::XMM6,
26141
- MVT::v16i8, XMM5.getValue(2));
26142
- SDValue XMM7 = DAG.getCopyFromReg(XMM6.getValue(1), DL, X86::XMM7,
26143
- MVT::v16i8, XMM6.getValue(2));
26144
26096
return DAG.getNode(ISD::MERGE_VALUES, DL, Op->getVTList(),
26145
- {ZF, XMM0, XMM1, XMM2, XMM3, XMM4, XMM5, XMM6, XMM7,
26146
- XMM7.getValue(1)});
26097
+ {ZF, Operation.getValue(1), Operation.getValue(2),
26098
+ Operation.getValue(3), Operation.getValue(4),
26099
+ Operation.getValue(5), Operation.getValue(6),
26100
+ Operation.getValue(7), Operation.getValue(8),
26101
+ Operation.getValue(9)});
26147
26102
}
26148
26103
}
26149
26104
return SDValue();
@@ -31167,6 +31122,14 @@ const char *X86TargetLowering::getTargetNodeName(unsigned Opcode) const {
31167
31122
NODE_NAME_CASE(ENQCMD)
31168
31123
NODE_NAME_CASE(ENQCMDS)
31169
31124
NODE_NAME_CASE(VP2INTERSECT)
31125
+ NODE_NAME_CASE(AESENC128KL)
31126
+ NODE_NAME_CASE(AESDEC128KL)
31127
+ NODE_NAME_CASE(AESENC256KL)
31128
+ NODE_NAME_CASE(AESDEC256KL)
31129
+ NODE_NAME_CASE(AESENCWIDE128KL)
31130
+ NODE_NAME_CASE(AESDECWIDE128KL)
31131
+ NODE_NAME_CASE(AESENCWIDE256KL)
31132
+ NODE_NAME_CASE(AESDECWIDE256KL)
31170
31133
}
31171
31134
return nullptr;
31172
31135
#undef NODE_NAME_CASE
0 commit comments