12
12
// ===----------------------------------------------------------------------===//
13
13
#include " DXILRootSignature.h"
14
14
#include " DirectX.h"
15
- #include " llvm/ADT/StringRef.h"
16
15
#include " llvm/ADT/StringSwitch.h"
17
16
#include " llvm/ADT/Twine.h"
18
17
#include " llvm/Analysis/DXILMetadataAnalysis.h"
31
30
#include < cmath>
32
31
#include < cstdint>
33
32
#include < optional>
34
- #include < string>
35
33
#include < utility>
36
34
37
35
using namespace llvm ;
@@ -290,32 +288,32 @@ static bool parseDescriptorRange(LLVMContext *Ctx,
290
288
if (std::optional<uint32_t > Val = extractMdIntValue (RangeDescriptorNode, 1 ))
291
289
Range.NumDescriptors = *Val;
292
290
else
293
- return reportInvalidTypeError<MDString >(Ctx, " RangeDescriptorNode" ,
294
- RangeDescriptorNode, 1 );
291
+ return reportInvalidTypeError<ConstantInt >(Ctx, " RangeDescriptorNode" ,
292
+ RangeDescriptorNode, 1 );
295
293
296
294
if (std::optional<uint32_t > Val = extractMdIntValue (RangeDescriptorNode, 2 ))
297
295
Range.BaseShaderRegister = *Val;
298
296
else
299
- return reportInvalidTypeError<MDString >(Ctx, " RangeDescriptorNode" ,
300
- RangeDescriptorNode, 2 );
297
+ return reportInvalidTypeError<ConstantInt >(Ctx, " RangeDescriptorNode" ,
298
+ RangeDescriptorNode, 2 );
301
299
302
300
if (std::optional<uint32_t > Val = extractMdIntValue (RangeDescriptorNode, 3 ))
303
301
Range.RegisterSpace = *Val;
304
302
else
305
- return reportInvalidTypeError<MDString >(Ctx, " RangeDescriptorNode" ,
306
- RangeDescriptorNode, 3 );
303
+ return reportInvalidTypeError<ConstantInt >(Ctx, " RangeDescriptorNode" ,
304
+ RangeDescriptorNode, 3 );
307
305
308
306
if (std::optional<uint32_t > Val = extractMdIntValue (RangeDescriptorNode, 4 ))
309
307
Range.OffsetInDescriptorsFromTableStart = *Val;
310
308
else
311
- return reportInvalidTypeError<MDString >(Ctx, " RangeDescriptorNode" ,
312
- RangeDescriptorNode, 4 );
309
+ return reportInvalidTypeError<ConstantInt >(Ctx, " RangeDescriptorNode" ,
310
+ RangeDescriptorNode, 4 );
313
311
314
312
if (std::optional<uint32_t > Val = extractMdIntValue (RangeDescriptorNode, 5 ))
315
313
Range.Flags = *Val;
316
314
else
317
- return reportInvalidTypeError<MDString >(Ctx, " RangeDescriptorNode" ,
318
- RangeDescriptorNode, 5 );
315
+ return reportInvalidTypeError<ConstantInt >(Ctx, " RangeDescriptorNode" ,
316
+ RangeDescriptorNode, 5 );
319
317
320
318
Table.Ranges .push_back (Range);
321
319
return false ;
@@ -332,8 +330,8 @@ static bool parseDescriptorTable(LLVMContext *Ctx,
332
330
if (std::optional<uint32_t > Val = extractMdIntValue (DescriptorTableNode, 1 ))
333
331
Header.ShaderVisibility = *Val;
334
332
else
335
- return reportInvalidTypeError<MDString >(Ctx, " DescriptorTableNode" ,
336
- DescriptorTableNode, 1 );
333
+ return reportInvalidTypeError<ConstantInt >(Ctx, " DescriptorTableNode" ,
334
+ DescriptorTableNode, 1 );
337
335
338
336
mcdxbc::DescriptorTable Table;
339
337
Header.ParameterType =
@@ -362,67 +360,80 @@ static bool parseStaticSampler(LLVMContext *Ctx, mcdxbc::RootSignatureDesc &RSD,
362
360
if (std::optional<uint32_t > Val = extractMdIntValue (StaticSamplerNode, 1 ))
363
361
Sampler.Filter = *Val;
364
362
else
365
- return reportError (Ctx, " Invalid value for Filter" );
363
+ return reportInvalidTypeError<ConstantInt>(Ctx, " StaticSamplerNode" ,
364
+ StaticSamplerNode, 1 );
366
365
367
366
if (std::optional<uint32_t > Val = extractMdIntValue (StaticSamplerNode, 2 ))
368
367
Sampler.AddressU = *Val;
369
368
else
370
- return reportError (Ctx, " Invalid value for AddressU" );
369
+ return reportInvalidTypeError<ConstantInt>(Ctx, " StaticSamplerNode" ,
370
+ StaticSamplerNode, 2 );
371
371
372
372
if (std::optional<uint32_t > Val = extractMdIntValue (StaticSamplerNode, 3 ))
373
373
Sampler.AddressV = *Val;
374
374
else
375
- return reportError (Ctx, " Invalid value for AddressV" );
375
+ return reportInvalidTypeError<ConstantInt>(Ctx, " StaticSamplerNode" ,
376
+ StaticSamplerNode, 3 );
376
377
377
378
if (std::optional<uint32_t > Val = extractMdIntValue (StaticSamplerNode, 4 ))
378
379
Sampler.AddressW = *Val;
379
380
else
380
- return reportError (Ctx, " Invalid value for AddressW" );
381
+ return reportInvalidTypeError<ConstantInt>(Ctx, " StaticSamplerNode" ,
382
+ StaticSamplerNode, 4 );
381
383
382
384
if (std::optional<APFloat> Val = extractMdFloatValue (StaticSamplerNode, 5 ))
383
385
Sampler.MipLODBias = Val->convertToFloat ();
384
386
else
385
- return reportError (Ctx, " Invalid value for MipLODBias" );
387
+ return reportInvalidTypeError<ConstantInt>(Ctx, " StaticSamplerNode" ,
388
+ StaticSamplerNode, 5 );
386
389
387
390
if (std::optional<uint32_t > Val = extractMdIntValue (StaticSamplerNode, 6 ))
388
391
Sampler.MaxAnisotropy = *Val;
389
392
else
390
- return reportError (Ctx, " Invalid value for MaxAnisotropy" );
393
+ return reportInvalidTypeError<ConstantInt>(Ctx, " StaticSamplerNode" ,
394
+ StaticSamplerNode, 6 );
391
395
392
396
if (std::optional<uint32_t > Val = extractMdIntValue (StaticSamplerNode, 7 ))
393
397
Sampler.ComparisonFunc = *Val;
394
398
else
395
- return reportError (Ctx, " Invalid value for ComparisonFunc " );
399
+ return reportInvalidTypeError<ConstantInt>(Ctx, " StaticSamplerNode" ,
400
+ StaticSamplerNode, 7 );
396
401
397
402
if (std::optional<uint32_t > Val = extractMdIntValue (StaticSamplerNode, 8 ))
398
403
Sampler.BorderColor = *Val;
399
404
else
400
- return reportError (Ctx, " Invalid value for ComparisonFunc " );
405
+ return reportInvalidTypeError<ConstantInt>(Ctx, " StaticSamplerNode" ,
406
+ StaticSamplerNode, 8 );
401
407
402
408
if (std::optional<APFloat> Val = extractMdFloatValue (StaticSamplerNode, 9 ))
403
409
Sampler.MinLOD = Val->convertToFloat ();
404
410
else
405
- return reportError (Ctx, " Invalid value for MinLOD" );
411
+ return reportInvalidTypeError<ConstantInt>(Ctx, " StaticSamplerNode" ,
412
+ StaticSamplerNode, 9 );
406
413
407
414
if (std::optional<APFloat> Val = extractMdFloatValue (StaticSamplerNode, 10 ))
408
415
Sampler.MaxLOD = Val->convertToFloat ();
409
416
else
410
- return reportError (Ctx, " Invalid value for MaxLOD" );
417
+ return reportInvalidTypeError<ConstantInt>(Ctx, " StaticSamplerNode" ,
418
+ StaticSamplerNode, 10 );
411
419
412
420
if (std::optional<uint32_t > Val = extractMdIntValue (StaticSamplerNode, 11 ))
413
421
Sampler.ShaderRegister = *Val;
414
422
else
415
- return reportError (Ctx, " Invalid value for ShaderRegister" );
423
+ return reportInvalidTypeError<ConstantInt>(Ctx, " StaticSamplerNode" ,
424
+ StaticSamplerNode, 11 );
416
425
417
426
if (std::optional<uint32_t > Val = extractMdIntValue (StaticSamplerNode, 12 ))
418
427
Sampler.RegisterSpace = *Val;
419
428
else
420
- return reportError (Ctx, " Invalid value for RegisterSpace" );
429
+ return reportInvalidTypeError<ConstantInt>(Ctx, " StaticSamplerNode" ,
430
+ StaticSamplerNode, 12 );
421
431
422
432
if (std::optional<uint32_t > Val = extractMdIntValue (StaticSamplerNode, 13 ))
423
433
Sampler.ShaderVisibility = *Val;
424
434
else
425
- return reportError (Ctx, " Invalid value for ShaderVisibility" );
435
+ return reportInvalidTypeError<ConstantInt>(Ctx, " StaticSamplerNode" ,
436
+ StaticSamplerNode, 13 );
426
437
427
438
RSD.StaticSamplers .push_back (Sampler);
428
439
return false ;
0 commit comments