Mercurial > hg > graal-compiler
comparison src/cpu/x86/vm/assembler_x86.hpp @ 6894:a3ecd773a7b9
7184394: add intrinsics to use AES instructions
Summary: Use new x86 AES instructions for AESCrypt.
Reviewed-by: twisti, kvn, roland
Contributed-by: tom.deneau@amd.com
author | kvn |
---|---|
date | Wed, 24 Oct 2012 14:33:22 -0700 |
parents | 8e47bac5643a |
children | 6ab62ad83507 |
comparison
equal
deleted
inserted
replaced
6893:b2c669fd8114 | 6894:a3ecd773a7b9 |
---|---|
873 | 873 |
874 // Add Scalar Single-Precision Floating-Point Values | 874 // Add Scalar Single-Precision Floating-Point Values |
875 void addss(XMMRegister dst, Address src); | 875 void addss(XMMRegister dst, Address src); |
876 void addss(XMMRegister dst, XMMRegister src); | 876 void addss(XMMRegister dst, XMMRegister src); |
877 | 877 |
878 // AES instructions | |
879 void aesdec(XMMRegister dst, Address src); | |
880 void aesdec(XMMRegister dst, XMMRegister src); | |
881 void aesdeclast(XMMRegister dst, Address src); | |
882 void aesdeclast(XMMRegister dst, XMMRegister src); | |
883 void aesenc(XMMRegister dst, Address src); | |
884 void aesenc(XMMRegister dst, XMMRegister src); | |
885 void aesenclast(XMMRegister dst, Address src); | |
886 void aesenclast(XMMRegister dst, XMMRegister src); | |
887 | |
888 | |
878 void andl(Address dst, int32_t imm32); | 889 void andl(Address dst, int32_t imm32); |
879 void andl(Register dst, int32_t imm32); | 890 void andl(Register dst, int32_t imm32); |
880 void andl(Register dst, Address src); | 891 void andl(Register dst, Address src); |
881 void andl(Register dst, Register src); | 892 void andl(Register dst, Register src); |
882 | 893 |
1421 void prefetchr(Address src); | 1432 void prefetchr(Address src); |
1422 void prefetcht0(Address src); | 1433 void prefetcht0(Address src); |
1423 void prefetcht1(Address src); | 1434 void prefetcht1(Address src); |
1424 void prefetcht2(Address src); | 1435 void prefetcht2(Address src); |
1425 void prefetchw(Address src); | 1436 void prefetchw(Address src); |
1437 | |
1438 // Shuffle Bytes | |
1439 void pshufb(XMMRegister dst, XMMRegister src); | |
1440 void pshufb(XMMRegister dst, Address src); | |
1426 | 1441 |
1427 // Shuffle Packed Doublewords | 1442 // Shuffle Packed Doublewords |
1428 void pshufd(XMMRegister dst, XMMRegister src, int mode); | 1443 void pshufd(XMMRegister dst, XMMRegister src, int mode); |
1429 void pshufd(XMMRegister dst, Address src, int mode); | 1444 void pshufd(XMMRegister dst, Address src, int mode); |
1430 | 1445 |
2609 | 2624 |
2610 void divss(XMMRegister dst, XMMRegister src) { Assembler::divss(dst, src); } | 2625 void divss(XMMRegister dst, XMMRegister src) { Assembler::divss(dst, src); } |
2611 void divss(XMMRegister dst, Address src) { Assembler::divss(dst, src); } | 2626 void divss(XMMRegister dst, Address src) { Assembler::divss(dst, src); } |
2612 void divss(XMMRegister dst, AddressLiteral src); | 2627 void divss(XMMRegister dst, AddressLiteral src); |
2613 | 2628 |
2629 // Move Unaligned Double Quadword | |
2630 void movdqu(Address dst, XMMRegister src) { Assembler::movdqu(dst, src); } | |
2631 void movdqu(XMMRegister dst, Address src) { Assembler::movdqu(dst, src); } | |
2632 void movdqu(XMMRegister dst, XMMRegister src) { Assembler::movdqu(dst, src); } | |
2633 void movdqu(XMMRegister dst, AddressLiteral src); | |
2634 | |
2614 void movsd(XMMRegister dst, XMMRegister src) { Assembler::movsd(dst, src); } | 2635 void movsd(XMMRegister dst, XMMRegister src) { Assembler::movsd(dst, src); } |
2615 void movsd(Address dst, XMMRegister src) { Assembler::movsd(dst, src); } | 2636 void movsd(Address dst, XMMRegister src) { Assembler::movsd(dst, src); } |
2616 void movsd(XMMRegister dst, Address src) { Assembler::movsd(dst, src); } | 2637 void movsd(XMMRegister dst, Address src) { Assembler::movsd(dst, src); } |
2617 void movsd(XMMRegister dst, AddressLiteral src); | 2638 void movsd(XMMRegister dst, AddressLiteral src); |
2618 | 2639 |
2656 // Bitwise Logical XOR of Packed Single-Precision Floating-Point Values | 2677 // Bitwise Logical XOR of Packed Single-Precision Floating-Point Values |
2657 void xorps(XMMRegister dst, XMMRegister src) { Assembler::xorps(dst, src); } | 2678 void xorps(XMMRegister dst, XMMRegister src) { Assembler::xorps(dst, src); } |
2658 void xorps(XMMRegister dst, Address src) { Assembler::xorps(dst, src); } | 2679 void xorps(XMMRegister dst, Address src) { Assembler::xorps(dst, src); } |
2659 void xorps(XMMRegister dst, AddressLiteral src); | 2680 void xorps(XMMRegister dst, AddressLiteral src); |
2660 | 2681 |
2682 // Shuffle Bytes | |
2683 void pshufb(XMMRegister dst, XMMRegister src) { Assembler::pshufb(dst, src); } | |
2684 void pshufb(XMMRegister dst, Address src) { Assembler::pshufb(dst, src); } | |
2685 void pshufb(XMMRegister dst, AddressLiteral src); | |
2661 // AVX 3-operands instructions | 2686 // AVX 3-operands instructions |
2662 | 2687 |
2663 void vaddsd(XMMRegister dst, XMMRegister nds, XMMRegister src) { Assembler::vaddsd(dst, nds, src); } | 2688 void vaddsd(XMMRegister dst, XMMRegister nds, XMMRegister src) { Assembler::vaddsd(dst, nds, src); } |
2664 void vaddsd(XMMRegister dst, XMMRegister nds, Address src) { Assembler::vaddsd(dst, nds, src); } | 2689 void vaddsd(XMMRegister dst, XMMRegister nds, Address src) { Assembler::vaddsd(dst, nds, src); } |
2665 void vaddsd(XMMRegister dst, XMMRegister nds, AddressLiteral src); | 2690 void vaddsd(XMMRegister dst, XMMRegister nds, AddressLiteral src); |