[AMDGPU] Make v8i16/v8f16 legal
[llvm-project.git] / llvm / test / CodeGen / AMDGPU / GlobalISel / legalize-fmad.s64.mir
blob4681f237d21b85dd6f3aec7ad614efed75e7d3ab
1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 # RUN: llc -mtriple=amdgcn-mesa-mesa3d -mcpu=tahiti -run-pass=legalizer %s -o - | FileCheck %s
3 # RUN: llc -mtriple=amdgcn-mesa-mesa3d -mcpu=fiji -run-pass=legalizer %s -o - | FileCheck %s
4 # RUN: llc -mtriple=amdgcn-mesa-mesa3d -mcpu=gfx1010 -run-pass=legalizer %s -o - | FileCheck %s
6 ---
7 name: test_fmad_s64_flush
8 machineFunctionInfo:
9   mode:
10     fp64-fp16-output-denormals: false
11     fp64-fp16-input-denormals: false
13 body: |
14   bb.0:
15     liveins: $vgpr0_vgpr1, $vgpr2_vgpr3,  $vgpr4_vgpr5
17     ; CHECK-LABEL: name: test_fmad_s64_flush
18     ; CHECK: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr1
19     ; CHECK: [[COPY1:%[0-9]+]]:_(s64) = COPY $vgpr2_vgpr3
20     ; CHECK: [[COPY2:%[0-9]+]]:_(s64) = COPY $vgpr4_vgpr5
21     ; CHECK: [[FMUL:%[0-9]+]]:_(s64) = G_FMUL [[COPY]], [[COPY1]]
22     ; CHECK: [[FADD:%[0-9]+]]:_(s64) = G_FADD [[FMUL]], [[COPY2]]
23     ; CHECK: $vgpr0_vgpr1 = COPY [[FADD]](s64)
24     %0:_(s64) = COPY $vgpr0_vgpr1
25     %1:_(s64) = COPY $vgpr2_vgpr3
26     %2:_(s64) = COPY $vgpr4_vgpr5
27     %3:_(s64) = G_FMAD %0, %1, %2
28     $vgpr0_vgpr1 = COPY %3
29 ...
31 ---
32 name: test_fmad_v2s64_flush
33 machineFunctionInfo:
34   mode:
35     fp64-fp16-input-denormals: false
36     fp64-fp16-output-denormals: false
38 body: |
39   bb.0:
40     liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5_vgpr6_vgpr7, $vgpr8_vgpr9_vgpr10_vgpr11
42     ; CHECK-LABEL: name: test_fmad_v2s64_flush
43     ; CHECK: [[COPY:%[0-9]+]]:_(<2 x s64>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
44     ; CHECK: [[COPY1:%[0-9]+]]:_(<2 x s64>) = COPY $vgpr4_vgpr5_vgpr6_vgpr7
45     ; CHECK: [[COPY2:%[0-9]+]]:_(<2 x s64>) = COPY $vgpr8_vgpr9_vgpr10_vgpr11
46     ; CHECK: [[UV:%[0-9]+]]:_(s64), [[UV1:%[0-9]+]]:_(s64) = G_UNMERGE_VALUES [[COPY]](<2 x s64>)
47     ; CHECK: [[UV2:%[0-9]+]]:_(s64), [[UV3:%[0-9]+]]:_(s64) = G_UNMERGE_VALUES [[COPY1]](<2 x s64>)
48     ; CHECK: [[UV4:%[0-9]+]]:_(s64), [[UV5:%[0-9]+]]:_(s64) = G_UNMERGE_VALUES [[COPY2]](<2 x s64>)
49     ; CHECK: [[FMUL:%[0-9]+]]:_(s64) = G_FMUL [[UV]], [[UV2]]
50     ; CHECK: [[FADD:%[0-9]+]]:_(s64) = G_FADD [[FMUL]], [[UV4]]
51     ; CHECK: [[FMUL1:%[0-9]+]]:_(s64) = G_FMUL [[UV1]], [[UV3]]
52     ; CHECK: [[FADD1:%[0-9]+]]:_(s64) = G_FADD [[FMUL1]], [[UV5]]
53     ; CHECK: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s64>) = G_BUILD_VECTOR [[FADD]](s64), [[FADD1]](s64)
54     ; CHECK: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[BUILD_VECTOR]](<2 x s64>)
55     %0:_(<2 x s64>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
56     %1:_(<2 x s64>) = COPY $vgpr4_vgpr5_vgpr6_vgpr7
57     %2:_(<2 x s64>) = COPY $vgpr8_vgpr9_vgpr10_vgpr11
58     %3:_(<2 x s64>) = G_FMAD %0, %1, %2
59     $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %3
60 ...
62 ---
63 name: test_fmad_s64_denorm
64 machineFunctionInfo:
65   mode:
66     fp64-fp16-input-denormals: true
67     fp64-fp16-output-denormals: true
69 body: |
70   bb.0:
71     liveins: $vgpr0_vgpr1, $vgpr2_vgpr3,  $vgpr4_vgpr5
73     ; CHECK-LABEL: name: test_fmad_s64_denorm
74     ; CHECK: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr1
75     ; CHECK: [[COPY1:%[0-9]+]]:_(s64) = COPY $vgpr2_vgpr3
76     ; CHECK: [[COPY2:%[0-9]+]]:_(s64) = COPY $vgpr4_vgpr5
77     ; CHECK: [[FMUL:%[0-9]+]]:_(s64) = G_FMUL [[COPY]], [[COPY1]]
78     ; CHECK: [[FADD:%[0-9]+]]:_(s64) = G_FADD [[FMUL]], [[COPY2]]
79     ; CHECK: $vgpr0_vgpr1 = COPY [[FADD]](s64)
80     %0:_(s64) = COPY $vgpr0_vgpr1
81     %1:_(s64) = COPY $vgpr2_vgpr3
82     %2:_(s64) = COPY $vgpr4_vgpr5
83     %3:_(s64) = G_FMAD %0, %1, %2
84     $vgpr0_vgpr1 = COPY %3
85 ...
87 ---
88 name: test_fmad_v2s64_denorm
89 machineFunctionInfo:
90   mode:
91     fp64-fp16-input-denormals: true
92     fp64-fp16-output-denormals: true
94 body: |
95   bb.0:
96     liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5_vgpr6_vgpr7, $vgpr8_vgpr9_vgpr10_vgpr11
98     ; CHECK-LABEL: name: test_fmad_v2s64_denorm
99     ; CHECK: [[COPY:%[0-9]+]]:_(<2 x s64>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
100     ; CHECK: [[COPY1:%[0-9]+]]:_(<2 x s64>) = COPY $vgpr4_vgpr5_vgpr6_vgpr7
101     ; CHECK: [[COPY2:%[0-9]+]]:_(<2 x s64>) = COPY $vgpr8_vgpr9_vgpr10_vgpr11
102     ; CHECK: [[UV:%[0-9]+]]:_(s64), [[UV1:%[0-9]+]]:_(s64) = G_UNMERGE_VALUES [[COPY]](<2 x s64>)
103     ; CHECK: [[UV2:%[0-9]+]]:_(s64), [[UV3:%[0-9]+]]:_(s64) = G_UNMERGE_VALUES [[COPY1]](<2 x s64>)
104     ; CHECK: [[UV4:%[0-9]+]]:_(s64), [[UV5:%[0-9]+]]:_(s64) = G_UNMERGE_VALUES [[COPY2]](<2 x s64>)
105     ; CHECK: [[FMUL:%[0-9]+]]:_(s64) = G_FMUL [[UV]], [[UV2]]
106     ; CHECK: [[FADD:%[0-9]+]]:_(s64) = G_FADD [[FMUL]], [[UV4]]
107     ; CHECK: [[FMUL1:%[0-9]+]]:_(s64) = G_FMUL [[UV1]], [[UV3]]
108     ; CHECK: [[FADD1:%[0-9]+]]:_(s64) = G_FADD [[FMUL1]], [[UV5]]
109     ; CHECK: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s64>) = G_BUILD_VECTOR [[FADD]](s64), [[FADD1]](s64)
110     ; CHECK: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[BUILD_VECTOR]](<2 x s64>)
111     %0:_(<2 x s64>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
112     %1:_(<2 x s64>) = COPY $vgpr4_vgpr5_vgpr6_vgpr7
113     %2:_(<2 x s64>) = COPY $vgpr8_vgpr9_vgpr10_vgpr11
114     %3:_(<2 x s64>) = G_FMAD %0, %1, %2
115     $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %3