[clang] [llvm] [SystemZ] Support i128 as legal type in VRs (PR #74625)
Ulrich Weigand via cfe-commits
cfe-commits at lists.llvm.org
Thu Dec 14 14:18:44 PST 2023
uweigand wrote:
> I have looked through the changes and made some comments inline.
Thanks for the review!
> Commenting:
Fixed, thanks!
> I happened to notice some cases with room for improvement:
Good catch. I've not addressed these right now, this can be done as a follow-up. (The memory case is a bit tedious due to TableGen pattern limitations ...)
> As a side question: I forgot why we can get CCMask '5' here: it seems it should be CCMASK_CMP_NE ('6'), if we reverse the LOC operation..?
No, 5 is correct here. Reversing XORs the mask with the set of valid bits, so we have 13 ^ 8 == 5.
Looking at the VTM instruction, we have the following valid condition codes (making up the 13, i.e. 0, 1, or 3):
0 - Selected bits all zeros; or all mask bits zero
1 - Selected bits a mix of zeros and ones
2 - n/a
3 - Selected bits all ones
The original mask is 8, i.e. condition code 0 ("selected bits all zeros"). Reversing this needs to check for condition codes 1 or 3, i.e. mask 5 ("selected bits a mix of zeros and ones" or "selected bits all ones").
https://github.com/llvm/llvm-project/pull/74625
More information about the cfe-commits
mailing list