475 lines · plain
1! RUN: %flang_fc1 -flang-experimental-hlfir -triple powerpc64le-unknown-unknown -emit-llvm %s -o - | FileCheck --check-prefixes="LLVMIR" %s2! RUN: %flang_fc1 -flang-experimental-hlfir -triple powerpc64-unknown-unknown -emit-llvm %s -o - | FileCheck --check-prefixes="LLVMIR" %s3! REQUIRES: target=powerpc{{.*}}4 5!----------------------6! vec_cmpge7!----------------------8 9! CHECK-LABEL: vec_cmpge_test_i810subroutine vec_cmpge_test_i8(arg1, arg2)11 vector(integer(8)) :: arg1, arg212 vector(unsigned(8)) :: r13 r = vec_cmpge(arg1, arg2)14 15! LLVMIR: %[[arg1:.*]] = load <2 x i64>, ptr %{{.*}}, align 1616! LLVMIR: %[[arg2:.*]] = load <2 x i64>, ptr %{{.*}}, align 1617! LLVMIR: %[[res:.*]] = call <2 x i64> @llvm.ppc.altivec.vcmpgtsd(<2 x i64> %[[arg2]], <2 x i64> %[[arg1]])18! LLVMIR: %{{[0-9]+}} = xor <2 x i64> %[[res]], splat (i64 -1)19end subroutine vec_cmpge_test_i820 21! CHECK-LABEL: vec_cmpge_test_i422subroutine vec_cmpge_test_i4(arg1, arg2)23 vector(integer(4)) :: arg1, arg224 vector(unsigned(4)) :: r25 r = vec_cmpge(arg1, arg2)26 27! LLVMIR: %[[arg1:.*]] = load <4 x i32>, ptr %{{.*}}, align 1628! LLVMIR: %[[arg2:.*]] = load <4 x i32>, ptr %{{.*}}, align 1629! LLVMIR: %[[res:.*]] = call <4 x i32> @llvm.ppc.altivec.vcmpgtsw(<4 x i32> %[[arg2]], <4 x i32> %[[arg1]])30! LLVMIR: %{{[0-9]+}} = xor <4 x i32> %[[res]], splat (i32 -1)31end subroutine vec_cmpge_test_i432 33! CHECK-LABEL: vec_cmpge_test_i234subroutine vec_cmpge_test_i2(arg1, arg2)35 vector(integer(2)) :: arg1, arg236 vector(unsigned(2)) :: r37 r = vec_cmpge(arg1, arg2)38 39! LLVMIR: %[[arg1:.*]] = load <8 x i16>, ptr %{{.*}}, align 1640! LLVMIR: %[[arg2:.*]] = load <8 x i16>, ptr %{{.*}}, align 1641! LLVMIR: %[[res:.*]] = call <8 x i16> @llvm.ppc.altivec.vcmpgtsh(<8 x i16> %[[arg2]], <8 x i16> %[[arg1]])42! LLVMIR: %{{[0-9]+}} = xor <8 x i16> %[[res]], splat (i16 -1)43end subroutine vec_cmpge_test_i244 45! CHECK-LABEL: vec_cmpge_test_i146subroutine vec_cmpge_test_i1(arg1, arg2)47 vector(integer(1)) :: arg1, arg248 vector(unsigned(1)) :: r49 r = vec_cmpge(arg1, arg2)50 51! LLVMIR: %[[arg1:.*]] = load <16 x i8>, ptr %{{.*}}, align 1652! LLVMIR: %[[arg2:.*]] = load <16 x i8>, ptr %{{.*}}, align 1653! LLVMIR: %[[res:.*]] = call <16 x i8> @llvm.ppc.altivec.vcmpgtsb(<16 x i8> %[[arg2]], <16 x i8> %[[arg1]])54! LLVMIR: %{{[0-9]+}} = xor <16 x i8> %[[res]], splat (i8 -1)55end subroutine vec_cmpge_test_i156 57! CHECK-LABEL: vec_cmpge_test_u858subroutine vec_cmpge_test_u8(arg1, arg2)59 vector(unsigned(8)) :: arg1, arg260 vector(unsigned(8)) :: r61 r = vec_cmpge(arg1, arg2)62 63! LLVMIR: %[[arg1:.*]] = load <2 x i64>, ptr %{{.*}}, align 1664! LLVMIR: %[[arg2:.*]] = load <2 x i64>, ptr %{{.*}}, align 1665! LLVMIR: %[[res:.*]] = call <2 x i64> @llvm.ppc.altivec.vcmpgtud(<2 x i64> %[[arg2]], <2 x i64> %[[arg1]])66! LLVMIR: %{{[0-9]+}} = xor <2 x i64> %[[res]], splat (i64 -1)67end subroutine vec_cmpge_test_u868 69! CHECK-LABEL: vec_cmpge_test_u470subroutine vec_cmpge_test_u4(arg1, arg2)71 vector(unsigned(4)) :: arg1, arg272 vector(unsigned(4)) :: r73 r = vec_cmpge(arg1, arg2)74 75! LLVMIR: %[[arg1:.*]] = load <4 x i32>, ptr %{{.*}}, align 1676! LLVMIR: %[[arg2:.*]] = load <4 x i32>, ptr %{{.*}}, align 1677! LLVMIR: %[[res:.*]] = call <4 x i32> @llvm.ppc.altivec.vcmpgtuw(<4 x i32> %[[arg2]], <4 x i32> %[[arg1]])78! LLVMIR: %{{[0-9]+}} = xor <4 x i32> %[[res]], splat (i32 -1)79end subroutine vec_cmpge_test_u480 81! CHECK-LABEL: vec_cmpge_test_u282subroutine vec_cmpge_test_u2(arg1, arg2)83 vector(unsigned(2)) :: arg1, arg284 vector(unsigned(2)) :: r85 r = vec_cmpge(arg1, arg2)86 87! LLVMIR: %[[arg1:.*]] = load <8 x i16>, ptr %{{.*}}, align 1688! LLVMIR: %[[arg2:.*]] = load <8 x i16>, ptr %{{.*}}, align 1689! LLVMIR: %[[res:.*]] = call <8 x i16> @llvm.ppc.altivec.vcmpgtuh(<8 x i16> %[[arg2]], <8 x i16> %[[arg1]])90! LLVMIR: %{{[0-9]+}} = xor <8 x i16> %[[res]], splat (i16 -1)91end subroutine vec_cmpge_test_u292 93! CHECK-LABEL: vec_cmpge_test_u194subroutine vec_cmpge_test_u1(arg1, arg2)95 vector(unsigned(1)) :: arg1, arg296 vector(unsigned(1)) :: r97 r = vec_cmpge(arg1, arg2)98 99! LLVMIR: %[[arg1:.*]] = load <16 x i8>, ptr %{{.*}}, align 16100! LLVMIR: %[[arg2:.*]] = load <16 x i8>, ptr %{{.*}}, align 16101! LLVMIR: %[[res:.*]] = call <16 x i8> @llvm.ppc.altivec.vcmpgtub(<16 x i8> %[[arg2]], <16 x i8> %[[arg1]])102! LLVMIR: %{{[0-9]+}} = xor <16 x i8> %[[res]], splat (i8 -1)103end subroutine vec_cmpge_test_u1104 105subroutine vec_cmpge_test_r4(arg1, arg2)106 vector(real(4)) :: arg1, arg2107 vector(unsigned(4)) :: r108 r = vec_cmpge(arg1, arg2)109 110! LLVMIR: %[[arg1:.*]] = load <4 x float>, ptr %{{.*}}, align 16111! LLVMIR: %[[arg2:.*]] = load <4 x float>, ptr %{{.*}}, align 16112! LLVMIR: %{{[0-9]+}} = call <4 x i32> @llvm.ppc.vsx.xvcmpgesp(<4 x float> %[[arg1]], <4 x float> %[[arg2]])113end subroutine vec_cmpge_test_r4114 115subroutine vec_cmpge_test_r8(arg1, arg2)116 vector(real(8)) :: arg1, arg2117 vector(unsigned(8)) :: r118 r = vec_cmpge(arg1, arg2)119 120! LLVMIR: %[[arg1:.*]] = load <2 x double>, ptr %{{.*}}, align 16121! LLVMIR: %[[arg2:.*]] = load <2 x double>, ptr %{{.*}}, align 16122! LLVMIR: %{{[0-9]+}} = call <2 x i64> @llvm.ppc.vsx.xvcmpgedp(<2 x double> %[[arg1]], <2 x double> %[[arg2]])123end subroutine vec_cmpge_test_r8124 125!----------------------126! vec_cmpgt127!----------------------128 129! CHECK-LABEL: vec_cmpgt_test_i1130subroutine vec_cmpgt_test_i1(arg1, arg2)131 vector(integer(1)) :: arg1, arg2132 vector(unsigned(1)) :: r133 r = vec_cmpgt(arg1, arg2)134 135! LLVMIR: %[[arg1:.*]] = load <16 x i8>, ptr %{{.*}}, align 16136! LLVMIR: %[[arg2:.*]] = load <16 x i8>, ptr %{{.*}}, align 16137! LLVMIR: %{{[0-9]+}} = call <16 x i8> @llvm.ppc.altivec.vcmpgtsb(<16 x i8> %[[arg1]], <16 x i8> %[[arg2]])138end subroutine vec_cmpgt_test_i1139 140! CHECK-LABEL: vec_cmpgt_test_i2141subroutine vec_cmpgt_test_i2(arg1, arg2)142 vector(integer(2)) :: arg1, arg2143 vector(unsigned(2)) :: r144 r = vec_cmpgt(arg1, arg2)145 146! LLVMIR: %[[arg1:.*]] = load <8 x i16>, ptr %{{.*}}, align 16147! LLVMIR: %[[arg2:.*]] = load <8 x i16>, ptr %{{.*}}, align 16148! LLVMIR: %{{[0-9]+}} = call <8 x i16> @llvm.ppc.altivec.vcmpgtsh(<8 x i16> %[[arg1]], <8 x i16> %[[arg2]])149end subroutine vec_cmpgt_test_i2150 151! CHECK-LABEL: vec_cmpgt_test_i4152subroutine vec_cmpgt_test_i4(arg1, arg2)153 vector(integer(4)) :: arg1, arg2154 vector(unsigned(4)) :: r155 r = vec_cmpgt(arg1, arg2)156 157! LLVMIR: %[[arg1:.*]] = load <4 x i32>, ptr %{{.*}}, align 16158! LLVMIR: %[[arg2:.*]] = load <4 x i32>, ptr %{{.*}}, align 16159! LLVMIR: %{{[0-9]+}} = call <4 x i32> @llvm.ppc.altivec.vcmpgtsw(<4 x i32> %[[arg1]], <4 x i32> %[[arg2]])160end subroutine vec_cmpgt_test_i4161 162! CHECK-LABEL: vec_cmpgt_test_i8163subroutine vec_cmpgt_test_i8(arg1, arg2)164 vector(integer(8)) :: arg1, arg2165 vector(unsigned(8)) :: r166 r = vec_cmpgt(arg1, arg2)167 168! LLVMIR: %[[arg1:.*]] = load <2 x i64>, ptr %{{.*}}, align 16169! LLVMIR: %[[arg2:.*]] = load <2 x i64>, ptr %{{.*}}, align 16170! LLVMIR: %{{[0-9]+}} = call <2 x i64> @llvm.ppc.altivec.vcmpgtsd(<2 x i64> %[[arg1]], <2 x i64> %[[arg2]])171end subroutine vec_cmpgt_test_i8172 173! CHECK-LABEL: vec_cmpgt_test_u1174subroutine vec_cmpgt_test_u1(arg1, arg2)175 vector(unsigned(1)) :: arg1, arg2176 vector(unsigned(1)) :: r177 r = vec_cmpgt(arg1, arg2)178 179! LLVMIR: %[[arg1:.*]] = load <16 x i8>, ptr %{{.*}}, align 16180! LLVMIR: %[[arg2:.*]] = load <16 x i8>, ptr %{{.*}}, align 16181! LLVMIR: %{{[0-9]+}} = call <16 x i8> @llvm.ppc.altivec.vcmpgtub(<16 x i8> %[[arg1]], <16 x i8> %[[arg2]])182end subroutine vec_cmpgt_test_u1183 184! CHECK-LABEL: vec_cmpgt_test_u2185subroutine vec_cmpgt_test_u2(arg1, arg2)186 vector(unsigned(2)) :: arg1, arg2187 vector(unsigned(2)) :: r188 r = vec_cmpgt(arg1, arg2)189 190! LLVMIR: %[[arg1:.*]] = load <8 x i16>, ptr %{{.*}}, align 16191! LLVMIR: %[[arg2:.*]] = load <8 x i16>, ptr %{{.*}}, align 16192! LLVMIR: %{{[0-9]+}} = call <8 x i16> @llvm.ppc.altivec.vcmpgtuh(<8 x i16> %[[arg1]], <8 x i16> %[[arg2]])193end subroutine vec_cmpgt_test_u2194 195! CHECK-LABEL: vec_cmpgt_test_u4196subroutine vec_cmpgt_test_u4(arg1, arg2)197 vector(unsigned(4)) :: arg1, arg2198 vector(unsigned(4)) :: r199 r = vec_cmpgt(arg1, arg2)200 201! LLVMIR: %[[arg1:.*]] = load <4 x i32>, ptr %{{.*}}, align 16202! LLVMIR: %[[arg2:.*]] = load <4 x i32>, ptr %{{.*}}, align 16203! LLVMIR: %{{[0-9]+}} = call <4 x i32> @llvm.ppc.altivec.vcmpgtuw(<4 x i32> %[[arg1]], <4 x i32> %[[arg2]])204end subroutine vec_cmpgt_test_u4205 206! CHECK-LABEL: vec_cmpgt_test_u8207subroutine vec_cmpgt_test_u8(arg1, arg2)208 vector(unsigned(8)) :: arg1, arg2209 vector(unsigned(8)) :: r210 r = vec_cmpgt(arg1, arg2)211 212! LLVMIR: %[[arg1:.*]] = load <2 x i64>, ptr %{{.*}}, align 16213! LLVMIR: %[[arg2:.*]] = load <2 x i64>, ptr %{{.*}}, align 16214! LLVMIR: %{{[0-9]+}} = call <2 x i64> @llvm.ppc.altivec.vcmpgtud(<2 x i64> %[[arg1]], <2 x i64> %[[arg2]])215end subroutine vec_cmpgt_test_u8216 217! CHECK-LABEL: vec_cmpgt_test_r4218subroutine vec_cmpgt_test_r4(arg1, arg2)219 vector(real(4)) :: arg1, arg2220 vector(unsigned(4)) :: r221 r = vec_cmpgt(arg1, arg2)222 223! LLVMIR: %[[arg1:.*]] = load <4 x float>, ptr %{{.*}}, align 16224! LLVMIR: %[[arg2:.*]] = load <4 x float>, ptr %{{.*}}, align 16225! LLVMIR: %{{[0-9]+}} = call <4 x i32> @llvm.ppc.vsx.xvcmpgtsp(<4 x float> %[[arg1]], <4 x float> %[[arg2]])226end subroutine vec_cmpgt_test_r4227 228! CHECK-LABEL: vec_cmpgt_test_r8229subroutine vec_cmpgt_test_r8(arg1, arg2)230 vector(real(8)) :: arg1, arg2231 vector(unsigned(8)) :: r232 r = vec_cmpgt(arg1, arg2)233 234! LLVMIR: %[[arg1:.*]] = load <2 x double>, ptr %{{.*}}, align 16235! LLVMIR: %[[arg2:.*]] = load <2 x double>, ptr %{{.*}}, align 16236! LLVMIR: %{{[0-9]+}} = call <2 x i64> @llvm.ppc.vsx.xvcmpgtdp(<2 x double> %[[arg1]], <2 x double> %[[arg2]])237end subroutine vec_cmpgt_test_r8238 239!----------------------240! vec_cmple241!----------------------242 243! CHECK-LABEL: vec_cmple_test_i8244subroutine vec_cmple_test_i8(arg1, arg2)245 vector(integer(8)) :: arg1, arg2246 vector(unsigned(8)) :: r247 r = vec_cmple(arg1, arg2)248 249! LLVMIR: %[[arg1:.*]] = load <2 x i64>, ptr %{{.*}}, align 16250! LLVMIR: %[[arg2:.*]] = load <2 x i64>, ptr %{{.*}}, align 16251! LLVMIR: %[[res:.*]] = call <2 x i64> @llvm.ppc.altivec.vcmpgtsd(<2 x i64> %[[arg1]], <2 x i64> %[[arg2]])252! LLVMIR: %{{[0-9]+}} = xor <2 x i64> %[[res]], splat (i64 -1)253end subroutine vec_cmple_test_i8254 255! CHECK-LABEL: vec_cmple_test_i4256subroutine vec_cmple_test_i4(arg1, arg2)257 vector(integer(4)) :: arg1, arg2258 vector(unsigned(4)) :: r259 r = vec_cmple(arg1, arg2)260 261! LLVMIR: %[[arg1:.*]] = load <4 x i32>, ptr %{{.*}}, align 16262! LLVMIR: %[[arg2:.*]] = load <4 x i32>, ptr %{{.*}}, align 16263! LLVMIR: %[[res:.*]] = call <4 x i32> @llvm.ppc.altivec.vcmpgtsw(<4 x i32> %[[arg1]], <4 x i32> %[[arg2]])264! LLVMIR: %{{[0-9]+}} = xor <4 x i32> %[[res]], splat (i32 -1)265end subroutine vec_cmple_test_i4266 267! CHECK-LABEL: vec_cmple_test_i2268subroutine vec_cmple_test_i2(arg1, arg2)269 vector(integer(2)) :: arg1, arg2270 vector(unsigned(2)) :: r271 r = vec_cmple(arg1, arg2)272 273! LLVMIR: %[[arg1:.*]] = load <8 x i16>, ptr %{{.*}}, align 16274! LLVMIR: %[[arg2:.*]] = load <8 x i16>, ptr %{{.*}}, align 16275! LLVMIR: %[[res:.*]] = call <8 x i16> @llvm.ppc.altivec.vcmpgtsh(<8 x i16> %[[arg1]], <8 x i16> %[[arg2]])276! LLVMIR: %{{[0-9]+}} = xor <8 x i16> %[[res]], splat (i16 -1)277end subroutine vec_cmple_test_i2278 279! CHECK-LABEL: vec_cmple_test_i1280subroutine vec_cmple_test_i1(arg1, arg2)281 vector(integer(1)) :: arg1, arg2282 vector(unsigned(1)) :: r283 r = vec_cmple(arg1, arg2)284 285! LLVMIR: %[[arg1:.*]] = load <16 x i8>, ptr %{{.*}}, align 16286! LLVMIR: %[[arg2:.*]] = load <16 x i8>, ptr %{{.*}}, align 16287! LLVMIR: %[[res:.*]] = call <16 x i8> @llvm.ppc.altivec.vcmpgtsb(<16 x i8> %[[arg1]], <16 x i8> %[[arg2]])288! LLVMIR: %{{[0-9]+}} = xor <16 x i8> %[[res]], splat (i8 -1)289end subroutine vec_cmple_test_i1290 291! CHECK-LABEL: vec_cmple_test_u8292subroutine vec_cmple_test_u8(arg1, arg2)293 vector(unsigned(8)) :: arg1, arg2294 vector(unsigned(8)) :: r295 r = vec_cmple(arg1, arg2)296 297! LLVMIR: %[[arg1:.*]] = load <2 x i64>, ptr %{{.*}}, align 16298! LLVMIR: %[[arg2:.*]] = load <2 x i64>, ptr %{{.*}}, align 16299! LLVMIR: %[[res:.*]] = call <2 x i64> @llvm.ppc.altivec.vcmpgtud(<2 x i64> %[[arg1]], <2 x i64> %[[arg2]])300! LLVMIR: %{{[0-9]+}} = xor <2 x i64> %[[res]], splat (i64 -1)301end subroutine vec_cmple_test_u8302 303! CHECK-LABEL: vec_cmple_test_u4304subroutine vec_cmple_test_u4(arg1, arg2)305 vector(unsigned(4)) :: arg1, arg2306 vector(unsigned(4)) :: r307 r = vec_cmple(arg1, arg2)308 309! LLVMIR: %[[arg1:.*]] = load <4 x i32>, ptr %{{.*}}, align 16310! LLVMIR: %[[arg2:.*]] = load <4 x i32>, ptr %{{.*}}, align 16311! LLVMIR: %[[res:.*]] = call <4 x i32> @llvm.ppc.altivec.vcmpgtuw(<4 x i32> %[[arg1]], <4 x i32> %[[arg2]])312! LLVMIR: %{{[0-9]+}} = xor <4 x i32> %[[res]], splat (i32 -1)313end subroutine vec_cmple_test_u4314 315! CHECK-LABEL: vec_cmple_test_u2316subroutine vec_cmple_test_u2(arg1, arg2)317 vector(unsigned(2)) :: arg1, arg2318 vector(unsigned(2)) :: r319 r = vec_cmple(arg1, arg2)320 321! LLVMIR: %[[arg1:.*]] = load <8 x i16>, ptr %{{.*}}, align 16322! LLVMIR: %[[arg2:.*]] = load <8 x i16>, ptr %{{.*}}, align 16323! LLVMIR: %[[res:.*]] = call <8 x i16> @llvm.ppc.altivec.vcmpgtuh(<8 x i16> %[[arg1]], <8 x i16> %[[arg2]])324! LLVMIR: %{{[0-9]+}} = xor <8 x i16> %[[res]], splat (i16 -1)325end subroutine vec_cmple_test_u2326 327! CHECK-LABEL: vec_cmple_test_u1328subroutine vec_cmple_test_u1(arg1, arg2)329 vector(unsigned(1)) :: arg1, arg2330 vector(unsigned(1)) :: r331 r = vec_cmple(arg1, arg2)332 333! LLVMIR: %[[arg1:.*]] = load <16 x i8>, ptr %{{.*}}, align 16334! LLVMIR: %[[arg2:.*]] = load <16 x i8>, ptr %{{.*}}, align 16335! LLVMIR: %[[res:.*]] = call <16 x i8> @llvm.ppc.altivec.vcmpgtub(<16 x i8> %[[arg1]], <16 x i8> %[[arg2]])336! LLVMIR: %{{[0-9]+}} = xor <16 x i8> %[[res]], splat (i8 -1)337end subroutine vec_cmple_test_u1338 339! CHECK-LABEL: vec_cmple_test_r4340subroutine vec_cmple_test_r4(arg1, arg2)341 vector(real(4)) :: arg1, arg2342 vector(unsigned(4)) :: r343 r = vec_cmple(arg1, arg2)344 345! LLVMIR: %[[arg1:.*]] = load <4 x float>, ptr %{{.*}}, align 16346! LLVMIR: %[[arg2:.*]] = load <4 x float>, ptr %{{.*}}, align 16347! LLVMIR: %{{[0-9]+}} = call <4 x i32> @llvm.ppc.vsx.xvcmpgesp(<4 x float> %[[arg2]], <4 x float> %[[arg1]])348end subroutine vec_cmple_test_r4349 350! CHECK-LABEL: vec_cmple_test_r8351subroutine vec_cmple_test_r8(arg1, arg2)352 vector(real(8)) :: arg1, arg2353 vector(unsigned(8)) :: r354 r = vec_cmple(arg1, arg2)355 356! LLVMIR: %[[arg1:.*]] = load <2 x double>, ptr %{{.*}}, align 16357! LLVMIR: %[[arg2:.*]] = load <2 x double>, ptr %{{.*}}, align 16358! LLVMIR: %{{[0-9]+}} = call <2 x i64> @llvm.ppc.vsx.xvcmpgedp(<2 x double> %[[arg2]], <2 x double> %[[arg1]])359end subroutine vec_cmple_test_r8360 361!----------------------362! vec_cmplt363!----------------------364 365! CHECK-LABEL: vec_cmplt_test_i1366subroutine vec_cmplt_test_i1(arg1, arg2)367 vector(integer(1)) :: arg1, arg2368 vector(unsigned(1)) :: r369 r = vec_cmplt(arg1, arg2)370 371! LLVMIR: %[[arg1:.*]] = load <16 x i8>, ptr %{{.*}}, align 16372! LLVMIR: %[[arg2:.*]] = load <16 x i8>, ptr %{{.*}}, align 16373! LLVMIR: %{{[0-9]+}} = call <16 x i8> @llvm.ppc.altivec.vcmpgtsb(<16 x i8> %[[arg2]], <16 x i8> %[[arg1]])374end subroutine vec_cmplt_test_i1375 376! CHECK-LABEL: vec_cmplt_test_i2377subroutine vec_cmplt_test_i2(arg1, arg2)378 vector(integer(2)) :: arg1, arg2379 vector(unsigned(2)) :: r380 r = vec_cmplt(arg1, arg2)381 382! LLVMIR: %[[arg1:.*]] = load <8 x i16>, ptr %{{.*}}, align 16383! LLVMIR: %[[arg2:.*]] = load <8 x i16>, ptr %{{.*}}, align 16384! LLVMIR: %{{[0-9]+}} = call <8 x i16> @llvm.ppc.altivec.vcmpgtsh(<8 x i16> %[[arg2]], <8 x i16> %[[arg1]])385end subroutine vec_cmplt_test_i2386 387! CHECK-LABEL: vec_cmplt_test_i4388subroutine vec_cmplt_test_i4(arg1, arg2)389 vector(integer(4)) :: arg1, arg2390 vector(unsigned(4)) :: r391 r = vec_cmplt(arg1, arg2)392 393! LLVMIR: %[[arg1:.*]] = load <4 x i32>, ptr %{{.*}}, align 16394! LLVMIR: %[[arg2:.*]] = load <4 x i32>, ptr %{{.*}}, align 16395! LLVMIR: %{{[0-9]+}} = call <4 x i32> @llvm.ppc.altivec.vcmpgtsw(<4 x i32> %[[arg2]], <4 x i32> %[[arg1]])396end subroutine vec_cmplt_test_i4397 398! CHECK-LABEL: vec_cmplt_test_i8399subroutine vec_cmplt_test_i8(arg1, arg2)400 vector(integer(8)) :: arg1, arg2401 vector(unsigned(8)) :: r402 r = vec_cmplt(arg1, arg2)403 404! LLVMIR: %[[arg1:.*]] = load <2 x i64>, ptr %{{.*}}, align 16405! LLVMIR: %[[arg2:.*]] = load <2 x i64>, ptr %{{.*}}, align 16406! LLVMIR: %{{[0-9]+}} = call <2 x i64> @llvm.ppc.altivec.vcmpgtsd(<2 x i64> %[[arg2]], <2 x i64> %[[arg1]])407end subroutine vec_cmplt_test_i8408 409! CHECK-LABEL: vec_cmplt_test_u1410subroutine vec_cmplt_test_u1(arg1, arg2)411 vector(unsigned(1)) :: arg1, arg2412 vector(unsigned(1)) :: r413 r = vec_cmplt(arg1, arg2)414 415! LLVMIR: %[[arg1:.*]] = load <16 x i8>, ptr %{{.*}}, align 16416! LLVMIR: %[[arg2:.*]] = load <16 x i8>, ptr %{{.*}}, align 16417! LLVMIR: %{{[0-9]+}} = call <16 x i8> @llvm.ppc.altivec.vcmpgtub(<16 x i8> %[[arg2]], <16 x i8> %[[arg1]])418end subroutine vec_cmplt_test_u1419 420! CHECK-LABEL: vec_cmplt_test_u2421subroutine vec_cmplt_test_u2(arg1, arg2)422 vector(unsigned(2)) :: arg1, arg2423 vector(unsigned(2)) :: r424 r = vec_cmplt(arg1, arg2)425 426! LLVMIR: %[[arg1:.*]] = load <8 x i16>, ptr %{{.*}}, align 16427! LLVMIR: %[[arg2:.*]] = load <8 x i16>, ptr %{{.*}}, align 16428! LLVMIR: %{{[0-9]+}} = call <8 x i16> @llvm.ppc.altivec.vcmpgtuh(<8 x i16> %[[arg2]], <8 x i16> %[[arg1]])429end subroutine vec_cmplt_test_u2430 431! CHECK-LABEL: vec_cmplt_test_u4432subroutine vec_cmplt_test_u4(arg1, arg2)433 vector(unsigned(4)) :: arg1, arg2434 vector(unsigned(4)) :: r435 r = vec_cmplt(arg1, arg2)436 437! LLVMIR: %[[arg1:.*]] = load <4 x i32>, ptr %{{.*}}, align 16438! LLVMIR: %[[arg2:.*]] = load <4 x i32>, ptr %{{.*}}, align 16439! LLVMIR: %{{[0-9]+}} = call <4 x i32> @llvm.ppc.altivec.vcmpgtuw(<4 x i32> %[[arg2]], <4 x i32> %[[arg1]])440end subroutine vec_cmplt_test_u4441 442! CHECK-LABEL: vec_cmplt_test_u8443subroutine vec_cmplt_test_u8(arg1, arg2)444 vector(unsigned(8)) :: arg1, arg2445 vector(unsigned(8)) :: r446 r = vec_cmplt(arg1, arg2)447 448! LLVMIR: %[[arg1:.*]] = load <2 x i64>, ptr %{{.*}}, align 16449! LLVMIR: %[[arg2:.*]] = load <2 x i64>, ptr %{{.*}}, align 16450! LLVMIR: %{{[0-9]+}} = call <2 x i64> @llvm.ppc.altivec.vcmpgtud(<2 x i64> %[[arg2]], <2 x i64> %[[arg1]])451end subroutine vec_cmplt_test_u8452 453! CHECK-LABEL: vec_cmplt_test_r4454subroutine vec_cmplt_test_r4(arg1, arg2)455 vector(real(4)) :: arg1, arg2456 vector(unsigned(4)) :: r457 r = vec_cmplt(arg1, arg2)458 459! LLVMIR: %[[arg1:.*]] = load <4 x float>, ptr %{{.*}}, align 16460! LLVMIR: %[[arg2:.*]] = load <4 x float>, ptr %{{.*}}, align 16461! LLVMIR: %{{[0-9]+}} = call <4 x i32> @llvm.ppc.vsx.xvcmpgtsp(<4 x float> %[[arg2]], <4 x float> %[[arg1]])462end subroutine vec_cmplt_test_r4463 464! CHECK-LABEL: vec_cmplt_test_r8465subroutine vec_cmplt_test_r8(arg1, arg2)466 vector(real(8)) :: arg1, arg2467 vector(unsigned(8)) :: r468 r = vec_cmplt(arg1, arg2)469 470! LLVMIR: %[[arg1:.*]] = load <2 x double>, ptr %{{.*}}, align 16471! LLVMIR: %[[arg2:.*]] = load <2 x double>, ptr %{{.*}}, align 16472! LLVMIR: %{{[0-9]+}} = call <2 x i64> @llvm.ppc.vsx.xvcmpgtdp(<2 x double> %[[arg2]], <2 x double> %[[arg1]])473end subroutine vec_cmplt_test_r8474 475