[InstCombine] Signed saturation patterns
[llvm-complete.git] / test / CodeGen / AArch64 / GlobalISel / select-int-ptr-casts.mir
blob31a44089f0c31fa28cd14cd5f9998fd332af47e9
1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 # RUN: llc -mtriple=aarch64-- -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck %s
4 --- |
5   target datalayout = "e-m:o-i64:64-i128:128-n32:64-S128"
7   define void @inttoptr_p0_s64() { ret void }
8   define void @ptrtoint_s64_p0() { ret void }
9   define void @ptrtoint_s32_p0() { ret void }
10   define void @ptrtoint_s16_p0() { ret void }
11   define void @ptrtoint_s8_p0() { ret void }
12   define void @ptrtoint_s1_p0() { ret void }
13 ...
15 ---
16 name:            inttoptr_p0_s64
17 legalized:       true
18 regBankSelected: true
20 registers:
21   - { id: 0, class: gpr }
22   - { id: 1, class: gpr }
23 body:             |
24   bb.0:
25     liveins: $x0
26     ; CHECK-LABEL: name: inttoptr_p0_s64
27     ; CHECK: [[COPY:%[0-9]+]]:gpr64all = COPY $x0
28     ; CHECK: $x0 = COPY [[COPY]]
29     %0(s64) = COPY $x0
30     %1(p0) = G_INTTOPTR %0
31     $x0 = COPY %1(p0)
32 ...
34 ---
35 name:            ptrtoint_s64_p0
36 legalized:       true
37 regBankSelected: true
39 registers:
40   - { id: 0, class: gpr }
41   - { id: 1, class: gpr }
42 body:             |
43   bb.0:
44     liveins: $x0
45     ; CHECK-LABEL: name: ptrtoint_s64_p0
46     ; CHECK: [[COPY:%[0-9]+]]:gpr64 = COPY $x0
47     ; CHECK: $x0 = COPY [[COPY]]
48     %0(p0) = COPY $x0
49     %1(s64) = G_PTRTOINT %0
50     $x0 = COPY %1(s64)
51 ...
53 ---
54 name:            ptrtoint_s32_p0
55 legalized:       true
56 regBankSelected: true
58 registers:
59   - { id: 0, class: gpr }
60   - { id: 1, class: gpr }
61 body:             |
62   bb.0:
63     liveins: $x0
64     ; CHECK-LABEL: name: ptrtoint_s32_p0
65     ; CHECK: [[COPY:%[0-9]+]]:gpr64 = COPY $x0
66     ; CHECK: [[COPY1:%[0-9]+]]:gpr32 = COPY [[COPY]].sub_32
67     ; CHECK: $w0 = COPY [[COPY1]]
68     %0(p0) = COPY $x0
69     %1(s32) = G_PTRTOINT %0
70     $w0 = COPY %1(s32)
71 ...
73 ---
74 name:            ptrtoint_s16_p0
75 legalized:       true
76 regBankSelected: true
78 registers:
79   - { id: 0, class: gpr }
80   - { id: 1, class: gpr }
81 body:             |
82   bb.0:
83     liveins: $x0
84     ; CHECK-LABEL: name: ptrtoint_s16_p0
85     ; CHECK: [[COPY:%[0-9]+]]:gpr64 = COPY $x0
86     ; CHECK: [[COPY1:%[0-9]+]]:gpr32 = COPY [[COPY]].sub_32
87     ; CHECK: [[COPY2:%[0-9]+]]:gpr32all = COPY [[COPY1]]
88     ; CHECK: $w0 = COPY [[COPY2]]
89     %0(p0) = COPY $x0
90     %1(s16) = G_PTRTOINT %0
91     %2:gpr(s32) = G_ANYEXT %1
92     $w0 = COPY %2(s32)
93 ...
95 ---
96 name:            ptrtoint_s8_p0
97 legalized:       true
98 regBankSelected: true
100 registers:
101   - { id: 0, class: gpr }
102   - { id: 1, class: gpr }
103 body:             |
104   bb.0:
105     liveins: $x0
106     ; CHECK-LABEL: name: ptrtoint_s8_p0
107     ; CHECK: [[COPY:%[0-9]+]]:gpr64 = COPY $x0
108     ; CHECK: [[COPY1:%[0-9]+]]:gpr32 = COPY [[COPY]].sub_32
109     ; CHECK: [[COPY2:%[0-9]+]]:gpr32all = COPY [[COPY1]]
110     ; CHECK: $w0 = COPY [[COPY2]]
111     %0(p0) = COPY $x0
112     %1(s8) = G_PTRTOINT %0
113     %2:gpr(s32) = G_ANYEXT %1
114     $w0 = COPY %2(s32)
118 name:            ptrtoint_s1_p0
119 legalized:       true
120 regBankSelected: true
122 registers:
123   - { id: 0, class: gpr }
124   - { id: 1, class: gpr }
125 body:             |
126   bb.0:
127     liveins: $x0
128     ; CHECK-LABEL: name: ptrtoint_s1_p0
129     ; CHECK: [[COPY:%[0-9]+]]:gpr64 = COPY $x0
130     ; CHECK: [[COPY1:%[0-9]+]]:gpr32 = COPY [[COPY]].sub_32
131     ; CHECK: [[COPY2:%[0-9]+]]:gpr32all = COPY [[COPY1]]
132     ; CHECK: $w0 = COPY [[COPY2]]
133     %0(p0) = COPY $x0
134     %1(s1) = G_PTRTOINT %0
135     %2:gpr(s32) = G_ANYEXT %1
136     $w0 = COPY %2(s32)