SVE svdupq intrinsic missing in nvhpc?

It seems that some SVE intrinsics may not be handled with nvhpc. I had an issue compiling a code using svdupq intrinsics recently.

I made a little reproducer and it seems that at least some svdupq variants are not available with nvhpc (tried with 22.7 and 22.9). The following code compiles fine with gcc 11 and llvm 11+ (at least).

gcc test.c -o test -march=armv8.1-a+sve
clang test.c -o test -march=armv8.1-a+sve
don’t complain

But with nvc,

nvc test.c -o test -tp neoverse-v1
/usr/bin/ld: /tmp/nvcDg_bxYzA1gsm.o: in function `main':
//test.c:10: undefined reference to `svdupq_n_f64.nxv2f64'
/usr/bin/ld: //test.c:11: undefined reference to `svdupq_f64(double, double) [clone .nxv2f64]'
/usr/bin/ld: //test.c:12: undefined reference to `svdupq_n_f32.nxv4f32'

So it appears that this is not handled, while it should?

#include "arm_sve.h"
#include <stdlib.h>
#include <stdio.h>

int main(){
 //OK
 svfloat64_t acc0 = svdup_n_f64(0.0);
 //missing ?
 acc0 = svdupq_n_f64(0.0, 1.0);
 acc0 = svdupq_f64(0.0, 1.0);
 svfloat32_t test = svdupq_n_f32(0.0, 1.0, 2.0, 3.0);
 return 0;
}

ps: I did not try all variants, so there may be more … and perhaps other calls than svdupq might be affected.

Thanks for the report tim-timmy. Not sure why references are being created for these given they should be made into builtins. I’ve filed a problem report, TPR #32530, and sent it to engineering for investigation.

-Mat