brintos

brintos / llvm-project-archived public Read only

0
0
Text · 9.8 KiB · 46d0469 Raw
233 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 32# RUN: llc -start-after=finalize-isel -regalloc=greedy -stop-after=greedy \3# RUN:   -verify-machineinstrs -verify-regalloc %s -o - | FileCheck %s4--- |5  target datalayout = "e-m:e-p:32:32-p270:32:32-p271:32:32-p272:64:64-i128:128-f64:32:64-f80:32-n8:16:32-S128"6  target triple = "i386-unknown-linux-gnu"7 8  define void @input(i32 %0) #0 {9    call void asm "# $0", "rm,~{ax},~{cx},~{dx},~{si},~{di},~{bx},~{bp}"(i32 %0)10    ret void11  }12 13  define i32 @output() #0 {14    %1 = alloca i32, align 415    call void asm "# $0", "=*rm,~{ax},~{cx},~{dx},~{si},~{di},~{bx},~{bp}"(ptr nonnull elementtype(i32) %1)16    %2 = load i32, ptr %1, align 417    ret i32 %218  }19 20  define i32 @inout(i32 %0) #0 {21    %2 = alloca i32, align 422    store i32 %0, ptr %2, align 423    call void asm "# $0 $1", "=*rm,0,~{ax},~{cx},~{dx},~{si},~{di},~{bx},~{bp}"(ptr nonnull elementtype(i32) %2, i32 %0)24    %3 = load i32, ptr %2, align 425    ret i32 %326  }27 28  attributes #0 = { nounwind }29 30...31---32name:            input33alignment:       1634exposesReturnsTwice: false35legalized:       false36regBankSelected: false37selected:        false38failedISel:      false39tracksRegLiveness: true40hasWinCFI:       false41callsEHReturn:   false42callsUnwindInit: false43hasEHContTarget: false44hasEHScopes:     false45hasEHFunclets:   false46isOutlined:      false47debugInstrRef:   false48failsVerification: false49tracksDebugUserValues: false50registers:51  - { id: 0, class: gr32, preferred-register: '' }52liveins:         []53frameInfo:54  isFrameAddressTaken: false55  isReturnAddressTaken: false56  hasStackMap:     false57  hasPatchPoint:   false58  stackSize:       059  offsetAdjustment: 060  maxAlignment:    461  adjustsStack:    false62  hasCalls:        false63  stackProtector:  ''64  functionContext: ''65  maxCallFrameSize: 429496729566  cvBytesOfCalleeSavedRegisters: 067  hasOpaqueSPAdjustment: false68  hasVAStart:      false69  hasMustTailInVarArgFunc: false70  hasTailCall:     false71  localFrameSize:  072  savePoint:       []73  restorePoint:    []74fixedStack:75  - { id: 0, type: default, offset: 0, size: 4, alignment: 16, stack-id: default,76      isImmutable: true, isAliased: false, callee-saved-register: '', callee-saved-restored: true,77      debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }78stack:           []79entry_values:    []80callSites:       []81debugValueSubstitutions: []82constants:       []83machineFunctionInfo: {}84body:             |85  bb.0 (%ir-block.1):86    ; CHECK-LABEL: name: input87    ; CHECK: INLINEASM &"# $0", 8 /* mayload attdialect */, 262190 /* mem:m */, %fixed-stack.0, 1, $noreg, 0, $noreg, 12 /* clobber */, implicit-def dead early-clobber $ax, 12 /* clobber */, implicit-def dead early-clobber $cx, 12 /* clobber */, implicit-def dead early-clobber $dx, 12 /* clobber */, implicit-def dead early-clobber $si, 12 /* clobber */, implicit-def dead early-clobber $di, 12 /* clobber */, implicit-def dead early-clobber $bx, 12 /* clobber */, implicit-def dead early-clobber $bp :: (load (s32) from %fixed-stack.0, align 16)88    ; CHECK-NEXT: RET 089    %0:gr32 = MOV32rm %fixed-stack.0, 1, $noreg, 0, $noreg :: (load (s32) from %fixed-stack.0, align 16)90    INLINEASM &"# $0", 0 /* attdialect */, 1076101129 /* reguse:GR32 spillable */, %0, 12 /* clobber */, implicit-def early-clobber $ax, 12 /* clobber */, implicit-def early-clobber $cx, 12 /* clobber */, implicit-def early-clobber $dx, 12 /* clobber */, implicit-def early-clobber $si, 12 /* clobber */, implicit-def early-clobber $di, 12 /* clobber */, implicit-def early-clobber $bx, 12 /* clobber */, implicit-def early-clobber $bp91    RET 092 93...94---95name:            output96alignment:       1697exposesReturnsTwice: false98legalized:       false99regBankSelected: false100selected:        false101failedISel:      false102tracksRegLiveness: true103hasWinCFI:       false104callsEHReturn:   false105callsUnwindInit: false106hasEHContTarget: false107hasEHScopes:     false108hasEHFunclets:   false109isOutlined:      false110debugInstrRef:   false111failsVerification: false112tracksDebugUserValues: false113registers:114  - { id: 0, class: gr32, preferred-register: '' }115liveins:         []116frameInfo:117  isFrameAddressTaken: false118  isReturnAddressTaken: false119  hasStackMap:     false120  hasPatchPoint:   false121  stackSize:       0122  offsetAdjustment: 0123  maxAlignment:    4124  adjustsStack:    false125  hasCalls:        false126  stackProtector:  ''127  functionContext: ''128  maxCallFrameSize: 4294967295129  cvBytesOfCalleeSavedRegisters: 0130  hasOpaqueSPAdjustment: false131  hasVAStart:      false132  hasMustTailInVarArgFunc: false133  hasTailCall:     false134  localFrameSize:  0135  savePoint:       []136  restorePoint:    []137fixedStack:      []138stack:139  - { id: 0, name: '', type: default, offset: 0, size: 4, alignment: 4,140      stack-id: default, callee-saved-register: '', callee-saved-restored: true,141      debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }142entry_values:    []143callSites:       []144debugValueSubstitutions: []145constants:       []146machineFunctionInfo: {}147body:             |148  bb.0 (%ir-block.0):149    ; CHECK-LABEL: name: output150    ; CHECK: INLINEASM &"# $0", 16 /* maystore attdialect */, 262190 /* mem:m */, %stack.1, 1, $noreg, 0, $noreg, 12 /* clobber */, implicit-def dead early-clobber $ax, 12 /* clobber */, implicit-def dead early-clobber $cx, 12 /* clobber */, implicit-def dead early-clobber $dx, 12 /* clobber */, implicit-def dead early-clobber $si, 12 /* clobber */, implicit-def dead early-clobber $di, 12 /* clobber */, implicit-def dead early-clobber $bx, 12 /* clobber */, implicit-def dead early-clobber $bp :: (store (s32) into %stack.1)151    ; CHECK-NEXT: [[MOV32rm:%[0-9]+]]:gr32 = MOV32rm %stack.1, 1, $noreg, 0, $noreg :: (load (s32) from %stack.1)152    ; CHECK-NEXT: MOV32mr %stack.0, 1, $noreg, 0, $noreg, [[MOV32rm]] :: (store (s32) into %ir.1)153    ; CHECK-NEXT: $eax = COPY [[MOV32rm]]154    ; CHECK-NEXT: RET 0, $eax155    INLINEASM &"# $0", 0 /* attdialect */, 1076101130 /* regdef:GR32 spillable */, def %0, 12 /* clobber */, implicit-def early-clobber $ax, 12 /* clobber */, implicit-def early-clobber $cx, 12 /* clobber */, implicit-def early-clobber $dx, 12 /* clobber */, implicit-def early-clobber $si, 12 /* clobber */, implicit-def early-clobber $di, 12 /* clobber */, implicit-def early-clobber $bx, 12 /* clobber */, implicit-def early-clobber $bp156    MOV32mr %stack.0, 1, $noreg, 0, $noreg, %0 :: (store (s32) into %ir.1)157    $eax = COPY %0158    RET 0, $eax159 160...161---162name:            inout163alignment:       16164exposesReturnsTwice: false165legalized:       false166regBankSelected: false167selected:        false168failedISel:      false169tracksRegLiveness: true170hasWinCFI:       false171callsEHReturn:   false172callsUnwindInit: false173hasEHContTarget: false174hasEHScopes:     false175hasEHFunclets:   false176isOutlined:      false177debugInstrRef:   false178failsVerification: false179tracksDebugUserValues: false180registers:181  - { id: 0, class: gr32, preferred-register: '' }182  - { id: 1, class: gr32, preferred-register: '' }183liveins:         []184frameInfo:185  isFrameAddressTaken: false186  isReturnAddressTaken: false187  hasStackMap:     false188  hasPatchPoint:   false189  stackSize:       0190  offsetAdjustment: 0191  maxAlignment:    4192  adjustsStack:    false193  hasCalls:        false194  stackProtector:  ''195  functionContext: ''196  maxCallFrameSize: 4294967295197  cvBytesOfCalleeSavedRegisters: 0198  hasOpaqueSPAdjustment: false199  hasVAStart:      false200  hasMustTailInVarArgFunc: false201  hasTailCall:     false202  localFrameSize:  0203  savePoint:       []204  restorePoint:    []205fixedStack:206  - { id: 0, type: default, offset: 0, size: 4, alignment: 16, stack-id: default,207      isImmutable: false, isAliased: false, callee-saved-register: '',208      callee-saved-restored: true, debug-info-variable: '', debug-info-expression: '',209      debug-info-location: '' }210stack:           []211entry_values:    []212callSites:       []213debugValueSubstitutions: []214constants:       []215machineFunctionInfo: {}216body:             |217  bb.0 (%ir-block.1):218    ; CHECK-LABEL: name: inout219    ; CHECK: [[MOV32rm:%[0-9]+]]:gr32 = MOV32rm %fixed-stack.0, 1, $noreg, 0, $noreg :: (load (s32) from %fixed-stack.0, align 16)220    ; CHECK-NEXT: MOV32mr %stack.0, 1, $noreg, 0, $noreg, [[MOV32rm]] :: (store (s32) into %stack.0)221    ; CHECK-NEXT: INLINEASM &"# $0 $1", 24 /* mayload maystore attdialect */, 262190 /* mem:m */, %stack.0, 1, $noreg, 0, $noreg, 262190 /* mem:m */, %stack.0, 1, $noreg, 0, $noreg, 12 /* clobber */, implicit-def dead early-clobber $ax, 12 /* clobber */, implicit-def dead early-clobber $cx, 12 /* clobber */, implicit-def dead early-clobber $dx, 12 /* clobber */, implicit-def dead early-clobber $si, 12 /* clobber */, implicit-def dead early-clobber $di, 12 /* clobber */, implicit-def dead early-clobber $bx, 12 /* clobber */, implicit-def dead early-clobber $bp :: (load store (s32) on %stack.0)222    ; CHECK-NEXT: [[MOV32rm1:%[0-9]+]]:gr32 = MOV32rm %stack.0, 1, $noreg, 0, $noreg :: (load (s32) from %stack.0)223    ; CHECK-NEXT: MOV32mr %fixed-stack.0, 1, $noreg, 0, $noreg, [[MOV32rm1]] :: (store (s32) into %ir.2, align 16)224    ; CHECK-NEXT: $eax = COPY [[MOV32rm1]]225    ; CHECK-NEXT: RET 0, $eax226    %1:gr32 = MOV32rm %fixed-stack.0, 1, $noreg, 0, $noreg :: (load (s32) from %fixed-stack.0, align 16)227    INLINEASM &"# $0 $1", 0 /* attdialect */, 1076101130 /* regdef:GR32 spillable */, def %0, 2147483657 /* reguse tiedto:$0 */, %1(tied-def 3), 12 /* clobber */, implicit-def early-clobber $ax, 12 /* clobber */, implicit-def early-clobber $cx, 12 /* clobber */, implicit-def early-clobber $dx, 12 /* clobber */, implicit-def early-clobber $si, 12 /* clobber */, implicit-def early-clobber $di, 12 /* clobber */, implicit-def early-clobber $bx, 12 /* clobber */, implicit-def early-clobber $bp228    MOV32mr %fixed-stack.0, 1, $noreg, 0, $noreg, %0 :: (store (s32) into %ir.2, align 16)229    $eax = COPY %0230    RET 0, $eax231 232...233