brintos

brintos / llvm-project-archived public Read only

0
0
Text · 21.0 KiB · 1c7c3e4 Raw
575 lines · plain
1! RUN: %flang_fc1 -flang-experimental-hlfir -triple powerpc64le-unknown-unknown -target-cpu pwr10 -emit-llvm %s -o - | FileCheck --check-prefixes="LLVMIR" %s2! REQUIRES: target=powerpc{{.*}}3 4!----------------------5! mma_lxvp6!----------------------7 8      subroutine mma_lxvp_test_i2(v1, offset, vp)9      use, intrinsic :: mma10      integer(2) :: offset11      vector(integer(2)) :: v112      __vector_pair :: vp13      vp = mma_lxvp(offset, v1)14      end subroutine mma_lxvp_test_i215 16!CHECK-LABEL: @mma_lxvp_test_i2_17!LLVMIR:  %[[offset:.*]] = load i16, ptr %1, align 218!LLVMIR:  %[[addr:.*]] = getelementptr i8, ptr %0, i16 %[[offset]]19!LLVMIR:  %[[call:.*]] = call <256 x i1> @llvm.ppc.vsx.lxvp(ptr %[[addr]])20!LLVMIR:  store <256 x i1> %[[call]], ptr %2, align 3221 22      subroutine test_cvspbf16()23      implicit none24      vector(unsigned(1)) :: v1, v225      v1 = vec_cvspbf16(v2)26      end subroutine test_cvspbf1627 28!CHECK-LABEL: @test_cvspbf16_29!LLVMIR:  %1 = alloca <16 x i8>, i64 1, align 1630!LLVMIR:  %2 = alloca <16 x i8>, i64 1, align 1631!LLVMIR:  %3 = load <16 x i8>, ptr %1, align 1632!LLVMIR:  %4 = call <16 x i8> @llvm.ppc.vsx.xvcvspbf16(<16 x i8> %3)33!LLVMIR:  store <16 x i8> %4, ptr %2, align 1634 35      subroutine test_cvbf16spn()36      implicit none37      vector(unsigned(1)) :: v1, v238      v1 = vec_cvbf16spn(v2)39      end subroutine test_cvbf16spn40 41!CHECK-LABEL: @test_cvbf16spn_42!LLVMIR:  %1 = alloca <16 x i8>, i64 1, align 1643!LLVMIR:  %2 = alloca <16 x i8>, i64 1, align 1644!LLVMIR:  %3 = load <16 x i8>, ptr %1, align 1645!LLVMIR:  %4 = call <16 x i8> @llvm.ppc.vsx.xvcvbf16spn(<16 x i8> %3)46!LLVMIR:  store <16 x i8> %4, ptr %2, align 1647 48!----------------------49! vec_lxvp50!----------------------51 52      subroutine vec_lxvp_test_i2(v1, offset, vp)53      integer(2) :: offset54      vector(integer(2)) :: v155      __vector_pair :: vp56      vp = vec_lxvp(offset, v1)57      end subroutine vec_lxvp_test_i258 59!CHECK-LABEL: @vec_lxvp_test_i2_60!LLVMIR:  %[[offset:.*]] = load i16, ptr %1, align 261!LLVMIR:  %[[addr:.*]] = getelementptr i8, ptr %0, i16 %[[offset]]62!LLVMIR:  %[[call:.*]] = call <256 x i1> @llvm.ppc.vsx.lxvp(ptr %[[addr]])63!LLVMIR:  store <256 x i1> %[[call]], ptr %2, align 3264 65      subroutine vec_lxvp_test_i4(v1, offset, vp)66      integer(2) :: offset67      vector(integer(4)) :: v168      __vector_pair :: vp69      vp = vec_lxvp(offset, v1)70      end subroutine vec_lxvp_test_i471 72!CHECK-LABEL: @vec_lxvp_test_i4_73!LLVMIR:  %[[offset:.*]] = load i16, ptr %1, align 274!LLVMIR:  %[[addr:.*]] = getelementptr i8, ptr %0, i16 %[[offset]]75!LLVMIR:  %[[call:.*]] = call <256 x i1> @llvm.ppc.vsx.lxvp(ptr %[[addr]])76!LLVMIR:  store <256 x i1> %[[call]], ptr %2, align 3277 78      subroutine vec_lxvp_test_u2(v1, offset, vp)79      integer(2) :: offset80      vector(unsigned(2)) :: v181      __vector_pair :: vp82      vp = vec_lxvp(offset, v1)83      end subroutine vec_lxvp_test_u284 85!CHECK-LABEL: @vec_lxvp_test_u2_86!LLVMIR:  %[[offset:.*]] = load i16, ptr %1, align 287!LLVMIR:  %[[addr:.*]] = getelementptr i8, ptr %0, i16 %[[offset]]88!LLVMIR:  %[[call:.*]] = call <256 x i1> @llvm.ppc.vsx.lxvp(ptr %[[addr]])89!LLVMIR:  store <256 x i1> %[[call]], ptr %2, align 3290 91      subroutine vec_lxvp_test_u4(v1, offset, vp)92      integer(2) :: offset93      vector(unsigned(4)) :: v194      __vector_pair :: vp95      vp = vec_lxvp(offset, v1)96      end subroutine vec_lxvp_test_u497 98!CHECK-LABEL: @vec_lxvp_test_u4_99!LLVMIR:  %[[offset:.*]] = load i16, ptr %1, align 2100!LLVMIR:  %[[addr:.*]] = getelementptr i8, ptr %0, i16 %[[offset]]101!LLVMIR:  %[[call:.*]] = call <256 x i1> @llvm.ppc.vsx.lxvp(ptr %[[addr]])102!LLVMIR:  store <256 x i1> %[[call]], ptr %2, align 32103 104      subroutine vec_lxvp_test_r4(v1, offset, vp)105      integer(2) :: offset106      vector(real(4)) :: v1107      __vector_pair :: vp108      vp = vec_lxvp(offset, v1)109      end subroutine vec_lxvp_test_r4110 111!CHECK-LABEL: @vec_lxvp_test_r4_112!LLVMIR:  %[[offset:.*]] = load i16, ptr %1, align 2113!LLVMIR:  %[[addr:.*]] = getelementptr i8, ptr %0, i16 %[[offset]]114!LLVMIR:  %[[call:.*]] = call <256 x i1> @llvm.ppc.vsx.lxvp(ptr %[[addr]])115!LLVMIR:  store <256 x i1> %[[call]], ptr %2, align 32116 117      subroutine vec_lxvp_test_r8(v1, offset, vp)118      integer(2) :: offset119      vector(real(8)) :: v1120      __vector_pair :: vp121      vp = vec_lxvp(offset, v1)122      end subroutine vec_lxvp_test_r8123 124!CHECK-LABEL: @vec_lxvp_test_r8_125!LLVMIR:  %[[offset:.*]] = load i16, ptr %1, align 2126!LLVMIR:  %[[addr:.*]] = getelementptr i8, ptr %0, i16 %[[offset]]127!LLVMIR:  %[[call:.*]] = call <256 x i1> @llvm.ppc.vsx.lxvp(ptr %[[addr]])128!LLVMIR:  store <256 x i1> %[[call]], ptr %2, align 32129 130      subroutine vec_lxvp_test_vp(v1, offset, vp)131      integer(2) :: offset132      __vector_pair :: v1133      __vector_pair :: vp134      vp = vec_lxvp(offset, v1)135      end subroutine vec_lxvp_test_vp136 137!CHECK-LABEL: @vec_lxvp_test_vp_138!LLVMIR:  %[[offset:.*]] = load i16, ptr %1, align 2139!LLVMIR:  %[[addr:.*]] = getelementptr i8, ptr %0, i16 %[[offset]]140!LLVMIR:  %[[call:.*]] = call <256 x i1> @llvm.ppc.vsx.lxvp(ptr %[[addr]])141!LLVMIR:  store <256 x i1> %[[call]], ptr %2, align 32142 143      subroutine vec_lxvp_test_i2_arr(v1, offset, vp)144      integer :: offset145      vector(integer(2)) :: v1(10)146      __vector_pair :: vp147      vp = vec_lxvp(offset, v1)148      end subroutine vec_lxvp_test_i2_arr149 150!CHECK-LABEL: @vec_lxvp_test_i2_arr_151!LLVMIR:  %[[offset:.*]] = load i32, ptr %1, align 4152!LLVMIR:  %[[addr:.*]] = getelementptr i8, ptr %0, i32 %[[offset]]153!LLVMIR:  %[[call:.*]] = call <256 x i1> @llvm.ppc.vsx.lxvp(ptr %[[addr]])154!LLVMIR:  store <256 x i1> %[[call]], ptr %2, align 32155 156      subroutine vec_lxvp_test_i4_arr(v1, offset, vp)157      integer :: offset158      vector(integer(4)) :: v1(10)159      __vector_pair :: vp160      vp = vec_lxvp(offset, v1)161      end subroutine vec_lxvp_test_i4_arr162 163!CHECK-LABEL: @vec_lxvp_test_i4_arr_164!LLVMIR:  %[[offset:.*]] = load i32, ptr %1, align 4165!LLVMIR:  %[[addr:.*]] = getelementptr i8, ptr %0, i32 %[[offset]]166!LLVMIR:  %[[call:.*]] = call <256 x i1> @llvm.ppc.vsx.lxvp(ptr %[[addr]])167!LLVMIR:  store <256 x i1> %[[call]], ptr %2, align 32168 169      subroutine vec_lxvp_test_u2_arr(v1, offset, vp)170      integer :: offset171      vector(unsigned(2)) :: v1(10)172      __vector_pair :: vp173      vp = vec_lxvp(offset, v1)174      end subroutine vec_lxvp_test_u2_arr175 176!CHECK-LABEL: @vec_lxvp_test_u2_arr_177!LLVMIR:  %[[offset:.*]] = load i32, ptr %1, align 4178!LLVMIR:  %[[addr:.*]] = getelementptr i8, ptr %0, i32 %[[offset]]179!LLVMIR:  %[[call:.*]] = call <256 x i1> @llvm.ppc.vsx.lxvp(ptr %[[addr]])180!LLVMIR:  store <256 x i1> %[[call]], ptr %2, align 32181 182      subroutine vec_lxvp_test_u4_arr(v1, offset, vp)183      integer :: offset184      vector(unsigned(4)) :: v1(10)185      __vector_pair :: vp186      vp = vec_lxvp(offset, v1)187      end subroutine vec_lxvp_test_u4_arr188 189!CHECK-LABEL: @vec_lxvp_test_u4_arr_190!LLVMIR:  %[[offset:.*]] = load i32, ptr %1, align 4191!LLVMIR:  %[[addr:.*]] = getelementptr i8, ptr %0, i32 %[[offset]]192!LLVMIR:  %[[call:.*]] = call <256 x i1> @llvm.ppc.vsx.lxvp(ptr %[[addr]])193!LLVMIR:  store <256 x i1> %[[call]], ptr %2, align 32194 195      subroutine vec_lxvp_test_r4_arr(v1, offset, vp)196      integer :: offset197      vector(real(4)) :: v1(10)198      __vector_pair :: vp199      vp = vec_lxvp(offset, v1)200      end subroutine vec_lxvp_test_r4_arr201 202!CHECK-LABEL: @vec_lxvp_test_r4_arr_203!LLVMIR:  %[[offset:.*]] = load i32, ptr %1, align 4204!LLVMIR:  %[[addr:.*]] = getelementptr i8, ptr %0, i32 %[[offset]]205!LLVMIR:  %[[call:.*]] = call <256 x i1> @llvm.ppc.vsx.lxvp(ptr %[[addr]])206!LLVMIR:  store <256 x i1> %[[call]], ptr %2, align 32207 208      subroutine vec_lxvp_test_r8_arr(v1, offset, vp)209      integer :: offset210      vector(real(8)) :: v1(10)211      __vector_pair :: vp212      vp = vec_lxvp(offset, v1)213      end subroutine vec_lxvp_test_r8_arr214 215!CHECK-LABEL: @vec_lxvp_test_r8_arr_216!LLVMIR:  %[[offset:.*]] = load i32, ptr %1, align 4217!LLVMIR:  %[[addr:.*]] = getelementptr i8, ptr %0, i32 %[[offset]]218!LLVMIR:  %[[call:.*]] = call <256 x i1> @llvm.ppc.vsx.lxvp(ptr %[[addr]])219!LLVMIR:  store <256 x i1> %[[call]], ptr %2, align 32220 221      subroutine vec_lxvp_test_vp_arr(v1, offset, vp)222      integer(8) :: offset223      __vector_pair :: v1(10)224      __vector_pair :: vp225      vp = vec_lxvp(offset, v1)226      end subroutine vec_lxvp_test_vp_arr227 228!CHECK-LABEL: @vec_lxvp_test_vp_arr_229!LLVMIR:  %[[offset:.*]] = load i64, ptr %1, align 8230!LLVMIR:  %[[addr:.*]] = getelementptr i8, ptr %0, i64 %[[offset]]231!LLVMIR:  %[[call:.*]] = call <256 x i1> @llvm.ppc.vsx.lxvp(ptr %[[addr]])232!LLVMIR:  store <256 x i1> %[[call]], ptr %2, align 32233 234!----------------------235! vsx_lxvp236!----------------------237 238      subroutine vsx_lxvp_test_i4(v1, offset, vp)239      integer(2) :: offset240      vector(integer(4)) :: v1241      __vector_pair :: vp242      vp = vsx_lxvp(offset, v1)243      end subroutine vsx_lxvp_test_i4244 245!CHECK-LABEL: @vsx_lxvp_test_i4_246!LLVMIR:  %[[offset:.*]] = load i16, ptr %1, align 2247!LLVMIR:  %[[addr:.*]] = getelementptr i8, ptr %0, i16 %[[offset]]248!LLVMIR:  %[[call:.*]] = call <256 x i1> @llvm.ppc.vsx.lxvp(ptr %[[addr]])249!LLVMIR:  store <256 x i1> %[[call]], ptr %2, align 32250 251      subroutine vsx_lxvp_test_r8(v1, offset, vp)252      integer(2) :: offset253      vector(real(8)) :: v1254      __vector_pair :: vp255      vp = vsx_lxvp(offset, v1)256      end subroutine vsx_lxvp_test_r8257 258!CHECK-LABEL: @vsx_lxvp_test_r8_259!LLVMIR:  %[[offset:.*]] = load i16, ptr %1, align 2260!LLVMIR:  %[[addr:.*]] = getelementptr i8, ptr %0, i16 %[[offset]]261!LLVMIR:  %[[call:.*]] = call <256 x i1> @llvm.ppc.vsx.lxvp(ptr %[[addr]])262!LLVMIR:  store <256 x i1> %[[call]], ptr %2, align 32263 264      subroutine vsx_lxvp_test_i2_arr(v1, offset, vp)265      integer :: offset266      vector(integer(2)) :: v1(10)267      __vector_pair :: vp268      vp = vsx_lxvp(offset, v1)269      end subroutine vsx_lxvp_test_i2_arr270 271!CHECK-LABEL: @vsx_lxvp_test_i2_arr_272!LLVMIR:  %[[offset:.*]] = load i32, ptr %1, align 4273!LLVMIR:  %[[addr:.*]] = getelementptr i8, ptr %0, i32 %[[offset]]274!LLVMIR:  %[[call:.*]] = call <256 x i1> @llvm.ppc.vsx.lxvp(ptr %[[addr]])275!LLVMIR:  store <256 x i1> %[[call]], ptr %2, align 32276 277      subroutine vsx_lxvp_test_vp_arr(v1, offset, vp)278      integer(8) :: offset279      __vector_pair :: v1(10)280      __vector_pair :: vp281      vp = vsx_lxvp(offset, v1)282      end subroutine vsx_lxvp_test_vp_arr283 284!CHECK-LABEL: @vsx_lxvp_test_vp_arr_285!LLVMIR:  %[[offset:.*]] = load i64, ptr %1, align 8286!LLVMIR:  %[[addr:.*]] = getelementptr i8, ptr %0, i64 %[[offset]]287!LLVMIR:  %[[call:.*]] = call <256 x i1> @llvm.ppc.vsx.lxvp(ptr %[[addr]])288!LLVMIR:  store <256 x i1> %[[call]], ptr %2, align 32289 290!----------------------291! mma_stxvp292!----------------------293 294      subroutine test_mma_stxvp_i1(vp, offset, v1)295      use, intrinsic :: mma296      integer(1) :: offset297      vector(integer(2)) :: v1298      __vector_pair :: vp299      call mma_stxvp(vp, offset, v1)300      end subroutine test_mma_stxvp_i1301 302!CHECK-LABEL: @test_mma_stxvp_i1_303!LLVMIR:  %[[vp:.*]] = load <256 x i1>, ptr %0, align 32304!LLVMIR:  %[[offset:.*]] = load i8, ptr %1, align 1305!LLVMIR:  %[[addr:.*]] = getelementptr i8, ptr %2, i8 %[[offset]]306!LLVMIR:  call void @llvm.ppc.vsx.stxvp(<256 x i1> %[[vp]], ptr %[[addr]])307 308!----------------------309! vec_stxvp310!----------------------311 312      subroutine test_vec_stxvp_i1(vp, offset, v1)313      integer(1) :: offset314      vector(integer(2)) :: v1315      __vector_pair :: vp316      call vec_stxvp(vp, offset, v1)317      end subroutine test_vec_stxvp_i1318 319!CHECK-LABEL: @test_vec_stxvp_i1_320!LLVMIR:  %[[vp:.*]] = load <256 x i1>, ptr %0, align 32321!LLVMIR:  %[[offset:.*]] = load i8, ptr %1, align 1322!LLVMIR:  %[[addr:.*]] = getelementptr i8, ptr %2, i8 %[[offset]]323!LLVMIR:  call void @llvm.ppc.vsx.stxvp(<256 x i1> %[[vp]], ptr %[[addr]])324 325      subroutine test_vec_stxvp_i8(vp, offset, v1)326      integer(8) :: offset327      vector(integer(8)) :: v1328      __vector_pair :: vp329      call vec_stxvp(vp, offset, v1)330      end subroutine test_vec_stxvp_i8331 332!CHECK-LABEL: @test_vec_stxvp_i8_333!LLVMIR:  %[[vp:.*]] = load <256 x i1>, ptr %0, align 32334!LLVMIR:  %[[offset:.*]] = load i64, ptr %1, align 8335!LLVMIR:  %[[addr:.*]] = getelementptr i8, ptr %2, i64 %[[offset]]336!LLVMIR:  call void @llvm.ppc.vsx.stxvp(<256 x i1> %[[vp]], ptr %[[addr]])337 338      subroutine test_vec_stxvp_vi2(vp, offset, v1)339      integer(2) :: offset340      vector(integer(2)) :: v1341      __vector_pair :: vp342      call vec_stxvp(vp, offset, v1)343      end subroutine test_vec_stxvp_vi2344 345!CHECK-LABEL: @test_vec_stxvp_vi2_346!LLVMIR:  %[[vp:.*]] = load <256 x i1>, ptr %0, align 32347!LLVMIR:  %[[offset:.*]] = load i16, ptr %1, align 2348!LLVMIR:  %[[addr:.*]] = getelementptr i8, ptr %2, i16 %[[offset]]349!LLVMIR:  call void @llvm.ppc.vsx.stxvp(<256 x i1> %[[vp]], ptr %[[addr]])350 351      subroutine test_vec_stxvp_vi4(vp, offset, v1)352      integer(2) :: offset353      vector(integer(4)) :: v1354      __vector_pair :: vp355      call vec_stxvp(vp, offset, v1)356      end subroutine test_vec_stxvp_vi4357 358!CHECK-LABEL: @test_vec_stxvp_vi4_359!LLVMIR:  %[[vp:.*]] = load <256 x i1>, ptr %0, align 32360!LLVMIR:  %[[offset:.*]] = load i16, ptr %1, align 2361!LLVMIR:  %[[addr:.*]] = getelementptr i8, ptr %2, i16 %[[offset]]362!LLVMIR:  call void @llvm.ppc.vsx.stxvp(<256 x i1> %[[vp]], ptr %[[addr]])363 364      subroutine test_vec_stxvp_vu2(vp, offset, v1)365      integer(2) :: offset366      vector(unsigned(2)) :: v1367      __vector_pair :: vp368      call vec_stxvp(vp, offset, v1)369      end subroutine test_vec_stxvp_vu2370 371!CHECK-LABEL: @test_vec_stxvp_vu2_372!LLVMIR:  %[[vp:.*]] = load <256 x i1>, ptr %0, align 32373!LLVMIR:  %[[offset:.*]] = load i16, ptr %1, align 2374!LLVMIR:  %[[addr:.*]] = getelementptr i8, ptr %2, i16 %[[offset]]375!LLVMIR:  call void @llvm.ppc.vsx.stxvp(<256 x i1> %[[vp]], ptr %[[addr]])376 377      subroutine test_vec_stxvp_vu4(vp, offset, v1)378      integer(2) :: offset379      vector(unsigned(4)) :: v1380      __vector_pair :: vp381      call vec_stxvp(vp, offset, v1)382      end subroutine test_vec_stxvp_vu4383 384!CHECK-LABEL: @test_vec_stxvp_vu4_385!LLVMIR:  %[[vp:.*]] = load <256 x i1>, ptr %0, align 32386!LLVMIR:  %[[offset:.*]] = load i16, ptr %1, align 2387!LLVMIR:  %[[addr:.*]] = getelementptr i8, ptr %2, i16 %[[offset]]388!LLVMIR:  call void @llvm.ppc.vsx.stxvp(<256 x i1> %[[vp]], ptr %[[addr]])389 390      subroutine test_vec_stxvp_vr4(vp, offset, v1)391      integer(2) :: offset392      vector(real(4)) :: v1393      __vector_pair :: vp394      call vec_stxvp(vp, offset, v1)395      end subroutine test_vec_stxvp_vr4396 397!CHECK-LABEL: @test_vec_stxvp_vr4_398!LLVMIR:  %[[vp:.*]] = load <256 x i1>, ptr %0, align 32399!LLVMIR:  %[[offset:.*]] = load i16, ptr %1, align 2400!LLVMIR:  %[[addr:.*]] = getelementptr i8, ptr %2, i16 %[[offset]]401!LLVMIR:  call void @llvm.ppc.vsx.stxvp(<256 x i1> %[[vp]], ptr %[[addr]])402 403      subroutine test_vec_stxvp_vr8(vp, offset, v1)404      integer(2) :: offset405      vector(real(8)) :: v1406      __vector_pair :: vp407      call vec_stxvp(vp, offset, v1)408      end subroutine test_vec_stxvp_vr8409 410!CHECK-LABEL: @test_vec_stxvp_vr8_411!LLVMIR:  %[[vp:.*]] = load <256 x i1>, ptr %0, align 32412!LLVMIR:  %[[offset:.*]] = load i16, ptr %1, align 2413!LLVMIR:  %[[addr:.*]] = getelementptr i8, ptr %2, i16 %[[offset]]414!LLVMIR:  call void @llvm.ppc.vsx.stxvp(<256 x i1> %[[vp]], ptr %[[addr]])415 416      subroutine test_vec_stxvp_vvp(vp, offset, v1)417      integer(2) :: offset418      __vector_pair :: v1419      __vector_pair :: vp420      call vec_stxvp(vp, offset, v1)421      end subroutine test_vec_stxvp_vvp422 423!CHECK-LABEL: @test_vec_stxvp_vvp_424!LLVMIR:  %[[vp:.*]] = load <256 x i1>, ptr %0, align 32425!LLVMIR:  %[[offset:.*]] = load i16, ptr %1, align 2426!LLVMIR:  %[[addr:.*]] = getelementptr i8, ptr %2, i16 %[[offset]]427!LLVMIR:  call void @llvm.ppc.vsx.stxvp(<256 x i1> %[[vp]], ptr %[[addr]])428 429      subroutine test_vec_stxvp_vi2_arr(vp, offset, v1)430      integer :: offset431      vector(integer(2)) :: v1(10)432      __vector_pair :: vp433      call vec_stxvp(vp, offset, v1)434      end subroutine test_vec_stxvp_vi2_arr435 436!CHECK-LABEL: @test_vec_stxvp_vi2_arr_437!LLVMIR:  %[[vp:.*]] = load <256 x i1>, ptr %0, align 32438!LLVMIR:  %[[offset:.*]] = load i32, ptr %1, align 4439!LLVMIR:  %[[addr:.*]] = getelementptr i8, ptr %2, i32 %[[offset]]440!LLVMIR:  call void @llvm.ppc.vsx.stxvp(<256 x i1> %[[vp]], ptr %[[addr]])441 442      subroutine test_vec_stxvp_vi4_arr(vp, offset, v1)443      integer :: offset444      vector(integer(4)) :: v1(10)445      __vector_pair :: vp446      call vec_stxvp(vp, offset, v1)447      end subroutine test_vec_stxvp_vi4_arr448 449!CHECK-LABEL: @test_vec_stxvp_vi4_arr_450!LLVMIR:  %[[vp:.*]] = load <256 x i1>, ptr %0, align 32451!LLVMIR:  %[[offset:.*]] = load i32, ptr %1, align 4452!LLVMIR:  %[[addr:.*]] = getelementptr i8, ptr %2, i32 %[[offset]]453!LLVMIR:  call void @llvm.ppc.vsx.stxvp(<256 x i1> %[[vp]], ptr %[[addr]])454 455      subroutine test_vec_stxvp_vu2_arr(vp, offset, v1)456      integer :: offset457      vector(unsigned(2)) :: v1(11)458      __vector_pair :: vp459      call vec_stxvp(vp, offset, v1)460      end subroutine test_vec_stxvp_vu2_arr461 462!CHECK-LABEL: @test_vec_stxvp_vu2_arr_463!LLVMIR:  %[[vp:.*]] = load <256 x i1>, ptr %0, align 32464!LLVMIR:  %[[offset:.*]] = load i32, ptr %1, align 4465!LLVMIR:  %[[addr:.*]] = getelementptr i8, ptr %2, i32 %[[offset]]466!LLVMIR:  call void @llvm.ppc.vsx.stxvp(<256 x i1> %[[vp]], ptr %[[addr]])467 468      subroutine test_vec_stxvp_vu4_arr(vp, offset, v1)469      integer(8) :: offset470      vector(unsigned(4)) :: v1(11,3)471      __vector_pair :: vp472      call vec_stxvp(vp, offset, v1)473      end subroutine test_vec_stxvp_vu4_arr474 475!CHECK-LABEL: @test_vec_stxvp_vu4_arr_476!LLVMIR:  %[[vp:.*]] = load <256 x i1>, ptr %0, align 32477!LLVMIR:  %[[offset:.*]] = load i64, ptr %1, align 8478!LLVMIR:  %[[addr:.*]] = getelementptr i8, ptr %2, i64 %[[offset]]479!LLVMIR:  call void @llvm.ppc.vsx.stxvp(<256 x i1> %[[vp]], ptr %[[addr]])480 481      subroutine test_vec_stxvp_vr4_arr(vp, offset, v1)482      integer :: offset483      vector(real(4)) :: v1(10)484      __vector_pair :: vp485      call vec_stxvp(vp, offset, v1)486      end subroutine test_vec_stxvp_vr4_arr487 488!CHECK-LABEL: @test_vec_stxvp_vr4_arr_489!LLVMIR:  %[[vp:.*]] = load <256 x i1>, ptr %0, align 32490!LLVMIR:  %[[offset:.*]] = load i32, ptr %1, align 4491!LLVMIR:  %[[addr:.*]] = getelementptr i8, ptr %2, i32 %[[offset]]492!LLVMIR:  call void @llvm.ppc.vsx.stxvp(<256 x i1> %[[vp]], ptr %[[addr]])493 494      subroutine test_vec_stxvp_vr8_arr(vp, offset, v1)495      integer :: offset496      vector(real(8)) :: v1(10)497      __vector_pair :: vp498      call vec_stxvp(vp, offset, v1)499      end subroutine test_vec_stxvp_vr8_arr500 501!CHECK-LABEL: @test_vec_stxvp_vr8_arr_502!LLVMIR:  %[[vp:.*]] = load <256 x i1>, ptr %0, align 32503!LLVMIR:  %[[offset:.*]] = load i32, ptr %1, align 4504!LLVMIR:  %[[addr:.*]] = getelementptr i8, ptr %2, i32 %[[offset]]505!LLVMIR:  call void @llvm.ppc.vsx.stxvp(<256 x i1> %[[vp]], ptr %[[addr]])506 507      subroutine test_vec_stxvp_vp_arr(vp, offset, v1)508      integer :: offset509      __vector_pair :: v1(10)510      __vector_pair :: vp511      call vec_stxvp(vp, offset, v1)512      end subroutine test_vec_stxvp_vp_arr513 514!CHECK-LABEL: @test_vec_stxvp_vp_arr_515!LLVMIR:  %[[vp:.*]] = load <256 x i1>, ptr %0, align 32516!LLVMIR:  %[[offset:.*]] = load i32, ptr %1, align 4517!LLVMIR:  %[[addr:.*]] = getelementptr i8, ptr %2, i32 %[[offset]]518!LLVMIR:  call void @llvm.ppc.vsx.stxvp(<256 x i1> %[[vp]], ptr %[[addr]])519 520!----------------------521! vsx_stxvp522!----------------------523 524      subroutine test_vsx_stxvp_i1(vp, offset, v1)525      integer(1) :: offset526      vector(integer(2)) :: v1527      __vector_pair :: vp528      call vsx_stxvp(vp, offset, v1)529      end subroutine test_vsx_stxvp_i1530 531!CHECK-LABEL: @test_vsx_stxvp_i1_532!LLVMIR:  %[[vp:.*]] = load <256 x i1>, ptr %0, align 32533!LLVMIR:  %[[offset:.*]] = load i8, ptr %1, align 1534!LLVMIR:  %[[addr:.*]] = getelementptr i8, ptr %2, i8 %[[offset]]535!LLVMIR:  call void @llvm.ppc.vsx.stxvp(<256 x i1> %[[vp]], ptr %[[addr]])536 537      subroutine test_vsx_stxvp_vi2(vp, offset, v1)538      integer(2) :: offset539      vector(integer(2)) :: v1540      __vector_pair :: vp541      call vsx_stxvp(vp, offset, v1)542      end subroutine test_vsx_stxvp_vi2543 544!CHECK-LABEL: @test_vsx_stxvp_vi2_545!LLVMIR:  %[[vp:.*]] = load <256 x i1>, ptr %0, align 32546!LLVMIR:  %[[offset:.*]] = load i16, ptr %1, align 2547!LLVMIR:  %[[addr:.*]] = getelementptr i8, ptr %2, i16 %[[offset]]548!LLVMIR:  call void @llvm.ppc.vsx.stxvp(<256 x i1> %[[vp]], ptr %[[addr]])549 550      subroutine test_vsx_stxvp_vr8_arr(vp, offset, v1)551      integer :: offset552      vector(real(8)) :: v1(10)553      __vector_pair :: vp554      call vsx_stxvp(vp, offset, v1)555      end subroutine test_vsx_stxvp_vr8_arr556 557!CHECK-LABEL: @test_vsx_stxvp_vr8_arr_558!LLVMIR:  %[[vp:.*]] = load <256 x i1>, ptr %0, align 32559!LLVMIR:  %[[offset:.*]] = load i32, ptr %1, align 4560!LLVMIR:  %[[addr:.*]] = getelementptr i8, ptr %2, i32 %[[offset]]561!LLVMIR:  call void @llvm.ppc.vsx.stxvp(<256 x i1> %[[vp]], ptr %[[addr]])562 563      subroutine test_vsx_stxvp_vp_arr(vp, offset, v1)564      integer :: offset565      __vector_pair :: v1(10)566      __vector_pair :: vp567      call vsx_stxvp(vp, offset, v1)568      end subroutine test_vsx_stxvp_vp_arr569 570!CHECK-LABEL: @test_vsx_stxvp_vp_arr_571!LLVMIR:  %[[vp:.*]] = load <256 x i1>, ptr %0, align 32572!LLVMIR:  %[[offset:.*]] = load i32, ptr %1, align 4573!LLVMIR:  %[[addr:.*]] = getelementptr i8, ptr %2, i32 %[[offset]]574!LLVMIR:  call void @llvm.ppc.vsx.stxvp(<256 x i1> %[[vp]], ptr %[[addr]])575