brintos

brintos / llvm-project-archived public Read only

0
0
Text · 17.8 KiB · bea1eaa Raw
530 lines · plain
1! RUN: %flang_fc1 -flang-experimental-hlfir -emit-llvm %s -o - | FileCheck --check-prefixes="LLVMIR" %s2! REQUIRES: target=powerpc{{.*}}3 4! vec_add5 6! CHECK-LABEL: vec_add_testf327subroutine vec_add_testf32(x, y)8  vector(real(4)) :: vsum, x, y9  vsum = vec_add(x, y)10 11! LLVMIR: %[[x:.*]] = load <4 x float>, ptr %{{[0-9]}}, align 1612! LLVMIR: %[[y:.*]] = load <4 x float>, ptr %{{[0-9]}}, align 1613! LLVMIR: %{{[0-9]}} = fadd contract <4 x float> %[[x]], %[[y]]14end subroutine vec_add_testf3215 16! CHECK-LABEL: vec_add_testf6417subroutine vec_add_testf64(x, y)18  vector(real(8)) :: vsum, x, y19  vsum = vec_add(x, y)20 21! LLVMIR: %[[x:.*]] = load <2 x double>, ptr %{{[0-9]}}, align 1622! LLVMIR: %[[y:.*]] = load <2 x double>, ptr %{{[0-9]}}, align 1623! LLVMIR: %{{[0-9]}} = fadd contract <2 x double> %[[x]], %[[y]]24end subroutine vec_add_testf6425 26! CHECK-LABEL: vec_add_testi827subroutine vec_add_testi8(x, y)28  vector(integer(1)) :: vsum, x, y29  vsum = vec_add(x, y)30 31! LLVMIR: %[[x:.*]] = load <16 x i8>, ptr %{{[0-9]}}, align 1632! LLVMIR: %[[y:.*]] = load <16 x i8>, ptr %{{[0-9]}}, align 1633! LLVMIR: %{{[0-9]}} = add <16 x i8> %[[x]], %[[y]]34end subroutine vec_add_testi835 36! CHECK-LABEL: vec_add_testi1637subroutine vec_add_testi16(x, y)38  vector(integer(2)) :: vsum, x, y39  vsum = vec_add(x, y)40 41! LLVMIR: %[[x:.*]] = load <8 x i16>, ptr %{{[0-9]}}, align 1642! LLVMIR: %[[y:.*]] = load <8 x i16>, ptr %{{[0-9]}}, align 1643! LLVMIR: %{{[0-9]}} = add <8 x i16> %[[x]], %[[y]]44end subroutine vec_add_testi1645 46! CHECK-LABEL: vec_add_testi3247subroutine vec_add_testi32(x, y)48  vector(integer(4)) :: vsum, x, y49  vsum = vec_add(x, y)50 51! LLVMIR: %[[x:.*]] = load <4 x i32>, ptr %{{[0-9]}}, align 1652! LLVMIR: %[[y:.*]] = load <4 x i32>, ptr %{{[0-9]}}, align 1653! LLVMIR: %{{[0-9]}} = add <4 x i32> %[[x]], %[[y]]54end subroutine vec_add_testi3255 56! CHECK-LABEL: vec_add_testi6457subroutine vec_add_testi64(x, y)58  vector(integer(8)) :: vsum, x, y59  vsum = vec_add(x, y)60 61! LLVMIR: %[[x:.*]] = load <2 x i64>, ptr %{{[0-9]}}, align 1662! LLVMIR: %[[y:.*]] = load <2 x i64>, ptr %{{[0-9]}}, align 1663! LLVMIR: %{{[0-9]}} = add <2 x i64> %[[x]], %[[y]]64end subroutine vec_add_testi6465 66! CHECK-LABEL: vec_add_testui867subroutine vec_add_testui8(x, y)68  vector(unsigned(1)) :: vsum, x, y69  vsum = vec_add(x, y)70 71! LLVMIR: %[[x:.*]] = load <16 x i8>, ptr %{{[0-9]}}, align 1672! LLVMIR: %[[y:.*]] = load <16 x i8>, ptr %{{[0-9]}}, align 1673! LLVMIR: %{{[0-9]}} = add <16 x i8> %[[x]], %[[y]]74end subroutine vec_add_testui875 76! CHECK-LABEL: vec_add_testui1677subroutine vec_add_testui16(x, y)78  vector(unsigned(2)) :: vsum, x, y79  vsum = vec_add(x, y)80 81! LLVMIR: %[[x:.*]] = load <8 x i16>, ptr %{{[0-9]}}, align 1682! LLVMIR: %[[y:.*]] = load <8 x i16>, ptr %{{[0-9]}}, align 1683! LLVMIR: %{{[0-9]}} = add <8 x i16> %[[x]], %[[y]]84end subroutine vec_add_testui1685 86! CHECK-LABEL: vec_add_testui3287subroutine vec_add_testui32(x, y)88  vector(unsigned(4)) :: vsum, x, y89  vsum = vec_add(x, y)90 91! LLVMIR: %[[x:.*]] = load <4 x i32>, ptr %{{[0-9]}}, align 1692! LLVMIR: %[[y:.*]] = load <4 x i32>, ptr %{{[0-9]}}, align 1693! LLVMIR: %{{[0-9]}} = add <4 x i32> %[[x]], %[[y]]94end subroutine vec_add_testui3295 96! CHECK-LABEL: vec_add_testui6497subroutine vec_add_testui64(x, y)98  vector(unsigned(8)) :: vsum, x, y99  vsum = vec_add(x, y)100 101! LLVMIR: %[[x:.*]] = load <2 x i64>, ptr %{{[0-9]}}, align 16102! LLVMIR: %[[y:.*]] = load <2 x i64>, ptr %{{[0-9]}}, align 16103! LLVMIR: %{{[0-9]}} = add <2 x i64> %[[x]], %[[y]]104end subroutine vec_add_testui64105 106! vec_mul107 108! CHECK-LABEL: vec_mul_testf32109subroutine vec_mul_testf32(x, y)110  vector(real(4)) :: vmul, x, y111  vmul = vec_mul(x, y)112 113! LLVMIR: %[[x:.*]] = load <4 x float>, ptr %{{[0-9]}}, align 16114! LLVMIR: %[[y:.*]] = load <4 x float>, ptr %{{[0-9]}}, align 16115! LLVMIR: %{{[0-9]}} = fmul contract <4 x float> %[[x]], %[[y]]116end subroutine vec_mul_testf32117 118! CHECK-LABEL: vec_mul_testf64119subroutine vec_mul_testf64(x, y)120  vector(real(8)) :: vmul, x, y121  vmul = vec_mul(x, y)122 123! LLVMIR: %[[x:.*]] = load <2 x double>, ptr %{{[0-9]}}, align 16124! LLVMIR: %[[y:.*]] = load <2 x double>, ptr %{{[0-9]}}, align 16125! LLVMIR: %{{[0-9]}} = fmul contract <2 x double> %[[x]], %[[y]]126end subroutine vec_mul_testf64127 128! CHECK-LABEL: vec_mul_testi8129subroutine vec_mul_testi8(x, y)130  vector(integer(1)) :: vmul, x, y131  vmul = vec_mul(x, y)132 133! LLVMIR: %[[x:.*]] = load <16 x i8>, ptr %{{[0-9]}}, align 16134! LLVMIR: %[[y:.*]] = load <16 x i8>, ptr %{{[0-9]}}, align 16135! LLVMIR: %{{[0-9]}} = mul <16 x i8> %[[x]], %[[y]]136end subroutine vec_mul_testi8137 138! CHECK-LABEL: vec_mul_testi16139subroutine vec_mul_testi16(x, y)140  vector(integer(2)) :: vmul, x, y141  vmul = vec_mul(x, y)142 143! LLVMIR: %[[x:.*]] = load <8 x i16>, ptr %{{[0-9]}}, align 16144! LLVMIR: %[[y:.*]] = load <8 x i16>, ptr %{{[0-9]}}, align 16145! LLVMIR: %{{[0-9]}} = mul <8 x i16> %[[x]], %[[y]]146end subroutine vec_mul_testi16147 148! CHECK-LABEL: vec_mul_testi32149subroutine vec_mul_testi32(x, y)150  vector(integer(4)) :: vmul, x, y151  vmul = vec_mul(x, y)152 153! LLVMIR: %[[x:.*]] = load <4 x i32>, ptr %{{[0-9]}}, align 16154! LLVMIR: %[[y:.*]] = load <4 x i32>, ptr %{{[0-9]}}, align 16155! LLVMIR: %{{[0-9]}} = mul <4 x i32> %[[x]], %[[y]]156end subroutine vec_mul_testi32157 158! CHECK-LABEL: vec_mul_testi64159subroutine vec_mul_testi64(x, y)160  vector(integer(8)) :: vmul, x, y161  vmul = vec_mul(x, y)162 163! LLVMIR: %[[x:.*]] = load <2 x i64>, ptr %{{[0-9]}}, align 16164! LLVMIR: %[[y:.*]] = load <2 x i64>, ptr %{{[0-9]}}, align 16165! LLVMIR: %{{[0-9]}} = mul <2 x i64> %[[x]], %[[y]]166end subroutine vec_mul_testi64167 168! CHECK-LABEL: vec_mul_testui8169subroutine vec_mul_testui8(x, y)170  vector(unsigned(1)) :: vmul, x, y171  vmul = vec_mul(x, y)172 173! LLVMIR: %[[x:.*]] = load <16 x i8>, ptr %{{[0-9]}}, align 16174! LLVMIR: %[[y:.*]] = load <16 x i8>, ptr %{{[0-9]}}, align 16175! LLVMIR: %{{[0-9]}} = mul <16 x i8> %[[x]], %[[y]]176end subroutine vec_mul_testui8177 178! CHECK-LABEL: vec_mul_testui16179subroutine vec_mul_testui16(x, y)180  vector(unsigned(2)) :: vmul, x, y181  vmul = vec_mul(x, y)182 183! LLVMIR: %[[x:.*]] = load <8 x i16>, ptr %{{[0-9]}}, align 16184! LLVMIR: %[[y:.*]] = load <8 x i16>, ptr %{{[0-9]}}, align 16185! LLVMIR: %{{[0-9]}} = mul <8 x i16> %[[x]], %[[y]]186end subroutine vec_mul_testui16187 188! CHECK-LABEL: vec_mul_testui32189subroutine vec_mul_testui32(x, y)190  vector(unsigned(4)) :: vmul, x, y191  vmul = vec_mul(x, y)192 193! LLVMIR: %[[x:.*]] = load <4 x i32>, ptr %{{[0-9]}}, align 16194! LLVMIR: %[[y:.*]] = load <4 x i32>, ptr %{{[0-9]}}, align 16195! LLVMIR: %{{[0-9]}} = mul <4 x i32> %[[x]], %[[y]]196end subroutine vec_mul_testui32197 198! CHECK-LABEL: vec_mul_testui64199subroutine vec_mul_testui64(x, y)200  vector(unsigned(8)) :: vmul, x, y201  vmul = vec_mul(x, y)202 203! LLVMIR: %[[x:.*]] = load <2 x i64>, ptr %{{[0-9]}}, align 16204! LLVMIR: %[[y:.*]] = load <2 x i64>, ptr %{{[0-9]}}, align 16205! LLVMIR: %{{[0-9]}} = mul <2 x i64> %[[x]], %[[y]]206end subroutine vec_mul_testui64207 208! vec_sub209 210! CHECK-LABEL: vec_sub_testf32211subroutine vec_sub_testf32(x, y)212  vector(real(4)) :: vsub, x, y213  vsub = vec_sub(x, y)214 215! LLVMIR: %[[x:.*]] = load <4 x float>, ptr %{{[0-9]}}, align 16216! LLVMIR: %[[y:.*]] = load <4 x float>, ptr %{{[0-9]}}, align 16217! LLVMIR: %{{[0-9]}} = fsub contract <4 x float> %[[x]], %[[y]]218end subroutine vec_sub_testf32219 220! CHECK-LABEL: vec_sub_testf64221subroutine vec_sub_testf64(x, y)222  vector(real(8)) :: vsub, x, y223  vsub = vec_sub(x, y)224 225! LLVMIR: %[[x:.*]] = load <2 x double>, ptr %{{[0-9]}}, align 16226! LLVMIR: %[[y:.*]] = load <2 x double>, ptr %{{[0-9]}}, align 16227! LLVMIR: %{{[0-9]}} = fsub contract <2 x double> %[[x]], %[[y]]228end subroutine vec_sub_testf64229 230! CHECK-LABEL: vec_sub_testi8231subroutine vec_sub_testi8(x, y)232  vector(integer(1)) :: vsub, x, y233  vsub = vec_sub(x, y)234 235! LLVMIR: %[[x:.*]] = load <16 x i8>, ptr %{{[0-9]}}, align 16236! LLVMIR: %[[y:.*]] = load <16 x i8>, ptr %{{[0-9]}}, align 16237! LLVMIR: %{{[0-9]}} = sub <16 x i8> %[[x]], %[[y]]238end subroutine vec_sub_testi8239 240! CHECK-LABEL: vec_sub_testi16241subroutine vec_sub_testi16(x, y)242  vector(integer(2)) :: vsub, x, y243  vsub = vec_sub(x, y)244 245! LLVMIR: %[[x:.*]] = load <8 x i16>, ptr %{{[0-9]}}, align 16246! LLVMIR: %[[y:.*]] = load <8 x i16>, ptr %{{[0-9]}}, align 16247! LLVMIR: %{{[0-9]}} = sub <8 x i16> %[[x]], %[[y]]248end subroutine vec_sub_testi16249 250! CHECK-LABEL: vec_sub_testi32251subroutine vec_sub_testi32(x, y)252  vector(integer(4)) :: vsub, x, y253  vsub = vec_sub(x, y)254 255! LLVMIR: %[[x:.*]] = load <4 x i32>, ptr %{{[0-9]}}, align 16256! LLVMIR: %[[y:.*]] = load <4 x i32>, ptr %{{[0-9]}}, align 16257! LLVMIR: %{{[0-9]}} = sub <4 x i32> %[[x]], %[[y]]258end subroutine vec_sub_testi32259 260! CHECK-LABEL: vec_sub_testi64261subroutine vec_sub_testi64(x, y)262  vector(integer(8)) :: vsub, x, y263  vsub = vec_sub(x, y)264 265! LLVMIR: %[[x:.*]] = load <2 x i64>, ptr %{{[0-9]}}, align 16266! LLVMIR: %[[y:.*]] = load <2 x i64>, ptr %{{[0-9]}}, align 16267! LLVMIR: %{{[0-9]}} = sub <2 x i64> %[[x]], %[[y]]268end subroutine vec_sub_testi64269 270! CHECK-LABEL: vec_sub_testui8271subroutine vec_sub_testui8(x, y)272  vector(unsigned(1)) :: vsub, x, y273  vsub = vec_sub(x, y)274 275! LLVMIR: %[[x:.*]] = load <16 x i8>, ptr %{{[0-9]}}, align 16276! LLVMIR: %[[y:.*]] = load <16 x i8>, ptr %{{[0-9]}}, align 16277! LLVMIR: %{{[0-9]}} = sub <16 x i8> %[[x]], %[[y]]278end subroutine vec_sub_testui8279 280! CHECK-LABEL: vec_sub_testui16281subroutine vec_sub_testui16(x, y)282  vector(unsigned(2)) :: vsub, x, y283  vsub = vec_sub(x, y)284 285! LLVMIR: %[[x:.*]] = load <8 x i16>, ptr %{{[0-9]}}, align 16286! LLVMIR: %[[y:.*]] = load <8 x i16>, ptr %{{[0-9]}}, align 16287! LLVMIR: %{{[0-9]}} = sub <8 x i16> %[[x]], %[[y]]288end subroutine vec_sub_testui16289 290! CHECK-LABEL: vec_sub_testui32291subroutine vec_sub_testui32(x, y)292  vector(unsigned(4)) :: vsub, x, y293  vsub = vec_sub(x, y)294 295! LLVMIR: %[[x:.*]] = load <4 x i32>, ptr %{{[0-9]}}, align 16296! LLVMIR: %[[y:.*]] = load <4 x i32>, ptr %{{[0-9]}}, align 16297! LLVMIR: %{{[0-9]}} = sub <4 x i32> %[[x]], %[[y]]298end subroutine vec_sub_testui32299 300! CHECK-LABEL: vec_sub_testui64301subroutine vec_sub_testui64(x, y)302  vector(unsigned(8)) :: vsub, x, y303  vsub = vec_sub(x, y)304 305! LLVMIR: %[[x:.*]] = load <2 x i64>, ptr %{{[0-9]}}, align 16306! LLVMIR: %[[y:.*]] = load <2 x i64>, ptr %{{[0-9]}}, align 16307! LLVMIR: %{{[0-9]}} = sub <2 x i64> %[[x]], %[[y]]308end subroutine vec_sub_testui64309 310!----------------------311! vec_and312!----------------------313 314! CHECK-LABEL: vec_and_test_i8315subroutine vec_and_test_i8(arg1, arg2)316  vector(integer(1)) :: r, arg1, arg2317  r = vec_and(arg1, arg2)318 319! LLVMIR: %[[arg1:.*]] = load <16 x i8>, ptr %{{.*}}, align 16320! LLVMIR: %[[arg2:.*]] = load <16 x i8>, ptr %{{.*}}, align 16321! LLVMIR: %{{[0-9]+}} = and <16 x i8> %[[arg1]], %[[arg2]]322end subroutine vec_and_test_i8323 324! CHECK-LABEL: vec_and_test_i16325subroutine vec_and_test_i16(arg1, arg2)326  vector(integer(2)) :: r, arg1, arg2327  r = vec_and(arg1, arg2)328 329! LLVMIR: %[[arg1:.*]] = load <8 x i16>, ptr %{{.*}}, align 16330! LLVMIR: %[[arg2:.*]] = load <8 x i16>, ptr %{{.*}}, align 16331! LLVMIR: %{{[0-9]+}} = and <8 x i16> %[[arg1]], %[[arg2]]332end subroutine vec_and_test_i16333 334! CHECK-LABEL: vec_and_test_i32335subroutine vec_and_test_i32(arg1, arg2)336  vector(integer(4)) :: r, arg1, arg2337  r = vec_and(arg1, arg2)338 339! LLVMIR: %[[arg1:.*]] = load <4 x i32>, ptr %{{.*}}, align 16340! LLVMIR: %[[arg2:.*]] = load <4 x i32>, ptr %{{.*}}, align 16341! LLVMIR: %{{[0-9]+}} = and <4 x i32> %[[arg1]], %[[arg2]]342end subroutine vec_and_test_i32343 344! CHECK-LABEL: vec_and_test_i64345subroutine vec_and_test_i64(arg1, arg2)346  vector(integer(8)) :: r, arg1, arg2347  r = vec_and(arg1, arg2)348 349! LLVMIR: %[[arg1:.*]] = load <2 x i64>, ptr %{{.*}}, align 16350! LLVMIR: %[[arg2:.*]] = load <2 x i64>, ptr %{{.*}}, align 16351! LLVMIR: %{{[0-9]+}} = and <2 x i64> %[[arg1]], %[[arg2]]352end subroutine vec_and_test_i64353 354! CHECK-LABEL: vec_and_test_u8355subroutine vec_and_test_u8(arg1, arg2)356  vector(unsigned(1)) :: r, arg1, arg2357  r = vec_and(arg1, arg2)358 359! LLVMIR: %[[arg1:.*]] = load <16 x i8>, ptr %{{.*}}, align 16360! LLVMIR: %[[arg2:.*]] = load <16 x i8>, ptr %{{.*}}, align 16361! LLVMIR: %{{[0-9]+}} = and <16 x i8> %[[arg1]], %[[arg2]]362end subroutine vec_and_test_u8363 364! CHECK-LABEL: vec_and_test_u16365subroutine vec_and_test_u16(arg1, arg2)366  vector(unsigned(2)) :: r, arg1, arg2367  r = vec_and(arg1, arg2)368 369! LLVMIR: %[[arg1:.*]] = load <8 x i16>, ptr %{{.*}}, align 16370! LLVMIR: %[[arg2:.*]] = load <8 x i16>, ptr %{{.*}}, align 16371! LLVMIR: %{{[0-9]+}} = and <8 x i16> %[[arg1]], %[[arg2]]372end subroutine vec_and_test_u16373 374! CHECK-LABEL: vec_and_test_u32375subroutine vec_and_test_u32(arg1, arg2)376  vector(unsigned(4)) :: r, arg1, arg2377  r = vec_and(arg1, arg2)378 379! LLVMIR: %[[arg1:.*]] = load <4 x i32>, ptr %{{.*}}, align 16380! LLVMIR: %[[arg2:.*]] = load <4 x i32>, ptr %{{.*}}, align 16381! LLVMIR: %{{[0-9]+}} = and <4 x i32> %[[arg1]], %[[arg2]]382end subroutine vec_and_test_u32383 384! CHECK-LABEL: vec_and_test_u64385subroutine vec_and_test_u64(arg1, arg2)386  vector(unsigned(8)) :: r, arg1, arg2387  r = vec_and(arg1, arg2)388 389! LLVMIR: %[[arg1:.*]] = load <2 x i64>, ptr %{{.*}}, align 16390! LLVMIR: %[[arg2:.*]] = load <2 x i64>, ptr %{{.*}}, align 16391! LLVMIR: %{{[0-9]+}} = and <2 x i64> %[[arg1]], %[[arg2]]392end subroutine vec_and_test_u64393 394! CHECK-LABEL: vec_and_testf32395subroutine vec_and_testf32(arg1, arg2)396  vector(real(4)) :: r, arg1, arg2397  r = vec_and(arg1, arg2)398 399! LLVMIR: %[[arg1:.*]] = load <4 x float>, ptr %{{.*}}, align 16400! LLVMIR: %[[arg2:.*]] = load <4 x float>, ptr %{{.*}}, align 16401! LLVMIR: %[[bc1:.*]] = bitcast <4 x float> %[[arg1]] to <4 x i32>402! LLVMIR: %[[bc2:.*]] = bitcast <4 x float> %[[arg2]] to <4 x i32>403! LLVMIR: %[[r:.*]] = and <4 x i32> %[[bc1]], %[[bc2]]404! LLVMIR: %{{[0-9]+}} = bitcast <4 x i32> %[[r]] to <4 x float>405end subroutine vec_and_testf32406 407! CHECK-LABEL: vec_and_testf64408subroutine vec_and_testf64(arg1, arg2)409  vector(real(8)) :: r, arg1, arg2410  r = vec_and(arg1, arg2)411 412! LLVMIR: %[[arg1:.*]] = load <2 x double>, ptr %{{.*}}, align 16413! LLVMIR: %[[arg2:.*]] = load <2 x double>, ptr %{{.*}}, align 16414! LLVMIR: %[[bc1:.*]] = bitcast <2 x double> %[[arg1]] to <2 x i64>415! LLVMIR: %[[bc2:.*]] = bitcast <2 x double> %[[arg2]] to <2 x i64>416! LLVMIR: %[[r:.*]] = and <2 x i64> %[[bc1]], %[[bc2]]417! LLVMIR: %{{[0-9]+}} = bitcast <2 x i64> %[[r]] to <2 x double>418end subroutine vec_and_testf64419 420!----------------------421! vec_xor422!----------------------423 424! CHECK-LABEL: vec_xor_test_i8425subroutine vec_xor_test_i8(arg1, arg2)426  vector(integer(1)) :: r, arg1, arg2427  r = vec_xor(arg1, arg2)428 429! LLVMIR: %[[arg1:.*]] = load <16 x i8>, ptr %{{.*}}, align 16430! LLVMIR: %[[arg2:.*]] = load <16 x i8>, ptr %{{.*}}, align 16431! LLVMIR: %{{[0-9]+}} = xor <16 x i8> %[[arg1]], %[[arg2]]432end subroutine vec_xor_test_i8433 434! CHECK-LABEL: vec_xor_test_i16435subroutine vec_xor_test_i16(arg1, arg2)436  vector(integer(2)) :: r, arg1, arg2437  r = vec_xor(arg1, arg2)438 439! LLVMIR: %[[arg1:.*]] = load <8 x i16>, ptr %{{.*}}, align 16440! LLVMIR: %[[arg2:.*]] = load <8 x i16>, ptr %{{.*}}, align 16441! LLVMIR: %{{[0-9]+}} = xor <8 x i16> %[[arg1]], %[[arg2]]442end subroutine vec_xor_test_i16443 444! CHECK-LABEL: vec_xor_test_i32445subroutine vec_xor_test_i32(arg1, arg2)446  vector(integer(4)) :: r, arg1, arg2447  r = vec_xor(arg1, arg2)448 449! LLVMIR: %[[arg1:.*]] = load <4 x i32>, ptr %{{.*}}, align 16450! LLVMIR: %[[arg2:.*]] = load <4 x i32>, ptr %{{.*}}, align 16451! LLVMIR: %{{[0-9]+}} = xor <4 x i32> %[[arg1]], %[[arg2]]452end subroutine vec_xor_test_i32453 454! CHECK-LABEL: vec_xor_test_i64455subroutine vec_xor_test_i64(arg1, arg2)456  vector(integer(8)) :: r, arg1, arg2457  r = vec_xor(arg1, arg2)458 459! LLVMIR: %[[arg1:.*]] = load <2 x i64>, ptr %{{.*}}, align 16460! LLVMIR: %[[arg2:.*]] = load <2 x i64>, ptr %{{.*}}, align 16461! LLVMIR: %{{[0-9]+}} = xor <2 x i64> %[[arg1]], %[[arg2]]462end subroutine vec_xor_test_i64463 464! CHECK-LABEL: vec_xor_test_u8465subroutine vec_xor_test_u8(arg1, arg2)466  vector(unsigned(1)) :: r, arg1, arg2467  r = vec_xor(arg1, arg2)468 469! LLVMIR: %[[arg1:.*]] = load <16 x i8>, ptr %{{.*}}, align 16470! LLVMIR: %[[arg2:.*]] = load <16 x i8>, ptr %{{.*}}, align 16471! LLVMIR: %{{[0-9]+}} = xor <16 x i8> %[[arg1]], %[[arg2]]472end subroutine vec_xor_test_u8473 474! CHECK-LABEL: vec_xor_test_u16475subroutine vec_xor_test_u16(arg1, arg2)476  vector(unsigned(2)) :: r, arg1, arg2477  r = vec_xor(arg1, arg2)478 479! LLVMIR: %[[arg1:.*]] = load <8 x i16>, ptr %{{.*}}, align 16480! LLVMIR: %[[arg2:.*]] = load <8 x i16>, ptr %{{.*}}, align 16481! LLVMIR: %{{[0-9]+}} = xor <8 x i16> %[[arg1]], %[[arg2]]482end subroutine vec_xor_test_u16483 484! CHECK-LABEL: vec_xor_test_u32485subroutine vec_xor_test_u32(arg1, arg2)486  vector(unsigned(4)) :: r, arg1, arg2487  r = vec_xor(arg1, arg2)488 489! LLVMIR: %[[arg1:.*]] = load <4 x i32>, ptr %{{.*}}, align 16490! LLVMIR: %[[arg2:.*]] = load <4 x i32>, ptr %{{.*}}, align 16491! LLVMIR: %{{[0-9]+}} = xor <4 x i32> %[[arg1]], %[[arg2]]492end subroutine vec_xor_test_u32493 494! CHECK-LABEL: vec_xor_test_u64495subroutine vec_xor_test_u64(arg1, arg2)496  vector(unsigned(8)) :: r, arg1, arg2497  r = vec_xor(arg1, arg2)498 499! LLVMIR: %[[arg1:.*]] = load <2 x i64>, ptr %{{.*}}, align 16500! LLVMIR: %[[arg2:.*]] = load <2 x i64>, ptr %{{.*}}, align 16501! LLVMIR: %{{[0-9]+}} = xor <2 x i64> %[[arg1]], %[[arg2]]502end subroutine vec_xor_test_u64503 504! CHECK-LABEL: vec_xor_testf32505subroutine vec_xor_testf32(arg1, arg2)506  vector(real(4)) :: r, arg1, arg2507  r = vec_xor(arg1, arg2)508 509! LLVMIR: %[[arg1:.*]] = load <4 x float>, ptr %{{.*}}, align 16510! LLVMIR: %[[arg2:.*]] = load <4 x float>, ptr %{{.*}}, align 16511! LLVMIR: %[[bc1:.*]] = bitcast <4 x float> %[[arg1]] to <4 x i32>512! LLVMIR: %[[bc2:.*]] = bitcast <4 x float> %[[arg2]] to <4 x i32>513! LLVMIR: %[[r:.*]] = xor <4 x i32> %[[bc1]], %[[bc2]]514! LLVMIR: %{{[0-9]+}} = bitcast <4 x i32> %[[r]] to <4 x float>515end subroutine vec_xor_testf32516 517! CHECK-LABEL: vec_xor_testf64518subroutine vec_xor_testf64(arg1, arg2)519  vector(real(8)) :: r, arg1, arg2520  r = vec_xor(arg1, arg2)521 522! LLVMIR: %[[arg1:.*]] = load <2 x double>, ptr %{{.*}}, align 16523! LLVMIR: %[[arg2:.*]] = load <2 x double>, ptr %{{.*}}, align 16524! LLVMIR: %[[bc1:.*]] = bitcast <2 x double> %[[arg1]] to <2 x i64>525! LLVMIR: %[[bc2:.*]] = bitcast <2 x double> %[[arg2]] to <2 x i64>526! LLVMIR: %[[r:.*]] = xor <2 x i64> %[[bc1]], %[[bc2]]527! LLVMIR: %{{[0-9]+}} = bitcast <2 x i64> %[[r]] to <2 x double>528end subroutine vec_xor_testf64529 530