#include <poplar/Vertex.hpp>

class ReadPhysicalTileId : public poplar::SupervisorVertex {
public:
  poplar::Output<unsigned short> out;

  __attribute__((target("supervisor"))) bool compute() {
#if defined(__IPU__) && defined(__POPC__)
    *out = static_cast<unsigned short>(__builtin_ipu_get_tile_id());
#else
    *out = 0;
#endif
    return true;
  }
};
