# 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. .record A { u1 kek } .function A A.init() { newobj v0, A lda.obj v0 return.obj } .function u1 g() { mov v0, v1 mov.64 v2, v3 mov.obj v4, v5 movi v0, -1 movi.64 v0, 2 fmovi.64 v0, 3.01 lda v1 lda.64 v0 lda.obj v1 ldai 1 ldai.64 2 fldai.64 3.01 lda.str "kek" lda.type A lda.null sta v0 sta.64 v1 sta.obj v2 label: jmp label jeq v1, check_v1_eq ldai 1 jmp check_v1_done check_v1_eq: ldai 0 check_v1_done: cmp.64 v1 ucmp v2 ucmp.64 v3 fcmpl.64 v1 fcmpg.64 v1 jeqz label jnez label jltz label jgtz label jlez label jgez label jeq v2, label jne v2, label jlt v2, label jgt v2, label jle v2, label jge v2, label fadd2.64 v1 fsub2.64 v1 fmul2.64 v1 fdiv2.64 v1 fmod2.64 v1 add2 v2 add2.64 v2 sub2 v2 sub2.64 v2 mul2 v2 mul2.64 v2 and2 v2 and2.64 v2 or2 v2 or2.64 v2 xor2 v2 xor2.64 v2 shl2 v2 shl2.64 v2 shr2 v2 shr2.64 v2 ashr2 v2 ashr2.64 v2 div2 v2 div2.64 v2 mod2 v2 mod2.64 v2 divu2 v2 divu2.64 v2 modu2 v2 modu2.64 v2 add v1, v2 sub v1, v2 mul v1, v2 and v1, v2 or v1, v2 xor v1, v2 shl v1, v2 shr v1, v2 ashr v1, v2 div v1, v2 mod v1, v2 addi 1 subi 1 muli 1 andi 1 ori 1 xori 1 shli 1 shri 1 ashri 1 divi 1 modi 1 neg neg.64 not not.64 i32tof64 u32tof64 i64tof64 u64tof64 f64toi32 f64toi64 f64tou32 f64tou64 i32toi64 i64toi32 u32toi64 ldarr.8 v1 ldarru.8 v2 ldarr.16 v1 ldarru.16 v1 ldarr v1 ldarr.64 v1 fldarr.32 v1 fldarr.64 v1 ldarr.obj v1 starr.8 v1, v2 starr.16 v1, v2 starr v1, v2 starr.64 v1, v2 fstarr.32 v1, v2 fstarr.64 v1, v2 starr.obj v1, v2 newobj v6, A lda.obj v6 initobj A.init ldobj v0, A.kek ldobj.64 v0, A.kek ldobj.obj v0, A.kek stobj v1, A.kek stobj.64 v1, A.kek stobj.obj v1, A.kek ldstatic A.kek ldstatic.64 A.kek ldstatic.obj A.kek ststatic A.kek ststatic.64 A.kek ststatic.obj A.kek checkcast A isinstance A }