brintos

brintos / llvm-project-archived public Read only

0
0
Text · 13.5 KiB · 242bc75 Raw
259 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -verify-machineinstrs -mtriple aarch64--- \3# RUN: -run-pass=legalizer -mattr=+fullfp16 -global-isel %s -o - \4# RUN: | FileCheck %s5...6---7name:            test_v4f16.exp28alignment:       49tracksRegLiveness: true10body:             |11  bb.0:12    liveins: $d013    ; CHECK-LABEL: name: test_v4f16.exp214    ; CHECK: liveins: $d015    ; CHECK-NEXT: {{  $}}16    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x s16>) = COPY $d017    ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s16), [[UV1:%[0-9]+]]:_(s16), [[UV2:%[0-9]+]]:_(s16), [[UV3:%[0-9]+]]:_(s16) = G_UNMERGE_VALUES [[COPY]](<4 x s16>)18    ; CHECK-NEXT: [[FPEXT:%[0-9]+]]:_(s32) = G_FPEXT [[UV]](s16)19    ; CHECK-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def $sp, implicit $sp20    ; CHECK-NEXT: $s0 = COPY [[FPEXT]](s32)21    ; CHECK-NEXT: BL &exp2f, csr_aarch64_aapcs, implicit-def $lr, implicit $sp, implicit $s0, implicit-def $s022    ; CHECK-NEXT: ADJCALLSTACKUP 0, 0, implicit-def $sp, implicit $sp23    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $s024    ; CHECK-NEXT: [[FPTRUNC:%[0-9]+]]:_(s16) = G_FPTRUNC [[COPY1]](s32)25    ; CHECK-NEXT: [[FPEXT1:%[0-9]+]]:_(s32) = G_FPEXT [[UV1]](s16)26    ; CHECK-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def $sp, implicit $sp27    ; CHECK-NEXT: $s0 = COPY [[FPEXT1]](s32)28    ; CHECK-NEXT: BL &exp2f, csr_aarch64_aapcs, implicit-def $lr, implicit $sp, implicit $s0, implicit-def $s029    ; CHECK-NEXT: ADJCALLSTACKUP 0, 0, implicit-def $sp, implicit $sp30    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $s031    ; CHECK-NEXT: [[FPTRUNC1:%[0-9]+]]:_(s16) = G_FPTRUNC [[COPY2]](s32)32    ; CHECK-NEXT: [[FPEXT2:%[0-9]+]]:_(s32) = G_FPEXT [[UV2]](s16)33    ; CHECK-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def $sp, implicit $sp34    ; CHECK-NEXT: $s0 = COPY [[FPEXT2]](s32)35    ; CHECK-NEXT: BL &exp2f, csr_aarch64_aapcs, implicit-def $lr, implicit $sp, implicit $s0, implicit-def $s036    ; CHECK-NEXT: ADJCALLSTACKUP 0, 0, implicit-def $sp, implicit $sp37    ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $s038    ; CHECK-NEXT: [[FPTRUNC2:%[0-9]+]]:_(s16) = G_FPTRUNC [[COPY3]](s32)39    ; CHECK-NEXT: [[FPEXT3:%[0-9]+]]:_(s32) = G_FPEXT [[UV3]](s16)40    ; CHECK-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def $sp, implicit $sp41    ; CHECK-NEXT: $s0 = COPY [[FPEXT3]](s32)42    ; CHECK-NEXT: BL &exp2f, csr_aarch64_aapcs, implicit-def $lr, implicit $sp, implicit $s0, implicit-def $s043    ; CHECK-NEXT: ADJCALLSTACKUP 0, 0, implicit-def $sp, implicit $sp44    ; CHECK-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $s045    ; CHECK-NEXT: [[FPTRUNC3:%[0-9]+]]:_(s16) = G_FPTRUNC [[COPY4]](s32)46    ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<4 x s16>) = G_BUILD_VECTOR [[FPTRUNC]](s16), [[FPTRUNC1]](s16), [[FPTRUNC2]](s16), [[FPTRUNC3]](s16)47    ; CHECK-NEXT: $d0 = COPY [[BUILD_VECTOR]](<4 x s16>)48    ; CHECK-NEXT: RET_ReallyLR implicit $d049    %0:_(<4 x s16>) = COPY $d050    %1:_(<4 x s16>) = G_FEXP2 %051    $d0 = COPY %1(<4 x s16>)52    RET_ReallyLR implicit $d053 54...55---56name:            test_v8f16.exp257alignment:       458tracksRegLiveness: true59body:             |60  bb.0:61    liveins: $q062    ; CHECK-LABEL: name: test_v8f16.exp263    ; CHECK: liveins: $q064    ; CHECK-NEXT: {{  $}}65    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<8 x s16>) = COPY $q066    ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s16), [[UV1:%[0-9]+]]:_(s16), [[UV2:%[0-9]+]]:_(s16), [[UV3:%[0-9]+]]:_(s16), [[UV4:%[0-9]+]]:_(s16), [[UV5:%[0-9]+]]:_(s16), [[UV6:%[0-9]+]]:_(s16), [[UV7:%[0-9]+]]:_(s16) = G_UNMERGE_VALUES [[COPY]](<8 x s16>)67    ; CHECK-NEXT: [[FPEXT:%[0-9]+]]:_(s32) = G_FPEXT [[UV]](s16)68    ; CHECK-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def $sp, implicit $sp69    ; CHECK-NEXT: $s0 = COPY [[FPEXT]](s32)70    ; CHECK-NEXT: BL &exp2f, csr_aarch64_aapcs, implicit-def $lr, implicit $sp, implicit $s0, implicit-def $s071    ; CHECK-NEXT: ADJCALLSTACKUP 0, 0, implicit-def $sp, implicit $sp72    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $s073    ; CHECK-NEXT: [[FPTRUNC:%[0-9]+]]:_(s16) = G_FPTRUNC [[COPY1]](s32)74    ; CHECK-NEXT: [[FPEXT1:%[0-9]+]]:_(s32) = G_FPEXT [[UV1]](s16)75    ; CHECK-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def $sp, implicit $sp76    ; CHECK-NEXT: $s0 = COPY [[FPEXT1]](s32)77    ; CHECK-NEXT: BL &exp2f, csr_aarch64_aapcs, implicit-def $lr, implicit $sp, implicit $s0, implicit-def $s078    ; CHECK-NEXT: ADJCALLSTACKUP 0, 0, implicit-def $sp, implicit $sp79    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $s080    ; CHECK-NEXT: [[FPTRUNC1:%[0-9]+]]:_(s16) = G_FPTRUNC [[COPY2]](s32)81    ; CHECK-NEXT: [[FPEXT2:%[0-9]+]]:_(s32) = G_FPEXT [[UV2]](s16)82    ; CHECK-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def $sp, implicit $sp83    ; CHECK-NEXT: $s0 = COPY [[FPEXT2]](s32)84    ; CHECK-NEXT: BL &exp2f, csr_aarch64_aapcs, implicit-def $lr, implicit $sp, implicit $s0, implicit-def $s085    ; CHECK-NEXT: ADJCALLSTACKUP 0, 0, implicit-def $sp, implicit $sp86    ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $s087    ; CHECK-NEXT: [[FPTRUNC2:%[0-9]+]]:_(s16) = G_FPTRUNC [[COPY3]](s32)88    ; CHECK-NEXT: [[FPEXT3:%[0-9]+]]:_(s32) = G_FPEXT [[UV3]](s16)89    ; CHECK-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def $sp, implicit $sp90    ; CHECK-NEXT: $s0 = COPY [[FPEXT3]](s32)91    ; CHECK-NEXT: BL &exp2f, csr_aarch64_aapcs, implicit-def $lr, implicit $sp, implicit $s0, implicit-def $s092    ; CHECK-NEXT: ADJCALLSTACKUP 0, 0, implicit-def $sp, implicit $sp93    ; CHECK-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $s094    ; CHECK-NEXT: [[FPTRUNC3:%[0-9]+]]:_(s16) = G_FPTRUNC [[COPY4]](s32)95    ; CHECK-NEXT: [[FPEXT4:%[0-9]+]]:_(s32) = G_FPEXT [[UV4]](s16)96    ; CHECK-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def $sp, implicit $sp97    ; CHECK-NEXT: $s0 = COPY [[FPEXT4]](s32)98    ; CHECK-NEXT: BL &exp2f, csr_aarch64_aapcs, implicit-def $lr, implicit $sp, implicit $s0, implicit-def $s099    ; CHECK-NEXT: ADJCALLSTACKUP 0, 0, implicit-def $sp, implicit $sp100    ; CHECK-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $s0101    ; CHECK-NEXT: [[FPTRUNC4:%[0-9]+]]:_(s16) = G_FPTRUNC [[COPY5]](s32)102    ; CHECK-NEXT: [[FPEXT5:%[0-9]+]]:_(s32) = G_FPEXT [[UV5]](s16)103    ; CHECK-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def $sp, implicit $sp104    ; CHECK-NEXT: $s0 = COPY [[FPEXT5]](s32)105    ; CHECK-NEXT: BL &exp2f, csr_aarch64_aapcs, implicit-def $lr, implicit $sp, implicit $s0, implicit-def $s0106    ; CHECK-NEXT: ADJCALLSTACKUP 0, 0, implicit-def $sp, implicit $sp107    ; CHECK-NEXT: [[COPY6:%[0-9]+]]:_(s32) = COPY $s0108    ; CHECK-NEXT: [[FPTRUNC5:%[0-9]+]]:_(s16) = G_FPTRUNC [[COPY6]](s32)109    ; CHECK-NEXT: [[FPEXT6:%[0-9]+]]:_(s32) = G_FPEXT [[UV6]](s16)110    ; CHECK-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def $sp, implicit $sp111    ; CHECK-NEXT: $s0 = COPY [[FPEXT6]](s32)112    ; CHECK-NEXT: BL &exp2f, csr_aarch64_aapcs, implicit-def $lr, implicit $sp, implicit $s0, implicit-def $s0113    ; CHECK-NEXT: ADJCALLSTACKUP 0, 0, implicit-def $sp, implicit $sp114    ; CHECK-NEXT: [[COPY7:%[0-9]+]]:_(s32) = COPY $s0115    ; CHECK-NEXT: [[FPTRUNC6:%[0-9]+]]:_(s16) = G_FPTRUNC [[COPY7]](s32)116    ; CHECK-NEXT: [[FPEXT7:%[0-9]+]]:_(s32) = G_FPEXT [[UV7]](s16)117    ; CHECK-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def $sp, implicit $sp118    ; CHECK-NEXT: $s0 = COPY [[FPEXT7]](s32)119    ; CHECK-NEXT: BL &exp2f, csr_aarch64_aapcs, implicit-def $lr, implicit $sp, implicit $s0, implicit-def $s0120    ; CHECK-NEXT: ADJCALLSTACKUP 0, 0, implicit-def $sp, implicit $sp121    ; CHECK-NEXT: [[COPY8:%[0-9]+]]:_(s32) = COPY $s0122    ; CHECK-NEXT: [[FPTRUNC7:%[0-9]+]]:_(s16) = G_FPTRUNC [[COPY8]](s32)123    ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<8 x s16>) = G_BUILD_VECTOR [[FPTRUNC]](s16), [[FPTRUNC1]](s16), [[FPTRUNC2]](s16), [[FPTRUNC3]](s16), [[FPTRUNC4]](s16), [[FPTRUNC5]](s16), [[FPTRUNC6]](s16), [[FPTRUNC7]](s16)124    ; CHECK-NEXT: $q0 = COPY [[BUILD_VECTOR]](<8 x s16>)125    ; CHECK-NEXT: RET_ReallyLR implicit $q0126    %0:_(<8 x s16>) = COPY $q0127    %1:_(<8 x s16>) = G_FEXP2 %0128    $q0 = COPY %1(<8 x s16>)129    RET_ReallyLR implicit $q0130 131...132---133name:            test_v2f32.exp2134alignment:       4135tracksRegLiveness: true136body:             |137  bb.0:138    liveins: $d0139    ; CHECK-LABEL: name: test_v2f32.exp2140    ; CHECK: liveins: $d0141    ; CHECK-NEXT: {{  $}}142    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<2 x s32>) = COPY $d0143    ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<2 x s32>)144    ; CHECK-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def $sp, implicit $sp145    ; CHECK-NEXT: $s0 = COPY [[UV]](s32)146    ; CHECK-NEXT: BL &exp2f, csr_aarch64_aapcs, implicit-def $lr, implicit $sp, implicit $s0, implicit-def $s0147    ; CHECK-NEXT: ADJCALLSTACKUP 0, 0, implicit-def $sp, implicit $sp148    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $s0149    ; CHECK-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def $sp, implicit $sp150    ; CHECK-NEXT: $s0 = COPY [[UV1]](s32)151    ; CHECK-NEXT: BL &exp2f, csr_aarch64_aapcs, implicit-def $lr, implicit $sp, implicit $s0, implicit-def $s0152    ; CHECK-NEXT: ADJCALLSTACKUP 0, 0, implicit-def $sp, implicit $sp153    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $s0154    ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[COPY1]](s32), [[COPY2]](s32)155    ; CHECK-NEXT: $d0 = COPY [[BUILD_VECTOR]](<2 x s32>)156    ; CHECK-NEXT: RET_ReallyLR implicit $d0157    %0:_(<2 x s32>) = COPY $d0158    %1:_(<2 x s32>) = G_FEXP2 %0159    $d0 = COPY %1(<2 x s32>)160    RET_ReallyLR implicit $d0161 162...163---164name:            test_v4f32.exp2165alignment:       4166tracksRegLiveness: true167body:             |168  bb.0:169    liveins: $q0170    ; CHECK-LABEL: name: test_v4f32.exp2171    ; CHECK: liveins: $q0172    ; CHECK-NEXT: {{  $}}173    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $q0174    ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<4 x s32>)175    ; CHECK-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def $sp, implicit $sp176    ; CHECK-NEXT: $s0 = COPY [[UV]](s32)177    ; CHECK-NEXT: BL &exp2f, csr_aarch64_aapcs, implicit-def $lr, implicit $sp, implicit $s0, implicit-def $s0178    ; CHECK-NEXT: ADJCALLSTACKUP 0, 0, implicit-def $sp, implicit $sp179    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $s0180    ; CHECK-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def $sp, implicit $sp181    ; CHECK-NEXT: $s0 = COPY [[UV1]](s32)182    ; CHECK-NEXT: BL &exp2f, csr_aarch64_aapcs, implicit-def $lr, implicit $sp, implicit $s0, implicit-def $s0183    ; CHECK-NEXT: ADJCALLSTACKUP 0, 0, implicit-def $sp, implicit $sp184    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $s0185    ; CHECK-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def $sp, implicit $sp186    ; CHECK-NEXT: $s0 = COPY [[UV2]](s32)187    ; CHECK-NEXT: BL &exp2f, csr_aarch64_aapcs, implicit-def $lr, implicit $sp, implicit $s0, implicit-def $s0188    ; CHECK-NEXT: ADJCALLSTACKUP 0, 0, implicit-def $sp, implicit $sp189    ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $s0190    ; CHECK-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def $sp, implicit $sp191    ; CHECK-NEXT: $s0 = COPY [[UV3]](s32)192    ; CHECK-NEXT: BL &exp2f, csr_aarch64_aapcs, implicit-def $lr, implicit $sp, implicit $s0, implicit-def $s0193    ; CHECK-NEXT: ADJCALLSTACKUP 0, 0, implicit-def $sp, implicit $sp194    ; CHECK-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $s0195    ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32)196    ; CHECK-NEXT: $q0 = COPY [[BUILD_VECTOR]](<4 x s32>)197    ; CHECK-NEXT: RET_ReallyLR implicit $q0198    %0:_(<4 x s32>) = COPY $q0199    %1:_(<4 x s32>) = G_FEXP2 %0200    $q0 = COPY %1(<4 x s32>)201    RET_ReallyLR implicit $q0202 203...204---205name:            test_v2f64.exp2206alignment:       4207tracksRegLiveness: true208body:             |209  bb.0:210    liveins: $q0211    ; CHECK-LABEL: name: test_v2f64.exp2212    ; CHECK: liveins: $q0213    ; CHECK-NEXT: {{  $}}214    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<2 x s64>) = COPY $q0215    ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s64), [[UV1:%[0-9]+]]:_(s64) = G_UNMERGE_VALUES [[COPY]](<2 x s64>)216    ; CHECK-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def $sp, implicit $sp217    ; CHECK-NEXT: $d0 = COPY [[UV]](s64)218    ; CHECK-NEXT: BL &exp2, csr_aarch64_aapcs, implicit-def $lr, implicit $sp, implicit $d0, implicit-def $d0219    ; CHECK-NEXT: ADJCALLSTACKUP 0, 0, implicit-def $sp, implicit $sp220    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $d0221    ; CHECK-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def $sp, implicit $sp222    ; CHECK-NEXT: $d0 = COPY [[UV1]](s64)223    ; CHECK-NEXT: BL &exp2, csr_aarch64_aapcs, implicit-def $lr, implicit $sp, implicit $d0, implicit-def $d0224    ; CHECK-NEXT: ADJCALLSTACKUP 0, 0, implicit-def $sp, implicit $sp225    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s64) = COPY $d0226    ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s64>) = G_BUILD_VECTOR [[COPY1]](s64), [[COPY2]](s64)227    ; CHECK-NEXT: $q0 = COPY [[BUILD_VECTOR]](<2 x s64>)228    ; CHECK-NEXT: RET_ReallyLR implicit $q0229    %0:_(<2 x s64>) = COPY $q0230    %1:_(<2 x s64>) = G_FEXP2 %0231    $q0 = COPY %1(<2 x s64>)232    RET_ReallyLR implicit $q0233 234...235---236name:            test_exp2_half237alignment:       4238tracksRegLiveness: true239body:             |240  bb.0:241    liveins: $h0242    ; CHECK-LABEL: name: test_exp2_half243    ; CHECK: liveins: $h0244    ; CHECK-NEXT: {{  $}}245    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s16) = COPY $h0246    ; CHECK-NEXT: [[FPEXT:%[0-9]+]]:_(s32) = G_FPEXT [[COPY]](s16)247    ; CHECK-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def $sp, implicit $sp248    ; CHECK-NEXT: $s0 = COPY [[FPEXT]](s32)249    ; CHECK-NEXT: BL &exp2f, csr_aarch64_aapcs, implicit-def $lr, implicit $sp, implicit $s0, implicit-def $s0250    ; CHECK-NEXT: ADJCALLSTACKUP 0, 0, implicit-def $sp, implicit $sp251    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $s0252    ; CHECK-NEXT: [[FPTRUNC:%[0-9]+]]:_(s16) = G_FPTRUNC [[COPY1]](s32)253    ; CHECK-NEXT: $h0 = COPY [[FPTRUNC]](s16)254    ; CHECK-NEXT: RET_ReallyLR implicit $h0255    %0:_(s16) = COPY $h0256    %1:_(s16) = G_FEXP2 %0257    $h0 = COPY %1(s16)258    RET_ReallyLR implicit $h0259