190 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 52# RUN: llc -mtriple=i686-linux-gnu -run-pass=regbankselect,instruction-select %s -o - | FileCheck %s --check-prefixes GISEL-I6863 4---5name: test_sincos_f326alignment: 167legalized: true8fixedStack:9 - { id: 0, type: default, offset: 0, size: 4, alignment: 16, stack-id: default,10 isImmutable: true, isAliased: false, callee-saved-register: '', callee-saved-restored: true,11 debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }12stack:13 - { id: 0, name: '', type: default, offset: 0, size: 4, alignment: 4,14 stack-id: default, callee-saved-register: '', callee-saved-restored: true,15 debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }16 - { id: 1, name: '', type: default, offset: 0, size: 4, alignment: 4,17 stack-id: default, callee-saved-register: '', callee-saved-restored: true,18 debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }19body: |20 bb.1:21 ; GISEL-I686-LABEL: name: test_sincos_f3222 ; GISEL-I686: [[MOV32rm:%[0-9]+]]:gr32 = MOV32rm %fixed-stack.0, 1, $noreg, 0, $noreg :: (invariant load (s32) from %fixed-stack.0, align 16)23 ; GISEL-I686-NEXT: [[LEA32r:%[0-9]+]]:gr32 = LEA32r %stack.0, 1, $noreg, 0, $noreg24 ; GISEL-I686-NEXT: [[LEA32r1:%[0-9]+]]:gr32 = LEA32r %stack.1, 1, $noreg, 0, $noreg25 ; GISEL-I686-NEXT: ADJCALLSTACKDOWN32 12, 0, 0, implicit-def $esp, implicit-def $eflags, implicit-def $ssp, implicit $esp, implicit $ssp26 ; GISEL-I686-NEXT: [[COPY:%[0-9]+]]:gr32 = COPY $esp27 ; GISEL-I686-NEXT: MOV32mr [[COPY]], 1, $noreg, 0, $noreg, [[MOV32rm]] :: (store (s32) into stack, align 1)28 ; GISEL-I686-NEXT: [[COPY1:%[0-9]+]]:gr32 = COPY $esp29 ; GISEL-I686-NEXT: MOV32mr [[COPY1]], 1, $noreg, 4, $noreg, [[LEA32r]] :: (store (s32) into stack + 4, align 1)30 ; GISEL-I686-NEXT: [[COPY2:%[0-9]+]]:gr32 = COPY $esp31 ; GISEL-I686-NEXT: MOV32mr [[COPY2]], 1, $noreg, 8, $noreg, [[LEA32r1]] :: (store (s32) into stack + 8, align 1)32 ; GISEL-I686-NEXT: CALLpcrel32 &sincosf, csr_32, implicit $esp, implicit $ssp33 ; GISEL-I686-NEXT: ADJCALLSTACKUP32 12, 0, implicit-def $esp, implicit-def $eflags, implicit-def $ssp, implicit $esp, implicit $ssp34 ; GISEL-I686-NEXT: [[LD_Fp32m:%[0-9]+]]:rfp32 = nofpexcept LD_Fp32m %stack.0, 1, $noreg, 0, $noreg, implicit-def dead $fpsw, implicit $fpcw :: (load (s32) from %stack.0)35 ; GISEL-I686-NEXT: [[LD_Fp32m1:%[0-9]+]]:rfp32 = nofpexcept LD_Fp32m %stack.1, 1, $noreg, 0, $noreg, implicit-def dead $fpsw, implicit $fpcw :: (load (s32) from %stack.1)36 ; GISEL-I686-NEXT: $fp0 = COPY [[LD_Fp32m]]37 ; GISEL-I686-NEXT: $fp1 = COPY [[LD_Fp32m1]]38 ; GISEL-I686-NEXT: RET 0, implicit $fp0, implicit $fp139 %1:_(p0) = G_FRAME_INDEX %fixed-stack.040 %0:_(s32) = G_LOAD %1(p0) :: (invariant load (s32) from %fixed-stack.0, align 16)41 %4:_(p0) = G_FRAME_INDEX %stack.042 %5:_(p0) = G_FRAME_INDEX %stack.143 ADJCALLSTACKDOWN32 12, 0, 0, implicit-def $esp, implicit-def $eflags, implicit-def $ssp, implicit $esp, implicit $ssp44 %6:_(p0) = COPY $esp45 %7:_(s32) = G_CONSTANT i32 046 %8:_(p0) = G_PTR_ADD %6, %7(s32)47 G_STORE %0(s32), %8(p0) :: (store (s32) into stack, align 1)48 %9:_(p0) = COPY $esp49 %10:_(s32) = G_CONSTANT i32 450 %11:_(p0) = G_PTR_ADD %9, %10(s32)51 G_STORE %4(p0), %11(p0) :: (store (s32) into stack + 4, align 1)52 %12:_(p0) = COPY $esp53 %13:_(s32) = G_CONSTANT i32 854 %14:_(p0) = G_PTR_ADD %12, %13(s32)55 G_STORE %5(p0), %14(p0) :: (store (s32) into stack + 8, align 1)56 CALLpcrel32 &sincosf, csr_32, implicit $esp, implicit $ssp57 ADJCALLSTACKUP32 12, 0, implicit-def $esp, implicit-def $eflags, implicit-def $ssp, implicit $esp, implicit $ssp58 %2:_(s32) = G_LOAD %4(p0) :: (load (s32) from %stack.0)59 %3:_(s32) = G_LOAD %5(p0) :: (load (s32) from %stack.1)60 $fp0 = COPY %2(s32)61 $fp1 = COPY %3(s32)62 RET 0, implicit $fp0, implicit $fp163...64---65name: test_sincos_f6466alignment: 1667legalized: true68fixedStack:69 - { id: 0, type: default, offset: 0, size: 8, alignment: 16, stack-id: default,70 isImmutable: true, isAliased: false, callee-saved-register: '', callee-saved-restored: true,71 debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }72stack:73 - { id: 0, name: '', type: default, offset: 0, size: 8, alignment: 8,74 stack-id: default, callee-saved-register: '', callee-saved-restored: true,75 debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }76 - { id: 1, name: '', type: default, offset: 0, size: 8, alignment: 8,77 stack-id: default, callee-saved-register: '', callee-saved-restored: true,78 debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }79body: |80 bb.1:81 ; GISEL-I686-LABEL: name: test_sincos_f6482 ; GISEL-I686: [[LEA32r:%[0-9]+]]:gr32 = LEA32r %fixed-stack.0, 1, $noreg, 0, $noreg83 ; GISEL-I686-NEXT: [[MOV32rm:%[0-9]+]]:gr32 = MOV32rm %fixed-stack.0, 1, $noreg, 0, $noreg :: (invariant load (s32) from %fixed-stack.0, align 16)84 ; GISEL-I686-NEXT: [[MOV32rm1:%[0-9]+]]:gr32 = MOV32rm [[LEA32r]], 1, $noreg, 4, $noreg :: (invariant load (s32) from %fixed-stack.0 + 4, basealign 16)85 ; GISEL-I686-NEXT: [[LEA32r1:%[0-9]+]]:gr32 = LEA32r %stack.0, 1, $noreg, 0, $noreg86 ; GISEL-I686-NEXT: [[LEA32r2:%[0-9]+]]:gr32 = LEA32r %stack.1, 1, $noreg, 0, $noreg87 ; GISEL-I686-NEXT: ADJCALLSTACKDOWN32 16, 0, 0, implicit-def $esp, implicit-def $eflags, implicit-def $ssp, implicit $esp, implicit $ssp88 ; GISEL-I686-NEXT: [[COPY:%[0-9]+]]:gr32 = COPY $esp89 ; GISEL-I686-NEXT: [[MOV32r0_:%[0-9]+]]:gr32_nosp = MOV32r0 implicit-def dead $eflags90 ; GISEL-I686-NEXT: [[LEA32r3:%[0-9]+]]:gr32 = LEA32r [[COPY]], 1, [[MOV32r0_]], 0, $noreg91 ; GISEL-I686-NEXT: MOV32mr [[COPY]], 1, $noreg, 0, $noreg, [[MOV32rm]] :: (store (s32) into stack, align 1)92 ; GISEL-I686-NEXT: MOV32mr [[LEA32r3]], 1, $noreg, 4, $noreg, [[MOV32rm1]] :: (store (s32) into stack + 4, align 1)93 ; GISEL-I686-NEXT: [[COPY1:%[0-9]+]]:gr32 = COPY $esp94 ; GISEL-I686-NEXT: MOV32mr [[COPY1]], 1, $noreg, 8, $noreg, [[LEA32r1]] :: (store (s32) into stack + 8, align 1)95 ; GISEL-I686-NEXT: [[COPY2:%[0-9]+]]:gr32 = COPY $esp96 ; GISEL-I686-NEXT: MOV32mr [[COPY2]], 1, $noreg, 12, $noreg, [[LEA32r2]] :: (store (s32) into stack + 12, align 1)97 ; GISEL-I686-NEXT: CALLpcrel32 &sincos, csr_32, implicit $esp, implicit $ssp98 ; GISEL-I686-NEXT: ADJCALLSTACKUP32 16, 0, implicit-def $esp, implicit-def $eflags, implicit-def $ssp, implicit $esp, implicit $ssp99 ; GISEL-I686-NEXT: $fp0 = IMPLICIT_DEF100 ; GISEL-I686-NEXT: $fp1 = IMPLICIT_DEF101 ; GISEL-I686-NEXT: RET 0, implicit $fp0, implicit $fp1102 %1:_(p0) = G_FRAME_INDEX %fixed-stack.0103 %25:_(s32) = G_LOAD %1(p0) :: (invariant load (s32) from %fixed-stack.0, align 16)104 %17:_(s32) = G_CONSTANT i32 4105 %26:_(p0) = G_PTR_ADD %1, %17(s32)106 %27:_(s32) = G_LOAD %26(p0) :: (invariant load (s32) from %fixed-stack.0 + 4, basealign 16)107 %4:_(p0) = G_FRAME_INDEX %stack.0108 %5:_(p0) = G_FRAME_INDEX %stack.1109 ADJCALLSTACKDOWN32 16, 0, 0, implicit-def $esp, implicit-def $eflags, implicit-def $ssp, implicit $esp, implicit $ssp110 %6:_(p0) = COPY $esp111 %7:_(s32) = G_CONSTANT i32 0112 %8:_(p0) = G_PTR_ADD %6, %7(s32)113 G_STORE %25(s32), %8(p0) :: (store (s32) into stack, align 1)114 %24:_(p0) = G_PTR_ADD %8, %17(s32)115 G_STORE %27(s32), %24(p0) :: (store (s32) into stack + 4, align 1)116 %9:_(p0) = COPY $esp117 %10:_(s32) = G_CONSTANT i32 8118 %11:_(p0) = G_PTR_ADD %9, %10(s32)119 G_STORE %4(p0), %11(p0) :: (store (s32) into stack + 8, align 1)120 %12:_(p0) = COPY $esp121 %13:_(s32) = G_CONSTANT i32 12122 %14:_(p0) = G_PTR_ADD %12, %13(s32)123 G_STORE %5(p0), %14(p0) :: (store (s32) into stack + 12, align 1)124 CALLpcrel32 &sincos, csr_32, implicit $esp, implicit $ssp125 ADJCALLSTACKUP32 16, 0, implicit-def $esp, implicit-def $eflags, implicit-def $ssp, implicit $esp, implicit $ssp126 $fp0 = IMPLICIT_DEF127 $fp1 = IMPLICIT_DEF128 RET 0, implicit $fp0, implicit $fp1129...130---131name: test_sincos_f80132alignment: 16133legalized: true134fixedStack:135 - { id: 0, type: default, offset: 0, size: 10, alignment: 16, stack-id: default,136 isImmutable: true, isAliased: false, callee-saved-register: '', callee-saved-restored: true,137 debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }138stack:139 - { id: 0, name: '', type: default, offset: 0, size: 10, alignment: 16,140 stack-id: default, callee-saved-register: '', callee-saved-restored: true,141 debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }142 - { id: 1, name: '', type: default, offset: 0, size: 10, alignment: 16,143 stack-id: default, callee-saved-register: '', callee-saved-restored: true,144 debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }145body: |146 bb.1:147 ; GISEL-I686-LABEL: name: test_sincos_f80148 ; GISEL-I686: [[LD_Fp80m:%[0-9]+]]:rfp80 = nofpexcept LD_Fp80m %fixed-stack.0, 1, $noreg, 0, $noreg, implicit-def dead $fpsw, implicit $fpcw :: (invariant load (s80) from %fixed-stack.0, align 16)149 ; GISEL-I686-NEXT: [[LEA32r:%[0-9]+]]:gr32 = LEA32r %stack.0, 1, $noreg, 0, $noreg150 ; GISEL-I686-NEXT: [[LEA32r1:%[0-9]+]]:gr32 = LEA32r %stack.1, 1, $noreg, 0, $noreg151 ; GISEL-I686-NEXT: ADJCALLSTACKDOWN32 20, 0, 0, implicit-def $esp, implicit-def $eflags, implicit-def $ssp, implicit $esp, implicit $ssp152 ; GISEL-I686-NEXT: [[COPY:%[0-9]+]]:gr32 = COPY $esp153 ; GISEL-I686-NEXT: nofpexcept ST_FpP80m [[COPY]], 1, $noreg, 0, $noreg, [[LD_Fp80m]], implicit-def dead $fpsw, implicit $fpcw :: (store (s80) into stack, align 1)154 ; GISEL-I686-NEXT: [[COPY1:%[0-9]+]]:gr32 = COPY $esp155 ; GISEL-I686-NEXT: MOV32mr [[COPY1]], 1, $noreg, 12, $noreg, [[LEA32r]] :: (store (s32) into stack + 12, align 1)156 ; GISEL-I686-NEXT: [[COPY2:%[0-9]+]]:gr32 = COPY $esp157 ; GISEL-I686-NEXT: MOV32mr [[COPY2]], 1, $noreg, 16, $noreg, [[LEA32r1]] :: (store (s32) into stack + 16, align 1)158 ; GISEL-I686-NEXT: CALLpcrel32 &sincosl, csr_32, implicit $esp, implicit $ssp159 ; GISEL-I686-NEXT: ADJCALLSTACKUP32 20, 0, implicit-def $esp, implicit-def $eflags, implicit-def $ssp, implicit $esp, implicit $ssp160 ; GISEL-I686-NEXT: [[LD_Fp80m1:%[0-9]+]]:rfp80 = nofpexcept LD_Fp80m %stack.0, 1, $noreg, 0, $noreg, implicit-def dead $fpsw, implicit $fpcw :: (load (s80) from %stack.0, align 16)161 ; GISEL-I686-NEXT: [[LD_Fp80m2:%[0-9]+]]:rfp80 = nofpexcept LD_Fp80m %stack.1, 1, $noreg, 0, $noreg, implicit-def dead $fpsw, implicit $fpcw :: (load (s80) from %stack.1, align 16)162 ; GISEL-I686-NEXT: $fp0 = COPY [[LD_Fp80m1]]163 ; GISEL-I686-NEXT: $fp1 = COPY [[LD_Fp80m2]]164 ; GISEL-I686-NEXT: RET 0, implicit $fp0, implicit $fp1165 %1:_(p0) = G_FRAME_INDEX %fixed-stack.0166 %0:_(s80) = G_LOAD %1(p0) :: (invariant load (s80) from %fixed-stack.0, align 16)167 %4:_(p0) = G_FRAME_INDEX %stack.0168 %5:_(p0) = G_FRAME_INDEX %stack.1169 ADJCALLSTACKDOWN32 20, 0, 0, implicit-def $esp, implicit-def $eflags, implicit-def $ssp, implicit $esp, implicit $ssp170 %6:_(p0) = COPY $esp171 %7:_(s32) = G_CONSTANT i32 0172 %8:_(p0) = G_PTR_ADD %6, %7(s32)173 G_STORE %0(s80), %8(p0) :: (store (s80) into stack, align 1)174 %9:_(p0) = COPY $esp175 %10:_(s32) = G_CONSTANT i32 12176 %11:_(p0) = G_PTR_ADD %9, %10(s32)177 G_STORE %4(p0), %11(p0) :: (store (s32) into stack + 12, align 1)178 %12:_(p0) = COPY $esp179 %13:_(s32) = G_CONSTANT i32 16180 %14:_(p0) = G_PTR_ADD %12, %13(s32)181 G_STORE %5(p0), %14(p0) :: (store (s32) into stack + 16, align 1)182 CALLpcrel32 &sincosl, csr_32, implicit $esp, implicit $ssp183 ADJCALLSTACKUP32 20, 0, implicit-def $esp, implicit-def $eflags, implicit-def $ssp, implicit $esp, implicit $ssp184 %2:_(s80) = G_LOAD %4(p0) :: (load (s80) from %stack.0, align 16)185 %3:_(s80) = G_LOAD %5(p0) :: (load (s80) from %stack.1, align 16)186 $fp0 = COPY %2(s80)187 $fp1 = COPY %3(s80)188 RET 0, implicit $fp0, implicit $fp1189...190