Bump version to 19.1.0-rc3
[llvm-project.git] / llvm / test / CodeGen / Mips / GlobalISel / regbankselect / load.mir
blobef607c1eb8bb1edb04c8dd3356b589840de1f9f8
1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 # RUN: llc -O0 -mtriple=mipsel-linux-gnu -run-pass=regbankselect -verify-machineinstrs %s -o - | FileCheck %s -check-prefixes=MIPS32
3 --- |
5   define void @load_i32(ptr %ptr) {entry: ret void}
6   define void @load_i64(ptr %ptr) {entry: ret void}
7   define void @load_ambiguous_i64_in_fpr(ptr %i64_ptr_a, ptr %i64_ptr_b) {entry: ret void}
8   define void @load_float(ptr %ptr) {entry: ret void}
9   define void @load_ambiguous_float_in_gpr(ptr %float_ptr_a, ptr %float_ptr_b) {entry: ret void}
10   define void @load_double(ptr %ptr) {entry: ret void}
12 ...
13 ---
14 name:            load_i32
15 alignment:       4
16 legalized:       true
17 tracksRegLiveness: true
18 body:             |
19   bb.1.entry:
20     liveins: $a0
22     ; MIPS32-LABEL: name: load_i32
23     ; MIPS32: liveins: $a0
24     ; MIPS32: [[COPY:%[0-9]+]]:gprb(p0) = COPY $a0
25     ; MIPS32: [[LOAD:%[0-9]+]]:gprb(s32) = G_LOAD [[COPY]](p0) :: (load (s32) from %ir.ptr)
26     ; MIPS32: $v0 = COPY [[LOAD]](s32)
27     ; MIPS32: RetRA implicit $v0
28     %0:_(p0) = COPY $a0
29     %1:_(s32) = G_LOAD %0(p0) :: (load (s32) from %ir.ptr)
30     $v0 = COPY %1(s32)
31     RetRA implicit $v0
33 ...
34 ---
35 name:            load_i64
36 alignment:       4
37 legalized:       true
38 tracksRegLiveness: true
39 body:             |
40   bb.1.entry:
41     liveins: $a0
43     ; MIPS32-LABEL: name: load_i64
44     ; MIPS32: liveins: $a0
45     ; MIPS32: [[COPY:%[0-9]+]]:gprb(p0) = COPY $a0
46     ; MIPS32: [[LOAD:%[0-9]+]]:gprb(s32) = G_LOAD [[COPY]](p0) :: (load (s32) from %ir.ptr, align 8)
47     ; MIPS32: [[C:%[0-9]+]]:gprb(s32) = G_CONSTANT i32 4
48     ; MIPS32: [[PTR_ADD:%[0-9]+]]:gprb(p0) = G_PTR_ADD [[COPY]], [[C]](s32)
49     ; MIPS32: [[LOAD1:%[0-9]+]]:gprb(s32) = G_LOAD [[PTR_ADD]](p0) :: (load (s32) from %ir.ptr + 4, basealign 8)
50     ; MIPS32: $v0 = COPY [[LOAD]](s32)
51     ; MIPS32: $v1 = COPY [[LOAD1]](s32)
52     ; MIPS32: RetRA implicit $v0, implicit $v1
53     %0:_(p0) = COPY $a0
54     %1:_(s64) = G_LOAD %0(p0) :: (load (s64) from %ir.ptr)
55     %2:_(s32), %3:_(s32) = G_UNMERGE_VALUES %1(s64)
56     $v0 = COPY %2(s32)
57     $v1 = COPY %3(s32)
58     RetRA implicit $v0, implicit $v1
60 ...
61 ---
62 name:            load_ambiguous_i64_in_fpr
63 alignment:       4
64 legalized:       true
65 tracksRegLiveness: true
66 body:             |
67   bb.1.entry:
68     liveins: $a0, $a1
70     ; MIPS32-LABEL: name: load_ambiguous_i64_in_fpr
71     ; MIPS32: liveins: $a0, $a1
72     ; MIPS32: [[COPY:%[0-9]+]]:gprb(p0) = COPY $a0
73     ; MIPS32: [[COPY1:%[0-9]+]]:gprb(p0) = COPY $a1
74     ; MIPS32: [[LOAD:%[0-9]+]]:fprb(s64) = G_LOAD [[COPY]](p0) :: (load (s64) from %ir.i64_ptr_a)
75     ; MIPS32: G_STORE [[LOAD]](s64), [[COPY1]](p0) :: (store (s64) into %ir.i64_ptr_b)
76     ; MIPS32: RetRA
77     %0:_(p0) = COPY $a0
78     %1:_(p0) = COPY $a1
79     %2:_(s64) = G_LOAD %0(p0) :: (load (s64) from %ir.i64_ptr_a)
80     G_STORE %2(s64), %1(p0) :: (store (s64) into %ir.i64_ptr_b)
81     RetRA
83 ...
84 ---
85 name:            load_float
86 alignment:       4
87 legalized:       true
88 tracksRegLiveness: true
89 body:             |
90   bb.1.entry:
91     liveins: $a0
93     ; MIPS32-LABEL: name: load_float
94     ; MIPS32: liveins: $a0
95     ; MIPS32: [[COPY:%[0-9]+]]:gprb(p0) = COPY $a0
96     ; MIPS32: [[LOAD:%[0-9]+]]:fprb(s32) = G_LOAD [[COPY]](p0) :: (load (s32) from %ir.ptr)
97     ; MIPS32: $f0 = COPY [[LOAD]](s32)
98     ; MIPS32: RetRA implicit $f0
99     %0:_(p0) = COPY $a0
100     %1:_(s32) = G_LOAD %0(p0) :: (load (s32) from %ir.ptr)
101     $f0 = COPY %1(s32)
102     RetRA implicit $f0
106 name:            load_ambiguous_float_in_gpr
107 alignment:       4
108 legalized:       true
109 tracksRegLiveness: true
110 body:             |
111   bb.1.entry:
112     liveins: $a0, $a1
114     ; MIPS32-LABEL: name: load_ambiguous_float_in_gpr
115     ; MIPS32: liveins: $a0, $a1
116     ; MIPS32: [[COPY:%[0-9]+]]:gprb(p0) = COPY $a0
117     ; MIPS32: [[COPY1:%[0-9]+]]:gprb(p0) = COPY $a1
118     ; MIPS32: [[LOAD:%[0-9]+]]:gprb(s32) = G_LOAD [[COPY]](p0) :: (load (s32) from %ir.float_ptr_a)
119     ; MIPS32: G_STORE [[LOAD]](s32), [[COPY1]](p0) :: (store (s32) into %ir.float_ptr_b)
120     ; MIPS32: RetRA
121     %0:_(p0) = COPY $a0
122     %1:_(p0) = COPY $a1
123     %2:_(s32) = G_LOAD %0(p0) :: (load (s32) from %ir.float_ptr_a)
124     G_STORE %2(s32), %1(p0) :: (store (s32) into %ir.float_ptr_b)
125     RetRA
129 name:            load_double
130 alignment:       4
131 legalized:       true
132 tracksRegLiveness: true
133 body:             |
134   bb.1.entry:
135     liveins: $a0
137     ; MIPS32-LABEL: name: load_double
138     ; MIPS32: liveins: $a0
139     ; MIPS32: [[COPY:%[0-9]+]]:gprb(p0) = COPY $a0
140     ; MIPS32: [[LOAD:%[0-9]+]]:fprb(s64) = G_LOAD [[COPY]](p0) :: (load (s64) from %ir.ptr)
141     ; MIPS32: $d0 = COPY [[LOAD]](s64)
142     ; MIPS32: RetRA implicit $d0
143     %0:_(p0) = COPY $a0
144     %1:_(s64) = G_LOAD %0(p0) :: (load (s64) from %ir.ptr)
145     $d0 = COPY %1(s64)
146     RetRA implicit $d0