; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
; RUN: llc -verify-machineinstrs -mtriple=powerpc64le-unknown-linux-gnu -O3 \
; RUN:   -mcpu=pwr10 -ppc-asm-full-reg-names -ppc-vsr-nums-as-vr \
; RUN:   < %s | FileCheck %s
; RUN: llc -verify-machineinstrs -mtriple=powerpc64le-unknown-linux-gnu -O3 \
; RUN:   -mcpu=pwr10 -ppc-asm-full-reg-names -ppc-vsr-nums-as-vr -mattr=-mma \
; RUN:   < %s | FileCheck %s --check-prefix=CHECK-NOMMA
; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu -O3 \
; RUN:   -mcpu=pwr10 -ppc-asm-full-reg-names -ppc-vsr-nums-as-vr \
; RUN:   < %s | FileCheck %s --check-prefix=CHECK-BE
; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu -O3 \
; RUN:   -mcpu=pwr10 -ppc-asm-full-reg-names -ppc-vsr-nums-as-vr -mattr=-mma \
; RUN:   < %s | FileCheck %s --check-prefix=CHECK-BE-NOMMA

; This test also checks that the paired vector intrinsics are available even
; when MMA is disabled.

; assemble_pair
declare <256 x i1> @llvm.ppc.vsx.assemble.pair(<16 x i8>, <16 x i8>)
define void @ass_pair(<256 x i1>* %ptr, <16 x i8> %vc) {
; CHECK-LABEL: ass_pair:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    vmr v3, v2
; CHECK-NEXT:    stxv v2, 16(r3)
; CHECK-NEXT:    stxv v3, 0(r3)
; CHECK-NEXT:    blr
;
; CHECK-NOMMA-LABEL: ass_pair:
; CHECK-NOMMA:       # %bb.0: # %entry
; CHECK-NOMMA-NEXT:    vmr v3, v2
; CHECK-NOMMA-NEXT:    stxv v2, 16(r3)
; CHECK-NOMMA-NEXT:    stxv v3, 0(r3)
; CHECK-NOMMA-NEXT:    blr
;
; CHECK-BE-LABEL: ass_pair:
; CHECK-BE:       # %bb.0: # %entry
; CHECK-BE-NEXT:    vmr v3, v2
; CHECK-BE-NEXT:    stxv v2, 16(r3)
; CHECK-BE-NEXT:    stxv v2, 0(r3)
; CHECK-BE-NEXT:    blr
;
; CHECK-BE-NOMMA-LABEL: ass_pair:
; CHECK-BE-NOMMA:       # %bb.0: # %entry
; CHECK-BE-NOMMA-NEXT:    vmr v3, v2
; CHECK-BE-NOMMA-NEXT:    stxv v2, 16(r3)
; CHECK-BE-NOMMA-NEXT:    stxv v2, 0(r3)
; CHECK-BE-NOMMA-NEXT:    blr
entry:
  %0 = tail call <256 x i1> @llvm.ppc.vsx.assemble.pair(<16 x i8> %vc, <16 x i8> %vc)
  store <256 x i1> %0, <256 x i1>* %ptr, align 32
  ret void
}

; disassemble_pair
declare { <16 x i8>, <16 x i8> } @llvm.ppc.vsx.disassemble.pair(<256 x i1>)
define void @disass_pair(<256 x i1>* %ptr1, <16 x i8>* %ptr2, <16 x i8>* %ptr3) {
; CHECK-LABEL: disass_pair:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    lxv v3, 0(r3)
; CHECK-NEXT:    lxv v2, 16(r3)
; CHECK-NEXT:    stxv v3, 0(r4)
; CHECK-NEXT:    stxv v2, 0(r5)
; CHECK-NEXT:    blr
;
; CHECK-NOMMA-LABEL: disass_pair:
; CHECK-NOMMA:       # %bb.0: # %entry
; CHECK-NOMMA-NEXT:    lxv v3, 0(r3)
; CHECK-NOMMA-NEXT:    lxv v2, 16(r3)
; CHECK-NOMMA-NEXT:    stxv v3, 0(r4)
; CHECK-NOMMA-NEXT:    stxv v2, 0(r5)
; CHECK-NOMMA-NEXT:    blr
;
; CHECK-BE-LABEL: disass_pair:
; CHECK-BE:       # %bb.0: # %entry
; CHECK-BE-NEXT:    lxv v3, 16(r3)
; CHECK-BE-NEXT:    lxv v2, 0(r3)
; CHECK-BE-NEXT:    stxv v2, 0(r4)
; CHECK-BE-NEXT:    stxv v3, 0(r5)
; CHECK-BE-NEXT:    blr
;
; CHECK-BE-NOMMA-LABEL: disass_pair:
; CHECK-BE-NOMMA:       # %bb.0: # %entry
; CHECK-BE-NOMMA-NEXT:    lxv v3, 16(r3)
; CHECK-BE-NOMMA-NEXT:    lxv v2, 0(r3)
; CHECK-BE-NOMMA-NEXT:    stxv v2, 0(r4)
; CHECK-BE-NOMMA-NEXT:    stxv v3, 0(r5)
; CHECK-BE-NOMMA-NEXT:    blr
entry:
  %0 = load <256 x i1>, <256 x i1>* %ptr1, align 32
  %1 = tail call { <16 x i8>, <16 x i8> } @llvm.ppc.vsx.disassemble.pair(<256 x i1> %0)
  %2 = extractvalue { <16 x i8>, <16 x i8> } %1, 0
  %3 = extractvalue { <16 x i8>, <16 x i8> } %1, 1
  store <16 x i8> %2, <16 x i8>* %ptr2, align 16
  store <16 x i8> %3, <16 x i8>* %ptr3, align 16
  ret void
}

