Выбор арифметики с плавающей точкой

Вопросы программирования на Free Pascal, использования компилятора и утилит.

Модератор: Модераторы

Выбор арифметики с плавающей точкой

Сообщение Иван Шихалев » 10.05.2009 22:10:55

Free Pascal поддерживает ключик выбора арифметики с плавающей точкой — “-CfXXX”, где возможные значения XXX можно посмотреть, запустив
Код: Выделить всё
fpc -i

Лично у меня выдает следующий список:
Код: Выделить всё
Supported FPU instruction sets:
  SOFT
  SSE64
  SSE3

Так вот — при выборе SSE3 (“-CfSSE3”) компилятор имеет свойство выдавать «Internal Error», номер не помню... Ошибка возникает именно при компиляции, не в Run-time, из чего я делаю вывод, что это — баг.
Вариант “-CfSSE64” работает нормально.
Аватара пользователя
Иван Шихалев
энтузиаст
 
Сообщения: 1138
Зарегистрирован: 15.05.2006 11:26:13
Откуда: Екатеринбург

Re: Выбор арифметики с плавающей точкой

Сообщение Logo » 11.05.2009 01:27:36

У меня SSE3 нет. Инфа, внизу, достаточна для сравнения?
Код: Выделить всё
Free Pascal Compiler version 2.2.4

Compiler Date      : 2009/04/13
Compiler CPU Target: x86_64

Supported targets:
  Linux for x86-64
  FreeBSD for x86-64
  Win64 for x64

Supported CPU instruction sets:
  ATHLON64

Supported FPU instruction sets:
  SOFT
  SSE64

Supported Optimizations:
  REGVAR
  STACKFRAME
  LOOPUNROLL
  TAILREC

This program comes under the GNU General Public Licence
For more information read COPYING.FPC

Report bugs,suggestions etc to:
                 bugs@freepascal.org

Logo
постоялец
 
Сообщения: 464
Зарегистрирован: 20.08.2008 01:00:47

Re: Выбор арифметики с плавающей точкой

Сообщение Иван Шихалев » 11.05.2009 03:01:26

У меня 2.3.1 SVN:
Код: Выделить всё
Free Pascal Compiler version 2.3.1

Compiler Date      : 2009/05/05
Compiler CPU Target: x86_64

Supported targets:
  Linux for x86-64
  FreeBSD for x86-64
  Win64 for x64
  Darwin for x86_64

Supported CPU instruction sets:
  ATHLON64

Supported FPU instruction sets:
  SOFT
  SSE64
  SSE3

Supported ABI targets:
  DEFAULT
  SYSV
  AIX
  EABI
  ARMEB

Supported Optimizations:
  REGVAR
  STACKFRAME
  LOOPUNROLL
  TAILREC

Supported Whole Program Optimizations:
  All
  DEVIRTCALLS
  OPTVMTS
  SYMBOLLIVENESS

Supported Microcontroller types:

This program comes under the GNU General Public Licence
For more information read COPYING.FPC

Report bugs, suggestions, etc. to:
                 http://bugs.freepascal.org
or
                 bugs@freepascal.org
Аватара пользователя
Иван Шихалев
энтузиаст
 
Сообщения: 1138
Зарегистрирован: 15.05.2006 11:26:13
Откуда: Екатеринбург

Re: Выбор арифметики с плавающей точкой

Сообщение Vadim » 11.05.2009 07:09:24

У меня вот такие:
Free Pascal Compiler version 2.2.5

Compiler Date : 2009/03/31
Compiler CPU Target: i386
...
Supported FPU instruction sets:
X87
SSE
SSE2
SSE3
...

и
Free Pascal Compiler version 2.3.1

Compiler Date : 2009/02/23
Compiler CPU Target: i386
...
Supported FPU instruction sets:
X87
SSE
SSE2
SSE3
...

Пробовал компилировать и в том и в том компиляторе по 10 раз - никаких ошибок не выскакивало.
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: Выбор арифметики с плавающей точкой

Сообщение Иван Шихалев » 11.05.2009 11:49:49

