diff options
author | Robin Dapp <rdapp@linux.ibm.com> | 2022-04-12 18:05:34 +0200 |
---|---|---|
committer | Robin Dapp <rdapp@linux.ibm.com> | 2022-04-14 13:23:18 +0200 |
commit | db4ce4a3d7acf50f97e6dcdd7d56250741f1b9fe (patch) | |
tree | 4c9e86ef8b062f385eeb79f09b7408362e0d5b27 /gcc/config/s390 | |
parent | 41a72a744a9b673fd4f1df0c5c05310d99058d32 (diff) | |
download | gcc-db4ce4a3d7acf50f97e6dcdd7d56250741f1b9fe.zip gcc-db4ce4a3d7acf50f97e6dcdd7d56250741f1b9fe.tar.gz gcc-db4ce4a3d7acf50f97e6dcdd7d56250741f1b9fe.tar.bz2 |
s390: Add scheduler description for z16.
This patch adds the scheduler description for the z16 machine.
gcc/ChangeLog:
* config/s390/s390.cc (s390_get_sched_attrmask): Add z16.
(s390_get_unit_mask): Likewise.
(s390_is_fpd): Likewise.
(s390_is_fxd): Likewise.
* config/s390/s390.h (s390_tune_attr): Set max tune level to z16.
* config/s390/s390.md (z900,z990,z9_109,z9_ec,z10,z196,zEC12,z13,z14,z15):
Add z16.
(z900,z990,z9_109,z9_ec,z10,z196,zEC12,z13,z14,z15,z16):
Likewise.
* config/s390/3931.md: New file.
Diffstat (limited to 'gcc/config/s390')
-rw-r--r-- | gcc/config/s390/3931.md | 2562 | ||||
-rw-r--r-- | gcc/config/s390/s390.cc | 29 | ||||
-rw-r--r-- | gcc/config/s390/s390.h | 2 | ||||
-rw-r--r-- | gcc/config/s390/s390.md | 5 |
4 files changed, 2592 insertions, 6 deletions
diff --git a/gcc/config/s390/3931.md b/gcc/config/s390/3931.md new file mode 100644 index 0000000..bc97bc5 --- /dev/null +++ b/gcc/config/s390/3931.md @@ -0,0 +1,2562 @@ +;; Scheduling description for z16. +;; Copyright (C) 2022 Free Software Foundation, Inc. +;; Contributed by Robin Dapp (rdapp@linux.ibm.com) + +;; This file is part of GCC. + +;; GCC is free software; you can redistribute it and/or modify it under +;; the terms of the GNU General Public License as published by the Free +;; Software Foundation; either version 3, or (at your option) any later +;; version. + +;; GCC is distributed in the hope that it will be useful, but WITHOUT ANY +;; WARRANTY; without even the implied warranty of MERCHANTABILITY or +;; FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +;; for more details. + +;; You should have received a copy of the GNU General Public License +;; along with GCC; see the file COPYING3. If not see +;; <http://www.gnu.org/licenses/>. + +(define_attr "z16_unit_fpd" "" +(cond [(eq_attr "mnemonic" +"ddb, +ddbr, +deb, +debr, +dxbr, +sqdb, +sqdbr, +sqeb, +sqebr, +sqxbr, +vfddb, +vfdsb, +vfsqdb, +vfsqsb, +wfddb, +wfdsb, +wfdxb, +wfsqdb, +wfsqxb" +) + (const_int 1)] (const_int 0))) + +(define_attr "z16_unit_fxa" "" +(cond [(eq_attr "mnemonic" +"a, +afi, +ag, +agf, +agfi, +agfr, +agh, +aghi, +aghik, +agr, +agrk, +ah, +ahi, +ahik, +ahy, +al, +alc, +alcg, +alcgr, +alcr, +alfi, +alg, +algf, +algfi, +algfr, +alghsik, +algr, +algrk, +alhsik, +alr, +alrk, +aly, +ar, +ark, +ay, +bras, +brasl, +etnd, +exrl, +flogr, +ic, +icm, +icmh, +icmy, +icy, +iihf, +iilf, +ipm, +la, +larl, +lay, +lb, +lbr, +lcgr, +lcr, +lgb, +lgbr, +lgf, +lgfi, +lgfr, +lgfrl, +lgh, +lghi, +lghr, +lghrl, +lgr, +lh, +lhi, +lhr, +lhrl, +lhy, +llcr, +llgcr, +llgfr, +llghr, +llgtr, +llhr, +llihf, +llihh, +llihl, +llilf, +llilh, +llill, +lngr, +lnr, +loc, +locg, +locghi, +locgr, +lochi, +locr, +lpgr, +lpr, +lr, +lrv, +lrvg, +lrvgr, +lrvh, +lrvr, +lt, +ltg, +ltgf, +ltgfr, +ltgr, +ltr, +m, +mfy, +mg, +mgh, +mghi, +mgrk, +mh, +mhi, +mhy, +ml, +mlg, +mlgr, +mlr, +mr, +ms, +msc, +msfi, +msg, +msgc, +msgf, +msgfi, +msgfr, +msgr, +msgrkc, +msr, +msrkc, +msy, +n, +ncgrk, +ncrk, +ng, +ngr, +ngrk, +nihf, +nihh, +nihl, +nilf, +nilh, +nill, +nngrk, +nnrk, +nogrk, +nork, +nr, +nrk, +nxgrk, +nxrk, +ny, +o, +ocgrk, +ocrk, +og, +ogr, +ogrk, +oihf, +oihh, +oihl, +oilf, +oilh, +oill, +or, +ork, +oy, +pfpo, +popcnt, +risbg, +risbgn, +rll, +rllg, +s, +selgr, +selr, +sg, +sgf, +sgfr, +sgh, +sgr, +sgrk, +sh, +shy, +sl, +slb, +slbg, +slbgr, +slbr, +slfi, +slg, +slgf, +slgfi, +slgfr, +slgr, +slgrk, +sll, +sllg, +sllk, +slr, +slrk, +sly, +sr, +sra, +srag, +srak, +srk, +srl, +srlg, +srlk, +sy, +x, +xg, +xgr, +xgrk, +xihf, +xilf, +xr, +xrk, +xy" +) + (const_int 1)] (const_int 0))) + +(define_attr "z16_unit_fxb" "" +(cond [(eq_attr "mnemonic" +"agsi, +algsi, +alsi, +asi, +b, +bc, +bcr, +bi, +br, +brcl, +c, +cfi, +cg, +cgf, +cgfi, +cgfr, +cgfrl, +cgh, +cghi, +cghrl, +cghsi, +cgit, +cgr, +cgrl, +cgrt, +ch, +chi, +chrl, +chsi, +chy, +cit, +cl, +clfhsi, +clfi, +clfit, +clg, +clgf, +clgfi, +clgfr, +clgfrl, +clghrl, +clghsi, +clgit, +clgr, +clgrl, +clgrt, +clgt, +clhhsi, +clhrl, +cli, +cliy, +clm, +clmy, +clr, +clrl, +clrt, +clt, +cly, +cr, +crl, +crt, +cy, +j, +jg, +laa, +laag, +lan, +lang, +lao, +laog, +lat, +lax, +laxg, +lcdfr, +ldgr, +ldr, +lgat, +lgdr, +lndfr, +lpdfr, +lzdr, +lzer, +mvghi, +mvhhi, +mvhi, +mvi, +mviy, +ni, +niy, +nop, +nopr, +ntstg, +oi, +oiy, +ppa, +st, +stc, +stcy, +std, +stdy, +ste, +stey, +stg, +stgrl, +sth, +sthrl, +sthy, +stoc, +stocg, +strl, +strv, +strvg, +strvh, +sty, +tend, +tm, +tmh, +tmhh, +tmhl, +tml, +tmlh, +tmll, +tmy, +vlgvb, +vlgvf, +vlgvg, +vlgvh, +vlr, +vlvgb, +vlvgf, +vlvgg, +vlvgh, +vlvgp, +vst, +vstbr, +vstbrf, +vstbrg, +vstbrh, +vstbrq, +vstebrf, +vstebrg, +vstef, +vsteg, +vsterf, +vsterg, +vsterh, +vstl, +vstrl, +vstrlr, +xi, +xiy" +) + (const_int 1)] (const_int 0))) + +(define_attr "z16_unit_fxd" "" +(cond [(eq_attr "mnemonic" +"dlgr, +dlr, +dr, +dsgfr, +dsgr" +) + (const_int 1)] (const_int 0))) + +(define_attr "z16_unit_lsu" "" +(cond [(eq_attr "mnemonic" +"a, +adb, +aeb, +ag, +agf, +agh, +agsi, +ah, +ahy, +al, +alc, +alcg, +alg, +algf, +algsi, +alsi, +aly, +asi, +ay, +c, +cdb, +ceb, +cg, +cgf, +cgfrl, +cgh, +cghrl, +cghsi, +cgrl, +ch, +chrl, +chsi, +chy, +cl, +clc, +clfhsi, +clg, +clgf, +clgfrl, +clghrl, +clghsi, +clgrl, +clgt, +clhhsi, +clhrl, +cli, +cliy, +clm, +clmy, +clrl, +clt, +cly, +crl, +cy, +ddb, +deb, +ear, +ic, +icm, +icmh, +icmy, +icy, +kdb, +keb, +l, +laa, +laag, +lan, +lang, +lao, +laog, +lat, +lax, +laxg, +lb, +lcbb, +ld, +lde, +ldeb, +ldy, +le, +ley, +lg, +lgat, +lgb, +lgf, +lgfrl, +lgh, +lghrl, +lgrl, +lh, +lhrl, +lhy, +llc, +llgc, +llgf, +llgfrl, +llgh, +llghrl, +llgt, +llh, +llhrl, +loc, +locg, +lrl, +lrv, +lrvg, +lrvh, +lt, +ltg, +ltgf, +ly, +m, +madb, +maeb, +mdb, +meeb, +mfy, +mg, +mgh, +mh, +mhy, +ml, +mlg, +ms, +msc, +msdb, +mseb, +msg, +msgc, +msgf, +msy, +mvghi, +mvhhi, +mvhi, +mvi, +mviy, +n, +ng, +ni, +niy, +ntstg, +ny, +o, +og, +oi, +oiy, +oy, +s, +sar, +sdb, +seb, +sfpc, +sg, +sgf, +sgh, +sh, +shy, +sl, +slb, +slbg, +slg, +slgf, +sly, +sqdb, +sqeb, +st, +stc, +stcy, +std, +stdy, +ste, +stey, +stg, +stgrl, +sth, +sthrl, +sthy, +stoc, +stocg, +strl, +strv, +strvg, +strvh, +sty, +sy, +tabort, +tm, +tmy, +vl, +vlbb, +vlbr, +vlbrf, +vlbrg, +vlbrh, +vlbrq, +vlbrrepf, +vlbrrepg, +vlbrreph, +vleb, +vlebrf, +vlebrg, +vlebrh, +vlef, +vleg, +vleh, +vlerf, +vlerg, +vlerh, +vll, +vllebrzf, +vllebrzg, +vllebrzh, +vllezb, +vllezf, +vllezg, +vllezh, +vllezlf, +vlrepb, +vlrepf, +vlrepg, +vlreph, +vlrl, +vlrlr, +vst, +vstbr, +vstbrf, +vstbrg, +vstbrh, +vstbrq, +vstebrf, +vstebrg, +vstef, +vsteg, +vsterf, +vsterg, +vsterh, +vstl, +vstrl, +vstrlr, +x, +xg, +xi, +xiy, +xy" +) + (const_int 1)] (const_int 0))) + +(define_attr "z16_unit_vfu" "" +(cond [(eq_attr "mnemonic" +"adb, +adbr, +adtr, +aeb, +aebr, +axbr, +axtr, +cdb, +cdbr, +cdtr, +ceb, +cebr, +cpsdr, +cxbr, +cxtr, +ddtr, +dxtr, +fidbr, +fidbra, +fidtr, +fiebr, +fiebra, +fixbr, +fixbra, +fixtr, +kdb, +kdbr, +kdtr, +keb, +kebr, +kxbr, +kxtr, +lcdbr, +lcebr, +lcxbr, +ldeb, +ldebr, +ldetr, +le, +ledbr, +ledtr, +ler, +ley, +lndbr, +lnebr, +lnxbr, +lpdbr, +lpebr, +lpxbr, +ltdbr, +ltdtr, +ltebr, +ltxbr, +ltxtr, +lxdb, +lxdbr, +lxdtr, +lxeb, +lxebr, +madb, +madbr, +maeb, +maebr, +mdb, +mdbr, +mdtr, +meeb, +meebr, +msdb, +msdbr, +mseb, +msebr, +mxbr, +mxtr, +sdb, +sdbr, +sdtr, +seb, +sebr, +sxbr, +sxtr, +tcdb, +tceb, +tcxb, +tdcdt, +tdcet, +tdcxt, +vab, +vaccb, +vacccq, +vaccf, +vaccg, +vacch, +vaccq, +vacq, +vaf, +vag, +vah, +vaq, +vavgb, +vavgf, +vavgg, +vavgh, +vavglb, +vavglf, +vavglg, +vavglh, +vbperm, +vcdgb, +vcdlgb, +vcefb, +vcelfb, +vceqb, +vceqbs, +vceqf, +vceqfs, +vceqg, +vceqgs, +vceqh, +vceqhs, +vcfeb, +vcfn, +vcgdb, +vchb, +vchbs, +vchf, +vchfs, +vchg, +vchgs, +vchh, +vchhs, +vchlb, +vchlbs, +vchlf, +vchlfs, +vchlg, +vchlgs, +vchlh, +vchlhs, +vcksm, +vclfeb, +vclfnh, +vclfnl, +vclgdb, +vclzb, +vclzf, +vclzg, +vclzh, +vcnf, +vcrnf, +vctzb, +vctzf, +vctzg, +vctzh, +verimb, +verimf, +verimg, +verimh, +verllb, +verllf, +verllg, +verllh, +verllvb, +verllvf, +verllvg, +verllvh, +veslb, +veslf, +veslg, +veslh, +veslvb, +veslvf, +veslvg, +veslvh, +vesrab, +vesraf, +vesrag, +vesrah, +vesravb, +vesravf, +vesravg, +vesravh, +vesrlb, +vesrlf, +vesrlg, +vesrlh, +vesrlvb, +vesrlvf, +vesrlvg, +vesrlvh, +vfadb, +vfasb, +vfcedb, +vfcedbs, +vfcesb, +vfcesbs, +vfchdb, +vfchdbs, +vfchedb, +vfchedbs, +vfchesb, +vfchesbs, +vfchsb, +vfchsbs, +vfeeb, +vfeef, +vfeeh, +vfeezbs, +vfeezfs, +vfeezhs, +vfeneb, +vfenef, +vfeneh, +vfenezb, +vfenezf, +vfenezh, +vfidb, +vfisb, +vfkedb, +vfkesb, +vfkhdb, +vfkhedb, +vfkhesb, +vfkhsb, +vflcdb, +vflcsb, +vflndb, +vflnsb, +vflpdb, +vflpsb, +vfmadb, +vfmasb, +vfmaxdb, +vfmaxsb, +vfmdb, +vfmindb, +vfminsb, +vfmsb, +vfmsdb, +vfmssb, +vfnmadb, +vfnmasb, +vfnmsdb, +vfnmssb, +vfsdb, +vfssb, +vftcidb, +vftcisb, +vgbm, +vgfmab, +vgfmaf, +vgfmag, +vgfmah, +vgfmb, +vgfmf, +vgfmg, +vgfmh, +vgm, +vgmb, +vgmf, +vgmg, +vgmh, +vistrb, +vistrbs, +vistrf, +vistrfs, +vistrh, +vistrhs, +vlcb, +vlcf, +vlcg, +vlch, +vldeb, +vleb, +vlebrf, +vlebrg, +vlebrh, +vledb, +vlef, +vleg, +vleh, +vleib, +vleif, +vleig, +vleih, +vlpb, +vlpf, +vlpg, +vlph, +vmaeb, +vmaef, +vmaeh, +vmahb, +vmahf, +vmahh, +vmalb, +vmaleb, +vmalef, +vmaleh, +vmalf, +vmalhb, +vmalhf, +vmalhh, +vmalhw, +vmalob, +vmalof, +vmaloh, +vmaob, +vmaof, +vmaoh, +vmeb, +vmef, +vmeh, +vmhb, +vmhf, +vmhh, +vmlb, +vmleb, +vmlef, +vmleh, +vmlf, +vmlhb, +vmlhf, +vmlhh, +vmlhw, +vmlob, +vmlof, +vmloh, +vmnb, +vmnf, +vmng, +vmnh, +vmnlb, +vmnlf, +vmnlg, +vmnlh, +vmob, +vmof, +vmoh, +vmrhb, +vmrhf, +vmrhg, +vmrhh, +vmrlb, +vmrlf, +vmrlg, +vmrlh, +vmslg, +vmxb, +vmxf, +vmxg, +vmxh, +vmxlb, +vmxlf, +vmxlg, +vmxlh, +vn, +vnc, +vnn, +vno, +vnot, +vnx, +vo, +voc, +vone, +vpdi, +vperm, +vpkf, +vpkg, +vpkh, +vpklsf, +vpklsfs, +vpklsg, +vpklsgs, +vpklsh, +vpklshs, +vpksf, +vpksfs, +vpksg, +vpksgs, +vpksh, +vpkshs, +vpopct, +vpopctb, +vpopctf, +vpopctg, +vpopcth, +vrepb, +vrepf, +vrepg, +vreph, +vrepi, +vrepib, +vrepif, +vrepig, +vrepih, +vsb, +vsbcbiq, +vsbiq, +vscbib, +vscbif, +vscbig, +vscbih, +vscbiq, +vsegb, +vsegf, +vsegh, +vsel, +vsf, +vsg, +vsh, +vsl, +vslb, +vsld, +vsldb, +vsq, +vsra, +vsrab, +vsrd, +vsrl, +vsrlb, +vsumb, +vsumgf, +vsumgh, +vsumh, +vsumqf, +vsumqg, +vtm, +vuphb, +vuphf, +vuphh, +vuplb, +vuplf, +vuplhb, +vuplhf, +vuplhh, +vuplhw, +vupllb, +vupllf, +vupllh, +vx, +vzero, +wcdgb, +wcdlgb, +wcefb, +wcelfb, +wcfeb, +wcgdb, +wclfeb, +wclgdb, +wfadb, +wfasb, +wfaxb, +wfcdb, +wfcedb, +wfcesb, +wfcexb, +wfcexbs, +wfchdb, +wfchedb, +wfchesb, +wfchexb, +wfchexbs, +wfchsb, +wfchxb, +wfchxbs, +wfcsb, +wfcxb, +wfidb, +wfisb, +wfixb, +wfkdb, +wfkedb, +wfkesb, +wfkexb, +wfkhdb, +wfkhedb, +wfkhesb, +wfkhexb, +wfkhsb, +wfkhxb, +wfksb, +wfkxb, +wflcdb, +wflcsb, +wflcxb, +wflld, +wflndb, +wflnsb, +wflnxb, +wflpdb, +wflpsb, +wflpxb, +wflrx, +wfmadb, +wfmasb, +wfmaxb, +wfmaxxb, +wfmdb, +wfminxb, +wfmsb, +wfmsdb, +wfmssb, +wfmsxb, +wfmxb, +wfnmaxb, +wfnmsxb, +wfsdb, +wfssb, +wfsxb, +wftcixb, +wldeb, +wledb" +) + (const_int 1)] (const_int 0))) + +(define_attr "z16_cracked" "" +(cond [(eq_attr "mnemonic" +"bas, +basr, +cdfbr, +cdftr, +cdgbr, +cdgtr, +cdlfbr, +cdlftr, +cdlgbr, +cdlgtr, +cefbr, +cegbr, +celfbr, +celgbr, +cfdbr, +cfebr, +cfxbr, +cgdbr, +cgdtr, +cgebr, +cgxbr, +cgxtr, +chhsi, +clfdbr, +clfdtr, +clfebr, +clfxbr, +clfxtr, +clgdbr, +clgdtr, +clgebr, +clgxbr, +clgxtr, +cs, +csg, +csy, +d, +efpc, +ex, +lcgfr, +lngfr, +lpgfr, +lpq, +lxr, +lzxr, +rxsbg, +stpq, +vgef, +vgeg, +vscef, +vsceg, +vsteb, +vstebrh, +vsteh" +) + (const_int 1)] (const_int 0))) + +(define_attr "z16_expanded" "" +(cond [(eq_attr "mnemonic" +"cds, +cdsg, +cdsy, +cxfbr, +cxftr, +cxgbr, +cxgtr, +cxlfbr, +cxlftr, +cxlgbr, +cxlgtr, +dl, +dlg, +dsg, +dsgf, +lam, +lm, +lmg, +lmy, +sldl, +srda, +srdl, +stam, +stm, +stmg, +stmy, +tbegin, +tbeginc" +) + (const_int 1)] (const_int 0))) + +(define_attr "z16_groupalone" "" +(cond [(eq_attr "mnemonic" +"alc, +alcg, +alcgr, +alcr, +axbr, +axtr, +clc, +cxbr, +cxtr, +dlgr, +dlr, +dr, +dsgfr, +dsgr, +dxbr, +dxtr, +fixbr, +fixbra, +fixtr, +flogr, +kxbr, +kxtr, +lcxbr, +lnxbr, +lpxbr, +ltxbr, +ltxtr, +lxdb, +lxdbr, +lxdtr, +lxeb, +lxebr, +m, +madb, +maeb, +maebr, +mfy, +mg, +mgrk, +ml, +mlg, +mlgr, +mlr, +mr, +msdb, +mseb, +msebr, +mvc, +mxbr, +mxtr, +nc, +oc, +ppa, +sfpc, +slb, +slbg, +slbgr, +slbr, +sqxbr, +sxbr, +sxtr, +tabort, +tcxb, +tdcxt, +tend, +xc" +) + (const_int 1)] (const_int 0))) + +(define_attr "z16_endgroup" "" +(cond [(eq_attr "mnemonic" +"bras, +brasl, +exrl, +ipm" +) + (const_int 1)] (const_int 0))) + +(define_attr "z16_groupoftwo" "" +(cond [(eq_attr "mnemonic" +"vacccq, +vacq, +vfmadb, +vfmasb, +vfmsdb, +vfmssb, +vfnmadb, +vfnmasb, +vfnmsdb, +vfnmssb, +vgfmab, +vgfmaf, +vgfmag, +vgfmah, +vmaeb, +vmaef, +vmaeh, +vmahb, +vmahf, +vmahh, +vmalb, +vmaleb, +vmalef, +vmaleh, +vmalf, +vmalhb, +vmalhf, +vmalhh, +vmalhw, +vmalob, +vmalof, +vmaloh, +vmaob, +vmaof, +vmaoh, +vmslg, +vperm, +vsbcbiq, +vsbiq, +vsel, +wfmadb, +wfmasb, +wfmaxb, +wfmsdb, +wfmssb, +wfmsxb, +wfnmaxb, +wfnmsxb" +) + (const_int 1)] (const_int 0))) + +(define_insn_reservation "z16_0" 0 + (and (eq_attr "cpu" "z16") +(eq_attr "mnemonic" +"a, +afi, +ag, +agfi, +aghi, +aghik, +agr, +agrk, +ahi, +ahik, +al, +alfi, +alg, +algf, +algfi, +algfr, +alghsik, +algr, +algrk, +alhsik, +alr, +alrk, +aly, +ar, +ark, +ay, +b, +bc, +bcr, +bi, +br, +bras, +brasl, +brcl, +c, +cfi, +cg, +cgfi, +cghi, +cghsi, +cgit, +cgr, +cgrl, +cgrt, +chi, +chsi, +cit, +cl, +clfhsi, +clfi, +clfit, +clg, +clgf, +clgfi, +clgfr, +clgfrl, +clghrl, +clghsi, +clgit, +clgr, +clgrl, +clgrt, +clgt, +clhhsi, +clhrl, +cli, +cliy, +clr, +clrl, +clrt, +clt, +cly, +cr, +crl, +crt, +cy, +etnd, +exrl, +ic, +icm, +icmh, +icmy, +icy, +iihf, +iilf, +j, +jg, +la, +larl, +lat, +lay, +lb, +lbr, +lcdfr, +lcgr, +lcr, +ldgr, +ldr, +lgat, +lgb, +lgbr, +lgf, +lgfi, +lgfr, +lgfrl, +lgh, +lghi, +lghr, +lghrl, +lgr, +lh, +lhi, +lhr, +lhrl, +lhy, +llcr, +llgcr, +llgfr, +llghr, +llgtr, +llhr, +llihf, +llihh, +llihl, +llilf, +llilh, +llill, +lndfr, +lngr, +lnr, +lpdfr, +lpgr, +lpr, +lr, +lrv, +lrvg, +lrvgr, +lrvh, +lrvr, +lt, +ltg, +ltgf, +ltgfr, +ltgr, +ltr, +lzdr, +lzer, +n, +ncgrk, +ncrk, +ng, +ngr, +ngrk, +nihf, +nihh, +nihl, +nilf, +nilh, +nill, +nngrk, +nnrk, +nogrk, +nop, +nopr, +nork, +nr, +nrk, +nxgrk, +nxrk, +ny, +o, +ocgrk, +ocrk, +og, +ogr, +ogrk, +oihf, +oihh, +oihl, +oilf, +oilh, +oill, +or, +ork, +oy, +pfpo, +risbg, +risbgn, +rll, +rllg, +rnsbg, +rosbg, +s, +sg, +sgr, +sgrk, +sl, +sldl, +slfi, +slg, +slgf, +slgfi, +slgfr, +slgr, +slgrk, +sll, +sllg, +sllk, +slr, +slrk, +sly, +sr, +sra, +srag, +srak, +srda, +srdl, +srk, +srl, +srlg, +srlk, +sy, +tm, +tmh, +tmhh, +tmhl, +tml, +tmlh, +tmll, +tmy, +vlr, +vlvgb, +vlvgf, +vlvgg, +vlvgh, +x, +xg, +xgr, +xgrk, +xihf, +xilf, +xr, +xrk, +xy" +)) "nothing") + +(define_insn_reservation "z16_1" 1 + (and (eq_attr "cpu" "z16") +(eq_attr "mnemonic" +"agf, +agfr, +agh, +agsi, +ah, +ahy, +algsi, +alsi, +asi, +cgf, +cgfr, +cgfrl, +cgh, +cghrl, +ch, +chrl, +chy, +clm, +clmy, +cpsdr, +laa, +laag, +lan, +lang, +lao, +laog, +lax, +laxg, +le, +ler, +ley, +loc, +locg, +locghi, +locgr, +lochi, +locr, +mvghi, +mvhhi, +mvhi, +mvi, +mviy, +ni, +niy, +ntstg, +oi, +oiy, +selgr, +selr, +sgf, +sgfr, +sgh, +sh, +shy, +st, +stc, +stcy, +stg, +stgrl, +sth, +sthrl, +sthy, +stoc, +stocg, +strl, +strv, +strvg, +strvh, +sty, +vab, +vaccb, +vacccq, +vaccf, +vaccg, +vacch, +vaccq, +vacq, +vaf, +vag, +vah, +vaq, +vavgb, +vavgf, +vavgg, +vavgh, +vavglb, +vavglf, +vavglg, +vavglh, +vbperm, +vceqb, +vceqf, +vceqg, +vceqh, +vcfn, +vchb, +vchf, +vchg, +vchh, +vchlb, +vchlf, +vchlg, +vchlh, +vclfnh, +vclfnl, +vclzb, +vclzf, +vclzg, +vclzh, +vcnf, +vcrnf, +vctzb, +vctzf, +vctzg, +vctzh, +verimb, +verimf, +verimg, +verimh, +verllb, +verllf, +verllg, +verllh, +verllvb, +verllvf, +verllvg, +verllvh, +veslb, +veslf, +veslg, +veslh, +veslvb, +veslvf, +veslvg, +veslvh, +vesrab, +vesraf, +vesrag, +vesrah, +vesravb, +vesravf, +vesravg, +vesravh, +vesrlb, +vesrlf, +vesrlg, +vesrlh, +vesrlvb, +vesrlvf, +vesrlvg, +vesrlvh, +vfcedb, +vfcesb, +vfchdb, +vfchedb, +vfchesb, +vfchsb, +vfkedb, +vfkesb, +vfkhdb, +vfkhedb, +vfkhesb, +vfkhsb, +vflcdb, +vflcsb, +vflndb, +vflnsb, +vflpdb, +vflpsb, +vfmaxdb, +vfmaxsb, +vfmindb, +vfminsb, +vgbm, +vgm, +vgmb, +vgmf, +vgmg, +vgmh, +vlcb, +vlcf, +vlcg, +vlch, +vleb, +vlebrf, +vlebrg, +vlebrh, +vlef, +vleg, +vleh, +vleib, +vleif, +vleig, +vleih, +vlpb, +vlpf, +vlpg, +vlph, +vmnb, +vmnf, +vmng, +vmnh, +vmnlb, +vmnlf, +vmnlg, +vmnlh, +vmrhb, +vmrhf, +vmrhg, +vmrhh, +vmrlb, +vmrlf, +vmrlg, +vmrlh, +vmxb, +vmxf, +vmxg, +vmxh, +vmxlb, +vmxlf, +vmxlg, +vmxlh, +vn, +vnc, +vnn, +vno, +vnot, +vnx, +vo, +voc, +vone, +vpdi, +vperm, +vpkf, +vpkg, +vpkh, +vpklsf, +vpklsg, +vpklsh, +vpksf, +vpksg, +vpksh, +vpopct, +vpopctb, +vpopctf, +vpopctg, +vpopcth, +vrepb, +vrepf, +vrepg, +vreph, +vrepi, +vrepib, +vrepif, +vrepig, +vrepih, +vsb, +vsbcbiq, +vsbiq, +vscbib, +vscbif, +vscbig, +vscbih, +vscbiq, +vsegb, +vsegf, +vsegh, +vsel, +vsf, +vsg, +vsh, +vsl, +vslb, +vsld, +vsldb, +vsq, +vsra, +vsrab, +vsrd, +vsrl, +vsrlb, +vuphb, +vuphf, +vuphh, +vuplb, +vuplf, +vuplhb, +vuplhf, +vuplhh, +vuplhw, +vupllb, +vupllf, +vupllh, +vx, +vzero, +wfcedb, +wfcesb, +wfcexb, +wfchdb, +wfchedb, +wfchesb, +wfchexb, +wfchsb, +wfchxb, +wfkedb, +wfkesb, +wfkexb, +wfkhdb, +wfkhedb, +wfkhesb, +wfkhexb, +wfkhsb, +wfkhxb, +wflcdb, +wflcsb, +wflcxb, +wflndb, +wflnsb, +wflnxb, +wflpdb, +wflpsb, +wflpxb, +wfmaxxb, +wfminxb, +xi, +xiy" +)) "nothing") + +(define_insn_reservation "z16_2" 2 + (and (eq_attr "cpu" "z16") +(eq_attr "mnemonic" +"cdb, +cdbr, +ceb, +cebr, +ear, +ipm, +kdb, +kdbr, +keb, +kebr, +l, +lcbb, +lcdbr, +lcebr, +ld, +lde, +ldy, +lg, +lgdr, +lgrl, +llc, +llgc, +llgf, +llgfrl, +llgh, +llghrl, +llgt, +llh, +llhrl, +lm, +lmg, +lmy, +lndbr, +lnebr, +lpdbr, +lpebr, +lrl, +ltdbr, +ltebr, +ly, +popcnt, +sar, +tcdb, +tceb, +vceqbs, +vceqfs, +vceqgs, +vceqhs, +vchbs, +vchfs, +vchgs, +vchhs, +vchlbs, +vchlfs, +vchlgs, +vchlhs, +vfcedbs, +vfcesbs, +vfchdbs, +vfchedbs, +vfchesbs, +vfchsbs, +vfeeb, +vfeef, +vfeeh, +vfeneb, +vfenef, +vfeneh, +vfenezb, +vfenezf, +vfenezh, +vftcidb, +vftcisb, +vistrb, +vistrf, +vistrh, +vlbrrepf, +vlbrrepg, +vlbrreph, +vlgvb, +vlgvf, +vlgvg, +vlgvh, +vllebrzf, +vllebrzg, +vllebrzh, +vllezb, +vllezf, +vllezg, +vllezh, +vllezlf, +vlrepb, +vlrepf, +vlrepg, +vlreph, +vlrl, +vlvgp, +vpklsfs, +vpklsgs, +vpklshs, +vpksfs, +vpksgs, +vpkshs, +wfcdb, +wfcexbs, +wfchexbs, +wfchxbs, +wfcsb, +wfcxb, +wfkdb, +wfksb, +wfkxb, +wftcixb" +)) "nothing") + +(define_insn_reservation "z16_3" 3 + (and (eq_attr "cpu" "z16") +(eq_attr "mnemonic" +"cds, +cdsy, +mgh, +mghi, +mh, +mhi, +mhy, +std, +stdy, +ste, +stey, +vcksm, +vfeezbs, +vfeezfs, +vfeezhs, +vgfmab, +vgfmaf, +vgfmag, +vgfmah, +vgfmb, +vgfmf, +vgfmg, +vgfmh, +vistrbs, +vistrfs, +vistrhs, +vl, +vlbb, +vlbr, +vlbrf, +vlbrg, +vlbrh, +vlbrq, +vlerf, +vlerg, +vlerh, +vll, +vlrlr, +vmaeb, +vmaef, +vmaeh, +vmahb, +vmahf, +vmahh, +vmalb, +vmaleb, +vmalef, +vmaleh, +vmalf, +vmalhb, +vmalhf, +vmalhh, +vmalhw, +vmalob, +vmalof, +vmaloh, +vmaob, +vmaof, +vmaoh, +vmeb, +vmef, +vmeh, +vmhb, +vmhf, +vmhh, +vmlb, +vmleb, +vmlef, +vmleh, +vmlf, +vmlhb, +vmlhf, +vmlhh, +vmlhw, +vmlob, +vmlof, +vmloh, +vmob, +vmof, +vmoh, +vsumb, +vsumgf, +vsumgh, +vsumh, +vsumqf, +vsumqg, +vtm" +)) "nothing") + +(define_insn_reservation "z16_4" 4 + (and (eq_attr "cpu" "z16") +(eq_attr "mnemonic" +"bas, +basr, +chhsi, +clc, +ex, +lam, +lcgfr, +lngfr, +lpgfr, +lxr, +lzxr, +ms, +msfi, +msgf, +msgfi, +msgfr, +msr, +msy, +mvc, +nc, +oc, +ppa, +rxsbg, +tabort, +tbegin, +tbeginc, +tend, +vst, +vstbr, +vstbrf, +vstbrg, +vstbrh, +vstbrq, +vstebrf, +vstebrg, +vstef, +vsteg, +vsterf, +vsterg, +vsterh, +vstl, +vstrl, +vstrlr, +xc" +)) "nothing") + +(define_insn_reservation "z16_5" 5 + (and (eq_attr "cpu" "z16") +(eq_attr "mnemonic" +"adb, +adbr, +aeb, +aebr, +alc, +alcg, +alcgr, +alcr, +cs, +csg, +csy, +fidbr, +fidbra, +fiebr, +fiebra, +ldeb, +ldebr, +ledbr, +madbr, +mdb, +mdbr, +meeb, +meebr, +msc, +msdbr, +msrkc, +sdb, +sdbr, +seb, +sebr, +slb, +slbg, +slbgr, +slbr, +stm, +stmg, +stmy, +vcdgb, +vcdlgb, +vcefb, +vcelfb, +vcfeb, +vcgdb, +vclfeb, +vclgdb, +vfadb, +vfasb, +vfidb, +vfisb, +vfmadb, +vfmasb, +vfmdb, +vfmsb, +vfmsdb, +vfmssb, +vfnmadb, +vfnmasb, +vfnmsdb, +vfnmssb, +vfsdb, +vfssb, +vldeb, +vledb, +vmslg, +wcdgb, +wcdlgb, +wcefb, +wcelfb, +wcfeb, +wcgdb, +wclfeb, +wclgdb, +wfadb, +wfasb, +wfidb, +wfisb, +wflld, +wfmadb, +wfmasb, +wfmdb, +wfmsb, +wfmsdb, +wfmssb, +wfsdb, +wfssb, +wldeb, +wledb" +)) "nothing") + +(define_insn_reservation "z16_6" 6 + (and (eq_attr "cpu" "z16") +(eq_attr "mnemonic" +"msg, +msgr, +sfpc" +)) "nothing") + +(define_insn_reservation "z16_7" 7 + (and (eq_attr "cpu" "z16") +(eq_attr "mnemonic" +"adtr, +cdtr, +fidtr, +kdtr, +ldetr, +ltdtr, +msgc, +msgrkc, +sdtr, +tdcdt, +tdcet, +vgef, +vgeg" +)) "nothing") + +(define_insn_reservation "z16_8" 8 + (and (eq_attr "cpu" "z16") +(eq_attr "mnemonic" +"cdsg, +flogr, +lpq, +stpq, +vsteb, +vstebrh, +vsteh" +)) "nothing") + +(define_insn_reservation "z16_9" 9 + (and (eq_attr "cpu" "z16") +(eq_attr "mnemonic" +"cdfbr, +cdgbr, +cdlfbr, +cdlgbr, +cefbr, +cegbr, +celfbr, +celgbr, +cxfbr, +cxgbr, +cxlfbr, +cxlgbr, +m, +madb, +maeb, +maebr, +mfy, +ml, +mlr, +mr, +msdb, +mseb, +msebr, +stam, +wfaxb, +wfixb, +wflrx, +wfsxb" +)) "nothing") + +(define_insn_reservation "z16_10" 10 + (and (eq_attr "cpu" "z16") +(eq_attr "mnemonic" +"lxdb, +lxdbr, +lxeb, +lxebr, +vscef, +vsceg" +)) "nothing") + +(define_insn_reservation "z16_11" 11 + (and (eq_attr "cpu" "z16") +(eq_attr "mnemonic" +"cfdbr, +cfebr, +cgdbr, +cgebr, +clfdbr, +clfebr, +clgdbr, +clgebr, +mg, +mgrk, +mlg, +mlgr" +)) "nothing") + +(define_insn_reservation "z16_12" 12 + (and (eq_attr "cpu" "z16") +(eq_attr "mnemonic" +"cxbr, +cxftr, +cxlftr, +cxtr, +kxbr, +kxtr, +tcxb, +tdcxt" +)) "nothing") + +(define_insn_reservation "z16_13" 13 + (and (eq_attr "cpu" "z16") +(eq_attr "mnemonic" +"axbr, +axtr, +fixbr, +fixbra, +fixtr, +lcxbr, +lnxbr, +lpxbr, +ltxbr, +ltxtr, +lxdtr, +sxbr, +sxtr" +)) "nothing") + +(define_insn_reservation "z16_14" 14 + (and (eq_attr "cpu" "z16") +(eq_attr "mnemonic" +"cfxbr, +cgxbr, +clfxbr, +clgxbr, +ledtr" +)) "nothing") + +(define_insn_reservation "z16_16" 16 + (and (eq_attr "cpu" "z16") +(eq_attr "mnemonic" +"cdftr, +cdlftr" +)) "nothing") + +(define_insn_reservation "z16_20" 20 + (and (eq_attr "cpu" "z16") +(eq_attr "mnemonic" +"cdgtr, +cdlgtr, +cgdtr, +cgxtr, +clfdtr, +clfxtr, +clgdtr, +clgxtr, +cxgtr, +cxlgtr, +d, +ddb, +ddbr, +ddtr, +deb, +debr, +dl, +dlg, +dlgr, +dlr, +dr, +dsg, +dsgf, +dsgfr, +dsgr, +dxbr, +dxtr, +efpc, +mdtr, +mxbr, +mxtr, +sqdb, +sqdbr, +sqeb, +sqebr, +sqxbr, +vfddb, +vfdsb, +vfsqdb, +vfsqsb, +wfddb, +wfdsb, +wfdxb, +wfmaxb, +wfmsxb, +wfmxb, +wfnmaxb, +wfnmsxb, +wfsqdb, +wfsqxb" +)) "nothing") + diff --git a/gcc/config/s390/s390.cc b/gcc/config/s390/s390.cc index 1342a2e..43352a2 100644 --- a/gcc/config/s390/s390.cc +++ b/gcc/config/s390/s390.cc @@ -14873,7 +14873,6 @@ s390_get_sched_attrmask (rtx_insn *insn) mask |= S390_SCHED_ATTR_MASK_GROUPOFTWO; break; case PROCESSOR_8561_Z15: - case PROCESSOR_3931_Z16: if (get_attr_z15_cracked (insn)) mask |= S390_SCHED_ATTR_MASK_CRACKED; if (get_attr_z15_expanded (insn)) @@ -14885,6 +14884,18 @@ s390_get_sched_attrmask (rtx_insn *insn) if (get_attr_z15_groupoftwo (insn)) mask |= S390_SCHED_ATTR_MASK_GROUPOFTWO; break; + case PROCESSOR_3931_Z16: + if (get_attr_z16_cracked (insn)) + mask |= S390_SCHED_ATTR_MASK_CRACKED; + if (get_attr_z16_expanded (insn)) + mask |= S390_SCHED_ATTR_MASK_EXPANDED; + if (get_attr_z16_endgroup (insn)) + mask |= S390_SCHED_ATTR_MASK_ENDGROUP; + if (get_attr_z16_groupalone (insn)) + mask |= S390_SCHED_ATTR_MASK_GROUPALONE; + if (get_attr_z16_groupoftwo (insn)) + mask |= S390_SCHED_ATTR_MASK_GROUPOFTWO; + break; default: gcc_unreachable (); } @@ -14921,7 +14932,6 @@ s390_get_unit_mask (rtx_insn *insn, int *units) mask |= 1 << 3; break; case PROCESSOR_8561_Z15: - case PROCESSOR_3931_Z16: *units = 4; if (get_attr_z15_unit_lsu (insn)) mask |= 1 << 0; @@ -14932,6 +14942,17 @@ s390_get_unit_mask (rtx_insn *insn, int *units) if (get_attr_z15_unit_vfu (insn)) mask |= 1 << 3; break; + case PROCESSOR_3931_Z16: + *units = 4; + if (get_attr_z16_unit_lsu (insn)) + mask |= 1 << 0; + if (get_attr_z16_unit_fxa (insn)) + mask |= 1 << 1; + if (get_attr_z16_unit_fxb (insn)) + mask |= 1 << 2; + if (get_attr_z16_unit_vfu (insn)) + mask |= 1 << 3; + break; default: gcc_unreachable (); } @@ -14945,7 +14966,7 @@ s390_is_fpd (rtx_insn *insn) return false; return get_attr_z13_unit_fpd (insn) || get_attr_z14_unit_fpd (insn) - || get_attr_z15_unit_fpd (insn); + || get_attr_z15_unit_fpd (insn) || get_attr_z16_unit_fpd (insn); } static bool @@ -14955,7 +14976,7 @@ s390_is_fxd (rtx_insn *insn) return false; return get_attr_z13_unit_fxd (insn) || get_attr_z14_unit_fxd (insn) - || get_attr_z15_unit_fxd (insn); + || get_attr_z15_unit_fxd (insn) || get_attr_z16_unit_fxd (insn); } /* Returns TRUE if INSN is a long-running instruction. */ diff --git a/gcc/config/s390/s390.h b/gcc/config/s390/s390.h index c44fcdf..2e1bc71 100644 --- a/gcc/config/s390/s390.h +++ b/gcc/config/s390/s390.h @@ -48,7 +48,7 @@ enum processor_flags /* This is necessary to avoid a warning about comparing different enum types. */ -#define s390_tune_attr ((enum attr_cpu)(s390_tune > PROCESSOR_8561_Z15 ? PROCESSOR_8561_Z15 : s390_tune )) +#define s390_tune_attr ((enum attr_cpu)(s390_tune > PROCESSOR_3931_Z16 ? PROCESSOR_3931_Z16 : s390_tune )) /* These flags indicate that the generated code should run on a cpu providing the respective hardware facility regardless of the diff --git a/gcc/config/s390/s390.md b/gcc/config/s390/s390.md index aecfe4b..55c0064 100644 --- a/gcc/config/s390/s390.md +++ b/gcc/config/s390/s390.md @@ -518,7 +518,7 @@ ;; Processor type. This attribute must exactly match the processor_type ;; enumeration in s390.h. -(define_attr "cpu" "z900,z990,z9_109,z9_ec,z10,z196,zEC12,z13,z14,z15" +(define_attr "cpu" "z900,z990,z9_109,z9_ec,z10,z196,zEC12,z13,z14,z15,z16" (const (symbol_ref "s390_tune_attr"))) (define_attr "cpu_facility" @@ -629,6 +629,9 @@ ;; Pipeline description for z15 (include "8561.md") +;; Pipeline description for z16 +(include "3931.md") + ;; Predicates (include "predicates.md") |