define void @test_ldst_1(<256 x i1>* %vpp, <256 x i1>* %vp2) {
; CHECK-LABEL: test_ldst_1:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    lxvp vsp34, 0(r3)
; CHECK-NEXT:    stxvp vsp34, 0(r4)
; CHECK-NEXT:    blr
;
; CHECK-NOMMA-LABEL: test_ldst_1:
; CHECK-NOMMA:       # %bb.0: # %entry
; CHECK-NOMMA-NEXT:    lxvp vsp34, 0(r3)
; CHECK-NOMMA-NEXT:    stxvp vsp34, 0(r4)
; CHECK-NOMMA-NEXT:    blr
;
; CHECK-BE-LABEL: test_ldst_1:
; CHECK-BE:       # %bb.0: # %entry
; CHECK-BE-NEXT:    lxvp vsp34, 0(r3)
; CHECK-BE-NEXT:    stxvp vsp34, 0(r4)
; CHECK-BE-NEXT:    blr
;
; CHECK-BE-NOMMA-LABEL: test_ldst_1:
; CHECK-BE-NOMMA:       # %bb.0: # %entry
; CHECK-BE-NOMMA-NEXT:    lxvp vsp34, 0(r3)
; CHECK-BE-NOMMA-NEXT:    stxvp vsp34, 0(r4)
; CHECK-BE-NOMMA-NEXT:    blr
entry:
  %0 = bitcast <256 x i1>* %vpp to i8*
  %1 = tail call <256 x i1> @llvm.ppc.vsx.lxvp(i8* %0)
  %2 = bitcast <256 x i1>* %vp2 to i8*
  tail call void @llvm.ppc.vsx.stxvp(<256 x i1> %1, i8* %2)
  ret void
}

declare <256 x i1> @llvm.ppc.vsx.lxvp(i8*)
declare void @llvm.ppc.vsx.stxvp(<256 x i1>, i8*)

define void @test_ldst_2(<256 x i1>* %vpp, i64 %offset, <256 x i1>* %vp2)  {
; CHECK-LABEL: test_ldst_2:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    lxvpx vsp34, r3, r4
; CHECK-NEXT:    stxvpx vsp34, r5, r4
; CHECK-NEXT:    blr
;
; CHECK-NOMMA-LABEL: test_ldst_2:
; CHECK-NOMMA:       # %bb.0: # %entry
; CHECK-NOMMA-NEXT:    lxvpx vsp34, r3, r4
; CHECK-NOMMA-NEXT:    stxvpx vsp34, r5, r4
; CHECK-NOMMA-NEXT:    blr
;
; CHECK-BE-LABEL: test_ldst_2:
; CHECK-BE:       # %bb.0: # %entry
; CHECK-BE-NEXT:    lxvpx vsp34, r3, r4
; CHECK-BE-NEXT:    stxvpx vsp34, r5, r4
; CHECK-BE-NEXT:    blr
;
; CHECK-BE-NOMMA-LABEL: test_ldst_2:
; CHECK-BE-NOMMA:       # %bb.0: # %entry
; CHECK-BE-NOMMA-NEXT:    lxvpx vsp34, r3, r4
; CHECK-BE-NOMMA-NEXT:    stxvpx vsp34, r5, r4
; CHECK-BE-NOMMA-NEXT:    blr
entry:
  %0 = bitcast <256 x i1>* %vpp to i8*
  %1 = getelementptr i8, i8* %0, i64 %offset
  %2 = tail call <256 x i1> @llvm.ppc.vsx.lxvp(i8* %1)
  %3 = bitcast <256 x i1>* %vp2 to i8*
  %4 = getelementptr i8, i8* %3, i64 %offset
  tail call void @llvm.ppc.vsx.stxvp(<256 x i1> %2, i8* %4)
  ret void
}

