|
1 | 1 | # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
|
2 | 2 | # RUN: llc -march=aarch64 -run-pass=legalizer %s -o - -verify-machineinstrs | FileCheck %s
|
3 |
| ---- | |
4 |
| - target datalayout = "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128" |
5 |
| - target triple = "aarch64" |
6 |
| - |
7 |
| - define i32 @load_store_test(i24* %ptr, i24* %ptr2) { |
8 |
| - %val = load i24, i24* %ptr |
9 |
| - store i24 %val, i24* %ptr2 |
10 |
| - ret i32 0 |
11 |
| - } |
12 |
| - |
13 |
| -... |
14 | 3 | ---
|
15 | 4 | name: load_store_test
|
16 | 5 | alignment: 4
|
17 | 6 | tracksRegLiveness: true
|
18 | 7 | body: |
|
19 |
| - bb.1 (%ir-block.0): |
| 8 | + bb.1: |
20 | 9 | liveins: $x0, $x1
|
21 | 10 |
|
22 | 11 | ; CHECK-LABEL: name: load_store_test
|
23 | 12 | ; CHECK: liveins: $x0, $x1
|
24 | 13 | ; CHECK: [[COPY:%[0-9]+]]:_(p0) = COPY $x0
|
25 | 14 | ; CHECK: [[COPY1:%[0-9]+]]:_(p0) = COPY $x1
|
26 | 15 | ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0
|
27 |
| - ; CHECK: [[ZEXTLOAD:%[0-9]+]]:_(s32) = G_ZEXTLOAD [[COPY]](p0) :: (load (s16) from %ir.ptr, align 4) |
| 16 | + ; CHECK: [[ZEXTLOAD:%[0-9]+]]:_(s32) = G_ZEXTLOAD [[COPY]](p0) :: (load (s16), align 4) |
28 | 17 | ; CHECK: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 2
|
29 | 18 | ; CHECK: [[PTR_ADD:%[0-9]+]]:_(p0) = G_PTR_ADD [[COPY]], [[C1]](s64)
|
30 |
| - ; CHECK: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[PTR_ADD]](p0) :: (load (s8) from %ir.ptr + 2, align 2, basealign 4) |
| 19 | + ; CHECK: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[PTR_ADD]](p0) :: (load (s8) from unknown-address + 2, align 2) |
31 | 20 | ; CHECK: [[C2:%[0-9]+]]:_(s64) = G_CONSTANT i64 16
|
32 | 21 | ; CHECK: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[LOAD]], [[C2]](s64)
|
33 | 22 | ; CHECK: [[OR:%[0-9]+]]:_(s32) = G_OR [[SHL]], [[ZEXTLOAD]]
|
34 | 23 | ; CHECK: [[COPY2:%[0-9]+]]:_(s32) = COPY [[OR]](s32)
|
35 | 24 | ; CHECK: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[COPY2]], [[C2]](s64)
|
36 | 25 | ; CHECK: [[PTR_ADD1:%[0-9]+]]:_(p0) = G_PTR_ADD [[COPY1]], [[C1]](s64)
|
37 |
| - ; CHECK: G_STORE [[COPY2]](s32), [[COPY1]](p0) :: (store (s16) into %ir.ptr2, align 4) |
38 |
| - ; CHECK: G_STORE [[LSHR]](s32), [[PTR_ADD1]](p0) :: (store (s8) into %ir.ptr2 + 2, align 2, basealign 4) |
| 26 | + ; CHECK: G_STORE [[COPY2]](s32), [[COPY1]](p0) :: (store (s16), align 4) |
| 27 | + ; CHECK: G_STORE [[LSHR]](s32), [[PTR_ADD1]](p0) :: (store (s8) into unknown-address + 2, align 2) |
39 | 28 | ; CHECK: $w0 = COPY [[C]](s32)
|
40 | 29 | ; CHECK: RET_ReallyLR implicit $w0
|
41 | 30 | %0:_(p0) = COPY $x0
|
42 | 31 | %1:_(p0) = COPY $x1
|
43 | 32 | %3:_(s32) = G_CONSTANT i32 0
|
44 |
| - %2:_(s24) = G_LOAD %0(p0) :: (load (s24) from %ir.ptr, align 4) |
45 |
| - G_STORE %2(s24), %1(p0) :: (store (s24) into %ir.ptr2, align 4) |
| 33 | + %2:_(s24) = G_LOAD %0(p0) :: (load (s24), align 4) |
| 34 | + G_STORE %2(s24), %1(p0) :: (store (s24), align 4) |
46 | 35 | $w0 = COPY %3(s32)
|
47 | 36 | RET_ReallyLR implicit $w0
|
48 | 37 |
|
49 | 38 | ...
|
| 39 | +--- |
| 40 | +name: store_i56 |
| 41 | +alignment: 4 |
| 42 | +tracksRegLiveness: true |
| 43 | +liveins: |
| 44 | + - { reg: '$x0' } |
| 45 | +body: | |
| 46 | + bb.1: |
| 47 | + liveins: $x0 |
| 48 | +
|
| 49 | + ; CHECK-LABEL: name: store_i56 |
| 50 | + ; CHECK: liveins: $x0 |
| 51 | + ; CHECK: [[COPY:%[0-9]+]]:_(p0) = COPY $x0 |
| 52 | + ; CHECK: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 32 |
| 53 | + ; CHECK: [[COPY1:%[0-9]+]]:_(s64) = COPY [[C]](s64) |
| 54 | + ; CHECK: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 32 |
| 55 | + ; CHECK: [[LSHR:%[0-9]+]]:_(s64) = G_LSHR [[COPY1]], [[C1]](s64) |
| 56 | + ; CHECK: [[C2:%[0-9]+]]:_(s64) = G_CONSTANT i64 4 |
| 57 | + ; CHECK: [[PTR_ADD:%[0-9]+]]:_(p0) = G_PTR_ADD [[COPY]], [[C2]](s64) |
| 58 | + ; CHECK: G_STORE [[COPY1]](s64), [[COPY]](p0) :: (store (s32), align 8) |
| 59 | + ; CHECK: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[LSHR]](s64) |
| 60 | + ; CHECK: [[C3:%[0-9]+]]:_(s64) = G_CONSTANT i64 16 |
| 61 | + ; CHECK: [[LSHR1:%[0-9]+]]:_(s32) = G_LSHR [[TRUNC]], [[C3]](s64) |
| 62 | + ; CHECK: [[C4:%[0-9]+]]:_(s64) = G_CONSTANT i64 2 |
| 63 | + ; CHECK: [[PTR_ADD1:%[0-9]+]]:_(p0) = G_PTR_ADD [[PTR_ADD]], [[C4]](s64) |
| 64 | + ; CHECK: G_STORE [[TRUNC]](s32), [[PTR_ADD]](p0) :: (store (s16) into unknown-address + 4, align 4) |
| 65 | + ; CHECK: G_STORE [[LSHR1]](s32), [[PTR_ADD1]](p0) :: (store (s8) into unknown-address + 6, align 2) |
| 66 | + ; CHECK: RET_ReallyLR |
| 67 | + %0:_(p0) = COPY $x0 |
| 68 | + %1:_(s56) = G_CONSTANT i56 32 |
| 69 | + G_STORE %1(s56), %0(p0) :: (store (s56), align 8) |
| 70 | + RET_ReallyLR |
| 71 | +
|
| 72 | +... |
0 commit comments