+const ArmISA::VecPredRegContainer &
+ThreadContext::readVecPredReg(const RegId ®_id) const
+{
+ RegIndex idx = reg_id.index();
+ if (idx >= vecPredRegIds.size())
+ return vecPredRegs.at(idx);
+
+ ArmISA::VecPredRegContainer ® = vecPredRegs.at(idx);
+
+ iris::ResourceReadResult result;
+ call().resource_read(_instId, result, vecPredRegIds.at(idx));
+
+ size_t offset = 0;
+ size_t num_bits = reg.NUM_BITS;
+ uint8_t *bytes = (uint8_t *)result.data.data();
+ while (num_bits > 8) {
+ reg.set_bits(offset, 8, *bytes);
+ offset += 8;
+ num_bits -= 8;
+ bytes++;
+ }
+ if (num_bits)
+ reg.set_bits(offset, num_bits, *bytes);
+
+ return reg;
+}
+
+const ArmISA::VecPredRegContainer &
+ThreadContext::readVecPredRegFlat(RegIndex idx) const
+{
+ return readVecPredReg(RegId(VecPredRegClass, idx));
+}
+