[InstCombine] Signed saturation patterns
[llvm-complete.git] / test / CodeGen / X86 / GlobalISel / select-constant.mir
blob33c561f886504a0a25efe5648cc1fe272faa22fb
1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 # RUN: llc -mtriple=x86_64-linux-gnu -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck %s --check-prefix=CHECK
4 --- |
5   define i8 @const_i8() {
6     ret i8 2
7   }
9   define i16 @const_i16() {
10     ret i16 3
11   }
13   define i32 @const_i32() {
14     ret i32 4
15   }
17   define i32 @const_i32_0() {
18     ret i32 0
19   }
21   define i64 @const_i64() {
22     ret i64 68719476720
23   }
25   define i64 @const_i64_u32() {
26     ret i64 1879048192
27   }
29   define i64 @const_i64_i32() {
30     ret i64 -1
31   }
33   define void @main(i32** %data) {
34     store i32* null, i32** %data, align 8
35     ret void
36   }
38 ...
39 ---
40 name:            const_i8
41 legalized:       true
42 regBankSelected: true
43 selected:        false
44 registers:
45   - { id: 0, class: gpr }
46 body:             |
47   bb.1 (%ir-block.0):
48     ; CHECK-LABEL: name: const_i8
49     ; CHECK: [[MOV8ri:%[0-9]+]]:gr8 = MOV8ri 2
50     ; CHECK: $al = COPY [[MOV8ri]]
51     ; CHECK: RET 0, implicit $al
52     %0(s8) = G_CONSTANT i8 2
53     $al = COPY %0(s8)
54     RET 0, implicit $al
56 ...
57 ---
58 name:            const_i16
59 legalized:       true
60 regBankSelected: true
61 selected:        false
62 registers:
63   - { id: 0, class: gpr }
64 body:             |
65   bb.1 (%ir-block.0):
66     ; CHECK-LABEL: name: const_i16
67     ; CHECK: [[MOV16ri:%[0-9]+]]:gr16 = MOV16ri 3
68     ; CHECK: $ax = COPY [[MOV16ri]]
69     ; CHECK: RET 0, implicit $ax
70     %0(s16) = G_CONSTANT i16 3
71     $ax = COPY %0(s16)
72     RET 0, implicit $ax
74 ...
75 ---
76 name:            const_i32
77 legalized:       true
78 regBankSelected: true
79 selected:        false
80 registers:
81   - { id: 0, class: gpr }
82 body:             |
83   bb.1 (%ir-block.0):
84     ; CHECK-LABEL: name: const_i32
85     ; CHECK: [[MOV32ri:%[0-9]+]]:gr32 = MOV32ri 4
86     ; CHECK: $eax = COPY [[MOV32ri]]
87     ; CHECK: RET 0, implicit $eax
88     %0(s32) = G_CONSTANT i32 4
89     $eax = COPY %0(s32)
90     RET 0, implicit $eax
92 ...
93 ---
94 name:            const_i32_0
95 legalized:       true
96 regBankSelected: true
97 registers:
98   - { id: 0, class: gpr }
99 body:             |
100   bb.1 (%ir-block.0):
101     ; CHECK-LABEL: name: const_i32_0
102     ; CHECK: [[MOV32r0_:%[0-9]+]]:gr32 = MOV32r0 implicit-def $eflags
103     ; CHECK: $eax = COPY [[MOV32r0_]]
104     ; CHECK: RET 0, implicit $eax
105     %0(s32) = G_CONSTANT i32 0
106     $eax = COPY %0(s32)
107     RET 0, implicit $eax
111 name:            const_i64
112 legalized:       true
113 regBankSelected: true
114 selected:        false
115 registers:
116   - { id: 0, class: gpr }
117 body:             |
118   bb.1 (%ir-block.0):
119     ; CHECK-LABEL: name: const_i64
120     ; CHECK: [[MOV64ri:%[0-9]+]]:gr64 = MOV64ri 68719476720
121     ; CHECK: $rax = COPY [[MOV64ri]]
122     ; CHECK: RET 0, implicit $rax
123     %0(s64) = G_CONSTANT i64 68719476720
124     $rax = COPY %0(s64)
125     RET 0, implicit $rax
129 name:            const_i64_u32
130 alignment:       16
131 legalized:       true
132 regBankSelected: true
133 selected:        false
134 registers:
135   - { id: 0, class: gpr }
136 body:             |
137   bb.1 (%ir-block.0):
138     ; CHECK-LABEL: name: const_i64_u32
139     ; CHECK: [[MOV64ri32_:%[0-9]+]]:gr64 = MOV64ri32 1879048192
140     ; CHECK: $rax = COPY [[MOV64ri32_]]
141     ; CHECK: RET 0, implicit $rax
142     %0(s64) = G_CONSTANT i64 1879048192
143     $rax = COPY %0(s64)
144     RET 0, implicit $rax
148 name:            const_i64_i32
149 legalized:       true
150 regBankSelected: true
151 selected:        false
152 registers:
153   - { id: 0, class: gpr }
154 body:             |
155   bb.1 (%ir-block.0):
156     ; CHECK-LABEL: name: const_i64_i32
157     ; CHECK: [[MOV64ri32_:%[0-9]+]]:gr64 = MOV64ri32 -1
158     ; CHECK: $rax = COPY [[MOV64ri32_]]
159     ; CHECK: RET 0, implicit $rax
160     %0(s64) = G_CONSTANT i64 -1
161     $rax = COPY %0(s64)
162     RET 0, implicit $rax
166 name:            main
167 alignment:       16
168 legalized:       true
169 regBankSelected: true
170 registers:
171   - { id: 0, class: gpr, preferred-register: '' }
172   - { id: 1, class: gpr, preferred-register: '' }
173 body:             |
174   bb.1 (%ir-block.0):
175     liveins: $rdi
177     ; CHECK-LABEL: name: main
178     ; CHECK: [[COPY:%[0-9]+]]:gr64 = COPY $rdi
179     ; CHECK: [[MOV64ri32_:%[0-9]+]]:gr64 = MOV64ri32 0
180     ; CHECK: MOV64mr [[COPY]], 1, $noreg, 0, $noreg, [[MOV64ri32_]] :: (store 8 into %ir.data)
181     ; CHECK: RET 0
182     %0(p0) = COPY $rdi
183     %1(p0) = G_CONSTANT i64 0
184     G_STORE %1(p0), %0(p0) :: (store 8 into %ir.data)
185     RET 0