summaryrefslogtreecommitdiffstats
path: root/compiler/utils/x86/assembler_x86.cc
diff options
context:
space:
mode:
authorRoland Levillain <rpl@google.com>2015-04-13 17:00:20 +0100
committerRoland Levillain <rpl@google.com>2015-04-13 17:00:20 +0100
commit0a18601f141d864a26d4b74ff5613e69ae411483 (patch)
treef8f716fe135199e620c552244a867a8c2a6f7be9 /compiler/utils/x86/assembler_x86.cc
parent9134a1a405d471b0dfbf299ab0d4c2d629778632 (diff)
downloadart-0a18601f141d864a26d4b74ff5613e69ae411483.tar.gz
art-0a18601f141d864a26d4b74ff5613e69ae411483.tar.bz2
art-0a18601f141d864a26d4b74ff5613e69ae411483.zip
Exercise the x86 and x86-64 FILD and FISTP instructions.
- Ensure the double- and quadword x87 (FPU) instructions for integer loading (resp. fildl and fildll) are properly generated by the x86 and x86-64 generators (resp. X86Assembler::filds/X86_64Assembler::filds and X86Assembler::fildl/X86_64Assembler::fildl). - Ensure the double- and quadword x87 (FPU) instructions for integer storing & popping (resp. filstpl and fistpll) are properly generated by the x86 and x86-64 generators (resp. X86Assembler::fistps/X86_64Assembler::fistps and X86Assembler::fistpl/X86_64Assembler::fistpl). These instructions can be used in the implementation of the long-to-float and long-to-double Dex type conversions. Change-Id: Iade52a9aee326d189d77d3dbd352a2b5dab52e46
Diffstat (limited to 'compiler/utils/x86/assembler_x86.cc')
-rw-r--r--compiler/utils/x86/assembler_x86.cc7
1 files changed, 7 insertions, 0 deletions
diff --git a/compiler/utils/x86/assembler_x86.cc b/compiler/utils/x86/assembler_x86.cc
index 51cc7acbd0..329698ce1e 100644
--- a/compiler/utils/x86/assembler_x86.cc
+++ b/compiler/utils/x86/assembler_x86.cc
@@ -883,6 +883,13 @@ void X86Assembler::fildl(const Address& src) {
}
+void X86Assembler::filds(const Address& src) {
+ AssemblerBuffer::EnsureCapacity ensured(&buffer_);
+ EmitUint8(0xDB);
+ EmitOperand(0, src);
+}
+
+
void X86Assembler::fincstp() {
AssemblerBuffer::EnsureCapacity ensured(&buffer_);
EmitUint8(0xD9);