comparison src/cpu/x86/vm/assembler_x86.hpp @ 775:93c14e5562c4

6823354: Add intrinsics for {Integer,Long}.{numberOfLeadingZeros,numberOfTrailingZeros}() Summary: These methods can be instrinsified by using bit scan, bit test, and population count instructions. Reviewed-by: kvn, never
author twisti
date Wed, 06 May 2009 00:27:52 -0700
parents e5b0439ef4ae
children 62001a362ce9
comparison
equal deleted inserted replaced
755:36ee9b69616e 775:93c14e5562c4
755 755
756 // Bitwise Logical AND of Packed Double-Precision Floating-Point Values 756 // Bitwise Logical AND of Packed Double-Precision Floating-Point Values
757 void andpd(XMMRegister dst, Address src); 757 void andpd(XMMRegister dst, Address src);
758 void andpd(XMMRegister dst, XMMRegister src); 758 void andpd(XMMRegister dst, XMMRegister src);
759 759
760 void bsfl(Register dst, Register src);
761 void bsrl(Register dst, Register src);
762
763 #ifdef _LP64
764 void bsfq(Register dst, Register src);
765 void bsrq(Register dst, Register src);
766 #endif
767
760 void bswapl(Register reg); 768 void bswapl(Register reg);
761 769
762 void bswapq(Register reg); 770 void bswapq(Register reg);
763 771
764 void call(Label& L, relocInfo::relocType rtype); 772 void call(Label& L, relocInfo::relocType rtype);
1058 emit_byte(0xAE); 1066 emit_byte(0xAE);
1059 emit_byte(0xE8); 1067 emit_byte(0xE8);
1060 } 1068 }
1061 1069
1062 void lock(); 1070 void lock();
1071
1072 void lzcntl(Register dst, Register src);
1073
1074 #ifdef _LP64
1075 void lzcntq(Register dst, Register src);
1076 #endif
1063 1077
1064 enum Membar_mask_bits { 1078 enum Membar_mask_bits {
1065 StoreStore = 1 << 3, 1079 StoreStore = 1 << 3,
1066 LoadStore = 1 << 2, 1080 LoadStore = 1 << 2,
1067 StoreLoad = 1 << 1, 1081 StoreLoad = 1 << 1,