builtin_function_kind.def 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. // Part of the Carbon Language project, under the Apache License v2.0 with LLVM
  2. // Exceptions. See /LICENSE for license information.
  3. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
  4. //
  5. // This is an X-macro header. It does not use `#include` guards, and instead is
  6. // designed to be `#include`ed after the x-macro is defined in order for its
  7. // inclusion to expand to the desired output. Macro definitions are cleaned up
  8. // at the end of this file.
  9. //
  10. // Supported x-macro is:
  11. // - CARBON_SEM_IR_BUILTIN_FUNCTION_KIND(Name)
  12. // Defines a builtin function type.
  13. #if !defined(CARBON_SEM_IR_BUILTIN_FUNCTION_KIND)
  14. #error \
  15. "Must define CARBON_SEM_IR_BUILTIN_FUNCTION_KIND x-macro to use this file."
  16. #endif
  17. CARBON_SEM_IR_BUILTIN_FUNCTION_KIND(None)
  18. // Type factories.
  19. CARBON_SEM_IR_BUILTIN_FUNCTION_KIND(IntMakeType32)
  20. CARBON_SEM_IR_BUILTIN_FUNCTION_KIND(IntMakeTypeSigned)
  21. CARBON_SEM_IR_BUILTIN_FUNCTION_KIND(IntMakeTypeUnsigned)
  22. CARBON_SEM_IR_BUILTIN_FUNCTION_KIND(FloatMakeType)
  23. CARBON_SEM_IR_BUILTIN_FUNCTION_KIND(BoolMakeType)
  24. // Integer arithmetic.
  25. CARBON_SEM_IR_BUILTIN_FUNCTION_KIND(IntSNegate)
  26. CARBON_SEM_IR_BUILTIN_FUNCTION_KIND(IntSAdd)
  27. CARBON_SEM_IR_BUILTIN_FUNCTION_KIND(IntSSub)
  28. CARBON_SEM_IR_BUILTIN_FUNCTION_KIND(IntSMul)
  29. CARBON_SEM_IR_BUILTIN_FUNCTION_KIND(IntSDiv)
  30. CARBON_SEM_IR_BUILTIN_FUNCTION_KIND(IntSMod)
  31. CARBON_SEM_IR_BUILTIN_FUNCTION_KIND(IntUNegate)
  32. CARBON_SEM_IR_BUILTIN_FUNCTION_KIND(IntUAdd)
  33. CARBON_SEM_IR_BUILTIN_FUNCTION_KIND(IntUSub)
  34. CARBON_SEM_IR_BUILTIN_FUNCTION_KIND(IntUMul)
  35. CARBON_SEM_IR_BUILTIN_FUNCTION_KIND(IntUDiv)
  36. CARBON_SEM_IR_BUILTIN_FUNCTION_KIND(IntUMod)
  37. // Integer bitwise.
  38. CARBON_SEM_IR_BUILTIN_FUNCTION_KIND(IntComplement)
  39. CARBON_SEM_IR_BUILTIN_FUNCTION_KIND(IntAnd)
  40. CARBON_SEM_IR_BUILTIN_FUNCTION_KIND(IntOr)
  41. CARBON_SEM_IR_BUILTIN_FUNCTION_KIND(IntXor)
  42. CARBON_SEM_IR_BUILTIN_FUNCTION_KIND(IntLeftShift)
  43. CARBON_SEM_IR_BUILTIN_FUNCTION_KIND(IntRightShift)
  44. // Integer comparison.
  45. CARBON_SEM_IR_BUILTIN_FUNCTION_KIND(IntEq)
  46. CARBON_SEM_IR_BUILTIN_FUNCTION_KIND(IntNeq)
  47. CARBON_SEM_IR_BUILTIN_FUNCTION_KIND(IntLess)
  48. CARBON_SEM_IR_BUILTIN_FUNCTION_KIND(IntLessEq)
  49. CARBON_SEM_IR_BUILTIN_FUNCTION_KIND(IntGreater)
  50. CARBON_SEM_IR_BUILTIN_FUNCTION_KIND(IntGreaterEq)
  51. // Float arithmetic.
  52. CARBON_SEM_IR_BUILTIN_FUNCTION_KIND(FloatNegate)
  53. CARBON_SEM_IR_BUILTIN_FUNCTION_KIND(FloatAdd)
  54. CARBON_SEM_IR_BUILTIN_FUNCTION_KIND(FloatSub)
  55. CARBON_SEM_IR_BUILTIN_FUNCTION_KIND(FloatMul)
  56. CARBON_SEM_IR_BUILTIN_FUNCTION_KIND(FloatDiv)
  57. // Float comparison.
  58. CARBON_SEM_IR_BUILTIN_FUNCTION_KIND(FloatEq)
  59. CARBON_SEM_IR_BUILTIN_FUNCTION_KIND(FloatNeq)
  60. CARBON_SEM_IR_BUILTIN_FUNCTION_KIND(FloatLess)
  61. CARBON_SEM_IR_BUILTIN_FUNCTION_KIND(FloatLessEq)
  62. CARBON_SEM_IR_BUILTIN_FUNCTION_KIND(FloatGreater)
  63. CARBON_SEM_IR_BUILTIN_FUNCTION_KIND(FloatGreaterEq)
  64. #undef CARBON_SEM_IR_BUILTIN_FUNCTION_KIND