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: "i64tou1" 17 isa: 18 title: Conversions from integer types to u1 19 description: > 20 Conversion from integer types to u1 obeys the following rules. 21 If converted integer is not equal to zero, the result is 1. 22 Otherwise the result is 0. 23 exceptions: 24 - x_none 25 commands: 26 - file-name: "op_none" 27 isa: 28 instructions: 29 - sig: i64tou1 30 acc: inout:i64->u1 31 prefix: cast 32 format: [pref_op_none] 33 code-template: | 34 # 35 ldai.64 %s 36 i64tou1 37 movi v0, %s 38 jne v0, set_failure 39 ldai 0 40 jmp fall_through 41 set_failure: 42 ldai 1 43 fall_through: 44 description: Check i64tou1 with various values. 45 tags: ['tsan'] 46 cases: 47 - values: 48 - "0" 49 - "0" 50 - values: 51 - "-1" 52 - "1" 53 - values: 54 - "0x1111111122222222" 55 - "1" 56 - values: 57 - "0x7fffffffffffffff" 58 - "1" 59 - values: 60 - "0xBBCCDDEE00000001" 61 - "1" 62 - file-name: "type" 63 isa: 64 instructions: 65 - sig: i64tou1 66 acc: inout:i64->u1 67 prefix: cast 68 format: [pref_op_none] 69 verification: 70 - acc_type 71 bugid: ["964", "1653", "2107"] 72 tags: ["verifier"] 73 description: | 74 Check `i64tou1` with incorrect accumulator type. 75 Load different values (objects, strings, types, 64-bit floating point values, 32-bit integer values) and invokes `i64tou1`. 76 Return 0 to indicate that negative test failed, because this line is unreachable and code will not be executed after verification error. 77 runner-options: ['verifier-failure', 'verifier-debug-config'] 78 header-template: [] 79 code-template: | 80 # 81 .record B {} 82 .record panda.String <external> 83 .record panda.Object <external> 84 .function i32 main() { 85 %s 86 i64tou1 87 check-type: exit-positive 88 cases: 89 - values: 90 - ldai 0 91 - values: 92 - fldai.64 0 93 - values: 94 - lda.type B 95 - values: 96 - lda.type B[] 97 - values: 98 - lda.type panda.String 99 - values: 100 - lda.str "string" 101 - values: 102 - lda.type panda.Object 103 - values: 104 - | 105 # 106 movi v0, 10 107 newarr v0, v0, i32[] 108 lda.obj v0 109 - values: 110 - lda.null 111 112 - file-name: uninitialized_regs 113 isa: 114 instructions: 115 - sig: i64tou1 116 acc: inout:i64->u1 117 prefix: cast 118 format: [pref_op_none] 119 description: Check i64tou1 with uninitialized accumulator. 120 tags: ['verifier'] 121 runner-options: ['verifier-failure', 'verifier-debug-config'] 122 header-template: [] 123 code-template: | 124 # 125 .function i32 main() { 126 i64tou1 127 check-type: exit-positive 128