Lines Matching defs:cas

4659 static void do_shadow_CAS_single ( MCEnv* mce, IRCAS* cas );
4660 static void do_shadow_CAS_double ( MCEnv* mce, IRCAS* cas );
4714 void do_shadow_CAS ( MCEnv* mce, IRCAS* cas )
4839 if (cas->oldHi == IRTemp_INVALID) {
4840 do_shadow_CAS_single( mce, cas );
4842 do_shadow_CAS_double( mce, cas );
4847 static void do_shadow_CAS_single ( MCEnv* mce, IRCAS* cas )
4859 tl_assert(cas->oldHi == IRTemp_INVALID);
4860 tl_assert(cas->expdHi == NULL);
4861 tl_assert(cas->dataHi == NULL);
4863 elemTy = typeOfIRExpr(mce->sb->tyenv, cas->expdLo);
4873 tl_assert(isOriginalAtom(mce, cas->dataLo));
4875 = assignNew('V', mce, elemTy, expr2vbits(mce, cas->dataLo));
4879 = assignNew('B', mce, Ity_I32, schemeE(mce, cas->dataLo));
4884 tl_assert(isOriginalAtom(mce, cas->expdLo));
4886 = assignNew('V', mce, elemTy, expr2vbits(mce, cas->expdLo));
4890 = assignNew('B', mce, Ity_I32, schemeE(mce, cas->expdLo));
4902 cas->end, elemTy, cas->addr, 0/*Addr bias*/
4904 bind_shadow_tmp_to_orig('V', mce, mkexpr(cas->oldLo), voldLo);
4908 gen_load_b(mce, elemSzB, cas->addr, 0/*addr bias*/));
4909 bind_shadow_tmp_to_orig('B', mce, mkexpr(cas->oldLo), boldLo);
4913 stmt( 'C', mce, IRStmt_CAS(cas) );
4921 binop(opCasCmpEQ, cas->expdLo, mkexpr(cas->oldLo)));
4925 do_shadow_Store( mce, cas->end, cas->addr, 0/*bias*/,
4929 gen_store_b( mce, elemSzB, cas->addr, 0/*offset*/,
4936 static void do_shadow_CAS_double ( MCEnv* mce, IRCAS* cas )
4952 tl_assert(cas->oldHi != IRTemp_INVALID);
4953 tl_assert(cas->expdHi != NULL);
4954 tl_assert(cas->dataHi != NULL);
4956 elemTy = typeOfIRExpr(mce->sb->tyenv, cas->expdLo);
4979 tl_assert(isOriginalAtom(mce, cas->dataHi));
4980 tl_assert(isOriginalAtom(mce, cas->dataLo));
4982 = assignNew('V', mce, elemTy, expr2vbits(mce, cas->dataHi));
4984 = assignNew('V', mce, elemTy, expr2vbits(mce, cas->dataLo));
4989 = assignNew('B', mce, Ity_I32, schemeE(mce, cas->dataHi));
4991 = assignNew('B', mce, Ity_I32, schemeE(mce, cas->dataLo));
4997 tl_assert(isOriginalAtom(mce, cas->expdHi));
4998 tl_assert(isOriginalAtom(mce, cas->expdLo));
5000 = assignNew('V', mce, elemTy, expr2vbits(mce, cas->expdHi));
5002 = assignNew('V', mce, elemTy, expr2vbits(mce, cas->expdLo));
5007 = assignNew('B', mce, Ity_I32, schemeE(mce, cas->expdHi));
5009 = assignNew('B', mce, Ity_I32, schemeE(mce, cas->expdLo));
5017 if (cas->end == Iend_LE) {
5021 tl_assert(cas->end == Iend_BE);
5030 cas->end, elemTy, cas->addr, memOffsHi/*Addr bias*/
5037 cas->end, elemTy, cas->addr, memOffsLo/*Addr bias*/
5039 bind_shadow_tmp_to_orig('V', mce, mkexpr(cas->oldHi), voldHi);
5040 bind_shadow_tmp_to_orig('V', mce, mkexpr(cas->oldLo), voldLo);
5044 gen_load_b(mce, elemSzB, cas->addr,
5048 gen_load_b(mce, elemSzB, cas->addr,
5050 bind_shadow_tmp_to_orig('B', mce, mkexpr(cas->oldHi), boldHi);
5051 bind_shadow_tmp_to_orig('B', mce, mkexpr(cas->oldLo), boldLo);
5055 stmt( 'C', mce, IRStmt_CAS(cas) );
5068 binop(opXor, cas->expdHi, mkexpr(cas->oldHi)));
5070 binop(opXor, cas->expdLo, mkexpr(cas->oldLo)));
5079 do_shadow_Store( mce, cas->end, cas->addr, memOffsHi/*bias*/,
5082 do_shadow_Store( mce, cas->end, cas->addr, memOffsLo/*bias*/,
5086 gen_store_b( mce, elemSzB, cas->addr, memOffsHi/*offset*/,
5089 gen_store_b( mce, elemSzB, cas->addr, memOffsLo/*offset*/,
5202 IRCAS* cas;
5270 cas = st->Ist.CAS.details;
5271 return isBogusAtom(cas->addr)
5272 || (cas->expdHi ? isBogusAtom(cas->expdHi) : False)
5273 || isBogusAtom(cas->expdLo)
5274 || (cas->dataHi ? isBogusAtom(cas->dataHi) : False)
5275 || isBogusAtom(cas->dataLo);