1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2# RUN: llc -march=amdgcn -mcpu=hawaii -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck -check-prefix=WAVE64 %s
3# RUN: llc -march=amdgcn -mcpu=gfx1010 -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck -check-prefix=WAVE32 %s
4
5---
6name: uitofp_s32_to_s32_vv
7legalized: true
8regBankSelected: true
9tracksRegLiveness: true
10
11body: |
12  bb.0:
13    liveins: $vgpr0
14
15    ; WAVE64-LABEL: name: uitofp_s32_to_s32_vv
16    ; WAVE64: liveins: $vgpr0
17    ; WAVE64: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
18    ; WAVE64: [[V_CVT_F32_U32_e64_:%[0-9]+]]:vgpr_32 = V_CVT_F32_U32_e64 [[COPY]], 0, 0, implicit $mode, implicit $exec
19    ; WAVE64: $vgpr0 = COPY [[V_CVT_F32_U32_e64_]]
20    ; WAVE32-LABEL: name: uitofp_s32_to_s32_vv
21    ; WAVE32: liveins: $vgpr0
22    ; WAVE32: $vcc_hi = IMPLICIT_DEF
23    ; WAVE32: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
24    ; WAVE32: [[V_CVT_F32_U32_e64_:%[0-9]+]]:vgpr_32 = V_CVT_F32_U32_e64 [[COPY]], 0, 0, implicit $mode, implicit $exec
25    ; WAVE32: $vgpr0 = COPY [[V_CVT_F32_U32_e64_]]
26    %0:vgpr(s32) = COPY $vgpr0
27    %1:vgpr(s32) = G_UITOFP %0
28    $vgpr0 = COPY %1
29...
30
31---
32name: uitofp_s32_to_s32_vs
33legalized: true
34regBankSelected: true
35tracksRegLiveness: true
36
37body: |
38  bb.0:
39    liveins: $sgpr0
40
41    ; WAVE64-LABEL: name: uitofp_s32_to_s32_vs
42    ; WAVE64: liveins: $sgpr0
43    ; WAVE64: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
44    ; WAVE64: [[V_CVT_F32_U32_e64_:%[0-9]+]]:vgpr_32 = V_CVT_F32_U32_e64 [[COPY]], 0, 0, implicit $mode, implicit $exec
45    ; WAVE64: $vgpr0 = COPY [[V_CVT_F32_U32_e64_]]
46    ; WAVE32-LABEL: name: uitofp_s32_to_s32_vs
47    ; WAVE32: liveins: $sgpr0
48    ; WAVE32: $vcc_hi = IMPLICIT_DEF
49    ; WAVE32: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
50    ; WAVE32: [[V_CVT_F32_U32_e64_:%[0-9]+]]:vgpr_32 = V_CVT_F32_U32_e64 [[COPY]], 0, 0, implicit $mode, implicit $exec
51    ; WAVE32: $vgpr0 = COPY [[V_CVT_F32_U32_e64_]]
52    %0:sgpr(s32) = COPY $sgpr0
53    %1:vgpr(s32) = G_UITOFP %0
54    $vgpr0 = COPY %1
55...
56
57---
58name: uitofp_s32_to_s16_vv
59legalized: true
60regBankSelected: true
61tracksRegLiveness: true
62
63body: |
64  bb.0:
65    liveins: $vgpr0
66
67    ; WAVE64-LABEL: name: uitofp_s32_to_s16_vv
68    ; WAVE64: liveins: $vgpr0
69    ; WAVE64: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
70    ; WAVE64: [[V_CVT_F32_U32_e32_:%[0-9]+]]:vgpr_32 = V_CVT_F32_U32_e32 [[COPY]], implicit $mode, implicit $exec
71    ; WAVE64: %1:vgpr_32 = nofpexcept V_CVT_F16_F32_e32 [[V_CVT_F32_U32_e32_]], implicit $mode, implicit $exec
72    ; WAVE64: $vgpr0 = COPY %1
73    ; WAVE32-LABEL: name: uitofp_s32_to_s16_vv
74    ; WAVE32: liveins: $vgpr0
75    ; WAVE32: $vcc_hi = IMPLICIT_DEF
76    ; WAVE32: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
77    ; WAVE32: [[V_CVT_F32_U32_e32_:%[0-9]+]]:vgpr_32 = V_CVT_F32_U32_e32 [[COPY]], implicit $mode, implicit $exec
78    ; WAVE32: %1:vgpr_32 = nofpexcept V_CVT_F16_F32_e32 [[V_CVT_F32_U32_e32_]], implicit $mode, implicit $exec
79    ; WAVE32: $vgpr0 = COPY %1
80    %0:vgpr(s32) = COPY $vgpr0
81    %1:vgpr(s16) = G_UITOFP %0
82    %2:vgpr(s32) = G_ANYEXT %1
83    $vgpr0 = COPY %2
84...
85
86---
87name: uitofp_s32_to_s16_vs
88legalized: true
89regBankSelected: true
90tracksRegLiveness: true
91
92body: |
93  bb.0:
94    liveins: $sgpr0
95
96    ; WAVE64-LABEL: name: uitofp_s32_to_s16_vs
97    ; WAVE64: liveins: $sgpr0
98    ; WAVE64: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
99    ; WAVE64: [[V_CVT_F32_U32_e32_:%[0-9]+]]:vgpr_32 = V_CVT_F32_U32_e32 [[COPY]], implicit $mode, implicit $exec
100    ; WAVE64: %1:vgpr_32 = nofpexcept V_CVT_F16_F32_e32 [[V_CVT_F32_U32_e32_]], implicit $mode, implicit $exec
101    ; WAVE64: $vgpr0 = COPY %1
102    ; WAVE32-LABEL: name: uitofp_s32_to_s16_vs
103    ; WAVE32: liveins: $sgpr0
104    ; WAVE32: $vcc_hi = IMPLICIT_DEF
105    ; WAVE32: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
106    ; WAVE32: [[V_CVT_F32_U32_e32_:%[0-9]+]]:vgpr_32 = V_CVT_F32_U32_e32 [[COPY]], implicit $mode, implicit $exec
107    ; WAVE32: %1:vgpr_32 = nofpexcept V_CVT_F16_F32_e32 [[V_CVT_F32_U32_e32_]], implicit $mode, implicit $exec
108    ; WAVE32: $vgpr0 = COPY %1
109    %0:sgpr(s32) = COPY $sgpr0
110    %1:vgpr(s16) = G_UITOFP %0
111    %2:vgpr(s32) = G_ANYEXT %1
112    $vgpr0 = COPY %2
113...
114