CCTLib
Calling-context and data-object attribution library for Intel Pin
rvn_tn_different.c
Go to the documentation of this file.
1 // runtime_value_numbering true-negative: two computations that produce
2 // DIFFERENT values (different operands per iteration). RVN should NOT
3 // classify these as redundant.
4 #include <stdint.h>
5 
6 static volatile uint64_t sink;
7 
8 int main(int argc, char** argv) {
9  (void)argc; (void)argv;
10  uint64_t a = 0x1234;
11  uint64_t sum1 = 0, sum2 = 0;
12  for (int i = 0; i < 100000; ++i) {
13  uint64_t b = (uint64_t)i; // b changes every iteration
14  uint64_t c = (uint64_t)(i * 3 + 7);
15  __asm__ __volatile__ (
16  "leaq (%[a], %[b]), %[s1]\n\t"
17  "leaq (%[a], %[c]), %[s2]\n\t"
18  : [s1] "=r"(sum1), [s2] "=r"(sum2)
19  : [a] "r"(a), [b] "r"(b), [c] "r"(c)
20  :
21  );
22  sink = sum1 + sum2;
23  }
24  return 0;
25 }
int main(int argc, char **argv)
static volatile uint64_t sink
int a[1000]
Definition: testArray.c:5