xref: /llvm-project/llvm/test/CodeGen/AMDGPU/abs_i16.ll (revision 6206f5444fc0732e6495703c75a67f1f90f5b418)
17091dd27STim Gymnich; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
27091dd27STim Gymnich; RUN: llc -mtriple=amdgcn-- -mcpu=gfx600 < %s | FileCheck -check-prefix=GFX6 %s
37091dd27STim Gymnich; RUN: llc -mtriple=amdgcn-- -mcpu=gfx700 < %s | FileCheck -check-prefix=GFX7 %s
47091dd27STim Gymnich; RUN: llc -mtriple=amdgcn-- -mcpu=gfx803 < %s | FileCheck -check-prefix=GFX8 %s
57091dd27STim Gymnich; RUN: llc -mtriple=amdgcn-- -mcpu=gfx900 < %s | FileCheck -check-prefix=GFX9 %s
67091dd27STim Gymnich; RUN: llc -mtriple=amdgcn-- -mcpu=gfx1010 < %s | FileCheck -check-prefix=GFX10 %s
77091dd27STim Gymnich; RUN: llc -mtriple=amdgcn-- -mcpu=gfx1100 < %s | FileCheck -check-prefix=GFX11 %s
87091dd27STim Gymnich; RUN: llc -mtriple=amdgcn-- -mcpu=gfx1200 < %s | FileCheck -check-prefix=GFX12 %s
97091dd27STim Gymnich
107091dd27STim Gymnichdefine i16 @abs_i16(i16 %arg) {
117091dd27STim Gymnich; GFX6-LABEL: abs_i16:
127091dd27STim Gymnich; GFX6:       ; %bb.0:
137091dd27STim Gymnich; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
147091dd27STim Gymnich; GFX6-NEXT:    v_bfe_i32 v0, v0, 0, 16
157091dd27STim Gymnich; GFX6-NEXT:    v_sub_i32_e32 v1, vcc, 0, v0
167091dd27STim Gymnich; GFX6-NEXT:    v_max_i32_e32 v0, v0, v1
177091dd27STim Gymnich; GFX6-NEXT:    s_setpc_b64 s[30:31]
187091dd27STim Gymnich;
197091dd27STim Gymnich; GFX7-LABEL: abs_i16:
207091dd27STim Gymnich; GFX7:       ; %bb.0:
217091dd27STim Gymnich; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
227091dd27STim Gymnich; GFX7-NEXT:    v_bfe_i32 v0, v0, 0, 16
237091dd27STim Gymnich; GFX7-NEXT:    v_sub_i32_e32 v1, vcc, 0, v0
247091dd27STim Gymnich; GFX7-NEXT:    v_max_i32_e32 v0, v0, v1
257091dd27STim Gymnich; GFX7-NEXT:    s_setpc_b64 s[30:31]
267091dd27STim Gymnich;
277091dd27STim Gymnich; GFX8-LABEL: abs_i16:
287091dd27STim Gymnich; GFX8:       ; %bb.0:
297091dd27STim Gymnich; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
307091dd27STim Gymnich; GFX8-NEXT:    v_sub_u16_e32 v1, 0, v0
317091dd27STim Gymnich; GFX8-NEXT:    v_max_i16_e32 v0, v0, v1
327091dd27STim Gymnich; GFX8-NEXT:    s_setpc_b64 s[30:31]
337091dd27STim Gymnich;
347091dd27STim Gymnich; GFX9-LABEL: abs_i16:
357091dd27STim Gymnich; GFX9:       ; %bb.0:
367091dd27STim Gymnich; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
377091dd27STim Gymnich; GFX9-NEXT:    v_sub_u16_e32 v1, 0, v0
387091dd27STim Gymnich; GFX9-NEXT:    v_max_i16_e32 v0, v0, v1
397091dd27STim Gymnich; GFX9-NEXT:    s_setpc_b64 s[30:31]
407091dd27STim Gymnich;
417091dd27STim Gymnich; GFX10-LABEL: abs_i16:
427091dd27STim Gymnich; GFX10:       ; %bb.0:
437091dd27STim Gymnich; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
447091dd27STim Gymnich; GFX10-NEXT:    v_sub_nc_u16 v1, 0, v0
457091dd27STim Gymnich; GFX10-NEXT:    v_max_i16 v0, v0, v1
467091dd27STim Gymnich; GFX10-NEXT:    s_setpc_b64 s[30:31]
477091dd27STim Gymnich;
487091dd27STim Gymnich; GFX11-LABEL: abs_i16:
497091dd27STim Gymnich; GFX11:       ; %bb.0:
507091dd27STim Gymnich; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
517091dd27STim Gymnich; GFX11-NEXT:    v_sub_nc_u16 v1, 0, v0
527091dd27STim Gymnich; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)
537091dd27STim Gymnich; GFX11-NEXT:    v_max_i16 v0, v0, v1
547091dd27STim Gymnich; GFX11-NEXT:    s_setpc_b64 s[30:31]
557091dd27STim Gymnich;
567091dd27STim Gymnich; GFX12-LABEL: abs_i16:
577091dd27STim Gymnich; GFX12:       ; %bb.0:
587091dd27STim Gymnich; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0
597091dd27STim Gymnich; GFX12-NEXT:    s_wait_expcnt 0x0
607091dd27STim Gymnich; GFX12-NEXT:    s_wait_samplecnt 0x0
617091dd27STim Gymnich; GFX12-NEXT:    s_wait_bvhcnt 0x0
627091dd27STim Gymnich; GFX12-NEXT:    s_wait_kmcnt 0x0
637091dd27STim Gymnich; GFX12-NEXT:    v_sub_nc_u16 v1, 0, v0
647091dd27STim Gymnich; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1)
657091dd27STim Gymnich; GFX12-NEXT:    v_max_i16 v0, v0, v1
667091dd27STim Gymnich; GFX12-NEXT:    s_setpc_b64 s[30:31]
677091dd27STim Gymnich  %res = call i16 @llvm.abs.i16(i16 %arg, i1 false)
687091dd27STim Gymnich  ret i16 %res
697091dd27STim Gymnich}
707091dd27STim Gymnich
717091dd27STim Gymnichdefine <2 x i16> @v_abs_v2i16(<2 x i16> %arg) {
727091dd27STim Gymnich; GFX6-LABEL: v_abs_v2i16:
737091dd27STim Gymnich; GFX6:       ; %bb.0:
747091dd27STim Gymnich; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
757091dd27STim Gymnich; GFX6-NEXT:    v_bfe_i32 v0, v0, 0, 16
767091dd27STim Gymnich; GFX6-NEXT:    v_bfe_i32 v1, v1, 0, 16
777091dd27STim Gymnich; GFX6-NEXT:    v_sub_i32_e32 v2, vcc, 0, v0
787091dd27STim Gymnich; GFX6-NEXT:    v_max_i32_e32 v0, v0, v2
797091dd27STim Gymnich; GFX6-NEXT:    v_sub_i32_e32 v2, vcc, 0, v1
807091dd27STim Gymnich; GFX6-NEXT:    v_max_i32_e32 v1, v1, v2
817091dd27STim Gymnich; GFX6-NEXT:    v_lshlrev_b32_e32 v2, 16, v1
827091dd27STim Gymnich; GFX6-NEXT:    v_or_b32_e32 v0, v0, v2
837091dd27STim Gymnich; GFX6-NEXT:    s_setpc_b64 s[30:31]
847091dd27STim Gymnich;
857091dd27STim Gymnich; GFX7-LABEL: v_abs_v2i16:
867091dd27STim Gymnich; GFX7:       ; %bb.0:
877091dd27STim Gymnich; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
887091dd27STim Gymnich; GFX7-NEXT:    v_bfe_i32 v0, v0, 0, 16
897091dd27STim Gymnich; GFX7-NEXT:    v_bfe_i32 v1, v1, 0, 16
907091dd27STim Gymnich; GFX7-NEXT:    v_sub_i32_e32 v2, vcc, 0, v0
917091dd27STim Gymnich; GFX7-NEXT:    v_max_i32_e32 v0, v0, v2
927091dd27STim Gymnich; GFX7-NEXT:    v_sub_i32_e32 v2, vcc, 0, v1
937091dd27STim Gymnich; GFX7-NEXT:    v_max_i32_e32 v1, v1, v2
947091dd27STim Gymnich; GFX7-NEXT:    v_lshlrev_b32_e32 v2, 16, v1
957091dd27STim Gymnich; GFX7-NEXT:    v_or_b32_e32 v0, v0, v2
967091dd27STim Gymnich; GFX7-NEXT:    s_setpc_b64 s[30:31]
977091dd27STim Gymnich;
987091dd27STim Gymnich; GFX8-LABEL: v_abs_v2i16:
997091dd27STim Gymnich; GFX8:       ; %bb.0:
1007091dd27STim Gymnich; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
10184e9401aSJeffrey Byrnes; GFX8-NEXT:    v_mov_b32_e32 v1, 0
10284e9401aSJeffrey Byrnes; GFX8-NEXT:    v_sub_u16_sdwa v1, v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_1
1037091dd27STim Gymnich; GFX8-NEXT:    v_sub_u16_e32 v2, 0, v0
10484e9401aSJeffrey Byrnes; GFX8-NEXT:    v_max_i16_sdwa v1, v0, v1 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:DWORD
1057091dd27STim Gymnich; GFX8-NEXT:    v_max_i16_e32 v0, v0, v2
1067091dd27STim Gymnich; GFX8-NEXT:    v_or_b32_e32 v0, v0, v1
1077091dd27STim Gymnich; GFX8-NEXT:    s_setpc_b64 s[30:31]
1087091dd27STim Gymnich;
1097091dd27STim Gymnich; GFX9-LABEL: v_abs_v2i16:
1107091dd27STim Gymnich; GFX9:       ; %bb.0:
1117091dd27STim Gymnich; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1127091dd27STim Gymnich; GFX9-NEXT:    v_pk_sub_i16 v1, 0, v0
1137091dd27STim Gymnich; GFX9-NEXT:    v_pk_max_i16 v0, v0, v1
1147091dd27STim Gymnich; GFX9-NEXT:    s_setpc_b64 s[30:31]
1157091dd27STim Gymnich;
1167091dd27STim Gymnich; GFX10-LABEL: v_abs_v2i16:
1177091dd27STim Gymnich; GFX10:       ; %bb.0:
1187091dd27STim Gymnich; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1197091dd27STim Gymnich; GFX10-NEXT:    v_pk_sub_i16 v1, 0, v0
1207091dd27STim Gymnich; GFX10-NEXT:    v_pk_max_i16 v0, v0, v1
1217091dd27STim Gymnich; GFX10-NEXT:    s_setpc_b64 s[30:31]
1227091dd27STim Gymnich;
1237091dd27STim Gymnich; GFX11-LABEL: v_abs_v2i16:
1247091dd27STim Gymnich; GFX11:       ; %bb.0:
1257091dd27STim Gymnich; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1267091dd27STim Gymnich; GFX11-NEXT:    v_pk_sub_i16 v1, 0, v0
1277091dd27STim Gymnich; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)
1287091dd27STim Gymnich; GFX11-NEXT:    v_pk_max_i16 v0, v0, v1
1297091dd27STim Gymnich; GFX11-NEXT:    s_setpc_b64 s[30:31]
1307091dd27STim Gymnich;
1317091dd27STim Gymnich; GFX12-LABEL: v_abs_v2i16:
1327091dd27STim Gymnich; GFX12:       ; %bb.0:
1337091dd27STim Gymnich; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0
1347091dd27STim Gymnich; GFX12-NEXT:    s_wait_expcnt 0x0
1357091dd27STim Gymnich; GFX12-NEXT:    s_wait_samplecnt 0x0
1367091dd27STim Gymnich; GFX12-NEXT:    s_wait_bvhcnt 0x0
1377091dd27STim Gymnich; GFX12-NEXT:    s_wait_kmcnt 0x0
1387091dd27STim Gymnich; GFX12-NEXT:    v_pk_sub_i16 v1, 0, v0
1397091dd27STim Gymnich; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1)
1407091dd27STim Gymnich; GFX12-NEXT:    v_pk_max_i16 v0, v0, v1
1417091dd27STim Gymnich; GFX12-NEXT:    s_setpc_b64 s[30:31]
1427091dd27STim Gymnich  %res = call <2 x i16> @llvm.abs.v2i16(<2 x i16> %arg, i1 false)
1437091dd27STim Gymnich  ret <2 x i16> %res
1447091dd27STim Gymnich}
1457091dd27STim Gymnich
1467091dd27STim Gymnichdefine <3 x i16> @v_abs_v3i16(<3 x i16> %arg) {
1477091dd27STim Gymnich; GFX6-LABEL: v_abs_v3i16:
1487091dd27STim Gymnich; GFX6:       ; %bb.0:
1497091dd27STim Gymnich; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1507091dd27STim Gymnich; GFX6-NEXT:    v_bfe_i32 v0, v0, 0, 16
1517091dd27STim Gymnich; GFX6-NEXT:    v_bfe_i32 v1, v1, 0, 16
1527091dd27STim Gymnich; GFX6-NEXT:    v_sub_i32_e32 v3, vcc, 0, v0
1537091dd27STim Gymnich; GFX6-NEXT:    v_max_i32_e32 v0, v0, v3
1547091dd27STim Gymnich; GFX6-NEXT:    v_sub_i32_e32 v3, vcc, 0, v1
1557091dd27STim Gymnich; GFX6-NEXT:    v_max_i32_e32 v1, v1, v3
1567091dd27STim Gymnich; GFX6-NEXT:    v_bfe_i32 v2, v2, 0, 16
1577091dd27STim Gymnich; GFX6-NEXT:    v_lshlrev_b32_e32 v1, 16, v1
1587091dd27STim Gymnich; GFX6-NEXT:    v_or_b32_e32 v0, v0, v1
1597091dd27STim Gymnich; GFX6-NEXT:    v_sub_i32_e32 v1, vcc, 0, v2
1607091dd27STim Gymnich; GFX6-NEXT:    v_max_i32_e32 v2, v2, v1
1617091dd27STim Gymnich; GFX6-NEXT:    v_alignbit_b32 v1, v2, v0, 16
1627091dd27STim Gymnich; GFX6-NEXT:    s_setpc_b64 s[30:31]
1637091dd27STim Gymnich;
1647091dd27STim Gymnich; GFX7-LABEL: v_abs_v3i16:
1657091dd27STim Gymnich; GFX7:       ; %bb.0:
1667091dd27STim Gymnich; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1677091dd27STim Gymnich; GFX7-NEXT:    v_bfe_i32 v0, v0, 0, 16
1687091dd27STim Gymnich; GFX7-NEXT:    v_bfe_i32 v1, v1, 0, 16
1697091dd27STim Gymnich; GFX7-NEXT:    v_sub_i32_e32 v3, vcc, 0, v0
1707091dd27STim Gymnich; GFX7-NEXT:    v_max_i32_e32 v0, v0, v3
1717091dd27STim Gymnich; GFX7-NEXT:    v_sub_i32_e32 v3, vcc, 0, v1
1727091dd27STim Gymnich; GFX7-NEXT:    v_max_i32_e32 v1, v1, v3
1737091dd27STim Gymnich; GFX7-NEXT:    v_bfe_i32 v2, v2, 0, 16
1747091dd27STim Gymnich; GFX7-NEXT:    v_lshlrev_b32_e32 v1, 16, v1
1757091dd27STim Gymnich; GFX7-NEXT:    v_or_b32_e32 v0, v0, v1
1767091dd27STim Gymnich; GFX7-NEXT:    v_sub_i32_e32 v1, vcc, 0, v2
1777091dd27STim Gymnich; GFX7-NEXT:    v_max_i32_e32 v2, v2, v1
1787091dd27STim Gymnich; GFX7-NEXT:    v_alignbit_b32 v1, v2, v0, 16
1797091dd27STim Gymnich; GFX7-NEXT:    s_setpc_b64 s[30:31]
1807091dd27STim Gymnich;
1817091dd27STim Gymnich; GFX8-LABEL: v_abs_v3i16:
1827091dd27STim Gymnich; GFX8:       ; %bb.0:
1837091dd27STim Gymnich; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
18484e9401aSJeffrey Byrnes; GFX8-NEXT:    v_mov_b32_e32 v2, 0
1857091dd27STim Gymnich; GFX8-NEXT:    v_sub_u16_e32 v3, 0, v1
18684e9401aSJeffrey Byrnes; GFX8-NEXT:    v_sub_u16_sdwa v2, v2, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_1
1877091dd27STim Gymnich; GFX8-NEXT:    v_max_i16_e32 v1, v1, v3
1887091dd27STim Gymnich; GFX8-NEXT:    v_sub_u16_e32 v3, 0, v0
18984e9401aSJeffrey Byrnes; GFX8-NEXT:    v_max_i16_sdwa v2, v0, v2 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:DWORD
1907091dd27STim Gymnich; GFX8-NEXT:    v_max_i16_e32 v0, v0, v3
1917091dd27STim Gymnich; GFX8-NEXT:    v_or_b32_e32 v0, v0, v2
1927091dd27STim Gymnich; GFX8-NEXT:    s_setpc_b64 s[30:31]
1937091dd27STim Gymnich;
1947091dd27STim Gymnich; GFX9-LABEL: v_abs_v3i16:
1957091dd27STim Gymnich; GFX9:       ; %bb.0:
1967091dd27STim Gymnich; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1977091dd27STim Gymnich; GFX9-NEXT:    v_pk_sub_i16 v2, 0, v0
1987091dd27STim Gymnich; GFX9-NEXT:    v_pk_max_i16 v0, v0, v2
1997091dd27STim Gymnich; GFX9-NEXT:    v_pk_sub_i16 v2, 0, v1
2007091dd27STim Gymnich; GFX9-NEXT:    v_pk_max_i16 v1, v1, v2
2017091dd27STim Gymnich; GFX9-NEXT:    s_setpc_b64 s[30:31]
2027091dd27STim Gymnich;
2037091dd27STim Gymnich; GFX10-LABEL: v_abs_v3i16:
2047091dd27STim Gymnich; GFX10:       ; %bb.0:
2057091dd27STim Gymnich; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2067091dd27STim Gymnich; GFX10-NEXT:    v_pk_sub_i16 v2, 0, v0
2077091dd27STim Gymnich; GFX10-NEXT:    v_pk_sub_i16 v3, 0, v1
2087091dd27STim Gymnich; GFX10-NEXT:    v_pk_max_i16 v0, v0, v2
2097091dd27STim Gymnich; GFX10-NEXT:    v_pk_max_i16 v1, v1, v3
2107091dd27STim Gymnich; GFX10-NEXT:    s_setpc_b64 s[30:31]
2117091dd27STim Gymnich;
2127091dd27STim Gymnich; GFX11-LABEL: v_abs_v3i16:
2137091dd27STim Gymnich; GFX11:       ; %bb.0:
2147091dd27STim Gymnich; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2157091dd27STim Gymnich; GFX11-NEXT:    v_pk_sub_i16 v2, 0, v0
2167091dd27STim Gymnich; GFX11-NEXT:    v_pk_sub_i16 v3, 0, v1
2177091dd27STim Gymnich; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
2187091dd27STim Gymnich; GFX11-NEXT:    v_pk_max_i16 v0, v0, v2
2197091dd27STim Gymnich; GFX11-NEXT:    v_pk_max_i16 v1, v1, v3
2207091dd27STim Gymnich; GFX11-NEXT:    s_setpc_b64 s[30:31]
2217091dd27STim Gymnich;
2227091dd27STim Gymnich; GFX12-LABEL: v_abs_v3i16:
2237091dd27STim Gymnich; GFX12:       ; %bb.0:
2247091dd27STim Gymnich; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0
2257091dd27STim Gymnich; GFX12-NEXT:    s_wait_expcnt 0x0
2267091dd27STim Gymnich; GFX12-NEXT:    s_wait_samplecnt 0x0
2277091dd27STim Gymnich; GFX12-NEXT:    s_wait_bvhcnt 0x0
2287091dd27STim Gymnich; GFX12-NEXT:    s_wait_kmcnt 0x0
2297091dd27STim Gymnich; GFX12-NEXT:    v_pk_sub_i16 v2, 0, v0
2307091dd27STim Gymnich; GFX12-NEXT:    v_pk_sub_i16 v3, 0, v1
2317091dd27STim Gymnich; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
2327091dd27STim Gymnich; GFX12-NEXT:    v_pk_max_i16 v0, v0, v2
2337091dd27STim Gymnich; GFX12-NEXT:    v_pk_max_i16 v1, v1, v3
2347091dd27STim Gymnich; GFX12-NEXT:    s_setpc_b64 s[30:31]
2357091dd27STim Gymnich  %res = call <3 x i16> @llvm.abs.v3i16(<3 x i16> %arg, i1 false)
2367091dd27STim Gymnich  ret <3 x i16> %res
2377091dd27STim Gymnich}
2387091dd27STim Gymnich
2397091dd27STim Gymnichdefine <4 x i16> @v_abs_v4i16(<4 x i16> %arg) {
2407091dd27STim Gymnich; GFX6-LABEL: v_abs_v4i16:
2417091dd27STim Gymnich; GFX6:       ; %bb.0:
2427091dd27STim Gymnich; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2437091dd27STim Gymnich; GFX6-NEXT:    v_bfe_i32 v2, v2, 0, 16
2447091dd27STim Gymnich; GFX6-NEXT:    v_bfe_i32 v3, v3, 0, 16
2457091dd27STim Gymnich; GFX6-NEXT:    v_sub_i32_e32 v4, vcc, 0, v2
2467091dd27STim Gymnich; GFX6-NEXT:    v_max_i32_e32 v2, v2, v4
2477091dd27STim Gymnich; GFX6-NEXT:    v_sub_i32_e32 v4, vcc, 0, v3
2487091dd27STim Gymnich; GFX6-NEXT:    v_max_i32_e32 v3, v3, v4
2497091dd27STim Gymnich; GFX6-NEXT:    v_bfe_i32 v0, v0, 0, 16
2507091dd27STim Gymnich; GFX6-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
2517091dd27STim Gymnich; GFX6-NEXT:    v_bfe_i32 v1, v1, 0, 16
2527091dd27STim Gymnich; GFX6-NEXT:    v_or_b32_e32 v2, v2, v3
2537091dd27STim Gymnich; GFX6-NEXT:    v_sub_i32_e32 v3, vcc, 0, v0
2547091dd27STim Gymnich; GFX6-NEXT:    v_max_i32_e32 v0, v0, v3
2557091dd27STim Gymnich; GFX6-NEXT:    v_sub_i32_e32 v3, vcc, 0, v1
2567091dd27STim Gymnich; GFX6-NEXT:    v_max_i32_e32 v1, v1, v3
2577091dd27STim Gymnich; GFX6-NEXT:    v_lshlrev_b32_e32 v1, 16, v1
2587091dd27STim Gymnich; GFX6-NEXT:    v_or_b32_e32 v0, v0, v1
2597091dd27STim Gymnich; GFX6-NEXT:    v_alignbit_b32 v1, v2, v0, 16
2607091dd27STim Gymnich; GFX6-NEXT:    v_lshrrev_b32_e32 v3, 16, v2
2617091dd27STim Gymnich; GFX6-NEXT:    s_setpc_b64 s[30:31]
2627091dd27STim Gymnich;
2637091dd27STim Gymnich; GFX7-LABEL: v_abs_v4i16:
2647091dd27STim Gymnich; GFX7:       ; %bb.0:
2657091dd27STim Gymnich; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2667091dd27STim Gymnich; GFX7-NEXT:    v_bfe_i32 v2, v2, 0, 16
2677091dd27STim Gymnich; GFX7-NEXT:    v_bfe_i32 v3, v3, 0, 16
2687091dd27STim Gymnich; GFX7-NEXT:    v_sub_i32_e32 v4, vcc, 0, v2
2697091dd27STim Gymnich; GFX7-NEXT:    v_max_i32_e32 v2, v2, v4
2707091dd27STim Gymnich; GFX7-NEXT:    v_sub_i32_e32 v4, vcc, 0, v3
2717091dd27STim Gymnich; GFX7-NEXT:    v_max_i32_e32 v3, v3, v4
2727091dd27STim Gymnich; GFX7-NEXT:    v_bfe_i32 v0, v0, 0, 16
2737091dd27STim Gymnich; GFX7-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
2747091dd27STim Gymnich; GFX7-NEXT:    v_bfe_i32 v1, v1, 0, 16
2757091dd27STim Gymnich; GFX7-NEXT:    v_or_b32_e32 v2, v2, v3
2767091dd27STim Gymnich; GFX7-NEXT:    v_sub_i32_e32 v3, vcc, 0, v0
2777091dd27STim Gymnich; GFX7-NEXT:    v_max_i32_e32 v0, v0, v3
2787091dd27STim Gymnich; GFX7-NEXT:    v_sub_i32_e32 v3, vcc, 0, v1
2797091dd27STim Gymnich; GFX7-NEXT:    v_max_i32_e32 v1, v1, v3
2807091dd27STim Gymnich; GFX7-NEXT:    v_lshlrev_b32_e32 v1, 16, v1
2817091dd27STim Gymnich; GFX7-NEXT:    v_or_b32_e32 v0, v0, v1
2827091dd27STim Gymnich; GFX7-NEXT:    v_alignbit_b32 v1, v2, v0, 16
2837091dd27STim Gymnich; GFX7-NEXT:    v_lshrrev_b32_e32 v3, 16, v2
2847091dd27STim Gymnich; GFX7-NEXT:    s_setpc_b64 s[30:31]
2857091dd27STim Gymnich;
2867091dd27STim Gymnich; GFX8-LABEL: v_abs_v4i16:
2877091dd27STim Gymnich; GFX8:       ; %bb.0:
2887091dd27STim Gymnich; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
28984e9401aSJeffrey Byrnes; GFX8-NEXT:    v_mov_b32_e32 v2, 0
29084e9401aSJeffrey Byrnes; GFX8-NEXT:    v_sub_u16_sdwa v3, v2, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_1
29184e9401aSJeffrey Byrnes; GFX8-NEXT:    v_sub_u16_sdwa v2, v2, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_1
2927091dd27STim Gymnich; GFX8-NEXT:    v_sub_u16_e32 v4, 0, v1
2937091dd27STim Gymnich; GFX8-NEXT:    v_sub_u16_e32 v5, 0, v0
29484e9401aSJeffrey Byrnes; GFX8-NEXT:    v_max_i16_sdwa v3, v1, v3 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:DWORD
29584e9401aSJeffrey Byrnes; GFX8-NEXT:    v_max_i16_sdwa v2, v0, v2 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:DWORD
2967091dd27STim Gymnich; GFX8-NEXT:    v_max_i16_e32 v0, v0, v5
2977091dd27STim Gymnich; GFX8-NEXT:    v_max_i16_e32 v1, v1, v4
29884e9401aSJeffrey Byrnes; GFX8-NEXT:    v_or_b32_e32 v0, v0, v2
29984e9401aSJeffrey Byrnes; GFX8-NEXT:    v_or_b32_e32 v1, v1, v3
3007091dd27STim Gymnich; GFX8-NEXT:    s_setpc_b64 s[30:31]
3017091dd27STim Gymnich;
3027091dd27STim Gymnich; GFX9-LABEL: v_abs_v4i16:
3037091dd27STim Gymnich; GFX9:       ; %bb.0:
3047091dd27STim Gymnich; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3057091dd27STim Gymnich; GFX9-NEXT:    v_pk_sub_i16 v2, 0, v0
3067091dd27STim Gymnich; GFX9-NEXT:    v_pk_max_i16 v0, v0, v2
3077091dd27STim Gymnich; GFX9-NEXT:    v_pk_sub_i16 v2, 0, v1
3087091dd27STim Gymnich; GFX9-NEXT:    v_pk_max_i16 v1, v1, v2
3097091dd27STim Gymnich; GFX9-NEXT:    s_setpc_b64 s[30:31]
3107091dd27STim Gymnich;
3117091dd27STim Gymnich; GFX10-LABEL: v_abs_v4i16:
3127091dd27STim Gymnich; GFX10:       ; %bb.0:
3137091dd27STim Gymnich; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3147091dd27STim Gymnich; GFX10-NEXT:    v_pk_sub_i16 v2, 0, v0
3157091dd27STim Gymnich; GFX10-NEXT:    v_pk_sub_i16 v3, 0, v1
3167091dd27STim Gymnich; GFX10-NEXT:    v_pk_max_i16 v0, v0, v2
3177091dd27STim Gymnich; GFX10-NEXT:    v_pk_max_i16 v1, v1, v3
3187091dd27STim Gymnich; GFX10-NEXT:    s_setpc_b64 s[30:31]
3197091dd27STim Gymnich;
3207091dd27STim Gymnich; GFX11-LABEL: v_abs_v4i16:
3217091dd27STim Gymnich; GFX11:       ; %bb.0:
3227091dd27STim Gymnich; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3237091dd27STim Gymnich; GFX11-NEXT:    v_pk_sub_i16 v2, 0, v0
3247091dd27STim Gymnich; GFX11-NEXT:    v_pk_sub_i16 v3, 0, v1
3257091dd27STim Gymnich; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
3267091dd27STim Gymnich; GFX11-NEXT:    v_pk_max_i16 v0, v0, v2
3277091dd27STim Gymnich; GFX11-NEXT:    v_pk_max_i16 v1, v1, v3
3287091dd27STim Gymnich; GFX11-NEXT:    s_setpc_b64 s[30:31]
3297091dd27STim Gymnich;
3307091dd27STim Gymnich; GFX12-LABEL: v_abs_v4i16:
3317091dd27STim Gymnich; GFX12:       ; %bb.0:
3327091dd27STim Gymnich; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0
3337091dd27STim Gymnich; GFX12-NEXT:    s_wait_expcnt 0x0
3347091dd27STim Gymnich; GFX12-NEXT:    s_wait_samplecnt 0x0
3357091dd27STim Gymnich; GFX12-NEXT:    s_wait_bvhcnt 0x0
3367091dd27STim Gymnich; GFX12-NEXT:    s_wait_kmcnt 0x0
3377091dd27STim Gymnich; GFX12-NEXT:    v_pk_sub_i16 v2, 0, v0
3387091dd27STim Gymnich; GFX12-NEXT:    v_pk_sub_i16 v3, 0, v1
3397091dd27STim Gymnich; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)
3407091dd27STim Gymnich; GFX12-NEXT:    v_pk_max_i16 v0, v0, v2
3417091dd27STim Gymnich; GFX12-NEXT:    v_pk_max_i16 v1, v1, v3
3427091dd27STim Gymnich; GFX12-NEXT:    s_setpc_b64 s[30:31]
3437091dd27STim Gymnich  %res = call <4 x i16> @llvm.abs.v4i16(<4 x i16> %arg, i1 false)
3447091dd27STim Gymnich  ret <4 x i16> %res
3457091dd27STim Gymnich}
3467091dd27STim Gymnich
3477091dd27STim Gymnichdefine <6 x i16> @v_abs_v6i16(<6 x i16> %arg) {
3487091dd27STim Gymnich; GFX6-LABEL: v_abs_v6i16:
3497091dd27STim Gymnich; GFX6:       ; %bb.0:
3507091dd27STim Gymnich; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3517091dd27STim Gymnich; GFX6-NEXT:    v_bfe_i32 v2, v2, 0, 16
3527091dd27STim Gymnich; GFX6-NEXT:    v_bfe_i32 v3, v3, 0, 16
3537091dd27STim Gymnich; GFX6-NEXT:    v_sub_i32_e32 v6, vcc, 0, v2
3547091dd27STim Gymnich; GFX6-NEXT:    v_max_i32_e32 v2, v2, v6
3557091dd27STim Gymnich; GFX6-NEXT:    v_sub_i32_e32 v6, vcc, 0, v3
3567091dd27STim Gymnich; GFX6-NEXT:    v_max_i32_e32 v3, v3, v6
3577091dd27STim Gymnich; GFX6-NEXT:    v_bfe_i32 v0, v0, 0, 16
3587091dd27STim Gymnich; GFX6-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
3597091dd27STim Gymnich; GFX6-NEXT:    v_bfe_i32 v1, v1, 0, 16
3607091dd27STim Gymnich; GFX6-NEXT:    v_or_b32_e32 v2, v2, v3
3617091dd27STim Gymnich; GFX6-NEXT:    v_sub_i32_e32 v3, vcc, 0, v0
3627091dd27STim Gymnich; GFX6-NEXT:    v_max_i32_e32 v0, v0, v3
3637091dd27STim Gymnich; GFX6-NEXT:    v_sub_i32_e32 v3, vcc, 0, v1
3647091dd27STim Gymnich; GFX6-NEXT:    v_bfe_i32 v5, v5, 0, 16
3657091dd27STim Gymnich; GFX6-NEXT:    v_max_i32_e32 v1, v1, v3
3667091dd27STim Gymnich; GFX6-NEXT:    v_bfe_i32 v4, v4, 0, 16
3677091dd27STim Gymnich; GFX6-NEXT:    v_lshlrev_b32_e32 v1, 16, v1
3687091dd27STim Gymnich; GFX6-NEXT:    v_sub_i32_e32 v3, vcc, 0, v5
3697091dd27STim Gymnich; GFX6-NEXT:    v_or_b32_e32 v0, v0, v1
3707091dd27STim Gymnich; GFX6-NEXT:    v_sub_i32_e32 v1, vcc, 0, v4
3717091dd27STim Gymnich; GFX6-NEXT:    v_max_i32_e32 v5, v5, v3
3727091dd27STim Gymnich; GFX6-NEXT:    v_max_i32_e32 v1, v4, v1
3737091dd27STim Gymnich; GFX6-NEXT:    v_lshlrev_b32_e32 v3, 16, v5
3747091dd27STim Gymnich; GFX6-NEXT:    v_or_b32_e32 v4, v1, v3
3757091dd27STim Gymnich; GFX6-NEXT:    v_alignbit_b32 v1, v2, v0, 16
3767091dd27STim Gymnich; GFX6-NEXT:    v_lshrrev_b32_e32 v3, 16, v2
3777091dd27STim Gymnich; GFX6-NEXT:    s_setpc_b64 s[30:31]
3787091dd27STim Gymnich;
3797091dd27STim Gymnich; GFX7-LABEL: v_abs_v6i16:
3807091dd27STim Gymnich; GFX7:       ; %bb.0:
3817091dd27STim Gymnich; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3827091dd27STim Gymnich; GFX7-NEXT:    v_bfe_i32 v2, v2, 0, 16
3837091dd27STim Gymnich; GFX7-NEXT:    v_bfe_i32 v3, v3, 0, 16
3847091dd27STim Gymnich; GFX7-NEXT:    v_sub_i32_e32 v6, vcc, 0, v2
3857091dd27STim Gymnich; GFX7-NEXT:    v_max_i32_e32 v2, v2, v6
3867091dd27STim Gymnich; GFX7-NEXT:    v_sub_i32_e32 v6, vcc, 0, v3
3877091dd27STim Gymnich; GFX7-NEXT:    v_max_i32_e32 v3, v3, v6
3887091dd27STim Gymnich; GFX7-NEXT:    v_bfe_i32 v0, v0, 0, 16
3897091dd27STim Gymnich; GFX7-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
3907091dd27STim Gymnich; GFX7-NEXT:    v_bfe_i32 v1, v1, 0, 16
3917091dd27STim Gymnich; GFX7-NEXT:    v_or_b32_e32 v2, v2, v3
3927091dd27STim Gymnich; GFX7-NEXT:    v_sub_i32_e32 v3, vcc, 0, v0
3937091dd27STim Gymnich; GFX7-NEXT:    v_max_i32_e32 v0, v0, v3
3947091dd27STim Gymnich; GFX7-NEXT:    v_sub_i32_e32 v3, vcc, 0, v1
3957091dd27STim Gymnich; GFX7-NEXT:    v_bfe_i32 v5, v5, 0, 16
3967091dd27STim Gymnich; GFX7-NEXT:    v_max_i32_e32 v1, v1, v3
3977091dd27STim Gymnich; GFX7-NEXT:    v_bfe_i32 v4, v4, 0, 16
3987091dd27STim Gymnich; GFX7-NEXT:    v_lshlrev_b32_e32 v1, 16, v1
3997091dd27STim Gymnich; GFX7-NEXT:    v_sub_i32_e32 v3, vcc, 0, v5
4007091dd27STim Gymnich; GFX7-NEXT:    v_or_b32_e32 v0, v0, v1
4017091dd27STim Gymnich; GFX7-NEXT:    v_sub_i32_e32 v1, vcc, 0, v4
4027091dd27STim Gymnich; GFX7-NEXT:    v_max_i32_e32 v5, v5, v3
4037091dd27STim Gymnich; GFX7-NEXT:    v_max_i32_e32 v1, v4, v1
4047091dd27STim Gymnich; GFX7-NEXT:    v_lshlrev_b32_e32 v3, 16, v5
4057091dd27STim Gymnich; GFX7-NEXT:    v_or_b32_e32 v4, v1, v3
4067091dd27STim Gymnich; GFX7-NEXT:    v_alignbit_b32 v1, v2, v0, 16
4077091dd27STim Gymnich; GFX7-NEXT:    v_lshrrev_b32_e32 v3, 16, v2
4087091dd27STim Gymnich; GFX7-NEXT:    s_setpc_b64 s[30:31]
4097091dd27STim Gymnich;
4107091dd27STim Gymnich; GFX8-LABEL: v_abs_v6i16:
4117091dd27STim Gymnich; GFX8:       ; %bb.0:
4127091dd27STim Gymnich; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
41384e9401aSJeffrey Byrnes; GFX8-NEXT:    v_mov_b32_e32 v3, 0
41484e9401aSJeffrey Byrnes; GFX8-NEXT:    v_sub_u16_sdwa v4, v3, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_1
41584e9401aSJeffrey Byrnes; GFX8-NEXT:    v_sub_u16_sdwa v5, v3, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_1
41684e9401aSJeffrey Byrnes; GFX8-NEXT:    v_sub_u16_sdwa v3, v3, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_1
4177091dd27STim Gymnich; GFX8-NEXT:    v_sub_u16_e32 v6, 0, v2
4187091dd27STim Gymnich; GFX8-NEXT:    v_sub_u16_e32 v7, 0, v1
4197091dd27STim Gymnich; GFX8-NEXT:    v_sub_u16_e32 v8, 0, v0
42084e9401aSJeffrey Byrnes; GFX8-NEXT:    v_max_i16_sdwa v4, v2, v4 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:DWORD
42184e9401aSJeffrey Byrnes; GFX8-NEXT:    v_max_i16_sdwa v5, v1, v5 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:DWORD
42284e9401aSJeffrey Byrnes; GFX8-NEXT:    v_max_i16_sdwa v3, v0, v3 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:DWORD
4237091dd27STim Gymnich; GFX8-NEXT:    v_max_i16_e32 v0, v0, v8
4247091dd27STim Gymnich; GFX8-NEXT:    v_max_i16_e32 v1, v1, v7
4257091dd27STim Gymnich; GFX8-NEXT:    v_max_i16_e32 v2, v2, v6
42684e9401aSJeffrey Byrnes; GFX8-NEXT:    v_or_b32_e32 v0, v0, v3
42784e9401aSJeffrey Byrnes; GFX8-NEXT:    v_or_b32_e32 v1, v1, v5
42884e9401aSJeffrey Byrnes; GFX8-NEXT:    v_or_b32_e32 v2, v2, v4
4297091dd27STim Gymnich; GFX8-NEXT:    s_setpc_b64 s[30:31]
4307091dd27STim Gymnich;
4317091dd27STim Gymnich; GFX9-LABEL: v_abs_v6i16:
4327091dd27STim Gymnich; GFX9:       ; %bb.0:
4337091dd27STim Gymnich; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4347091dd27STim Gymnich; GFX9-NEXT:    v_pk_sub_i16 v3, 0, v0
4357091dd27STim Gymnich; GFX9-NEXT:    v_pk_max_i16 v0, v0, v3
4367091dd27STim Gymnich; GFX9-NEXT:    v_pk_sub_i16 v3, 0, v1
4377091dd27STim Gymnich; GFX9-NEXT:    v_pk_max_i16 v1, v1, v3
4387091dd27STim Gymnich; GFX9-NEXT:    v_pk_sub_i16 v3, 0, v2
4397091dd27STim Gymnich; GFX9-NEXT:    v_pk_max_i16 v2, v2, v3
4407091dd27STim Gymnich; GFX9-NEXT:    s_setpc_b64 s[30:31]
4417091dd27STim Gymnich;
4427091dd27STim Gymnich; GFX10-LABEL: v_abs_v6i16:
4437091dd27STim Gymnich; GFX10:       ; %bb.0:
4447091dd27STim Gymnich; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4457091dd27STim Gymnich; GFX10-NEXT:    v_pk_sub_i16 v3, 0, v0
4467091dd27STim Gymnich; GFX10-NEXT:    v_pk_sub_i16 v4, 0, v1
4477091dd27STim Gymnich; GFX10-NEXT:    v_pk_sub_i16 v5, 0, v2
4487091dd27STim Gymnich; GFX10-NEXT:    v_pk_max_i16 v0, v0, v3
4497091dd27STim Gymnich; GFX10-NEXT:    v_pk_max_i16 v1, v1, v4
4507091dd27STim Gymnich; GFX10-NEXT:    v_pk_max_i16 v2, v2, v5
4517091dd27STim Gymnich; GFX10-NEXT:    s_setpc_b64 s[30:31]
4527091dd27STim Gymnich;
4537091dd27STim Gymnich; GFX11-LABEL: v_abs_v6i16:
4547091dd27STim Gymnich; GFX11:       ; %bb.0:
4557091dd27STim Gymnich; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4567091dd27STim Gymnich; GFX11-NEXT:    v_pk_sub_i16 v3, 0, v0
4577091dd27STim Gymnich; GFX11-NEXT:    v_pk_sub_i16 v4, 0, v1
4587091dd27STim Gymnich; GFX11-NEXT:    v_pk_sub_i16 v5, 0, v2
4597091dd27STim Gymnich; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)
4607091dd27STim Gymnich; GFX11-NEXT:    v_pk_max_i16 v0, v0, v3
4617091dd27STim Gymnich; GFX11-NEXT:    v_pk_max_i16 v1, v1, v4
4627091dd27STim Gymnich; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_3)
4637091dd27STim Gymnich; GFX11-NEXT:    v_pk_max_i16 v2, v2, v5
4647091dd27STim Gymnich; GFX11-NEXT:    s_setpc_b64 s[30:31]
4657091dd27STim Gymnich;
4667091dd27STim Gymnich; GFX12-LABEL: v_abs_v6i16:
4677091dd27STim Gymnich; GFX12:       ; %bb.0:
4687091dd27STim Gymnich; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0
4697091dd27STim Gymnich; GFX12-NEXT:    s_wait_expcnt 0x0
4707091dd27STim Gymnich; GFX12-NEXT:    s_wait_samplecnt 0x0
4717091dd27STim Gymnich; GFX12-NEXT:    s_wait_bvhcnt 0x0
4727091dd27STim Gymnich; GFX12-NEXT:    s_wait_kmcnt 0x0
4737091dd27STim Gymnich; GFX12-NEXT:    v_pk_sub_i16 v3, 0, v0
4747091dd27STim Gymnich; GFX12-NEXT:    v_pk_sub_i16 v4, 0, v1
4757091dd27STim Gymnich; GFX12-NEXT:    v_pk_sub_i16 v5, 0, v2
4767091dd27STim Gymnich; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)
4777091dd27STim Gymnich; GFX12-NEXT:    v_pk_max_i16 v0, v0, v3
4787091dd27STim Gymnich; GFX12-NEXT:    v_pk_max_i16 v1, v1, v4
4797091dd27STim Gymnich; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_3)
4807091dd27STim Gymnich; GFX12-NEXT:    v_pk_max_i16 v2, v2, v5
4817091dd27STim Gymnich; GFX12-NEXT:    s_setpc_b64 s[30:31]
4827091dd27STim Gymnich  %res = call <6 x i16> @llvm.abs.v6i16(<6 x i16> %arg, i1 false)
4837091dd27STim Gymnich  ret <6 x i16> %res
4847091dd27STim Gymnich}
4857091dd27STim Gymnich
4867091dd27STim Gymnichdefine <8 x i16> @v_abs_v8i16(<8 x i16> %arg) {
4877091dd27STim Gymnich; GFX6-LABEL: v_abs_v8i16:
4887091dd27STim Gymnich; GFX6:       ; %bb.0:
4897091dd27STim Gymnich; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4907091dd27STim Gymnich; GFX6-NEXT:    v_bfe_i32 v6, v6, 0, 16
4917091dd27STim Gymnich; GFX6-NEXT:    v_bfe_i32 v7, v7, 0, 16
4927091dd27STim Gymnich; GFX6-NEXT:    v_sub_i32_e32 v8, vcc, 0, v6
4937091dd27STim Gymnich; GFX6-NEXT:    v_max_i32_e32 v6, v6, v8
4947091dd27STim Gymnich; GFX6-NEXT:    v_sub_i32_e32 v8, vcc, 0, v7
4957091dd27STim Gymnich; GFX6-NEXT:    v_max_i32_e32 v7, v7, v8
4967091dd27STim Gymnich; GFX6-NEXT:    v_bfe_i32 v4, v4, 0, 16
4977091dd27STim Gymnich; GFX6-NEXT:    v_lshlrev_b32_e32 v7, 16, v7
4987091dd27STim Gymnich; GFX6-NEXT:    v_bfe_i32 v5, v5, 0, 16
4997091dd27STim Gymnich; GFX6-NEXT:    v_or_b32_e32 v6, v6, v7
5007091dd27STim Gymnich; GFX6-NEXT:    v_sub_i32_e32 v7, vcc, 0, v4
5017091dd27STim Gymnich; GFX6-NEXT:    v_max_i32_e32 v4, v4, v7
5027091dd27STim Gymnich; GFX6-NEXT:    v_sub_i32_e32 v7, vcc, 0, v5
5037091dd27STim Gymnich; GFX6-NEXT:    v_max_i32_e32 v5, v5, v7
5047091dd27STim Gymnich; GFX6-NEXT:    v_bfe_i32 v2, v2, 0, 16
5057091dd27STim Gymnich; GFX6-NEXT:    v_lshlrev_b32_e32 v5, 16, v5
5067091dd27STim Gymnich; GFX6-NEXT:    v_bfe_i32 v3, v3, 0, 16
5077091dd27STim Gymnich; GFX6-NEXT:    v_or_b32_e32 v4, v4, v5
5087091dd27STim Gymnich; GFX6-NEXT:    v_sub_i32_e32 v5, vcc, 0, v2
5097091dd27STim Gymnich; GFX6-NEXT:    v_max_i32_e32 v2, v2, v5
5107091dd27STim Gymnich; GFX6-NEXT:    v_sub_i32_e32 v5, vcc, 0, v3
5117091dd27STim Gymnich; GFX6-NEXT:    v_max_i32_e32 v3, v3, v5
5127091dd27STim Gymnich; GFX6-NEXT:    v_bfe_i32 v0, v0, 0, 16
5137091dd27STim Gymnich; GFX6-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
5147091dd27STim Gymnich; GFX6-NEXT:    v_bfe_i32 v1, v1, 0, 16
5157091dd27STim Gymnich; GFX6-NEXT:    v_or_b32_e32 v2, v2, v3
5167091dd27STim Gymnich; GFX6-NEXT:    v_sub_i32_e32 v3, vcc, 0, v0
5177091dd27STim Gymnich; GFX6-NEXT:    v_max_i32_e32 v0, v0, v3
5187091dd27STim Gymnich; GFX6-NEXT:    v_sub_i32_e32 v3, vcc, 0, v1
5197091dd27STim Gymnich; GFX6-NEXT:    v_max_i32_e32 v1, v1, v3
5207091dd27STim Gymnich; GFX6-NEXT:    v_lshlrev_b32_e32 v1, 16, v1
5217091dd27STim Gymnich; GFX6-NEXT:    v_or_b32_e32 v0, v0, v1
5227091dd27STim Gymnich; GFX6-NEXT:    v_alignbit_b32 v1, v2, v0, 16
5237091dd27STim Gymnich; GFX6-NEXT:    v_alignbit_b32 v5, v6, v4, 16
5247091dd27STim Gymnich; GFX6-NEXT:    v_lshrrev_b32_e32 v3, 16, v2
5257091dd27STim Gymnich; GFX6-NEXT:    v_lshrrev_b32_e32 v7, 16, v6
5267091dd27STim Gymnich; GFX6-NEXT:    s_setpc_b64 s[30:31]
5277091dd27STim Gymnich;
5287091dd27STim Gymnich; GFX7-LABEL: v_abs_v8i16:
5297091dd27STim Gymnich; GFX7:       ; %bb.0:
5307091dd27STim Gymnich; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5317091dd27STim Gymnich; GFX7-NEXT:    v_bfe_i32 v6, v6, 0, 16
5327091dd27STim Gymnich; GFX7-NEXT:    v_bfe_i32 v7, v7, 0, 16
5337091dd27STim Gymnich; GFX7-NEXT:    v_sub_i32_e32 v8, vcc, 0, v6
5347091dd27STim Gymnich; GFX7-NEXT:    v_max_i32_e32 v6, v6, v8
5357091dd27STim Gymnich; GFX7-NEXT:    v_sub_i32_e32 v8, vcc, 0, v7
5367091dd27STim Gymnich; GFX7-NEXT:    v_max_i32_e32 v7, v7, v8
5377091dd27STim Gymnich; GFX7-NEXT:    v_bfe_i32 v4, v4, 0, 16
5387091dd27STim Gymnich; GFX7-NEXT:    v_lshlrev_b32_e32 v7, 16, v7
5397091dd27STim Gymnich; GFX7-NEXT:    v_bfe_i32 v5, v5, 0, 16
5407091dd27STim Gymnich; GFX7-NEXT:    v_or_b32_e32 v6, v6, v7
5417091dd27STim Gymnich; GFX7-NEXT:    v_sub_i32_e32 v7, vcc, 0, v4
5427091dd27STim Gymnich; GFX7-NEXT:    v_max_i32_e32 v4, v4, v7
5437091dd27STim Gymnich; GFX7-NEXT:    v_sub_i32_e32 v7, vcc, 0, v5
5447091dd27STim Gymnich; GFX7-NEXT:    v_max_i32_e32 v5, v5, v7
5457091dd27STim Gymnich; GFX7-NEXT:    v_bfe_i32 v2, v2, 0, 16
5467091dd27STim Gymnich; GFX7-NEXT:    v_lshlrev_b32_e32 v5, 16, v5
5477091dd27STim Gymnich; GFX7-NEXT:    v_bfe_i32 v3, v3, 0, 16
5487091dd27STim Gymnich; GFX7-NEXT:    v_or_b32_e32 v4, v4, v5
5497091dd27STim Gymnich; GFX7-NEXT:    v_sub_i32_e32 v5, vcc, 0, v2
5507091dd27STim Gymnich; GFX7-NEXT:    v_max_i32_e32 v2, v2, v5
5517091dd27STim Gymnich; GFX7-NEXT:    v_sub_i32_e32 v5, vcc, 0, v3
5527091dd27STim Gymnich; GFX7-NEXT:    v_max_i32_e32 v3, v3, v5
5537091dd27STim Gymnich; GFX7-NEXT:    v_bfe_i32 v0, v0, 0, 16
5547091dd27STim Gymnich; GFX7-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
5557091dd27STim Gymnich; GFX7-NEXT:    v_bfe_i32 v1, v1, 0, 16
5567091dd27STim Gymnich; GFX7-NEXT:    v_or_b32_e32 v2, v2, v3
5577091dd27STim Gymnich; GFX7-NEXT:    v_sub_i32_e32 v3, vcc, 0, v0
5587091dd27STim Gymnich; GFX7-NEXT:    v_max_i32_e32 v0, v0, v3
5597091dd27STim Gymnich; GFX7-NEXT:    v_sub_i32_e32 v3, vcc, 0, v1
5607091dd27STim Gymnich; GFX7-NEXT:    v_max_i32_e32 v1, v1, v3
5617091dd27STim Gymnich; GFX7-NEXT:    v_lshlrev_b32_e32 v1, 16, v1
5627091dd27STim Gymnich; GFX7-NEXT:    v_or_b32_e32 v0, v0, v1
5637091dd27STim Gymnich; GFX7-NEXT:    v_alignbit_b32 v1, v2, v0, 16
5647091dd27STim Gymnich; GFX7-NEXT:    v_alignbit_b32 v5, v6, v4, 16
5657091dd27STim Gymnich; GFX7-NEXT:    v_lshrrev_b32_e32 v3, 16, v2
5667091dd27STim Gymnich; GFX7-NEXT:    v_lshrrev_b32_e32 v7, 16, v6
5677091dd27STim Gymnich; GFX7-NEXT:    s_setpc_b64 s[30:31]
5687091dd27STim Gymnich;
5697091dd27STim Gymnich; GFX8-LABEL: v_abs_v8i16:
5707091dd27STim Gymnich; GFX8:       ; %bb.0:
5717091dd27STim Gymnich; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
57284e9401aSJeffrey Byrnes; GFX8-NEXT:    v_mov_b32_e32 v4, 0
57384e9401aSJeffrey Byrnes; GFX8-NEXT:    v_sub_u16_sdwa v5, v4, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_1
57484e9401aSJeffrey Byrnes; GFX8-NEXT:    v_sub_u16_sdwa v6, v4, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_1
57584e9401aSJeffrey Byrnes; GFX8-NEXT:    v_sub_u16_sdwa v7, v4, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_1
57684e9401aSJeffrey Byrnes; GFX8-NEXT:    v_sub_u16_sdwa v4, v4, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_1
5777091dd27STim Gymnich; GFX8-NEXT:    v_sub_u16_e32 v8, 0, v3
5787091dd27STim Gymnich; GFX8-NEXT:    v_sub_u16_e32 v9, 0, v2
5797091dd27STim Gymnich; GFX8-NEXT:    v_sub_u16_e32 v10, 0, v1
5807091dd27STim Gymnich; GFX8-NEXT:    v_sub_u16_e32 v11, 0, v0
58184e9401aSJeffrey Byrnes; GFX8-NEXT:    v_max_i16_sdwa v5, v3, v5 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:DWORD
58284e9401aSJeffrey Byrnes; GFX8-NEXT:    v_max_i16_sdwa v6, v2, v6 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:DWORD
58384e9401aSJeffrey Byrnes; GFX8-NEXT:    v_max_i16_sdwa v7, v1, v7 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:DWORD
58484e9401aSJeffrey Byrnes; GFX8-NEXT:    v_max_i16_sdwa v4, v0, v4 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:DWORD
5857091dd27STim Gymnich; GFX8-NEXT:    v_max_i16_e32 v0, v0, v11
5867091dd27STim Gymnich; GFX8-NEXT:    v_max_i16_e32 v1, v1, v10
5877091dd27STim Gymnich; GFX8-NEXT:    v_max_i16_e32 v2, v2, v9
5887091dd27STim Gymnich; GFX8-NEXT:    v_max_i16_e32 v3, v3, v8
58984e9401aSJeffrey Byrnes; GFX8-NEXT:    v_or_b32_e32 v0, v0, v4
59084e9401aSJeffrey Byrnes; GFX8-NEXT:    v_or_b32_e32 v1, v1, v7
59184e9401aSJeffrey Byrnes; GFX8-NEXT:    v_or_b32_e32 v2, v2, v6
59284e9401aSJeffrey Byrnes; GFX8-NEXT:    v_or_b32_e32 v3, v3, v5
5937091dd27STim Gymnich; GFX8-NEXT:    s_setpc_b64 s[30:31]
5947091dd27STim Gymnich;
5957091dd27STim Gymnich; GFX9-LABEL: v_abs_v8i16:
5967091dd27STim Gymnich; GFX9:       ; %bb.0:
5977091dd27STim Gymnich; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
5987091dd27STim Gymnich; GFX9-NEXT:    v_pk_sub_i16 v4, 0, v0
5997091dd27STim Gymnich; GFX9-NEXT:    v_pk_max_i16 v0, v0, v4
6007091dd27STim Gymnich; GFX9-NEXT:    v_pk_sub_i16 v4, 0, v1
6017091dd27STim Gymnich; GFX9-NEXT:    v_pk_max_i16 v1, v1, v4
6027091dd27STim Gymnich; GFX9-NEXT:    v_pk_sub_i16 v4, 0, v2
6037091dd27STim Gymnich; GFX9-NEXT:    v_pk_max_i16 v2, v2, v4
6047091dd27STim Gymnich; GFX9-NEXT:    v_pk_sub_i16 v4, 0, v3
6057091dd27STim Gymnich; GFX9-NEXT:    v_pk_max_i16 v3, v3, v4
6067091dd27STim Gymnich; GFX9-NEXT:    s_setpc_b64 s[30:31]
6077091dd27STim Gymnich;
6087091dd27STim Gymnich; GFX10-LABEL: v_abs_v8i16:
6097091dd27STim Gymnich; GFX10:       ; %bb.0:
6107091dd27STim Gymnich; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6117091dd27STim Gymnich; GFX10-NEXT:    v_pk_sub_i16 v4, 0, v0
6127091dd27STim Gymnich; GFX10-NEXT:    v_pk_sub_i16 v5, 0, v1
6137091dd27STim Gymnich; GFX10-NEXT:    v_pk_sub_i16 v6, 0, v2
6147091dd27STim Gymnich; GFX10-NEXT:    v_pk_sub_i16 v7, 0, v3
6157091dd27STim Gymnich; GFX10-NEXT:    v_pk_max_i16 v0, v0, v4
6167091dd27STim Gymnich; GFX10-NEXT:    v_pk_max_i16 v1, v1, v5
6177091dd27STim Gymnich; GFX10-NEXT:    v_pk_max_i16 v2, v2, v6
6187091dd27STim Gymnich; GFX10-NEXT:    v_pk_max_i16 v3, v3, v7
6197091dd27STim Gymnich; GFX10-NEXT:    s_setpc_b64 s[30:31]
6207091dd27STim Gymnich;
6217091dd27STim Gymnich; GFX11-LABEL: v_abs_v8i16:
6227091dd27STim Gymnich; GFX11:       ; %bb.0:
6237091dd27STim Gymnich; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6247091dd27STim Gymnich; GFX11-NEXT:    v_pk_sub_i16 v4, 0, v0
6257091dd27STim Gymnich; GFX11-NEXT:    v_pk_sub_i16 v5, 0, v1
6267091dd27STim Gymnich; GFX11-NEXT:    v_pk_sub_i16 v6, 0, v2
6277091dd27STim Gymnich; GFX11-NEXT:    v_pk_sub_i16 v7, 0, v3
6287091dd27STim Gymnich; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)
6297091dd27STim Gymnich; GFX11-NEXT:    v_pk_max_i16 v0, v0, v4
6307091dd27STim Gymnich; GFX11-NEXT:    v_pk_max_i16 v1, v1, v5
6317091dd27STim Gymnich; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)
6327091dd27STim Gymnich; GFX11-NEXT:    v_pk_max_i16 v2, v2, v6
6337091dd27STim Gymnich; GFX11-NEXT:    v_pk_max_i16 v3, v3, v7
6347091dd27STim Gymnich; GFX11-NEXT:    s_setpc_b64 s[30:31]
6357091dd27STim Gymnich;
6367091dd27STim Gymnich; GFX12-LABEL: v_abs_v8i16:
6377091dd27STim Gymnich; GFX12:       ; %bb.0:
6387091dd27STim Gymnich; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0
6397091dd27STim Gymnich; GFX12-NEXT:    s_wait_expcnt 0x0
6407091dd27STim Gymnich; GFX12-NEXT:    s_wait_samplecnt 0x0
6417091dd27STim Gymnich; GFX12-NEXT:    s_wait_bvhcnt 0x0
6427091dd27STim Gymnich; GFX12-NEXT:    s_wait_kmcnt 0x0
6437091dd27STim Gymnich; GFX12-NEXT:    v_pk_sub_i16 v4, 0, v0
6447091dd27STim Gymnich; GFX12-NEXT:    v_pk_sub_i16 v5, 0, v1
6457091dd27STim Gymnich; GFX12-NEXT:    v_pk_sub_i16 v6, 0, v2
6467091dd27STim Gymnich; GFX12-NEXT:    v_pk_sub_i16 v7, 0, v3
6477091dd27STim Gymnich; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)
6487091dd27STim Gymnich; GFX12-NEXT:    v_pk_max_i16 v0, v0, v4
6497091dd27STim Gymnich; GFX12-NEXT:    v_pk_max_i16 v1, v1, v5
6507091dd27STim Gymnich; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)
6517091dd27STim Gymnich; GFX12-NEXT:    v_pk_max_i16 v2, v2, v6
6527091dd27STim Gymnich; GFX12-NEXT:    v_pk_max_i16 v3, v3, v7
6537091dd27STim Gymnich; GFX12-NEXT:    s_setpc_b64 s[30:31]
6547091dd27STim Gymnich  %res = call <8 x i16> @llvm.abs.v8i16(<8 x i16> %arg, i1 false)
6557091dd27STim Gymnich  ret <8 x i16> %res
6567091dd27STim Gymnich}
6577091dd27STim Gymnich
6587091dd27STim Gymnich
6597091dd27STim Gymnichdefine <16 x i16> @v_abs_v16i16(<16 x i16> %arg) {
6607091dd27STim Gymnich; GFX6-LABEL: v_abs_v16i16:
6617091dd27STim Gymnich; GFX6:       ; %bb.0:
6627091dd27STim Gymnich; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
6637091dd27STim Gymnich; GFX6-NEXT:    v_bfe_i32 v14, v14, 0, 16
6647091dd27STim Gymnich; GFX6-NEXT:    v_bfe_i32 v15, v15, 0, 16
6657091dd27STim Gymnich; GFX6-NEXT:    v_sub_i32_e32 v16, vcc, 0, v14
6667091dd27STim Gymnich; GFX6-NEXT:    v_max_i32_e32 v14, v14, v16
6677091dd27STim Gymnich; GFX6-NEXT:    v_sub_i32_e32 v16, vcc, 0, v15
6687091dd27STim Gymnich; GFX6-NEXT:    v_max_i32_e32 v15, v15, v16
6697091dd27STim Gymnich; GFX6-NEXT:    v_bfe_i32 v12, v12, 0, 16
6707091dd27STim Gymnich; GFX6-NEXT:    v_lshlrev_b32_e32 v15, 16, v15
6717091dd27STim Gymnich; GFX6-NEXT:    v_bfe_i32 v13, v13, 0, 16
6727091dd27STim Gymnich; GFX6-NEXT:    v_or_b32_e32 v14, v14, v15
6737091dd27STim Gymnich; GFX6-NEXT:    v_sub_i32_e32 v15, vcc, 0, v12
6747091dd27STim Gymnich; GFX6-NEXT:    v_max_i32_e32 v12, v12, v15
6757091dd27STim Gymnich; GFX6-NEXT:    v_sub_i32_e32 v15, vcc, 0, v13
6767091dd27STim Gymnich; GFX6-NEXT:    v_max_i32_e32 v13, v13, v15
6777091dd27STim Gymnich; GFX6-NEXT:    v_bfe_i32 v10, v10, 0, 16
6787091dd27STim Gymnich; GFX6-NEXT:    v_lshlrev_b32_e32 v13, 16, v13
6797091dd27STim Gymnich; GFX6-NEXT:    v_bfe_i32 v11, v11, 0, 16
6807091dd27STim Gymnich; GFX6-NEXT:    v_or_b32_e32 v12, v12, v13
6817091dd27STim Gymnich; GFX6-NEXT:    v_sub_i32_e32 v13, vcc, 0, v10
6827091dd27STim Gymnich; GFX6-NEXT:    v_max_i32_e32 v10, v10, v13
6837091dd27STim Gymnich; GFX6-NEXT:    v_sub_i32_e32 v13, vcc, 0, v11
6847091dd27STim Gymnich; GFX6-NEXT:    v_max_i32_e32 v11, v11, v13
6857091dd27STim Gymnich; GFX6-NEXT:    v_bfe_i32 v8, v8, 0, 16
6867091dd27STim Gymnich; GFX6-NEXT:    v_lshlrev_b32_e32 v11, 16, v11
6877091dd27STim Gymnich; GFX6-NEXT:    v_bfe_i32 v9, v9, 0, 16
6887091dd27STim Gymnich; GFX6-NEXT:    v_or_b32_e32 v10, v10, v11
6897091dd27STim Gymnich; GFX6-NEXT:    v_sub_i32_e32 v11, vcc, 0, v8
6907091dd27STim Gymnich; GFX6-NEXT:    v_max_i32_e32 v8, v8, v11
6917091dd27STim Gymnich; GFX6-NEXT:    v_sub_i32_e32 v11, vcc, 0, v9
6927091dd27STim Gymnich; GFX6-NEXT:    v_max_i32_e32 v9, v9, v11
6937091dd27STim Gymnich; GFX6-NEXT:    v_bfe_i32 v6, v6, 0, 16
6947091dd27STim Gymnich; GFX6-NEXT:    v_lshlrev_b32_e32 v9, 16, v9
6957091dd27STim Gymnich; GFX6-NEXT:    v_bfe_i32 v7, v7, 0, 16
6967091dd27STim Gymnich; GFX6-NEXT:    v_or_b32_e32 v8, v8, v9
6977091dd27STim Gymnich; GFX6-NEXT:    v_sub_i32_e32 v9, vcc, 0, v6
6987091dd27STim Gymnich; GFX6-NEXT:    v_max_i32_e32 v6, v6, v9
6997091dd27STim Gymnich; GFX6-NEXT:    v_sub_i32_e32 v9, vcc, 0, v7
7007091dd27STim Gymnich; GFX6-NEXT:    v_max_i32_e32 v7, v7, v9
7017091dd27STim Gymnich; GFX6-NEXT:    v_bfe_i32 v4, v4, 0, 16
7027091dd27STim Gymnich; GFX6-NEXT:    v_lshlrev_b32_e32 v7, 16, v7
7037091dd27STim Gymnich; GFX6-NEXT:    v_bfe_i32 v5, v5, 0, 16
7047091dd27STim Gymnich; GFX6-NEXT:    v_or_b32_e32 v6, v6, v7
7057091dd27STim Gymnich; GFX6-NEXT:    v_sub_i32_e32 v7, vcc, 0, v4
7067091dd27STim Gymnich; GFX6-NEXT:    v_max_i32_e32 v4, v4, v7
7077091dd27STim Gymnich; GFX6-NEXT:    v_sub_i32_e32 v7, vcc, 0, v5
7087091dd27STim Gymnich; GFX6-NEXT:    v_max_i32_e32 v5, v5, v7
7097091dd27STim Gymnich; GFX6-NEXT:    v_bfe_i32 v2, v2, 0, 16
7107091dd27STim Gymnich; GFX6-NEXT:    v_lshlrev_b32_e32 v5, 16, v5
7117091dd27STim Gymnich; GFX6-NEXT:    v_bfe_i32 v3, v3, 0, 16
7127091dd27STim Gymnich; GFX6-NEXT:    v_or_b32_e32 v4, v4, v5
7137091dd27STim Gymnich; GFX6-NEXT:    v_sub_i32_e32 v5, vcc, 0, v2
7147091dd27STim Gymnich; GFX6-NEXT:    v_max_i32_e32 v2, v2, v5
7157091dd27STim Gymnich; GFX6-NEXT:    v_sub_i32_e32 v5, vcc, 0, v3
7167091dd27STim Gymnich; GFX6-NEXT:    v_max_i32_e32 v3, v3, v5
7177091dd27STim Gymnich; GFX6-NEXT:    v_bfe_i32 v0, v0, 0, 16
7187091dd27STim Gymnich; GFX6-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
7197091dd27STim Gymnich; GFX6-NEXT:    v_bfe_i32 v1, v1, 0, 16
7207091dd27STim Gymnich; GFX6-NEXT:    v_or_b32_e32 v2, v2, v3
7217091dd27STim Gymnich; GFX6-NEXT:    v_sub_i32_e32 v3, vcc, 0, v0
7227091dd27STim Gymnich; GFX6-NEXT:    v_max_i32_e32 v0, v0, v3
7237091dd27STim Gymnich; GFX6-NEXT:    v_sub_i32_e32 v3, vcc, 0, v1
7247091dd27STim Gymnich; GFX6-NEXT:    v_max_i32_e32 v1, v1, v3
7257091dd27STim Gymnich; GFX6-NEXT:    v_lshlrev_b32_e32 v1, 16, v1
7267091dd27STim Gymnich; GFX6-NEXT:    v_or_b32_e32 v0, v0, v1
7277091dd27STim Gymnich; GFX6-NEXT:    v_alignbit_b32 v1, v2, v0, 16
7287091dd27STim Gymnich; GFX6-NEXT:    v_alignbit_b32 v5, v6, v4, 16
7297091dd27STim Gymnich; GFX6-NEXT:    v_alignbit_b32 v9, v10, v8, 16
7307091dd27STim Gymnich; GFX6-NEXT:    v_alignbit_b32 v13, v14, v12, 16
7317091dd27STim Gymnich; GFX6-NEXT:    v_lshrrev_b32_e32 v3, 16, v2
7327091dd27STim Gymnich; GFX6-NEXT:    v_lshrrev_b32_e32 v7, 16, v6
7337091dd27STim Gymnich; GFX6-NEXT:    v_lshrrev_b32_e32 v11, 16, v10
7347091dd27STim Gymnich; GFX6-NEXT:    v_lshrrev_b32_e32 v15, 16, v14
7357091dd27STim Gymnich; GFX6-NEXT:    s_setpc_b64 s[30:31]
7367091dd27STim Gymnich;
7377091dd27STim Gymnich; GFX7-LABEL: v_abs_v16i16:
7387091dd27STim Gymnich; GFX7:       ; %bb.0:
7397091dd27STim Gymnich; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
7407091dd27STim Gymnich; GFX7-NEXT:    v_bfe_i32 v14, v14, 0, 16
7417091dd27STim Gymnich; GFX7-NEXT:    v_bfe_i32 v15, v15, 0, 16
7427091dd27STim Gymnich; GFX7-NEXT:    v_sub_i32_e32 v16, vcc, 0, v14
7437091dd27STim Gymnich; GFX7-NEXT:    v_max_i32_e32 v14, v14, v16
7447091dd27STim Gymnich; GFX7-NEXT:    v_sub_i32_e32 v16, vcc, 0, v15
7457091dd27STim Gymnich; GFX7-NEXT:    v_max_i32_e32 v15, v15, v16
7467091dd27STim Gymnich; GFX7-NEXT:    v_bfe_i32 v12, v12, 0, 16
7477091dd27STim Gymnich; GFX7-NEXT:    v_lshlrev_b32_e32 v15, 16, v15
7487091dd27STim Gymnich; GFX7-NEXT:    v_bfe_i32 v13, v13, 0, 16
7497091dd27STim Gymnich; GFX7-NEXT:    v_or_b32_e32 v14, v14, v15
7507091dd27STim Gymnich; GFX7-NEXT:    v_sub_i32_e32 v15, vcc, 0, v12
7517091dd27STim Gymnich; GFX7-NEXT:    v_max_i32_e32 v12, v12, v15
7527091dd27STim Gymnich; GFX7-NEXT:    v_sub_i32_e32 v15, vcc, 0, v13
7537091dd27STim Gymnich; GFX7-NEXT:    v_max_i32_e32 v13, v13, v15
7547091dd27STim Gymnich; GFX7-NEXT:    v_bfe_i32 v10, v10, 0, 16
7557091dd27STim Gymnich; GFX7-NEXT:    v_lshlrev_b32_e32 v13, 16, v13
7567091dd27STim Gymnich; GFX7-NEXT:    v_bfe_i32 v11, v11, 0, 16
7577091dd27STim Gymnich; GFX7-NEXT:    v_or_b32_e32 v12, v12, v13
7587091dd27STim Gymnich; GFX7-NEXT:    v_sub_i32_e32 v13, vcc, 0, v10
7597091dd27STim Gymnich; GFX7-NEXT:    v_max_i32_e32 v10, v10, v13
7607091dd27STim Gymnich; GFX7-NEXT:    v_sub_i32_e32 v13, vcc, 0, v11
7617091dd27STim Gymnich; GFX7-NEXT:    v_max_i32_e32 v11, v11, v13
7627091dd27STim Gymnich; GFX7-NEXT:    v_bfe_i32 v8, v8, 0, 16
7637091dd27STim Gymnich; GFX7-NEXT:    v_lshlrev_b32_e32 v11, 16, v11
7647091dd27STim Gymnich; GFX7-NEXT:    v_bfe_i32 v9, v9, 0, 16
7657091dd27STim Gymnich; GFX7-NEXT:    v_or_b32_e32 v10, v10, v11
7667091dd27STim Gymnich; GFX7-NEXT:    v_sub_i32_e32 v11, vcc, 0, v8
7677091dd27STim Gymnich; GFX7-NEXT:    v_max_i32_e32 v8, v8, v11
7687091dd27STim Gymnich; GFX7-NEXT:    v_sub_i32_e32 v11, vcc, 0, v9
7697091dd27STim Gymnich; GFX7-NEXT:    v_max_i32_e32 v9, v9, v11
7707091dd27STim Gymnich; GFX7-NEXT:    v_bfe_i32 v6, v6, 0, 16
7717091dd27STim Gymnich; GFX7-NEXT:    v_lshlrev_b32_e32 v9, 16, v9
7727091dd27STim Gymnich; GFX7-NEXT:    v_bfe_i32 v7, v7, 0, 16
7737091dd27STim Gymnich; GFX7-NEXT:    v_or_b32_e32 v8, v8, v9
7747091dd27STim Gymnich; GFX7-NEXT:    v_sub_i32_e32 v9, vcc, 0, v6
7757091dd27STim Gymnich; GFX7-NEXT:    v_max_i32_e32 v6, v6, v9
7767091dd27STim Gymnich; GFX7-NEXT:    v_sub_i32_e32 v9, vcc, 0, v7
7777091dd27STim Gymnich; GFX7-NEXT:    v_max_i32_e32 v7, v7, v9
7787091dd27STim Gymnich; GFX7-NEXT:    v_bfe_i32 v4, v4, 0, 16
7797091dd27STim Gymnich; GFX7-NEXT:    v_lshlrev_b32_e32 v7, 16, v7
7807091dd27STim Gymnich; GFX7-NEXT:    v_bfe_i32 v5, v5, 0, 16
7817091dd27STim Gymnich; GFX7-NEXT:    v_or_b32_e32 v6, v6, v7
7827091dd27STim Gymnich; GFX7-NEXT:    v_sub_i32_e32 v7, vcc, 0, v4
7837091dd27STim Gymnich; GFX7-NEXT:    v_max_i32_e32 v4, v4, v7
7847091dd27STim Gymnich; GFX7-NEXT:    v_sub_i32_e32 v7, vcc, 0, v5
7857091dd27STim Gymnich; GFX7-NEXT:    v_max_i32_e32 v5, v5, v7
7867091dd27STim Gymnich; GFX7-NEXT:    v_bfe_i32 v2, v2, 0, 16
7877091dd27STim Gymnich; GFX7-NEXT:    v_lshlrev_b32_e32 v5, 16, v5
7887091dd27STim Gymnich; GFX7-NEXT:    v_bfe_i32 v3, v3, 0, 16
7897091dd27STim Gymnich; GFX7-NEXT:    v_or_b32_e32 v4, v4, v5
7907091dd27STim Gymnich; GFX7-NEXT:    v_sub_i32_e32 v5, vcc, 0, v2
7917091dd27STim Gymnich; GFX7-NEXT:    v_max_i32_e32 v2, v2, v5
7927091dd27STim Gymnich; GFX7-NEXT:    v_sub_i32_e32 v5, vcc, 0, v3
7937091dd27STim Gymnich; GFX7-NEXT:    v_max_i32_e32 v3, v3, v5
7947091dd27STim Gymnich; GFX7-NEXT:    v_bfe_i32 v0, v0, 0, 16
7957091dd27STim Gymnich; GFX7-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
7967091dd27STim Gymnich; GFX7-NEXT:    v_bfe_i32 v1, v1, 0, 16
7977091dd27STim Gymnich; GFX7-NEXT:    v_or_b32_e32 v2, v2, v3
7987091dd27STim Gymnich; GFX7-NEXT:    v_sub_i32_e32 v3, vcc, 0, v0
7997091dd27STim Gymnich; GFX7-NEXT:    v_max_i32_e32 v0, v0, v3
8007091dd27STim Gymnich; GFX7-NEXT:    v_sub_i32_e32 v3, vcc, 0, v1
8017091dd27STim Gymnich; GFX7-NEXT:    v_max_i32_e32 v1, v1, v3
8027091dd27STim Gymnich; GFX7-NEXT:    v_lshlrev_b32_e32 v1, 16, v1
8037091dd27STim Gymnich; GFX7-NEXT:    v_or_b32_e32 v0, v0, v1
8047091dd27STim Gymnich; GFX7-NEXT:    v_alignbit_b32 v1, v2, v0, 16
8057091dd27STim Gymnich; GFX7-NEXT:    v_alignbit_b32 v5, v6, v4, 16
8067091dd27STim Gymnich; GFX7-NEXT:    v_alignbit_b32 v9, v10, v8, 16
8077091dd27STim Gymnich; GFX7-NEXT:    v_alignbit_b32 v13, v14, v12, 16
8087091dd27STim Gymnich; GFX7-NEXT:    v_lshrrev_b32_e32 v3, 16, v2
8097091dd27STim Gymnich; GFX7-NEXT:    v_lshrrev_b32_e32 v7, 16, v6
8107091dd27STim Gymnich; GFX7-NEXT:    v_lshrrev_b32_e32 v11, 16, v10
8117091dd27STim Gymnich; GFX7-NEXT:    v_lshrrev_b32_e32 v15, 16, v14
8127091dd27STim Gymnich; GFX7-NEXT:    s_setpc_b64 s[30:31]
8137091dd27STim Gymnich;
8147091dd27STim Gymnich; GFX8-LABEL: v_abs_v16i16:
8157091dd27STim Gymnich; GFX8:       ; %bb.0:
8167091dd27STim Gymnich; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
81784e9401aSJeffrey Byrnes; GFX8-NEXT:    v_mov_b32_e32 v8, 0
81884e9401aSJeffrey Byrnes; GFX8-NEXT:    v_sub_u16_sdwa v9, v8, v7 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_1
81984e9401aSJeffrey Byrnes; GFX8-NEXT:    v_sub_u16_sdwa v10, v8, v6 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_1
82084e9401aSJeffrey Byrnes; GFX8-NEXT:    v_sub_u16_sdwa v11, v8, v5 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_1
82184e9401aSJeffrey Byrnes; GFX8-NEXT:    v_sub_u16_sdwa v12, v8, v4 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_1
82284e9401aSJeffrey Byrnes; GFX8-NEXT:    v_sub_u16_sdwa v13, v8, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_1
82384e9401aSJeffrey Byrnes; GFX8-NEXT:    v_sub_u16_sdwa v14, v8, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_1
82484e9401aSJeffrey Byrnes; GFX8-NEXT:    v_sub_u16_sdwa v15, v8, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_1
82584e9401aSJeffrey Byrnes; GFX8-NEXT:    v_sub_u16_sdwa v8, v8, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_1
826*6206f544SLucas Ramirez; GFX8-NEXT:    v_sub_u16_e32 v19, 0, v0
827*6206f544SLucas Ramirez; GFX8-NEXT:    v_max_i16_sdwa v8, v0, v8 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:DWORD
828*6206f544SLucas Ramirez; GFX8-NEXT:    v_max_i16_e32 v0, v0, v19
829*6206f544SLucas Ramirez; GFX8-NEXT:    v_or_b32_e32 v0, v0, v8
830*6206f544SLucas Ramirez; GFX8-NEXT:    v_sub_u16_e32 v8, 0, v1
831*6206f544SLucas Ramirez; GFX8-NEXT:    v_max_i16_sdwa v15, v1, v15 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:DWORD
832*6206f544SLucas Ramirez; GFX8-NEXT:    v_max_i16_e32 v1, v1, v8
8337091dd27STim Gymnich; GFX8-NEXT:    v_sub_u16_e32 v16, 0, v7
8347091dd27STim Gymnich; GFX8-NEXT:    v_sub_u16_e32 v17, 0, v6
8357091dd27STim Gymnich; GFX8-NEXT:    v_sub_u16_e32 v18, 0, v5
8367091dd27STim Gymnich; GFX8-NEXT:    v_sub_u16_e32 v19, 0, v4
837*6206f544SLucas Ramirez; GFX8-NEXT:    v_sub_u16_e32 v8, 0, v3
838*6206f544SLucas Ramirez; GFX8-NEXT:    v_or_b32_e32 v1, v1, v15
839*6206f544SLucas Ramirez; GFX8-NEXT:    v_sub_u16_e32 v15, 0, v2
84084e9401aSJeffrey Byrnes; GFX8-NEXT:    v_max_i16_sdwa v9, v7, v9 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:DWORD
84184e9401aSJeffrey Byrnes; GFX8-NEXT:    v_max_i16_sdwa v10, v6, v10 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:DWORD
84284e9401aSJeffrey Byrnes; GFX8-NEXT:    v_max_i16_sdwa v11, v5, v11 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:DWORD
84384e9401aSJeffrey Byrnes; GFX8-NEXT:    v_max_i16_sdwa v12, v4, v12 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:DWORD
84484e9401aSJeffrey Byrnes; GFX8-NEXT:    v_max_i16_sdwa v13, v3, v13 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:DWORD
84584e9401aSJeffrey Byrnes; GFX8-NEXT:    v_max_i16_sdwa v14, v2, v14 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:DWORD
846*6206f544SLucas Ramirez; GFX8-NEXT:    v_max_i16_e32 v2, v2, v15
847*6206f544SLucas Ramirez; GFX8-NEXT:    v_max_i16_e32 v3, v3, v8
8487091dd27STim Gymnich; GFX8-NEXT:    v_max_i16_e32 v4, v4, v19
8497091dd27STim Gymnich; GFX8-NEXT:    v_max_i16_e32 v5, v5, v18
8507091dd27STim Gymnich; GFX8-NEXT:    v_max_i16_e32 v6, v6, v17
8517091dd27STim Gymnich; GFX8-NEXT:    v_max_i16_e32 v7, v7, v16
85284e9401aSJeffrey Byrnes; GFX8-NEXT:    v_or_b32_e32 v2, v2, v14
85384e9401aSJeffrey Byrnes; GFX8-NEXT:    v_or_b32_e32 v3, v3, v13
85484e9401aSJeffrey Byrnes; GFX8-NEXT:    v_or_b32_e32 v4, v4, v12
85584e9401aSJeffrey Byrnes; GFX8-NEXT:    v_or_b32_e32 v5, v5, v11
85684e9401aSJeffrey Byrnes; GFX8-NEXT:    v_or_b32_e32 v6, v6, v10
85784e9401aSJeffrey Byrnes; GFX8-NEXT:    v_or_b32_e32 v7, v7, v9
8587091dd27STim Gymnich; GFX8-NEXT:    s_setpc_b64 s[30:31]
8597091dd27STim Gymnich;
8607091dd27STim Gymnich; GFX9-LABEL: v_abs_v16i16:
8617091dd27STim Gymnich; GFX9:       ; %bb.0:
8627091dd27STim Gymnich; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8637091dd27STim Gymnich; GFX9-NEXT:    v_pk_sub_i16 v8, 0, v0
8647091dd27STim Gymnich; GFX9-NEXT:    v_pk_max_i16 v0, v0, v8
8657091dd27STim Gymnich; GFX9-NEXT:    v_pk_sub_i16 v8, 0, v1
8667091dd27STim Gymnich; GFX9-NEXT:    v_pk_max_i16 v1, v1, v8
8677091dd27STim Gymnich; GFX9-NEXT:    v_pk_sub_i16 v8, 0, v2
8687091dd27STim Gymnich; GFX9-NEXT:    v_pk_max_i16 v2, v2, v8
8697091dd27STim Gymnich; GFX9-NEXT:    v_pk_sub_i16 v8, 0, v3
8707091dd27STim Gymnich; GFX9-NEXT:    v_pk_max_i16 v3, v3, v8
8717091dd27STim Gymnich; GFX9-NEXT:    v_pk_sub_i16 v8, 0, v4
8727091dd27STim Gymnich; GFX9-NEXT:    v_pk_max_i16 v4, v4, v8
8737091dd27STim Gymnich; GFX9-NEXT:    v_pk_sub_i16 v8, 0, v5
8747091dd27STim Gymnich; GFX9-NEXT:    v_pk_max_i16 v5, v5, v8
8757091dd27STim Gymnich; GFX9-NEXT:    v_pk_sub_i16 v8, 0, v6
8767091dd27STim Gymnich; GFX9-NEXT:    v_pk_max_i16 v6, v6, v8
8777091dd27STim Gymnich; GFX9-NEXT:    v_pk_sub_i16 v8, 0, v7
8787091dd27STim Gymnich; GFX9-NEXT:    v_pk_max_i16 v7, v7, v8
8797091dd27STim Gymnich; GFX9-NEXT:    s_setpc_b64 s[30:31]
8807091dd27STim Gymnich;
8817091dd27STim Gymnich; GFX10-LABEL: v_abs_v16i16:
8827091dd27STim Gymnich; GFX10:       ; %bb.0:
8837091dd27STim Gymnich; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
8847091dd27STim Gymnich; GFX10-NEXT:    v_pk_sub_i16 v8, 0, v0
8857091dd27STim Gymnich; GFX10-NEXT:    v_pk_sub_i16 v9, 0, v1
8867091dd27STim Gymnich; GFX10-NEXT:    v_pk_sub_i16 v10, 0, v2
8877091dd27STim Gymnich; GFX10-NEXT:    v_pk_sub_i16 v11, 0, v6
8887091dd27STim Gymnich; GFX10-NEXT:    v_pk_sub_i16 v12, 0, v7
8897091dd27STim Gymnich; GFX10-NEXT:    v_pk_max_i16 v0, v0, v8
8907091dd27STim Gymnich; GFX10-NEXT:    v_pk_max_i16 v1, v1, v9
8917091dd27STim Gymnich; GFX10-NEXT:    v_pk_max_i16 v2, v2, v10
8927091dd27STim Gymnich; GFX10-NEXT:    v_pk_sub_i16 v8, 0, v3
8937091dd27STim Gymnich; GFX10-NEXT:    v_pk_sub_i16 v9, 0, v4
8947091dd27STim Gymnich; GFX10-NEXT:    v_pk_sub_i16 v10, 0, v5
8957091dd27STim Gymnich; GFX10-NEXT:    v_pk_max_i16 v6, v6, v11
8967091dd27STim Gymnich; GFX10-NEXT:    v_pk_max_i16 v7, v7, v12
8977091dd27STim Gymnich; GFX10-NEXT:    v_pk_max_i16 v3, v3, v8
8987091dd27STim Gymnich; GFX10-NEXT:    v_pk_max_i16 v4, v4, v9
8997091dd27STim Gymnich; GFX10-NEXT:    v_pk_max_i16 v5, v5, v10
9007091dd27STim Gymnich; GFX10-NEXT:    s_setpc_b64 s[30:31]
9017091dd27STim Gymnich;
9027091dd27STim Gymnich; GFX11-LABEL: v_abs_v16i16:
9037091dd27STim Gymnich; GFX11:       ; %bb.0:
9047091dd27STim Gymnich; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9057091dd27STim Gymnich; GFX11-NEXT:    v_pk_sub_i16 v8, 0, v0
9067091dd27STim Gymnich; GFX11-NEXT:    v_pk_sub_i16 v9, 0, v1
9077091dd27STim Gymnich; GFX11-NEXT:    v_pk_sub_i16 v10, 0, v2
9087091dd27STim Gymnich; GFX11-NEXT:    v_pk_sub_i16 v11, 0, v6
9097091dd27STim Gymnich; GFX11-NEXT:    v_pk_sub_i16 v12, 0, v7
9107091dd27STim Gymnich; GFX11-NEXT:    v_pk_max_i16 v0, v0, v8
9117091dd27STim Gymnich; GFX11-NEXT:    v_pk_max_i16 v1, v1, v9
9127091dd27STim Gymnich; GFX11-NEXT:    v_pk_max_i16 v2, v2, v10
9137091dd27STim Gymnich; GFX11-NEXT:    v_pk_sub_i16 v8, 0, v3
9147091dd27STim Gymnich; GFX11-NEXT:    v_pk_sub_i16 v9, 0, v4
9157091dd27STim Gymnich; GFX11-NEXT:    v_pk_sub_i16 v10, 0, v5
9167091dd27STim Gymnich; GFX11-NEXT:    v_pk_max_i16 v6, v6, v11
9177091dd27STim Gymnich; GFX11-NEXT:    v_pk_max_i16 v7, v7, v12
9187091dd27STim Gymnich; GFX11-NEXT:    v_pk_max_i16 v3, v3, v8
9197091dd27STim Gymnich; GFX11-NEXT:    v_pk_max_i16 v4, v4, v9
9207091dd27STim Gymnich; GFX11-NEXT:    v_pk_max_i16 v5, v5, v10
9217091dd27STim Gymnich; GFX11-NEXT:    s_setpc_b64 s[30:31]
9227091dd27STim Gymnich;
9237091dd27STim Gymnich; GFX12-LABEL: v_abs_v16i16:
9247091dd27STim Gymnich; GFX12:       ; %bb.0:
9257091dd27STim Gymnich; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0
9267091dd27STim Gymnich; GFX12-NEXT:    s_wait_expcnt 0x0
9277091dd27STim Gymnich; GFX12-NEXT:    s_wait_samplecnt 0x0
9287091dd27STim Gymnich; GFX12-NEXT:    s_wait_bvhcnt 0x0
9297091dd27STim Gymnich; GFX12-NEXT:    s_wait_kmcnt 0x0
9307091dd27STim Gymnich; GFX12-NEXT:    v_pk_sub_i16 v8, 0, v0
9317091dd27STim Gymnich; GFX12-NEXT:    v_pk_sub_i16 v9, 0, v1
9327091dd27STim Gymnich; GFX12-NEXT:    v_pk_sub_i16 v10, 0, v2
9337091dd27STim Gymnich; GFX12-NEXT:    v_pk_sub_i16 v11, 0, v6
9347091dd27STim Gymnich; GFX12-NEXT:    v_pk_sub_i16 v12, 0, v7
9357091dd27STim Gymnich; GFX12-NEXT:    v_pk_max_i16 v0, v0, v8
9367091dd27STim Gymnich; GFX12-NEXT:    v_pk_max_i16 v1, v1, v9
9377091dd27STim Gymnich; GFX12-NEXT:    v_pk_max_i16 v2, v2, v10
9387091dd27STim Gymnich; GFX12-NEXT:    v_pk_sub_i16 v8, 0, v3
9397091dd27STim Gymnich; GFX12-NEXT:    v_pk_sub_i16 v9, 0, v4
9407091dd27STim Gymnich; GFX12-NEXT:    v_pk_sub_i16 v10, 0, v5
9417091dd27STim Gymnich; GFX12-NEXT:    v_pk_max_i16 v6, v6, v11
9427091dd27STim Gymnich; GFX12-NEXT:    v_pk_max_i16 v7, v7, v12
9437091dd27STim Gymnich; GFX12-NEXT:    v_pk_max_i16 v3, v3, v8
9447091dd27STim Gymnich; GFX12-NEXT:    v_pk_max_i16 v4, v4, v9
9457091dd27STim Gymnich; GFX12-NEXT:    v_pk_max_i16 v5, v5, v10
9467091dd27STim Gymnich; GFX12-NEXT:    s_setpc_b64 s[30:31]
9477091dd27STim Gymnich  %res = call <16 x i16> @llvm.abs.v16i16(<16 x i16> %arg, i1 false)
9487091dd27STim Gymnich  ret <16 x i16> %res
9497091dd27STim Gymnich}
9507091dd27STim Gymnich
9517091dd27STim Gymnichdefine <32 x i16> @v_abs_v32i16(<32 x i16> %arg) {
9527091dd27STim Gymnich; GFX6-LABEL: v_abs_v32i16:
9537091dd27STim Gymnich; GFX6:       ; %bb.0:
9547091dd27STim Gymnich; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
9557091dd27STim Gymnich; GFX6-NEXT:    v_bfe_i32 v28, v28, 0, 16
9567091dd27STim Gymnich; GFX6-NEXT:    v_sub_i32_e32 v31, vcc, 0, v28
9577091dd27STim Gymnich; GFX6-NEXT:    v_bfe_i32 v29, v29, 0, 16
9587091dd27STim Gymnich; GFX6-NEXT:    v_max_i32_e32 v28, v28, v31
9597091dd27STim Gymnich; GFX6-NEXT:    v_sub_i32_e32 v31, vcc, 0, v29
9607091dd27STim Gymnich; GFX6-NEXT:    v_bfe_i32 v30, v30, 0, 16
9617091dd27STim Gymnich; GFX6-NEXT:    v_max_i32_e32 v29, v29, v31
9627091dd27STim Gymnich; GFX6-NEXT:    v_sub_i32_e32 v31, vcc, 0, v30
9637091dd27STim Gymnich; GFX6-NEXT:    v_bfe_i32 v26, v26, 0, 16
9647091dd27STim Gymnich; GFX6-NEXT:    v_max_i32_e32 v30, v30, v31
9657091dd27STim Gymnich; GFX6-NEXT:    v_sub_i32_e32 v31, vcc, 0, v26
9667091dd27STim Gymnich; GFX6-NEXT:    v_bfe_i32 v27, v27, 0, 16
9677091dd27STim Gymnich; GFX6-NEXT:    v_max_i32_e32 v26, v26, v31
9687091dd27STim Gymnich; GFX6-NEXT:    v_sub_i32_e32 v31, vcc, 0, v27
9697091dd27STim Gymnich; GFX6-NEXT:    v_bfe_i32 v24, v24, 0, 16
9707091dd27STim Gymnich; GFX6-NEXT:    v_max_i32_e32 v27, v27, v31
9717091dd27STim Gymnich; GFX6-NEXT:    v_sub_i32_e32 v31, vcc, 0, v24
9727091dd27STim Gymnich; GFX6-NEXT:    v_bfe_i32 v25, v25, 0, 16
9737091dd27STim Gymnich; GFX6-NEXT:    v_max_i32_e32 v24, v24, v31
9747091dd27STim Gymnich; GFX6-NEXT:    v_sub_i32_e32 v31, vcc, 0, v25
9757091dd27STim Gymnich; GFX6-NEXT:    v_bfe_i32 v22, v22, 0, 16
9767091dd27STim Gymnich; GFX6-NEXT:    v_max_i32_e32 v25, v25, v31
9777091dd27STim Gymnich; GFX6-NEXT:    v_sub_i32_e32 v31, vcc, 0, v22
9787091dd27STim Gymnich; GFX6-NEXT:    v_bfe_i32 v23, v23, 0, 16
9797091dd27STim Gymnich; GFX6-NEXT:    v_max_i32_e32 v22, v22, v31
9807091dd27STim Gymnich; GFX6-NEXT:    v_sub_i32_e32 v31, vcc, 0, v23
9817091dd27STim Gymnich; GFX6-NEXT:    v_max_i32_e32 v23, v23, v31
9827091dd27STim Gymnich; GFX6-NEXT:    buffer_load_dword v31, off, s[0:3], s32
9837091dd27STim Gymnich; GFX6-NEXT:    v_lshlrev_b32_e32 v23, 16, v23
9847091dd27STim Gymnich; GFX6-NEXT:    v_lshlrev_b32_e32 v25, 16, v25
9857091dd27STim Gymnich; GFX6-NEXT:    v_or_b32_e32 v22, v22, v23
9867091dd27STim Gymnich; GFX6-NEXT:    v_or_b32_e32 v24, v24, v25
9877091dd27STim Gymnich; GFX6-NEXT:    v_bfe_i32 v21, v21, 0, 16
9887091dd27STim Gymnich; GFX6-NEXT:    v_bfe_i32 v20, v20, 0, 16
9897091dd27STim Gymnich; GFX6-NEXT:    v_lshlrev_b32_e32 v29, 16, v29
9907091dd27STim Gymnich; GFX6-NEXT:    v_or_b32_e32 v28, v28, v29
9917091dd27STim Gymnich; GFX6-NEXT:    v_sub_i32_e32 v29, vcc, 0, v20
9927091dd27STim Gymnich; GFX6-NEXT:    v_max_i32_e32 v20, v20, v29
9937091dd27STim Gymnich; GFX6-NEXT:    v_bfe_i32 v18, v18, 0, 16
9947091dd27STim Gymnich; GFX6-NEXT:    v_bfe_i32 v19, v19, 0, 16
9957091dd27STim Gymnich; GFX6-NEXT:    v_bfe_i32 v16, v16, 0, 16
9967091dd27STim Gymnich; GFX6-NEXT:    v_bfe_i32 v17, v17, 0, 16
9977091dd27STim Gymnich; GFX6-NEXT:    v_bfe_i32 v14, v14, 0, 16
9987091dd27STim Gymnich; GFX6-NEXT:    v_bfe_i32 v15, v15, 0, 16
9997091dd27STim Gymnich; GFX6-NEXT:    v_bfe_i32 v12, v12, 0, 16
10007091dd27STim Gymnich; GFX6-NEXT:    v_bfe_i32 v13, v13, 0, 16
10017091dd27STim Gymnich; GFX6-NEXT:    v_bfe_i32 v10, v10, 0, 16
10027091dd27STim Gymnich; GFX6-NEXT:    v_bfe_i32 v11, v11, 0, 16
10037091dd27STim Gymnich; GFX6-NEXT:    v_bfe_i32 v8, v8, 0, 16
10047091dd27STim Gymnich; GFX6-NEXT:    v_bfe_i32 v9, v9, 0, 16
10057091dd27STim Gymnich; GFX6-NEXT:    v_bfe_i32 v6, v6, 0, 16
10067091dd27STim Gymnich; GFX6-NEXT:    v_bfe_i32 v7, v7, 0, 16
10077091dd27STim Gymnich; GFX6-NEXT:    v_bfe_i32 v4, v4, 0, 16
10087091dd27STim Gymnich; GFX6-NEXT:    v_bfe_i32 v5, v5, 0, 16
10097091dd27STim Gymnich; GFX6-NEXT:    v_bfe_i32 v2, v2, 0, 16
10107091dd27STim Gymnich; GFX6-NEXT:    v_bfe_i32 v3, v3, 0, 16
10117091dd27STim Gymnich; GFX6-NEXT:    v_bfe_i32 v0, v0, 0, 16
10127091dd27STim Gymnich; GFX6-NEXT:    v_bfe_i32 v1, v1, 0, 16
10137091dd27STim Gymnich; GFX6-NEXT:    v_lshlrev_b32_e32 v27, 16, v27
10147091dd27STim Gymnich; GFX6-NEXT:    v_or_b32_e32 v26, v26, v27
10157091dd27STim Gymnich; GFX6-NEXT:    v_lshrrev_b32_e32 v27, 16, v26
10167091dd27STim Gymnich; GFX6-NEXT:    s_waitcnt vmcnt(0)
10177091dd27STim Gymnich; GFX6-NEXT:    v_bfe_i32 v23, v31, 0, 16
10187091dd27STim Gymnich; GFX6-NEXT:    v_sub_i32_e32 v25, vcc, 0, v23
10197091dd27STim Gymnich; GFX6-NEXT:    v_max_i32_e32 v23, v23, v25
10207091dd27STim Gymnich; GFX6-NEXT:    v_lshlrev_b32_e32 v23, 16, v23
10217091dd27STim Gymnich; GFX6-NEXT:    v_or_b32_e32 v30, v30, v23
10227091dd27STim Gymnich; GFX6-NEXT:    v_sub_i32_e32 v23, vcc, 0, v21
10237091dd27STim Gymnich; GFX6-NEXT:    v_max_i32_e32 v21, v21, v23
10247091dd27STim Gymnich; GFX6-NEXT:    v_lshlrev_b32_e32 v21, 16, v21
10257091dd27STim Gymnich; GFX6-NEXT:    v_or_b32_e32 v20, v20, v21
10267091dd27STim Gymnich; GFX6-NEXT:    v_sub_i32_e32 v21, vcc, 0, v18
10277091dd27STim Gymnich; GFX6-NEXT:    v_max_i32_e32 v18, v18, v21
10287091dd27STim Gymnich; GFX6-NEXT:    v_sub_i32_e32 v21, vcc, 0, v19
10297091dd27STim Gymnich; GFX6-NEXT:    v_max_i32_e32 v19, v19, v21
10307091dd27STim Gymnich; GFX6-NEXT:    v_lshlrev_b32_e32 v19, 16, v19
10317091dd27STim Gymnich; GFX6-NEXT:    v_or_b32_e32 v18, v18, v19
10327091dd27STim Gymnich; GFX6-NEXT:    v_sub_i32_e32 v19, vcc, 0, v16
10337091dd27STim Gymnich; GFX6-NEXT:    v_max_i32_e32 v16, v16, v19
10347091dd27STim Gymnich; GFX6-NEXT:    v_sub_i32_e32 v19, vcc, 0, v17
10357091dd27STim Gymnich; GFX6-NEXT:    v_max_i32_e32 v17, v17, v19
10367091dd27STim Gymnich; GFX6-NEXT:    v_lshlrev_b32_e32 v17, 16, v17
10377091dd27STim Gymnich; GFX6-NEXT:    v_or_b32_e32 v16, v16, v17
10387091dd27STim Gymnich; GFX6-NEXT:    v_sub_i32_e32 v17, vcc, 0, v14
10397091dd27STim Gymnich; GFX6-NEXT:    v_max_i32_e32 v14, v14, v17
10407091dd27STim Gymnich; GFX6-NEXT:    v_sub_i32_e32 v17, vcc, 0, v15
10417091dd27STim Gymnich; GFX6-NEXT:    v_max_i32_e32 v15, v15, v17
10427091dd27STim Gymnich; GFX6-NEXT:    v_lshlrev_b32_e32 v15, 16, v15
10437091dd27STim Gymnich; GFX6-NEXT:    v_or_b32_e32 v14, v14, v15
10447091dd27STim Gymnich; GFX6-NEXT:    v_sub_i32_e32 v15, vcc, 0, v12
10457091dd27STim Gymnich; GFX6-NEXT:    v_max_i32_e32 v12, v12, v15
10467091dd27STim Gymnich; GFX6-NEXT:    v_sub_i32_e32 v15, vcc, 0, v13
10477091dd27STim Gymnich; GFX6-NEXT:    v_max_i32_e32 v13, v13, v15
10487091dd27STim Gymnich; GFX6-NEXT:    v_lshlrev_b32_e32 v13, 16, v13
10497091dd27STim Gymnich; GFX6-NEXT:    v_or_b32_e32 v12, v12, v13
10507091dd27STim Gymnich; GFX6-NEXT:    v_sub_i32_e32 v13, vcc, 0, v10
10517091dd27STim Gymnich; GFX6-NEXT:    v_max_i32_e32 v10, v10, v13
10527091dd27STim Gymnich; GFX6-NEXT:    v_sub_i32_e32 v13, vcc, 0, v11
10537091dd27STim Gymnich; GFX6-NEXT:    v_max_i32_e32 v11, v11, v13
10547091dd27STim Gymnich; GFX6-NEXT:    v_lshlrev_b32_e32 v11, 16, v11
10557091dd27STim Gymnich; GFX6-NEXT:    v_or_b32_e32 v10, v10, v11
10567091dd27STim Gymnich; GFX6-NEXT:    v_sub_i32_e32 v11, vcc, 0, v8
10577091dd27STim Gymnich; GFX6-NEXT:    v_max_i32_e32 v8, v8, v11
10587091dd27STim Gymnich; GFX6-NEXT:    v_sub_i32_e32 v11, vcc, 0, v9
10597091dd27STim Gymnich; GFX6-NEXT:    v_max_i32_e32 v9, v9, v11
10607091dd27STim Gymnich; GFX6-NEXT:    v_lshlrev_b32_e32 v9, 16, v9
10617091dd27STim Gymnich; GFX6-NEXT:    v_or_b32_e32 v8, v8, v9
10627091dd27STim Gymnich; GFX6-NEXT:    v_sub_i32_e32 v9, vcc, 0, v6
10637091dd27STim Gymnich; GFX6-NEXT:    v_max_i32_e32 v6, v6, v9
10647091dd27STim Gymnich; GFX6-NEXT:    v_sub_i32_e32 v9, vcc, 0, v7
10657091dd27STim Gymnich; GFX6-NEXT:    v_max_i32_e32 v7, v7, v9
10667091dd27STim Gymnich; GFX6-NEXT:    v_lshlrev_b32_e32 v7, 16, v7
10677091dd27STim Gymnich; GFX6-NEXT:    v_or_b32_e32 v6, v6, v7
10687091dd27STim Gymnich; GFX6-NEXT:    v_sub_i32_e32 v7, vcc, 0, v4
10697091dd27STim Gymnich; GFX6-NEXT:    v_max_i32_e32 v4, v4, v7
10707091dd27STim Gymnich; GFX6-NEXT:    v_sub_i32_e32 v7, vcc, 0, v5
10717091dd27STim Gymnich; GFX6-NEXT:    v_max_i32_e32 v5, v5, v7
10727091dd27STim Gymnich; GFX6-NEXT:    v_lshlrev_b32_e32 v5, 16, v5
10737091dd27STim Gymnich; GFX6-NEXT:    v_or_b32_e32 v4, v4, v5
10747091dd27STim Gymnich; GFX6-NEXT:    v_sub_i32_e32 v5, vcc, 0, v2
10757091dd27STim Gymnich; GFX6-NEXT:    v_max_i32_e32 v2, v2, v5
10767091dd27STim Gymnich; GFX6-NEXT:    v_sub_i32_e32 v5, vcc, 0, v3
10777091dd27STim Gymnich; GFX6-NEXT:    v_max_i32_e32 v3, v3, v5
10787091dd27STim Gymnich; GFX6-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
10797091dd27STim Gymnich; GFX6-NEXT:    v_or_b32_e32 v2, v2, v3
10807091dd27STim Gymnich; GFX6-NEXT:    v_sub_i32_e32 v3, vcc, 0, v0
10817091dd27STim Gymnich; GFX6-NEXT:    v_max_i32_e32 v0, v0, v3
10827091dd27STim Gymnich; GFX6-NEXT:    v_sub_i32_e32 v3, vcc, 0, v1
10837091dd27STim Gymnich; GFX6-NEXT:    v_max_i32_e32 v1, v1, v3
10847091dd27STim Gymnich; GFX6-NEXT:    v_lshlrev_b32_e32 v1, 16, v1
10857091dd27STim Gymnich; GFX6-NEXT:    v_or_b32_e32 v0, v0, v1
10867091dd27STim Gymnich; GFX6-NEXT:    v_alignbit_b32 v1, v2, v0, 16
10877091dd27STim Gymnich; GFX6-NEXT:    v_alignbit_b32 v5, v6, v4, 16
10887091dd27STim Gymnich; GFX6-NEXT:    v_alignbit_b32 v9, v10, v8, 16
10897091dd27STim Gymnich; GFX6-NEXT:    v_alignbit_b32 v13, v14, v12, 16
10907091dd27STim Gymnich; GFX6-NEXT:    v_alignbit_b32 v17, v18, v16, 16
10917091dd27STim Gymnich; GFX6-NEXT:    v_alignbit_b32 v21, v22, v20, 16
10927091dd27STim Gymnich; GFX6-NEXT:    v_alignbit_b32 v25, v26, v24, 16
10937091dd27STim Gymnich; GFX6-NEXT:    v_alignbit_b32 v29, v30, v28, 16
10947091dd27STim Gymnich; GFX6-NEXT:    v_lshrrev_b32_e32 v3, 16, v2
10957091dd27STim Gymnich; GFX6-NEXT:    v_lshrrev_b32_e32 v7, 16, v6
10967091dd27STim Gymnich; GFX6-NEXT:    v_lshrrev_b32_e32 v11, 16, v10
10977091dd27STim Gymnich; GFX6-NEXT:    v_lshrrev_b32_e32 v15, 16, v14
10987091dd27STim Gymnich; GFX6-NEXT:    v_lshrrev_b32_e32 v19, 16, v18
10997091dd27STim Gymnich; GFX6-NEXT:    v_lshrrev_b32_e32 v23, 16, v22
11007091dd27STim Gymnich; GFX6-NEXT:    v_lshrrev_b32_e32 v31, 16, v30
11017091dd27STim Gymnich; GFX6-NEXT:    s_setpc_b64 s[30:31]
11027091dd27STim Gymnich;
11037091dd27STim Gymnich; GFX7-LABEL: v_abs_v32i16:
11047091dd27STim Gymnich; GFX7:       ; %bb.0:
11057091dd27STim Gymnich; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
11067091dd27STim Gymnich; GFX7-NEXT:    v_bfe_i32 v28, v28, 0, 16
11077091dd27STim Gymnich; GFX7-NEXT:    v_sub_i32_e32 v31, vcc, 0, v28
11087091dd27STim Gymnich; GFX7-NEXT:    v_bfe_i32 v29, v29, 0, 16
11097091dd27STim Gymnich; GFX7-NEXT:    v_max_i32_e32 v28, v28, v31
11107091dd27STim Gymnich; GFX7-NEXT:    v_sub_i32_e32 v31, vcc, 0, v29
11117091dd27STim Gymnich; GFX7-NEXT:    v_bfe_i32 v30, v30, 0, 16
11127091dd27STim Gymnich; GFX7-NEXT:    v_max_i32_e32 v29, v29, v31
11137091dd27STim Gymnich; GFX7-NEXT:    v_sub_i32_e32 v31, vcc, 0, v30
11147091dd27STim Gymnich; GFX7-NEXT:    v_bfe_i32 v26, v26, 0, 16
11157091dd27STim Gymnich; GFX7-NEXT:    v_max_i32_e32 v30, v30, v31
11167091dd27STim Gymnich; GFX7-NEXT:    v_sub_i32_e32 v31, vcc, 0, v26
11177091dd27STim Gymnich; GFX7-NEXT:    v_bfe_i32 v27, v27, 0, 16
11187091dd27STim Gymnich; GFX7-NEXT:    v_max_i32_e32 v26, v26, v31
11197091dd27STim Gymnich; GFX7-NEXT:    v_sub_i32_e32 v31, vcc, 0, v27
11207091dd27STim Gymnich; GFX7-NEXT:    v_bfe_i32 v24, v24, 0, 16
11217091dd27STim Gymnich; GFX7-NEXT:    v_max_i32_e32 v27, v27, v31
11227091dd27STim Gymnich; GFX7-NEXT:    v_sub_i32_e32 v31, vcc, 0, v24
11237091dd27STim Gymnich; GFX7-NEXT:    v_bfe_i32 v25, v25, 0, 16
11247091dd27STim Gymnich; GFX7-NEXT:    v_max_i32_e32 v24, v24, v31
11257091dd27STim Gymnich; GFX7-NEXT:    v_sub_i32_e32 v31, vcc, 0, v25
11267091dd27STim Gymnich; GFX7-NEXT:    v_bfe_i32 v22, v22, 0, 16
11277091dd27STim Gymnich; GFX7-NEXT:    v_max_i32_e32 v25, v25, v31
11287091dd27STim Gymnich; GFX7-NEXT:    v_sub_i32_e32 v31, vcc, 0, v22
11297091dd27STim Gymnich; GFX7-NEXT:    v_bfe_i32 v23, v23, 0, 16
11307091dd27STim Gymnich; GFX7-NEXT:    v_max_i32_e32 v22, v22, v31
11317091dd27STim Gymnich; GFX7-NEXT:    v_sub_i32_e32 v31, vcc, 0, v23
11327091dd27STim Gymnich; GFX7-NEXT:    v_max_i32_e32 v23, v23, v31
11337091dd27STim Gymnich; GFX7-NEXT:    buffer_load_dword v31, off, s[0:3], s32
11347091dd27STim Gymnich; GFX7-NEXT:    v_lshlrev_b32_e32 v23, 16, v23
11357091dd27STim Gymnich; GFX7-NEXT:    v_lshlrev_b32_e32 v25, 16, v25
11367091dd27STim Gymnich; GFX7-NEXT:    v_or_b32_e32 v22, v22, v23
11377091dd27STim Gymnich; GFX7-NEXT:    v_or_b32_e32 v24, v24, v25
11387091dd27STim Gymnich; GFX7-NEXT:    v_bfe_i32 v21, v21, 0, 16
11397091dd27STim Gymnich; GFX7-NEXT:    v_bfe_i32 v20, v20, 0, 16
11407091dd27STim Gymnich; GFX7-NEXT:    v_lshlrev_b32_e32 v29, 16, v29
11417091dd27STim Gymnich; GFX7-NEXT:    v_or_b32_e32 v28, v28, v29
11427091dd27STim Gymnich; GFX7-NEXT:    v_sub_i32_e32 v29, vcc, 0, v20
11437091dd27STim Gymnich; GFX7-NEXT:    v_max_i32_e32 v20, v20, v29
11447091dd27STim Gymnich; GFX7-NEXT:    v_bfe_i32 v18, v18, 0, 16
11457091dd27STim Gymnich; GFX7-NEXT:    v_bfe_i32 v19, v19, 0, 16
11467091dd27STim Gymnich; GFX7-NEXT:    v_bfe_i32 v16, v16, 0, 16
11477091dd27STim Gymnich; GFX7-NEXT:    v_bfe_i32 v17, v17, 0, 16
11487091dd27STim Gymnich; GFX7-NEXT:    v_bfe_i32 v14, v14, 0, 16
11497091dd27STim Gymnich; GFX7-NEXT:    v_bfe_i32 v15, v15, 0, 16
11507091dd27STim Gymnich; GFX7-NEXT:    v_bfe_i32 v12, v12, 0, 16
11517091dd27STim Gymnich; GFX7-NEXT:    v_bfe_i32 v13, v13, 0, 16
11527091dd27STim Gymnich; GFX7-NEXT:    v_bfe_i32 v10, v10, 0, 16
11537091dd27STim Gymnich; GFX7-NEXT:    v_bfe_i32 v11, v11, 0, 16
11547091dd27STim Gymnich; GFX7-NEXT:    v_bfe_i32 v8, v8, 0, 16
11557091dd27STim Gymnich; GFX7-NEXT:    v_bfe_i32 v9, v9, 0, 16
11567091dd27STim Gymnich; GFX7-NEXT:    v_bfe_i32 v6, v6, 0, 16
11577091dd27STim Gymnich; GFX7-NEXT:    v_bfe_i32 v7, v7, 0, 16
11587091dd27STim Gymnich; GFX7-NEXT:    v_bfe_i32 v4, v4, 0, 16
11597091dd27STim Gymnich; GFX7-NEXT:    v_bfe_i32 v5, v5, 0, 16
11607091dd27STim Gymnich; GFX7-NEXT:    v_bfe_i32 v2, v2, 0, 16
11617091dd27STim Gymnich; GFX7-NEXT:    v_bfe_i32 v3, v3, 0, 16
11627091dd27STim Gymnich; GFX7-NEXT:    v_bfe_i32 v0, v0, 0, 16
11637091dd27STim Gymnich; GFX7-NEXT:    v_bfe_i32 v1, v1, 0, 16
11647091dd27STim Gymnich; GFX7-NEXT:    v_lshlrev_b32_e32 v27, 16, v27
11657091dd27STim Gymnich; GFX7-NEXT:    v_or_b32_e32 v26, v26, v27
11667091dd27STim Gymnich; GFX7-NEXT:    v_lshrrev_b32_e32 v27, 16, v26
11677091dd27STim Gymnich; GFX7-NEXT:    s_waitcnt vmcnt(0)
11687091dd27STim Gymnich; GFX7-NEXT:    v_bfe_i32 v23, v31, 0, 16
11697091dd27STim Gymnich; GFX7-NEXT:    v_sub_i32_e32 v25, vcc, 0, v23
11707091dd27STim Gymnich; GFX7-NEXT:    v_max_i32_e32 v23, v23, v25
11717091dd27STim Gymnich; GFX7-NEXT:    v_lshlrev_b32_e32 v23, 16, v23
11727091dd27STim Gymnich; GFX7-NEXT:    v_or_b32_e32 v30, v30, v23
11737091dd27STim Gymnich; GFX7-NEXT:    v_sub_i32_e32 v23, vcc, 0, v21
11747091dd27STim Gymnich; GFX7-NEXT:    v_max_i32_e32 v21, v21, v23
11757091dd27STim Gymnich; GFX7-NEXT:    v_lshlrev_b32_e32 v21, 16, v21
11767091dd27STim Gymnich; GFX7-NEXT:    v_or_b32_e32 v20, v20, v21
11777091dd27STim Gymnich; GFX7-NEXT:    v_sub_i32_e32 v21, vcc, 0, v18
11787091dd27STim Gymnich; GFX7-NEXT:    v_max_i32_e32 v18, v18, v21
11797091dd27STim Gymnich; GFX7-NEXT:    v_sub_i32_e32 v21, vcc, 0, v19
11807091dd27STim Gymnich; GFX7-NEXT:    v_max_i32_e32 v19, v19, v21
11817091dd27STim Gymnich; GFX7-NEXT:    v_lshlrev_b32_e32 v19, 16, v19
11827091dd27STim Gymnich; GFX7-NEXT:    v_or_b32_e32 v18, v18, v19
11837091dd27STim Gymnich; GFX7-NEXT:    v_sub_i32_e32 v19, vcc, 0, v16
11847091dd27STim Gymnich; GFX7-NEXT:    v_max_i32_e32 v16, v16, v19
11857091dd27STim Gymnich; GFX7-NEXT:    v_sub_i32_e32 v19, vcc, 0, v17
11867091dd27STim Gymnich; GFX7-NEXT:    v_max_i32_e32 v17, v17, v19
11877091dd27STim Gymnich; GFX7-NEXT:    v_lshlrev_b32_e32 v17, 16, v17
11887091dd27STim Gymnich; GFX7-NEXT:    v_or_b32_e32 v16, v16, v17
11897091dd27STim Gymnich; GFX7-NEXT:    v_sub_i32_e32 v17, vcc, 0, v14
11907091dd27STim Gymnich; GFX7-NEXT:    v_max_i32_e32 v14, v14, v17
11917091dd27STim Gymnich; GFX7-NEXT:    v_sub_i32_e32 v17, vcc, 0, v15
11927091dd27STim Gymnich; GFX7-NEXT:    v_max_i32_e32 v15, v15, v17
11937091dd27STim Gymnich; GFX7-NEXT:    v_lshlrev_b32_e32 v15, 16, v15
11947091dd27STim Gymnich; GFX7-NEXT:    v_or_b32_e32 v14, v14, v15
11957091dd27STim Gymnich; GFX7-NEXT:    v_sub_i32_e32 v15, vcc, 0, v12
11967091dd27STim Gymnich; GFX7-NEXT:    v_max_i32_e32 v12, v12, v15
11977091dd27STim Gymnich; GFX7-NEXT:    v_sub_i32_e32 v15, vcc, 0, v13
11987091dd27STim Gymnich; GFX7-NEXT:    v_max_i32_e32 v13, v13, v15
11997091dd27STim Gymnich; GFX7-NEXT:    v_lshlrev_b32_e32 v13, 16, v13
12007091dd27STim Gymnich; GFX7-NEXT:    v_or_b32_e32 v12, v12, v13
12017091dd27STim Gymnich; GFX7-NEXT:    v_sub_i32_e32 v13, vcc, 0, v10
12027091dd27STim Gymnich; GFX7-NEXT:    v_max_i32_e32 v10, v10, v13
12037091dd27STim Gymnich; GFX7-NEXT:    v_sub_i32_e32 v13, vcc, 0, v11
12047091dd27STim Gymnich; GFX7-NEXT:    v_max_i32_e32 v11, v11, v13
12057091dd27STim Gymnich; GFX7-NEXT:    v_lshlrev_b32_e32 v11, 16, v11
12067091dd27STim Gymnich; GFX7-NEXT:    v_or_b32_e32 v10, v10, v11
12077091dd27STim Gymnich; GFX7-NEXT:    v_sub_i32_e32 v11, vcc, 0, v8
12087091dd27STim Gymnich; GFX7-NEXT:    v_max_i32_e32 v8, v8, v11
12097091dd27STim Gymnich; GFX7-NEXT:    v_sub_i32_e32 v11, vcc, 0, v9
12107091dd27STim Gymnich; GFX7-NEXT:    v_max_i32_e32 v9, v9, v11
12117091dd27STim Gymnich; GFX7-NEXT:    v_lshlrev_b32_e32 v9, 16, v9
12127091dd27STim Gymnich; GFX7-NEXT:    v_or_b32_e32 v8, v8, v9
12137091dd27STim Gymnich; GFX7-NEXT:    v_sub_i32_e32 v9, vcc, 0, v6
12147091dd27STim Gymnich; GFX7-NEXT:    v_max_i32_e32 v6, v6, v9
12157091dd27STim Gymnich; GFX7-NEXT:    v_sub_i32_e32 v9, vcc, 0, v7
12167091dd27STim Gymnich; GFX7-NEXT:    v_max_i32_e32 v7, v7, v9
12177091dd27STim Gymnich; GFX7-NEXT:    v_lshlrev_b32_e32 v7, 16, v7
12187091dd27STim Gymnich; GFX7-NEXT:    v_or_b32_e32 v6, v6, v7
12197091dd27STim Gymnich; GFX7-NEXT:    v_sub_i32_e32 v7, vcc, 0, v4
12207091dd27STim Gymnich; GFX7-NEXT:    v_max_i32_e32 v4, v4, v7
12217091dd27STim Gymnich; GFX7-NEXT:    v_sub_i32_e32 v7, vcc, 0, v5
12227091dd27STim Gymnich; GFX7-NEXT:    v_max_i32_e32 v5, v5, v7
12237091dd27STim Gymnich; GFX7-NEXT:    v_lshlrev_b32_e32 v5, 16, v5
12247091dd27STim Gymnich; GFX7-NEXT:    v_or_b32_e32 v4, v4, v5
12257091dd27STim Gymnich; GFX7-NEXT:    v_sub_i32_e32 v5, vcc, 0, v2
12267091dd27STim Gymnich; GFX7-NEXT:    v_max_i32_e32 v2, v2, v5
12277091dd27STim Gymnich; GFX7-NEXT:    v_sub_i32_e32 v5, vcc, 0, v3
12287091dd27STim Gymnich; GFX7-NEXT:    v_max_i32_e32 v3, v3, v5
12297091dd27STim Gymnich; GFX7-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
12307091dd27STim Gymnich; GFX7-NEXT:    v_or_b32_e32 v2, v2, v3
12317091dd27STim Gymnich; GFX7-NEXT:    v_sub_i32_e32 v3, vcc, 0, v0
12327091dd27STim Gymnich; GFX7-NEXT:    v_max_i32_e32 v0, v0, v3
12337091dd27STim Gymnich; GFX7-NEXT:    v_sub_i32_e32 v3, vcc, 0, v1
12347091dd27STim Gymnich; GFX7-NEXT:    v_max_i32_e32 v1, v1, v3
12357091dd27STim Gymnich; GFX7-NEXT:    v_lshlrev_b32_e32 v1, 16, v1
12367091dd27STim Gymnich; GFX7-NEXT:    v_or_b32_e32 v0, v0, v1
12377091dd27STim Gymnich; GFX7-NEXT:    v_alignbit_b32 v1, v2, v0, 16
12387091dd27STim Gymnich; GFX7-NEXT:    v_alignbit_b32 v5, v6, v4, 16
12397091dd27STim Gymnich; GFX7-NEXT:    v_alignbit_b32 v9, v10, v8, 16
12407091dd27STim Gymnich; GFX7-NEXT:    v_alignbit_b32 v13, v14, v12, 16
12417091dd27STim Gymnich; GFX7-NEXT:    v_alignbit_b32 v17, v18, v16, 16
12427091dd27STim Gymnich; GFX7-NEXT:    v_alignbit_b32 v21, v22, v20, 16
12437091dd27STim Gymnich; GFX7-NEXT:    v_alignbit_b32 v25, v26, v24, 16
12447091dd27STim Gymnich; GFX7-NEXT:    v_alignbit_b32 v29, v30, v28, 16
12457091dd27STim Gymnich; GFX7-NEXT:    v_lshrrev_b32_e32 v3, 16, v2
12467091dd27STim Gymnich; GFX7-NEXT:    v_lshrrev_b32_e32 v7, 16, v6
12477091dd27STim Gymnich; GFX7-NEXT:    v_lshrrev_b32_e32 v11, 16, v10
12487091dd27STim Gymnich; GFX7-NEXT:    v_lshrrev_b32_e32 v15, 16, v14
12497091dd27STim Gymnich; GFX7-NEXT:    v_lshrrev_b32_e32 v19, 16, v18
12507091dd27STim Gymnich; GFX7-NEXT:    v_lshrrev_b32_e32 v23, 16, v22
12517091dd27STim Gymnich; GFX7-NEXT:    v_lshrrev_b32_e32 v31, 16, v30
12527091dd27STim Gymnich; GFX7-NEXT:    s_setpc_b64 s[30:31]
12537091dd27STim Gymnich;
12547091dd27STim Gymnich; GFX8-LABEL: v_abs_v32i16:
12557091dd27STim Gymnich; GFX8:       ; %bb.0:
12567091dd27STim Gymnich; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
125784e9401aSJeffrey Byrnes; GFX8-NEXT:    v_mov_b32_e32 v16, 0
1258*6206f544SLucas Ramirez; GFX8-NEXT:    v_sub_u16_sdwa v18, v16, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_1
1259*6206f544SLucas Ramirez; GFX8-NEXT:    v_sub_u16_e32 v19, 0, v0
1260*6206f544SLucas Ramirez; GFX8-NEXT:    v_max_i16_sdwa v18, v0, v18 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:DWORD
1261*6206f544SLucas Ramirez; GFX8-NEXT:    v_max_i16_e32 v0, v0, v19
1262*6206f544SLucas Ramirez; GFX8-NEXT:    v_sub_u16_sdwa v19, v16, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_1
1263*6206f544SLucas Ramirez; GFX8-NEXT:    v_or_b32_e32 v0, v0, v18
1264*6206f544SLucas Ramirez; GFX8-NEXT:    v_sub_u16_e32 v18, 0, v1
1265*6206f544SLucas Ramirez; GFX8-NEXT:    v_max_i16_sdwa v19, v1, v19 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:DWORD
1266*6206f544SLucas Ramirez; GFX8-NEXT:    v_max_i16_e32 v1, v1, v18
1267*6206f544SLucas Ramirez; GFX8-NEXT:    v_sub_u16_sdwa v18, v16, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_1
1268*6206f544SLucas Ramirez; GFX8-NEXT:    v_or_b32_e32 v1, v1, v19
1269*6206f544SLucas Ramirez; GFX8-NEXT:    v_sub_u16_e32 v19, 0, v2
1270*6206f544SLucas Ramirez; GFX8-NEXT:    v_max_i16_sdwa v18, v2, v18 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:DWORD
1271*6206f544SLucas Ramirez; GFX8-NEXT:    v_max_i16_e32 v2, v2, v19
1272*6206f544SLucas Ramirez; GFX8-NEXT:    v_sub_u16_sdwa v19, v16, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_1
1273*6206f544SLucas Ramirez; GFX8-NEXT:    v_or_b32_e32 v2, v2, v18
1274*6206f544SLucas Ramirez; GFX8-NEXT:    v_sub_u16_e32 v18, 0, v3
1275*6206f544SLucas Ramirez; GFX8-NEXT:    v_max_i16_sdwa v19, v3, v19 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:DWORD
1276*6206f544SLucas Ramirez; GFX8-NEXT:    v_max_i16_e32 v3, v3, v18
1277*6206f544SLucas Ramirez; GFX8-NEXT:    v_sub_u16_sdwa v18, v16, v4 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_1
1278*6206f544SLucas Ramirez; GFX8-NEXT:    v_or_b32_e32 v3, v3, v19
1279*6206f544SLucas Ramirez; GFX8-NEXT:    v_sub_u16_e32 v19, 0, v4
1280*6206f544SLucas Ramirez; GFX8-NEXT:    v_max_i16_sdwa v18, v4, v18 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:DWORD
1281*6206f544SLucas Ramirez; GFX8-NEXT:    v_max_i16_e32 v4, v4, v19
1282*6206f544SLucas Ramirez; GFX8-NEXT:    v_sub_u16_sdwa v19, v16, v5 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_1
1283*6206f544SLucas Ramirez; GFX8-NEXT:    v_or_b32_e32 v4, v4, v18
1284*6206f544SLucas Ramirez; GFX8-NEXT:    v_sub_u16_e32 v18, 0, v5
1285*6206f544SLucas Ramirez; GFX8-NEXT:    v_max_i16_sdwa v19, v5, v19 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:DWORD
1286*6206f544SLucas Ramirez; GFX8-NEXT:    v_max_i16_e32 v5, v5, v18
1287*6206f544SLucas Ramirez; GFX8-NEXT:    v_sub_u16_sdwa v18, v16, v6 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_1
1288*6206f544SLucas Ramirez; GFX8-NEXT:    v_or_b32_e32 v5, v5, v19
1289*6206f544SLucas Ramirez; GFX8-NEXT:    v_sub_u16_e32 v19, 0, v6
1290*6206f544SLucas Ramirez; GFX8-NEXT:    v_max_i16_sdwa v18, v6, v18 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:DWORD
1291*6206f544SLucas Ramirez; GFX8-NEXT:    v_max_i16_e32 v6, v6, v19
1292*6206f544SLucas Ramirez; GFX8-NEXT:    v_sub_u16_sdwa v19, v16, v7 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_1
1293*6206f544SLucas Ramirez; GFX8-NEXT:    v_or_b32_e32 v6, v6, v18
1294*6206f544SLucas Ramirez; GFX8-NEXT:    v_sub_u16_e32 v18, 0, v7
1295*6206f544SLucas Ramirez; GFX8-NEXT:    v_max_i16_sdwa v19, v7, v19 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:DWORD
1296*6206f544SLucas Ramirez; GFX8-NEXT:    v_max_i16_e32 v7, v7, v18
1297*6206f544SLucas Ramirez; GFX8-NEXT:    v_sub_u16_sdwa v18, v16, v8 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_1
1298*6206f544SLucas Ramirez; GFX8-NEXT:    v_or_b32_e32 v7, v7, v19
1299*6206f544SLucas Ramirez; GFX8-NEXT:    v_sub_u16_e32 v19, 0, v8
1300*6206f544SLucas Ramirez; GFX8-NEXT:    v_max_i16_sdwa v18, v8, v18 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:DWORD
1301*6206f544SLucas Ramirez; GFX8-NEXT:    v_max_i16_e32 v8, v8, v19
1302*6206f544SLucas Ramirez; GFX8-NEXT:    v_sub_u16_sdwa v19, v16, v9 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_1
1303*6206f544SLucas Ramirez; GFX8-NEXT:    v_or_b32_e32 v8, v8, v18
1304*6206f544SLucas Ramirez; GFX8-NEXT:    v_sub_u16_e32 v18, 0, v9
1305*6206f544SLucas Ramirez; GFX8-NEXT:    v_max_i16_sdwa v19, v9, v19 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:DWORD
1306*6206f544SLucas Ramirez; GFX8-NEXT:    v_max_i16_e32 v9, v9, v18
1307*6206f544SLucas Ramirez; GFX8-NEXT:    v_sub_u16_sdwa v18, v16, v10 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_1
1308*6206f544SLucas Ramirez; GFX8-NEXT:    v_or_b32_e32 v9, v9, v19
1309*6206f544SLucas Ramirez; GFX8-NEXT:    v_sub_u16_e32 v19, 0, v10
1310*6206f544SLucas Ramirez; GFX8-NEXT:    v_max_i16_sdwa v18, v10, v18 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:DWORD
1311*6206f544SLucas Ramirez; GFX8-NEXT:    v_max_i16_e32 v10, v10, v19
1312*6206f544SLucas Ramirez; GFX8-NEXT:    v_sub_u16_sdwa v19, v16, v11 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_1
1313*6206f544SLucas Ramirez; GFX8-NEXT:    v_or_b32_e32 v10, v10, v18
1314*6206f544SLucas Ramirez; GFX8-NEXT:    v_sub_u16_e32 v18, 0, v11
1315*6206f544SLucas Ramirez; GFX8-NEXT:    v_max_i16_sdwa v19, v11, v19 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:DWORD
1316*6206f544SLucas Ramirez; GFX8-NEXT:    v_max_i16_e32 v11, v11, v18
1317*6206f544SLucas Ramirez; GFX8-NEXT:    v_sub_u16_sdwa v18, v16, v12 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_1
1318*6206f544SLucas Ramirez; GFX8-NEXT:    v_or_b32_e32 v11, v11, v19
1319*6206f544SLucas Ramirez; GFX8-NEXT:    v_sub_u16_e32 v19, 0, v12
1320*6206f544SLucas Ramirez; GFX8-NEXT:    v_max_i16_sdwa v18, v12, v18 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:DWORD
1321*6206f544SLucas Ramirez; GFX8-NEXT:    v_max_i16_e32 v12, v12, v19
132284e9401aSJeffrey Byrnes; GFX8-NEXT:    v_sub_u16_sdwa v17, v16, v15 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_1
1323*6206f544SLucas Ramirez; GFX8-NEXT:    v_sub_u16_sdwa v19, v16, v14 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_1
1324*6206f544SLucas Ramirez; GFX8-NEXT:    v_sub_u16_sdwa v16, v16, v13 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_1
1325*6206f544SLucas Ramirez; GFX8-NEXT:    v_or_b32_e32 v12, v12, v18
1326*6206f544SLucas Ramirez; GFX8-NEXT:    v_sub_u16_e32 v18, 0, v13
1327*6206f544SLucas Ramirez; GFX8-NEXT:    v_max_i16_sdwa v16, v13, v16 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:DWORD
1328*6206f544SLucas Ramirez; GFX8-NEXT:    v_max_i16_e32 v13, v13, v18
1329*6206f544SLucas Ramirez; GFX8-NEXT:    v_sub_u16_e32 v18, 0, v15
1330*6206f544SLucas Ramirez; GFX8-NEXT:    v_or_b32_e32 v13, v13, v16
133184e9401aSJeffrey Byrnes; GFX8-NEXT:    v_sub_u16_e32 v16, 0, v14
133284e9401aSJeffrey Byrnes; GFX8-NEXT:    v_max_i16_sdwa v17, v15, v17 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:DWORD
1333*6206f544SLucas Ramirez; GFX8-NEXT:    v_max_i16_sdwa v19, v14, v19 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:DWORD
133484e9401aSJeffrey Byrnes; GFX8-NEXT:    v_max_i16_e32 v14, v14, v16
1335*6206f544SLucas Ramirez; GFX8-NEXT:    v_max_i16_e32 v15, v15, v18
1336*6206f544SLucas Ramirez; GFX8-NEXT:    v_or_b32_e32 v14, v14, v19
133784e9401aSJeffrey Byrnes; GFX8-NEXT:    v_or_b32_e32 v15, v15, v17
13387091dd27STim Gymnich; GFX8-NEXT:    s_setpc_b64 s[30:31]
13397091dd27STim Gymnich;
13407091dd27STim Gymnich; GFX9-LABEL: v_abs_v32i16:
13417091dd27STim Gymnich; GFX9:       ; %bb.0:
13427091dd27STim Gymnich; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13437091dd27STim Gymnich; GFX9-NEXT:    v_pk_sub_i16 v16, 0, v0
13447091dd27STim Gymnich; GFX9-NEXT:    v_pk_max_i16 v0, v0, v16
13457091dd27STim Gymnich; GFX9-NEXT:    v_pk_sub_i16 v16, 0, v1
13467091dd27STim Gymnich; GFX9-NEXT:    v_pk_max_i16 v1, v1, v16
13477091dd27STim Gymnich; GFX9-NEXT:    v_pk_sub_i16 v16, 0, v2
13487091dd27STim Gymnich; GFX9-NEXT:    v_pk_max_i16 v2, v2, v16
13497091dd27STim Gymnich; GFX9-NEXT:    v_pk_sub_i16 v16, 0, v3
13507091dd27STim Gymnich; GFX9-NEXT:    v_pk_max_i16 v3, v3, v16
13517091dd27STim Gymnich; GFX9-NEXT:    v_pk_sub_i16 v16, 0, v4
13527091dd27STim Gymnich; GFX9-NEXT:    v_pk_max_i16 v4, v4, v16
13537091dd27STim Gymnich; GFX9-NEXT:    v_pk_sub_i16 v16, 0, v5
13547091dd27STim Gymnich; GFX9-NEXT:    v_pk_max_i16 v5, v5, v16
13557091dd27STim Gymnich; GFX9-NEXT:    v_pk_sub_i16 v16, 0, v6
13567091dd27STim Gymnich; GFX9-NEXT:    v_pk_max_i16 v6, v6, v16
13577091dd27STim Gymnich; GFX9-NEXT:    v_pk_sub_i16 v16, 0, v7
13587091dd27STim Gymnich; GFX9-NEXT:    v_pk_max_i16 v7, v7, v16
13597091dd27STim Gymnich; GFX9-NEXT:    v_pk_sub_i16 v16, 0, v8
13607091dd27STim Gymnich; GFX9-NEXT:    v_pk_max_i16 v8, v8, v16
13617091dd27STim Gymnich; GFX9-NEXT:    v_pk_sub_i16 v16, 0, v9
13627091dd27STim Gymnich; GFX9-NEXT:    v_pk_max_i16 v9, v9, v16
13637091dd27STim Gymnich; GFX9-NEXT:    v_pk_sub_i16 v16, 0, v10
13647091dd27STim Gymnich; GFX9-NEXT:    v_pk_max_i16 v10, v10, v16
13657091dd27STim Gymnich; GFX9-NEXT:    v_pk_sub_i16 v16, 0, v11
13667091dd27STim Gymnich; GFX9-NEXT:    v_pk_max_i16 v11, v11, v16
13677091dd27STim Gymnich; GFX9-NEXT:    v_pk_sub_i16 v16, 0, v12
13687091dd27STim Gymnich; GFX9-NEXT:    v_pk_max_i16 v12, v12, v16
13697091dd27STim Gymnich; GFX9-NEXT:    v_pk_sub_i16 v16, 0, v13
13707091dd27STim Gymnich; GFX9-NEXT:    v_pk_max_i16 v13, v13, v16
13717091dd27STim Gymnich; GFX9-NEXT:    v_pk_sub_i16 v16, 0, v14
13727091dd27STim Gymnich; GFX9-NEXT:    v_pk_max_i16 v14, v14, v16
13737091dd27STim Gymnich; GFX9-NEXT:    v_pk_sub_i16 v16, 0, v15
13747091dd27STim Gymnich; GFX9-NEXT:    v_pk_max_i16 v15, v15, v16
13757091dd27STim Gymnich; GFX9-NEXT:    s_setpc_b64 s[30:31]
13767091dd27STim Gymnich;
13777091dd27STim Gymnich; GFX10-LABEL: v_abs_v32i16:
13787091dd27STim Gymnich; GFX10:       ; %bb.0:
13797091dd27STim Gymnich; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
13807091dd27STim Gymnich; GFX10-NEXT:    v_pk_sub_i16 v16, 0, v0
13817091dd27STim Gymnich; GFX10-NEXT:    v_pk_sub_i16 v17, 0, v2
13827091dd27STim Gymnich; GFX10-NEXT:    v_pk_sub_i16 v18, 0, v3
13837091dd27STim Gymnich; GFX10-NEXT:    v_pk_sub_i16 v19, 0, v4
13847091dd27STim Gymnich; GFX10-NEXT:    v_pk_sub_i16 v20, 0, v5
13857091dd27STim Gymnich; GFX10-NEXT:    v_pk_max_i16 v0, v0, v16
13867091dd27STim Gymnich; GFX10-NEXT:    v_pk_sub_i16 v16, 0, v1
13877091dd27STim Gymnich; GFX10-NEXT:    v_pk_max_i16 v2, v2, v17
13887091dd27STim Gymnich; GFX10-NEXT:    v_pk_max_i16 v3, v3, v18
13897091dd27STim Gymnich; GFX10-NEXT:    v_pk_max_i16 v4, v4, v19
13907091dd27STim Gymnich; GFX10-NEXT:    v_pk_max_i16 v5, v5, v20
13917091dd27STim Gymnich; GFX10-NEXT:    v_pk_max_i16 v1, v1, v16
13927091dd27STim Gymnich; GFX10-NEXT:    v_pk_sub_i16 v16, 0, v6
13937091dd27STim Gymnich; GFX10-NEXT:    v_pk_sub_i16 v17, 0, v7
13947091dd27STim Gymnich; GFX10-NEXT:    v_pk_sub_i16 v18, 0, v8
13957091dd27STim Gymnich; GFX10-NEXT:    v_pk_sub_i16 v19, 0, v9
13967091dd27STim Gymnich; GFX10-NEXT:    v_pk_sub_i16 v20, 0, v10
13977091dd27STim Gymnich; GFX10-NEXT:    v_pk_max_i16 v6, v6, v16
13987091dd27STim Gymnich; GFX10-NEXT:    v_pk_max_i16 v7, v7, v17
13997091dd27STim Gymnich; GFX10-NEXT:    v_pk_max_i16 v8, v8, v18
14007091dd27STim Gymnich; GFX10-NEXT:    v_pk_max_i16 v9, v9, v19
14017091dd27STim Gymnich; GFX10-NEXT:    v_pk_max_i16 v10, v10, v20
14027091dd27STim Gymnich; GFX10-NEXT:    v_pk_sub_i16 v16, 0, v11
14037091dd27STim Gymnich; GFX10-NEXT:    v_pk_sub_i16 v17, 0, v12
14047091dd27STim Gymnich; GFX10-NEXT:    v_pk_sub_i16 v18, 0, v13
14057091dd27STim Gymnich; GFX10-NEXT:    v_pk_sub_i16 v19, 0, v14
14067091dd27STim Gymnich; GFX10-NEXT:    v_pk_sub_i16 v20, 0, v15
14077091dd27STim Gymnich; GFX10-NEXT:    v_pk_max_i16 v11, v11, v16
14087091dd27STim Gymnich; GFX10-NEXT:    v_pk_max_i16 v12, v12, v17
14097091dd27STim Gymnich; GFX10-NEXT:    v_pk_max_i16 v13, v13, v18
14107091dd27STim Gymnich; GFX10-NEXT:    v_pk_max_i16 v14, v14, v19
14117091dd27STim Gymnich; GFX10-NEXT:    v_pk_max_i16 v15, v15, v20
14127091dd27STim Gymnich; GFX10-NEXT:    s_setpc_b64 s[30:31]
14137091dd27STim Gymnich;
14147091dd27STim Gymnich; GFX11-LABEL: v_abs_v32i16:
14157091dd27STim Gymnich; GFX11:       ; %bb.0:
14167091dd27STim Gymnich; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
14177091dd27STim Gymnich; GFX11-NEXT:    v_pk_sub_i16 v16, 0, v0
14187091dd27STim Gymnich; GFX11-NEXT:    v_pk_sub_i16 v17, 0, v2
14197091dd27STim Gymnich; GFX11-NEXT:    v_pk_sub_i16 v18, 0, v3
14207091dd27STim Gymnich; GFX11-NEXT:    v_pk_sub_i16 v19, 0, v4
14217091dd27STim Gymnich; GFX11-NEXT:    v_pk_sub_i16 v20, 0, v5
14227091dd27STim Gymnich; GFX11-NEXT:    v_pk_max_i16 v0, v0, v16
14237091dd27STim Gymnich; GFX11-NEXT:    v_pk_sub_i16 v16, 0, v1
14247091dd27STim Gymnich; GFX11-NEXT:    v_pk_max_i16 v2, v2, v17
14257091dd27STim Gymnich; GFX11-NEXT:    v_pk_max_i16 v3, v3, v18
14267091dd27STim Gymnich; GFX11-NEXT:    v_pk_max_i16 v4, v4, v19
14277091dd27STim Gymnich; GFX11-NEXT:    v_pk_max_i16 v5, v5, v20
14287091dd27STim Gymnich; GFX11-NEXT:    v_pk_max_i16 v1, v1, v16
14297091dd27STim Gymnich; GFX11-NEXT:    v_pk_sub_i16 v16, 0, v6
14307091dd27STim Gymnich; GFX11-NEXT:    v_pk_sub_i16 v17, 0, v7
14317091dd27STim Gymnich; GFX11-NEXT:    v_pk_sub_i16 v18, 0, v8
14327091dd27STim Gymnich; GFX11-NEXT:    v_pk_sub_i16 v19, 0, v9
14337091dd27STim Gymnich; GFX11-NEXT:    v_pk_sub_i16 v20, 0, v10
14347091dd27STim Gymnich; GFX11-NEXT:    v_pk_max_i16 v6, v6, v16
14357091dd27STim Gymnich; GFX11-NEXT:    v_pk_max_i16 v7, v7, v17
14367091dd27STim Gymnich; GFX11-NEXT:    v_pk_max_i16 v8, v8, v18
14377091dd27STim Gymnich; GFX11-NEXT:    v_pk_max_i16 v9, v9, v19
14387091dd27STim Gymnich; GFX11-NEXT:    v_pk_max_i16 v10, v10, v20
14397091dd27STim Gymnich; GFX11-NEXT:    v_pk_sub_i16 v16, 0, v11
14407091dd27STim Gymnich; GFX11-NEXT:    v_pk_sub_i16 v17, 0, v12
14417091dd27STim Gymnich; GFX11-NEXT:    v_pk_sub_i16 v18, 0, v13
14427091dd27STim Gymnich; GFX11-NEXT:    v_pk_sub_i16 v19, 0, v14
14437091dd27STim Gymnich; GFX11-NEXT:    v_pk_sub_i16 v20, 0, v15
14447091dd27STim Gymnich; GFX11-NEXT:    v_pk_max_i16 v11, v11, v16
14457091dd27STim Gymnich; GFX11-NEXT:    v_pk_max_i16 v12, v12, v17
14467091dd27STim Gymnich; GFX11-NEXT:    v_pk_max_i16 v13, v13, v18
14477091dd27STim Gymnich; GFX11-NEXT:    v_pk_max_i16 v14, v14, v19
14487091dd27STim Gymnich; GFX11-NEXT:    v_pk_max_i16 v15, v15, v20
14497091dd27STim Gymnich; GFX11-NEXT:    s_setpc_b64 s[30:31]
14507091dd27STim Gymnich;
14517091dd27STim Gymnich; GFX12-LABEL: v_abs_v32i16:
14527091dd27STim Gymnich; GFX12:       ; %bb.0:
14537091dd27STim Gymnich; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0
14547091dd27STim Gymnich; GFX12-NEXT:    s_wait_expcnt 0x0
14557091dd27STim Gymnich; GFX12-NEXT:    s_wait_samplecnt 0x0
14567091dd27STim Gymnich; GFX12-NEXT:    s_wait_bvhcnt 0x0
14577091dd27STim Gymnich; GFX12-NEXT:    s_wait_kmcnt 0x0
14587091dd27STim Gymnich; GFX12-NEXT:    v_pk_sub_i16 v16, 0, v0
14597091dd27STim Gymnich; GFX12-NEXT:    v_pk_sub_i16 v17, 0, v2
14607091dd27STim Gymnich; GFX12-NEXT:    v_pk_sub_i16 v18, 0, v3
14617091dd27STim Gymnich; GFX12-NEXT:    v_pk_sub_i16 v19, 0, v4
14627091dd27STim Gymnich; GFX12-NEXT:    v_pk_sub_i16 v20, 0, v5
14637091dd27STim Gymnich; GFX12-NEXT:    v_pk_max_i16 v0, v0, v16
14647091dd27STim Gymnich; GFX12-NEXT:    v_pk_sub_i16 v16, 0, v1
14657091dd27STim Gymnich; GFX12-NEXT:    v_pk_max_i16 v2, v2, v17
14667091dd27STim Gymnich; GFX12-NEXT:    v_pk_max_i16 v3, v3, v18
14677091dd27STim Gymnich; GFX12-NEXT:    v_pk_max_i16 v4, v4, v19
14687091dd27STim Gymnich; GFX12-NEXT:    v_pk_max_i16 v5, v5, v20
14697091dd27STim Gymnich; GFX12-NEXT:    v_pk_max_i16 v1, v1, v16
14707091dd27STim Gymnich; GFX12-NEXT:    v_pk_sub_i16 v16, 0, v6
14717091dd27STim Gymnich; GFX12-NEXT:    v_pk_sub_i16 v17, 0, v7
14727091dd27STim Gymnich; GFX12-NEXT:    v_pk_sub_i16 v18, 0, v8
14737091dd27STim Gymnich; GFX12-NEXT:    v_pk_sub_i16 v19, 0, v9
14747091dd27STim Gymnich; GFX12-NEXT:    v_pk_sub_i16 v20, 0, v10
14757091dd27STim Gymnich; GFX12-NEXT:    v_pk_max_i16 v6, v6, v16
14767091dd27STim Gymnich; GFX12-NEXT:    v_pk_max_i16 v7, v7, v17
14777091dd27STim Gymnich; GFX12-NEXT:    v_pk_max_i16 v8, v8, v18
14787091dd27STim Gymnich; GFX12-NEXT:    v_pk_max_i16 v9, v9, v19
14797091dd27STim Gymnich; GFX12-NEXT:    v_pk_max_i16 v10, v10, v20
14807091dd27STim Gymnich; GFX12-NEXT:    v_pk_sub_i16 v16, 0, v11
14817091dd27STim Gymnich; GFX12-NEXT:    v_pk_sub_i16 v17, 0, v12
14827091dd27STim Gymnich; GFX12-NEXT:    v_pk_sub_i16 v18, 0, v13
14837091dd27STim Gymnich; GFX12-NEXT:    v_pk_sub_i16 v19, 0, v14
14847091dd27STim Gymnich; GFX12-NEXT:    v_pk_sub_i16 v20, 0, v15
14857091dd27STim Gymnich; GFX12-NEXT:    v_pk_max_i16 v11, v11, v16
14867091dd27STim Gymnich; GFX12-NEXT:    v_pk_max_i16 v12, v12, v17
14877091dd27STim Gymnich; GFX12-NEXT:    v_pk_max_i16 v13, v13, v18
14887091dd27STim Gymnich; GFX12-NEXT:    v_pk_max_i16 v14, v14, v19
14897091dd27STim Gymnich; GFX12-NEXT:    v_pk_max_i16 v15, v15, v20
14907091dd27STim Gymnich; GFX12-NEXT:    s_setpc_b64 s[30:31]
14917091dd27STim Gymnich  %res = call <32 x i16> @llvm.abs.v32i16(<32 x i16> %arg, i1 false)
14927091dd27STim Gymnich  ret <32 x i16> %res
14937091dd27STim Gymnich}
1494