Skip to content

Commit eb402d9

Browse files
committed
Minor and aesthetic changes based on PR comments
1 parent e63d8ff commit eb402d9

File tree

3 files changed

+56
-32
lines changed

3 files changed

+56
-32
lines changed

llvm/lib/Target/AArch64/AArch64InstrInfo.td

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5680,11 +5680,14 @@ def : Pat<(v2i64 (bswap (v2i64 V128:$Rn))),
56805680
(v2i64 (REV64v16i8 (v2i64 V128:$Rn)))>;
56815681

56825682
// Patterns for funnel shifts to be matched to equivalent REV instructions
5683-
def : Pat<(v2i64 (or (v2i64 (AArch64vshl (v2i64 V128:$Rn), (i32 32))), (v2i64 (AArch64vlshr (v2i64 V128:$Rn), (i32 32))))),
5683+
def : Pat<(v2i64 (or (v2i64 (AArch64vshl (v2i64 V128:$Rn), (i32 32))),
5684+
(v2i64 (AArch64vlshr (v2i64 V128:$Rn), (i32 32))))),
56845685
(v2i64 (REV64v4i32 (v2i64 V128:$Rn)))>;
5685-
def : Pat<(v4i32 (or (v4i32 (AArch64vshl (v4i32 V128:$Rn), (i32 16))), (v4i32 (AArch64vlshr (v4i32 V128:$Rn), (i32 16))))),
5686+
def : Pat<(v4i32 (or (v4i32 (AArch64vshl (v4i32 V128:$Rn), (i32 16))),
5687+
(v4i32 (AArch64vlshr (v4i32 V128:$Rn), (i32 16))))),
56865688
(v4i32 (REV32v8i16 (v4i32 V128:$Rn)))>;
5687-
def : Pat<(v2i32 (or (v2i32 (AArch64vshl (v2i32 V64:$Rn), (i32 16))), (v2i32 (AArch64vlshr (v2i32 V64:$Rn), (i32 16))))),
5689+
def : Pat<(v2i32 (or (v2i32 (AArch64vshl (v2i32 V64:$Rn), (i32 16))),
5690+
(v2i32 (AArch64vlshr (v2i32 V64:$Rn), (i32 16))))),
56885691
(v2i32 (REV32v4i16 (v2i32 V64:$Rn)))>;
56895692

56905693
//===----------------------------------------------------------------------===//

llvm/test/CodeGen/AArch64/aarch64-fshl-rev.ll

Lines changed: 0 additions & 29 deletions
This file was deleted.

llvm/test/CodeGen/AArch64/fsh.ll

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4506,3 +4506,53 @@ entry:
45064506
%d = call <2 x i128> @llvm.fshr(<2 x i128> %a, <2 x i128> %b, <2 x i128> <i128 3, i128 3>)
45074507
ret <2 x i128> %d
45084508
}
4509+
4510+
4511+
4512+
define <2 x i64> @fhsl_to_rev2i64(<2 x i64> %r) {
4513+
; CHECK-SD-LABEL: fhsl_to_rev2i64:
4514+
; CHECK-SD: // %bb.0:
4515+
; CHECK-SD-NEXT: rev64 v0.4s, v0.4s
4516+
; CHECK-SD-NEXT: ret
4517+
;
4518+
; CHECK-GI-LABEL: fhsl_to_rev2i64:
4519+
; CHECK-GI: // %bb.0:
4520+
; CHECK-GI-NEXT: shl v1.2d, v0.2d, #32
4521+
; CHECK-GI-NEXT: ushr v0.2d, v0.2d, #32
4522+
; CHECK-GI-NEXT: orr v0.16b, v1.16b, v0.16b
4523+
; CHECK-GI-NEXT: ret
4524+
%or = tail call <2 x i64> @llvm.fshl.v2i64(<2 x i64> %r, <2 x i64> %r, <2 x i64> splat (i64 32))
4525+
ret <2 x i64> %or
4526+
}
4527+
4528+
define <4 x i32> @fshl_to_rev4i32(<4 x i32> %r) {
4529+
; CHECK-SD-LABEL: fshl_to_rev4i32:
4530+
; CHECK-SD: // %bb.0:
4531+
; CHECK-SD-NEXT: rev32 v0.8h, v0.8h
4532+
; CHECK-SD-NEXT: ret
4533+
;
4534+
; CHECK-GI-LABEL: fshl_to_rev4i32:
4535+
; CHECK-GI: // %bb.0:
4536+
; CHECK-GI-NEXT: shl v1.4s, v0.4s, #16
4537+
; CHECK-GI-NEXT: ushr v0.4s, v0.4s, #16
4538+
; CHECK-GI-NEXT: orr v0.16b, v1.16b, v0.16b
4539+
; CHECK-GI-NEXT: ret
4540+
%or = tail call <4 x i32> @llvm.fshl.v4i32(<4 x i32> %r, <4 x i32> %r, <4 x i32> splat (i32 16))
4541+
ret <4 x i32> %or
4542+
}
4543+
4544+
define <2 x i32> @fshl_to_rev2i32(<2 x i32> %r) {
4545+
; CHECK-SD-LABEL: fshl_to_rev2i32:
4546+
; CHECK-SD: // %bb.0:
4547+
; CHECK-SD-NEXT: rev32 v0.4h, v0.4h
4548+
; CHECK-SD-NEXT: ret
4549+
;
4550+
; CHECK-GI-LABEL: fshl_to_rev2i32:
4551+
; CHECK-GI: // %bb.0:
4552+
; CHECK-GI-NEXT: shl v1.2s, v0.2s, #16
4553+
; CHECK-GI-NEXT: ushr v0.2s, v0.2s, #16
4554+
; CHECK-GI-NEXT: orr v0.8b, v1.8b, v0.8b
4555+
; CHECK-GI-NEXT: ret
4556+
%or = tail call <2 x i32> @llvm.fshl.v2i32(<2 x i32> %r, <2 x i32> %r, <2 x i32> splat (i32 16))
4557+
ret <2 x i32> %or
4558+
}

0 commit comments

Comments
 (0)