@@ -1790,15 +1790,13 @@ define i32 @select_cst5_invert(i1 zeroext %cond) {
17901790;
17911791; RV64IMXVTCONDOPS-LABEL: select_cst5_invert:
17921792; RV64IMXVTCONDOPS: # %bb.0:
1793- ; RV64IMXVTCONDOPS-NEXT: li a1, 2
1794- ; RV64IMXVTCONDOPS-NEXT: vt.maskc a0, a1, a0
1793+ ; RV64IMXVTCONDOPS-NEXT: slli a0, a0, 1
17951794; RV64IMXVTCONDOPS-NEXT: addi a0, a0, 2047
17961795; RV64IMXVTCONDOPS-NEXT: ret
17971796;
17981797; CHECKZICOND-LABEL: select_cst5_invert:
17991798; CHECKZICOND: # %bb.0:
1800- ; CHECKZICOND-NEXT: li a1, 2
1801- ; CHECKZICOND-NEXT: czero.eqz a0, a1, a0
1799+ ; CHECKZICOND-NEXT: slli a0, a0, 1
18021800; CHECKZICOND-NEXT: addi a0, a0, 2047
18031801; CHECKZICOND-NEXT: ret
18041802 %ret = select i1 %cond , i32 2049 , i32 2047
@@ -1873,17 +1871,21 @@ define i32 @select_cst_diff2_invert(i1 zeroext %cond) {
18731871;
18741872; RV64IMXVTCONDOPS-LABEL: select_cst_diff2_invert:
18751873; RV64IMXVTCONDOPS: # %bb.0:
1876- ; RV64IMXVTCONDOPS-NEXT: li a1, -2
1877- ; RV64IMXVTCONDOPS-NEXT: vt.maskcn a0, a1, a0
1878- ; RV64IMXVTCONDOPS-NEXT: addi a0, a0, 122
1874+ ; RV64IMXVTCONDOPS-NEXT: slli a0, a0, 1
1875+ ; RV64IMXVTCONDOPS-NEXT: addiw a0, a0, 120
18791876; RV64IMXVTCONDOPS-NEXT: ret
18801877;
1881- ; CHECKZICOND-LABEL: select_cst_diff2_invert:
1882- ; CHECKZICOND: # %bb.0:
1883- ; CHECKZICOND-NEXT: li a1, -2
1884- ; CHECKZICOND-NEXT: czero.nez a0, a1, a0
1885- ; CHECKZICOND-NEXT: addi a0, a0, 122
1886- ; CHECKZICOND-NEXT: ret
1878+ ; RV32IMZICOND-LABEL: select_cst_diff2_invert:
1879+ ; RV32IMZICOND: # %bb.0:
1880+ ; RV32IMZICOND-NEXT: slli a0, a0, 1
1881+ ; RV32IMZICOND-NEXT: addi a0, a0, 120
1882+ ; RV32IMZICOND-NEXT: ret
1883+ ;
1884+ ; RV64IMZICOND-LABEL: select_cst_diff2_invert:
1885+ ; RV64IMZICOND: # %bb.0:
1886+ ; RV64IMZICOND-NEXT: slli a0, a0, 1
1887+ ; RV64IMZICOND-NEXT: addiw a0, a0, 120
1888+ ; RV64IMZICOND-NEXT: ret
18871889 %ret = select i1 %cond , i32 122 , i32 120
18881890 ret i32 %ret
18891891}
@@ -1911,16 +1913,14 @@ define i32 @select_cst_diff4(i1 zeroext %cond) {
19111913;
19121914; RV64IMXVTCONDOPS-LABEL: select_cst_diff4:
19131915; RV64IMXVTCONDOPS: # %bb.0:
1914- ; RV64IMXVTCONDOPS-NEXT: li a1, -4
1915- ; RV64IMXVTCONDOPS-NEXT: vt.maskcn a0, a1, a0
1916- ; RV64IMXVTCONDOPS-NEXT: addi a0, a0, 10
1916+ ; RV64IMXVTCONDOPS-NEXT: slli a0, a0, 2
1917+ ; RV64IMXVTCONDOPS-NEXT: addi a0, a0, 6
19171918; RV64IMXVTCONDOPS-NEXT: ret
19181919;
19191920; CHECKZICOND-LABEL: select_cst_diff4:
19201921; CHECKZICOND: # %bb.0:
1921- ; CHECKZICOND-NEXT: li a1, -4
1922- ; CHECKZICOND-NEXT: czero.nez a0, a1, a0
1923- ; CHECKZICOND-NEXT: addi a0, a0, 10
1922+ ; CHECKZICOND-NEXT: slli a0, a0, 2
1923+ ; CHECKZICOND-NEXT: addi a0, a0, 6
19241924; CHECKZICOND-NEXT: ret
19251925 %ret = select i1 %cond , i32 10 , i32 6
19261926 ret i32 %ret
@@ -1987,17 +1987,21 @@ define i32 @select_cst_diff8(i1 zeroext %cond) {
19871987;
19881988; RV64IMXVTCONDOPS-LABEL: select_cst_diff8:
19891989; RV64IMXVTCONDOPS: # %bb.0:
1990- ; RV64IMXVTCONDOPS-NEXT: li a1, -8
1991- ; RV64IMXVTCONDOPS-NEXT: vt.maskcn a0, a1, a0
1992- ; RV64IMXVTCONDOPS-NEXT: addi a0, a0, 14
1990+ ; RV64IMXVTCONDOPS-NEXT: slli a0, a0, 3
1991+ ; RV64IMXVTCONDOPS-NEXT: addiw a0, a0, 6
19931992; RV64IMXVTCONDOPS-NEXT: ret
19941993;
1995- ; CHECKZICOND-LABEL: select_cst_diff8:
1996- ; CHECKZICOND: # %bb.0:
1997- ; CHECKZICOND-NEXT: li a1, -8
1998- ; CHECKZICOND-NEXT: czero.nez a0, a1, a0
1999- ; CHECKZICOND-NEXT: addi a0, a0, 14
2000- ; CHECKZICOND-NEXT: ret
1994+ ; RV32IMZICOND-LABEL: select_cst_diff8:
1995+ ; RV32IMZICOND: # %bb.0:
1996+ ; RV32IMZICOND-NEXT: slli a0, a0, 3
1997+ ; RV32IMZICOND-NEXT: addi a0, a0, 6
1998+ ; RV32IMZICOND-NEXT: ret
1999+ ;
2000+ ; RV64IMZICOND-LABEL: select_cst_diff8:
2001+ ; RV64IMZICOND: # %bb.0:
2002+ ; RV64IMZICOND-NEXT: slli a0, a0, 3
2003+ ; RV64IMZICOND-NEXT: addiw a0, a0, 6
2004+ ; RV64IMZICOND-NEXT: ret
20012005 %ret = select i1 %cond , i32 14 , i32 6
20022006 ret i32 %ret
20032007}
@@ -2071,17 +2075,21 @@ define i32 @select_cst_diff1024(i1 zeroext %cond) {
20712075;
20722076; RV64IMXVTCONDOPS-LABEL: select_cst_diff1024:
20732077; RV64IMXVTCONDOPS: # %bb.0:
2074- ; RV64IMXVTCONDOPS-NEXT: li a1, -1024
2075- ; RV64IMXVTCONDOPS-NEXT: vt.maskcn a0, a1, a0
2076- ; RV64IMXVTCONDOPS-NEXT: addi a0, a0, 1030
2078+ ; RV64IMXVTCONDOPS-NEXT: slli a0, a0, 10
2079+ ; RV64IMXVTCONDOPS-NEXT: addiw a0, a0, 6
20772080; RV64IMXVTCONDOPS-NEXT: ret
20782081;
2079- ; CHECKZICOND-LABEL: select_cst_diff1024:
2080- ; CHECKZICOND: # %bb.0:
2081- ; CHECKZICOND-NEXT: li a1, -1024
2082- ; CHECKZICOND-NEXT: czero.nez a0, a1, a0
2083- ; CHECKZICOND-NEXT: addi a0, a0, 1030
2084- ; CHECKZICOND-NEXT: ret
2082+ ; RV32IMZICOND-LABEL: select_cst_diff1024:
2083+ ; RV32IMZICOND: # %bb.0:
2084+ ; RV32IMZICOND-NEXT: slli a0, a0, 10
2085+ ; RV32IMZICOND-NEXT: addi a0, a0, 6
2086+ ; RV32IMZICOND-NEXT: ret
2087+ ;
2088+ ; RV64IMZICOND-LABEL: select_cst_diff1024:
2089+ ; RV64IMZICOND: # %bb.0:
2090+ ; RV64IMZICOND-NEXT: slli a0, a0, 10
2091+ ; RV64IMZICOND-NEXT: addiw a0, a0, 6
2092+ ; RV64IMZICOND-NEXT: ret
20852093 %ret = select i1 %cond , i32 1030 , i32 6
20862094 ret i32 %ret
20872095}
0 commit comments