brintos

brintos / llvm-project-archived public Read only

0
0
Text · 19.4 KiB · 521a0e8 Raw
370 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=hawaii -run-pass=instruction-select -verify-machineinstrs -o - %s | FileCheck %s -check-prefix=GCN3# RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=fiji -run-pass=instruction-select -verify-machineinstrs -o - %s | FileCheck %s -check-prefix=VI4# RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1100 -mattr=+real-true16 -run-pass=instruction-select -verify-machineinstrs -o - %s | FileCheck %s -check-prefixes=GFX11,GFX11-TRUE165# RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1100 -mattr=-real-true16 -run-pass=instruction-select -verify-machineinstrs -o - %s | FileCheck %s -check-prefixes=GFX11,GFX11-FAKE166 7---8 9name:            fptoui10legalized:       true11regBankSelected: true12 13body: |14  bb.0:15    liveins: $sgpr0, $vgpr0, $vgpr3_vgpr416 17    ; GCN-LABEL: name: fptoui18    ; GCN: liveins: $sgpr0, $vgpr0, $vgpr3_vgpr419    ; GCN-NEXT: {{  $}}20    ; GCN-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr021    ; GCN-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr022    ; GCN-NEXT: [[COPY2:%[0-9]+]]:vreg_64 = COPY $vgpr3_vgpr423    ; GCN-NEXT: [[V_CVT_U32_F32_e64_:%[0-9]+]]:vgpr_32 = nofpexcept V_CVT_U32_F32_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec24    ; GCN-NEXT: [[V_CVT_U32_F32_e64_1:%[0-9]+]]:vgpr_32 = nofpexcept V_CVT_U32_F32_e64 0, [[COPY1]], 0, 0, implicit $mode, implicit $exec25    ; GCN-NEXT: FLAT_STORE_DWORD [[COPY2]], [[V_CVT_U32_F32_e64_]], 0, 0, implicit $exec, implicit $flat_scr :: (store (s32), addrspace 1)26    ; GCN-NEXT: FLAT_STORE_DWORD [[COPY2]], [[V_CVT_U32_F32_e64_1]], 0, 0, implicit $exec, implicit $flat_scr :: (store (s32), addrspace 1)27    ;28    ; VI-LABEL: name: fptoui29    ; VI: liveins: $sgpr0, $vgpr0, $vgpr3_vgpr430    ; VI-NEXT: {{  $}}31    ; VI-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr032    ; VI-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr033    ; VI-NEXT: [[COPY2:%[0-9]+]]:vreg_64 = COPY $vgpr3_vgpr434    ; VI-NEXT: [[V_CVT_U32_F32_e64_:%[0-9]+]]:vgpr_32 = nofpexcept V_CVT_U32_F32_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec35    ; VI-NEXT: [[V_CVT_U32_F32_e64_1:%[0-9]+]]:vgpr_32 = nofpexcept V_CVT_U32_F32_e64 0, [[COPY1]], 0, 0, implicit $mode, implicit $exec36    ; VI-NEXT: FLAT_STORE_DWORD [[COPY2]], [[V_CVT_U32_F32_e64_]], 0, 0, implicit $exec, implicit $flat_scr :: (store (s32), addrspace 1)37    ; VI-NEXT: FLAT_STORE_DWORD [[COPY2]], [[V_CVT_U32_F32_e64_1]], 0, 0, implicit $exec, implicit $flat_scr :: (store (s32), addrspace 1)38    ;39    ; GFX11-LABEL: name: fptoui40    ; GFX11: liveins: $sgpr0, $vgpr0, $vgpr3_vgpr441    ; GFX11-NEXT: {{  $}}42    ; GFX11-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr043    ; GFX11-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr044    ; GFX11-NEXT: [[COPY2:%[0-9]+]]:vreg_64 = COPY $vgpr3_vgpr445    ; GFX11-NEXT: [[V_CVT_U32_F32_e64_:%[0-9]+]]:vgpr_32 = nofpexcept V_CVT_U32_F32_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec46    ; GFX11-NEXT: [[V_CVT_U32_F32_e64_1:%[0-9]+]]:vgpr_32 = nofpexcept V_CVT_U32_F32_e64 0, [[COPY1]], 0, 0, implicit $mode, implicit $exec47    ; GFX11-NEXT: GLOBAL_STORE_DWORD [[COPY2]], [[V_CVT_U32_F32_e64_]], 0, 0, implicit $exec :: (store (s32), addrspace 1)48    ; GFX11-NEXT: GLOBAL_STORE_DWORD [[COPY2]], [[V_CVT_U32_F32_e64_1]], 0, 0, implicit $exec :: (store (s32), addrspace 1)49    %0:sgpr(s32) = COPY $sgpr050 51    %1:vgpr(s32) = COPY $vgpr052 53    %2:vgpr(p1) = COPY $vgpr3_vgpr454 55    %3:vgpr(s32) = G_FPTOUI %056 57    %4:vgpr(s32) = G_FPTOUI %158 59    G_STORE %3, %2 :: (store (s32), addrspace 1)60    G_STORE %4, %2 :: (store (s32), addrspace 1)61...62 63---64name: fptoui_s16_to_s32_vv65legalized: true66regBankSelected: true67tracksRegLiveness: true68 69body: |70  bb.0:71    liveins: $vgpr072 73    ; GCN-LABEL: name: fptoui_s16_to_s32_vv74    ; GCN: liveins: $vgpr075    ; GCN-NEXT: {{  $}}76    ; GCN-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr077    ; GCN-NEXT: [[V_CVT_F32_F16_e64_:%[0-9]+]]:vgpr_32 = nofpexcept V_CVT_F32_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec78    ; GCN-NEXT: [[V_CVT_U32_F32_e32_:%[0-9]+]]:vgpr_32 = nofpexcept V_CVT_U32_F32_e32 [[V_CVT_F32_F16_e64_]], implicit $mode, implicit $exec79    ; GCN-NEXT: $vgpr0 = COPY [[V_CVT_U32_F32_e32_]]80    ;81    ; VI-LABEL: name: fptoui_s16_to_s32_vv82    ; VI: liveins: $vgpr083    ; VI-NEXT: {{  $}}84    ; VI-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr085    ; VI-NEXT: [[V_CVT_F32_F16_e64_:%[0-9]+]]:vgpr_32 = nofpexcept V_CVT_F32_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec86    ; VI-NEXT: [[V_CVT_U32_F32_e32_:%[0-9]+]]:vgpr_32 = nofpexcept V_CVT_U32_F32_e32 [[V_CVT_F32_F16_e64_]], implicit $mode, implicit $exec87    ; VI-NEXT: $vgpr0 = COPY [[V_CVT_U32_F32_e32_]]88    ;89    ; GFX11-TRUE16-LABEL: name: fptoui_s16_to_s32_vv90    ; GFX11-TRUE16: liveins: $vgpr091    ; GFX11-TRUE16-NEXT: {{  $}}92    ; GFX11-TRUE16-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr093    ; GFX11-TRUE16-NEXT: [[COPY1:%[0-9]+]]:vgpr_16 = COPY [[COPY]].lo1694    ; GFX11-TRUE16-NEXT: [[V_CVT_F32_F16_t16_e64_:%[0-9]+]]:vgpr_32 = nofpexcept V_CVT_F32_F16_t16_e64 0, [[COPY1]], 0, 0, 0, implicit $mode, implicit $exec95    ; GFX11-TRUE16-NEXT: [[V_CVT_U32_F32_e32_:%[0-9]+]]:vgpr_32 = nofpexcept V_CVT_U32_F32_e32 [[V_CVT_F32_F16_t16_e64_]], implicit $mode, implicit $exec96    ; GFX11-TRUE16-NEXT: $vgpr0 = COPY [[V_CVT_U32_F32_e32_]]97    ;98    ; GFX11-FAKE16-LABEL: name: fptoui_s16_to_s32_vv99    ; GFX11-FAKE16: liveins: $vgpr0100    ; GFX11-FAKE16-NEXT: {{  $}}101    ; GFX11-FAKE16-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0102    ; GFX11-FAKE16-NEXT: [[V_CVT_F32_F16_fake16_e64_:%[0-9]+]]:vgpr_32 = nofpexcept V_CVT_F32_F16_fake16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec103    ; GFX11-FAKE16-NEXT: [[V_CVT_U32_F32_e32_:%[0-9]+]]:vgpr_32 = nofpexcept V_CVT_U32_F32_e32 [[V_CVT_F32_F16_fake16_e64_]], implicit $mode, implicit $exec104    ; GFX11-FAKE16-NEXT: $vgpr0 = COPY [[V_CVT_U32_F32_e32_]]105    %0:vgpr(s32) = COPY $vgpr0106    %1:vgpr(s16) = G_TRUNC %0107    %2:vgpr(s32) = G_FPTOUI %1108    $vgpr0 = COPY %2109...110 111---112name: fptoui_s16_to_s32_vs113legalized: true114regBankSelected: true115tracksRegLiveness: true116 117body: |118  bb.0:119    liveins: $sgpr0120 121    ; GCN-LABEL: name: fptoui_s16_to_s32_vs122    ; GCN: liveins: $sgpr0123    ; GCN-NEXT: {{  $}}124    ; GCN-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0125    ; GCN-NEXT: [[V_CVT_F32_F16_e64_:%[0-9]+]]:vgpr_32 = nofpexcept V_CVT_F32_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec126    ; GCN-NEXT: [[V_CVT_U32_F32_e32_:%[0-9]+]]:vgpr_32 = nofpexcept V_CVT_U32_F32_e32 [[V_CVT_F32_F16_e64_]], implicit $mode, implicit $exec127    ; GCN-NEXT: $vgpr0 = COPY [[V_CVT_U32_F32_e32_]]128    ;129    ; VI-LABEL: name: fptoui_s16_to_s32_vs130    ; VI: liveins: $sgpr0131    ; VI-NEXT: {{  $}}132    ; VI-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0133    ; VI-NEXT: [[V_CVT_F32_F16_e64_:%[0-9]+]]:vgpr_32 = nofpexcept V_CVT_F32_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec134    ; VI-NEXT: [[V_CVT_U32_F32_e32_:%[0-9]+]]:vgpr_32 = nofpexcept V_CVT_U32_F32_e32 [[V_CVT_F32_F16_e64_]], implicit $mode, implicit $exec135    ; VI-NEXT: $vgpr0 = COPY [[V_CVT_U32_F32_e32_]]136    ;137    ; GFX11-TRUE16-LABEL: name: fptoui_s16_to_s32_vs138    ; GFX11-TRUE16: liveins: $sgpr0139    ; GFX11-TRUE16-NEXT: {{  $}}140    ; GFX11-TRUE16-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0141    ; GFX11-TRUE16-NEXT: [[V_CVT_F32_F16_t16_e64_:%[0-9]+]]:vgpr_32 = nofpexcept V_CVT_F32_F16_t16_e64 0, [[COPY]], 0, 0, 0, implicit $mode, implicit $exec142    ; GFX11-TRUE16-NEXT: [[V_CVT_U32_F32_e32_:%[0-9]+]]:vgpr_32 = nofpexcept V_CVT_U32_F32_e32 [[V_CVT_F32_F16_t16_e64_]], implicit $mode, implicit $exec143    ; GFX11-TRUE16-NEXT: $vgpr0 = COPY [[V_CVT_U32_F32_e32_]]144    ;145    ; GFX11-FAKE16-LABEL: name: fptoui_s16_to_s32_vs146    ; GFX11-FAKE16: liveins: $sgpr0147    ; GFX11-FAKE16-NEXT: {{  $}}148    ; GFX11-FAKE16-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0149    ; GFX11-FAKE16-NEXT: [[V_CVT_F32_F16_fake16_e64_:%[0-9]+]]:vgpr_32 = nofpexcept V_CVT_F32_F16_fake16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec150    ; GFX11-FAKE16-NEXT: [[V_CVT_U32_F32_e32_:%[0-9]+]]:vgpr_32 = nofpexcept V_CVT_U32_F32_e32 [[V_CVT_F32_F16_fake16_e64_]], implicit $mode, implicit $exec151    ; GFX11-FAKE16-NEXT: $vgpr0 = COPY [[V_CVT_U32_F32_e32_]]152    %0:sgpr(s32) = COPY $sgpr0153    %1:sgpr(s16) = G_TRUNC %0154    %2:vgpr(s32) = G_FPTOUI %1155    $vgpr0 = COPY %2156...157 158---159name: fptoui_s16_to_s32_fneg_vv160legalized: true161regBankSelected: true162tracksRegLiveness: true163 164body: |165  bb.0:166    liveins: $vgpr0167 168    ; GCN-LABEL: name: fptoui_s16_to_s32_fneg_vv169    ; GCN: liveins: $vgpr0170    ; GCN-NEXT: {{  $}}171    ; GCN-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0172    ; GCN-NEXT: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 32768173    ; GCN-NEXT: [[V_XOR_B32_e64_:%[0-9]+]]:vgpr_32 = V_XOR_B32_e64 [[S_MOV_B32_]], [[COPY]], implicit $exec174    ; GCN-NEXT: [[V_CVT_F32_F16_e64_:%[0-9]+]]:vgpr_32 = nofpexcept V_CVT_F32_F16_e64 0, [[V_XOR_B32_e64_]], 0, 0, implicit $mode, implicit $exec175    ; GCN-NEXT: [[V_CVT_U32_F32_e32_:%[0-9]+]]:vgpr_32 = nofpexcept V_CVT_U32_F32_e32 [[V_CVT_F32_F16_e64_]], implicit $mode, implicit $exec176    ; GCN-NEXT: $vgpr0 = COPY [[V_CVT_U32_F32_e32_]]177    ;178    ; VI-LABEL: name: fptoui_s16_to_s32_fneg_vv179    ; VI: liveins: $vgpr0180    ; VI-NEXT: {{  $}}181    ; VI-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0182    ; VI-NEXT: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 32768183    ; VI-NEXT: [[V_XOR_B32_e64_:%[0-9]+]]:vgpr_32 = V_XOR_B32_e64 [[S_MOV_B32_]], [[COPY]], implicit $exec184    ; VI-NEXT: [[V_CVT_F32_F16_e64_:%[0-9]+]]:vgpr_32 = nofpexcept V_CVT_F32_F16_e64 0, [[V_XOR_B32_e64_]], 0, 0, implicit $mode, implicit $exec185    ; VI-NEXT: [[V_CVT_U32_F32_e32_:%[0-9]+]]:vgpr_32 = nofpexcept V_CVT_U32_F32_e32 [[V_CVT_F32_F16_e64_]], implicit $mode, implicit $exec186    ; VI-NEXT: $vgpr0 = COPY [[V_CVT_U32_F32_e32_]]187    ;188    ; GFX11-TRUE16-LABEL: name: fptoui_s16_to_s32_fneg_vv189    ; GFX11-TRUE16: liveins: $vgpr0190    ; GFX11-TRUE16-NEXT: {{  $}}191    ; GFX11-TRUE16-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0192    ; GFX11-TRUE16-NEXT: [[COPY1:%[0-9]+]]:vgpr_16 = COPY [[COPY]].lo16193    ; GFX11-TRUE16-NEXT: [[V_XOR_B16_t16_e64_:%[0-9]+]]:vgpr_16 = V_XOR_B16_t16_e64 0, 32768, 0, [[COPY1]], 0, implicit $exec194    ; GFX11-TRUE16-NEXT: [[V_CVT_F32_F16_t16_e64_:%[0-9]+]]:vgpr_32 = nofpexcept V_CVT_F32_F16_t16_e64 0, [[V_XOR_B16_t16_e64_]], 0, 0, 0, implicit $mode, implicit $exec195    ; GFX11-TRUE16-NEXT: [[V_CVT_U32_F32_e32_:%[0-9]+]]:vgpr_32 = nofpexcept V_CVT_U32_F32_e32 [[V_CVT_F32_F16_t16_e64_]], implicit $mode, implicit $exec196    ; GFX11-TRUE16-NEXT: $vgpr0 = COPY [[V_CVT_U32_F32_e32_]]197    ;198    ; GFX11-FAKE16-LABEL: name: fptoui_s16_to_s32_fneg_vv199    ; GFX11-FAKE16: liveins: $vgpr0200    ; GFX11-FAKE16-NEXT: {{  $}}201    ; GFX11-FAKE16-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0202    ; GFX11-FAKE16-NEXT: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 32768203    ; GFX11-FAKE16-NEXT: [[V_XOR_B32_e64_:%[0-9]+]]:vgpr_32 = V_XOR_B32_e64 [[S_MOV_B32_]], [[COPY]], implicit $exec204    ; GFX11-FAKE16-NEXT: [[V_CVT_F32_F16_fake16_e64_:%[0-9]+]]:vgpr_32 = nofpexcept V_CVT_F32_F16_fake16_e64 0, [[V_XOR_B32_e64_]], 0, 0, implicit $mode, implicit $exec205    ; GFX11-FAKE16-NEXT: [[V_CVT_U32_F32_e32_:%[0-9]+]]:vgpr_32 = nofpexcept V_CVT_U32_F32_e32 [[V_CVT_F32_F16_fake16_e64_]], implicit $mode, implicit $exec206    ; GFX11-FAKE16-NEXT: $vgpr0 = COPY [[V_CVT_U32_F32_e32_]]207    %0:vgpr(s32) = COPY $vgpr0208    %1:vgpr(s16) = G_TRUNC %0209    %2:vgpr(s16) = G_FNEG %1210    %3:vgpr(s32) = G_FPTOUI %2211    $vgpr0 = COPY %3212...213 214---215name: fptoui_s16_to_s1_vv216legalized: true217regBankSelected: true218tracksRegLiveness: true219 220body: |221  bb.0:222    liveins: $vgpr0223 224    ; GCN-LABEL: name: fptoui_s16_to_s1_vv225    ; GCN: liveins: $vgpr0226    ; GCN-NEXT: {{  $}}227    ; GCN-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0228    ; GCN-NEXT: [[V_CVT_F32_F16_e64_:%[0-9]+]]:vgpr_32 = nofpexcept V_CVT_F32_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec229    ; GCN-NEXT: [[V_CVT_U32_F32_e32_:%[0-9]+]]:vgpr_32 = nofpexcept V_CVT_U32_F32_e32 [[V_CVT_F32_F16_e64_]], implicit $mode, implicit $exec230    ; GCN-NEXT: S_ENDPGM 0, implicit [[V_CVT_U32_F32_e32_]]231    ;232    ; VI-LABEL: name: fptoui_s16_to_s1_vv233    ; VI: liveins: $vgpr0234    ; VI-NEXT: {{  $}}235    ; VI-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0236    ; VI-NEXT: [[V_CVT_F32_F16_e64_:%[0-9]+]]:vgpr_32 = nofpexcept V_CVT_F32_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec237    ; VI-NEXT: [[V_CVT_U32_F32_e32_:%[0-9]+]]:vgpr_32 = nofpexcept V_CVT_U32_F32_e32 [[V_CVT_F32_F16_e64_]], implicit $mode, implicit $exec238    ; VI-NEXT: S_ENDPGM 0, implicit [[V_CVT_U32_F32_e32_]]239    ;240    ; GFX11-TRUE16-LABEL: name: fptoui_s16_to_s1_vv241    ; GFX11-TRUE16: liveins: $vgpr0242    ; GFX11-TRUE16-NEXT: {{  $}}243    ; GFX11-TRUE16-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0244    ; GFX11-TRUE16-NEXT: [[COPY1:%[0-9]+]]:vgpr_16 = COPY [[COPY]].lo16245    ; GFX11-TRUE16-NEXT: [[V_CVT_F32_F16_t16_e64_:%[0-9]+]]:vgpr_32 = nofpexcept V_CVT_F32_F16_t16_e64 0, [[COPY1]], 0, 0, 0, implicit $mode, implicit $exec246    ; GFX11-TRUE16-NEXT: [[V_CVT_U32_F32_e32_:%[0-9]+]]:vgpr_32 = nofpexcept V_CVT_U32_F32_e32 [[V_CVT_F32_F16_t16_e64_]], implicit $mode, implicit $exec247    ; GFX11-TRUE16-NEXT: [[COPY2:%[0-9]+]]:vgpr_16 = COPY [[V_CVT_U32_F32_e32_]].lo16248    ; GFX11-TRUE16-NEXT: S_ENDPGM 0, implicit [[COPY2]]249    ;250    ; GFX11-FAKE16-LABEL: name: fptoui_s16_to_s1_vv251    ; GFX11-FAKE16: liveins: $vgpr0252    ; GFX11-FAKE16-NEXT: {{  $}}253    ; GFX11-FAKE16-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0254    ; GFX11-FAKE16-NEXT: [[V_CVT_F32_F16_fake16_e64_:%[0-9]+]]:vgpr_32 = nofpexcept V_CVT_F32_F16_fake16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec255    ; GFX11-FAKE16-NEXT: [[V_CVT_U32_F32_e32_:%[0-9]+]]:vgpr_32 = nofpexcept V_CVT_U32_F32_e32 [[V_CVT_F32_F16_fake16_e64_]], implicit $mode, implicit $exec256    ; GFX11-FAKE16-NEXT: S_ENDPGM 0, implicit [[V_CVT_U32_F32_e32_]]257    %0:vgpr(s32) = COPY $vgpr0258    %1:vgpr(s16) = G_TRUNC %0259    %2:vgpr(s32) = G_FPTOUI %1260    %3:vgpr(s1)  = G_TRUNC %2261    S_ENDPGM 0, implicit %3262...263 264---265name: fptoui_s16_to_s1_vs266legalized: true267regBankSelected: true268tracksRegLiveness: true269 270body: |271  bb.0:272    liveins: $sgpr0273 274    ; GCN-LABEL: name: fptoui_s16_to_s1_vs275    ; GCN: liveins: $sgpr0276    ; GCN-NEXT: {{  $}}277    ; GCN-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0278    ; GCN-NEXT: [[V_CVT_F32_F16_e64_:%[0-9]+]]:vgpr_32 = nofpexcept V_CVT_F32_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec279    ; GCN-NEXT: [[V_CVT_U32_F32_e32_:%[0-9]+]]:vgpr_32 = nofpexcept V_CVT_U32_F32_e32 [[V_CVT_F32_F16_e64_]], implicit $mode, implicit $exec280    ; GCN-NEXT: S_ENDPGM 0, implicit [[V_CVT_U32_F32_e32_]]281    ;282    ; VI-LABEL: name: fptoui_s16_to_s1_vs283    ; VI: liveins: $sgpr0284    ; VI-NEXT: {{  $}}285    ; VI-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0286    ; VI-NEXT: [[V_CVT_F32_F16_e64_:%[0-9]+]]:vgpr_32 = nofpexcept V_CVT_F32_F16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec287    ; VI-NEXT: [[V_CVT_U32_F32_e32_:%[0-9]+]]:vgpr_32 = nofpexcept V_CVT_U32_F32_e32 [[V_CVT_F32_F16_e64_]], implicit $mode, implicit $exec288    ; VI-NEXT: S_ENDPGM 0, implicit [[V_CVT_U32_F32_e32_]]289    ;290    ; GFX11-TRUE16-LABEL: name: fptoui_s16_to_s1_vs291    ; GFX11-TRUE16: liveins: $sgpr0292    ; GFX11-TRUE16-NEXT: {{  $}}293    ; GFX11-TRUE16-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0294    ; GFX11-TRUE16-NEXT: [[V_CVT_F32_F16_t16_e64_:%[0-9]+]]:vgpr_32 = nofpexcept V_CVT_F32_F16_t16_e64 0, [[COPY]], 0, 0, 0, implicit $mode, implicit $exec295    ; GFX11-TRUE16-NEXT: [[V_CVT_U32_F32_e32_:%[0-9]+]]:vgpr_32 = nofpexcept V_CVT_U32_F32_e32 [[V_CVT_F32_F16_t16_e64_]], implicit $mode, implicit $exec296    ; GFX11-TRUE16-NEXT: [[COPY1:%[0-9]+]]:vgpr_16 = COPY [[V_CVT_U32_F32_e32_]].lo16297    ; GFX11-TRUE16-NEXT: S_ENDPGM 0, implicit [[COPY1]]298    ;299    ; GFX11-FAKE16-LABEL: name: fptoui_s16_to_s1_vs300    ; GFX11-FAKE16: liveins: $sgpr0301    ; GFX11-FAKE16-NEXT: {{  $}}302    ; GFX11-FAKE16-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0303    ; GFX11-FAKE16-NEXT: [[V_CVT_F32_F16_fake16_e64_:%[0-9]+]]:vgpr_32 = nofpexcept V_CVT_F32_F16_fake16_e64 0, [[COPY]], 0, 0, implicit $mode, implicit $exec304    ; GFX11-FAKE16-NEXT: [[V_CVT_U32_F32_e32_:%[0-9]+]]:vgpr_32 = nofpexcept V_CVT_U32_F32_e32 [[V_CVT_F32_F16_fake16_e64_]], implicit $mode, implicit $exec305    ; GFX11-FAKE16-NEXT: S_ENDPGM 0, implicit [[V_CVT_U32_F32_e32_]]306    %0:sgpr(s32) = COPY $sgpr0307    %1:sgpr(s16) = G_TRUNC %0308    %2:vgpr(s32) = G_FPTOUI %1309    %3:vgpr(s1)  = G_TRUNC %2310    S_ENDPGM 0, implicit %3311...312 313---314name: fptoui_s16_to_s1_fneg_vv315legalized: true316regBankSelected: true317tracksRegLiveness: true318 319body: |320  bb.0:321    liveins: $vgpr0322 323    ; GCN-LABEL: name: fptoui_s16_to_s1_fneg_vv324    ; GCN: liveins: $vgpr0325    ; GCN-NEXT: {{  $}}326    ; GCN-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0327    ; GCN-NEXT: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 32768328    ; GCN-NEXT: [[V_XOR_B32_e64_:%[0-9]+]]:vgpr_32 = V_XOR_B32_e64 [[S_MOV_B32_]], [[COPY]], implicit $exec329    ; GCN-NEXT: [[V_CVT_F32_F16_e64_:%[0-9]+]]:vgpr_32 = nofpexcept V_CVT_F32_F16_e64 0, [[V_XOR_B32_e64_]], 0, 0, implicit $mode, implicit $exec330    ; GCN-NEXT: [[V_CVT_U32_F32_e32_:%[0-9]+]]:vgpr_32 = nofpexcept V_CVT_U32_F32_e32 [[V_CVT_F32_F16_e64_]], implicit $mode, implicit $exec331    ; GCN-NEXT: S_ENDPGM 0, implicit [[V_CVT_U32_F32_e32_]]332    ;333    ; VI-LABEL: name: fptoui_s16_to_s1_fneg_vv334    ; VI: liveins: $vgpr0335    ; VI-NEXT: {{  $}}336    ; VI-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0337    ; VI-NEXT: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 32768338    ; VI-NEXT: [[V_XOR_B32_e64_:%[0-9]+]]:vgpr_32 = V_XOR_B32_e64 [[S_MOV_B32_]], [[COPY]], implicit $exec339    ; VI-NEXT: [[V_CVT_F32_F16_e64_:%[0-9]+]]:vgpr_32 = nofpexcept V_CVT_F32_F16_e64 0, [[V_XOR_B32_e64_]], 0, 0, implicit $mode, implicit $exec340    ; VI-NEXT: [[V_CVT_U32_F32_e32_:%[0-9]+]]:vgpr_32 = nofpexcept V_CVT_U32_F32_e32 [[V_CVT_F32_F16_e64_]], implicit $mode, implicit $exec341    ; VI-NEXT: S_ENDPGM 0, implicit [[V_CVT_U32_F32_e32_]]342    ;343    ; GFX11-TRUE16-LABEL: name: fptoui_s16_to_s1_fneg_vv344    ; GFX11-TRUE16: liveins: $vgpr0345    ; GFX11-TRUE16-NEXT: {{  $}}346    ; GFX11-TRUE16-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0347    ; GFX11-TRUE16-NEXT: [[COPY1:%[0-9]+]]:vgpr_16 = COPY [[COPY]].lo16348    ; GFX11-TRUE16-NEXT: [[V_XOR_B16_t16_e64_:%[0-9]+]]:vgpr_16 = V_XOR_B16_t16_e64 0, 32768, 0, [[COPY1]], 0, implicit $exec349    ; GFX11-TRUE16-NEXT: [[V_CVT_F32_F16_t16_e64_:%[0-9]+]]:vgpr_32 = nofpexcept V_CVT_F32_F16_t16_e64 0, [[V_XOR_B16_t16_e64_]], 0, 0, 0, implicit $mode, implicit $exec350    ; GFX11-TRUE16-NEXT: [[V_CVT_U32_F32_e32_:%[0-9]+]]:vgpr_32 = nofpexcept V_CVT_U32_F32_e32 [[V_CVT_F32_F16_t16_e64_]], implicit $mode, implicit $exec351    ; GFX11-TRUE16-NEXT: [[COPY2:%[0-9]+]]:vgpr_16 = COPY [[V_CVT_U32_F32_e32_]].lo16352    ; GFX11-TRUE16-NEXT: S_ENDPGM 0, implicit [[COPY2]]353    ;354    ; GFX11-FAKE16-LABEL: name: fptoui_s16_to_s1_fneg_vv355    ; GFX11-FAKE16: liveins: $vgpr0356    ; GFX11-FAKE16-NEXT: {{  $}}357    ; GFX11-FAKE16-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0358    ; GFX11-FAKE16-NEXT: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 32768359    ; GFX11-FAKE16-NEXT: [[V_XOR_B32_e64_:%[0-9]+]]:vgpr_32 = V_XOR_B32_e64 [[S_MOV_B32_]], [[COPY]], implicit $exec360    ; GFX11-FAKE16-NEXT: [[V_CVT_F32_F16_fake16_e64_:%[0-9]+]]:vgpr_32 = nofpexcept V_CVT_F32_F16_fake16_e64 0, [[V_XOR_B32_e64_]], 0, 0, implicit $mode, implicit $exec361    ; GFX11-FAKE16-NEXT: [[V_CVT_U32_F32_e32_:%[0-9]+]]:vgpr_32 = nofpexcept V_CVT_U32_F32_e32 [[V_CVT_F32_F16_fake16_e64_]], implicit $mode, implicit $exec362    ; GFX11-FAKE16-NEXT: S_ENDPGM 0, implicit [[V_CVT_U32_F32_e32_]]363    %0:vgpr(s32) = COPY $vgpr0364    %1:vgpr(s16) = G_TRUNC %0365    %2:vgpr(s16) = G_FNEG %1366    %3:vgpr(s32) = G_FPTOUI %2367    %4:vgpr(s1)  = G_TRUNC %3368    S_ENDPGM 0, implicit %4369...370