tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

arg_min_max.https.any.js (61886B)


      1 // META: title=test WebNN API argMin/Max operations
      2 // META: global=window
      3 // META: variant=?cpu
      4 // META: variant=?gpu
      5 // META: variant=?npu
      6 // META: script=../resources/utils.js
      7 // META: timeout=long
      8 
      9 'use strict';
     10 
     11 // https://www.w3.org/TR/webnn/#api-mlgraphbuilder-argminmax
     12 // Return the index location of the minimum or maximum values of all the input
     13 // values along the axis.
     14 //
     15 // dictionary MLArgMinMaxOptions : MLOperatorOptions {
     16 //   boolean keepDimensions = false;
     17 //   MLOperandDataType outputDataType = "int32";
     18 // };
     19 //
     20 // MLOperand argMin(MLOperand input, [EnforceRange] unsigned long axis,
     21 //                  optional MLArgMinMaxOptions options = {});
     22 // MLOperand argMax(MLOperand input, [EnforceRange] unsigned long axis,
     23 //                  optional MLArgMinMaxOptions options = {});
     24 
     25 const argMinMaxTests = [
     26  // argMin tests
     27  {
     28    'name': 'argMin float32 1D constant tensor, axis=0, default options',
     29    'graph': {
     30      'inputs': {
     31        'argMinInput': {
     32          'data': [
     33            3.8301241397857666, -24.986488342285156, 5.29998254776001,
     34            -48.54866027832031, 40.308868408203125,  60.184295654296875,
     35            -82.78385925292969, -96.50904083251953,  71.87028503417969,
     36            38.86639404296875,  -39.14372634887695,  31.444366455078125,
     37            -82.78385925292969, -96.50904083251953,  -25.533889770507812,
     38            -16.14226531982422, 66.63677215576172,   82.51197814941406,
     39            -82.78385925292969, -96.50904083251953,  39.76872634887695,
     40            42.1504020690918,   82.66864013671875,   85.45269012451172
     41          ],
     42          'descriptor': {shape: [24], dataType: 'float32'},
     43          'constant': true
     44        }
     45      },
     46      'operators': [{
     47        'name': 'argMin',
     48        'arguments': [{'input': 'argMinInput'}, {'axis': 0}],
     49        'outputs': 'argMinOutput'
     50      }],
     51      'expectedOutputs': {
     52        'argMinOutput':
     53            {'data': [7], 'descriptor': {shape: [], dataType: 'int32'}}
     54      }
     55    }
     56  },
     57  {
     58    'name': 'argMin float32 1D tensor, axis=0, default options',
     59    'graph': {
     60      'inputs': {
     61        'argMinInput': {
     62          'data': [
     63            3.8301241397857666, -24.986488342285156, 5.29998254776001,
     64            -48.54866027832031, 40.308868408203125,  60.184295654296875,
     65            -82.78385925292969, -96.50904083251953,  71.87028503417969,
     66            38.86639404296875,  -39.14372634887695,  31.444366455078125,
     67            -82.78385925292969, -96.50904083251953,  -25.533889770507812,
     68            -16.14226531982422, 66.63677215576172,   82.51197814941406,
     69            -82.78385925292969, -96.50904083251953,  39.76872634887695,
     70            42.1504020690918,   82.66864013671875,   85.45269012451172
     71          ],
     72          'descriptor': {shape: [24], dataType: 'float32'}
     73        }
     74      },
     75      'operators': [{
     76        'name': 'argMin',
     77        'arguments': [{'input': 'argMinInput'}, {'axis': 0}],
     78        'outputs': 'argMinOutput'
     79      }],
     80      'expectedOutputs': {
     81        'argMinOutput':
     82            {'data': [7], 'descriptor': {shape: [], dataType: 'int32'}}
     83      }
     84    }
     85  },
     86  {
     87    'name': 'argMin float32 2D tensor, axis=0, default options',
     88    'graph': {
     89      'inputs': {
     90        'argMinInput': {
     91          'data': [
     92            3.8301241397857666, -24.986488342285156, 5.29998254776001,
     93            -48.54866027832031, 40.308868408203125,  60.184295654296875,
     94            -82.78385925292969, -96.50904083251953,  71.87028503417969,
     95            38.86639404296875,  -39.14372634887695,  31.444366455078125,
     96            -82.78385925292969, -96.50904083251953,  -25.533889770507812,
     97            -16.14226531982422, 66.63677215576172,   82.51197814941406,
     98            -82.78385925292969, -96.50904083251953,  39.76872634887695,
     99            42.1504020690918,   82.66864013671875,   85.45269012451172
    100          ],
    101          'descriptor': {shape: [4, 6], dataType: 'float32'}
    102        }
    103      },
    104      'operators': [{
    105        'name': 'argMin',
    106        'arguments': [{'input': 'argMinInput'}, {'axis': 0}],
    107        'outputs': 'argMinOutput'
    108      }],
    109      'expectedOutputs': {
    110        'argMinOutput': {
    111          'data': [1, 1, 2, 0, 1, 1],
    112          'descriptor': {shape: [6], dataType: 'int32'}
    113        }
    114      }
    115    }
    116  },
    117  {
    118    'name': 'argMin float32 3D tensor, axis=0, default options',
    119    'graph': {
    120      'inputs': {
    121        'argMinInput': {
    122          'data': [
    123            3.8301241397857666, -24.986488342285156, 5.29998254776001,
    124            -48.54866027832031, 40.308868408203125,  60.184295654296875,
    125            -82.78385925292969, -96.50904083251953,  71.87028503417969,
    126            38.86639404296875,  -39.14372634887695,  31.444366455078125,
    127            -82.78385925292969, -96.50904083251953,  -25.533889770507812,
    128            -16.14226531982422, 66.63677215576172,   82.51197814941406,
    129            -82.78385925292969, -96.50904083251953,  39.76872634887695,
    130            42.1504020690918,   82.66864013671875,   85.45269012451172
    131          ],
    132          'descriptor': {shape: [2, 3, 4], dataType: 'float32'}
    133        }
    134      },
    135      'operators': [{
    136        'name': 'argMin',
    137        'arguments': [{'input': 'argMinInput'}, {'axis': 0}],
    138        'outputs': 'argMinOutput'
    139      }],
    140      'expectedOutputs': {
    141        'argMinOutput': {
    142          'data': [1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0],
    143          'descriptor': {shape: [3, 4], dataType: 'int32'}
    144        }
    145      }
    146    }
    147  },
    148  {
    149    'name': 'argMin float32 4D tensor, axis=0, default options',
    150    'graph': {
    151      'inputs': {
    152        'argMinInput': {
    153          'data': [
    154            3.8301241397857666, -24.986488342285156, 5.29998254776001,
    155            -48.54866027832031, 40.308868408203125,  60.184295654296875,
    156            -82.78385925292969, -96.50904083251953,  71.87028503417969,
    157            38.86639404296875,  -39.14372634887695,  31.444366455078125,
    158            -82.78385925292969, -96.50904083251953,  -25.533889770507812,
    159            -16.14226531982422, 66.63677215576172,   82.51197814941406,
    160            -82.78385925292969, -96.50904083251953,  39.76872634887695,
    161            42.1504020690918,   82.66864013671875,   85.45269012451172
    162          ],
    163          'descriptor': {shape: [2, 1, 4, 3], dataType: 'float32'}
    164        }
    165      },
    166      'operators': [{
    167        'name': 'argMin',
    168        'arguments': [{'input': 'argMinInput'}, {'axis': 0}],
    169        'outputs': 'argMinOutput'
    170      }],
    171      'expectedOutputs': {
    172        'argMinOutput': {
    173          'data': [1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0],
    174          'descriptor': {shape: [1, 4, 3], dataType: 'int32'}
    175        }
    176      }
    177    }
    178  },
    179  {
    180    'name': 'argMin float32 5D tensor, axis=0, default options',
    181    'graph': {
    182      'inputs': {
    183        'argMinInput': {
    184          'data': [
    185            3.8301241397857666, -24.986488342285156, 5.29998254776001,
    186            -48.54866027832031, 40.308868408203125,  60.184295654296875,
    187            -82.78385925292969, -96.50904083251953,  71.87028503417969,
    188            38.86639404296875,  -39.14372634887695,  31.444366455078125,
    189            -82.78385925292969, -96.50904083251953,  -25.533889770507812,
    190            -16.14226531982422, 66.63677215576172,   82.51197814941406,
    191            -82.78385925292969, -96.50904083251953,  39.76872634887695,
    192            42.1504020690918,   82.66864013671875,   85.45269012451172
    193          ],
    194          'descriptor': {shape: [2, 1, 4, 1, 3], dataType: 'float32'}
    195        }
    196      },
    197      'operators': [{
    198        'name': 'argMin',
    199        'arguments': [{'input': 'argMinInput'}, {'axis': 0}],
    200        'outputs': 'argMinOutput'
    201      }],
    202      'expectedOutputs': {
    203        'argMinOutput': {
    204          'data': [1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0],
    205          'descriptor': {shape: [1, 4, 1, 3], dataType: 'int32'}
    206        }
    207      }
    208    }
    209  },
    210  {
    211    'name': 'argMin float32 4D tensor, axis=2',
    212    'graph': {
    213      'inputs': {
    214        'argMinInput': {
    215          'data': [
    216            3.8301241397857666, -24.986488342285156, 5.29998254776001,
    217            -48.54866027832031, 40.308868408203125,  60.184295654296875,
    218            -82.78385925292969, -96.50904083251953,  71.87028503417969,
    219            38.86639404296875,  -39.14372634887695,  31.444366455078125,
    220            -82.78385925292969, -96.50904083251953,  -25.533889770507812,
    221            -16.14226531982422, 66.63677215576172,   82.51197814941406,
    222            -82.78385925292969, -96.50904083251953,  39.76872634887695,
    223            42.1504020690918,   82.66864013671875,   85.45269012451172
    224          ],
    225          'descriptor': {shape: [2, 1, 4, 3], dataType: 'float32'}
    226        }
    227      },
    228      'operators': [{
    229        'name': 'argMin',
    230        'arguments': [{'input': 'argMinInput'}, {'axis': 2}],
    231        'outputs': 'argMinOutput'
    232      }],
    233      'expectedOutputs': {
    234        'argMinOutput': {
    235          'data': [2, 2, 0, 0, 0, 0],
    236          'descriptor': {shape: [2, 1, 3], dataType: 'int32'}
    237        }
    238      }
    239    }
    240  },
    241  {
    242    'name': 'argMin float32 4D tensor, axis=0, options.keepDimensions=true',
    243    'graph': {
    244      'inputs': {
    245        'argMinInput': {
    246          'data': [
    247            3.8301241397857666, -24.986488342285156, 5.29998254776001,
    248            -48.54866027832031, 40.308868408203125,  60.184295654296875,
    249            -82.78385925292969, -96.50904083251953,  71.87028503417969,
    250            38.86639404296875,  -39.14372634887695,  31.444366455078125,
    251            -82.78385925292969, -96.50904083251953,  -25.533889770507812,
    252            -16.14226531982422, 66.63677215576172,   82.51197814941406,
    253            -82.78385925292969, -96.50904083251953,  39.76872634887695,
    254            42.1504020690918,   82.66864013671875,   85.45269012451172
    255          ],
    256          'descriptor': {shape: [2, 1, 4, 3], dataType: 'float32'}
    257        }
    258      },
    259      'operators': [{
    260        'name': 'argMin',
    261        'arguments': [
    262          {'input': 'argMinInput'}, {'axis': 0},
    263          {'options': {'keepDimensions': true}}
    264        ],
    265        'outputs': 'argMinOutput'
    266      }],
    267      'expectedOutputs': {
    268        'argMinOutput': {
    269          'data': [1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0],
    270          'descriptor': {shape: [1, 1, 4, 3], dataType: 'int32'}
    271        }
    272      }
    273    }
    274  },
    275  {
    276    'name': 'argMin float32 4D tensor, axis=0, options.keepDimensions=false',
    277    'graph': {
    278      'inputs': {
    279        'argMinInput': {
    280          'data': [
    281            3.8301241397857666, -24.986488342285156, 5.29998254776001,
    282            -48.54866027832031, 40.308868408203125,  60.184295654296875,
    283            -82.78385925292969, -96.50904083251953,  71.87028503417969,
    284            38.86639404296875,  -39.14372634887695,  31.444366455078125,
    285            -82.78385925292969, -96.50904083251953,  -25.533889770507812,
    286            -16.14226531982422, 66.63677215576172,   82.51197814941406,
    287            -82.78385925292969, -96.50904083251953,  39.76872634887695,
    288            42.1504020690918,   82.66864013671875,   85.45269012451172
    289          ],
    290          'descriptor': {shape: [2, 1, 4, 3], dataType: 'float32'}
    291        }
    292      },
    293      'operators': [{
    294        'name': 'argMin',
    295        'arguments': [
    296          {'input': 'argMinInput'}, {'axis': 0},
    297          {'options': {'keepDimensions': false}}
    298        ],
    299        'outputs': 'argMinOutput'
    300      }],
    301      'expectedOutputs': {
    302        'argMinOutput': {
    303          'data': [1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0],
    304          'descriptor': {shape: [1, 4, 3], dataType: 'int32'}
    305        }
    306      }
    307    }
    308  },
    309  {
    310    'name':
    311        'argMin float32 4D tensor, axis=0, explicit options.outputDataType=\'int32\'',
    312    'graph': {
    313      'inputs': {
    314        'argMinInput': {
    315          'data': [
    316            3.8301241397857666, -24.986488342285156, 5.29998254776001,
    317            -48.54866027832031, 40.308868408203125,  60.184295654296875,
    318            -82.78385925292969, -96.50904083251953,  71.87028503417969,
    319            38.86639404296875,  -39.14372634887695,  31.444366455078125,
    320            -82.78385925292969, -96.50904083251953,  -25.533889770507812,
    321            -16.14226531982422, 66.63677215576172,   82.51197814941406,
    322            -82.78385925292969, -96.50904083251953,  39.76872634887695,
    323            42.1504020690918,   82.66864013671875,   85.45269012451172
    324          ],
    325          'descriptor': {shape: [2, 1, 4, 3], dataType: 'float32'}
    326        }
    327      },
    328      'operators': [{
    329        'name': 'argMin',
    330        'arguments': [
    331          {'input': 'argMinInput'}, {'axis': 0},
    332          {'options': {'outputDataType': 'int32'}}
    333        ],
    334        'outputs': 'argMinOutput'
    335      }],
    336      'expectedOutputs': {
    337        'argMinOutput': {
    338          'data': [1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0],
    339          'descriptor': {shape: [1, 4, 3], dataType: 'int32'}
    340        }
    341      }
    342    }
    343  },
    344  {
    345    'name':
    346        'argMin float32 4D tensor, axis=0, options.outputDataType=\'int64\'',
    347    'graph': {
    348      'inputs': {
    349        'argMinInput': {
    350          'data': [
    351            3.8301241397857666, -24.986488342285156, 5.29998254776001,
    352            -48.54866027832031, 40.308868408203125,  60.184295654296875,
    353            -82.78385925292969, -96.50904083251953,  71.87028503417969,
    354            38.86639404296875,  -39.14372634887695,  31.444366455078125,
    355            -82.78385925292969, -96.50904083251953,  -25.533889770507812,
    356            -16.14226531982422, 66.63677215576172,   82.51197814941406,
    357            -82.78385925292969, -96.50904083251953,  39.76872634887695,
    358            42.1504020690918,   82.66864013671875,   85.45269012451172
    359          ],
    360          'descriptor': {shape: [2, 1, 4, 3], dataType: 'float32'}
    361        }
    362      },
    363      'operators': [{
    364        'name': 'argMin',
    365        'arguments': [
    366          {'input': 'argMinInput'}, {'axis': 0},
    367          {'options': {'outputDataType': 'int64'}}
    368        ],
    369        'outputs': 'argMinOutput'
    370      }],
    371      'expectedOutputs': {
    372        'argMinOutput': {
    373          'data': [1n, 1n, 1n, 0n, 0n, 0n, 0n, 0n, 1n, 0n, 0n, 0n],
    374          'descriptor': {shape: [1, 4, 3], dataType: 'int64'}
    375        }
    376      }
    377    }
    378  },
    379  {
    380    'name': 'argMin float32 4D tensor, axis=0, all options',
    381    'graph': {
    382      'inputs': {
    383        'argMinInput': {
    384          'data': [
    385            3.8301241397857666, -24.986488342285156, 5.29998254776001,
    386            -48.54866027832031, 40.308868408203125,  60.184295654296875,
    387            -82.78385925292969, -96.50904083251953,  71.87028503417969,
    388            38.86639404296875,  -39.14372634887695,  31.444366455078125,
    389            -82.78385925292969, -96.50904083251953,  -25.533889770507812,
    390            -16.14226531982422, 66.63677215576172,   82.51197814941406,
    391            -82.78385925292969, -96.50904083251953,  39.76872634887695,
    392            42.1504020690918,   82.66864013671875,   85.45269012451172
    393          ],
    394          'descriptor': {shape: [2, 1, 4, 3], dataType: 'float32'}
    395        }
    396      },
    397      'operators': [{
    398        'name': 'argMin',
    399        'arguments': [
    400          {'input': 'argMinInput'}, {'axis': 0},
    401          {'options': {'keepDimensions': true, 'outputDataType': 'int64'}}
    402        ],
    403        'outputs': 'argMinOutput'
    404      }],
    405      'expectedOutputs': {
    406        'argMinOutput': {
    407          'data': [1n, 1n, 1n, 0n, 0n, 0n, 0n, 0n, 1n, 0n, 0n, 0n],
    408          'descriptor': {shape: [1, 1, 4, 3], dataType: 'int64'}
    409        }
    410      }
    411    }
    412  },
    413 
    414  // float16 argMin tests
    415  {
    416    'name': 'argMin float16 1D constant tensor, axis=0, default options',
    417    'graph': {
    418      'inputs': {
    419        'argMinInput': {
    420          'data': [
    421            3.830078125, -24.984375, 5.30078125, -48.5625, 40.3125,
    422            60.1875,     -82.8125,   -96.5,      71.875,   38.875,
    423            -39.15625,   31.4375,    -82.8125,   -96.5,    -25.53125,
    424            -16.140625,  66.625,     82.5,       -82.8125, -96.5,
    425            39.78125,    42.15625,   82.6875,    85.4375
    426          ],
    427          'descriptor': {shape: [24], dataType: 'float16'},
    428          'constant': true
    429        }
    430      },
    431      'operators': [{
    432        'name': 'argMin',
    433        'arguments': [{'input': 'argMinInput'}, {'axis': 0}],
    434        'outputs': 'argMinOutput'
    435      }],
    436      'expectedOutputs': {
    437        'argMinOutput':
    438            {'data': [7], 'descriptor': {shape: [], dataType: 'int32'}}
    439      }
    440    }
    441  },
    442  {
    443    'name': 'argMin float16 1D tensor, axis=0, default options',
    444    'graph': {
    445      'inputs': {
    446        'argMinInput': {
    447          'data': [
    448            3.830078125, -24.984375, 5.30078125, -48.5625, 40.3125,
    449            60.1875,     -82.8125,   -96.5,      71.875,   38.875,
    450            -39.15625,   31.4375,    -82.8125,   -96.5,    -25.53125,
    451            -16.140625,  66.625,     82.5,       -82.8125, -96.5,
    452            39.78125,    42.15625,   82.6875,    85.4375
    453          ],
    454          'descriptor': {shape: [24], dataType: 'float16'}
    455        }
    456      },
    457      'operators': [{
    458        'name': 'argMin',
    459        'arguments': [{'input': 'argMinInput'}, {'axis': 0}],
    460        'outputs': 'argMinOutput'
    461      }],
    462      'expectedOutputs': {
    463        'argMinOutput':
    464            {'data': [7], 'descriptor': {shape: [], dataType: 'int32'}}
    465      }
    466    }
    467  },
    468  {
    469    'name': 'argMin float16 2D tensor, axis=0, default options',
    470    'graph': {
    471      'inputs': {
    472        'argMinInput': {
    473          'data': [
    474            3.830078125, -24.984375, 5.30078125, -48.5625, 40.3125,
    475            60.1875,     -82.8125,   -96.5,      71.875,   38.875,
    476            -39.15625,   31.4375,    -82.8125,   -96.5,    -25.53125,
    477            -16.140625,  66.625,     82.5,       -82.8125, -96.5,
    478            39.78125,    42.15625,   82.6875,    85.4375
    479          ],
    480          'descriptor': {shape: [4, 6], dataType: 'float16'}
    481        }
    482      },
    483      'operators': [{
    484        'name': 'argMin',
    485        'arguments': [{'input': 'argMinInput'}, {'axis': 0}],
    486        'outputs': 'argMinOutput'
    487      }],
    488      'expectedOutputs': {
    489        'argMinOutput': {
    490          'data': [1, 1, 2, 0, 1, 1],
    491          'descriptor': {shape: [6], dataType: 'int32'}
    492        }
    493      }
    494    }
    495  },
    496  {
    497    'name': 'argMin float16 3D tensor, axis=0, default options',
    498    'graph': {
    499      'inputs': {
    500        'argMinInput': {
    501          'data': [
    502            3.830078125, -24.984375, 5.30078125, -48.5625, 40.3125,
    503            60.1875,     -82.8125,   -96.5,      71.875,   38.875,
    504            -39.15625,   31.4375,    -82.8125,   -96.5,    -25.53125,
    505            -16.140625,  66.625,     82.5,       -82.8125, -96.5,
    506            39.78125,    42.15625,   82.6875,    85.4375
    507          ],
    508          'descriptor': {shape: [2, 3, 4], dataType: 'float16'}
    509        }
    510      },
    511      'operators': [{
    512        'name': 'argMin',
    513        'arguments': [{'input': 'argMinInput'}, {'axis': 0}],
    514        'outputs': 'argMinOutput'
    515      }],
    516      'expectedOutputs': {
    517        'argMinOutput': {
    518          'data': [1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0],
    519          'descriptor': {shape: [3, 4], dataType: 'int32'}
    520        }
    521      }
    522    }
    523  },
    524  {
    525    'name': 'argMin float16 4D tensor, axis=0, default options',
    526    'graph': {
    527      'inputs': {
    528        'argMinInput': {
    529          'data': [
    530            3.830078125, -24.984375, 5.30078125, -48.5625, 40.3125,
    531            60.1875,     -82.8125,   -96.5,      71.875,   38.875,
    532            -39.15625,   31.4375,    -82.8125,   -96.5,    -25.53125,
    533            -16.140625,  66.625,     82.5,       -82.8125, -96.5,
    534            39.78125,    42.15625,   82.6875,    85.4375
    535          ],
    536          'descriptor': {shape: [2, 1, 4, 3], dataType: 'float16'}
    537        }
    538      },
    539      'operators': [{
    540        'name': 'argMin',
    541        'arguments': [{'input': 'argMinInput'}, {'axis': 0}],
    542        'outputs': 'argMinOutput'
    543      }],
    544      'expectedOutputs': {
    545        'argMinOutput': {
    546          'data': [1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0],
    547          'descriptor': {shape: [1, 4, 3], dataType: 'int32'}
    548        }
    549      }
    550    }
    551  },
    552  {
    553    'name': 'argMin float16 5D tensor, axis=0, default options',
    554    'graph': {
    555      'inputs': {
    556        'argMinInput': {
    557          'data': [
    558            3.830078125, -24.984375, 5.30078125, -48.5625, 40.3125,
    559            60.1875,     -82.8125,   -96.5,      71.875,   38.875,
    560            -39.15625,   31.4375,    -82.8125,   -96.5,    -25.53125,
    561            -16.140625,  66.625,     82.5,       -82.8125, -96.5,
    562            39.78125,    42.15625,   82.6875,    85.4375
    563          ],
    564          'descriptor': {shape: [2, 1, 4, 1, 3], dataType: 'float16'}
    565        }
    566      },
    567      'operators': [{
    568        'name': 'argMin',
    569        'arguments': [{'input': 'argMinInput'}, {'axis': 0}],
    570        'outputs': 'argMinOutput'
    571      }],
    572      'expectedOutputs': {
    573        'argMinOutput': {
    574          'data': [1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0],
    575          'descriptor': {shape: [1, 4, 1, 3], dataType: 'int32'}
    576        }
    577      }
    578    }
    579  },
    580  {
    581    'name': 'argMin float16 4D tensor, axis=2',
    582    'graph': {
    583      'inputs': {
    584        'argMinInput': {
    585          'data': [
    586            3.830078125, -24.984375, 5.30078125, -48.5625, 40.3125,
    587            60.1875,     -82.8125,   -96.5,      71.875,   38.875,
    588            -39.15625,   31.4375,    -82.8125,   -96.5,    -25.53125,
    589            -16.140625,  66.625,     82.5,       -82.8125, -96.5,
    590            39.78125,    42.15625,   82.6875,    85.4375
    591          ],
    592          'descriptor': {shape: [2, 1, 4, 3], dataType: 'float16'}
    593        }
    594      },
    595      'operators': [{
    596        'name': 'argMin',
    597        'arguments': [{'input': 'argMinInput'}, {'axis': 2}],
    598        'outputs': 'argMinOutput'
    599      }],
    600      'expectedOutputs': {
    601        'argMinOutput': {
    602          'data': [2, 2, 0, 0, 0, 0],
    603          'descriptor': {shape: [2, 1, 3], dataType: 'int32'}
    604        }
    605      }
    606    }
    607  },
    608  {
    609    'name': 'argMin float16 4D tensor, axis=0, options.keepDimensions=true',
    610    'graph': {
    611      'inputs': {
    612        'argMinInput': {
    613          'data': [
    614            3.830078125, -24.984375, 5.30078125, -48.5625, 40.3125,
    615            60.1875,     -82.8125,   -96.5,      71.875,   38.875,
    616            -39.15625,   31.4375,    -82.8125,   -96.5,    -25.53125,
    617            -16.140625,  66.625,     82.5,       -82.8125, -96.5,
    618            39.78125,    42.15625,   82.6875,    85.4375
    619          ],
    620          'descriptor': {shape: [2, 1, 4, 3], dataType: 'float16'}
    621        }
    622      },
    623      'operators': [{
    624        'name': 'argMin',
    625        'arguments': [
    626          {'input': 'argMinInput'}, {'axis': 0},
    627          {'options': {'keepDimensions': true}}
    628        ],
    629        'outputs': 'argMinOutput'
    630      }],
    631      'expectedOutputs': {
    632        'argMinOutput': {
    633          'data': [1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0],
    634          'descriptor': {shape: [1, 1, 4, 3], dataType: 'int32'}
    635        }
    636      }
    637    }
    638  },
    639  {
    640    'name': 'argMin float16 4D tensor, axis=0, options.keepDimensions=false',
    641    'graph': {
    642      'inputs': {
    643        'argMinInput': {
    644          'data': [
    645            3.830078125, -24.984375, 5.30078125, -48.5625, 40.3125,
    646            60.1875,     -82.8125,   -96.5,      71.875,   38.875,
    647            -39.15625,   31.4375,    -82.8125,   -96.5,    -25.53125,
    648            -16.140625,  66.625,     82.5,       -82.8125, -96.5,
    649            39.78125,    42.15625,   82.6875,    85.4375
    650          ],
    651          'descriptor': {shape: [2, 1, 4, 3], dataType: 'float16'}
    652        }
    653      },
    654      'operators': [{
    655        'name': 'argMin',
    656        'arguments': [
    657          {'input': 'argMinInput'}, {'axis': 0},
    658          {'options': {'keepDimensions': false}}
    659        ],
    660        'outputs': 'argMinOutput'
    661      }],
    662      'expectedOutputs': {
    663        'argMinOutput': {
    664          'data': [1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0],
    665          'descriptor': {shape: [1, 4, 3], dataType: 'int32'}
    666        }
    667      }
    668    }
    669  },
    670  {
    671    'name':
    672        'argMin float16 4D tensor, axis=0, explicit options.outputDataType=\'int32\'',
    673    'graph': {
    674      'inputs': {
    675        'argMinInput': {
    676          'data': [
    677            3.830078125, -24.984375, 5.30078125, -48.5625, 40.3125,
    678            60.1875,     -82.8125,   -96.5,      71.875,   38.875,
    679            -39.15625,   31.4375,    -82.8125,   -96.5,    -25.53125,
    680            -16.140625,  66.625,     82.5,       -82.8125, -96.5,
    681            39.78125,    42.15625,   82.6875,    85.4375
    682          ],
    683          'descriptor': {shape: [2, 1, 4, 3], dataType: 'float16'}
    684        }
    685      },
    686      'operators': [{
    687        'name': 'argMin',
    688        'arguments': [
    689          {'input': 'argMinInput'}, {'axis': 0},
    690          {'options': {'outputDataType': 'int32'}}
    691        ],
    692        'outputs': 'argMinOutput'
    693      }],
    694      'expectedOutputs': {
    695        'argMinOutput': {
    696          'data': [1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0],
    697          'descriptor': {shape: [1, 4, 3], dataType: 'int32'}
    698        }
    699      }
    700    }
    701  },
    702  {
    703    'name':
    704        'argMin float16 4D tensor, axis=0, options.outputDataType=\'int64\'',
    705    'graph': {
    706      'inputs': {
    707        'argMinInput': {
    708          'data': [
    709            3.830078125, -24.984375, 5.30078125, -48.5625, 40.3125,
    710            60.1875,     -82.8125,   -96.5,      71.875,   38.875,
    711            -39.15625,   31.4375,    -82.8125,   -96.5,    -25.53125,
    712            -16.140625,  66.625,     82.5,       -82.8125, -96.5,
    713            39.78125,    42.15625,   82.6875,    85.4375
    714          ],
    715          'descriptor': {shape: [2, 1, 4, 3], dataType: 'float16'}
    716        }
    717      },
    718      'operators': [{
    719        'name': 'argMin',
    720        'arguments': [
    721          {'input': 'argMinInput'}, {'axis': 0},
    722          {'options': {'outputDataType': 'int64'}}
    723        ],
    724        'outputs': 'argMinOutput'
    725      }],
    726      'expectedOutputs': {
    727        'argMinOutput': {
    728          'data': [1n, 1n, 1n, 0n, 0n, 0n, 0n, 0n, 1n, 0n, 0n, 0n],
    729          'descriptor': {shape: [1, 4, 3], dataType: 'int64'}
    730        }
    731      }
    732    }
    733  },
    734  {
    735    'name': 'argMin float16 4D tensor, axis=0, all options',
    736    'graph': {
    737      'inputs': {
    738        'argMinInput': {
    739          'data': [
    740            3.830078125, -24.984375, 5.30078125, -48.5625, 40.3125,
    741            60.1875,     -82.8125,   -96.5,      71.875,   38.875,
    742            -39.15625,   31.4375,    -82.8125,   -96.5,    -25.53125,
    743            -16.140625,  66.625,     82.5,       -82.8125, -96.5,
    744            39.78125,    42.15625,   82.6875,    85.4375
    745          ],
    746          'descriptor': {shape: [2, 1, 4, 3], dataType: 'float16'}
    747        }
    748      },
    749      'operators': [{
    750        'name': 'argMin',
    751        'arguments': [
    752          {'input': 'argMinInput'}, {'axis': 0},
    753          {'options': {'keepDimensions': true, 'outputDataType': 'int64'}}
    754        ],
    755        'outputs': 'argMinOutput'
    756      }],
    757      'expectedOutputs': {
    758        'argMinOutput': {
    759          'data': [1n, 1n, 1n, 0n, 0n, 0n, 0n, 0n, 1n, 0n, 0n, 0n],
    760          'descriptor': {shape: [1, 1, 4, 3], dataType: 'int64'}
    761        }
    762      }
    763    }
    764  },
    765 
    766  {
    767    'name': 'argMin int8 4D tensor, axis=0, all options',
    768    'graph': {
    769      'inputs': {
    770        'argMinInput': {
    771          'data': [
    772            -128, -50, -5, -1, 0, 11, 50, 126, -127, -50, 0, 0, 1, 10, 50, 127
    773          ],
    774          'descriptor': {shape: [2, 2, 2, 2], dataType: 'int8'}
    775        }
    776      },
    777      'operators': [{
    778        'name': 'argMin',
    779        'arguments': [
    780          {'input': 'argMinInput'}, {'axis': 0},
    781          {'options': {'keepDimensions': true, 'outputDataType': 'int64'}}
    782        ],
    783        'outputs': 'argMinOutput'
    784      }],
    785      'expectedOutputs': {
    786        'argMinOutput': {
    787          'data': [0n, 0n, 0n, 0n, 0n, 1n, 0n, 0n],
    788          'descriptor': {shape: [1, 2, 2, 2], dataType: 'int64'}
    789        }
    790      }
    791    }
    792  },
    793  {
    794    'name': 'argMin uint8 4D tensor, axis=1, all options',
    795    'graph': {
    796      'inputs': {
    797        'argMinInput': {
    798          'data': [
    799            0, 0, 254, 10, 1, 255, 1, 11, 21, 50, 128, 254, 20, 50, 127, 255
    800          ],
    801          'descriptor': {shape: [2, 2, 2, 2], dataType: 'uint8'}
    802        }
    803      },
    804      'operators': [{
    805        'name': 'argMin',
    806        'arguments': [
    807          {'input': 'argMinInput'}, {'axis': 1},
    808          {'options': {'keepDimensions': true, 'outputDataType': 'int32'}}
    809        ],
    810        'outputs': 'argMinOutput'
    811      }],
    812      'expectedOutputs': {
    813        'argMinOutput': {
    814          'data': [0, 0, 1, 0, 1, 0, 1, 0],
    815          'descriptor': {shape: [2, 1, 2, 2], dataType: 'int32'}
    816        }
    817      }
    818    }
    819  },
    820  {
    821    'name': 'argMin int32 4D tensor, axis=0, all options',
    822    'graph': {
    823      'inputs': {
    824        'argMinInput': {
    825          'data': [
    826            3,   -24, 5,   -48, 40, 60, -82, -96, 71, 38, -39, 31,
    827            -82, -96, -25, -16, 66, 82, -82, -96, 39, 42, 82,  85
    828          ],
    829          'descriptor': {shape: [2, 1, 4, 3], dataType: 'int32'}
    830        }
    831      },
    832      'operators': [{
    833        'name': 'argMin',
    834        'arguments': [
    835          {'input': 'argMinInput'}, {'axis': 0},
    836          {'options': {'keepDimensions': true, 'outputDataType': 'int64'}}
    837        ],
    838        'outputs': 'argMinOutput'
    839      }],
    840      'expectedOutputs': {
    841        'argMinOutput': {
    842          'data': [1n, 1n, 1n, 0n, 0n, 0n, 0n, 0n, 1n, 0n, 0n, 0n],
    843          'descriptor': {shape: [1, 1, 4, 3], dataType: 'int64'}
    844        }
    845      }
    846    }
    847  },
    848  {
    849    'name': 'argMin uint32 4D tensor, axis=1, all options',
    850    'graph': {
    851      'inputs': {
    852        'argMinInput': {
    853          'data': [
    854            0, 0, 254, 10, 1, 512, 1, 11, 21, 50, 128, 254, 20, 50, 127, 512
    855          ],
    856          'descriptor': {shape: [2, 2, 2, 2], dataType: 'uint32'}
    857        }
    858      },
    859      'operators': [{
    860        'name': 'argMin',
    861        'arguments': [
    862          {'input': 'argMinInput'}, {'axis': 1},
    863          {'options': {'keepDimensions': true, 'outputDataType': 'int32'}}
    864        ],
    865        'outputs': 'argMinOutput'
    866      }],
    867      'expectedOutputs': {
    868        'argMinOutput': {
    869          'data': [0, 0, 1, 0, 1, 0, 1, 0],
    870          'descriptor': {shape: [2, 1, 2, 2], dataType: 'int32'}
    871        }
    872      }
    873    }
    874  },
    875  {
    876    'name': 'argMin int64 4D tensor, axis=0, all options',
    877    'graph': {
    878      'inputs': {
    879        'argMinInput': {
    880          'data': [
    881            3n,   -24n, 5n,   -48n, 40n, 60n, -82n, 96n, 71n, 38n, -39n, 31n,
    882            -82n, -96n, -25n, -16n, 66n, 82n, -82n, 96n, 39n, 42n, 82n,  85n
    883          ],
    884          'descriptor': {shape: [2, 1, 4, 3], dataType: 'int64'}
    885        }
    886      },
    887      'operators': [{
    888        'name': 'argMin',
    889        'arguments': [
    890          {'input': 'argMinInput'}, {'axis': 0},
    891          {'options': {'keepDimensions': true, 'outputDataType': 'int64'}}
    892        ],
    893        'outputs': 'argMinOutput'
    894      }],
    895      'expectedOutputs': {
    896        'argMinOutput': {
    897          'data': [1n, 1n, 1n, 0n, 0n, 0n, 0n, 0n, 1n, 0n, 0n, 0n],
    898          'descriptor': {shape: [1, 1, 4, 3], dataType: 'int64'}
    899        }
    900      }
    901    }
    902  },
    903  {
    904    'name': 'argMin uint64 4D tensor, axis=1, all options',
    905    'graph': {
    906      'inputs': {
    907        'argMinInput': {
    908          'data': [
    909            0n,  0n,  254n, 10n,  1n,  512n, 1n,   11n,
    910            21n, 50n, 128n, 254n, 20n, 50n,  127n, 512n
    911          ],
    912          'descriptor': {shape: [2, 2, 2, 2], dataType: 'uint64'}
    913        }
    914      },
    915      'operators': [{
    916        'name': 'argMin',
    917        'arguments': [
    918          {'input': 'argMinInput'}, {'axis': 1},
    919          {'options': {'keepDimensions': true, 'outputDataType': 'int32'}}
    920        ],
    921        'outputs': 'argMinOutput'
    922      }],
    923      'expectedOutputs': {
    924        'argMinOutput': {
    925          'data': [0, 0, 1, 0, 1, 0, 1, 0],
    926          'descriptor': {shape: [2, 1, 2, 2], dataType: 'int32'}
    927        }
    928      }
    929    }
    930  },
    931 
    932  // argMax tests
    933  {
    934    'name': 'argMax float32 1D constant tensor, axis=0, default options',
    935    'graph': {
    936      'inputs': {
    937        'argMaxInput': {
    938          'data': [
    939            -51.09362030029297, -6.53970193862915,  73.8133773803711,
    940            88.46114349365234,  -5.294266700744629, -79.20668029785156,
    941            -41.70176696777344, 73.8133773803711,   88.46114349365234,
    942            -84.94000244140625, -61.48894119262695, -98.3387451171875,
    943            -51.09362030029297, -6.53970193862915,  73.8133773803711,
    944            88.46114349365234,  -5.294266700744629, -79.20668029785156,
    945            -41.70176696777344, 73.8133773803711,   88.46114349365234,
    946            -84.94000244140625, -61.48894119262695, -98.3387451171875
    947          ],
    948          'descriptor': {shape: [24], dataType: 'float32'},
    949          'constant': true
    950        }
    951      },
    952      'operators': [{
    953        'name': 'argMax',
    954        'arguments': [{'input': 'argMaxInput'}, {'axis': 0}],
    955        'outputs': 'argMaxOutput'
    956      }],
    957      'expectedOutputs': {
    958        'argMaxOutput':
    959            {'data': [3], 'descriptor': {shape: [], dataType: 'int32'}}
    960      }
    961    }
    962  },
    963  {
    964    'name': 'argMax float32 1D tensor, axis=0, default options',
    965    'graph': {
    966      'inputs': {
    967        'argMaxInput': {
    968          'data': [
    969            -51.09362030029297, -6.53970193862915,  73.8133773803711,
    970            88.46114349365234,  -5.294266700744629, -79.20668029785156,
    971            -41.70176696777344, 73.8133773803711,   88.46114349365234,
    972            -84.94000244140625, -61.48894119262695, -98.3387451171875,
    973            -51.09362030029297, -6.53970193862915,  73.8133773803711,
    974            88.46114349365234,  -5.294266700744629, -79.20668029785156,
    975            -41.70176696777344, 73.8133773803711,   88.46114349365234,
    976            -84.94000244140625, -61.48894119262695, -98.3387451171875
    977          ],
    978          'descriptor': {shape: [24], dataType: 'float32'}
    979        }
    980      },
    981      'operators': [{
    982        'name': 'argMax',
    983        'arguments': [{'input': 'argMaxInput'}, {'axis': 0}],
    984        'outputs': 'argMaxOutput'
    985      }],
    986      'expectedOutputs': {
    987        'argMaxOutput':
    988            {'data': [3], 'descriptor': {shape: [], dataType: 'int32'}}
    989      }
    990    }
    991  },
    992  {
    993    'name': 'argMax float32 2D tensor, axis=0, default options',
    994    'graph': {
    995      'inputs': {
    996        'argMaxInput': {
    997          'data': [
    998            -51.09362030029297, -6.53970193862915,  73.8133773803711,
    999            88.46114349365234,  -5.294266700744629, -79.20668029785156,
   1000            -41.70176696777344, 73.8133773803711,   88.46114349365234,
   1001            -84.94000244140625, -61.48894119262695, -98.3387451171875,
   1002            -51.09362030029297, -6.53970193862915,  73.8133773803711,
   1003            88.46114349365234,  -5.294266700744629, -79.20668029785156,
   1004            -41.70176696777344, 73.8133773803711,   88.46114349365234,
   1005            -84.94000244140625, -61.48894119262695, -98.3387451171875
   1006          ],
   1007          'descriptor': {shape: [4, 6], dataType: 'float32'}
   1008        }
   1009      },
   1010      'operators': [{
   1011        'name': 'argMax',
   1012        'arguments': [{'input': 'argMaxInput'}, {'axis': 0}],
   1013        'outputs': 'argMaxOutput'
   1014      }],
   1015      'expectedOutputs': {
   1016        'argMaxOutput': {
   1017          'data': [1, 1, 1, 0, 0, 0],
   1018          'descriptor': {shape: [6], dataType: 'int32'}
   1019        }
   1020      }
   1021    }
   1022  },
   1023  {
   1024    'name': 'argMax float32 3D tensor, axis=0, default options',
   1025    'graph': {
   1026      'inputs': {
   1027        'argMaxInput': {
   1028          'data': [
   1029            -51.09362030029297, -6.53970193862915,  73.8133773803711,
   1030            88.46114349365234,  -5.294266700744629, -79.20668029785156,
   1031            -41.70176696777344, 73.8133773803711,   88.46114349365234,
   1032            -84.94000244140625, -61.48894119262695, -98.3387451171875,
   1033            -51.09362030029297, -6.53970193862915,  73.8133773803711,
   1034            88.46114349365234,  -5.294266700744629, -79.20668029785156,
   1035            -41.70176696777344, 73.8133773803711,   88.46114349365234,
   1036            -84.94000244140625, -61.48894119262695, -98.3387451171875
   1037          ],
   1038          'descriptor': {shape: [2, 3, 4], dataType: 'float32'}
   1039        }
   1040      },
   1041      'operators': [{
   1042        'name': 'argMax',
   1043        'arguments': [{'input': 'argMaxInput'}, {'axis': 0}],
   1044        'outputs': 'argMaxOutput'
   1045      }],
   1046      'expectedOutputs': {
   1047        'argMaxOutput': {
   1048          'data': [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
   1049          'descriptor': {shape: [3, 4], dataType: 'int32'}
   1050        }
   1051      }
   1052    }
   1053  },
   1054  {
   1055    'name': 'argMax float32 4D tensor, axis=0, default options',
   1056    'graph': {
   1057      'inputs': {
   1058        'argMaxInput': {
   1059          'data': [
   1060            -51.09362030029297, -6.53970193862915,  73.8133773803711,
   1061            88.46114349365234,  -5.294266700744629, -79.20668029785156,
   1062            -41.70176696777344, 73.8133773803711,   88.46114349365234,
   1063            -84.94000244140625, -61.48894119262695, -98.3387451171875,
   1064            -51.09362030029297, -6.53970193862915,  73.8133773803711,
   1065            88.46114349365234,  -5.294266700744629, -79.20668029785156,
   1066            -41.70176696777344, 73.8133773803711,   88.46114349365234,
   1067            -84.94000244140625, -61.48894119262695, -98.3387451171875
   1068          ],
   1069          'descriptor': {shape: [2, 1, 4, 3], dataType: 'float32'}
   1070        }
   1071      },
   1072      'operators': [{
   1073        'name': 'argMax',
   1074        'arguments': [{'input': 'argMaxInput'}, {'axis': 0}],
   1075        'outputs': 'argMaxOutput'
   1076      }],
   1077      'expectedOutputs': {
   1078        'argMaxOutput': {
   1079          'data': [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
   1080          'descriptor': {shape: [1, 4, 3], dataType: 'int32'}
   1081        }
   1082      }
   1083    }
   1084  },
   1085  {
   1086    'name': 'argMax float32 5D tensor, axis=0, default options',
   1087    'graph': {
   1088      'inputs': {
   1089        'argMaxInput': {
   1090          'data': [
   1091            -51.09362030029297, -6.53970193862915,  73.8133773803711,
   1092            88.46114349365234,  -5.294266700744629, -79.20668029785156,
   1093            -41.70176696777344, 73.8133773803711,   88.46114349365234,
   1094            -84.94000244140625, -61.48894119262695, -98.3387451171875,
   1095            -51.09362030029297, -6.53970193862915,  73.8133773803711,
   1096            88.46114349365234,  -5.294266700744629, -79.20668029785156,
   1097            -41.70176696777344, 73.8133773803711,   88.46114349365234,
   1098            -84.94000244140625, -61.48894119262695, -98.3387451171875
   1099          ],
   1100          'descriptor': {shape: [2, 1, 4, 1, 3], dataType: 'float32'}
   1101        }
   1102      },
   1103      'operators': [{
   1104        'name': 'argMax',
   1105        'arguments': [{'input': 'argMaxInput'}, {'axis': 0}],
   1106        'outputs': 'argMaxOutput'
   1107      }],
   1108      'expectedOutputs': {
   1109        'argMaxOutput': {
   1110          'data': [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
   1111          'descriptor': {shape: [1, 4, 1, 3], dataType: 'int32'}
   1112        }
   1113      }
   1114    }
   1115  },
   1116  {
   1117    'name': 'argMax float32 4D tensor, axis=2',
   1118    'graph': {
   1119      'inputs': {
   1120        'argMaxInput': {
   1121          'data': [
   1122            -51.09362030029297, -6.53970193862915,  73.8133773803711,
   1123            88.46114349365234,  -5.294266700744629, -79.20668029785156,
   1124            -41.70176696777344, 73.8133773803711,   88.46114349365234,
   1125            -84.94000244140625, -61.48894119262695, -98.3387451171875,
   1126            -51.09362030029297, -6.53970193862915,  73.8133773803711,
   1127            88.46114349365234,  -5.294266700744629, -79.20668029785156,
   1128            -41.70176696777344, 73.8133773803711,   88.46114349365234,
   1129            -84.94000244140625, -61.48894119262695, -98.3387451171875
   1130          ],
   1131          'descriptor': {shape: [2, 1, 4, 3], dataType: 'float32'}
   1132        }
   1133      },
   1134      'operators': [{
   1135        'name': 'argMax',
   1136        'arguments': [{'input': 'argMaxInput'}, {'axis': 2}],
   1137        'outputs': 'argMaxOutput'
   1138      }],
   1139      'expectedOutputs': {
   1140        'argMaxOutput': {
   1141          'data': [1, 2, 2, 1, 2, 2],
   1142          'descriptor': {shape: [2, 1, 3], dataType: 'int32'}
   1143        }
   1144      }
   1145    }
   1146  },
   1147  {
   1148    'name': 'argMax float32 4D tensor, axis=3, options.keepDimensions=true',
   1149    'graph': {
   1150      'inputs': {
   1151        'argMaxInput': {
   1152          'data': [
   1153            -51.09362030029297, -6.53970193862915,  73.8133773803711,
   1154            88.46114349365234,  -5.294266700744629, -79.20668029785156,
   1155            -41.70176696777344, 73.8133773803711,   88.46114349365234,
   1156            -84.94000244140625, -61.48894119262695, -98.3387451171875,
   1157            -51.09362030029297, -6.53970193862915,  73.8133773803711,
   1158            88.46114349365234,  -5.294266700744629, -79.20668029785156,
   1159            -41.70176696777344, 73.8133773803711,   88.46114349365234,
   1160            -84.94000244140625, -61.48894119262695, -98.3387451171875
   1161          ],
   1162          'descriptor': {shape: [2, 1, 4, 3], dataType: 'float32'}
   1163        }
   1164      },
   1165      'operators': [{
   1166        'name': 'argMax',
   1167        'arguments': [
   1168          {'input': 'argMaxInput'}, {'axis': 3},
   1169          {'options': {'keepDimensions': true}}
   1170        ],
   1171        'outputs': 'argMaxOutput'
   1172      }],
   1173      'expectedOutputs': {
   1174        'argMaxOutput': {
   1175          'data': [2, 0, 2, 1, 2, 0, 2, 1],
   1176          'descriptor': {shape: [2, 1, 4, 1], dataType: 'int32'}
   1177        }
   1178      }
   1179    }
   1180  },
   1181  {
   1182    'name': 'argMax float32 4D tensor, axis=3, options.keepDimensions=false',
   1183    'graph': {
   1184      'inputs': {
   1185        'argMaxInput': {
   1186          'data': [
   1187            -51.09362030029297, -6.53970193862915,  73.8133773803711,
   1188            88.46114349365234,  -5.294266700744629, -79.20668029785156,
   1189            -41.70176696777344, 73.8133773803711,   88.46114349365234,
   1190            -84.94000244140625, -61.48894119262695, -98.3387451171875,
   1191            -51.09362030029297, -6.53970193862915,  73.8133773803711,
   1192            88.46114349365234,  -5.294266700744629, -79.20668029785156,
   1193            -41.70176696777344, 73.8133773803711,   88.46114349365234,
   1194            -84.94000244140625, -61.48894119262695, -98.3387451171875
   1195          ],
   1196          'descriptor': {shape: [2, 1, 4, 3], dataType: 'float32'}
   1197        }
   1198      },
   1199      'operators': [{
   1200        'name': 'argMax',
   1201        'arguments': [
   1202          {'input': 'argMaxInput'}, {'axis': 3},
   1203          {'options': {'keepDimensions': false}}
   1204        ],
   1205        'outputs': 'argMaxOutput'
   1206      }],
   1207      'expectedOutputs': {
   1208        'argMaxOutput': {
   1209          'data': [2, 0, 2, 1, 2, 0, 2, 1],
   1210          'descriptor': {shape: [2, 1, 4], dataType: 'int32'}
   1211        }
   1212      }
   1213    }
   1214  },
   1215  {
   1216    'name':
   1217        'argMax float32 4D tensor, axis=3, explicit options.outputDataType=\'int32\'',
   1218    'graph': {
   1219      'inputs': {
   1220        'argMaxInput': {
   1221          'data': [
   1222            -51.09362030029297, -6.53970193862915,  73.8133773803711,
   1223            88.46114349365234,  -5.294266700744629, -79.20668029785156,
   1224            -41.70176696777344, 73.8133773803711,   88.46114349365234,
   1225            -84.94000244140625, -61.48894119262695, -98.3387451171875,
   1226            -51.09362030029297, -6.53970193862915,  73.8133773803711,
   1227            88.46114349365234,  -5.294266700744629, -79.20668029785156,
   1228            -41.70176696777344, 73.8133773803711,   88.46114349365234,
   1229            -84.94000244140625, -61.48894119262695, -98.3387451171875
   1230          ],
   1231          'descriptor': {shape: [2, 1, 4, 3], dataType: 'float32'}
   1232        }
   1233      },
   1234      'operators': [{
   1235        'name': 'argMax',
   1236        'arguments': [
   1237          {'input': 'argMaxInput'}, {'axis': 3},
   1238          {'options': {'outputDataType': 'int32'}}
   1239        ],
   1240        'outputs': 'argMaxOutput'
   1241      }],
   1242      'expectedOutputs': {
   1243        'argMaxOutput': {
   1244          'data': [2, 0, 2, 1, 2, 0, 2, 1],
   1245          'descriptor': {shape: [2, 1, 4], dataType: 'int32'}
   1246        }
   1247      }
   1248    }
   1249  },
   1250  {
   1251    'name':
   1252        'argMax float32 4D tensor, axis=3, options.outputDataType=\'int64\'',
   1253    'graph': {
   1254      'inputs': {
   1255        'argMaxInput': {
   1256          'data': [
   1257            -51.09362030029297, -6.53970193862915,  73.8133773803711,
   1258            88.46114349365234,  -5.294266700744629, -79.20668029785156,
   1259            -41.70176696777344, 73.8133773803711,   88.46114349365234,
   1260            -84.94000244140625, -61.48894119262695, -98.3387451171875,
   1261            -51.09362030029297, -6.53970193862915,  73.8133773803711,
   1262            88.46114349365234,  -5.294266700744629, -79.20668029785156,
   1263            -41.70176696777344, 73.8133773803711,   88.46114349365234,
   1264            -84.94000244140625, -61.48894119262695, -98.3387451171875
   1265          ],
   1266          'descriptor': {shape: [2, 1, 4, 3], dataType: 'float32'}
   1267        }
   1268      },
   1269      'operators': [{
   1270        'name': 'argMax',
   1271        'arguments': [
   1272          {'input': 'argMaxInput'}, {'axis': 3},
   1273          {'options': {'outputDataType': 'int64'}}
   1274        ],
   1275        'outputs': 'argMaxOutput'
   1276      }],
   1277      'expectedOutputs': {
   1278        'argMaxOutput': {
   1279          'data': [2n, 0n, 2n, 1n, 2n, 0n, 2n, 1n],
   1280          'descriptor': {shape: [2, 1, 4], dataType: 'int64'}
   1281        }
   1282      }
   1283    }
   1284  },
   1285  {
   1286    'name': 'argMax float32 4D tensor, axis=3, all options',
   1287    'graph': {
   1288      'inputs': {
   1289        'argMaxInput': {
   1290          'data': [
   1291            -51.09362030029297, -6.53970193862915,  73.8133773803711,
   1292            88.46114349365234,  -5.294266700744629, -79.20668029785156,
   1293            -41.70176696777344, 73.8133773803711,   88.46114349365234,
   1294            -84.94000244140625, -61.48894119262695, -98.3387451171875,
   1295            -51.09362030029297, -6.53970193862915,  73.8133773803711,
   1296            88.46114349365234,  -5.294266700744629, -79.20668029785156,
   1297            -41.70176696777344, 73.8133773803711,   88.46114349365234,
   1298            -84.94000244140625, -61.48894119262695, -98.3387451171875
   1299          ],
   1300          'descriptor': {shape: [2, 1, 4, 3], dataType: 'float32'}
   1301        }
   1302      },
   1303      'operators': [{
   1304        'name': 'argMax',
   1305        'arguments': [
   1306          {'input': 'argMaxInput'}, {'axis': 3},
   1307          {'options': {'keepDimensions': true, 'outputDataType': 'int64'}}
   1308        ],
   1309        'outputs': 'argMaxOutput'
   1310      }],
   1311      'expectedOutputs': {
   1312        'argMaxOutput': {
   1313          'data': [2n, 0n, 2n, 1n, 2n, 0n, 2n, 1n],
   1314          'descriptor': {shape: [2, 1, 4, 1], dataType: 'int64'}
   1315        }
   1316      }
   1317    }
   1318  },
   1319 
   1320  // float16 argMax tests
   1321  {
   1322    'name': 'argMax float16 1D constant tensor, axis=0, default options',
   1323    'graph': {
   1324      'inputs': {
   1325        'argMaxInput': {
   1326          'data': [
   1327            -51.09375, -6.5390625, 73.8125, 88.4375,  -5.29296875, -79.1875,
   1328            -41.6875,  73.8125,    88.4375, -84.9375, -61.5,       -98.3125,
   1329            -51.09375, -6.5390625, 73.8125, 88.4375,  -5.29296875, -79.1875,
   1330            -41.6875,  73.8125,    88.4375, -84.9375, -61.5,       -98.3125
   1331          ],
   1332          'descriptor': {shape: [24], dataType: 'float16'},
   1333          'constant': true
   1334        }
   1335      },
   1336      'operators': [{
   1337        'name': 'argMax',
   1338        'arguments': [{'input': 'argMaxInput'}, {'axis': 0}],
   1339        'outputs': 'argMaxOutput'
   1340      }],
   1341      'expectedOutputs': {
   1342        'argMaxOutput':
   1343            {'data': [3], 'descriptor': {shape: [], dataType: 'int32'}}
   1344      }
   1345    }
   1346  },
   1347  {
   1348    'name': 'argMax float16 1D tensor, axis=0, default options',
   1349    'graph': {
   1350      'inputs': {
   1351        'argMaxInput': {
   1352          'data': [
   1353            -51.09375, -6.5390625, 73.8125, 88.4375,  -5.29296875, -79.1875,
   1354            -41.6875,  73.8125,    88.4375, -84.9375, -61.5,       -98.3125,
   1355            -51.09375, -6.5390625, 73.8125, 88.4375,  -5.29296875, -79.1875,
   1356            -41.6875,  73.8125,    88.4375, -84.9375, -61.5,       -98.3125
   1357          ],
   1358          'descriptor': {shape: [24], dataType: 'float16'}
   1359        }
   1360      },
   1361      'operators': [{
   1362        'name': 'argMax',
   1363        'arguments': [{'input': 'argMaxInput'}, {'axis': 0}],
   1364        'outputs': 'argMaxOutput'
   1365      }],
   1366      'expectedOutputs': {
   1367        'argMaxOutput':
   1368            {'data': [3], 'descriptor': {shape: [], dataType: 'int32'}}
   1369      }
   1370    }
   1371  },
   1372  {
   1373    'name': 'argMax float16 2D tensor, axis=0, default options',
   1374    'graph': {
   1375      'inputs': {
   1376        'argMaxInput': {
   1377          'data': [
   1378            -51.09375, -6.5390625, 73.8125, 88.4375,  -5.29296875, -79.1875,
   1379            -41.6875,  73.8125,    88.4375, -84.9375, -61.5,       -98.3125,
   1380            -51.09375, -6.5390625, 73.8125, 88.4375,  -5.29296875, -79.1875,
   1381            -41.6875,  73.8125,    88.4375, -84.9375, -61.5,       -98.3125
   1382          ],
   1383          'descriptor': {shape: [4, 6], dataType: 'float16'}
   1384        }
   1385      },
   1386      'operators': [{
   1387        'name': 'argMax',
   1388        'arguments': [{'input': 'argMaxInput'}, {'axis': 0}],
   1389        'outputs': 'argMaxOutput'
   1390      }],
   1391      'expectedOutputs': {
   1392        'argMaxOutput': {
   1393          'data': [1, 1, 1, 0, 0, 0],
   1394          'descriptor': {shape: [6], dataType: 'int32'}
   1395        }
   1396      }
   1397    }
   1398  },
   1399  {
   1400    'name': 'argMax float16 3D tensor, axis=0, default options',
   1401    'graph': {
   1402      'inputs': {
   1403        'argMaxInput': {
   1404          'data': [
   1405            -51.09375, -6.5390625, 73.8125, 88.4375,  -5.29296875, -79.1875,
   1406            -41.6875,  73.8125,    88.4375, -84.9375, -61.5,       -98.3125,
   1407            -51.09375, -6.5390625, 73.8125, 88.4375,  -5.29296875, -79.1875,
   1408            -41.6875,  73.8125,    88.4375, -84.9375, -61.5,       -98.3125
   1409          ],
   1410          'descriptor': {shape: [2, 3, 4], dataType: 'float16'}
   1411        }
   1412      },
   1413      'operators': [{
   1414        'name': 'argMax',
   1415        'arguments': [{'input': 'argMaxInput'}, {'axis': 0}],
   1416        'outputs': 'argMaxOutput'
   1417      }],
   1418      'expectedOutputs': {
   1419        'argMaxOutput': {
   1420          'data': [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
   1421          'descriptor': {shape: [3, 4], dataType: 'int32'}
   1422        }
   1423      }
   1424    }
   1425  },
   1426  {
   1427    'name': 'argMax float16 4D tensor, axis=0, default options',
   1428    'graph': {
   1429      'inputs': {
   1430        'argMaxInput': {
   1431          'data': [
   1432            -51.09375, -6.5390625, 73.8125, 88.4375,  -5.29296875, -79.1875,
   1433            -41.6875,  73.8125,    88.4375, -84.9375, -61.5,       -98.3125,
   1434            -51.09375, -6.5390625, 73.8125, 88.4375,  -5.29296875, -79.1875,
   1435            -41.6875,  73.8125,    88.4375, -84.9375, -61.5,       -98.3125
   1436          ],
   1437          'descriptor': {shape: [2, 1, 4, 3], dataType: 'float16'}
   1438        }
   1439      },
   1440      'operators': [{
   1441        'name': 'argMax',
   1442        'arguments': [{'input': 'argMaxInput'}, {'axis': 0}],
   1443        'outputs': 'argMaxOutput'
   1444      }],
   1445      'expectedOutputs': {
   1446        'argMaxOutput': {
   1447          'data': [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
   1448          'descriptor': {shape: [1, 4, 3], dataType: 'int32'}
   1449        }
   1450      }
   1451    }
   1452  },
   1453  {
   1454    'name': 'argMax float16 5D tensor, axis=0, default options',
   1455    'graph': {
   1456      'inputs': {
   1457        'argMaxInput': {
   1458          'data': [
   1459            -51.09375, -6.5390625, 73.8125, 88.4375,  -5.29296875, -79.1875,
   1460            -41.6875,  73.8125,    88.4375, -84.9375, -61.5,       -98.3125,
   1461            -51.09375, -6.5390625, 73.8125, 88.4375,  -5.29296875, -79.1875,
   1462            -41.6875,  73.8125,    88.4375, -84.9375, -61.5,       -98.3125
   1463          ],
   1464          'descriptor': {shape: [2, 1, 4, 1, 3], dataType: 'float16'}
   1465        }
   1466      },
   1467      'operators': [{
   1468        'name': 'argMax',
   1469        'arguments': [{'input': 'argMaxInput'}, {'axis': 0}],
   1470        'outputs': 'argMaxOutput'
   1471      }],
   1472      'expectedOutputs': {
   1473        'argMaxOutput': {
   1474          'data': [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
   1475          'descriptor': {shape: [1, 4, 1, 3], dataType: 'int32'}
   1476        }
   1477      }
   1478    }
   1479  },
   1480  {
   1481    'name': 'argMax float16 4D tensor, axis=2',
   1482    'graph': {
   1483      'inputs': {
   1484        'argMaxInput': {
   1485          'data': [
   1486            -51.09375, -6.5390625, 73.8125, 88.4375,  -5.29296875, -79.1875,
   1487            -41.6875,  73.8125,    88.4375, -84.9375, -61.5,       -98.3125,
   1488            -51.09375, -6.5390625, 73.8125, 88.4375,  -5.29296875, -79.1875,
   1489            -41.6875,  73.8125,    88.4375, -84.9375, -61.5,       -98.3125
   1490          ],
   1491          'descriptor': {shape: [2, 1, 4, 3], dataType: 'float16'}
   1492        }
   1493      },
   1494      'operators': [{
   1495        'name': 'argMax',
   1496        'arguments': [{'input': 'argMaxInput'}, {'axis': 2}],
   1497        'outputs': 'argMaxOutput'
   1498      }],
   1499      'expectedOutputs': {
   1500        'argMaxOutput': {
   1501          'data': [1, 2, 2, 1, 2, 2],
   1502          'descriptor': {shape: [2, 1, 3], dataType: 'int32'}
   1503        }
   1504      }
   1505    }
   1506  },
   1507  {
   1508    'name': 'argMax float16 4D tensor, axis=3, options.keepDimensions=true',
   1509    'graph': {
   1510      'inputs': {
   1511        'argMaxInput': {
   1512          'data': [
   1513            -51.09375, -6.5390625, 73.8125, 88.4375,  -5.29296875, -79.1875,
   1514            -41.6875,  73.8125,    88.4375, -84.9375, -61.5,       -98.3125,
   1515            -51.09375, -6.5390625, 73.8125, 88.4375,  -5.29296875, -79.1875,
   1516            -41.6875,  73.8125,    88.4375, -84.9375, -61.5,       -98.3125
   1517          ],
   1518          'descriptor': {shape: [2, 1, 4, 3], dataType: 'float16'}
   1519        }
   1520      },
   1521      'operators': [{
   1522        'name': 'argMax',
   1523        'arguments': [
   1524          {'input': 'argMaxInput'}, {'axis': 3},
   1525          {'options': {'keepDimensions': true}}
   1526        ],
   1527        'outputs': 'argMaxOutput'
   1528      }],
   1529      'expectedOutputs': {
   1530        'argMaxOutput': {
   1531          'data': [2, 0, 2, 1, 2, 0, 2, 1],
   1532          'descriptor': {shape: [2, 1, 4, 1], dataType: 'int32'}
   1533        }
   1534      }
   1535    }
   1536  },
   1537  {
   1538    'name': 'argMax float16 4D tensor, axis=3, options.keepDimensions=false',
   1539    'graph': {
   1540      'inputs': {
   1541        'argMaxInput': {
   1542          'data': [
   1543            -51.09375, -6.5390625, 73.8125, 88.4375,  -5.29296875, -79.1875,
   1544            -41.6875,  73.8125,    88.4375, -84.9375, -61.5,       -98.3125,
   1545            -51.09375, -6.5390625, 73.8125, 88.4375,  -5.29296875, -79.1875,
   1546            -41.6875,  73.8125,    88.4375, -84.9375, -61.5,       -98.3125
   1547          ],
   1548          'descriptor': {shape: [2, 1, 4, 3], dataType: 'float16'}
   1549        }
   1550      },
   1551      'operators': [{
   1552        'name': 'argMax',
   1553        'arguments': [
   1554          {'input': 'argMaxInput'}, {'axis': 3},
   1555          {'options': {'keepDimensions': false}}
   1556        ],
   1557        'outputs': 'argMaxOutput'
   1558      }],
   1559      'expectedOutputs': {
   1560        'argMaxOutput': {
   1561          'data': [2, 0, 2, 1, 2, 0, 2, 1],
   1562          'descriptor': {shape: [2, 1, 4], dataType: 'int32'}
   1563        }
   1564      }
   1565    }
   1566  },
   1567  {
   1568    'name':
   1569        'argMax float16 4D tensor, axis=3, explicit options.outputDataType=\'int32\'',
   1570    'graph': {
   1571      'inputs': {
   1572        'argMaxInput': {
   1573          'data': [
   1574            -51.09375, -6.5390625, 73.8125, 88.4375,  -5.29296875, -79.1875,
   1575            -41.6875,  73.8125,    88.4375, -84.9375, -61.5,       -98.3125,
   1576            -51.09375, -6.5390625, 73.8125, 88.4375,  -5.29296875, -79.1875,
   1577            -41.6875,  73.8125,    88.4375, -84.9375, -61.5,       -98.3125
   1578          ],
   1579          'descriptor': {shape: [2, 1, 4, 3], dataType: 'float16'}
   1580        }
   1581      },
   1582      'operators': [{
   1583        'name': 'argMax',
   1584        'arguments': [
   1585          {'input': 'argMaxInput'}, {'axis': 3},
   1586          {'options': {'outputDataType': 'int32'}}
   1587        ],
   1588        'outputs': 'argMaxOutput'
   1589      }],
   1590      'expectedOutputs': {
   1591        'argMaxOutput': {
   1592          'data': [2, 0, 2, 1, 2, 0, 2, 1],
   1593          'descriptor': {shape: [2, 1, 4], dataType: 'int32'}
   1594        }
   1595      }
   1596    }
   1597  },
   1598  {
   1599    'name':
   1600        'argMax float16 4D tensor, axis=3, options.outputDataType=\'int64\'',
   1601    'graph': {
   1602      'inputs': {
   1603        'argMaxInput': {
   1604          'data': [
   1605            -51.09375, -6.5390625, 73.8125, 88.4375,  -5.29296875, -79.1875,
   1606            -41.6875,  73.8125,    88.4375, -84.9375, -61.5,       -98.3125,
   1607            -51.09375, -6.5390625, 73.8125, 88.4375,  -5.29296875, -79.1875,
   1608            -41.6875,  73.8125,    88.4375, -84.9375, -61.5,       -98.3125
   1609          ],
   1610          'descriptor': {shape: [2, 1, 4, 3], dataType: 'float16'}
   1611        }
   1612      },
   1613      'operators': [{
   1614        'name': 'argMax',
   1615        'arguments': [
   1616          {'input': 'argMaxInput'}, {'axis': 3},
   1617          {'options': {'outputDataType': 'int64'}}
   1618        ],
   1619        'outputs': 'argMaxOutput'
   1620      }],
   1621      'expectedOutputs': {
   1622        'argMaxOutput': {
   1623          'data': [2n, 0n, 2n, 1n, 2n, 0n, 2n, 1n],
   1624          'descriptor': {shape: [2, 1, 4], dataType: 'int64'}
   1625        }
   1626      }
   1627    }
   1628  },
   1629  {
   1630    'name': 'argMax float16 4D tensor, axis=3, all options',
   1631    'graph': {
   1632      'inputs': {
   1633        'argMaxInput': {
   1634          'data': [
   1635            -51.09375, -6.5390625, 73.8125, 88.4375,  -5.29296875, -79.1875,
   1636            -41.6875,  73.8125,    88.4375, -84.9375, -61.5,       -98.3125,
   1637            -51.09375, -6.5390625, 73.8125, 88.4375,  -5.29296875, -79.1875,
   1638            -41.6875,  73.8125,    88.4375, -84.9375, -61.5,       -98.3125
   1639          ],
   1640          'descriptor': {shape: [2, 1, 4, 3], dataType: 'float16'}
   1641        }
   1642      },
   1643      'operators': [{
   1644        'name': 'argMax',
   1645        'arguments': [
   1646          {'input': 'argMaxInput'}, {'axis': 3},
   1647          {'options': {'keepDimensions': true, 'outputDataType': 'int64'}}
   1648        ],
   1649        'outputs': 'argMaxOutput'
   1650      }],
   1651      'expectedOutputs': {
   1652        'argMaxOutput': {
   1653          'data': [2n, 0n, 2n, 1n, 2n, 0n, 2n, 1n],
   1654          'descriptor': {shape: [2, 1, 4, 1], dataType: 'int64'}
   1655        }
   1656      }
   1657    }
   1658  },
   1659 
   1660  {
   1661    'name': 'argMax int8 4D tensor, axis=0, all options',
   1662    'graph': {
   1663      'inputs': {
   1664        'argMaxInput': {
   1665          'data': [
   1666            -128, -50, -5, -1, 0, 11, 50, 126, -127, -50, 0, 0, 1, 10, 50, 127
   1667          ],
   1668          'descriptor': {shape: [2, 2, 2, 2], dataType: 'int8'}
   1669        }
   1670      },
   1671      'operators': [{
   1672        'name': 'argMax',
   1673        'arguments': [
   1674          {'input': 'argMaxInput'}, {'axis': 0},
   1675          {'options': {'keepDimensions': true, 'outputDataType': 'int64'}}
   1676        ],
   1677        'outputs': 'argMaxOutput'
   1678      }],
   1679      'expectedOutputs': {
   1680        'argMaxOutput': {
   1681          'data': [1n, 0n, 1n, 1n, 1n, 0n, 0n, 1n],
   1682          'descriptor': {shape: [1, 2, 2, 2], dataType: 'int64'}
   1683        }
   1684      }
   1685    }
   1686  },
   1687  {
   1688    'name': 'argMax uint8 4D tensor, axis=1, all options',
   1689    'graph': {
   1690      'inputs': {
   1691        'argMaxInput': {
   1692          'data': [
   1693            0, 0, 254, 10, 1, 255, 1, 11, 21, 50, 128, 254, 20, 50, 127, 255
   1694          ],
   1695          'descriptor': {shape: [2, 2, 2, 2], dataType: 'uint8'}
   1696        }
   1697      },
   1698      'operators': [{
   1699        'name': 'argMax',
   1700        'arguments': [
   1701          {'input': 'argMaxInput'}, {'axis': 1},
   1702          {'options': {'keepDimensions': true, 'outputDataType': 'int32'}}
   1703        ],
   1704        'outputs': 'argMaxOutput'
   1705      }],
   1706      'expectedOutputs': {
   1707        'argMaxOutput': {
   1708          'data': [1, 1, 0, 1, 0, 0, 0, 1],
   1709          'descriptor': {shape: [2, 1, 2, 2], dataType: 'int32'}
   1710        }
   1711      }
   1712    }
   1713  },
   1714  {
   1715    'name': 'argMax int32 4D tensor, axis=0, all options',
   1716    'graph': {
   1717      'inputs': {
   1718        'argMaxInput': {
   1719          'data': [
   1720            3,   -24, 5,   -48, 40, 60, -82, 96, 71, 38, -39, 31,
   1721            -82, -96, -25, -16, 66, 82, -82, 96, 39, 42, 82,  85
   1722          ],
   1723          'descriptor': {shape: [2, 1, 4, 3], dataType: 'int32'}
   1724        }
   1725      },
   1726      'operators': [{
   1727        'name': 'argMax',
   1728        'arguments': [
   1729          {'input': 'argMaxInput'}, {'axis': 0},
   1730          {'options': {'keepDimensions': true, 'outputDataType': 'int64'}}
   1731        ],
   1732        'outputs': 'argMaxOutput'
   1733      }],
   1734      'expectedOutputs': {
   1735        'argMaxOutput': {
   1736          'data': [0n, 0n, 0n, 1n, 1n, 1n, 0n, 0n, 0n, 1n, 1n, 1n],
   1737          'descriptor': {shape: [1, 1, 4, 3], dataType: 'int64'}
   1738        }
   1739      }
   1740    }
   1741  },
   1742  {
   1743    'name': 'argMax uint32 4D tensor, axis=1, all options',
   1744    'graph': {
   1745      'inputs': {
   1746        'argMaxInput': {
   1747          'data': [
   1748            0, 0, 254, 10, 1, 512, 1, 11, 21, 50, 128, 254, 20, 50, 127, 512
   1749          ],
   1750          'descriptor': {shape: [2, 2, 2, 2], dataType: 'uint32'}
   1751        }
   1752      },
   1753      'operators': [{
   1754        'name': 'argMax',
   1755        'arguments': [
   1756          {'input': 'argMaxInput'}, {'axis': 1},
   1757          {'options': {'keepDimensions': true, 'outputDataType': 'int32'}}
   1758        ],
   1759        'outputs': 'argMaxOutput'
   1760      }],
   1761      'expectedOutputs': {
   1762        'argMaxOutput': {
   1763          'data': [1, 1, 0, 1, 0, 0, 0, 1],
   1764          'descriptor': {shape: [2, 1, 2, 2], dataType: 'int32'}
   1765        }
   1766      }
   1767    }
   1768  },
   1769  {
   1770    'name': 'argMax int64 4D tensor, axis=0, all options',
   1771    'graph': {
   1772      'inputs': {
   1773        'argMaxInput': {
   1774          'data': [
   1775            3n,   -24n, 5n,   -48n, 40n, 60n, -82n, 96n, 71n, 38n, -39n, 31n,
   1776            -82n, -96n, -25n, -16n, 66n, 82n, -82n, 96n, 39n, 42n, 82n,  85n
   1777          ],
   1778          'descriptor': {shape: [2, 1, 4, 3], dataType: 'int64'}
   1779        }
   1780      },
   1781      'operators': [{
   1782        'name': 'argMax',
   1783        'arguments': [
   1784          {'input': 'argMaxInput'}, {'axis': 0},
   1785          {'options': {'keepDimensions': true, 'outputDataType': 'int64'}}
   1786        ],
   1787        'outputs': 'argMaxOutput'
   1788      }],
   1789      'expectedOutputs': {
   1790        'argMaxOutput': {
   1791          'data': [0n, 0n, 0n, 1n, 1n, 1n, 0n, 0n, 0n, 1n, 1n, 1n],
   1792          'descriptor': {shape: [1, 1, 4, 3], dataType: 'int64'}
   1793        }
   1794      }
   1795    }
   1796  },
   1797  {
   1798    'name': 'argMax uint64 4D tensor, axis=1, all options',
   1799    'graph': {
   1800      'inputs': {
   1801        'argMaxInput': {
   1802          'data': [
   1803            0n,  0n,  254n, 10n,  1n,  512n, 1n,   11n,
   1804            21n, 50n, 128n, 254n, 20n, 50n,  127n, 512n
   1805          ],
   1806          'descriptor': {shape: [2, 2, 2, 2], dataType: 'uint64'}
   1807        }
   1808      },
   1809      'operators': [{
   1810        'name': 'argMax',
   1811        'arguments': [
   1812          {'input': 'argMaxInput'}, {'axis': 1},
   1813          {'options': {'keepDimensions': true, 'outputDataType': 'int32'}}
   1814        ],
   1815        'outputs': 'argMaxOutput'
   1816      }],
   1817      'expectedOutputs': {
   1818        'argMaxOutput': {
   1819          'data': [1, 1, 0, 1, 0, 0, 0, 1],
   1820          'descriptor': {shape: [2, 1, 2, 2], dataType: 'int32'}
   1821        }
   1822      }
   1823    }
   1824  }
   1825 ];
   1826 
   1827 webnn_conformance_test(
   1828    argMinMaxTests, buildAndExecuteGraph, getPrecisionTolerance);