)]}'
{
  "commit": "fd3907ccb583df99e9c19d2fe84e4e7c52d75de9",
  "tree": "deaffb6b369c1ec87261df173b32717b07f7525c",
  "parents": [
    "636beb6a2833ee0290935f679252c1b662721b31"
  ],
  "author": {
    "name": "Callum Fare",
    "email": "callum@codeplay.com",
    "time": "Thu Dec 05 08:34:04 2024 +0000"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Thu Dec 05 09:34:04 2024 +0100"
  },
  "message": "Reland #118503: [Offload] Introduce offload-tblgen and initial new API implementation (#118614)\n\nReland #118503. Added a fix for builds with `-DBUILD_SHARED_LIBS\u003dON`\r\n(see last commit). Otherwise the changes are identical.\r\n\r\n---\r\n\r\n\r\n### New API\r\n\r\nPrevious discussions at the LLVM/Offload meeting have brought up the\r\nneed for a new API for exposing the functionality of the plugins. This\r\nchange introduces a very small subset of a new API, which is primarily\r\nfor testing the offload tooling and demonstrating how a new API can fit\r\ninto the existing code base without being too disruptive. Exact designs\r\nfor these entry points and future additions can be worked out over time.\r\n\r\nThe new API does however introduce the bare minimum functionality to\r\nimplement device discovery for Unified Runtime and SYCL. This means that\r\nthe `urinfo` and `sycl-ls` tools can be used on top of Offload. A\r\n(rough) implementation of a Unified Runtime adapter (aka plugin) for\r\nOffload is available\r\n[here](https://github.com/callumfare/unified-runtime/tree/offload_adapter).\r\nOur intention is to maintain this and use it to implement and test\r\nOffload API changes with SYCL.\r\n\r\n### Demoing the new API\r\n\r\n```sh\r\n# From the runtime build directory\r\n$ ninja LibomptUnitTests\r\n$ OFFLOAD_TRACE\u003d1 ./offload/unittests/OffloadAPI/offload.unittests \r\n```\r\n\r\n\r\n### Open questions and future work\r\n* Only some of the available device info is exposed, and not all the\r\npossible device queries needed for SYCL are implemented by the plugins.\r\nA sensible next step would be to refactor and extend the existing device\r\ninfo queries in the plugins. The existing info queries are all strings,\r\nbut the new API introduces the ability to return any arbitrary type.\r\n* It may be sensible at some point for the plugins to implement the new\r\nAPI directly, and the higher level code on top of it could be made\r\ngeneric, but this is more of a long-term possibility.",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "2d2413688183bc908371b0b864bc795921886e39",
      "old_mode": 33188,
      "old_path": "offload/CMakeLists.txt",
      "new_id": "8da95c5c74e445ab6b9350370127b288d1a1168d",
      "new_mode": 33188,
      "new_path": "offload/CMakeLists.txt"
    },
    {
      "type": "modify",
      "old_id": "a808167eb6bb6c77f941bd0ae83768ae412835b9",
      "old_mode": 33188,
      "old_path": "offload/cmake/OpenMPTesting.cmake",
      "new_id": "ff6001c4539f7d65b7b4db64944432eb0ea2f545",
      "new_mode": 33188,
      "new_path": "offload/cmake/OpenMPTesting.cmake"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "60c1b85d26911e592ac9b9afa73c1c829b0dc56d",
      "new_mode": 33188,
      "new_path": "offload/liboffload/API/APIDefs.td"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "8fd6cb539374a57db78355e0d868b66280d69bed",
      "new_mode": 33188,
      "new_path": "offload/liboffload/API/CMakeLists.txt"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "5b19d1d47129ef01cedc51bad7ca1c9ca7035b66",
      "new_mode": 33188,
      "new_path": "offload/liboffload/API/Common.td"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "30c0b71fe7b37c1029f1f26ae2409ab182f3de6a",
      "new_mode": 33188,
      "new_path": "offload/liboffload/API/Device.td"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "8a0c3c405812232cbf260b892de33d3e45657bef",
      "new_mode": 33188,
      "new_path": "offload/liboffload/API/OffloadAPI.td"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "03e70cf96ac94f500f8f2d6d2e44a8b474985a45",
      "new_mode": 33188,
      "new_path": "offload/liboffload/API/Platform.td"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "38a055811b2d0046517086a66e4a4678d511838d",
      "new_mode": 33188,
      "new_path": "offload/liboffload/API/README.md"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "db12236ddfc7feb08c2cccde14cb1eec947adb15",
      "new_mode": 33188,
      "new_path": "offload/liboffload/CMakeLists.txt"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "95c9bf54d7badd8fd76e5e0a8375608bc167f8a3",
      "new_mode": 33188,
      "new_path": "offload/liboffload/README.md"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "168341aa7d93803ba2f4ab41e68f07f30b7504f4",
      "new_mode": 33188,
      "new_path": "offload/liboffload/exports"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "6d745095f3105ad6ea4a5ed99e1ec2b457711851",
      "new_mode": 33188,
      "new_path": "offload/liboffload/include/OffloadImpl.hpp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "11fcc96625ab8dd03a1f853bb36a4fee05615220",
      "new_mode": 33188,
      "new_path": "offload/liboffload/include/generated/OffloadAPI.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "49c1c8169615e56676dc181e6e7dd22638c21d85",
      "new_mode": 33188,
      "new_path": "offload/liboffload/include/generated/OffloadEntryPoints.inc"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "48115493c790f4f27fe11633e466cc961d6d1ca8",
      "new_mode": 33188,
      "new_path": "offload/liboffload/include/generated/OffloadFuncs.inc"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "5b26b2653a05d9ec66138a2da0bb2214c46b1a35",
      "new_mode": 33188,
      "new_path": "offload/liboffload/include/generated/OffloadImplFuncDecls.inc"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "8981bb054a4cb151551749ee3a6438b28502d971",
      "new_mode": 33188,
      "new_path": "offload/liboffload/include/generated/OffloadPrint.hpp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "d003d302524625e16e5f1da01e09cfd723389dd1",
      "new_mode": 33188,
      "new_path": "offload/liboffload/src/Helpers.hpp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "457f1053f16341b819563af7730d047e2c6433e7",
      "new_mode": 33188,
      "new_path": "offload/liboffload/src/OffloadImpl.cpp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "37876713212c986967d1bb1c1a60c47e23ee733e",
      "new_mode": 33188,
      "new_path": "offload/liboffload/src/OffloadLib.cpp"
    },
    {
      "type": "modify",
      "old_id": "97540d5a3e2b3d9aace5bc3a890442fd20f2ec1e",
      "old_mode": 33188,
      "old_path": "offload/plugins-nextgen/common/include/PluginInterface.h",
      "new_id": "63e2f80302c3066fac65ca043ada413240c71f7e",
      "new_mode": 33188,
      "new_path": "offload/plugins-nextgen/common/include/PluginInterface.h"
    },
    {
      "type": "modify",
      "old_id": "2f1ef3e98d81723bd1dae814f7d4da8fb567807c",
      "old_mode": 33188,
      "old_path": "offload/test/lit.cfg",
      "new_id": "658ae5f9653ba90a56ac460d983d650a95e94a1a",
      "new_mode": 33188,
      "new_path": "offload/test/lit.cfg"
    },
    {
      "type": "modify",
      "old_id": "a1cb5acc38a4059645399341607f6e72bc9bf254",
      "old_mode": 33188,
      "old_path": "offload/test/lit.site.cfg.in",
      "new_id": "ce3f6abf50a132dbe4dbce9b33c08ac09699fd24",
      "new_mode": 33188,
      "new_path": "offload/test/lit.site.cfg.in"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "995e24abf707d77ac1703337628b3e34349bc0c1",
      "new_mode": 33188,
      "new_path": "offload/test/tools/offload-tblgen/default_returns.td"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "a66ddb92799200cd372564dfdf0f30e9e71d4331",
      "new_mode": 33188,
      "new_path": "offload/test/tools/offload-tblgen/entry_points.td"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "dec93577b57e9373d425e6afa4d7f94000d82d46",
      "new_mode": 33188,
      "new_path": "offload/test/tools/offload-tblgen/functions_basic.td"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "aec20129343f5613d476251c0fa9020fd8a007d8",
      "new_mode": 33188,
      "new_path": "offload/test/tools/offload-tblgen/functions_code_loc.td"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "21a84d8a70334d7a3ee05722addf95bb99087fa4",
      "new_mode": 33188,
      "new_path": "offload/test/tools/offload-tblgen/functions_ranged_param.td"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "0b5506009bec51049af9bd0f8734c118a6baec1c",
      "new_mode": 33188,
      "new_path": "offload/test/tools/offload-tblgen/print_enum.td"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "3f4944df659414d7b23af8af0c94f8bf5b22240c",
      "new_mode": 33188,
      "new_path": "offload/test/tools/offload-tblgen/print_function.td"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "49e91e43bb6ef88668f476fd9a69974004d2c4e0",
      "new_mode": 33188,
      "new_path": "offload/test/tools/offload-tblgen/type_tagged_enum.td"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "97a2464f7a75c1f9c158b4a31b6538ecbb861449",
      "new_mode": 33188,
      "new_path": "offload/tools/offload-tblgen/APIGen.cpp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "e7e7c85490543fc393ff571469bf454b2603be8d",
      "new_mode": 33188,
      "new_path": "offload/tools/offload-tblgen/CMakeLists.txt"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "990ff96a3121d90ec832364f5a10bb5c07e424a9",
      "new_mode": 33188,
      "new_path": "offload/tools/offload-tblgen/EntryPointGen.cpp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "3238652176198457c044f48770e3ebb9cb8d28a7",
      "new_mode": 33188,
      "new_path": "offload/tools/offload-tblgen/FuncsGen.cpp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "db432e9958b5d51afd8d2ba1ca132bf239d57f01",
      "new_mode": 33188,
      "new_path": "offload/tools/offload-tblgen/GenCommon.hpp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "8b6104c5cd9c618d6a82345d1a8dc172e805bdc1",
      "new_mode": 33188,
      "new_path": "offload/tools/offload-tblgen/Generators.hpp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "2a7c63c3dfd1f7faa3251e60954ecf589a288463",
      "new_mode": 33188,
      "new_path": "offload/tools/offload-tblgen/PrintGen.cpp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "0bf3256c525d9e6d181a28b72ed7e972ddd8c88e",
      "new_mode": 33188,
      "new_path": "offload/tools/offload-tblgen/RecordTypes.hpp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "1912abf5265c7cb70002095b596c00391afabeb0",
      "new_mode": 33188,
      "new_path": "offload/tools/offload-tblgen/offload-tblgen.cpp"
    },
    {
      "type": "modify",
      "old_id": "73c87b708d25fddb87a617eaca4d03f87febd173",
      "old_mode": 33188,
      "old_path": "offload/unittests/CMakeLists.txt",
      "new_id": "25ac4b2fa36752af85f6c4e1a326875c8faa8fa6",
      "new_mode": 33188,
      "new_path": "offload/unittests/CMakeLists.txt"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "033ee2b6ec746abed0597e85a6259826cbd1431c",
      "new_mode": 33188,
      "new_path": "offload/unittests/OffloadAPI/CMakeLists.txt"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "f07a66cda21892804783887568b2eb074d2987fa",
      "new_mode": 33188,
      "new_path": "offload/unittests/OffloadAPI/common/Environment.cpp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "6dba2381eb0b7188b88f635ba5c74f650d221f5f",
      "new_mode": 33188,
      "new_path": "offload/unittests/OffloadAPI/common/Environment.hpp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "410a435dee1b5f70006a5b55084f9de1b6523660",
      "new_mode": 33188,
      "new_path": "offload/unittests/OffloadAPI/common/Fixtures.hpp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "06915258da3842eb3ce64a055eb870728f6132e5",
      "new_mode": 33188,
      "new_path": "offload/unittests/OffloadAPI/device/olDeviceInfo.hpp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "68d4682dd3351ce4ebc1509e097613964eeb6a58",
      "new_mode": 33188,
      "new_path": "offload/unittests/OffloadAPI/device/olGetDevice.cpp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "ef377d671bf60db9379b2fff2552bed21584e334",
      "new_mode": 33188,
      "new_path": "offload/unittests/OffloadAPI/device/olGetDeviceCount.cpp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "c936802fb1e4d63df5ffd8dfe5492e4bdefa87c4",
      "new_mode": 33188,
      "new_path": "offload/unittests/OffloadAPI/device/olGetDeviceInfo.cpp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "9e792d1c3e25ef574dc6a0b4866151f3442d3e70",
      "new_mode": 33188,
      "new_path": "offload/unittests/OffloadAPI/device/olGetDeviceInfoSize.cpp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "4a2f9e8ac77414a250f753df6cb1099ab50eaa41",
      "new_mode": 33188,
      "new_path": "offload/unittests/OffloadAPI/platform/olGetPlatform.cpp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "15b4b6abcd70dad40ffb5b5c0d7c0df30da60832",
      "new_mode": 33188,
      "new_path": "offload/unittests/OffloadAPI/platform/olGetPlatformCount.cpp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "c646bdc50b7da1e5a51919110098f57eaa93c3ce",
      "new_mode": 33188,
      "new_path": "offload/unittests/OffloadAPI/platform/olGetPlatformInfo.cpp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "7c9274082e8e49cf1ec41035673a7c8b362e670d",
      "new_mode": 33188,
      "new_path": "offload/unittests/OffloadAPI/platform/olGetPlatformInfoSize.cpp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "d49cdb90d321ad85786694be7a2463152c6c0822",
      "new_mode": 33188,
      "new_path": "offload/unittests/OffloadAPI/platform/olPlatformInfo.hpp"
    }
  ]
}
