/ externals / biscuit / tests / src / assembler_zacas_tests.cpp
assembler_zacas_tests.cpp
 1  #include <catch/catch.hpp>
 2  
 3  #include <biscuit/assembler.hpp>
 4  
 5  #include "assembler_test_utils.hpp"
 6  
 7  using namespace biscuit;
 8  
 9  TEST_CASE("AMOCAS.D", "[Zacas]") {
10      uint32_t value = 0;
11      auto as = MakeAssembler64(value);
12  
13      as.AMOCAS_D(Ordering::None, x31, x7, x15);
14      REQUIRE(value == 0x2877BFAF);
15  
16      as.RewindBuffer();
17  
18      as.AMOCAS_D(Ordering::AQ, x31, x7, x15);
19      REQUIRE(value == 0x2C77BFAF);
20  
21      as.RewindBuffer();
22  
23      as.AMOCAS_D(Ordering::RL, x31, x7, x15);
24      REQUIRE(value == 0x2A77BFAF);
25  
26      as.RewindBuffer();
27  
28      as.AMOCAS_D(Ordering::AQRL, x31, x7, x15);
29      REQUIRE(value == 0x2E77BFAF);
30  }
31  
32  TEST_CASE("AMOCAS.Q", "[Zacas]") {
33      uint32_t value = 0;
34      auto as = MakeAssembler64(value);
35  
36      as.AMOCAS_Q(Ordering::None, x30, x6, x14);
37      REQUIRE(value == 0x28674F2F);
38  
39      as.RewindBuffer();
40  
41      as.AMOCAS_Q(Ordering::AQ, x30, x6, x14);
42      REQUIRE(value == 0x2C674F2F);
43  
44      as.RewindBuffer();
45  
46      as.AMOCAS_Q(Ordering::RL, x30, x6, x14);
47      REQUIRE(value == 0x2A674F2F);
48  
49      as.RewindBuffer();
50  
51      as.AMOCAS_Q(Ordering::AQRL, x30, x6, x14);
52      REQUIRE(value == 0x2E674F2F);
53  }
54  
55  TEST_CASE("AMOCAS.W", "[Zacas]") {
56      uint32_t value = 0;
57      auto as = MakeAssembler64(value);
58  
59      as.AMOCAS_W(Ordering::None, x31, x7, x15);
60      REQUIRE(value == 0x2877AFAF);
61  
62      as.RewindBuffer();
63  
64      as.AMOCAS_W(Ordering::AQ, x31, x7, x15);
65      REQUIRE(value == 0x2C77AFAF);
66  
67      as.RewindBuffer();
68  
69      as.AMOCAS_W(Ordering::RL, x31, x7, x15);
70      REQUIRE(value == 0x2A77AFAF);
71  
72      as.RewindBuffer();
73  
74      as.AMOCAS_W(Ordering::AQRL, x31, x7, x15);
75      REQUIRE(value == 0x2E77AFAF);
76  }