decoder.isa (12444:06e9f1927cc7) | decoder.isa (12445:cda4ad06d1ff) |
---|---|
1// -*- mode:c++ -*- 2 3// Copyright (c) 2015 RISC-V Foundation 4// Copyright (c) 2017 The University of Virginia 5// All rights reserved. 6// 7// Redistribution and use in source and binary forms, with or without 8// modification, are permitted provided that the following conditions are --- 352 unchanged lines hidden (view full) --- 361 }}); 362 } 363 } 364 365 0x01: decode FUNCT3 { 366 format Load { 367 0x2: flw({{ 368 Fd_bits = (uint64_t)Mem_uw; | 1// -*- mode:c++ -*- 2 3// Copyright (c) 2015 RISC-V Foundation 4// Copyright (c) 2017 The University of Virginia 5// All rights reserved. 6// 7// Redistribution and use in source and binary forms, with or without 8// modification, are permitted provided that the following conditions are --- 352 unchanged lines hidden (view full) --- 361 }}); 362 } 363 } 364 365 0x01: decode FUNCT3 { 366 format Load { 367 0x2: flw({{ 368 Fd_bits = (uint64_t)Mem_uw; |
369 }}); | 369 }}, inst_flags=FloatMemReadOp); |
370 0x3: fld({{ 371 Fd_bits = Mem; | 370 0x3: fld({{ 371 Fd_bits = Mem; |
372 }}); | 372 }}, inst_flags=FloatMemReadOp); |
373 } 374 } 375 376 0x03: decode FUNCT3 { 377 format IOp { 378 0x0: fence({{ 379 }}, uint64_t, IsNonSpeculative, IsMemBarrier, No_OpClass); 380 0x1: fence_i({{ --- 74 unchanged lines hidden (view full) --- 455 }}); 456 } 457 } 458 459 0x09: decode FUNCT3 { 460 format Store { 461 0x2: fsw({{ 462 Mem_uw = (uint32_t)Fs2_bits; | 373 } 374 } 375 376 0x03: decode FUNCT3 { 377 format IOp { 378 0x0: fence({{ 379 }}, uint64_t, IsNonSpeculative, IsMemBarrier, No_OpClass); 380 0x1: fence_i({{ --- 74 unchanged lines hidden (view full) --- 455 }}); 456 } 457 } 458 459 0x09: decode FUNCT3 { 460 format Store { 461 0x2: fsw({{ 462 Mem_uw = (uint32_t)Fs2_bits; |
463 }}); | 463 }}, inst_flags=FloatMemWriteOp); |
464 0x3: fsd({{ 465 Mem_ud = Fs2_bits; | 464 0x3: fsd({{ 465 Mem_ud = Fs2_bits; |
466 }}); | 466 }}, inst_flags=FloatMemWriteOp); |
467 } 468 } 469 470 0x0b: decode FUNCT3 { 471 0x2: decode AMOFUNCT { 472 0x2: LoadReserved::lr_w({{ 473 Rd_sd = Mem_sw; 474 }}, mem_flags=LLSC); --- 326 unchanged lines hidden (view full) --- 801 fd = -numeric_limits<float>::infinity(); 802 } else { // Fs3_sf is infinity 803 fd = fs3; 804 } 805 } else { 806 fd = fs1*fs2 + fs3; 807 } 808 Fd_bits = (uint64_t)reinterpret_cast<uint32_t&>(fd); | 467 } 468 } 469 470 0x0b: decode FUNCT3 { 471 0x2: decode AMOFUNCT { 472 0x2: LoadReserved::lr_w({{ 473 Rd_sd = Mem_sw; 474 }}, mem_flags=LLSC); --- 326 unchanged lines hidden (view full) --- 801 fd = -numeric_limits<float>::infinity(); 802 } else { // Fs3_sf is infinity 803 fd = fs3; 804 } 805 } else { 806 fd = fs1*fs2 + fs3; 807 } 808 Fd_bits = (uint64_t)reinterpret_cast<uint32_t&>(fd); |
809 }}, FloatMultOp); | 809 }}, FloatMultAccOp); |
810 0x1: fmadd_d({{ 811 if (std::isnan(Fs1) || std::isnan(Fs2) || 812 std::isnan(Fs3)) { 813 if (issignalingnan(Fs1) || issignalingnan(Fs2) 814 || issignalingnan(Fs3)) { 815 FFLAGS |= FloatInvalid; 816 } 817 Fd = numeric_limits<double>::quiet_NaN(); --- 6 unchanged lines hidden (view full) --- 824 && !std::isinf(Fs3)) { 825 Fd = -numeric_limits<double>::infinity(); 826 } else { 827 Fd = Fs3; 828 } 829 } else { 830 Fd = Fs1*Fs2 + Fs3; 831 } | 810 0x1: fmadd_d({{ 811 if (std::isnan(Fs1) || std::isnan(Fs2) || 812 std::isnan(Fs3)) { 813 if (issignalingnan(Fs1) || issignalingnan(Fs2) 814 || issignalingnan(Fs3)) { 815 FFLAGS |= FloatInvalid; 816 } 817 Fd = numeric_limits<double>::quiet_NaN(); --- 6 unchanged lines hidden (view full) --- 824 && !std::isinf(Fs3)) { 825 Fd = -numeric_limits<double>::infinity(); 826 } else { 827 Fd = Fs3; 828 } 829 } else { 830 Fd = Fs1*Fs2 + Fs3; 831 } |
832 }}, FloatMultOp); | 832 }}, FloatMultAccOp); |
833 } 834 0x11: decode FUNCT2 { 835 0x0: fmsub_s({{ 836 uint32_t temp; 837 float fs1 = reinterpret_cast<float&>(temp = Fs1_bits); 838 float fs2 = reinterpret_cast<float&>(temp = Fs2_bits); 839 float fs3 = reinterpret_cast<float&>(temp = Fs3_bits); 840 float fd; --- 15 unchanged lines hidden (view full) --- 856 fd = -numeric_limits<float>::infinity(); 857 } else { // Fs3_sf is infinity 858 fd = -fs3; 859 } 860 } else { 861 fd = fs1*fs2 - fs3; 862 } 863 Fd_bits = (uint64_t)reinterpret_cast<uint32_t&>(fd); | 833 } 834 0x11: decode FUNCT2 { 835 0x0: fmsub_s({{ 836 uint32_t temp; 837 float fs1 = reinterpret_cast<float&>(temp = Fs1_bits); 838 float fs2 = reinterpret_cast<float&>(temp = Fs2_bits); 839 float fs3 = reinterpret_cast<float&>(temp = Fs3_bits); 840 float fd; --- 15 unchanged lines hidden (view full) --- 856 fd = -numeric_limits<float>::infinity(); 857 } else { // Fs3_sf is infinity 858 fd = -fs3; 859 } 860 } else { 861 fd = fs1*fs2 - fs3; 862 } 863 Fd_bits = (uint64_t)reinterpret_cast<uint32_t&>(fd); |
864 }}, FloatMultOp); | 864 }}, FloatMultAccOp); |
865 0x1: fmsub_d({{ 866 if (std::isnan(Fs1) || std::isnan(Fs2) || 867 std::isnan(Fs3)) { 868 if (issignalingnan(Fs1) || issignalingnan(Fs2) 869 || issignalingnan(Fs3)) { 870 FFLAGS |= FloatInvalid; 871 } 872 Fd = numeric_limits<double>::quiet_NaN(); --- 6 unchanged lines hidden (view full) --- 879 && !std::isinf(Fs3)) { 880 Fd = -numeric_limits<double>::infinity(); 881 } else { 882 Fd = -Fs3; 883 } 884 } else { 885 Fd = Fs1*Fs2 - Fs3; 886 } | 865 0x1: fmsub_d({{ 866 if (std::isnan(Fs1) || std::isnan(Fs2) || 867 std::isnan(Fs3)) { 868 if (issignalingnan(Fs1) || issignalingnan(Fs2) 869 || issignalingnan(Fs3)) { 870 FFLAGS |= FloatInvalid; 871 } 872 Fd = numeric_limits<double>::quiet_NaN(); --- 6 unchanged lines hidden (view full) --- 879 && !std::isinf(Fs3)) { 880 Fd = -numeric_limits<double>::infinity(); 881 } else { 882 Fd = -Fs3; 883 } 884 } else { 885 Fd = Fs1*Fs2 - Fs3; 886 } |
887 }}, FloatMultOp); | 887 }}, FloatMultAccOp); |
888 } 889 0x12: decode FUNCT2 { 890 0x0: fnmsub_s({{ 891 uint32_t temp; 892 float fs1 = reinterpret_cast<float&>(temp = Fs1_bits); 893 float fs2 = reinterpret_cast<float&>(temp = Fs2_bits); 894 float fs3 = reinterpret_cast<float&>(temp = Fs3_bits); 895 float fd; --- 15 unchanged lines hidden (view full) --- 911 fd = numeric_limits<float>::infinity(); 912 } else { // Fs3_sf is infinity 913 fd = fs3; 914 } 915 } else { 916 fd = -(fs1*fs2 - fs3); 917 } 918 Fd_bits = (uint64_t)reinterpret_cast<uint32_t&>(fd); | 888 } 889 0x12: decode FUNCT2 { 890 0x0: fnmsub_s({{ 891 uint32_t temp; 892 float fs1 = reinterpret_cast<float&>(temp = Fs1_bits); 893 float fs2 = reinterpret_cast<float&>(temp = Fs2_bits); 894 float fs3 = reinterpret_cast<float&>(temp = Fs3_bits); 895 float fd; --- 15 unchanged lines hidden (view full) --- 911 fd = numeric_limits<float>::infinity(); 912 } else { // Fs3_sf is infinity 913 fd = fs3; 914 } 915 } else { 916 fd = -(fs1*fs2 - fs3); 917 } 918 Fd_bits = (uint64_t)reinterpret_cast<uint32_t&>(fd); |
919 }}, FloatMultOp); | 919 }}, FloatMultAccOp); |
920 0x1: fnmsub_d({{ 921 if (std::isnan(Fs1) || std::isnan(Fs2) || 922 std::isnan(Fs3)) { 923 if (issignalingnan(Fs1) || issignalingnan(Fs2) 924 || issignalingnan(Fs3)) { 925 FFLAGS |= FloatInvalid; 926 } 927 Fd = numeric_limits<double>::quiet_NaN(); --- 6 unchanged lines hidden (view full) --- 934 && !std::isinf(Fs3)) { 935 Fd = numeric_limits<double>::infinity(); 936 } else { 937 Fd = Fs3; 938 } 939 } else { 940 Fd = -(Fs1*Fs2 - Fs3); 941 } | 920 0x1: fnmsub_d({{ 921 if (std::isnan(Fs1) || std::isnan(Fs2) || 922 std::isnan(Fs3)) { 923 if (issignalingnan(Fs1) || issignalingnan(Fs2) 924 || issignalingnan(Fs3)) { 925 FFLAGS |= FloatInvalid; 926 } 927 Fd = numeric_limits<double>::quiet_NaN(); --- 6 unchanged lines hidden (view full) --- 934 && !std::isinf(Fs3)) { 935 Fd = numeric_limits<double>::infinity(); 936 } else { 937 Fd = Fs3; 938 } 939 } else { 940 Fd = -(Fs1*Fs2 - Fs3); 941 } |
942 }}, FloatMultOp); | 942 }}, FloatMultAccOp); |
943 } 944 0x13: decode FUNCT2 { 945 0x0: fnmadd_s({{ 946 uint32_t temp; 947 float fs1 = reinterpret_cast<float&>(temp = Fs1_bits); 948 float fs2 = reinterpret_cast<float&>(temp = Fs2_bits); 949 float fs3 = reinterpret_cast<float&>(temp = Fs3_bits); 950 float fd; --- 15 unchanged lines hidden (view full) --- 966 fd = numeric_limits<float>::infinity(); 967 } else { // Fs3_sf is infinity 968 fd = -fs3; 969 } 970 } else { 971 fd = -(fs1*fs2 + fs3); 972 } 973 Fd_bits = (uint64_t)reinterpret_cast<uint32_t&>(fd); | 943 } 944 0x13: decode FUNCT2 { 945 0x0: fnmadd_s({{ 946 uint32_t temp; 947 float fs1 = reinterpret_cast<float&>(temp = Fs1_bits); 948 float fs2 = reinterpret_cast<float&>(temp = Fs2_bits); 949 float fs3 = reinterpret_cast<float&>(temp = Fs3_bits); 950 float fd; --- 15 unchanged lines hidden (view full) --- 966 fd = numeric_limits<float>::infinity(); 967 } else { // Fs3_sf is infinity 968 fd = -fs3; 969 } 970 } else { 971 fd = -(fs1*fs2 + fs3); 972 } 973 Fd_bits = (uint64_t)reinterpret_cast<uint32_t&>(fd); |
974 }}, FloatMultOp); | 974 }}, FloatMultAccOp); |
975 0x1: fnmadd_d({{ 976 if (std::isnan(Fs1) || std::isnan(Fs2) || 977 std::isnan(Fs3)) { 978 if (issignalingnan(Fs1) || issignalingnan(Fs2) 979 || issignalingnan(Fs3)) { 980 FFLAGS |= FloatInvalid; 981 } 982 Fd = numeric_limits<double>::quiet_NaN(); --- 6 unchanged lines hidden (view full) --- 989 && !std::isinf(Fs3)) { 990 Fd = numeric_limits<double>::infinity(); 991 } else { 992 Fd = -Fs3; 993 } 994 } else { 995 Fd = -(Fs1*Fs2 + Fs3); 996 } | 975 0x1: fnmadd_d({{ 976 if (std::isnan(Fs1) || std::isnan(Fs2) || 977 std::isnan(Fs3)) { 978 if (issignalingnan(Fs1) || issignalingnan(Fs2) 979 || issignalingnan(Fs3)) { 980 FFLAGS |= FloatInvalid; 981 } 982 Fd = numeric_limits<double>::quiet_NaN(); --- 6 unchanged lines hidden (view full) --- 989 && !std::isinf(Fs3)) { 990 Fd = numeric_limits<double>::infinity(); 991 } else { 992 Fd = -Fs3; 993 } 994 } else { 995 Fd = -(Fs1*Fs2 + Fs3); 996 } |
997 }}, FloatMultOp); | 997 }}, FloatMultAccOp); |
998 } 999 0x14: decode FUNCT7 { 1000 0x0: fadd_s({{ 1001 uint32_t temp; 1002 float fs1 = reinterpret_cast<float&>(temp = Fs1_bits); 1003 float fs2 = reinterpret_cast<float&>(temp = Fs2_bits); 1004 float fd; 1005 --- 104 unchanged lines hidden (view full) --- 1110 1111 if (issignalingnan(fs1)) { 1112 fd = numeric_limits<float>::signaling_NaN(); 1113 feclearexcept(FE_INVALID); 1114 } else { 1115 fd = copysign(fs1, fs2); 1116 } 1117 Fd_bits = (uint64_t)reinterpret_cast<uint32_t&>(fd); | 998 } 999 0x14: decode FUNCT7 { 1000 0x0: fadd_s({{ 1001 uint32_t temp; 1002 float fs1 = reinterpret_cast<float&>(temp = Fs1_bits); 1003 float fs2 = reinterpret_cast<float&>(temp = Fs2_bits); 1004 float fd; 1005 --- 104 unchanged lines hidden (view full) --- 1110 1111 if (issignalingnan(fs1)) { 1112 fd = numeric_limits<float>::signaling_NaN(); 1113 feclearexcept(FE_INVALID); 1114 } else { 1115 fd = copysign(fs1, fs2); 1116 } 1117 Fd_bits = (uint64_t)reinterpret_cast<uint32_t&>(fd); |
1118 }}); | 1118 }}, FloatMiscOp); |
1119 0x1: fsgnjn_s({{ 1120 uint32_t temp; 1121 float fs1 = reinterpret_cast<float&>(temp = Fs1_bits); 1122 float fs2 = reinterpret_cast<float&>(temp = Fs2_bits); 1123 float fd; 1124 1125 if (issignalingnan(fs1)) { 1126 fd = numeric_limits<float>::signaling_NaN(); 1127 feclearexcept(FE_INVALID); 1128 } else { 1129 fd = copysign(fs1, -fs2); 1130 } 1131 Fd_bits = (uint64_t)reinterpret_cast<uint32_t&>(fd); | 1119 0x1: fsgnjn_s({{ 1120 uint32_t temp; 1121 float fs1 = reinterpret_cast<float&>(temp = Fs1_bits); 1122 float fs2 = reinterpret_cast<float&>(temp = Fs2_bits); 1123 float fd; 1124 1125 if (issignalingnan(fs1)) { 1126 fd = numeric_limits<float>::signaling_NaN(); 1127 feclearexcept(FE_INVALID); 1128 } else { 1129 fd = copysign(fs1, -fs2); 1130 } 1131 Fd_bits = (uint64_t)reinterpret_cast<uint32_t&>(fd); |
1132 }}); | 1132 }}, FloatMiscOp); |
1133 0x2: fsgnjx_s({{ 1134 uint32_t temp; 1135 float fs1 = reinterpret_cast<float&>(temp = Fs1_bits); 1136 float fs2 = reinterpret_cast<float&>(temp = Fs2_bits); 1137 float fd; 1138 1139 if (issignalingnan(fs1)) { 1140 fd = numeric_limits<float>::signaling_NaN(); 1141 feclearexcept(FE_INVALID); 1142 } else { 1143 fd = fs1*(signbit(fs2) ? -1.0 : 1.0); 1144 } 1145 Fd_bits = (uint64_t)reinterpret_cast<uint32_t&>(fd); | 1133 0x2: fsgnjx_s({{ 1134 uint32_t temp; 1135 float fs1 = reinterpret_cast<float&>(temp = Fs1_bits); 1136 float fs2 = reinterpret_cast<float&>(temp = Fs2_bits); 1137 float fd; 1138 1139 if (issignalingnan(fs1)) { 1140 fd = numeric_limits<float>::signaling_NaN(); 1141 feclearexcept(FE_INVALID); 1142 } else { 1143 fd = fs1*(signbit(fs2) ? -1.0 : 1.0); 1144 } 1145 Fd_bits = (uint64_t)reinterpret_cast<uint32_t&>(fd); |
1146 }}); | 1146 }}, FloatMiscOp); |
1147 } 1148 0x11: decode ROUND_MODE { 1149 0x0: fsgnj_d({{ 1150 if (issignalingnan(Fs1)) { 1151 Fd = numeric_limits<double>::signaling_NaN(); 1152 feclearexcept(FE_INVALID); 1153 } else { 1154 Fd = copysign(Fs1, Fs2); 1155 } | 1147 } 1148 0x11: decode ROUND_MODE { 1149 0x0: fsgnj_d({{ 1150 if (issignalingnan(Fs1)) { 1151 Fd = numeric_limits<double>::signaling_NaN(); 1152 feclearexcept(FE_INVALID); 1153 } else { 1154 Fd = copysign(Fs1, Fs2); 1155 } |
1156 }}); | 1156 }}, FloatMiscOp); |
1157 0x1: fsgnjn_d({{ 1158 if (issignalingnan(Fs1)) { 1159 Fd = numeric_limits<double>::signaling_NaN(); 1160 feclearexcept(FE_INVALID); 1161 } else { 1162 Fd = copysign(Fs1, -Fs2); 1163 } | 1157 0x1: fsgnjn_d({{ 1158 if (issignalingnan(Fs1)) { 1159 Fd = numeric_limits<double>::signaling_NaN(); 1160 feclearexcept(FE_INVALID); 1161 } else { 1162 Fd = copysign(Fs1, -Fs2); 1163 } |
1164 }}); | 1164 }}, FloatMiscOp); |
1165 0x2: fsgnjx_d({{ 1166 if (issignalingnan(Fs1)) { 1167 Fd = numeric_limits<double>::signaling_NaN(); 1168 feclearexcept(FE_INVALID); 1169 } else { 1170 Fd = Fs1*(signbit(Fs2) ? -1.0 : 1.0); 1171 } | 1165 0x2: fsgnjx_d({{ 1166 if (issignalingnan(Fs1)) { 1167 Fd = numeric_limits<double>::signaling_NaN(); 1168 feclearexcept(FE_INVALID); 1169 } else { 1170 Fd = Fs1*(signbit(Fs2) ? -1.0 : 1.0); 1171 } |
1172 }}); | 1172 }}, FloatMiscOp); |
1173 } 1174 0x14: decode ROUND_MODE { 1175 0x0: fmin_s({{ 1176 uint32_t temp; 1177 float fs1 = reinterpret_cast<float&>(temp = Fs1_bits); 1178 float fs2 = reinterpret_cast<float&>(temp = Fs2_bits); 1179 float fd; 1180 --- 315 unchanged lines hidden (view full) --- 1496 if ((Rd&0x80000000) != 0) { 1497 Rd |= (0xFFFFFFFFULL << 32); 1498 } 1499 }}, FloatCvtOp); 1500 0x1: fclass_s({{ 1501 uint32_t temp; 1502 float fs1 = reinterpret_cast<float&>(temp = Fs1_bits); 1503 switch (fpclassify(fs1)) { | 1173 } 1174 0x14: decode ROUND_MODE { 1175 0x0: fmin_s({{ 1176 uint32_t temp; 1177 float fs1 = reinterpret_cast<float&>(temp = Fs1_bits); 1178 float fs2 = reinterpret_cast<float&>(temp = Fs2_bits); 1179 float fd; 1180 --- 315 unchanged lines hidden (view full) --- 1496 if ((Rd&0x80000000) != 0) { 1497 Rd |= (0xFFFFFFFFULL << 32); 1498 } 1499 }}, FloatCvtOp); 1500 0x1: fclass_s({{ 1501 uint32_t temp; 1502 float fs1 = reinterpret_cast<float&>(temp = Fs1_bits); 1503 switch (fpclassify(fs1)) { |
1504 case FP_INFINITE: | 1504 case FP_INFINITE: |
1505 if (signbit(fs1)) { 1506 Rd = 1 << 0; 1507 } else { 1508 Rd = 1 << 7; 1509 } 1510 break; | 1505 if (signbit(fs1)) { 1506 Rd = 1 << 0; 1507 } else { 1508 Rd = 1 << 7; 1509 } 1510 break; |
1511 case FP_NAN: | 1511 case FP_NAN: |
1512 if (issignalingnan(fs1)) { 1513 Rd = 1 << 8; 1514 } else { 1515 Rd = 1 << 9; 1516 } 1517 break; | 1512 if (issignalingnan(fs1)) { 1513 Rd = 1 << 8; 1514 } else { 1515 Rd = 1 << 9; 1516 } 1517 break; |
1518 case FP_ZERO: | 1518 case FP_ZERO: |
1519 if (signbit(fs1)) { 1520 Rd = 1 << 3; 1521 } else { 1522 Rd = 1 << 4; 1523 } 1524 break; | 1519 if (signbit(fs1)) { 1520 Rd = 1 << 3; 1521 } else { 1522 Rd = 1 << 4; 1523 } 1524 break; |
1525 case FP_SUBNORMAL: | 1525 case FP_SUBNORMAL: |
1526 if (signbit(fs1)) { 1527 Rd = 1 << 2; 1528 } else { 1529 Rd = 1 << 5; 1530 } 1531 break; | 1526 if (signbit(fs1)) { 1527 Rd = 1 << 2; 1528 } else { 1529 Rd = 1 << 5; 1530 } 1531 break; |
1532 case FP_NORMAL: | 1532 case FP_NORMAL: |
1533 if (signbit(fs1)) { 1534 Rd = 1 << 1; 1535 } else { 1536 Rd = 1 << 6; 1537 } 1538 break; | 1533 if (signbit(fs1)) { 1534 Rd = 1 << 1; 1535 } else { 1536 Rd = 1 << 6; 1537 } 1538 break; |
1539 default: | 1539 default: |
1540 panic("Unknown classification for operand."); 1541 break; 1542 } | 1540 panic("Unknown classification for operand."); 1541 break; 1542 } |
1543 }}); | 1543 }}, FloatMiscOp); |
1544 } 1545 0x71: decode ROUND_MODE { 1546 0x0: fmv_x_d({{ 1547 Rd = Fs1_bits; 1548 }}, FloatCvtOp); 1549 0x1: fclass_d({{ 1550 switch (fpclassify(Fs1)) { | 1544 } 1545 0x71: decode ROUND_MODE { 1546 0x0: fmv_x_d({{ 1547 Rd = Fs1_bits; 1548 }}, FloatCvtOp); 1549 0x1: fclass_d({{ 1550 switch (fpclassify(Fs1)) { |
1551 case FP_INFINITE: | 1551 case FP_INFINITE: |
1552 if (signbit(Fs1)) { 1553 Rd = 1 << 0; 1554 } else { 1555 Rd = 1 << 7; 1556 } 1557 break; | 1552 if (signbit(Fs1)) { 1553 Rd = 1 << 0; 1554 } else { 1555 Rd = 1 << 7; 1556 } 1557 break; |
1558 case FP_NAN: | 1558 case FP_NAN: |
1559 if (issignalingnan(Fs1)) { 1560 Rd = 1 << 8; 1561 } else { 1562 Rd = 1 << 9; 1563 } 1564 break; | 1559 if (issignalingnan(Fs1)) { 1560 Rd = 1 << 8; 1561 } else { 1562 Rd = 1 << 9; 1563 } 1564 break; |
1565 case FP_ZERO: | 1565 case FP_ZERO: |
1566 if (signbit(Fs1)) { 1567 Rd = 1 << 3; 1568 } else { 1569 Rd = 1 << 4; 1570 } 1571 break; | 1566 if (signbit(Fs1)) { 1567 Rd = 1 << 3; 1568 } else { 1569 Rd = 1 << 4; 1570 } 1571 break; |
1572 case FP_SUBNORMAL: | 1572 case FP_SUBNORMAL: |
1573 if (signbit(Fs1)) { 1574 Rd = 1 << 2; 1575 } else { 1576 Rd = 1 << 5; 1577 } 1578 break; | 1573 if (signbit(Fs1)) { 1574 Rd = 1 << 2; 1575 } else { 1576 Rd = 1 << 5; 1577 } 1578 break; |
1579 case FP_NORMAL: | 1579 case FP_NORMAL: |
1580 if (signbit(Fs1)) { 1581 Rd = 1 << 1; 1582 } else { 1583 Rd = 1 << 6; 1584 } 1585 break; | 1580 if (signbit(Fs1)) { 1581 Rd = 1 << 1; 1582 } else { 1583 Rd = 1 << 6; 1584 } 1585 break; |
1586 default: | 1586 default: |
1587 panic("Unknown classification for operand."); 1588 break; 1589 } | 1587 panic("Unknown classification for operand."); 1588 break; 1589 } |
1590 }}); | 1590 }}, FloatMiscOp); |
1591 } 1592 0x78: fmv_s_x({{ 1593 Fd_bits = (uint64_t)Rs1_uw; 1594 }}, FloatCvtOp); 1595 0x79: fmv_d_x({{ 1596 Fd_bits = Rs1; 1597 }}, FloatCvtOp); 1598 } --- 113 unchanged lines hidden --- | 1591 } 1592 0x78: fmv_s_x({{ 1593 Fd_bits = (uint64_t)Rs1_uw; 1594 }}, FloatCvtOp); 1595 0x79: fmv_d_x({{ 1596 Fd_bits = Rs1; 1597 }}, FloatCvtOp); 1598 } --- 113 unchanged lines hidden --- |