IIlya Trubachevcopyright update
333ccf0f创建于 2022年3月25日历史提交
# 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
}