[RISCV] Add shrinkwrap test cases showing gaps in current impl
[llvm-project.git] / llvm / test / CodeGen / X86 / amx_tile_pair_configure_O0.mir
blobdc79134321e9c288f31b62283043ae9c09dbdf45
1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 # RUN: llc -O0 -mtriple=x86_64-unknown-unknown -mattr=+amx-tile,+amx-bf16,+avx512f, \
3 # RUN: -mattr=+amx-transpose -run-pass=fasttileconfig -o - %s | FileCheck %s
5 ---
6 name:            test_tile_2rpntlvwz0
7 alignment:       16
8 exposesReturnsTwice: false
9 legalized:       false
10 regBankSelected: false
11 selected:        false
12 failedISel:      false
13 tracksRegLiveness: true
14 hasWinCFI:       false
15 callsEHReturn:   false
16 callsUnwindInit: false
17 hasEHCatchret:   false
18 hasEHScopes:     false
19 hasEHFunclets:   false
20 failsVerification: false
21 tracksDebugUserValues: false
22 registers:       []
23 liveins:
24   - { reg: '$edi', virtual-reg: '' }
25   - { reg: '$esi', virtual-reg: '' }
26   - { reg: '$edx', virtual-reg: '' }
27 frameInfo:
28   isFrameAddressTaken: false
29   isReturnAddressTaken: false
30   hasStackMap:     false
31   hasPatchPoint:   false
32   stackSize:       0
33   offsetAdjustment: 0
34   maxAlignment:    1024
35   adjustsStack:    false
36   hasCalls:        true
37   stackProtector:  ''
38   functionContext: ''
39   maxCallFrameSize: 4294967295
40   cvBytesOfCalleeSavedRegisters: 0
41   hasOpaqueSPAdjustment: false
42   hasVAStart:      false
43   hasMustTailInVarArgFunc: false
44   hasTailCall:     false
45   localFrameSize:  0
46   savePoint:       ''
47   restorePoint:    ''
48 fixedStack:      []
49 stack:
50   - { id: 0, name: '', type: default, offset: 0, size: 8, alignment: 8,
51       stack-id: default, callee-saved-register: '', callee-saved-restored: true,
52       debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
53   - { id: 1, name: '', type: default, offset: 0, size: 8, alignment: 8,
54       stack-id: default, callee-saved-register: '', callee-saved-restored: true,
55       debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
56   - { id: 2, name: '', type: default, offset: 0, size: 8, alignment: 8,
57       stack-id: default, callee-saved-register: '', callee-saved-restored: true,
58       debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
59   - { id: 3, name: '', type: default, offset: 0, size: 8, alignment: 8,
60       stack-id: default, callee-saved-register: '', callee-saved-restored: true,
61       debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
62   - { id: 4, name: '', type: default, offset: 0, size: 64, alignment: 4,
63       stack-id: default, callee-saved-register: '', callee-saved-restored: true,
64       debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
65   - { id: 5, name: '', type: spill-slot, offset: 0, size: 2, alignment: 2,
66       stack-id: default, callee-saved-register: '', callee-saved-restored: true,
67       debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
68   - { id: 6, name: '', type: spill-slot, offset: 0, size: 2, alignment: 2,
69       stack-id: default, callee-saved-register: '', callee-saved-restored: true,
70       debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
71   - { id: 7, name: '', type: spill-slot, offset: 0, size: 8, alignment: 8,
72       stack-id: default, callee-saved-register: '', callee-saved-restored: true,
73       debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
74 callSites:       []
75 debugValueSubstitutions: []
76 constants:       []
77 machineFunctionInfo:
78   amxProgModel: ManagedRA
79 body:             |
80   bb.0.entry:
81     liveins: $rdi, $rsi, $rdx, $rax
83     ; CHECK-LABEL: name: test_tile_2rpntlvwz0
84     ; CHECK: liveins: $rdi, $rsi, $rdx, $rax
85     ; CHECK-NEXT: {{  $}}
86     ; CHECK-NEXT: renamable $zmm0 = AVX512_512_SET0
87     ; CHECK-NEXT: VMOVUPSZmr %stack.4, 1, $noreg, 0, $noreg, killed renamable $zmm0 :: (store (s512) into %stack.4, align 4)
88     ; CHECK-NEXT: MOV8mi %stack.4, 1, $noreg, 0, $noreg, 1 :: (store (s512) into %stack.4, align 4)
89     ; CHECK-NEXT: renamable $rcx = MOV32ri64 64
90     ; CHECK-NEXT: MOV64mr %stack.7, 1, $noreg, 0, $noreg, $rcx :: (store (s64) into %stack.7)
91     ; CHECK-NEXT: renamable $cx = MOV16ri 64
92     ; CHECK-NEXT: MOV16mr %stack.5, 1, $noreg, 0, $noreg, $cx :: (store (s16) into %stack.5)
93     ; CHECK-NEXT: renamable $cx = MOV16ri 16
94     ; CHECK-NEXT: renamable $r8w = MOV16ri 16
95     ; CHECK-NEXT: MOV16mr %stack.6, 1, $noreg, 0, $noreg, $r8w :: (store (s16) into %stack.6)
96     ; CHECK-NEXT: $al = IMPLICIT_DEF
97     ; CHECK-NEXT: MOV8mr %stack.4, 1, $noreg, 48, $noreg, $al :: (store (s512) into %stack.4 + 48, align 4)
98     ; CHECK-NEXT: MOV16mr %stack.4, 1, $noreg, 16, $noreg, $cx :: (store (s512) into %stack.4 + 16, align 4)
99     ; CHECK-NEXT: $al = IMPLICIT_DEF
100     ; CHECK-NEXT: MOV8mr %stack.4, 1, $noreg, 50, $noreg, $al :: (store (s512) into %stack.4 + 50, align 2, basealign 4)
101     ; CHECK-NEXT: MOV16mr %stack.4, 1, $noreg, 20, $noreg, $cx :: (store (s512) into %stack.4 + 20, align 4)
102     ; CHECK-NEXT: $al = IMPLICIT_DEF
103     ; CHECK-NEXT: MOV8mr %stack.4, 1, $noreg, 49, $noreg, $al :: (store (s512) into %stack.4 + 49, align 1, basealign 4)
104     ; CHECK-NEXT: MOV16mr %stack.4, 1, $noreg, 18, $noreg, $di :: (store (s512) into %stack.4 + 18, align 2, basealign 4)
105     ; CHECK-NEXT: $al = IMPLICIT_DEF
106     ; CHECK-NEXT: MOV8mr %stack.4, 1, $noreg, 48, $noreg, $al :: (store (s512) into %stack.4 + 48, align 4)
107     ; CHECK-NEXT: MOV16mr %stack.4, 1, $noreg, 16, $noreg, $cx :: (store (s512) into %stack.4 + 16, align 4)
108     ; CHECK-NEXT: $al = IMPLICIT_DEF
109     ; CHECK-NEXT: MOV8mr %stack.4, 1, $noreg, 48, $noreg, $al :: (store (s512) into %stack.4 + 48, align 4)
110     ; CHECK-NEXT: MOV16mr %stack.4, 1, $noreg, 16, $noreg, $cx :: (store (s512) into %stack.4 + 16, align 4)
111     ; CHECK-NEXT: $al = IMPLICIT_DEF
112     ; CHECK-NEXT: MOV8mr %stack.4, 1, $noreg, 52, $noreg, $al :: (store (s512) into %stack.4 + 52, align 4)
113     ; CHECK-NEXT: MOV16mr %stack.4, 1, $noreg, 24, $noreg, $cx :: (store (s512) into %stack.4 + 24, align 4)
114     ; CHECK-NEXT: $al = IMPLICIT_DEF
115     ; CHECK-NEXT: MOV8mr %stack.4, 1, $noreg, 53, $noreg, $al :: (store (s512) into %stack.4 + 53, align 1, basealign 4)
116     ; CHECK-NEXT: MOV16mr %stack.4, 1, $noreg, 26, $noreg, $di :: (store (s512) into %stack.4 + 26, align 2, basealign 4)
117     ; CHECK-NEXT: PLDTILECFGV %stack.4, 1, $noreg, 0, $noreg, implicit-def dead $tmm0, implicit-def dead $tmm1, implicit-def dead $tmm2, implicit-def dead $tmm3, implicit-def dead $tmm4, implicit-def dead $tmm5, implicit-def dead $tmm6, implicit-def dead $tmm7 :: (load (s512) from %stack.4, align 4)
118     ; CHECK-NEXT: renamable $r9 = COPY $rsi
119     ; CHECK-NEXT: $rsi = MOV64rm %stack.7, 1, $noreg, 0, $noreg :: (load (s64) from %stack.7)
120     ; CHECK-NEXT: renamable $r8 = COPY $rdi
121     ; CHECK-NEXT: $di = MOV16rm %stack.6, 1, $noreg, 0, $noreg :: (load (s16) from %stack.6)
122     ; CHECK-NEXT: renamable $r10 = COPY $rax
123     ; CHECK-NEXT: $ax = MOV16rm %stack.5, 1, $noreg, 0, $noreg :: (load (s16) from %stack.5)
124     ; CHECK-NEXT: renamable $tmm4_tmm5 = PT2RPNTLVWZ0V renamable $ax, renamable $cx, renamable $di, renamable $rdx, 1, killed renamable $r10, 0, $noreg
125     ; CHECK-NEXT: renamable $tmm0 = COPY renamable $tmm5
126     ; CHECK-NEXT: renamable $tmm1 = COPY renamable $tmm4, implicit killed $tmm4_tmm5
127     ; CHECK-NEXT: PTILESTOREDV renamable $ax, renamable $cx, renamable $r9, 1, renamable $rsi, 0, $noreg, killed renamable $tmm1
128     ; CHECK-NEXT: PTILESTOREDV renamable $ax, renamable $di, renamable $r8, 1, renamable $rsi, 0, $noreg, killed renamable $tmm0
129     ; CHECK-NEXT: renamable $tmm0 = PTILEZEROV renamable $ax, renamable $cx
130     ; CHECK-NEXT: PTILESTOREDV renamable $ax, renamable $cx, renamable $rdx, 1, renamable $rsi, 0, $noreg, killed renamable $tmm0
131     ; CHECK-NEXT: renamable $tmm0 = PTILELOADDV renamable $ax, renamable $cx, killed renamable $r9, 1, renamable $rsi, 0, $noreg
132     ; CHECK-NEXT: renamable $tmm1 = PTILELOADDV renamable $ax, renamable $di, killed renamable $r8, 1, renamable $rsi, 0, $noreg
133     ; CHECK-NEXT: renamable $tmm2 = PTILELOADDV renamable $ax, renamable $cx, renamable $rdx, 1, renamable $rsi, 0, $noreg
134     ; CHECK-NEXT: renamable $tmm0 = PTDPBSSDV renamable $ax, renamable $cx, killed renamable $di, renamable $tmm0, killed renamable $tmm1, killed renamable $tmm2
135     ; CHECK-NEXT: PTILESTOREDV killed renamable $ax, killed renamable $cx, killed renamable $rdx, 1, killed renamable $rsi, 0, $noreg, killed renamable $tmm0
136     renamable $zmm0 = AVX512_512_SET0
137     VMOVUPSZmr %stack.4, 1, $noreg, 0, $noreg, killed renamable $zmm0 :: (store (s512) into %stack.4, align 4)
138     MOV8mi %stack.4, 1, $noreg, 0, $noreg, 1 :: (store (s512) into %stack.4, align 4)
139     renamable $rcx = MOV32ri64 64
140     MOV64mr %stack.7, 1, $noreg, 0, $noreg, $rcx :: (store (s64) into %stack.7)
141     renamable $cx = MOV16ri 64
142     MOV16mr %stack.5, 1, $noreg, 0, $noreg, $cx :: (store (s16) into %stack.5)
143     renamable $cx = MOV16ri 16
144     renamable $r8w = MOV16ri 16
145     MOV16mr %stack.6, 1, $noreg, 0, $noreg, $r8w :: (store (s16) into %stack.6)
146     PLDTILECFGV %stack.4, 1, $noreg, 0, $noreg, implicit-def dead $tmm0, implicit-def dead $tmm1, implicit-def dead $tmm2, implicit-def dead $tmm3, implicit-def dead $tmm4, implicit-def dead $tmm5, implicit-def dead $tmm6, implicit-def dead $tmm7 :: (load (s512) from %stack.4, align 4)
147     renamable $r9 = COPY $rsi
148     $rsi = MOV64rm %stack.7, 1, $noreg, 0, $noreg :: (load (s64) from %stack.7)
149     renamable $r8 = COPY $rdi
150     $di = MOV16rm %stack.6, 1, $noreg, 0, $noreg :: (load (s16) from %stack.6)
151     renamable $r10 = COPY $rax
152     $ax = MOV16rm %stack.5, 1, $noreg, 0, $noreg :: (load (s16) from %stack.5)
153     renamable $tmm4_tmm5 = PT2RPNTLVWZ0V renamable $ax, renamable $cx, renamable $di, renamable $rdx, 1, killed renamable $r10, 0, $noreg
154     renamable $tmm0 = COPY renamable $tmm5
155     renamable $tmm1 = COPY renamable $tmm4, implicit killed $tmm4_tmm5
156     PTILESTOREDV renamable $ax, renamable $cx, renamable $r9, 1, renamable $rsi, 0, $noreg, killed renamable $tmm1
157     PTILESTOREDV renamable $ax, renamable $di, renamable $r8, 1, renamable $rsi, 0, $noreg, killed renamable $tmm0
158     renamable $tmm0 = PTILEZEROV renamable $ax, renamable $cx
159     PTILESTOREDV renamable $ax, renamable $cx, renamable $rdx, 1, renamable $rsi, 0, $noreg, killed renamable $tmm0
160     renamable $tmm0 = PTILELOADDV renamable $ax, renamable $cx, killed renamable $r9, 1, renamable $rsi, 0, $noreg
161     renamable $tmm1 = PTILELOADDV renamable $ax, renamable $di, killed renamable $r8, 1, renamable $rsi, 0, $noreg
162     renamable $tmm2 = PTILELOADDV renamable $ax, renamable $cx, renamable $rdx, 1, renamable $rsi, 0, $noreg
163     renamable $tmm0 = PTDPBSSDV renamable $ax, renamable $cx, killed renamable $di, renamable $tmm0, killed renamable $tmm1, killed renamable $tmm2
164     PTILESTOREDV killed renamable $ax, killed renamable $cx, killed renamable $rdx, 1, killed renamable $rsi, 0, $noreg, killed renamable $tmm0