[AArch64] Fix check lines for arm64-neon-across.ll. NFC
authorDavid Green <david.green@arm.com>
Thu, 15 Jun 2023 08:25:28 +0000 (09:25 +0100)
committerDavid Green <david.green@arm.com>
Thu, 15 Jun 2023 08:25:28 +0000 (09:25 +0100)
Commit de0707a2b98162ab52fa2dd9277a9bbb4f7256c7 updated the check lines, but
due to conflicting assembly not all functions kept their checks. This now
distinguishes between selection-dag and global isel.

llvm/test/CodeGen/AArch64/arm64-neon-across.ll

index ed4a02bb0abfd9e5e633a4cb857acd0d64df62e8..218f4147787d1dede207475ec7cb1e7e159902df 100644 (file)
@@ -1,6 +1,6 @@
 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 2
-; RUN: llc < %s -verify-machineinstrs -mtriple=arm64-none-linux-gnu -mattr=+neon | FileCheck %s
-; RUN: llc < %s -global-isel=1 -verify-machineinstrs -mtriple=arm64-none-linux-gnu -mattr=+neon | FileCheck %s
+; RUN: llc < %s -verify-machineinstrs -mtriple=arm64-none-linux-gnu -mattr=+neon | FileCheck %s --check-prefixes=CHECK,CHECK-SD
+; RUN: llc < %s -global-isel=1 -verify-machineinstrs -mtriple=arm64-none-linux-gnu -mattr=+neon | FileCheck %s --check-prefixes=CHECK,CHECK-GI
 
 declare float @llvm.aarch64.neon.fminnmv.f32.v4f32(<4 x float>)
 
