[libc++] Add a test to make sure the type traits derive from integral_constant (...
[llvm-project.git] / llvm / test / CodeGen / RISCV / GlobalISel / legalizer / legalize-ptrtoint-rv64.mir
blob7299c5963146bc361ee525e282846d44204fe40b
1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 # RUN: llc -mtriple=riscv64 -run-pass=legalizer -verify-machineinstrs %s -o - | FileCheck %s
4 ---
5 name:            p0_s64
6 body:             |
7   bb.0:
8     liveins: $x10
10     ; CHECK-LABEL: name: p0_s64
11     ; CHECK: liveins: $x10
12     ; CHECK-NEXT: {{  $}}
13     ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10
14     ; CHECK-NEXT: [[PTRTOINT:%[0-9]+]]:_(s64) = G_PTRTOINT [[COPY]](p0)
15     ; CHECK-NEXT: $x10 = COPY [[PTRTOINT]](s64)
16     ; CHECK-NEXT: PseudoRET implicit $x10
17     %0:_(p0) = COPY $x10
18     %1:_(s64) = G_PTRTOINT %0(p0)
19     $x10 = COPY %1(s64)
20     PseudoRET implicit $x10
22 ...
23 ---
24 name:            p0_s32
25 body:             |
26   bb.0:
27     liveins: $x10
29     ; CHECK-LABEL: name: p0_s32
30     ; CHECK: liveins: $x10
31     ; CHECK-NEXT: {{  $}}
32     ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10
33     ; CHECK-NEXT: [[PTRTOINT:%[0-9]+]]:_(s64) = G_PTRTOINT [[COPY]](p0)
34     ; CHECK-NEXT: $x10 = COPY [[PTRTOINT]](s64)
35     ; CHECK-NEXT: PseudoRET implicit $x10
36     %0:_(p0) = COPY $x10
37     %1:_(s32) = G_PTRTOINT %0(p0)
38     %2:_(s64) = G_ANYEXT %1(s32)
39     $x10 = COPY %2(s64)
40     PseudoRET implicit $x10
42 ...
43 ---
44 name:            p0_s16
45 body:             |
46   bb.0:
47     liveins: $x10
49     ; CHECK-LABEL: name: p0_s16
50     ; CHECK: liveins: $x10
51     ; CHECK-NEXT: {{  $}}
52     ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10
53     ; CHECK-NEXT: [[PTRTOINT:%[0-9]+]]:_(s64) = G_PTRTOINT [[COPY]](p0)
54     ; CHECK-NEXT: $x10 = COPY [[PTRTOINT]](s64)
55     ; CHECK-NEXT: PseudoRET implicit $x10
56     %0:_(p0) = COPY $x10
57     %1:_(s16) = G_PTRTOINT %0(p0)
58     %2:_(s64) = G_ANYEXT %1(s16)
59     $x10 = COPY %2(s64)
60     PseudoRET implicit $x10
62 ...
63 ---
64 name:            p0_s8
65 body:             |
66   bb.0:
67     liveins: $x10
69     ; CHECK-LABEL: name: p0_s8
70     ; CHECK: liveins: $x10
71     ; CHECK-NEXT: {{  $}}
72     ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10
73     ; CHECK-NEXT: [[PTRTOINT:%[0-9]+]]:_(s64) = G_PTRTOINT [[COPY]](p0)
74     ; CHECK-NEXT: $x10 = COPY [[PTRTOINT]](s64)
75     ; CHECK-NEXT: PseudoRET implicit $x10
76     %0:_(p0) = COPY $x10
77     %1:_(s8) = G_PTRTOINT %0(p0)
78     %2:_(s64) = G_ANYEXT %1(s8)
79     $x10 = COPY %2(s64)
80     PseudoRET implicit $x10
82 ...
83 ---
84 name:            p0_s1
85 body:             |
86   bb.0:
87     liveins: $x10
89     ; CHECK-LABEL: name: p0_s1
90     ; CHECK: liveins: $x10
91     ; CHECK-NEXT: {{  $}}
92     ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10
93     ; CHECK-NEXT: [[PTRTOINT:%[0-9]+]]:_(s64) = G_PTRTOINT [[COPY]](p0)
94     ; CHECK-NEXT: $x10 = COPY [[PTRTOINT]](s64)
95     ; CHECK-NEXT: PseudoRET implicit $x10
96     %0:_(p0) = COPY $x10
97     %1:_(s1) = G_PTRTOINT %0(p0)
98     %2:_(s64) = G_ANYEXT %1(s1)
99     $x10 = COPY %2(s64)
100     PseudoRET implicit $x10
104 name:            p0_s128
105 body:             |
106   bb.0:
107     liveins: $x10
109     ; CHECK-LABEL: name: p0_s128
110     ; CHECK: liveins: $x10
111     ; CHECK-NEXT: {{  $}}
112     ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10
113     ; CHECK-NEXT: [[PTRTOINT:%[0-9]+]]:_(s64) = G_PTRTOINT [[COPY]](p0)
114     ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0
115     ; CHECK-NEXT: $x10 = COPY [[PTRTOINT]](s64)
116     ; CHECK-NEXT: $x11 = COPY [[C]](s64)
117     ; CHECK-NEXT: PseudoRET implicit $x10, implicit $x11
118     %0:_(p0) = COPY $x10
119     %1:_(s128) = G_PTRTOINT %0(p0)
120     %2:_(s64), %3:_(s64) = G_UNMERGE_VALUES %1(s128)
121     $x10 = COPY %2(s64)
122     $x11 = COPY %3(s64)
123     PseudoRET implicit $x10, implicit $x11
127 name:            p0_s88
128 body:             |
129   bb.0:
130     liveins: $x10
132     ; CHECK-LABEL: name: p0_s88
133     ; CHECK: liveins: $x10
134     ; CHECK-NEXT: {{  $}}
135     ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10
136     ; CHECK-NEXT: [[PTRTOINT:%[0-9]+]]:_(s64) = G_PTRTOINT [[COPY]](p0)
137     ; CHECK-NEXT: $x10 = COPY [[PTRTOINT]](s64)
138     ; CHECK-NEXT: PseudoRET implicit $x10
139     %0:_(p0) = COPY $x10
140     %1:_(s88) = G_PTRTOINT %0(p0)
141     %4:_(s64) = G_TRUNC %1
142     $x10 = COPY %4(s64)
143     PseudoRET implicit $x10