1# Copyright (c) 2021-2022 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: 'not.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: not.64 29 acc: inout:i64 30 prefix: bit 31 format: [pref_op_none] 32 code-template: | 33 # 34 ldai.64 %s 35 not.64 36 movi.64 v0, %s 37 cmp.64 v0 38 check-type: no-check 39 description: Check `not.64` with various values. 40 tags: ['tsan'] 41 cases: 42 - values: ['0', '0xFFFFFFFFFFFFFFFF'] 43 - values: ['1', '0xFFFFFFFFFFFFFFFE'] 44 - values: ['0xF', '0xFFFFFFFFFFFFFFF0'] 45 - values: ['0xFF', '0xFFFFFFFFFFFFFF00'] 46 - values: ['0xFFF', '0xFFFFFFFFFFFFF000'] 47 - values: ['0xFFFF', '0xFFFFFFFFFFFF0000'] 48 - values: ['0xFFFFF', '0xFFFFFFFFFFF00000'] 49 - values: ['0xFFFFFF', '0xFFFFFFFFFF000000'] 50 - values: ['0xFFFFFFF', '0xFFFFFFFFF0000000'] 51 - values: ['0xFFFFFFFF', '0xFFFFFFFF00000000'] 52 - values: ['0xFFFFFFFFF', '0xFFFFFFF000000000'] 53 - values: ['0xFFFFFFFFFF', '0xFFFFFF0000000000'] 54 - values: ['0xFFFFFFFFFFF', '0xFFFFF00000000000'] 55 - values: ['0xFFFFFFFFFFFF', '0xFFFF000000000000'] 56 - values: ['0xFFFFFFFFFFFFF', '0xFFF0000000000000'] 57 - values: ['0xFFFFFFFFFFFFFF', '0xFF00000000000000'] 58 - values: ['0xFFFFFFFFFFFFFFF', '0xF000000000000000'] 59 - values: ['0xFFFFFFFFFFFFFFFF', '0x0'] 60 - values: ['0x8000000000000000', '0x7FFFFFFFFFFFFFFF'] 61 - values: ['0x7FFFFFFFFFFFFFFF', '0x8000000000000000'] 62 - values: ['-0x7FFFFFFFFFFFFFFF', '0x7FFFFFFFFFFFFFFE'] 63 64 - file-name: 'vals' 65 isa: 66 instructions: 67 - sig: not.64 68 acc: inout:i64 69 prefix: bit 70 format: [pref_op_none] 71 code-template: | 72 # 73 ldai.64 %s 74 not.64 75 movi.64 v0, %s 76 cmp.64 v0 77 check-type: no-check 78 description: Check `not.64` with various values. 79 cases: 80 - values: ['0xA7A54FC76D2CCC7C', '0x585AB03892D33383'] 81 - values: ['0xB16F357A99C0D8A7', '0x4E90CA85663F2758'] 82 - values: ['0xFB98B737DC041B28', '0x46748C823FBE4D7'] 83 - values: ['0x14DFCAC9CD5FF6AF', '0xEB20353632A00950'] 84 - values: ['0xCDA373D7E2AB14B5', '0x325C8C281D54EB4A'] 85 - values: ['0x7D6137CE13614EF5', '0x829EC831EC9EB10A'] 86 - values: ['0xDFC0F4740D9496B6', '0x203F0B8BF26B6949'] 87 - values: ['0x526CFE9CA0267252', '0xAD9301635FD98DAD'] 88 - values: ['0x606CBD38816FFFC9', '0x9F9342C77E900036'] 89 - values: ['0x1D48537EC4386C70', '0xE2B7AC813BC7938F'] 90 - values: ['0x2EB5301A47794231', '0xD14ACFE5B886BDCE'] 91 - values: ['0x9DD1BB7C7246287D', '0x622E44838DB9D782'] 92 - values: ['0x61D822912F62D5C', '0xF9E27DD6ED09D2A3'] 93 - values: ['0xC2DD833F3B48080A', '0x3D227CC0C4B7F7F5'] 94 - values: ['0xD9DE84BEBDC002D9', '0x26217B41423FFD26'] 95 - values: ['0xF183B326AD268E23', '0xE7C4CD952D971DC'] 96 - values: ['0x4DFE00C32BC60340', '0xB201FF3CD439FCBF'] 97 - values: ['0xA24A0147E55691D', '0xF5DB5FEB81AA96E2'] 98 - values: ['0x43FAFCB397905439', '0xBC05034C686FABC6'] 99 - values: ['0x2B72F3FC001DC9F', '0xFD48D0C03FFE2360'] 100 101 - file-name: type 102 bugid: ['964', '966', '2090', '3133'] 103 tags: ['verifier'] 104 isa: 105 verification: 106 - acc_type 107 runner-options: ['verifier-failure', 'verifier-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 not.64 117 check-type: exit-positive 118 description: Check `not.64` with incorrect accumulator type. 119 cases: 120 - values: 121 - ldai 1 122 - values: 123 - fldai 1 124 - values: 125 - fldai.64 1.0 126 - values: 127 - lda.type T 128 - values: 129 - lda.type T[] 130 - values: 131 - lda.type panda.Object 132 - values: 133 - lda.type panda.String 134 - values: 135 - lda.str "x" 136 - values: 137 - | 138 newobj v0, T 139 lda.obj v0 140 - values: 141 - lda.null 142 - values: 143 - | 144 # 145 movi v0, 10 146 newarr v0, v0, i32[] 147 lda.obj v0 148 149 - file-name: uninitialized_regs 150 bugid: ['2787'] 151 tags: ['verifier'] 152 isa: 153 instructions: 154 - sig: not.64 155 acc: inout:i64 156 prefix: bit 157 format: [pref_op_none] 158 description: Check not.64 with uninitialized accumulator. 159 runner-options: ['verifier-failure', 'verifier-config'] 160 header-template: [] 161 code-template: | 162 # 163 .function i32 main() { 164 # acc is undefined 165 not.64 166 check-type: exit-positive 167