| 29 | namespace gpu { |
| 30 | |
| 31 | std::vector<char> pack_args(const std::vector<kernel_argument>& args) |
| 32 | { |
| 33 | std::vector<char> kernargs; |
| 34 | for(auto&& arg : args) |
| 35 | { |
| 36 | std::size_t n = arg.size; |
| 37 | const auto* p = static_cast<const char*>(arg.data); |
| 38 | // Insert padding |
| 39 | std::size_t padding = (arg.align - (kernargs.size() % arg.align)) % arg.align; |
| 40 | kernargs.insert(kernargs.end(), padding, 0); |
| 41 | kernargs.insert(kernargs.end(), p, p + n); |
| 42 | } |
| 43 | return kernargs; |
| 44 | } |
| 45 | |
| 46 | } // namespace gpu |
| 47 | } // namespace MIGRAPHX_INLINE_NS |