Skip to content

Commit c5c5d75

Browse files
committed
Handling the arg select version for other ops
1 parent 1c11859 commit c5c5d75

File tree

2 files changed

+12
-2
lines changed

2 files changed

+12
-2
lines changed

llvm/lib/Target/DirectX/DXIL.td

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -325,7 +325,7 @@ class ArgI8<DXILConstant value_> : Arg {
325325
let is_i8 = 1;
326326
}
327327

328-
class IntrinsicSelect<Intrinsic intrinsic_, list<Arg> args_=?> {
328+
class IntrinsicSelect<Intrinsic intrinsic_, list<Arg> args_> {
329329
Intrinsic intrinsic = intrinsic_;
330330
list<Arg> args = args_;
331331
}

llvm/utils/TableGen/DXILEmitter.cpp

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -209,13 +209,23 @@ DXILOperationDesc::DXILOperationDesc(const Record *R) {
209209
bool IsI8 = Arg->getValueAsBit("is_i8");
210210
bool IsI32 = Arg->getValueAsBit("is_i32");
211211
int Index = Arg->getValueAsInt("index");
212-
const Record *ValueRec = Arg->getValueAsDef("value");
212+
const Record *ValueRec = Arg->getValueAsOptionalDef("value");
213213

214214
DXILArgSelect ArgSelect;
215215
if (IsI8) {
216+
if (!ValueRec) {
217+
PrintFatalError(R, Twine("'value' must be defined for i8 "
218+
"ArgSelect for DXIL operation - ") +
219+
OpName);
220+
}
216221
ArgSelect.Type = DXILArgSelect::Type::I8;
217222
ArgSelect.Value = ValueRec->getValueAsInt("value");
218223
} else if (IsI32) {
224+
if (!ValueRec) {
225+
PrintFatalError(R, Twine("'value' must be defined for i32 "
226+
"ArgSelect for DXIL operation - ") +
227+
OpName);
228+
}
219229
ArgSelect.Type = DXILArgSelect::Type::I32;
220230
ArgSelect.Value = ValueRec->getValueAsInt("value");
221231
} else {

0 commit comments

Comments
 (0)