< prev index next >

src/cpu/ppc/vm/macroAssembler_ppc.hpp

Print this page
rev 8691 : 8131048: ppc: implement CRC32 intrinsic
Reviewed-by: kvn, simonis
Contributed-by: lutz.schmidt@sap.com


 685   void multiply_64_x_64_loop(Register x, Register xstart, Register x_xstart,
 686                              Register y, Register y_idx, Register z,
 687                              Register carry, Register product_high, Register product,
 688                              Register idx, Register kdx, Register tmp);
 689   void multiply_add_128_x_128(Register x_xstart, Register y, Register z,
 690                               Register yz_idx, Register idx, Register carry,
 691                               Register product_high, Register product, Register tmp,
 692                               int offset);
 693   void multiply_128_x_128_loop(Register x_xstart,
 694                                Register y, Register z,
 695                                Register yz_idx, Register idx, Register carry,
 696                                Register product_high, Register product,
 697                                Register carry2, Register tmp);
 698   void multiply_to_len(Register x, Register xlen,
 699                        Register y, Register ylen,
 700                        Register z, Register zlen,
 701                        Register tmp1, Register tmp2, Register tmp3, Register tmp4, Register tmp5,
 702                        Register tmp6, Register tmp7, Register tmp8, Register tmp9, Register tmp10,
 703                        Register tmp11, Register tmp12, Register tmp13);
 704 





















 705   //
 706   // Debugging
 707   //
 708 
 709   // assert on cr0
 710   void asm_assert(bool check_equal, const char* msg, int id);
 711   void asm_assert_eq(const char* msg, int id) { asm_assert(true, msg, id); }
 712   void asm_assert_ne(const char* msg, int id) { asm_assert(false, msg, id); }
 713 
 714  private:
 715   void asm_assert_mems_zero(bool check_equal, int size, int mem_offset, Register mem_base,
 716                             const char* msg, int id);
 717 
 718  public:
 719 
 720   void asm_assert_mem8_is_zero(int mem_offset, Register mem_base, const char* msg, int id) {
 721     asm_assert_mems_zero(true,  8, mem_offset, mem_base, msg, id);
 722   }
 723   void asm_assert_mem8_isnot_zero(int mem_offset, Register mem_base, const char* msg, int id) {
 724     asm_assert_mems_zero(false, 8, mem_offset, mem_base, msg, id);




 685   void multiply_64_x_64_loop(Register x, Register xstart, Register x_xstart,
 686                              Register y, Register y_idx, Register z,
 687                              Register carry, Register product_high, Register product,
 688                              Register idx, Register kdx, Register tmp);
 689   void multiply_add_128_x_128(Register x_xstart, Register y, Register z,
 690                               Register yz_idx, Register idx, Register carry,
 691                               Register product_high, Register product, Register tmp,
 692                               int offset);
 693   void multiply_128_x_128_loop(Register x_xstart,
 694                                Register y, Register z,
 695                                Register yz_idx, Register idx, Register carry,
 696                                Register product_high, Register product,
 697                                Register carry2, Register tmp);
 698   void multiply_to_len(Register x, Register xlen,
 699                        Register y, Register ylen,
 700                        Register z, Register zlen,
 701                        Register tmp1, Register tmp2, Register tmp3, Register tmp4, Register tmp5,
 702                        Register tmp6, Register tmp7, Register tmp8, Register tmp9, Register tmp10,
 703                        Register tmp11, Register tmp12, Register tmp13);
 704 
 705   // CRC32 Intrinsics.
 706   void load_reverse_32(Register dst, Register src);
 707   int  crc32_table_columns(Register table, Register tc0, Register tc1, Register tc2, Register tc3);
 708   void fold_byte_crc32(Register crc, Register val, Register table, Register tmp);
 709   void fold_8bit_crc32(Register crc, Register table, Register tmp);
 710   void update_byte_crc32(Register crc, Register val, Register table);
 711   void update_byteLoop_crc32(Register crc, Register buf, Register len, Register table,
 712                              Register data, bool loopAlignment, bool invertCRC);
 713   void update_1word_crc32(Register crc, Register buf, Register table, int bufDisp, int bufInc,
 714                           Register t0,  Register t1,  Register t2,  Register t3,
 715                           Register tc0, Register tc1, Register tc2, Register tc3);
 716   void kernel_crc32_2word(Register crc, Register buf, Register len, Register table,
 717                           Register t0,  Register t1,  Register t2,  Register t3,
 718                           Register tc0, Register tc1, Register tc2, Register tc3);
 719   void kernel_crc32_1word(Register crc, Register buf, Register len, Register table,
 720                           Register t0,  Register t1,  Register t2,  Register t3,
 721                           Register tc0, Register tc1, Register tc2, Register tc3);
 722   void kernel_crc32_1byte(Register crc, Register buf, Register len, Register table,
 723                           Register t0,  Register t1,  Register t2,  Register t3);
 724   void kernel_crc32_singleByte(Register crc, Register buf, Register len, Register table, Register tmp);
 725 
 726   //
 727   // Debugging
 728   //
 729 
 730   // assert on cr0
 731   void asm_assert(bool check_equal, const char* msg, int id);
 732   void asm_assert_eq(const char* msg, int id) { asm_assert(true, msg, id); }
 733   void asm_assert_ne(const char* msg, int id) { asm_assert(false, msg, id); }
 734 
 735  private:
 736   void asm_assert_mems_zero(bool check_equal, int size, int mem_offset, Register mem_base,
 737                             const char* msg, int id);
 738 
 739  public:
 740 
 741   void asm_assert_mem8_is_zero(int mem_offset, Register mem_base, const char* msg, int id) {
 742     asm_assert_mems_zero(true,  8, mem_offset, mem_base, msg, id);
 743   }
 744   void asm_assert_mem8_isnot_zero(int mem_offset, Register mem_base, const char* msg, int id) {
 745     asm_assert_mems_zero(false, 8, mem_offset, mem_base, msg, id);


< prev index next >