Skip to content

Commit 82cac65

Browse files
committed
[NFC][AMDGPU] Pre-commit test for D134418.
1 parent b8b5165 commit 82cac65

File tree

1 file changed

+36
-27
lines changed

1 file changed

+36
-27
lines changed

llvm/test/CodeGen/AMDGPU/bfi_int.ll

Lines changed: 36 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1912,56 +1912,65 @@ define i32 @v_bfi_seq_i32(i32 %x, i32 %y, i32 %z) {
19121912
; GFX7-LABEL: v_bfi_seq_i32:
19131913
; GFX7: ; %bb.0:
19141914
; GFX7-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1915+
; GFX7-NEXT: v_lshlrev_b32_e32 v0, 20, v0
19151916
; GFX7-NEXT: s_mov_b32 s4, 0xffc00
1916-
; GFX7-NEXT: v_bfi_b32 v0, s4, v0, v1
1917-
; GFX7-NEXT: v_xor_b32_e32 v1, v1, v2
1918-
; GFX7-NEXT: v_and_b32_e32 v1, 0x3ff00000, v1
1919-
; GFX7-NEXT: v_xor_b32_e32 v0, v1, v0
1917+
; GFX7-NEXT: v_xor_b32_e32 v0, v0, v1
1918+
; GFX7-NEXT: v_bfi_b32 v2, s4, v1, v2
1919+
; GFX7-NEXT: v_and_b32_e32 v0, 0x3ff00000, v0
1920+
; GFX7-NEXT: v_xor_b32_e32 v0, v0, v2
19201921
; GFX7-NEXT: s_setpc_b64 s[30:31]
19211922
;
19221923
; GFX8-LABEL: v_bfi_seq_i32:
19231924
; GFX8: ; %bb.0:
19241925
; GFX8-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1926+
; GFX8-NEXT: v_lshlrev_b32_e32 v0, 20, v0
19251927
; GFX8-NEXT: s_mov_b32 s4, 0xffc00
1926-
; GFX8-NEXT: v_bfi_b32 v0, s4, v0, v1
1927-
; GFX8-NEXT: v_xor_b32_e32 v1, v1, v2
1928-
; GFX8-NEXT: v_and_b32_e32 v1, 0x3ff00000, v1
1929-
; GFX8-NEXT: v_xor_b32_e32 v0, v1, v0
1928+
; GFX8-NEXT: v_xor_b32_e32 v0, v0, v1
1929+
; GFX8-NEXT: v_bfi_b32 v2, s4, v1, v2
1930+
; GFX8-NEXT: v_and_b32_e32 v0, 0x3ff00000, v0
1931+
; GFX8-NEXT: v_xor_b32_e32 v0, v0, v2
19301932
; GFX8-NEXT: s_setpc_b64 s[30:31]
19311933
;
19321934
; GFX10-LABEL: v_bfi_seq_i32:
19331935
; GFX10: ; %bb.0:
19341936
; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
19351937
; GFX10-NEXT: s_waitcnt_vscnt null, 0x0
1936-
; GFX10-NEXT: v_xor_b32_e32 v2, v1, v2
1937-
; GFX10-NEXT: v_bfi_b32 v0, 0xffc00, v0, v1
1938-
; GFX10-NEXT: v_and_b32_e32 v1, 0x3ff00000, v2
1939-
; GFX10-NEXT: v_xor_b32_e32 v0, v1, v0
1938+
; GFX10-NEXT: v_lshlrev_b32_e32 v0, 20, v0
1939+
; GFX10-NEXT: v_xor_b32_e32 v0, v0, v1
1940+
; GFX10-NEXT: v_bfi_b32 v1, 0xffc00, v1, v2
1941+
; GFX10-NEXT: v_and_b32_e32 v0, 0x3ff00000, v0
1942+
; GFX10-NEXT: v_xor_b32_e32 v0, v0, v1
19401943
; GFX10-NEXT: s_setpc_b64 s[30:31]
19411944
;
19421945
; GFX8-GISEL-LABEL: v_bfi_seq_i32:
19431946
; GFX8-GISEL: ; %bb.0:
19441947
; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1945-
; GFX8-GISEL-NEXT: v_and_b32_e32 v0, 0xffc00, v0
1946-
; GFX8-GISEL-NEXT: v_and_b32_e32 v1, 0xfff003ff, v1
1947-
; GFX8-GISEL-NEXT: v_or_b32_e32 v0, v0, v1
1948-
; GFX8-GISEL-NEXT: v_mov_b32_e32 v1, 0x3ff00000
1949-
; GFX8-GISEL-NEXT: v_bfi_b32 v0, v1, v2, v0
1948+
; GFX8-GISEL-NEXT: v_lshlrev_b32_e32 v0, 20, v0
1949+
; GFX8-GISEL-NEXT: v_and_b32_e32 v3, 0xffc00, v1
1950+
; GFX8-GISEL-NEXT: v_and_b32_e32 v2, 0xfff003ff, v2
1951+
; GFX8-GISEL-NEXT: v_xor_b32_e32 v0, v0, v1
1952+
; GFX8-GISEL-NEXT: v_or_b32_e32 v2, v3, v2
1953+
; GFX8-GISEL-NEXT: v_and_b32_e32 v0, 0x3ff00000, v0
1954+
; GFX8-GISEL-NEXT: v_xor_b32_e32 v0, v0, v2
19501955
; GFX8-GISEL-NEXT: s_setpc_b64 s[30:31]
19511956
;
19521957
; GFX10-GISEL-LABEL: v_bfi_seq_i32:
19531958
; GFX10-GISEL: ; %bb.0:
19541959
; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
19551960
; GFX10-GISEL-NEXT: s_waitcnt_vscnt null, 0x0
1956-
; GFX10-GISEL-NEXT: v_and_b32_e32 v1, 0xfff003ff, v1
1957-
; GFX10-GISEL-NEXT: v_and_or_b32 v0, 0xffc00, v0, v1
1958-
; GFX10-GISEL-NEXT: v_bfi_b32 v0, 0x3ff00000, v2, v0
1961+
; GFX10-GISEL-NEXT: v_lshlrev_b32_e32 v0, 20, v0
1962+
; GFX10-GISEL-NEXT: v_and_b32_e32 v2, 0xfff003ff, v2
1963+
; GFX10-GISEL-NEXT: v_xor_b32_e32 v0, v0, v1
1964+
; GFX10-GISEL-NEXT: v_and_or_b32 v1, 0xffc00, v1, v2
1965+
; GFX10-GISEL-NEXT: v_and_b32_e32 v0, 0x3ff00000, v0
1966+
; GFX10-GISEL-NEXT: v_xor_b32_e32 v0, v0, v1
19591967
; GFX10-GISEL-NEXT: s_setpc_b64 s[30:31]
1960-
%1 = and i32 %x, 1047552
1961-
%2 = and i32 %y, -1047553
1962-
%3 = or i32 %1, %2
1963-
%4 = xor i32 %3, %z
1964-
%5 = and i32 %4, 1072693248
1965-
%6 = xor i32 %5, %3
1966-
ret i32 %6
1968+
%1 = shl i32 %x, 20
1969+
%2 = and i32 %y, 1047552
1970+
%3 = and i32 %z, -1047553
1971+
%4 = or i32 %2, %3
1972+
%5 = xor i32 %1, %y
1973+
%6 = and i32 %5, 1072693248
1974+
%7 = xor i32 %6, %4
1975+
ret i32 %7
19671976
}

0 commit comments

Comments
 (0)