Skip to content

Commit ae52497

Browse files
committed
Handling the arg select version for other ops
1 parent 40dc16f commit ae52497

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
@@ -326,7 +326,7 @@ class ArgI8<DXILConstant value_> : Arg {
326326
let is_i8 = 1;
327327
}
328328

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

llvm/utils/TableGen/DXILEmitter.cpp

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

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

0 commit comments

Comments
 (0)