Mercurial > hg > truffle
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, |