The imm operand of some instructions are not defined accurately in td.
This is a small patch to correct these definitions.
Details
- Reviewers
steven.zhang jsji shchenz qiucf nemanjai - Group Reviewers
Restricted Project - Commits
- rG49599cb1a20c: [PowerPC] Correct the bit-width definition for some imm operand in td.
Diff Detail
- Repository
- rG LLVM Github Monorepo
Unit Tests
Time | Test | |
---|---|---|
360 ms | linux > HWAddressSanitizer-x86_64.TestCases::sizes.cpp |
Event Timeline
No, asm only. But if you know of a user for them and/or have the time to add them, we should match the ones GCC provided (https://gcc.gnu.org/onlinedocs/gcc-10.2.0/gcc/Basic-PowerPC-Built-in-Functions-Available-on-ISA-3_002e0.html#Basic-PowerPC-Built-in-Functions-Available-on-ISA-3_002e0):
long long __builtin_darn (void); long long __builtin_darn_raw (void); int __builtin_darn_32 (void);
llvm/lib/Target/PowerPC/PPCInstrInfo.td | ||
---|---|---|
1900 | Changed in ISA 3.1 to 3 bits. Bit 8 was reserved before and a value larger than 0b11 had no meaning, so specifying it as 3 bits should be fine. | |
2435 | I agree. The instruction format only allows 2 bits in the encoding here. The extra values added in ISA3.0 do not appear to have been used anywhere as doing so would have caused errors. |
This LGTM now as we have posted the follow up patch https://reviews.llvm.org/D92465 for darn intrinsic Nemanjai mentioned. But please hold on for several days to see if @nemanjai has more comments.
L is two bits?