• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Copyright (c) 2021 Huawei Device Co., Ltd.
2# Licensed under the Apache License, Version 2.0 (the "License");
3# you may not use this file except in compliance with the License.
4# You may obtain a copy of the License at
5#
6# http://www.apache.org/licenses/LICENSE-2.0
7#
8# Unless required by applicable law or agreed to in writing, software
9# distributed under the License is distributed on an "AS IS" BASIS,
10# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11# See the License for the specific language governing permissions and
12# limitations under the License.
13
14definitions: []
15tests:
16  - file-name: "neg.64"
17    isa:
18      title: Unary
19      description: >
20        Perform specified operation on accumulator
21      exceptions:
22      - x_none
23
24    commands:
25      - file-name: "op_none"
26        isa:
27          instructions:
28            - sig: neg.64
29              acc: inout:i64
30              format: [op_none]
31        code-template: |
32            #
33                ldai.64 %s
34                neg.64
35                movi.64 v0, %s
36                cmp.64 v0
37        description: Check `neg.64` with various values.
38        tags: ['tsan', 'clang_release_sanitizer']
39        cases:
40          - values: ["0", "0x0"]
41          - values: ["1", "0xFFFFFFFFFFFFFFFF"]
42          - values: ["0xF", "0xFFFFFFFFFFFFFFF1"]
43          - values: ["0xFF", "0xFFFFFFFFFFFFFF01"]
44          - values: ["0xFFF", "0xFFFFFFFFFFFFF001"]
45          - values: ["0xFFFF", "0xFFFFFFFFFFFF0001"]
46          - values: ["0xFFFFF", "0xFFFFFFFFFFF00001"]
47          - values: ["0xFFFFFF", "0xFFFFFFFFFF000001"]
48          - values: ["0xFFFFFFF", "0xFFFFFFFFF0000001"]
49          - values: ["0xFFFFFFFF", "0xFFFFFFFF00000001"]
50          - values: ["0xFFFFFFFFF", "0xFFFFFFF000000001"]
51          - values: ["0xFFFFFFFFFF", "0xFFFFFF0000000001"]
52          - values: ["0xFFFFFFFFFFF", "0xFFFFF00000000001"]
53          - values: ["0xFFFFFFFFFFFF", "0xFFFF000000000001"]
54          - values: ["0xFFFFFFFFFFFFF", "0xFFF0000000000001"]
55          - values: ["0xFFFFFFFFFFFFFF", "0xFF00000000000001"]
56          - values: ["0xFFFFFFFFFFFFFFF", "0xF000000000000001"]
57          - values: ["0xFFFFFFFFFFFFFFFF", "0x1"]
58          - values: ["0x8000000000000000", "0x8000000000000000"]
59          - values: ["0x7FFFFFFFFFFFFFFF", "0x8000000000000001"]
60          - values: ["-0x7FFFFFFFFFFFFFFF", "0x7FFFFFFFFFFFFFFF"]
61
62      - file-name: "vals"
63        isa:
64          instructions:
65            - sig: neg.64
66              acc: inout:i64
67              format: [op_none]
68        code-template: |
69          #
70              ldai.64 %s
71              neg.64
72              movi.64 v0, %s
73              cmp.64 v0
74        description: Check `neg.64` with various values.
75        cases:
76          - values: ["0xA0A667118E49E5ED", "0x5F5998EE71B61A13"]
77          - values: ["0xD9C348FFDAD250BC", "0x263CB700252DAF44"]
78          - values: ["0xCC9A2D1C0FF85B1E", "0x3365D2E3F007A4E2"]
79          - values: ["0xD02122DF5FB2456D", "0x2FDEDD20A04DBA93"]
80          - values: ["0x5ABD58FAF0BE5ABD", "0xA542A7050F41A543"]
81          - values: ["0x6ABBE5E3CCFB6422", "0x95441A1C33049BDE"]
82          - values: ["0xDAE4BFB7C0BCAF0D", "0x251B40483F4350F3"]
83          - values: ["0x8B8EDF2D3CE1F37D", "0x747120D2C31E0C83"]
84          - values: ["0x55093AE5F02E0E03", "0xAAF6C51A0FD1F1FD"]
85          - values: ["0x33E30F2EB121E7A", "0xFCC1CF0D14EDE186"]
86          - values: ["0xC22BDBC17C25BB5C", "0x3DD4243E83DA44A4"]
87          - values: ["0x79B490F098C75FA6", "0x864B6F0F6738A05A"]
88          - values: ["0x6D11CFA9196A19D5", "0x92EE3056E695E62B"]
89          - values: ["0xBFA95B99EC1D2054", "0x4056A46613E2DFAC"]
90          - values: ["0xFA65DBDFC3ECBB8B", "0x59A24203C134475"]
91          - values: ["0x53F5EDC89AFE89C6", "0xAC0A12376501763A"]
92          - values: ["0x80231663CE443B2", "0xF7FDCE99C31BBC4E"]
93          - values: ["0x4E5AD26973851CEF", "0xB1A52D968C7AE311"]
94          - values: ["0xF619BEB33CC16E24", "0x9E6414CC33E91DC"]
95          - values: ["0x8514D176A0789D2B", "0x7AEB2E895F8762D5"]
96
97      - file-name: type
98        bugid: ["964", "966", "2090"]
99        tags: ["verifier"]
100        isa:
101          instructions:
102            - sig: neg.64
103              acc: inout:i64
104              format: [op_none]
105          verification:
106            - acc_type
107        runner-options: ['verifier-failure', 'verifier-debug-config']
108        header-template: []
109        code-template: |
110            .record T {}
111            .record panda.String <external>
112            .record panda.Object <external>
113            #
114            .function i32 main() {
115                %s
116                neg.64
117        check-type: exit-positive
118        description: Check `neg.64` with incorrect accumulator type.
119        cases:
120          - values:
121            - ldai 1
122          - values:
123            - fldai.64 1.0
124          - values:
125            - lda.type T
126          - values:
127            - lda.type T[]
128          - values:
129            - lda.type panda.Object
130          - values:
131            - lda.type panda.String
132          - values:
133            - lda.str "x"
134          - values:
135            - |
136               newobj v0, T
137               lda.obj v0
138          - values:
139            - lda.null
140          - values:
141            - |
142              #
143                  movi v0, 10
144                  newarr v0, v0, i32[]
145                  lda.obj v0
146
147      - file-name: uninitialized_regs
148        bugid: ["2787"]
149        tags: ["verifier"]
150        isa:
151          instructions:
152            - sig: neg.64
153              acc: inout:i64
154              format: [op_none]
155        description: Check neg.64 with uninitialized accumulator.
156        runner-options: ['verifier-failure', 'verifier-debug-config']
157        header-template: []
158        code-template: |
159          #
160          .function i32 main() {
161              # acc is undefined
162              neg.64
163        check-type: exit-positive
164