[InstCombine] Signed saturation patterns
[llvm-complete.git] / test / CodeGen / X86 / GlobalISel / x86-legalize-ptrtoint.mir
blob86879866f10a239ccb1ef4b39baaedbaae41c3fa
1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 # RUN: llc -mtriple=i686-linux-gnu -run-pass=legalizer -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 ...
31 ---
32 name:            ptrtoint_s1_p0
33 alignment:       16
34 tracksRegLiveness: true
35 registers:
36   - { id: 0, class: _ }
37   - { id: 1, class: _ }
38   - { id: 2, class: _ }
39   - { id: 3, class: _ }
40 frameInfo:
41   maxAlignment:    4
42 fixedStack:
43   - { id: 0, size: 4, alignment: 16, stack-id: default, isImmutable: true }
44 body:             |
45   bb.1.entry:
46     ; CHECK-LABEL: name: ptrtoint_s1_p0
47     ; CHECK: [[FRAME_INDEX:%[0-9]+]]:_(p0) = G_FRAME_INDEX %fixed-stack.0
48     ; CHECK: [[LOAD:%[0-9]+]]:_(p0) = G_LOAD [[FRAME_INDEX]](p0) :: (invariant load 4 from %fixed-stack.0, align 16)
49     ; CHECK: [[PTRTOINT:%[0-9]+]]:_(s1) = G_PTRTOINT [[LOAD]](p0)
50     ; CHECK: [[ANYEXT:%[0-9]+]]:_(s8) = G_ANYEXT [[PTRTOINT]](s1)
51     ; CHECK: $al = COPY [[ANYEXT]](s8)
52     ; CHECK: RET 0, implicit $al
53     %1:_(p0) = G_FRAME_INDEX %fixed-stack.0
54     %0:_(p0) = G_LOAD %1(p0) :: (invariant load 4 from %fixed-stack.0, align 16)
55     %2:_(s1) = G_PTRTOINT %0(p0)
56     %3:_(s8) = G_ANYEXT %2(s1)
57     $al = COPY %3(s8)
58     RET 0, implicit $al
60 ...
61 ---
62 name:            ptrtoint_s8_p0
63 alignment:       16
64 tracksRegLiveness: true
65 registers:
66   - { id: 0, class: _ }
67   - { id: 1, class: _ }
68   - { id: 2, class: _ }
69 frameInfo:
70   maxAlignment:    4
71 fixedStack:
72   - { id: 0, size: 4, alignment: 16, stack-id: default, isImmutable: true }
73 body:             |
74   bb.1.entry:
75     ; CHECK-LABEL: name: ptrtoint_s8_p0
76     ; CHECK: [[FRAME_INDEX:%[0-9]+]]:_(p0) = G_FRAME_INDEX %fixed-stack.0
77     ; CHECK: [[LOAD:%[0-9]+]]:_(p0) = G_LOAD [[FRAME_INDEX]](p0) :: (invariant load 4 from %fixed-stack.0, align 16)
78     ; CHECK: [[PTRTOINT:%[0-9]+]]:_(s8) = G_PTRTOINT [[LOAD]](p0)
79     ; CHECK: $al = COPY [[PTRTOINT]](s8)
80     ; CHECK: RET 0, implicit $al
81     %1:_(p0) = G_FRAME_INDEX %fixed-stack.0
82     %0:_(p0) = G_LOAD %1(p0) :: (invariant load 4 from %fixed-stack.0, align 16)
83     %2:_(s8) = G_PTRTOINT %0(p0)
84     $al = COPY %2(s8)
85     RET 0, implicit $al
87 ...
88 ---
89 name:            ptrtoint_s16_p0
90 alignment:       16
91 tracksRegLiveness: true
92 registers:
93   - { id: 0, class: _ }
94   - { id: 1, class: _ }
95   - { id: 2, class: _ }
96 frameInfo:
97   maxAlignment:    4
98 fixedStack:
99   - { id: 0, size: 4, alignment: 16, stack-id: default, isImmutable: true }
100 body:             |
101   bb.1.entry:
102     ; CHECK-LABEL: name: ptrtoint_s16_p0
103     ; CHECK: [[FRAME_INDEX:%[0-9]+]]:_(p0) = G_FRAME_INDEX %fixed-stack.0
104     ; CHECK: [[LOAD:%[0-9]+]]:_(p0) = G_LOAD [[FRAME_INDEX]](p0) :: (invariant load 4 from %fixed-stack.0, align 16)
105     ; CHECK: [[PTRTOINT:%[0-9]+]]:_(s16) = G_PTRTOINT [[LOAD]](p0)
106     ; CHECK: $ax = COPY [[PTRTOINT]](s16)
107     ; CHECK: RET 0, implicit $ax
108     %1:_(p0) = G_FRAME_INDEX %fixed-stack.0
109     %0:_(p0) = G_LOAD %1(p0) :: (invariant load 4 from %fixed-stack.0, align 16)
110     %2:_(s16) = G_PTRTOINT %0(p0)
111     $ax = COPY %2(s16)
112     RET 0, implicit $ax
116 name:            ptrtoint_s32_p0
117 alignment:       16
118 tracksRegLiveness: true
119 registers:
120   - { id: 0, class: _ }
121   - { id: 1, class: _ }
122   - { id: 2, class: _ }
123 frameInfo:
124   maxAlignment:    4
125 fixedStack:
126   - { id: 0, size: 4, alignment: 16, stack-id: default, isImmutable: true }
127 body:             |
128   bb.1.entry:
129     ; CHECK-LABEL: name: ptrtoint_s32_p0
130     ; CHECK: [[FRAME_INDEX:%[0-9]+]]:_(p0) = G_FRAME_INDEX %fixed-stack.0
131     ; CHECK: [[LOAD:%[0-9]+]]:_(p0) = G_LOAD [[FRAME_INDEX]](p0) :: (invariant load 4 from %fixed-stack.0, align 16)
132     ; CHECK: [[PTRTOINT:%[0-9]+]]:_(s32) = G_PTRTOINT [[LOAD]](p0)
133     ; CHECK: $eax = COPY [[PTRTOINT]](s32)
134     ; CHECK: RET 0, implicit $eax
135     %1:_(p0) = G_FRAME_INDEX %fixed-stack.0
136     %0:_(p0) = G_LOAD %1(p0) :: (invariant load 4 from %fixed-stack.0, align 16)
137     %2:_(s32) = G_PTRTOINT %0(p0)
138     $eax = COPY %2(s32)
139     RET 0, implicit $eax