718 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! mma_assemble_acc5 6 subroutine test_assemble_acc_i1()7 use, intrinsic :: mma8 implicit none9 vector(integer(1)) vi10, vi11, vi12, vi1310 __vector_quad :: cq11 call mma_assemble_acc(cq, vi10, vi11, vi12, vi13)12 end subroutine test_assemble_acc_i113 14! CHECK-LABEL: @test_assemble_acc_i115 16! LLVMIR: %[[VAL_0:.*]] = alloca <16 x i8>, i64 1, align 1617! LLVMIR: %[[VAL_1:.*]] = alloca <16 x i8>, i64 1, align 1618! LLVMIR: %[[VAL_2:.*]] = alloca <16 x i8>, i64 1, align 1619! LLVMIR: %[[VAL_3:.*]] = alloca <16 x i8>, i64 1, align 1620! LLVMIR: %[[VAL_4:.*]] = alloca <512 x i1>, i64 1, align 6421! LLVMIR: %[[VAL_5:.*]] = load <16 x i8>, ptr %[[VAL_3]], align 1622! LLVMIR: %[[VAL_6:.*]] = load <16 x i8>, ptr %[[VAL_2]], align 1623! LLVMIR: %[[VAL_7:.*]] = load <16 x i8>, ptr %[[VAL_1]], align 1624! LLVMIR: %[[VAL_8:.*]] = load <16 x i8>, ptr %[[VAL_0]], align 1625! LLVMIR: %[[VAL_9:.*]] = call <512 x i1> @llvm.ppc.mma.assemble.acc(<16 x i8> %[[VAL_5]], <16 x i8> %[[VAL_6]], <16 x i8> %[[VAL_7]], <16 x i8> %[[VAL_8]])26! LLVMIR: store <512 x i1> %[[VAL_9]], ptr %[[VAL_4]], align 6427 28 subroutine test_assemble_acc_i2()29 use, intrinsic :: mma30 implicit none31 vector(integer(2)) vi10, vi11, vi12, vi1332 __vector_quad :: cq33 call mma_assemble_acc(cq, vi10, vi11, vi12, vi13)34 end subroutine test_assemble_acc_i235 36! CHECK-LABEL: @test_assemble_acc_i237! LLVMIR: %[[VAL_10:.*]] = alloca <8 x i16>, i64 1, align 1638! LLVMIR: %[[VAL_11:.*]] = alloca <8 x i16>, i64 1, align 1639! LLVMIR: %[[VAL_12:.*]] = alloca <8 x i16>, i64 1, align 1640! LLVMIR: %[[VAL_13:.*]] = alloca <8 x i16>, i64 1, align 1641! LLVMIR: %[[VAL_14:.*]] = alloca <512 x i1>, i64 1, align 6442! LLVMIR: %[[VAL_15:.*]] = load <8 x i16>, ptr %[[VAL_13]], align 1643! LLVMIR: %[[VAL_16:.*]] = load <8 x i16>, ptr %[[VAL_12]], align 1644! LLVMIR: %[[VAL_17:.*]] = load <8 x i16>, ptr %[[VAL_11]], align 1645! LLVMIR: %[[VAL_18:.*]] = load <8 x i16>, ptr %[[VAL_10]], align 1646! LLVMIR: %[[VAL_19:.*]] = bitcast <8 x i16> %[[VAL_15]] to <16 x i8>47! LLVMIR: %[[VAL_20:.*]] = bitcast <8 x i16> %[[VAL_16]] to <16 x i8>48! LLVMIR: %[[VAL_21:.*]] = bitcast <8 x i16> %[[VAL_17]] to <16 x i8>49! LLVMIR: %[[VAL_22:.*]] = bitcast <8 x i16> %[[VAL_18]] to <16 x i8>50! LLVMIR: %[[VAL_23:.*]] = call <512 x i1> @llvm.ppc.mma.assemble.acc(<16 x i8> %[[VAL_19]], <16 x i8> %[[VAL_20]], <16 x i8> %[[VAL_21]], <16 x i8> %[[VAL_22]])51! LLVMIR: store <512 x i1> %[[VAL_23]], ptr %[[VAL_14]], align 6452 53 54 subroutine test_assemble_acc_i4()55 use, intrinsic :: mma56 implicit none57 vector(integer(4)) vi10, vi11, vi12, vi1358 __vector_quad :: cq59 call mma_assemble_acc(cq, vi10, vi11, vi12, vi13)60 end subroutine test_assemble_acc_i461 62! CHECK-LABEL: @test_assemble_acc_i463! LLVMIR: %[[VAL_24:.*]] = alloca <4 x i32>, i64 1, align 1664! LLVMIR: %[[VAL_25:.*]] = alloca <4 x i32>, i64 1, align 1665! LLVMIR: %[[VAL_26:.*]] = alloca <4 x i32>, i64 1, align 1666! LLVMIR: %[[VAL_27:.*]] = alloca <4 x i32>, i64 1, align 1667! LLVMIR: %[[VAL_28:.*]] = alloca <512 x i1>, i64 1, align 6468! LLVMIR: %[[VAL_29:.*]] = load <4 x i32>, ptr %[[VAL_27]], align 1669! LLVMIR: %[[VAL_30:.*]] = load <4 x i32>, ptr %[[VAL_26]], align 1670! LLVMIR: %[[VAL_31:.*]] = load <4 x i32>, ptr %[[VAL_25]], align 1671! LLVMIR: %[[VAL_32:.*]] = load <4 x i32>, ptr %[[VAL_24]], align 1672! LLVMIR: %[[VAL_33:.*]] = bitcast <4 x i32> %[[VAL_29]] to <16 x i8>73! LLVMIR: %[[VAL_34:.*]] = bitcast <4 x i32> %[[VAL_30]] to <16 x i8>74! LLVMIR: %[[VAL_35:.*]] = bitcast <4 x i32> %[[VAL_31]] to <16 x i8>75! LLVMIR: %[[VAL_36:.*]] = bitcast <4 x i32> %[[VAL_32]] to <16 x i8>76! LLVMIR: %[[VAL_37:.*]] = call <512 x i1> @llvm.ppc.mma.assemble.acc(<16 x i8> %[[VAL_33]], <16 x i8> %[[VAL_34]], <16 x i8> %[[VAL_35]], <16 x i8> %[[VAL_36]])77! LLVMIR: store <512 x i1> %[[VAL_37]], ptr %[[VAL_28]], align 6478 79 subroutine test_assemble_acc_i8()80 use, intrinsic :: mma81 implicit none82 vector(integer(8)) vi10, vi11, vi12, vi1383 __vector_quad :: cq84 call mma_assemble_acc(cq, vi10, vi11, vi12, vi13)85 end subroutine test_assemble_acc_i886 87! CHECK-LABEL: @test_assemble_acc_i888! LLVMIR: %[[VAL_38:.*]] = alloca <2 x i64>, i64 1, align 1689! LLVMIR: %[[VAL_39:.*]] = alloca <2 x i64>, i64 1, align 1690! LLVMIR: %[[VAL_40:.*]] = alloca <2 x i64>, i64 1, align 1691! LLVMIR: %[[VAL_41:.*]] = alloca <2 x i64>, i64 1, align 1692! LLVMIR: %[[VAL_42:.*]] = alloca <512 x i1>, i64 1, align 6493! LLVMIR: %[[VAL_43:.*]] = load <2 x i64>, ptr %[[VAL_41]], align 1694! LLVMIR: %[[VAL_44:.*]] = load <2 x i64>, ptr %[[VAL_40]], align 1695! LLVMIR: %[[VAL_45:.*]] = load <2 x i64>, ptr %[[VAL_39]], align 1696! LLVMIR: %[[VAL_46:.*]] = load <2 x i64>, ptr %[[VAL_38]], align 1697! LLVMIR: %[[VAL_47:.*]] = bitcast <2 x i64> %[[VAL_43]] to <16 x i8>98! LLVMIR: %[[VAL_48:.*]] = bitcast <2 x i64> %[[VAL_44]] to <16 x i8>99! LLVMIR: %[[VAL_49:.*]] = bitcast <2 x i64> %[[VAL_45]] to <16 x i8>100! LLVMIR: %[[VAL_50:.*]] = bitcast <2 x i64> %[[VAL_46]] to <16 x i8>101! LLVMIR: %[[VAL_51:.*]] = call <512 x i1> @llvm.ppc.mma.assemble.acc(<16 x i8> %[[VAL_47]], <16 x i8> %[[VAL_48]], <16 x i8> %[[VAL_49]], <16 x i8> %[[VAL_50]])102! LLVMIR: store <512 x i1> %[[VAL_51]], ptr %[[VAL_42]], align 64103 104 105 subroutine test_assemble_acc_u1()106 use, intrinsic :: mma107 implicit none108 vector(unsigned(1)) vi10, vi11, vi12, vi13109 __vector_quad :: cq110 call mma_assemble_acc(cq, vi10, vi11, vi12, vi13)111 end subroutine test_assemble_acc_u1112 113! CHECK-LABEL: @test_assemble_acc_u1114! LLVMIR: %[[VAL_52:.*]] = alloca <16 x i8>, i64 1, align 16115! LLVMIR: %[[VAL_53:.*]] = alloca <16 x i8>, i64 1, align 16116! LLVMIR: %[[VAL_54:.*]] = alloca <16 x i8>, i64 1, align 16117! LLVMIR: %[[VAL_55:.*]] = alloca <16 x i8>, i64 1, align 16118! LLVMIR: %[[VAL_56:.*]] = alloca <512 x i1>, i64 1, align 64119! LLVMIR: %[[VAL_57:.*]] = load <16 x i8>, ptr %[[VAL_55]], align 16120! LLVMIR: %[[VAL_58:.*]] = load <16 x i8>, ptr %[[VAL_54]], align 16121! LLVMIR: %[[VAL_59:.*]] = load <16 x i8>, ptr %[[VAL_53]], align 16122! LLVMIR: %[[VAL_60:.*]] = load <16 x i8>, ptr %[[VAL_52]], align 16123! LLVMIR: %[[VAL_61:.*]] = call <512 x i1> @llvm.ppc.mma.assemble.acc(<16 x i8> %[[VAL_57]], <16 x i8> %[[VAL_58]], <16 x i8> %[[VAL_59]], <16 x i8> %[[VAL_60]])124! LLVMIR: store <512 x i1> %[[VAL_61]], ptr %[[VAL_56]], align 64125 126 subroutine test_assemble_acc_u2()127 use, intrinsic :: mma128 implicit none129 vector(unsigned(2)) vi10, vi11, vi12, vi13130 __vector_quad :: cq131 call mma_assemble_acc(cq, vi10, vi11, vi12, vi13)132 end subroutine test_assemble_acc_u2133 134! CHECK-LABEL: @test_assemble_acc_u2135! LLVMIR: %[[VAL_62:.*]] = alloca <8 x i16>, i64 1, align 16136! LLVMIR: %[[VAL_63:.*]] = alloca <8 x i16>, i64 1, align 16137! LLVMIR: %[[VAL_64:.*]] = alloca <8 x i16>, i64 1, align 16138! LLVMIR: %[[VAL_65:.*]] = alloca <8 x i16>, i64 1, align 16139! LLVMIR: %[[VAL_66:.*]] = alloca <512 x i1>, i64 1, align 64140! LLVMIR: %[[VAL_67:.*]] = load <8 x i16>, ptr %[[VAL_65]], align 16141! LLVMIR: %[[VAL_68:.*]] = load <8 x i16>, ptr %[[VAL_64]], align 16142! LLVMIR: %[[VAL_69:.*]] = load <8 x i16>, ptr %[[VAL_63]], align 16143! LLVMIR: %[[VAL_70:.*]] = load <8 x i16>, ptr %[[VAL_62]], align 16144! LLVMIR: %[[VAL_71:.*]] = bitcast <8 x i16> %[[VAL_67]] to <16 x i8>145! LLVMIR: %[[VAL_72:.*]] = bitcast <8 x i16> %[[VAL_68]] to <16 x i8>146! LLVMIR: %[[VAL_73:.*]] = bitcast <8 x i16> %[[VAL_69]] to <16 x i8>147! LLVMIR: %[[VAL_74:.*]] = bitcast <8 x i16> %[[VAL_70]] to <16 x i8>148! LLVMIR: %[[VAL_75:.*]] = call <512 x i1> @llvm.ppc.mma.assemble.acc(<16 x i8> %[[VAL_71]], <16 x i8> %[[VAL_72]], <16 x i8> %[[VAL_73]], <16 x i8> %[[VAL_74]])149! LLVMIR: store <512 x i1> %[[VAL_75]], ptr %[[VAL_66]], align 64150 151 subroutine test_assemble_acc_u4()152 use, intrinsic :: mma153 implicit none154 vector(unsigned(4)) vi10, vi11, vi12, vi13155 __vector_quad :: cq156 call mma_assemble_acc(cq, vi10, vi11, vi12, vi13)157 end subroutine test_assemble_acc_u4158 159! CHECK-LABEL: @test_assemble_acc_u4160! LLVMIR: %[[VAL_76:.*]] = alloca <4 x i32>, i64 1, align 16161! LLVMIR: %[[VAL_77:.*]] = alloca <4 x i32>, i64 1, align 16162! LLVMIR: %[[VAL_78:.*]] = alloca <4 x i32>, i64 1, align 16163! LLVMIR: %[[VAL_79:.*]] = alloca <4 x i32>, i64 1, align 16164! LLVMIR: %[[VAL_80:.*]] = alloca <512 x i1>, i64 1, align 64165! LLVMIR: %[[VAL_81:.*]] = load <4 x i32>, ptr %[[VAL_79]], align 16166! LLVMIR: %[[VAL_82:.*]] = load <4 x i32>, ptr %[[VAL_78]], align 16167! LLVMIR: %[[VAL_83:.*]] = load <4 x i32>, ptr %[[VAL_77]], align 16168! LLVMIR: %[[VAL_84:.*]] = load <4 x i32>, ptr %[[VAL_76]], align 16169! LLVMIR: %[[VAL_85:.*]] = bitcast <4 x i32> %[[VAL_81]] to <16 x i8>170! LLVMIR: %[[VAL_86:.*]] = bitcast <4 x i32> %[[VAL_82]] to <16 x i8>171! LLVMIR: %[[VAL_87:.*]] = bitcast <4 x i32> %[[VAL_83]] to <16 x i8>172! LLVMIR: %[[VAL_88:.*]] = bitcast <4 x i32> %[[VAL_84]] to <16 x i8>173! LLVMIR: %[[VAL_89:.*]] = call <512 x i1> @llvm.ppc.mma.assemble.acc(<16 x i8> %[[VAL_85]], <16 x i8> %[[VAL_86]], <16 x i8> %[[VAL_87]], <16 x i8> %[[VAL_88]])174! LLVMIR: store <512 x i1> %[[VAL_89]], ptr %[[VAL_80]], align 64175 176 subroutine test_assemble_acc_u8()177 use, intrinsic :: mma178 implicit none179 vector(unsigned(8)) vi10, vi11, vi12, vi13180 __vector_quad :: cq181 call mma_assemble_acc(cq, vi10, vi11, vi12, vi13)182 end subroutine test_assemble_acc_u8183 184! CHECK-LABEL: @test_assemble_acc_u8185! LLVMIR: %[[VAL_90:.*]] = alloca <2 x i64>, i64 1, align 16186! LLVMIR: %[[VAL_91:.*]] = alloca <2 x i64>, i64 1, align 16187! LLVMIR: %[[VAL_92:.*]] = alloca <2 x i64>, i64 1, align 16188! LLVMIR: %[[VAL_93:.*]] = alloca <2 x i64>, i64 1, align 16189! LLVMIR: %[[VAL_94:.*]] = alloca <512 x i1>, i64 1, align 64190! LLVMIR: %[[VAL_95:.*]] = load <2 x i64>, ptr %[[VAL_93]], align 16191! LLVMIR: %[[VAL_96:.*]] = load <2 x i64>, ptr %[[VAL_92]], align 16192! LLVMIR: %[[VAL_97:.*]] = load <2 x i64>, ptr %[[VAL_91]], align 16193! LLVMIR: %[[VAL_98:.*]] = load <2 x i64>, ptr %[[VAL_90]], align 16194! LLVMIR: %[[VAL_99:.*]] = bitcast <2 x i64> %[[VAL_95]] to <16 x i8>195! LLVMIR: %[[VAL_100:.*]] = bitcast <2 x i64> %[[VAL_96]] to <16 x i8>196! LLVMIR: %[[VAL_101:.*]] = bitcast <2 x i64> %[[VAL_97]] to <16 x i8>197! LLVMIR: %[[VAL_102:.*]] = bitcast <2 x i64> %[[VAL_98]] to <16 x i8>198! LLVMIR: %[[VAL_103:.*]] = call <512 x i1> @llvm.ppc.mma.assemble.acc(<16 x i8> %[[VAL_99]], <16 x i8> %[[VAL_100]], <16 x i8> %[[VAL_101]], <16 x i8> %[[VAL_102]])199! LLVMIR: store <512 x i1> %[[VAL_103]], ptr %[[VAL_94]], align 64200 201 subroutine test_assemble_acc_r4()202 use, intrinsic :: mma203 implicit none204 vector(real(4)) vi10, vi11, vi12, vi13205 __vector_quad :: cq206 call mma_assemble_acc(cq, vi10, vi11, vi12, vi13)207 end subroutine test_assemble_acc_r4208 209! CHECK-LABEL: @test_assemble_acc_r4210! LLVMIR: %[[VAL_104:.*]] = alloca <4 x float>, i64 1, align 16211! LLVMIR: %[[VAL_105:.*]] = alloca <4 x float>, i64 1, align 16212! LLVMIR: %[[VAL_106:.*]] = alloca <4 x float>, i64 1, align 16213! LLVMIR: %[[VAL_107:.*]] = alloca <4 x float>, i64 1, align 16214! LLVMIR: %[[VAL_108:.*]] = alloca <512 x i1>, i64 1, align 64215! LLVMIR: %[[VAL_109:.*]] = load <4 x float>, ptr %[[VAL_107]], align 16216! LLVMIR: %[[VAL_110:.*]] = load <4 x float>, ptr %[[VAL_106]], align 16217! LLVMIR: %[[VAL_111:.*]] = load <4 x float>, ptr %[[VAL_105]], align 16218! LLVMIR: %[[VAL_112:.*]] = load <4 x float>, ptr %[[VAL_104]], align 16219! LLVMIR: %[[VAL_113:.*]] = bitcast <4 x float> %[[VAL_109]] to <16 x i8>220! LLVMIR: %[[VAL_114:.*]] = bitcast <4 x float> %[[VAL_110]] to <16 x i8>221! LLVMIR: %[[VAL_115:.*]] = bitcast <4 x float> %[[VAL_111]] to <16 x i8>222! LLVMIR: %[[VAL_116:.*]] = bitcast <4 x float> %[[VAL_112]] to <16 x i8>223! LLVMIR: %[[VAL_117:.*]] = call <512 x i1> @llvm.ppc.mma.assemble.acc(<16 x i8> %[[VAL_113]], <16 x i8> %[[VAL_114]], <16 x i8> %[[VAL_115]], <16 x i8> %[[VAL_116]])224! LLVMIR: store <512 x i1> %[[VAL_117]], ptr %[[VAL_108]], align 64225 226 subroutine test_assemble_acc_r8()227 use, intrinsic :: mma228 implicit none229 vector(real(8)) vi10, vi11, vi12, vi13230 __vector_quad :: cq231 call mma_assemble_acc(cq, vi10, vi11, vi12, vi13)232 end subroutine test_assemble_acc_r8233 234!CHECK-LABEL: @test_assemble_acc_r8235! LLVMIR: %[[VAL_118:.*]] = alloca <2 x double>, i64 1, align 16236! LLVMIR: %[[VAL_119:.*]] = alloca <2 x double>, i64 1, align 16237! LLVMIR: %[[VAL_120:.*]] = alloca <2 x double>, i64 1, align 16238! LLVMIR: %[[VAL_121:.*]] = alloca <2 x double>, i64 1, align 16239! LLVMIR: %[[VAL_122:.*]] = alloca <512 x i1>, i64 1, align 64240! LLVMIR: %[[VAL_123:.*]] = load <2 x double>, ptr %[[VAL_121]], align 16241! LLVMIR: %[[VAL_124:.*]] = load <2 x double>, ptr %[[VAL_120]], align 16242! LLVMIR: %[[VAL_125:.*]] = load <2 x double>, ptr %[[VAL_119]], align 16243! LLVMIR: %[[VAL_126:.*]] = load <2 x double>, ptr %[[VAL_118]], align 16244! LLVMIR: %[[VAL_127:.*]] = bitcast <2 x double> %[[VAL_123]] to <16 x i8>245! LLVMIR: %[[VAL_128:.*]] = bitcast <2 x double> %[[VAL_124]] to <16 x i8>246! LLVMIR: %[[VAL_129:.*]] = bitcast <2 x double> %[[VAL_125]] to <16 x i8>247! LLVMIR: %[[VAL_130:.*]] = bitcast <2 x double> %[[VAL_126]] to <16 x i8>248! LLVMIR: %[[VAL_131:.*]] = call <512 x i1> @llvm.ppc.mma.assemble.acc(<16 x i8> %[[VAL_127]], <16 x i8> %[[VAL_128]], <16 x i8> %[[VAL_129]], <16 x i8> %[[VAL_130]])249! LLVMIR: store <512 x i1> %[[VAL_131]], ptr %[[VAL_122]], align 64250 251! mma_assemble_pair252 253 subroutine test_mma_assemble_pair_i1()254 use, intrinsic :: mma255 implicit none256 vector(integer(1)) vi10, vi11257 __vector_pair :: vp258 call mma_assemble_pair(vp, vi10, vi11)259 end subroutine test_mma_assemble_pair_i1260 261!LLVMIR: @test_mma_assemble_pair_i1_262! LLVMIR: %[[VAL_132:.*]] = alloca <256 x i1>, i64 1, align 32263! LLVMIR: %[[VAL_133:.*]] = alloca <16 x i8>, i64 1, align 16264! LLVMIR: %[[VAL_134:.*]] = alloca <16 x i8>, i64 1, align 16265! LLVMIR: %[[VAL_135:.*]] = load <16 x i8>, ptr %[[VAL_134]], align 16266! LLVMIR: %[[VAL_136:.*]] = load <16 x i8>, ptr %[[VAL_133]], align 16267! LLVMIR: %[[VAL_137:.*]] = call <256 x i1> @llvm.ppc.vsx.assemble.pair(<16 x i8> %[[VAL_135]], <16 x i8> %[[VAL_136]])268! LLVMIR: store <256 x i1> %[[VAL_137]], ptr %[[VAL_132]], align 32269 270 subroutine test_mma_assemble_pair_i2()271 use, intrinsic :: mma272 implicit none273 vector(integer(2)) vi10, vi11274 __vector_pair :: vp275 call mma_assemble_pair(vp, vi10, vi11)276 end subroutine test_mma_assemble_pair_i2277 278!LLVMIR: @test_mma_assemble_pair_i2_279! LLVMIR: %[[VAL_138:.*]] = alloca <256 x i1>, i64 1, align 32280! LLVMIR: %[[VAL_139:.*]] = alloca <8 x i16>, i64 1, align 16281! LLVMIR: %[[VAL_140:.*]] = alloca <8 x i16>, i64 1, align 16282! LLVMIR: %[[VAL_141:.*]] = load <8 x i16>, ptr %[[VAL_140]], align 16283! LLVMIR: %[[VAL_142:.*]] = load <8 x i16>, ptr %[[VAL_139]], align 16284! LLVMIR: %[[VAL_143:.*]] = bitcast <8 x i16> %[[VAL_141]] to <16 x i8>285! LLVMIR: %[[VAL_144:.*]] = bitcast <8 x i16> %[[VAL_142]] to <16 x i8>286! LLVMIR: %[[VAL_145:.*]] = call <256 x i1> @llvm.ppc.vsx.assemble.pair(<16 x i8> %[[VAL_143]], <16 x i8> %[[VAL_144]])287! LLVMIR: store <256 x i1> %[[VAL_145]], ptr %[[VAL_138]], align 32288 289 subroutine test_mma_assemble_pair_i4()290 use, intrinsic :: mma291 implicit none292 vector(integer(4)) vi10, vi11293 __vector_pair :: vp294 call mma_assemble_pair(vp, vi10, vi11)295 end subroutine test_mma_assemble_pair_i4296 297!LLVMIR: @test_mma_assemble_pair_i4_298! LLVMIR: %[[VAL_146:.*]] = alloca <256 x i1>, i64 1, align 32299! LLVMIR: %[[VAL_147:.*]] = alloca <4 x i32>, i64 1, align 16300! LLVMIR: %[[VAL_148:.*]] = alloca <4 x i32>, i64 1, align 16301! LLVMIR: %[[VAL_149:.*]] = load <4 x i32>, ptr %[[VAL_148]], align 16302! LLVMIR: %[[VAL_150:.*]] = load <4 x i32>, ptr %[[VAL_147]], align 16303! LLVMIR: %[[VAL_151:.*]] = bitcast <4 x i32> %[[VAL_149]] to <16 x i8>304! LLVMIR: %[[VAL_152:.*]] = bitcast <4 x i32> %[[VAL_150]] to <16 x i8>305! LLVMIR: %[[VAL_153:.*]] = call <256 x i1> @llvm.ppc.vsx.assemble.pair(<16 x i8> %[[VAL_151]], <16 x i8> %[[VAL_152]])306! LLVMIR: store <256 x i1> %[[VAL_153]], ptr %[[VAL_146]], align 32307 308 subroutine test_mma_assemble_pair_i8()309 use, intrinsic :: mma310 implicit none311 vector(integer(8)) vi10, vi11312 __vector_pair :: vp313 call mma_assemble_pair(vp, vi10, vi11)314 end subroutine test_mma_assemble_pair_i8315 316!LLVMIR: @test_mma_assemble_pair_i8_317! LLVMIR: %[[VAL_154:.*]] = alloca <256 x i1>, i64 1, align 32318! LLVMIR: %[[VAL_155:.*]] = alloca <2 x i64>, i64 1, align 16319! LLVMIR: %[[VAL_156:.*]] = alloca <2 x i64>, i64 1, align 16320! LLVMIR: %[[VAL_157:.*]] = load <2 x i64>, ptr %[[VAL_156]], align 16321! LLVMIR: %[[VAL_158:.*]] = load <2 x i64>, ptr %[[VAL_155]], align 16322! LLVMIR: %[[VAL_159:.*]] = bitcast <2 x i64> %[[VAL_157]] to <16 x i8>323! LLVMIR: %[[VAL_160:.*]] = bitcast <2 x i64> %[[VAL_158]] to <16 x i8>324! LLVMIR: %[[VAL_161:.*]] = call <256 x i1> @llvm.ppc.vsx.assemble.pair(<16 x i8> %[[VAL_159]], <16 x i8> %[[VAL_160]])325! LLVMIR: store <256 x i1> %[[VAL_161]], ptr %[[VAL_154]], align 32326 327 subroutine test_mma_assemble_pair_u1()328 use, intrinsic :: mma329 implicit none330 vector(unsigned(1)) vi10, vi11331 __vector_pair :: vp332 call mma_assemble_pair(vp, vi10, vi11)333 end subroutine test_mma_assemble_pair_u1334 335!LLVMIR: @test_mma_assemble_pair_u1_336! LLVMIR: %[[VAL_162:.*]] = alloca <256 x i1>, i64 1, align 32337! LLVMIR: %[[VAL_163:.*]] = alloca <16 x i8>, i64 1, align 16338! LLVMIR: %[[VAL_164:.*]] = alloca <16 x i8>, i64 1, align 16339! LLVMIR: %[[VAL_165:.*]] = load <16 x i8>, ptr %[[VAL_164]], align 16340! LLVMIR: %[[VAL_166:.*]] = load <16 x i8>, ptr %[[VAL_163]], align 16341! LLVMIR: %[[VAL_167:.*]] = call <256 x i1> @llvm.ppc.vsx.assemble.pair(<16 x i8> %[[VAL_165]], <16 x i8> %[[VAL_166]])342! LLVMIR: store <256 x i1> %[[VAL_167]], ptr %[[VAL_162]], align 32343 344 subroutine test_mma_assemble_pair_u2()345 use, intrinsic :: mma346 implicit none347 vector(unsigned(2)) vi10, vi11348 __vector_pair :: vp349 call mma_assemble_pair(vp, vi10, vi11)350 end subroutine test_mma_assemble_pair_u2351 352!LLVMIR: @test_mma_assemble_pair_u2_353! LLVMIR: %[[VAL_168:.*]] = alloca <256 x i1>, i64 1, align 32354! LLVMIR: %[[VAL_169:.*]] = alloca <8 x i16>, i64 1, align 16355! LLVMIR: %[[VAL_170:.*]] = alloca <8 x i16>, i64 1, align 16356! LLVMIR: %[[VAL_171:.*]] = load <8 x i16>, ptr %[[VAL_170]], align 16357! LLVMIR: %[[VAL_172:.*]] = load <8 x i16>, ptr %[[VAL_169]], align 16358! LLVMIR: %[[VAL_173:.*]] = bitcast <8 x i16> %[[VAL_171]] to <16 x i8>359! LLVMIR: %[[VAL_174:.*]] = bitcast <8 x i16> %[[VAL_172]] to <16 x i8>360! LLVMIR: %[[VAL_175:.*]] = call <256 x i1> @llvm.ppc.vsx.assemble.pair(<16 x i8> %[[VAL_173]], <16 x i8> %[[VAL_174]])361! LLVMIR: store <256 x i1> %[[VAL_175]], ptr %[[VAL_168]], align 32362 363 subroutine test_mma_assemble_pair_u4()364 use, intrinsic :: mma365 implicit none366 vector(unsigned(4)) vi10, vi11367 __vector_pair :: vp368 call mma_assemble_pair(vp, vi10, vi11)369 end subroutine test_mma_assemble_pair_u4370 371!LLVMIR: @test_mma_assemble_pair_u4_372! LLVMIR: %[[VAL_176:.*]] = alloca <256 x i1>, i64 1, align 32373! LLVMIR: %[[VAL_177:.*]] = alloca <4 x i32>, i64 1, align 16374! LLVMIR: %[[VAL_178:.*]] = alloca <4 x i32>, i64 1, align 16375! LLVMIR: %[[VAL_179:.*]] = load <4 x i32>, ptr %[[VAL_178]], align 16376! LLVMIR: %[[VAL_180:.*]] = load <4 x i32>, ptr %[[VAL_177]], align 16377! LLVMIR: %[[VAL_181:.*]] = bitcast <4 x i32> %[[VAL_179]] to <16 x i8>378! LLVMIR: %[[VAL_182:.*]] = bitcast <4 x i32> %[[VAL_180]] to <16 x i8>379! LLVMIR: %[[VAL_183:.*]] = call <256 x i1> @llvm.ppc.vsx.assemble.pair(<16 x i8> %[[VAL_181]], <16 x i8> %[[VAL_182]])380! LLVMIR: store <256 x i1> %[[VAL_183]], ptr %[[VAL_176]], align 32381 382 subroutine test_mma_assemble_pair_u8()383 use, intrinsic :: mma384 implicit none385 vector(unsigned(8)) vi10, vi11386 __vector_pair :: vp387 call mma_assemble_pair(vp, vi10, vi11)388 end subroutine test_mma_assemble_pair_u8389 390!LLVMIR: @test_mma_assemble_pair_u8_391! LLVMIR: %[[VAL_184:.*]] = alloca <256 x i1>, i64 1, align 32392! LLVMIR: %[[VAL_185:.*]] = alloca <2 x i64>, i64 1, align 16393! LLVMIR: %[[VAL_186:.*]] = alloca <2 x i64>, i64 1, align 16394! LLVMIR: %[[VAL_187:.*]] = load <2 x i64>, ptr %[[VAL_186]], align 16395! LLVMIR: %[[VAL_188:.*]] = load <2 x i64>, ptr %[[VAL_185]], align 16396! LLVMIR: %[[VAL_189:.*]] = bitcast <2 x i64> %[[VAL_187]] to <16 x i8>397! LLVMIR: %[[VAL_190:.*]] = bitcast <2 x i64> %[[VAL_188]] to <16 x i8>398! LLVMIR: %[[VAL_191:.*]] = call <256 x i1> @llvm.ppc.vsx.assemble.pair(<16 x i8> %[[VAL_189]], <16 x i8> %[[VAL_190]])399! LLVMIR: store <256 x i1> %[[VAL_191]], ptr %[[VAL_184]], align 32400 401 subroutine test_mma_assemble_pair_r4()402 use, intrinsic :: mma403 implicit none404 vector(real(4)) vi10, vi11405 __vector_pair :: vp406 call mma_assemble_pair(vp, vi10, vi11)407 end subroutine test_mma_assemble_pair_r4408 409!LLVMIR: @test_mma_assemble_pair_r4_410! LLVMIR: %[[VAL_192:.*]] = alloca <256 x i1>, i64 1, align 32411! LLVMIR: %[[VAL_193:.*]] = alloca <4 x float>, i64 1, align 16412! LLVMIR: %[[VAL_194:.*]] = alloca <4 x float>, i64 1, align 16413! LLVMIR: %[[VAL_195:.*]] = load <4 x float>, ptr %[[VAL_194]], align 16414! LLVMIR: %[[VAL_196:.*]] = load <4 x float>, ptr %[[VAL_193]], align 16415! LLVMIR: %[[VAL_197:.*]] = bitcast <4 x float> %[[VAL_195]] to <16 x i8>416! LLVMIR: %[[VAL_198:.*]] = bitcast <4 x float> %[[VAL_196]] to <16 x i8>417! LLVMIR: %[[VAL_199:.*]] = call <256 x i1> @llvm.ppc.vsx.assemble.pair(<16 x i8> %[[VAL_197]], <16 x i8> %[[VAL_198]])418! LLVMIR: store <256 x i1> %[[VAL_199]], ptr %[[VAL_192]], align 32419 420 subroutine test_mma_assemble_pair_r8()421 use, intrinsic :: mma422 implicit none423 vector(real(8)) vi10, vi11424 __vector_pair :: vp425 call mma_assemble_pair(vp, vi10, vi11)426 end subroutine test_mma_assemble_pair_r8427 428!LLVMIR: @test_mma_assemble_pair_r8_429! LLVMIR: %[[VAL_200:.*]] = alloca <256 x i1>, i64 1, align 32430! LLVMIR: %[[VAL_201:.*]] = alloca <2 x double>, i64 1, align 16431! LLVMIR: %[[VAL_202:.*]] = alloca <2 x double>, i64 1, align 16432! LLVMIR: %[[VAL_203:.*]] = load <2 x double>, ptr %[[VAL_202]], align 16433! LLVMIR: %[[VAL_204:.*]] = load <2 x double>, ptr %[[VAL_201]], align 16434! LLVMIR: %[[VAL_205:.*]] = bitcast <2 x double> %[[VAL_203]] to <16 x i8>435! LLVMIR: %[[VAL_206:.*]] = bitcast <2 x double> %[[VAL_204]] to <16 x i8>436! LLVMIR: %[[VAL_207:.*]] = call <256 x i1> @llvm.ppc.vsx.assemble.pair(<16 x i8> %[[VAL_205]], <16 x i8> %[[VAL_206]])437! LLVMIR: store <256 x i1> %[[VAL_207]], ptr %[[VAL_200]], align 32438 439! mma_disassemble_acc440 441 subroutine test_mma_build_acc_i1()442 use, intrinsic :: mma443 implicit none444 vector(integer(1)) vi10, vi11, vi12, vi13445 __vector_quad :: cq446 call mma_build_acc(cq, vi10, vi11, vi12, vi13)447 end subroutine test_mma_build_acc_i1448 449!CHECK-LABEL: @test_mma_build_acc_i1450! LLVMIR: %[[VAL_208:.*]] = alloca <16 x i8>, i64 1, align 16451! LLVMIR: %[[VAL_209:.*]] = alloca <16 x i8>, i64 1, align 16452! LLVMIR: %[[VAL_210:.*]] = alloca <16 x i8>, i64 1, align 16453! LLVMIR: %[[VAL_211:.*]] = alloca <16 x i8>, i64 1, align 16454! LLVMIR: %[[VAL_212:.*]] = alloca <512 x i1>, i64 1, align 64455! LLVMIR: %[[VAL_213:.*]] = load <16 x i8>, ptr %[[VAL_211]], align 16456! LLVMIR: %[[VAL_214:.*]] = load <16 x i8>, ptr %[[VAL_210]], align 16457! LLVMIR: %[[VAL_215:.*]] = load <16 x i8>, ptr %[[VAL_209]], align 16458! LLVMIR: %[[VAL_216:.*]] = load <16 x i8>, ptr %[[VAL_208]], align 16459! LLVMIR: %[[VAL_217:.*]] = call <512 x i1> @llvm.ppc.mma.assemble.acc(<16 x i8> %[[VAL_216]], <16 x i8> %[[VAL_215]], <16 x i8> %[[VAL_214]], <16 x i8> %[[VAL_213]])460! LLVMIR: store <512 x i1> %[[VAL_217]], ptr %[[VAL_212]], align 64461 462 subroutine test_mma_build_acc_i2()463 use, intrinsic :: mma464 implicit none465 vector(integer(2)) vi10, vi11, vi12, vi13466 __vector_quad :: cq467 call mma_build_acc(cq, vi10, vi11, vi12, vi13)468 end subroutine test_mma_build_acc_i2469 470!CHECK-LABEL: @test_mma_build_acc_i2471! LLVMIR: %[[VAL_218:.*]] = alloca <8 x i16>, i64 1, align 16472! LLVMIR: %[[VAL_219:.*]] = alloca <8 x i16>, i64 1, align 16473! LLVMIR: %[[VAL_220:.*]] = alloca <8 x i16>, i64 1, align 16474! LLVMIR: %[[VAL_221:.*]] = alloca <8 x i16>, i64 1, align 16475! LLVMIR: %[[VAL_222:.*]] = alloca <512 x i1>, i64 1, align 64476! LLVMIR: %[[VAL_223:.*]] = load <8 x i16>, ptr %[[VAL_221]], align 16477! LLVMIR: %[[VAL_224:.*]] = load <8 x i16>, ptr %[[VAL_220]], align 16478! LLVMIR: %[[VAL_225:.*]] = load <8 x i16>, ptr %[[VAL_219]], align 16479! LLVMIR: %[[VAL_226:.*]] = load <8 x i16>, ptr %[[VAL_218]], align 16480! LLVMIR: %[[VAL_227:.*]] = bitcast <8 x i16> %[[VAL_226]] to <16 x i8>481! LLVMIR: %[[VAL_228:.*]] = bitcast <8 x i16> %[[VAL_225]] to <16 x i8>482! LLVMIR: %[[VAL_229:.*]] = bitcast <8 x i16> %[[VAL_224]] to <16 x i8>483! LLVMIR: %[[VAL_230:.*]] = bitcast <8 x i16> %[[VAL_223]] to <16 x i8>484! LLVMIR: %[[VAL_231:.*]] = call <512 x i1> @llvm.ppc.mma.assemble.acc(<16 x i8> %[[VAL_227]], <16 x i8> %[[VAL_228]], <16 x i8> %[[VAL_229]], <16 x i8> %[[VAL_230]])485! LLVMIR: store <512 x i1> %[[VAL_231]], ptr %[[VAL_222]], align 64486 487 subroutine test_mma_build_acc_i4()488 use, intrinsic :: mma489 implicit none490 vector(integer(4)) vi10, vi11, vi12, vi13491 __vector_quad :: cq492 call mma_build_acc(cq, vi10, vi11, vi12, vi13)493 end subroutine test_mma_build_acc_i4494 495!CHECK-LABEL: @test_mma_build_acc_i4496! LLVMIR: %[[VAL_232:.*]] = alloca <4 x i32>, i64 1, align 16497! LLVMIR: %[[VAL_233:.*]] = alloca <4 x i32>, i64 1, align 16498! LLVMIR: %[[VAL_234:.*]] = alloca <4 x i32>, i64 1, align 16499! LLVMIR: %[[VAL_235:.*]] = alloca <4 x i32>, i64 1, align 16500! LLVMIR: %[[VAL_236:.*]] = alloca <512 x i1>, i64 1, align 64501! LLVMIR: %[[VAL_237:.*]] = load <4 x i32>, ptr %[[VAL_235]], align 16502! LLVMIR: %[[VAL_238:.*]] = load <4 x i32>, ptr %[[VAL_234]], align 16503! LLVMIR: %[[VAL_239:.*]] = load <4 x i32>, ptr %[[VAL_233]], align 16504! LLVMIR: %[[VAL_240:.*]] = load <4 x i32>, ptr %[[VAL_232]], align 16505! LLVMIR: %[[VAL_241:.*]] = bitcast <4 x i32> %[[VAL_240]] to <16 x i8>506! LLVMIR: %[[VAL_242:.*]] = bitcast <4 x i32> %[[VAL_239]] to <16 x i8>507! LLVMIR: %[[VAL_243:.*]] = bitcast <4 x i32> %[[VAL_238]] to <16 x i8>508! LLVMIR: %[[VAL_244:.*]] = bitcast <4 x i32> %[[VAL_237]] to <16 x i8>509! LLVMIR: %[[VAL_245:.*]] = call <512 x i1> @llvm.ppc.mma.assemble.acc(<16 x i8> %[[VAL_241]], <16 x i8> %[[VAL_242]], <16 x i8> %[[VAL_243]], <16 x i8> %[[VAL_244]])510! LLVMIR: store <512 x i1> %[[VAL_245]], ptr %[[VAL_236]], align 64511 512 subroutine test_mma_build_acc_i8()513 use, intrinsic :: mma514 implicit none515 vector(integer(8)) vi10, vi11, vi12, vi13516 __vector_quad :: cq517 call mma_build_acc(cq, vi10, vi11, vi12, vi13)518 end subroutine test_mma_build_acc_i8519 520!CHECK-LABEL: @test_mma_build_acc_i8521! LLVMIR: %[[VAL_246:.*]] = alloca <2 x i64>, i64 1, align 16522! LLVMIR: %[[VAL_247:.*]] = alloca <2 x i64>, i64 1, align 16523! LLVMIR: %[[VAL_248:.*]] = alloca <2 x i64>, i64 1, align 16524! LLVMIR: %[[VAL_249:.*]] = alloca <2 x i64>, i64 1, align 16525! LLVMIR: %[[VAL_250:.*]] = alloca <512 x i1>, i64 1, align 64526! LLVMIR: %[[VAL_251:.*]] = load <2 x i64>, ptr %[[VAL_249]], align 16527! LLVMIR: %[[VAL_252:.*]] = load <2 x i64>, ptr %[[VAL_248]], align 16528! LLVMIR: %[[VAL_253:.*]] = load <2 x i64>, ptr %[[VAL_247]], align 16529! LLVMIR: %[[VAL_254:.*]] = load <2 x i64>, ptr %[[VAL_246]], align 16530! LLVMIR: %[[VAL_255:.*]] = bitcast <2 x i64> %[[VAL_254]] to <16 x i8>531! LLVMIR: %[[VAL_256:.*]] = bitcast <2 x i64> %[[VAL_253]] to <16 x i8>532! LLVMIR: %[[VAL_257:.*]] = bitcast <2 x i64> %[[VAL_252]] to <16 x i8>533! LLVMIR: %[[VAL_258:.*]] = bitcast <2 x i64> %[[VAL_251]] to <16 x i8>534! LLVMIR: %[[VAL_259:.*]] = call <512 x i1> @llvm.ppc.mma.assemble.acc(<16 x i8> %[[VAL_255]], <16 x i8> %[[VAL_256]], <16 x i8> %[[VAL_257]], <16 x i8> %[[VAL_258]])535! LLVMIR: store <512 x i1> %[[VAL_259]], ptr %[[VAL_250]], align 64536 537 subroutine test_mma_build_acc_u1()538 use, intrinsic :: mma539 implicit none540 vector(unsigned(1)) vi10, vi11, vi12, vi13541 __vector_quad :: cq542 call mma_build_acc(cq, vi10, vi11, vi12, vi13)543 end subroutine test_mma_build_acc_u1544 545!CHECK-LABEL: @test_mma_build_acc_u1546! LLVMIR: %[[VAL_260:.*]] = alloca <16 x i8>, i64 1, align 16547! LLVMIR: %[[VAL_261:.*]] = alloca <16 x i8>, i64 1, align 16548! LLVMIR: %[[VAL_262:.*]] = alloca <16 x i8>, i64 1, align 16549! LLVMIR: %[[VAL_263:.*]] = alloca <16 x i8>, i64 1, align 16550! LLVMIR: %[[VAL_264:.*]] = alloca <512 x i1>, i64 1, align 64551! LLVMIR: %[[VAL_265:.*]] = load <16 x i8>, ptr %[[VAL_263]], align 16552! LLVMIR: %[[VAL_266:.*]] = load <16 x i8>, ptr %[[VAL_262]], align 16553! LLVMIR: %[[VAL_267:.*]] = load <16 x i8>, ptr %[[VAL_261]], align 16554! LLVMIR: %[[VAL_268:.*]] = load <16 x i8>, ptr %[[VAL_260]], align 16555! LLVMIR: %[[VAL_269:.*]] = call <512 x i1> @llvm.ppc.mma.assemble.acc(<16 x i8> %[[VAL_268]], <16 x i8> %[[VAL_267]], <16 x i8> %[[VAL_266]], <16 x i8> %[[VAL_265]])556! LLVMIR: store <512 x i1> %[[VAL_269]], ptr %[[VAL_264]], align 64557 558 subroutine test_mma_build_acc_u2()559 use, intrinsic :: mma560 implicit none561 vector(unsigned(2)) vi10, vi11, vi12, vi13562 __vector_quad :: cq563 call mma_build_acc(cq, vi10, vi11, vi12, vi13)564 end subroutine test_mma_build_acc_u2565 566!CHECK-LABEL: @test_mma_build_acc_u2567! LLVMIR: %[[VAL_270:.*]] = alloca <8 x i16>, i64 1, align 16568! LLVMIR: %[[VAL_271:.*]] = alloca <8 x i16>, i64 1, align 16569! LLVMIR: %[[VAL_272:.*]] = alloca <8 x i16>, i64 1, align 16570! LLVMIR: %[[VAL_273:.*]] = alloca <8 x i16>, i64 1, align 16571! LLVMIR: %[[VAL_274:.*]] = alloca <512 x i1>, i64 1, align 64572! LLVMIR: %[[VAL_275:.*]] = load <8 x i16>, ptr %[[VAL_273]], align 16573! LLVMIR: %[[VAL_276:.*]] = load <8 x i16>, ptr %[[VAL_272]], align 16574! LLVMIR: %[[VAL_277:.*]] = load <8 x i16>, ptr %[[VAL_271]], align 16575! LLVMIR: %[[VAL_278:.*]] = load <8 x i16>, ptr %[[VAL_270]], align 16576! LLVMIR: %[[VAL_279:.*]] = bitcast <8 x i16> %[[VAL_278]] to <16 x i8>577! LLVMIR: %[[VAL_280:.*]] = bitcast <8 x i16> %[[VAL_277]] to <16 x i8>578! LLVMIR: %[[VAL_281:.*]] = bitcast <8 x i16> %[[VAL_276]] to <16 x i8>579! LLVMIR: %[[VAL_282:.*]] = bitcast <8 x i16> %[[VAL_275]] to <16 x i8>580! LLVMIR: %[[VAL_283:.*]] = call <512 x i1> @llvm.ppc.mma.assemble.acc(<16 x i8> %[[VAL_279]], <16 x i8> %[[VAL_280]], <16 x i8> %[[VAL_281]], <16 x i8> %[[VAL_282]])581! LLVMIR: store <512 x i1> %[[VAL_283]], ptr %[[VAL_274]], align 64582 583 subroutine test_mma_build_acc_u4()584 use, intrinsic :: mma585 implicit none586 vector(unsigned(4)) vi10, vi11, vi12, vi13587 __vector_quad :: cq588 call mma_build_acc(cq, vi10, vi11, vi12, vi13)589 end subroutine test_mma_build_acc_u4590 591!CHECK-LABEL: @test_mma_build_acc_u4592! LLVMIR: %[[VAL_284:.*]] = alloca <4 x i32>, i64 1, align 16593! LLVMIR: %[[VAL_285:.*]] = alloca <4 x i32>, i64 1, align 16594! LLVMIR: %[[VAL_286:.*]] = alloca <4 x i32>, i64 1, align 16595! LLVMIR: %[[VAL_287:.*]] = alloca <4 x i32>, i64 1, align 16596! LLVMIR: %[[VAL_288:.*]] = alloca <512 x i1>, i64 1, align 64597! LLVMIR: %[[VAL_289:.*]] = load <4 x i32>, ptr %[[VAL_287]], align 16598! LLVMIR: %[[VAL_290:.*]] = load <4 x i32>, ptr %[[VAL_286]], align 16599! LLVMIR: %[[VAL_291:.*]] = load <4 x i32>, ptr %[[VAL_285]], align 16600! LLVMIR: %[[VAL_292:.*]] = load <4 x i32>, ptr %[[VAL_284]], align 16601! LLVMIR: %[[VAL_293:.*]] = bitcast <4 x i32> %[[VAL_292]] to <16 x i8>602! LLVMIR: %[[VAL_294:.*]] = bitcast <4 x i32> %[[VAL_291]] to <16 x i8>603! LLVMIR: %[[VAL_295:.*]] = bitcast <4 x i32> %[[VAL_290]] to <16 x i8>604! LLVMIR: %[[VAL_296:.*]] = bitcast <4 x i32> %[[VAL_289]] to <16 x i8>605! LLVMIR: %[[VAL_297:.*]] = call <512 x i1> @llvm.ppc.mma.assemble.acc(<16 x i8> %[[VAL_293]], <16 x i8> %[[VAL_294]], <16 x i8> %[[VAL_295]], <16 x i8> %[[VAL_296]])606! LLVMIR: store <512 x i1> %[[VAL_297]], ptr %[[VAL_288]], align 64607 608 subroutine test_mma_build_acc_u8()609 use, intrinsic :: mma610 implicit none611 vector(unsigned(8)) vi10, vi11, vi12, vi13612 __vector_quad :: cq613 call mma_build_acc(cq, vi10, vi11, vi12, vi13)614 end subroutine test_mma_build_acc_u8615 616!CHECK-LABEL: @test_mma_build_acc_u8617! LLVMIR: %[[VAL_298:.*]] = alloca <2 x i64>, i64 1, align 16618! LLVMIR: %[[VAL_299:.*]] = alloca <2 x i64>, i64 1, align 16619! LLVMIR: %[[VAL_300:.*]] = alloca <2 x i64>, i64 1, align 16620! LLVMIR: %[[VAL_301:.*]] = alloca <2 x i64>, i64 1, align 16621! LLVMIR: %[[VAL_302:.*]] = alloca <512 x i1>, i64 1, align 64622! LLVMIR: %[[VAL_303:.*]] = load <2 x i64>, ptr %[[VAL_301]], align 16623! LLVMIR: %[[VAL_304:.*]] = load <2 x i64>, ptr %[[VAL_300]], align 16624! LLVMIR: %[[VAL_305:.*]] = load <2 x i64>, ptr %[[VAL_299]], align 16625! LLVMIR: %[[VAL_306:.*]] = load <2 x i64>, ptr %[[VAL_298]], align 16626! LLVMIR: %[[VAL_307:.*]] = bitcast <2 x i64> %[[VAL_306]] to <16 x i8>627! LLVMIR: %[[VAL_308:.*]] = bitcast <2 x i64> %[[VAL_305]] to <16 x i8>628! LLVMIR: %[[VAL_309:.*]] = bitcast <2 x i64> %[[VAL_304]] to <16 x i8>629! LLVMIR: %[[VAL_310:.*]] = bitcast <2 x i64> %[[VAL_303]] to <16 x i8>630! LLVMIR: %[[VAL_311:.*]] = call <512 x i1> @llvm.ppc.mma.assemble.acc(<16 x i8> %[[VAL_307]], <16 x i8> %[[VAL_308]], <16 x i8> %[[VAL_309]], <16 x i8> %[[VAL_310]])631! LLVMIR: store <512 x i1> %[[VAL_311]], ptr %[[VAL_302]], align 64632 633 634 subroutine test_mma_build_acc_r4()635 use, intrinsic :: mma636 implicit none637 vector(real(4)) vi10, vi11, vi12, vi13638 __vector_quad :: cq639 call mma_build_acc(cq, vi10, vi11, vi12, vi13)640 end subroutine test_mma_build_acc_r4641 642!CHECK-LABEL: @test_mma_build_acc_r4643! LLVMIR: %[[VAL_312:.*]] = alloca <4 x float>, i64 1, align 16644! LLVMIR: %[[VAL_313:.*]] = alloca <4 x float>, i64 1, align 16645! LLVMIR: %[[VAL_314:.*]] = alloca <4 x float>, i64 1, align 16646! LLVMIR: %[[VAL_315:.*]] = alloca <4 x float>, i64 1, align 16647! LLVMIR: %[[VAL_316:.*]] = alloca <512 x i1>, i64 1, align 64648! LLVMIR: %[[VAL_317:.*]] = load <4 x float>, ptr %[[VAL_315]], align 16649! LLVMIR: %[[VAL_318:.*]] = load <4 x float>, ptr %[[VAL_314]], align 16650! LLVMIR: %[[VAL_319:.*]] = load <4 x float>, ptr %[[VAL_313]], align 16651! LLVMIR: %[[VAL_320:.*]] = load <4 x float>, ptr %[[VAL_312]], align 16652! LLVMIR: %[[VAL_321:.*]] = bitcast <4 x float> %[[VAL_320]] to <16 x i8>653! LLVMIR: %[[VAL_322:.*]] = bitcast <4 x float> %[[VAL_319]] to <16 x i8>654! LLVMIR: %[[VAL_323:.*]] = bitcast <4 x float> %[[VAL_318]] to <16 x i8>655! LLVMIR: %[[VAL_324:.*]] = bitcast <4 x float> %[[VAL_317]] to <16 x i8>656! LLVMIR: %[[VAL_325:.*]] = call <512 x i1> @llvm.ppc.mma.assemble.acc(<16 x i8> %[[VAL_321]], <16 x i8> %[[VAL_322]], <16 x i8> %[[VAL_323]], <16 x i8> %[[VAL_324]])657! LLVMIR: store <512 x i1> %[[VAL_325]], ptr %[[VAL_316]], align 64658 659 660 subroutine test_mma_build_acc_r8()661 use, intrinsic :: mma662 implicit none663 vector(real(8)) vi10, vi11, vi12, vi13664 __vector_quad :: cq665 call mma_build_acc(cq, vi10, vi11, vi12, vi13)666 end subroutine test_mma_build_acc_r8667 668!CHECK-LABEL: @test_mma_build_acc_r8669! LLVMIR: %[[VAL_326:.*]] = alloca <2 x double>, i64 1, align 16670! LLVMIR: %[[VAL_327:.*]] = alloca <2 x double>, i64 1, align 16671! LLVMIR: %[[VAL_328:.*]] = alloca <2 x double>, i64 1, align 16672! LLVMIR: %[[VAL_329:.*]] = alloca <2 x double>, i64 1, align 16673! LLVMIR: %[[VAL_330:.*]] = alloca <512 x i1>, i64 1, align 64674! LLVMIR: %[[VAL_331:.*]] = load <2 x double>, ptr %[[VAL_329]], align 16675! LLVMIR: %[[VAL_332:.*]] = load <2 x double>, ptr %[[VAL_328]], align 16676! LLVMIR: %[[VAL_333:.*]] = load <2 x double>, ptr %[[VAL_327]], align 16677! LLVMIR: %[[VAL_334:.*]] = load <2 x double>, ptr %[[VAL_326]], align 16678! LLVMIR: %[[VAL_335:.*]] = bitcast <2 x double> %[[VAL_334]] to <16 x i8>679! LLVMIR: %[[VAL_336:.*]] = bitcast <2 x double> %[[VAL_333]] to <16 x i8>680! LLVMIR: %[[VAL_337:.*]] = bitcast <2 x double> %[[VAL_332]] to <16 x i8>681! LLVMIR: %[[VAL_338:.*]] = bitcast <2 x double> %[[VAL_331]] to <16 x i8>682! LLVMIR: %[[VAL_339:.*]] = call <512 x i1> @llvm.ppc.mma.assemble.acc(<16 x i8> %[[VAL_335]], <16 x i8> %[[VAL_336]], <16 x i8> %[[VAL_337]], <16 x i8> %[[VAL_338]])683! LLVMIR: store <512 x i1> %[[VAL_339]], ptr %[[VAL_330]], align 64684 685! mma_disassemble_acc686 687 subroutine test_disassemble_acc()688 use, intrinsic :: mma689 implicit none690 __vector_quad :: vq691 real :: data692 call mma_disassemble_acc(data, vq)693 end subroutine694 695!CHECK-LABEL: @test_disassemble_acc_696! LLVMIR: %[[VAL_340:.*]] = alloca <512 x i1>, i64 1, align 64697! LLVMIR: %[[VAL_341:.*]] = alloca float, i64 1, align 4698! LLVMIR: %[[VAL_342:.*]] = load <512 x i1>, ptr %[[VAL_340]], align 64699! LLVMIR: %[[VAL_343:.*]] = call { <16 x i8>, <16 x i8>, <16 x i8>, <16 x i8> } @llvm.ppc.mma.disassemble.acc(<512 x i1> %[[VAL_342]])700! LLVMIR: store { <16 x i8>, <16 x i8>, <16 x i8>, <16 x i8> } %[[VAL_343]], ptr %[[VAL_341]], align 16701 702! mma_disassemble_pair703 704 subroutine test_disassemble_pair()705 use, intrinsic :: mma706 implicit none707 __vector_pair :: vp708 real :: data709 call mma_disassemble_pair(data, vp)710 end subroutine711 712!CHECK-LABEL: @test_disassemble_pair_713! LLVMIR: %[[VAL_344:.*]] = alloca <256 x i1>, i64 1, align 32714! LLVMIR: %[[VAL_345:.*]] = alloca float, i64 1, align 4715! LLVMIR: %[[VAL_346:.*]] = load <256 x i1>, ptr %[[VAL_344]], align 32716! LLVMIR: %[[VAL_347:.*]] = call { <16 x i8>, <16 x i8> } @llvm.ppc.vsx.disassemble.pair(<256 x i1> %[[VAL_346]])717! LLVMIR: store { <16 x i8>, <16 x i8> } %[[VAL_347]], ptr %[[VAL_345]], align 16718