; Test the MSA intrinsics that are encoded with the I5 instruction format.
; There are lots of these so this covers those beginning with 'm'

; RUN: llc -march=mips -mattr=+msa,+fp64,+mips32r2 < %s | FileCheck %s
; RUN: llc -march=mipsel -mattr=+msa,+fp64,+mips32r2 < %s | FileCheck %s

@llvm_mips_maxi_s_b_ARG1 = global <16 x i8> <i8 0, i8 1, i8 2, i8 3, i8 4, i8 5, i8 6, i8 7, i8 8, i8 9, i8 10, i8 11, i8 12, i8 13, i8 14, i8 15>, align 16
@llvm_mips_maxi_s_b_RES1 = global <16 x i8> <i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0>, align 16
@llvm_mips_maxi_s_b_RES2 = global <16 x i8> <i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0>, align 16

define void @llvm_mips_maxi_s_b_test() nounwind {
entry:
  %0 = load <16 x i8>, <16 x i8>* @llvm_mips_maxi_s_b_ARG1
  %1 = tail call <16 x i8> @llvm.mips.maxi.s.b(<16 x i8> %0, i32 14)
  store <16 x i8> %1, <16 x i8>* @llvm_mips_maxi_s_b_RES1
  %2 = tail call <16 x i8> @llvm.mips.maxi.s.b(<16 x i8> %0, i32 -14)
  store <16 x i8> %2, <16 x i8>* @llvm_mips_maxi_s_b_RES2
  ret void
}

declare <16 x i8> @llvm.mips.maxi.s.b(<16 x i8>, i32) nounwind

; CHECK: llvm_mips_maxi_s_b_test:
; CHECK: ld.b [[RS:\$w[0-9]+]]
; CHECK: maxi_s.b [[RD1:\$w[0-9]]], [[RS]], 14
; CHECK: st.b [[RD1]]
; CHECK: maxi_s.b [[RD2:\$w[0-9]]], [[RS]], -14
; CHECK: st.b [[RD2]]
; CHECK: .size llvm_mips_maxi_s_b_test
;
@llvm_mips_maxi_s_h_ARG1 = global <8 x i16> <i16 0, i16 1, i16 2, i16 3, i16 4, i16 5, i16 6, i16 7>, align 16
@llvm_mips_maxi_s_h_RES1 = global <8 x i16> <i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0>, align 16
@llvm_mips_maxi_s_h_RES2 = global <8 x i16> <i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0>, align 16

define void @llvm_mips_maxi_s_h_test() nounwind {
entry:
  %0 = load <8 x i16>, <8 x i16>* @llvm_mips_maxi_s_h_ARG1
  %1 = tail call <8 x i16> @llvm.mips.maxi.s.h(<8 x i16> %0, i32 14)
  store <8 x i16> %1, <8 x i16>* @llvm_mips_maxi_s_h_RES1
  %2 = tail call <8 x i16> @llvm.mips.maxi.s.h(<8 x i16> %0, i32 -14)
  store <8 x i16> %2, <8 x i16>* @llvm_mips_maxi_s_h_RES2
  ret void
}

declare <8 x i16> @llvm.mips.maxi.s.h(<8 x i16>, i32) nounwind

; CHECK: llvm_mips_maxi_s_h_test:
; CHECK: ld.h [[RS:\$w[0-9]+]]
; CHECK: maxi_s.h [[RD1:\$w[0-9]]], [[RS]], 14
; CHECK: st.h [[RD1]]
; CHECK: maxi_s.h [[RD2:\$w[0-9]]], [[RS]], -14
; CHECK: st.h [[RD2]]
; CHECK: .size llvm_mips_maxi_s_h_test
;
@llvm_mips_maxi_s_w_ARG1 = global <4 x i32> <i32 0, i32 1, i32 2, i32 3>, align 16
@llvm_mips_maxi_s_w_RES1 = global <4 x i32> <i32 0, i32 0, i32 0, i32 0>, align 16
@llvm_mips_maxi_s_w_RES2 = global <4 x i32> <i32 0, i32 0, i32 0, i32 0>, align 16

