|
24 | 24 | #include "tcg/tcg-mo.h"
|
25 | 25 | #include "tcg-internal.h"
|
26 | 26 |
|
| 27 | +//// --- Begin LibAFL code --- |
| 28 | + |
| 29 | +void libafl_gen_read(TCGTemp *addr, MemOpIdx oi); |
| 30 | +void libafl_gen_write(TCGTemp *addr, MemOpIdx oi); |
| 31 | + |
| 32 | +//// --- End LibAFL code --- |
| 33 | + |
27 | 34 | /*
|
28 | 35 | * Vector optional opcode tracking.
|
29 | 36 | * Except for the basic logical operations (and, or, xor), and
|
@@ -276,12 +283,34 @@ static void vec_gen_ldst(TCGOpcode opc, TCGv_vec r, TCGv_ptr b, TCGArg o)
|
276 | 283 |
|
277 | 284 | void tcg_gen_ld_vec(TCGv_vec r, TCGv_ptr b, TCGArg o)
|
278 | 285 | {
|
| 286 | +//// --- Begin LibAFL code --- |
| 287 | + TCGArg ri = tcgv_vec_arg(r); |
| 288 | + TCGTemp *rt = arg_temp(ri); |
| 289 | + TCGType type = rt->base_type; |
| 290 | + MemOpIdx oi = make_memop_idx((type - TCG_TYPE_V64) + MO_64, 0); |
| 291 | +//// --- End LibAFL code --- |
| 292 | + |
279 | 293 | vec_gen_ldst(INDEX_op_ld_vec, r, b, o);
|
| 294 | + |
| 295 | +//// --- Begin LibAFL code --- |
| 296 | + libafl_gen_read(tcgv_ptr_temp(b), oi); |
| 297 | +//// --- End LibAFL code --- |
280 | 298 | }
|
281 | 299 |
|
282 | 300 | void tcg_gen_st_vec(TCGv_vec r, TCGv_ptr b, TCGArg o)
|
283 | 301 | {
|
| 302 | +//// --- Begin LibAFL code --- |
| 303 | + TCGArg ri = tcgv_vec_arg(r); |
| 304 | + TCGTemp *rt = arg_temp(ri); |
| 305 | + TCGType type = rt->base_type; |
| 306 | + MemOpIdx oi = make_memop_idx((type - TCG_TYPE_V64) + MO_64, 0); |
| 307 | +//// --- End LibAFL code --- |
| 308 | + |
284 | 309 | vec_gen_ldst(INDEX_op_st_vec, r, b, o);
|
| 310 | + |
| 311 | +//// --- Begin LibAFL code --- |
| 312 | + libafl_gen_write(tcgv_ptr_temp(b), oi); |
| 313 | +//// --- End LibAFL code --- |
285 | 314 | }
|
286 | 315 |
|
287 | 316 | void tcg_gen_stl_vec(TCGv_vec r, TCGv_ptr b, TCGArg o, TCGType low_type)
|
|
0 commit comments