Skip to content

Commit b10721e

Browse files
committed
[AArch64] A few extra rshrn intrinsic tests. NFC
1 parent 174cd61 commit b10721e

File tree

1 file changed

+43
-0
lines changed

1 file changed

+43
-0
lines changed

llvm/test/CodeGen/AArch64/arm64-vshift.ll

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3528,4 +3528,47 @@ entry:
35283528
ret void
35293529
}
35303530

3531+
define <4 x i32> @sext_rshrn(<4 x i32> noundef %a) {
3532+
; CHECK-LABEL: sext_rshrn:
3533+
; CHECK: // %bb.0: // %entry
3534+
; CHECK-NEXT: movi.4s v1, #16, lsl #8
3535+
; CHECK-NEXT: add.4s v0, v0, v1
3536+
; CHECK-NEXT: ushr.4s v0, v0, #13
3537+
; CHECK-NEXT: shl.4s v0, v0, #16
3538+
; CHECK-NEXT: sshr.4s v0, v0, #16
3539+
; CHECK-NEXT: ret
3540+
entry:
3541+
%vrshrn_n1 = tail call <4 x i16> @llvm.aarch64.neon.rshrn.v4i16(<4 x i32> %a, i32 13)
3542+
%vmovl.i = sext <4 x i16> %vrshrn_n1 to <4 x i32>
3543+
ret <4 x i32> %vmovl.i
3544+
}
3545+
3546+
define <4 x i32> @zext_rshrn(<4 x i32> noundef %a) {
3547+
; CHECK-LABEL: zext_rshrn:
3548+
; CHECK: // %bb.0: // %entry
3549+
; CHECK-NEXT: movi.4s v1, #16, lsl #8
3550+
; CHECK-NEXT: add.4s v0, v0, v1
3551+
; CHECK-NEXT: ushr.4s v0, v0, #13
3552+
; CHECK-NEXT: bic.4s v0, #7, lsl #16
3553+
; CHECK-NEXT: ret
3554+
entry:
3555+
%vrshrn_n1 = tail call <4 x i16> @llvm.aarch64.neon.rshrn.v4i16(<4 x i32> %a, i32 13)
3556+
%vmovl.i = zext <4 x i16> %vrshrn_n1 to <4 x i32>
3557+
ret <4 x i32> %vmovl.i
3558+
}
3559+
3560+
define <4 x i16> @mul_rshrn(<4 x i32> noundef %a) {
3561+
; CHECK-LABEL: mul_rshrn:
3562+
; CHECK: // %bb.0: // %entry
3563+
; CHECK-NEXT: mov w8, #4099 // =0x1003
3564+
; CHECK-NEXT: dup.4s v1, w8
3565+
; CHECK-NEXT: add.4s v0, v0, v1
3566+
; CHECK-NEXT: shrn.4h v0, v0, #13
3567+
; CHECK-NEXT: ret
3568+
entry:
3569+
%b = add <4 x i32> %a, <i32 3, i32 3, i32 3, i32 3>
3570+
%vrshrn_n1 = tail call <4 x i16> @llvm.aarch64.neon.rshrn.v4i16(<4 x i32> %b, i32 13)
3571+
ret <4 x i16> %vrshrn_n1
3572+
}
3573+
35313574
declare <2 x i64> @llvm.aarch64.neon.addp.v2i64(<2 x i64>, <2 x i64>)

0 commit comments

Comments
 (0)