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