Home | History | Annotate | Download | only in memcheck

Lines Matching refs:IRAtom

299 typedef  IRExpr  IRAtom;
303 static Bool isOriginalAtom ( MCEnv* mce, IRAtom* a1 )
316 static Bool isShadowAtom ( MCEnv* mce, IRAtom* a1 )
329 static Bool sameKindedAtoms ( IRAtom* a1, IRAtom* a2 )
420 static IRAtom* assignNew ( HChar cat, MCEnv* mce, IRType ty, IRExpr* e )
446 static IRAtom* mkDifD8 ( MCEnv* mce, IRAtom* a1, IRAtom* a2 ) {
452 static IRAtom* mkDifD16 ( MCEnv* mce, IRAtom* a1, IRAtom* a2 ) {
458 static IRAtom* mkDifD32 ( MCEnv* mce, IRAtom* a1, IRAtom* a2 ) {
464 static IRAtom* mkDifD64 ( MCEnv* mce, IRAtom* a1, IRAtom* a2 ) {
470 static IRAtom* mkDifDV128 ( MCEnv* mce, IRAtom* a1, IRAtom* a2 ) {
478 static IRAtom* mkUifU8 ( MCEnv* mce, IRAtom* a1, IRAtom* a2 ) {
484 static IRAtom* mkUifU16 ( MCEnv* mce, IRAtom* a1, IRAtom* a2 ) {
490 static IRAtom* mkUifU32 ( MCEnv* mce, IRAtom* a1, IRAtom* a2 ) {
496 static IRAtom* mkUifU64 ( MCEnv* mce, IRAtom* a1, IRAtom* a2 ) {
502 static IRAtom* mkUifUV128 ( MCEnv* mce, IRAtom* a1, IRAtom* a2 ) {
508 static IRAtom* mkUifU ( MCEnv* mce, IRType vty, IRAtom* a1, IRAtom* a2 ) {
523 static IRAtom* mkLeft8 ( MCEnv* mce, IRAtom* a1 ) {
528 static IRAtom* mkLeft16 ( MCEnv* mce, IRAtom* a1 ) {
533 static IRAtom* mkLeft32 ( MCEnv* mce, IRAtom* a1 ) {
538 static IRAtom* mkLeft64 ( MCEnv* mce, IRAtom* a1 ) {
548 static IRAtom* mkImproveAND8 ( MCEnv* mce, IRAtom* data, IRAtom* vbits )
556 static IRAtom* mkImproveAND16 ( MCEnv* mce, IRAtom* data, IRAtom* vbits )
564 static IRAtom* mkImproveAND32 ( MCEnv* mce, IRAtom* data, IRAtom* vbits )
572 static IRAtom* mkImproveAND64 ( MCEnv* mce, IRAtom* data, IRAtom* vbits )
580 static IRAtom* mkImproveANDV128 ( MCEnv* mce, IRAtom* data, IRAtom* vbits )
591 static IRAtom* mkImproveOR8 ( MCEnv* mce, IRAtom* data, IRAtom* vbits )
603 static IRAtom* mkImproveOR16 ( MCEnv* mce, IRAtom* data, IRAtom* vbits )
615 static IRAtom* mkImproveOR32 ( MCEnv* mce, IRAtom* data, IRAtom* vbits )
627 static IRAtom* mkImproveOR64 ( MCEnv* mce, IRAtom* data, IRAtom* vbits )
639 static IRAtom* mkImproveORV128 ( MCEnv* mce, IRAtom* data, IRAtom* vbits )
653 static IRAtom* mkPCastTo( MCEnv* mce, IRType dst_ty, IRAtom* vbits )
656 IRAtom* tmp1;
670 IRAtom* tmp = assignNew('V', mce, Ity_I32, unop(Iop_CmpwNEZ32, vbits));
695 IRAtom* tmp2 = assignNew('V', mce, Ity_I64, unop(Iop_128HIto64, vbits));
696 IRAtom* tmp3 = assignNew('V', mce, Ity_I64, unop(Iop_128to64, vbits));
697 IRAtom* tmp4 = assignNew('V', mce, Ity_I64, binop(Iop_Or64, tmp2, tmp3));
776 static IRAtom* expensiveCmpEQorNE ( MCEnv* mce,
778 IRAtom* vxx, IRAtom* vyy,
779 IRAtom* xx, IRAtom* yy )
781 IRAtom *naive, *vec, *improvement_term;
782 IRAtom *improved, *final_cast, *top;
872 static Bool isZeroU32 ( IRAtom* e )
880 static Bool isZeroU64 ( IRAtom* e )
888 static IRAtom* doCmpORD ( MCEnv* mce,
890 IRAtom* xxhash, IRAtom* yyhash,
891 IRAtom* xx, IRAtom* yy )
902 Bool (*isZero)(IRAtom*) = m64 ? isZeroU64 : isZeroU32;
904 IRAtom* threeLeft1 = NULL;
905 IRAtom* sevenLeft1 = NULL;
964 static IRAtom* schemeE ( MCEnv* mce, IRExpr* e ); /* fwds */
993 static void complainIfUndefined ( MCEnv* mce, IRAtom* atom )
995 IRAtom* vatom;
999 IRAtom* cond;
1000 IRAtom* origin;
1184 IRAtom* atom, IRAtom* vatom )
1222 IRAtom* ix, Int bias, IRAtom* atom )
1224 IRAtom* vatom;
1283 IRRegArray* descr, IRAtom* ix, Int bias )
1314 IRAtom* mkLazy2 ( MCEnv* mce, IRType finalVty, IRAtom* va1, IRAtom* va2 )
1316 IRAtom* at;
1362 IRAtom* mkLazy3 ( MCEnv* mce, IRType finalVty,
1363 IRAtom* va1, IRAtom* va2, IRAtom* va3 )
1365 IRAtom* at;
1443 IRAtom* mkLazy4 ( MCEnv* mce, IRType finalVty,
1444 IRAtom* va1, IRAtom* va2, IRAtom* va3, IRAtom* va4 )
1446 IRAtom* at;
1502 IRAtom* mkLazyN ( MCEnv* mce,
1503 IRAtom** exprvec, IRType finalVtype, IRCallee* cee )
1506 IRAtom* here;
1507 IRAtom* curr;
1554 IRAtom* expensiveAddSub ( MCEnv* mce,
1557 IRAtom* qaa, IRAtom* qbb,
1558 IRAtom* aa, IRAtom* bb )
1560 IRAtom *a_min, *b_min, *a_max, *b_max;
1663 static IRAtom* scalarShift ( MCEnv* mce,
1666 IRAtom* qaa, IRAtom* qbb,
1667 IRAtom* aa, IRAtom* bb )
1692 static IRAtom* mkPCast8x16 ( MCEnv* mce, IRAtom* at )
1697 static IRAtom* mkPCast16x8 ( MCEnv* mce, IRAtom* at )
1702 static IRAtom* mkPCast32x4 ( MCEnv* mce, IRAtom* at )
1707 static IRAtom* mkPCast64x2 ( MCEnv* mce, IRAtom* at )
1712 static IRAtom* mkPCast32x2 ( MCEnv* mce, IRAtom* at )
1717 static IRAtom* mkPCast16x4 ( MCEnv* mce, IRAtom* at )
1722 static IRAtom* mkPCast8x8 ( MCEnv* mce, IRAtom* at )
1727 static IRAtom* mkPCast16x2 ( MCEnv* mce, IRAtom* at )
1732 static IRAtom* mkPCast8x4 ( MCEnv* mce, IRAtom* at )
1775 IRAtom* binary32Fx4 ( MCEnv* mce, IRAtom* vatomX, IRAtom* vatomY )
1777 IRAtom* at;
1786 IRAtom* unary32Fx4 ( MCEnv* mce, IRAtom* vatomX )
1788 IRAtom* at;
1795 IRAtom* binary32F0x4 ( MCEnv* mce, IRAtom* vatomX, IRAtom* vatomY )
1797 IRAtom* at;
1808 IRAtom* unary32F0x4 ( MCEnv* mce, IRAtom* vatomX )
1810 IRAtom* at;
1821 IRAtom* binary64Fx2 ( MCEnv* mce, IRAtom* vatomX, IRAtom* vatomY )
1823 IRAtom* at;
1832 IRAtom* unary64Fx2 ( MCEnv* mce, IRAtom* vatomX )
1834 IRAtom* at;
1841 IRAtom* binary64F0x2 ( MCEnv* mce, IRAtom* vatomX, IRAtom* vatomY )
1843 IRAtom* at;
1854 IRAtom* unary64F0x2 ( MCEnv* mce, IRAtom* vatomX )
1856 IRAtom* at;
1867 IRAtom* binary32Fx2 ( MCEnv* mce, IRAtom* vatomX, IRAtom* vatomY )
1869 IRAtom* at;
1878 IRAtom* unary32Fx2 ( MCEnv* mce, IRAtom* vatomX )
1880 IRAtom* at;
1915 IRAtom* vectorNarrowV128 ( MCEnv* mce, IROp narrow_op,
1916 IRAtom* vatom1, IRAtom* vatom2)
1918 IRAtom *at1, *at2, *at3;
1919 IRAtom* (*pcast)( MCEnv*, IRAtom* );
1936 IRAtom* vectorNarrow64 ( MCEnv* mce, IROp narrow_op,
1937 IRAtom* vatom1, IRAtom* vatom2)
1939 IRAtom *at1, *at2, *at3;
1940 IRAtom* (*pcast)( MCEnv*, IRAtom* );
1956 IRAtom* vectorShortenV128 ( MCEnv* mce, IROp shorten_op,
1957 IRAtom* vatom1)
1959 IRAtom *at1, *at2;
1960 IRAtom* (*pcast)( MCEnv*, IRAtom* );
1983 IRAtom* vectorLongenI64 ( MCEnv* mce, IROp longen_op,
1984 IRAtom* vatom1)
1986 IRAtom *at1, *at2;
1987 IRAtom* (*pcast)( MCEnv*, IRAtom* );
2011 IRAtom* binary8Ix16 ( MCEnv* mce, IRAtom* vatom1, IRAtom* vatom2 )
2013 IRAtom* at;
2020 IRAtom* binary16Ix8 ( MCEnv* mce, IRAtom* vatom1, IRAtom* vatom2 )
2022 IRAtom* at;
2029 IRAtom* binary32Ix4 ( MCEnv* mce, IRAtom* vatom1, IRAtom* vatom2 )
2031 IRAtom* at;
2038 IRAtom* binary64Ix2 ( MCEnv* mce, IRAtom* vatom1, IRAtom* vatom2 )
2040 IRAtom* at;
2049 IRAtom* binary8Ix8 ( MCEnv* mce, IRAtom* vatom1, IRAtom* vatom2 )
2051 IRAtom* at;
2058 IRAtom* binary16Ix4 ( MCEnv* mce, IRAtom* vatom1, IRAtom* vatom2 )
2060 IRAtom* at;
2067 IRAtom* binary32Ix2 ( MCEnv* mce, IRAtom* vatom1, IRAtom* vatom2 )
2069 IRAtom* at;
2076 IRAtom* binary64Ix1 ( MCEnv* mce, IRAtom* vatom1, IRAtom* vatom2 )
2078 IRAtom* at;
2087 IRAtom* binary8Ix4 ( MCEnv* mce, IRAtom* vatom1, IRAtom* vatom2 )
2089 IRAtom* at;
2096 IRAtom* binary16Ix2 ( MCEnv* mce, IRAtom* vatom1, IRAtom* vatom2 )
2098 IRAtom* at;
2110 IRAtom* expr2vbits_Qop ( MCEnv* mce,
2112 IRAtom* atom1, IRAtom* atom2,
2113 IRAtom* atom3, IRAtom* atom4 )
2115 IRAtom* vatom1 = expr2vbits( mce, atom1 );
2116 IRAtom* vatom2 = expr2vbits( mce, atom2 );
2117 IRAtom* vatom3 = expr2vbits( mce, atom3 );
2118 IRAtom* vatom4 = expr2vbits( mce, atom4 );
2147 IRAtom* expr2vbits_Triop ( MCEnv* mce,
2149 IRAtom* atom1, IRAtom* atom2, IRAtom* atom3 )
2151 IRAtom* vatom1 = expr2vbits( mce, atom1 );
2152 IRAtom* vatom2 = expr2vbits( mce, atom2 );
2153 IRAtom* vatom3 = expr2vbits( mce, atom3 );
2210 IRAtom* expr2vbits_Binop ( MCEnv* mce,
2212 IRAtom* atom1, IRAtom* atom2 )
2215 IRAtom* (*uifu) (MCEnv*, IRAtom*, IRAtom*);
2216 IRAtom* (*difd) (MCEnv*, IRAtom*, IRAtom*);
2217 IRAtom* (*improve) (MCEnv*, IRAtom*, IRAtom*);
2219 IRAtom* vatom1 = expr2vbits( mce, atom1 );
2220 IRAtom* vatom2 = expr2vbits( mce, atom2 );
2810 IRAtom* at;
2820 IRAtom* at;
2897 IRAtom* vLo64 = mkLeft64(mce, mkUifU64(mce, vatom1,vatom2));
2898 IRAtom* vHi64 = mkPCastTo(mce, Ity_I64, vLo64);
2904 IRAtom* vLo32 = mkLeft32(mce, mkUifU32(mce, vatom1,vatom2));
2905 IRAtom* vHi32 = mkPCastTo(mce, Ity_I32, vLo32);
2911 IRAtom* vLo16 = mkLeft16(mce, mkUifU16(mce, vatom1,vatom2));
2912 IRAtom* vHi16 = mkPCastTo(mce, Ity_I16, vLo16);
2918 IRAtom* vLo8 = mkLeft8(mce, mkUifU8(mce, vatom1,vatom2));
2919 IRAtom* vHi8 = mkPCastTo(mce, Ity_I8, vLo8);
3089 IRExpr* expr2vbits_Unop ( MCEnv* mce, IROp op, IRAtom* atom )
3091 IRAtom* vatom = expr2vbits( mce, atom );
3340 IRAtom* expr2vbits_Load_WRK ( MCEnv* mce,
3342 IRAtom* addr, UInt bias )
3348 IRAtom* addrAct;
3402 IRAtom* eBias;
3425 IRAtom* expr2vbits_Load ( MCEnv* mce,
3427 IRAtom* addr, UInt bias )
3429 IRAtom *v64hi, *v64lo;
3455 IRAtom* expr2vbits_Mux0X ( MCEnv* mce,
3456 IRAtom* cond, IRAtom* expr0, IRAtom* exprX )
3458 IRAtom *vbitsC, *vbits0, *vbitsX;
3554 IRExpr* zwidenToHostWord ( MCEnv* mce, IRAtom* vatom )
3608 IRAtom* addr, UInt bias,
3609 IRAtom* data, IRAtom* vdata,
3610 IRAtom* guard )
3708 IRAtom *addrLo64, *addrHi64;
3709 IRAtom *vdataLo64, *vdataHi64;
3710 IRAtom *eBiasLo64, *eBiasHi64;
3746 IRAtom *addrAct;
3753 IRAtom* eBias = tyAddr==Ity_I32 ? mkU32(bias) : mkU64(bias);
3801 IRAtom *src, *here, *curr;
4011 static IRAtom* gen_load_b ( MCEnv* mce, Int szB,
4012 IRAtom* baseaddr, Int offset );
4013 static IRAtom* gen_maxU32 ( MCEnv* mce, IRAtom* b1, IRAtom* b2 );
4015 IRAtom* baseaddr, Int offset, IRAtom* dataB,
4016 IRAtom* guard );
4047 IRAtom* orig, IRAtom* shadow )
4208 IRAtom *vdataLo = NULL, *bdataLo = NULL;
4209 IRAtom *vexpdLo = NULL, *bexpdLo = NULL;
4210 IRAtom *voldLo = NULL, *boldLo = NULL;
4211 IRAtom *expd_eq_old = NULL;
4297 IRAtom *vdataHi = NULL, *bdataHi = NULL;
4298 IRAtom *vdataLo = NULL, *bdataLo = NULL;
4299 IRAtom *vexpdHi = NULL, *bexpdHi = NULL;
4300 IRAtom *vexpdLo = NULL, *bexpdLo = NULL;
4301 IRAtom *voldHi = NULL, *boldHi = NULL;
4302 IRAtom *voldLo = NULL, *boldLo = NULL;
4303 IRAtom *xHi = NULL, *xLo = NULL, *xHL = NULL;
4304 IRAtom *expd_eq_old = NULL, *zero = NULL;
4523 static Bool isBogusAtom ( IRAtom* at )
5109 static IRAtom* gen_maxU32 ( MCEnv* mce, IRAtom* b1, IRAtom* b2 )
5114 static IRAtom* gen_load_b ( MCEnv* mce, Int szB,
5115 IRAtom* baseaddr, Int offset )
5123 IRAtom* ea = baseaddr;
5125 IRAtom* off = aTy == Ity_I32 ? mkU32( offset )
5172 IRAtom* baseaddr, Int offset, IRAtom* dataB,
5173 IRAtom* guard )
5180 IRAtom* ea = baseaddr;
5186 IRAtom* off = aTy == Ity_I32 ? mkU32( offset )
5222 static IRAtom* narrowTo32 ( MCEnv* mce, IRAtom* e ) {
5231 static IRAtom* zWidenFrom32 ( MCEnv* mce, IRType dstTy, IRAtom* e ) {
5240 static IRAtom* schemeE ( MCEnv* mce, IRExpr* e )
5248 IRAtom *t1, *t2, *t3, *t4;
5276 IRAtom* here;
5278 IRAtom* curr = mkU32(0);
5308 IRAtom* b1 = schemeE( mce, e->Iex.Mux0X.cond );
5309 IRAtom* b2 = schemeE( mce, e->Iex.Mux0X.expr0 );
5310 IRAtom* b3 = schemeE( mce, e->Iex.Mux0X.exprX );
5314 IRAtom* b1 = schemeE( mce, e->Iex.Qop.arg1 );
5315 IRAtom* b2 = schemeE( mce, e->Iex.Qop.arg2 );
5316 IRAtom* b3 = schemeE( mce, e->Iex.Qop.arg3 );
5317 IRAtom* b4 = schemeE( mce, e->Iex.Qop.arg4 );
5322 IRAtom* b1 = schemeE( mce, e->Iex.Triop.arg1 );
5323 IRAtom* b2 = schemeE( mce, e->Iex.Triop.arg2 );
5324 IRAtom* b3 = schemeE( mce, e->Iex.Triop.arg3 );
5338 IRAtom* b1 = schemeE( mce, e->Iex.Binop.arg1 );
5339 IRAtom* b2 = schemeE( mce, e->Iex.Binop.arg2 );
5347 IRAtom* b1 = schemeE( mce, e->Iex.Unop.arg );
5380 IRAtom *here, *curr;
5539 IRAtom* dataB;
5568 IRAtom *t1, *t2, *t3, *t4;