brintos

brintos / llvm-project-archived public Read only

0
0
Text · 5.9 KiB · 892b517 Raw
246 lines · plain
1; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+sse2 -fast-isel -fast-isel-abort=1 -asm-verbose=0 | FileCheck %s2; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx -fast-isel -fast-isel-abort=1 -asm-verbose=0 | FileCheck %s3;4; Bitcasts between 128-bit vector types are no-ops since no instruction is5; needed for the conversion.6 7define <2 x i64> @v4i32_to_v2i64(<4 x i32> %a) {8;CHECK-LABEL: v4i32_to_v2i64:9;CHECK-NEXT: .cfi_startproc10;CHECK-NEXT: ret11  %1 = bitcast <4 x i32> %a to <2 x i64>12  ret <2 x i64> %113}14 15define <2 x i64> @v8i16_to_v2i64(<8 x i16> %a) {16;CHECK-LABEL: v8i16_to_v2i64:17;CHECK-NEXT: .cfi_startproc18;CHECK-NEXT: ret19  %1 = bitcast <8 x i16> %a to <2 x i64>20  ret <2 x i64> %121}22 23define <2 x i64> @v16i8_to_v2i64(<16 x i8> %a) {24;CHECK-LABEL: v16i8_to_v2i64:25;CHECK-NEXT: .cfi_startproc26;CHECK-NEXT: ret27  %1 = bitcast <16 x i8> %a to <2 x i64>28  ret <2 x i64> %129}30 31define <2 x i64> @v2f64_to_v2i64(<2 x double> %a) {32;CHECK-LABEL: v2f64_to_v2i64:33;CHECK-NEXT: .cfi_startproc34;CHECK-NEXT: ret35  %1 = bitcast <2 x double> %a to <2 x i64>36  ret <2 x i64> %137}38 39define <2 x i64> @v4f32_to_v2i64(<4 x float> %a) {40;CHECK-LABEL: v4f32_to_v2i64:41;CHECK-NEXT: .cfi_startproc42;CHECK-NEXT: ret43  %1 = bitcast <4 x float> %a to <2 x i64>44  ret <2 x i64> %145}46 47define <4 x i32> @v2i64_to_v4i32(<2 x i64> %a) {48;CHECK-LABEL: v2i64_to_v4i32:49;CHECK-NEXT: .cfi_startproc50;CHECK-NEXT: ret51  %1 = bitcast <2 x i64> %a to <4 x i32>52  ret <4 x i32> %153}54 55define <4 x i32> @v8i16_to_v4i32(<8 x i16> %a) {56;CHECK-LABEL: v8i16_to_v4i32:57;CHECK-NEXT: .cfi_startproc58;CHECK-NEXT: ret59  %1 = bitcast <8 x i16> %a to <4 x i32>60  ret <4 x i32> %161}62 63define <4 x i32> @v16i8_to_v4i32(<16 x i8> %a) {64;CHECK-LABEL: v16i8_to_v4i32:65;CHECK-NEXT: .cfi_startproc66;CHECK-NEXT: ret67  %1 = bitcast <16 x i8> %a to <4 x i32>68  ret <4 x i32> %169}70 71define <4 x i32> @v2f64_to_v4i32(<2 x double> %a) {72;CHECK-LABEL: v2f64_to_v4i32:73;CHECK-NEXT: .cfi_startproc74;CHECK-NEXT: ret75  %1 = bitcast <2 x double> %a to <4 x i32>76  ret <4 x i32> %177}78 79define <4 x i32> @v4f32_to_v4i32(<4 x float> %a) {80;CHECK-LABEL: v4f32_to_v4i32:81;CHECK-NEXT: .cfi_startproc82;CHECK-NEXT: ret83  %1 = bitcast <4 x float> %a to <4 x i32>84  ret <4 x i32> %185}86 87define <8 x i16> @v2i64_to_v8i16(<2 x i64> %a) {88;CHECK-LABEL: v2i64_to_v8i16:89;CHECK-NEXT: .cfi_startproc90;CHECK-NEXT: ret91  %1 = bitcast <2 x i64> %a to <8 x i16>92  ret <8 x i16> %193}94 95define <8 x i16> @v4i32_to_v8i16(<4 x i32> %a) {96;CHECK-LABEL: v4i32_to_v8i16:97;CHECK-NEXT: .cfi_startproc98;CHECK-NEXT: ret99  %1 = bitcast <4 x i32> %a to <8 x i16>100  ret <8 x i16> %1101}102 103define <8 x i16> @v16i8_to_v8i16(<16 x i8> %a) {104;CHECK-LABEL: v16i8_to_v8i16:105;CHECK-NEXT: .cfi_startproc106;CHECK-NEXT: ret107  %1 = bitcast <16 x i8> %a to <8 x i16>108  ret <8 x i16> %1109}110 111define <8 x i16> @v2f64_to_v8i16(<2 x double> %a) {112;CHECK-LABEL: v2f64_to_v8i16:113;CHECK-NEXT: .cfi_startproc114;CHECK-NEXT: ret115  %1 = bitcast <2 x double> %a to <8 x i16>116  ret <8 x i16> %1117}118 119define <8 x i16> @v4f32_to_v8i16(<4 x float> %a) {120;CHECK-LABEL: v4f32_to_v8i16:121;CHECK-NEXT: .cfi_startproc122;CHECK-NEXT: ret123  %1 = bitcast <4 x float> %a to <8 x i16>124  ret <8 x i16> %1125}126 127define <16 x i8> @v8i16_to_v16i8(<8 x i16> %a) {128;CHECK-LABEL: v8i16_to_v16i8:129;CHECK-NEXT: .cfi_startproc130;CHECK-NEXT: ret131  %1 = bitcast <8 x i16> %a to <16 x i8>132  ret <16 x i8> %1133}134 135define <16 x i8> @v2i64_to_v16i8(<2 x i64> %a) {136;CHECK-LABEL: v2i64_to_v16i8:137;CHECK-NEXT: .cfi_startproc138;CHECK-NEXT: ret139  %1 = bitcast <2 x i64> %a to <16 x i8>140  ret <16 x i8> %1141}142 143define <16 x i8> @v4i32_to_v16i8(<4 x i32> %a) {144;CHECK-LABEL: v4i32_to_v16i8:145;CHECK-NEXT: .cfi_startproc146;CHECK-NEXT: ret147  %1 = bitcast <4 x i32> %a to <16 x i8>148  ret <16 x i8> %1149}150 151define <16 x i8> @v2f64_to_v16i8(<2 x double> %a) {152;CHECK-LABEL: v2f64_to_v16i8:153;CHECK-NEXT: .cfi_startproc154;CHECK-NEXT: ret155  %1 = bitcast <2 x double> %a to <16 x i8>156  ret <16 x i8> %1157}158 159define <16 x i8> @v4f32_to_v16i8(<4 x float> %a) {160;CHECK-LABEL: v4f32_to_v16i8:161;CHECK-NEXT: .cfi_startproc162;CHECK-NEXT: ret163  %1 = bitcast <4 x float> %a to <16 x i8>164  ret <16 x i8> %1165}166 167define <4 x float> @v16i8_to_v4f32(<16 x i8> %a) {168;CHECK-LABEL: v16i8_to_v4f32:169;CHECK-NEXT: .cfi_startproc170;CHECK-NEXT: ret171  %1 = bitcast <16 x i8> %a to <4 x float>172  ret <4 x float> %1173}174 175define <4 x float> @v8i16_to_v4f32(<8 x i16> %a) {176;CHECK-LABEL: v8i16_to_v4f32:177;CHECK-NEXT: .cfi_startproc178;CHECK-NEXT: ret179  %1 = bitcast <8 x i16> %a to <4 x float>180  ret <4 x float> %1181}182 183define <4 x float> @v2i64_to_v4f32(<2 x i64> %a) {184;CHECK-LABEL: v2i64_to_v4f32:185;CHECK-NEXT: .cfi_startproc186;CHECK-NEXT: ret187  %1 = bitcast <2 x i64> %a to <4 x float>188  ret <4 x float> %1189}190 191define <4 x float> @v4i32_to_v4f32(<4 x i32> %a) {192;CHECK-LABEL: v4i32_to_v4f32:193;CHECK-NEXT: .cfi_startproc194;CHECK-NEXT: ret195  %1 = bitcast <4 x i32> %a to <4 x float>196  ret <4 x float> %1197}198 199define <4 x float> @v2f64_to_v4f32(<2 x double> %a) {200;CHECK-LABEL: v2f64_to_v4f32:201;CHECK-NEXT: .cfi_startproc202;CHECK-NEXT: ret203  %1 = bitcast <2 x double> %a to <4 x float>204  ret <4 x float> %1205}206 207define <2 x double> @v4f32_to_v2f64(<4 x float> %a) {208;CHECK-LABEL: v4f32_to_v2f64:209;CHECK-NEXT: .cfi_startproc210;CHECK-NEXT: ret211  %1 = bitcast <4 x float> %a to <2 x double>212  ret <2 x double> %1213}214 215define <2 x double> @v16i8_to_v2f64(<16 x i8> %a) {216;CHECK-LABEL: v16i8_to_v2f64:217;CHECK-NEXT: .cfi_startproc218;CHECK-NEXT: ret219  %1 = bitcast <16 x i8> %a to <2 x double>220  ret <2 x double> %1221}222 223define <2 x double> @v8i16_to_v2f64(<8 x i16> %a) {224;CHECK-LABEL: v8i16_to_v2f64:225;CHECK-NEXT: .cfi_startproc226;CHECK-NEXT: ret227  %1 = bitcast <8 x i16> %a to <2 x double>228  ret <2 x double> %1229}230 231define <2 x double> @v2i64_to_v2f64(<2 x i64> %a) {232;CHECK-LABEL: v2i64_to_v2f64:233;CHECK-NEXT: .cfi_startproc234;CHECK-NEXT: ret235  %1 = bitcast <2 x i64> %a to <2 x double>236  ret <2 x double> %1237}238 239define <2 x double> @v4i32_to_v2f64(<4 x i32> %a) {240;CHECK-LABEL: v4i32_to_v2f64:241;CHECK-NEXT: .cfi_startproc242;CHECK-NEXT: ret243  %1 = bitcast <4 x i32> %a to <2 x double>244  ret <2 x double> %1245}246