[clang] [llvm] [AArch64] Upgrade `llvm.aarch64.neon.{s,u}{min,max}...` vector intrinsics (PR #225339)

Ömer Sinan Ağacan via llvm-commits llvm-commits at lists.llvm.org
Tue Sep 22 02:32:20 PDT 2026


================
@@ -2474,7 +2474,7 @@ uint32x4_t test_vmaxq_u32(uint32x4_t v1, uint32x4_t v2) {
  // LLVM: [[TMP1:%.*]] = bitcast <4 x i32> [[V2]] to <16 x i8>
  // LLVM: [[VMAXQ_V_I:%.*]] = bitcast <16 x i8> [[TMP0]] to <4 x i32>
  // LLVM: [[VMAXQ_V1_I:%.*]] = bitcast <16 x i8> [[TMP1]] to <4 x i32>
- // LLVM: [[VMAXQ_V2_I:%.*]] = call <4 x i32> @llvm.aarch64.neon.umax.v4i32(<4 x i32> [[VMAXQ_V_I]], <4 x i32> [[VMAXQ_V1_I]])
+ // LLVM: [[VMAXQ_V2_I:%.*]] = call <4 x i32> @llvm.umax.v4i32(<4 x i32> [[VMAXQ_V_I]], <4 x i32> [[VMAXQ_V1_I]])
----------------
osa1 wrote:

Yes:
```c
#include <arm_neon.h>

int8x16_t test_smax(int8x16_t a, int8x16_t b) { return vmaxq_s8(a, b); }
int16x8_t test_smin(int16x8_t a, int16x8_t b) { return vminq_s16(a, b); }
uint32x4_t test_umax(uint32x4_t a, uint32x4_t b) { return vmaxq_u32(a, b); }
uint8x8_t test_umin(uint8x8_t a, uint8x8_t b) { return vmin_u8(a, b); }
```
Compile with
```
./build/bin/clang -S -emit-llvm -Xclang -disable-llvm-passes neon_intrinsic_test.c -o -
```
You'll see the neon intrinsics.

https://github.com/llvm/llvm-project/pull/225339


More information about the llvm-commits mailing list