define void @llvm_mips_maxi_s_w_test() nounwind {
entry:
  %0 = load <4 x i32>, <4 x i32>* @llvm_mips_maxi_s_w_ARG1
  %1 = tail call <4 x i32> @llvm.mips.maxi.s.w(<4 x i32> %0, i32 14)
  store <4 x i32> %1, <4 x i32>* @llvm_mips_maxi_s_w_RES1
  %2 = tail call <4 x i32> @llvm.mips.maxi.s.w(<4 x i32> %0, i32 -14)
  store <4 x i32> %2, <4 x i32>* @llvm_mips_maxi_s_w_RES2
  ret void
}

declare <4 x i32> @llvm.mips.maxi.s.w(<4 x i32>, i32) nounwind

; CHECK: llvm_mips_maxi_s_w_test:
; CHECK: ld.w [[RS:\$w[0-9]+]]
; CHECK: maxi_s.w [[RD1:\$w[0-9]]], [[RS]], 14
; CHECK: st.w [[RD1]]
; CHECK: maxi_s.w [[RD2:\$w[0-9]]], [[RS]], -14
; CHECK: st.w [[RD2]]
; CHECK: .size llvm_mips_maxi_s_w_test
;
@llvm_mips_maxi_s_d_ARG1 = global <2 x i64> <i64 0, i64 1>, align 16
@llvm_mips_maxi_s_d_RES1 = global <2 x i64> <i64 0, i64 0>, align 16
@llvm_mips_maxi_s_d_RES2 = global <2 x i64> <i64 0, i64 0>, align 16

define void @llvm_mips_maxi_s_d_test() nounwind {
entry:
  %0 = load <2 x i64>, <2 x i64>* @llvm_mips_maxi_s_d_ARG1
  %1 = tail call <2 x i64> @llvm.mips.maxi.s.d(<2 x i64> %0, i32 14)
  store <2 x i64> %1, <2 x i64>* @llvm_mips_maxi_s_d_RES1
  %2 = tail call <2 x i64> @llvm.mips.maxi.s.d(<2 x i64> %0, i32 -14)
  store <2 x i64> %2, <2 x i64>* @llvm_mips_maxi_s_d_RES2
  ret void
}

declare <2 x i64> @llvm.mips.maxi.s.d(<2 x i64>, i32) nounwind

; CHECK: llvm_mips_maxi_s_d_test:
; CHECK: ld.d [[RS:\$w[0-9]+]]
; CHECK: maxi_s.d [[RD1:\$w[0-9]]], [[RS]], 14
; CHECK: st.d [[RD1]]
; CHECK: maxi_s.d [[RD2:\$w[0-9]]], [[RS]], -14
; CHECK: st.d [[RD2]]
; CHECK: .size llvm_mips_maxi_s_d_test
;
@llvm_mips_maxi_u_b_ARG1 = global <16 x i8> <i8 0, i8 1, i8 2, i8 3, i8 4, i8 5, i8 6, i8 7, i8 8, i8 9, i8 10, i8 11, i8 12, i8 13, i8 14, i8 15>, align 16
@llvm_mips_maxi_u_b_RES  = global <16 x i8> <i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0>, align 16

define void @llvm_mips_maxi_u_b_test() nounwind {
entry:
  %0 = load <16 x i8>, <16 x i8>* @llvm_mips_maxi_u_b_ARG1
  %1 = tail call <16 x i8> @llvm.mips.maxi.u.b(<16 x i8> %0, i32 14)
  store <16 x i8> %1, <16 x i8>* @llvm_mips_maxi_u_b_RES
  ret void
}

declare <16 x i8> @llvm.mips.maxi.u.b(<16 x i8>, i32) nounwind

; CHECK: llvm_mips_maxi_u_b_test:
; CHECK: ld.b
; CHECK: maxi_u.b
; CHECK: st.b
; CHECK: .size llvm_mips_maxi_u_b_test
;
@llvm_mips_maxi_u_h_ARG1 = global <8 x i16> <i16 0, i16 1, i16 2, i16 3, i16 4, i16 5, i16 6, i16 7>, align 16
@llvm_mips_maxi_u_h_RES  = global <8 x i16> <i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0>, align 16

define void @llvm_mips_maxi_u_h_test() nounwind {
entry:
  %0 = load <8 x i16>, <8 x i16>* @llvm_mips_maxi_u_h_ARG1
  %1 = tail call <8 x i16> @llvm.mips.maxi.u.h(<8 x i16> %0, i32 14)
  store <8 x i16> %1, <8 x i16>* @llvm_mips_maxi_u_h_RES
  ret void
}

