1*d74b1f02SMatt Arsenault; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 5
2*d74b1f02SMatt Arsenault; RUN: opt -S -passes=function-attrs < %s | FileCheck %s
3*d74b1f02SMatt Arsenault
4*d74b1f02SMatt Arsenaultdefine double @getUnderlyingObject_vector_ptr(<4 x i1> %arg0, <4 x i1> %arg1) {
5*d74b1f02SMatt Arsenault; CHECK-LABEL: define double @getUnderlyingObject_vector_ptr(
6*d74b1f02SMatt Arsenault; CHECK-SAME: <4 x i1> [[ARG0:%.*]], <4 x i1> [[ARG1:%.*]]) #[[ATTR0:[0-9]+]] {
7*d74b1f02SMatt Arsenault; CHECK-NEXT:    [[GATHER:%.*]] = tail call <4 x double> @llvm.masked.gather.v4f64.v4p0(<4 x ptr> getelementptr inbounds (i8, <4 x ptr> zeroinitializer, <4 x i64> splat (i64 8)), i32 0, <4 x i1> [[ARG0]], <4 x double> zeroinitializer)
8*d74b1f02SMatt Arsenault; CHECK-NEXT:    [[REDUCE_FADD:%.*]] = tail call double @llvm.vector.reduce.fadd.v4f64(double 0.000000e+00, <4 x double> [[GATHER]])
9*d74b1f02SMatt Arsenault; CHECK-NEXT:    ret double [[REDUCE_FADD]]
10*d74b1f02SMatt Arsenault;
11*d74b1f02SMatt Arsenault  %gather = tail call <4 x double> @llvm.masked.gather.v4f64.v4p0(<4 x ptr> getelementptr inbounds (i8, <4 x ptr> zeroinitializer, <4 x i64> <i64 8, i64 8, i64 8, i64 8>), i32 0, <4 x i1> %arg0, <4 x double> zeroinitializer)
12*d74b1f02SMatt Arsenault  %reduce.fadd = tail call double @llvm.vector.reduce.fadd.v4f64(double 0.000000e+00, <4 x double> %gather)
13*d74b1f02SMatt Arsenault  ret double %reduce.fadd
14*d74b1f02SMatt Arsenault}
15