Skip to content

Commit 7b43dcd

Browse files
authored
[AArch64] Add disjoint or tests for rshrn and raddhn. NFC (llvm#194252)
These should already be OK, as the os disjoint or connot round up.
1 parent 8efcfc2 commit 7b43dcd

1 file changed

Lines changed: 76 additions & 0 deletions

File tree

llvm/test/CodeGen/AArch64/neon-rshrn.ll

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -894,3 +894,79 @@ entry:
894894
store <1 x i32> %m, ptr %p
895895
ret void
896896
}
897+
898+
899+
define <16 x i8> @or_rshrn_v16i16_7(<16 x i16> %a) {
900+
; CHECK-LABEL: or_rshrn_v16i16_7:
901+
; CHECK: // %bb.0: // %entry
902+
; CHECK-NEXT: shrn v0.8b, v0.8h, #7
903+
; CHECK-NEXT: shrn2 v0.16b, v1.8h, #7
904+
; CHECK-NEXT: ret
905+
entry:
906+
%b = or disjoint <16 x i16> %a, <i16 64, i16 64, i16 64, i16 64, i16 64, i16 64, i16 64, i16 64, i16 64, i16 64, i16 64, i16 64, i16 64, i16 64, i16 64, i16 64>
907+
%s = lshr <16 x i16> %b, <i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7>
908+
%m = trunc <16 x i16> %s to <16 x i8>
909+
ret <16 x i8> %m
910+
}
911+
912+
define <16 x i8> @or_rshrn_v16i16_8(<16 x i16> %a) {
913+
; CHECK-LABEL: or_rshrn_v16i16_8:
914+
; CHECK: // %bb.0: // %entry
915+
; CHECK-NEXT: uzp2 v0.16b, v0.16b, v1.16b
916+
; CHECK-NEXT: ret
917+
entry:
918+
%b = or disjoint <16 x i16> %a, <i16 128, i16 128, i16 128, i16 128, i16 128, i16 128, i16 128, i16 128, i16 128, i16 128, i16 128, i16 128, i16 128, i16 128, i16 128, i16 128>
919+
%s = lshr <16 x i16> %b, <i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8>
920+
%m = trunc <16 x i16> %s to <16 x i8>
921+
ret <16 x i8> %m
922+
}
923+
924+
define <8 x i16> @or_rshrn_v8i32_15(<8 x i32> %a) {
925+
; CHECK-LABEL: or_rshrn_v8i32_15:
926+
; CHECK: // %bb.0: // %entry
927+
; CHECK-NEXT: shrn v0.4h, v0.4s, #15
928+
; CHECK-NEXT: shrn2 v0.8h, v1.4s, #15
929+
; CHECK-NEXT: ret
930+
entry:
931+
%b = or disjoint <8 x i32> %a, <i32 16384, i32 16384, i32 16384, i32 16384, i32 16384, i32 16384, i32 16384, i32 16384>
932+
%s = lshr <8 x i32> %b, <i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15>
933+
%m = trunc <8 x i32> %s to <8 x i16>
934+
ret <8 x i16> %m
935+
}
936+
937+
define <8 x i16> @or_rshrn_v8i32_16(<8 x i32> %a) {
938+
; CHECK-LABEL: or_rshrn_v8i32_16:
939+
; CHECK: // %bb.0: // %entry
940+
; CHECK-NEXT: uzp2 v0.8h, v0.8h, v1.8h
941+
; CHECK-NEXT: ret
942+
entry:
943+
%b = or disjoint <8 x i32> %a, <i32 32768, i32 32768, i32 32768, i32 32768, i32 32768, i32 32768, i32 32768, i32 32768>
944+
%s = lshr <8 x i32> %b, <i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16>
945+
%m = trunc <8 x i32> %s to <8 x i16>
946+
ret <8 x i16> %m
947+
}
948+
949+
define <4 x i32> @or_rshrn_v4i64_31(<4 x i64> %a) {
950+
; CHECK-LABEL: or_rshrn_v4i64_31:
951+
; CHECK: // %bb.0: // %entry
952+
; CHECK-NEXT: shrn v0.2s, v0.2d, #31
953+
; CHECK-NEXT: shrn2 v0.4s, v1.2d, #31
954+
; CHECK-NEXT: ret
955+
entry:
956+
%b = or disjoint <4 x i64> %a, <i64 1073741824, i64 1073741824, i64 1073741824, i64 1073741824>
957+
%s = lshr <4 x i64> %b, <i64 31, i64 31, i64 31, i64 31>
958+
%m = trunc <4 x i64> %s to <4 x i32>
959+
ret <4 x i32> %m
960+
}
961+
962+
define <4 x i32> @or_rshrn_v4i64_32(<4 x i64> %a) {
963+
; CHECK-LABEL: or_rshrn_v4i64_32:
964+
; CHECK: // %bb.0: // %entry
965+
; CHECK-NEXT: uzp2 v0.4s, v0.4s, v1.4s
966+
; CHECK-NEXT: ret
967+
entry:
968+
%b = or disjoint <4 x i64> %a, <i64 2147483648, i64 2147483648, i64 2147483648, i64 2147483648>
969+
%s = lshr <4 x i64> %b, <i64 32, i64 32, i64 32, i64 32>
970+
%m = trunc <4 x i64> %s to <4 x i32>
971+
ret <4 x i32> %m
972+
}

0 commit comments

Comments
 (0)