llvm/llvm/test/Transforms/DCE/intrinsics-loongarch.ll

; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 5
; RUN: opt -S < %s -passes=dce  | FileCheck %s

declare <16 x i8> @llvm.loongarch.lsx.vld(ptr, i32)
declare <16 x i8> @llvm.loongarch.lsx.vldx(ptr, i64)
declare <16 x i8> @llvm.loongarch.lsx.vldrepl.b(ptr, i32)
declare <8 x i16> @llvm.loongarch.lsx.vldrepl.h(ptr, i32)
declare <4 x i32> @llvm.loongarch.lsx.vldrepl.w(ptr, i32)
declare <2 x i64> @llvm.loongarch.lsx.vldrepl.d(ptr, i32)

declare <32 x i8> @llvm.loongarch.lasx.xvld(ptr, i32)
declare <32 x i8> @llvm.loongarch.lasx.xvldx(ptr, i64)
declare <32 x i8> @llvm.loongarch.lasx.xvldrepl.b(ptr, i32)
declare <16 x i16> @llvm.loongarch.lasx.xvldrepl.h(ptr, i32)
declare <8 x i32> @llvm.loongarch.lasx.xvldrepl.w(ptr, i32)
declare <4 x i64> @llvm.loongarch.lasx.xvldrepl.d(ptr, i32)

define void @test_loongarch_lsx_vld(ptr %a) {
; CHECK-LABEL: define void @test_loongarch_lsx_vld(
; CHECK-SAME: ptr [[A:%.*]]) {
; CHECK-NEXT:    ret void
;
  %v = call <16 x i8> @llvm.loongarch.lsx.vld(ptr %a, i32 8)
  ret void
}

define void @test_loongarch_lsx_vldx(ptr %a, i64 %b) {
; CHECK-LABEL: define void @test_loongarch_lsx_vldx(
; CHECK-SAME: ptr [[A:%.*]], i64 [[B:%.*]]) {
; CHECK-NEXT:    ret void
;
  %v = call <16 x i8> @llvm.loongarch.lsx.vldx(ptr %a, i64 %b)
  ret void
}

define void @test_loongarch_lsx_vldrepl_b(ptr %a) {
; CHECK-LABEL: define void @test_loongarch_lsx_vldrepl_b(
; CHECK-SAME: ptr [[A:%.*]]) {
; CHECK-NEXT:    ret void
;
  %v = call <16 x i8> @llvm.loongarch.lsx.vldrepl.b(ptr %a, i32 12)
  ret void
}

define void @test_loongarch_lsx_vldrepl_h(ptr %a) {
; CHECK-LABEL: define void @test_loongarch_lsx_vldrepl_h(
; CHECK-SAME: ptr [[A:%.*]]) {
; CHECK-NEXT:    ret void
;
  %v = call <8 x i16> @llvm.loongarch.lsx.vldrepl.h(ptr %a, i32 12)
  ret void
}

define void @test_loongarch_lsx_vldrepl_w(ptr %a) {
; CHECK-LABEL: define void @test_loongarch_lsx_vldrepl_w(
; CHECK-SAME: ptr [[A:%.*]]) {
; CHECK-NEXT:    ret void
;
  %v = call <4 x i32> @llvm.loongarch.lsx.vldrepl.w(ptr %a, i32 4)
  ret void
}

define void @test_loongarch_lsx_vldrepl_d(ptr %a) {
; CHECK-LABEL: define void @test_loongarch_lsx_vldrepl_d(
; CHECK-SAME: ptr [[A:%.*]]) {
; CHECK-NEXT:    ret void
;
  %v = call <2 x i64> @llvm.loongarch.lsx.vldrepl.d(ptr %a, i32 4)
  ret void
}

define void @test_loongarch_lasx_xvld(ptr %a) {
; CHECK-LABEL: define void @test_loongarch_lasx_xvld(
; CHECK-SAME: ptr [[A:%.*]]) {
; CHECK-NEXT:    ret void
;
  %v = call <32 x i8> @llvm.loongarch.lasx.xvld(ptr %a, i32 4)
  ret void
}

define void @test_loongarch_lasx_xvldx(ptr %a, i64 %b) {
; CHECK-LABEL: define void @test_loongarch_lasx_xvldx(
; CHECK-SAME: ptr [[A:%.*]], i64 [[B:%.*]]) {
; CHECK-NEXT:    ret void
;
  %v = call <32 x i8> @llvm.loongarch.lasx.xvldx(ptr %a, i64 %b)
  ret void
}

define void @test_loongarch_lasx_xvldrepl_b(ptr %a) {
; CHECK-LABEL: define void @test_loongarch_lasx_xvldrepl_b(
; CHECK-SAME: ptr [[A:%.*]]) {
; CHECK-NEXT:    ret void
;
  %v = call <32 x i8> @llvm.loongarch.lasx.xvldrepl.b(ptr %a, i32 4)
  ret void
}

define void @test_loongarch_lasx_xvldrepl_h(ptr %a) {
; CHECK-LABEL: define void @test_loongarch_lasx_xvldrepl_h(
; CHECK-SAME: ptr [[A:%.*]]) {
; CHECK-NEXT:    ret void
;
  %v = call <16 x i16> @llvm.loongarch.lasx.xvldrepl.h(ptr %a, i32 4)
  ret void
}

define void @test_loongarch_lasx_xvldrepl_w(ptr %a) {
; CHECK-LABEL: define void @test_loongarch_lasx_xvldrepl_w(
; CHECK-SAME: ptr [[A:%.*]]) {
; CHECK-NEXT:    ret void
;
  %v = call <8 x i32> @llvm.loongarch.lasx.xvldrepl.w(ptr %a, i32 4)
  ret void
}

define void @test_loongarch_lasx_xvldrepl_d(ptr %a) {
; CHECK-LABEL: define void @test_loongarch_lasx_xvldrepl_d(
; CHECK-SAME: ptr [[A:%.*]]) {
; CHECK-NEXT:    ret void
;
  %v = call <4 x i64> @llvm.loongarch.lasx.xvldrepl.d(ptr %a, i32 4)
  ret void
}