Zaslat SMS: TriCheck: Memory Model Verification at the Trisection of Software, Hardware, and ISA