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);