Skip to content

Commit

Permalink
[RISCV] Prefer vnsrl.wi v8, v8, 0 over vnsrl.wx v8, v8, x0.
Browse files Browse the repository at this point in the history
I have a couple data points that some microarchitectures prefer
the immediate 0 over x0. Does anyone know of microarchitectures
where the opposite is true?

Unfortunately, this is different than the vncvt.x.x.w alias
from the spec. Perhaps the alias was poorly chosen if x0 isn't
as optimal as immediate 0 on all microarchitectures.

Reviewed By: reames

Differential Revision: https://reviews.llvm.org/D132041
  • Loading branch information
topperc committed Aug 19, 2022
1 parent c167028 commit c9a41fe
Show file tree
Hide file tree
Showing 32 changed files with 747 additions and 747 deletions.
4 changes: 2 additions & 2 deletions llvm/lib/Target/RISCV/RISCVInstrInfoVVLPatterns.td
Expand Up @@ -1083,8 +1083,8 @@ foreach vtiTowti = AllWidenableIntVectors in {
def : Pat<(vti.Vector (riscv_trunc_vector_vl (wti.Vector wti.RegClass:$rs1),
(vti.Mask V0),
VLOpFrag)),
(!cast<Instruction>("PseudoVNSRL_WX_"#vti.LMul.MX#"_MASK")
(vti.Vector (IMPLICIT_DEF)), wti.RegClass:$rs1, X0,
(!cast<Instruction>("PseudoVNSRL_WI_"#vti.LMul.MX#"_MASK")
(vti.Vector (IMPLICIT_DEF)), wti.RegClass:$rs1, 0,
(vti.Mask V0), GPR:$vl, vti.Log2SEW, TAIL_AGNOSTIC)>;
}

Expand Down
72 changes: 36 additions & 36 deletions llvm/test/CodeGen/RISCV/fpclamptosat_vec.ll
Expand Up @@ -44,7 +44,7 @@ define <2 x i32> @stest_f64i32(<2 x double> %x) {
; CHECK-V-NEXT: vmin.vx v8, v8, a1
; CHECK-V-NEXT: vmax.vx v8, v8, a0
; CHECK-V-NEXT: vsetvli zero, zero, e32, mf2, ta, mu
; CHECK-V-NEXT: vncvt.x.x.w v8, v8
; CHECK-V-NEXT: vnsrl.wi v8, v8, 0
; CHECK-V-NEXT: ret
entry:
%conv = fptosi <2 x double> %x to <2 x i64>
Expand Down Expand Up @@ -83,7 +83,7 @@ define <2 x i32> @utest_f64i32(<2 x double> %x) {
; CHECK-V-NEXT: srli a0, a0, 32
; CHECK-V-NEXT: vminu.vx v8, v8, a0
; CHECK-V-NEXT: vsetvli zero, zero, e32, mf2, ta, mu
; CHECK-V-NEXT: vncvt.x.x.w v8, v8
; CHECK-V-NEXT: vnsrl.wi v8, v8, 0
; CHECK-V-NEXT: ret
entry:
%conv = fptoui <2 x double> %x to <2 x i64>
Expand Down Expand Up @@ -131,7 +131,7 @@ define <2 x i32> @ustest_f64i32(<2 x double> %x) {
; CHECK-V-NEXT: vmin.vx v8, v8, a0
; CHECK-V-NEXT: vmax.vx v8, v8, zero
; CHECK-V-NEXT: vsetvli zero, zero, e32, mf2, ta, mu
; CHECK-V-NEXT: vncvt.x.x.w v8, v8
; CHECK-V-NEXT: vnsrl.wi v8, v8, 0
; CHECK-V-NEXT: ret
entry:
%conv = fptosi <2 x double> %x to <2 x i64>
Expand Down Expand Up @@ -210,7 +210,7 @@ define <4 x i32> @stest_f32i32(<4 x float> %x) {
; CHECK-V-NEXT: vmin.vx v8, v10, a1
; CHECK-V-NEXT: vmax.vx v10, v8, a0
; CHECK-V-NEXT: vsetvli zero, zero, e32, m1, ta, mu
; CHECK-V-NEXT: vncvt.x.x.w v8, v10
; CHECK-V-NEXT: vnsrl.wi v8, v10, 0
; CHECK-V-NEXT: ret
entry:
%conv = fptosi <4 x float> %x to <4 x i64>
Expand Down Expand Up @@ -268,7 +268,7 @@ define <4 x i32> @utest_f32i32(<4 x float> %x) {
; CHECK-V-NEXT: vsetvli zero, zero, e64, m2, ta, mu
; CHECK-V-NEXT: vminu.vx v10, v10, a0
; CHECK-V-NEXT: vsetvli zero, zero, e32, m1, ta, mu
; CHECK-V-NEXT: vncvt.x.x.w v8, v10
; CHECK-V-NEXT: vnsrl.wi v8, v10, 0
; CHECK-V-NEXT: ret
entry:
%conv = fptoui <4 x float> %x to <4 x i64>
Expand Down Expand Up @@ -345,7 +345,7 @@ define <4 x i32> @ustest_f32i32(<4 x float> %x) {
; CHECK-V-NEXT: vmin.vx v8, v10, a0
; CHECK-V-NEXT: vmax.vx v10, v8, zero
; CHECK-V-NEXT: vsetvli zero, zero, e32, m1, ta, mu
; CHECK-V-NEXT: vncvt.x.x.w v8, v10
; CHECK-V-NEXT: vnsrl.wi v8, v10, 0
; CHECK-V-NEXT: ret
entry:
%conv = fptosi <4 x float> %x to <4 x i64>
Expand Down Expand Up @@ -511,7 +511,7 @@ define <4 x i32> @stest_f16i32(<4 x half> %x) {
; CHECK-V-NEXT: vmin.vx v8, v10, a1
; CHECK-V-NEXT: vmax.vx v10, v8, a0
; CHECK-V-NEXT: vsetvli zero, zero, e32, m1, ta, mu
; CHECK-V-NEXT: vncvt.x.x.w v8, v10
; CHECK-V-NEXT: vnsrl.wi v8, v10, 0
; CHECK-V-NEXT: ld ra, 56(sp) # 8-byte Folded Reload
; CHECK-V-NEXT: ld s0, 48(sp) # 8-byte Folded Reload
; CHECK-V-NEXT: ld s1, 40(sp) # 8-byte Folded Reload
Expand Down Expand Up @@ -661,7 +661,7 @@ define <4 x i32> @utesth_f16i32(<4 x half> %x) {
; CHECK-V-NEXT: vsetvli zero, zero, e64, m2, ta, mu
; CHECK-V-NEXT: vminu.vx v10, v10, a0
; CHECK-V-NEXT: vsetvli zero, zero, e32, m1, ta, mu
; CHECK-V-NEXT: vncvt.x.x.w v8, v10
; CHECK-V-NEXT: vnsrl.wi v8, v10, 0
; CHECK-V-NEXT: ld ra, 56(sp) # 8-byte Folded Reload
; CHECK-V-NEXT: ld s0, 48(sp) # 8-byte Folded Reload
; CHECK-V-NEXT: ld s1, 40(sp) # 8-byte Folded Reload
Expand Down Expand Up @@ -830,7 +830,7 @@ define <4 x i32> @ustest_f16i32(<4 x half> %x) {
; CHECK-V-NEXT: vmin.vx v8, v10, a0
; CHECK-V-NEXT: vmax.vx v10, v8, zero
; CHECK-V-NEXT: vsetvli zero, zero, e32, m1, ta, mu
; CHECK-V-NEXT: vncvt.x.x.w v8, v10
; CHECK-V-NEXT: vnsrl.wi v8, v10, 0
; CHECK-V-NEXT: ld ra, 56(sp) # 8-byte Folded Reload
; CHECK-V-NEXT: ld s0, 48(sp) # 8-byte Folded Reload
; CHECK-V-NEXT: ld s1, 40(sp) # 8-byte Folded Reload
Expand Down Expand Up @@ -890,7 +890,7 @@ define <2 x i16> @stest_f64i16(<2 x double> %x) {
; CHECK-V-NEXT: lui a0, 1048568
; CHECK-V-NEXT: vmax.vx v8, v8, a0
; CHECK-V-NEXT: vsetvli zero, zero, e16, mf4, ta, mu
; CHECK-V-NEXT: vncvt.x.x.w v8, v8
; CHECK-V-NEXT: vnsrl.wi v8, v8, 0
; CHECK-V-NEXT: ret
entry:
%conv = fptosi <2 x double> %x to <2 x i32>
Expand Down Expand Up @@ -929,7 +929,7 @@ define <2 x i16> @utest_f64i16(<2 x double> %x) {
; CHECK-V-NEXT: addiw a0, a0, -1
; CHECK-V-NEXT: vminu.vx v8, v9, a0
; CHECK-V-NEXT: vsetvli zero, zero, e16, mf4, ta, mu
; CHECK-V-NEXT: vncvt.x.x.w v8, v8
; CHECK-V-NEXT: vnsrl.wi v8, v8, 0
; CHECK-V-NEXT: ret
entry:
%conv = fptoui <2 x double> %x to <2 x i32>
Expand Down Expand Up @@ -977,7 +977,7 @@ define <2 x i16> @ustest_f64i16(<2 x double> %x) {
; CHECK-V-NEXT: vmin.vx v8, v9, a0
; CHECK-V-NEXT: vmax.vx v8, v8, zero
; CHECK-V-NEXT: vsetvli zero, zero, e16, mf4, ta, mu
; CHECK-V-NEXT: vncvt.x.x.w v8, v8
; CHECK-V-NEXT: vnsrl.wi v8, v8, 0
; CHECK-V-NEXT: ret
entry:
%conv = fptosi <2 x double> %x to <2 x i32>
Expand Down Expand Up @@ -1058,7 +1058,7 @@ define <4 x i16> @stest_f32i16(<4 x float> %x) {
; CHECK-V-NEXT: lui a0, 1048568
; CHECK-V-NEXT: vmax.vx v8, v8, a0
; CHECK-V-NEXT: vsetvli zero, zero, e16, mf2, ta, mu
; CHECK-V-NEXT: vncvt.x.x.w v8, v8
; CHECK-V-NEXT: vnsrl.wi v8, v8, 0
; CHECK-V-NEXT: ret
entry:
%conv = fptosi <4 x float> %x to <4 x i32>
Expand Down Expand Up @@ -1115,7 +1115,7 @@ define <4 x i16> @utest_f32i16(<4 x float> %x) {
; CHECK-V-NEXT: addiw a0, a0, -1
; CHECK-V-NEXT: vminu.vx v8, v8, a0
; CHECK-V-NEXT: vsetvli zero, zero, e16, mf2, ta, mu
; CHECK-V-NEXT: vncvt.x.x.w v8, v8
; CHECK-V-NEXT: vnsrl.wi v8, v8, 0
; CHECK-V-NEXT: ret
entry:
%conv = fptoui <4 x float> %x to <4 x i32>
Expand Down Expand Up @@ -1191,7 +1191,7 @@ define <4 x i16> @ustest_f32i16(<4 x float> %x) {
; CHECK-V-NEXT: vmin.vx v8, v8, a0
; CHECK-V-NEXT: vmax.vx v8, v8, zero
; CHECK-V-NEXT: vsetvli zero, zero, e16, mf2, ta, mu
; CHECK-V-NEXT: vncvt.x.x.w v8, v8
; CHECK-V-NEXT: vnsrl.wi v8, v8, 0
; CHECK-V-NEXT: ret
entry:
%conv = fptosi <4 x float> %x to <4 x i32>
Expand Down Expand Up @@ -1500,7 +1500,7 @@ define <8 x i16> @stest_f16i16(<8 x half> %x) {
; CHECK-V-NEXT: lui a0, 1048568
; CHECK-V-NEXT: vmax.vx v10, v8, a0
; CHECK-V-NEXT: vsetvli zero, zero, e16, m1, ta, mu
; CHECK-V-NEXT: vncvt.x.x.w v8, v10
; CHECK-V-NEXT: vnsrl.wi v8, v10, 0
; CHECK-V-NEXT: ld ra, 88(sp) # 8-byte Folded Reload
; CHECK-V-NEXT: ld s0, 80(sp) # 8-byte Folded Reload
; CHECK-V-NEXT: ld s1, 72(sp) # 8-byte Folded Reload
Expand Down Expand Up @@ -1774,7 +1774,7 @@ define <8 x i16> @utesth_f16i16(<8 x half> %x) {
; CHECK-V-NEXT: vsetvli zero, zero, e32, m2, ta, mu
; CHECK-V-NEXT: vminu.vx v10, v8, a0
; CHECK-V-NEXT: vsetvli zero, zero, e16, m1, ta, mu
; CHECK-V-NEXT: vncvt.x.x.w v8, v10
; CHECK-V-NEXT: vnsrl.wi v8, v10, 0
; CHECK-V-NEXT: ld ra, 88(sp) # 8-byte Folded Reload
; CHECK-V-NEXT: ld s0, 80(sp) # 8-byte Folded Reload
; CHECK-V-NEXT: ld s1, 72(sp) # 8-byte Folded Reload
Expand Down Expand Up @@ -2087,7 +2087,7 @@ define <8 x i16> @ustest_f16i16(<8 x half> %x) {
; CHECK-V-NEXT: vmin.vx v8, v8, a0
; CHECK-V-NEXT: vmax.vx v10, v8, zero
; CHECK-V-NEXT: vsetvli zero, zero, e16, m1, ta, mu
; CHECK-V-NEXT: vncvt.x.x.w v8, v10
; CHECK-V-NEXT: vnsrl.wi v8, v10, 0
; CHECK-V-NEXT: ld ra, 88(sp) # 8-byte Folded Reload
; CHECK-V-NEXT: ld s0, 80(sp) # 8-byte Folded Reload
; CHECK-V-NEXT: ld s1, 72(sp) # 8-byte Folded Reload
Expand Down Expand Up @@ -3456,7 +3456,7 @@ define <2 x i32> @stest_f64i32_mm(<2 x double> %x) {
; CHECK-V-NEXT: vmin.vx v8, v8, a1
; CHECK-V-NEXT: vmax.vx v8, v8, a0
; CHECK-V-NEXT: vsetvli zero, zero, e32, mf2, ta, mu
; CHECK-V-NEXT: vncvt.x.x.w v8, v8
; CHECK-V-NEXT: vnsrl.wi v8, v8, 0
; CHECK-V-NEXT: ret
entry:
%conv = fptosi <2 x double> %x to <2 x i64>
Expand Down Expand Up @@ -3493,7 +3493,7 @@ define <2 x i32> @utest_f64i32_mm(<2 x double> %x) {
; CHECK-V-NEXT: srli a0, a0, 32
; CHECK-V-NEXT: vminu.vx v8, v8, a0
; CHECK-V-NEXT: vsetvli zero, zero, e32, mf2, ta, mu
; CHECK-V-NEXT: vncvt.x.x.w v8, v8
; CHECK-V-NEXT: vnsrl.wi v8, v8, 0
; CHECK-V-NEXT: ret
entry:
%conv = fptoui <2 x double> %x to <2 x i64>
Expand Down Expand Up @@ -3540,7 +3540,7 @@ define <2 x i32> @ustest_f64i32_mm(<2 x double> %x) {
; CHECK-V-NEXT: vmin.vx v8, v8, a0
; CHECK-V-NEXT: vmax.vx v8, v8, zero
; CHECK-V-NEXT: vsetvli zero, zero, e32, mf2, ta, mu
; CHECK-V-NEXT: vncvt.x.x.w v8, v8
; CHECK-V-NEXT: vnsrl.wi v8, v8, 0
; CHECK-V-NEXT: ret
entry:
%conv = fptosi <2 x double> %x to <2 x i64>
Expand Down Expand Up @@ -3617,7 +3617,7 @@ define <4 x i32> @stest_f32i32_mm(<4 x float> %x) {
; CHECK-V-NEXT: vmin.vx v8, v10, a1
; CHECK-V-NEXT: vmax.vx v10, v8, a0
; CHECK-V-NEXT: vsetvli zero, zero, e32, m1, ta, mu
; CHECK-V-NEXT: vncvt.x.x.w v8, v10
; CHECK-V-NEXT: vnsrl.wi v8, v10, 0
; CHECK-V-NEXT: ret
entry:
%conv = fptosi <4 x float> %x to <4 x i64>
Expand Down Expand Up @@ -3673,7 +3673,7 @@ define <4 x i32> @utest_f32i32_mm(<4 x float> %x) {
; CHECK-V-NEXT: vsetvli zero, zero, e64, m2, ta, mu
; CHECK-V-NEXT: vminu.vx v10, v10, a0
; CHECK-V-NEXT: vsetvli zero, zero, e32, m1, ta, mu
; CHECK-V-NEXT: vncvt.x.x.w v8, v10
; CHECK-V-NEXT: vnsrl.wi v8, v10, 0
; CHECK-V-NEXT: ret
entry:
%conv = fptoui <4 x float> %x to <4 x i64>
Expand Down Expand Up @@ -3749,7 +3749,7 @@ define <4 x i32> @ustest_f32i32_mm(<4 x float> %x) {
; CHECK-V-NEXT: vmin.vx v8, v10, a0
; CHECK-V-NEXT: vmax.vx v10, v8, zero
; CHECK-V-NEXT: vsetvli zero, zero, e32, m1, ta, mu
; CHECK-V-NEXT: vncvt.x.x.w v8, v10
; CHECK-V-NEXT: vnsrl.wi v8, v10, 0
; CHECK-V-NEXT: ret
entry:
%conv = fptosi <4 x float> %x to <4 x i64>
Expand Down Expand Up @@ -3913,7 +3913,7 @@ define <4 x i32> @stest_f16i32_mm(<4 x half> %x) {
; CHECK-V-NEXT: vmin.vx v8, v10, a1
; CHECK-V-NEXT: vmax.vx v10, v8, a0
; CHECK-V-NEXT: vsetvli zero, zero, e32, m1, ta, mu
; CHECK-V-NEXT: vncvt.x.x.w v8, v10
; CHECK-V-NEXT: vnsrl.wi v8, v10, 0
; CHECK-V-NEXT: ld ra, 56(sp) # 8-byte Folded Reload
; CHECK-V-NEXT: ld s0, 48(sp) # 8-byte Folded Reload
; CHECK-V-NEXT: ld s1, 40(sp) # 8-byte Folded Reload
Expand Down Expand Up @@ -4061,7 +4061,7 @@ define <4 x i32> @utesth_f16i32_mm(<4 x half> %x) {
; CHECK-V-NEXT: vsetvli zero, zero, e64, m2, ta, mu
; CHECK-V-NEXT: vminu.vx v10, v10, a0
; CHECK-V-NEXT: vsetvli zero, zero, e32, m1, ta, mu
; CHECK-V-NEXT: vncvt.x.x.w v8, v10
; CHECK-V-NEXT: vnsrl.wi v8, v10, 0
; CHECK-V-NEXT: ld ra, 56(sp) # 8-byte Folded Reload
; CHECK-V-NEXT: ld s0, 48(sp) # 8-byte Folded Reload
; CHECK-V-NEXT: ld s1, 40(sp) # 8-byte Folded Reload
Expand Down Expand Up @@ -4229,7 +4229,7 @@ define <4 x i32> @ustest_f16i32_mm(<4 x half> %x) {
; CHECK-V-NEXT: vmin.vx v8, v10, a0
; CHECK-V-NEXT: vmax.vx v10, v8, zero
; CHECK-V-NEXT: vsetvli zero, zero, e32, m1, ta, mu
; CHECK-V-NEXT: vncvt.x.x.w v8, v10
; CHECK-V-NEXT: vnsrl.wi v8, v10, 0
; CHECK-V-NEXT: ld ra, 56(sp) # 8-byte Folded Reload
; CHECK-V-NEXT: ld s0, 48(sp) # 8-byte Folded Reload
; CHECK-V-NEXT: ld s1, 40(sp) # 8-byte Folded Reload
Expand Down Expand Up @@ -4287,7 +4287,7 @@ define <2 x i16> @stest_f64i16_mm(<2 x double> %x) {
; CHECK-V-NEXT: lui a0, 1048568
; CHECK-V-NEXT: vmax.vx v8, v8, a0
; CHECK-V-NEXT: vsetvli zero, zero, e16, mf4, ta, mu
; CHECK-V-NEXT: vncvt.x.x.w v8, v8
; CHECK-V-NEXT: vnsrl.wi v8, v8, 0
; CHECK-V-NEXT: ret
entry:
%conv = fptosi <2 x double> %x to <2 x i32>
Expand Down Expand Up @@ -4324,7 +4324,7 @@ define <2 x i16> @utest_f64i16_mm(<2 x double> %x) {
; CHECK-V-NEXT: addiw a0, a0, -1
; CHECK-V-NEXT: vminu.vx v8, v9, a0
; CHECK-V-NEXT: vsetvli zero, zero, e16, mf4, ta, mu
; CHECK-V-NEXT: vncvt.x.x.w v8, v8
; CHECK-V-NEXT: vnsrl.wi v8, v8, 0
; CHECK-V-NEXT: ret
entry:
%conv = fptoui <2 x double> %x to <2 x i32>
Expand Down Expand Up @@ -4371,7 +4371,7 @@ define <2 x i16> @ustest_f64i16_mm(<2 x double> %x) {
; CHECK-V-NEXT: vmin.vx v8, v9, a0
; CHECK-V-NEXT: vmax.vx v8, v8, zero
; CHECK-V-NEXT: vsetvli zero, zero, e16, mf4, ta, mu
; CHECK-V-NEXT: vncvt.x.x.w v8, v8
; CHECK-V-NEXT: vnsrl.wi v8, v8, 0
; CHECK-V-NEXT: ret
entry:
%conv = fptosi <2 x double> %x to <2 x i32>
Expand Down Expand Up @@ -4450,7 +4450,7 @@ define <4 x i16> @stest_f32i16_mm(<4 x float> %x) {
; CHECK-V-NEXT: lui a0, 1048568
; CHECK-V-NEXT: vmax.vx v8, v8, a0
; CHECK-V-NEXT: vsetvli zero, zero, e16, mf2, ta, mu
; CHECK-V-NEXT: vncvt.x.x.w v8, v8
; CHECK-V-NEXT: vnsrl.wi v8, v8, 0
; CHECK-V-NEXT: ret
entry:
%conv = fptosi <4 x float> %x to <4 x i32>
Expand Down Expand Up @@ -4505,7 +4505,7 @@ define <4 x i16> @utest_f32i16_mm(<4 x float> %x) {
; CHECK-V-NEXT: addiw a0, a0, -1
; CHECK-V-NEXT: vminu.vx v8, v8, a0
; CHECK-V-NEXT: vsetvli zero, zero, e16, mf2, ta, mu
; CHECK-V-NEXT: vncvt.x.x.w v8, v8
; CHECK-V-NEXT: vnsrl.wi v8, v8, 0
; CHECK-V-NEXT: ret
entry:
%conv = fptoui <4 x float> %x to <4 x i32>
Expand Down Expand Up @@ -4580,7 +4580,7 @@ define <4 x i16> @ustest_f32i16_mm(<4 x float> %x) {
; CHECK-V-NEXT: vmin.vx v8, v8, a0
; CHECK-V-NEXT: vmax.vx v8, v8, zero
; CHECK-V-NEXT: vsetvli zero, zero, e16, mf2, ta, mu
; CHECK-V-NEXT: vncvt.x.x.w v8, v8
; CHECK-V-NEXT: vnsrl.wi v8, v8, 0
; CHECK-V-NEXT: ret
entry:
%conv = fptosi <4 x float> %x to <4 x i32>
Expand Down Expand Up @@ -4887,7 +4887,7 @@ define <8 x i16> @stest_f16i16_mm(<8 x half> %x) {
; CHECK-V-NEXT: lui a0, 1048568
; CHECK-V-NEXT: vmax.vx v10, v8, a0
; CHECK-V-NEXT: vsetvli zero, zero, e16, m1, ta, mu
; CHECK-V-NEXT: vncvt.x.x.w v8, v10
; CHECK-V-NEXT: vnsrl.wi v8, v10, 0
; CHECK-V-NEXT: ld ra, 88(sp) # 8-byte Folded Reload
; CHECK-V-NEXT: ld s0, 80(sp) # 8-byte Folded Reload
; CHECK-V-NEXT: ld s1, 72(sp) # 8-byte Folded Reload
Expand Down Expand Up @@ -5157,7 +5157,7 @@ define <8 x i16> @utesth_f16i16_mm(<8 x half> %x) {
; CHECK-V-NEXT: vsetvli zero, zero, e32, m2, ta, mu
; CHECK-V-NEXT: vminu.vx v10, v8, a0
; CHECK-V-NEXT: vsetvli zero, zero, e16, m1, ta, mu
; CHECK-V-NEXT: vncvt.x.x.w v8, v10
; CHECK-V-NEXT: vnsrl.wi v8, v10, 0
; CHECK-V-NEXT: ld ra, 88(sp) # 8-byte Folded Reload
; CHECK-V-NEXT: ld s0, 80(sp) # 8-byte Folded Reload
; CHECK-V-NEXT: ld s1, 72(sp) # 8-byte Folded Reload
Expand Down Expand Up @@ -5469,7 +5469,7 @@ define <8 x i16> @ustest_f16i16_mm(<8 x half> %x) {
; CHECK-V-NEXT: vmin.vx v8, v8, a0
; CHECK-V-NEXT: vmax.vx v10, v8, zero
; CHECK-V-NEXT: vsetvli zero, zero, e16, m1, ta, mu
; CHECK-V-NEXT: vncvt.x.x.w v8, v10
; CHECK-V-NEXT: vnsrl.wi v8, v10, 0
; CHECK-V-NEXT: ld ra, 88(sp) # 8-byte Folded Reload
; CHECK-V-NEXT: ld s0, 80(sp) # 8-byte Folded Reload
; CHECK-V-NEXT: ld s1, 72(sp) # 8-byte Folded Reload
Expand Down
4 changes: 2 additions & 2 deletions llvm/test/CodeGen/RISCV/rvv/constant-folding.ll
Expand Up @@ -21,7 +21,7 @@ define <2 x i16> @fixedlen(<2 x i32> %x) {
; RV32-NEXT: lui a0, 1048568
; RV32-NEXT: vand.vx v8, v8, a0
; RV32-NEXT: vsetvli zero, zero, e16, mf4, ta, mu
; RV32-NEXT: vncvt.x.x.w v8, v8
; RV32-NEXT: vnsrl.wi v8, v8, 0
; RV32-NEXT: ret
;
; RV64-LABEL: fixedlen:
Expand All @@ -32,7 +32,7 @@ define <2 x i16> @fixedlen(<2 x i32> %x) {
; RV64-NEXT: slli a0, a0, 3
; RV64-NEXT: vand.vx v8, v8, a0
; RV64-NEXT: vsetvli zero, zero, e16, mf4, ta, mu
; RV64-NEXT: vncvt.x.x.w v8, v8
; RV64-NEXT: vnsrl.wi v8, v8, 0
; RV64-NEXT: ret
%v41 = insertelement <2 x i32> poison, i32 16, i32 0
%v42 = shufflevector <2 x i32> %v41, <2 x i32> poison, <2 x i32> zeroinitializer
Expand Down

0 comments on commit c9a41fe

Please sign in to comment.