[OptTable] Fix typo VALUE => VALUES (NFCI) (#121523)
[llvm-project.git] / llvm / test / CodeGen / X86 / GlobalISel / legalize-select.mir
bloba7cbb35e3f74c2c3370846f6580ac08319e6a4bc
1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 2
2 # RUN: llc -mtriple=i386-linux-gnu -run-pass=legalizer %s -o - | FileCheck %s --check-prefixes=CHECK,X86
3 # RUN: llc -mtriple=x86_64-linux-gnu -run-pass=legalizer %s -o - | FileCheck %s --check-prefixes=CHECK,X64
5 # test select
7 ...
8 ---
9 name:            test_selectp0
10 body:             |
11   bb.1:
12     ; CHECK-LABEL: name: test_selectp0
13     ; CHECK: [[DEF:%[0-9]+]]:_(p0) = IMPLICIT_DEF
14     ; CHECK-NEXT: [[DEF1:%[0-9]+]]:_(p0) = IMPLICIT_DEF
15     ; CHECK-NEXT: [[DEF2:%[0-9]+]]:_(s1) = IMPLICIT_DEF
16     ; CHECK-NEXT: [[ZEXT:%[0-9]+]]:_(s32) = G_ZEXT [[DEF2]](s1)
17     ; CHECK-NEXT: [[SELECT:%[0-9]+]]:_(p0) = G_SELECT [[ZEXT]](s32), [[DEF1]], [[DEF]]
18     ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY [[SELECT]](p0)
19     ; CHECK-NEXT: RET 0, implicit [[COPY]](p0)
20     %0:_(p0) = IMPLICIT_DEF
21     %1:_(p0) = IMPLICIT_DEF
22     %2:_(s1) = IMPLICIT_DEF
23     %3:_(p0) = G_SELECT %2, %1, %0
24     %4:_(p0) = COPY %3(p0)
25     RET 0, implicit %4
27 ...
28 ---
29 name:            test_select64
30 body:             |
31   bb.1:
32     ; X86-LABEL: name: test_select64
33     ; X86: [[DEF:%[0-9]+]]:_(s64) = IMPLICIT_DEF
34     ; X86-NEXT: [[DEF1:%[0-9]+]]:_(s64) = IMPLICIT_DEF
35     ; X86-NEXT: [[DEF2:%[0-9]+]]:_(s1) = IMPLICIT_DEF
36     ; X86-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[DEF1]](s64)
37     ; X86-NEXT: [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[DEF]](s64)
38     ; X86-NEXT: [[ZEXT:%[0-9]+]]:_(s32) = G_ZEXT [[DEF2]](s1)
39     ; X86-NEXT: [[SELECT:%[0-9]+]]:_(s32) = G_SELECT [[ZEXT]](s32), [[UV]], [[UV2]]
40     ; X86-NEXT: [[SELECT1:%[0-9]+]]:_(s32) = G_SELECT [[ZEXT]](s32), [[UV1]], [[UV3]]
41     ; X86-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[SELECT]](s32), [[SELECT1]](s32)
42     ; X86-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY [[MV]](s64)
43     ; X86-NEXT: RET 0, implicit [[COPY]](s64)
44     ;
45     ; X64-LABEL: name: test_select64
46     ; X64: [[DEF:%[0-9]+]]:_(s64) = IMPLICIT_DEF
47     ; X64-NEXT: [[DEF1:%[0-9]+]]:_(s64) = IMPLICIT_DEF
48     ; X64-NEXT: [[DEF2:%[0-9]+]]:_(s1) = IMPLICIT_DEF
49     ; X64-NEXT: [[ZEXT:%[0-9]+]]:_(s32) = G_ZEXT [[DEF2]](s1)
50     ; X64-NEXT: [[SELECT:%[0-9]+]]:_(s64) = G_SELECT [[ZEXT]](s32), [[DEF1]], [[DEF]]
51     ; X64-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY [[SELECT]](s64)
52     ; X64-NEXT: RET 0, implicit [[COPY]](s64)
53     %0:_(s64) = IMPLICIT_DEF
54     %1:_(s64) = IMPLICIT_DEF
55     %2:_(s1) = IMPLICIT_DEF
56     %3:_(s64) = G_SELECT %2, %1, %0
57     %4:_(s64) = COPY %3(s64)
58     RET 0, implicit %4
60 ...
61 ---
62 name:            test_select32
63 body:             |
64   bb.1:
65     ; CHECK-LABEL: name: test_select32
66     ; CHECK: [[DEF:%[0-9]+]]:_(s32) = IMPLICIT_DEF
67     ; CHECK-NEXT: [[DEF1:%[0-9]+]]:_(s32) = IMPLICIT_DEF
68     ; CHECK-NEXT: [[DEF2:%[0-9]+]]:_(s1) = IMPLICIT_DEF
69     ; CHECK-NEXT: [[ZEXT:%[0-9]+]]:_(s32) = G_ZEXT [[DEF2]](s1)
70     ; CHECK-NEXT: [[SELECT:%[0-9]+]]:_(s32) = G_SELECT [[ZEXT]](s32), [[DEF1]], [[DEF]]
71     ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY [[SELECT]](s32)
72     ; CHECK-NEXT: RET 0, implicit [[COPY]](s32)
73     %0:_(s32) = IMPLICIT_DEF
74     %1:_(s32) = IMPLICIT_DEF
75     %2:_(s1) = IMPLICIT_DEF
76     %3:_(s32) = G_SELECT %2, %1, %0
77     %4:_(s32) = COPY %3(s32)
78     RET 0, implicit %4
80 ...
81 ---
82 name:            test_select16
83 body:             |
84   bb.1:
85     ; CHECK-LABEL: name: test_select16
86     ; CHECK: [[DEF:%[0-9]+]]:_(s16) = IMPLICIT_DEF
87     ; CHECK-NEXT: [[DEF1:%[0-9]+]]:_(s16) = IMPLICIT_DEF
88     ; CHECK-NEXT: [[DEF2:%[0-9]+]]:_(s1) = IMPLICIT_DEF
89     ; CHECK-NEXT: [[ZEXT:%[0-9]+]]:_(s32) = G_ZEXT [[DEF2]](s1)
90     ; CHECK-NEXT: [[SELECT:%[0-9]+]]:_(s16) = G_SELECT [[ZEXT]](s32), [[DEF1]], [[DEF]]
91     ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s16) = COPY [[SELECT]](s16)
92     ; CHECK-NEXT: RET 0, implicit [[COPY]](s16)
93     %0:_(s16) = IMPLICIT_DEF
94     %1:_(s16) = IMPLICIT_DEF
95     %2:_(s1) = IMPLICIT_DEF
96     %3:_(s16) = G_SELECT %2, %1, %0
97     %4:_(s16) = COPY %3(s16)
98     RET 0, implicit %4
102 name:            test_select8
103 body:             |
104   bb.1:
105     ; X86-LABEL: name: test_select8
106     ; X86: [[DEF:%[0-9]+]]:_(s8) = IMPLICIT_DEF
107     ; X86-NEXT: [[DEF1:%[0-9]+]]:_(s8) = IMPLICIT_DEF
108     ; X86-NEXT: [[DEF2:%[0-9]+]]:_(s1) = IMPLICIT_DEF
109     ; X86-NEXT: [[ZEXT:%[0-9]+]]:_(s32) = G_ZEXT [[DEF2]](s1)
110     ; X86-NEXT: [[SELECT:%[0-9]+]]:_(s8) = G_SELECT [[ZEXT]](s32), [[DEF1]], [[DEF]]
111     ; X86-NEXT: [[COPY:%[0-9]+]]:_(s8) = COPY [[SELECT]](s8)
112     ; X86-NEXT: RET 0, implicit [[COPY]](s8)
113     ;
114     ; X64-LABEL: name: test_select8
115     ; X64: [[DEF:%[0-9]+]]:_(s8) = IMPLICIT_DEF
116     ; X64-NEXT: [[DEF1:%[0-9]+]]:_(s8) = IMPLICIT_DEF
117     ; X64-NEXT: [[DEF2:%[0-9]+]]:_(s1) = IMPLICIT_DEF
118     ; X64-NEXT: [[ANYEXT:%[0-9]+]]:_(s16) = G_ANYEXT [[DEF1]](s8)
119     ; X64-NEXT: [[ANYEXT1:%[0-9]+]]:_(s16) = G_ANYEXT [[DEF]](s8)
120     ; X64-NEXT: [[ZEXT:%[0-9]+]]:_(s32) = G_ZEXT [[DEF2]](s1)
121     ; X64-NEXT: [[SELECT:%[0-9]+]]:_(s16) = G_SELECT [[ZEXT]](s32), [[ANYEXT]], [[ANYEXT1]]
122     ; X64-NEXT: [[TRUNC:%[0-9]+]]:_(s8) = G_TRUNC [[SELECT]](s16)
123     ; X64-NEXT: [[COPY:%[0-9]+]]:_(s8) = COPY [[TRUNC]](s8)
124     ; X64-NEXT: RET 0, implicit [[COPY]](s8)
125     %0:_(s8) = IMPLICIT_DEF
126     %1:_(s8) = IMPLICIT_DEF
127     %2:_(s1) = IMPLICIT_DEF
128     %3:_(s8) = G_SELECT %2, %1, %0
129     %4:_(s8) = COPY %3(s8)
130     RET 0, implicit %4