[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v11 11/26] target/loongarch: Add floating point comparison in
From: |
Richard Henderson |
Subject: |
Re: [PATCH v11 11/26] target/loongarch: Add floating point comparison instruction translation |
Date: |
Tue, 30 Nov 2021 09:37:45 +0100 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.14.0 |
On 11/30/21 9:22 AM, gaosong wrote:
On 2021/11/20 下午5:02, Richard Henderson wrote:
+#define FCMP_LT 0x0001 /* fp0 < fp1 */
+#define FCMP_EQ 0x0010 /* fp0 = fp1 */
+#define FCMP_UN 0x0100 /* unordered */
+#define FCMP_GT 0x1000 /* fp0 > fp1 */
Any reason why these bits are not sequential?
...
We should like:
#define FCMP_LT 0x1 /* fp0 < fp1 */
#define FCMP_EQ 0x2 /* fp0 = fp1 */
#define FCMP_UN 0x3 /* unordered */
#define FCMP_GT 0x4 /* fp0 > fp1 */
static uint32_t get_fcmp_flags(int cond)
{
uint32_t flags = 0;
if (cond & 0x1) {
flags |= FCMP_LT;
}
if (cond & 0x2) {
flags |= FCMP_EQ;
}
if (cond & 0x3) {
flags |= FCMP_UN;
}
if (cond & 0x4) {
flags |= FCMP_GT;
}
return flags;
}
Is this right?
No. You're not converting anything here.
I think you should simply replace "0x" with "0b" so that the bits of FCMP are more
compact. I assume that's what you were originally thinking.
#define FCMP_LT 0b0001 /* fp0 < fp1 */
#define FCMP_EQ 0b0010 /* fp0 = fp1 */
#define FCMP_UN 0b0100 /* unordered */
#define FCMP_GT 0b1000 /* fp0 > fp1 */
or identically with the form (1 << 0), (1 << 1), etc.
r~
- [PATCH v11 06/26] target/loongarch: Add fixed point bit instruction translation, (continued)
- [PATCH v11 06/26] target/loongarch: Add fixed point bit instruction translation, Song Gao, 2021/11/19
- [PATCH v11 07/26] target/loongarch: Add fixed point load/store instruction translation, Song Gao, 2021/11/19
- [PATCH v11 02/26] target/loongarch: Add core definition, Song Gao, 2021/11/19
- [PATCH v11 03/26] target/loongarch: Add main translation routines, Song Gao, 2021/11/19
- [PATCH v11 11/26] target/loongarch: Add floating point comparison instruction translation, Song Gao, 2021/11/19
[PATCH v11 10/26] target/loongarch: Add floating point arithmetic instruction translation, Song Gao, 2021/11/19
[PATCH v11 13/26] target/loongarch: Add floating point move instruction translation, Song Gao, 2021/11/19
[PATCH v11 14/26] target/loongarch: Add floating point load/store instruction translation, Song Gao, 2021/11/19
[PATCH v11 15/26] target/loongarch: Add branch instruction translation, Song Gao, 2021/11/19
[PATCH v11 20/26] linux-user: Add LoongArch elf support, Song Gao, 2021/11/19