< prev index next >

src/cpu/x86/vm/macroAssembler_x86.hpp

Print this page




1007 
1008   // Bitwise Logical XOR of Packed Single-Precision Floating-Point Values
1009   void xorps(XMMRegister dst, XMMRegister src) { Assembler::xorps(dst, src); }
1010   void xorps(XMMRegister dst, Address src)     { Assembler::xorps(dst, src); }
1011   void xorps(XMMRegister dst, AddressLiteral src);
1012 
1013   // Shuffle Bytes
1014   void pshufb(XMMRegister dst, XMMRegister src) { Assembler::pshufb(dst, src); }
1015   void pshufb(XMMRegister dst, Address src)     { Assembler::pshufb(dst, src); }
1016   void pshufb(XMMRegister dst, AddressLiteral src);
1017   // AVX 3-operands instructions
1018 
1019   void vaddsd(XMMRegister dst, XMMRegister nds, XMMRegister src) { Assembler::vaddsd(dst, nds, src); }
1020   void vaddsd(XMMRegister dst, XMMRegister nds, Address src)     { Assembler::vaddsd(dst, nds, src); }
1021   void vaddsd(XMMRegister dst, XMMRegister nds, AddressLiteral src);
1022 
1023   void vaddss(XMMRegister dst, XMMRegister nds, XMMRegister src) { Assembler::vaddss(dst, nds, src); }
1024   void vaddss(XMMRegister dst, XMMRegister nds, Address src)     { Assembler::vaddss(dst, nds, src); }
1025   void vaddss(XMMRegister dst, XMMRegister nds, AddressLiteral src);
1026 
1027   void vandpd(XMMRegister dst, XMMRegister nds, XMMRegister src, bool vector256) { Assembler::vandpd(dst, nds, src, vector256); }
1028   void vandpd(XMMRegister dst, XMMRegister nds, Address src, bool vector256)     { Assembler::vandpd(dst, nds, src, vector256); }
1029   void vandpd(XMMRegister dst, XMMRegister nds, AddressLiteral src, bool vector256);
1030 
1031   void vandps(XMMRegister dst, XMMRegister nds, XMMRegister src, bool vector256) { Assembler::vandps(dst, nds, src, vector256); }
1032   void vandps(XMMRegister dst, XMMRegister nds, Address src, bool vector256)     { Assembler::vandps(dst, nds, src, vector256); }
1033   void vandps(XMMRegister dst, XMMRegister nds, AddressLiteral src, bool vector256);
1034 
1035   void vdivsd(XMMRegister dst, XMMRegister nds, XMMRegister src) { Assembler::vdivsd(dst, nds, src); }
1036   void vdivsd(XMMRegister dst, XMMRegister nds, Address src)     { Assembler::vdivsd(dst, nds, src); }
1037   void vdivsd(XMMRegister dst, XMMRegister nds, AddressLiteral src);
1038 
1039   void vdivss(XMMRegister dst, XMMRegister nds, XMMRegister src) { Assembler::vdivss(dst, nds, src); }
1040   void vdivss(XMMRegister dst, XMMRegister nds, Address src)     { Assembler::vdivss(dst, nds, src); }
1041   void vdivss(XMMRegister dst, XMMRegister nds, AddressLiteral src);
1042 
1043   void vmulsd(XMMRegister dst, XMMRegister nds, XMMRegister src) { Assembler::vmulsd(dst, nds, src); }
1044   void vmulsd(XMMRegister dst, XMMRegister nds, Address src)     { Assembler::vmulsd(dst, nds, src); }
1045   void vmulsd(XMMRegister dst, XMMRegister nds, AddressLiteral src);
1046 
1047   void vmulss(XMMRegister dst, XMMRegister nds, XMMRegister src) { Assembler::vmulss(dst, nds, src); }
1048   void vmulss(XMMRegister dst, XMMRegister nds, Address src)     { Assembler::vmulss(dst, nds, src); }
1049   void vmulss(XMMRegister dst, XMMRegister nds, AddressLiteral src);
1050 
1051   void vsubsd(XMMRegister dst, XMMRegister nds, XMMRegister src) { Assembler::vsubsd(dst, nds, src); }
1052   void vsubsd(XMMRegister dst, XMMRegister nds, Address src)     { Assembler::vsubsd(dst, nds, src); }
1053   void vsubsd(XMMRegister dst, XMMRegister nds, AddressLiteral src);
1054 
1055   void vsubss(XMMRegister dst, XMMRegister nds, XMMRegister src) { Assembler::vsubss(dst, nds, src); }
1056   void vsubss(XMMRegister dst, XMMRegister nds, Address src)     { Assembler::vsubss(dst, nds, src); }
1057   void vsubss(XMMRegister dst, XMMRegister nds, AddressLiteral src);
1058 
1059   // AVX Vector instructions
1060 
1061   void vxorpd(XMMRegister dst, XMMRegister nds, XMMRegister src, bool vector256) { Assembler::vxorpd(dst, nds, src, vector256); }
1062   void vxorpd(XMMRegister dst, XMMRegister nds, Address src, bool vector256) { Assembler::vxorpd(dst, nds, src, vector256); }
1063   void vxorpd(XMMRegister dst, XMMRegister nds, AddressLiteral src, bool vector256);
1064 
1065   void vxorps(XMMRegister dst, XMMRegister nds, XMMRegister src, bool vector256) { Assembler::vxorps(dst, nds, src, vector256); }
1066   void vxorps(XMMRegister dst, XMMRegister nds, Address src, bool vector256) { Assembler::vxorps(dst, nds, src, vector256); }
1067   void vxorps(XMMRegister dst, XMMRegister nds, AddressLiteral src, bool vector256);
1068 
1069   void vpxor(XMMRegister dst, XMMRegister nds, XMMRegister src, bool vector256) {
1070     if (UseAVX > 1 || !vector256) // vpxor 256 bit is available only in AVX2
1071       Assembler::vpxor(dst, nds, src, vector256);
1072     else
1073       Assembler::vxorpd(dst, nds, src, vector256);
1074   }
1075   void vpxor(XMMRegister dst, XMMRegister nds, Address src, bool vector256) {
1076     if (UseAVX > 1 || !vector256) // vpxor 256 bit is available only in AVX2
1077       Assembler::vpxor(dst, nds, src, vector256);
1078     else
1079       Assembler::vxorpd(dst, nds, src, vector256);
1080   }
1081 
1082   // Simple version for AVX2 256bit vectors
1083   void vpxor(XMMRegister dst, XMMRegister src) { Assembler::vpxor(dst, dst, src, true); }
1084   void vpxor(XMMRegister dst, Address src) { Assembler::vpxor(dst, dst, src, true); }
1085 
1086   // Move packed integer values from low 128 bit to hign 128 bit in 256 bit vector.
1087   void vinserti128h(XMMRegister dst, XMMRegister nds, XMMRegister src) {
1088     if (UseAVX > 1) // vinserti128h is available only in AVX2
1089       Assembler::vinserti128h(dst, nds, src);
1090     else
1091       Assembler::vinsertf128h(dst, nds, src);
1092   }
1093 
1094   // Carry-Less Multiplication Quadword
1095   void vpclmulldq(XMMRegister dst, XMMRegister nds, XMMRegister src) {
1096     // 0x00 - multiply lower 64 bits [0:63]
1097     Assembler::vpclmulqdq(dst, nds, src, 0x00);
1098   }
1099   void vpclmulhdq(XMMRegister dst, XMMRegister nds, XMMRegister src) {




1007 
1008   // Bitwise Logical XOR of Packed Single-Precision Floating-Point Values
1009   void xorps(XMMRegister dst, XMMRegister src) { Assembler::xorps(dst, src); }
1010   void xorps(XMMRegister dst, Address src)     { Assembler::xorps(dst, src); }
1011   void xorps(XMMRegister dst, AddressLiteral src);
1012 
1013   // Shuffle Bytes
1014   void pshufb(XMMRegister dst, XMMRegister src) { Assembler::pshufb(dst, src); }
1015   void pshufb(XMMRegister dst, Address src)     { Assembler::pshufb(dst, src); }
1016   void pshufb(XMMRegister dst, AddressLiteral src);
1017   // AVX 3-operands instructions
1018 
1019   void vaddsd(XMMRegister dst, XMMRegister nds, XMMRegister src) { Assembler::vaddsd(dst, nds, src); }
1020   void vaddsd(XMMRegister dst, XMMRegister nds, Address src)     { Assembler::vaddsd(dst, nds, src); }
1021   void vaddsd(XMMRegister dst, XMMRegister nds, AddressLiteral src);
1022 
1023   void vaddss(XMMRegister dst, XMMRegister nds, XMMRegister src) { Assembler::vaddss(dst, nds, src); }
1024   void vaddss(XMMRegister dst, XMMRegister nds, Address src)     { Assembler::vaddss(dst, nds, src); }
1025   void vaddss(XMMRegister dst, XMMRegister nds, AddressLiteral src);
1026 
1027   void vandpd(XMMRegister dst, XMMRegister nds, XMMRegister src, int vector_len) { Assembler::vandpd(dst, nds, src, vector_len); }
1028   void vandpd(XMMRegister dst, XMMRegister nds, Address src, int vector_len)     { Assembler::vandpd(dst, nds, src, vector_len); }
1029   void vandpd(XMMRegister dst, XMMRegister nds, AddressLiteral src, int vector_len);
1030 
1031   void vandps(XMMRegister dst, XMMRegister nds, XMMRegister src, int vector_len) { Assembler::vandps(dst, nds, src, vector_len); }
1032   void vandps(XMMRegister dst, XMMRegister nds, Address src, int vector_len)     { Assembler::vandps(dst, nds, src, vector_len); }
1033   void vandps(XMMRegister dst, XMMRegister nds, AddressLiteral src, int vector_len);
1034 
1035   void vdivsd(XMMRegister dst, XMMRegister nds, XMMRegister src) { Assembler::vdivsd(dst, nds, src); }
1036   void vdivsd(XMMRegister dst, XMMRegister nds, Address src)     { Assembler::vdivsd(dst, nds, src); }
1037   void vdivsd(XMMRegister dst, XMMRegister nds, AddressLiteral src);
1038 
1039   void vdivss(XMMRegister dst, XMMRegister nds, XMMRegister src) { Assembler::vdivss(dst, nds, src); }
1040   void vdivss(XMMRegister dst, XMMRegister nds, Address src)     { Assembler::vdivss(dst, nds, src); }
1041   void vdivss(XMMRegister dst, XMMRegister nds, AddressLiteral src);
1042 
1043   void vmulsd(XMMRegister dst, XMMRegister nds, XMMRegister src) { Assembler::vmulsd(dst, nds, src); }
1044   void vmulsd(XMMRegister dst, XMMRegister nds, Address src)     { Assembler::vmulsd(dst, nds, src); }
1045   void vmulsd(XMMRegister dst, XMMRegister nds, AddressLiteral src);
1046 
1047   void vmulss(XMMRegister dst, XMMRegister nds, XMMRegister src) { Assembler::vmulss(dst, nds, src); }
1048   void vmulss(XMMRegister dst, XMMRegister nds, Address src)     { Assembler::vmulss(dst, nds, src); }
1049   void vmulss(XMMRegister dst, XMMRegister nds, AddressLiteral src);
1050 
1051   void vsubsd(XMMRegister dst, XMMRegister nds, XMMRegister src) { Assembler::vsubsd(dst, nds, src); }
1052   void vsubsd(XMMRegister dst, XMMRegister nds, Address src)     { Assembler::vsubsd(dst, nds, src); }
1053   void vsubsd(XMMRegister dst, XMMRegister nds, AddressLiteral src);
1054 
1055   void vsubss(XMMRegister dst, XMMRegister nds, XMMRegister src) { Assembler::vsubss(dst, nds, src); }
1056   void vsubss(XMMRegister dst, XMMRegister nds, Address src)     { Assembler::vsubss(dst, nds, src); }
1057   void vsubss(XMMRegister dst, XMMRegister nds, AddressLiteral src);
1058 
1059   // AVX Vector instructions
1060 
1061   void vxorpd(XMMRegister dst, XMMRegister nds, XMMRegister src, int vector_len) { Assembler::vxorpd(dst, nds, src, vector_len); }
1062   void vxorpd(XMMRegister dst, XMMRegister nds, Address src, int vector_len) { Assembler::vxorpd(dst, nds, src, vector_len); }
1063   void vxorpd(XMMRegister dst, XMMRegister nds, AddressLiteral src, int vector_len);
1064 
1065   void vxorps(XMMRegister dst, XMMRegister nds, XMMRegister src, int vector_len) { Assembler::vxorps(dst, nds, src, vector_len); }
1066   void vxorps(XMMRegister dst, XMMRegister nds, Address src, int vector_len) { Assembler::vxorps(dst, nds, src, vector_len); }
1067   void vxorps(XMMRegister dst, XMMRegister nds, AddressLiteral src, int vector_len);
1068 
1069   void vpxor(XMMRegister dst, XMMRegister nds, XMMRegister src, int vector_len) {
1070     if (UseAVX > 1 || (vector_len < 1)) // vpxor 256 bit is available only in AVX2
1071       Assembler::vpxor(dst, nds, src, vector_len);
1072     else
1073       Assembler::vxorpd(dst, nds, src, vector_len);
1074   }
1075   void vpxor(XMMRegister dst, XMMRegister nds, Address src, int vector_len) {
1076     if (UseAVX > 1 || (vector_len < 1)) // vpxor 256 bit is available only in AVX2
1077       Assembler::vpxor(dst, nds, src, vector_len);
1078     else
1079       Assembler::vxorpd(dst, nds, src, vector_len);
1080   }
1081 
1082   // Simple version for AVX2 256bit vectors
1083   void vpxor(XMMRegister dst, XMMRegister src) { Assembler::vpxor(dst, dst, src, true); }
1084   void vpxor(XMMRegister dst, Address src) { Assembler::vpxor(dst, dst, src, true); }
1085 
1086   // Move packed integer values from low 128 bit to hign 128 bit in 256 bit vector.
1087   void vinserti128h(XMMRegister dst, XMMRegister nds, XMMRegister src) {
1088     if (UseAVX > 1) // vinserti128h is available only in AVX2
1089       Assembler::vinserti128h(dst, nds, src);
1090     else
1091       Assembler::vinsertf128h(dst, nds, src);
1092   }
1093 
1094   // Carry-Less Multiplication Quadword
1095   void vpclmulldq(XMMRegister dst, XMMRegister nds, XMMRegister src) {
1096     // 0x00 - multiply lower 64 bits [0:63]
1097     Assembler::vpclmulqdq(dst, nds, src, 0x00);
1098   }
1099   void vpclmulhdq(XMMRegister dst, XMMRegister nds, XMMRegister src) {


< prev index next >