From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:58502) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bOxxv-0005HZ-1z for qemu-devel@nongnu.org; Sun, 17 Jul 2016 22:07:28 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1bOxxs-0004Wz-4W for qemu-devel@nongnu.org; Sun, 17 Jul 2016 22:07:26 -0400 Date: Mon, 18 Jul 2016 12:00:30 +1000 From: David Gibson Message-ID: <20160718020030.GJ16769@voom.fritz.box> References: <1468346602-20700-1-git-send-email-nikunj@linux.vnet.ibm.com> <1468346602-20700-5-git-send-email-nikunj@linux.vnet.ibm.com> MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="LG0Ll82vYr46+VA1" Content-Disposition: inline In-Reply-To: <1468346602-20700-5-git-send-email-nikunj@linux.vnet.ibm.com> Subject: Re: [Qemu-devel] [RFC 4/6] target-ppc: add cmprb instruction List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Nikunj A Dadhania Cc: qemu-ppc@nongnu.org, qemu-devel@nongnu.org, aneesh.kumar@linux.vnet.ibm.com, benh@kernel.crashing.org --LG0Ll82vYr46+VA1 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Tue, Jul 12, 2016 at 11:33:20PM +0530, Nikunj A Dadhania wrote: > ISA 3.0 Compare Ranged Byte instruction useful for > isupper/islower/isaplha kind of operation. At least until you have locale-aware versions of those... > Signed-off-by: Nikunj A Dadhania Reviewed-by: David Gibson > --- > target-ppc/translate.c | 40 ++++++++++++++++++++++++++++++++++++++++ > 1 file changed, 40 insertions(+) >=20 > diff --git a/target-ppc/translate.c b/target-ppc/translate.c > index 93c7c66..8de217f 100644 > --- a/target-ppc/translate.c > +++ b/target-ppc/translate.c > @@ -817,6 +817,45 @@ static void gen_cmpli(DisasContext *ctx) > } > } > =20 > +/* cmprb - range comparison: isupper, isaplha, islower*/ > +static void gen_cmprb(DisasContext *ctx) > +{ > + TCGLabel *lab1 =3D gen_new_label(); > + TCGLabel *lab2 =3D gen_new_label(); > + TCGv src1 =3D tcg_temp_local_new(); > + TCGv src2 =3D tcg_temp_local_new(); > + TCGv src2lo =3D tcg_temp_local_new(); > + TCGv src2hi =3D tcg_temp_local_new(); > + > + tcg_gen_andi_tl(src1, cpu_gpr[rA(ctx->opcode)], 0xFF); > + tcg_gen_andi_tl(src2, cpu_gpr[rB(ctx->opcode)], 0xFFFFFFFF); > + > + tcg_gen_andi_tl(src2lo, src2, 0xFF); > + tcg_gen_shri_tl(src2hi, src2, 8); > + tcg_gen_andi_tl(src2hi, src2hi, 0xFF); > + > + tcg_gen_brcond_tl(TCG_COND_GTU, src1, src2hi, lab1); > + tcg_gen_brcond_tl(TCG_COND_LTU, src1, src2lo, lab1); > + tcg_gen_movi_i32(cpu_crf[crfD(ctx->opcode)], 1 << CRF_GT); > + tcg_gen_br(lab2); > + gen_set_label(lab1); > + > + if (ctx->opcode & 0x00200000) { > + tcg_gen_shri_tl(src2hi, src2, 24); > + tcg_gen_andi_tl(src2hi, src2hi, 0xFF); > + tcg_gen_shri_tl(src2lo, src2, 16); > + tcg_gen_andi_tl(src2lo, src2lo, 0xFF); > + tcg_gen_brcond_tl(TCG_COND_GTU, src1, src2hi, lab2); > + tcg_gen_brcond_tl(TCG_COND_LTU, src1, src2lo, lab2); > + tcg_gen_movi_i32(cpu_crf[crfD(ctx->opcode)], 1 << CRF_GT); > + } > + gen_set_label(lab2); > + tcg_temp_free(src1); > + tcg_temp_free(src2); > + tcg_temp_free(src2lo); > + tcg_temp_free(src2hi); > +} > + > /* isel (PowerPC 2.03 specification) */ > static void gen_isel(DisasContext *ctx) > { > @@ -9898,6 +9937,7 @@ GEN_HANDLER(cmpi, 0x0B, 0xFF, 0xFF, 0x00400000, PPC= _INTEGER), > GEN_HANDLER(cmpl, 0x1F, 0x00, 0x01, 0x00400000, PPC_INTEGER), > GEN_HANDLER(cmpli, 0x0A, 0xFF, 0xFF, 0x00400000, PPC_INTEGER), > GEN_HANDLER_E(cmpb, 0x1F, 0x1C, 0x0F, 0x00000001, PPC_NONE, PPC2_ISA205), > +GEN_HANDLER_E(cmprb, 0x1F, 0x00, 0x06, 0x00400001, PPC_NONE, PPC2_ISA300= ), > GEN_HANDLER(isel, 0x1F, 0x0F, 0xFF, 0x00000001, PPC_ISEL), > GEN_HANDLER(addi, 0x0E, 0xFF, 0xFF, 0x00000000, PPC_INTEGER), > GEN_HANDLER(addic, 0x0C, 0xFF, 0xFF, 0x00000000, PPC_INTEGER), --=20 David Gibson | I'll have my music baroque, and my code david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_ | _way_ _around_! http://www.ozlabs.org/~dgibson --LG0Ll82vYr46+VA1 Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- Version: GnuPG v1 iQIcBAEBAgAGBQJXjDg9AAoJEGw4ysog2bOSFTQQAOCQ86QL7iaVInhRimNsoZMU +D0Uzo00qDG3433frSCEjNm5tU1FBO6JTtxwCIPHuWAVEcSFJ7nr4hW/3eZ1MhHy tAxlzzVhOHy7UrCEn1vt29rQbAfj6+5Tn91qj6ByLf9+Gg7+x9d/Uu24TdkPhvey 7z+Y7d+zbOD2VC5F60mDcWpVsa+cC/mBxsDdrRdR7a97YALkTxD9wWifCvsZ0IO5 agiu+0Kk/np79Di2RmIHJ8qJrYZU6m8+PPbMwAV8rpNJ79X/EFZ91N59ak2whyxz VcCtVWW9WDOTmsF52JB8EbVtpv1KKscgJ4v5S27f9t+I3ZlgU6qS2AIgmNL3BdiC 4wlMhjXDYiENHLwqERd1My5K0IS/9Y9TY/sDSVKihuFKDxvuDm/jXVQKt6vUTcau 67V02v7bSI1yfDdZYVjtYQb51/Jls0+ugqCp+s8ZAVSJzdHiQLoqClNd2JTkXfdM JM0R9vjwgbb++1okHNEX77F67I3bpQclYRLyW/MyRK4Y00bWqa2CJhm4S4LnA0Wz fhVUYon8MlbLraP0A1rJQBQqXfR9Kz5BV9hUPyy/OQQvf0Y4cvfl7OgGI8Sat3SB g5M2cf4lrulHyc43706PaIOLX0VRr7SCQfGc00SI9S+NxO4VGvGMhqKeIHTlFzpP H9ZY7OLLotwnBKujyFRQ =thRS -----END PGP SIGNATURE----- --LG0Ll82vYr46+VA1--