! RUN: %flang_fc1 -flang-experimental-hlfir -emit-llvm %s -fno-ppc-native-vector-element-order -triple ppc64le-unknown-linux -o - | FileCheck --check-prefixes="LLVMIR" %s ! REQUIRES: target=powerpc{{.*}} !CHECK-LABEL: vec_extract_testr4i8 subroutine vec_extract_testr4i8(arg1, arg2, r) vector(real(4)) :: arg1 real(4) :: r integer(8) :: arg2 r = vec_extract(arg1, arg2) ! LLVMIR: %[[arg1:.*]] = load <4 x float>, ptr %{{[0-9]}}, align 16 ! LLVMIR: %[[arg2:.*]] = load i64, ptr %{{[0-9]}}, align 8 ! LLVMIR: %[[urem:.*]] = urem i64 %[[arg2]], 4 ! LLVMIR: %[[sub:.*]] = sub i64 3, %[[urem]] ! LLVMIR: %[[r:.*]] = extractelement <4 x float> %[[arg1]], i64 %[[sub]] ! LLVMIR: store float %[[r]], ptr %{{[0-9]}}, align 4 end subroutine vec_extract_testr4i8 !CHECK-LABEL: vec_extract_testi8i1 subroutine vec_extract_testi8i1(arg1, arg2, r) vector(integer(8)) :: arg1 integer(8) :: r integer(1) :: arg2 r = vec_extract(arg1, arg2) ! LLVMIR: %[[arg1:.*]] = load <2 x i64>, ptr %{{[0-9]}}, align 16 ! LLVMIR: %[[arg2:.*]] = load i8, ptr %{{[0-9]}}, align 1 ! LLVMIR: %[[urem:.*]] = urem i8 %[[arg2]], 2 ! LLVMIR: %[[sub:.*]] = sub i8 1, %[[urem]] ! LLVMIR: %[[r:.*]] = extractelement <2 x i64> %[[arg1]], i8 %[[sub]] ! LLVMIR: store i64 %[[r]], ptr %{{[0-9]}}, align 8 end subroutine vec_extract_testi8i1