Index: src/s390/assembler-s390.cc |
diff --git a/src/s390/assembler-s390.cc b/src/s390/assembler-s390.cc |
index 688ceabf657d4b616738a235019f12507743651a..4cce50628b20f75117994a0e1f209e27e92f5d52 100644 |
--- a/src/s390/assembler-s390.cc |
+++ b/src/s390/assembler-s390.cc |
@@ -166,14 +166,18 @@ void CpuFeatures::ProbeImpl(bool cross_compile) { |
if (facilities[2] & (one << (63 - (129 - 128)))) { |
supported_ |= (1u << VECTOR_FACILITY); |
} |
+ // Test for Miscellaneous Instruction Extension Facility - Bit 58 |
+ if (facilities[0] & (1lu << (63 - 58))) { |
+ supported_ |= (1u << MISC_INSTR_EXT2); |
+ } |
} |
#else |
// All distinct ops instructions can be simulated |
supported_ |= (1u << DISTINCT_OPS); |
// RISBG can be simulated |
supported_ |= (1u << GENERAL_INSTR_EXT); |
- |
supported_ |= (1u << FLOATING_POINT_EXT); |
+ supported_ |= (1u << MISC_INSTR_EXT2); |
USE(performSTFLE); // To avoid assert |
supported_ |= (1u << VECTOR_FACILITY); |
#endif |
@@ -198,6 +202,7 @@ void CpuFeatures::PrintFeatures() { |
printf("GENERAL_INSTR=%d\n", CpuFeatures::IsSupported(GENERAL_INSTR_EXT)); |
printf("DISTINCT_OPS=%d\n", CpuFeatures::IsSupported(DISTINCT_OPS)); |
printf("VECTOR_FACILITY=%d\n", CpuFeatures::IsSupported(VECTOR_FACILITY)); |
+ printf("MISC_INSTR_EXT2=%d\n", CpuFeatures::IsSupported(MISC_INSTR_EXT2)); |
} |
Register ToRegister(int num) { |
@@ -1510,6 +1515,16 @@ void Assembler::mhi(Register r1, const Operand& opnd) { |
ri_form(MHI, r1, opnd); |
} |
+// Multiply Single Register (32) |
+void Assembler::msrkc(Register r1, Register r2, Register r3) { |
+ rrf1_form(MSRKC, r1, r2, r3); |
+} |
+ |
+// Multiply Single Register (64) |
+void Assembler::msgrkc(Register r1, Register r2, Register r3) { |
+ rrf1_form(MSGRKC, r1, r2, r3); |
+} |
+ |
// ---------------------------- |
// 64-bit Multiply Instructions |
// ---------------------------- |