https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107316
Bug ID: 107316 Summary: [aarch64] Init big const value should be improved compare to llvm Product: gcc Version: 13.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c Assignee: unassigned at gcc dot gnu.org Reporter: zhongyunde at huawei dot com Target Milestone: --- test case: https://godbolt.org/z/ahreYnahE ``` int main (int argc, char** argv) { if (lshift_1 (0xaaaa5555aaaa5555ull) != 0ll) abort(); return 0; } ``` * gcc use 4 instructions ``` mov x0, 21845 movk x0, 0xaaaa, lsl 16 movk x0, 0x5555, lsl 32 movk x0, 0xaaaa, lsl 48 ``` * while llvm use 3 instructions: ``` mov x0, #6148914691236517205 movk x0, #43690, lsl #16 movk x0, #43690, lsl #48 ```