.. SPDX-License-Identifier: GPL-2.0+

.. index::
   single: itest (command)

itest command
=============

Synopsis
--------

::

    itest[.b | .w | .l | .q | .s] [*]<value1> <op> [*]<value2>

Description
-----------

The itest command is used to compare two values. The return value $? is set
accordingly.

By default it is assumed that the values are 4 byte integers. By appending a
postfix (.b, .w, .l, .q, .s) the size can be specified:

======= ======================================================
postfix meaning
======= ======================================================
.b      1 byte integer
.w      2 byte integer
.l      4 byte integer
.q      8 byte integer (only available if CONFIG_PHYS_64BIT=y)
.s      string
======= ======================================================

value1, value2
    values to compare. Numeric values are hexadecimal. If '*' is prefixed a
    hexadecimal address is passed, which points to the value to be compared.

op
    operator, see table

    ======== ======================
    operator meaning
    ======== ======================
    -lt      less than
    <        less than
    -le      less or equal
    <=       less or equal
    -eq      equal
    ==       equal
    -ne      not equal
    !=       not equal
    <>       not equal
    -ge      greater or equal
    >=       greater or equal
    -gt      greater than
    >        greater than
    ======== ======================

Examples
========

The itest command sets the result variable $? to true (0) or false (1):

::

    => itest 3 < 4; echo $?
    0
    => itest 3 == 4; echo $?
    1

This value can be used in the :doc:`if <if>` command:

::

    => if itest 0x3002 < 0x4001; then echo true; else echo false; fi
    true

Numbers will be truncated according to the postfix before comparing:

::

    => if itest.b 0x3002 < 0x4001; then echo true; else echo false; fi
    false

Postfix .s causes a string compare. The string '0xa1234' is alphabetically
smaller than '0xb'.

::

    => if itest.s 0xa1234 < 0xb; then echo true; else echo false; fi
    true

A value prefixed by '*' is a pointer to the value in memory.

::

    => mm 0x4000
    00004000: 00000004 ?
    00004004: 00000003 ? =>
    => if itest *0x4000 == 4; then echo true; else echo false; fi
    true
    => if itest *0x4004 == 3; then echo true; else echo false; fi
    true

Configuration
-------------

The command is only available if CONFIG_CMD_ITEST=y.

Return value
------------

The return value $? is 0 (true) if the condition is true and 1 (false)
otherwise.
