-rw-r--r-- 1327 djbsort-20260210/sortverif/angr-patch raw
--- a/site-packages/angr/engines/vex/claripy/irop.py
+++ b/site-packages/angr/engines/vex/claripy/irop.py
@@ -119,6 +119,14 @@
"generic_name": "unpack",
"to_size": 128,
},
+ "Iop_SliceV128": {
+ "generic_name": "slice",
+ "to_size": 128,
+ },
+ "Iop_Reverse32sIn64_x2": {
+ "generic_name": "reverse",
+ "to_size": 128,
+ },
}
for _vec_lanewidth in (8, 16, 32, 64):
@@ -1104,6 +1112,18 @@
return self._op_concat(args)
@staticmethod
+ def _op_Iop_SliceV128(args):
+ left,right,imm = args
+ assert imm.op == 'BVV'
+ imm = imm.args[0]
+ return claripy.Concat(left,right)[127+imm*8:imm*8]
+
+ @staticmethod
+ def _op_Iop_Reverse32sIn64_x2(args):
+ arg = args[0]
+ return claripy.Concat(arg[95:64],arg[127:96],arg[31:0],arg[63:32])
+
+ @staticmethod
def _op_Iop_V256to64_0(args):
return args[0][63:0]
@@ -1265,7 +1285,7 @@
if res is None and extended:
attrs = op_attrs(op)
if attrs is None:
- raise UnsupportedIROpError("Operation not implemented")
+ raise UnsupportedIROpError(f"Operation {op} not implemented")
res = SimIROp(op, **attrs)
if res is None:
raise UnsupportedIROpError("Operation not implemented")