[ARM] Split large truncating MVE stores
[llvm-complete.git] / test / CodeGen / MIR / AArch64 / mirnamer.mir
blob87b563d20911998a7d4d336adaefb92d9f634716
1 # RUN: llc -x mir -mtriple aarch64-apple-ios -run-pass mir-namer -verify-machineinstrs -o - < %s | FileCheck %s
3 ---
4 name: foo
5 body:             |
6   bb.0:
8     ;CHECK: bb
9     ;CHECK-NEXT: %namedVReg1353:_(p0) = COPY $d0
10     ;CHECK-NEXT: %namedVReg1352:_(<4 x s32>) = COPY $q0
11     ;CHECK-NEXT: G_STORE %namedVReg1352(<4 x s32>), %namedVReg1353
13     liveins: $q0, $d0
14     %1:fpr(p0) = COPY $d0
15     %0:fpr(<4 x s32>) = COPY $q0
16     G_STORE %0(<4 x s32>), %1(p0) :: (store 16)
17 ...
18 ---
19 name: bar
20 stack:
21   - { id: 0, type: default, offset: 0, size: 4, alignment: 4,
22       stack-id: default, callee-saved-register: '', callee-saved-restored: true,
23       local-offset: -4, debug-info-variable: '', debug-info-expression: '',
24       debug-info-location: '' }
25 body:             |
26   bb.0:
28     ;CHECK: bb
29     ;CHECK-NEXT: %namedVReg1370:gpr32 = LDRWui
30     ;CHECK-NEXT: %namedVReg1371:gpr32 = MOVi32imm 1
31     ;CHECK-NEXT: %namedVReg1372:gpr32 = LDRWui
32     ;CHECK-NEXT: %namedVReg1373:gpr32 = MOVi32imm 2
33     ;CHECK-NEXT: %namedVReg1359:gpr32 = LDRWui
34     ;CHECK-NEXT: %namedVReg1360:gpr32 = MOVi32imm 3
35     ;CHECK-NEXT: %namedVReg1365:gpr32 = nsw ADDWrr
36     ;CHECK-NEXT: %namedVReg1361:gpr32 = LDRWui
37     ;CHECK-NEXT: %namedVReg1366:gpr32 = nsw ADDWrr
38     ;CHECK-NEXT: %namedVReg1362:gpr32 = MOVi32imm 4
39     ;CHECK-NEXT: %namedVReg1355:gpr32 = nsw ADDWrr
40     ;CHECK-NEXT: %namedVReg1363:gpr32 = LDRWui
41     ;CHECK-NEXT: %namedVReg1364:gpr32 = MOVi32imm 5
43     %0:gpr32 = LDRWui %stack.0, 0 :: (dereferenceable load 8)
44     %1:gpr32 = MOVi32imm 1
45     %2:gpr32 = LDRWui %stack.0, 0 :: (dereferenceable load 8)
46     %3:gpr32 = MOVi32imm 2
47     %4:gpr32 = LDRWui %stack.0, 0 :: (dereferenceable load 8)
48     %5:gpr32 = MOVi32imm 3
49     %10:gpr32 = nsw ADDWrr %0:gpr32, %1:gpr32
50     %6:gpr32 = LDRWui %stack.0, 0 :: (dereferenceable load 8)
51     %11:gpr32 = nsw ADDWrr %2:gpr32, %3:gpr32
52     %7:gpr32 = MOVi32imm 4
53     %12:gpr32 = nsw ADDWrr %4:gpr32, %5:gpr32
54     %8:gpr32 = LDRWui %stack.0, 0 :: (dereferenceable load 8)
55     %9:gpr32 = MOVi32imm 5
56     %13:gpr32 = nsw ADDWrr %6:gpr32, %7:gpr32
57     %14:gpr32 = nsw ADDWrr %8:gpr32, %9:gpr32
58     %15:gpr32 = nsw ADDWrr %10:gpr32, %11:gpr32
59     %16:gpr32 = nsw ADDWrr %12:gpr32, %13:gpr32
60     %17:gpr32 = nsw ADDWrr %14:gpr32, %15:gpr32
61     %18:gpr32 = nsw ADDWrr %16:gpr32, %17:gpr32
62     $w0 = COPY %18
63     RET_ReallyLR implicit $w0
64 ...
65 ---
66 name: baz
67 stack:
68   - { id: 0, type: default, offset: 0, size: 4, alignment: 4,
69       stack-id: default, callee-saved-register: '', callee-saved-restored: true,
70       local-offset: -4, debug-info-variable: '', debug-info-expression: '',
71       debug-info-location: '' }
72 body:             |
73   bb.0:
74     liveins: $x0, $x1, $d0, $d1
76     ;CHECK: bb
77     ;CHECK-NEXT: %namedVReg1355:gpr32 = LDRWui
78     ;CHECK-NEXT: %namedVReg1354:gpr32 = COPY %namedVReg1355
79     ;CHECK-NEXT: %namedVReg1353:gpr32 = COPY %namedVReg1354
80     ;CHECK-NEXT: %namedVReg1352:gpr32 = COPY %namedVReg1353
81     ;CHECK-NEXT: $w0 = COPY %namedVReg1352
83     %0:gpr32 = LDRWui %stack.0, 0 :: (dereferenceable load 8)
84     %1:gpr32 = COPY %0
85     %2:gpr32 = COPY %1
86     %3:gpr32 = COPY %2
87     $w0 = COPY %3
88     RET_ReallyLR implicit $w0
89 ...