11623659165bb24d733a40124e929cfd42aa917e3David Gross// -Wall
265f23ed862e1a1e16477ba740f295ff4a83ac822David Gross#pragma version(1)
365f23ed862e1a1e16477ba740f295ff4a83ac822David Gross#pragma rs java_package_name(voidptr)
465f23ed862e1a1e16477ba740f295ff4a83ac822David Gross
565f23ed862e1a1e16477ba740f295ff4a83ac822David Gross// void is not a suitable accumulator data type or result type; and
665f23ed862e1a1e16477ba740f295ff4a83ac822David Gross// note that an input cannot be a pointer
765f23ed862e1a1e16477ba740f295ff4a83ac822David Gross
865f23ed862e1a1e16477ba740f295ff4a83ac822David Gross// accumulator must not be void
965f23ed862e1a1e16477ba740f295ff4a83ac822David Gross#pragma rs reduce(voidA) initializer(voidA_init) accumulator(voidA_accum) combiner(voidA_comb)
1065f23ed862e1a1e16477ba740f295ff4a83ac822David Grossstatic void voidA_init(void *accum) { }
1165f23ed862e1a1e16477ba740f295ff4a83ac822David Grossstatic void voidA_accum(void *accum, int val) { }
1265f23ed862e1a1e16477ba740f295ff4a83ac822David Grossstatic void voidA_comb(void *accum, const void *other) { }
1365f23ed862e1a1e16477ba740f295ff4a83ac822David Gross
1465f23ed862e1a1e16477ba740f295ff4a83ac822David Gross// input must not be void*
1565f23ed862e1a1e16477ba740f295ff4a83ac822David Gross#pragma rs reduce(voidI) accumulator(voidI_accum) combiner(voidI_comb)
1665f23ed862e1a1e16477ba740f295ff4a83ac822David Grossstatic void voidI_accum(int *accum, void *val) { }
1765f23ed862e1a1e16477ba740f295ff4a83ac822David Grossstatic void voidI_comb(int *accum, const int *other) { }
1865f23ed862e1a1e16477ba740f295ff4a83ac822David Gross
1965f23ed862e1a1e16477ba740f295ff4a83ac822David Gross// result type must not be void
2065f23ed862e1a1e16477ba740f295ff4a83ac822David Gross#pragma rs reduce(voidO) accumulator(voidO_accum) outconverter(voidO_out)
2165f23ed862e1a1e16477ba740f295ff4a83ac822David Grossstatic void voidO_accum(int *accum, int val) { }
2265f23ed862e1a1e16477ba740f295ff4a83ac822David Grossstatic void voidO_out(void *out, const int *val) { }
23