DxilCounters.h 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. ///////////////////////////////////////////////////////////////////////////////
  2. // //
  3. // DxilCounters.h //
  4. // Copyright (C) Microsoft Corporation. All rights reserved. //
  5. // This file is distributed under the University of Illinois Open Source //
  6. // License. See LICENSE.TXT for details. //
  7. // //
  8. // Counters for Dxil instructions types. //
  9. // //
  10. ///////////////////////////////////////////////////////////////////////////////
  11. #pragma once
  12. #include <stdint.h>
  13. namespace llvm {
  14. class Module;
  15. class StringRef;
  16. }
  17. namespace hlsl {
  18. struct DxilCounters {
  19. // <py::lines('OPCODE-COUNTERS')>['uint32_t %s = 0;' % c for c in hctdb_instrhelp.get_counters()]</py>
  20. // OPCODE-COUNTERS:BEGIN
  21. uint32_t array_local_bytes = 0;
  22. uint32_t array_local_ldst = 0;
  23. uint32_t array_static_bytes = 0;
  24. uint32_t array_static_ldst = 0;
  25. uint32_t array_tgsm_bytes = 0;
  26. uint32_t array_tgsm_ldst = 0;
  27. uint32_t atomic = 0;
  28. uint32_t barrier = 0;
  29. uint32_t branches = 0;
  30. uint32_t fence = 0;
  31. uint32_t floats = 0;
  32. uint32_t gs_cut = 0;
  33. uint32_t gs_emit = 0;
  34. uint32_t insts = 0;
  35. uint32_t ints = 0;
  36. uint32_t sig_ld = 0;
  37. uint32_t sig_st = 0;
  38. uint32_t tex_bias = 0;
  39. uint32_t tex_cmp = 0;
  40. uint32_t tex_grad = 0;
  41. uint32_t tex_load = 0;
  42. uint32_t tex_norm = 0;
  43. uint32_t tex_store = 0;
  44. uint32_t uints = 0;
  45. // OPCODE-COUNTERS:END
  46. uint32_t AllArrayBytes() {
  47. return array_local_bytes
  48. + array_static_bytes
  49. + array_tgsm_bytes;
  50. }
  51. uint32_t AllArrayAccesses() {
  52. return array_local_ldst
  53. + array_static_ldst
  54. + array_tgsm_ldst;
  55. }
  56. };
  57. void CountInstructions(llvm::Module &M, DxilCounters& counters);
  58. uint32_t *LookupByName(llvm::StringRef name, DxilCounters& counters);
  59. } // namespace hlsl