Skip to content

Commit 6cac8a7

Browse files
committed
[RISC-V][Isel] Add new test case for czero.eqz
Signed-off-by: Zhijin Zeng <[email protected]>
1 parent 6844c2f commit 6cac8a7

File tree

1 file changed

+116
-0
lines changed

1 file changed

+116
-0
lines changed

llvm/test/CodeGen/RISCV/select.ll

Lines changed: 116 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1858,3 +1858,119 @@ define i32 @select_cst6(i1 zeroext %cond) {
18581858
%ret = select i1 %cond, i32 2049, i32 2047
18591859
ret i32 %ret
18601860
}
1861+
1862+
@select_redundant_czero_eqz_data = global i32 0, align 4
1863+
1864+
define void @select_redundant_czero_eqz1(ptr %0, ptr %1) {
1865+
; RV32IM-LABEL: select_redundant_czero_eqz1:
1866+
; RV32IM: # %bb.0: # %entry
1867+
; RV32IM-NEXT: bnez a0, .LBB49_2
1868+
; RV32IM-NEXT: # %bb.1:
1869+
; RV32IM-NEXT: lui a0, %hi(select_redundant_czero_eqz_data)
1870+
; RV32IM-NEXT: addi a0, a0, %lo(select_redundant_czero_eqz_data)
1871+
; RV32IM-NEXT: .LBB49_2: # %entry
1872+
; RV32IM-NEXT: sw a0, 0(a1)
1873+
; RV32IM-NEXT: ret
1874+
;
1875+
; RV64IM-LABEL: select_redundant_czero_eqz1:
1876+
; RV64IM: # %bb.0: # %entry
1877+
; RV64IM-NEXT: bnez a0, .LBB49_2
1878+
; RV64IM-NEXT: # %bb.1:
1879+
; RV64IM-NEXT: lui a0, %hi(select_redundant_czero_eqz_data)
1880+
; RV64IM-NEXT: addi a0, a0, %lo(select_redundant_czero_eqz_data)
1881+
; RV64IM-NEXT: .LBB49_2: # %entry
1882+
; RV64IM-NEXT: sd a0, 0(a1)
1883+
; RV64IM-NEXT: ret
1884+
;
1885+
; RV64IMXVTCONDOPS-LABEL: select_redundant_czero_eqz1:
1886+
; RV64IMXVTCONDOPS: # %bb.0: # %entry
1887+
; RV64IMXVTCONDOPS-NEXT: lui a2, %hi(select_redundant_czero_eqz_data)
1888+
; RV64IMXVTCONDOPS-NEXT: addi a2, a2, %lo(select_redundant_czero_eqz_data)
1889+
; RV64IMXVTCONDOPS-NEXT: vt.maskcn a2, a2, a0
1890+
; RV64IMXVTCONDOPS-NEXT: vt.maskc a0, a0, a0
1891+
; RV64IMXVTCONDOPS-NEXT: or a0, a2, a0
1892+
; RV64IMXVTCONDOPS-NEXT: sd a0, 0(a1)
1893+
; RV64IMXVTCONDOPS-NEXT: ret
1894+
;
1895+
; RV32IMZICOND-LABEL: select_redundant_czero_eqz1:
1896+
; RV32IMZICOND: # %bb.0: # %entry
1897+
; RV32IMZICOND-NEXT: lui a2, %hi(select_redundant_czero_eqz_data)
1898+
; RV32IMZICOND-NEXT: addi a2, a2, %lo(select_redundant_czero_eqz_data)
1899+
; RV32IMZICOND-NEXT: czero.nez a2, a2, a0
1900+
; RV32IMZICOND-NEXT: czero.eqz a0, a0, a0
1901+
; RV32IMZICOND-NEXT: or a0, a2, a0
1902+
; RV32IMZICOND-NEXT: sw a0, 0(a1)
1903+
; RV32IMZICOND-NEXT: ret
1904+
;
1905+
; RV64IMZICOND-LABEL: select_redundant_czero_eqz1:
1906+
; RV64IMZICOND: # %bb.0: # %entry
1907+
; RV64IMZICOND-NEXT: lui a2, %hi(select_redundant_czero_eqz_data)
1908+
; RV64IMZICOND-NEXT: addi a2, a2, %lo(select_redundant_czero_eqz_data)
1909+
; RV64IMZICOND-NEXT: czero.nez a2, a2, a0
1910+
; RV64IMZICOND-NEXT: czero.eqz a0, a0, a0
1911+
; RV64IMZICOND-NEXT: or a0, a2, a0
1912+
; RV64IMZICOND-NEXT: sd a0, 0(a1)
1913+
; RV64IMZICOND-NEXT: ret
1914+
entry:
1915+
%3 = icmp eq ptr %0, null
1916+
%4 = select i1 %3, ptr @select_redundant_czero_eqz_data, ptr %0
1917+
store ptr %4, ptr %1, align 8
1918+
ret void
1919+
}
1920+
1921+
define void @select_redundant_czero_eqz2(ptr %0, ptr %1) {
1922+
; RV32IM-LABEL: select_redundant_czero_eqz2:
1923+
; RV32IM: # %bb.0: # %entry
1924+
; RV32IM-NEXT: bnez a0, .LBB50_2
1925+
; RV32IM-NEXT: # %bb.1: # %entry
1926+
; RV32IM-NEXT: lui a0, %hi(select_redundant_czero_eqz_data)
1927+
; RV32IM-NEXT: addi a0, a0, %lo(select_redundant_czero_eqz_data)
1928+
; RV32IM-NEXT: .LBB50_2: # %entry
1929+
; RV32IM-NEXT: sw a0, 0(a1)
1930+
; RV32IM-NEXT: ret
1931+
;
1932+
; RV64IM-LABEL: select_redundant_czero_eqz2:
1933+
; RV64IM: # %bb.0: # %entry
1934+
; RV64IM-NEXT: bnez a0, .LBB50_2
1935+
; RV64IM-NEXT: # %bb.1: # %entry
1936+
; RV64IM-NEXT: lui a0, %hi(select_redundant_czero_eqz_data)
1937+
; RV64IM-NEXT: addi a0, a0, %lo(select_redundant_czero_eqz_data)
1938+
; RV64IM-NEXT: .LBB50_2: # %entry
1939+
; RV64IM-NEXT: sd a0, 0(a1)
1940+
; RV64IM-NEXT: ret
1941+
;
1942+
; RV64IMXVTCONDOPS-LABEL: select_redundant_czero_eqz2:
1943+
; RV64IMXVTCONDOPS: # %bb.0: # %entry
1944+
; RV64IMXVTCONDOPS-NEXT: lui a2, %hi(select_redundant_czero_eqz_data)
1945+
; RV64IMXVTCONDOPS-NEXT: addi a2, a2, %lo(select_redundant_czero_eqz_data)
1946+
; RV64IMXVTCONDOPS-NEXT: vt.maskcn a2, a2, a0
1947+
; RV64IMXVTCONDOPS-NEXT: vt.maskc a0, a0, a0
1948+
; RV64IMXVTCONDOPS-NEXT: or a0, a0, a2
1949+
; RV64IMXVTCONDOPS-NEXT: sd a0, 0(a1)
1950+
; RV64IMXVTCONDOPS-NEXT: ret
1951+
;
1952+
; RV32IMZICOND-LABEL: select_redundant_czero_eqz2:
1953+
; RV32IMZICOND: # %bb.0: # %entry
1954+
; RV32IMZICOND-NEXT: lui a2, %hi(select_redundant_czero_eqz_data)
1955+
; RV32IMZICOND-NEXT: addi a2, a2, %lo(select_redundant_czero_eqz_data)
1956+
; RV32IMZICOND-NEXT: czero.nez a2, a2, a0
1957+
; RV32IMZICOND-NEXT: czero.eqz a0, a0, a0
1958+
; RV32IMZICOND-NEXT: or a0, a0, a2
1959+
; RV32IMZICOND-NEXT: sw a0, 0(a1)
1960+
; RV32IMZICOND-NEXT: ret
1961+
;
1962+
; RV64IMZICOND-LABEL: select_redundant_czero_eqz2:
1963+
; RV64IMZICOND: # %bb.0: # %entry
1964+
; RV64IMZICOND-NEXT: lui a2, %hi(select_redundant_czero_eqz_data)
1965+
; RV64IMZICOND-NEXT: addi a2, a2, %lo(select_redundant_czero_eqz_data)
1966+
; RV64IMZICOND-NEXT: czero.nez a2, a2, a0
1967+
; RV64IMZICOND-NEXT: czero.eqz a0, a0, a0
1968+
; RV64IMZICOND-NEXT: or a0, a0, a2
1969+
; RV64IMZICOND-NEXT: sd a0, 0(a1)
1970+
; RV64IMZICOND-NEXT: ret
1971+
entry:
1972+
%3 = icmp ne ptr %0, null
1973+
%4 = select i1 %3, ptr %0, ptr @select_redundant_czero_eqz_data
1974+
store ptr %4, ptr %1, align 8
1975+
ret void
1976+
}

0 commit comments

Comments
 (0)