@@ -195,6 +195,17 @@ entry:
 }
 
 define i8 @test_vmaxv_s8(<8 x i8> %a) {
+; CHECK-SD-LABEL: test_vmaxv_s8:
+; CHECK-SD:       // %bb.0: // %entry
+; CHECK-SD-NEXT:    smaxv b0, v0.8b
+; CHECK-SD-NEXT:    fmov w0, s0
+; CHECK-SD-NEXT:    ret
+;
+; CHECK-GI-LABEL: test_vmaxv_s8:
+; CHECK-GI:       // %bb.0: // %entry
+; CHECK-GI-NEXT:    smaxv b0, v0.8b
+; CHECK-GI-NEXT:    smov w0, v0.b[0]
+; CHECK-GI-NEXT:    ret
 entry:
   %smaxv.i = tail call i32 @llvm.aarch64.neon.smaxv.i32.v8i8(<8 x i8> %a)
   %0 = trunc i32 %smaxv.i to i8
@@ -202,6 +213,17 @@ entry:
 }
 
 define i16 @test_vmaxv_s16(<4 x i16> %a) {
+; CHECK-SD-LABEL: test_vmaxv_s16:
+; CHECK-SD:       // %bb.0: // %entry
+; CHECK-SD-NEXT:    smaxv h0, v0.4h
+; CHECK-SD-NEXT:    fmov w0, s0
+; CHECK-SD-NEXT:    ret
+;
+; CHECK-GI-LABEL: test_vmaxv_s16:
+; CHECK-GI:       // %bb.0: // %entry
+; CHECK-GI-NEXT:    smaxv h0, v0.4h
+; CHECK-GI-NEXT:    smov w0, v0.h[0]
+; CHECK-GI-NEXT:    ret
 entry:
   %smaxv.i = tail call i32 @llvm.aarch64.neon.smaxv.i32.v4i16(<4 x i16> %a)
   %0 = trunc i32 %smaxv.i to i16
@@ -233,6 +255,17 @@ entry:
 }
 
 define i8 @test_vmaxvq_s8(<16 x i8> %a) {
+; CHECK-SD-LABEL: test_vmaxvq_s8:
+; CHECK-SD:       // %bb.0: // %entry
+; CHECK-SD-NEXT:    smaxv b0, v0.16b
+; CHECK-SD-NEXT:    fmov w0, s0
+; CHECK-SD-NEXT:    ret
+;
+; CHECK-GI-LABEL: test_vmaxvq_s8:
+; CHECK-GI:       // %bb.0: // %entry
+; CHECK-GI-NEXT:    smaxv b0, v0.16b
+; CHECK-GI-NEXT:    smov w0, v0.b[0]
+; CHECK-GI-NEXT:    ret
 entry:
   %smaxv.i = tail call i32 @llvm.aarch64.neon.smaxv.i32.v16i8(<16 x i8> %a)
   %0 = trunc i32 %smaxv.i to i8
@@ -240,6 +273,17 @@ entry:
 }
 
 define i16 @test_vmaxvq_s16(<8 x i16> %a) {
+; CHECK-SD-LABEL: test_vmaxvq_s16:
+; CHECK-SD:       // %bb.0: // %entry
+; CHECK-SD-NEXT:    smaxv h0, v0.8h
+; CHECK-SD-NEXT:    fmov w0, s0
+; CHECK-SD-NEXT:    ret
+;
+; CHECK-GI-LABEL: test_vmaxvq_s16:
+; CHECK-GI:       // %bb.0: // %entry
+; CHECK-GI-NEXT:    smaxv h0, v0.8h
+; CHECK-GI-NEXT:    smov w0, v0.h[0]
+; CHECK-GI-NEXT:    ret
 entry:
   %smaxv.i = tail call i32 @llvm.aarch64.neon.smaxv.i32.v8i16(<8 x i16> %a)
   %0 = trunc i32 %smaxv.i to i16
@@ -293,6 +337,17 @@ entry:
 }
 
 define i8 @test_vminv_s8(<8 x i8> %a) {
+; CHECK-SD-LABEL: test_vminv_s8:
+; CHECK-SD:       // %bb.0: // %entry
+; CHECK-SD-NEXT:    sminv b0, v0.8b
+; CHECK-SD-NEXT:    fmov w0, s0
+; CHECK-SD-NEXT:    ret
+;
+; CHECK-GI-LABEL: test_vminv_s8:
+; CHECK-GI:       // %bb.0: // %entry
+; CHECK-GI-NEXT:    sminv b0, v0.8b
+; CHECK-GI-NEXT:    smov w0, v0.b[0]
+; CHECK-GI-NEXT:    ret
 entry:
   %sminv.i = tail call i32 @llvm.aarch64.neon.sminv.i32.v8i8(<8 x i8> %a)
   %0 = trunc i32 %sminv.i to i8
@@ -300,6 +355,17 @@ entry:
 }
 
 define i16 @test_vminv_s16(<4 x i16> %a) {
+; CHECK-SD-LABEL: test_vminv_s16:
+; CHECK-SD:       // %bb.0: // %entry
+; CHECK-SD-NEXT:    sminv h0, v0.4h
+; CHECK-SD-NEXT:    fmov w0, s0
+; CHECK-SD-NEXT:    ret
+;
+; CHECK-GI-LABEL: test_vminv_s16:
+; CHECK-GI:       // %bb.0: // %entry
+; CHECK-GI-NEXT:    sminv h0, v0.4h
+; CHECK-GI-NEXT:    smov w0, v0.h[0]
+; CHECK-GI-NEXT:    ret
 entry:
   %sminv.i = tail call i32 @llvm.aarch64.neon.sminv.i32.v4i16(<4 x i16> %a)
   %0 = trunc i32 %sminv.i to i16
@@ -331,6 +397,17 @@ entry:
 }
 
 define i8 @test_vminvq_s8(<16 x i8> %a) {
+; CHECK-SD-LABEL: test_vminvq_s8:
+; CHECK-SD:       // %bb.0: // %entry
+; CHECK-SD-NEXT:    sminv b0, v0.16b
+; CHECK-SD-NEXT:    fmov w0, s0
+; CHECK-SD-NEXT:    ret
+;
+; CHECK-GI-LABEL: test_vminvq_s8:
+; CHECK-GI:       // %bb.0: // %entry
+; CHECK-GI-NEXT:    sminv b0, v0.16b
+; CHECK-GI-NEXT:    smov w0, v0.b[0]
+; CHECK-GI-NEXT:    ret
 entry:
   %sminv.i = tail call i32 @llvm.aarch64.neon.sminv.i32.v16i8(<16 x i8> %a)
   %0 = trunc i32 %sminv.i to i8
@@ -338,6 +415,17 @@ entry:
 }
 
 define i16 @test_vminvq_s16(<8 x i16> %a) {
+; CHECK-SD-LABEL: test_vminvq_s16:
+; CHECK-SD:       // %bb.0: // %entry
+; CHECK-SD-NEXT:    sminv h0, v0.8h
+; CHECK-SD-NEXT:    fmov w0, s0
+; CHECK-SD-NEXT:    ret
+;
+; CHECK-GI-LABEL: test_vminvq_s16:
+; CHECK-GI:       // %bb.0: // %entry
+; CHECK-GI-NEXT:    sminv h0, v0.8h
+; CHECK-GI-NEXT:    smov w0, v0.h[0]
+; CHECK-GI-NEXT:    ret
 entry:
   %sminv.i = tail call i32 @llvm.aarch64.neon.sminv.i32.v8i16(<8 x i16> %a)
   %0 = trunc i32 %sminv.i to i16
@@ -391,6 +479,17 @@ entry:
 }
 
 define i8 @test_vaddv_s8(<8 x i8> %a) {
+; CHECK-SD-LABEL: test_vaddv_s8:
+; CHECK-SD:       // %bb.0: // %entry
+; CHECK-SD-NEXT:    addv b0, v0.8b
+; CHECK-SD-NEXT:    fmov w0, s0
+; CHECK-SD-NEXT:    ret
+;
+; CHECK-GI-LABEL: test_vaddv_s8:
+; CHECK-GI:       // %bb.0: // %entry
+; CHECK-GI-NEXT:    addv b0, v0.8b
+; CHECK-GI-NEXT:    smov w0, v0.b[0]
+; CHECK-GI-NEXT:    ret
 entry:
   %vaddv.i = tail call i32 @llvm.aarch64.neon.saddv.i32.v8i8(<8 x i8> %a)
   %0 = trunc i32 %vaddv.i to i8
@@ -398,6 +497,17 @@ entry:
 }
 
 define i16 @test_vaddv_s16(<4 x i16> %a) {
+; CHECK-SD-LABEL: test_vaddv_s16:
+; CHECK-SD:       // %bb.0: // %entry
+; CHECK-SD-NEXT:    addv h0, v0.4h
+; CHECK-SD-NEXT:    fmov w0, s0
+; CHECK-SD-NEXT:    ret
+;
+; CHECK-GI-LABEL: test_vaddv_s16:
+; CHECK-GI:       // %bb.0: // %entry
+; CHECK-GI-NEXT:    addv h0, v0.4h
+; CHECK-GI-NEXT:    smov w0, v0.h[0]
+; CHECK-GI-NEXT:    ret
 entry:
   %vaddv.i = tail call i32 @llvm.aarch64.neon.saddv.i32.v4i16(<4 x i16> %a)
   %0 = trunc i32 %vaddv.i to i16
@@ -405,6 +515,17 @@ entry:
 }
 
 define i8 @test_vaddv_u8(<8 x i8> %a) {
+; CHECK-SD-LABEL: test_vaddv_u8:
+; CHECK-SD:       // %bb.0: // %entry
+; CHECK-SD-NEXT:    addv b0, v0.8b
+; CHECK-SD-NEXT:    fmov w0, s0
+; CHECK-SD-NEXT:    ret
+;
+; CHECK-GI-LABEL: test_vaddv_u8:
+; CHECK-GI:       // %bb.0: // %entry
+; CHECK-GI-NEXT:    addv b0, v0.8b
+; CHECK-GI-NEXT:    smov w0, v0.b[0]
+; CHECK-GI-NEXT:    ret
 entry:
   %vaddv.i = tail call i32 @llvm.aarch64.neon.saddv.i32.v8i8(<8 x i8> %a)
   %0 = trunc i32 %vaddv.i to i8
@@ -412,6 +533,17 @@ entry:
 }
 
 define i16 @test_vaddv_u16(<4 x i16> %a) {
+; CHECK-SD-LABEL: test_vaddv_u16:
+; CHECK-SD:       // %bb.0: // %entry
+; CHECK-SD-NEXT:    addv h0, v0.4h
+; CHECK-SD-NEXT:    fmov w0, s0
+; CHECK-SD-NEXT:    ret
+;
+; CHECK-GI-LABEL: test_vaddv_u16:
+; CHECK-GI:       // %bb.0: // %entry
+; CHECK-GI-NEXT:    addv h0, v0.4h
+; CHECK-GI-NEXT:    smov w0, v0.h[0]
+; CHECK-GI-NEXT:    ret
 entry:
   %vaddv.i = tail call i32 @llvm.aarch64.neon.saddv.i32.v4i16(<4 x i16> %a)
   %0 = trunc i32 %vaddv.i to i16
@@ -419,6 +551,17 @@ entry:
 }
 
 define i8 @test_vaddvq_s8(<16 x i8> %a) {
+; CHECK-SD-LABEL: test_vaddvq_s8:
+; CHECK-SD:       // %bb.0: // %entry
+; CHECK-SD-NEXT:    addv b0, v0.16b
+; CHECK-SD-NEXT:    fmov w0, s0
+; CHECK-SD-NEXT:    ret
+;
+; CHECK-GI-LABEL: test_vaddvq_s8:
+; CHECK-GI:       // %bb.0: // %entry
+; CHECK-GI-NEXT:    addv b0, v0.16b
+; CHECK-GI-NEXT:    smov w0, v0.b[0]
+; CHECK-GI-NEXT:    ret
 entry:
   %vaddv.i = tail call i32 @llvm.aarch64.neon.saddv.i32.v16i8(<16 x i8> %a)
   %0 = trunc i32 %vaddv.i to i8
@@ -426,6 +569,17 @@ entry:
 }
 
 define i16 @test_vaddvq_s16(<8 x i16> %a) {
+; CHECK-SD-LABEL: test_vaddvq_s16:
+; CHECK-SD:       // %bb.0: // %entry
+; CHECK-SD-NEXT:    addv h0, v0.8h
+; CHECK-SD-NEXT:    fmov w0, s0
+; CHECK-SD-NEXT:    ret
+;
+; CHECK-GI-LABEL: test_vaddvq_s16:
+; CHECK-GI:       // %bb.0: // %entry
+; CHECK-GI-NEXT:    addv h0, v0.8h
+; CHECK-GI-NEXT:    smov w0, v0.h[0]
+; CHECK-GI-NEXT:    ret
 entry:
   %vaddv.i = tail call i32 @llvm.aarch64.neon.saddv.i32.v8i16(<8 x i16> %a)
   %0 = trunc i32 %vaddv.i to i16
@@ -444,6 +598,17 @@ entry:
 }
 
 define i8 @test_vaddvq_u8(<16 x i8> %a) {
+; CHECK-SD-LABEL: test_vaddvq_u8:
+; CHECK-SD:       // %bb.0: // %entry
+; CHECK-SD-NEXT:    addv b0, v0.16b
+; CHECK-SD-NEXT:    fmov w0, s0
+; CHECK-SD-NEXT:    ret
+;
+; CHECK-GI-LABEL: test_vaddvq_u8:
+; CHECK-GI:       // %bb.0: // %entry
+; CHECK-GI-NEXT:    addv b0, v0.16b
+; CHECK-GI-NEXT:    smov w0, v0.b[0]
+; CHECK-GI-NEXT:    ret
 entry:
   %vaddv.i = tail call i32 @llvm.aarch64.neon.saddv.i32.v16i8(<16 x i8> %a)
   %0 = trunc i32 %vaddv.i to i8
@@ -451,6 +616,17 @@ entry:
 }
 
 define i16 @test_vaddvq_u16(<8 x i16> %a) {
+; CHECK-SD-LABEL: test_vaddvq_u16:
+; CHECK-SD:       // %bb.0: // %entry
+; CHECK-SD-NEXT:    addv h0, v0.8h
+; CHECK-SD-NEXT:    fmov w0, s0
+; CHECK-SD-NEXT:    ret
+;
+; CHECK-GI-LABEL: test_vaddvq_u16:
+; CHECK-GI:       // %bb.0: // %entry
+; CHECK-GI-NEXT:    addv h0, v0.8h
+; CHECK-GI-NEXT:    smov w0, v0.h[0]
+; CHECK-GI-NEXT:    ret
 entry:
   %vaddv.i = tail call i32 @llvm.aarch64.neon.saddv.i32.v8i16(<8 x i16> %a)
   %0 = trunc i32 %vaddv.i to i16