@@ -302,9 +302,6 @@ enum ScaleFactor {
302
302
303
303
class Operand BASE_EMBEDDED {
304
304
public:
305
- // reg
306
- INLINE (explicit Operand (Register reg));
307
-
308
305
// XMM reg
309
306
INLINE (explicit Operand (XMMRegister xmm_reg));
310
307
@@ -357,11 +354,8 @@ class Operand BASE_EMBEDDED {
357
354
Register reg () const ;
358
355
359
356
private:
360
- byte buf_[6 ];
361
- // The number of bytes in buf_.
362
- unsigned int len_;
363
- // Only valid if len_ > 4.
364
- RelocInfo::Mode rmode_;
357
+ // reg
358
+ INLINE (explicit Operand (Register reg));
365
359
366
360
// Set the ModRM byte without an encoded 'reg' register. The
367
361
// register is encoded later as part of the emit_operand operation.
@@ -371,7 +365,15 @@ class Operand BASE_EMBEDDED {
371
365
inline void set_disp8 (int8_t disp);
372
366
inline void set_dispr (int32_t disp, RelocInfo::Mode rmode);
373
367
368
+ byte buf_[6 ];
369
+ // The number of bytes in buf_.
370
+ unsigned int len_;
371
+ // Only valid if len_ > 4.
372
+ RelocInfo::Mode rmode_;
373
+
374
374
friend class Assembler ;
375
+ friend class MacroAssembler ;
376
+ friend class LCodeGen ;
375
377
};
376
378
377
379
@@ -680,7 +682,9 @@ class Assembler : public AssemblerBase {
680
682
void leave ();
681
683
682
684
// Moves
685
+ void mov_b (Register dst, Register src) { mov_b (dst, Operand (src)); }
683
686
void mov_b (Register dst, const Operand& src);
687
+ void mov_b (Register dst, int8_t imm8) { mov_b (Operand (dst), imm8); }
684
688
void mov_b (const Operand& dst, int8_t imm8);
685
689
void mov_b (const Operand& dst, Register src);
686
690
@@ -696,17 +700,24 @@ class Assembler : public AssemblerBase {
696
700
void mov (const Operand& dst, Handle <Object> handle);
697
701
void mov (const Operand& dst, Register src);
698
702
703
+ void movsx_b (Register dst, Register src) { movsx_b (dst, Operand (src)); }
699
704
void movsx_b (Register dst, const Operand& src);
700
705
706
+ void movsx_w (Register dst, Register src) { movsx_w (dst, Operand (src)); }
701
707
void movsx_w (Register dst, const Operand& src);
702
708
709
+ void movzx_b (Register dst, Register src) { movzx_b (dst, Operand (src)); }
703
710
void movzx_b (Register dst, const Operand& src);
704
711
712
+ void movzx_w (Register dst, Register src) { movzx_w (dst, Operand (src)); }
705
713
void movzx_w (Register dst, const Operand& src);
706
714
707
715
// Conditional moves
708
716
void cmov (Condition cc, Register dst, int32_t imm32);
709
717
void cmov (Condition cc, Register dst, Handle <Object> handle);
718
+ void cmov (Condition cc, Register dst, Register src) {
719
+ cmov (cc, dst, Operand (src));
720
+ }
710
721
void cmov (Condition cc, Register dst, const Operand& src);
711
722
712
723
// Flag management.
@@ -724,25 +735,31 @@ class Assembler : public AssemblerBase {
724
735
void adc (Register dst, int32_t imm32);
725
736
void adc (Register dst, const Operand& src);
726
737
738
+ void add (Register dst, Register src) { add (dst, Operand (src)); }
727
739
void add (Register dst, const Operand& src);
728
740
void add (const Operand& dst, Register src);
741
+ void add (Register dst, const Immediate& imm) { add (Operand (dst), imm); }
729
742
void add (const Operand& dst, const Immediate& x);
730
743
731
744
void and_ (Register dst, int32_t imm32);
732
745
void and_ (Register dst, const Immediate& x);
746
+ void and_ (Register dst, Register src) { and_ (dst, Operand (src)); }
733
747
void and_ (Register dst, const Operand& src);
734
- void and_ (const Operand& src , Register dst );
748
+ void and_ (const Operand& dst , Register src );
735
749
void and_ (const Operand& dst, const Immediate& x);
736
750
751
+ void cmpb (Register reg, int8_t imm8) { cmpb (Operand (reg), imm8); }
737
752
void cmpb (const Operand& op, int8_t imm8);
738
- void cmpb (Register src , const Operand& dst );
739
- void cmpb (const Operand& dst , Register src );
753
+ void cmpb (Register reg , const Operand& op );
754
+ void cmpb (const Operand& op , Register reg );
740
755
void cmpb_al (const Operand& op);
741
756
void cmpw_ax (const Operand& op);
742
757
void cmpw (const Operand& op, Immediate imm16);
743
758
void cmp (Register reg, int32_t imm32);
744
759
void cmp (Register reg, Handle <Object> handle);
760
+ void cmp (Register reg0, Register reg1) { cmp (reg0, Operand (reg1)); }
745
761
void cmp (Register reg, const Operand& op);
762
+ void cmp (Register reg, const Immediate& imm) { cmp (Operand (reg), imm); }
746
763
void cmp (const Operand& op, const Immediate& imm);
747
764
void cmp (const Operand& op, Handle <Object> handle);
748
765
@@ -758,6 +775,7 @@ class Assembler : public AssemblerBase {
758
775
759
776
// Signed multiply instructions.
760
777
void imul (Register src); // edx:eax = eax * src.
778
+ void imul (Register dst, Register src) { imul (dst, Operand (src)); }
761
779
void imul (Register dst, const Operand& src); // dst = dst * src.
762
780
void imul (Register dst, Register src, int32_t imm32); // dst = src * imm32.
763
781
@@ -774,8 +792,10 @@ class Assembler : public AssemblerBase {
774
792
void not_ (Register dst);
775
793
776
794
void or_ (Register dst, int32_t imm32);
795
+ void or_ (Register dst, Register src) { or_ (dst, Operand (src)); }
777
796
void or_ (Register dst, const Operand& src);
778
797
void or_ (const Operand& dst, Register src);
798
+ void or_ (Register dst, const Immediate& imm) { or_ (Operand (dst), imm); }
779
799
void or_ (const Operand& dst, const Immediate& x);
780
800
781
801
void rcl (Register dst, uint8_t imm8);
@@ -786,33 +806,42 @@ class Assembler : public AssemblerBase {
786
806
787
807
void sbb (Register dst, const Operand& src);
788
808
809
+ void shld (Register dst, Register src) { shld (dst, Operand (src)); }
789
810
void shld (Register dst, const Operand& src);
790
811
791
812
void shl (Register dst, uint8_t imm8);
792
813
void shl_cl (Register dst);
793
814
815
+ void shrd (Register dst, Register src) { shrd (dst, Operand (src)); }
794
816
void shrd (Register dst, const Operand& src);
795
817
796
818
void shr (Register dst, uint8_t imm8);
797
819
void shr_cl (Register dst);
798
820
821
+ void sub (Register dst, const Immediate& imm) { sub (Operand (dst), imm); }
799
822
void sub (const Operand& dst, const Immediate& x);
823
+ void sub (Register dst, Register src) { sub (dst, Operand (src)); }
800
824
void sub (Register dst, const Operand& src);
801
825
void sub (const Operand& dst, Register src);
802
826
803
827
void test (Register reg, const Immediate& imm);
828
+ void test (Register reg0, Register reg1) { test (reg0, Operand (reg1)); }
804
829
void test (Register reg, const Operand& op);
805
830
void test_b (Register reg, const Operand& op);
806
831
void test (const Operand& op, const Immediate& imm);
832
+ void test_b (Register reg, uint8_t imm8) { test_b (Operand (reg), imm8); }
807
833
void test_b (const Operand& op, uint8_t imm8);
808
834
809
835
void xor_ (Register dst, int32_t imm32);
836
+ void xor_ (Register dst, Register src) { xor_ (dst, Operand (src)); }
810
837
void xor_ (Register dst, const Operand& src);
811
- void xor_ (const Operand& src, Register dst);
838
+ void xor_ (const Operand& dst, Register src);
839
+ void xor_ (Register dst, const Immediate& imm) { xor_ (Operand (dst), imm); }
812
840
void xor_ (const Operand& dst, const Immediate& x);
813
841
814
842
// Bit operations.
815
843
void bt (const Operand& dst, Register src);
844
+ void bts (Register dst, Register src) { bts (Operand (dst), src); }
816
845
void bts (const Operand& dst, Register src);
817
846
818
847
// Miscellaneous
@@ -843,6 +872,7 @@ class Assembler : public AssemblerBase {
843
872
void call (Label* L);
844
873
void call (byte* entry, RelocInfo::Mode rmode);
845
874
int CallSize (const Operand& adr);
875
+ void call (Register reg) { call (Operand (reg)); }
846
876
void call (const Operand& adr);
847
877
int CallSize (Handle <Code> code, RelocInfo::Mode mode);
848
878
void call (Handle <Code> code,
@@ -853,6 +883,7 @@ class Assembler : public AssemblerBase {
853
883
// unconditional jump to L
854
884
void jmp (Label* L, Label::Distance distance = Label::kFar );
855
885
void jmp (byte* entry, RelocInfo::Mode rmode);
886
+ void jmp (Register reg) { jmp (Operand (reg)); }
856
887
void jmp (const Operand& adr);
857
888
void jmp (Handle <Code> code, RelocInfo::Mode rmode);
858
889
@@ -937,6 +968,7 @@ class Assembler : public AssemblerBase {
937
968
void cvttss2si (Register dst, const Operand& src);
938
969
void cvttsd2si (Register dst, const Operand& src);
939
970
971
+ void cvtsi2sd (XMMRegister dst, Register src) { cvtsi2sd (dst, Operand (src)); }
940
972
void cvtsi2sd (XMMRegister dst, const Operand& src);
941
973
void cvtss2sd (XMMRegister dst, XMMRegister src);
942
974
void cvtsd2ss (XMMRegister dst, XMMRegister src);
@@ -977,12 +1009,14 @@ class Assembler : public AssemblerBase {
977
1009
void movdbl (XMMRegister dst, const Operand& src);
978
1010
void movdbl (const Operand& dst, XMMRegister src);
979
1011
1012
+ void movd (XMMRegister dst, Register src) { movd (dst, Operand (src)); }
980
1013
void movd (XMMRegister dst, const Operand& src);
981
- void movd (const Operand& src, XMMRegister dst);
1014
+ void movd (Register dst, XMMRegister src) { movd (Operand (dst), src); }
1015
+ void movd (const Operand& dst, XMMRegister src);
982
1016
void movsd (XMMRegister dst, XMMRegister src);
983
1017
984
1018
void movss (XMMRegister dst, const Operand& src);
985
- void movss (const Operand& src , XMMRegister dst );
1019
+ void movss (const Operand& dst , XMMRegister src );
986
1020
void movss (XMMRegister dst, XMMRegister src);
987
1021
988
1022
void pand (XMMRegister dst, XMMRegister src);
@@ -995,11 +1029,17 @@ class Assembler : public AssemblerBase {
995
1029
void psrlq (XMMRegister reg, int8_t shift);
996
1030
void psrlq (XMMRegister dst, XMMRegister src);
997
1031
void pshufd (XMMRegister dst, XMMRegister src, int8_t shuffle);
1032
+ void pextrd (Register dst, XMMRegister src, int8_t offset) {
1033
+ pextrd (Operand (dst), src, offset);
1034
+ }
998
1035
void pextrd (const Operand& dst, XMMRegister src, int8_t offset);
1036
+ void pinsrd (XMMRegister dst, Register src, int8_t offset) {
1037
+ pinsrd (dst, Operand (src), offset);
1038
+ }
999
1039
void pinsrd (XMMRegister dst, const Operand& src, int8_t offset);
1000
1040
1001
1041
// Parallel XMM operations.
1002
- void movntdqa (XMMRegister src , const Operand& dst );
1042
+ void movntdqa (XMMRegister dst , const Operand& src );
1003
1043
void movntdq (const Operand& dst, XMMRegister src);
1004
1044
// Prefetch src position into cache level.
1005
1045
// Level 1, 2 or 3 specifies CPU cache level. Level 0 specifies a
0 commit comments