define void @test_ldst_3(<256 x i1>* %vpp, <256 x i1>* %vp2)  {
; CHECK-LABEL: test_ldst_3:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    plxvp vsp34, 18(r3), 0
; CHECK-NEXT:    pstxvp vsp34, 18(r4), 0
; CHECK-NEXT:    blr
;
; CHECK-NOMMA-LABEL: test_ldst_3:
; CHECK-NOMMA:       # %bb.0: # %entry
; CHECK-NOMMA-NEXT:    plxvp vsp34, 18(r3), 0
; CHECK-NOMMA-NEXT:    pstxvp vsp34, 18(r4), 0
; CHECK-NOMMA-NEXT:    blr
;
; CHECK-BE-LABEL: test_ldst_3:
; CHECK-BE:       # %bb.0: # %entry
; CHECK-BE-NEXT:    plxvp vsp34, 18(r3), 0
; CHECK-BE-NEXT:    pstxvp vsp34, 18(r4), 0
; CHECK-BE-NEXT:    blr
;
; CHECK-BE-NOMMA-LABEL: test_ldst_3:
; CHECK-BE-NOMMA:       # %bb.0: # %entry
; CHECK-BE-NOMMA-NEXT:    plxvp vsp34, 18(r3), 0
; CHECK-BE-NOMMA-NEXT:    pstxvp vsp34, 18(r4), 0
; CHECK-BE-NOMMA-NEXT:    blr
entry:
  %0 = bitcast <256 x i1>* %vpp to i8*
  %1 = getelementptr i8, i8* %0, i64 18
  %2 = tail call <256 x i1> @llvm.ppc.vsx.lxvp(i8* %1)
  %3 = bitcast <256 x i1>* %vp2 to i8*
  %4 = getelementptr i8, i8* %3, i64 18
  tail call void @llvm.ppc.vsx.stxvp(<256 x i1> %2, i8* %4)
  ret void
}

define void @test_ldst_4(<256 x i1>* %vpp, <256 x i1>* %vp2)  {
; CHECK-LABEL: test_ldst_4:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    plxvp vsp34, 1(r3), 0
; CHECK-NEXT:    pstxvp vsp34, 1(r4), 0
; CHECK-NEXT:    blr
;
; CHECK-NOMMA-LABEL: test_ldst_4:
; CHECK-NOMMA:       # %bb.0: # %entry
; CHECK-NOMMA-NEXT:    plxvp vsp34, 1(r3), 0
; CHECK-NOMMA-NEXT:    pstxvp vsp34, 1(r4), 0
; CHECK-NOMMA-NEXT:    blr
;
; CHECK-BE-LABEL: test_ldst_4:
; CHECK-BE:       # %bb.0: # %entry
; CHECK-BE-NEXT:    plxvp vsp34, 1(r3), 0
; CHECK-BE-NEXT:    pstxvp vsp34, 1(r4), 0
; CHECK-BE-NEXT:    blr
;
; CHECK-BE-NOMMA-LABEL: test_ldst_4:
; CHECK-BE-NOMMA:       # %bb.0: # %entry
; CHECK-BE-NOMMA-NEXT:    plxvp vsp34, 1(r3), 0
; CHECK-BE-NOMMA-NEXT:    pstxvp vsp34, 1(r4), 0
; CHECK-BE-NOMMA-NEXT:    blr
entry:
  %0 = bitcast <256 x i1>* %vpp to i8*
  %1 = getelementptr i8, i8* %0, i64 1
  %2 = tail call <256 x i1> @llvm.ppc.vsx.lxvp(i8* %1)
  %3 = bitcast <256 x i1>* %vp2 to i8*
  %4 = getelementptr i8, i8* %3, i64 1
  tail call void @llvm.ppc.vsx.stxvp(<256 x i1> %2, i8* %4)
  ret void
}

define void @test_ldst_5(<256 x i1>* %vpp, <256 x i1>* %vp2)  {
; CHECK-LABEL: test_ldst_5:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    plxvp vsp34, 42(r3), 0
; CHECK-NEXT:    pstxvp vsp34, 42(r4), 0
; CHECK-NEXT:    blr
;
; CHECK-NOMMA-LABEL: test_ldst_5:
; CHECK-NOMMA:       # %bb.0: # %entry
; CHECK-NOMMA-NEXT:    plxvp vsp34, 42(r3), 0
; CHECK-NOMMA-NEXT:    pstxvp vsp34, 42(r4), 0
; CHECK-NOMMA-NEXT:    blr
;
; CHECK-BE-LABEL: test_ldst_5:
; CHECK-BE:       # %bb.0: # %entry
; CHECK-BE-NEXT:    plxvp vsp34, 42(r3), 0
; CHECK-BE-NEXT:    pstxvp vsp34, 42(r4), 0
; CHECK-BE-NEXT:    blr
;
; CHECK-BE-NOMMA-LABEL: test_ldst_5:
; CHECK-BE-NOMMA:       # %bb.0: # %entry
; CHECK-BE-NOMMA-NEXT:    plxvp vsp34, 42(r3), 0
; CHECK-BE-NOMMA-NEXT:    pstxvp vsp34, 42(r4), 0
; CHECK-BE-NOMMA-NEXT:    blr
entry:
  %0 = bitcast <256 x i1>* %vpp to i8*
  %1 = getelementptr i8, i8* %0, i64 42
  %2 = tail call <256 x i1> @llvm.ppc.vsx.lxvp(i8* %1)
  %3 = bitcast <256 x i1>* %vp2 to i8*
  %4 = getelementptr i8, i8* %3, i64 42
  tail call void @llvm.ppc.vsx.stxvp(<256 x i1> %2, i8* %4)
  ret void
}

