brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.5 KiB · 124d589 Raw
131 lines · plain
1; RUN: opt -S < %s | FileCheck %s2; RUN: llvm-dis < %s.bc | FileCheck %s3 4 5define float @fadd_v2(<4 x float> %in, float %acc) {6; CHECK-LABEL: @fadd_v27; CHECK: %res = call float @llvm.vector.reduce.fadd.v4f32(float %acc, <4 x float> %in)8  %res = call float @llvm.experimental.vector.reduce.v2.fadd.f32.v4f32(float %acc, <4 x float> %in)9  ret float %res10}11 12define float @fadd_v2_fast(<4 x float> %in, float %acc) {13; CHECK-LABEL: @fadd_v2_fast14; CHECK: %res = call fast float @llvm.vector.reduce.fadd.v4f32(float %acc, <4 x float> %in)15  %res = call fast float @llvm.experimental.vector.reduce.v2.fadd.f32.v4f32(float %acc, <4 x float> %in)16  ret float %res17}18 19define float @fmul_v2(<4 x float> %in, float %acc) {20; CHECK-LABEL: @fmul_v221; CHECK: %res = call float @llvm.vector.reduce.fmul.v4f32(float %acc, <4 x float> %in)22  %res = call float @llvm.experimental.vector.reduce.v2.fmul.f32.v4f32(float %acc, <4 x float> %in)23  ret float %res24}25 26define float @fmul_v2_fast(<4 x float> %in, float %acc) {27; CHECK-LABEL: @fmul_v2_fast28; CHECK: %res = call fast  float @llvm.vector.reduce.fmul.v4f32(float %acc, <4 x float> %in)29  %res = call fast float @llvm.experimental.vector.reduce.v2.fmul.f32.v4f32(float %acc, <4 x float> %in)30  ret float %res31}32 33define float @fmin(<4 x float> %in) {34; CHECK-LABEL: @fmin35; CHECK: %res = call float @llvm.vector.reduce.fmin.v4f32(<4 x float> %in)36  %res = call float @llvm.experimental.vector.reduce.fmin.v4f32(<4 x float> %in)37  ret float %res38}39 40define float @fmax(<4 x float> %in) {41; CHECK-LABEL: @fmax42; CHECK: %res = call float @llvm.vector.reduce.fmax.v4f32(<4 x float> %in)43  %res = call float @llvm.experimental.vector.reduce.fmax.v4f32(<4 x float> %in)44  ret float %res45}46 47define i32 @and(<4 x i32> %in) {48; CHECK-LABEL: @and49; CHECK: %res = call i32 @llvm.vector.reduce.and.v4i32(<4 x i32> %in)50  %res = call i32 @llvm.experimental.vector.reduce.and.v4i32(<4 x i32> %in)51  ret i32 %res52}53 54define i32 @or(<4 x i32> %in) {55; CHECK-LABEL: @or56; CHECK: %res = call i32 @llvm.vector.reduce.or.v4i32(<4 x i32> %in)57  %res = call i32 @llvm.experimental.vector.reduce.or.v4i32(<4 x i32> %in)58  ret i32 %res59}60 61define i32 @xor(<4 x i32> %in) {62; CHECK-LABEL: @xor63; CHECK: %res = call i32 @llvm.vector.reduce.xor.v4i32(<4 x i32> %in)64  %res = call i32 @llvm.experimental.vector.reduce.xor.v4i32(<4 x i32> %in)65  ret i32 %res66}67 68define i32 @smin(<4 x i32> %in) {69; CHECK-LABEL: @smin70; CHECK: %res = call i32 @llvm.vector.reduce.smin.v4i32(<4 x i32> %in)71  %res = call i32 @llvm.experimental.vector.reduce.smin.v4i32(<4 x i32> %in)72  ret i32 %res73}74 75define i32 @smax(<4 x i32> %in) {76; CHECK-LABEL: @smax77; CHECK: %res = call i32 @llvm.vector.reduce.smax.v4i32(<4 x i32> %in)78  %res = call i32 @llvm.experimental.vector.reduce.smax.v4i32(<4 x i32> %in)79  ret i32 %res80}81 82define i32 @umin(<4 x i32> %in) {83; CHECK-LABEL: @umin84; CHECK: %res = call i32 @llvm.vector.reduce.umin.v4i32(<4 x i32> %in)85  %res = call i32 @llvm.experimental.vector.reduce.umin.v4i32(<4 x i32> %in)86  ret i32 %res87}88 89define i32 @umax(<4 x i32> %in) {90; CHECK-LABEL: @umax91; CHECK: %res = call i32 @llvm.vector.reduce.umax.v4i32(<4 x i32> %in)92  %res = call i32 @llvm.experimental.vector.reduce.umax.v4i32(<4 x i32> %in)93  ret i32 %res94}95 96 97declare float @llvm.experimental.vector.reduce.v2.fadd.f32.v4f32(float, <4 x float>)98declare float @llvm.experimental.vector.reduce.v2.fmul.f32.v4f32(float, <4 x float>)99 100declare float @llvm.experimental.vector.reduce.fmin.v4f32(<4 x float>)101; CHECK: declare float @llvm.vector.reduce.fmin.v4f32(<4 x float>)102 103declare float @llvm.experimental.vector.reduce.fmax.v4f32(<4 x float>)104; CHECK: declare float @llvm.vector.reduce.fmax.v4f32(<4 x float>)105 106declare i32 @llvm.experimental.vector.reduce.and.v4i32(<4 x i32>)107; CHECK: declare i32 @llvm.vector.reduce.and.v4i32(<4 x i32>)108 109declare i32 @llvm.experimental.vector.reduce.or.v4i32(<4 x i32>)110; CHECK: declare i32 @llvm.vector.reduce.or.v4i32(<4 x i32>)111 112declare i32 @llvm.experimental.vector.reduce.xor.v4i32(<4 x i32>)113; CHECK: declare i32 @llvm.vector.reduce.xor.v4i32(<4 x i32>)114 115declare i32 @llvm.experimental.vector.reduce.smin.v4i32(<4 x i32>)116; CHECK: declare i32 @llvm.vector.reduce.smin.v4i32(<4 x i32>)117 118declare i32 @llvm.experimental.vector.reduce.smax.v4i32(<4 x i32>)119; CHECK: declare i32 @llvm.vector.reduce.smax.v4i32(<4 x i32>)120 121declare i32 @llvm.experimental.vector.reduce.umin.v4i32(<4 x i32>)122; CHECK: declare i32 @llvm.vector.reduce.umin.v4i32(<4 x i32>)123 124declare i32 @llvm.experimental.vector.reduce.umax.v4i32(<4 x i32>)125; CHECK: declare i32 @llvm.vector.reduce.umax.v4i32(<4 x i32>)126 127 128 129 130 131