brintos

brintos / llvm-project-archived public Read only

0
0
Text · 14.8 KiB · c358085 Raw
573 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -mtriple=x86_64-unknown-unknown                        | FileCheck %s --check-prefix=ANY3; RUN: llc < %s -mtriple=x86_64-unknown-unknown | FileCheck %s --check-prefix=ANY4 5; This is duplicated from tests for InstSimplify. If you're6; adding something here, you should probably add it there too.7 8define float @fadd_undef_op0(float %x) {9; ANY-LABEL: fadd_undef_op0:10; ANY:       # %bb.0:11; ANY-NEXT:    movss {{.*#+}} xmm0 = [NaN,0.0E+0,0.0E+0,0.0E+0]12; ANY-NEXT:    retq13  %r = fadd float undef, %x14  ret float %r15}16 17define float @fadd_undef_op1(float %x) {18; ANY-LABEL: fadd_undef_op1:19; ANY:       # %bb.0:20; ANY-NEXT:    movss {{.*#+}} xmm0 = [NaN,0.0E+0,0.0E+0,0.0E+0]21; ANY-NEXT:    retq22  %r = fadd float %x, undef23  ret float %r24}25 26define float @fsub_undef_op0(float %x) {27; ANY-LABEL: fsub_undef_op0:28; ANY:       # %bb.0:29; ANY-NEXT:    movss {{.*#+}} xmm0 = [NaN,0.0E+0,0.0E+0,0.0E+0]30; ANY-NEXT:    retq31  %r = fsub float undef, %x32  ret float %r33}34 35define float @fsub_undef_op1(float %x) {36; ANY-LABEL: fsub_undef_op1:37; ANY:       # %bb.0:38; ANY-NEXT:    movss {{.*#+}} xmm0 = [NaN,0.0E+0,0.0E+0,0.0E+0]39; ANY-NEXT:    retq40  %r = fsub float %x, undef41  ret float %r42}43 44define float @fmul_undef_op0(float %x) {45; ANY-LABEL: fmul_undef_op0:46; ANY:       # %bb.0:47; ANY-NEXT:    movss {{.*#+}} xmm0 = [NaN,0.0E+0,0.0E+0,0.0E+0]48; ANY-NEXT:    retq49  %r = fmul float undef, %x50  ret float %r51}52 53define float @fmul_undef_op1(float %x) {54; ANY-LABEL: fmul_undef_op1:55; ANY:       # %bb.0:56; ANY-NEXT:    movss {{.*#+}} xmm0 = [NaN,0.0E+0,0.0E+0,0.0E+0]57; ANY-NEXT:    retq58  %r = fmul float %x, undef59  ret float %r60}61 62define float @fdiv_undef_op0(float %x) {63; ANY-LABEL: fdiv_undef_op0:64; ANY:       # %bb.0:65; ANY-NEXT:    movss {{.*#+}} xmm0 = [NaN,0.0E+0,0.0E+0,0.0E+0]66; ANY-NEXT:    retq67  %r = fdiv float undef, %x68  ret float %r69}70 71define float @fdiv_undef_op1(float %x) {72; ANY-LABEL: fdiv_undef_op1:73; ANY:       # %bb.0:74; ANY-NEXT:    movss {{.*#+}} xmm0 = [NaN,0.0E+0,0.0E+0,0.0E+0]75; ANY-NEXT:    retq76  %r = fdiv float %x, undef77  ret float %r78}79 80define float @frem_undef_op0(float %x) {81; ANY-LABEL: frem_undef_op0:82; ANY:       # %bb.0:83; ANY-NEXT:    movss {{.*#+}} xmm0 = [NaN,0.0E+0,0.0E+0,0.0E+0]84; ANY-NEXT:    retq85  %r = frem float undef, %x86  ret float %r87}88 89define float @frem_undef_op1(float %x) {90; ANY-LABEL: frem_undef_op1:91; ANY:       # %bb.0:92; ANY-NEXT:    movss {{.*#+}} xmm0 = [NaN,0.0E+0,0.0E+0,0.0E+0]93; ANY-NEXT:    retq94  %r = frem float %x, undef95  ret float %r96}97 98; Repeat all tests with fast-math-flags. Alternate 'nnan' and 'fast' for more coverage.99 100define float @fadd_undef_op0_nnan(float %x) {101; ANY-LABEL: fadd_undef_op0_nnan:102; ANY:       # %bb.0:103; ANY-NEXT:    retq104  %r = fadd nnan float undef, %x105  ret float %r106}107 108define float @fadd_undef_op1_fast(float %x) {109; ANY-LABEL: fadd_undef_op1_fast:110; ANY:       # %bb.0:111; ANY-NEXT:    retq112  %r = fadd fast float %x, undef113  ret float %r114}115 116define float @fsub_undef_op0_fast(float %x) {117; ANY-LABEL: fsub_undef_op0_fast:118; ANY:       # %bb.0:119; ANY-NEXT:    retq120  %r = fsub fast float undef, %x121  ret float %r122}123 124define float @fsub_undef_op1_nnan(float %x) {125; ANY-LABEL: fsub_undef_op1_nnan:126; ANY:       # %bb.0:127; ANY-NEXT:    retq128  %r = fsub nnan float %x, undef129  ret float %r130}131 132define float @fmul_undef_op0_nnan(float %x) {133; ANY-LABEL: fmul_undef_op0_nnan:134; ANY:       # %bb.0:135; ANY-NEXT:    retq136  %r = fmul nnan float undef, %x137  ret float %r138}139 140define float @fmul_undef_op1_fast(float %x) {141; ANY-LABEL: fmul_undef_op1_fast:142; ANY:       # %bb.0:143; ANY-NEXT:    retq144  %r = fmul fast float %x, undef145  ret float %r146}147 148define float @fdiv_undef_op0_fast(float %x) {149; ANY-LABEL: fdiv_undef_op0_fast:150; ANY:       # %bb.0:151; ANY-NEXT:    retq152  %r = fdiv fast float undef, %x153  ret float %r154}155 156define float @fdiv_undef_op1_nnan(float %x) {157; ANY-LABEL: fdiv_undef_op1_nnan:158; ANY:       # %bb.0:159; ANY-NEXT:    retq160  %r = fdiv nnan float %x, undef161  ret float %r162}163 164define float @frem_undef_op0_nnan(float %x) {165; ANY-LABEL: frem_undef_op0_nnan:166; ANY:       # %bb.0:167; ANY-NEXT:    retq168  %r = frem nnan float undef, %x169  ret float %r170}171 172define float @frem_undef_op1_fast(float %x) {173; ANY-LABEL: frem_undef_op1_fast:174; ANY:       # %bb.0:175; ANY-NEXT:    retq176  %r = frem fast float %x, undef177  ret float %r178}179 180; Constant folding - undef undef.181 182define double @fadd_undef_undef(double %x) {183; ANY-LABEL: fadd_undef_undef:184; ANY:       # %bb.0:185; ANY-NEXT:    retq186  %r = fadd double undef, undef187  ret double %r188}189 190define double @fsub_undef_undef(double %x) {191; ANY-LABEL: fsub_undef_undef:192; ANY:       # %bb.0:193; ANY-NEXT:    retq194  %r = fsub double undef, undef195  ret double %r196}197 198define double @fmul_undef_undef(double %x) {199; ANY-LABEL: fmul_undef_undef:200; ANY:       # %bb.0:201; ANY-NEXT:    retq202  %r = fmul double undef, undef203  ret double %r204}205 206define double @fdiv_undef_undef(double %x) {207; ANY-LABEL: fdiv_undef_undef:208; ANY:       # %bb.0:209; ANY-NEXT:    retq210  %r = fdiv double undef, undef211  ret double %r212}213 214define double @frem_undef_undef(double %x) {215; ANY-LABEL: frem_undef_undef:216; ANY:       # %bb.0:217; ANY-NEXT:    retq218  %r = frem double undef, undef219  ret double %r220}221 222; Constant folding.223 224define float @fadd_undef_op0_nnan_constant(float %x) {225; ANY-LABEL: fadd_undef_op0_nnan_constant:226; ANY:       # %bb.0:227; ANY-NEXT:    retq228  %r = fadd nnan float undef, 1.0229  ret float %r230}231 232define float @fadd_undef_op1_constant(float %x) {233; ANY-LABEL: fadd_undef_op1_constant:234; ANY:       # %bb.0:235; ANY-NEXT:    movss {{.*#+}} xmm0 = [NaN,0.0E+0,0.0E+0,0.0E+0]236; ANY-NEXT:    retq237  %r = fadd float 2.0, undef238  ret float %r239}240 241define float @fsub_undef_op0_fast_constant(float %x) {242; ANY-LABEL: fsub_undef_op0_fast_constant:243; ANY:       # %bb.0:244; ANY-NEXT:    retq245  %r = fsub fast float undef, 3.0246  ret float %r247}248 249define float @fsub_undef_op1_constant(float %x) {250; ANY-LABEL: fsub_undef_op1_constant:251; ANY:       # %bb.0:252; ANY-NEXT:    movss {{.*#+}} xmm0 = [NaN,0.0E+0,0.0E+0,0.0E+0]253; ANY-NEXT:    retq254  %r = fsub float 4.0, undef255  ret float %r256}257 258define float @fmul_undef_op0_nnan_constant(float %x) {259; ANY-LABEL: fmul_undef_op0_nnan_constant:260; ANY:       # %bb.0:261; ANY-NEXT:    retq262  %r = fmul nnan float undef, 5.0263  ret float %r264}265 266define float @fmul_undef_op1_constant(float %x) {267; ANY-LABEL: fmul_undef_op1_constant:268; ANY:       # %bb.0:269; ANY-NEXT:    movss {{.*#+}} xmm0 = [NaN,0.0E+0,0.0E+0,0.0E+0]270; ANY-NEXT:    retq271  %r = fmul float 6.0, undef272  ret float %r273}274 275define float @fdiv_undef_op0_fast_constant(float %x) {276; ANY-LABEL: fdiv_undef_op0_fast_constant:277; ANY:       # %bb.0:278; ANY-NEXT:    retq279  %r = fdiv fast float undef, 7.0280  ret float %r281}282 283define float @fdiv_undef_op1_constant(float %x) {284; ANY-LABEL: fdiv_undef_op1_constant:285; ANY:       # %bb.0:286; ANY-NEXT:    movss {{.*#+}} xmm0 = [NaN,0.0E+0,0.0E+0,0.0E+0]287; ANY-NEXT:    retq288  %r = fdiv float 8.0, undef289  ret float %r290}291 292define float @frem_undef_op0_nnan_constant(float %x) {293; ANY-LABEL: frem_undef_op0_nnan_constant:294; ANY:       # %bb.0:295; ANY-NEXT:    retq296  %r = frem nnan float undef, 9.0297  ret float %r298}299 300define float @frem_undef_op1_constant(float %x) {301; ANY-LABEL: frem_undef_op1_constant:302; ANY:       # %bb.0:303; ANY-NEXT:    movss {{.*#+}} xmm0 = [NaN,0.0E+0,0.0E+0,0.0E+0]304; ANY-NEXT:    retq305  %r = frem float 10.0, undef306  ret float %r307}308 309; Constant folding - special constants: NaN.310 311define double @fadd_undef_op0_constant_nan(double %x) {312; ANY-LABEL: fadd_undef_op0_constant_nan:313; ANY:       # %bb.0:314; ANY-NEXT:    movsd {{.*#+}} xmm0 = [NaN,0.0E+0]315; ANY-NEXT:    retq316  %r = fadd double undef, 0x7FF8000000000000317  ret double %r318}319 320define double @fadd_undef_op1_fast_constant_nan(double %x) {321; ANY-LABEL: fadd_undef_op1_fast_constant_nan:322; ANY:       # %bb.0:323; ANY-NEXT:    retq324  %r = fadd fast double 0xFFF0000000000001, undef325  ret double %r326}327 328define double @fsub_undef_op0_constant_nan(double %x) {329; ANY-LABEL: fsub_undef_op0_constant_nan:330; ANY:       # %bb.0:331; ANY-NEXT:    movsd {{.*#+}} xmm0 = [NaN,0.0E+0]332; ANY-NEXT:    retq333  %r = fsub double undef, 0xFFF8000000000010334  ret double %r335}336 337define double @fsub_undef_op1_nnan_constant_nan(double %x) {338; ANY-LABEL: fsub_undef_op1_nnan_constant_nan:339; ANY:       # %bb.0:340; ANY-NEXT:    retq341  %r = fsub nnan double 0x7FF0000000000011, undef342  ret double %r343}344 345define double @fmul_undef_op0_constant_nan(double %x) {346; ANY-LABEL: fmul_undef_op0_constant_nan:347; ANY:       # %bb.0:348; ANY-NEXT:    movsd {{.*#+}} xmm0 = [NaN,0.0E+0]349; ANY-NEXT:    retq350  %r = fmul double undef, 0x7FF8000000000100351  ret double %r352}353 354define double @fmul_undef_op1_fast_constant_nan(double %x) {355; ANY-LABEL: fmul_undef_op1_fast_constant_nan:356; ANY:       # %bb.0:357; ANY-NEXT:    retq358  %r = fmul fast double 0xFFF0000000000101, undef359  ret double %r360}361 362define double @fdiv_undef_op0_constant_nan(double %x) {363; ANY-LABEL: fdiv_undef_op0_constant_nan:364; ANY:       # %bb.0:365; ANY-NEXT:    movsd {{.*#+}} xmm0 = [NaN,0.0E+0]366; ANY-NEXT:    retq367  %r = fdiv double undef, 0xFFF8000000000110368  ret double %r369}370 371define double @fdiv_undef_op1_nnan_constant_nan(double %x) {372; ANY-LABEL: fdiv_undef_op1_nnan_constant_nan:373; ANY:       # %bb.0:374; ANY-NEXT:    retq375  %r = fdiv nnan double 0x7FF0000000000111, undef376  ret double %r377}378 379define double @frem_undef_op0_constant_nan(double %x) {380; ANY-LABEL: frem_undef_op0_constant_nan:381; ANY:       # %bb.0:382; ANY-NEXT:    movsd {{.*#+}} xmm0 = [NaN,0.0E+0]383; ANY-NEXT:    retq384  %r = frem double undef, 0x7FF8000000001000385  ret double %r386}387 388define double @frem_undef_op1_fast_constant_nan(double %x) {389; ANY-LABEL: frem_undef_op1_fast_constant_nan:390; ANY:       # %bb.0:391; ANY-NEXT:    retq392  %r = frem fast double 0xFFF0000000001001, undef393  ret double %r394}395 396; Constant folding - special constants: Inf.397 398define double @fadd_undef_op0_constant_inf(double %x) {399; ANY-LABEL: fadd_undef_op0_constant_inf:400; ANY:       # %bb.0:401; ANY-NEXT:    movsd {{.*#+}} xmm0 = [NaN,0.0E+0]402; ANY-NEXT:    retq403  %r = fadd double undef, 0x7FF0000000000000404  ret double %r405}406 407define double @fadd_undef_op1_fast_constant_inf(double %x) {408; ANY-LABEL: fadd_undef_op1_fast_constant_inf:409; ANY:       # %bb.0:410; ANY-NEXT:    retq411  %r = fadd fast double 0xFFF0000000000000, undef412  ret double %r413}414 415define double @fsub_undef_op0_constant_inf(double %x) {416; ANY-LABEL: fsub_undef_op0_constant_inf:417; ANY:       # %bb.0:418; ANY-NEXT:    movsd {{.*#+}} xmm0 = [NaN,0.0E+0]419; ANY-NEXT:    retq420  %r = fsub double undef, 0xFFF0000000000000421  ret double %r422}423 424define double @fsub_undef_op1_ninf_constant_inf(double %x) {425; ANY-LABEL: fsub_undef_op1_ninf_constant_inf:426; ANY:       # %bb.0:427; ANY-NEXT:    retq428  %r = fsub ninf double 0x7FF0000000000000, undef429  ret double %r430}431 432define double @fmul_undef_op0_constant_inf(double %x) {433; ANY-LABEL: fmul_undef_op0_constant_inf:434; ANY:       # %bb.0:435; ANY-NEXT:    movsd {{.*#+}} xmm0 = [NaN,0.0E+0]436; ANY-NEXT:    retq437  %r = fmul double undef, 0x7FF0000000000000438  ret double %r439}440 441define double @fmul_undef_op1_fast_constant_inf(double %x) {442; ANY-LABEL: fmul_undef_op1_fast_constant_inf:443; ANY:       # %bb.0:444; ANY-NEXT:    retq445  %r = fmul fast double 0xFFF0000000000000, undef446  ret double %r447}448 449define double @fdiv_undef_op0_constant_inf(double %x) {450; ANY-LABEL: fdiv_undef_op0_constant_inf:451; ANY:       # %bb.0:452; ANY-NEXT:    movsd {{.*#+}} xmm0 = [NaN,0.0E+0]453; ANY-NEXT:    retq454  %r = fdiv double undef, 0xFFF0000000000000455  ret double %r456}457 458define double @fdiv_undef_op1_ninf_constant_inf(double %x) {459; ANY-LABEL: fdiv_undef_op1_ninf_constant_inf:460; ANY:       # %bb.0:461; ANY-NEXT:    retq462  %r = fdiv ninf double 0x7FF0000000000000, undef463  ret double %r464}465 466define double @frem_undef_op0_constant_inf(double %x) {467; ANY-LABEL: frem_undef_op0_constant_inf:468; ANY:       # %bb.0:469; ANY-NEXT:    movsd {{.*#+}} xmm0 = [NaN,0.0E+0]470; ANY-NEXT:    retq471  %r = frem double undef, 0x7FF0000000000000472  ret double %r473}474 475define double @frem_undef_op1_fast_constant_inf(double %x) {476; ANY-LABEL: frem_undef_op1_fast_constant_inf:477; ANY:       # %bb.0:478; ANY-NEXT:    retq479  %r = frem fast double 0xFFF0000000000000, undef480  ret double %r481}482 483define <2 x double> @fadd_undef_op1_constant_vec(<2 x double> %x) {484; ANY-LABEL: fadd_undef_op1_constant_vec:485; ANY:       # %bb.0:486; ANY-NEXT:    movaps {{.*#+}} xmm0 = [NaN,NaN]487; ANY-NEXT:    retq488  %r = fadd <2 x double> <double 42.0, double undef>, undef489  ret <2 x double> %r490}491 492define <2 x double> @fadd_undef_op0_constant_vec(<2 x double> %x) {493; ANY-LABEL: fadd_undef_op0_constant_vec:494; ANY:       # %bb.0:495; ANY-NEXT:    movaps {{.*#+}} xmm0 = [NaN,NaN]496; ANY-NEXT:    retq497  %r = fadd <2 x double> undef, <double undef, double 42.0>498  ret <2 x double> %r499}500 501define <2 x double> @fsub_undef_op1_constant_vec(<2 x double> %x) {502; ANY-LABEL: fsub_undef_op1_constant_vec:503; ANY:       # %bb.0:504; ANY-NEXT:    movaps {{.*#+}} xmm0 = [NaN,NaN]505; ANY-NEXT:    retq506  %r = fsub <2 x double> <double undef, double 42.0>, undef507  ret <2 x double> %r508}509 510define <2 x double> @fsub_undef_op0_constant_vec(<2 x double> %x) {511; ANY-LABEL: fsub_undef_op0_constant_vec:512; ANY:       # %bb.0:513; ANY-NEXT:    movaps {{.*#+}} xmm0 = [NaN,NaN]514; ANY-NEXT:    retq515  %r = fsub <2 x double> undef, <double 42.0, double undef>516  ret <2 x double> %r517}518 519define <2 x double> @fmul_undef_op1_constant_vec(<2 x double> %x) {520; ANY-LABEL: fmul_undef_op1_constant_vec:521; ANY:       # %bb.0:522; ANY-NEXT:    movaps {{.*#+}} xmm0 = [NaN,NaN]523; ANY-NEXT:    retq524  %r = fmul <2 x double> <double 42.0, double undef>, undef525  ret <2 x double> %r526}527 528define <2 x double> @fmul_undef_op0_constant_vec(<2 x double> %x) {529; ANY-LABEL: fmul_undef_op0_constant_vec:530; ANY:       # %bb.0:531; ANY-NEXT:    movaps {{.*#+}} xmm0 = [NaN,NaN]532; ANY-NEXT:    retq533  %r = fmul <2 x double> undef, <double undef, double 42.0>534  ret <2 x double> %r535}536 537define <2 x double> @fdiv_undef_op1_constant_vec(<2 x double> %x) {538; ANY-LABEL: fdiv_undef_op1_constant_vec:539; ANY:       # %bb.0:540; ANY-NEXT:    movaps {{.*#+}} xmm0 = [NaN,NaN]541; ANY-NEXT:    retq542  %r = fdiv <2 x double> <double 42.0, double undef>, undef543  ret <2 x double> %r544}545 546define <2 x double> @fdiv_undef_op0_constant_vec(<2 x double> %x) {547; ANY-LABEL: fdiv_undef_op0_constant_vec:548; ANY:       # %bb.0:549; ANY-NEXT:    movaps {{.*#+}} xmm0 = [NaN,NaN]550; ANY-NEXT:    retq551  %r = fdiv <2 x double> undef, <double undef, double 42.0>552  ret <2 x double> %r553}554 555define <2 x double> @frem_undef_op1_constant_vec(<2 x double> %x) {556; ANY-LABEL: frem_undef_op1_constant_vec:557; ANY:       # %bb.0:558; ANY-NEXT:    movaps {{.*#+}} xmm0 = [NaN,NaN]559; ANY-NEXT:    retq560  %r = frem <2 x double> <double undef, double 42.0>, undef561  ret <2 x double> %r562}563 564define <2 x double> @frem_undef_op0_constant_vec(<2 x double> %x) {565; ANY-LABEL: frem_undef_op0_constant_vec:566; ANY:       # %bb.0:567; ANY-NEXT:    movaps {{.*#+}} xmm0 = [NaN,NaN]568; ANY-NEXT:    retq569  %r = frem <2 x double> undef, <double 42.0, double undef>570  ret <2 x double> %r571}572 573