brintos

brintos / llvm-project-archived public Read only

0
0
Text · 8.7 KiB · 9af4ac3 Raw
174 lines · plain
1# REQUIRES: amdgpu-registered-target2# RUN: llvm-reduce -abort-on-invalid-reduction -simplify-mir -mtriple=amdgcn-amd-amdhsa --delta-passes=instructions --test FileCheck --test-arg --check-prefix=CHECK-INTERESTINGNESS --test-arg %s --test-arg --input-file %s -o %t 2> %t.log3# RUN: FileCheck --match-full-lines --check-prefix=RESULT %s < %t4 5# CHECK-INTERESTINGNESS-COUNT-15: V_MOV_B326 7# RESULT: frameInfo:8# RESULT-NEXT: isFrameAddressTaken: true9# RESULT-NEXT: isReturnAddressTaken: true10# RESULT-NEXT: hasStackMap:     true11# RESULT-NEXT: hasPatchPoint:   true12# RESULT-NEXT: offsetAdjustment: 12813# RESULT-NEXT: maxAlignment:    6414# RESULT-NEXT: adjustsStack:    true15# RESULT-NEXT: hasCalls:        true16# RESULT-NEXT: stackProtector: '%stack.9.guard'17# RESULT-NEXT: maxCallFrameSize: 42018# RESULT-NEXT: cvBytesOfCalleeSavedRegisters: 4819# RESULT-NEXT: hasOpaqueSPAdjustment: true20# RESULT-NEXT: hasVAStart:      true21# RESULT-NEXT: hasMustTailInVarArgFunc: true22# RESULT-NEXT: hasTailCall:     true23# RESULT-NEXT: savePoint:24# RESULT-NEXT:   - point:           '%bb.1'25# RESULT-NEXT: restorePoint:26# RESULT-NEXT:   - point:           '%bb.2'27 28# RESULT-NEXT: fixedStack:29# RESULT-NEXT:  - { id: 0, offset: 56, size: 4, alignment: 8, callee-saved-register: '$sgpr44',30# RESULT-NEXT:      callee-saved-restored: false }31# RESULT-NEXT:  - { id: 1, offset: 52, size: 4, alignment: 4, callee-saved-register: '$sgpr43' }32# RESULT-NEXT:  - { id: 2, offset: 48, size: 8, alignment: 16, isAliased: true }33# RESULT-NEXT:  - { id: 3, offset: 16, size: 16, alignment: 16 }34# RESULT-NEXT:  - { id: 4, size: 8, alignment: 16 }35 36# RESULT-NEXT: stack:37# RESULT-NEXT:  - { id: 0, name: bigalloca, offset: 16, size: 16, alignment: 8 }38# RESULT-NEXT:  - { id: 1, offset: 64, size: 4, alignment: 16, debug-info-variable: '!8',39# RESULT-NEXT:      debug-info-expression: '!DIExpression()', debug-info-location: '!10' }40# RESULT-NEXT:  - { id: 2, type: spill-slot, offset: 32, size: 4, alignment: 4 }41# RESULT-NEXT:  - { id: 3, type: spill-slot, offset: 36, size: 4, alignment: 4, stack-id: sgpr-spill }42# RESULT-NEXT:  - { id: 4, name: dynamic_alloca, type: variable-sized, alignment: 64 }43# RESULT-NEXT:  - { id: 5, name: m1, size: 2052, alignment: 4, local-offset: 0 }44# RESULT-NEXT:  - { id: 6, name: m2, size: 2060, alignment: 32, local-offset: 2080 }45# RESULT-NEXT:  - { id: 7, offset: 48, size: 4, alignment: 4, callee-saved-register: '$sgpr40' }46# RESULT-NEXT:  - { id: 8, offset: 52, size: 4, alignment: 4, callee-saved-register: '$sgpr41',47# RESULT-NEXT:      callee-saved-restored: false }48# RESULT-NEXT:  - { id: 9, name: guard, offset: 128, size: 4, alignment: 4 }49 50 51# RESULT: bb.0:52# RESULT-NEXT: [[FI0:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 %stack.1, implicit $exec53# RESULT-NEXT: [[FI1:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 %stack.0.bigalloca, implicit $exec54# RESULT-NEXT: [[FI2:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 %stack.2, implicit $exec55# RESULT-NEXT: [[FI3:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 %stack.3, implicit $exec56# RESULT-NEXT: [[FI4:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 %stack.4.dynamic_alloca, implicit $exec57# RESULT-NEXT: [[FI5:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 %stack.5.m1, implicit $exec58# RESULT-NEXT: [[FI6:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 %stack.6.m2, implicit $exec59# RESULT-NEXT: [[FI7:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 %stack.7, implicit $exec60# RESULT-NEXT: [[FI8:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 %stack.8, implicit $exec61# RESULT-NEXT: [[FI9:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 %fixed-stack.2, implicit $exec62# RESULT-NEXT: [[FI10:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 %fixed-stack.3, implicit $exec63# RESULT-NEXT: [[FI11:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 %fixed-stack.4, implicit $exec64# RESULT-NEXT: [[FI12:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 %fixed-stack.1, implicit $exec65# RESULT-NEXT: [[FI13:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 %fixed-stack.0, implicit $exec66# RESULT-NEXT: [[FI14:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 %stack.9.guard, implicit $exec67# RESULT-NEXT: S_ENDPGM 0, implicit [[FI0]], implicit [[FI1]], implicit [[FI2]], implicit [[FI3]], implicit [[FI4]], implicit [[FI5]], implicit [[FI6]], implicit [[FI7]], implicit [[FI8]], implicit [[FI9]], implicit [[FI10]], implicit [[FI11]], implicit [[FI12]], implicit [[FI13]], implicit [[FI14]]68--- |69  define void @func(i32 %size) !dbg !5 {70    %bigalloca = alloca [4 x i32], align 1, addrspace(5)71    %dynamic_alloca = alloca i32, i32 %size, align 1, addrspace(5)72    %dead = alloca i64, align 1, addrspace(5)73    %m1 = alloca [513 x float], align 1, addrspace(5)74    %m2 = alloca [513 x float], align 1, addrspace(5)75    %guard = alloca i32, align 4, addrspace(5)76    call void @llvm.dbg.declare(metadata i32 addrspace(5)* undef, metadata !8, metadata !DIExpression()), !dbg !1077    ret void78  }79 80  declare void @llvm.dbg.declare(metadata, metadata, metadata) #081 82  attributes #0 = { nocallback nofree nosync nounwind readnone speculatable willreturn }83 84  !llvm.dbg.cu = !{!0}85  !llvm.module.flags = !{!2, !3, !4}86 87  !0 = distinct !DICompileUnit(language: DW_LANG_C99, file: !1, isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug)88  !1 = !DIFile(filename: "tmp.c", directory: "/dev/null")89  !2 = !{i32 2, !"Dwarf Version", i32 4}90  !3 = !{i32 2, !"Debug Info Version", i32 3}91  !4 = !{i32 7, !"PIC Level", i32 2}92  !5 = distinct !DISubprogram(name: "foo", scope: !1, file: !1, line: 1, type: !6, scopeLine: 1, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0)93  !6 = !DISubroutineType(types: !7)94  !7 = !{null}95  !8 = !DILocalVariable(name: "in", arg: 1, scope: !5, file: !1, line: 1, type: !9)96  !9 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed)97  !10 = !DILocation(line: 1, column: 14, scope: !5)98 99...100---101name: func102tracksRegLiveness: true103frameInfo:104  isFrameAddressTaken: true105  isReturnAddressTaken: true106  hasStackMap:     true107  hasPatchPoint:   true108  stackSize:       0109  offsetAdjustment: 128110  maxAlignment:    1111  adjustsStack:    true112  hasCalls:        true113  stackProtector:  '%stack.9'114  maxCallFrameSize: 420115  cvBytesOfCalleeSavedRegisters: 48116  hasOpaqueSPAdjustment: true117  hasVAStart:      true118  hasMustTailInVarArgFunc: true119  hasTailCall:     true120  localFrameSize:  0121  savePoint:122    - point:           '%bb.1'123  restorePoint:124    - point:           '%bb.2'125 126fixedStack:127  - { id: 0, offset: 0, size: 8, alignment: 4, isImmutable: true, isAliased: false }128  - { id: 1, offset: 16, size: 16, alignment: 8, isImmutable: false, isAliased: false }129  - { id: 2, offset: 48, size: 8, alignment: 4, isImmutable: false, isAliased: true }130  - { id: 3, offset: 52, size: 4, alignment: 4, callee-saved-register: '$sgpr43', callee-saved-restored: true  }131  - { id: 4, offset: 56, size: 4, alignment: 4, callee-saved-register: '$sgpr44', callee-saved-restored: false  }132stack:133  - { id: 1, offset: 16, size: 16, alignment: 8, name: bigalloca }134  - { id: 0, offset: 64, size: 4, alignment: 16,135      debug-info-variable: '!8', debug-info-expression: '!DIExpression()',136      debug-info-location: '!10' }137  - { id: 2, offset: 32, size: 4, alignment: 4, type: spill-slot }138  - { id: 3, offset: 36, size: 4, alignment: 4, type: spill-slot, stack-id: sgpr-spill }139  - { id: 4, type: variable-sized, alignment: 64, name: dynamic_alloca }140  - { id: 5, name: m1, size: 2052, alignment: 4, local-offset: 0 }141  - { id: 6, name: m2, size: 2060, alignment: 32, local-offset: 2080 }142  - { id: 7, offset: 48, size: 4, alignment: 4, callee-saved-register: '$sgpr40', callee-saved-restored: true}143  - { id: 8, offset: 52, size: 4, alignment: 4, callee-saved-register: '$sgpr41', callee-saved-restored: false}144  - { id: 9, offset: 128, size: 4, alignment: 4, name: guard }145body:             |146  bb.0:147    S_NOP 0148    %0:vgpr_32 = V_MOV_B32_e32 %stack.0, implicit $exec149    %1:vgpr_32 = V_MOV_B32_e32 %stack.1, implicit $exec150    %2:vgpr_32 = V_MOV_B32_e32 %stack.2, implicit $exec151    %3:vgpr_32 = V_MOV_B32_e32 %stack.3, implicit $exec152    %4:vgpr_32 = V_MOV_B32_e32 %stack.4, implicit $exec153    %5:vgpr_32 = V_MOV_B32_e32 %stack.5, implicit $exec154    %6:vgpr_32 = V_MOV_B32_e32 %stack.6, implicit $exec155    %7:vgpr_32 = V_MOV_B32_e32 %stack.7, implicit $exec156    %8:vgpr_32 = V_MOV_B32_e32 %stack.8, implicit $exec157    %9:vgpr_32 = V_MOV_B32_e32 %fixed-stack.2, implicit $exec158    %10:vgpr_32 = V_MOV_B32_e32 %fixed-stack.1, implicit $exec159    %11:vgpr_32 = V_MOV_B32_e32 %fixed-stack.0, implicit $exec160    %12:vgpr_32 = V_MOV_B32_e32 %fixed-stack.3, implicit $exec161    %13:vgpr_32 = V_MOV_B32_e32 %fixed-stack.4, implicit $exec162    %14:vgpr_32 = V_MOV_B32_e32 %stack.9.guard, implicit $exec163    S_ENDPGM 0, implicit %0, implicit %1, implicit %2, implicit %3, implicit %4, implicit %5, implicit %6, implicit %7, implicit %8, implicit %9, implicit %10, implicit %11, implicit %12, implicit %13, implicit %14164 165  bb.1:166    S_NOP 0167    S_WAITCNT 0168 169  bb.2:170    S_WAITCNT 0171    S_NOP 0172 173...174