mediaop.isa (6742:a2a79fe9655d) mediaop.isa (6799:36131e4dfb6e)
1/// Copyright (c) 2009 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

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

347 DestReg = DestReg | result;
348 '''
349
350 class Maskmov(MediaOp):
351 code = '''
352 assert(srcSize == destSize);
353 int size = srcSize;
354 int sizeBits = size * 8;
1/// Copyright (c) 2009 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

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

347 DestReg = DestReg | result;
348 '''
349
350 class Maskmov(MediaOp):
351 code = '''
352 assert(srcSize == destSize);
353 int size = srcSize;
354 int sizeBits = size * 8;
355 int items = (ext & 0x1) ? 1: (sizeof(FloatRegBits) / size);
355 int items = numItems(size);
356 uint64_t result = FpDestReg.uqw;
357
358 for (int i = 0; i < items; i++) {
359 int hiIndex = (i + 1) * sizeBits - 1;
360 int loIndex = (i + 0) * sizeBits;
361 uint64_t arg1Bits = bits(FpSrcReg1.uqw, hiIndex, loIndex);
362 if (bits(FpSrcReg2.uqw, hiIndex))
363 result = insertBits(result, hiIndex, loIndex, arg1Bits);

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

540 double d;
541 uint64_t i;
542 };
543
544 assert(srcSize == destSize);
545 int size = srcSize;
546 int sizeBits = size * 8;
547 assert(srcSize == 4 || srcSize == 8);
356 uint64_t result = FpDestReg.uqw;
357
358 for (int i = 0; i < items; i++) {
359 int hiIndex = (i + 1) * sizeBits - 1;
360 int loIndex = (i + 0) * sizeBits;
361 uint64_t arg1Bits = bits(FpSrcReg1.uqw, hiIndex, loIndex);
362 if (bits(FpSrcReg2.uqw, hiIndex))
363 result = insertBits(result, hiIndex, loIndex, arg1Bits);

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

540 double d;
541 uint64_t i;
542 };
543
544 assert(srcSize == destSize);
545 int size = srcSize;
546 int sizeBits = size * 8;
547 assert(srcSize == 4 || srcSize == 8);
548 int items = (ext & 0x1) ? 1: (sizeof(FloatRegBits) / size);
548 int items = numItems(size);
549 uint64_t result = FpDestReg.uqw;
550
551 for (int i = 0; i < items; i++) {
552 double arg1, arg2;
553 int hiIndex = (i + 1) * sizeBits - 1;
554 int loIndex = (i + 0) * sizeBits;
555 uint64_t arg1Bits = bits(FpSrcReg1.uqw, hiIndex, loIndex);
556 uint64_t arg2Bits = bits(FpSrcReg2.uqw, hiIndex, loIndex);

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

590 double d;
591 uint64_t i;
592 };
593
594 assert(srcSize == destSize);
595 int size = srcSize;
596 int sizeBits = size * 8;
597 assert(srcSize == 4 || srcSize == 8);
549 uint64_t result = FpDestReg.uqw;
550
551 for (int i = 0; i < items; i++) {
552 double arg1, arg2;
553 int hiIndex = (i + 1) * sizeBits - 1;
554 int loIndex = (i + 0) * sizeBits;
555 uint64_t arg1Bits = bits(FpSrcReg1.uqw, hiIndex, loIndex);
556 uint64_t arg2Bits = bits(FpSrcReg2.uqw, hiIndex, loIndex);

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

590 double d;
591 uint64_t i;
592 };
593
594 assert(srcSize == destSize);
595 int size = srcSize;
596 int sizeBits = size * 8;
597 assert(srcSize == 4 || srcSize == 8);
598 int items = (ext & 0x1) ? 1: (sizeof(FloatRegBits) / size);
598 int items = numItems(size);
599 uint64_t result = FpDestReg.uqw;
600
601 for (int i = 0; i < items; i++) {
602 double arg1, arg2;
603 int hiIndex = (i + 1) * sizeBits - 1;
604 int loIndex = (i + 0) * sizeBits;
605 uint64_t arg1Bits = bits(FpSrcReg1.uqw, hiIndex, loIndex);
606 uint64_t arg2Bits = bits(FpSrcReg2.uqw, hiIndex, loIndex);

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

629 '''
630
631 class Mmini(MediaOp):
632 code = '''
633
634 assert(srcSize == destSize);
635 int size = srcSize;
636 int sizeBits = size * 8;
599 uint64_t result = FpDestReg.uqw;
600
601 for (int i = 0; i < items; i++) {
602 double arg1, arg2;
603 int hiIndex = (i + 1) * sizeBits - 1;
604 int loIndex = (i + 0) * sizeBits;
605 uint64_t arg1Bits = bits(FpSrcReg1.uqw, hiIndex, loIndex);
606 uint64_t arg2Bits = bits(FpSrcReg2.uqw, hiIndex, loIndex);

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

629 '''
630
631 class Mmini(MediaOp):
632 code = '''
633
634 assert(srcSize == destSize);
635 int size = srcSize;
636 int sizeBits = size * 8;
637 int items = (ext & 0x1) ? 1: (sizeof(FloatRegBits) / size);
637 int items = numItems(size);
638 uint64_t result = FpDestReg.uqw;
639
640 for (int i = 0; i < items; i++) {
641 int hiIndex = (i + 1) * sizeBits - 1;
642 int loIndex = (i + 0) * sizeBits;
643 uint64_t arg1Bits = bits(FpSrcReg1.uqw, hiIndex, loIndex);
644 int64_t arg1 = arg1Bits |
645 (0 - (arg1Bits & (ULL(1) << (sizeBits - 1))));

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

667 '''
668
669 class Mmaxi(MediaOp):
670 code = '''
671
672 assert(srcSize == destSize);
673 int size = srcSize;
674 int sizeBits = size * 8;
638 uint64_t result = FpDestReg.uqw;
639
640 for (int i = 0; i < items; i++) {
641 int hiIndex = (i + 1) * sizeBits - 1;
642 int loIndex = (i + 0) * sizeBits;
643 uint64_t arg1Bits = bits(FpSrcReg1.uqw, hiIndex, loIndex);
644 int64_t arg1 = arg1Bits |
645 (0 - (arg1Bits & (ULL(1) << (sizeBits - 1))));

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

667 '''
668
669 class Mmaxi(MediaOp):
670 code = '''
671
672 assert(srcSize == destSize);
673 int size = srcSize;
674 int sizeBits = size * 8;
675 int items = (ext & 0x1) ? 1: (sizeof(FloatRegBits) / size);
675 int items = numItems(size);
676 uint64_t result = FpDestReg.uqw;
677
678 for (int i = 0; i < items; i++) {
679 int hiIndex = (i + 1) * sizeBits - 1;
680 int loIndex = (i + 0) * sizeBits;
681 uint64_t arg1Bits = bits(FpSrcReg1.uqw, hiIndex, loIndex);
682 int64_t arg1 = arg1Bits |
683 (0 - (arg1Bits & (ULL(1) << (sizeBits - 1))));

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

720 double d;
721 uint64_t i;
722 };
723
724 assert(srcSize == destSize);
725 int size = srcSize;
726 int sizeBits = size * 8;
727 assert(srcSize == 4 || srcSize == 8);
676 uint64_t result = FpDestReg.uqw;
677
678 for (int i = 0; i < items; i++) {
679 int hiIndex = (i + 1) * sizeBits - 1;
680 int loIndex = (i + 0) * sizeBits;
681 uint64_t arg1Bits = bits(FpSrcReg1.uqw, hiIndex, loIndex);
682 int64_t arg1 = arg1Bits |
683 (0 - (arg1Bits & (ULL(1) << (sizeBits - 1))));

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

720 double d;
721 uint64_t i;
722 };
723
724 assert(srcSize == destSize);
725 int size = srcSize;
726 int sizeBits = size * 8;
727 assert(srcSize == 4 || srcSize == 8);
728 int items = (ext & 0x1) ? 1: (sizeof(FloatRegBits) / size);
728 int items = numItems(size);
729 uint64_t result = FpDestReg.uqw;
730
731 for (int i = 0; i < items; i++) {
732 int hiIndex = (i + 1) * sizeBits - 1;
733 int loIndex = (i + 0) * sizeBits;
734 uint64_t argBits = bits(FpSrcReg1.uqw, hiIndex, loIndex);
735
736 if (size == 4) {

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

761 double d;
762 uint64_t i;
763 };
764
765 assert(srcSize == destSize);
766 int size = srcSize;
767 int sizeBits = size * 8;
768 assert(srcSize == 4 || srcSize == 8);
729 uint64_t result = FpDestReg.uqw;
730
731 for (int i = 0; i < items; i++) {
732 int hiIndex = (i + 1) * sizeBits - 1;
733 int loIndex = (i + 0) * sizeBits;
734 uint64_t argBits = bits(FpSrcReg1.uqw, hiIndex, loIndex);
735
736 if (size == 4) {

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

761 double d;
762 uint64_t i;
763 };
764
765 assert(srcSize == destSize);
766 int size = srcSize;
767 int sizeBits = size * 8;
768 assert(srcSize == 4 || srcSize == 8);
769 int items = (ext & 0x1) ? 1: (sizeof(FloatRegBits) / size);
769 int items = numItems(size);
770 uint64_t result = FpDestReg.uqw;
771
772 for (int i = 0; i < items; i++) {
773 int hiIndex = (i + 1) * sizeBits - 1;
774 int loIndex = (i + 0) * sizeBits;
775 uint64_t arg1Bits = bits(FpSrcReg1.uqw, hiIndex, loIndex);
776 uint64_t arg2Bits = bits(FpSrcReg2.uqw, hiIndex, loIndex);
777 uint64_t resBits;

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

807 double d;
808 uint64_t i;
809 };
810
811 assert(srcSize == destSize);
812 int size = srcSize;
813 int sizeBits = size * 8;
814 assert(srcSize == 4 || srcSize == 8);
770 uint64_t result = FpDestReg.uqw;
771
772 for (int i = 0; i < items; i++) {
773 int hiIndex = (i + 1) * sizeBits - 1;
774 int loIndex = (i + 0) * sizeBits;
775 uint64_t arg1Bits = bits(FpSrcReg1.uqw, hiIndex, loIndex);
776 uint64_t arg2Bits = bits(FpSrcReg2.uqw, hiIndex, loIndex);
777 uint64_t resBits;

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

807 double d;
808 uint64_t i;
809 };
810
811 assert(srcSize == destSize);
812 int size = srcSize;
813 int sizeBits = size * 8;
814 assert(srcSize == 4 || srcSize == 8);
815 int items = (ext & 0x1) ? 1: (sizeof(FloatRegBits) / size);
815 int items = numItems(size);
816 uint64_t result = FpDestReg.uqw;
817
818 for (int i = 0; i < items; i++) {
819 int hiIndex = (i + 1) * sizeBits - 1;
820 int loIndex = (i + 0) * sizeBits;
821 uint64_t arg1Bits = bits(FpSrcReg1.uqw, hiIndex, loIndex);
822 uint64_t arg2Bits = bits(FpSrcReg2.uqw, hiIndex, loIndex);
823 uint64_t resBits;

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

853 double d;
854 uint64_t i;
855 };
856
857 assert(srcSize == destSize);
858 int size = srcSize;
859 int sizeBits = size * 8;
860 assert(srcSize == 4 || srcSize == 8);
816 uint64_t result = FpDestReg.uqw;
817
818 for (int i = 0; i < items; i++) {
819 int hiIndex = (i + 1) * sizeBits - 1;
820 int loIndex = (i + 0) * sizeBits;
821 uint64_t arg1Bits = bits(FpSrcReg1.uqw, hiIndex, loIndex);
822 uint64_t arg2Bits = bits(FpSrcReg2.uqw, hiIndex, loIndex);
823 uint64_t resBits;

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

853 double d;
854 uint64_t i;
855 };
856
857 assert(srcSize == destSize);
858 int size = srcSize;
859 int sizeBits = size * 8;
860 assert(srcSize == 4 || srcSize == 8);
861 int items = (ext & 0x1) ? 1: (sizeof(FloatRegBits) / size);
861 int items = numItems(size);
862 uint64_t result = FpDestReg.uqw;
863
864 for (int i = 0; i < items; i++) {
865 int hiIndex = (i + 1) * sizeBits - 1;
866 int loIndex = (i + 0) * sizeBits;
867 uint64_t arg1Bits = bits(FpSrcReg1.uqw, hiIndex, loIndex);
868 uint64_t arg2Bits = bits(FpSrcReg2.uqw, hiIndex, loIndex);
869 uint64_t resBits;

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

899 double d;
900 uint64_t i;
901 };
902
903 assert(srcSize == destSize);
904 int size = srcSize;
905 int sizeBits = size * 8;
906 assert(srcSize == 4 || srcSize == 8);
862 uint64_t result = FpDestReg.uqw;
863
864 for (int i = 0; i < items; i++) {
865 int hiIndex = (i + 1) * sizeBits - 1;
866 int loIndex = (i + 0) * sizeBits;
867 uint64_t arg1Bits = bits(FpSrcReg1.uqw, hiIndex, loIndex);
868 uint64_t arg2Bits = bits(FpSrcReg2.uqw, hiIndex, loIndex);
869 uint64_t resBits;

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

899 double d;
900 uint64_t i;
901 };
902
903 assert(srcSize == destSize);
904 int size = srcSize;
905 int sizeBits = size * 8;
906 assert(srcSize == 4 || srcSize == 8);
907 int items = (ext & 0x1) ? 1: (sizeof(FloatRegBits) / size);
907 int items = numItems(size);
908 uint64_t result = FpDestReg.uqw;
909
910 for (int i = 0; i < items; i++) {
911 int hiIndex = (i + 1) * sizeBits - 1;
912 int loIndex = (i + 0) * sizeBits;
913 uint64_t arg1Bits = bits(FpSrcReg1.uqw, hiIndex, loIndex);
914 uint64_t arg2Bits = bits(FpSrcReg2.uqw, hiIndex, loIndex);
915 uint64_t resBits;

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

933 FpDestReg.uqw = result;
934 '''
935
936 class Maddi(MediaOp):
937 code = '''
938 assert(srcSize == destSize);
939 int size = srcSize;
940 int sizeBits = size * 8;
908 uint64_t result = FpDestReg.uqw;
909
910 for (int i = 0; i < items; i++) {
911 int hiIndex = (i + 1) * sizeBits - 1;
912 int loIndex = (i + 0) * sizeBits;
913 uint64_t arg1Bits = bits(FpSrcReg1.uqw, hiIndex, loIndex);
914 uint64_t arg2Bits = bits(FpSrcReg2.uqw, hiIndex, loIndex);
915 uint64_t resBits;

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

933 FpDestReg.uqw = result;
934 '''
935
936 class Maddi(MediaOp):
937 code = '''
938 assert(srcSize == destSize);
939 int size = srcSize;
940 int sizeBits = size * 8;
941 int items = (ext & 0x1) ? 1: (sizeof(FloatRegBits) / size);
941 int items = numItems(size);
942 uint64_t result = FpDestReg.uqw;
943
944 for (int i = 0; i < items; i++) {
945 int hiIndex = (i + 1) * sizeBits - 1;
946 int loIndex = (i + 0) * sizeBits;
947 uint64_t arg1Bits = bits(FpSrcReg1.uqw, hiIndex, loIndex);
948 uint64_t arg2Bits = bits(FpSrcReg2.uqw, hiIndex, loIndex);
949 uint64_t resBits = arg1Bits + arg2Bits;

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

968 FpDestReg.uqw = result;
969 '''
970
971 class Msubi(MediaOp):
972 code = '''
973 assert(srcSize == destSize);
974 int size = srcSize;
975 int sizeBits = size * 8;
942 uint64_t result = FpDestReg.uqw;
943
944 for (int i = 0; i < items; i++) {
945 int hiIndex = (i + 1) * sizeBits - 1;
946 int loIndex = (i + 0) * sizeBits;
947 uint64_t arg1Bits = bits(FpSrcReg1.uqw, hiIndex, loIndex);
948 uint64_t arg2Bits = bits(FpSrcReg2.uqw, hiIndex, loIndex);
949 uint64_t resBits = arg1Bits + arg2Bits;

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

968 FpDestReg.uqw = result;
969 '''
970
971 class Msubi(MediaOp):
972 code = '''
973 assert(srcSize == destSize);
974 int size = srcSize;
975 int sizeBits = size * 8;
976 int items = (ext & 0x1) ? 1: (sizeof(FloatRegBits) / size);
976 int items = numItems(size);
977 uint64_t result = FpDestReg.uqw;
978
979 for (int i = 0; i < items; i++) {
980 int hiIndex = (i + 1) * sizeBits - 1;
981 int loIndex = (i + 0) * sizeBits;
982 uint64_t arg1Bits = bits(FpSrcReg1.uqw, hiIndex, loIndex);
983 uint64_t arg2Bits = bits(FpSrcReg2.uqw, hiIndex, loIndex);
984 uint64_t resBits = arg1Bits - arg2Bits;

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

1008 '''
1009
1010 class Mmuli(MediaOp):
1011 code = '''
1012 int srcBits = srcSize * 8;
1013 int destBits = destSize * 8;
1014 assert(destBits <= 64);
1015 assert(destSize >= srcSize);
977 uint64_t result = FpDestReg.uqw;
978
979 for (int i = 0; i < items; i++) {
980 int hiIndex = (i + 1) * sizeBits - 1;
981 int loIndex = (i + 0) * sizeBits;
982 uint64_t arg1Bits = bits(FpSrcReg1.uqw, hiIndex, loIndex);
983 uint64_t arg2Bits = bits(FpSrcReg2.uqw, hiIndex, loIndex);
984 uint64_t resBits = arg1Bits - arg2Bits;

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

1008 '''
1009
1010 class Mmuli(MediaOp):
1011 code = '''
1012 int srcBits = srcSize * 8;
1013 int destBits = destSize * 8;
1014 assert(destBits <= 64);
1015 assert(destSize >= srcSize);
1016 int items = (ext & 0x1) ? 1: (sizeof(FloatRegBits) / destSize);
1016 int items = numItems(destSize);
1017 uint64_t result = FpDestReg.uqw;
1018
1019 for (int i = 0; i < items; i++) {
1020 int offset = 0;
1021 if (ext & 16) {
1022 if (ext & 32)
1023 offset = i * (destBits - srcBits);
1024 else

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

1053 FpDestReg.uqw = result;
1054 '''
1055
1056 class Mavg(MediaOp):
1057 code = '''
1058 assert(srcSize == destSize);
1059 int size = srcSize;
1060 int sizeBits = size * 8;
1017 uint64_t result = FpDestReg.uqw;
1018
1019 for (int i = 0; i < items; i++) {
1020 int offset = 0;
1021 if (ext & 16) {
1022 if (ext & 32)
1023 offset = i * (destBits - srcBits);
1024 else

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

1053 FpDestReg.uqw = result;
1054 '''
1055
1056 class Mavg(MediaOp):
1057 code = '''
1058 assert(srcSize == destSize);
1059 int size = srcSize;
1060 int sizeBits = size * 8;
1061 int items = (ext & 0x1) ? 1: (sizeof(FloatRegBits) / size);
1061 int items = numItems(size);
1062 uint64_t result = FpDestReg.uqw;
1063
1064 for (int i = 0; i < items; i++) {
1065 int hiIndex = (i + 1) * sizeBits - 1;
1066 int loIndex = (i + 0) * sizeBits;
1067 uint64_t arg1Bits = bits(FpSrcReg1.uqw, hiIndex, loIndex);
1068 uint64_t arg2Bits = bits(FpSrcReg2.uqw, hiIndex, loIndex);
1069 uint64_t resBits = (arg1Bits + arg2Bits + 1) / 2;

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

1093 '''
1094
1095 class Msrl(MediaOp):
1096 code = '''
1097
1098 assert(srcSize == destSize);
1099 int size = srcSize;
1100 int sizeBits = size * 8;
1062 uint64_t result = FpDestReg.uqw;
1063
1064 for (int i = 0; i < items; i++) {
1065 int hiIndex = (i + 1) * sizeBits - 1;
1066 int loIndex = (i + 0) * sizeBits;
1067 uint64_t arg1Bits = bits(FpSrcReg1.uqw, hiIndex, loIndex);
1068 uint64_t arg2Bits = bits(FpSrcReg2.uqw, hiIndex, loIndex);
1069 uint64_t resBits = (arg1Bits + arg2Bits + 1) / 2;

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

1093 '''
1094
1095 class Msrl(MediaOp):
1096 code = '''
1097
1098 assert(srcSize == destSize);
1099 int size = srcSize;
1100 int sizeBits = size * 8;
1101 int items = (ext & 0x1) ? 1: (sizeof(FloatRegBits) / size);
1101 int items = numItems(size);
1102 uint64_t shiftAmt = op2.uqw;
1103 uint64_t result = FpDestReg.uqw;
1104
1105 for (int i = 0; i < items; i++) {
1106 int hiIndex = (i + 1) * sizeBits - 1;
1107 int loIndex = (i + 0) * sizeBits;
1108 uint64_t arg1Bits = bits(FpSrcReg1.uqw, hiIndex, loIndex);
1109 uint64_t resBits;

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

1120 '''
1121
1122 class Msra(MediaOp):
1123 code = '''
1124
1125 assert(srcSize == destSize);
1126 int size = srcSize;
1127 int sizeBits = size * 8;
1102 uint64_t shiftAmt = op2.uqw;
1103 uint64_t result = FpDestReg.uqw;
1104
1105 for (int i = 0; i < items; i++) {
1106 int hiIndex = (i + 1) * sizeBits - 1;
1107 int loIndex = (i + 0) * sizeBits;
1108 uint64_t arg1Bits = bits(FpSrcReg1.uqw, hiIndex, loIndex);
1109 uint64_t resBits;

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

1120 '''
1121
1122 class Msra(MediaOp):
1123 code = '''
1124
1125 assert(srcSize == destSize);
1126 int size = srcSize;
1127 int sizeBits = size * 8;
1128 int items = (ext & 0x1) ? 1: (sizeof(FloatRegBits) / size);
1128 int items = numItems(size);
1129 uint64_t shiftAmt = op2.uqw;
1130 uint64_t result = FpDestReg.uqw;
1131
1132 for (int i = 0; i < items; i++) {
1133 int hiIndex = (i + 1) * sizeBits - 1;
1134 int loIndex = (i + 0) * sizeBits;
1135 uint64_t arg1Bits = bits(FpSrcReg1.uqw, hiIndex, loIndex);
1136 uint64_t resBits;

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

1151 '''
1152
1153 class Msll(MediaOp):
1154 code = '''
1155
1156 assert(srcSize == destSize);
1157 int size = srcSize;
1158 int sizeBits = size * 8;
1129 uint64_t shiftAmt = op2.uqw;
1130 uint64_t result = FpDestReg.uqw;
1131
1132 for (int i = 0; i < items; i++) {
1133 int hiIndex = (i + 1) * sizeBits - 1;
1134 int loIndex = (i + 0) * sizeBits;
1135 uint64_t arg1Bits = bits(FpSrcReg1.uqw, hiIndex, loIndex);
1136 uint64_t resBits;

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

1151 '''
1152
1153 class Msll(MediaOp):
1154 code = '''
1155
1156 assert(srcSize == destSize);
1157 int size = srcSize;
1158 int sizeBits = size * 8;
1159 int items = (ext & 0x1) ? 1: (sizeof(FloatRegBits) / size);
1159 int items = numItems(size);
1160 uint64_t shiftAmt = op2.uqw;
1161 uint64_t result = FpDestReg.uqw;
1162
1163 for (int i = 0; i < items; i++) {
1164 int hiIndex = (i + 1) * sizeBits - 1;
1165 int loIndex = (i + 0) * sizeBits;
1166 uint64_t arg1Bits = bits(FpSrcReg1.uqw, hiIndex, loIndex);
1167 uint64_t resBits;

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

1196 assert(destSize == 4 || destSize == 8);
1197 assert(srcSize == 4 || srcSize == 8);
1198 int srcSizeBits = srcSize * 8;
1199 int destSizeBits = destSize * 8;
1200 int items;
1201 int srcStart = 0;
1202 int destStart = 0;
1203 if (srcSize == 2 * destSize) {
1160 uint64_t shiftAmt = op2.uqw;
1161 uint64_t result = FpDestReg.uqw;
1162
1163 for (int i = 0; i < items; i++) {
1164 int hiIndex = (i + 1) * sizeBits - 1;
1165 int loIndex = (i + 0) * sizeBits;
1166 uint64_t arg1Bits = bits(FpSrcReg1.uqw, hiIndex, loIndex);
1167 uint64_t resBits;

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

1196 assert(destSize == 4 || destSize == 8);
1197 assert(srcSize == 4 || srcSize == 8);
1198 int srcSizeBits = srcSize * 8;
1199 int destSizeBits = destSize * 8;
1200 int items;
1201 int srcStart = 0;
1202 int destStart = 0;
1203 if (srcSize == 2 * destSize) {
1204 items = (ext & 0x1) ? 1: sizeof(FloatRegBits) / srcSize;
1204 items = numItems(srcSize);
1205 if (ext & 0x2)
1206 destStart = destSizeBits * items;
1207 } else if (destSize == 2 * srcSize) {
1205 if (ext & 0x2)
1206 destStart = destSizeBits * items;
1207 } else if (destSize == 2 * srcSize) {
1208 items = (ext & 0x1) ? 1: sizeof(FloatRegBits) / destSize;
1208 items = numItems(destSize);
1209 if (ext & 0x2)
1210 srcStart = srcSizeBits * items;
1211 } else {
1209 if (ext & 0x2)
1210 srcStart = srcSizeBits * items;
1211 } else {
1212 items = (ext & 0x1) ? 1: sizeof(FloatRegBits) / destSize;
1212 items = numItems(destSize);
1213 }
1214 uint64_t result = FpDestReg.uqw;
1215
1216 for (int i = 0; i < items; i++) {
1217 int srcHiIndex = srcStart + (i + 1) * srcSizeBits - 1;
1218 int srcLoIndex = srcStart + (i + 0) * srcSizeBits;
1219 uint64_t argBits = bits(FpSrcReg1.uqw, srcHiIndex, srcLoIndex);
1220 double arg;

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

1268 assert(destSize == 4 || destSize == 8);
1269 assert(srcSize == 4 || srcSize == 8);
1270 int srcSizeBits = srcSize * 8;
1271 int destSizeBits = destSize * 8;
1272 int items;
1273 int srcStart = 0;
1274 int destStart = 0;
1275 if (srcSize == 2 * destSize) {
1213 }
1214 uint64_t result = FpDestReg.uqw;
1215
1216 for (int i = 0; i < items; i++) {
1217 int srcHiIndex = srcStart + (i + 1) * srcSizeBits - 1;
1218 int srcLoIndex = srcStart + (i + 0) * srcSizeBits;
1219 uint64_t argBits = bits(FpSrcReg1.uqw, srcHiIndex, srcLoIndex);
1220 double arg;

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

1268 assert(destSize == 4 || destSize == 8);
1269 assert(srcSize == 4 || srcSize == 8);
1270 int srcSizeBits = srcSize * 8;
1271 int destSizeBits = destSize * 8;
1272 int items;
1273 int srcStart = 0;
1274 int destStart = 0;
1275 if (srcSize == 2 * destSize) {
1276 items = (ext & 0x1) ? 1: sizeof(FloatRegBits) / srcSize;
1276 items = numItems(srcSize);
1277 if (ext & 0x2)
1278 destStart = destSizeBits * items;
1279 } else if (destSize == 2 * srcSize) {
1277 if (ext & 0x2)
1278 destStart = destSizeBits * items;
1279 } else if (destSize == 2 * srcSize) {
1280 items = (ext & 0x1) ? 1: sizeof(FloatRegBits) / destSize;
1280 items = numItems(destSize);
1281 if (ext & 0x2)
1282 srcStart = srcSizeBits * items;
1283 } else {
1281 if (ext & 0x2)
1282 srcStart = srcSizeBits * items;
1283 } else {
1284 items = (ext & 0x1) ? 1: sizeof(FloatRegBits) / destSize;
1284 items = numItems(destSize);
1285 }
1286 uint64_t result = FpDestReg.uqw;
1287
1288 for (int i = 0; i < items; i++) {
1289 int srcHiIndex = srcStart + (i + 1) * srcSizeBits - 1;
1290 int srcLoIndex = srcStart + (i + 0) * srcSizeBits;
1291 uint64_t argBits = bits(FpSrcReg1.uqw, srcHiIndex, srcLoIndex);
1292

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

1329 assert(destSize == 4 || destSize == 8);
1330 assert(srcSize == 4 || srcSize == 8);
1331 int srcSizeBits = srcSize * 8;
1332 int destSizeBits = destSize * 8;
1333 int items;
1334 int srcStart = 0;
1335 int destStart = 0;
1336 if (srcSize == 2 * destSize) {
1285 }
1286 uint64_t result = FpDestReg.uqw;
1287
1288 for (int i = 0; i < items; i++) {
1289 int srcHiIndex = srcStart + (i + 1) * srcSizeBits - 1;
1290 int srcLoIndex = srcStart + (i + 0) * srcSizeBits;
1291 uint64_t argBits = bits(FpSrcReg1.uqw, srcHiIndex, srcLoIndex);
1292

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

1329 assert(destSize == 4 || destSize == 8);
1330 assert(srcSize == 4 || srcSize == 8);
1331 int srcSizeBits = srcSize * 8;
1332 int destSizeBits = destSize * 8;
1333 int items;
1334 int srcStart = 0;
1335 int destStart = 0;
1336 if (srcSize == 2 * destSize) {
1337 items = (ext & 0x1) ? 1: sizeof(FloatRegBits) / srcSize;
1337 items = numItems(srcSize);
1338 if (ext & 0x2)
1339 destStart = destSizeBits * items;
1340 } else if (destSize == 2 * srcSize) {
1338 if (ext & 0x2)
1339 destStart = destSizeBits * items;
1340 } else if (destSize == 2 * srcSize) {
1341 items = (ext & 0x1) ? 1: sizeof(FloatRegBits) / destSize;
1341 items = numItems(destSize);
1342 if (ext & 0x2)
1343 srcStart = srcSizeBits * items;
1344 } else {
1342 if (ext & 0x2)
1343 srcStart = srcSizeBits * items;
1344 } else {
1345 items = (ext & 0x1) ? 1: sizeof(FloatRegBits) / destSize;
1345 items = numItems(destSize);
1346 }
1347 uint64_t result = FpDestReg.uqw;
1348
1349 for (int i = 0; i < items; i++) {
1350 int srcHiIndex = srcStart + (i + 1) * srcSizeBits - 1;
1351 int srcLoIndex = srcStart + (i + 0) * srcSizeBits;
1352 uint64_t argBits = bits(FpSrcReg1.uqw, srcHiIndex, srcLoIndex);
1353 double arg;

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

1388 {
1389 double d;
1390 uint64_t i;
1391 };
1392
1393 assert(srcSize == destSize);
1394 int size = srcSize;
1395 int sizeBits = size * 8;
1346 }
1347 uint64_t result = FpDestReg.uqw;
1348
1349 for (int i = 0; i < items; i++) {
1350 int srcHiIndex = srcStart + (i + 1) * srcSizeBits - 1;
1351 int srcLoIndex = srcStart + (i + 0) * srcSizeBits;
1352 uint64_t argBits = bits(FpSrcReg1.uqw, srcHiIndex, srcLoIndex);
1353 double arg;

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

1388 {
1389 double d;
1390 uint64_t i;
1391 };
1392
1393 assert(srcSize == destSize);
1394 int size = srcSize;
1395 int sizeBits = size * 8;
1396 int items = (ext & 0x1) ? 1: (sizeof(FloatRegBits) / size);
1396 int items = numItems(size);
1397 uint64_t result = FpDestReg.uqw;
1398
1399 for (int i = 0; i < items; i++) {
1400 int hiIndex = (i + 1) * sizeBits - 1;
1401 int loIndex = (i + 0) * sizeBits;
1402 uint64_t arg1Bits = bits(FpSrcReg1.uqw, hiIndex, loIndex);
1403 int64_t arg1 = arg1Bits |
1404 (0 - (arg1Bits & (ULL(1) << (sizeBits - 1))));

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

1427 {
1428 double d;
1429 uint64_t i;
1430 };
1431
1432 assert(srcSize == destSize);
1433 int size = srcSize;
1434 int sizeBits = size * 8;
1397 uint64_t result = FpDestReg.uqw;
1398
1399 for (int i = 0; i < items; i++) {
1400 int hiIndex = (i + 1) * sizeBits - 1;
1401 int loIndex = (i + 0) * sizeBits;
1402 uint64_t arg1Bits = bits(FpSrcReg1.uqw, hiIndex, loIndex);
1403 int64_t arg1 = arg1Bits |
1404 (0 - (arg1Bits & (ULL(1) << (sizeBits - 1))));

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

1427 {
1428 double d;
1429 uint64_t i;
1430 };
1431
1432 assert(srcSize == destSize);
1433 int size = srcSize;
1434 int sizeBits = size * 8;
1435 int items = (ext & 0x8) ? 1: (sizeof(FloatRegBits) / size);
1435 int items = numItems(size);
1436 uint64_t result = FpDestReg.uqw;
1437
1438 for (int i = 0; i < items; i++) {
1439 int hiIndex = (i + 1) * sizeBits - 1;
1440 int loIndex = (i + 0) * sizeBits;
1441 uint64_t arg1Bits = bits(FpSrcReg1.uqw, hiIndex, loIndex);
1442 uint64_t arg2Bits = bits(FpSrcReg2.uqw, hiIndex, loIndex);
1443 double arg1, arg2;

--- 112 unchanged lines hidden ---
1436 uint64_t result = FpDestReg.uqw;
1437
1438 for (int i = 0; i < items; i++) {
1439 int hiIndex = (i + 1) * sizeBits - 1;
1440 int loIndex = (i + 0) * sizeBits;
1441 uint64_t arg1Bits = bits(FpSrcReg1.uqw, hiIndex, loIndex);
1442 uint64_t arg2Bits = bits(FpSrcReg2.uqw, hiIndex, loIndex);
1443 double arg1, arg2;

--- 112 unchanged lines hidden ---