These require a lot more handholding in the IR than we can deal with at
this stage; we need to restrict ourselves to frcp/sqrt.
Signed-off-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4470>
switch (op) {
case BI_SPECIAL_FRCP: return "frcp";
case BI_SPECIAL_FRSQ: return "frsq";
- case BI_SPECIAL_FATAN: return "fatan";
- case BI_SPECIAL_FSIN: return "fsin";
- case BI_SPECIAL_FCOS: return "fcos";
- case BI_SPECIAL_FEXP: return "fexp";
- case BI_SPECIAL_FLOG2: return "flog2";
- case BI_SPECIAL_FLOGE: return "flog";
default: return "invalid";
}
}
case nir_op_frcp:
case nir_op_frsq:
- case nir_op_fsin:
- case nir_op_fcos:
return BI_SPECIAL;
default:
case nir_op_frsq:
alu.op.special = BI_SPECIAL_FRSQ;
break;
- case nir_op_fsin:
- alu.op.special = BI_SPECIAL_FSIN;
- break;
- case nir_op_fcos:
- alu.op.special = BI_SPECIAL_FCOS;
- break;
BI_CASE_CMP(nir_op_flt)
BI_CASE_CMP(nir_op_ilt)
BI_CASE_CMP(nir_op_fge)
enum bi_special_op {
BI_SPECIAL_FRCP,
BI_SPECIAL_FRSQ,
- BI_SPECIAL_FATAN,
- BI_SPECIAL_FSIN,
- BI_SPECIAL_FCOS,
- BI_SPECIAL_FEXP,
- BI_SPECIAL_FLOG2,
- BI_SPECIAL_FLOGE
};
typedef struct {