Changeset 85d44c6 for src/ResolvExpr


Ignore:
Timestamp:
Feb 14, 2019, 10:23:51 PM (7 years ago)
Author:
Peter A. Buhr <pabuhr@…>
Branches:
ADT, aaron-thesis, arm-eh, ast-experimental, cleanup-dtors, enum, forall-pointer-decay, jacob/cs343-translation, jenkins-sandbox, master, new-ast, new-ast-unique-expr, persistent-indexer, pthread-emulation, qualifiedEnum
Children:
fba51ab
Parents:
6d01d89 (diff), e15853c (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
Message:

fix conflict

Location:
src/ResolvExpr
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • src/ResolvExpr/CommonType.cc

    r6d01d89 r85d44c6  
    1010// Created On       : Sun May 17 06:59:27 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Mon Sep 25 15:18:17 2017
    13 // Update Count     : 9
     12// Last Modified On : Wed Feb 13 22:30:32 2019
     13// Update Count     : 22
    1414//
    1515
     
    175175                return result;
    176176        }
    177 
     177#if 0
     178        #define BT BasicType::
    178179        static const BasicType::Kind combinedType[][ BasicType::NUMBER_OF_BASIC_TYPES ] =
    179180        {
    180181/*              Bool            Char    SignedChar      UnsignedChar    ShortSignedInt  ShortUnsignedInt        SignedInt       UnsignedInt     LongSignedInt   LongUnsignedInt LongLongSignedInt       LongLongUnsignedInt     Float   Double  LongDouble      FloatComplex    DoubleComplex   LongDoubleComplex       FloatImaginary  DoubleImaginary LongDoubleImaginary   SignedInt128   UnsignedInt128   Float80   Float128 */
    181                 /* Bool */      { BasicType::Bool,              BasicType::Char,        BasicType::SignedChar,  BasicType::UnsignedChar,        BasicType::ShortSignedInt,      BasicType::ShortUnsignedInt,    BasicType::SignedInt,   BasicType::UnsignedInt, BasicType::LongSignedInt,       BasicType::LongUnsignedInt,     BasicType::LongLongSignedInt,   BasicType::LongLongUnsignedInt, BasicType::Float,       BasicType::Double,      BasicType::LongDouble,  BasicType::FloatComplex,        BasicType::DoubleComplex,       BasicType::LongDoubleComplex,   BasicType::FloatComplex,        BasicType::DoubleComplex,       BasicType::LongDoubleComplex,   BasicType::SignedInt128,        BasicType::UnsignedInt128, BasicType::Float80, BasicType::Float128 },
    182                 /* Char */      { BasicType::Char,              BasicType::Char,        BasicType::UnsignedChar,        BasicType::UnsignedChar,        BasicType::ShortSignedInt,      BasicType::ShortUnsignedInt,    BasicType::SignedInt,   BasicType::UnsignedInt, BasicType::LongSignedInt,       BasicType::LongUnsignedInt,     BasicType::LongLongSignedInt,   BasicType::LongLongUnsignedInt, BasicType::Float,       BasicType::Double,      BasicType::LongDouble,  BasicType::FloatComplex,        BasicType::DoubleComplex,       BasicType::LongDoubleComplex,   BasicType::FloatComplex,        BasicType::DoubleComplex,       BasicType::LongDoubleComplex,   BasicType::SignedInt128,        BasicType::UnsignedInt128, BasicType::Float80, BasicType::Float128 },
    183                 /* SignedChar */        { BasicType::SignedChar,        BasicType::UnsignedChar,        BasicType::SignedChar,  BasicType::UnsignedChar,        BasicType::ShortSignedInt,      BasicType::ShortUnsignedInt,    BasicType::SignedInt,   BasicType::UnsignedInt, BasicType::LongSignedInt,       BasicType::LongUnsignedInt,     BasicType::LongLongSignedInt,   BasicType::LongLongUnsignedInt, BasicType::Float,       BasicType::Double,      BasicType::LongDouble,  BasicType::FloatComplex,        BasicType::DoubleComplex,       BasicType::LongDoubleComplex,   BasicType::FloatComplex,        BasicType::DoubleComplex,       BasicType::LongDoubleComplex,   BasicType::SignedInt128,        BasicType::UnsignedInt128, BasicType::Float80, BasicType::Float128 },
    184                 /* UnsignedChar */      { BasicType::UnsignedChar,      BasicType::UnsignedChar,        BasicType::UnsignedChar,        BasicType::UnsignedChar,        BasicType::ShortSignedInt,      BasicType::ShortUnsignedInt,    BasicType::SignedInt,   BasicType::UnsignedInt, BasicType::LongSignedInt,       BasicType::LongUnsignedInt,     BasicType::LongLongSignedInt,   BasicType::LongLongUnsignedInt, BasicType::Float,       BasicType::Double,      BasicType::LongDouble,  BasicType::FloatComplex,        BasicType::DoubleComplex,       BasicType::LongDoubleComplex,   BasicType::FloatComplex,        BasicType::DoubleComplex,       BasicType::LongDoubleComplex,   BasicType::SignedInt128,        BasicType::UnsignedInt128, BasicType::Float80, BasicType::Float128 },
    185                 /* ShortSignedInt */    { BasicType::ShortSignedInt,    BasicType::ShortSignedInt,      BasicType::ShortSignedInt,      BasicType::ShortSignedInt,      BasicType::ShortSignedInt,      BasicType::ShortUnsignedInt,    BasicType::SignedInt,   BasicType::UnsignedInt, BasicType::LongSignedInt,       BasicType::LongUnsignedInt,     BasicType::LongLongSignedInt,   BasicType::LongLongUnsignedInt, BasicType::Float,       BasicType::Double,      BasicType::LongDouble,  BasicType::FloatComplex,        BasicType::DoubleComplex,       BasicType::LongDoubleComplex,   BasicType::FloatComplex,        BasicType::DoubleComplex,       BasicType::LongDoubleComplex,   BasicType::SignedInt128,        BasicType::UnsignedInt128, BasicType::Float80, BasicType::Float128 },
    186                 /* ShortUnsignedInt */  { BasicType::ShortUnsignedInt,  BasicType::ShortUnsignedInt,    BasicType::ShortUnsignedInt,    BasicType::ShortUnsignedInt,    BasicType::ShortUnsignedInt,    BasicType::ShortUnsignedInt,    BasicType::SignedInt,   BasicType::UnsignedInt, BasicType::LongSignedInt,       BasicType::LongUnsignedInt,     BasicType::LongLongSignedInt,   BasicType::LongLongUnsignedInt, BasicType::Float,       BasicType::Double,      BasicType::LongDouble,  BasicType::FloatComplex,        BasicType::DoubleComplex,       BasicType::LongDoubleComplex,   BasicType::FloatComplex,        BasicType::DoubleComplex,       BasicType::LongDoubleComplex,   BasicType::SignedInt128,        BasicType::UnsignedInt128, BasicType::Float80, BasicType::Float128 },
    187                 /* SignedInt */         { BasicType::SignedInt,         BasicType::SignedInt,   BasicType::SignedInt,   BasicType::SignedInt,   BasicType::SignedInt,   BasicType::SignedInt,   BasicType::SignedInt,   BasicType::UnsignedInt, BasicType::LongSignedInt,       BasicType::LongUnsignedInt,     BasicType::LongLongSignedInt,   BasicType::LongLongUnsignedInt, BasicType::Float,       BasicType::Double,      BasicType::LongDouble,  BasicType::FloatComplex,        BasicType::DoubleComplex,       BasicType::LongDoubleComplex,   BasicType::FloatComplex,        BasicType::DoubleComplex,       BasicType::LongDoubleComplex,   BasicType::SignedInt128,        BasicType::UnsignedInt128, BasicType::Float80, BasicType::Float128 },
    188                 /* UnsignedInt */       { BasicType::UnsignedInt,               BasicType::UnsignedInt, BasicType::UnsignedInt, BasicType::UnsignedInt, BasicType::UnsignedInt, BasicType::UnsignedInt, BasicType::UnsignedInt, BasicType::UnsignedInt, BasicType::LongUnsignedInt,     BasicType::LongUnsignedInt,     BasicType::LongLongSignedInt,   BasicType::LongLongUnsignedInt, BasicType::Float,       BasicType::Double,      BasicType::LongDouble,  BasicType::FloatComplex,        BasicType::DoubleComplex,       BasicType::LongDoubleComplex,   BasicType::FloatComplex,        BasicType::DoubleComplex,       BasicType::LongDoubleComplex,   BasicType::SignedInt128,        BasicType::UnsignedInt128, BasicType::Float80, BasicType::Float128 },
    189                 /* LongSignedInt */     { BasicType::LongSignedInt,             BasicType::LongSignedInt,       BasicType::LongSignedInt,       BasicType::LongSignedInt,       BasicType::LongSignedInt,       BasicType::LongSignedInt,       BasicType::LongSignedInt,       BasicType::LongUnsignedInt,     BasicType::LongSignedInt,       BasicType::LongUnsignedInt,     BasicType::LongLongSignedInt,   BasicType::LongLongUnsignedInt, BasicType::Float,       BasicType::Double,      BasicType::LongDouble,  BasicType::FloatComplex,        BasicType::DoubleComplex,       BasicType::LongDoubleComplex,   BasicType::FloatComplex,        BasicType::DoubleComplex,       BasicType::LongDoubleComplex,   BasicType::SignedInt128,        BasicType::UnsignedInt128, BasicType::Float80, BasicType::Float128 },
    190                 /* LongUnsignedInt */   { BasicType::LongUnsignedInt,   BasicType::LongUnsignedInt,     BasicType::LongUnsignedInt,     BasicType::LongUnsignedInt,     BasicType::LongUnsignedInt,     BasicType::LongUnsignedInt,     BasicType::LongUnsignedInt,     BasicType::LongUnsignedInt,     BasicType::LongUnsignedInt,     BasicType::LongUnsignedInt,     BasicType::LongLongSignedInt,   BasicType::LongLongUnsignedInt, BasicType::Float,       BasicType::Double,      BasicType::LongDouble,  BasicType::FloatComplex,        BasicType::DoubleComplex,       BasicType::LongDoubleComplex,   BasicType::FloatComplex,        BasicType::DoubleComplex,       BasicType::LongDoubleComplex,   BasicType::SignedInt128,        BasicType::UnsignedInt128, BasicType::Float80, BasicType::Float128 },
    191                 /* LongLongSignedInt */         { BasicType::LongLongSignedInt, BasicType::LongLongSignedInt,   BasicType::LongLongSignedInt,   BasicType::LongLongSignedInt,   BasicType::LongLongSignedInt,   BasicType::LongLongSignedInt,   BasicType::LongLongSignedInt,   BasicType::LongLongSignedInt,   BasicType::LongLongSignedInt,   BasicType::LongLongSignedInt,   BasicType::LongLongSignedInt,   BasicType::LongLongUnsignedInt, BasicType::Float,       BasicType::Double,      BasicType::LongDouble,  BasicType::FloatComplex,        BasicType::DoubleComplex,       BasicType::LongDoubleComplex,   BasicType::FloatComplex,        BasicType::DoubleComplex,       BasicType::LongDoubleComplex,   BasicType::SignedInt128,        BasicType::UnsignedInt128, BasicType::Float80, BasicType::Float128 },
    192                 /* LongLongUnsignedInt */       { BasicType::LongLongUnsignedInt,       BasicType::LongLongUnsignedInt, BasicType::LongLongUnsignedInt, BasicType::LongLongUnsignedInt, BasicType::LongLongUnsignedInt, BasicType::LongLongUnsignedInt, BasicType::LongLongUnsignedInt, BasicType::LongLongUnsignedInt, BasicType::LongLongUnsignedInt, BasicType::LongLongUnsignedInt, BasicType::LongLongUnsignedInt, BasicType::LongLongUnsignedInt, BasicType::Float,       BasicType::Double,      BasicType::LongDouble,  BasicType::FloatComplex,        BasicType::DoubleComplex,       BasicType::LongDoubleComplex,   BasicType::FloatComplex,        BasicType::DoubleComplex,       BasicType::LongDoubleComplex,   BasicType::SignedInt128,        BasicType::UnsignedInt128, BasicType::Float80, BasicType::Float128 },
    193                 /* Float */     { BasicType::Float,     BasicType::Float,       BasicType::Float,       BasicType::Float,       BasicType::Float,       BasicType::Float,       BasicType::Float,       BasicType::Float,       BasicType::Float,       BasicType::Float,       BasicType::Float,       BasicType::Float,       BasicType::Float,       BasicType::Double,      BasicType::LongDouble,  BasicType::FloatComplex,        BasicType::DoubleComplex,       BasicType::LongDoubleComplex,   BasicType::FloatComplex,        BasicType::DoubleComplex,       BasicType::LongDoubleComplex,   BasicType::Float,       BasicType::Float, BasicType::Float80, BasicType::Float128 },
    194                 /* Double */    { BasicType::Double,    BasicType::Double,      BasicType::Double,      BasicType::Double,      BasicType::Double,      BasicType::Double,      BasicType::Double,      BasicType::Double,      BasicType::Double,      BasicType::Double,      BasicType::Double,      BasicType::Double,      BasicType::Double,      BasicType::Double,      BasicType::LongDouble,  BasicType::DoubleComplex,       BasicType::DoubleComplex,       BasicType::LongDoubleComplex,   BasicType::DoubleComplex,       BasicType::DoubleComplex,       BasicType::LongDoubleComplex,   BasicType::Double,      BasicType::Double, BasicType::Float80, BasicType::Float128 },
    195                 /* LongDouble */        { BasicType::LongDouble,                BasicType::LongDouble,  BasicType::LongDouble,  BasicType::LongDouble,  BasicType::LongDouble,  BasicType::LongDouble,  BasicType::LongDouble,  BasicType::LongDouble,  BasicType::LongDouble,  BasicType::LongDouble,  BasicType::LongDouble,  BasicType::LongDouble,  BasicType::LongDouble,  BasicType::LongDouble,  BasicType::LongDouble,  BasicType::LongDoubleComplex,   BasicType::LongDoubleComplex,   BasicType::LongDoubleComplex,   BasicType::LongDoubleComplex,   BasicType::LongDoubleComplex,   BasicType::LongDoubleComplex,   BasicType::LongDouble,  BasicType::LongDouble, BasicType::BasicType::LongDouble, BasicType::Float128 },
    196                 /* FloatComplex */      { BasicType::FloatComplex,      BasicType::FloatComplex,        BasicType::FloatComplex,        BasicType::FloatComplex,        BasicType::FloatComplex,        BasicType::FloatComplex,        BasicType::FloatComplex,        BasicType::FloatComplex,        BasicType::FloatComplex,        BasicType::FloatComplex,        BasicType::FloatComplex,        BasicType::FloatComplex,        BasicType::FloatComplex,        BasicType::DoubleComplex,       BasicType::LongDoubleComplex,   BasicType::FloatComplex,        BasicType::DoubleComplex,       BasicType::LongDoubleComplex,   BasicType::FloatComplex,        BasicType::DoubleComplex,       BasicType::LongDoubleComplex,   BasicType::FloatComplex,        BasicType::FloatComplex, BasicType::LongDoubleComplex, BasicType::LongDoubleComplex, },
    197                 /* DoubleComplex */     { BasicType::DoubleComplex,     BasicType::DoubleComplex,       BasicType::DoubleComplex,       BasicType::DoubleComplex,       BasicType::DoubleComplex,       BasicType::DoubleComplex,       BasicType::DoubleComplex,       BasicType::DoubleComplex,       BasicType::DoubleComplex,       BasicType::DoubleComplex,       BasicType::DoubleComplex,       BasicType::DoubleComplex,       BasicType::DoubleComplex,       BasicType::DoubleComplex,       BasicType::LongDoubleComplex,   BasicType::DoubleComplex,       BasicType::DoubleComplex,       BasicType::LongDoubleComplex,   BasicType::DoubleComplex,       BasicType::DoubleComplex,       BasicType::LongDoubleComplex,   BasicType::DoubleComplex,       BasicType::DoubleComplex, BasicType::LongDoubleComplex, BasicType::LongDoubleComplex },
    198                 /* LongDoubleComplex */         { BasicType::LongDoubleComplex, BasicType::LongDoubleComplex,   BasicType::LongDoubleComplex,   BasicType::LongDoubleComplex,   BasicType::LongDoubleComplex,   BasicType::LongDoubleComplex,   BasicType::LongDoubleComplex,   BasicType::LongDoubleComplex,   BasicType::LongDoubleComplex,   BasicType::LongDoubleComplex,   BasicType::LongDoubleComplex,   BasicType::LongDoubleComplex,   BasicType::LongDoubleComplex,   BasicType::LongDoubleComplex,   BasicType::LongDoubleComplex,   BasicType::LongDoubleComplex,   BasicType::LongDoubleComplex,   BasicType::LongDoubleComplex,   BasicType::LongDoubleComplex,   BasicType::LongDoubleComplex,   BasicType::LongDoubleComplex,   BasicType::LongDoubleComplex,   BasicType::LongDoubleComplex, BasicType::LongDoubleComplex, BasicType::LongDoubleComplex, },
    199                 /* FloatImaginary */    { BasicType::FloatComplex,      BasicType::FloatComplex,        BasicType::FloatComplex,        BasicType::FloatComplex,        BasicType::FloatComplex,        BasicType::FloatComplex,        BasicType::FloatComplex,        BasicType::FloatComplex,        BasicType::FloatComplex,        BasicType::FloatComplex,        BasicType::FloatComplex,        BasicType::FloatComplex,        BasicType::FloatComplex,        BasicType::DoubleComplex,       BasicType::LongDoubleComplex,   BasicType::FloatComplex,        BasicType::DoubleComplex,       BasicType::LongDoubleComplex,   BasicType::FloatImaginary,      BasicType::DoubleImaginary,     BasicType::LongDoubleImaginary, BasicType::FloatImaginary,      BasicType::FloatImaginary, BasicType::LongDoubleImaginary, BasicType::LongDoubleImaginary, },
    200                 /* DoubleImaginary */   { BasicType::DoubleComplex,     BasicType::DoubleComplex,       BasicType::DoubleComplex,       BasicType::DoubleComplex,       BasicType::DoubleComplex,       BasicType::DoubleComplex,       BasicType::DoubleComplex,       BasicType::DoubleComplex,       BasicType::DoubleComplex,       BasicType::DoubleComplex,       BasicType::DoubleComplex,       BasicType::DoubleComplex,       BasicType::DoubleComplex,       BasicType::DoubleComplex,       BasicType::LongDoubleComplex,   BasicType::DoubleComplex,       BasicType::DoubleComplex,       BasicType::LongDoubleComplex,   BasicType::DoubleImaginary,     BasicType::DoubleImaginary,     BasicType::LongDoubleImaginary, BasicType::DoubleImaginary,     BasicType::DoubleImaginary, BasicType::LongDoubleImaginary, BasicType::LongDoubleImaginary, },
    201                 /* LongDoubleImaginary */       { BasicType::LongDoubleComplex, BasicType::LongDoubleComplex,   BasicType::LongDoubleComplex,   BasicType::LongDoubleComplex,   BasicType::LongDoubleComplex,   BasicType::LongDoubleComplex,   BasicType::LongDoubleComplex,   BasicType::LongDoubleComplex,   BasicType::LongDoubleComplex,   BasicType::LongDoubleComplex,   BasicType::LongDoubleComplex,   BasicType::LongDoubleComplex,   BasicType::LongDoubleComplex,   BasicType::LongDoubleComplex,   BasicType::LongDoubleComplex,   BasicType::LongDoubleComplex,   BasicType::LongDoubleComplex,   BasicType::LongDoubleComplex,   BasicType::LongDoubleImaginary, BasicType::LongDoubleImaginary, BasicType::LongDoubleImaginary, BasicType::LongDoubleImaginary, BasicType::LongDoubleImaginary, },
    202                 /* SignedInt128 */      { BasicType::SignedInt128,      BasicType::SignedInt128,        BasicType::SignedInt128,        BasicType::SignedInt128,        BasicType::SignedInt128,        BasicType::SignedInt128,        BasicType::SignedInt128,        BasicType::SignedInt128,        BasicType::SignedInt128,        BasicType::SignedInt128,        BasicType::SignedInt128,        BasicType::SignedInt128,        BasicType::Float,       BasicType::Double,      BasicType::LongDouble,  BasicType::FloatComplex,        BasicType::DoubleComplex,       BasicType::LongDoubleComplex,   BasicType::FloatComplex,        BasicType::DoubleComplex,       BasicType::LongDoubleComplex,   BasicType::SignedInt128,        BasicType::UnsignedInt128, BasicType::Float80, BasicType::Float128, },
    203                 /* UnsignedInt128 */    { BasicType::UnsignedInt128,    BasicType::UnsignedInt128,      BasicType::UnsignedInt128,      BasicType::UnsignedInt128,      BasicType::UnsignedInt128,      BasicType::UnsignedInt128,      BasicType::UnsignedInt128,      BasicType::UnsignedInt128,      BasicType::UnsignedInt128,      BasicType::UnsignedInt128,      BasicType::UnsignedInt128,      BasicType::UnsignedInt128,      BasicType::Float,       BasicType::Double,      BasicType::LongDouble,  BasicType::FloatComplex,        BasicType::DoubleComplex,       BasicType::LongDoubleComplex,   BasicType::FloatComplex,        BasicType::DoubleComplex,       BasicType::LongDoubleComplex,   BasicType::UnsignedInt128,      BasicType::UnsignedInt128, BasicType::Float80, BasicType::Float128, },
    204                 /* Float80 */   { BasicType::Float80,   BasicType::Float80,     BasicType::Float80,     BasicType::Float80,     BasicType::Float80,     BasicType::Float80,     BasicType::Float80,     BasicType::Float80,     BasicType::Float80,     BasicType::Float80,     BasicType::Float80,     BasicType::Float80,     BasicType::Float80,     BasicType::Float80,     BasicType::LongDouble,  BasicType::LongDoubleComplex,   BasicType::LongDoubleComplex,   BasicType::LongDoubleComplex,   BasicType::LongDoubleComplex,   BasicType::LongDoubleComplex,   BasicType::LongDoubleComplex,   BasicType::Float80,     BasicType::Float80, BasicType::Float80, BasicType::Float128 },
    205                 /* Float128 */  { BasicType::Float128,  BasicType::Float128,    BasicType::Float128,    BasicType::Float128,    BasicType::Float128,    BasicType::Float128,    BasicType::Float128,    BasicType::Float128,    BasicType::Float128,    BasicType::Float128,    BasicType::Float128,    BasicType::Float128,    BasicType::Float128,    BasicType::Float128,    BasicType::Float128,    BasicType::LongDoubleComplex,   BasicType::LongDoubleComplex,   BasicType::LongDoubleComplex,   BasicType::LongDoubleComplex,   BasicType::LongDoubleComplex,   BasicType::LongDoubleComplex,   BasicType::Float128,    BasicType::Float128, BasicType::Float128, BasicType::Float128 },
     182                /* Bool */      { BT Bool,              BT Char,        BT SignedChar,  BT UnsignedChar,        BT ShortSignedInt,      BT ShortUnsignedInt,    BT SignedInt,   BT UnsignedInt, BT LongSignedInt,       BT LongUnsignedInt,     BT LongLongSignedInt,   BT LongLongUnsignedInt, BT Float,       BT Double,      BT LongDouble,  BT FloatComplex,        BT DoubleComplex,       BT LongDoubleComplex,   BT FloatComplex,        BT DoubleComplex,       BT LongDoubleComplex,   BT SignedInt128,        BT UnsignedInt128, BT Float80, BT Float128, BT _Float16, BT _Float32, BT _Float32x, BT _Float64, BT _Float64x, BT _Float128, BT _Float128x, BT _Float16Complex, BT _Float32Complex, BT _Float32xComplex, BT _Float64Complex, BT _Float64xComplex, BT _Float128Complex, BT _Float128xComplex },
     183                /* Char */      { BT Char,              BT Char,        BT UnsignedChar,        BT UnsignedChar,        BT ShortSignedInt,      BT ShortUnsignedInt,    BT SignedInt,   BT UnsignedInt, BT LongSignedInt,       BT LongUnsignedInt,     BT LongLongSignedInt,   BT LongLongUnsignedInt, BT Float,       BT Double,      BT LongDouble,  BT FloatComplex,        BT DoubleComplex,       BT LongDoubleComplex,   BT FloatComplex,        BT DoubleComplex,       BT LongDoubleComplex,   BT SignedInt128,        BT UnsignedInt128, BT Float80, BT Float128, BT _Float16, BT _Float32, BT _Float32x, BT _Float64, BT _Float64x, BT _Float128, BT _Float128x, BT _Float16Complex, BT _Float32Complex, BT _Float32xComplex, BT _Float64Complex, BT _Float64xComplex, BT _Float128Complex, BT _Float128xComplex },
     184                /* SignedChar */        { BT SignedChar,        BT UnsignedChar,        BT SignedChar,  BT UnsignedChar,        BT ShortSignedInt,      BT ShortUnsignedInt,    BT SignedInt,   BT UnsignedInt, BT LongSignedInt,       BT LongUnsignedInt,     BT LongLongSignedInt,   BT LongLongUnsignedInt, BT Float,       BT Double,      BT LongDouble,  BT FloatComplex,        BT DoubleComplex,       BT LongDoubleComplex,   BT FloatComplex,        BT DoubleComplex,       BT LongDoubleComplex,   BT SignedInt128,        BT UnsignedInt128, BT Float80, BT Float128, BT _Float16, BT _Float32, BT _Float32x, BT _Float64, BT _Float64x, BT _Float128, BT _Float128x, BT _Float16Complex, BT _Float32Complex, BT _Float32xComplex, BT _Float64Complex, BT _Float64xComplex, BT _Float128Complex, BT _Float128xComplex },
     185                /* UnsignedChar */      { BT UnsignedChar,      BT UnsignedChar,        BT UnsignedChar,        BT UnsignedChar,        BT ShortSignedInt,      BT ShortUnsignedInt,    BT SignedInt,   BT UnsignedInt, BT LongSignedInt,       BT LongUnsignedInt,     BT LongLongSignedInt,   BT LongLongUnsignedInt, BT Float,       BT Double,      BT LongDouble,  BT FloatComplex,        BT DoubleComplex,       BT LongDoubleComplex,   BT FloatComplex,        BT DoubleComplex,       BT LongDoubleComplex,   BT SignedInt128,        BT UnsignedInt128, BT Float80, BT Float128, BT _Float16, BT _Float32, BT _Float32x, BT _Float64, BT _Float64x, BT _Float128, BT _Float128x, BT _Float16Complex, BT _Float32Complex, BT _Float32xComplex, BT _Float64Complex, BT _Float64xComplex, BT _Float128Complex, BT _Float128xComplex },
     186                /* ShortSignedInt */    { BT ShortSignedInt,    BT ShortSignedInt,      BT ShortSignedInt,      BT ShortSignedInt,      BT ShortSignedInt,      BT ShortUnsignedInt,    BT SignedInt,   BT UnsignedInt, BT LongSignedInt,       BT LongUnsignedInt,     BT LongLongSignedInt,   BT LongLongUnsignedInt, BT Float,       BT Double,      BT LongDouble,  BT FloatComplex,        BT DoubleComplex,       BT LongDoubleComplex,   BT FloatComplex,        BT DoubleComplex,       BT LongDoubleComplex,   BT SignedInt128,        BT UnsignedInt128, BT Float80, BT Float128, BT _Float16, BT _Float32, BT _Float32x, BT _Float64, BT _Float64x, BT _Float128, BT _Float128x, BT _Float16Complex, BT _Float32Complex, BT _Float32xComplex, BT _Float64Complex, BT _Float64xComplex, BT _Float128Complex, BT _Float128xComplex },
     187                /* ShortUnsignedInt */  { BT ShortUnsignedInt,  BT ShortUnsignedInt,    BT ShortUnsignedInt,    BT ShortUnsignedInt,    BT ShortUnsignedInt,    BT ShortUnsignedInt,    BT SignedInt,   BT UnsignedInt, BT LongSignedInt,       BT LongUnsignedInt,     BT LongLongSignedInt,   BT LongLongUnsignedInt, BT Float,       BT Double,      BT LongDouble,  BT FloatComplex,        BT DoubleComplex,       BT LongDoubleComplex,   BT FloatComplex,        BT DoubleComplex,       BT LongDoubleComplex,   BT SignedInt128,        BT UnsignedInt128, BT Float80, BT Float128, BT _Float16, BT _Float32, BT _Float32x, BT _Float64, BT _Float64x, BT _Float128, BT _Float128x, BT _Float16Complex, BT _Float32Complex, BT _Float32xComplex, BT _Float64Complex, BT _Float64xComplex, BT _Float128Complex, BT _Float128xComplex },
     188                /* SignedInt */         { BT SignedInt,         BT SignedInt,   BT SignedInt,   BT SignedInt,   BT SignedInt,   BT SignedInt,   BT SignedInt,   BT UnsignedInt, BT LongSignedInt,       BT LongUnsignedInt,     BT LongLongSignedInt,   BT LongLongUnsignedInt, BT Float,       BT Double,      BT LongDouble,  BT FloatComplex,        BT DoubleComplex,       BT LongDoubleComplex,   BT FloatComplex,        BT DoubleComplex,       BT LongDoubleComplex,   BT SignedInt128,        BT UnsignedInt128, BT Float80, BT Float128, BT _Float16, BT _Float32, BT _Float32x, BT _Float64, BT _Float64x, BT _Float128, BT _Float128x, BT _Float16Complex, BT _Float32Complex, BT _Float32xComplex, BT _Float64Complex, BT _Float64xComplex, BT _Float128Complex, BT _Float128xComplex },
     189                /* UnsignedInt */       { BT UnsignedInt,               BT UnsignedInt, BT UnsignedInt, BT UnsignedInt, BT UnsignedInt, BT UnsignedInt, BT UnsignedInt, BT UnsignedInt, BT LongUnsignedInt,     BT LongUnsignedInt,     BT LongLongSignedInt,   BT LongLongUnsignedInt, BT Float,       BT Double,      BT LongDouble,  BT FloatComplex,        BT DoubleComplex,       BT LongDoubleComplex,   BT FloatComplex,        BT DoubleComplex,       BT LongDoubleComplex,   BT SignedInt128,        BT UnsignedInt128, BT Float80, BT Float128, BT _Float16, BT _Float32, BT _Float32x, BT _Float64, BT _Float64x, BT _Float128, BT _Float128x, BT _Float16Complex, BT _Float32Complex, BT _Float32xComplex, BT _Float64Complex, BT _Float64xComplex, BT _Float128Complex, BT _Float128xComplex },
     190                /* LongSignedInt */     { BT LongSignedInt,             BT LongSignedInt,       BT LongSignedInt,       BT LongSignedInt,       BT LongSignedInt,       BT LongSignedInt,       BT LongSignedInt,       BT LongUnsignedInt,     BT LongSignedInt,       BT LongUnsignedInt,     BT LongLongSignedInt,   BT LongLongUnsignedInt, BT Float,       BT Double,      BT LongDouble,  BT FloatComplex,        BT DoubleComplex,       BT LongDoubleComplex,   BT FloatComplex,        BT DoubleComplex,       BT LongDoubleComplex,   BT SignedInt128,        BT UnsignedInt128, BT Float80, BT Float128, BT _Float16, BT _Float32, BT _Float32x, BT _Float64, BT _Float64x, BT _Float128, BT _Float128x, BT _Float16Complex, BT _Float32Complex, BT _Float32xComplex, BT _Float64Complex, BT _Float64xComplex, BT _Float128Complex, BT _Float128xComplex },
     191                /* LongUnsignedInt */   { BT LongUnsignedInt,   BT LongUnsignedInt,     BT LongUnsignedInt,     BT LongUnsignedInt,     BT LongUnsignedInt,     BT LongUnsignedInt,     BT LongUnsignedInt,     BT LongUnsignedInt,     BT LongUnsignedInt,     BT LongUnsignedInt,     BT LongLongSignedInt,   BT LongLongUnsignedInt, BT Float,       BT Double,      BT LongDouble,  BT FloatComplex,        BT DoubleComplex,       BT LongDoubleComplex,   BT FloatComplex,        BT DoubleComplex,       BT LongDoubleComplex,   BT SignedInt128,        BT UnsignedInt128, BT Float80, BT Float128, BT _Float16, BT _Float32, BT _Float32x, BT _Float64, BT _Float64x, BT _Float128, BT _Float128x, BT _Float16Complex, BT _Float32Complex, BT _Float32xComplex, BT _Float64Complex, BT _Float64xComplex, BT _Float128Complex, BT _Float128xComplex },
     192                /* LongLongSignedInt */         { BT LongLongSignedInt, BT LongLongSignedInt,   BT LongLongSignedInt,   BT LongLongSignedInt,   BT LongLongSignedInt,   BT LongLongSignedInt,   BT LongLongSignedInt,   BT LongLongSignedInt,   BT LongLongSignedInt,   BT LongLongSignedInt,   BT LongLongSignedInt,   BT LongLongUnsignedInt, BT Float,       BT Double,      BT LongDouble,  BT FloatComplex,        BT DoubleComplex,       BT LongDoubleComplex,   BT FloatComplex,        BT DoubleComplex,       BT LongDoubleComplex,   BT SignedInt128,        BT UnsignedInt128, BT Float80, BT Float128, BT _Float16, BT _Float32, BT _Float32x, BT _Float64, BT _Float64x, BT _Float128, BT _Float128x, BT _Float16Complex, BT _Float32Complex, BT _Float32xComplex, BT _Float64Complex, BT _Float64xComplex, BT _Float128Complex, BT _Float128xComplex },
     193                /* LongLongUnsignedInt */       { BT LongLongUnsignedInt,       BT LongLongUnsignedInt, BT LongLongUnsignedInt, BT LongLongUnsignedInt, BT LongLongUnsignedInt, BT LongLongUnsignedInt, BT LongLongUnsignedInt, BT LongLongUnsignedInt, BT LongLongUnsignedInt, BT LongLongUnsignedInt, BT LongLongUnsignedInt, BT LongLongUnsignedInt, BT Float,       BT Double,      BT LongDouble,  BT FloatComplex,        BT DoubleComplex,       BT LongDoubleComplex,   BT FloatComplex,        BT DoubleComplex,       BT LongDoubleComplex,   BT SignedInt128,        BT UnsignedInt128, BT Float80, BT Float128, BT _Float16, BT _Float32, BT _Float32x, BT _Float64, BT _Float64x, BT _Float128, BT _Float128x, BT _Float16Complex, BT _Float32Complex, BT _Float32xComplex, BT _Float64Complex, BT _Float64xComplex, BT _Float128Complex, BT _Float128xComplex },
     194
     195                /* Float */     { BT Float,     BT Float,       BT Float,       BT Float,       BT Float,       BT Float,       BT Float,       BT Float,       BT Float,       BT Float,       BT Float,       BT Float,       BT Float,       BT Double,      BT LongDouble,  BT FloatComplex,        BT DoubleComplex,       BT LongDoubleComplex,   BT FloatComplex,        BT DoubleComplex,       BT LongDoubleComplex,   BT Float,       BT Float, BT Float80, BT Float128, BT Float, BT Float, BT _Float32x, BT _Float64, BT _Float64x, BT _Float128, BT _Float128x, BT FloatComplex, BT FloatComplex, BT _Float32xComplex, BT _Float64Complex, BT _Float64xComplex, BT _Float128Complex, BT _Float128xComplex },
     196                /* Double */    { BT Double,    BT Double,      BT Double,      BT Double,      BT Double,      BT Double,      BT Double,      BT Double,      BT Double,      BT Double,      BT Double,      BT Double,      BT Double,      BT Double,      BT LongDouble,  BT DoubleComplex,       BT DoubleComplex,       BT LongDoubleComplex,   BT DoubleComplex,       BT DoubleComplex,       BT LongDoubleComplex,   BT Double,      BT Double, BT Float80, BT Float128, BT Double, BT Double, BT Double, BT _Float64, BT _Float64x, BT _Float128, BT _Float128x, BT DoubleComplex, BT DoubleComplex, BT DoubleComplex, BT DoubleComplex, BT _Float64xComplex, BT _Float128Complex, BT _Float128xComplex },
     197                /* LongDouble */        { BT LongDouble,                BT LongDouble,  BT LongDouble,  BT LongDouble,  BT LongDouble,  BT LongDouble,  BT LongDouble,  BT LongDouble,  BT LongDouble,  BT LongDouble,  BT LongDouble,  BT LongDouble,  BT LongDouble,  BT LongDouble,  BT LongDouble,  BT LongDoubleComplex,   BT LongDoubleComplex,   BT LongDoubleComplex,   BT LongDoubleComplex,   BT LongDoubleComplex,   BT LongDoubleComplex,   BT LongDouble,  BT LongDouble, BT BT LongDouble, BT Float128, BT LongDouble, BT LongDouble, BT LongDouble, BT LongDouble, BT LongDouble, BT LongDouble, BT _Float128x, BT LongDoubleComplex, BT LongDoubleComplex, BT LongDoubleComplex, BT LongDoubleComplex, BT LongDoubleComplex, BT LongDoubleComplex, BT _Float128xComplex },
     198                /* FloatComplex */      { BT FloatComplex,      BT FloatComplex,        BT FloatComplex,        BT FloatComplex,        BT FloatComplex,        BT FloatComplex,        BT FloatComplex,        BT FloatComplex,        BT FloatComplex,        BT FloatComplex,        BT FloatComplex,        BT FloatComplex,        BT FloatComplex,        BT DoubleComplex,       BT LongDoubleComplex,   BT FloatComplex,        BT DoubleComplex,       BT LongDoubleComplex,   BT FloatComplex,        BT DoubleComplex,       BT LongDoubleComplex,   BT FloatComplex,        BT FloatComplex, BT LongDoubleComplex, BT LongDoubleComplex, BT FloatComplex, BT FloatComplex, BT _Float32xComplex, BT _Float64Complex, BT _Float64xComplex, BT _Float128Complex, BT _Float128xComplex, BT FloatComplex, BT FloatComplex, BT _Float32xComplex, BT _Float64Complex, BT _Float64xComplex, BT _Float128Complex, BT _Float128xComplex },
     199                /* DoubleComplex */     { BT DoubleComplex,     BT DoubleComplex,       BT DoubleComplex,       BT DoubleComplex,       BT DoubleComplex,       BT DoubleComplex,       BT DoubleComplex,       BT DoubleComplex,       BT DoubleComplex,       BT DoubleComplex,       BT DoubleComplex,       BT DoubleComplex,       BT DoubleComplex,       BT DoubleComplex,       BT LongDoubleComplex,   BT DoubleComplex,       BT DoubleComplex,       BT LongDoubleComplex,   BT DoubleComplex,       BT DoubleComplex,       BT LongDoubleComplex,   BT DoubleComplex,       BT DoubleComplex, BT LongDoubleComplex, BT LongDoubleComplex, BT DoubleComplex, BT DoubleComplex, BT DoubleComplex, BT _Float64Complex, BT _Float64xComplex, BT _Float128Complex, BT _Float128xComplex, BT DoubleComplex, BT DoubleComplex, BT DoubleComplex, BT DoubleComplex, BT _Float64xComplex, BT _Float128Complex, BT _Float128xComplex },
     200                /* LongDoubleComplex */         { BT LongDoubleComplex, BT LongDoubleComplex,   BT LongDoubleComplex,   BT LongDoubleComplex,   BT LongDoubleComplex,   BT LongDoubleComplex,   BT LongDoubleComplex,   BT LongDoubleComplex,   BT LongDoubleComplex,   BT LongDoubleComplex,   BT LongDoubleComplex,   BT LongDoubleComplex,   BT LongDoubleComplex,   BT LongDoubleComplex,   BT LongDoubleComplex,   BT LongDoubleComplex,   BT LongDoubleComplex,   BT LongDoubleComplex,   BT LongDoubleComplex,   BT LongDoubleComplex,   BT LongDoubleComplex,   BT LongDoubleComplex,   BT LongDoubleComplex, BT LongDoubleComplex, BT LongDoubleComplex, BT LongDoubleComplex, BT LongDoubleComplex, BT LongDoubleComplex, BT LongDoubleComplex, BT LongDoubleComplex, BT LongDoubleComplex, BT _Float128xComplex, BT LongDoubleComplex, BT LongDoubleComplex, BT LongDoubleComplex, BT LongDoubleComplex, BT LongDoubleComplex, BT LongDoubleComplex, BT _Float128xComplex },
     201                /* FloatImaginary */    { BT FloatComplex,      BT FloatComplex,        BT FloatComplex,        BT FloatComplex,        BT FloatComplex,        BT FloatComplex,        BT FloatComplex,        BT FloatComplex,        BT FloatComplex,        BT FloatComplex,        BT FloatComplex,        BT FloatComplex,        BT FloatComplex,        BT DoubleComplex,       BT LongDoubleComplex,   BT FloatComplex,        BT DoubleComplex,       BT LongDoubleComplex,   BT FloatImaginary,      BT DoubleImaginary,     BT LongDoubleImaginary, BT FloatImaginary,      BT FloatImaginary, BT LongDoubleImaginary, BT LongDoubleImaginary, BT FloatComplex, BT FloatComplex, BT _Float32xComplex, BT _Float64Complex, BT _Float64xComplex, BT _Float128Complex, BT _Float128xComplex, BT FloatComplex, BT FloatComplex, BT _Float32xComplex, BT _Float64Complex, BT _Float64xComplex, BT _Float128Complex, BT _Float128xComplex },
     202                /* DoubleImaginary */   { BT DoubleComplex,     BT DoubleComplex,       BT DoubleComplex,       BT DoubleComplex,       BT DoubleComplex,       BT DoubleComplex,       BT DoubleComplex,       BT DoubleComplex,       BT DoubleComplex,       BT DoubleComplex,       BT DoubleComplex,       BT DoubleComplex,       BT DoubleComplex,       BT DoubleComplex,       BT LongDoubleComplex,   BT DoubleComplex,       BT DoubleComplex,       BT LongDoubleComplex,   BT DoubleImaginary,     BT DoubleImaginary,     BT LongDoubleImaginary, BT DoubleImaginary,     BT DoubleImaginary, BT LongDoubleImaginary, BT LongDoubleImaginary, BT DoubleComplex, BT DoubleComplex, BT DoubleComplex, BT _Float64Complex, BT _Float64xComplex, BT _Float128Complex, BT _Float128xComplex, BT DoubleComplex, BT DoubleComplex, BT DoubleComplex, BT DoubleComplex, BT _Float64xComplex, BT _Float128Complex, BT _Float128xComplex },
     203                /* LongDoubleImaginary */       { BT LongDoubleComplex, BT LongDoubleComplex,   BT LongDoubleComplex,   BT LongDoubleComplex,   BT LongDoubleComplex,   BT LongDoubleComplex,   BT LongDoubleComplex,   BT LongDoubleComplex,   BT LongDoubleComplex,   BT LongDoubleComplex,   BT LongDoubleComplex,   BT LongDoubleComplex,   BT LongDoubleComplex,   BT LongDoubleComplex,   BT LongDoubleComplex,   BT LongDoubleComplex,   BT LongDoubleComplex,   BT LongDoubleComplex,   BT LongDoubleImaginary, BT LongDoubleImaginary, BT LongDoubleImaginary, BT LongDoubleImaginary, BT LongDoubleImaginary, BT LongDoubleComplex, BT LongDoubleComplex, BT LongDoubleComplex, BT LongDoubleComplex, BT LongDoubleComplex, BT LongDoubleComplex, BT _Float128xComplex, BT LongDoubleComplex, BT LongDoubleComplex, BT LongDoubleComplex, BT LongDoubleComplex, BT LongDoubleComplex, BT LongDoubleComplex, BT _Float128xComplex },
     204
     205                /* SignedInt128 */      { BT SignedInt128,      BT SignedInt128,        BT SignedInt128,        BT SignedInt128,        BT SignedInt128,        BT SignedInt128,        BT SignedInt128,        BT SignedInt128,        BT SignedInt128,        BT SignedInt128,        BT SignedInt128,        BT SignedInt128,        BT Float,       BT Double,      BT LongDouble,  BT FloatComplex,        BT DoubleComplex,       BT LongDoubleComplex,   BT FloatComplex,        BT DoubleComplex,       BT LongDoubleComplex,   BT SignedInt128,        BT UnsignedInt128, BT Float80, BT Float128, BT _Float16, BT _Float32, BT _Float32x, BT _Float64, BT _Float64x, BT _Float128, BT _Float128x, BT _Float16Complex, BT _Float32Complex, BT _Float32xComplex, BT _Float64Complex, BT _Float64xComplex, BT _Float128Complex, BT _Float128xComplex },
     206                /* UnsignedInt128 */    { BT UnsignedInt128,    BT UnsignedInt128,      BT UnsignedInt128,      BT UnsignedInt128,      BT UnsignedInt128,      BT UnsignedInt128,      BT UnsignedInt128,      BT UnsignedInt128,      BT UnsignedInt128,      BT UnsignedInt128,      BT UnsignedInt128,      BT UnsignedInt128,      BT Float,       BT Double,      BT LongDouble,  BT FloatComplex,        BT DoubleComplex,       BT LongDoubleComplex,   BT FloatComplex,        BT DoubleComplex,       BT LongDoubleComplex,   BT UnsignedInt128,      BT UnsignedInt128, BT Float80, BT Float128, BT _Float16, BT _Float32, BT _Float32x, BT _Float64, BT _Float64x, BT _Float128, BT _Float128x, BT _Float16Complex, BT _Float32Complex, BT _Float32xComplex, BT _Float64Complex, BT _Float64xComplex, BT _Float128Complex, BT _Float128xComplex },
     207                /* Float80 */   { BT Float80,   BT Float80,     BT Float80,     BT Float80,     BT Float80,     BT Float80,     BT Float80,     BT Float80,     BT Float80,     BT Float80,     BT Float80,     BT Float80,     BT Float80,     BT Float80,     BT LongDouble,  BT LongDoubleComplex,   BT LongDoubleComplex,   BT LongDoubleComplex,   BT LongDoubleComplex,   BT LongDoubleComplex,   BT LongDoubleComplex,   BT Float80,     BT Float80, BT Float80, BT Float128, BT Float80, BT Float80, BT Float80, BT Float80, BT Float80, BT _Float128, BT _Float128x, BT _Float64xComplex, BT _Float64xComplex, BT _Float64xComplex, BT _Float64xComplex, BT _Float64xComplex, BT _Float128Complex, BT _Float128xComplex },
     208                /* Float128 */  { BT Float128,  BT Float128,    BT Float128,    BT Float128,    BT Float128,    BT Float128,    BT Float128,    BT Float128,    BT Float128,    BT Float128,    BT Float128,    BT Float128,    BT Float128,    BT Float128,    BT Float128,    BT LongDoubleComplex,   BT LongDoubleComplex,   BT LongDoubleComplex,   BT LongDoubleComplex,   BT LongDoubleComplex,   BT LongDoubleComplex,   BT Float128,    BT Float128, BT Float128, BT Float128, BT Float128, BT Float128, BT Float128, BT Float128, BT Float128, BT Float128, BT _Float128x, BT _Float128Complex, BT _Float128Complex, BT _Float128Complex, BT _Float128Complex, BT _Float128Complex, BT _Float128Complex, BT _Float128xComplex },
     209
     210                /* _Float16 */  { BT _Float16,  BT _Float16,    BT _Float16,    BT _Float16,    BT _Float16,    BT _Float16,    BT _Float16,    BT _Float16,    BT _Float16,    BT _Float16,    BT _Float16,    BT _Float16,    BT Float,       BT Double,      BT LongDouble,  BT FloatComplex,        BT DoubleComplex,       BT LongDoubleComplex,   BT FloatComplex,        BT DoubleComplex,       BT LongDoubleComplex,   BT _Float16,    BT _Float16, BT Float80, BT Float128, BT _Float16, BT _Float32, BT _Float32x, BT _Float64, BT _Float64x, BT _Float128, BT _Float128x, BT _Float16Complex, BT _Float32Complex, BT _Float32xComplex, BT _Float64Complex, BT _Float64xComplex, BT _Float128Complex, BT _Float128xComplex },
     211                /* _Float32 */  { BT _Float32,  BT _Float32,    BT _Float32,    BT _Float32,    BT _Float32,    BT _Float32,    BT _Float32,    BT _Float32,    BT _Float32,    BT _Float32,    BT _Float32,    BT _Float32,    BT _Float32,    BT Double,      BT LongDouble,  BT FloatComplex,        BT DoubleComplex,       BT LongDoubleComplex,   BT FloatComplex,        BT DoubleComplex,       BT LongDoubleComplex,   BT _Float32,    BT _Float32, BT Float80, BT Float128, BT _Float32, BT _Float32, BT _Float32x, BT _Float64, BT _Float64x, BT _Float128, BT _Float128x, BT _Float32Complex, BT _Float32Complex, BT _Float32xComplex, BT _Float64Complex, BT _Float64xComplex, BT _Float128Complex, BT _Float128xComplex },
     212                /* _Float32x */ { BT _Float32x, BT _Float32x,   BT _Float32x,   BT _Float32x,   BT _Float32x,   BT _Float32x,   BT _Float32x,   BT _Float32x,   BT _Float32x,   BT _Float32x,   BT _Float32x,   BT _Float32x,   BT _Float32x,   BT Double,      BT LongDouble,  BT _Float32xComplex,    BT DoubleComplex,       BT LongDoubleComplex,   BT _Float32xComplex,    BT DoubleComplex,       BT LongDoubleComplex,   BT _Float32x,   BT _Float32x, BT Float80, BT Float128, BT _Float32x, BT _Float32x, BT _Float32x, BT _Float64, BT _Float64x, BT _Float128, BT _Float128x, BT _Float32xComplex, BT _Float32xComplex, BT _Float32xComplex, BT _Float64Complex, BT _Float64xComplex, BT _Float128Complex, BT _Float128xComplex },
     213                /* _Float64 */  { BT _Float64,  BT _Float64,    BT _Float64,    BT _Float64,    BT _Float64,    BT _Float64,    BT _Float64,    BT _Float64,    BT _Float64,    BT _Float64,    BT _Float64,    BT _Float64,    BT _Float64,    BT Double,      BT LongDouble,  BT _Float64Complex,     BT DoubleComplex,       BT LongDoubleComplex,   BT _Float64Complex,     BT DoubleComplex,       BT LongDoubleComplex,   BT _Float64,    BT _Float64, BT Float80, BT Float128, BT _Float64, BT _Float64, BT _Float64, BT _Float64, BT _Float64x, BT _Float128, BT _Float128x, BT _Float64Complex, BT _Float64Complex, BT _Float64Complex, BT _Float64Complex, BT _Float64xComplex, BT _Float128Complex, BT _Float128xComplex },
     214                /* _Float64x */         { BT _Float64x, BT _Float64x,   BT _Float64x,   BT _Float64x,   BT _Float64x,   BT _Float64x,   BT _Float64x,   BT _Float64x,   BT _Float64x,   BT _Float64x,   BT _Float64x,   BT _Float64x,   BT _Float64x,   BT _Float64x,   BT LongDouble,  BT _Float64xComplex,    BT _Float64xComplex,    BT LongDoubleComplex,   BT _Float64xComplex,    BT _Float64xComplex,    BT LongDoubleComplex,   BT _Float64x,   BT _Float64x, BT Float80, BT Float128, BT _Float64x, BT _Float64x, BT _Float64x, BT _Float64x, BT _Float64x, BT _Float128, BT _Float128x, BT _Float64xComplex, BT _Float64xComplex, BT _Float64xComplex, BT _Float64xComplex, BT _Float64xComplex, BT _Float128Complex, BT _Float128xComplex },
     215                /* _Float128 */         { BT _Float128, BT _Float128,   BT _Float128,   BT _Float128,   BT _Float128,   BT _Float128,   BT _Float128,   BT _Float128,   BT _Float128,   BT _Float128,   BT _Float128,   BT _Float128,   BT _Float128,   BT _Float128,   BT LongDouble,  BT _Float128Complex,    BT _Float128Complex,    BT LongDoubleComplex,   BT _Float128Complex,    BT _Float128Complex,    BT LongDoubleComplex,   BT _Float128,   BT _Float128, BT _Float128, BT Float128, BT _Float128, BT _Float128, BT _Float128, BT _Float128, BT _Float128, BT _Float128, BT _Float128x, BT _Float128Complex, BT _Float128Complex, BT _Float128Complex, BT _Float128Complex, BT _Float128Complex, BT _Float128Complex, BT _Float128xComplex },
     216                /* _Float128x */        { BT _Float128x,        BT _Float128x,  BT _Float128x,  BT _Float128x,  BT _Float128x,  BT _Float128x,  BT _Float128x,  BT _Float128x,  BT _Float128x,  BT _Float128x,  BT _Float128x,  BT _Float128x,  BT _Float128x,  BT _Float128x,  BT _Float128x,  BT _Float128xComplex,   BT _Float128xComplex,   BT _Float128xComplex,   BT _Float128xComplex,   BT _Float128xComplex,   BT _Float128xComplex,   BT _Float128x,  BT _Float128x, BT _Float128x, BT _Float128x, BT _Float128x, BT _Float128x, BT _Float128x, BT _Float128x, BT _Float128x, BT _Float128x, BT _Float128x, BT _Float128xComplex, BT _Float128xComplex, BT _Float128xComplex, BT _Float128xComplex, BT _Float128xComplex, BT _Float128xComplex, BT _Float128xComplex },
     217
     218                /* _Float16Complex */   { BT _Float16Complex,   BT _Float16Complex,     BT _Float16Complex,     BT _Float16Complex,     BT _Float16Complex,     BT _Float16Complex,     BT _Float16Complex,     BT _Float16Complex,     BT _Float16Complex,     BT _Float16Complex,     BT _Float16Complex,     BT _Float16Complex,     BT FloatComplex,        BT DoubleComplex,       BT LongDoubleComplex,   BT FloatComplex,        BT DoubleComplex,       BT LongDoubleComplex,   BT FloatComplex,        BT DoubleComplex,       BT LongDoubleComplex,   BT _Float16Complex,     BT _Float16Complex, BT _Float64xComplex, BT _Float128Complex, BT _Float16Complex, BT _Float32Complex, BT _Float32xComplex, BT _Float64Complex, BT _Float64xComplex, BT _Float128Complex, BT _Float128xComplex, BT _Float16Complex, BT _Float32Complex, BT _Float32xComplex, BT _Float64Complex, BT _Float64xComplex, BT _Float128Complex, BT _Float128xComplex },
     219                /* _Float32Complex */   { BT _Float32Complex,   BT _Float32Complex,     BT _Float32Complex,     BT _Float32Complex,     BT _Float32Complex,     BT _Float32Complex,     BT _Float32Complex,     BT _Float32Complex,     BT _Float32Complex,     BT _Float32Complex,     BT _Float32Complex,     BT _Float32Complex,     BT _Float32Complex,     BT DoubleComplex,       BT LongDoubleComplex,   BT FloatComplex,        BT DoubleComplex,       BT LongDoubleComplex,   BT FloatComplex,        BT DoubleComplex,       BT LongDoubleComplex,   BT _Float32Complex,     BT _Float32Complex, BT _Float64xComplex, BT _Float128Complex, BT _Float32Complex, BT _Float32Complex, BT _Float32xComplex, BT _Float64Complex, BT _Float64xComplex, BT _Float128Complex, BT _Float128xComplex, BT _Float32Complex, BT _Float32Complex, BT _Float32xComplex, BT _Float64Complex, BT _Float64xComplex, BT _Float128Complex, BT _Float128xComplex },
     220                /* _Float32xComplex */ { BT _Float32xComplex,   BT _Float32xComplex,    BT _Float32xComplex,    BT _Float32xComplex,    BT _Float32xComplex,    BT _Float32xComplex,    BT _Float32xComplex,    BT _Float32xComplex,    BT _Float32xComplex,    BT _Float32xComplex,    BT _Float32xComplex,    BT _Float32xComplex,    BT _Float32xComplex,    BT DoubleComplex,       BT LongDoubleComplex,   BT _Float32xComplex,    BT DoubleComplex,       BT LongDoubleComplex,   BT _Float32xComplex,    BT DoubleComplex,       BT LongDoubleComplex,   BT _Float32xComplex,    BT _Float32xComplex, BT _Float64xComplex, BT _Float128Complex, BT _Float32xComplex, BT _Float32xComplex, BT _Float32xComplex, BT _Float64Complex, BT _Float64xComplex, BT _Float128Complex, BT _Float128xComplex, BT _Float32xComplex, BT _Float32xComplex, BT _Float32xComplex, BT _Float64Complex, BT _Float64xComplex, BT _Float128Complex, BT _Float128xComplex },
     221                /* _Float64Complex */   { BT _Float64Complex,   BT _Float64Complex,     BT _Float64Complex,     BT _Float64Complex,     BT _Float64Complex,     BT _Float64Complex,     BT _Float64Complex,     BT _Float64Complex,     BT _Float64Complex,     BT _Float64Complex,     BT _Float64Complex,     BT _Float64Complex,     BT _Float64Complex,     BT DoubleComplex,       BT LongDoubleComplex,   BT _Float64Complex,     BT DoubleComplex,       BT LongDoubleComplex,   BT _Float64Complex,     BT DoubleComplex,       BT LongDoubleComplex,   BT _Float64Complex,     BT _Float64Complex, BT _Float64xComplex, BT _Float128Complex, BT _Float64Complex, BT _Float64Complex, BT _Float64Complex, BT _Float64Complex, BT _Float64xComplex, BT _Float128Complex, BT _Float128xComplex, BT _Float64Complex, BT _Float64Complex, BT _Float64Complex, BT _Float64Complex, BT _Float64xComplex, BT _Float128Complex, BT _Float128xComplex },
     222                /* _Float64xComplex */  { BT _Float64xComplex,  BT _Float64xComplex,    BT _Float64xComplex,    BT _Float64xComplex,    BT _Float64xComplex,    BT _Float64xComplex,    BT _Float64xComplex,    BT _Float64xComplex,    BT _Float64xComplex,    BT _Float64xComplex,    BT _Float64xComplex,    BT _Float64xComplex,    BT _Float64xComplex,    BT _Float64xComplex,    BT LongDoubleComplex,   BT _Float64xComplex,    BT _Float64xComplex,    BT LongDoubleComplex,   BT _Float64xComplex,    BT _Float64xComplex,    BT LongDoubleComplex,   BT _Float64xComplex,    BT _Float64xComplex, BT _Float64xComplex, BT _Float128Complex, BT _Float64xComplex, BT _Float64xComplex, BT _Float64xComplex, BT _Float64xComplex, BT _Float64xComplex, BT _Float128Complex, BT _Float128xComplex, BT _Float64xComplex, BT _Float64xComplex, BT _Float64xComplex, BT _Float64xComplex, BT _Float64xComplex, BT _Float128Complex, BT _Float128xComplex },
     223                /* _Float128Complex */  { BT _Float128Complex,  BT _Float128Complex,    BT _Float128Complex,    BT _Float128Complex,    BT _Float128Complex,    BT _Float128Complex,    BT _Float128Complex,    BT _Float128Complex,    BT _Float128Complex,    BT _Float128Complex,    BT _Float128Complex,    BT _Float128Complex,    BT _Float128Complex,    BT _Float128Complex,    BT LongDoubleComplex,   BT _Float128Complex,    BT _Float128Complex,    BT LongDoubleComplex,   BT _Float128Complex,    BT _Float128Complex,    BT LongDoubleComplex,   BT _Float128Complex,    BT _Float128Complex, BT _Float128Complex, BT _Float128Complex, BT _Float128Complex, BT _Float128Complex, BT _Float128Complex, BT _Float128Complex, BT _Float128Complex, BT _Float128Complex, BT _Float128xComplex, BT _Float128Complex, BT _Float128Complex, BT _Float128Complex, BT _Float128Complex, BT _Float128Complex, BT _Float128Complex, BT _Float128xComplex },
     224                /* _Float128xComplex */         { BT _Float128xComplex, BT _Float128xComplex,   BT _Float128xComplex,   BT _Float128xComplex,   BT _Float128xComplex,   BT _Float128xComplex,   BT _Float128xComplex,   BT _Float128xComplex,   BT _Float128xComplex,   BT _Float128xComplex,   BT _Float128xComplex,   BT _Float128xComplex,   BT _Float128xComplex,   BT _Float128xComplex,   BT _Float128xComplex,   BT _Float128xComplex,   BT _Float128xComplex,   BT _Float128xComplex,   BT _Float128xComplex,   BT _Float128xComplex,   BT _Float128xComplex,   BT _Float128xComplex,   BT _Float128xComplex, BT _Float128xComplex, BT _Float128xComplex, BT _Float128xComplex, BT _Float128xComplex, BT _Float128xComplex, BT _Float128xComplex, BT _Float128xComplex, BT _Float128xComplex, BT _Float128xComplex, BT _Float128xComplex, BT _Float128xComplex, BT _Float128xComplex, BT _Float128xComplex, BT _Float128xComplex, BT _Float128xComplex, BT _Float128xComplex },
    206225        };
     226        #undef BT
     227#endif
     228
     229        // GENERATED START, DO NOT EDIT
     230        #define BT BasicType::
     231        static const BasicType::Kind commonTypes[BasicType::NUMBER_OF_BASIC_TYPES][BasicType::NUMBER_OF_BASIC_TYPES] = { // nearest common ancestor
     232                /*                              B                        C                       SC                       UC                       SI                      SUI
     233                                                I                       UI                       LI                      LUI                      LLI                     LLUI
     234                                               IB                      UIB                      _FH                      _FH                       _F                      _FC
     235                                                F                       FC                      _FX                     _FXC                       FD                     _FDC
     236                                                D                       DC                     F80X                    _FDXC                      F80                      _FB
     237                                            _FLDC                       FB                       LD                      LDC                     _FBX                   _FLDXC
     238                         */
     239                /*     B*/                BT Bool,                 BT Char,           BT SignedChar,         BT UnsignedChar,       BT ShortSignedInt,     BT ShortUnsignedInt,
     240                                     BT SignedInt,          BT UnsignedInt,        BT LongSignedInt,      BT LongUnsignedInt,    BT LongLongSignedInt,  BT LongLongUnsignedInt,
     241                                  BT SignedInt128,       BT UnsignedInt128,             BT uFloat16,      BT uFloat16Complex,             BT uFloat32,      BT uFloat32Complex,
     242                                         BT Float,         BT FloatComplex,            BT uFloat32x,     BT uFloat32xComplex,             BT uFloat64,      BT uFloat64Complex,
     243                                        BT Double,        BT DoubleComplex,            BT uFloat64x,     BT uFloat64xComplex,            BT uuFloat80,            BT uFloat128,
     244                              BT uFloat128Complex,           BT uuFloat128,           BT LongDouble,    BT LongDoubleComplex,           BT uFloat128x,    BT uFloat128xComplex,
     245                         
     246                /*     C*/                BT Char,                 BT Char,           BT SignedChar,         BT UnsignedChar,       BT ShortSignedInt,     BT ShortUnsignedInt,
     247                                     BT SignedInt,          BT UnsignedInt,        BT LongSignedInt,      BT LongUnsignedInt,    BT LongLongSignedInt,  BT LongLongUnsignedInt,
     248                                  BT SignedInt128,       BT UnsignedInt128,             BT uFloat16,      BT uFloat16Complex,             BT uFloat32,      BT uFloat32Complex,
     249                                         BT Float,         BT FloatComplex,            BT uFloat32x,     BT uFloat32xComplex,             BT uFloat64,      BT uFloat64Complex,
     250                                        BT Double,        BT DoubleComplex,            BT uFloat64x,     BT uFloat64xComplex,            BT uuFloat80,            BT uFloat128,
     251                              BT uFloat128Complex,           BT uuFloat128,           BT LongDouble,    BT LongDoubleComplex,           BT uFloat128x,    BT uFloat128xComplex,
     252                         
     253                /*    SC*/          BT SignedChar,           BT SignedChar,           BT SignedChar,         BT UnsignedChar,       BT ShortSignedInt,     BT ShortUnsignedInt,
     254                                     BT SignedInt,          BT UnsignedInt,        BT LongSignedInt,      BT LongUnsignedInt,    BT LongLongSignedInt,  BT LongLongUnsignedInt,
     255                                  BT SignedInt128,       BT UnsignedInt128,             BT uFloat16,      BT uFloat16Complex,             BT uFloat32,      BT uFloat32Complex,
     256                                         BT Float,         BT FloatComplex,            BT uFloat32x,     BT uFloat32xComplex,             BT uFloat64,      BT uFloat64Complex,
     257                                        BT Double,        BT DoubleComplex,            BT uFloat64x,     BT uFloat64xComplex,            BT uuFloat80,            BT uFloat128,
     258                              BT uFloat128Complex,           BT uuFloat128,           BT LongDouble,    BT LongDoubleComplex,           BT uFloat128x,    BT uFloat128xComplex,
     259                         
     260                /*    UC*/        BT UnsignedChar,         BT UnsignedChar,         BT UnsignedChar,         BT UnsignedChar,       BT ShortSignedInt,     BT ShortUnsignedInt,
     261                                     BT SignedInt,          BT UnsignedInt,        BT LongSignedInt,      BT LongUnsignedInt,    BT LongLongSignedInt,  BT LongLongUnsignedInt,
     262                                  BT SignedInt128,       BT UnsignedInt128,             BT uFloat16,      BT uFloat16Complex,             BT uFloat32,      BT uFloat32Complex,
     263                                         BT Float,         BT FloatComplex,            BT uFloat32x,     BT uFloat32xComplex,             BT uFloat64,      BT uFloat64Complex,
     264                                        BT Double,        BT DoubleComplex,            BT uFloat64x,     BT uFloat64xComplex,            BT uuFloat80,            BT uFloat128,
     265                              BT uFloat128Complex,           BT uuFloat128,           BT LongDouble,    BT LongDoubleComplex,           BT uFloat128x,    BT uFloat128xComplex,
     266                         
     267                /*    SI*/      BT ShortSignedInt,       BT ShortSignedInt,       BT ShortSignedInt,       BT ShortSignedInt,       BT ShortSignedInt,     BT ShortUnsignedInt,
     268                                     BT SignedInt,          BT UnsignedInt,        BT LongSignedInt,      BT LongUnsignedInt,    BT LongLongSignedInt,  BT LongLongUnsignedInt,
     269                                  BT SignedInt128,       BT UnsignedInt128,             BT uFloat16,      BT uFloat16Complex,             BT uFloat32,      BT uFloat32Complex,
     270                                         BT Float,         BT FloatComplex,            BT uFloat32x,     BT uFloat32xComplex,             BT uFloat64,      BT uFloat64Complex,
     271                                        BT Double,        BT DoubleComplex,            BT uFloat64x,     BT uFloat64xComplex,            BT uuFloat80,            BT uFloat128,
     272                              BT uFloat128Complex,           BT uuFloat128,           BT LongDouble,    BT LongDoubleComplex,           BT uFloat128x,    BT uFloat128xComplex,
     273                         
     274                /*   SUI*/    BT ShortUnsignedInt,     BT ShortUnsignedInt,     BT ShortUnsignedInt,     BT ShortUnsignedInt,     BT ShortUnsignedInt,     BT ShortUnsignedInt,
     275                                     BT SignedInt,          BT UnsignedInt,        BT LongSignedInt,      BT LongUnsignedInt,    BT LongLongSignedInt,  BT LongLongUnsignedInt,
     276                                  BT SignedInt128,       BT UnsignedInt128,             BT uFloat16,      BT uFloat16Complex,             BT uFloat32,      BT uFloat32Complex,
     277                                         BT Float,         BT FloatComplex,            BT uFloat32x,     BT uFloat32xComplex,             BT uFloat64,      BT uFloat64Complex,
     278                                        BT Double,        BT DoubleComplex,            BT uFloat64x,     BT uFloat64xComplex,            BT uuFloat80,            BT uFloat128,
     279                              BT uFloat128Complex,           BT uuFloat128,           BT LongDouble,    BT LongDoubleComplex,           BT uFloat128x,    BT uFloat128xComplex,
     280                         
     281                /*     I*/           BT SignedInt,            BT SignedInt,            BT SignedInt,            BT SignedInt,            BT SignedInt,            BT SignedInt,
     282                                     BT SignedInt,          BT UnsignedInt,        BT LongSignedInt,      BT LongUnsignedInt,    BT LongLongSignedInt,  BT LongLongUnsignedInt,
     283                                  BT SignedInt128,       BT UnsignedInt128,             BT uFloat16,      BT uFloat16Complex,             BT uFloat32,      BT uFloat32Complex,
     284                                         BT Float,         BT FloatComplex,            BT uFloat32x,     BT uFloat32xComplex,             BT uFloat64,      BT uFloat64Complex,
     285                                        BT Double,        BT DoubleComplex,            BT uFloat64x,     BT uFloat64xComplex,            BT uuFloat80,            BT uFloat128,
     286                              BT uFloat128Complex,           BT uuFloat128,           BT LongDouble,    BT LongDoubleComplex,           BT uFloat128x,    BT uFloat128xComplex,
     287                         
     288                /*    UI*/         BT UnsignedInt,          BT UnsignedInt,          BT UnsignedInt,          BT UnsignedInt,          BT UnsignedInt,          BT UnsignedInt,
     289                                   BT UnsignedInt,          BT UnsignedInt,        BT LongSignedInt,      BT LongUnsignedInt,    BT LongLongSignedInt,  BT LongLongUnsignedInt,
     290                                  BT SignedInt128,       BT UnsignedInt128,             BT uFloat16,      BT uFloat16Complex,             BT uFloat32,      BT uFloat32Complex,
     291                                         BT Float,         BT FloatComplex,            BT uFloat32x,     BT uFloat32xComplex,             BT uFloat64,      BT uFloat64Complex,
     292                                        BT Double,        BT DoubleComplex,            BT uFloat64x,     BT uFloat64xComplex,            BT uuFloat80,            BT uFloat128,
     293                              BT uFloat128Complex,           BT uuFloat128,           BT LongDouble,    BT LongDoubleComplex,           BT uFloat128x,    BT uFloat128xComplex,
     294                         
     295                /*    LI*/       BT LongSignedInt,        BT LongSignedInt,        BT LongSignedInt,        BT LongSignedInt,        BT LongSignedInt,        BT LongSignedInt,
     296                                 BT LongSignedInt,        BT LongSignedInt,        BT LongSignedInt,      BT LongUnsignedInt,    BT LongLongSignedInt,  BT LongLongUnsignedInt,
     297                                  BT SignedInt128,       BT UnsignedInt128,             BT uFloat16,      BT uFloat16Complex,             BT uFloat32,      BT uFloat32Complex,
     298                                         BT Float,         BT FloatComplex,            BT uFloat32x,     BT uFloat32xComplex,             BT uFloat64,      BT uFloat64Complex,
     299                                        BT Double,        BT DoubleComplex,            BT uFloat64x,     BT uFloat64xComplex,            BT uuFloat80,            BT uFloat128,
     300                              BT uFloat128Complex,           BT uuFloat128,           BT LongDouble,    BT LongDoubleComplex,           BT uFloat128x,    BT uFloat128xComplex,
     301                         
     302                /*   LUI*/     BT LongUnsignedInt,      BT LongUnsignedInt,      BT LongUnsignedInt,      BT LongUnsignedInt,      BT LongUnsignedInt,      BT LongUnsignedInt,
     303                               BT LongUnsignedInt,      BT LongUnsignedInt,      BT LongUnsignedInt,      BT LongUnsignedInt,    BT LongLongSignedInt,  BT LongLongUnsignedInt,
     304                                  BT SignedInt128,       BT UnsignedInt128,             BT uFloat16,      BT uFloat16Complex,             BT uFloat32,      BT uFloat32Complex,
     305                                         BT Float,         BT FloatComplex,            BT uFloat32x,     BT uFloat32xComplex,             BT uFloat64,      BT uFloat64Complex,
     306                                        BT Double,        BT DoubleComplex,            BT uFloat64x,     BT uFloat64xComplex,            BT uuFloat80,            BT uFloat128,
     307                              BT uFloat128Complex,           BT uuFloat128,           BT LongDouble,    BT LongDoubleComplex,           BT uFloat128x,    BT uFloat128xComplex,
     308                         
     309                /*   LLI*/   BT LongLongSignedInt,    BT LongLongSignedInt,    BT LongLongSignedInt,    BT LongLongSignedInt,    BT LongLongSignedInt,    BT LongLongSignedInt,
     310                             BT LongLongSignedInt,    BT LongLongSignedInt,    BT LongLongSignedInt,    BT LongLongSignedInt,    BT LongLongSignedInt,  BT LongLongUnsignedInt,
     311                                  BT SignedInt128,       BT UnsignedInt128,             BT uFloat16,      BT uFloat16Complex,             BT uFloat32,      BT uFloat32Complex,
     312                                         BT Float,         BT FloatComplex,            BT uFloat32x,     BT uFloat32xComplex,             BT uFloat64,      BT uFloat64Complex,
     313                                        BT Double,        BT DoubleComplex,            BT uFloat64x,     BT uFloat64xComplex,            BT uuFloat80,            BT uFloat128,
     314                              BT uFloat128Complex,           BT uuFloat128,           BT LongDouble,    BT LongDoubleComplex,           BT uFloat128x,    BT uFloat128xComplex,
     315                         
     316                /*  LLUI*/ BT LongLongUnsignedInt,  BT LongLongUnsignedInt,  BT LongLongUnsignedInt,  BT LongLongUnsignedInt,  BT LongLongUnsignedInt,  BT LongLongUnsignedInt,
     317                           BT LongLongUnsignedInt,  BT LongLongUnsignedInt,  BT LongLongUnsignedInt,  BT LongLongUnsignedInt,  BT LongLongUnsignedInt,  BT LongLongUnsignedInt,
     318                                  BT SignedInt128,       BT UnsignedInt128,             BT uFloat16,      BT uFloat16Complex,             BT uFloat32,      BT uFloat32Complex,
     319                                         BT Float,         BT FloatComplex,            BT uFloat32x,     BT uFloat32xComplex,             BT uFloat64,      BT uFloat64Complex,
     320                                        BT Double,        BT DoubleComplex,            BT uFloat64x,     BT uFloat64xComplex,            BT uuFloat80,            BT uFloat128,
     321                              BT uFloat128Complex,           BT uuFloat128,           BT LongDouble,    BT LongDoubleComplex,           BT uFloat128x,    BT uFloat128xComplex,
     322                         
     323                /*    IB*/        BT SignedInt128,         BT SignedInt128,         BT SignedInt128,         BT SignedInt128,         BT SignedInt128,         BT SignedInt128,
     324                                  BT SignedInt128,         BT SignedInt128,         BT SignedInt128,         BT SignedInt128,         BT SignedInt128,         BT SignedInt128,
     325                                  BT SignedInt128,       BT UnsignedInt128,             BT uFloat16,      BT uFloat16Complex,             BT uFloat32,      BT uFloat32Complex,
     326                                         BT Float,         BT FloatComplex,            BT uFloat32x,     BT uFloat32xComplex,             BT uFloat64,      BT uFloat64Complex,
     327                                        BT Double,        BT DoubleComplex,            BT uFloat64x,     BT uFloat64xComplex,            BT uuFloat80,            BT uFloat128,
     328                              BT uFloat128Complex,           BT uuFloat128,           BT LongDouble,    BT LongDoubleComplex,           BT uFloat128x,    BT uFloat128xComplex,
     329                         
     330                /*   UIB*/      BT UnsignedInt128,       BT UnsignedInt128,       BT UnsignedInt128,       BT UnsignedInt128,       BT UnsignedInt128,       BT UnsignedInt128,
     331                                BT UnsignedInt128,       BT UnsignedInt128,       BT UnsignedInt128,       BT UnsignedInt128,       BT UnsignedInt128,       BT UnsignedInt128,
     332                                BT UnsignedInt128,       BT UnsignedInt128,             BT uFloat16,      BT uFloat16Complex,             BT uFloat32,      BT uFloat32Complex,
     333                                         BT Float,         BT FloatComplex,            BT uFloat32x,     BT uFloat32xComplex,             BT uFloat64,      BT uFloat64Complex,
     334                                        BT Double,        BT DoubleComplex,            BT uFloat64x,     BT uFloat64xComplex,            BT uuFloat80,            BT uFloat128,
     335                              BT uFloat128Complex,           BT uuFloat128,           BT LongDouble,    BT LongDoubleComplex,           BT uFloat128x,    BT uFloat128xComplex,
     336                         
     337                /*   _FH*/            BT uFloat16,             BT uFloat16,             BT uFloat16,             BT uFloat16,             BT uFloat16,             BT uFloat16,
     338                                      BT uFloat16,             BT uFloat16,             BT uFloat16,             BT uFloat16,             BT uFloat16,             BT uFloat16,
     339                                      BT uFloat16,             BT uFloat16,             BT uFloat16,      BT uFloat16Complex,             BT uFloat32,      BT uFloat32Complex,
     340                                         BT Float,         BT FloatComplex,            BT uFloat32x,     BT uFloat32xComplex,             BT uFloat64,      BT uFloat64Complex,
     341                                        BT Double,        BT DoubleComplex,            BT uFloat64x,     BT uFloat64xComplex,            BT uuFloat80,            BT uFloat128,
     342                              BT uFloat128Complex,           BT uuFloat128,           BT LongDouble,    BT LongDoubleComplex,           BT uFloat128x,    BT uFloat128xComplex,
     343                         
     344                /*   _FH*/     BT uFloat16Complex,      BT uFloat16Complex,      BT uFloat16Complex,      BT uFloat16Complex,      BT uFloat16Complex,      BT uFloat16Complex,
     345                               BT uFloat16Complex,      BT uFloat16Complex,      BT uFloat16Complex,      BT uFloat16Complex,      BT uFloat16Complex,      BT uFloat16Complex,
     346                               BT uFloat16Complex,      BT uFloat16Complex,      BT uFloat16Complex,      BT uFloat16Complex,      BT uFloat32Complex,      BT uFloat32Complex,
     347                                  BT FloatComplex,         BT FloatComplex,     BT uFloat32xComplex,     BT uFloat32xComplex,      BT uFloat64Complex,      BT uFloat64Complex,
     348                                 BT DoubleComplex,        BT DoubleComplex,     BT uFloat64xComplex,     BT uFloat64xComplex,     BT uFloat64xComplex,     BT uFloat128Complex,
     349                              BT uFloat128Complex,     BT uFloat128Complex,    BT LongDoubleComplex,    BT LongDoubleComplex,    BT uFloat128xComplex,    BT uFloat128xComplex,
     350                         
     351                /*    _F*/            BT uFloat32,             BT uFloat32,             BT uFloat32,             BT uFloat32,             BT uFloat32,             BT uFloat32,
     352                                      BT uFloat32,             BT uFloat32,             BT uFloat32,             BT uFloat32,             BT uFloat32,             BT uFloat32,
     353                                      BT uFloat32,             BT uFloat32,             BT uFloat32,      BT uFloat32Complex,             BT uFloat32,      BT uFloat32Complex,
     354                                         BT Float,         BT FloatComplex,            BT uFloat32x,     BT uFloat32xComplex,             BT uFloat64,      BT uFloat64Complex,
     355                                        BT Double,        BT DoubleComplex,            BT uFloat64x,     BT uFloat64xComplex,            BT uuFloat80,            BT uFloat128,
     356                              BT uFloat128Complex,           BT uuFloat128,           BT LongDouble,    BT LongDoubleComplex,           BT uFloat128x,    BT uFloat128xComplex,
     357                         
     358                /*   _FC*/     BT uFloat32Complex,      BT uFloat32Complex,      BT uFloat32Complex,      BT uFloat32Complex,      BT uFloat32Complex,      BT uFloat32Complex,
     359                               BT uFloat32Complex,      BT uFloat32Complex,      BT uFloat32Complex,      BT uFloat32Complex,      BT uFloat32Complex,      BT uFloat32Complex,
     360                               BT uFloat32Complex,      BT uFloat32Complex,      BT uFloat32Complex,      BT uFloat32Complex,      BT uFloat32Complex,      BT uFloat32Complex,
     361                                  BT FloatComplex,         BT FloatComplex,     BT uFloat32xComplex,     BT uFloat32xComplex,      BT uFloat64Complex,      BT uFloat64Complex,
     362                                 BT DoubleComplex,        BT DoubleComplex,     BT uFloat64xComplex,     BT uFloat64xComplex,     BT uFloat64xComplex,     BT uFloat128Complex,
     363                              BT uFloat128Complex,     BT uFloat128Complex,    BT LongDoubleComplex,    BT LongDoubleComplex,    BT uFloat128xComplex,    BT uFloat128xComplex,
     364                         
     365                /*     F*/               BT Float,                BT Float,                BT Float,                BT Float,                BT Float,                BT Float,
     366                                         BT Float,                BT Float,                BT Float,                BT Float,                BT Float,                BT Float,
     367                                         BT Float,                BT Float,                BT Float,         BT FloatComplex,                BT Float,         BT FloatComplex,
     368                                         BT Float,         BT FloatComplex,            BT uFloat32x,     BT uFloat32xComplex,             BT uFloat64,      BT uFloat64Complex,
     369                                        BT Double,        BT DoubleComplex,            BT uFloat64x,     BT uFloat64xComplex,            BT uuFloat80,            BT uFloat128,
     370                              BT uFloat128Complex,           BT uuFloat128,           BT LongDouble,    BT LongDoubleComplex,           BT uFloat128x,    BT uFloat128xComplex,
     371                         
     372                /*    FC*/        BT FloatComplex,         BT FloatComplex,         BT FloatComplex,         BT FloatComplex,         BT FloatComplex,         BT FloatComplex,
     373                                  BT FloatComplex,         BT FloatComplex,         BT FloatComplex,         BT FloatComplex,         BT FloatComplex,         BT FloatComplex,
     374                                  BT FloatComplex,         BT FloatComplex,         BT FloatComplex,         BT FloatComplex,         BT FloatComplex,         BT FloatComplex,
     375                                  BT FloatComplex,         BT FloatComplex,     BT uFloat32xComplex,     BT uFloat32xComplex,      BT uFloat64Complex,      BT uFloat64Complex,
     376                                 BT DoubleComplex,        BT DoubleComplex,     BT uFloat64xComplex,     BT uFloat64xComplex,     BT uFloat64xComplex,     BT uFloat128Complex,
     377                              BT uFloat128Complex,     BT uFloat128Complex,    BT LongDoubleComplex,    BT LongDoubleComplex,    BT uFloat128xComplex,    BT uFloat128xComplex,
     378                         
     379                /*   _FX*/           BT uFloat32x,            BT uFloat32x,            BT uFloat32x,            BT uFloat32x,            BT uFloat32x,            BT uFloat32x,
     380                                     BT uFloat32x,            BT uFloat32x,            BT uFloat32x,            BT uFloat32x,            BT uFloat32x,            BT uFloat32x,
     381                                     BT uFloat32x,            BT uFloat32x,            BT uFloat32x,     BT uFloat32xComplex,            BT uFloat32x,     BT uFloat32xComplex,
     382                                     BT uFloat32x,     BT uFloat32xComplex,            BT uFloat32x,     BT uFloat32xComplex,             BT uFloat64,      BT uFloat64Complex,
     383                                        BT Double,        BT DoubleComplex,            BT uFloat64x,     BT uFloat64xComplex,            BT uuFloat80,            BT uFloat128,
     384                              BT uFloat128Complex,           BT uuFloat128,           BT LongDouble,    BT LongDoubleComplex,           BT uFloat128x,    BT uFloat128xComplex,
     385                         
     386                /*  _FXC*/    BT uFloat32xComplex,     BT uFloat32xComplex,     BT uFloat32xComplex,     BT uFloat32xComplex,     BT uFloat32xComplex,     BT uFloat32xComplex,
     387                              BT uFloat32xComplex,     BT uFloat32xComplex,     BT uFloat32xComplex,     BT uFloat32xComplex,     BT uFloat32xComplex,     BT uFloat32xComplex,
     388                              BT uFloat32xComplex,     BT uFloat32xComplex,     BT uFloat32xComplex,     BT uFloat32xComplex,     BT uFloat32xComplex,     BT uFloat32xComplex,
     389                              BT uFloat32xComplex,     BT uFloat32xComplex,     BT uFloat32xComplex,     BT uFloat32xComplex,      BT uFloat64Complex,      BT uFloat64Complex,
     390                                 BT DoubleComplex,        BT DoubleComplex,     BT uFloat64xComplex,     BT uFloat64xComplex,     BT uFloat64xComplex,     BT uFloat128Complex,
     391                              BT uFloat128Complex,     BT uFloat128Complex,    BT LongDoubleComplex,    BT LongDoubleComplex,    BT uFloat128xComplex,    BT uFloat128xComplex,
     392                         
     393                /*    FD*/            BT uFloat64,             BT uFloat64,             BT uFloat64,             BT uFloat64,             BT uFloat64,             BT uFloat64,
     394                                      BT uFloat64,             BT uFloat64,             BT uFloat64,             BT uFloat64,             BT uFloat64,             BT uFloat64,
     395                                      BT uFloat64,             BT uFloat64,             BT uFloat64,      BT uFloat64Complex,             BT uFloat64,      BT uFloat64Complex,
     396                                      BT uFloat64,      BT uFloat64Complex,             BT uFloat64,      BT uFloat64Complex,             BT uFloat64,      BT uFloat64Complex,
     397                                        BT Double,        BT DoubleComplex,            BT uFloat64x,     BT uFloat64xComplex,            BT uuFloat80,            BT uFloat128,
     398                              BT uFloat128Complex,           BT uuFloat128,           BT LongDouble,    BT LongDoubleComplex,           BT uFloat128x,    BT uFloat128xComplex,
     399                         
     400                /*  _FDC*/     BT uFloat64Complex,      BT uFloat64Complex,      BT uFloat64Complex,      BT uFloat64Complex,      BT uFloat64Complex,      BT uFloat64Complex,
     401                               BT uFloat64Complex,      BT uFloat64Complex,      BT uFloat64Complex,      BT uFloat64Complex,      BT uFloat64Complex,      BT uFloat64Complex,
     402                               BT uFloat64Complex,      BT uFloat64Complex,      BT uFloat64Complex,      BT uFloat64Complex,      BT uFloat64Complex,      BT uFloat64Complex,
     403                               BT uFloat64Complex,      BT uFloat64Complex,      BT uFloat64Complex,      BT uFloat64Complex,      BT uFloat64Complex,      BT uFloat64Complex,
     404                                 BT DoubleComplex,        BT DoubleComplex,     BT uFloat64xComplex,     BT uFloat64xComplex,     BT uFloat64xComplex,     BT uFloat128Complex,
     405                              BT uFloat128Complex,     BT uFloat128Complex,    BT LongDoubleComplex,    BT LongDoubleComplex,    BT uFloat128xComplex,    BT uFloat128xComplex,
     406                         
     407                /*     D*/              BT Double,               BT Double,               BT Double,               BT Double,               BT Double,               BT Double,
     408                                        BT Double,               BT Double,               BT Double,               BT Double,               BT Double,               BT Double,
     409                                        BT Double,               BT Double,               BT Double,        BT DoubleComplex,               BT Double,        BT DoubleComplex,
     410                                        BT Double,        BT DoubleComplex,               BT Double,        BT DoubleComplex,               BT Double,        BT DoubleComplex,
     411                                        BT Double,        BT DoubleComplex,            BT uFloat64x,     BT uFloat64xComplex,            BT uuFloat80,            BT uFloat128,
     412                              BT uFloat128Complex,           BT uuFloat128,           BT LongDouble,    BT LongDoubleComplex,           BT uFloat128x,    BT uFloat128xComplex,
     413                         
     414                /*    DC*/       BT DoubleComplex,        BT DoubleComplex,        BT DoubleComplex,        BT DoubleComplex,        BT DoubleComplex,        BT DoubleComplex,
     415                                 BT DoubleComplex,        BT DoubleComplex,        BT DoubleComplex,        BT DoubleComplex,        BT DoubleComplex,        BT DoubleComplex,
     416                                 BT DoubleComplex,        BT DoubleComplex,        BT DoubleComplex,        BT DoubleComplex,        BT DoubleComplex,        BT DoubleComplex,
     417                                 BT DoubleComplex,        BT DoubleComplex,        BT DoubleComplex,        BT DoubleComplex,        BT DoubleComplex,        BT DoubleComplex,
     418                                 BT DoubleComplex,        BT DoubleComplex,     BT uFloat64xComplex,     BT uFloat64xComplex,     BT uFloat64xComplex,     BT uFloat128Complex,
     419                              BT uFloat128Complex,     BT uFloat128Complex,    BT LongDoubleComplex,    BT LongDoubleComplex,    BT uFloat128xComplex,    BT uFloat128xComplex,
     420                         
     421                /*  F80X*/           BT uFloat64x,            BT uFloat64x,            BT uFloat64x,            BT uFloat64x,            BT uFloat64x,            BT uFloat64x,
     422                                     BT uFloat64x,            BT uFloat64x,            BT uFloat64x,            BT uFloat64x,            BT uFloat64x,            BT uFloat64x,
     423                                     BT uFloat64x,            BT uFloat64x,            BT uFloat64x,     BT uFloat64xComplex,            BT uFloat64x,     BT uFloat64xComplex,
     424                                     BT uFloat64x,     BT uFloat64xComplex,            BT uFloat64x,     BT uFloat64xComplex,            BT uFloat64x,     BT uFloat64xComplex,
     425                                     BT uFloat64x,     BT uFloat64xComplex,            BT uFloat64x,     BT uFloat64xComplex,            BT uuFloat80,            BT uFloat128,
     426                              BT uFloat128Complex,           BT uuFloat128,           BT LongDouble,    BT LongDoubleComplex,           BT uFloat128x,    BT uFloat128xComplex,
     427                         
     428                /* _FDXC*/    BT uFloat64xComplex,     BT uFloat64xComplex,     BT uFloat64xComplex,     BT uFloat64xComplex,     BT uFloat64xComplex,     BT uFloat64xComplex,
     429                              BT uFloat64xComplex,     BT uFloat64xComplex,     BT uFloat64xComplex,     BT uFloat64xComplex,     BT uFloat64xComplex,     BT uFloat64xComplex,
     430                              BT uFloat64xComplex,     BT uFloat64xComplex,     BT uFloat64xComplex,     BT uFloat64xComplex,     BT uFloat64xComplex,     BT uFloat64xComplex,
     431                              BT uFloat64xComplex,     BT uFloat64xComplex,     BT uFloat64xComplex,     BT uFloat64xComplex,     BT uFloat64xComplex,     BT uFloat64xComplex,
     432                              BT uFloat64xComplex,     BT uFloat64xComplex,     BT uFloat64xComplex,     BT uFloat64xComplex,     BT uFloat64xComplex,     BT uFloat128Complex,
     433                              BT uFloat128Complex,     BT uFloat128Complex,    BT LongDoubleComplex,    BT LongDoubleComplex,    BT uFloat128xComplex,    BT uFloat128xComplex,
     434                         
     435                /*   F80*/           BT uuFloat80,            BT uuFloat80,            BT uuFloat80,            BT uuFloat80,            BT uuFloat80,            BT uuFloat80,
     436                                     BT uuFloat80,            BT uuFloat80,            BT uuFloat80,            BT uuFloat80,            BT uuFloat80,            BT uuFloat80,
     437                                     BT uuFloat80,            BT uuFloat80,            BT uuFloat80,     BT uFloat64xComplex,            BT uuFloat80,     BT uFloat64xComplex,
     438                                     BT uuFloat80,     BT uFloat64xComplex,            BT uuFloat80,     BT uFloat64xComplex,            BT uuFloat80,     BT uFloat64xComplex,
     439                                     BT uuFloat80,     BT uFloat64xComplex,            BT uuFloat80,     BT uFloat64xComplex,            BT uuFloat80,            BT uFloat128,
     440                              BT uFloat128Complex,           BT uuFloat128,           BT LongDouble,    BT LongDoubleComplex,           BT uFloat128x,    BT uFloat128xComplex,
     441                         
     442                /*   _FB*/           BT uFloat128,            BT uFloat128,            BT uFloat128,            BT uFloat128,            BT uFloat128,            BT uFloat128,
     443                                     BT uFloat128,            BT uFloat128,            BT uFloat128,            BT uFloat128,            BT uFloat128,            BT uFloat128,
     444                                     BT uFloat128,            BT uFloat128,            BT uFloat128,     BT uFloat128Complex,            BT uFloat128,     BT uFloat128Complex,
     445                                     BT uFloat128,     BT uFloat128Complex,            BT uFloat128,     BT uFloat128Complex,            BT uFloat128,     BT uFloat128Complex,
     446                                     BT uFloat128,     BT uFloat128Complex,            BT uFloat128,     BT uFloat128Complex,            BT uFloat128,            BT uFloat128,
     447                              BT uFloat128Complex,           BT uuFloat128,           BT LongDouble,    BT LongDoubleComplex,           BT uFloat128x,    BT uFloat128xComplex,
     448                         
     449                /* _FLDC*/    BT uFloat128Complex,     BT uFloat128Complex,     BT uFloat128Complex,     BT uFloat128Complex,     BT uFloat128Complex,     BT uFloat128Complex,
     450                              BT uFloat128Complex,     BT uFloat128Complex,     BT uFloat128Complex,     BT uFloat128Complex,     BT uFloat128Complex,     BT uFloat128Complex,
     451                              BT uFloat128Complex,     BT uFloat128Complex,     BT uFloat128Complex,     BT uFloat128Complex,     BT uFloat128Complex,     BT uFloat128Complex,
     452                              BT uFloat128Complex,     BT uFloat128Complex,     BT uFloat128Complex,     BT uFloat128Complex,     BT uFloat128Complex,     BT uFloat128Complex,
     453                              BT uFloat128Complex,     BT uFloat128Complex,     BT uFloat128Complex,     BT uFloat128Complex,     BT uFloat128Complex,     BT uFloat128Complex,
     454                              BT uFloat128Complex,     BT uFloat128Complex,    BT LongDoubleComplex,    BT LongDoubleComplex,    BT uFloat128xComplex,    BT uFloat128xComplex,
     455                         
     456                /*    FB*/          BT uuFloat128,           BT uuFloat128,           BT uuFloat128,           BT uuFloat128,           BT uuFloat128,           BT uuFloat128,
     457                                    BT uuFloat128,           BT uuFloat128,           BT uuFloat128,           BT uuFloat128,           BT uuFloat128,           BT uuFloat128,
     458                                    BT uuFloat128,           BT uuFloat128,           BT uuFloat128,     BT uFloat128Complex,           BT uuFloat128,     BT uFloat128Complex,
     459                                    BT uuFloat128,     BT uFloat128Complex,           BT uuFloat128,     BT uFloat128Complex,           BT uuFloat128,     BT uFloat128Complex,
     460                                    BT uuFloat128,     BT uFloat128Complex,           BT uuFloat128,     BT uFloat128Complex,           BT uuFloat128,           BT uuFloat128,
     461                              BT uFloat128Complex,           BT uuFloat128,           BT LongDouble,    BT LongDoubleComplex,           BT uFloat128x,    BT uFloat128xComplex,
     462                         
     463                /*    LD*/          BT LongDouble,           BT LongDouble,           BT LongDouble,           BT LongDouble,           BT LongDouble,           BT LongDouble,
     464                                    BT LongDouble,           BT LongDouble,           BT LongDouble,           BT LongDouble,           BT LongDouble,           BT LongDouble,
     465                                    BT LongDouble,           BT LongDouble,           BT LongDouble,    BT LongDoubleComplex,           BT LongDouble,    BT LongDoubleComplex,
     466                                    BT LongDouble,    BT LongDoubleComplex,           BT LongDouble,    BT LongDoubleComplex,           BT LongDouble,    BT LongDoubleComplex,
     467                                    BT LongDouble,    BT LongDoubleComplex,           BT LongDouble,    BT LongDoubleComplex,           BT LongDouble,           BT LongDouble,
     468                             BT LongDoubleComplex,           BT LongDouble,           BT LongDouble,    BT LongDoubleComplex,           BT uFloat128x,    BT uFloat128xComplex,
     469                         
     470                /*   LDC*/   BT LongDoubleComplex,    BT LongDoubleComplex,    BT LongDoubleComplex,    BT LongDoubleComplex,    BT LongDoubleComplex,    BT LongDoubleComplex,
     471                             BT LongDoubleComplex,    BT LongDoubleComplex,    BT LongDoubleComplex,    BT LongDoubleComplex,    BT LongDoubleComplex,    BT LongDoubleComplex,
     472                             BT LongDoubleComplex,    BT LongDoubleComplex,    BT LongDoubleComplex,    BT LongDoubleComplex,    BT LongDoubleComplex,    BT LongDoubleComplex,
     473                             BT LongDoubleComplex,    BT LongDoubleComplex,    BT LongDoubleComplex,    BT LongDoubleComplex,    BT LongDoubleComplex,    BT LongDoubleComplex,
     474                             BT LongDoubleComplex,    BT LongDoubleComplex,    BT LongDoubleComplex,    BT LongDoubleComplex,    BT LongDoubleComplex,    BT LongDoubleComplex,
     475                             BT LongDoubleComplex,    BT LongDoubleComplex,    BT LongDoubleComplex,    BT LongDoubleComplex,    BT uFloat128xComplex,    BT uFloat128xComplex,
     476                         
     477                /*  _FBX*/          BT uFloat128x,           BT uFloat128x,           BT uFloat128x,           BT uFloat128x,           BT uFloat128x,           BT uFloat128x,
     478                                    BT uFloat128x,           BT uFloat128x,           BT uFloat128x,           BT uFloat128x,           BT uFloat128x,           BT uFloat128x,
     479                                    BT uFloat128x,           BT uFloat128x,           BT uFloat128x,    BT uFloat128xComplex,           BT uFloat128x,    BT uFloat128xComplex,
     480                                    BT uFloat128x,    BT uFloat128xComplex,           BT uFloat128x,    BT uFloat128xComplex,           BT uFloat128x,    BT uFloat128xComplex,
     481                                    BT uFloat128x,    BT uFloat128xComplex,           BT uFloat128x,    BT uFloat128xComplex,           BT uFloat128x,           BT uFloat128x,
     482                             BT uFloat128xComplex,           BT uFloat128x,           BT uFloat128x,    BT uFloat128xComplex,           BT uFloat128x,    BT uFloat128xComplex,
     483                         
     484                /*_FLDXC*/   BT uFloat128xComplex,    BT uFloat128xComplex,    BT uFloat128xComplex,    BT uFloat128xComplex,    BT uFloat128xComplex,    BT uFloat128xComplex,
     485                             BT uFloat128xComplex,    BT uFloat128xComplex,    BT uFloat128xComplex,    BT uFloat128xComplex,    BT uFloat128xComplex,    BT uFloat128xComplex,
     486                             BT uFloat128xComplex,    BT uFloat128xComplex,    BT uFloat128xComplex,    BT uFloat128xComplex,    BT uFloat128xComplex,    BT uFloat128xComplex,
     487                             BT uFloat128xComplex,    BT uFloat128xComplex,    BT uFloat128xComplex,    BT uFloat128xComplex,    BT uFloat128xComplex,    BT uFloat128xComplex,
     488                             BT uFloat128xComplex,    BT uFloat128xComplex,    BT uFloat128xComplex,    BT uFloat128xComplex,    BT uFloat128xComplex,    BT uFloat128xComplex,
     489                             BT uFloat128xComplex,    BT uFloat128xComplex,    BT uFloat128xComplex,    BT uFloat128xComplex,    BT uFloat128xComplex,    BT uFloat128xComplex,
     490                         
     491        };
     492        #undef BT
     493        // GENERATED END
     494
    207495        static_assert(
    208                 sizeof(combinedType)/sizeof(combinedType[0][0]) == BasicType::NUMBER_OF_BASIC_TYPES*BasicType::NUMBER_OF_BASIC_TYPES,
     496                sizeof(commonTypes)/sizeof(commonTypes[0][0]) == BasicType::NUMBER_OF_BASIC_TYPES*BasicType::NUMBER_OF_BASIC_TYPES,
    209497                "Each basic type kind should have a corresponding row in the combined type matrix"
    210498        );
     
    218506        void CommonType::postvisit( BasicType *basicType ) {
    219507                if ( BasicType *otherBasic = dynamic_cast< BasicType* >( type2 ) ) {
    220                         BasicType::Kind newType = combinedType[ basicType->get_kind() ][ otherBasic->get_kind() ];
     508                        BasicType::Kind newType = commonTypes[ basicType->get_kind() ][ otherBasic->get_kind() ];
    221509                        if ( ( ( newType == basicType->get_kind() && basicType->get_qualifiers() >= otherBasic->get_qualifiers() ) || widenFirst ) && ( ( newType == otherBasic->get_kind() && basicType->get_qualifiers() <= otherBasic->get_qualifiers() ) || widenSecond ) ) {
    222510                                result = new BasicType( basicType->get_qualifiers() | otherBasic->get_qualifiers(), newType );
     
    224512                } else if ( dynamic_cast< EnumInstType * > ( type2 ) || dynamic_cast< ZeroType* >( type2 ) || dynamic_cast< OneType* >( type2 ) ) {
    225513                        // use signed int in lieu of the enum/zero/one type
    226                         BasicType::Kind newType = combinedType[ basicType->get_kind() ][ BasicType::SignedInt ];
     514                        BasicType::Kind newType = commonTypes[ basicType->get_kind() ][ BasicType::SignedInt ];
    227515                        if ( ( ( newType == basicType->get_kind() && basicType->get_qualifiers() >= type2->get_qualifiers() ) || widenFirst ) && ( ( newType != basicType->get_kind() && basicType->get_qualifiers() <= type2->get_qualifiers() ) || widenSecond ) ) {
    228516                                result = new BasicType( basicType->get_qualifiers() | type2->get_qualifiers(), newType );
  • src/ResolvExpr/ConversionCost.cc

    r6d01d89 r85d44c6  
    1010// Created On       : Sun May 17 07:06:19 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Mon Sep 25 15:43:34 2017
    13 // Update Count     : 10
     12// Last Modified On : Wed Feb 13 23:04:51 2019
     13// Update Count     : 22
    1414//
    1515
     
    2828
    2929namespace ResolvExpr {
    30         const Cost Cost::zero =      Cost{  0,  0,  0,  0,  0,  0 };
    31         const Cost Cost::infinity =  Cost{ -1, -1, -1, -1,  1, -1 };
    32         const Cost Cost::unsafe =    Cost{  1,  0,  0,  0,  0,  0 };
    33         const Cost Cost::poly =      Cost{  0,  1,  0,  0,  0,  0 };
    34         const Cost Cost::safe =      Cost{  0,  0,  1,  0,  0,  0 };
    35         const Cost Cost::var =       Cost{  0,  0,  0,  1,  0,  0 };
    36         const Cost Cost::spec =      Cost{  0,  0,  0,  0, -1,  0 };
    37         const Cost Cost::reference = Cost{  0,  0,  0,  0,  0,  1 };
     30        const Cost Cost::zero =      Cost{  0,  0,  0,  0,  0,  0,  0 };
     31        const Cost Cost::infinity =  Cost{ -1, -1, -1, -1, -1,  1, -1 };
     32        const Cost Cost::unsafe =    Cost{  1,  0,  0,  0,  0,  0,  0 };
     33        const Cost Cost::poly =      Cost{  0,  1,  0,  0,  0,  0,  0 };
     34        const Cost Cost::safe =      Cost{  0,  0,  1,  0,  0,  0,  0 };
     35        const Cost Cost::sign =      Cost{  0,  0,  0,  1,  0,  0,  0 };
     36        const Cost Cost::var =       Cost{  0,  0,  0,  0,  1,  0,  0 };
     37        const Cost Cost::spec =      Cost{  0,  0,  0,  0,  0, -1,  0 };
     38        const Cost Cost::reference = Cost{  0,  0,  0,  0,  0,  0,  1 };
    3839
    3940#if 0
     
    178179                : dest( dest ), indexer( indexer ), cost( Cost::infinity ), env( env ), costFunc( costFunc ) {
    179180        }
    180 
     181#if 0
    181182/*
    182183            Old
     
    265266                "Each basic type kind should have a corresponding row in the cost matrix"
    266267        );
    267 
     268#endif
     269
     270        // GENERATED START, DO NOT EDIT
     271        /* EXTENDED INTEGRAL RANK HIERARCHY (root to leaves)
     272                                 _Bool
     273        char                signed char         unsigned char       
     274                  signed short int         unsigned short int       
     275                  signed int               unsigned int             
     276                  signed long int          unsigned long int       
     277                  signed long long int     unsigned long long int   
     278                  __int128                 unsigned __int128       
     279                  _Float16                 _Float16 _Complex       
     280                  _Float32                 _Float32 _Complex       
     281                  float                    float _Complex           
     282                  _Float32x                _Float32x _Complex       
     283                  _Float64                 _Float64 _Complex       
     284                  double                   double _Complex         
     285                  _Float64x                _Float64x _Complex       
     286                             __float80
     287                  _Float128                _Float128 _Complex       
     288                            __float128
     289                  long double              long double _Complex     
     290                  _Float128x               _Float128x _Complex     
     291        */
     292        // GENERATED END
     293
     294        // GENERATED START, DO NOT EDIT
     295        static const int costMatrix[BasicType::NUMBER_OF_BASIC_TYPES][BasicType::NUMBER_OF_BASIC_TYPES] = { // path length from root to node
     296                /*          B    C   SC   UC   SI  SUI    I   UI   LI  LUI  LLI LLUI   IB  UIB  _FH  _FH   _F  _FC    F   FC  _FX _FXC   FD _FDC    D   DC F80X _FDXC  F80  _FB _FLDC   FB   LD  LDC _FBX _FLDXC */
     297                /*     B*/  0,   1,   1,   2,   2,   3,   3,   4,   4,   5,   5,   6,   6,   7,   7,   8,   8,   9,   9,  10,  10,  11,  11,  12,  12,  13,  13,  14,  14,  15,  15,  16,  17,  16,  18,  17,
     298                /*     C*/ -1,   0,   1,   1,   1,   2,   2,   3,   3,   4,   4,   5,   5,   6,   6,   7,   7,   8,   8,   9,   9,  10,  10,  11,  11,  12,  12,  13,  13,  14,  14,  15,  16,  15,  17,  16,
     299                /*    SC*/ -1,  -1,   0,   1,   1,   2,   2,   3,   3,   4,   4,   5,   5,   6,   6,   7,   7,   8,   8,   9,   9,  10,  10,  11,  11,  12,  12,  13,  13,  14,  14,  15,  16,  15,  17,  16,
     300                /*    UC*/ -1,  -1,  -1,   0,   1,   1,   2,   2,   3,   3,   4,   4,   5,   5,   6,   7,   7,   8,   8,   9,   9,  10,  10,  11,  11,  12,  12,  13,  13,  14,  14,  15,  16,  15,  17,  16,
     301                /*    SI*/ -1,  -1,  -1,  -1,   0,   1,   1,   2,   2,   3,   3,   4,   4,   5,   5,   6,   6,   7,   7,   8,   8,   9,   9,  10,  10,  11,  11,  12,  12,  13,  13,  14,  15,  14,  16,  15,
     302                /*   SUI*/ -1,  -1,  -1,  -1,  -1,   0,   1,   1,   2,   2,   3,   3,   4,   4,   5,   6,   6,   7,   7,   8,   8,   9,   9,  10,  10,  11,  11,  12,  12,  13,  13,  14,  15,  14,  16,  15,
     303                /*     I*/ -1,  -1,  -1,  -1,  -1,  -1,   0,   1,   1,   2,   2,   3,   3,   4,   4,   5,   5,   6,   6,   7,   7,   8,   8,   9,   9,  10,  10,  11,  11,  12,  12,  13,  14,  13,  15,  14,
     304                /*    UI*/ -1,  -1,  -1,  -1,  -1,  -1,  -1,   0,   1,   1,   2,   2,   3,   3,   4,   5,   5,   6,   6,   7,   7,   8,   8,   9,   9,  10,  10,  11,  11,  12,  12,  13,  14,  13,  15,  14,
     305                /*    LI*/ -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,   0,   1,   1,   2,   2,   3,   3,   4,   4,   5,   5,   6,   6,   7,   7,   8,   8,   9,   9,  10,  10,  11,  11,  12,  13,  12,  14,  13,
     306                /*   LUI*/ -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,   0,   1,   1,   2,   2,   3,   4,   4,   5,   5,   6,   6,   7,   7,   8,   8,   9,   9,  10,  10,  11,  11,  12,  13,  12,  14,  13,
     307                /*   LLI*/ -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,   0,   1,   1,   2,   2,   3,   3,   4,   4,   5,   5,   6,   6,   7,   7,   8,   8,   9,   9,  10,  10,  11,  12,  11,  13,  12,
     308                /*  LLUI*/ -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,   0,   1,   1,   2,   3,   3,   4,   4,   5,   5,   6,   6,   7,   7,   8,   8,   9,   9,  10,  10,  11,  12,  11,  13,  12,
     309                /*    IB*/ -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,   0,   1,   1,   2,   2,   3,   3,   4,   4,   5,   5,   6,   6,   7,   7,   8,   8,   9,   9,  10,  11,  10,  12,  11,
     310                /*   UIB*/ -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,   0,   1,   2,   2,   3,   3,   4,   4,   5,   5,   6,   6,   7,   7,   8,   8,   9,   9,  10,  11,  10,  12,  11,
     311                /*   _FH*/ -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,   0,   1,   1,   2,   2,   3,   3,   4,   4,   5,   5,   6,   6,   7,   7,   8,   8,   9,  10,   9,  11,  10,
     312                /*   _FH*/ -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,   0,  -1,   1,  -1,   2,  -1,   3,  -1,   4,  -1,   5,  -1,   6,  -1,  -1,   7,  -1,  -1,   8,  -1,   9,
     313                /*    _F*/ -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,   0,   1,   1,   2,   2,   3,   3,   4,   4,   5,   5,   6,   6,   7,   7,   8,   9,   8,  10,   9,
     314                /*   _FC*/ -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,   0,  -1,   1,  -1,   2,  -1,   3,  -1,   4,  -1,   5,  -1,  -1,   6,  -1,  -1,   7,  -1,   8,
     315                /*     F*/ -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,   0,   1,   1,   2,   2,   3,   3,   4,   4,   5,   5,   6,   6,   7,   8,   7,   9,   8,
     316                /*    FC*/ -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,   0,  -1,   1,  -1,   2,  -1,   3,  -1,   4,  -1,  -1,   5,  -1,  -1,   6,  -1,   7,
     317                /*   _FX*/ -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,   0,   1,   1,   2,   2,   3,   3,   4,   4,   5,   5,   6,   7,   6,   8,   7,
     318                /*  _FXC*/ -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,   0,  -1,   1,  -1,   2,  -1,   3,  -1,  -1,   4,  -1,  -1,   5,  -1,   6,
     319                /*    FD*/ -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,   0,   1,   1,   2,   2,   3,   3,   4,   4,   5,   6,   5,   7,   6,
     320                /*  _FDC*/ -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,   0,  -1,   1,  -1,   2,  -1,  -1,   3,  -1,  -1,   4,  -1,   5,
     321                /*     D*/ -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,   0,   1,   1,   2,   2,   3,   3,   4,   5,   4,   6,   5,
     322                /*    DC*/ -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,   0,  -1,   1,  -1,  -1,   2,  -1,  -1,   3,  -1,   4,
     323                /*  F80X*/ -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,   0,   1,   1,   2,   2,   3,   4,   3,   5,   4,
     324                /* _FDXC*/ -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,   0,  -1,  -1,   1,  -1,  -1,   2,  -1,   3,
     325                /*   F80*/ -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,   1,   0,   1,   2,   2,   3,   3,   4,   4,
     326                /*   _FB*/ -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,   0,   1,   1,   2,   2,   3,   3,
     327                /* _FLDC*/ -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,   0,  -1,  -1,   1,  -1,   2,
     328                /*    FB*/ -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,   1,   0,   1,   2,   2,   3,
     329                /*    LD*/ -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,   0,   1,   1,   2,
     330                /*   LDC*/ -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,   0,  -1,   1,
     331                /*  _FBX*/ -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,   0,   1,
     332                /*_FLDXC*/ -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,   0,
     333        }; // costMatrix
     334        // GENERATED END
     335        static_assert(
     336                sizeof(costMatrix)/sizeof(costMatrix[0][0]) == BasicType::NUMBER_OF_BASIC_TYPES*BasicType::NUMBER_OF_BASIC_TYPES,
     337                "Missing row in the cost matrix"
     338        );
     339
     340        // GENERATED START, DO NOT EDIT
     341        static const int signMatrix[BasicType::NUMBER_OF_BASIC_TYPES][BasicType::NUMBER_OF_BASIC_TYPES] = { // number of sign changes in safe conversion
     342                /*          B    C   SC   UC   SI  SUI    I   UI   LI  LUI  LLI LLUI   IB  UIB  _FH  _FH   _F  _FC    F   FC  _FX _FXC   FD _FDC    D   DC F80X _FDXC  F80  _FB _FLDC   FB   LD  LDC _FBX _FLDXC */
     343                /*     B*/  0,   0,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     344                /*     C*/ -1,   0,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     345                /*    SC*/ -1,  -1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     346                /*    UC*/ -1,  -1,  -1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     347                /*    SI*/ -1,  -1,  -1,  -1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     348                /*   SUI*/ -1,  -1,  -1,  -1,  -1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     349                /*     I*/ -1,  -1,  -1,  -1,  -1,  -1,   0,   1,   0,   1,   0,   1,   0,   1,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     350                /*    UI*/ -1,  -1,  -1,  -1,  -1,  -1,  -1,   0,   1,   0,   1,   0,   1,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     351                /*    LI*/ -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,   0,   1,   0,   1,   0,   1,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     352                /*   LUI*/ -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,   0,   1,   0,   1,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     353                /*   LLI*/ -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,   0,   1,   0,   1,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     354                /*  LLUI*/ -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,   0,   1,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     355                /*    IB*/ -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,   0,   1,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     356                /*   UIB*/ -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     357                /*   _FH*/ -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     358                /*   _FH*/ -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,   0,  -1,   0,  -1,   0,  -1,   0,  -1,   0,  -1,   0,  -1,   0,  -1,  -1,   0,  -1,  -1,   0,  -1,   0,
     359                /*    _F*/ -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     360                /*   _FC*/ -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,   0,  -1,   0,  -1,   0,  -1,   0,  -1,   0,  -1,   0,  -1,  -1,   0,  -1,  -1,   0,  -1,   0,
     361                /*     F*/ -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     362                /*    FC*/ -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,   0,  -1,   0,  -1,   0,  -1,   0,  -1,   0,  -1,  -1,   0,  -1,  -1,   0,  -1,   0,
     363                /*   _FX*/ -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     364                /*  _FXC*/ -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,   0,  -1,   0,  -1,   0,  -1,   0,  -1,  -1,   0,  -1,  -1,   0,  -1,   0,
     365                /*    FD*/ -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     366                /*  _FDC*/ -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,   0,  -1,   0,  -1,   0,  -1,  -1,   0,  -1,  -1,   0,  -1,   0,
     367                /*     D*/ -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     368                /*    DC*/ -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,   0,  -1,   0,  -1,  -1,   0,  -1,  -1,   0,  -1,   0,
     369                /*  F80X*/ -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     370                /* _FDXC*/ -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,   0,  -1,  -1,   0,  -1,  -1,   0,  -1,   0,
     371                /*   F80*/ -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     372                /*   _FB*/ -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,   0,   0,   0,   0,   0,   0,   0,
     373                /* _FLDC*/ -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,   0,  -1,  -1,   0,  -1,   0,
     374                /*    FB*/ -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,   0,   0,   0,   0,   0,   0,
     375                /*    LD*/ -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,   0,   0,   0,   0,
     376                /*   LDC*/ -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,   0,  -1,   0,
     377                /*  _FBX*/ -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,   0,   0,
     378                /*_FLDXC*/ -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,   0,
     379        }; // signMatrix
     380        // GENERATED END
     381        static_assert(
     382                sizeof(signMatrix)/sizeof(signMatrix[0][0]) == BasicType::NUMBER_OF_BASIC_TYPES*BasicType::NUMBER_OF_BASIC_TYPES,
     383                "Missing row in the sign matrix"
     384        );
    268385
    269386        void ConversionCost::postvisit( VoidType * ) {
     
    279396                                cost = Cost::zero;
    280397                                cost.incSafe( tableResult );
     398                                cost.incSign( signMatrix[ basicType->get_kind() ][ destAsBasic->get_kind() ] );
    281399                        } // if
    282400                } else if ( dynamic_cast< EnumInstType *>( dest ) ) {
     
    300418                                        // types are the same, except otherPointer has more qualifiers
    301419                                        cost = Cost::safe;
    302                                 }
     420                                } // if
    303421                        } else {
    304422                                int assignResult = ptrsAssignable( pointerType->base, destAsPtr->base, env );
     
    422540                                cost = Cost::zero;
    423541                                cost.incSafe( tableResult + 1 );
    424                         }
     542                                cost.incSign( signMatrix[ BasicType::SignedInt ][ destAsBasic->get_kind() ] );
     543                        } // if
    425544                } else if ( dynamic_cast< PointerType* >( dest ) ) {
    426545                        cost = Cost::safe;
    427                 }
     546                } // if
    428547        }
    429548
     
    439558                                cost = Cost::zero;
    440559                                cost.incSafe( tableResult + 1 );
    441                         }
    442                 }
     560                                cost.incSign( signMatrix[ BasicType::SignedInt ][ destAsBasic->get_kind() ] );
     561                        } // if
     562                } // if
    443563        }
    444564} // namespace ResolvExpr
  • src/ResolvExpr/Cost.h

    r6d01d89 r85d44c6  
    99// Author           : Richard C. Bilson
    1010// Created On       : Sun May 17 09:39:50 2015
    11 // Last Modified By : Aaron B. Moss
    12 // Last Modified On : Fri Oct 05 14:32:00 2018
    13 // Update Count     : 7
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Thu Feb  7 20:54:29 2019
     13// Update Count     : 8
    1414//
    1515
     
    2121        class Cost {
    2222          private:
    23                 Cost( int unsafeCost, int polyCost, int safeCost, int varCost, int specCost,
    24                         int referenceCost );
    25 
     23                Cost( int unsafeCost, int polyCost, int safeCost, int signCost,
     24                        int varCost, int specCost, int referenceCost );
    2625          public:
    2726                Cost & incUnsafe( int inc = 1 );
    2827                Cost & incPoly( int inc = 1 );
    2928                Cost & incSafe( int inc = 1 );
     29                Cost & incSign( int inc = 1 );
    3030                Cost & incVar( int inc = 1 );
    3131                Cost & decSpec( int inc = 1 );
     
    3535                int get_polyCost() const { return polyCost; }
    3636                int get_safeCost() const { return safeCost; }
     37                int get_signCost() const { return signCost; }
    3738                int get_varCost() const { return varCost; }
    3839                int get_specCost() const { return specCost; }
     
    4041
    4142                Cost operator+( const Cost &other ) const;
    42                 Cost operator-( const Cost &other ) const;
    4343                Cost &operator+=( const Cost &other );
    4444                bool operator<( const Cost &other ) const;
     
    5555                static const Cost poly;
    5656                static const Cost safe;
     57                static const Cost sign;
    5758                static const Cost var;
    5859                static const Cost spec;
     
    6364                int polyCost;       ///< Count of parameters and return values bound to some poly type
    6465                int safeCost;       ///< Safe (widening) conversions
     66                int signCost;       ///< Count of safe sign conversions
    6567                int varCost;        ///< Count of polymorphic type variables
    6668                int specCost;       ///< Polymorphic type specializations (type assertions), negative cost
     
    6870        };
    6971
    70         inline Cost::Cost( int unsafeCost, int polyCost, int safeCost, int varCost, int specCost,
    71                         int referenceCost )
    72                 : unsafeCost( unsafeCost ), polyCost( polyCost ), safeCost( safeCost ), varCost( varCost ),
    73                   specCost( specCost ), referenceCost( referenceCost ) {}
     72        inline Cost::Cost( int unsafeCost, int polyCost, int safeCost, int signCost,
     73                        int varCost, int specCost, int referenceCost )
     74                : unsafeCost( unsafeCost ), polyCost( polyCost ), safeCost( safeCost ), signCost( signCost ),
     75                  varCost( varCost ), specCost( specCost ), referenceCost( referenceCost ) {}
    7476
    7577        inline Cost & Cost::incUnsafe( int inc ) {
     
    8890                if ( *this == infinity ) return *this;
    8991                safeCost += inc;
     92                return *this;
     93        }
     94
     95        inline Cost & Cost::incSign( int inc ) {
     96                if ( *this == infinity ) return *this;
     97                signCost += inc;
    9098                return *this;
    9199        }
     
    111119        inline Cost Cost::operator+( const Cost &other ) const {
    112120                if ( *this == infinity || other == infinity ) return infinity;
    113                 return Cost{ 
    114                         unsafeCost + other.unsafeCost, polyCost + other.polyCost, safeCost + other.safeCost, 
    115                         varCost + other.varCost, specCost + other.specCost,
     121                return Cost{
     122                        unsafeCost + other.unsafeCost, polyCost + other.polyCost, safeCost + other.safeCost,
     123                        signCost + other.signCost, varCost + other.varCost, specCost + other.specCost,
    116124                        referenceCost + other.referenceCost };
    117         }
    118 
    119         inline Cost Cost::operator-( const Cost &other ) const {
    120                 if ( *this == infinity || other == infinity ) return infinity;
    121                 return Cost{
    122                         unsafeCost - other.unsafeCost, polyCost - other.polyCost, safeCost - other.safeCost,
    123                         varCost - other.varCost, specCost - other.specCost,
    124                         referenceCost - other.referenceCost };
    125125        }
    126126
     
    134134                polyCost += other.polyCost;
    135135                safeCost += other.safeCost;
     136                signCost += other.signCost;
    136137                varCost += other.varCost;
    137138                specCost += other.specCost;
     
    156157                } else if ( safeCost < other.safeCost ) {
    157158                        return true;
     159                } else if ( signCost > other.signCost ) {
     160                        return false;
     161                } else if ( signCost < other.signCost ) {
     162                        return true;
    158163                } else if ( varCost > other.varCost ) {
    159164                        return false;
     
    180185                c = polyCost - other.polyCost; if ( c ) return c;
    181186                c = safeCost - other.safeCost; if ( c ) return c;
     187                c = signCost - other.signCost; if ( c ) return c;
    182188                c = varCost - other.varCost; if ( c ) return c;
    183189                c = specCost - other.specCost; if ( c ) return c;
     
    189195                        && polyCost == other.polyCost
    190196                        && safeCost == other.safeCost
     197                        && signCost == other.signCost
    191198                        && varCost == other.varCost
    192199                        && specCost == other.specCost
     
    199206
    200207        inline std::ostream &operator<<( std::ostream &os, const Cost &cost ) {
    201                 return os << "( " << cost.unsafeCost << ", " << cost.polyCost << ", "
    202                           << cost.safeCost << ", " << cost.varCost << ", " << cost.specCost << ", "
     208                return os << "( " << cost.unsafeCost << ", " << cost.polyCost << ", "
     209                          << cost.safeCost << ", " << cost.signCost << ", "
     210                                  << cost.varCost << ", " << cost.specCost << ", "
    203211                          << cost.referenceCost << " )";
    204212        }
  • src/ResolvExpr/Resolver.cc

    r6d01d89 r85d44c6  
    99// Author           : Richard C. Bilson
    1010// Created On       : Sun May 17 12:17:01 2015
    11 // Last Modified By : Aaron B. Moss
    12 // Last Modified On : Fri Oct 05 09:43:00 2018
    13 // Update Count     : 214
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Wed Feb 13 18:13:43 2019
     13// Update Count     : 216
    1414//
    1515
  • src/ResolvExpr/typeops.h

    r6d01d89 r85d44c6  
    1010// Created On       : Sun May 17 07:28:22 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sat Jul 22 09:36:18 2017
    13 // Update Count     : 3
     12// Last Modified On : Fri Feb  8 09:30:34 2019
     13// Update Count     : 4
    1414//
    1515
     
    101101
    102102        // in CommonType.cc
    103         Type *commonType( Type *type1, Type *type2, bool widenFirst, bool widenSecond, const SymTab::Indexer &indexer, TypeEnvironment &env, const OpenVarSet &openVars );
     103        Type * commonType( Type *type1, Type *type2, bool widenFirst, bool widenSecond, const SymTab::Indexer &indexer, TypeEnvironment &env, const OpenVarSet &openVars );
    104104
    105105        // in PolyCost.cc
Note: See TracChangeset for help on using the changeset viewer.