FixupBranch JitArm64::JumpIfCRFieldBit(int field, int bit, bool jump_if_set) { ARM64Reg WA = gpr.GetReg(); ARM64Reg XA = EncodeRegTo64(WA); FixupBranch branch; switch (bit) { case CR_SO_BIT: // check bit 61 set LDR(INDEX_UNSIGNED, XA, X29, PPCSTATE_OFF(cr_val[field])); branch = jump_if_set ? TBNZ(XA, 61) : TBZ(XA, 61); break; case CR_EQ_BIT: // check bits 31-0 == 0 LDR(INDEX_UNSIGNED, WA, X29, PPCSTATE_OFF(cr_val[field])); branch = jump_if_set ? CBZ(WA) : CBNZ(WA); break; case CR_GT_BIT: // check val > 0 LDR(INDEX_UNSIGNED, XA, X29, PPCSTATE_OFF(cr_val[field])); CMP(XA, SP); branch = B(jump_if_set ? CC_GT : CC_LE); break; case CR_LT_BIT: // check bit 62 set LDR(INDEX_UNSIGNED, XA, X29, PPCSTATE_OFF(cr_val[field])); branch = jump_if_set ? TBNZ(XA, 62) : TBZ(XA, 62); break; default: _assert_msg_(DYNA_REC, false, "Invalid CR bit"); } gpr.Unlock(WA); return branch; }
static inline void calcMB(void) { for(int i=1; i<N_PX-1; i++){ for(int j=1; j<N_PY-1; j++){ double complex nowMz = MZ(i,j); Mz[ind(i,j)] = CMZ(i,j)*MZ(i,j) - CMZEXEY(i,j)*(EY(i+1,j) - EY(i,j) - EX(i,j+1) + EX(i,j)); Bz[ind(i,j)] = CBZ(i,j)*BZ(i,j) + CBZMZ1(i,j)*MZ(i,j) - CBZMZ0(i,j)*nowMz; } } }