comparison gen/asm-x86-64.h @ 1302:a26b99b7e293

Translate fsub/fdiv correctly. See #256.
author Christian Kamm <kamm incasoftware de>
date Wed, 06 May 2009 18:08:44 +0200
parents 1e30cc395d2e
children c250e03d8a5b
comparison
equal deleted inserted replaced
1301:1e30cc395d2e 1302:a26b99b7e293
2006 assert ( type_char != 0 ); 2006 assert ( type_char != 0 );
2007 insnTemplate.write(mnemonic, mlen-1) << tc_1 << type_char; 2007 insnTemplate.write(mnemonic, mlen-1) << tc_1 << type_char;
2008 } 2008 }
2009 break; 2009 break;
2010 default: 2010 default:
2011 // special case fdiv, fsub: see dmd 840, ldc 256
2012 if (strncmp(mnemonic, "fsub", 4) == 0 ||
2013 strncmp(mnemonic, "fdiv", 4) == 0)
2014 {
2015 // replace:
2016 // f{sub,div}r{p,} <-> f{sub,div}{p,}
2017 if (mnemonic[4] == 'r')
2018 {
2019 insnTemplate.write(mnemonic, 4);
2020 insnTemplate.write(mnemonic+5, strlen(mnemonic)-5);
2021 }
2022 else
2023 {
2024 insnTemplate.write(mnemonic, 4) << "r";
2025 insnTemplate.write(mnemonic+4, strlen(mnemonic)-4);
2026 }
2027 }
2028 else
2029 {
2011 insnTemplate << mnemonic; 2030 insnTemplate << mnemonic;
2012 if ( type_char ) 2031 }
2013 insnTemplate << type_char; 2032 if ( type_char )
2014 break; 2033 insnTemplate << type_char;
2034 break;
2015 } 2035 }
2016 2036
2017 switch ( opInfo->implicitClobbers & Clb_DXAX_Mask ) 2037 switch ( opInfo->implicitClobbers & Clb_DXAX_Mask )
2018 { 2038 {
2019 case Clb_SizeAX: 2039 case Clb_SizeAX: