fpc/compiler/arm/armatt.inc
Jonas Maebe d1538ab023 o added ARM VPFv2/VFPv3 support:
+ RTL support:
      o VFP exceptions are disabled by default on Darwin,
        because they cause kernel panics on iPhoneOS 2.2.1 at least
      o all denormals are truncated to 0 on Darwin, because disabling
        that also causes kernel panics on iPhoneOS 2.2.1 (probably
        because otherwise denormals can also cause exceptions)
    * set softfloat rounding mode correctly for non-wince/darwin/vfp
      targets
    + compiler support: only half the number of single precision
      registers is available due to limitations of the register
      allocator
    + added a number of comments about why the stackframe on ARM is
      set up the way it is by the compiler
    + added regtype and subregtype info to regsets, because they're
      also used for VFP registers (+ support in assembler reader)
    + various generic support routines for dealing with floating point
      values located in integer registers that have to be transferred to
      mm registers (needed for VFP)
    * renamed use_sse() to use_vectorfpu() and also use it for
      ARM/vfp support
    o only superficially tested for Linux (compiler compiled with -Cpvfpv6
      -Cfvfpv2 works on a Cortex-A8, no testsuite run performed -- at least
      the fpu exception handler still needs to be implemented), Darwin has
      been tested more thoroughly
  + added ARMv6 cpu type and made it default for Darwin/ARM
  + ARMv6+ implementations of atomic operations using ldrex/strex
  * don't use r9 on Darwin/ARM, as it's reserved under certain
    circumstances (don't know yet which ones)
  * changed C-test object files for ARM/Darwin to ARMv6 versions
  * check in assembler reader that regsets are not empty, because
    instructions with a regset operand have undefined behaviour in that
    case
  * fixed resultdef of tarmtypeconvnode.first_int_to_real in case of
    int64->single type conversion
  * fixed constant pool locations in case 64 bit constants are generated,
    and/or when vfp instructions with limited reach are present

  WARNING: when using VFP on an ARMv6 or later cpu, you *must* compile all
    code with -Cparmv6 (or higher), or you will get crashes. The reason is
    that storing/restoring multiple VFP registers must happen using
    different instructions on pre/post-ARMv6.

git-svn-id: trunk@14317 -
2009-12-03 22:46:30 +00:00

204 lines
1.7 KiB
PHP

{ don't edit, this file is generated from armins.dat }
(
'none',
'abs',
'acs',
'asn',
'atn',
'adc',
'add',
'adf',
'and',
'b',
'bic',
'bl',
'blx',
'bkpt',
'bx',
'cdp',
'cmf',
'cmfe',
'cmn',
'cmp',
'clz',
'cnf',
'cos',
'dvf',
'eor',
'exp',
'fdv',
'flt',
'fix',
'fml',
'frd',
'ldc',
'ldm',
'ldrbt',
'ldrb',
'ldr',
'ldrh',
'ldrsb',
'ldrsh',
'ldrt',
'ldf',
'lfm',
'lgn',
'log',
'mcr',
'mla',
'mov',
'mrs',
'msr',
'mnf',
'muf',
'mul',
'mvf',
'mvn',
'nop',
'orr',
'rdf',
'rfs',
'rfc',
'rmf',
'rpw',
'rsb',
'rsc',
'rsf',
'rnd',
'pol',
'sbc',
'sfm',
'sin',
'smlal',
'smull',
'sqt',
'suf',
'stf',
'stm',
'str',
'strb',
'strbt',
'strh',
'strt',
'sub',
'swi',
'swp',
'swpb',
'tan',
'teq',
'tst',
'umlal',
'umull',
'wfs',
'ldrd',
'mcrr',
'mrrc',
'pld',
'qadd',
'qdadd',
'qdsub',
'qsub',
'smlabb',
'smlabt',
'smlatb',
'smlatt',
'smlalbb',
'smlalbt',
'smlaltb',
'smlaltt',
'smlawb',
'smlawt',
'smulbb',
'smulbt',
'smultb',
'smultt',
'smulwb',
'smulwt',
'strd',
'fabsd',
'fabss',
'faddd',
'fadds',
'fcmpd',
'fcmped',
'fcmpes',
'fcmpezd',
'fcmpezs',
'fcmps',
'fcmpzd',
'fcmpzs',
'fcpyd',
'fcpys',
'fcvtds',
'fcvtsd',
'fdivd',
'fdivs',
'fldd',
'fldm',
'flds',
'fmacd',
'fmacs',
'fmdhr',
'fmdlr',
'fmrdh',
'fmrdl',
'fmrs',
'fmrx',
'fmscd',
'fmscs',
'fmsr',
'fmstat',
'fmuld',
'fmuls',
'fmxr',
'fnegd',
'fnegs',
'fnmacd',
'fnmacs',
'fnmscd',
'fnmscs',
'fnmuld',
'fnmuls',
'fsitod',
'fsitos',
'fsqrtd',
'fsqrts',
'fstd',
'fstm',
'fsts',
'fsubd',
'fsubs',
'ftosid',
'ftosis',
'ftouid',
'ftouis',
'fuitod',
'fuitos',
'fmdrr',
'fmrrd',
'asr',
'lsr',
'lsl',
'ror',
'sdiv',
'udiv',
'movt',
'ldrex',
'strex',
'it',
'ite',
'itt',
'itee',
'itte',
'itet',
'ittt',
'iteee',
'ittee',
'itete',
'ittte',
'iteet',
'ittet',
'itett',
'itttt'
);