https://gcc.gnu.org/bugzilla/show_bug.cgi?id=124137
--- Comment #14 from Richard Biener <rguenth at gcc dot gnu.org> ---
inline int &GetErrorRef() {
thread_local int err;
return err;
}
int SetError_err;
bool isREG___trans_tmp_4;
struct Operand {
int : 6;
int kind_ : 10;
int bit_ : 14;
protected:
int : 11;
public:
bool isREG(int bit) {
isREG___trans_tmp_4 = kind_ && bit_ & bit;
return isREG___trans_tmp_4;
}
int getBit() { return bit_; }
};
struct Reg : Operand {
} index_, fp8_to_f16_upconvert_to_vnni_reg_data;
enum { i32e = 4 };
struct RegExp {
RegExp(Reg &r) {
if (r.isREG(i32e))
GetErrorRef() = SetError_err;
if (r.getBit())
index_ = r;
}
};
struct X {
void operator[](RegExp);
} ptr;
void jit_brgemm_amx_uker_base_tfp8_to_f16_upconvert_to_vnni(Reg reg_buf) {
RegExp __trans_tmp_3 = fp8_to_f16_upconvert_to_vnni_reg_data;
ptr[reg_buf];
}