[InstCombine] Signed saturation patterns
[llvm-complete.git] / test / CodeGen / X86 / GlobalISel / x86_64-select-ptrtoint.mir
blob4f330f6119fa5df7ccf64b1e55f0d1dd2107f3d9
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
4 --- |
6   define i1 @ptrtoint_s1_p0(i64* %p) {
7   entry:
8     %0 = ptrtoint i64* %p to i1
9     ret i1 %0
10   }
12   define i8 @ptrtoint_s8_p0(i64* %p) {
13   entry:
14     %0 = ptrtoint i64* %p to i8
15     ret i8 %0
16   }
18   define i16 @ptrtoint_s16_p0(i64* %p) {
19   entry:
20     %0 = ptrtoint i64* %p to i16
21     ret i16 %0
22   }
24   define i32 @ptrtoint_s32_p0(i64* %p) {
25   entry:
26     %0 = ptrtoint i64* %p to i32
27     ret i32 %0
28   }
30   define i64 @ptrtoint_s64_p0(i64* %p) {
31   entry:
32     %0 = ptrtoint i64* %p to i64
33     ret i64 %0
34   }
36 ...
37 ---
38 name:            ptrtoint_s1_p0
39 alignment:       16
40 legalized:       true
41 regBankSelected: true
42 tracksRegLiveness: true
43 registers:
44   - { id: 0, class: gpr }
45   - { id: 1, class: gpr }
46   - { id: 2, class: gpr }
47 body:             |
48   bb.1.entry:
49     liveins: $rdi
51     ; CHECK-LABEL: name: ptrtoint_s1_p0
52     ; CHECK: liveins: $rdi
53     ; CHECK: [[COPY:%[0-9]+]]:gr64_with_sub_8bit = COPY $rdi
54     ; CHECK: [[COPY1:%[0-9]+]]:gr8 = COPY [[COPY]].sub_8bit
55     ; CHECK: $al = COPY [[COPY1]]
56     ; CHECK: RET 0, implicit $al
57     %0:gpr(p0) = COPY $rdi
58     %1:gpr(s1) = G_PTRTOINT %0(p0)
59     %2:gpr(s8) = G_ANYEXT %1(s1)
60     $al = COPY %2(s8)
61     RET 0, implicit $al
63 ...
64 ---
65 name:            ptrtoint_s8_p0
66 alignment:       16
67 legalized:       true
68 regBankSelected: true
69 tracksRegLiveness: true
70 registers:
71   - { id: 0, class: gpr }
72   - { id: 1, class: gpr }
73 body:             |
74   bb.1.entry:
75     liveins: $rdi
77     ; CHECK-LABEL: name: ptrtoint_s8_p0
78     ; CHECK: liveins: $rdi
79     ; CHECK: [[COPY:%[0-9]+]]:gr64_with_sub_8bit = COPY $rdi
80     ; CHECK: [[COPY1:%[0-9]+]]:gr8 = COPY [[COPY]].sub_8bit
81     ; CHECK: $al = COPY [[COPY1]]
82     ; CHECK: RET 0, implicit $al
83     %0:gpr(p0) = COPY $rdi
84     %1:gpr(s8) = G_PTRTOINT %0(p0)
85     $al = COPY %1(s8)
86     RET 0, implicit $al
88 ...
89 ---
90 name:            ptrtoint_s16_p0
91 alignment:       16
92 legalized:       true
93 regBankSelected: true
94 tracksRegLiveness: true
95 registers:
96   - { id: 0, class: gpr }
97   - { id: 1, class: gpr }
98 body:             |
99   bb.1.entry:
100     liveins: $rdi
102     ; CHECK-LABEL: name: ptrtoint_s16_p0
103     ; CHECK: liveins: $rdi
104     ; CHECK: [[COPY:%[0-9]+]]:gr64 = COPY $rdi
105     ; CHECK: [[COPY1:%[0-9]+]]:gr16 = COPY [[COPY]].sub_16bit
106     ; CHECK: $ax = COPY [[COPY1]]
107     ; CHECK: RET 0, implicit $ax
108     %0:gpr(p0) = COPY $rdi
109     %1:gpr(s16) = G_PTRTOINT %0(p0)
110     $ax = COPY %1(s16)
111     RET 0, implicit $ax
115 name:            ptrtoint_s32_p0
116 alignment:       16
117 legalized:       true
118 regBankSelected: true
119 tracksRegLiveness: true
120 registers:
121   - { id: 0, class: gpr }
122   - { id: 1, class: gpr }
123 body:             |
124   bb.1.entry:
125     liveins: $rdi
127     ; CHECK-LABEL: name: ptrtoint_s32_p0
128     ; CHECK: liveins: $rdi
129     ; CHECK: [[COPY:%[0-9]+]]:gr64 = COPY $rdi
130     ; CHECK: [[COPY1:%[0-9]+]]:gr32 = COPY [[COPY]].sub_32bit
131     ; CHECK: $eax = COPY [[COPY1]]
132     ; CHECK: RET 0, implicit $eax
133     %0:gpr(p0) = COPY $rdi
134     %1:gpr(s32) = G_PTRTOINT %0(p0)
135     $eax = COPY %1(s32)
136     RET 0, implicit $eax
140 name:            ptrtoint_s64_p0
141 alignment:       16
142 legalized:       true
143 regBankSelected: true
144 tracksRegLiveness: true
145 registers:
146   - { id: 0, class: gpr }
147   - { id: 1, class: gpr }
148 body:             |
149   bb.1.entry:
150     liveins: $rdi
152     ; CHECK-LABEL: name: ptrtoint_s64_p0
153     ; CHECK: liveins: $rdi
154     ; CHECK: [[COPY:%[0-9]+]]:gr64 = COPY $rdi
155     ; CHECK: $rax = COPY [[COPY]]
156     ; CHECK: RET 0, implicit $rax
157     %0:gpr(p0) = COPY $rdi
158     %1:gpr(s64) = G_PTRTOINT %0(p0)
159     $rax = COPY %1(s64)
160     RET 0, implicit $rax