# Copyright (c) 2021-2022 Huawei Device Co., Ltd. # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. definitions: [] tests: - file-name: "fmovi" isa: title: Move immediate-to-register description: > Move integer immediate into a register. For short formats immediate is sign extended to operand size. exceptions: - x_none verification: - none commands: - file-name: "imm_p" isa: instructions: - sig: fmovi v:out:f32, imm:f32 acc: none prefix: f32 format: [pref_op_v_8_imm_32] check-type: no-check code-template: | # fldai %s fmovi v0, %s fcmpg v0 description: Check fmovi with various positive values (f32 values, HEX literals). tags: ['tsan', 'irtoc_ignore'] cases: - values: - "0.0" - "0.0" - values: - "0.1" - "0.1" - values: - "1.0" - "1" - values: - "12345678.90987654" - "12345678.90987654" - values: - "3.141592653589793" - "3.141592653589793" - values: - "3.1415e+003" - "0x45445800" - values: - "1.797693134862315e308" - "0x7f800000" - values: - "1.401298464324817e-45" - "0x00000001" - values: - "3.402823466385288e+38" - "0x7f7fffff" - values: - "0x12345678" - "5.690456613903523e-28" - values: - "0" - "0x00000000" - values: - "1" - "0x3f800000" - values: - "9223372036854775807" - "0x5f000000" - values: - "0.55" - "0x3f0ccccd" - file-name: "imm_n" isa: instructions: - sig: fmovi v:out:f32, imm:f32 acc: none prefix: f32 format: [pref_op_v_8_imm_32] tags: ['irtoc_ignore'] code-template: | # test - check binary representation of FP literals fmovi v0, %s fldai %s fcmpg v0 description: Check fmovi with various negative values (f32 values, HEX literals). check-type: no-check cases: - values: - "-0" - "0x80000000" - values: - "-0.0" - "0x80000000" - values: - "-0x0" - "0x80000000" - values: - "-1" - "0xbf800000" - values: - "-1.0" - "0xbf800000" - values: - "-0x1" - "0xbf800000" - values: - "-0x7FFFFFFF" - "0xcf000000" - values: - "-0.1" - "0xbdcccccd" - values: - "-12345678.90987654" - "0xcb3c614f" - values: - "-3.141592653589793" - "0xc0490fdb" - values: - "-1.40129846432481e-45" - "0x80000001" - values: - "-3.40282346638528e+38" - "0xff7fffff" - values: - "-0.55" - "0xbf0ccccd" - file-name: "err" isa: instructions: - sig: fmovi v:out:f32, imm:f32 acc: none prefix: f32 format: [pref_op_v_8_imm_32] code-template: | # .record panda.Object .function i32 main() { fmovi %s check-type: exit-positive header-template: [] runner-options: [compile-failure] description: Check fmovi with various incorrect f32 literals. cases: - values: - '' - values: - a0, 0.1 - values: - v0, 1e - values: - v0, -1e - values: - v0, 1e1e1 - values: - v0, -1e1e1 - values: - v0, "1.0" - values: - v0, panda.Object - values: - v0, 1.1, v2 - values: - v256, 1.1 - values: - v32767, 0.0 - values: - v65535, 0.0 - file-name: "range" isa: instructions: - sig: fmovi v:out:f32, imm:f32 acc: none prefix: f32 format: [pref_op_v_8_imm_32] code-template: | # fmovi v0, %s check-type: exit-positive runner-options: [compile-only] cases: - values: - "+2e-324" - values: - "-2e-324" - values: - "1.8e328" bugid: ["1132"] - values: - "-1.8e328" bugid: ["1132"] - file-name: "range_val" isa: instructions: - sig: fmovi v:out:f32, imm:f32 acc: none prefix: f32 format: [pref_op_v_8_imm_32] check-type: no-check tags: ['irtoc_ignore'] code-template: | # test - check binary representation of FP literals fmovi v0, %s fldai %s fcmpg v0 cases: - values: - "+2e-46" - "0" - values: - "-2e-46" - "-0.0" - values: - "1.8e46" - "0x7f800000" bugid: ["1132"] - values: - "-1.8e46" - "0xff800000" bugid: ["1132"] - file-name: "vd_8" isa: instructions: - sig: fmovi v:out:f32, imm:f32 acc: none prefix: f32 format: [pref_op_v_8_imm_32] tags: ['irtoc_ignore'] check-type: no-check code-template: | # fldai 1 fmovi %s, 1 fcmpl %s cases: - values: - v1 - v1 - values: - v15 - v15 - values: - v16 - v16 - values: - v255 - v255