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: "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 description: Check `not.64` with various values. 39 tags: ['tsan'] 40 cases: 41 - values: ["0", "0xFFFFFFFFFFFFFFFF"] 42 - values: ["1", "0xFFFFFFFFFFFFFFFE"] 43 - values: ["0xF", "0xFFFFFFFFFFFFFFF0"] 44 - values: ["0xFF", "0xFFFFFFFFFFFFFF00"] 45 - values: ["0xFFF", "0xFFFFFFFFFFFFF000"] 46 - values: ["0xFFFF", "0xFFFFFFFFFFFF0000"] 47 - values: ["0xFFFFF", "0xFFFFFFFFFFF00000"] 48 - values: ["0xFFFFFF", "0xFFFFFFFFFF000000"] 49 - values: ["0xFFFFFFF", "0xFFFFFFFFF0000000"] 50 - values: ["0xFFFFFFFF", "0xFFFFFFFF00000000"] 51 - values: ["0xFFFFFFFFF", "0xFFFFFFF000000000"] 52 - values: ["0xFFFFFFFFFF", "0xFFFFFF0000000000"] 53 - values: ["0xFFFFFFFFFFF", "0xFFFFF00000000000"] 54 - values: ["0xFFFFFFFFFFFF", "0xFFFF000000000000"] 55 - values: ["0xFFFFFFFFFFFFF", "0xFFF0000000000000"] 56 - values: ["0xFFFFFFFFFFFFFF", "0xFF00000000000000"] 57 - values: ["0xFFFFFFFFFFFFFFF", "0xF000000000000000"] 58 - values: ["0xFFFFFFFFFFFFFFFF", "0x0"] 59 - values: ["0x8000000000000000", "0x7FFFFFFFFFFFFFFF"] 60 - values: ["0x7FFFFFFFFFFFFFFF", "0x8000000000000000"] 61 - values: ["-0x7FFFFFFFFFFFFFFF", "0x7FFFFFFFFFFFFFFE"] 62 63 - file-name: "vals" 64 isa: 65 instructions: 66 - sig: not.64 67 acc: inout:i64 68 prefix: bit 69 format: [pref_op_none] 70 code-template: | 71 # 72 ldai.64 %s 73 not.64 74 movi.64 v0, %s 75 cmp.64 v0 76 description: Check `not.64` with various values. 77 cases: 78 - values: ["0xA7A54FC76D2CCC7C", "0x585AB03892D33383"] 79 - values: ["0xB16F357A99C0D8A7", "0x4E90CA85663F2758"] 80 - values: ["0xFB98B737DC041B28", "0x46748C823FBE4D7"] 81 - values: ["0x14DFCAC9CD5FF6AF", "0xEB20353632A00950"] 82 - values: ["0xCDA373D7E2AB14B5", "0x325C8C281D54EB4A"] 83 - values: ["0x7D6137CE13614EF5", "0x829EC831EC9EB10A"] 84 - values: ["0xDFC0F4740D9496B6", "0x203F0B8BF26B6949"] 85 - values: ["0x526CFE9CA0267252", "0xAD9301635FD98DAD"] 86 - values: ["0x606CBD38816FFFC9", "0x9F9342C77E900036"] 87 - values: ["0x1D48537EC4386C70", "0xE2B7AC813BC7938F"] 88 - values: ["0x2EB5301A47794231", "0xD14ACFE5B886BDCE"] 89 - values: ["0x9DD1BB7C7246287D", "0x622E44838DB9D782"] 90 - values: ["0x61D822912F62D5C", "0xF9E27DD6ED09D2A3"] 91 - values: ["0xC2DD833F3B48080A", "0x3D227CC0C4B7F7F5"] 92 - values: ["0xD9DE84BEBDC002D9", "0x26217B41423FFD26"] 93 - values: ["0xF183B326AD268E23", "0xE7C4CD952D971DC"] 94 - values: ["0x4DFE00C32BC60340", "0xB201FF3CD439FCBF"] 95 - values: ["0xA24A0147E55691D", "0xF5DB5FEB81AA96E2"] 96 - values: ["0x43FAFCB397905439", "0xBC05034C686FABC6"] 97 - values: ["0x2B72F3FC001DC9F", "0xFD48D0C03FFE2360"] 98 99 - file-name: type 100 bugid: ["964", "966", "2090", "3133"] 101 tags: ["verifier"] 102 isa: 103 instructions: 104 - sig: not.64 105 acc: inout:i64 106 prefix: bit 107 format: [pref_op_none] 108 verification: 109 - acc_type 110 runner-options: ['verifier-failure', 'verifier-debug-config'] 111 header-template: [] 112 code-template: | 113 .record T {} 114 .record panda.String <external> 115 .record panda.Object <external> 116 # 117 .function i32 main() { 118 %s 119 not.64 120 check-type: exit-positive 121 description: Check `not.64` with incorrect accumulator type. 122 cases: 123 - values: 124 - ldai 1 125 - values: [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-debug-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