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# RUN: llc -O0 -mtriple=mipsel-linux-gnu -run-pass=legalizer -mcpu=mips32r6 -verify-machineinstrs %s -o - | FileCheck %s -check-prefixes=MIPS32R6 4--- | 5 6 @float_align1 = common global float 0.000000e+00, align 1 7 @float_align2 = common global float 0.000000e+00, align 2 8 @float_align4 = common global float 0.000000e+00, align 4 9 @float_align8 = common global float 0.000000e+00, align 8 10 @i32_align1 = common global i32 0, align 1 11 @i32_align2 = common global i32 0, align 2 12 @i32_align4 = common global i32 0, align 4 13 @i32_align8 = common global i32 0, align 8 14 15 define float @load_float_align1() { 16 entry: 17 %0 = load float, float* @float_align1, align 1 18 ret float %0 19 } 20 21 define float @load_float_align2() { 22 entry: 23 %0 = load float, float* @float_align2, align 2 24 ret float %0 25 } 26 27 define float @load_float_align4() { 28 entry: 29 %0 = load float, float* @float_align4, align 4 30 ret float %0 31 } 32 33 define float @load_float_align8() { 34 entry: 35 %0 = load float, float* @float_align8, align 8 36 ret float %0 37 } 38 39 define i32 @load_i32_align1() { 40 entry: 41 %0 = load i32, i32* @i32_align1, align 1 42 ret i32 %0 43 } 44 45 define i32 @load_i32_align2() { 46 entry: 47 %0 = load i32, i32* @i32_align2, align 2 48 ret i32 %0 49 } 50 51 define i32 @load_i32_align4() { 52 entry: 53 %0 = load i32, i32* @i32_align4, align 4 54 ret i32 %0 55 } 56 57 define i32 @load_i32_align8() { 58 entry: 59 %0 = load i32, i32* @i32_align8, align 8 60 ret i32 %0 61 } 62 63... 64--- 65name: load_float_align1 66alignment: 4 67tracksRegLiveness: true 68body: | 69 bb.1.entry: 70 ; MIPS32-LABEL: name: load_float_align1 71 ; MIPS32: [[GV:%[0-9]+]]:_(p0) = G_GLOBAL_VALUE @float_align1 72 ; MIPS32: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[GV]](p0) :: (dereferenceable load (s32) from @float_align1, align 1) 73 ; MIPS32: $f0 = COPY [[LOAD]](s32) 74 ; MIPS32: RetRA implicit $f0 75 ; MIPS32R6-LABEL: name: load_float_align1 76 ; MIPS32R6: [[GV:%[0-9]+]]:_(p0) = G_GLOBAL_VALUE @float_align1 77 ; MIPS32R6: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[GV]](p0) :: (dereferenceable load (s32) from @float_align1, align 1) 78 ; MIPS32R6: $f0 = COPY [[LOAD]](s32) 79 ; MIPS32R6: RetRA implicit $f0 80 %1:_(p0) = G_GLOBAL_VALUE @float_align1 81 %0:_(s32) = G_LOAD %1(p0) :: (dereferenceable load (s32) from @float_align1, align 1) 82 $f0 = COPY %0(s32) 83 RetRA implicit $f0 84 85... 86--- 87name: load_float_align2 88alignment: 4 89tracksRegLiveness: true 90body: | 91 bb.1.entry: 92 ; MIPS32-LABEL: name: load_float_align2 93 ; MIPS32: [[GV:%[0-9]+]]:_(p0) = G_GLOBAL_VALUE @float_align2 94 ; MIPS32: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[GV]](p0) :: (dereferenceable load (s32) from @float_align2, align 2) 95 ; MIPS32: $f0 = COPY [[LOAD]](s32) 96 ; MIPS32: RetRA implicit $f0 97 ; MIPS32R6-LABEL: name: load_float_align2 98 ; MIPS32R6: [[GV:%[0-9]+]]:_(p0) = G_GLOBAL_VALUE @float_align2 99 ; MIPS32R6: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[GV]](p0) :: (dereferenceable load (s32) from @float_align2, align 2) 100 ; MIPS32R6: $f0 = COPY [[LOAD]](s32) 101 ; MIPS32R6: RetRA implicit $f0 102 %1:_(p0) = G_GLOBAL_VALUE @float_align2 103 %0:_(s32) = G_LOAD %1(p0) :: (dereferenceable load (s32) from @float_align2, align 2) 104 $f0 = COPY %0(s32) 105 RetRA implicit $f0 106 107... 108--- 109name: load_float_align4 110alignment: 4 111tracksRegLiveness: true 112body: | 113 bb.1.entry: 114 ; MIPS32-LABEL: name: load_float_align4 115 ; MIPS32: [[GV:%[0-9]+]]:_(p0) = G_GLOBAL_VALUE @float_align4 116 ; MIPS32: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[GV]](p0) :: (dereferenceable load (s32) from @float_align4) 117 ; MIPS32: $f0 = COPY [[LOAD]](s32) 118 ; MIPS32: RetRA implicit $f0 119 ; MIPS32R6-LABEL: name: load_float_align4 120 ; MIPS32R6: [[GV:%[0-9]+]]:_(p0) = G_GLOBAL_VALUE @float_align4 121 ; MIPS32R6: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[GV]](p0) :: (dereferenceable load (s32) from @float_align4) 122 ; MIPS32R6: $f0 = COPY [[LOAD]](s32) 123 ; MIPS32R6: RetRA implicit $f0 124 %1:_(p0) = G_GLOBAL_VALUE @float_align4 125 %0:_(s32) = G_LOAD %1(p0) :: (dereferenceable load (s32) from @float_align4) 126 $f0 = COPY %0(s32) 127 RetRA implicit $f0 128 129... 130--- 131name: load_float_align8 132alignment: 4 133tracksRegLiveness: true 134body: | 135 bb.1.entry: 136 ; MIPS32-LABEL: name: load_float_align8 137 ; MIPS32: [[GV:%[0-9]+]]:_(p0) = G_GLOBAL_VALUE @float_align8 138 ; MIPS32: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[GV]](p0) :: (dereferenceable load (s32) from @float_align8, align 8) 139 ; MIPS32: $f0 = COPY [[LOAD]](s32) 140 ; MIPS32: RetRA implicit $f0 141 ; MIPS32R6-LABEL: name: load_float_align8 142 ; MIPS32R6: [[GV:%[0-9]+]]:_(p0) = G_GLOBAL_VALUE @float_align8 143 ; MIPS32R6: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[GV]](p0) :: (dereferenceable load (s32) from @float_align8, align 8) 144 ; MIPS32R6: $f0 = COPY [[LOAD]](s32) 145 ; MIPS32R6: RetRA implicit $f0 146 %1:_(p0) = G_GLOBAL_VALUE @float_align8 147 %0:_(s32) = G_LOAD %1(p0) :: (dereferenceable load (s32) from @float_align8, align 8) 148 $f0 = COPY %0(s32) 149 RetRA implicit $f0 150 151... 152--- 153name: load_i32_align1 154alignment: 4 155tracksRegLiveness: true 156body: | 157 bb.1.entry: 158 ; MIPS32-LABEL: name: load_i32_align1 159 ; MIPS32: [[GV:%[0-9]+]]:_(p0) = G_GLOBAL_VALUE @i32_align1 160 ; MIPS32: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[GV]](p0) :: (dereferenceable load (s32) from @i32_align1, align 1) 161 ; MIPS32: $v0 = COPY [[LOAD]](s32) 162 ; MIPS32: RetRA implicit $v0 163 ; MIPS32R6-LABEL: name: load_i32_align1 164 ; MIPS32R6: [[GV:%[0-9]+]]:_(p0) = G_GLOBAL_VALUE @i32_align1 165 ; MIPS32R6: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[GV]](p0) :: (dereferenceable load (s32) from @i32_align1, align 1) 166 ; MIPS32R6: $v0 = COPY [[LOAD]](s32) 167 ; MIPS32R6: RetRA implicit $v0 168 %1:_(p0) = G_GLOBAL_VALUE @i32_align1 169 %0:_(s32) = G_LOAD %1(p0) :: (dereferenceable load (s32) from @i32_align1, align 1) 170 $v0 = COPY %0(s32) 171 RetRA implicit $v0 172 173... 174--- 175name: load_i32_align2 176alignment: 4 177tracksRegLiveness: true 178body: | 179 bb.1.entry: 180 ; MIPS32-LABEL: name: load_i32_align2 181 ; MIPS32: [[GV:%[0-9]+]]:_(p0) = G_GLOBAL_VALUE @i32_align2 182 ; MIPS32: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[GV]](p0) :: (dereferenceable load (s32) from @i32_align2, align 2) 183 ; MIPS32: $v0 = COPY [[LOAD]](s32) 184 ; MIPS32: RetRA implicit $v0 185 ; MIPS32R6-LABEL: name: load_i32_align2 186 ; MIPS32R6: [[GV:%[0-9]+]]:_(p0) = G_GLOBAL_VALUE @i32_align2 187 ; MIPS32R6: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[GV]](p0) :: (dereferenceable load (s32) from @i32_align2, align 2) 188 ; MIPS32R6: $v0 = COPY [[LOAD]](s32) 189 ; MIPS32R6: RetRA implicit $v0 190 %1:_(p0) = G_GLOBAL_VALUE @i32_align2 191 %0:_(s32) = G_LOAD %1(p0) :: (dereferenceable load (s32) from @i32_align2, align 2) 192 $v0 = COPY %0(s32) 193 RetRA implicit $v0 194 195... 196--- 197name: load_i32_align4 198alignment: 4 199tracksRegLiveness: true 200body: | 201 bb.1.entry: 202 ; MIPS32-LABEL: name: load_i32_align4 203 ; MIPS32: [[GV:%[0-9]+]]:_(p0) = G_GLOBAL_VALUE @i32_align4 204 ; MIPS32: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[GV]](p0) :: (dereferenceable load (s32) from @i32_align4) 205 ; MIPS32: $v0 = COPY [[LOAD]](s32) 206 ; MIPS32: RetRA implicit $v0 207 ; MIPS32R6-LABEL: name: load_i32_align4 208 ; MIPS32R6: [[GV:%[0-9]+]]:_(p0) = G_GLOBAL_VALUE @i32_align4 209 ; MIPS32R6: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[GV]](p0) :: (dereferenceable load (s32) from @i32_align4) 210 ; MIPS32R6: $v0 = COPY [[LOAD]](s32) 211 ; MIPS32R6: RetRA implicit $v0 212 %1:_(p0) = G_GLOBAL_VALUE @i32_align4 213 %0:_(s32) = G_LOAD %1(p0) :: (dereferenceable load (s32) from @i32_align4) 214 $v0 = COPY %0(s32) 215 RetRA implicit $v0 216 217... 218--- 219name: load_i32_align8 220alignment: 4 221tracksRegLiveness: true 222body: | 223 bb.1.entry: 224 ; MIPS32-LABEL: name: load_i32_align8 225 ; MIPS32: [[GV:%[0-9]+]]:_(p0) = G_GLOBAL_VALUE @i32_align8 226 ; MIPS32: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[GV]](p0) :: (dereferenceable load (s32) from @i32_align8, align 8) 227 ; MIPS32: $v0 = COPY [[LOAD]](s32) 228 ; MIPS32: RetRA implicit $v0 229 ; MIPS32R6-LABEL: name: load_i32_align8 230 ; MIPS32R6: [[GV:%[0-9]+]]:_(p0) = G_GLOBAL_VALUE @i32_align8 231 ; MIPS32R6: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[GV]](p0) :: (dereferenceable load (s32) from @i32_align8, align 8) 232 ; MIPS32R6: $v0 = COPY [[LOAD]](s32) 233 ; MIPS32R6: RetRA implicit $v0 234 %1:_(p0) = G_GLOBAL_VALUE @i32_align8 235 %0:_(s32) = G_LOAD %1(p0) :: (dereferenceable load (s32) from @i32_align8, align 8) 236 $v0 = COPY %0(s32) 237 RetRA implicit $v0 238 239... 240