Request for reviews (M): 8004835: Improve AES intrinsics on x86

Vladimir Kozlov vladimir.kozlov at oracle.com
Mon Dec 17 12:52:48 PST 2012


Hi, Yasumasa

Thank you for looking on changes.

On 12/16/12 5:02 PM, Yasumasa Suenaga wrote:
> Hi Vladimir,
>
> Source operand of Assembler::pshufb() seems to allow misaligned memory
> address.

I assume you mean "to NOT allow" otherwise you statement contradict the 
quote.

> Instruction reference of PSHUFB says following:
>
> ----------
> When the source operand is a 128-bit memory operand, the operand must be
> aligned
> on a 16-byte boundary or a general-protection exception (#GP) will be
> generated.
> ----------
>
> Not only non-AVX but also AVX CPU needs 16-byte aligned memory address
> for source
> operand of PSHUFB.

It is not true. It depends how you encode instructions when AVX 
available. Hotspot use VEX prefix in such case with which alignment is 
not required (2.5):

http://software.intel.com/sites/default/files/319433-014.pdf

(v)pshufb is "Type 4" exception class instruction (Table 2-7). For such 
instructions only legacy SSE encoded (REX prefix) instructions cause #GP 
exception with unaligned memory (Table 2-13). Note, in 325383.pdf 
corresponding tables are 2-14 and 2-20.

Thanks,
Vladimir

> So I think that assert condition for AVX does not required in
> Assembler::pshufb() .
>
> http://download.intel.com/products/processor/manual/325383.pdf
>
>
> Thanks,
>
> Yasumasa
>
>
> On 2012/12/16 7:09, Vladimir Kozlov wrote:
>> http://cr.openjdk.java.net/~kvn/8004835/webrev/
>>
>> Enable AES intrinsics on non-AVX cpus (Westmere), pshufb instruction
>> in load_key() method could be used without AVX because it references
>> only aligned memory "key_shuffle_mask".
>>
>> Group together aes instructions in encryptBlock/decryptBlock stubs as
>> recommended by Intel Optimization Guide.
>>
>> Modified test/compiler/7184394 to test "ECB" mode.
>>
>> Ran compiler regression tests and jdk crypto and security tests with
>> SunJCE default provider.
>>
>> Thanks,
>> Vladimir


More information about the hotspot-compiler-dev mailing list