Home | History | Annotate | Download | only in priv

Lines Matching refs:CAS

1424 void ppIRCAS ( const IRCAS* cas )
1428 if (cas->oldHi != IRTemp_INVALID) {
1429 ppIRTemp(cas->oldHi);
1432 ppIRTemp(cas->oldLo);
1433 vex_printf(" = CAS%s(", cas->end==Iend_LE ? "le" : "be" );
1434 ppIRExpr(cas->addr);
1436 if (cas->expdHi) {
1437 ppIRExpr(cas->expdHi);
1440 ppIRExpr(cas->expdLo);
1442 if (cas->dataHi) {
1443 ppIRExpr(cas->dataHi);
1446 ppIRExpr(cas->dataLo);
1591 ppIRCAS(s->Ist.CAS.details);
2013 IRCAS* cas = LibVEX_Alloc_inline(sizeof(IRCAS));
2014 cas->oldHi = oldHi;
2015 cas->oldLo = oldLo;
2016 cas->end = end;
2017 cas->addr = addr;
2018 cas->expdHi = expdHi;
2019 cas->expdLo = expdLo;
2020 cas->dataHi = dataHi;
2021 cas->dataLo = dataLo;
2022 return cas;
2136 IRStmt* IRStmt_CAS ( IRCAS* cas ) {
2139 s->Ist.CAS.details = cas;
2357 IRCAS* deepCopyIRCAS ( const IRCAS* cas )
2359 return mkIRCAS( cas->oldHi, cas->oldLo, cas->end,
2360 deepCopyIRExpr(cas->addr),
2361 cas->expdHi==NULL ? NULL : deepCopyIRExpr(cas->expdHi),
2362 deepCopyIRExpr(cas->expdLo),
2363 cas->dataHi==NULL ? NULL : deepCopyIRExpr(cas->dataHi),
2364 deepCopyIRExpr(cas->dataLo) );
2415 return IRStmt_CAS(deepCopyIRCAS(s->Ist.CAS.details));
3705 const IRCAS* cas = st->Ist.CAS.details;
3706 return toBool( isIRAtom(cas->addr)
3707 && (cas->expdHi ? isIRAtom(cas->expdHi) : True)
3708 && isIRAtom(cas->expdLo)
3709 && (cas->dataHi ? isIRAtom(cas->dataHi) : True)
3710 && isIRAtom(cas->dataLo) );
3891 const IRCAS* cas;
3930 cas = stmt->Ist.CAS.details;
3931 useBeforeDef_Expr(bb,stmt,cas->addr,def_counts);
3932 if (cas->expdHi)
3933 useBeforeDef_Expr(bb,stmt,cas->expdHi,def_counts);
3934 useBeforeDef_Expr(bb,stmt,cas->expdLo,def_counts);
3935 if (cas->dataHi)
3936 useBeforeDef_Expr(bb,stmt,cas->dataHi,def_counts);
3937 useBeforeDef_Expr(bb,stmt,cas->dataLo,def_counts);
4274 const IRCAS* cas = stmt->Ist.CAS.details;
4275 /* make sure it's definitely either a CAS or a DCAS */
4276 if (cas->oldHi == IRTemp_INVALID
4277 && cas->expdHi == NULL && cas->dataHi == NULL) {
4278 /* fine; it's a single cas */
4281 if (cas->oldHi != IRTemp_INVALID
4282 && cas->expdHi != NULL && cas->dataHi != NULL) {
4283 /* fine; it's a double cas */
4290 tcExpr( bb, stmt, cas->addr, gWordTy );
4291 if (typeOfIRExpr(tyenv, cas->addr) != gWordTy) goto bad_cas;
4293 tyExpd = typeOfIRExpr(tyenv, cas->expdLo);
4294 tyData = typeOfIRExpr(tyenv, cas->dataLo);
4296 if (tyExpd != typeOfIRTemp(tyenv, cas->oldLo))
4307 if (cas->oldHi != IRTemp_INVALID) {
4308 tyExpd = typeOfIRExpr(tyenv, cas->expdHi);
4309 tyData = typeOfIRExpr(tyenv, cas->dataHi);
4311 if (tyExpd != typeOfIRTemp(tyenv, cas->oldHi))
4315 if (typeOfIRTemp(tyenv, cas->oldHi)
4316 != typeOfIRTemp(tyenv, cas->oldLo))
4321 sanityCheckFail(bb,stmt,"IRStmt.CAS: ill-formed");
4554 const IRCAS* cas = stmt->Ist.CAS.details;
4555 if (cas->oldHi != IRTemp_INVALID) {
4556 if (cas->oldHi < 0 || cas->oldHi >= n_temps)
4558 "IRStmt.CAS: destination tmpHi is out of range");
4559 def_counts[cas->oldHi]++;
4560 if (def_counts[cas->oldHi] > 1)
4562 "IRStmt.CAS: destination tmpHi is assigned more than once");
4564 if (cas->oldLo < 0 || cas->oldLo >= n_temps)
4566 "IRStmt.CAS: destination tmpLo is out of range");
4567 def_counts[cas->oldLo]++;
4568 if (def_counts[cas->oldLo] > 1)
4570 "IRStmt.CAS: destination tmpLo is assigned more than once");