Createpolicy instruction behavior

Hi,

I would like to understand the behavior of the createpolicy instruction introduced couple of years back. I understand it is a performance hint. What isn’t clear from the ISA manual is if we can write many such createpolicy instructions in a program that is then applied to the same cache level. Let us assume for this purpose that both primary-size and total-size are the same. Assuming we have an array X[100000], can we do something like the following(just using psuedocode and all of these are meant for the L2 cache),

createpolicy(A[0:100], evict_last)
createpolicy(A[100:200], evict_first)
createpolicy(A[200:300], evict_last)
createpolicy(A[300:400], evict_last);

So basically specifying different eviction policies for every 100 elements in my buffer.

The reason I am a bit confused is because from the CUDA API level when using the L2 residency control feature, my understanding is that we can only define single memory region that is then bound to a stream using the base pointer and size etc. But the createpolicy does not state such a limitation. Does this imply if I want more finer grained control, I can instead use the createpolicy based method to demarcate the eviction priority of different regions of my buffer?.

Thanks in ahead for the help.