[MIPS GlobalISel] NarrowScalar G_ZEXTLOAD and G_SEXTLOAD
[llvm-complete.git] / test / CodeGen / Mips / GlobalISel / regbankselect / zextLoad_and_sextLoad.mir
blobee77cfcea768cf61e4e76b5614e1e5f46802edf5
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 @load1_s8_to_zextLoad1_s32(i8* %px) {entry: ret void}
6   define void @load2_s16_to_zextLoad2_s32(i16* %px) {entry: ret void}
7   define void @load4_s32_to_zextLoad4_s64(i8* %px) {entry: ret void}
8   define void @load1_s8_to_sextLoad1_s32(i8* %px) {entry: ret void}
9   define void @load2_s16_to_sextLoad2_s32(i16* %px) {entry: ret void}
10   define void @load4_s32_to_sextLoad4_s64(i8* %px) {entry: ret void}
12 ...
13 ---
14 name:            load1_s8_to_zextLoad1_s32
15 alignment:       2
16 legalized:       true
17 tracksRegLiveness: true
18 body:             |
19   bb.1.entry:
20     liveins: $a0
22     ; MIPS32-LABEL: name: load1_s8_to_zextLoad1_s32
23     ; MIPS32: liveins: $a0
24     ; MIPS32: [[COPY:%[0-9]+]]:gprb(p0) = COPY $a0
25     ; MIPS32: [[ZEXTLOAD:%[0-9]+]]:gprb(s32) = G_ZEXTLOAD [[COPY]](p0) :: (load 1 from %ir.px)
26     ; MIPS32: $v0 = COPY [[ZEXTLOAD]](s32)
27     ; MIPS32: RetRA implicit $v0
28     %0:_(p0) = COPY $a0
29     %2:_(s32) = G_ZEXTLOAD %0(p0) :: (load 1 from %ir.px)
30     $v0 = COPY %2(s32)
31     RetRA implicit $v0
33 ...
34 ---
35 name:            load2_s16_to_zextLoad2_s32
36 alignment:       2
37 legalized:       true
38 tracksRegLiveness: true
39 body:             |
40   bb.1.entry:
41     liveins: $a0
43     ; MIPS32-LABEL: name: load2_s16_to_zextLoad2_s32
44     ; MIPS32: liveins: $a0
45     ; MIPS32: [[COPY:%[0-9]+]]:gprb(p0) = COPY $a0
46     ; MIPS32: [[ZEXTLOAD:%[0-9]+]]:gprb(s32) = G_ZEXTLOAD [[COPY]](p0) :: (load 2 from %ir.px)
47     ; MIPS32: $v0 = COPY [[ZEXTLOAD]](s32)
48     ; MIPS32: RetRA implicit $v0
49     %0:_(p0) = COPY $a0
50     %2:_(s32) = G_ZEXTLOAD %0(p0) :: (load 2 from %ir.px)
51     $v0 = COPY %2(s32)
52     RetRA implicit $v0
54 ...
55 ---
56 name:            load4_s32_to_zextLoad4_s64
57 alignment:       2
58 legalized:       true
59 tracksRegLiveness: true
60 body:             |
61   bb.1.entry:
62     liveins: $a0
64     ; MIPS32-LABEL: name: load4_s32_to_zextLoad4_s64
65     ; MIPS32: liveins: $a0
66     ; MIPS32: [[COPY:%[0-9]+]]:gprb(p0) = COPY $a0
67     ; MIPS32: [[LOAD:%[0-9]+]]:gprb(s32) = G_LOAD [[COPY]](p0) :: (load 4 from %ir.px)
68     ; MIPS32: [[C:%[0-9]+]]:gprb(s32) = G_CONSTANT i32 0
69     ; MIPS32: $v0 = COPY [[LOAD]](s32)
70     ; MIPS32: $v1 = COPY [[C]](s32)
71     ; MIPS32: RetRA implicit $v0, implicit $v1
72     %0:_(p0) = COPY $a0
73     %5:_(s32) = G_LOAD %0(p0) :: (load 4 from %ir.px)
74     %6:_(s32) = G_CONSTANT i32 0
75     %2:_(s64) = G_MERGE_VALUES %5(s32), %6(s32)
76     %3:_(s32), %4:_(s32) = G_UNMERGE_VALUES %2(s64)
77     $v0 = COPY %3(s32)
78     $v1 = COPY %4(s32)
79     RetRA implicit $v0, implicit $v1
81 ...
82 ---
83 name:            load1_s8_to_sextLoad1_s32
84 alignment:       2
85 legalized:       true
86 tracksRegLiveness: true
87 body:             |
88   bb.1.entry:
89     liveins: $a0
91     ; MIPS32-LABEL: name: load1_s8_to_sextLoad1_s32
92     ; MIPS32: liveins: $a0
93     ; MIPS32: [[COPY:%[0-9]+]]:gprb(p0) = COPY $a0
94     ; MIPS32: [[SEXTLOAD:%[0-9]+]]:gprb(s32) = G_SEXTLOAD [[COPY]](p0) :: (load 1 from %ir.px)
95     ; MIPS32: $v0 = COPY [[SEXTLOAD]](s32)
96     ; MIPS32: RetRA implicit $v0
97     %0:_(p0) = COPY $a0
98     %2:_(s32) = G_SEXTLOAD %0(p0) :: (load 1 from %ir.px)
99     $v0 = COPY %2(s32)
100     RetRA implicit $v0
104 name:            load2_s16_to_sextLoad2_s32
105 alignment:       2
106 legalized:       true
107 tracksRegLiveness: true
108 body:             |
109   bb.1.entry:
110     liveins: $a0
112     ; MIPS32-LABEL: name: load2_s16_to_sextLoad2_s32
113     ; MIPS32: liveins: $a0
114     ; MIPS32: [[COPY:%[0-9]+]]:gprb(p0) = COPY $a0
115     ; MIPS32: [[SEXTLOAD:%[0-9]+]]:gprb(s32) = G_SEXTLOAD [[COPY]](p0) :: (load 2 from %ir.px)
116     ; MIPS32: $v0 = COPY [[SEXTLOAD]](s32)
117     ; MIPS32: RetRA implicit $v0
118     %0:_(p0) = COPY $a0
119     %2:_(s32) = G_SEXTLOAD %0(p0) :: (load 2 from %ir.px)
120     $v0 = COPY %2(s32)
121     RetRA implicit $v0
125 name:            load4_s32_to_sextLoad4_s64
126 alignment:       2
127 legalized:       true
128 tracksRegLiveness: true
129 body:             |
130   bb.1.entry:
131     liveins: $a0
133     ; MIPS32-LABEL: name: load4_s32_to_sextLoad4_s64
134     ; MIPS32: liveins: $a0
135     ; MIPS32: [[COPY:%[0-9]+]]:gprb(p0) = COPY $a0
136     ; MIPS32: [[LOAD:%[0-9]+]]:gprb(s32) = G_LOAD [[COPY]](p0) :: (load 4 from %ir.px)
137     ; MIPS32: [[C:%[0-9]+]]:gprb(s32) = G_CONSTANT i32 31
138     ; MIPS32: [[C1:%[0-9]+]]:gprb(s32) = G_CONSTANT i32 0
139     ; MIPS32: [[COPY1:%[0-9]+]]:gprb(s32) = COPY [[C]](s32)
140     ; MIPS32: [[ASHR:%[0-9]+]]:gprb(s32) = G_ASHR [[LOAD]], [[COPY1]](s32)
141     ; MIPS32: $v0 = COPY [[LOAD]](s32)
142     ; MIPS32: $v1 = COPY [[ASHR]](s32)
143     ; MIPS32: RetRA implicit $v0, implicit $v1
144     %0:_(p0) = COPY $a0
145     %5:_(s32) = G_LOAD %0(p0) :: (load 4 from %ir.px)
146     %9:_(s32) = G_CONSTANT i32 31
147     %10:_(s32) = G_CONSTANT i32 0
148     %8:_(s32) = COPY %9(s32)
149     %7:_(s32) = G_ASHR %5, %8(s32)
150     %2:_(s64) = G_MERGE_VALUES %5(s32), %7(s32)
151     %3:_(s32), %4:_(s32) = G_UNMERGE_VALUES %2(s64)
152     $v0 = COPY %3(s32)
153     $v1 = COPY %4(s32)
154     RetRA implicit $v0, implicit $v1