[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v1 17/23] s390x/tcg: Implement VECTOR FP PERFORM
From: |
David Hildenbrand |
Subject: |
Re: [Qemu-devel] [PATCH v1 17/23] s390x/tcg: Implement VECTOR FP PERFORM SIGN OPERATION |
Date: |
Fri, 31 May 2019 20:05:51 +0200 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.6.1 |
On 31.05.19 19:48, Richard Henderson wrote:
> On 5/31/19 5:44 AM, David Hildenbrand wrote:
>> +static DisasJumpType op_vfpso(DisasContext *s, DisasOps *o)
>> +{
>> + const uint8_t fpf = get_field(s->fields, m3);
>> + const uint8_t m4 = get_field(s->fields, m4);
>> + const uint8_t m5 = get_field(s->fields, m5);
>> + const bool se = extract32(m4, 3, 1);
>> + TCGv_i64 tmp;
>> + int i;
>> +
>> + if (fpf != FPF_LONG || extract32(m4, 0, 3) || m5 > 2) {
>> + gen_program_exception(s, PGM_SPECIFICATION);
>> + return DISAS_NORETURN;
>> + }
>> +
>> + tmp = tcg_temp_new_i64();
>> + for (i = 0; i < 2; i++) {
>> + read_vec_element_i64(tmp, get_field(s->fields, v2), i, ES_64);
>> +
>> + switch (m5) {
>> + case 0:
>> + /* sign bit is inverted (complement) */
>> + tcg_gen_xori_i64(tmp, tmp, 1ull << 63);
>> + break;
>> + case 1:
>> + /* sign bit is set to one (negative) */
>> + tcg_gen_ori_i64(tmp, tmp, 1ull << 63);
>> + break;
>> + case 2:
>> + /* sign bit is set to zero (positive) */
>> + tcg_gen_andi_i64(tmp, tmp, (1ull << 63) - 1);
>> + break;
>> + }
>> +
>> + write_vec_element_i64(tmp, get_field(s->fields, v1), i, ES_64);
>> + if (se) {
>> + break;
>> + }
>> + }
>> + tcg_temp_free_i64(tmp);
>> + return DISAS_NEXT;
>> +}
>
> Better to use tcg_gen_gvec_{and,xor,or}i to do all of the elements at once.
> Won't work for FPF_EXTENDED, but much better for FPF_SINGLE, once they're
> supported.
>
How could I miss that :)
Thanks!
--
Thanks,
David / dhildenb
- Re: [Qemu-devel] [PATCH v1 13/23] s390x/tcg: Implement VECTOR LOAD LENGTHENED, (continued)
- [Qemu-devel] [PATCH v1 14/23] s390x/tcg: Implement VECTOR LOAD ROUNDED, David Hildenbrand, 2019/05/31
- [Qemu-devel] [PATCH v1 15/23] s390x/tcg: Implement VECTOR FP MULTIPLY, David Hildenbrand, 2019/05/31
- [Qemu-devel] [PATCH v1 16/23] s390x/tcg: Implement VECTOR FP MULTIPLY AND (ADD|SUBTRACT), David Hildenbrand, 2019/05/31
- [Qemu-devel] [PATCH v1 17/23] s390x/tcg: Implement VECTOR FP PERFORM SIGN OPERATION, David Hildenbrand, 2019/05/31
- [Qemu-devel] [PATCH v1 18/23] s390x/tcg: Implement VECTOR FP SQUARE ROOT, David Hildenbrand, 2019/05/31
- [Qemu-devel] [PATCH v1 19/23] s390x/tcg: Implement VECTOR FP SUBTRACT, David Hildenbrand, 2019/05/31
- [Qemu-devel] [PATCH v1 20/23] s390x/tcg: Implement VECTOR FP TEST DATA CLASS IMMEDIATE, David Hildenbrand, 2019/05/31
- [Qemu-devel] [PATCH v1 23/23] s390x: Bump the "qemu" CPU model up to a stripped-down z13, David Hildenbrand, 2019/05/31