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=lowertilecopy -o - %s | FileCheck %s
6 name: test_tile_2rpntlvwz0
8 exposesReturnsTwice: false
10 regBankSelected: false
13 tracksRegLiveness: true
16 callsUnwindInit: false
20 failsVerification: false
21 tracksDebugUserValues: false
24 - { reg: '$edi', virtual-reg: '' }
25 - { reg: '$esi', virtual-reg: '' }
26 - { reg: '$edx', virtual-reg: '' }
27 - { reg: '$cx', virtual-reg: '' }
28 - { reg: '$r9', virtual-reg: '' }
29 - { reg: '$r10', virtual-reg: '' }
31 isFrameAddressTaken: false
32 isReturnAddressTaken: false
42 maxCallFrameSize: 4294967295
43 cvBytesOfCalleeSavedRegisters: 0
44 hasOpaqueSPAdjustment: false
46 hasMustTailInVarArgFunc: false
53 - { id: 43, name: '', type: default, offset: 0, size: 64, alignment: 4,
54 stack-id: default, callee-saved-register: '', callee-saved-restored: true,
55 debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
56 - { id: 68, name: '', type: spill-slot, 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: '' }
60 debugValueSubstitutions: []
63 amxProgModel: ManagedRA
66 liveins: $edi, $esi, $edx, $cx, $di, $r8w, $r11, $r10, $rbx, $r8, $r9
69 ; CHECK-LABEL: name: test_tile_2rpntlvwz0
70 ; CHECK: liveins: $edi, $esi, $edx, $cx, $di, $r8w, $r11, $r10, $rbx, $r8, $r9
72 ; CHECK-NEXT: PLDTILECFGV %stack.0, 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.0, align 4)
73 ; CHECK-NEXT: renamable $tmm4_tmm5 = PT2RPNTLVWZ0V killed renamable $cx, killed renamable $di, killed renamable $r8w, killed renamable $r11, 1, killed renamable $rbx, 0, $noreg
74 ; CHECK-NEXT: $rax = MOV64ri 64
75 ; CHECK-NEXT: TILESTORED %stack.3, 1, $rax, 0, $noreg, $tmm5 :: (store (s8192) into %stack.3)
76 ; CHECK-NEXT: $tmm0 = TILELOADD %stack.3, 1, killed $rax, 0, $noreg :: (load (s8192) from %stack.3)
77 ; CHECK-NEXT: $rax = MOV64ri 64
78 ; CHECK-NEXT: TILESTORED %stack.2, 1, $rax, 0, $noreg, $tmm4 :: (store (s8192) into %stack.2)
79 ; CHECK-NEXT: $tmm1 = TILELOADD %stack.2, 1, killed $rax, 0, $noreg :: (load (s8192) from %stack.2)
80 ; CHECK-NEXT: renamable $r8 = MOV32ri64 64
81 ; CHECK-NEXT: MOV64mr %stack.1, 1, $noreg, 0, $noreg, $r8 :: (store (s64) into %stack.1)
82 ; CHECK-NEXT: renamable $di = MOV16ri 64
83 ; CHECK-NEXT: renamable $cx = MOV16ri 16
84 ; CHECK-NEXT: PTILESTOREDV renamable $cx, renamable $di, killed renamable $r10, 1, renamable $r8, 0, $noreg, killed renamable $tmm1
85 ; CHECK-NEXT: PTILESTOREDV killed renamable $cx, killed renamable $di, killed renamable $r9, 1, renamable $r8, 0, $noreg, killed renamable $tmm0
86 PLDTILECFGV %stack.43, 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.43, align 4)
87 renamable $tmm4_tmm5 = PT2RPNTLVWZ0V killed renamable $cx, killed renamable $di, killed renamable $r8w, killed renamable $r11, 1, killed renamable $rbx, 0, $noreg
88 renamable $tmm0 = COPY renamable $tmm5
89 renamable $tmm1 = COPY renamable $tmm4, implicit killed $tmm4_tmm5
90 renamable $r8 = MOV32ri64 64
91 MOV64mr %stack.68, 1, $noreg, 0, $noreg, $r8 :: (store (s64) into %stack.68)
92 renamable $di = MOV16ri 64
93 renamable $cx = MOV16ri 16
94 PTILESTOREDV renamable $cx, renamable $di, killed renamable $r10, 1, renamable $r8, 0, $noreg, killed renamable $tmm1
95 PTILESTOREDV killed renamable $cx, killed renamable $di, killed renamable $r9, 1, renamable $r8, 0, $noreg, killed renamable $tmm0