brintos

brintos / llvm-project-archived public Read only

0
0
Text · 8.2 KiB · 335cb28 Raw
259 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -mtriple=x86_64-unknown-unknown | FileCheck %s3 4;5; fcmp oeq6;7 8define <2 x i64> @fcmp_oeq_v2f64() {9; CHECK-LABEL: fcmp_oeq_v2f64:10; CHECK:       # %bb.0:11; CHECK-NEXT:    pcmpeqd %xmm0, %xmm012; CHECK-NEXT:    retq13  %1 = fcmp oeq <2 x double> <double 0x3FF0000000000000, double 0xFFEFFFFFFFFFFFFF>, <double 0x3FF0000000000000, double 0xFFEFFFFFFFFFFFFF>14  %2 = sext <2 x i1> %1 to <2 x i64>15  ret <2 x i64> %216}17 18define <2 x i64> @fcmp_oeq_v2f64_undef() {19; CHECK-LABEL: fcmp_oeq_v2f64_undef:20; CHECK:       # %bb.0:21; CHECK-NEXT:    xorps %xmm0, %xmm022; CHECK-NEXT:    retq23  %1 = fcmp oeq <2 x double> <double 0x3FF0000000000000, double 0xFFEFFFFFFFFFFFFF>, undef24  %2 = sext <2 x i1> %1 to <2 x i64>25  ret <2 x i64> %226}27 28define <2 x i64> @fcmp_oeq_v2f64_undef_elt() {29; CHECK-LABEL: fcmp_oeq_v2f64_undef_elt:30; CHECK:       # %bb.0:31; CHECK-NEXT:    xorps %xmm0, %xmm032; CHECK-NEXT:    retq33  %1 = fcmp oeq <2 x double> <double 0x3FF0000000000000, double 0xFFEFFFFFFFFFFFFF>, <double undef, double 0x3FF0000000000000>34  %2 = sext <2 x i1> %1 to <2 x i64>35  ret <2 x i64> %236}37 38define <4 x i32> @fcmp_oeq_v4f32() {39; CHECK-LABEL: fcmp_oeq_v4f32:40; CHECK:       # %bb.0:41; CHECK-NEXT:    pcmpeqd %xmm0, %xmm042; CHECK-NEXT:    retq43  %1 = fcmp oeq <4 x float> <float -0.0, float 1.0, float -1.0, float +2.0>, <float +0.0, float 1.0, float -1.0, float +2.0>44  %2 = sext <4 x i1> %1 to <4 x i32>45  ret <4 x i32> %246}47 48define <4 x i32> @fcmp_oeq_v4f32_undef() {49; CHECK-LABEL: fcmp_oeq_v4f32_undef:50; CHECK:       # %bb.0:51; CHECK-NEXT:    xorps %xmm0, %xmm052; CHECK-NEXT:    retq53  %1 = fcmp oeq <4 x float> <float 1.0, float -1.0, float +2.0, float -0.0>, undef54  %2 = sext <4 x i1> %1 to <4 x i32>55  ret <4 x i32> %256}57 58define <4 x i32> @fcmp_oeq_v4f32_undef_elt() {59; CHECK-LABEL: fcmp_oeq_v4f32_undef_elt:60; CHECK:       # %bb.0:61; CHECK-NEXT:    movaps {{.*#+}} xmm0 = [0,4294967295,4294967295,0]62; CHECK-NEXT:    retq63  %1 = fcmp oeq <4 x float> <float -0.0, float 1.0, float -1.0, float undef>, <float undef, float 1.0, float -1.0, float +2.0>64  %2 = sext <4 x i1> %1 to <4 x i32>65  ret <4 x i32> %266}67 68;69; fcmp ueq70;71 72define <2 x i64> @fcmp_ueq_v2f64() {73; CHECK-LABEL: fcmp_ueq_v2f64:74; CHECK:       # %bb.0:75; CHECK-NEXT:    pcmpeqd %xmm0, %xmm076; CHECK-NEXT:    retq77  %1 = fcmp ueq <2 x double> <double 0x3FF0000000000000, double 0xFFEFFFFFFFFFFFFF>, <double 0x3FF0000000000000, double 0xFFEFFFFFFFFFFFFF>78  %2 = sext <2 x i1> %1 to <2 x i64>79  ret <2 x i64> %280}81 82define <2 x i64> @fcmp_ueq_v2f64_undef() {83; CHECK-LABEL: fcmp_ueq_v2f64_undef:84; CHECK:       # %bb.0:85; CHECK-NEXT:    pcmpeqd %xmm0, %xmm086; CHECK-NEXT:    retq87  %1 = fcmp ueq <2 x double> <double 0x3FF0000000000000, double 0xFFEFFFFFFFFFFFFF>, undef88  %2 = sext <2 x i1> %1 to <2 x i64>89  ret <2 x i64> %290}91 92define <2 x i64> @fcmp_ueq_v2f64_undef_elt() {93; CHECK-LABEL: fcmp_ueq_v2f64_undef_elt:94; CHECK:       # %bb.0:95; CHECK-NEXT:    movsd {{.*#+}} xmm0 = [18446744073709551615,0]96; CHECK-NEXT:    retq97  %1 = fcmp ueq <2 x double> <double 0x3FF0000000000000, double 0xFFEFFFFFFFFFFFFF>, <double undef, double 0x3FF0000000000000>98  %2 = sext <2 x i1> %1 to <2 x i64>99  ret <2 x i64> %2100}101 102define <4 x i32> @fcmp_ueq_v4f32() {103; CHECK-LABEL: fcmp_ueq_v4f32:104; CHECK:       # %bb.0:105; CHECK-NEXT:    pcmpeqd %xmm0, %xmm0106; CHECK-NEXT:    retq107  %1 = fcmp ueq <4 x float> <float -0.0, float 1.0, float -1.0, float +2.0>, <float +0.0, float 1.0, float -1.0, float +2.0>108  %2 = sext <4 x i1> %1 to <4 x i32>109  ret <4 x i32> %2110}111 112define <4 x i32> @fcmp_ueq_v4f32_undef() {113; CHECK-LABEL: fcmp_ueq_v4f32_undef:114; CHECK:       # %bb.0:115; CHECK-NEXT:    pcmpeqd %xmm0, %xmm0116; CHECK-NEXT:    retq117  %1 = fcmp ueq <4 x float> <float 1.0, float -1.0, float +2.0, float -0.0>, undef118  %2 = sext <4 x i1> %1 to <4 x i32>119  ret <4 x i32> %2120}121 122define <4 x i32> @fcmp_ueq_v4f32_undef_elt() {123; CHECK-LABEL: fcmp_ueq_v4f32_undef_elt:124; CHECK:       # %bb.0:125; CHECK-NEXT:    pcmpeqd %xmm0, %xmm0126; CHECK-NEXT:    retq127  %1 = fcmp ueq <4 x float> <float -0.0, float 1.0, float -1.0, float undef>, <float undef, float 1.0, float -1.0, float +2.0>128  %2 = sext <4 x i1> %1 to <4 x i32>129  ret <4 x i32> %2130}131 132;133; fcmp false134;135 136define <2 x i64> @fcmp_false_v2f64() {137; CHECK-LABEL: fcmp_false_v2f64:138; CHECK:       # %bb.0:139; CHECK-NEXT:    xorps %xmm0, %xmm0140; CHECK-NEXT:    retq141  %1 = fcmp false <2 x double> <double 0x3FF0000000000000, double 0xFFEFFFFFFFFFFFFF>, <double 0x3FF0000000000000, double 0xFFEFFFFFFFFFFFFF>142  %2 = sext <2 x i1> %1 to <2 x i64>143  ret <2 x i64> %2144}145 146define <2 x i64> @fcmp_false_v2f64_undef() {147; CHECK-LABEL: fcmp_false_v2f64_undef:148; CHECK:       # %bb.0:149; CHECK-NEXT:    xorps %xmm0, %xmm0150; CHECK-NEXT:    retq151  %1 = fcmp false <2 x double> <double 0x3FF0000000000000, double 0xFFEFFFFFFFFFFFFF>, undef152  %2 = sext <2 x i1> %1 to <2 x i64>153  ret <2 x i64> %2154}155 156define <2 x i64> @fcmp_false_v2f64_undef_elt() {157; CHECK-LABEL: fcmp_false_v2f64_undef_elt:158; CHECK:       # %bb.0:159; CHECK-NEXT:    xorps %xmm0, %xmm0160; CHECK-NEXT:    retq161  %1 = fcmp false <2 x double> <double 0x3FF0000000000000, double 0xFFEFFFFFFFFFFFFF>, <double undef, double 0x3FF0000000000000>162  %2 = sext <2 x i1> %1 to <2 x i64>163  ret <2 x i64> %2164}165 166define <4 x i32> @fcmp_false_v4f32() {167; CHECK-LABEL: fcmp_false_v4f32:168; CHECK:       # %bb.0:169; CHECK-NEXT:    xorps %xmm0, %xmm0170; CHECK-NEXT:    retq171  %1 = fcmp false <4 x float> <float -0.0, float 1.0, float -1.0, float +2.0>, <float +0.0, float 1.0, float -1.0, float +2.0>172  %2 = sext <4 x i1> %1 to <4 x i32>173  ret <4 x i32> %2174}175 176define <4 x i32> @fcmp_false_v4f32_undef() {177; CHECK-LABEL: fcmp_false_v4f32_undef:178; CHECK:       # %bb.0:179; CHECK-NEXT:    xorps %xmm0, %xmm0180; CHECK-NEXT:    retq181  %1 = fcmp false <4 x float> <float 1.0, float -1.0, float +2.0, float -0.0>, undef182  %2 = sext <4 x i1> %1 to <4 x i32>183  ret <4 x i32> %2184}185 186define <4 x i32> @fcmp_false_v4f32_undef_elt() {187; CHECK-LABEL: fcmp_false_v4f32_undef_elt:188; CHECK:       # %bb.0:189; CHECK-NEXT:    xorps %xmm0, %xmm0190; CHECK-NEXT:    retq191  %1 = fcmp false <4 x float> <float -0.0, float 1.0, float -1.0, float undef>, <float undef, float 1.0, float -1.0, float +2.0>192  %2 = sext <4 x i1> %1 to <4 x i32>193  ret <4 x i32> %2194}195 196;197; fcmp true198;199 200define <2 x i64> @fcmp_true_v2f64() {201; CHECK-LABEL: fcmp_true_v2f64:202; CHECK:       # %bb.0:203; CHECK-NEXT:    pcmpeqd %xmm0, %xmm0204; CHECK-NEXT:    retq205  %1 = fcmp true <2 x double> <double 0x3FF0000000000000, double 0xFFEFFFFFFFFFFFFF>, <double 0x3FF0000000000000, double 0xFFEFFFFFFFFFFFFF>206  %2 = sext <2 x i1> %1 to <2 x i64>207  ret <2 x i64> %2208}209 210define <2 x i64> @fcmp_true_v2f64_undef() {211; CHECK-LABEL: fcmp_true_v2f64_undef:212; CHECK:       # %bb.0:213; CHECK-NEXT:    pcmpeqd %xmm0, %xmm0214; CHECK-NEXT:    retq215  %1 = fcmp true <2 x double> <double 0x3FF0000000000000, double 0xFFEFFFFFFFFFFFFF>, undef216  %2 = sext <2 x i1> %1 to <2 x i64>217  ret <2 x i64> %2218}219 220define <2 x i64> @fcmp_true_v2f64_undef_elt() {221; CHECK-LABEL: fcmp_true_v2f64_undef_elt:222; CHECK:       # %bb.0:223; CHECK-NEXT:    pcmpeqd %xmm0, %xmm0224; CHECK-NEXT:    retq225  %1 = fcmp true <2 x double> <double 0x3FF0000000000000, double 0xFFEFFFFFFFFFFFFF>, <double undef, double 0x3FF0000000000000>226  %2 = sext <2 x i1> %1 to <2 x i64>227  ret <2 x i64> %2228}229 230define <4 x i32> @fcmp_true_v4f32() {231; CHECK-LABEL: fcmp_true_v4f32:232; CHECK:       # %bb.0:233; CHECK-NEXT:    pcmpeqd %xmm0, %xmm0234; CHECK-NEXT:    retq235  %1 = fcmp true <4 x float> <float -0.0, float 1.0, float -1.0, float +2.0>, <float +0.0, float 1.0, float -1.0, float +2.0>236  %2 = sext <4 x i1> %1 to <4 x i32>237  ret <4 x i32> %2238}239 240define <4 x i32> @fcmp_true_v4f32_undef() {241; CHECK-LABEL: fcmp_true_v4f32_undef:242; CHECK:       # %bb.0:243; CHECK-NEXT:    pcmpeqd %xmm0, %xmm0244; CHECK-NEXT:    retq245  %1 = fcmp true <4 x float> <float 1.0, float -1.0, float +2.0, float -0.0>, undef246  %2 = sext <4 x i1> %1 to <4 x i32>247  ret <4 x i32> %2248}249 250define <4 x i32> @fcmp_true_v4f32_undef_elt() {251; CHECK-LABEL: fcmp_true_v4f32_undef_elt:252; CHECK:       # %bb.0:253; CHECK-NEXT:    pcmpeqd %xmm0, %xmm0254; CHECK-NEXT:    retq255  %1 = fcmp true <4 x float> <float -0.0, float 1.0, float -1.0, float undef>, <float undef, float 1.0, float -1.0, float +2.0>256  %2 = sext <4 x i1> %1 to <4 x i32>257  ret <4 x i32> %2258}259