xref: /llvm-project/llvm/test/CodeGen/AMDGPU/code-size-estimate.ll (revision 4e70720139ff8b03ab02087df249ce4fd4bbfd59)
1*4e707201SJay Foad; RUN: llc -mtriple=amdgcn -mcpu=gfx900 -show-mc-encoding < %s | FileCheck -check-prefixes=GFX9,NOT-GFX12 %s
2*4e707201SJay Foad; RUN: llc -mtriple=amdgcn -mcpu=gfx1030 -show-mc-encoding < %s | FileCheck -check-prefixes=GFX10,NOT-GFX12 %s
3*4e707201SJay Foad; RUN: llc -mtriple=amdgcn -mcpu=gfx1100 -show-mc-encoding < %s | FileCheck -check-prefixes=GFX11,GFX1100,NOT-GFX12 %s
4*4e707201SJay Foad; RUN: llc -mtriple=amdgcn -mcpu=gfx1150 -show-mc-encoding < %s | FileCheck -check-prefixes=GFX11,GFX1150,NOT-GFX12 %s
5*4e707201SJay Foad; RUN: llc -mtriple=amdgcn -mcpu=gfx1200 -show-mc-encoding < %s | FileCheck -check-prefixes=GFX1200 %s
64b1702e8SMatt Arsenault
74b1702e8SMatt Arsenaultdeclare float @llvm.fabs.f32(float)
84b1702e8SMatt Arsenaultdeclare float @llvm.fma.f32(float, float, float)
94b1702e8SMatt Arsenault
104b1702e8SMatt Arsenaultdefine float @v_mul_f32_vop2(float %x, float %y) {
114b1702e8SMatt Arsenault; GFX9-LABEL: v_mul_f32_vop2:
124b1702e8SMatt Arsenault; GFX9:       ; %bb.0:
134b1702e8SMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) ; encoding: [0x00,0x00,0x8c,0xbf]
144b1702e8SMatt Arsenault; GFX9-NEXT:    v_mul_f32_e32 v0, v0, v1 ; encoding: [0x00,0x03,0x00,0x0a]
154b1702e8SMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31] ; encoding: [0x1e,0x1d,0x80,0xbe]
164b1702e8SMatt Arsenault;
174b1702e8SMatt Arsenault; GFX10-LABEL: v_mul_f32_vop2:
184b1702e8SMatt Arsenault; GFX10:       ; %bb.0:
194b1702e8SMatt Arsenault; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) ; encoding: [0x00,0x00,0x8c,0xbf]
204b1702e8SMatt Arsenault; GFX10-NEXT:    v_mul_f32_e32 v0, v0, v1 ; encoding: [0x00,0x03,0x00,0x10]
214b1702e8SMatt Arsenault; GFX10-NEXT:    s_setpc_b64 s[30:31] ; encoding: [0x1e,0x20,0x80,0xbe]
224b1702e8SMatt Arsenault;
234b1702e8SMatt Arsenault; GFX11-LABEL: v_mul_f32_vop2:
244b1702e8SMatt Arsenault; GFX11:       ; %bb.0:
254b1702e8SMatt Arsenault; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) ; encoding: [0x00,0x00,0x89,0xbf]
264b1702e8SMatt Arsenault; GFX11-NEXT:    v_mul_f32_e32 v0, v0, v1 ; encoding: [0x00,0x03,0x00,0x10]
274b1702e8SMatt Arsenault; GFX11-NEXT:    s_setpc_b64 s[30:31] ; encoding: [0x1e,0x48,0x80,0xbe]
28*4e707201SJay Foad;
29*4e707201SJay Foad; GFX1200-LABEL: v_mul_f32_vop2:
30*4e707201SJay Foad; GFX1200:       ; %bb.0:
31*4e707201SJay Foad; GFX1200-NEXT:    s_wait_loadcnt_dscnt 0x0 ; encoding: [0x00,0x00,0xc8,0xbf]
32*4e707201SJay Foad; GFX1200-NEXT:    s_wait_expcnt 0x0 ; encoding: [0x00,0x00,0xc4,0xbf]
33*4e707201SJay Foad; GFX1200-NEXT:    s_wait_samplecnt 0x0 ; encoding: [0x00,0x00,0xc2,0xbf]
34*4e707201SJay Foad; GFX1200-NEXT:    s_wait_bvhcnt 0x0 ; encoding: [0x00,0x00,0xc3,0xbf]
35*4e707201SJay Foad; GFX1200-NEXT:    s_wait_kmcnt 0x0 ; encoding: [0x00,0x00,0xc7,0xbf]
36*4e707201SJay Foad; GFX1200-NEXT:    v_mul_f32_e32 v0, v0, v1 ; encoding: [0x00,0x03,0x00,0x10]
37*4e707201SJay Foad; GFX1200-NEXT:    s_setpc_b64 s[30:31] ; encoding: [0x1e,0x48,0x80,0xbe]
384b1702e8SMatt Arsenault  %mul = fmul float %x, %y
394b1702e8SMatt Arsenault  ret float %mul
404b1702e8SMatt Arsenault}
41*4e707201SJay Foad; NOT-GFX12: codeLenInByte = 12
42*4e707201SJay Foad; GFX1200: codeLenInByte = 28
434b1702e8SMatt Arsenault
444b1702e8SMatt Arsenaultdefine float @v_mul_f32_vop2_inline_imm(float %x) {
454b1702e8SMatt Arsenault; GFX9-LABEL: v_mul_f32_vop2_inline_imm:
464b1702e8SMatt Arsenault; GFX9:       ; %bb.0:
474b1702e8SMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) ; encoding: [0x00,0x00,0x8c,0xbf]
484b1702e8SMatt Arsenault; GFX9-NEXT:    v_mul_f32_e32 v0, 4.0, v0 ; encoding: [0xf6,0x00,0x00,0x0a]
494b1702e8SMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31] ; encoding: [0x1e,0x1d,0x80,0xbe]
504b1702e8SMatt Arsenault;
514b1702e8SMatt Arsenault; GFX10-LABEL: v_mul_f32_vop2_inline_imm:
524b1702e8SMatt Arsenault; GFX10:       ; %bb.0:
534b1702e8SMatt Arsenault; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) ; encoding: [0x00,0x00,0x8c,0xbf]
544b1702e8SMatt Arsenault; GFX10-NEXT:    v_mul_f32_e32 v0, 4.0, v0 ; encoding: [0xf6,0x00,0x00,0x10]
554b1702e8SMatt Arsenault; GFX10-NEXT:    s_setpc_b64 s[30:31] ; encoding: [0x1e,0x20,0x80,0xbe]
564b1702e8SMatt Arsenault;
574b1702e8SMatt Arsenault; GFX11-LABEL: v_mul_f32_vop2_inline_imm:
584b1702e8SMatt Arsenault; GFX11:       ; %bb.0:
594b1702e8SMatt Arsenault; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) ; encoding: [0x00,0x00,0x89,0xbf]
604b1702e8SMatt Arsenault; GFX11-NEXT:    v_mul_f32_e32 v0, 4.0, v0 ; encoding: [0xf6,0x00,0x00,0x10]
614b1702e8SMatt Arsenault; GFX11-NEXT:    s_setpc_b64 s[30:31] ; encoding: [0x1e,0x48,0x80,0xbe]
62*4e707201SJay Foad;
63*4e707201SJay Foad; GFX1200-LABEL: v_mul_f32_vop2_inline_imm:
64*4e707201SJay Foad; GFX1200:       ; %bb.0:
65*4e707201SJay Foad; GFX1200-NEXT:    s_wait_loadcnt_dscnt 0x0 ; encoding: [0x00,0x00,0xc8,0xbf]
66*4e707201SJay Foad; GFX1200-NEXT:    s_wait_expcnt 0x0 ; encoding: [0x00,0x00,0xc4,0xbf]
67*4e707201SJay Foad; GFX1200-NEXT:    s_wait_samplecnt 0x0 ; encoding: [0x00,0x00,0xc2,0xbf]
68*4e707201SJay Foad; GFX1200-NEXT:    s_wait_bvhcnt 0x0 ; encoding: [0x00,0x00,0xc3,0xbf]
69*4e707201SJay Foad; GFX1200-NEXT:    s_wait_kmcnt 0x0 ; encoding: [0x00,0x00,0xc7,0xbf]
70*4e707201SJay Foad; GFX1200-NEXT:    v_mul_f32_e32 v0, 4.0, v0 ; encoding: [0xf6,0x00,0x00,0x10]
71*4e707201SJay Foad; GFX1200-NEXT:    s_setpc_b64 s[30:31] ; encoding: [0x1e,0x48,0x80,0xbe]
724b1702e8SMatt Arsenault  %mul = fmul float %x, 4.0
734b1702e8SMatt Arsenault  ret float %mul
744b1702e8SMatt Arsenault}
75*4e707201SJay Foad; NOT-GFX12: codeLenInByte = 12
76*4e707201SJay Foad; GFX1200: codeLenInByte = 28
774b1702e8SMatt Arsenault
784b1702e8SMatt Arsenaultdefine float @v_mul_f32_vop2_literal(float %x) {
794b1702e8SMatt Arsenault; GFX9-LABEL: v_mul_f32_vop2_literal:
804b1702e8SMatt Arsenault; GFX9:       ; %bb.0:
814b1702e8SMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) ; encoding: [0x00,0x00,0x8c,0xbf]
824b1702e8SMatt Arsenault; GFX9-NEXT:    v_mul_f32_e32 v0, 0x42f60000, v0 ; encoding: [0xff,0x00,0x00,0x0a,0x00,0x00,0xf6,0x42]
834b1702e8SMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31] ; encoding: [0x1e,0x1d,0x80,0xbe]
844b1702e8SMatt Arsenault;
854b1702e8SMatt Arsenault; GFX10-LABEL: v_mul_f32_vop2_literal:
864b1702e8SMatt Arsenault; GFX10:       ; %bb.0:
874b1702e8SMatt Arsenault; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) ; encoding: [0x00,0x00,0x8c,0xbf]
884b1702e8SMatt Arsenault; GFX10-NEXT:    v_mul_f32_e32 v0, 0x42f60000, v0 ; encoding: [0xff,0x00,0x00,0x10,0x00,0x00,0xf6,0x42]
894b1702e8SMatt Arsenault; GFX10-NEXT:    s_setpc_b64 s[30:31] ; encoding: [0x1e,0x20,0x80,0xbe]
904b1702e8SMatt Arsenault;
914b1702e8SMatt Arsenault; GFX11-LABEL: v_mul_f32_vop2_literal:
924b1702e8SMatt Arsenault; GFX11:       ; %bb.0:
934b1702e8SMatt Arsenault; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) ; encoding: [0x00,0x00,0x89,0xbf]
944b1702e8SMatt Arsenault; GFX11-NEXT:    v_mul_f32_e32 v0, 0x42f60000, v0 ; encoding: [0xff,0x00,0x00,0x10,0x00,0x00,0xf6,0x42]
954b1702e8SMatt Arsenault; GFX11-NEXT:    s_setpc_b64 s[30:31] ; encoding: [0x1e,0x48,0x80,0xbe]
96*4e707201SJay Foad;
97*4e707201SJay Foad; GFX1200-LABEL: v_mul_f32_vop2_literal:
98*4e707201SJay Foad; GFX1200:       ; %bb.0:
99*4e707201SJay Foad; GFX1200-NEXT:    s_wait_loadcnt_dscnt 0x0 ; encoding: [0x00,0x00,0xc8,0xbf]
100*4e707201SJay Foad; GFX1200-NEXT:    s_wait_expcnt 0x0 ; encoding: [0x00,0x00,0xc4,0xbf]
101*4e707201SJay Foad; GFX1200-NEXT:    s_wait_samplecnt 0x0 ; encoding: [0x00,0x00,0xc2,0xbf]
102*4e707201SJay Foad; GFX1200-NEXT:    s_wait_bvhcnt 0x0 ; encoding: [0x00,0x00,0xc3,0xbf]
103*4e707201SJay Foad; GFX1200-NEXT:    s_wait_kmcnt 0x0 ; encoding: [0x00,0x00,0xc7,0xbf]
104*4e707201SJay Foad; GFX1200-NEXT:    v_mul_f32_e32 v0, 0x42f60000, v0 ; encoding: [0xff,0x00,0x00,0x10,0x00,0x00,0xf6,0x42]
105*4e707201SJay Foad; GFX1200-NEXT:    s_setpc_b64 s[30:31] ; encoding: [0x1e,0x48,0x80,0xbe]
1064b1702e8SMatt Arsenault  %mul = fmul float %x, 123.0
1074b1702e8SMatt Arsenault  ret float %mul
1084b1702e8SMatt Arsenault}
109*4e707201SJay Foad; NOT-GFX12: codeLenInByte = 16
110*4e707201SJay Foad; GFX1200: codeLenInByte = 32
1114b1702e8SMatt Arsenault
1124b1702e8SMatt Arsenaultdefine float @v_mul_f32_vop3_src_mods(float %x, float %y) {
1134b1702e8SMatt Arsenault; GFX9-LABEL: v_mul_f32_vop3_src_mods:
1144b1702e8SMatt Arsenault; GFX9:       ; %bb.0:
1154b1702e8SMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) ; encoding: [0x00,0x00,0x8c,0xbf]
1164b1702e8SMatt Arsenault; GFX9-NEXT:    v_mul_f32_e64 v0, |v0|, v1 ; encoding: [0x00,0x01,0x05,0xd1,0x00,0x03,0x02,0x00]
1174b1702e8SMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31] ; encoding: [0x1e,0x1d,0x80,0xbe]
1184b1702e8SMatt Arsenault;
1194b1702e8SMatt Arsenault; GFX10-LABEL: v_mul_f32_vop3_src_mods:
1204b1702e8SMatt Arsenault; GFX10:       ; %bb.0:
1214b1702e8SMatt Arsenault; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) ; encoding: [0x00,0x00,0x8c,0xbf]
1224b1702e8SMatt Arsenault; GFX10-NEXT:    v_mul_f32_e64 v0, |v0|, v1 ; encoding: [0x00,0x01,0x08,0xd5,0x00,0x03,0x02,0x00]
1234b1702e8SMatt Arsenault; GFX10-NEXT:    s_setpc_b64 s[30:31] ; encoding: [0x1e,0x20,0x80,0xbe]
1244b1702e8SMatt Arsenault;
1254b1702e8SMatt Arsenault; GFX11-LABEL: v_mul_f32_vop3_src_mods:
1264b1702e8SMatt Arsenault; GFX11:       ; %bb.0:
1274b1702e8SMatt Arsenault; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) ; encoding: [0x00,0x00,0x89,0xbf]
1284b1702e8SMatt Arsenault; GFX11-NEXT:    v_mul_f32_e64 v0, |v0|, v1 ; encoding: [0x00,0x01,0x08,0xd5,0x00,0x03,0x02,0x00]
1294b1702e8SMatt Arsenault; GFX11-NEXT:    s_setpc_b64 s[30:31] ; encoding: [0x1e,0x48,0x80,0xbe]
130*4e707201SJay Foad;
131*4e707201SJay Foad; GFX1200-LABEL: v_mul_f32_vop3_src_mods:
132*4e707201SJay Foad; GFX1200:       ; %bb.0:
133*4e707201SJay Foad; GFX1200-NEXT:    s_wait_loadcnt_dscnt 0x0 ; encoding: [0x00,0x00,0xc8,0xbf]
134*4e707201SJay Foad; GFX1200-NEXT:    s_wait_expcnt 0x0 ; encoding: [0x00,0x00,0xc4,0xbf]
135*4e707201SJay Foad; GFX1200-NEXT:    s_wait_samplecnt 0x0 ; encoding: [0x00,0x00,0xc2,0xbf]
136*4e707201SJay Foad; GFX1200-NEXT:    s_wait_bvhcnt 0x0 ; encoding: [0x00,0x00,0xc3,0xbf]
137*4e707201SJay Foad; GFX1200-NEXT:    s_wait_kmcnt 0x0 ; encoding: [0x00,0x00,0xc7,0xbf]
138*4e707201SJay Foad; GFX1200-NEXT:    v_mul_f32_e64 v0, |v0|, v1 ; encoding: [0x00,0x01,0x08,0xd5,0x00,0x03,0x02,0x00]
139*4e707201SJay Foad; GFX1200-NEXT:    s_setpc_b64 s[30:31] ; encoding: [0x1e,0x48,0x80,0xbe]
1404b1702e8SMatt Arsenault  %fabs.x = call float @llvm.fabs.f32(float %x)
1414b1702e8SMatt Arsenault  %mul = fmul float %fabs.x, %y
1424b1702e8SMatt Arsenault  ret float %mul
1434b1702e8SMatt Arsenault}
144*4e707201SJay Foad; NOT-GFX12: codeLenInByte = 16
145*4e707201SJay Foad; GFX1200: codeLenInByte = 32
1464b1702e8SMatt Arsenault
1474b1702e8SMatt Arsenaultdefine float @v_mul_f32_vop3_src_mods_inline_imm(float %x, float %y) {
1484b1702e8SMatt Arsenault; GFX9-LABEL: v_mul_f32_vop3_src_mods_inline_imm:
1494b1702e8SMatt Arsenault; GFX9:       ; %bb.0:
1504b1702e8SMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) ; encoding: [0x00,0x00,0x8c,0xbf]
1514b1702e8SMatt Arsenault; GFX9-NEXT:    v_mul_f32_e64 v0, |v0|, 4.0 ; encoding: [0x00,0x01,0x05,0xd1,0x00,0xed,0x01,0x00]
1524b1702e8SMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31] ; encoding: [0x1e,0x1d,0x80,0xbe]
1534b1702e8SMatt Arsenault;
1544b1702e8SMatt Arsenault; GFX10-LABEL: v_mul_f32_vop3_src_mods_inline_imm:
1554b1702e8SMatt Arsenault; GFX10:       ; %bb.0:
1564b1702e8SMatt Arsenault; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) ; encoding: [0x00,0x00,0x8c,0xbf]
1574b1702e8SMatt Arsenault; GFX10-NEXT:    v_mul_f32_e64 v0, |v0|, 4.0 ; encoding: [0x00,0x01,0x08,0xd5,0x00,0xed,0x01,0x00]
1584b1702e8SMatt Arsenault; GFX10-NEXT:    s_setpc_b64 s[30:31] ; encoding: [0x1e,0x20,0x80,0xbe]
1594b1702e8SMatt Arsenault;
1604b1702e8SMatt Arsenault; GFX11-LABEL: v_mul_f32_vop3_src_mods_inline_imm:
1614b1702e8SMatt Arsenault; GFX11:       ; %bb.0:
1624b1702e8SMatt Arsenault; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) ; encoding: [0x00,0x00,0x89,0xbf]
1634b1702e8SMatt Arsenault; GFX11-NEXT:    v_mul_f32_e64 v0, |v0|, 4.0 ; encoding: [0x00,0x01,0x08,0xd5,0x00,0xed,0x01,0x00]
1644b1702e8SMatt Arsenault; GFX11-NEXT:    s_setpc_b64 s[30:31] ; encoding: [0x1e,0x48,0x80,0xbe]
165*4e707201SJay Foad;
166*4e707201SJay Foad; GFX1200-LABEL: v_mul_f32_vop3_src_mods_inline_imm:
167*4e707201SJay Foad; GFX1200:       ; %bb.0:
168*4e707201SJay Foad; GFX1200-NEXT:    s_wait_loadcnt_dscnt 0x0 ; encoding: [0x00,0x00,0xc8,0xbf]
169*4e707201SJay Foad; GFX1200-NEXT:    s_wait_expcnt 0x0 ; encoding: [0x00,0x00,0xc4,0xbf]
170*4e707201SJay Foad; GFX1200-NEXT:    s_wait_samplecnt 0x0 ; encoding: [0x00,0x00,0xc2,0xbf]
171*4e707201SJay Foad; GFX1200-NEXT:    s_wait_bvhcnt 0x0 ; encoding: [0x00,0x00,0xc3,0xbf]
172*4e707201SJay Foad; GFX1200-NEXT:    s_wait_kmcnt 0x0 ; encoding: [0x00,0x00,0xc7,0xbf]
173*4e707201SJay Foad; GFX1200-NEXT:    v_mul_f32_e64 v0, |v0|, 4.0 ; encoding: [0x00,0x01,0x08,0xd5,0x00,0xed,0x01,0x00]
174*4e707201SJay Foad; GFX1200-NEXT:    s_setpc_b64 s[30:31] ; encoding: [0x1e,0x48,0x80,0xbe]
1754b1702e8SMatt Arsenault  %fabs.x = call float @llvm.fabs.f32(float %x)
1764b1702e8SMatt Arsenault  %mul = fmul float %fabs.x, 4.0
1774b1702e8SMatt Arsenault  ret float %mul
1784b1702e8SMatt Arsenault}
1794b1702e8SMatt Arsenault
180*4e707201SJay Foad; NOT-GFX12: codeLenInByte = 16
181*4e707201SJay Foad; GFX1200: codeLenInByte = 32
1824b1702e8SMatt Arsenault
1834b1702e8SMatt Arsenaultdefine float @v_mul_f32_vop3_src_mods_literal(float %x, float %y) {
1844b1702e8SMatt Arsenault; GFX9-LABEL: v_mul_f32_vop3_src_mods_literal:
1854b1702e8SMatt Arsenault; GFX9:       ; %bb.0:
1864b1702e8SMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) ; encoding: [0x00,0x00,0x8c,0xbf]
1874b1702e8SMatt Arsenault; GFX9-NEXT:    s_mov_b32 s4, 0x42f60000 ; encoding: [0xff,0x00,0x84,0xbe,0x00,0x00,0xf6,0x42]
1884b1702e8SMatt Arsenault; GFX9-NEXT:    v_mul_f32_e64 v0, |v0|, s4 ; encoding: [0x00,0x01,0x05,0xd1,0x00,0x09,0x00,0x00]
1894b1702e8SMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31] ; encoding: [0x1e,0x1d,0x80,0xbe]
1904b1702e8SMatt Arsenault;
1914b1702e8SMatt Arsenault; GFX10-LABEL: v_mul_f32_vop3_src_mods_literal:
1924b1702e8SMatt Arsenault; GFX10:       ; %bb.0:
1934b1702e8SMatt Arsenault; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) ; encoding: [0x00,0x00,0x8c,0xbf]
1944b1702e8SMatt Arsenault; GFX10-NEXT:    v_mul_f32_e64 v0, 0x42f60000, |v0| ; encoding: [0x00,0x02,0x08,0xd5,0xff,0x00,0x02,0x00,0x00,0x00,0xf6,0x42]
1954b1702e8SMatt Arsenault; GFX10-NEXT:    s_setpc_b64 s[30:31] ; encoding: [0x1e,0x20,0x80,0xbe]
1964b1702e8SMatt Arsenault;
1974b1702e8SMatt Arsenault; GFX11-LABEL: v_mul_f32_vop3_src_mods_literal:
1984b1702e8SMatt Arsenault; GFX11:       ; %bb.0:
1994b1702e8SMatt Arsenault; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) ; encoding: [0x00,0x00,0x89,0xbf]
2004b1702e8SMatt Arsenault; GFX11-NEXT:    v_mul_f32_e64 v0, 0x42f60000, |v0| ; encoding: [0x00,0x02,0x08,0xd5,0xff,0x00,0x02,0x00,0x00,0x00,0xf6,0x42]
2014b1702e8SMatt Arsenault; GFX11-NEXT:    s_setpc_b64 s[30:31] ; encoding: [0x1e,0x48,0x80,0xbe]
202*4e707201SJay Foad;
203*4e707201SJay Foad; GFX1200-LABEL: v_mul_f32_vop3_src_mods_literal:
204*4e707201SJay Foad; GFX1200:       ; %bb.0:
205*4e707201SJay Foad; GFX1200-NEXT:    s_wait_loadcnt_dscnt 0x0 ; encoding: [0x00,0x00,0xc8,0xbf]
206*4e707201SJay Foad; GFX1200-NEXT:    s_wait_expcnt 0x0 ; encoding: [0x00,0x00,0xc4,0xbf]
207*4e707201SJay Foad; GFX1200-NEXT:    s_wait_samplecnt 0x0 ; encoding: [0x00,0x00,0xc2,0xbf]
208*4e707201SJay Foad; GFX1200-NEXT:    s_wait_bvhcnt 0x0 ; encoding: [0x00,0x00,0xc3,0xbf]
209*4e707201SJay Foad; GFX1200-NEXT:    s_wait_kmcnt 0x0 ; encoding: [0x00,0x00,0xc7,0xbf]
210*4e707201SJay Foad; GFX1200-NEXT:    v_mul_f32_e64 v0, 0x42f60000, |v0| ; encoding: [0x00,0x02,0x08,0xd5,0xff,0x00,0x02,0x00,0x00,0x00,0xf6,0x42]
211*4e707201SJay Foad; GFX1200-NEXT:    s_setpc_b64 s[30:31] ; encoding: [0x1e,0x48,0x80,0xbe]
2124b1702e8SMatt Arsenault  %fabs.x = call float @llvm.fabs.f32(float %x)
2134b1702e8SMatt Arsenault  %mul = fmul float %fabs.x, 123.0
2144b1702e8SMatt Arsenault  ret float %mul
2154b1702e8SMatt Arsenault}
2164b1702e8SMatt Arsenault
2174b1702e8SMatt Arsenault; GFX9: codeLenInByte = 24
2184b1702e8SMatt Arsenault; GFX10: codeLenInByte = 20
2191e5359c6SMirko Brkusanin; GFX11: codeLenInByte = 20
220*4e707201SJay Foad; GFX1200: codeLenInByte = 36
2214b1702e8SMatt Arsenault
2224b1702e8SMatt Arsenaultdefine float @v_mul_f32_vop2_frame_index(float %x) {
2234b1702e8SMatt Arsenault; GFX9-LABEL: v_mul_f32_vop2_frame_index:
2244b1702e8SMatt Arsenault; GFX9:       ; %bb.0:
2254b1702e8SMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) ; encoding: [0x00,0x00,0x8c,0xbf]
2264b1702e8SMatt Arsenault; GFX9-NEXT:    v_lshrrev_b32_e64 v1, 6, s32 ; encoding: [0x01,0x00,0x10,0xd1,0x86,0x40,0x00,0x00]
2274b1702e8SMatt Arsenault; GFX9-NEXT:    v_mul_f32_e32 v0, v1, v0 ; encoding: [0x01,0x01,0x00,0x0a]
2284b1702e8SMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31] ; encoding: [0x1e,0x1d,0x80,0xbe]
2294b1702e8SMatt Arsenault;
2304b1702e8SMatt Arsenault; GFX10-LABEL: v_mul_f32_vop2_frame_index:
2314b1702e8SMatt Arsenault; GFX10:       ; %bb.0:
2324b1702e8SMatt Arsenault; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) ; encoding: [0x00,0x00,0x8c,0xbf]
2334b1702e8SMatt Arsenault; GFX10-NEXT:    v_lshrrev_b32_e64 v1, 5, s32 ; encoding: [0x01,0x00,0x16,0xd5,0x85,0x40,0x00,0x00]
2344b1702e8SMatt Arsenault; GFX10-NEXT:    v_mul_f32_e32 v0, v1, v0 ; encoding: [0x01,0x01,0x00,0x10]
2354b1702e8SMatt Arsenault; GFX10-NEXT:    s_setpc_b64 s[30:31] ; encoding: [0x1e,0x20,0x80,0xbe]
2364b1702e8SMatt Arsenault;
2374b1702e8SMatt Arsenault; GFX11-LABEL: v_mul_f32_vop2_frame_index:
2384b1702e8SMatt Arsenault; GFX11:       ; %bb.0:
2394b1702e8SMatt Arsenault; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) ; encoding: [0x00,0x00,0x89,0xbf]
2404b1702e8SMatt Arsenault; GFX11-NEXT:    v_mul_f32_e32 v0, s32, v0 ; encoding: [0x20,0x00,0x00,0x10]
2414b1702e8SMatt Arsenault; GFX11-NEXT:    s_setpc_b64 s[30:31] ; encoding: [0x1e,0x48,0x80,0xbe]
242*4e707201SJay Foad;
243*4e707201SJay Foad; GFX1200-LABEL: v_mul_f32_vop2_frame_index:
244*4e707201SJay Foad; GFX1200:       ; %bb.0:
245*4e707201SJay Foad; GFX1200-NEXT:    s_wait_loadcnt_dscnt 0x0 ; encoding: [0x00,0x00,0xc8,0xbf]
246*4e707201SJay Foad; GFX1200-NEXT:    s_wait_expcnt 0x0 ; encoding: [0x00,0x00,0xc4,0xbf]
247*4e707201SJay Foad; GFX1200-NEXT:    s_wait_samplecnt 0x0 ; encoding: [0x00,0x00,0xc2,0xbf]
248*4e707201SJay Foad; GFX1200-NEXT:    s_wait_bvhcnt 0x0 ; encoding: [0x00,0x00,0xc3,0xbf]
249*4e707201SJay Foad; GFX1200-NEXT:    s_wait_kmcnt 0x0 ; encoding: [0x00,0x00,0xc7,0xbf]
250*4e707201SJay Foad; GFX1200-NEXT:    v_mul_f32_e32 v0, s32, v0 ; encoding: [0x20,0x00,0x00,0x10]
251*4e707201SJay Foad; GFX1200-NEXT:    s_setpc_b64 s[30:31] ; encoding: [0x1e,0x48,0x80,0xbe]
2524b1702e8SMatt Arsenault  %alloca = alloca i32, addrspace(5)
2534b1702e8SMatt Arsenault  %ptrtoint = ptrtoint ptr addrspace(5) %alloca to i32
2544b1702e8SMatt Arsenault  %cast = bitcast i32 %ptrtoint to float
2554b1702e8SMatt Arsenault  %mul = fmul float %x, %cast
2564b1702e8SMatt Arsenault  ret float %mul
2574b1702e8SMatt Arsenault}
2584b1702e8SMatt Arsenault
2594b1702e8SMatt Arsenault; GFX9: codeLenInByte = 20
2604b1702e8SMatt Arsenault; GFX10: codeLenInByte = 20
2614b1702e8SMatt Arsenault; GFX11: codeLenInByte = 12
262*4e707201SJay Foad; GFX1200: codeLenInByte = 28
2634b1702e8SMatt Arsenault
2644b1702e8SMatt Arsenaultdefine float @v_fma_f32(float %x, float %y, float %z) {
2654b1702e8SMatt Arsenault; GFX9-LABEL: v_fma_f32:
2664b1702e8SMatt Arsenault; GFX9:       ; %bb.0:
2674b1702e8SMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) ; encoding: [0x00,0x00,0x8c,0xbf]
2684b1702e8SMatt Arsenault; GFX9-NEXT:    v_fma_f32 v0, v0, v1, v2 ; encoding: [0x00,0x00,0xcb,0xd1,0x00,0x03,0x0a,0x04]
2694b1702e8SMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31] ; encoding: [0x1e,0x1d,0x80,0xbe]
2704b1702e8SMatt Arsenault;
2714b1702e8SMatt Arsenault; GFX10-LABEL: v_fma_f32:
2724b1702e8SMatt Arsenault; GFX10:       ; %bb.0:
2734b1702e8SMatt Arsenault; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) ; encoding: [0x00,0x00,0x8c,0xbf]
2744b1702e8SMatt Arsenault; GFX10-NEXT:    v_fma_f32 v0, v0, v1, v2 ; encoding: [0x00,0x00,0x4b,0xd5,0x00,0x03,0x0a,0x04]
2754b1702e8SMatt Arsenault; GFX10-NEXT:    s_setpc_b64 s[30:31] ; encoding: [0x1e,0x20,0x80,0xbe]
2764b1702e8SMatt Arsenault;
2774b1702e8SMatt Arsenault; GFX11-LABEL: v_fma_f32:
2784b1702e8SMatt Arsenault; GFX11:       ; %bb.0:
2794b1702e8SMatt Arsenault; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) ; encoding: [0x00,0x00,0x89,0xbf]
2804b1702e8SMatt Arsenault; GFX11-NEXT:    v_fma_f32 v0, v0, v1, v2 ; encoding: [0x00,0x00,0x13,0xd6,0x00,0x03,0x0a,0x04]
2814b1702e8SMatt Arsenault; GFX11-NEXT:    s_setpc_b64 s[30:31] ; encoding: [0x1e,0x48,0x80,0xbe]
282*4e707201SJay Foad;
283*4e707201SJay Foad; GFX1200-LABEL: v_fma_f32:
284*4e707201SJay Foad; GFX1200:       ; %bb.0:
285*4e707201SJay Foad; GFX1200-NEXT:    s_wait_loadcnt_dscnt 0x0 ; encoding: [0x00,0x00,0xc8,0xbf]
286*4e707201SJay Foad; GFX1200-NEXT:    s_wait_expcnt 0x0 ; encoding: [0x00,0x00,0xc4,0xbf]
287*4e707201SJay Foad; GFX1200-NEXT:    s_wait_samplecnt 0x0 ; encoding: [0x00,0x00,0xc2,0xbf]
288*4e707201SJay Foad; GFX1200-NEXT:    s_wait_bvhcnt 0x0 ; encoding: [0x00,0x00,0xc3,0xbf]
289*4e707201SJay Foad; GFX1200-NEXT:    s_wait_kmcnt 0x0 ; encoding: [0x00,0x00,0xc7,0xbf]
290*4e707201SJay Foad; GFX1200-NEXT:    v_fma_f32 v0, v0, v1, v2 ; encoding: [0x00,0x00,0x13,0xd6,0x00,0x03,0x0a,0x04]
291*4e707201SJay Foad; GFX1200-NEXT:    s_setpc_b64 s[30:31] ; encoding: [0x1e,0x48,0x80,0xbe]
2924b1702e8SMatt Arsenault  %fma = call float @llvm.fma.f32(float %x, float %y, float %z)
2934b1702e8SMatt Arsenault  ret float %fma
2944b1702e8SMatt Arsenault}
2954b1702e8SMatt Arsenault
296*4e707201SJay Foad; NOT-GFX12: codeLenInByte = 16
297*4e707201SJay Foad; GFX1200: codeLenInByte = 32
2984b1702e8SMatt Arsenault
2994b1702e8SMatt Arsenaultdefine float @v_fma_f32_src_mods(float %x, float %y, float %z) {
3004b1702e8SMatt Arsenault; GFX9-LABEL: v_fma_f32_src_mods:
3014b1702e8SMatt Arsenault; GFX9:       ; %bb.0:
3024b1702e8SMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) ; encoding: [0x00,0x00,0x8c,0xbf]
3034b1702e8SMatt Arsenault; GFX9-NEXT:    v_fma_f32 v0, |v0|, v1, v2 ; encoding: [0x00,0x01,0xcb,0xd1,0x00,0x03,0x0a,0x04]
3044b1702e8SMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31] ; encoding: [0x1e,0x1d,0x80,0xbe]
3054b1702e8SMatt Arsenault;
3064b1702e8SMatt Arsenault; GFX10-LABEL: v_fma_f32_src_mods:
3074b1702e8SMatt Arsenault; GFX10:       ; %bb.0:
3084b1702e8SMatt Arsenault; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) ; encoding: [0x00,0x00,0x8c,0xbf]
3094b1702e8SMatt Arsenault; GFX10-NEXT:    v_fma_f32 v0, |v0|, v1, v2 ; encoding: [0x00,0x01,0x4b,0xd5,0x00,0x03,0x0a,0x04]
3104b1702e8SMatt Arsenault; GFX10-NEXT:    s_setpc_b64 s[30:31] ; encoding: [0x1e,0x20,0x80,0xbe]
3114b1702e8SMatt Arsenault;
3124b1702e8SMatt Arsenault; GFX11-LABEL: v_fma_f32_src_mods:
3134b1702e8SMatt Arsenault; GFX11:       ; %bb.0:
3144b1702e8SMatt Arsenault; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) ; encoding: [0x00,0x00,0x89,0xbf]
3154b1702e8SMatt Arsenault; GFX11-NEXT:    v_fma_f32 v0, |v0|, v1, v2 ; encoding: [0x00,0x01,0x13,0xd6,0x00,0x03,0x0a,0x04]
3164b1702e8SMatt Arsenault; GFX11-NEXT:    s_setpc_b64 s[30:31] ; encoding: [0x1e,0x48,0x80,0xbe]
317*4e707201SJay Foad;
318*4e707201SJay Foad; GFX1200-LABEL: v_fma_f32_src_mods:
319*4e707201SJay Foad; GFX1200:       ; %bb.0:
320*4e707201SJay Foad; GFX1200-NEXT:    s_wait_loadcnt_dscnt 0x0 ; encoding: [0x00,0x00,0xc8,0xbf]
321*4e707201SJay Foad; GFX1200-NEXT:    s_wait_expcnt 0x0 ; encoding: [0x00,0x00,0xc4,0xbf]
322*4e707201SJay Foad; GFX1200-NEXT:    s_wait_samplecnt 0x0 ; encoding: [0x00,0x00,0xc2,0xbf]
323*4e707201SJay Foad; GFX1200-NEXT:    s_wait_bvhcnt 0x0 ; encoding: [0x00,0x00,0xc3,0xbf]
324*4e707201SJay Foad; GFX1200-NEXT:    s_wait_kmcnt 0x0 ; encoding: [0x00,0x00,0xc7,0xbf]
325*4e707201SJay Foad; GFX1200-NEXT:    v_fma_f32 v0, |v0|, v1, v2 ; encoding: [0x00,0x01,0x13,0xd6,0x00,0x03,0x0a,0x04]
326*4e707201SJay Foad; GFX1200-NEXT:    s_setpc_b64 s[30:31] ; encoding: [0x1e,0x48,0x80,0xbe]
3274b1702e8SMatt Arsenault  %fabs.x = call float @llvm.fabs.f32(float %x)
3284b1702e8SMatt Arsenault  %fma = call float @llvm.fma.f32(float %fabs.x, float %y, float %z)
3294b1702e8SMatt Arsenault  ret float %fma
3304b1702e8SMatt Arsenault}
3314b1702e8SMatt Arsenault
332*4e707201SJay Foad; NOT-GFX12: codeLenInByte = 16
333*4e707201SJay Foad; GFX1200: codeLenInByte = 32
3344b1702e8SMatt Arsenault
3354b1702e8SMatt Arsenaultdefine float @v_fmac_f32(float %x, float %y) {
3364b1702e8SMatt Arsenault; GFX9-LABEL: v_fmac_f32:
3374b1702e8SMatt Arsenault; GFX9:       ; %bb.0:
3384b1702e8SMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) ; encoding: [0x00,0x00,0x8c,0xbf]
3394b1702e8SMatt Arsenault; GFX9-NEXT:    v_fma_f32 v0, v0, v1, v0 ; encoding: [0x00,0x00,0xcb,0xd1,0x00,0x03,0x02,0x04]
3404b1702e8SMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31] ; encoding: [0x1e,0x1d,0x80,0xbe]
3414b1702e8SMatt Arsenault;
3424b1702e8SMatt Arsenault; GFX10-LABEL: v_fmac_f32:
3434b1702e8SMatt Arsenault; GFX10:       ; %bb.0:
3444b1702e8SMatt Arsenault; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) ; encoding: [0x00,0x00,0x8c,0xbf]
3454b1702e8SMatt Arsenault; GFX10-NEXT:    v_fmac_f32_e32 v0, v0, v1 ; encoding: [0x00,0x03,0x00,0x56]
3464b1702e8SMatt Arsenault; GFX10-NEXT:    s_setpc_b64 s[30:31] ; encoding: [0x1e,0x20,0x80,0xbe]
3474b1702e8SMatt Arsenault;
3484b1702e8SMatt Arsenault; GFX11-LABEL: v_fmac_f32:
3494b1702e8SMatt Arsenault; GFX11:       ; %bb.0:
3504b1702e8SMatt Arsenault; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) ; encoding: [0x00,0x00,0x89,0xbf]
3514b1702e8SMatt Arsenault; GFX11-NEXT:    v_fmac_f32_e32 v0, v0, v1 ; encoding: [0x00,0x03,0x00,0x56]
3524b1702e8SMatt Arsenault; GFX11-NEXT:    s_setpc_b64 s[30:31] ; encoding: [0x1e,0x48,0x80,0xbe]
353*4e707201SJay Foad;
354*4e707201SJay Foad; GFX1200-LABEL: v_fmac_f32:
355*4e707201SJay Foad; GFX1200:       ; %bb.0:
356*4e707201SJay Foad; GFX1200-NEXT:    s_wait_loadcnt_dscnt 0x0 ; encoding: [0x00,0x00,0xc8,0xbf]
357*4e707201SJay Foad; GFX1200-NEXT:    s_wait_expcnt 0x0 ; encoding: [0x00,0x00,0xc4,0xbf]
358*4e707201SJay Foad; GFX1200-NEXT:    s_wait_samplecnt 0x0 ; encoding: [0x00,0x00,0xc2,0xbf]
359*4e707201SJay Foad; GFX1200-NEXT:    s_wait_bvhcnt 0x0 ; encoding: [0x00,0x00,0xc3,0xbf]
360*4e707201SJay Foad; GFX1200-NEXT:    s_wait_kmcnt 0x0 ; encoding: [0x00,0x00,0xc7,0xbf]
361*4e707201SJay Foad; GFX1200-NEXT:    v_fmac_f32_e32 v0, v0, v1 ; encoding: [0x00,0x03,0x00,0x56]
362*4e707201SJay Foad; GFX1200-NEXT:    s_setpc_b64 s[30:31] ; encoding: [0x1e,0x48,0x80,0xbe]
3634b1702e8SMatt Arsenault  %fma = call float @llvm.fma.f32(float %x, float %y, float %x)
3644b1702e8SMatt Arsenault  ret float %fma
3654b1702e8SMatt Arsenault}
3664b1702e8SMatt Arsenault
3674b1702e8SMatt Arsenault; GFX9: codeLenInByte = 16
3684b1702e8SMatt Arsenault; GFX10: codeLenInByte = 12
3694b1702e8SMatt Arsenault; GFX11: codeLenInByte = 12
370*4e707201SJay Foad; GFX1200: codeLenInByte = 28
3714b1702e8SMatt Arsenault
3724b1702e8SMatt Arsenaultdefine float @v_fmaak_f32(float %x, float %y) {
3734b1702e8SMatt Arsenault; GFX9-LABEL: v_fmaak_f32:
3744b1702e8SMatt Arsenault; GFX9:       ; %bb.0:
3754b1702e8SMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) ; encoding: [0x00,0x00,0x8c,0xbf]
3764b1702e8SMatt Arsenault; GFX9-NEXT:    s_mov_b32 s4, 0x43800000 ; encoding: [0xff,0x00,0x84,0xbe,0x00,0x00,0x80,0x43]
3774b1702e8SMatt Arsenault; GFX9-NEXT:    v_fma_f32 v0, v0, v1, s4 ; encoding: [0x00,0x00,0xcb,0xd1,0x00,0x03,0x12,0x00]
3784b1702e8SMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31] ; encoding: [0x1e,0x1d,0x80,0xbe]
3794b1702e8SMatt Arsenault;
3804b1702e8SMatt Arsenault; GFX10-LABEL: v_fmaak_f32:
3814b1702e8SMatt Arsenault; GFX10:       ; %bb.0:
3824b1702e8SMatt Arsenault; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) ; encoding: [0x00,0x00,0x8c,0xbf]
3834b1702e8SMatt Arsenault; GFX10-NEXT:    v_fmaak_f32 v0, v0, v1, 0x43800000 ; encoding: [0x00,0x03,0x00,0x5a,0x00,0x00,0x80,0x43]
3844b1702e8SMatt Arsenault; GFX10-NEXT:    s_setpc_b64 s[30:31] ; encoding: [0x1e,0x20,0x80,0xbe]
3854b1702e8SMatt Arsenault;
3864b1702e8SMatt Arsenault; GFX11-LABEL: v_fmaak_f32:
3874b1702e8SMatt Arsenault; GFX11:       ; %bb.0:
3884b1702e8SMatt Arsenault; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) ; encoding: [0x00,0x00,0x89,0xbf]
3894b1702e8SMatt Arsenault; GFX11-NEXT:    v_fmaak_f32 v0, v0, v1, 0x43800000 ; encoding: [0x00,0x03,0x00,0x5a,0x00,0x00,0x80,0x43]
3904b1702e8SMatt Arsenault; GFX11-NEXT:    s_setpc_b64 s[30:31] ; encoding: [0x1e,0x48,0x80,0xbe]
391*4e707201SJay Foad;
392*4e707201SJay Foad; GFX1200-LABEL: v_fmaak_f32:
393*4e707201SJay Foad; GFX1200:       ; %bb.0:
394*4e707201SJay Foad; GFX1200-NEXT:    s_wait_loadcnt_dscnt 0x0 ; encoding: [0x00,0x00,0xc8,0xbf]
395*4e707201SJay Foad; GFX1200-NEXT:    s_wait_expcnt 0x0 ; encoding: [0x00,0x00,0xc4,0xbf]
396*4e707201SJay Foad; GFX1200-NEXT:    s_wait_samplecnt 0x0 ; encoding: [0x00,0x00,0xc2,0xbf]
397*4e707201SJay Foad; GFX1200-NEXT:    s_wait_bvhcnt 0x0 ; encoding: [0x00,0x00,0xc3,0xbf]
398*4e707201SJay Foad; GFX1200-NEXT:    s_wait_kmcnt 0x0 ; encoding: [0x00,0x00,0xc7,0xbf]
399*4e707201SJay Foad; GFX1200-NEXT:    v_fmaak_f32 v0, v0, v1, 0x43800000 ; encoding: [0x00,0x03,0x00,0x5a,0x00,0x00,0x80,0x43]
400*4e707201SJay Foad; GFX1200-NEXT:    s_setpc_b64 s[30:31] ; encoding: [0x1e,0x48,0x80,0xbe]
4014b1702e8SMatt Arsenault  %fma = call float @llvm.fma.f32(float %x, float %y, float 256.0)
4024b1702e8SMatt Arsenault  ret float %fma
4034b1702e8SMatt Arsenault}
4044b1702e8SMatt Arsenault
4054b1702e8SMatt Arsenault; GFX9: codeLenInByte = 24
4064b1702e8SMatt Arsenault; GFX10: codeLenInByte = 16
4074b1702e8SMatt Arsenault; GFX11: codeLenInByte = 16
408*4e707201SJay Foad; GFX1200: codeLenInByte = 32
4094b1702e8SMatt Arsenault
4104b1702e8SMatt Arsenaultdefine float @v_fma_k_f32_src_mods(float %x, float %y) {
4114b1702e8SMatt Arsenault; GFX9-LABEL: v_fma_k_f32_src_mods:
4124b1702e8SMatt Arsenault; GFX9:       ; %bb.0:
4134b1702e8SMatt Arsenault; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) ; encoding: [0x00,0x00,0x8c,0xbf]
4144b1702e8SMatt Arsenault; GFX9-NEXT:    s_mov_b32 s4, 0x43800000 ; encoding: [0xff,0x00,0x84,0xbe,0x00,0x00,0x80,0x43]
4154b1702e8SMatt Arsenault; GFX9-NEXT:    v_fma_f32 v0, |v0|, v1, s4 ; encoding: [0x00,0x01,0xcb,0xd1,0x00,0x03,0x12,0x00]
4164b1702e8SMatt Arsenault; GFX9-NEXT:    s_setpc_b64 s[30:31] ; encoding: [0x1e,0x1d,0x80,0xbe]
4174b1702e8SMatt Arsenault;
4184b1702e8SMatt Arsenault; GFX10-LABEL: v_fma_k_f32_src_mods:
4194b1702e8SMatt Arsenault; GFX10:       ; %bb.0:
4204b1702e8SMatt Arsenault; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) ; encoding: [0x00,0x00,0x8c,0xbf]
4214b1702e8SMatt Arsenault; GFX10-NEXT:    v_fma_f32 v0, |v0|, v1, 0x43800000 ; encoding: [0x00,0x01,0x4b,0xd5,0x00,0x03,0xfe,0x03,0x00,0x00,0x80,0x43]
4224b1702e8SMatt Arsenault; GFX10-NEXT:    s_setpc_b64 s[30:31] ; encoding: [0x1e,0x20,0x80,0xbe]
4234b1702e8SMatt Arsenault;
4244b1702e8SMatt Arsenault; GFX11-LABEL: v_fma_k_f32_src_mods:
4254b1702e8SMatt Arsenault; GFX11:       ; %bb.0:
4264b1702e8SMatt Arsenault; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) ; encoding: [0x00,0x00,0x89,0xbf]
4274b1702e8SMatt Arsenault; GFX11-NEXT:    v_fma_f32 v0, |v0|, v1, 0x43800000 ; encoding: [0x00,0x01,0x13,0xd6,0x00,0x03,0xfe,0x03,0x00,0x00,0x80,0x43]
4284b1702e8SMatt Arsenault; GFX11-NEXT:    s_setpc_b64 s[30:31] ; encoding: [0x1e,0x48,0x80,0xbe]
429*4e707201SJay Foad;
430*4e707201SJay Foad; GFX1200-LABEL: v_fma_k_f32_src_mods:
431*4e707201SJay Foad; GFX1200:       ; %bb.0:
432*4e707201SJay Foad; GFX1200-NEXT:    s_wait_loadcnt_dscnt 0x0 ; encoding: [0x00,0x00,0xc8,0xbf]
433*4e707201SJay Foad; GFX1200-NEXT:    s_wait_expcnt 0x0 ; encoding: [0x00,0x00,0xc4,0xbf]
434*4e707201SJay Foad; GFX1200-NEXT:    s_wait_samplecnt 0x0 ; encoding: [0x00,0x00,0xc2,0xbf]
435*4e707201SJay Foad; GFX1200-NEXT:    s_wait_bvhcnt 0x0 ; encoding: [0x00,0x00,0xc3,0xbf]
436*4e707201SJay Foad; GFX1200-NEXT:    s_wait_kmcnt 0x0 ; encoding: [0x00,0x00,0xc7,0xbf]
437*4e707201SJay Foad; GFX1200-NEXT:    v_fma_f32 v0, |v0|, v1, 0x43800000 ; encoding: [0x00,0x01,0x13,0xd6,0x00,0x03,0xfe,0x03,0x00,0x00,0x80,0x43]
438*4e707201SJay Foad; GFX1200-NEXT:    s_setpc_b64 s[30:31] ; encoding: [0x1e,0x48,0x80,0xbe]
4394b1702e8SMatt Arsenault  %fabs.x = call float @llvm.fabs.f32(float %x)
4404b1702e8SMatt Arsenault  %fma = call float @llvm.fma.f32(float %fabs.x, float %y, float 256.0)
4414b1702e8SMatt Arsenault  ret float %fma
4424b1702e8SMatt Arsenault}
4434b1702e8SMatt Arsenault
4444b1702e8SMatt Arsenault; GFX9: codeLenInByte = 24
4454b1702e8SMatt Arsenault; GFX10: codeLenInByte = 20
4464b1702e8SMatt Arsenault; GFX11: codeLenInByte = 20
447*4e707201SJay Foad; GFX1200: codeLenInByte = 36
448ecfdc23dSMirko Brkušanin
449ecfdc23dSMirko Brkušanindefine amdgpu_ps float @s_fmaak_f32(float inreg %x, float inreg %y) {
450ecfdc23dSMirko Brkušanin; GFX9-LABEL: s_fmaak_f32:
451ecfdc23dSMirko Brkušanin; GFX9:       ; %bb.0:
452ecfdc23dSMirko Brkušanin; GFX9-NEXT:    v_mov_b32_e32 v0, s1 ; encoding: [0x01,0x02,0x00,0x7e]
453ecfdc23dSMirko Brkušanin; GFX9-NEXT:    v_mov_b32_e32 v1, 0x43800000 ; encoding: [0xff,0x02,0x02,0x7e,0x00,0x00,0x80,0x43]
454ecfdc23dSMirko Brkušanin; GFX9-NEXT:    v_fma_f32 v0, s0, v0, v1 ; encoding: [0x00,0x00,0xcb,0xd1,0x00,0x00,0x06,0x04]
455ecfdc23dSMirko Brkušanin; GFX9-NEXT:    ; return to shader part epilog
456ecfdc23dSMirko Brkušanin;
457ecfdc23dSMirko Brkušanin; GFX10-LABEL: s_fmaak_f32:
458ecfdc23dSMirko Brkušanin; GFX10:       ; %bb.0:
4590d408317SJay Foad; GFX10-NEXT:    v_mov_b32_e32 v0, s1 ; encoding: [0x01,0x02,0x00,0x7e]
4600d408317SJay Foad; GFX10-NEXT:    v_fmaak_f32 v0, s0, v0, 0x43800000 ; encoding: [0x00,0x00,0x00,0x5a,0x00,0x00,0x80,0x43]
461ecfdc23dSMirko Brkušanin; GFX10-NEXT:    ; return to shader part epilog
462ecfdc23dSMirko Brkušanin;
463ecfdc23dSMirko Brkušanin; GFX1100-LABEL: s_fmaak_f32:
464ecfdc23dSMirko Brkušanin; GFX1100:       ; %bb.0:
4650d408317SJay Foad; GFX1100-NEXT:    v_mov_b32_e32 v0, s1 ; encoding: [0x01,0x02,0x00,0x7e]
466ecfdc23dSMirko Brkušanin; GFX1100-NEXT:    s_delay_alu instid0(VALU_DEP_1) ; encoding: [0x01,0x00,0x87,0xbf]
4670d408317SJay Foad; GFX1100-NEXT:    v_fmaak_f32 v0, s0, v0, 0x43800000 ; encoding: [0x00,0x00,0x00,0x5a,0x00,0x00,0x80,0x43]
468ecfdc23dSMirko Brkušanin; GFX1100-NEXT:    ; return to shader part epilog
469ecfdc23dSMirko Brkušanin;
470ecfdc23dSMirko Brkušanin; GFX1150-LABEL: s_fmaak_f32:
471ecfdc23dSMirko Brkušanin; GFX1150:       ; %bb.0:
472ecfdc23dSMirko Brkušanin; GFX1150-NEXT:    s_fmaak_f32 s0, s0, s1, 0x43800000 ; encoding: [0x00,0x01,0x80,0xa2,0x00,0x00,0x80,0x43]
473ecfdc23dSMirko Brkušanin; GFX1150-NEXT:    s_delay_alu instid0(SALU_CYCLE_3) ; encoding: [0x0b,0x00,0x87,0xbf]
474ecfdc23dSMirko Brkušanin; GFX1150-NEXT:    v_mov_b32_e32 v0, s0 ; encoding: [0x00,0x02,0x00,0x7e]
475ecfdc23dSMirko Brkušanin; GFX1150-NEXT:    ; return to shader part epilog
476*4e707201SJay Foad;
477*4e707201SJay Foad; GFX1200-LABEL: s_fmaak_f32:
478*4e707201SJay Foad; GFX1200:       ; %bb.0:
479*4e707201SJay Foad; GFX1200-NEXT:    s_fmaak_f32 s0, s0, s1, 0x43800000 ; encoding: [0x00,0x01,0x80,0xa2,0x00,0x00,0x80,0x43]
480*4e707201SJay Foad; GFX1200-NEXT:    s_delay_alu instid0(SALU_CYCLE_3) ; encoding: [0x0b,0x00,0x87,0xbf]
481*4e707201SJay Foad; GFX1200-NEXT:    v_mov_b32_e32 v0, s0 ; encoding: [0x00,0x02,0x00,0x7e]
482*4e707201SJay Foad; GFX1200-NEXT:    ; return to shader part epilog
483ecfdc23dSMirko Brkušanin  %fma = call float @llvm.fma.f32(float %x, float %y, float 256.0)
484ecfdc23dSMirko Brkušanin  ret float %fma
485ecfdc23dSMirko Brkušanin}
486ecfdc23dSMirko Brkušanin
487ecfdc23dSMirko Brkušanin; GFX9: codeLenInByte = 20
4880d408317SJay Foad; GFX10: codeLenInByte = 12
4890d408317SJay Foad; GFX1100: codeLenInByte = 16
490ecfdc23dSMirko Brkušanin; GFX1150: codeLenInByte = 16
491*4e707201SJay Foad; GFX1200: codeLenInByte = 16
492