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