This change:
- Adds implementation details for the atomic_flag_test_and_set, atomic_flag_test_and_set_explicit, atomic_flag_clear, atomic_flag_clear_explicit builtins
- Adds an atomic_flag.ll test from the SPIR-V translator with additional checks
The atomic_flag.ll passes after this change.
Why is this something that would be materialized in a register instead of an immediate argument?