[code-reflection] RFR: [hat][proposal] Analysis for constants before the codegen
Juan Fumero
jfumero at openjdk.org
Wed Sep 17 14:16:45 UTC 2025
How to test?
HAT=SHOW_CODE java @hat/test ffi-opencl oracle.code.hat.TestConstants
Whole suite:
HAT=SHOW_CODE java @hat/test suite ffi-opencl
Example:
@CodeReflection
public static void vectorWithConstants(@RO KernelContext kc, @RO S32Array arrayA, @RO S32Array arrayB, @RW S32Array arrayC) {
final int BM = 100;
if (kc.x < kc.gsx) {
final int valueA = arrayA.array(kc.x);
final int valueB = arrayB.array(kc.x);
arrayC.array(kc.x, (BM + valueA + valueB));
}
}
Generated code:
__kernel void vectorWithConstants(
__global KernelContext_t* kc,
__global S32Array_t* arrayA,
__global S32Array_t* arrayB,
__global S32Array_t* arrayC
){
const int BM = 100;
if(get_global_id(0)<get_global_size(0)){
const int valueA = arrayA->array[(long)get_global_id(0)];
const int valueB = arrayB->array[(long)get_global_id(0)];
arrayC->array[(long)get_global_id(0)]=BM+valueA+valueB;
}
return;
}
-------------
Commit messages:
- [hat] Proposal for analysing final values in HAT
- Revert back
- Generate constants from final for OpenCL and CUDA
Changes: https://git.openjdk.org/babylon/pull/575/files
Webrev: https://webrevs.openjdk.org/?repo=babylon&pr=575&range=00
Stats: 140 lines in 7 files changed: 136 ins; 2 del; 2 mod
Patch: https://git.openjdk.org/babylon/pull/575.diff
Fetch: git fetch https://git.openjdk.org/babylon.git pull/575/head:pull/575
PR: https://git.openjdk.org/babylon/pull/575
More information about the babylon-dev
mailing list