< prev index next >

src/hotspot/cpu/aarch64/assembler_aarch64.hpp

Print this page
rev 60737 : 8252204: AArch64: Implement SHA3 accelerator/intrinsic
Reviewed-by: duke
Contributed-by: dongbo4@huawei.com

@@ -2401,10 +2401,44 @@
   INSN(sha512su0, 0b1100111011000000100000);
 
 #undef INSN
 
 #define INSN(NAME, opc)                           \
+  void NAME(FloatRegister Vd, SIMD_Arrangement T, FloatRegister Vn, FloatRegister Vm, FloatRegister Va) { \
+    starti;                                                                                               \
+    assert(T == T16B, "arrangement must be T16B");                                                        \
+    f(0b11001110, 31, 24), f(opc, 23, 21), rf(Vm, 16), f(0b0, 15, 15), rf(Va, 10), rf(Vn, 5), rf(Vd, 0);  \
+  }
+
+  INSN(eor3, 0b000);
+  INSN(bcax, 0b001);
+
+#undef INSN
+
+#define INSN(NAME, opc)                                                                               \
+  void NAME(FloatRegister Vd, SIMD_Arrangement T, FloatRegister Vn, FloatRegister Vm, unsigned imm) { \
+    starti;                                                                                           \
+    assert(T == T2D, "arrangement must be T2D");                                                      \
+    f(0b11001110, 31, 24), f(opc, 23, 21), rf(Vm, 16), f(imm, 15, 10), rf(Vn, 5), rf(Vd, 0);          \
+  }
+
+  INSN(xar, 0b100);
+
+#undef INSN
+
+#define INSN(NAME, opc)                                                                           \
+  void NAME(FloatRegister Vd, SIMD_Arrangement T, FloatRegister Vn, FloatRegister Vm) {           \
+    starti;                                                                                       \
+    assert(T == T2D, "arrangement must be T2D");                                                  \
+    f(0b11001110, 31, 24), f(opc, 23, 21), rf(Vm, 16), f(0b100011, 15, 10), rf(Vn, 5), rf(Vd, 0); \
+  }
+
+  INSN(rax1, 0b011);
+
+#undef INSN
+
+#define INSN(NAME, opc)                           \
   void NAME(FloatRegister Vd, FloatRegister Vn) { \
     starti;                                       \
     f(opc, 31, 10), rf(Vn, 5), rf(Vd, 0);         \
   }
 
< prev index next >