1889a99eeSLuke Lau; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py 2889a99eeSLuke Lau; RUN: llc -mtriple=riscv32 -mattr=+v -verify-machineinstrs < %s | FileCheck %s 3889a99eeSLuke Lau 4889a99eeSLuke Lau; This demonstrates that we can pass a struct containing scalable vectors across 5889a99eeSLuke Lau; a basic block. 6889a99eeSLuke Lau 7*ff9af4c4SNikita Popovdefine i32 @foo({ {<vscale x 2 x i32>, <vscale x 2 x i32>}, i32 } %x, ptr %y, ptr %z) { 8889a99eeSLuke Lau; CHECK-LABEL: foo: 9889a99eeSLuke Lau; CHECK: # %bb.0: # %entry 10889a99eeSLuke Lau; CHECK-NEXT: vs1r.v v8, (a1) 11889a99eeSLuke Lau; CHECK-NEXT: vs1r.v v9, (a2) 12889a99eeSLuke Lau; CHECK-NEXT: ret 13889a99eeSLuke Lauentry: 14889a99eeSLuke Lau br label %return 15889a99eeSLuke Lau 16889a99eeSLuke Laureturn: 17889a99eeSLuke Lau %a = extractvalue { {<vscale x 2 x i32>, <vscale x 2 x i32>}, i32 } %x, 1 18889a99eeSLuke Lau %b = extractvalue { {<vscale x 2 x i32>, <vscale x 2 x i32>}, i32 } %x, 0, 0 19889a99eeSLuke Lau %c = extractvalue { {<vscale x 2 x i32>, <vscale x 2 x i32>}, i32 } %x, 0, 1 20*ff9af4c4SNikita Popov store <vscale x 2 x i32> %b, ptr %y 21*ff9af4c4SNikita Popov store <vscale x 2 x i32> %c, ptr %z 22889a99eeSLuke Lau 23889a99eeSLuke Lau ret i32 %a 24889a99eeSLuke Lau} 25