// Original CPU teaching model; not a device simulator or benchmark.
#include <iostream>
#include <stdexcept>

void require(bool ok) { if (!ok) throw std::runtime_error("model check failed"); }

int original(int* p,int* q){const int old=*p;*q=5;return old+*p;}
int cached(int* p,int* q){const int old=*p;*q=5;return old+old;}
int main() {
 int a=2,b=2;const int good=original(&a,&a),bad=cached(&b,&b);
 require(good==7 && bad==4);
 std::cout<<"original="<<good<<" cached="<<bad<<'\n';
}

