}
case 0x30C:
{
- IRExpr * t3, *t2, *t1, *t0;
- UInt ea_off = 0;
- IRExpr* irx_addr;
+ IRExpr *t0;
DIP("lxvw4x %d,r%u,r%u\n", (UInt)XT, rA_addr, rB_addr);
- t3 = load( Ity_I32, mkexpr( EA ) );
- ea_off += 4;
- irx_addr = binop( mkSzOp( ty, Iop_Add8 ), mkexpr( EA ),
- ty == Ity_I64 ? mkU64( ea_off ) : mkU32( ea_off ) );
- t2 = load( Ity_I32, irx_addr );
- ea_off += 4;
- irx_addr = binop( mkSzOp( ty, Iop_Add8 ), mkexpr( EA ),
- ty == Ity_I64 ? mkU64( ea_off ) : mkU32( ea_off ) );
- t1 = load( Ity_I32, irx_addr );
- ea_off += 4;
- irx_addr = binop( mkSzOp( ty, Iop_Add8 ), mkexpr( EA ),
- ty == Ity_I64 ? mkU64( ea_off ) : mkU32( ea_off ) );
- t0 = load( Ity_I32, irx_addr );
- putVSReg( XT, binop( Iop_64HLtoV128, binop( Iop_32HLto64, t3, t2 ),
- binop( Iop_32HLto64, t1, t0 ) ) );
+
+ t0 = load( Ity_V128, mkexpr( EA ) );
+ putVSReg( XT, t0 );
break;
}
default: