genptr.c (1dcdc92c72af5311666df64f5f04d6600af262ed) genptr.c (1e536334ccb0a1606f814a38a4996b3b818e9fab)
1/*
2 * Copyright(c) 2019-2022 Qualcomm Innovation Center, Inc. All Rights Reserved.
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; either version 2 of the License, or
7 * (at your option) any later version.
8 *

--- 537 unchanged lines hidden (view full) ---

546 for (int i = 0; i < sizeof(MMVector) / 8; i++) {
547 tcg_gen_qemu_ld64(tmp, src, ctx->mem_idx);
548 tcg_gen_addi_tl(src, src, 8);
549 tcg_gen_st_i64(tmp, cpu_env, dstoff + i * 8);
550 }
551 tcg_temp_free_i64(tmp);
552}
553
1/*
2 * Copyright(c) 2019-2022 Qualcomm Innovation Center, Inc. All Rights Reserved.
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; either version 2 of the License, or
7 * (at your option) any later version.
8 *

--- 537 unchanged lines hidden (view full) ---

546 for (int i = 0; i < sizeof(MMVector) / 8; i++) {
547 tcg_gen_qemu_ld64(tmp, src, ctx->mem_idx);
548 tcg_gen_addi_tl(src, src, 8);
549 tcg_gen_st_i64(tmp, cpu_env, dstoff + i * 8);
550 }
551 tcg_temp_free_i64(tmp);
552}
553
554static void gen_vreg_store(DisasContext *ctx, Insn *insn, Packet *pkt,
555 TCGv EA, intptr_t srcoff, int slot, bool aligned)
554static void gen_vreg_store(DisasContext *ctx, TCGv EA, intptr_t srcoff,
555 int slot, bool aligned)
556{
557 intptr_t dstoff = offsetof(CPUHexagonState, vstore[slot].data);
558 intptr_t maskoff = offsetof(CPUHexagonState, vstore[slot].mask);
559
556{
557 intptr_t dstoff = offsetof(CPUHexagonState, vstore[slot].data);
558 intptr_t maskoff = offsetof(CPUHexagonState, vstore[slot].mask);
559
560 if (is_gather_store_insn(insn, pkt)) {
560 if (is_gather_store_insn(ctx)) {
561 TCGv sl = tcg_constant_tl(slot);
562 gen_helper_gather_store(cpu_env, EA, sl);
563 return;
564 }
565
566 tcg_gen_movi_tl(hex_vstore_pending[slot], 1);
567 if (aligned) {
568 tcg_gen_andi_tl(hex_vstore_addr[slot], EA,

--- 69 unchanged lines hidden ---
561 TCGv sl = tcg_constant_tl(slot);
562 gen_helper_gather_store(cpu_env, EA, sl);
563 return;
564 }
565
566 tcg_gen_movi_tl(hex_vstore_pending[slot], 1);
567 if (aligned) {
568 tcg_gen_andi_tl(hex_vstore_addr[slot], EA,

--- 69 unchanged lines hidden ---