From: lkcl Date: Wed, 26 Apr 2023 16:10:14 +0000 (+0100) Subject: (no commit message) X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=54b21d11782812a30f05445add6f21d42e1607d1;p=libreriscv.git --- diff --git a/openpower/sv/cookbook/conflictd.mdwn b/openpower/sv/cookbook/conflictd.mdwn index 4d2b56ab0..87f9a8d55 100644 --- a/openpower/sv/cookbook/conflictd.mdwn +++ b/openpower/sv/cookbook/conflictd.mdwn @@ -1,3 +1,55 @@ [[!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< +*