Home | History | Annotate | Download | only in priv

Lines Matching refs:CAS

1423 void ppIRCAS ( const IRCAS* cas )
1427 if (cas->oldHi != IRTemp_INVALID) {
1428 ppIRTemp(cas->oldHi);
1431 ppIRTemp(cas->oldLo);
1432 vex_printf(" = CAS%s(", cas->end==Iend_LE ? "le" : "be" );
1433 ppIRExpr(cas->addr);
1435 if (cas->expdHi) {
1436 ppIRExpr(cas->expdHi);
1439 ppIRExpr(cas->expdLo);
1441 if (cas->dataHi) {
1442 ppIRExpr(cas->dataHi);
1445 ppIRExpr(cas->dataLo);
1587 ppIRCAS(s->Ist.CAS.details);
2009 IRCAS* cas = LibVEX_Alloc_inline(sizeof(IRCAS));
2010 cas->oldHi = oldHi;
2011 cas->oldLo = oldLo;
2012 cas->end = end;
2013 cas->addr = addr;
2014 cas->expdHi = expdHi;
2015 cas->expdLo = expdLo;
2016 cas->dataHi = dataHi;
2017 cas->dataLo = dataLo;
2018 return cas;
2132 IRStmt* IRStmt_CAS ( IRCAS* cas ) {
2135 s->Ist.CAS.details = cas;
2353 IRCAS* deepCopyIRCAS ( const IRCAS* cas )
2355 return mkIRCAS( cas->oldHi, cas->oldLo, cas->end,
2356 deepCopyIRExpr(cas->addr),
2357 cas->expdHi==NULL ? NULL : deepCopyIRExpr(cas->expdHi),
2358 deepCopyIRExpr(cas->expdLo),
2359 cas->dataHi==NULL ? NULL : deepCopyIRExpr(cas->dataHi),
2360 deepCopyIRExpr(cas->dataLo) );
2411 return IRStmt_CAS(deepCopyIRCAS(s->Ist.CAS.details));
3699 const IRCAS* cas = st->Ist.CAS.details;
3700 return toBool( isIRAtom(cas->addr)
3701 && (cas->expdHi ? isIRAtom(cas->expdHi) : True)
3702 && isIRAtom(cas->expdLo)
3703 && (cas->dataHi ? isIRAtom(cas->dataHi) : True)
3704 && isIRAtom(cas->dataLo) );
3885 const IRCAS* cas;
3924 cas = stmt->Ist.CAS.details;
3925 useBeforeDef_Expr(bb,stmt,cas->addr,def_counts);
3926 if (cas->expdHi)
3927 useBeforeDef_Expr(bb,stmt,cas->expdHi,def_counts);
3928 useBeforeDef_Expr(bb,stmt,cas->expdLo,def_counts);
3929 if (cas->dataHi)
3930 useBeforeDef_Expr(bb,stmt,cas->dataHi,def_counts);
3931 useBeforeDef_Expr(bb,stmt,cas->dataLo,def_counts);
4268 const IRCAS* cas = stmt->Ist.CAS.details;
4269 /* make sure it's definitely either a CAS or a DCAS */
4270 if (cas->oldHi == IRTemp_INVALID
4271 && cas->expdHi == NULL && cas->dataHi == NULL) {
4272 /* fine; it's a single cas */
4275 if (cas->oldHi != IRTemp_INVALID
4276 && cas->expdHi != NULL && cas->dataHi != NULL) {
4277 /* fine; it's a double cas */
4284 tcExpr( bb, stmt, cas->addr, gWordTy );
4285 if (typeOfIRExpr(tyenv, cas->addr) != gWordTy) goto bad_cas;
4287 tyExpd = typeOfIRExpr(tyenv, cas->expdLo);
4288 tyData = typeOfIRExpr(tyenv, cas->dataLo);
4290 if (tyExpd != typeOfIRTemp(tyenv, cas->oldLo))
4301 if (cas->oldHi != IRTemp_INVALID) {
4302 tyExpd = typeOfIRExpr(tyenv, cas->expdHi);
4303 tyData = typeOfIRExpr(tyenv, cas->dataHi);
4305 if (tyExpd != typeOfIRTemp(tyenv, cas->oldHi))
4309 if (typeOfIRTemp(tyenv, cas->oldHi)
4310 != typeOfIRTemp(tyenv, cas->oldLo))
4315 sanityCheckFail(bb,stmt,"IRStmt.CAS: ill-formed");
4548 const IRCAS* cas = stmt->Ist.CAS.details;
4549 if (cas->oldHi != IRTemp_INVALID) {
4550 if (cas->oldHi < 0 || cas->oldHi >= n_temps)
4552 "IRStmt.CAS: destination tmpHi is out of range");
4553 def_counts[cas->oldHi]++;
4554 if (def_counts[cas->oldHi] > 1)
4556 "IRStmt.CAS: destination tmpHi is assigned more than once");
4558 if (cas->oldLo < 0 || cas->oldLo >= n_temps)
4560 "IRStmt.CAS: destination tmpLo is out of range");
4561 def_counts[cas->oldLo]++;
4562 if (def_counts[cas->oldLo] > 1)
4564 "IRStmt.CAS: destination tmpLo is assigned more than once");