Home | History | Annotate | Download | only in priv

Lines Matching defs:cas

1089 void ppIRCAS ( IRCAS* cas )
1093 if (cas->oldHi != IRTemp_INVALID) {
1094 ppIRTemp(cas->oldHi);
1097 ppIRTemp(cas->oldLo);
1098 vex_printf(" = CAS%s(", cas->end==Iend_LE ? "le" : "be" );
1099 ppIRExpr(cas->addr);
1101 if (cas->expdHi) {
1102 ppIRExpr(cas->expdHi);
1105 ppIRExpr(cas->expdLo);
1107 if (cas->dataHi) {
1108 ppIRExpr(cas->dataHi);
1111 ppIRExpr(cas->dataLo);
1201 ppIRCAS(s->Ist.CAS.details);
1601 IRCAS* cas = LibVEX_Alloc(sizeof(IRCAS));
1602 cas->oldHi = oldHi;
1603 cas->oldLo = oldLo;
1604 cas->end = end;
1605 cas->addr = addr;
1606 cas->expdHi = expdHi;
1607 cas->expdLo = expdLo;
1608 cas->dataHi = dataHi;
1609 cas->dataLo = dataLo;
1610 return cas;
1672 IRStmt* IRStmt_CAS ( IRCAS* cas ) {
1675 s->Ist.CAS.details = cas;
1871 IRCAS* deepCopyIRCAS ( IRCAS* cas )
1873 return mkIRCAS( cas->oldHi, cas->oldLo, cas->end,
1874 deepCopyIRExpr(cas->addr),
1875 cas->expdHi==NULL ? NULL : deepCopyIRExpr(cas->expdHi),
1876 deepCopyIRExpr(cas->expdLo),
1877 cas->dataHi==NULL ? NULL : deepCopyIRExpr(cas->dataHi),
1878 deepCopyIRExpr(cas->dataLo) );
1910 return IRStmt_CAS(deepCopyIRCAS(s->Ist.CAS.details));
2766 IRCAS* cas;
2818 cas = st->Ist.CAS.details;
2819 return toBool( isIRAtom(cas->addr)
2820 && (cas->expdHi ? isIRAtom(cas->expdHi) : True)
2821 && isIRAtom(cas->expdLo)
2822 && (cas->dataHi ? isIRAtom(cas->dataHi) : True)
2823 && isIRAtom(cas->dataLo) );
2987 IRCAS* cas;
3010 cas = stmt->Ist.CAS.details;
3011 useBeforeDef_Expr(bb,stmt,cas->addr,def_counts);
3012 if (cas->expdHi)
3013 useBeforeDef_Expr(bb,stmt,cas->expdHi,def_counts);
3014 useBeforeDef_Expr(bb,stmt,cas->expdLo,def_counts);
3015 if (cas->dataHi)
3016 useBeforeDef_Expr(bb,stmt,cas->dataHi,def_counts);
3017 useBeforeDef_Expr(bb,stmt,cas->dataLo,def_counts);
3250 IRCAS* cas;
3305 cas = stmt->Ist.CAS.details;
3306 /* make sure it's definitely either a CAS or a DCAS */
3307 if (cas->oldHi == IRTemp_INVALID
3308 && cas->expdHi == NULL && cas->dataHi == NULL) {
3309 /* fine; it's a single cas */
3312 if (cas->oldHi != IRTemp_INVALID
3313 && cas->expdHi != NULL && cas->dataHi != NULL) {
3314 /* fine; it's a double cas */
3321 tcExpr( bb, stmt, cas->addr, gWordTy );
3322 if (typeOfIRExpr(tyenv, cas->addr) != gWordTy) goto bad_cas;
3324 tyExpd = typeOfIRExpr(tyenv, cas->expdLo);
3325 tyData = typeOfIRExpr(tyenv, cas->dataLo);
3327 if (tyExpd != typeOfIRTemp(tyenv, cas->oldLo))
3338 if (cas->oldHi != IRTemp_INVALID) {
3339 tyExpd = typeOfIRExpr(tyenv, cas->expdHi);
3340 tyData = typeOfIRExpr(tyenv, cas->dataHi);
3342 if (tyExpd != typeOfIRTemp(tyenv, cas->oldHi))
3346 if (typeOfIRTemp(tyenv, cas->oldHi)
3347 != typeOfIRTemp(tyenv, cas->oldLo))
3352 sanityCheckFail(bb,stmt,"IRStmt.CAS: ill-formed");
3491 IRCAS* cas;
3522 cas = stmt->Ist.CAS.details;
3523 if (cas->oldHi != IRTemp_INVALID) {
3524 if (cas->oldHi < 0 || cas->oldHi >= n_temps)
3526 "IRStmt.CAS: destination tmpHi is out of range");
3527 def_counts[cas->oldHi]++;
3528 if (def_counts[cas->oldHi] > 1)
3530 "IRStmt.CAS: destination tmpHi is assigned more than once");
3532 if (cas->oldLo < 0 || cas->oldLo >= n_temps)
3534 "IRStmt.CAS: destination tmpLo is out of range");
3535 def_counts[cas->oldLo]++;
3536 if (def_counts[cas->oldLo] > 1)
3538 "IRStmt.CAS: destination tmpLo is assigned more than once");