12ed7db0dSJoe Ellis; NOTE: Assertions have been autogenerated by utils/update_test_checks.py 2b280ee1dSBjorn Pettersson; RUN: opt < %s -passes=instsimplify -S | FileCheck %s 32ed7db0dSJoe Ellis 42ed7db0dSJoe Ellisdefine <16 x i8> @redundant_insert_extract_chain(<16 x i8> %x) { 52ed7db0dSJoe Ellis; CHECK-LABEL: @redundant_insert_extract_chain( 62ed7db0dSJoe Ellis; CHECK-NEXT: ret <16 x i8> [[X:%.*]] 72ed7db0dSJoe Ellis; 8*a83aa33dSBradley Smith %inserted = call <vscale x 32 x i8> @llvm.vector.insert.nxv32i8.v16i8(<vscale x 32 x i8> undef, <16 x i8> %x, i64 0) 9*a83aa33dSBradley Smith %extracted = call <16 x i8> @llvm.vector.extract.v16i8.nxv32i8(<vscale x 32 x i8> %inserted, i64 0) 102ed7db0dSJoe Ellis ret <16 x i8> %extracted 112ed7db0dSJoe Ellis} 122ed7db0dSJoe Ellis 132ed7db0dSJoe Ellisdefine <8 x i8> @non_redundant_insert_extract_chain(<16 x i8> %x) { 142ed7db0dSJoe Ellis; CHECK-LABEL: @non_redundant_insert_extract_chain( 15*a83aa33dSBradley Smith; CHECK-NEXT: [[INSERTED:%.*]] = call <vscale x 32 x i8> @llvm.vector.insert.nxv32i8.v16i8(<vscale x 32 x i8> undef, <16 x i8> [[X:%.*]], i64 0) 16*a83aa33dSBradley Smith; CHECK-NEXT: [[EXTRACTED:%.*]] = call <8 x i8> @llvm.vector.extract.v8i8.nxv32i8(<vscale x 32 x i8> [[INSERTED]], i64 0) 172ed7db0dSJoe Ellis; CHECK-NEXT: ret <8 x i8> [[EXTRACTED]] 182ed7db0dSJoe Ellis; 19*a83aa33dSBradley Smith %inserted = call <vscale x 32 x i8> @llvm.vector.insert.nxv32i8.v16i8(<vscale x 32 x i8> undef, <16 x i8> %x, i64 0) 20*a83aa33dSBradley Smith %extracted = call <8 x i8> @llvm.vector.extract.v8i8.nxv32i8(<vscale x 32 x i8> %inserted, i64 0) 212ed7db0dSJoe Ellis ret <8 x i8> %extracted 222ed7db0dSJoe Ellis} 232ed7db0dSJoe Ellis 24*a83aa33dSBradley Smithdeclare <16 x i8> @llvm.vector.extract.v16i8.nxv32i8(<vscale x 32 x i8>, i64) 25*a83aa33dSBradley Smithdeclare <8 x i8> @llvm.vector.extract.v8i8.nxv32i8(<vscale x 32 x i8>, i64) 26*a83aa33dSBradley Smithdeclare <vscale x 32 x i8> @llvm.vector.insert.nxv32i8.v16i8(<vscale x 32 x i8>, <16 x i8>, i64) 27