.include "macros.inc"

test_suite extui

.macro test_extui v, shiftimm, maskimm
    .if     \shiftimm + \maskimm <= 32
    movi    a2, \v
    extui   a3, a2, \shiftimm, \maskimm
    movi    a4, ((\v) >> (\shiftimm)) & ((1 << (\maskimm)) - 1)
    assert  eq, a3, a4
    .endif
.endm

test extui
    .set    shiftimm, 0
    .rept   32
    .set    maskimm, 1
    .rept   16
    test_extui 0xc8df1370, shiftimm, maskimm
    .set    maskimm, maskimm + 1
    .endr
    .set    shiftimm, shiftimm + 1
    .endr
test_end

test_suite_end
