1261 void mul_add_128_x_32_loop(Register out, Register in, Register offset, Register len, Register tmp1, 1262 Register tmp2, Register tmp3, Register tmp4, Register tmp5, Register rdxReg, 1263 Register raxReg); 1264 void mul_add(Register out, Register in, Register offset, Register len, Register k, Register tmp1, 1265 Register tmp2, Register tmp3, Register tmp4, Register tmp5, Register rdxReg, 1266 Register raxReg); 1267 #endif 1268 1269 // CRC32 code for java.util.zip.CRC32::updateBytes() instrinsic. 1270 void update_byte_crc32(Register crc, Register val, Register table); 1271 void kernel_crc32(Register crc, Register buf, Register len, Register table, Register tmp); 1272 // Fold 128-bit data chunk 1273 void fold_128bit_crc32(XMMRegister xcrc, XMMRegister xK, XMMRegister xtmp, Register buf, int offset); 1274 void fold_128bit_crc32(XMMRegister xcrc, XMMRegister xK, XMMRegister xtmp, XMMRegister xbuf); 1275 // Fold 8-bit data 1276 void fold_8bit_crc32(Register crc, Register table, Register tmp); 1277 void fold_8bit_crc32(XMMRegister crc, Register table, XMMRegister xtmp, Register tmp); 1278 1279 #undef VIRTUAL 1280 1281 }; 1282 1283 /** 1284 * class SkipIfEqual: 1285 * 1286 * Instantiating this class will result in assembly code being output that will 1287 * jump around any code emitted between the creation of the instance and it's 1288 * automatic destruction at the end of a scope block, depending on the value of 1289 * the flag passed to the constructor, which will be checked at run-time. 1290 */ 1291 class SkipIfEqual { 1292 private: 1293 MacroAssembler* _masm; 1294 Label _label; 1295 1296 public: 1297 SkipIfEqual(MacroAssembler*, const bool* flag_addr, bool value); 1298 ~SkipIfEqual(); 1299 }; 1300 | 1261 void mul_add_128_x_32_loop(Register out, Register in, Register offset, Register len, Register tmp1, 1262 Register tmp2, Register tmp3, Register tmp4, Register tmp5, Register rdxReg, 1263 Register raxReg); 1264 void mul_add(Register out, Register in, Register offset, Register len, Register k, Register tmp1, 1265 Register tmp2, Register tmp3, Register tmp4, Register tmp5, Register rdxReg, 1266 Register raxReg); 1267 #endif 1268 1269 // CRC32 code for java.util.zip.CRC32::updateBytes() instrinsic. 1270 void update_byte_crc32(Register crc, Register val, Register table); 1271 void kernel_crc32(Register crc, Register buf, Register len, Register table, Register tmp); 1272 // Fold 128-bit data chunk 1273 void fold_128bit_crc32(XMMRegister xcrc, XMMRegister xK, XMMRegister xtmp, Register buf, int offset); 1274 void fold_128bit_crc32(XMMRegister xcrc, XMMRegister xK, XMMRegister xtmp, XMMRegister xbuf); 1275 // Fold 8-bit data 1276 void fold_8bit_crc32(Register crc, Register table, Register tmp); 1277 void fold_8bit_crc32(XMMRegister crc, Register table, XMMRegister xtmp, Register tmp); 1278 1279 #undef VIRTUAL 1280 1281 void save_vector_registers(); 1282 void restore_vector_registers(); 1283 }; 1284 1285 /** 1286 * class SkipIfEqual: 1287 * 1288 * Instantiating this class will result in assembly code being output that will 1289 * jump around any code emitted between the creation of the instance and it's 1290 * automatic destruction at the end of a scope block, depending on the value of 1291 * the flag passed to the constructor, which will be checked at run-time. 1292 */ 1293 class SkipIfEqual { 1294 private: 1295 MacroAssembler* _masm; 1296 Label _label; 1297 1298 public: 1299 SkipIfEqual(MacroAssembler*, const bool* flag_addr, bool value); 1300 ~SkipIfEqual(); 1301 }; 1302 |