declare <8 x i16> @llvm.mips.maxi.u.h(<8 x i16>, i32) nounwind

; CHECK: llvm_mips_maxi_u_h_test:
; CHECK: ld.h
; CHECK: maxi_u.h
; CHECK: st.h
; CHECK: .size llvm_mips_maxi_u_h_test
;
@llvm_mips_maxi_u_w_ARG1 = global <4 x i32> <i32 0, i32 1, i32 2, i32 3>, align 16
@llvm_mips_maxi_u_w_RES  = global <4 x i32> <i32 0, i32 0, i32 0, i32 0>, align 16

define void @llvm_mips_maxi_u_w_test() nounwind {
entry:
  %0 = load <4 x i32>, <4 x i32>* @llvm_mips_maxi_u_w_ARG1
  %1 = tail call <4 x i32> @llvm.mips.maxi.u.w(<4 x i32> %0, i32 14)
  store <4 x i32> %1, <4 x i32>* @llvm_mips_maxi_u_w_RES
  ret void
}

declare <4 x i32> @llvm.mips.maxi.u.w(<4 x i32>, i32) nounwind

; CHECK: llvm_mips_maxi_u_w_test:
; CHECK: ld.w
; CHECK: maxi_u.w
; CHECK: st.w
; CHECK: .size llvm_mips_maxi_u_w_test
;
@llvm_mips_maxi_u_d_ARG1 = global <2 x i64> <i64 0, i64 1>, align 16
@llvm_mips_maxi_u_d_RES  = global <2 x i64> <i64 0, i64 0>, align 16

define void @llvm_mips_maxi_u_d_test() nounwind {
entry:
  %0 = load <2 x i64>, <2 x i64>* @llvm_mips_maxi_u_d_ARG1
  %1 = tail call <2 x i64> @llvm.mips.maxi.u.d(<2 x i64> %0, i32 14)
  store <2 x i64> %1, <2 x i64>* @llvm_mips_maxi_u_d_RES
  ret void
}

declare <2 x i64> @llvm.mips.maxi.u.d(<2 x i64>, i32) nounwind

; CHECK: llvm_mips_maxi_u_d_test:
; CHECK: ld.d
; CHECK: maxi_u.d
; CHECK: st.d
; CHECK: .size llvm_mips_maxi_u_d_test
;
@llvm_mips_mini_s_b_ARG1 = global <16 x i8> <i8 0, i8 1, i8 2, i8 3, i8 4, i8 5, i8 6, i8 7, i8 8, i8 9, i8 10, i8 11, i8 12, i8 13, i8 14, i8 15>, align 16
@llvm_mips_mini_s_b_RES1 = global <16 x i8> <i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0>, align 16
@llvm_mips_mini_s_b_RES2 = global <16 x i8> <i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0>, align 16

define void @llvm_mips_mini_s_b_test() nounwind {
entry:
  %0 = load <16 x i8>, <16 x i8>* @llvm_mips_mini_s_b_ARG1
  %1 = tail call <16 x i8> @llvm.mips.mini.s.b(<16 x i8> %0, i32 14)
  store <16 x i8> %1, <16 x i8>* @llvm_mips_mini_s_b_RES1
  %2 = tail call <16 x i8> @llvm.mips.mini.s.b(<16 x i8> %0, i32 -14)
  store <16 x i8> %2, <16 x i8>* @llvm_mips_mini_s_b_RES2
  ret void
}

declare <16 x i8> @llvm.mips.mini.s.b(<16 x i8>, i32) nounwind

; CHECK: llvm_mips_mini_s_b_test:
; CHECK: ld.b [[RS:\$w[0-9]+]]
; CHECK: mini_s.b [[RD1:\$w[0-9]]], [[RS]], 14
; CHECK: st.b [[RD1]]
; CHECK: mini_s.b [[RD2:\$w[0-9]]], [[RS]], -14
; CHECK: st.b [[RD2]]
; CHECK: .size llvm_mips_mini_s_b_test
;
@llvm_mips_mini_s_h_ARG1 = global <8 x i16> <i16 0, i16 1, i16 2, i16 3, i16 4, i16 5, i16 6, i16 7>, align 16
@llvm_mips_mini_s_h_RES1 = global <8 x i16> <i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0>, align 16
@llvm_mips_mini_s_h_RES2 = global <8 x i16> <i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0>, align 16

