Lines Matching refs:fau
48 fau_state_buffer(struct fau_state *fau, bi_index idx)
50 for (unsigned i = 0; i < ARRAY_SIZE(fau->buffer); ++i) {
51 if (bi_is_word_equiv(fau->buffer[i], idx))
53 else if (bi_is_null(fau->buffer[i])) {
54 fau->buffer[i] = idx;
63 fau_state_uniform(struct fau_state *fau, bi_index idx)
70 if (fau->uniform_slot < 0)
71 fau->uniform_slot = slot;
73 return fau->uniform_slot == slot;
77 fau_is_special(enum bir_fau fau)
79 return !(fau & (BIR_FAU_UNIFORM | BIR_FAU_IMMEDIATE));
83 fau_state_special(struct fau_state *fau, bi_index idx)
85 for (unsigned i = 0; i < ARRAY_SIZE(fau->buffer); ++i) {
86 bi_index buf = fau->buffer[i];
97 valid_src(struct fau_state *fau, unsigned fau_page, bi_index src)
103 valid &= fau_state_buffer(fau, src);
106 valid &= fau_state_uniform(fau, src);
108 valid &= fau_state_special(fau, src);
117 struct fau_state fau = { .uniform_slot = -1 };
121 valid &= valid_src(&fau, fau_page, I->src[s]);
130 struct fau_state fau = { .uniform_slot = -1 };
134 struct fau_state push = fau;
137 if (!valid_src(&fau, fau_page, src)) {
144 fau = push;