Vadim писал(а):Пробовал компилировать и в том и в том компиляторе по 10 раз - никаких ошибок не выскакивало

А операции с плавающей точкой были сами по себе? У меня засбоило при сборке Лазаря...

Добавлено спустя 3 минуты 25 секунд:
Ну и выбрать “-CfSSE3” надо при компиляции... Само наличие ее в списке сбоев не дает :)
Аватара пользователя
Иван Шихалев
энтузиаст
 
Сообщения: 1138
Зарегистрирован: 15.05.2006 11:26:13
Откуда: Екатеринбург

Re: Выбор арифметики с плавающей точкой

Сообщение Vadim » 11.05.2009 15:39:14

Иван Шихалев писал(а):Ну и выбрать “-CfSSE3” надо при компиляции...

Ну, само собой... :)
Иван Шихалев писал(а):А операции с плавающей точкой были сами по себе?


Сами по себе не были, но были операции с DateTime, а это, по-моему, как раз с плавающей точкой.
Код: Выделить всё
{-CfSSE3}
Program ds;
Uses SysUtils, DateUtils;

Var
  b: Double;
  ts: TTimeStamp;
  dd: TDateTime;
Begin
  b:=MinuteSpan(StrToDate('01.01.0001'), StrToDate('01.01.2008'));
  WriteLn(b:30:3);
  WriteLn(MinutesBetween(StrToDate('01.01.0001'), StrToDate('01.01.2008')));
  dd:=Now;
  WriteLn(Round(dd));
  WriteLn(DateTimeToUnix(dd));
  ts:=DateTimeToTimeStamp(dd);
  WriteLn(ts.Date, ' ', ts.time);
End.
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: Выбор арифметики с плавающей точкой

Сообщение Logo » 11.05.2009 19:14:29

Процессора разные.
Logo
постоялец
 
Сообщения: 464
Зарегистрирован: 20.08.2008 01:00:47

Re: Выбор арифметики с плавающей точкой

Сообщение Иван Шихалев » 11.05.2009 20:24:12

Угу. По всей видимости под 64 бита SSE3 еще не допилен.
Аватара пользователя
Иван Шихалев
энтузиаст
 
Сообщения: 1138
Зарегистрирован: 15.05.2006 11:26:13
Откуда: Екатеринбург

Re: Выбор арифметики с плавающей точкой

Сообщение Logo » 11.05.2009 20:39:55

Код: Выделить всё
~/fpc231/compiler> ./ppcx64 -i
Free Pascal Compiler version 2.3.1

Compiler Date      : 2009/05/11
Compiler CPU Target: x86_64

Supported targets:
  Linux for x86-64
  FreeBSD for x86-64
  Win64 for x64
  Darwin for x86_64

Supported CPU instruction sets:
  ATHLON64

Supported FPU instruction sets:
  SOFT
  SSE64
  SSE3

...

Это в 2.3.1 имеется с AMD 64
Немного полазил по форумах. Одни пишут, что ESS64 - 64 разрядная реализация для ESS2, в других для ESS3. Сам толком не знаю, но если это так, то в случае с процессором ATHLON64, инструкция SSE3 не должна присутствовать. Видимо всего лишь проверку упустили при отображении инструкций.
Logo
постоялец
 
Сообщения: 464
Зарегистрирован: 20.08.2008 01:00:47

Re: Выбор арифметики с плавающей точкой

Сообщение Иван Шихалев » 11.05.2009 21:10:16

Athlon64 может быть и без SSE3 — зависит от конкретной модели. См. http://en.wikipedia.org/wiki/SSE3#CPUs_with_SSE3
# Athlon 64 (since Venice Stepping E3 and San Diego Stepping E4)
# Athlon 64 X2
# Athlon 64 FX (since San Diego Stepping E4)

Курсив мой.

А вот SSE2 там есть везде.
Аватара пользователя
Иван Шихалев
энтузиаст
 
Сообщения: 1138
Зарегистрирован: 15.05.2006 11:26:13
Откуда: Екатеринбург


Вернуться в Free Pascal Compiler

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4

Рейтинг@Mail.ru