define void @llvm_mips_mini_s_h_test() nounwind {
entry:
  %0 = load <8 x i16>, <8 x i16>* @llvm_mips_mini_s_h_ARG1
  %1 = tail call <8 x i16> @llvm.mips.mini.s.h(<8 x i16> %0, i32 14)
  store <8 x i16> %1, <8 x i16>* @llvm_mips_mini_s_h_RES1
  %2 = tail call <8 x i16> @llvm.mips.mini.s.h(<8 x i16> %0, i32 -14)
  store <8 x i16> %2, <8 x i16>* @llvm_mips_mini_s_h_RES2
  ret void
}

declare <8 x i16> @llvm.mips.mini.s.h(<8 x i16>, i32) nounwind

; CHECK: llvm_mips_mini_s_h_test:
; CHECK: ld.h [[RS:\$w[0-9]+]]
; CHECK: mini_s.h [[RD1:\$w[0-9]]], [[RS]], 14
; CHECK: st.h [[RD1]]
; CHECK: mini_s.h [[RD2:\$w[0-9]]], [[RS]], -14
; CHECK: st.h [[RD2]]
; CHECK: .size llvm_mips_mini_s_h_test
;
@llvm_mips_mini_s_w_ARG1 = global <4 x i32> <i32 0, i32 1, i32 2, i32 3>, align 16
@llvm_mips_mini_s_w_RES1 = global <4 x i32> <i32 0, i32 0, i32 0, i32 0>, align 16
@llvm_mips_mini_s_w_RES2 = global <4 x i32> <i32 0, i32 0, i32 0, i32 0>, align 16

define void @llvm_mips_mini_s_w_test() nounwind {
entry:
  %0 = load <4 x i32>, <4 x i32>* @llvm_mips_mini_s_w_ARG1
  %1 = tail call <4 x i32> @llvm.mips.mini.s.w(<4 x i32> %0, i32 14)
  store <4 x i32> %1, <4 x i32>* @llvm_mips_mini_s_w_RES1
  %2 = tail call <4 x i32> @llvm.mips.mini.s.w(<4 x i32> %0, i32 -14)
  store <4 x i32> %2, <4 x i32>* @llvm_mips_mini_s_w_RES2
  ret void
}

declare <4 x i32> @llvm.mips.mini.s.w(<4 x i32>, i32) nounwind

; CHECK: llvm_mips_mini_s_w_test:
; CHECK: ld.w [[RS:\$w[0-9]+]]
; CHECK: mini_s.w [[RD1:\$w[0-9]]], [[RS]], 14
; CHECK: st.w [[RD1]]
; CHECK: mini_s.w [[RD2:\$w[0-9]]], [[RS]], -14
; CHECK: st.w [[RD2]]
; CHECK: .size llvm_mips_mini_s_w_test
;
@llvm_mips_mini_s_d_ARG1 = global <2 x i64> <i64 0, i64 1>, align 16
@llvm_mips_mini_s_d_RES1 = global <2 x i64> <i64 0, i64 0>, align 16
@llvm_mips_mini_s_d_RES2 = global <2 x i64> <i64 0, i64 0>, align 16

define void @llvm_mips_mini_s_d_test() nounwind {
entry:
  %0 = load <2 x i64>, <2 x i64>* @llvm_mips_mini_s_d_ARG1
  %1 = tail call <2 x i64> @llvm.mips.mini.s.d(<2 x i64> %0, i32 14)
  store <2 x i64> %1, <2 x i64>* @llvm_mips_mini_s_d_RES1
  %2 = tail call <2 x i64> @llvm.mips.mini.s.d(<2 x i64> %0, i32 -14)
  store <2 x i64> %2, <2 x i64>* @llvm_mips_mini_s_d_RES2
  ret void
}

declare <2 x i64> @llvm.mips.mini.s.d(<2 x i64>, i32) nounwind

