decoder.isa (5094:10b8551e3e3f) decoder.isa (5095:65cc3a615375)
1// Copyright (c) 2006-2007 The Regents of The University of Michigan
2// All rights reserved.
3//
4// Redistribution and use in source and binary forms, with or without
5// modification, are permitted provided that the following conditions are
6// met: redistributions of source code must retain the above copyright
7// notice, this list of conditions and the following disclaimer;
8// redistributions in binary form must reproduce the above copyright

--- 515 unchanged lines hidden (view full) ---

524 0x03: HPriv::wrhprhintp({{Hintp = Rs1 ^ Rs2_or_imm13;}});
525 //0x04 should cause an illegal instruction exception
526 0x05: HPriv::wrhprhtba({{Htba = Rs1 ^ Rs2_or_imm13;}});
527 //0x06-0x01D should cause an illegal instruction exception
528 0x1F: HPriv::wrhprhstick_cmpr({{HstickCmpr = Rs1 ^ Rs2_or_imm13;}});
529 }
530 0x34: decode OPF{
531 format FpBasic{
1// Copyright (c) 2006-2007 The Regents of The University of Michigan
2// All rights reserved.
3//
4// Redistribution and use in source and binary forms, with or without
5// modification, are permitted provided that the following conditions are
6// met: redistributions of source code must retain the above copyright
7// notice, this list of conditions and the following disclaimer;
8// redistributions in binary form must reproduce the above copyright

--- 515 unchanged lines hidden (view full) ---

524 0x03: HPriv::wrhprhintp({{Hintp = Rs1 ^ Rs2_or_imm13;}});
525 //0x04 should cause an illegal instruction exception
526 0x05: HPriv::wrhprhtba({{Htba = Rs1 ^ Rs2_or_imm13;}});
527 //0x06-0x01D should cause an illegal instruction exception
528 0x1F: HPriv::wrhprhstick_cmpr({{HstickCmpr = Rs1 ^ Rs2_or_imm13;}});
529 }
530 0x34: decode OPF{
531 format FpBasic{
532 0x01: fmovs({{
533 Frds.uw = Frs2s.uw;
534 //fsr.ftt = fsr.cexc = 0
535 Fsr &= ~(7 << 14);
536 Fsr &= ~(0x1F);
537 }});
538 0x02: fmovd({{
539 Frd.udw = Frs2.udw;
540 //fsr.ftt = fsr.cexc = 0
541 Fsr &= ~(7 << 14);
542 Fsr &= ~(0x1F);
543 }});
532 0x01: fmovs({{Frds.uw = Frs2s.uw;}});
533 0x02: fmovd({{Frd.udw = Frs2.udw;}});
544 0x03: FpUnimpl::fmovq();
534 0x03: FpUnimpl::fmovq();
545 0x05: fnegs({{
546 Frds.uw = Frs2s.uw ^ (1UL << 31);
547 //fsr.ftt = fsr.cexc = 0
548 Fsr &= ~(7 << 14);
549 Fsr &= ~(0x1F);
550 }});
551 0x06: fnegd({{
552 Frd.udw = Frs2.udw ^ (1ULL << 63);
553 //fsr.ftt = fsr.cexc = 0
554 Fsr &= ~(7 << 14);
555 Fsr &= ~(0x1F);
556 }});
535 0x05: fnegs({{Frds.uw = Frs2s.uw ^ (1UL << 31);}});
536 0x06: fnegd({{Frd.udw = Frs2.udw ^ (1ULL << 63);}});
557 0x07: FpUnimpl::fnegq();
537 0x07: FpUnimpl::fnegq();
558 0x09: fabss({{
559 Frds.uw = ((1UL << 31) - 1) & Frs2s.uw;
560 //fsr.ftt = fsr.cexc = 0
561 Fsr &= ~(7 << 14);
562 Fsr &= ~(0x1F);
563 }});
564 0x0A: fabsd({{
565 Frd.udw = ((1ULL << 63) - 1) & Frs2.udw;
566 //fsr.ftt = fsr.cexc = 0
567 Fsr &= ~(7 << 14);
568 Fsr &= ~(0x1F);
569 }});
538 0x09: fabss({{Frds.uw = ((1UL << 31) - 1) & Frs2s.uw;}});
539 0x0A: fabsd({{Frd.udw = ((1ULL << 63) - 1) & Frs2.udw;}});
570 0x0B: FpUnimpl::fabsq();
571 0x29: fsqrts({{Frds.sf = std::sqrt(Frs2s.sf);}});
572 0x2A: fsqrtd({{Frd.df = std::sqrt(Frs2.df);}});
573 0x2B: FpUnimpl::fsqrtq();
574 0x41: fadds({{Frds.sf = Frs1s.sf + Frs2s.sf;}});
575 0x42: faddd({{Frd.df = Frs1.df + Frs2.df;}});
576 0x43: FpUnimpl::faddq();
577 0x45: fsubs({{Frds.sf = Frs1s.sf - Frs2s.sf;}});
578 0x46: fsubd({{Frd.df = Frs1.df - Frs2.df; }});
579 0x47: FpUnimpl::fsubq();
580 0x49: fmuls({{Frds.sf = Frs1s.sf * Frs2s.sf;}});
581 0x4A: fmuld({{Frd.df = Frs1.df * Frs2.df;}});
582 0x4B: FpUnimpl::fmulq();
583 0x4D: fdivs({{Frds.sf = Frs1s.sf / Frs2s.sf;}});
584 0x4E: fdivd({{Frd.df = Frs1.df / Frs2.df;}});
585 0x4F: FpUnimpl::fdivq();
586 0x69: fsmuld({{Frd.df = Frs1s.sf * Frs2s.sf;}});
587 0x6E: FpUnimpl::fdmulq();
540 0x0B: FpUnimpl::fabsq();
541 0x29: fsqrts({{Frds.sf = std::sqrt(Frs2s.sf);}});
542 0x2A: fsqrtd({{Frd.df = std::sqrt(Frs2.df);}});
543 0x2B: FpUnimpl::fsqrtq();
544 0x41: fadds({{Frds.sf = Frs1s.sf + Frs2s.sf;}});
545 0x42: faddd({{Frd.df = Frs1.df + Frs2.df;}});
546 0x43: FpUnimpl::faddq();
547 0x45: fsubs({{Frds.sf = Frs1s.sf - Frs2s.sf;}});
548 0x46: fsubd({{Frd.df = Frs1.df - Frs2.df; }});
549 0x47: FpUnimpl::fsubq();
550 0x49: fmuls({{Frds.sf = Frs1s.sf * Frs2s.sf;}});
551 0x4A: fmuld({{Frd.df = Frs1.df * Frs2.df;}});
552 0x4B: FpUnimpl::fmulq();
553 0x4D: fdivs({{Frds.sf = Frs1s.sf / Frs2s.sf;}});
554 0x4E: fdivd({{Frd.df = Frs1.df / Frs2.df;}});
555 0x4F: FpUnimpl::fdivq();
556 0x69: fsmuld({{Frd.df = Frs1s.sf * Frs2s.sf;}});
557 0x6E: FpUnimpl::fdmulq();
588 0x81: fstox({{
589 Frd.sdw = static_cast<int64_t>(Frs2s.sf);
590 }});
591 0x82: fdtox({{
592 Frd.sdw = static_cast<int64_t>(Frs2.df);
593 }});
558 0x81: fstox({{Frd.sdw = static_cast<int64_t>(Frs2s.sf);}});
559 0x82: fdtox({{Frd.sdw = static_cast<int64_t>(Frs2.df);}});
594 0x83: FpUnimpl::fqtox();
560 0x83: FpUnimpl::fqtox();
595 0x84: fxtos({{
596 Frds.sf = static_cast<float>(Frs2.sdw);
597 }});
598 0x88: fxtod({{
599 Frd.df = static_cast<double>(Frs2.sdw);
600 }});
561 0x84: fxtos({{Frds.sf = static_cast<float>(Frs2.sdw);}});
562 0x88: fxtod({{Frd.df = static_cast<double>(Frs2.sdw);}});
601 0x8C: FpUnimpl::fxtoq();
563 0x8C: FpUnimpl::fxtoq();
602 0xC4: fitos({{
603 Frds.sf = static_cast<float>(Frs2s.sw);
604 }});
564 0xC4: fitos({{Frds.sf = static_cast<float>(Frs2s.sw);}});
605 0xC6: fdtos({{Frds.sf = Frs2.df;}});
606 0xC7: FpUnimpl::fqtos();
565 0xC6: fdtos({{Frds.sf = Frs2.df;}});
566 0xC7: FpUnimpl::fqtos();
607 0xC8: fitod({{
608 Frd.df = static_cast<double>(Frs2s.sw);
609 }});
567 0xC8: fitod({{Frd.df = static_cast<double>(Frs2s.sw);}});
610 0xC9: fstod({{Frd.df = Frs2s.sf;}});
611 0xCB: FpUnimpl::fqtod();
612 0xCC: FpUnimpl::fitoq();
613 0xCD: FpUnimpl::fstoq();
614 0xCE: FpUnimpl::fdtoq();
615 0xD1: fstoi({{
616 Frds.sw = static_cast<int32_t>(Frs2s.sf);
617 float t = Frds.sw;

--- 854 unchanged lines hidden ---
568 0xC9: fstod({{Frd.df = Frs2s.sf;}});
569 0xCB: FpUnimpl::fqtod();
570 0xCC: FpUnimpl::fitoq();
571 0xCD: FpUnimpl::fstoq();
572 0xCE: FpUnimpl::fdtoq();
573 0xD1: fstoi({{
574 Frds.sw = static_cast<int32_t>(Frs2s.sf);
575 float t = Frds.sw;

--- 854 unchanged lines hidden ---