902 changes: 902 additions & 0 deletions llvm/test/CodeGen/RISCV/GlobalISel/instruction-select/rvv/anyext.mir

Large diffs are not rendered by default.

534 changes: 534 additions & 0 deletions llvm/test/CodeGen/RISCV/GlobalISel/instruction-select/rvv/icmp.mir

Large diffs are not rendered by default.

900 changes: 900 additions & 0 deletions llvm/test/CodeGen/RISCV/GlobalISel/instruction-select/rvv/sext.mir

Large diffs are not rendered by default.

900 changes: 900 additions & 0 deletions llvm/test/CodeGen/RISCV/GlobalISel/instruction-select/rvv/zext.mir

Large diffs are not rendered by default.

1,589 changes: 1,589 additions & 0 deletions llvm/test/CodeGen/RISCV/GlobalISel/legalizer/rvv/legalize-anyext.mir

Large diffs are not rendered by default.

810 changes: 810 additions & 0 deletions llvm/test/CodeGen/RISCV/GlobalISel/legalizer/rvv/legalize-icmp.mir

Large diffs are not rendered by default.

1,589 changes: 1,589 additions & 0 deletions llvm/test/CodeGen/RISCV/GlobalISel/legalizer/rvv/legalize-sext.mir

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -0,0 +1,116 @@
# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
# RUN: llc -mtriple=riscv32 -mattr=+v -run-pass=legalizer %s -o - | FileCheck --check-prefix=HasF64 %s
# RUN: llc -mtriple=riscv32 -mattr=+Zve64x -run-pass=legalizer %s -o - | FileCheck --check-prefix=NoF64 %s

