294 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 52; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx512f | FileCheck %s3 4define <1 x i1> @test_oeq_q_v1f64(<1 x double> %a, <1 x double> %b) {5; CHECK-LABEL: test_oeq_q_v1f64:6; CHECK: # %bb.0:7; CHECK-NEXT: vucomisd %xmm1, %xmm08; CHECK-NEXT: setnp %cl9; CHECK-NEXT: sete %al10; CHECK-NEXT: andb %cl, %al11; CHECK-NEXT: retq12 %cond = tail call <1 x i1> @llvm.experimental.constrained.fcmp.v1f64(<1 x double> %a, <1 x double> %b, metadata !"oeq", metadata !"fpexcept.strict")13 ret <1 x i1> %cond14}15 16define <1 x i1> @test_ogt_q_v1f64(<1 x double> %a, <1 x double> %b) {17; CHECK-LABEL: test_ogt_q_v1f64:18; CHECK: # %bb.0:19; CHECK-NEXT: vucomisd %xmm1, %xmm020; CHECK-NEXT: seta %al21; CHECK-NEXT: retq22 %cond = tail call <1 x i1> @llvm.experimental.constrained.fcmp.v1f64(<1 x double> %a, <1 x double> %b, metadata !"ogt", metadata !"fpexcept.strict")23 ret <1 x i1> %cond24}25 26define <1 x i1> @test_oge_q_v1f64(<1 x double> %a, <1 x double> %b) {27; CHECK-LABEL: test_oge_q_v1f64:28; CHECK: # %bb.0:29; CHECK-NEXT: vucomisd %xmm1, %xmm030; CHECK-NEXT: setae %al31; CHECK-NEXT: retq32 %cond = tail call <1 x i1> @llvm.experimental.constrained.fcmp.v1f64(<1 x double> %a, <1 x double> %b, metadata !"oge", metadata !"fpexcept.strict")33 ret <1 x i1> %cond34}35 36define <1 x i1> @test_olt_q_v1f64(<1 x double> %a, <1 x double> %b) {37; CHECK-LABEL: test_olt_q_v1f64:38; CHECK: # %bb.0:39; CHECK-NEXT: vucomisd %xmm0, %xmm140; CHECK-NEXT: seta %al41; CHECK-NEXT: retq42 %cond = tail call <1 x i1> @llvm.experimental.constrained.fcmp.v1f64(<1 x double> %a, <1 x double> %b, metadata !"olt", metadata !"fpexcept.strict")43 ret <1 x i1> %cond44}45 46define <1 x i1> @test_ole_q_v1f64(<1 x double> %a, <1 x double> %b) {47; CHECK-LABEL: test_ole_q_v1f64:48; CHECK: # %bb.0:49; CHECK-NEXT: vucomisd %xmm0, %xmm150; CHECK-NEXT: setae %al51; CHECK-NEXT: retq52 %cond = tail call <1 x i1> @llvm.experimental.constrained.fcmp.v1f64(<1 x double> %a, <1 x double> %b, metadata !"ole", metadata !"fpexcept.strict")53 ret <1 x i1> %cond54}55 56define <1 x i1> @test_one_q_v1f64(<1 x double> %a, <1 x double> %b) {57; CHECK-LABEL: test_one_q_v1f64:58; CHECK: # %bb.0:59; CHECK-NEXT: vucomisd %xmm1, %xmm060; CHECK-NEXT: setne %al61; CHECK-NEXT: retq62 %cond = tail call <1 x i1> @llvm.experimental.constrained.fcmp.v1f64(<1 x double> %a, <1 x double> %b, metadata !"one", metadata !"fpexcept.strict")63 ret <1 x i1> %cond64}65 66define <1 x i1> @test_ord_q_v1f64(<1 x double> %a, <1 x double> %b) {67; CHECK-LABEL: test_ord_q_v1f64:68; CHECK: # %bb.0:69; CHECK-NEXT: vucomisd %xmm1, %xmm070; CHECK-NEXT: setnp %al71; CHECK-NEXT: retq72 %cond = tail call <1 x i1> @llvm.experimental.constrained.fcmp.v1f64(<1 x double> %a, <1 x double> %b, metadata !"ord", metadata !"fpexcept.strict")73 ret <1 x i1> %cond74}75 76define <1 x i1> @test_ueq_q_v1f64(<1 x double> %a, <1 x double> %b) {77; CHECK-LABEL: test_ueq_q_v1f64:78; CHECK: # %bb.0:79; CHECK-NEXT: vucomisd %xmm1, %xmm080; CHECK-NEXT: setnp %al81; CHECK-NEXT: retq82 %cond = tail call <1 x i1> @llvm.experimental.constrained.fcmp.v1f64(<1 x double> %a, <1 x double> %b, metadata !"ord", metadata !"fpexcept.strict")83 ret <1 x i1> %cond84}85 86define <1 x i1> @test_ugt_q_v1f64(<1 x double> %a, <1 x double> %b) {87; CHECK-LABEL: test_ugt_q_v1f64:88; CHECK: # %bb.0:89; CHECK-NEXT: vucomisd %xmm0, %xmm190; CHECK-NEXT: setb %al91; CHECK-NEXT: retq92 %cond = tail call <1 x i1> @llvm.experimental.constrained.fcmp.v1f64(<1 x double> %a, <1 x double> %b, metadata !"ugt", metadata !"fpexcept.strict")93 ret <1 x i1> %cond94}95 96define <1 x i1> @test_uge_q_v1f64(<1 x double> %a, <1 x double> %b) {97; CHECK-LABEL: test_uge_q_v1f64:98; CHECK: # %bb.0:99; CHECK-NEXT: vucomisd %xmm0, %xmm1100; CHECK-NEXT: setbe %al101; CHECK-NEXT: retq102 %cond = tail call <1 x i1> @llvm.experimental.constrained.fcmp.v1f64(<1 x double> %a, <1 x double> %b, metadata !"uge", metadata !"fpexcept.strict")103 ret <1 x i1> %cond104}105 106define <1 x i1> @test_ult_q_v1f64(<1 x double> %a, <1 x double> %b) {107; CHECK-LABEL: test_ult_q_v1f64:108; CHECK: # %bb.0:109; CHECK-NEXT: vucomisd %xmm1, %xmm0110; CHECK-NEXT: setb %al111; CHECK-NEXT: retq112 %cond = tail call <1 x i1> @llvm.experimental.constrained.fcmp.v1f64(<1 x double> %a, <1 x double> %b, metadata !"ult", metadata !"fpexcept.strict")113 ret <1 x i1> %cond114}115 116define <1 x i1> @test_ule_q_v1f64(<1 x double> %a, <1 x double> %b) {117; CHECK-LABEL: test_ule_q_v1f64:118; CHECK: # %bb.0:119; CHECK-NEXT: vucomisd %xmm1, %xmm0120; CHECK-NEXT: setbe %al121; CHECK-NEXT: retq122 %cond = tail call <1 x i1> @llvm.experimental.constrained.fcmp.v1f64(<1 x double> %a, <1 x double> %b, metadata !"ule", metadata !"fpexcept.strict")123 ret <1 x i1> %cond124}125 126define <1 x i1> @test_une_q_v1f64(<1 x double> %a, <1 x double> %b) {127; CHECK-LABEL: test_une_q_v1f64:128; CHECK: # %bb.0:129; CHECK-NEXT: vucomisd %xmm1, %xmm0130; CHECK-NEXT: setp %cl131; CHECK-NEXT: setne %al132; CHECK-NEXT: orb %cl, %al133; CHECK-NEXT: retq134 %cond = tail call <1 x i1> @llvm.experimental.constrained.fcmp.v1f64(<1 x double> %a, <1 x double> %b, metadata !"une", metadata !"fpexcept.strict")135 ret <1 x i1> %cond136}137 138define <1 x i1> @test_uno_q_v1f64(<1 x double> %a, <1 x double> %b) {139; CHECK-LABEL: test_uno_q_v1f64:140; CHECK: # %bb.0:141; CHECK-NEXT: vucomisd %xmm1, %xmm0142; CHECK-NEXT: setp %al143; CHECK-NEXT: retq144 %cond = tail call <1 x i1> @llvm.experimental.constrained.fcmp.v1f64(<1 x double> %a, <1 x double> %b, metadata !"uno", metadata !"fpexcept.strict")145 ret <1 x i1> %cond146}147 148define <1 x i1> @test_oeq_s_v1f64(<1 x double> %a, <1 x double> %b) {149; CHECK-LABEL: test_oeq_s_v1f64:150; CHECK: # %bb.0:151; CHECK-NEXT: vcomisd %xmm1, %xmm0152; CHECK-NEXT: setnp %cl153; CHECK-NEXT: sete %al154; CHECK-NEXT: andb %cl, %al155; CHECK-NEXT: retq156 %cond = tail call <1 x i1> @llvm.experimental.constrained.fcmps.v1f64(<1 x double> %a, <1 x double> %b, metadata !"oeq", metadata !"fpexcept.strict")157 ret <1 x i1> %cond158}159 160define <1 x i1> @test_ogt_s_v1f64(<1 x double> %a, <1 x double> %b) {161; CHECK-LABEL: test_ogt_s_v1f64:162; CHECK: # %bb.0:163; CHECK-NEXT: vcomisd %xmm1, %xmm0164; CHECK-NEXT: seta %al165; CHECK-NEXT: retq166 %cond = tail call <1 x i1> @llvm.experimental.constrained.fcmps.v1f64(<1 x double> %a, <1 x double> %b, metadata !"ogt", metadata !"fpexcept.strict")167 ret <1 x i1> %cond168}169 170define <1 x i1> @test_oge_s_v1f64(<1 x double> %a, <1 x double> %b) {171; CHECK-LABEL: test_oge_s_v1f64:172; CHECK: # %bb.0:173; CHECK-NEXT: vcomisd %xmm1, %xmm0174; CHECK-NEXT: setae %al175; CHECK-NEXT: retq176 %cond = tail call <1 x i1> @llvm.experimental.constrained.fcmps.v1f64(<1 x double> %a, <1 x double> %b, metadata !"oge", metadata !"fpexcept.strict")177 ret <1 x i1> %cond178}179 180define <1 x i1> @test_olt_s_v1f64(<1 x double> %a, <1 x double> %b) {181; CHECK-LABEL: test_olt_s_v1f64:182; CHECK: # %bb.0:183; CHECK-NEXT: vcomisd %xmm0, %xmm1184; CHECK-NEXT: seta %al185; CHECK-NEXT: retq186 %cond = tail call <1 x i1> @llvm.experimental.constrained.fcmps.v1f64(<1 x double> %a, <1 x double> %b, metadata !"olt", metadata !"fpexcept.strict")187 ret <1 x i1> %cond188}189 190define <1 x i1> @test_ole_s_v1f64(<1 x double> %a, <1 x double> %b) {191; CHECK-LABEL: test_ole_s_v1f64:192; CHECK: # %bb.0:193; CHECK-NEXT: vcomisd %xmm0, %xmm1194; CHECK-NEXT: setae %al195; CHECK-NEXT: retq196 %cond = tail call <1 x i1> @llvm.experimental.constrained.fcmps.v1f64(<1 x double> %a, <1 x double> %b, metadata !"ole", metadata !"fpexcept.strict")197 ret <1 x i1> %cond198}199 200define <1 x i1> @test_one_s_v1f64(<1 x double> %a, <1 x double> %b) {201; CHECK-LABEL: test_one_s_v1f64:202; CHECK: # %bb.0:203; CHECK-NEXT: vcomisd %xmm1, %xmm0204; CHECK-NEXT: setne %al205; CHECK-NEXT: retq206 %cond = tail call <1 x i1> @llvm.experimental.constrained.fcmps.v1f64(<1 x double> %a, <1 x double> %b, metadata !"one", metadata !"fpexcept.strict")207 ret <1 x i1> %cond208}209 210define <1 x i1> @test_ord_s_v1f64(<1 x double> %a, <1 x double> %b) {211; CHECK-LABEL: test_ord_s_v1f64:212; CHECK: # %bb.0:213; CHECK-NEXT: vcomisd %xmm1, %xmm0214; CHECK-NEXT: setnp %al215; CHECK-NEXT: retq216 %cond = tail call <1 x i1> @llvm.experimental.constrained.fcmps.v1f64(<1 x double> %a, <1 x double> %b, metadata !"ord", metadata !"fpexcept.strict")217 ret <1 x i1> %cond218}219 220define <1 x i1> @test_ueq_s_v1f64(<1 x double> %a, <1 x double> %b) {221; CHECK-LABEL: test_ueq_s_v1f64:222; CHECK: # %bb.0:223; CHECK-NEXT: vcomisd %xmm1, %xmm0224; CHECK-NEXT: setnp %al225; CHECK-NEXT: retq226 %cond = tail call <1 x i1> @llvm.experimental.constrained.fcmps.v1f64(<1 x double> %a, <1 x double> %b, metadata !"ord", metadata !"fpexcept.strict")227 ret <1 x i1> %cond228}229 230define <1 x i1> @test_ugt_s_v1f64(<1 x double> %a, <1 x double> %b) {231; CHECK-LABEL: test_ugt_s_v1f64:232; CHECK: # %bb.0:233; CHECK-NEXT: vcomisd %xmm0, %xmm1234; CHECK-NEXT: setb %al235; CHECK-NEXT: retq236 %cond = tail call <1 x i1> @llvm.experimental.constrained.fcmps.v1f64(<1 x double> %a, <1 x double> %b, metadata !"ugt", metadata !"fpexcept.strict")237 ret <1 x i1> %cond238}239 240define <1 x i1> @test_uge_s_v1f64(<1 x double> %a, <1 x double> %b) {241; CHECK-LABEL: test_uge_s_v1f64:242; CHECK: # %bb.0:243; CHECK-NEXT: vcomisd %xmm0, %xmm1244; CHECK-NEXT: setbe %al245; CHECK-NEXT: retq246 %cond = tail call <1 x i1> @llvm.experimental.constrained.fcmps.v1f64(<1 x double> %a, <1 x double> %b, metadata !"uge", metadata !"fpexcept.strict")247 ret <1 x i1> %cond248}249 250define <1 x i1> @test_ult_s_v1f64(<1 x double> %a, <1 x double> %b) {251; CHECK-LABEL: test_ult_s_v1f64:252; CHECK: # %bb.0:253; CHECK-NEXT: vcomisd %xmm1, %xmm0254; CHECK-NEXT: setb %al255; CHECK-NEXT: retq256 %cond = tail call <1 x i1> @llvm.experimental.constrained.fcmps.v1f64(<1 x double> %a, <1 x double> %b, metadata !"ult", metadata !"fpexcept.strict")257 ret <1 x i1> %cond258}259 260define <1 x i1> @test_ule_s_v1f64(<1 x double> %a, <1 x double> %b) {261; CHECK-LABEL: test_ule_s_v1f64:262; CHECK: # %bb.0:263; CHECK-NEXT: vcomisd %xmm1, %xmm0264; CHECK-NEXT: setbe %al265; CHECK-NEXT: retq266 %cond = tail call <1 x i1> @llvm.experimental.constrained.fcmps.v1f64(<1 x double> %a, <1 x double> %b, metadata !"ule", metadata !"fpexcept.strict")267 ret <1 x i1> %cond268}269 270define <1 x i1> @test_une_s_v1f64(<1 x double> %a, <1 x double> %b) {271; CHECK-LABEL: test_une_s_v1f64:272; CHECK: # %bb.0:273; CHECK-NEXT: vcomisd %xmm1, %xmm0274; CHECK-NEXT: setp %cl275; CHECK-NEXT: setne %al276; CHECK-NEXT: orb %cl, %al277; CHECK-NEXT: retq278 %cond = tail call <1 x i1> @llvm.experimental.constrained.fcmps.v1f64(<1 x double> %a, <1 x double> %b, metadata !"une", metadata !"fpexcept.strict")279 ret <1 x i1> %cond280}281 282define <1 x i1> @test_uno_s_v1f64(<1 x double> %a, <1 x double> %b) {283; CHECK-LABEL: test_uno_s_v1f64:284; CHECK: # %bb.0:285; CHECK-NEXT: vcomisd %xmm1, %xmm0286; CHECK-NEXT: setp %al287; CHECK-NEXT: retq288 %cond = tail call <1 x i1> @llvm.experimental.constrained.fcmps.v1f64(<1 x double> %a, <1 x double> %b, metadata !"uno", metadata !"fpexcept.strict")289 ret <1 x i1> %cond290}291 292declare <1 x i1> @llvm.experimental.constrained.fcmp.v1f64(<1 x double>, <1 x double>, metadata, metadata)293declare <1 x i1> @llvm.experimental.constrained.fcmps.v1f64(<1 x double>, <1 x double>, metadata, metadata)294