@@ -722,3 +722,35 @@ define i64 @avl_undef2() {
722
722
%1 = tail call i64 @llvm.riscv.vsetvli (i64 poison, i64 2 , i64 7 )
723
723
ret i64 %1
724
724
}
725
+
726
+ define i64 @vsetvli_vleff () {
727
+ ; CHECK-LABEL: vsetvli_vleff:
728
+ ; CHECK: # %bb.0: # %entry
729
+ ; CHECK-NEXT: vsetvli a1, zero, e16, m1, ta, ma
730
+ ; CHECK-NEXT: vmv.v.i v8, 0
731
+ ; CHECK-NEXT: .LBB37_1: # %while.body
732
+ ; CHECK-NEXT: # =>This Inner Loop Header: Depth=1
733
+ ; CHECK-NEXT: vsetivli zero, 0, e16, m1, tu, ma
734
+ ; CHECK-NEXT: vmv1r.v v9, v8
735
+ ; CHECK-NEXT: vle16ff.v v9, (zero)
736
+ ; CHECK-NEXT: csrr a0, vl
737
+ ; CHECK-NEXT: beqz a0, .LBB37_1
738
+ ; CHECK-NEXT: # %bb.2: # %while.end
739
+ ; CHECK-NEXT: li a0, 0
740
+ ; CHECK-NEXT: ret
741
+ entry:
742
+ br label %while.cond
743
+
744
+ while.cond:
745
+ %new_vl.0 = phi i64 [ 0 , %entry ], [ %1 , %while.body ]
746
+ %cmp = icmp eq i64 %new_vl.0 , 0
747
+ br i1 %cmp , label %while.body , label %while.end
748
+
749
+ while.body:
750
+ %0 = tail call { <vscale x 4 x i16 >, i64 } @llvm.riscv.vleff.nxv4i16.i64 (<vscale x 4 x i16 > zeroinitializer , ptr null , i64 0 )
751
+ %1 = extractvalue { <vscale x 4 x i16 >, i64 } %0 , 1
752
+ br label %while.cond
753
+
754
+ while.end:
755
+ ret i64 0
756
+ }
0 commit comments