Mercurial > hg > graal-compiler
comparison src/cpu/x86/vm/assembler_x86.hpp @ 14704:b51e29501f30
Merged with jdk9/dev/hotspot changeset 9486a41de3b7
author | twisti |
---|---|
date | Tue, 18 Mar 2014 20:19:10 -0700 |
parents | 4fc8c8bb4c32 9e9af3aa4278 |
children | 92aa6797d639 |
comparison
equal
deleted
inserted
replaced
14647:8f483e200405 | 14704:b51e29501f30 |
---|---|
588 int dst_enc = dst->encoding(); | 588 int dst_enc = dst->encoding(); |
589 int nds_enc = nds->is_valid() ? nds->encoding() : 0; | 589 int nds_enc = nds->is_valid() ? nds->encoding() : 0; |
590 vex_prefix(src, nds_enc, dst_enc, pre, VEX_OPCODE_0F, false, vector256); | 590 vex_prefix(src, nds_enc, dst_enc, pre, VEX_OPCODE_0F, false, vector256); |
591 } | 591 } |
592 | 592 |
593 void vex_prefix_0F38(Register dst, Register nds, Address src) { | |
594 bool vex_w = false; | |
595 bool vector256 = false; | |
596 vex_prefix(src, nds->encoding(), dst->encoding(), | |
597 VEX_SIMD_NONE, VEX_OPCODE_0F_38, vex_w, vector256); | |
598 } | |
599 | |
600 void vex_prefix_0F38_q(Register dst, Register nds, Address src) { | |
601 bool vex_w = true; | |
602 bool vector256 = false; | |
603 vex_prefix(src, nds->encoding(), dst->encoding(), | |
604 VEX_SIMD_NONE, VEX_OPCODE_0F_38, vex_w, vector256); | |
605 } | |
593 int vex_prefix_and_encode(int dst_enc, int nds_enc, int src_enc, | 606 int vex_prefix_and_encode(int dst_enc, int nds_enc, int src_enc, |
594 VexSimdPrefix pre, VexOpcode opc, | 607 VexSimdPrefix pre, VexOpcode opc, |
595 bool vex_w, bool vector256); | 608 bool vex_w, bool vector256); |
596 | 609 |
610 int vex_prefix_0F38_and_encode(Register dst, Register nds, Register src) { | |
611 bool vex_w = false; | |
612 bool vector256 = false; | |
613 return vex_prefix_and_encode(dst->encoding(), nds->encoding(), src->encoding(), | |
614 VEX_SIMD_NONE, VEX_OPCODE_0F_38, vex_w, vector256); | |
615 } | |
616 int vex_prefix_0F38_and_encode_q(Register dst, Register nds, Register src) { | |
617 bool vex_w = true; | |
618 bool vector256 = false; | |
619 return vex_prefix_and_encode(dst->encoding(), nds->encoding(), src->encoding(), | |
620 VEX_SIMD_NONE, VEX_OPCODE_0F_38, vex_w, vector256); | |
621 } | |
597 int vex_prefix_and_encode(XMMRegister dst, XMMRegister nds, XMMRegister src, | 622 int vex_prefix_and_encode(XMMRegister dst, XMMRegister nds, XMMRegister src, |
598 VexSimdPrefix pre, bool vector256 = false, | 623 VexSimdPrefix pre, bool vector256 = false, |
599 VexOpcode opc = VEX_OPCODE_0F) { | 624 VexOpcode opc = VEX_OPCODE_0F) { |
600 int src_enc = src->encoding(); | 625 int src_enc = src->encoding(); |
601 int dst_enc = dst->encoding(); | 626 int dst_enc = dst->encoding(); |
894 | 919 |
895 void andq(Address dst, int32_t imm32); | 920 void andq(Address dst, int32_t imm32); |
896 void andq(Register dst, int32_t imm32); | 921 void andq(Register dst, int32_t imm32); |
897 void andq(Register dst, Address src); | 922 void andq(Register dst, Address src); |
898 void andq(Register dst, Register src); | 923 void andq(Register dst, Register src); |
924 | |
925 // BMI instructions | |
926 void andnl(Register dst, Register src1, Register src2); | |
927 void andnl(Register dst, Register src1, Address src2); | |
928 void andnq(Register dst, Register src1, Register src2); | |
929 void andnq(Register dst, Register src1, Address src2); | |
930 | |
931 void blsil(Register dst, Register src); | |
932 void blsil(Register dst, Address src); | |
933 void blsiq(Register dst, Register src); | |
934 void blsiq(Register dst, Address src); | |
935 | |
936 void blsmskl(Register dst, Register src); | |
937 void blsmskl(Register dst, Address src); | |
938 void blsmskq(Register dst, Register src); | |
939 void blsmskq(Register dst, Address src); | |
940 | |
941 void blsrl(Register dst, Register src); | |
942 void blsrl(Register dst, Address src); | |
943 void blsrq(Register dst, Register src); | |
944 void blsrq(Register dst, Address src); | |
899 | 945 |
900 void bsfl(Register dst, Register src); | 946 void bsfl(Register dst, Register src); |
901 void bsrl(Register dst, Register src); | 947 void bsrl(Register dst, Register src); |
902 | 948 |
903 #ifdef _LP64 | 949 #ifdef _LP64 |
1572 void testl(Register dst, Address src); | 1618 void testl(Register dst, Address src); |
1573 | 1619 |
1574 void testq(Register dst, int32_t imm32); | 1620 void testq(Register dst, int32_t imm32); |
1575 void testq(Register dst, Register src); | 1621 void testq(Register dst, Register src); |
1576 | 1622 |
1623 // BMI - count trailing zeros | |
1624 void tzcntl(Register dst, Register src); | |
1625 void tzcntq(Register dst, Register src); | |
1577 | 1626 |
1578 // Unordered Compare Scalar Double-Precision Floating-Point Values and set EFLAGS | 1627 // Unordered Compare Scalar Double-Precision Floating-Point Values and set EFLAGS |
1579 void ucomisd(XMMRegister dst, Address src); | 1628 void ucomisd(XMMRegister dst, Address src); |
1580 void ucomisd(XMMRegister dst, XMMRegister src); | 1629 void ucomisd(XMMRegister dst, XMMRegister src); |
1581 | 1630 |