---
name: splatvector_nxv1i64
legalized: false
tracksRegLiveness: true
body: |
bb.1:
; HasF64-LABEL: name: splatvector_nxv1i64
; HasF64: [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF
; HasF64-NEXT: [[DEF1:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF
; HasF64-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[DEF]](s32), [[DEF1]](s32)
; HasF64-NEXT: [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 1 x s64>) = G_SPLAT_VECTOR [[MV]](s64)
; HasF64-NEXT: $v8 = COPY [[SPLAT_VECTOR]](<vscale x 1 x s64>)
; HasF64-NEXT: PseudoRET implicit $v8
;
; NoF64-LABEL: name: splatvector_nxv1i64
; NoF64: [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF
; NoF64-NEXT: [[DEF1:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF
; NoF64-NEXT: [[VMSET_VL:%[0-9]+]]:_(<vscale x 1 x s1>) = G_VMSET_VL $x0
; NoF64-NEXT: [[DEF2:%[0-9]+]]:_(<vscale x 1 x s64>) = G_IMPLICIT_DEF
; NoF64-NEXT: [[SPLAT_VECTOR_SPLIT_I64_VL:%[0-9]+]]:_(<vscale x 1 x s64>) = G_SPLAT_VECTOR_SPLIT_I64_VL [[DEF2]], [[DEF]](s32), [[DEF1]], $x0
; NoF64-NEXT: $v8 = COPY [[SPLAT_VECTOR_SPLIT_I64_VL]](<vscale x 1 x s64>)
; NoF64-NEXT: PseudoRET implicit $v8
%0:_(s64) = G_IMPLICIT_DEF
%1:_(<vscale x 1 x s64>) = G_SPLAT_VECTOR %0(s64)
$v8 = COPY %1(<vscale x 1 x s64>)
PseudoRET implicit $v8
...
---
name: splatvector_nxv2i64
legalized: false
tracksRegLiveness: true
body: |
bb.1:
; HasF64-LABEL: name: splatvector_nxv2i64
; HasF64: [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF
; HasF64-NEXT: [[DEF1:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF
; HasF64-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[DEF]](s32), [[DEF1]](s32)
; HasF64-NEXT: [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 2 x s64>) = G_SPLAT_VECTOR [[MV]](s64)
; HasF64-NEXT: $v8m2 = COPY [[SPLAT_VECTOR]](<vscale x 2 x s64>)
; HasF64-NEXT: PseudoRET implicit $v8m2
;
; NoF64-LABEL: name: splatvector_nxv2i64
; NoF64: [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF
; NoF64-NEXT: [[DEF1:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF
; NoF64-NEXT: [[VMSET_VL:%[0-9]+]]:_(<vscale x 2 x s1>) = G_VMSET_VL $x0
; NoF64-NEXT: [[DEF2:%[0-9]+]]:_(<vscale x 2 x s64>) = G_IMPLICIT_DEF
; NoF64-NEXT: [[SPLAT_VECTOR_SPLIT_I64_VL:%[0-9]+]]:_(<vscale x 2 x s64>) = G_SPLAT_VECTOR_SPLIT_I64_VL [[DEF2]], [[DEF]](s32), [[DEF1]], $x0
; NoF64-NEXT: $v8m2 = COPY [[SPLAT_VECTOR_SPLIT_I64_VL]](<vscale x 2 x s64>)
; NoF64-NEXT: PseudoRET implicit $v8m2
%0:_(s64) = G_IMPLICIT_DEF
%1:_(<vscale x 2 x s64>) = G_SPLAT_VECTOR %0(s64)
$v8m2 = COPY %1(<vscale x 2 x s64>)
PseudoRET implicit $v8m2
...
---
name: splatvector_nxv4i64
legalized: false
tracksRegLiveness: true
body: |
bb.1:
; HasF64-LABEL: name: splatvector_nxv4i64
; HasF64: [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF
; HasF64-NEXT: [[DEF1:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF
; HasF64-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[DEF]](s32), [[DEF1]](s32)
; HasF64-NEXT: [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 4 x s64>) = G_SPLAT_VECTOR [[MV]](s64)
; HasF64-NEXT: $v8m4 = COPY [[SPLAT_VECTOR]](<vscale x 4 x s64>)
; HasF64-NEXT: PseudoRET implicit $v8m4
;
; NoF64-LABEL: name: splatvector_nxv4i64
; NoF64: [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF
; NoF64-NEXT: [[DEF1:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF
; NoF64-NEXT: [[VMSET_VL:%[0-9]+]]:_(<vscale x 4 x s1>) = G_VMSET_VL $x0
; NoF64-NEXT: [[DEF2:%[0-9]+]]:_(<vscale x 4 x s64>) = G_IMPLICIT_DEF
; NoF64-NEXT: [[SPLAT_VECTOR_SPLIT_I64_VL:%[0-9]+]]:_(<vscale x 4 x s64>) = G_SPLAT_VECTOR_SPLIT_I64_VL [[DEF2]], [[DEF]](s32), [[DEF1]], $x0
; NoF64-NEXT: $v8m4 = COPY [[SPLAT_VECTOR_SPLIT_I64_VL]](<vscale x 4 x s64>)
; NoF64-NEXT: PseudoRET implicit $v8m4
%0:_(s64) = G_IMPLICIT_DEF
%1:_(<vscale x 4 x s64>) = G_SPLAT_VECTOR %0(s64)
$v8m4 = COPY %1(<vscale x 4 x s64>)
PseudoRET implicit $v8m4
...
---
name: splatvector_nxv8i64
legalized: false
tracksRegLiveness: true
body: |
bb.1:
; HasF64-LABEL: name: splatvector_nxv8i64
; HasF64: [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF
; HasF64-NEXT: [[DEF1:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF
; HasF64-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[DEF]](s32), [[DEF1]](s32)
; HasF64-NEXT: [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 8 x s64>) = G_SPLAT_VECTOR [[MV]](s64)
; HasF64-NEXT: $v8m8 = COPY [[SPLAT_VECTOR]](<vscale x 8 x s64>)
; HasF64-NEXT: PseudoRET implicit $v8m8
;
; NoF64-LABEL: name: splatvector_nxv8i64
; NoF64: [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF
; NoF64-NEXT: [[DEF1:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF
; NoF64-NEXT: [[VMSET_VL:%[0-9]+]]:_(<vscale x 8 x s1>) = G_VMSET_VL $x0
; NoF64-NEXT: [[DEF2:%[0-9]+]]:_(<vscale x 8 x s64>) = G_IMPLICIT_DEF
; NoF64-NEXT: [[SPLAT_VECTOR_SPLIT_I64_VL:%[0-9]+]]:_(<vscale x 8 x s64>) = G_SPLAT_VECTOR_SPLIT_I64_VL [[DEF2]], [[DEF]](s32), [[DEF1]], $x0
; NoF64-NEXT: $v8m8 = COPY [[SPLAT_VECTOR_SPLIT_I64_VL]](<vscale x 8 x s64>)
; NoF64-NEXT: PseudoRET implicit $v8m8
%0:_(s64) = G_IMPLICIT_DEF
%1:_(<vscale x 8 x s64>) = G_SPLAT_VECTOR %0(s64)
$v8m8 = COPY %1(<vscale x 8 x s64>)
PseudoRET implicit $v8m8
...
1,589 changes: 1,589 additions & 0 deletions llvm/test/CodeGen/RISCV/GlobalISel/legalizer/rvv/legalize-zext.mir

Large diffs are not rendered by default.

820 changes: 820 additions & 0 deletions llvm/test/CodeGen/RISCV/GlobalISel/regbankselect/rvv/anyext.mir

Large diffs are not rendered by default.

675 changes: 675 additions & 0 deletions llvm/test/CodeGen/RISCV/GlobalISel/regbankselect/rvv/icmp.mir

Large diffs are not rendered by default.

820 changes: 820 additions & 0 deletions llvm/test/CodeGen/RISCV/GlobalISel/regbankselect/rvv/sext.mir

Large diffs are not rendered by default.

820 changes: 820 additions & 0 deletions llvm/test/CodeGen/RISCV/GlobalISel/regbankselect/rvv/zext.mir

Large diffs are not rendered by default.

13 changes: 9 additions & 4 deletions llvm/test/MachineVerifier/test_g_fcmp.mir
Original file line number Diff line number Diff line change
Expand Up @@ -24,17 +24,22 @@ body: |
%4:_(<2 x s32>) = G_IMPLICIT_DEF
%5:_(s1) = G_FCMP floatpred(oeq), %3, %4
; mismatched element count
; mismatched fixed element count
; CHECK: Bad machine code: Generic vector icmp/fcmp must preserve number of
%6:_(<2 x s32>) = G_IMPLICIT_DEF
%7:_(<2 x s32>) = G_IMPLICIT_DEF
%8:_(<4 x s1>) = G_FCMP floatpred(oeq), %6, %7
; mismatched scalable element count
; CHECK: Bad machine code: Generic vector icmp/fcmp must preserve number of
%9:_(<vscale x 2 x s32>) = G_IMPLICIT_DEF
%10:_(<vscale x 2 x s32>) = G_IMPLICIT_DEF
%11:_(<vscale x 4 x s1>) = G_FCMP floatpred(oeq), %9, %10
; mismatched scalar element type
; CHECK: *** Bad machine code: Type mismatch in generic instruction ***
%9:_(s32) = G_FCONSTANT float 0.0
%10:_(s64) = G_FCONSTANT float 1.0
%11:_(s1) = G_FCMP floatpred(oeq), %9, %10
%12:_(s32) = G_FCONSTANT float 0.0
%13:_(s64) = G_FCONSTANT float 1.0
%14:_(s1) = G_FCMP floatpred(oeq), %12, %13
...
13 changes: 9 additions & 4 deletions llvm/test/MachineVerifier/test_g_icmp.mir
Original file line number Diff line number Diff line change
Expand Up @@ -24,17 +24,22 @@ body: |
%4:_(<2 x s32>) = G_IMPLICIT_DEF
%5:_(s1) = G_ICMP intpred(eq), %3, %4
; mismatched element count
; mismatched fixed element count
; CHECK: Bad machine code: Generic vector icmp/fcmp must preserve number of
%6:_(<2 x s32>) = G_IMPLICIT_DEF
%7:_(<2 x s32>) = G_IMPLICIT_DEF
%8:_(<4 x s1>) = G_ICMP intpred(eq), %6, %7
; mismatched scalable element count
; CHECK: Bad machine code: Generic vector icmp/fcmp must preserve number of
%9:_(<vscale x 2 x s32>) = G_IMPLICIT_DEF
%10:_(<vscale x 2 x s32>) = G_IMPLICIT_DEF
%11:_(<vscale x 4 x s1>) = G_ICMP intpred(eq), %9, %10
; mismatched scalar element type
; CHECK: *** Bad machine code: Type mismatch in generic instruction ***
%9:_(s32) = G_CONSTANT i32 0
%10:_(s64) = G_CONSTANT i32 1
%11:_(s1) = G_ICMP intpred(eq), %9, %10
%12:_(s32) = G_CONSTANT i32 0
%13:_(s64) = G_CONSTANT i32 1
%14:_(s1) = G_ICMP intpred(eq), %12, %13
...