[[!tag svp64_cookbook ]]
This is based on the AVX512 conflict detection instruction. Internally the logic is used to detect address conflicts in multi-issue LD/ST operations. Two arrays of values are given: the indices are compared and duplicates reported in a triangular fashion. the instruction may be used for histograms (computed in parallel)
input = [100, 100, 3, 100, 5, 100, 100, 3]
conflict result = [
0b00000000, // Note: first element always zero
0b00000001, // 100 is present on #0
0b00000000,
0b00000011, // 100 is present on #0 and #1
0b00000000,
0b00001011, // 100 is present on #0, #1, #3
0b00011011, // .. and #4
0b00000100 // 3 is present on #2
]
Pseudocode:
for i in range(VL):
for j in range(1, i):
if src1[i] == src2[j]:
result[j] |= 1<
*