-
Notifications
You must be signed in to change notification settings - Fork 12
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Generic][AIE2] Combiner for shufflevectors that use build vector #129
base: vvandebe.vshuffle.impl
Are you sure you want to change the base?
Changes from 1 commit
798f942
0d0489b
2a44a46
898de6d
59e90e2
70eb536
f2d4bb6
dd2555b
4836f6a
de8762a
b4aca80
84f3995
fee2d99
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -295,5 +295,5 @@ def AArch64PostLegalizerCombiner | |
ptr_add_immed_chain, overlapping_and, | ||
split_store_zero_128, undef_combines, | ||
select_to_minmax, or_to_bsp, combine_concat_vector, | ||
commute_constant_to_rhs]> { | ||
commute_constant_to_rhs, shufflevector_merge]> { | ||
} | ||
Comment on lines
297
to
299
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This is needed since some ARM64 tests relies on the legalizer changing the inputs of the shufflevector and if you don't run them afterwards you get worse code. |
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -8,13 +8,18 @@ declare i32 @llvm.aarch64.neon.uaddv.i32.v4i32(<4 x i32>) #0 | |
define i32 @bar() { | ||
; CHECK-LABEL: bar: | ||
; CHECK: ; %bb.0: ; %bb | ||
; CHECK-NEXT: movi.2d v0, #0000000000000000 | ||
; CHECK-NEXT: mov b1, v0[1] | ||
; CHECK-NEXT: mov b2, v0[2] | ||
; CHECK-NEXT: mov b3, v0[3] | ||
; CHECK-NEXT: mov.h v0[1], v1[0] | ||
; CHECK-NEXT: mov w8, #0 ; =0x0 | ||
; CHECK-NEXT: fmov s0, w8 | ||
; CHECK-NEXT: mov.16b v1, v0 | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Add copyright header! |
||
; CHECK-NEXT: mov.b v1[1], v0[0] | ||
; CHECK-NEXT: mov.b v1[2], v0[0] | ||
; CHECK-NEXT: mov.b v1[3], v0[0] | ||
; CHECK-NEXT: mov b0, v1[1] | ||
; CHECK-NEXT: mov b2, v1[2] | ||
; CHECK-NEXT: mov b3, v1[3] | ||
; CHECK-NEXT: mov.h v1[1], v0[0] | ||
; CHECK-NEXT: mov.h v2[1], v3[0] | ||
; CHECK-NEXT: ushll.4s v0, v0, #0 | ||
; CHECK-NEXT: ushll.4s v0, v1, #0 | ||
; CHECK-NEXT: ushll.4s v1, v2, #0 | ||
; CHECK-NEXT: mov.d v0[1], v1[0] | ||
; CHECK-NEXT: movi.4s v1, #1 | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
A recent move in LLVM is that you shouldn't use
wip_match_opcode
anymore since it slows down compilation.https://llvm.org/docs/GlobalISel/MIRPatterns.html#gallery