@@ -199,9 +199,9 @@ static inline void write(uint32_t value) {
199
199
* @tparam reg The register to write to.
200
200
* @param fp The fixed point number to write.
201
201
*/
202
- template <Register reg>
202
+ template <Register reg, bool valid = false >
203
203
static inline void writeSafe (Short fp) {
204
- static_assert (false , " Unable to write single fixed point to register" );
204
+ static_assert (valid , " Unable to write single fixed point to register" );
205
205
}
206
206
207
207
/* *
@@ -211,9 +211,9 @@ static inline void writeSafe(Short fp) {
211
211
* @tparam reg The register to write to.
212
212
* @param fp The fixed point number to write.
213
213
*/
214
- template <Register reg>
214
+ template <Register reg, bool valid = false >
215
215
static inline void writeUnsafe (Short fp) {
216
- static_assert (false , " Unable to write single fixed point to register" );
216
+ static_assert (valid , " Unable to write single fixed point to register" );
217
217
}
218
218
219
219
/* *
@@ -223,9 +223,9 @@ static inline void writeUnsafe(Short fp) {
223
223
* @param low The value to write to the lower 16 bits of the register.
224
224
* @param hi The value to write to the higher 16 bits of the register.
225
225
*/
226
- template <Register reg>
226
+ template <Register reg, bool valid = false >
227
227
static inline void writeSafe (Short low, Short hi) {
228
- static_assert (false , " Unable to write double fixed point to register" );
228
+ static_assert (valid , " Unable to write double fixed point to register" );
229
229
}
230
230
231
231
/* *
@@ -236,9 +236,9 @@ static inline void writeSafe(Short low, Short hi) {
236
236
* @param low The value to write to the lower 16 bits of the register.
237
237
* @param hi The value to write to the higher 16 bits of the register.
238
238
*/
239
- template <Register reg>
239
+ template <Register reg, bool valid = false >
240
240
static inline void writeUnsafe (Short low, Short hi) {
241
- static_assert (false , " Unable to write double fixed point to register" );
241
+ static_assert (valid , " Unable to write double fixed point to register" );
242
242
}
243
243
244
244
/* *
@@ -253,9 +253,9 @@ enum class PseudoRegister { Rotation, Light, Color, V0, V1, V2, SV, LV };
253
253
* @tparam reg The pseudo register to write to.
254
254
* @param in The matrix to write.
255
255
*/
256
- template <PseudoRegister reg>
256
+ template <PseudoRegister reg, bool valid = false >
257
257
static inline void writeSafe (const Matrix33& in) {
258
- static_assert (false , " Unable to write matrix to pseudo register" );
258
+ static_assert (valid , " Unable to write matrix to pseudo register" );
259
259
}
260
260
261
261
/* *
@@ -265,9 +265,9 @@ static inline void writeSafe(const Matrix33& in) {
265
265
* @tparam reg The pseudo register to write to.
266
266
* @param in The matrix to write.
267
267
*/
268
- template <PseudoRegister reg>
268
+ template <PseudoRegister reg, bool valid = false >
269
269
static inline void writeUnsafe (const Matrix33& in) {
270
- static_assert (false , " Unable to write matrix to pseudo register" );
270
+ static_assert (valid , " Unable to write matrix to pseudo register" );
271
271
}
272
272
273
273
/* *
@@ -277,9 +277,9 @@ static inline void writeUnsafe(const Matrix33& in) {
277
277
* @tparam reg The pseudo register to write to.
278
278
* @param in The vector to write.
279
279
*/
280
- template <PseudoRegister reg>
280
+ template <PseudoRegister reg, bool valid = false >
281
281
static inline void writeSafe (const Vec3& in) {
282
- static_assert (false , " Unable to write vector to pseudo register" );
282
+ static_assert (valid , " Unable to write vector to pseudo register" );
283
283
}
284
284
285
285
/* *
@@ -289,9 +289,9 @@ static inline void writeSafe(const Vec3& in) {
289
289
* @tparam reg The pseudo register to write to.
290
290
* @param in The vector to write.
291
291
*/
292
- template <PseudoRegister reg>
292
+ template <PseudoRegister reg, bool valid = false >
293
293
static inline void writeUnsafe (const Vec3& in) {
294
- static_assert (false , " Unable to write vector to pseudo register" );
294
+ static_assert (valid , " Unable to write vector to pseudo register" );
295
295
}
296
296
297
297
/* *
@@ -360,9 +360,9 @@ static inline void read(uint32_t* ptr) {
360
360
* @tparam reg The pseudo register to read from.
361
361
* @return PackedVec3 The vector read from the pseudo register.
362
362
*/
363
- template <PseudoRegister reg>
363
+ template <PseudoRegister reg, bool valid = false >
364
364
static inline PackedVec3 readSafe () {
365
- static_assert (false , " Unable to read pseudo register as vector" );
365
+ static_assert (valid , " Unable to read pseudo register as vector" );
366
366
__builtin_unreachable ();
367
367
}
368
368
@@ -373,15 +373,15 @@ static inline PackedVec3 readSafe() {
373
373
* @tparam reg The pseudo register to read from.
374
374
* @return PackedVec3 The vector read from the pseudo register.
375
375
*/
376
- template <PseudoRegister reg>
376
+ template <PseudoRegister reg, bool valid = false >
377
377
static inline PackedVec3 readUnsafe () {
378
- static_assert (false , " Unable to read pseudo register as vector" );
378
+ static_assert (valid , " Unable to read pseudo register as vector" );
379
379
__builtin_unreachable ();
380
380
}
381
381
382
- template <PseudoRegister reg>
382
+ template <PseudoRegister reg, bool valid = false >
383
383
static inline void read (Vec3* ptr) {
384
- static_assert (false , " Unable to read pseudo register as vector" );
384
+ static_assert (valid , " Unable to read pseudo register as vector" );
385
385
__builtin_unreachable ();
386
386
}
387
387
0 commit comments