Revert " [LoongArch][ISel] Check the number of sign bits in `PatGprGpr_32` (#107432)"
[llvm-project.git] / llvm / test / CodeGen / AArch64 / GlobalISel / select-concat-vectors.mir
blob439bd2066b9305cef28ec3b681966c899e5b109f
1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 # RUN: llc -mtriple=aarch64-- -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck %s
3 ...
4 ---
5 name:            legal_v4s32_v2s32
6 alignment:       4
7 legalized:       true
8 regBankSelected: true
9 tracksRegLiveness: true
10 registers:
11   - { id: 0, class: fpr }
12   - { id: 1, class: fpr }
13   - { id: 2, class: fpr }
14 frameInfo:
15   maxCallFrameSize: 0
16 body:             |
17   bb.0:
18   liveins: $d0, $d1
19     ; CHECK-LABEL: name: legal_v4s32_v2s32
20     ; CHECK: liveins: $d0, $d1
21     ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
22     ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
23     ; CHECK: [[DEF:%[0-9]+]]:fpr128 = IMPLICIT_DEF
24     ; CHECK: [[INSERT_SUBREG:%[0-9]+]]:fpr128 = INSERT_SUBREG [[DEF]], [[COPY1]], %subreg.dsub
25     ; CHECK: [[DEF1:%[0-9]+]]:fpr128 = IMPLICIT_DEF
26     ; CHECK: [[INSERT_SUBREG1:%[0-9]+]]:fpr128 = INSERT_SUBREG [[DEF1]], [[COPY]], %subreg.dsub
27     ; CHECK: [[INSvi64lane:%[0-9]+]]:fpr128 = INSvi64lane [[INSERT_SUBREG1]], 1, [[INSERT_SUBREG]], 0
28     ; CHECK: $q0 = COPY [[INSvi64lane]]
29     ; CHECK: RET_ReallyLR implicit $q0
30     %0:fpr(<2 x s32>) = COPY $d0
31     %1:fpr(<2 x s32>) = COPY $d1
32     %2:fpr(<4 x s32>) = G_CONCAT_VECTORS %0(<2 x s32>), %1(<2 x s32>)
33     $q0 = COPY %2(<4 x s32>)
34     RET_ReallyLR implicit $q0
36 ...
37 ---
38 name:            legal_v8s16_v4s16
39 alignment:       4
40 legalized:       true
41 regBankSelected: true
42 tracksRegLiveness: true
43 registers:
44   - { id: 0, class: fpr }
45   - { id: 1, class: fpr }
46   - { id: 2, class: fpr }
47 frameInfo:
48   maxCallFrameSize: 0
49 body:             |
50   bb.0:
51   liveins: $d0, $d1
52     ; CHECK-LABEL: name: legal_v8s16_v4s16
53     ; CHECK: liveins: $d0, $d1
54     ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
55     ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY $d1
56     ; CHECK: [[DEF:%[0-9]+]]:fpr128 = IMPLICIT_DEF
57     ; CHECK: [[INSERT_SUBREG:%[0-9]+]]:fpr128 = INSERT_SUBREG [[DEF]], [[COPY1]], %subreg.dsub
58     ; CHECK: [[DEF1:%[0-9]+]]:fpr128 = IMPLICIT_DEF
59     ; CHECK: [[INSERT_SUBREG1:%[0-9]+]]:fpr128 = INSERT_SUBREG [[DEF1]], [[COPY]], %subreg.dsub
60     ; CHECK: [[INSvi64lane:%[0-9]+]]:fpr128 = INSvi64lane [[INSERT_SUBREG1]], 1, [[INSERT_SUBREG]], 0
61     ; CHECK: $q0 = COPY [[INSvi64lane]]
62     ; CHECK: RET_ReallyLR implicit $q0
63     %0:fpr(<4 x s16>) = COPY $d0
64     %1:fpr(<4 x s16>) = COPY $d1
65     %2:fpr(<8 x s16>) = G_CONCAT_VECTORS %0(<4 x s16>), %1(<4 x s16>)
66     $q0 = COPY %2(<8 x s16>)
67     RET_ReallyLR implicit $q0
69 ...
70 ---
71 name:            select_v16s8_v8s8_undef
72 legalized:       true
73 regBankSelected: true
74 tracksRegLiveness: true
75 body:             |
76   bb.0:
77     liveins: $q0
79     ; CHECK-LABEL: name: select_v16s8_v8s8_undef
80     ; CHECK: liveins: $q0
81     ; CHECK: %a:fpr64 = IMPLICIT_DEF
82     ; CHECK: [[DEF:%[0-9]+]]:fpr128 = IMPLICIT_DEF
83     ; CHECK: %concat:fpr128 = INSERT_SUBREG [[DEF]], %a, %subreg.dsub
84     ; CHECK: $q0 = COPY %concat
85     ; CHECK: RET_ReallyLR implicit $q0
86     %a:fpr(<8 x s8>) = G_IMPLICIT_DEF
87     %b:fpr(<8 x s8>) = G_IMPLICIT_DEF
88     %concat:fpr(<16 x s8>) = G_CONCAT_VECTORS %a(<8 x s8>), %b(<8 x s8>)
89     $q0 = COPY %concat(<16 x s8>)
90     RET_ReallyLR implicit $q0
92 ...
93 ---
94 name:            select_v16s8_v8s8_not_undef
95 legalized:       true
96 regBankSelected: true
97 tracksRegLiveness: true
98 body:             |
99   bb.0:
100     liveins: $q0, $d1
101     ; CHECK-LABEL: name: select_v16s8_v8s8_not_undef
102     ; CHECK: liveins: $q0, $d1
103     ; CHECK: %a:fpr64 = COPY $d0
104     ; CHECK: %b:fpr64 = COPY $d1
105     ; CHECK: [[DEF:%[0-9]+]]:fpr128 = IMPLICIT_DEF
106     ; CHECK: [[INSERT_SUBREG:%[0-9]+]]:fpr128 = INSERT_SUBREG [[DEF]], %b, %subreg.dsub
107     ; CHECK: [[DEF1:%[0-9]+]]:fpr128 = IMPLICIT_DEF
108     ; CHECK: [[INSERT_SUBREG1:%[0-9]+]]:fpr128 = INSERT_SUBREG [[DEF1]], %a, %subreg.dsub
109     ; CHECK: %concat:fpr128 = INSvi64lane [[INSERT_SUBREG1]], 1, [[INSERT_SUBREG]], 0
110     ; CHECK: $q0 = COPY %concat
111     ; CHECK: RET_ReallyLR implicit $q0
112     %a:fpr(<8 x s8>) = COPY $d0
113     %b:fpr(<8 x s8>) = COPY $d1
114     %concat:fpr(<16 x s8>) = G_CONCAT_VECTORS %a(<8 x s8>), %b(<8 x s8>)
115     $q0 = COPY %concat(<16 x s8>)
116     RET_ReallyLR implicit $q0