@@ -126,6 +126,82 @@ BOOST_AUTO_TEST_CASE(create_with_binary)
126126 BOOST_CHECK_EQUAL (binary_bar_kernel.name (), std::string (" bar" ));
127127}
128128
129+ #ifdef BOOST_COMPUTE_CL_VERSION_2_1
130+ BOOST_AUTO_TEST_CASE (create_with_il)
131+ {
132+ size_t device_address_space_size = device.address_bits ();
133+ std::string file_path (BOOST_COMPUTE_TEST_DATA_PATH);
134+ if (device_address_space_size == 64 )
135+ {
136+ file_path += " /program.spirv64" ;
137+ }
138+ else
139+ {
140+ file_path += " /program.spirv32" ;
141+ }
142+
143+ // create program from il
144+ boost::compute::program il_program;
145+ BOOST_CHECK_NO_THROW (
146+ il_program = boost::compute::program::create_with_il_file (
147+ file_path, context
148+ )
149+ );
150+ BOOST_CHECK_NO_THROW (il_program.build ());
151+
152+ // create kernel (to check if program was loaded correctly)
153+ BOOST_CHECK_NO_THROW (il_program.create_kernel (" foobar" ));
154+ }
155+
156+ BOOST_AUTO_TEST_CASE (get_program_il_binary)
157+ {
158+ size_t device_address_space_size = device.address_bits ();
159+ std::string file_path (BOOST_COMPUTE_TEST_DATA_PATH);
160+ if (device_address_space_size == 64 )
161+ {
162+ file_path += " /program.spirv64" ;
163+ }
164+ else
165+ {
166+ file_path += " /program.spirv32" ;
167+ }
168+
169+ // create program from il
170+ boost::compute::program il_program;
171+ BOOST_CHECK_NO_THROW (
172+ il_program = boost::compute::program::create_with_il_file (
173+ file_path, context
174+ )
175+ );
176+ BOOST_CHECK_NO_THROW (il_program.build ());
177+
178+ std::vector<unsigned char > il_binary;
179+ BOOST_CHECK_NO_THROW (il_binary = il_program.il_binary ());
180+
181+ // create program from loaded il binary
182+ BOOST_CHECK_NO_THROW (
183+ il_program = boost::compute::program::create_with_il (il_binary, context)
184+ );
185+ BOOST_CHECK_NO_THROW (il_program.build ());
186+
187+ // create kernel (to check if program was loaded correctly)
188+ BOOST_CHECK_NO_THROW (il_program.create_kernel (" foobar" ));
189+ }
190+
191+ BOOST_AUTO_TEST_CASE (get_program_il_binary_empty)
192+ {
193+ boost::compute::program program;
194+ BOOST_CHECK_NO_THROW (
195+ program = boost::compute::program::create_with_source (source, context)
196+ );
197+ BOOST_CHECK_NO_THROW (program.build ());
198+
199+ std::vector<unsigned char > il_binary;
200+ il_binary = program.il_binary ();
201+ BOOST_CHECK (il_binary.empty ());
202+ }
203+ #endif // BOOST_COMPUTE_CL_VERSION_2_1
204+
129205BOOST_AUTO_TEST_CASE (create_with_source_doctest)
130206{
131207// ! [create_with_source]
0 commit comments