[libc++] Add a test to make sure the type traits derive from integral_constant (...
[llvm-project.git] / llvm / test / CodeGen / RISCV / GlobalISel / legalizer / legalize-inttoptr-rv32.mir
blob074c5c2dda3779d09a0a125035b448a6c7292dbe
1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 # RUN: llc -mtriple=riscv32 -run-pass=legalizer -verify-machineinstrs %s -o - | FileCheck %s
4 ---
5 name:            p0_s32
6 body:             |
7   bb.0:
8     liveins: $x10
10     ; CHECK-LABEL: name: p0_s32
11     ; CHECK: liveins: $x10
12     ; CHECK-NEXT: {{  $}}
13     ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $x10
14     ; CHECK-NEXT: [[INTTOPTR:%[0-9]+]]:_(p0) = G_INTTOPTR [[COPY]](s32)
15     ; CHECK-NEXT: $x10 = COPY [[INTTOPTR]](p0)
16     ; CHECK-NEXT: PseudoRET implicit $x10
17     %0:_(s32) = COPY $x10
18     %1:_(p0) = G_INTTOPTR %0(s32)
19     $x10 = COPY %1(p0)
20     PseudoRET implicit $x10
22 ...
23 ---
24 name:            p0_s16
25 body:             |
26   bb.0:
27     liveins: $x10
29     ; CHECK-LABEL: name: p0_s16
30     ; CHECK: liveins: $x10
31     ; CHECK-NEXT: {{  $}}
32     ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $x10
33     ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 65535
34     ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY]], [[C]]
35     ; CHECK-NEXT: [[INTTOPTR:%[0-9]+]]:_(p0) = G_INTTOPTR [[AND]](s32)
36     ; CHECK-NEXT: $x10 = COPY [[INTTOPTR]](p0)
37     ; CHECK-NEXT: PseudoRET implicit $x10
38     %1:_(s32) = COPY $x10
39     %0:_(s16) = G_TRUNC %1(s32)
40     %2:_(p0) = G_INTTOPTR %0(s16)
41     $x10 = COPY %2(p0)
42     PseudoRET implicit $x10
44 ...
45 ---
46 name:            p0_s8
47 body:             |
48   bb.0:
49     liveins: $x10
51     ; CHECK-LABEL: name: p0_s8
52     ; CHECK: liveins: $x10
53     ; CHECK-NEXT: {{  $}}
54     ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $x10
55     ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 255
56     ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY]], [[C]]
57     ; CHECK-NEXT: [[INTTOPTR:%[0-9]+]]:_(p0) = G_INTTOPTR [[AND]](s32)
58     ; CHECK-NEXT: $x10 = COPY [[INTTOPTR]](p0)
59     ; CHECK-NEXT: PseudoRET implicit $x10
60     %1:_(s32) = COPY $x10
61     %0:_(s8) = G_TRUNC %1(s32)
62     %2:_(p0) = G_INTTOPTR %0(s8)
63     $x10 = COPY %2(p0)
64     PseudoRET implicit $x10
66 ...
67 ---
68 name:            p0_s1
69 body:             |
70   bb.0:
71     liveins: $x10
73     ; CHECK-LABEL: name: p0_s1
74     ; CHECK: liveins: $x10
75     ; CHECK-NEXT: {{  $}}
76     ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $x10
77     ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 1
78     ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY]], [[C]]
79     ; CHECK-NEXT: [[INTTOPTR:%[0-9]+]]:_(p0) = G_INTTOPTR [[AND]](s32)
80     ; CHECK-NEXT: $x10 = COPY [[INTTOPTR]](p0)
81     ; CHECK-NEXT: PseudoRET implicit $x10
82     %1:_(s32) = COPY $x10
83     %0:_(s1) = G_TRUNC %1(s32)
84     %2:_(p0) = G_INTTOPTR %0(s1)
85     $x10 = COPY %2(p0)
86     PseudoRET implicit $x10
88 ...
89 ---
90 name:            p0_s64
91 body:             |
92   bb.0:
93     liveins: $x10, $x11
95     ; CHECK-LABEL: name: p0_s64
96     ; CHECK: liveins: $x10, $x11
97     ; CHECK-NEXT: {{  $}}
98     ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $x10
99     ; CHECK-NEXT: [[INTTOPTR:%[0-9]+]]:_(p0) = G_INTTOPTR [[COPY]](s32)
100     ; CHECK-NEXT: $x10 = COPY [[INTTOPTR]](p0)
101     ; CHECK-NEXT: PseudoRET implicit $x10
102     %1:_(s32) = COPY $x10
103     %2:_(s32) = COPY $x11
104     %0:_(s64) = G_MERGE_VALUES %1(s32), %2(s32)
105     %3:_(p0) = G_INTTOPTR %0(s64)
106     $x10 = COPY %3(p0)
107     PseudoRET implicit $x10
111 name:            p0_s44
112 body:             |
113   bb.0:
114     liveins: $x10, $x11
116     ; CHECK-LABEL: name: p0_s44
117     ; CHECK: liveins: $x10, $x11
118     ; CHECK-NEXT: {{  $}}
119     ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $x10
120     ; CHECK-NEXT: [[INTTOPTR:%[0-9]+]]:_(p0) = G_INTTOPTR [[COPY]](s32)
121     ; CHECK-NEXT: $x10 = COPY [[INTTOPTR]](p0)
122     ; CHECK-NEXT: PseudoRET implicit $x10
123     %1:_(s32) = COPY $x10
124     %2:_(s32) = COPY $x11
125     %3:_(s64) = G_MERGE_VALUES %1(s32), %2(s32)
126     %0:_(s44) = G_TRUNC %3(s64)
127     %4:_(p0) = G_INTTOPTR %0(s44)
128     $x10 = COPY %4(p0)
129     PseudoRET implicit $x10