ret i16 %D
}
+define <2 x i16> @test7_vector(<2 x i32> %A) {
+; CHECK-LABEL: @test7_vector(
+; CHECK-NEXT: ret <2 x i16> undef
+;
+ %B = tail call <2 x i32> @llvm.bswap.v2i32(<2 x i32> %A) nounwind
+ %C = trunc <2 x i32> %B to <2 x i16>
+ %D = tail call <2 x i16> @llvm.bswap.v2i16(<2 x i16> %C) nounwind
+ ret <2 x i16> %D
+}
+
define i16 @test8(i64 %A) {
; CHECK-LABEL: @test8(
; CHECK-NEXT: [[TMP1:%.*]] = lshr i64 [[A:%.*]], 48
ret i16 %D
}
+define <2 x i16> @test8_vector(<2 x i64> %A) {
+; CHECK-LABEL: @test8_vector(
+; CHECK-NEXT: ret <2 x i16> undef
+;
+ %B = tail call <2 x i64> @llvm.bswap.v2i64(<2 x i64> %A) nounwind
+ %C = trunc <2 x i64> %B to <2 x i16>
+ %D = tail call <2 x i16> @llvm.bswap.v2i16(<2 x i16> %C) nounwind
+ ret <2 x i16> %D
+}
+
; Misc: Fold bswap(undef) to undef.
define i64 @foo() {
; CHECK-LABEL: @foo(
declare i16 @llvm.bswap.i16(i16)
declare i32 @llvm.bswap.i32(i32)
declare i64 @llvm.bswap.i64(i64)
+declare <2 x i16> @llvm.bswap.v2i16(<2 x i16>)
declare <2 x i32> @llvm.bswap.v2i32(<2 x i32>)
+declare <2 x i64> @llvm.bswap.v2i64(<2 x i64>)