https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110201

            Bug ID: 110201
           Summary: RISC-V: __builtin_riscv_sm4ks and
                    __builtin_riscv_sm4ed produce invalid assembly
           Product: gcc
           Version: 14.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: target
          Assignee: unassigned at gcc dot gnu.org
          Reporter: craig.topper at gmail dot com
  Target Milestone: ---

The __builtin_riscv_sm4ks and __builtin_riscv_sm4ed builtins don't enforce that
the byte select should be an immediate. if an immediate provided they still use
a register.

int32_t foo1(int32_t rs1, int32_t rs2, int bs)
{
    return __builtin_riscv_sm4ks(rs1,rs2,bs);
}

int32_t foo2(int32_t rs1, int32_t rs2, int bs)
{
    return __builtin_riscv_sm4ed(rs1,rs2,bs);
}

int32_t foo3(int32_t rs1, int32_t rs2, int bs)
{
    return __builtin_riscv_sm4ks(rs1,rs2,0);
}

int32_t foo4(int32_t rs1, int32_t rs2, int bs)
{
    return __builtin_riscv_sm4ed(rs1,rs2,0);
}

https://godbolt.org/z/jadKva9M9

Reply via email to