1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2# RUN: llc -O0 -mtriple=mipsel-linux-gnu -run-pass=legalizer -verify-machineinstrs %s -o - | FileCheck %s -check-prefixes=MIPS32
3--- |
4
5  define void @ptr_arg_in_regs(i32* %p) {entry: ret void}
6  define void @ptr_arg_on_stack(i32 %x1, i32 %x2, i32 %x3, i32 %x4, i32* %p) {entry: ret void}
7  define void @ret_ptr(i8* %p) {entry: ret void}
8
9...
10---
11name:            ptr_arg_in_regs
12alignment:       4
13tracksRegLiveness: true
14body:             |
15  bb.1.entry:
16    liveins: $a0
17
18    ; MIPS32-LABEL: name: ptr_arg_in_regs
19    ; MIPS32: liveins: $a0
20    ; MIPS32: [[COPY:%[0-9]+]]:_(p0) = COPY $a0
21    ; MIPS32: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[COPY]](p0) :: (load 4 from %ir.p)
22    ; MIPS32: $v0 = COPY [[LOAD]](s32)
23    ; MIPS32: RetRA implicit $v0
24    %0:_(p0) = COPY $a0
25    %1:_(s32) = G_LOAD %0(p0) :: (load 4 from %ir.p)
26    $v0 = COPY %1(s32)
27    RetRA implicit $v0
28
29...
30---
31name:            ptr_arg_on_stack
32alignment:       4
33tracksRegLiveness: true
34fixedStack:
35  - { id: 0, offset: 16, size: 4, alignment: 8, stack-id: default, isImmutable: true }
36body:             |
37  bb.1.entry:
38    liveins: $a0, $a1, $a2, $a3
39
40    ; MIPS32-LABEL: name: ptr_arg_on_stack
41    ; MIPS32: liveins: $a0, $a1, $a2, $a3
42    ; MIPS32: [[COPY:%[0-9]+]]:_(s32) = COPY $a0
43    ; MIPS32: [[COPY1:%[0-9]+]]:_(s32) = COPY $a1
44    ; MIPS32: [[COPY2:%[0-9]+]]:_(s32) = COPY $a2
45    ; MIPS32: [[COPY3:%[0-9]+]]:_(s32) = COPY $a3
46    ; MIPS32: [[FRAME_INDEX:%[0-9]+]]:_(p0) = G_FRAME_INDEX %fixed-stack.0
47    ; MIPS32: [[LOAD:%[0-9]+]]:_(p0) = G_LOAD [[FRAME_INDEX]](p0) :: (load 4 from %fixed-stack.0)
48    ; MIPS32: [[LOAD1:%[0-9]+]]:_(s32) = G_LOAD [[LOAD]](p0) :: (load 4 from %ir.p)
49    ; MIPS32: $v0 = COPY [[LOAD1]](s32)
50    ; MIPS32: RetRA implicit $v0
51    %0:_(s32) = COPY $a0
52    %1:_(s32) = COPY $a1
53    %2:_(s32) = COPY $a2
54    %3:_(s32) = COPY $a3
55    %5:_(p0) = G_FRAME_INDEX %fixed-stack.0
56    %4:_(p0) = G_LOAD %5(p0) :: (load 4 from %fixed-stack.0, align 4)
57    %6:_(s32) = G_LOAD %4(p0) :: (load 4 from %ir.p)
58    $v0 = COPY %6(s32)
59    RetRA implicit $v0
60
61...
62---
63name:            ret_ptr
64alignment:       4
65tracksRegLiveness: true
66body:             |
67  bb.1.entry:
68    liveins: $a0
69
70    ; MIPS32-LABEL: name: ret_ptr
71    ; MIPS32: liveins: $a0
72    ; MIPS32: [[COPY:%[0-9]+]]:_(p0) = COPY $a0
73    ; MIPS32: $v0 = COPY [[COPY]](p0)
74    ; MIPS32: RetRA implicit $v0
75    %0:_(p0) = COPY $a0
76    $v0 = COPY %0(p0)
77    RetRA implicit $v0
78
79...
80