467 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mattr=+sve -force-streaming-compatible < %s | FileCheck %s3; RUN: llc -mattr=+sme -force-streaming < %s | FileCheck %s4; RUN: llc -force-streaming-compatible < %s | FileCheck %s --check-prefix=NONEON-NOSVE5 6target triple = "aarch64-unknown-linux-gnu"7 8; i19 10define <4 x i1> @extract_subvector_v8i1(<8 x i1> %op) {11; CHECK-LABEL: extract_subvector_v8i1:12; CHECK: // %bb.0:13; CHECK-NEXT: // kill: def $d0 killed $d0 def $z014; CHECK-NEXT: mov z1.b, z0.b[7]15; CHECK-NEXT: mov z2.b, z0.b[6]16; CHECK-NEXT: mov z3.b, z0.b[5]17; CHECK-NEXT: mov z0.b, z0.b[4]18; CHECK-NEXT: zip1 z1.h, z2.h, z1.h19; CHECK-NEXT: zip1 z0.h, z0.h, z3.h20; CHECK-NEXT: zip1 z0.s, z0.s, z1.s21; CHECK-NEXT: // kill: def $d0 killed $d0 killed $z022; CHECK-NEXT: ret23;24; NONEON-NOSVE-LABEL: extract_subvector_v8i1:25; NONEON-NOSVE: // %bb.0:26; NONEON-NOSVE-NEXT: str d0, [sp, #-16]!27; NONEON-NOSVE-NEXT: .cfi_def_cfa_offset 1628; NONEON-NOSVE-NEXT: ldrb w8, [sp, #7]29; NONEON-NOSVE-NEXT: strh w8, [sp, #14]30; NONEON-NOSVE-NEXT: ldrb w8, [sp, #6]31; NONEON-NOSVE-NEXT: strh w8, [sp, #12]32; NONEON-NOSVE-NEXT: ldrb w8, [sp, #5]33; NONEON-NOSVE-NEXT: strh w8, [sp, #10]34; NONEON-NOSVE-NEXT: ldrb w8, [sp, #4]35; NONEON-NOSVE-NEXT: strh w8, [sp, #8]36; NONEON-NOSVE-NEXT: ldr d0, [sp, #8]37; NONEON-NOSVE-NEXT: add sp, sp, #1638; NONEON-NOSVE-NEXT: ret39 %ret = call <4 x i1> @llvm.vector.extract.v4i1.v8i1(<8 x i1> %op, i64 4)40 ret <4 x i1> %ret41}42 43; i844 45define <4 x i8> @extract_subvector_v8i8(<8 x i8> %op) {46; CHECK-LABEL: extract_subvector_v8i8:47; CHECK: // %bb.0:48; CHECK-NEXT: // kill: def $d0 killed $d0 def $z049; CHECK-NEXT: mov z1.b, z0.b[7]50; CHECK-NEXT: mov z2.b, z0.b[6]51; CHECK-NEXT: mov z3.b, z0.b[5]52; CHECK-NEXT: mov z0.b, z0.b[4]53; CHECK-NEXT: zip1 z1.h, z2.h, z1.h54; CHECK-NEXT: zip1 z0.h, z0.h, z3.h55; CHECK-NEXT: zip1 z0.s, z0.s, z1.s56; CHECK-NEXT: // kill: def $d0 killed $d0 killed $z057; CHECK-NEXT: ret58;59; NONEON-NOSVE-LABEL: extract_subvector_v8i8:60; NONEON-NOSVE: // %bb.0:61; NONEON-NOSVE-NEXT: str d0, [sp, #-16]!62; NONEON-NOSVE-NEXT: .cfi_def_cfa_offset 1663; NONEON-NOSVE-NEXT: ldrb w8, [sp, #7]64; NONEON-NOSVE-NEXT: strh w8, [sp, #14]65; NONEON-NOSVE-NEXT: ldrb w8, [sp, #6]66; NONEON-NOSVE-NEXT: strh w8, [sp, #12]67; NONEON-NOSVE-NEXT: ldrb w8, [sp, #5]68; NONEON-NOSVE-NEXT: strh w8, [sp, #10]69; NONEON-NOSVE-NEXT: ldrb w8, [sp, #4]70; NONEON-NOSVE-NEXT: strh w8, [sp, #8]71; NONEON-NOSVE-NEXT: ldr d0, [sp, #8]72; NONEON-NOSVE-NEXT: add sp, sp, #1673; NONEON-NOSVE-NEXT: ret74 %ret = call <4 x i8> @llvm.vector.extract.v4i8.v8i8(<8 x i8> %op, i64 4)75 ret <4 x i8> %ret76}77 78define <8 x i8> @extract_subvector_v16i8(<16 x i8> %op) {79; CHECK-LABEL: extract_subvector_v16i8:80; CHECK: // %bb.0:81; CHECK-NEXT: // kill: def $q0 killed $q0 def $z082; CHECK-NEXT: ext z0.b, z0.b, z0.b, #883; CHECK-NEXT: // kill: def $d0 killed $d0 killed $z084; CHECK-NEXT: ret85;86; NONEON-NOSVE-LABEL: extract_subvector_v16i8:87; NONEON-NOSVE: // %bb.0:88; NONEON-NOSVE-NEXT: str q0, [sp, #-16]!89; NONEON-NOSVE-NEXT: .cfi_def_cfa_offset 1690; NONEON-NOSVE-NEXT: ldr d0, [sp, #8]91; NONEON-NOSVE-NEXT: add sp, sp, #1692; NONEON-NOSVE-NEXT: ret93 %ret = call <8 x i8> @llvm.vector.extract.v8i8.v16i8(<16 x i8> %op, i64 8)94 ret <8 x i8> %ret95}96 97define void @extract_subvector_v32i8(ptr %a, ptr %b) {98; CHECK-LABEL: extract_subvector_v32i8:99; CHECK: // %bb.0:100; CHECK-NEXT: ldr q0, [x0, #16]101; CHECK-NEXT: str q0, [x1]102; CHECK-NEXT: ret103;104; NONEON-NOSVE-LABEL: extract_subvector_v32i8:105; NONEON-NOSVE: // %bb.0:106; NONEON-NOSVE-NEXT: ldr q0, [x0, #16]107; NONEON-NOSVE-NEXT: str q0, [x1]108; NONEON-NOSVE-NEXT: ret109 %op = load <32 x i8>, ptr %a110 %ret = call <16 x i8> @llvm.vector.extract.v16i8.v32i8(<32 x i8> %op, i64 16)111 store <16 x i8> %ret, ptr %b112 ret void113}114 115; i16116 117define <2 x i16> @extract_subvector_v4i16(<4 x i16> %op) {118; CHECK-LABEL: extract_subvector_v4i16:119; CHECK: // %bb.0:120; CHECK-NEXT: // kill: def $d0 killed $d0 def $z0121; CHECK-NEXT: uunpklo z0.s, z0.h122; CHECK-NEXT: ext z0.b, z0.b, z0.b, #8123; CHECK-NEXT: // kill: def $d0 killed $d0 killed $z0124; CHECK-NEXT: ret125;126; NONEON-NOSVE-LABEL: extract_subvector_v4i16:127; NONEON-NOSVE: // %bb.0:128; NONEON-NOSVE-NEXT: ushll v0.4s, v0.4h, #0129; NONEON-NOSVE-NEXT: str q0, [sp, #-16]!130; NONEON-NOSVE-NEXT: .cfi_def_cfa_offset 16131; NONEON-NOSVE-NEXT: ldr d0, [sp, #8]132; NONEON-NOSVE-NEXT: add sp, sp, #16133; NONEON-NOSVE-NEXT: ret134 %ret = call <2 x i16> @llvm.vector.extract.v2i16.v4i16(<4 x i16> %op, i64 2)135 ret <2 x i16> %ret136}137 138define <4 x i16> @extract_subvector_v8i16(<8 x i16> %op) {139; CHECK-LABEL: extract_subvector_v8i16:140; CHECK: // %bb.0:141; CHECK-NEXT: // kill: def $q0 killed $q0 def $z0142; CHECK-NEXT: ext z0.b, z0.b, z0.b, #8143; CHECK-NEXT: // kill: def $d0 killed $d0 killed $z0144; CHECK-NEXT: ret145;146; NONEON-NOSVE-LABEL: extract_subvector_v8i16:147; NONEON-NOSVE: // %bb.0:148; NONEON-NOSVE-NEXT: str q0, [sp, #-16]!149; NONEON-NOSVE-NEXT: .cfi_def_cfa_offset 16150; NONEON-NOSVE-NEXT: ldr d0, [sp, #8]151; NONEON-NOSVE-NEXT: add sp, sp, #16152; NONEON-NOSVE-NEXT: ret153 %ret = call <4 x i16> @llvm.vector.extract.v4i16.v8i16(<8 x i16> %op, i64 4)154 ret <4 x i16> %ret155}156 157define void @extract_subvector_v16i16(ptr %a, ptr %b) {158; CHECK-LABEL: extract_subvector_v16i16:159; CHECK: // %bb.0:160; CHECK-NEXT: ldr q0, [x0, #16]161; CHECK-NEXT: str q0, [x1]162; CHECK-NEXT: ret163;164; NONEON-NOSVE-LABEL: extract_subvector_v16i16:165; NONEON-NOSVE: // %bb.0:166; NONEON-NOSVE-NEXT: ldr q0, [x0, #16]167; NONEON-NOSVE-NEXT: str q0, [x1]168; NONEON-NOSVE-NEXT: ret169 %op = load <16 x i16>, ptr %a170 %ret = call <8 x i16> @llvm.vector.extract.v8i16.v16i16(<16 x i16> %op, i64 8)171 store <8 x i16> %ret, ptr %b172 ret void173}174 175; i32176 177define <1 x i32> @extract_subvector_v2i32(<2 x i32> %op) {178; CHECK-LABEL: extract_subvector_v2i32:179; CHECK: // %bb.0:180; CHECK-NEXT: // kill: def $d0 killed $d0 def $z0181; CHECK-NEXT: mov z0.s, z0.s[1]182; CHECK-NEXT: // kill: def $d0 killed $d0 killed $z0183; CHECK-NEXT: ret184;185; NONEON-NOSVE-LABEL: extract_subvector_v2i32:186; NONEON-NOSVE: // %bb.0:187; NONEON-NOSVE-NEXT: sub sp, sp, #16188; NONEON-NOSVE-NEXT: .cfi_def_cfa_offset 16189; NONEON-NOSVE-NEXT: str d0, [sp, #8]190; NONEON-NOSVE-NEXT: ldr w8, [sp, #12]191; NONEON-NOSVE-NEXT: str w8, [sp]192; NONEON-NOSVE-NEXT: ldr d0, [sp], #16193; NONEON-NOSVE-NEXT: ret194 %ret = call <1 x i32> @llvm.vector.extract.v1i32.v2i32(<2 x i32> %op, i64 1)195 ret <1 x i32> %ret196}197 198define <2 x i32> @extract_subvector_v4i32(<4 x i32> %op) {199; CHECK-LABEL: extract_subvector_v4i32:200; CHECK: // %bb.0:201; CHECK-NEXT: // kill: def $q0 killed $q0 def $z0202; CHECK-NEXT: ext z0.b, z0.b, z0.b, #8203; CHECK-NEXT: // kill: def $d0 killed $d0 killed $z0204; CHECK-NEXT: ret205;206; NONEON-NOSVE-LABEL: extract_subvector_v4i32:207; NONEON-NOSVE: // %bb.0:208; NONEON-NOSVE-NEXT: str q0, [sp, #-16]!209; NONEON-NOSVE-NEXT: .cfi_def_cfa_offset 16210; NONEON-NOSVE-NEXT: ldr d0, [sp, #8]211; NONEON-NOSVE-NEXT: add sp, sp, #16212; NONEON-NOSVE-NEXT: ret213 %ret = call <2 x i32> @llvm.vector.extract.v2i32.v4i32(<4 x i32> %op, i64 2)214 ret <2 x i32> %ret215}216 217define void @extract_subvector_v8i32(ptr %a, ptr %b) {218; CHECK-LABEL: extract_subvector_v8i32:219; CHECK: // %bb.0:220; CHECK-NEXT: ldr q0, [x0, #16]221; CHECK-NEXT: str q0, [x1]222; CHECK-NEXT: ret223;224; NONEON-NOSVE-LABEL: extract_subvector_v8i32:225; NONEON-NOSVE: // %bb.0:226; NONEON-NOSVE-NEXT: ldr q0, [x0, #16]227; NONEON-NOSVE-NEXT: str q0, [x1]228; NONEON-NOSVE-NEXT: ret229 %op = load <8 x i32>, ptr %a230 %ret = call <4 x i32> @llvm.vector.extract.v4i32.v8i32(<8 x i32> %op, i64 4)231 store <4 x i32> %ret, ptr %b232 ret void233}234 235; i64236 237define <1 x i64> @extract_subvector_v2i64(<2 x i64> %op) {238; CHECK-LABEL: extract_subvector_v2i64:239; CHECK: // %bb.0:240; CHECK-NEXT: // kill: def $q0 killed $q0 def $z0241; CHECK-NEXT: ext z0.b, z0.b, z0.b, #8242; CHECK-NEXT: // kill: def $d0 killed $d0 killed $z0243; CHECK-NEXT: ret244;245; NONEON-NOSVE-LABEL: extract_subvector_v2i64:246; NONEON-NOSVE: // %bb.0:247; NONEON-NOSVE-NEXT: str q0, [sp, #-16]!248; NONEON-NOSVE-NEXT: .cfi_def_cfa_offset 16249; NONEON-NOSVE-NEXT: ldr d0, [sp, #8]250; NONEON-NOSVE-NEXT: add sp, sp, #16251; NONEON-NOSVE-NEXT: ret252 %ret = call <1 x i64> @llvm.vector.extract.v1i64.v2i64(<2 x i64> %op, i64 1)253 ret <1 x i64> %ret254}255 256define void @extract_subvector_v4i64(ptr %a, ptr %b) {257; CHECK-LABEL: extract_subvector_v4i64:258; CHECK: // %bb.0:259; CHECK-NEXT: ldr q0, [x0, #16]260; CHECK-NEXT: str q0, [x1]261; CHECK-NEXT: ret262;263; NONEON-NOSVE-LABEL: extract_subvector_v4i64:264; NONEON-NOSVE: // %bb.0:265; NONEON-NOSVE-NEXT: ldr q0, [x0, #16]266; NONEON-NOSVE-NEXT: str q0, [x1]267; NONEON-NOSVE-NEXT: ret268 %op = load <4 x i64>, ptr %a269 %ret = call <2 x i64> @llvm.vector.extract.v2i64.v4i64(<4 x i64> %op, i64 2)270 store <2 x i64> %ret, ptr %b271 ret void272}273 274; f16275 276define <2 x half> @extract_subvector_v4f16(<4 x half> %op) {277; CHECK-LABEL: extract_subvector_v4f16:278; CHECK: // %bb.0:279; CHECK-NEXT: // kill: def $d0 killed $d0 def $z0280; CHECK-NEXT: mov z0.s, z0.s[1]281; CHECK-NEXT: // kill: def $d0 killed $d0 killed $z0282; CHECK-NEXT: ret283;284; NONEON-NOSVE-LABEL: extract_subvector_v4f16:285; NONEON-NOSVE: // %bb.0:286; NONEON-NOSVE-NEXT: str d0, [sp, #-16]!287; NONEON-NOSVE-NEXT: .cfi_def_cfa_offset 16288; NONEON-NOSVE-NEXT: ldr w8, [sp, #4]289; NONEON-NOSVE-NEXT: str w8, [sp, #8]290; NONEON-NOSVE-NEXT: ldr d0, [sp, #8]291; NONEON-NOSVE-NEXT: add sp, sp, #16292; NONEON-NOSVE-NEXT: ret293 %ret = call <2 x half> @llvm.vector.extract.v2f16.v4f16(<4 x half> %op, i64 2)294 ret <2 x half> %ret295}296 297define <4 x half> @extract_subvector_v8f16(<8 x half> %op) {298; CHECK-LABEL: extract_subvector_v8f16:299; CHECK: // %bb.0:300; CHECK-NEXT: // kill: def $q0 killed $q0 def $z0301; CHECK-NEXT: ext z0.b, z0.b, z0.b, #8302; CHECK-NEXT: // kill: def $d0 killed $d0 killed $z0303; CHECK-NEXT: ret304;305; NONEON-NOSVE-LABEL: extract_subvector_v8f16:306; NONEON-NOSVE: // %bb.0:307; NONEON-NOSVE-NEXT: str q0, [sp, #-16]!308; NONEON-NOSVE-NEXT: .cfi_def_cfa_offset 16309; NONEON-NOSVE-NEXT: ldr d0, [sp, #8]310; NONEON-NOSVE-NEXT: add sp, sp, #16311; NONEON-NOSVE-NEXT: ret312 %ret = call <4 x half> @llvm.vector.extract.v4f16.v8f16(<8 x half> %op, i64 4)313 ret <4 x half> %ret314}315 316define void @extract_subvector_v16f16(ptr %a, ptr %b) {317; CHECK-LABEL: extract_subvector_v16f16:318; CHECK: // %bb.0:319; CHECK-NEXT: ldr q0, [x0, #16]320; CHECK-NEXT: str q0, [x1]321; CHECK-NEXT: ret322;323; NONEON-NOSVE-LABEL: extract_subvector_v16f16:324; NONEON-NOSVE: // %bb.0:325; NONEON-NOSVE-NEXT: ldr q0, [x0, #16]326; NONEON-NOSVE-NEXT: str q0, [x1]327; NONEON-NOSVE-NEXT: ret328 %op = load <16 x half>, ptr %a329 %ret = call <8 x half> @llvm.vector.extract.v8f16.v16f16(<16 x half> %op, i64 8)330 store <8 x half> %ret, ptr %b331 ret void332}333 334; f32335 336define <1 x float> @extract_subvector_v2f32(<2 x float> %op) {337; CHECK-LABEL: extract_subvector_v2f32:338; CHECK: // %bb.0:339; CHECK-NEXT: // kill: def $d0 killed $d0 def $z0340; CHECK-NEXT: mov z0.s, z0.s[1]341; CHECK-NEXT: // kill: def $d0 killed $d0 killed $z0342; CHECK-NEXT: ret343;344; NONEON-NOSVE-LABEL: extract_subvector_v2f32:345; NONEON-NOSVE: // %bb.0:346; NONEON-NOSVE-NEXT: sub sp, sp, #16347; NONEON-NOSVE-NEXT: .cfi_def_cfa_offset 16348; NONEON-NOSVE-NEXT: str d0, [sp, #8]349; NONEON-NOSVE-NEXT: ldr w8, [sp, #12]350; NONEON-NOSVE-NEXT: str w8, [sp]351; NONEON-NOSVE-NEXT: ldr d0, [sp], #16352; NONEON-NOSVE-NEXT: ret353 %ret = call <1 x float> @llvm.vector.extract.v1f32.v2f32(<2 x float> %op, i64 1)354 ret <1 x float> %ret355}356 357define <2 x float> @extract_subvector_v4f32(<4 x float> %op) {358; CHECK-LABEL: extract_subvector_v4f32:359; CHECK: // %bb.0:360; CHECK-NEXT: // kill: def $q0 killed $q0 def $z0361; CHECK-NEXT: ext z0.b, z0.b, z0.b, #8362; CHECK-NEXT: // kill: def $d0 killed $d0 killed $z0363; CHECK-NEXT: ret364;365; NONEON-NOSVE-LABEL: extract_subvector_v4f32:366; NONEON-NOSVE: // %bb.0:367; NONEON-NOSVE-NEXT: str q0, [sp, #-16]!368; NONEON-NOSVE-NEXT: .cfi_def_cfa_offset 16369; NONEON-NOSVE-NEXT: ldr d0, [sp, #8]370; NONEON-NOSVE-NEXT: add sp, sp, #16371; NONEON-NOSVE-NEXT: ret372 %ret = call <2 x float> @llvm.vector.extract.v2f32.v4f32(<4 x float> %op, i64 2)373 ret <2 x float> %ret374}375 376define void @extract_subvector_v8f32(ptr %a, ptr %b) {377; CHECK-LABEL: extract_subvector_v8f32:378; CHECK: // %bb.0:379; CHECK-NEXT: ldr q0, [x0, #16]380; CHECK-NEXT: str q0, [x1]381; CHECK-NEXT: ret382;383; NONEON-NOSVE-LABEL: extract_subvector_v8f32:384; NONEON-NOSVE: // %bb.0:385; NONEON-NOSVE-NEXT: ldr q0, [x0, #16]386; NONEON-NOSVE-NEXT: str q0, [x1]387; NONEON-NOSVE-NEXT: ret388 %op = load <8 x float>, ptr %a389 %ret = call <4 x float> @llvm.vector.extract.v4f32.v8f32(<8 x float> %op, i64 4)390 store <4 x float> %ret, ptr %b391 ret void392}393 394; f64395 396define <1 x double> @extract_subvector_v2f64(<2 x double> %op) {397; CHECK-LABEL: extract_subvector_v2f64:398; CHECK: // %bb.0:399; CHECK-NEXT: // kill: def $q0 killed $q0 def $z0400; CHECK-NEXT: ext z0.b, z0.b, z0.b, #8401; CHECK-NEXT: // kill: def $d0 killed $d0 killed $z0402; CHECK-NEXT: ret403;404; NONEON-NOSVE-LABEL: extract_subvector_v2f64:405; NONEON-NOSVE: // %bb.0:406; NONEON-NOSVE-NEXT: str q0, [sp, #-16]!407; NONEON-NOSVE-NEXT: .cfi_def_cfa_offset 16408; NONEON-NOSVE-NEXT: ldr d0, [sp, #8]409; NONEON-NOSVE-NEXT: add sp, sp, #16410; NONEON-NOSVE-NEXT: ret411 %ret = call <1 x double> @llvm.vector.extract.v1f64.v2f64(<2 x double> %op, i64 1)412 ret <1 x double> %ret413}414 415define void @extract_subvector_v4f64(ptr %a, ptr %b) {416; CHECK-LABEL: extract_subvector_v4f64:417; CHECK: // %bb.0:418; CHECK-NEXT: ldr q0, [x0, #16]419; CHECK-NEXT: str q0, [x1]420; CHECK-NEXT: ret421;422; NONEON-NOSVE-LABEL: extract_subvector_v4f64:423; NONEON-NOSVE: // %bb.0:424; NONEON-NOSVE-NEXT: ldr q0, [x0, #16]425; NONEON-NOSVE-NEXT: str q0, [x1]426; NONEON-NOSVE-NEXT: ret427 %op = load <4 x double>, ptr %a428 %ret = call <2 x double> @llvm.vector.extract.v2f64.v4f64(<4 x double> %op, i64 2)429 store <2 x double> %ret, ptr %b430 ret void431}432 433declare <4 x i1> @llvm.vector.extract.v4i1.v8i1(<8 x i1>, i64)434 435declare <4 x i8> @llvm.vector.extract.v4i8.v8i8(<8 x i8>, i64)436declare <8 x i8> @llvm.vector.extract.v8i8.v16i8(<16 x i8>, i64)437declare <16 x i8> @llvm.vector.extract.v16i8.v32i8(<32 x i8>, i64)438declare <32 x i8> @llvm.vector.extract.v32i8.v64i8(<64 x i8>, i64)439 440declare <2 x i16> @llvm.vector.extract.v2i16.v4i16(<4 x i16>, i64)441declare <4 x i16> @llvm.vector.extract.v4i16.v8i16(<8 x i16>, i64)442declare <8 x i16> @llvm.vector.extract.v8i16.v16i16(<16 x i16>, i64)443declare <16 x i16> @llvm.vector.extract.v16i16.v32i16(<32 x i16>, i64)444 445declare <1 x i32> @llvm.vector.extract.v1i32.v2i32(<2 x i32>, i64)446declare <2 x i32> @llvm.vector.extract.v2i32.v4i32(<4 x i32>, i64)447declare <4 x i32> @llvm.vector.extract.v4i32.v8i32(<8 x i32>, i64)448declare <8 x i32> @llvm.vector.extract.v8i32.v16i32(<16 x i32>, i64)449 450declare <1 x i64> @llvm.vector.extract.v1i64.v2i64(<2 x i64>, i64)451declare <2 x i64> @llvm.vector.extract.v2i64.v4i64(<4 x i64>, i64)452declare <4 x i64> @llvm.vector.extract.v4i64.v8i64(<8 x i64>, i64)453 454declare <2 x half> @llvm.vector.extract.v2f16.v4f16(<4 x half>, i64)455declare <4 x half> @llvm.vector.extract.v4f16.v8f16(<8 x half>, i64)456declare <8 x half> @llvm.vector.extract.v8f16.v16f16(<16 x half>, i64)457declare <16 x half> @llvm.vector.extract.v16f16.v32f16(<32 x half>, i64)458 459declare <1 x float> @llvm.vector.extract.v1f32.v2f32(<2 x float>, i64)460declare <2 x float> @llvm.vector.extract.v2f32.v4f32(<4 x float>, i64)461declare <4 x float> @llvm.vector.extract.v4f32.v8f32(<8 x float>, i64)462declare <8 x float> @llvm.vector.extract.v8f32.v16f32(<16 x float>, i64)463 464declare <1 x double> @llvm.vector.extract.v1f64.v2f64(<2 x double>, i64)465declare <2 x double> @llvm.vector.extract.v2f64.v4f64(<4 x double>, i64)466declare <4 x double> @llvm.vector.extract.v4f64.v8f64(<8 x double>, i64)467