definitions: []
tests:
- file-name: "sub2"
isa:
title: Two address binary operation on accumulator
description: >
Perform specified binary operation on accumulator and register and store result into accumulator
exceptions:
- x_none
commands:
- file-name: "op_vs_8_zero"
isa:
instructions:
- sig: sub2 v:in:i32
acc: inout:i32
format: [op_v_8]
code-template: |
#
ldai 0
movi v0, %s
sub2 v0
movi v0, %s
jne v0, set_failure
ldai 0
jmp fall_through
set_failure:
ldai 1
fall_through:
description: Check sub2 with zero and various values.
cases:
- values:
- "0"
- "0"
- values:
- "1"
- "0xffffffff"
- values:
- "-1"
- "1"
- values:
- "0x7fffffff"
- "0x80000001"
- values:
- "-0x7fffffff"
- "0x7fffffff"
- values:
- "0x80000000"
- "0x80000000"
bugid: ['966']
- values:
- "-0x80000000"
- "0x80000000"
bugid: ['966']
- values:
- "0xFFFFFFFF"
- "1"
- values:
- "-0xFFFFFFFF"
- "0xFFFFFFFF"
- file-name: "op_vs_8_pone"
isa:
instructions:
- sig: sub2 v:in:i32
acc: inout:i32
format: [op_v_8]
code-template: |
#
ldai 1
movi v0, %s
sub2 v0
movi v0, %s
jne v0, set_failure
ldai 0
jmp fall_through
set_failure:
ldai 1
fall_through:
description: Check sub2 with +1 and various values.
cases:
- values:
- "0"
- "1"
- values:
- "1"
- "0"
- values:
- "-1"
- "2"
- values:
- "0x7FFFFFFF"
- "0x80000002"
- values:
- "-0x7FFFFFFF"
- "0x80000000"
bugid: ['966']
- values:
- "0x80000000"
- "0x80000001"
bugid: ['966']
- values:
- "-0x80000000"
- "0x80000001"
bugid: ['966']
- values:
- "0xFFFFFFFF"
- "2"
- values:
- "-0xFFFFFFFF"
- "0"
- file-name: "op_vs_8_none"
isa:
instructions:
- sig: sub2 v:in:i32
acc: inout:i32
format: [op_v_8]
code-template: |
#
ldai -1
movi v0, %s
sub2 v0
movi v0, %s
jne v0, set_failure
ldai 0
jmp fall_through
set_failure:
ldai 1
fall_through:
description: Check sub2 with -1 and various values.
cases:
- values:
- "0"
- "-1"
- values:
- "1"
- "-2"
- values:
- "-1"
- "0"
- values:
- "0x7FFFFFFF"
- "0x80000000"
- values:
- "-0x7FFFFFFF"
- "0x7FFFFFFE"
- values:
- "0x80000000"
- "0x7FFFFFFF"
- values:
- "-0x80000000"
- "0x7FFFFFFF"
- values:
- "0xFFFFFFFF"
- "0"
- values:
- "-0xFFFFFFFF"
- "0xFFFFFFFE"
- file-name: "op_vs_8_pmax"
isa:
instructions:
- sig: sub2 v:in:i32
acc: inout:i32
format: [op_v_8]
code-template: |
#
ldai 0x7FFFFFFF
movi v0, %s
sub2 v0
movi v0, %s
jne v0, set_failure
ldai 0
jmp fall_through
set_failure:
ldai 1
fall_through:
description: Check sub2 with +max and various values.
cases:
- values:
- "0"
- "0x7fffffff"
- values:
- "1"
- "0x7ffffffe"
- values:
- "-1"
- "0x80000000"
bugid: ['966']
- values:
- "0x7fffffff"
- "0"
- values:
- "-0x7fffffff"
- "0xfffffffe"
bugid: ['966']
- values:
- "0x80000000"
- "0xffffffff"
bugid: ['966']
- values:
- "-0x80000000"
- "0xffffffff"
bugid: ['966']
- values:
- "0xffffffff"
- "0x80000000"
bugid: ['966']
- values:
- "-0xffffffff"
- "0x7ffffffe"
- file-name: "op_vs_8_nmax"
isa:
instructions:
- sig: sub2 v:in:i32
acc: inout:i32
format: [op_v_8]
code-template: |
#
ldai -0x80000000
movi v0, %s
sub2 v0
movi v0, %s
jne v0, set_failure
ldai 0
jmp fall_through
set_failure:
ldai 1
fall_through:
description: Check sub2 with -max and various values.
cases:
- values:
- "0"
- "0x80000000"
- values:
- "1"
- "0x7fffffff"
bugid: ['966']
- values:
- "-1"
- "0x80000001"
- values:
- "0x7fffffff"
- "1"
bugid: ['966']
- values:
- "-0x7fffffff"
- "0xffffffff"
- values:
- "0x80000000"
- "0"
- values:
- "-0x80000000"
- "0"
- values:
- "0xffffffff"
- "0x80000001"
- values:
- "-0xffffffff"
- "0x7fffffff"
bugid: ['966']
- file-name: "vals"
isa:
instructions:
- sig: sub2 v:in:i32
acc: inout:i32
format: [op_v_8]
code-template: |
#
ldai %s
movi v0, %s
sub2 v0
movi v0, %s
jne v0, set_failure
ldai 0
jmp fall_through
set_failure:
ldai 1
fall_through:
description: Check sub2 with various values.
tags: ['tsan']
cases:
- values:
- "0x41c75e07"
- "0x42e816eb"
- "0xfedf471c"
- values:
- "0x45624f8b"
- "0xfc29cfb6"
- "0x49387fd5"
- values:
- "0x5811aa60"
- "0xf22cf148"
- "0x65e4b918"
- values:
- "0x5aac44d7"
- "0xbe450a68"
- "0x9c673a6f"
bugid: ['966']
- values:
- "0xa9a2ee6d"
- "0x6e000ede"
- "0x3ba2df8f"
bugid: ['966']
- values:
- "0xd9ec934b"
- "0xe4a6266a"
- "0xf5466ce1"
- values:
- "0xc5c7ee89"
- "0x600e6f58"
- "0x65b97f31"
bugid: ['966']
- values:
- "0x76016f79"
- "0x589dee2d"
- "0x1d63814c"
- values:
- "0xec966b67"
- "0xf366e464"
- "0xf92f8703"
- values:
- "0x82250785"
- "0xac94f78"
- "0x775bb80d"
bugid: ['966']
- file-name: "vals_mod32_1"
bugid: ['1324', '2072']
tags: ['verifier']
runner-options: ['verifier-failure', 'verifier-config']
isa:
instructions:
- sig: sub2 v:in:i32
acc: inout:i32
format: [op_v_8]
code-template: |
#
ldai %s
movi v0, %s
sub2 v0
movi.64 v0, %s
cmp.64 v0
description: Check sub2 with incorrect accumulator and register types.
cases:
- values:
- "0"
- "0x80000000"
- "0xFFFFFFFF80000000"
bugid: ['966']
- values:
- "0x80000000"
- "1"
- "0x7FFFFFFF"
bugid: ['966']
- values:
- "0x80000000"
- "-0x80000000"
- "0"
- file-name: "vals_mod32_2"
bugid: ['1324']
tags: ['verifier']
runner-options: ['verifier-failure', 'verifier-config']
isa:
instructions:
- sig: sub2 v:in:i32
acc: inout:i32
format: [op_v_8]
code-template: |
#
ldai.64 %s
movi.64 v0, %s
sub2 v0
movi.64 v0, %s
cmp.64 v0
description: Check sub2 with incorrect accumulator and register types.
cases:
- values:
- "0"
- "0x180000000"
- "0xFFFFFFFF80000000"
bugid: ['966']
- values:
- "0x1234567680000000"
- "1"
- "0x7FFFFFFF"
bugid: ['966']
- values:
- "0x7654321080000000"
- "-0x1234567680000000"
- "0"
- file-name: "regs"
isa:
instructions:
- sig: sub2 v:in:i32
acc: inout:i32
format: [op_v_8]
runner-options: ['compile-only']
code-template: |
#
sub2 %s
check-type: none
description: Check sub2 with various register numbers.
cases:
- values:
- "v255"
- values:
- "v256"
runner-options: ['compile-failure']
- file-name: "type"
bugid: ["964", "966"]
tags: ["verifier"]
isa:
verification:
- acc_type
- v1_type
runner-options: ['verifier-failure', 'verifier-config']
header-template: []
code-template: |
.record T {}
.function i32 main() {
%s
*s
sub2 v0
ldai 0
check-type: no-check
description: Check 'sub2' with incorrect accumulator and/or register types.
cases:
- values:
- ldai 0
id: acc_ok
- values:
- ldai.64 0
- values:
- fldai 0
bugid: ['7315']
- values:
- fldai.64 0
- values:
- lda.null
- values:
- |
#
movi v1, 0
newarr v1, v1, i32[]
lda.obj v1
- values:
- lda.str "0"
- values:
- lda.type T
- values:
- |
#
newobj v1, T
lda.obj v1
template-cases:
- values:
- movi v0, 0
exclude: [acc_ok]
- values:
- movi.64 v0, 0
- values:
- fmovi v0, 0
bugid: ['7315']
- values:
- fmovi.64 v0, 0
- values:
- mov.null v0
- values:
- |
#
movi v0, 0
newarr v0, v0, i32[]
- values:
- |
#
lda.str "0"
sta.obj v0
- values:
- |
#
lda.type T
sta.obj v0
- values:
- newobj v0, T
- file-name: uninitialized_regs
isa:
instructions:
- sig: sub2 v:in:i32
acc: inout:i32
format: [op_v_8]
description: Check 'sub2' with uninitialized registers.
tags: ['verifier']
runner-options: ['verifier-failure', 'verifier-config']
code-template: |
#
%s
*s
sub2 *s
check-type: exit-positive
template-cases:
- values:
- ''
- values:
- ldai 0
exclude: [init]
cases:
- values:
- ''
- v0
- values:
- movi v1, 0
- v1
id: init
- values:
- ''
- v8
- values:
- ''
- v15
- values:
- movi v15, 0
- v15
id: init