< prev index next >

src/cpu/ppc/vm/macroAssembler_ppc.cpp

Print this page
rev 9821 : 8146613: PPC64: C2 does no longer respect int to long conversion for stub calls
Reviewed-by: goetz

*** 1,8 **** /* ! * Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved. ! * Copyright 2012, 2015 SAP AG. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. --- 1,8 ---- /* ! * Copyright (c) 1997, 2016, Oracle and/or its affiliates. All rights reserved. ! * Copyright 2012, 2016 SAP AG. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation.
*** 3654,3666 **** const int ix3 = 7*(4*CRC32_COLUMN_SIZE); #endif assert_different_registers(table, tc0, tc1, tc2); assert(table == tc3, "must be!"); ! if (ix0 != 0) addi(tc0, table, ix0); ! if (ix1 != 0) addi(tc1, table, ix1); ! if (ix2 != 0) addi(tc2, table, ix2); if (ix3 != 0) addi(tc3, table, ix3); return ix3; } --- 3654,3666 ---- const int ix3 = 7*(4*CRC32_COLUMN_SIZE); #endif assert_different_registers(table, tc0, tc1, tc2); assert(table == tc3, "must be!"); ! addi(tc0, table, ix0); ! addi(tc1, table, ix1); ! addi(tc2, table, ix2); if (ix3 != 0) addi(tc3, table, ix3); return ix3; }
*** 3722,3739 **** Label L_mainLoop, L_done; const int mainLoop_stepping = 1; const int mainLoop_alignment = loopAlignment ? 32 : 4; // (InputForNewCode > 4 ? InputForNewCode : 32) : 4; // Process all bytes in a single-byte loop. ! cmpdi(CCR0, len, 0); // Anything to do? ! mtctr(len); beq(CCR0, L_done); if (invertCRC) { nand(crc, crc, crc); // ~c } align(mainLoop_alignment); BIND(L_mainLoop); lbz(data, 0, buf); // Byte from buffer, zero-extended. addi(buf, buf, mainLoop_stepping); // Advance buffer position. update_byte_crc32(crc, data, table); --- 3722,3739 ---- Label L_mainLoop, L_done; const int mainLoop_stepping = 1; const int mainLoop_alignment = loopAlignment ? 32 : 4; // (InputForNewCode > 4 ? InputForNewCode : 32) : 4; // Process all bytes in a single-byte loop. ! clrldi_(len, len, 32); // Enforce 32 bit. Anything to do? beq(CCR0, L_done); if (invertCRC) { nand(crc, crc, crc); // ~c } + mtctr(len); align(mainLoop_alignment); BIND(L_mainLoop); lbz(data, 0, buf); // Byte from buffer, zero-extended. addi(buf, buf, mainLoop_stepping); // Advance buffer position. update_byte_crc32(crc, data, table);
*** 3945,3955 **** #ifdef VM_LITTLE_ENDIAN Register crc_rv = crc; #else Register crc_rv = tmp; // Load_reverse needs separate registers to work on. // Occupies tmp, but frees up crc. ! load_reverse_32(crc_rv, crc); // evert byte order because we are dealing with big-endian data. tmp = crc; #endif int reconstructTableOffset = crc32_table_columns(table, tc0, tc1, tc2, tc3); --- 3945,3955 ---- #ifdef VM_LITTLE_ENDIAN Register crc_rv = crc; #else Register crc_rv = tmp; // Load_reverse needs separate registers to work on. // Occupies tmp, but frees up crc. ! load_reverse_32(crc_rv, crc); // Revert byte order because we are dealing with big-endian data. tmp = crc; #endif int reconstructTableOffset = crc32_table_columns(table, tc0, tc1, tc2, tc3);
< prev index next >