30 #include <gtest/gtest.h> 34 #include <type_traits> 44 Bitfield<39, 32> byte5;
46 BitfieldRO<39, 32> byte5RO;
47 BitfieldWO<39, 32> byte5WO;
49 Bitfield<43, 42> bits43To42;
51 SignedBitfield<41> bit41Signed;
53 SignedBitfield<47, 40> byte6Signed;
54 SignedBitfieldRO<47, 40> byte6SignedRO;
55 SignedBitfieldWO<47, 40> byte6SignedWO;
74 Bitfield<15, 12> high;
84 getter(
const uint64_t &storage)
const 94 setter(uint64_t &storage, uint64_t
val)
108 struct ContainingStruct
111 Bitfield<63, 60> topNibble;
118 containingFunc(uint64_t init_val, uint64_t fieldVal)
121 Bitfield<16, 15> field;
124 Contained contained = init_val;
125 contained.field = fieldVal;
143 void SetUp()
override { sixtyFour = 0; split = 0; }
145 template <
typename T>
148 template <
typename T>
160 sixtyFour.byte5 = 0xff;
162 sixtyFour.byte5 = 0xfff;
170 sixtyFour.bit2 = 0x1;
178 sixtyFour.byte5 = 0xff;
184 sixtyFour.byte5WO = 0xff;
191 sixtyFour.byte6 = 0x2;
193 sixtyFour.byte6.bits43To42 = 0x3;
195 sixtyFour.byte6 = 0xff;
196 sixtyFour.byte6.bit41 = 0;
202 sixtyFour.byte6 = 0xff;
205 sixtyFour.byte6SignedWO = 0;
213 ContainingStruct containing;
214 containing.contained = 0;
215 containing.contained.topNibble = 0xd;
216 EXPECT_EQ(containing.contained, 0xd000000000000000);
221 EXPECT_EQ(containingFunc(0xfffff, 0), 0xe7fff);
226 SixtyFour otherSixtyFour = 0;
228 otherSixtyFour.byte6.bit41 = sixtyFour.bit2;
229 EXPECT_EQ(otherSixtyFour, 0x20000000000);
230 otherSixtyFour.bit2 = sixtyFour.bit2;
231 EXPECT_EQ(otherSixtyFour, 0x20000000004);
236 SixtyFour otherSixtyFour = 0x4;
237 sixtyFour = otherSixtyFour;
243 sixtyFour = otherSixtyFour;
258 EXPECT_EQ(templatedFunction(sixtyFour), 0xff);
259 EXPECT_EQ(templatedFunction((uint64_t)sixtyFour), 0);
268 is64 = std::is_same<BitUnionBaseType<Dummy64>, uint64_t>::value;
270 is64 = std::is_same<BitUnionBaseType<Dummy32>, uint64_t>::value;
276 sixtyFour = 1234567812345678;
277 std::stringstream
ss;
282 EmptyEight eight = 65;
#define BitUnion(type, name)
EmptyThirtyTwo emptyThirtyTwo
EndBitUnion(UserDescFlags) struct UserDesc32
Overload hash function for BasicBlockRange type.
uint64_t templatedFunction(T)
#define EXPECT_TRUE(expr)
A macro which verifies that expr evaluates to true.
#define SubBitUnion(name, first, last)
TEST_F(BitUnionData, NormalBitfield)
#define EndSubBitUnion(name)
EmptySixteen emptySixteen
#define EXPECT_FALSE(expr)
A macro which verifies that expr evaluates to false.
typename BitfieldBackend::BitUnionBaseType< T >::Type BitUnionBaseType
BitUnion32(UserDescFlags) Bitfield< 0 > seg_32bit
EmptySixtyFour emptySixtyFour
#define EXPECT_EQ(lhs, rhs)
A macro which verifies that lhs and rhs are equal to each other.
uint64_t templatedFunction(BitUnionType< T > u)