paulwalker-arm added inline comments.

================
Comment at: clang/test/CodeGen/aarch64-sve-vector-elementwise-ops.c:128-131
+// CHECK-NEXT:    [[ELT_MIN:%.*]] = call <vscale x 16 x i8> 
@llvm.umin.nxv16i8(<vscale x 16 x i8> [[VI8:%.*]], <vscale x 16 x i8> [[VI8]])
+// CHECK-NEXT:    [[ELT_MIN1:%.*]] = call <vscale x 8 x i16> 
@llvm.umin.nxv8i16(<vscale x 8 x i16> [[VI16:%.*]], <vscale x 8 x i16> [[VI16]])
+// CHECK-NEXT:    [[ELT_MIN2:%.*]] = call <vscale x 4 x i32> 
@llvm.umin.nxv4i32(<vscale x 4 x i32> [[VI32:%.*]], <vscale x 4 x i32> [[VI32]])
+// CHECK-NEXT:    [[ELT_MIN3:%.*]] = call <vscale x 2 x i64> 
@llvm.umin.nxv2i64(<vscale x 2 x i64> [[VI64:%.*]], <vscale x 2 x i64> [[VI64]])
----------------
These should be `smin` rather than `umin`?


================
Comment at: clang/test/CodeGen/aarch64-sve-vector-elementwise-ops.c:208-210
+// CHECK-NEXT:    [[ELT_COS:%.*]] = call <vscale x 8 x half> 
@llvm.cos.nxv8f16(<vscale x 8 x half> [[VF16:%.*]])
+// CHECK-NEXT:    [[ELT_COS1:%.*]] = call <vscale x 4 x float> 
@llvm.cos.nxv4f32(<vscale x 4 x float> [[VF32:%.*]])
+// CHECK-NEXT:    [[ELT_COS2:%.*]] = call <vscale x 2 x double> 
@llvm.cos.nxv2f64(<vscale x 2 x double> [[VF64:%.*]])
----------------
This highlights a potential sticking point because can we code generate such 
intrinsics for scalable vectors?  LoopVectorize will emit calls to a vector 
math library rather than call this intrinsic directly.  There's also the 
replace-with-veclib pass that will convert such intrinsics, again only if 
there's a suitable math library available.

Is it a good idea to allow builtins that we know will cause a code generation 
failure? Or might result in a scalarised implementation?


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D158479/new/

https://reviews.llvm.org/D158479

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to