; CHECK: llvm_mips_mini_s_d_test:
; CHECK: ld.d [[RS:\$w[0-9]+]]
; CHECK: mini_s.d [[RD1:\$w[0-9]]], [[RS]], 14
; CHECK: st.d [[RD1]]
; CHECK: mini_s.d [[RD2:\$w[0-9]]], [[RS]], -14
; CHECK: st.d [[RD2]]
; CHECK: .size llvm_mips_mini_s_d_test
;
@llvm_mips_mini_u_b_ARG1 = global <16 x i8> <i8 0, i8 1, i8 2, i8 3, i8 4, i8 5, i8 6, i8 7, i8 8, i8 9, i8 10, i8 11, i8 12, i8 13, i8 14, i8 15>, align 16
@llvm_mips_mini_u_b_RES  = global <16 x i8> <i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0>, align 16

define void @llvm_mips_mini_u_b_test() nounwind {
entry:
  %0 = load <16 x i8>, <16 x i8>* @llvm_mips_mini_u_b_ARG1
  %1 = tail call <16 x i8> @llvm.mips.mini.u.b(<16 x i8> %0, i32 14)
  store <16 x i8> %1, <16 x i8>* @llvm_mips_mini_u_b_RES
  ret void
}

declare <16 x i8> @llvm.mips.mini.u.b(<16 x i8>, i32) nounwind

; CHECK: llvm_mips_mini_u_b_test:
; CHECK: ld.b
; CHECK: mini_u.b
; CHECK: st.b
; CHECK: .size llvm_mips_mini_u_b_test
;
@llvm_mips_mini_u_h_ARG1 = global <8 x i16> <i16 0, i16 1, i16 2, i16 3, i16 4, i16 5, i16 6, i16 7>, align 16
@llvm_mips_mini_u_h_RES  = global <8 x i16> <i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0>, align 16

define void @llvm_mips_mini_u_h_test() nounwind {
entry:
  %0 = load <8 x i16>, <8 x i16>* @llvm_mips_mini_u_h_ARG1
  %1 = tail call <8 x i16> @llvm.mips.mini.u.h(<8 x i16> %0, i32 14)
  store <8 x i16> %1, <8 x i16>* @llvm_mips_mini_u_h_RES
  ret void
}

declare <8 x i16> @llvm.mips.mini.u.h(<8 x i16>, i32) nounwind

; CHECK: llvm_mips_mini_u_h_test:
; CHECK: ld.h
; CHECK: mini_u.h
; CHECK: st.h
; CHECK: .size llvm_mips_mini_u_h_test
;
@llvm_mips_mini_u_w_ARG1 = global <4 x i32> <i32 0, i32 1, i32 2, i32 3>, align 16
@llvm_mips_mini_u_w_RES  = global <4 x i32> <i32 0, i32 0, i32 0, i32 0>, align 16

define void @llvm_mips_mini_u_w_test() nounwind {
entry:
  %0 = load <4 x i32>, <4 x i32>* @llvm_mips_mini_u_w_ARG1
  %1 = tail call <4 x i32> @llvm.mips.mini.u.w(<4 x i32> %0, i32 14)
  store <4 x i32> %1, <4 x i32>* @llvm_mips_mini_u_w_RES
  ret void
}

declare <4 x i32> @llvm.mips.mini.u.w(<4 x i32>, i32) nounwind

; CHECK: llvm_mips_mini_u_w_test:
; CHECK: ld.w
; CHECK: mini_u.w
; CHECK: st.w
; CHECK: .size llvm_mips_mini_u_w_test
;
@llvm_mips_mini_u_d_ARG1 = global <2 x i64> <i64 0, i64 1>, align 16
@llvm_mips_mini_u_d_RES  = global <2 x i64> <i64 0, i64 0>, align 16

define void @llvm_mips_mini_u_d_test() nounwind {
entry:
  %0 = load <2 x i64>, <2 x i64>* @llvm_mips_mini_u_d_ARG1
  %1 = tail call <2 x i64> @llvm.mips.mini.u.d(<2 x i64> %0, i32 14)
  store <2 x i64> %1, <2 x i64>* @llvm_mips_mini_u_d_RES
  ret void
}

declare <2 x i64> @llvm.mips.mini.u.d(<2 x i64>, i32) nounwind

; CHECK: llvm_mips_mini_u_d_test:
; CHECK: ld.d
; CHECK: mini_u.d
; CHECK: st.d
; CHECK: .size llvm_mips_mini_u_d_test
;
