38 lines · plain
1! RUN: %flang_fc1 -emit-llvm %s -fno-ppc-native-vector-element-order -triple ppc64le-unknown-linux -o - | FileCheck --check-prefixes="LLVMIR" %s2! REQUIRES: target=powerpc{{.*}}3 4!CHECK-LABEL: vec_insert_testf32i645subroutine vec_insert_testf32i64(v, x, i8)6 real(4) :: v7 vector(real(4)) :: x8 vector(real(4)) :: r9 integer(8) :: i810 r = vec_insert(v, x, i8)11 12! LLVMIR: %[[v:.*]] = load float, ptr %{{[0-9]}}, align 413! LLVMIR: %[[x:.*]] = load <4 x float>, ptr %{{[0-9]}}, align 1614! LLVMIR: %[[i8:.*]] = load i64, ptr %{{[0-9]}}, align 815! LLVMIR: %[[urem:.*]] = urem i64 %[[i8]], 416! LLVMIR: %[[sub:.*]] = sub i64 3, %[[urem]]17! LLVMIR: %[[r:.*]] = insertelement <4 x float> %[[x]], float %[[v]], i64 %[[sub]]18! LLVMIR: store <4 x float> %[[r]], ptr %{{[0-9]}}, align 1619end subroutine vec_insert_testf32i6420 21!CHECK-LABEL: vec_insert_testi64i822subroutine vec_insert_testi64i8(v, x, i1, i2, i4, i8)23 integer(8) :: v24 vector(integer(8)) :: x25 vector(integer(8)) :: r26 integer(1) :: i127 r = vec_insert(v, x, i1)28 29! LLVMIR: %[[v:.*]] = load i64, ptr %{{[0-9]}}, align 830! LLVMIR: %[[x:.*]] = load <2 x i64>, ptr %{{[0-9]}}, align 1631! LLVMIR: %[[i1:.*]] = load i8, ptr %{{[0-9]}}, align 132! LLVMIR: %[[urem:.*]] = urem i8 %[[i1]], 233! LLVMIR: %[[sub:.*]] = sub i8 1, %[[urem]]34! LLVMIR: %[[idx:.*]] = zext i8 %[[sub]] to i6435! LLVMIR: %[[r:.*]] = insertelement <2 x i64> %[[x]], i64 %[[v]], i64 %[[idx]]36! LLVMIR: store <2 x i64> %[[r]], ptr %{{[0-9]}}, align 1637end subroutine vec_insert_testi64i838