From: Julian Seward Date: Mon, 31 Jan 2005 18:08:45 +0000 (+0000) Subject: Add two new primops needed by the amd64 front end. X-Git-Tag: svn/VALGRIND_3_0_1^2~542 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=cb01734976f1f57720b4f068def57439f90703dd;p=thirdparty%2Fvalgrind.git Add two new primops needed by the amd64 front end. git-svn-id: svn://svn.valgrind.org/vex/trunk@792 --- diff --git a/VEX/priv/ir/irdefs.c b/VEX/priv/ir/irdefs.c index 6fa5804af6..ef6bc5f5bd 100644 --- a/VEX/priv/ir/irdefs.c +++ b/VEX/priv/ir/irdefs.c @@ -169,6 +169,9 @@ void ppIROp ( IROp op ) case Iop_DivModU64to32: vex_printf("DivModU64to32"); return; case Iop_DivModS64to32: vex_printf("DivModS64to32"); return; + case Iop_DivModU128to64: vex_printf("DivModU128to64"); return; + case Iop_DivModS128to64: vex_printf("DivModS128to64"); return; + case Iop_16HIto8: vex_printf("16HIto8"); return; case Iop_16to8: vex_printf("16to8"); return; case Iop_8HLto16: vex_printf("8HLto16"); return; @@ -1240,6 +1243,9 @@ void typeOfPrimop ( IROp op, IRType* t_dst, IRType* t_arg1, IRType* t_arg2 ) case Iop_DivModU64to32: case Iop_DivModS64to32: BINARY(Ity_I64, Ity_I64,Ity_I32); + case Iop_DivModU128to64: case Iop_DivModS128to64: + BINARY(Ity_V128, Ity_V128,Ity_I64); + case Iop_16HIto8: case Iop_16to8: UNARY(Ity_I8,Ity_I16); case Iop_8HLto16: diff --git a/VEX/pub/libvex_ir.h b/VEX/pub/libvex_ir.h index 8f231ed925..73ab799089 100644 --- a/VEX/pub/libvex_ir.h +++ b/VEX/pub/libvex_ir.h @@ -210,12 +210,17 @@ typedef Iop_CmpLE32S, Iop_CmpLT32U, Iop_CmpLE32U, + /* Division */ /* TODO: clarify semantics wrt rounding, negative values, whatever */ Iop_DivModU64to32, // :: I64,I32 -> I64 // of which lo half is div and hi half is mod Iop_DivModS64to32, // ditto, signed + Iop_DivModU128to64, // :: V128,I64 -> V128 + // of which lo half is div and hi half is mod + Iop_DivModS128to64, // ditto, signed + /* Widening conversions */ Iop_8Uto16, Iop_8Uto32, Iop_16Uto32, Iop_32Uto64, Iop_8Sto16, Iop_8Sto32, Iop_16Sto32, Iop_32Sto64,