SPIR-V encodes the read_only and write_only access qualifiers of pipes, so separate LLVM IR types are required to target SPIR-V. Other backends may also find this useful.
These new types are opencl.pipe_ro_t and opencl.pipe_wo_t, which replace opencl.pipe_t.
This replaces __get_pipe_num_packets(...) and __get_pipe_max_packets(...) which took a read_only pipe with separate versions for read_only and write_only pipes, namely:
- __get_pipe_num_packets_ro(...)
- __get_pipe_num_packets_wo(...)
- __get_pipe_max_packets_ro(...)
- __get_pipe_max_packets_wo(...)
These separate versions exist to avoid needing a bitcast to one of the two qualified pipe types.