@@ -2110,93 +2110,6 @@ int rvar_bounds_test() {
21102110 return 0 ;
21112111}
21122112
2113- // Test for the issue described in https://github.com/halide/Halide/issues/6367.
2114- int two_compute_at_test () {
2115- ImageParam input1 (Int (16 ), 2 , " input1" );
2116- Func output1 (" output1" ), output2 (" output2" ), output3 (" output3" );
2117- Var k{" k" };
2118-
2119- Func intermediate{" intermediate" };
2120- Func output1_value{" output1_value" };
2121- Func output3_value{" output3_value" };
2122-
2123- intermediate (k) = input1 (k, 0 ) * input1 (k, 1 );
2124- output1_value (k) = intermediate (k) * intermediate (k);
2125- output1 (k) = output1_value (k);
2126- output2 (k) = output1_value (k) + output1_value (k);
2127- output3_value (k) = input1 (k, 0 ) + 2 ;
2128- output3 (k) = output3_value (k);
2129-
2130- Expr num = input1.dim (0 ).extent ();
2131- input1.dim (0 ).set_bounds (0 , num);
2132- input1.dim (1 ).set_bounds (0 , 2 );
2133- output1.output_buffer ().dim (0 ).set_bounds (0 , num);
2134- output2.output_buffer ().dim (0 ).set_bounds (0 , num);
2135- output3.output_buffer ().dim (0 ).set_bounds (0 , num);
2136-
2137- intermediate
2138- .vectorize (k, 8 )
2139- .compute_at (output1_value, k)
2140- .bound_storage (k, 8 )
2141- .store_in (MemoryType::Register);
2142-
2143- output1_value
2144- .vectorize (k, 8 )
2145- .compute_at (output2, k)
2146- .bound_storage (k, 8 )
2147- .store_in (MemoryType::Register);
2148-
2149- output1
2150- .vectorize (k, 8 )
2151- .compute_with (output2, k);
2152-
2153- output2
2154- .vectorize (k, 8 );
2155-
2156- output3_value
2157- .vectorize (k, 8 )
2158- .compute_at (output3, k)
2159- .bound_storage (k, 8 )
2160- .store_in (MemoryType::Register);
2161-
2162- output3
2163- .vectorize (k, 8 )
2164- .compute_with (output2, k);
2165-
2166- Pipeline p ({output1, output2, output3});
2167- p.compile_jit ();
2168-
2169- Buffer<int16_t > in (8 , 2 );
2170- Buffer<int16_t > o1 (8 ), o2 (8 ), o3 (8 );
2171- for (int iy = 0 ; iy < in.height (); iy++) {
2172- for (int ix = 0 ; ix < in.width (); ix++) {
2173- in (ix, iy) = ix + iy;
2174- }
2175- }
2176- input1.set (in);
2177- p.realize ({o1, o2, o3});
2178-
2179- for (int x = 0 ; x < 8 ; x++) {
2180- int val = (x * (x + 1 )) * (x * (x + 1 ));
2181- if (o1 (x) != val) {
2182- printf (" o1(%d) = %d instead of %d\n " ,
2183- x, o1 (x), val);
2184- return -1 ;
2185- }
2186- if (o2 (x) != 2 * val) {
2187- printf (" o2(%d) = %d instead of %d\n " ,
2188- x, o2 (x), 2 * val);
2189- return -1 ;
2190- }
2191- if (o3 (x) != x + 2 ) {
2192- printf (" o2(%d) = %d instead of %d\n " ,
2193- x, o3 (x), x + 2 );
2194- return -1 ;
2195- }
2196- }
2197- return 0 ;
2198- }
2199-
22002113} // namespace
22012114
22022115int main (int argc, char **argv) {
@@ -2343,11 +2256,6 @@ int main(int argc, char **argv) {
23432256 return -1 ;
23442257 }
23452258
2346- printf (" Running two_compute_at test\n " );
2347- if (two_compute_at_test () != 0 ) {
2348- return -1 ;
2349- }
2350-
23512259 printf (" Success!\n " );
23522260 return 0 ;
23532261}
0 commit comments