1
1
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2
2
; RUN: llc < %s -verify-machineinstrs -mtriple=aarch64-none-linux-gnu -mattr=+neon | FileCheck %s --check-prefixes=CHECK,CHECK-SD
3
3
; RUN: llc < %s -verify-machineinstrs -mtriple=aarch64-none-linux-gnu -mattr=+neon -global-isel -global-isel-abort=2 2>&1 | FileCheck %s --check-prefixes=CHECK,CHECK-GI
4
+ ; Modifications (c) Copyright 2024 Advanced Micro Devices, Inc. or its affiliates
4
5
5
6
; CHECK-GI: warning: Instruction selection used fallback path for test_bitcastv2f32tov1f64
6
7
; CHECK-GI-NEXT: warning: Instruction selection used fallback path for test_bitcastv1f64tov2f32
@@ -1776,19 +1777,10 @@ entry:
1776
1777
}
1777
1778
1778
1779
define <16 x i8 > @test_concat_v16i8_v16i8_v16i8 (<16 x i8 > %x , <16 x i8 > %y ) #0 {
1779
- ; CHECK-SD-LABEL: test_concat_v16i8_v16i8_v16i8:
1780
- ; CHECK-SD: // %bb.0: // %entry
1781
- ; CHECK-SD-NEXT: mov v0.d[1], v1.d[0]
1782
- ; CHECK-SD-NEXT: ret
1783
- ;
1784
- ; CHECK-GI-LABEL: test_concat_v16i8_v16i8_v16i8:
1785
- ; CHECK-GI: // %bb.0: // %entry
1786
- ; CHECK-GI-NEXT: adrp x8, .LCPI126_0
1787
- ; CHECK-GI-NEXT: // kill: def $q0 killed $q0 killed $q0_q1 def $q0_q1
1788
- ; CHECK-GI-NEXT: ldr q2, [x8, :lo12:.LCPI126_0]
1789
- ; CHECK-GI-NEXT: // kill: def $q1 killed $q1 killed $q0_q1 def $q0_q1
1790
- ; CHECK-GI-NEXT: tbl v0.16b, { v0.16b, v1.16b }, v2.16b
1791
- ; CHECK-GI-NEXT: ret
1780
+ ; CHECK-LABEL: test_concat_v16i8_v16i8_v16i8:
1781
+ ; CHECK: // %bb.0: // %entry
1782
+ ; CHECK-NEXT: mov v0.d[1], v1.d[0]
1783
+ ; CHECK-NEXT: ret
1792
1784
entry:
1793
1785
%vecinit30 = shufflevector <16 x i8 > %x , <16 x i8 > %y , <16 x i32 > <i32 0 , i32 1 , i32 2 , i32 3 , i32 4 , i32 5 , i32 6 , i32 7 , i32 16 , i32 17 , i32 18 , i32 19 , i32 20 , i32 21 , i32 22 , i32 23 >
1794
1786
ret <16 x i8 > %vecinit30
@@ -1803,9 +1795,7 @@ define <16 x i8> @test_concat_v16i8_v8i8_v16i8(<8 x i8> %x, <16 x i8> %y) #0 {
1803
1795
;
1804
1796
; CHECK-GI-LABEL: test_concat_v16i8_v8i8_v16i8:
1805
1797
; CHECK-GI: // %bb.0: // %entry
1806
- ; CHECK-GI-NEXT: // kill: def $d0 killed $d0 killed $q0_q1 def $q0_q1
1807
- ; CHECK-GI-NEXT: adrp x8, .LCPI127_0
1808
- ; CHECK-GI-NEXT: // kill: def $q1 killed $q1 killed $q0_q1 def $q0_q1
1798
+ ; CHECK-GI-NEXT: // kill: def $d0 killed $d0 def $q0
1809
1799
; CHECK-GI-NEXT: mov b2, v0.b[1]
1810
1800
; CHECK-GI-NEXT: mov b3, v0.b[2]
1811
1801
; CHECK-GI-NEXT: mov b4, v0.b[3]
@@ -1814,14 +1804,13 @@ define <16 x i8> @test_concat_v16i8_v8i8_v16i8(<8 x i8> %x, <16 x i8> %y) #0 {
1814
1804
; CHECK-GI-NEXT: mov b7, v0.b[6]
1815
1805
; CHECK-GI-NEXT: mov b16, v0.b[7]
1816
1806
; CHECK-GI-NEXT: mov v0.b[1], v2.b[0]
1817
- ; CHECK-GI-NEXT: ldr q2, [x8, :lo12:.LCPI127_0]
1818
1807
; CHECK-GI-NEXT: mov v0.b[2], v3.b[0]
1819
1808
; CHECK-GI-NEXT: mov v0.b[3], v4.b[0]
1820
1809
; CHECK-GI-NEXT: mov v0.b[4], v5.b[0]
1821
1810
; CHECK-GI-NEXT: mov v0.b[5], v6.b[0]
1822
1811
; CHECK-GI-NEXT: mov v0.b[6], v7.b[0]
1823
1812
; CHECK-GI-NEXT: mov v0.b[7], v16.b[0]
1824
- ; CHECK-GI-NEXT: tbl v0.16b, { v0.16b, v1.16b }, v2.16b
1813
+ ; CHECK-GI-NEXT: mov v0.d[1], v1.d[0]
1825
1814
; CHECK-GI-NEXT: ret
1826
1815
entry:
1827
1816
%vecext = extractelement <8 x i8 > %x , i32 0
@@ -1999,19 +1988,10 @@ entry:
1999
1988
}
2000
1989
2001
1990
define <8 x i16 > @test_concat_v8i16_v8i16_v8i16 (<8 x i16 > %x , <8 x i16 > %y ) #0 {
2002
- ; CHECK-SD-LABEL: test_concat_v8i16_v8i16_v8i16:
2003
- ; CHECK-SD: // %bb.0: // %entry
2004
- ; CHECK-SD-NEXT: mov v0.d[1], v1.d[0]
2005
- ; CHECK-SD-NEXT: ret
2006
- ;
2007
- ; CHECK-GI-LABEL: test_concat_v8i16_v8i16_v8i16:
2008
- ; CHECK-GI: // %bb.0: // %entry
2009
- ; CHECK-GI-NEXT: adrp x8, .LCPI130_0
2010
- ; CHECK-GI-NEXT: // kill: def $q0 killed $q0 killed $q0_q1 def $q0_q1
2011
- ; CHECK-GI-NEXT: ldr q2, [x8, :lo12:.LCPI130_0]
2012
- ; CHECK-GI-NEXT: // kill: def $q1 killed $q1 killed $q0_q1 def $q0_q1
2013
- ; CHECK-GI-NEXT: tbl v0.16b, { v0.16b, v1.16b }, v2.16b
2014
- ; CHECK-GI-NEXT: ret
1991
+ ; CHECK-LABEL: test_concat_v8i16_v8i16_v8i16:
1992
+ ; CHECK: // %bb.0: // %entry
1993
+ ; CHECK-NEXT: mov v0.d[1], v1.d[0]
1994
+ ; CHECK-NEXT: ret
2015
1995
entry:
2016
1996
%vecinit14 = shufflevector <8 x i16 > %x , <8 x i16 > %y , <8 x i32 > <i32 0 , i32 1 , i32 2 , i32 3 , i32 8 , i32 9 , i32 10 , i32 11 >
2017
1997
ret <8 x i16 > %vecinit14
@@ -2026,17 +2006,14 @@ define <8 x i16> @test_concat_v8i16_v4i16_v8i16(<4 x i16> %x, <8 x i16> %y) #0 {
2026
2006
;
2027
2007
; CHECK-GI-LABEL: test_concat_v8i16_v4i16_v8i16:
2028
2008
; CHECK-GI: // %bb.0: // %entry
2029
- ; CHECK-GI-NEXT: // kill: def $d0 killed $d0 killed $q0_q1 def $q0_q1
2030
- ; CHECK-GI-NEXT: adrp x8, .LCPI131_0
2031
- ; CHECK-GI-NEXT: // kill: def $q1 killed $q1 killed $q0_q1 def $q0_q1
2009
+ ; CHECK-GI-NEXT: // kill: def $d0 killed $d0 def $q0
2032
2010
; CHECK-GI-NEXT: mov h2, v0.h[1]
2033
2011
; CHECK-GI-NEXT: mov h3, v0.h[2]
2034
2012
; CHECK-GI-NEXT: mov h4, v0.h[3]
2035
2013
; CHECK-GI-NEXT: mov v0.h[1], v2.h[0]
2036
- ; CHECK-GI-NEXT: ldr q2, [x8, :lo12:.LCPI131_0]
2037
2014
; CHECK-GI-NEXT: mov v0.h[2], v3.h[0]
2038
2015
; CHECK-GI-NEXT: mov v0.h[3], v4.h[0]
2039
- ; CHECK-GI-NEXT: tbl v0.16b, { v0.16b, v1.16b }, v2.16b
2016
+ ; CHECK-GI-NEXT: mov v0.d[1], v1.d[0]
2040
2017
; CHECK-GI-NEXT: ret
2041
2018
entry:
2042
2019
%vecext = extractelement <4 x i16 > %x , i32 0
@@ -2142,19 +2119,10 @@ entry:
2142
2119
}
2143
2120
2144
2121
define <4 x i32 > @test_concat_v4i32_v4i32_v4i32 (<4 x i32 > %x , <4 x i32 > %y ) #0 {
2145
- ; CHECK-SD-LABEL: test_concat_v4i32_v4i32_v4i32:
2146
- ; CHECK-SD: // %bb.0: // %entry
2147
- ; CHECK-SD-NEXT: mov v0.d[1], v1.d[0]
2148
- ; CHECK-SD-NEXT: ret
2149
- ;
2150
- ; CHECK-GI-LABEL: test_concat_v4i32_v4i32_v4i32:
2151
- ; CHECK-GI: // %bb.0: // %entry
2152
- ; CHECK-GI-NEXT: adrp x8, .LCPI134_0
2153
- ; CHECK-GI-NEXT: // kill: def $q0 killed $q0 killed $q0_q1 def $q0_q1
2154
- ; CHECK-GI-NEXT: ldr q2, [x8, :lo12:.LCPI134_0]
2155
- ; CHECK-GI-NEXT: // kill: def $q1 killed $q1 killed $q0_q1 def $q0_q1
2156
- ; CHECK-GI-NEXT: tbl v0.16b, { v0.16b, v1.16b }, v2.16b
2157
- ; CHECK-GI-NEXT: ret
2122
+ ; CHECK-LABEL: test_concat_v4i32_v4i32_v4i32:
2123
+ ; CHECK: // %bb.0: // %entry
2124
+ ; CHECK-NEXT: mov v0.d[1], v1.d[0]
2125
+ ; CHECK-NEXT: ret
2158
2126
entry:
2159
2127
%vecinit6 = shufflevector <4 x i32 > %x , <4 x i32 > %y , <4 x i32 > <i32 0 , i32 1 , i32 4 , i32 5 >
2160
2128
ret <4 x i32 > %vecinit6
@@ -2169,13 +2137,10 @@ define <4 x i32> @test_concat_v4i32_v2i32_v4i32(<2 x i32> %x, <4 x i32> %y) #0 {
2169
2137
;
2170
2138
; CHECK-GI-LABEL: test_concat_v4i32_v2i32_v4i32:
2171
2139
; CHECK-GI: // %bb.0: // %entry
2172
- ; CHECK-GI-NEXT: // kill: def $d0 killed $d0 killed $q0_q1 def $q0_q1
2173
- ; CHECK-GI-NEXT: adrp x8, .LCPI135_0
2174
- ; CHECK-GI-NEXT: // kill: def $q1 killed $q1 killed $q0_q1 def $q0_q1
2140
+ ; CHECK-GI-NEXT: // kill: def $d0 killed $d0 def $q0
2175
2141
; CHECK-GI-NEXT: mov s2, v0.s[1]
2176
2142
; CHECK-GI-NEXT: mov v0.s[1], v2.s[0]
2177
- ; CHECK-GI-NEXT: ldr q2, [x8, :lo12:.LCPI135_0]
2178
- ; CHECK-GI-NEXT: tbl v0.16b, { v0.16b, v1.16b }, v2.16b
2143
+ ; CHECK-GI-NEXT: mov v0.d[1], v1.d[0]
2179
2144
; CHECK-GI-NEXT: ret
2180
2145
entry:
2181
2146
%vecext = extractelement <2 x i32 > %x , i32 0
0 commit comments