define void @test_ldst_6(<256 x i1>* %vpp, <256 x i1>* %vp2)  {
; CHECK-LABEL: test_ldst_6:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    lxvp vsp34, 4096(r3)
; CHECK-NEXT:    stxvp vsp34, 4096(r4)
; CHECK-NEXT:    blr
;
; CHECK-NOMMA-LABEL: test_ldst_6:
; CHECK-NOMMA:       # %bb.0: # %entry
; CHECK-NOMMA-NEXT:    lxvp vsp34, 4096(r3)
; CHECK-NOMMA-NEXT:    stxvp vsp34, 4096(r4)
; CHECK-NOMMA-NEXT:    blr
;
; CHECK-BE-LABEL: test_ldst_6:
; CHECK-BE:       # %bb.0: # %entry
; CHECK-BE-NEXT:    lxvp vsp34, 4096(r3)
; CHECK-BE-NEXT:    stxvp vsp34, 4096(r4)
; CHECK-BE-NEXT:    blr
;
; CHECK-BE-NOMMA-LABEL: test_ldst_6:
; CHECK-BE-NOMMA:       # %bb.0: # %entry
; CHECK-BE-NOMMA-NEXT:    lxvp vsp34, 4096(r3)
; CHECK-BE-NOMMA-NEXT:    stxvp vsp34, 4096(r4)
; CHECK-BE-NOMMA-NEXT:    blr
entry:
  %0 = getelementptr <256 x i1>, <256 x i1>* %vpp, i64 128
  %1 = bitcast <256 x i1>* %0 to i8*
  %2 = tail call <256 x i1> @llvm.ppc.vsx.lxvp(i8* %1)
  %3 = getelementptr <256 x i1>, <256 x i1>* %vp2, i64 128
  %4 = bitcast <256 x i1>* %3 to i8*
  tail call void @llvm.ppc.vsx.stxvp(<256 x i1> %2, i8* %4)
  ret void
}

define void @test_ldst_7(<256 x i1>* %vpp, <256 x i1>* %vp2)  {
; FIXME: A prefixed load (plxvp) is expected here as the offset in this
; test case is a constant that fits within 34-bits.
; CHECK-LABEL: test_ldst_7:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    plxvp vsp34, 32799(r3), 0
; CHECK-NEXT:    pstxvp vsp34, 32799(r4), 0
; CHECK-NEXT:    blr
;
; CHECK-NOMMA-LABEL: test_ldst_7:
; CHECK-NOMMA:       # %bb.0: # %entry
; CHECK-NOMMA-NEXT:    plxvp vsp34, 32799(r3), 0
; CHECK-NOMMA-NEXT:    pstxvp vsp34, 32799(r4), 0
; CHECK-NOMMA-NEXT:    blr
;
; CHECK-BE-LABEL: test_ldst_7:
; CHECK-BE:       # %bb.0: # %entry
; CHECK-BE-NEXT:    plxvp vsp34, 32799(r3), 0
; CHECK-BE-NEXT:    pstxvp vsp34, 32799(r4), 0
; CHECK-BE-NEXT:    blr
;
; CHECK-BE-NOMMA-LABEL: test_ldst_7:
; CHECK-BE-NOMMA:       # %bb.0: # %entry
; CHECK-BE-NOMMA-NEXT:    plxvp vsp34, 32799(r3), 0
; CHECK-BE-NOMMA-NEXT:    pstxvp vsp34, 32799(r4), 0
; CHECK-BE-NOMMA-NEXT:    blr
entry:
  %0 = bitcast <256 x i1>* %vpp to i8*
  %1 = getelementptr i8, i8* %0, i64 32799
  %2 = tail call <256 x i1> @llvm.ppc.vsx.lxvp(i8* %1)
  %3 = bitcast <256 x i1>* %vp2 to i8*
  %4 = getelementptr i8, i8* %3, i64 32799
  tail call void @llvm.ppc.vsx.stxvp(<256 x i1> %2, i8* %4)
  ret void
}
