brintos

brintos / llvm-project-archived public Read only

0
0
Text · 11.7 KiB · eb3da9e Raw
368 lines · plain
1; RUN: llc -verify-machineinstrs -O0 -mtriple=spirv32-unknown-unknown %s -o - | FileCheck %s2 3; CHECK-DAG: OpName [[UEQ:%.*]] "test_ueq"4; CHECK-DAG: OpName [[OEQ:%.*]] "test_oeq"5; CHECK-DAG: OpName [[UNE:%.*]] "test_une"6; CHECK-DAG: OpName [[ONE:%.*]] "test_one"7; CHECK-DAG: OpName [[ULT:%.*]] "test_ult"8; CHECK-DAG: OpName [[OLT:%.*]] "test_olt"9; CHECK-DAG: OpName [[ULE:%.*]] "test_ule"10; CHECK-DAG: OpName [[OLE:%.*]] "test_ole"11; CHECK-DAG: OpName [[UGT:%.*]] "test_ugt"12; CHECK-DAG: OpName [[OGT:%.*]] "test_ogt"13; CHECK-DAG: OpName [[UGE:%.*]] "test_uge"14; CHECK-DAG: OpName [[OGE:%.*]] "test_oge"15; CHECK-DAG: OpName [[UNO:%.*]] "test_uno"16; CHECK-DAG: OpName [[ORD:%.*]] "test_ord"17 18; CHECK-DAG: OpName [[v3UEQ:%.*]] "test_v3_ueq"19; CHECK-DAG: OpName [[v3OEQ:%.*]] "test_v3_oeq"20; CHECK-DAG: OpName [[v3UNE:%.*]] "test_v3_une"21; CHECK-DAG: OpName [[v3ONE:%.*]] "test_v3_one"22; CHECK-DAG: OpName [[v3ULT:%.*]] "test_v3_ult"23; CHECK-DAG: OpName [[v3OLT:%.*]] "test_v3_olt"24; CHECK-DAG: OpName [[v3ULE:%.*]] "test_v3_ule"25; CHECK-DAG: OpName [[v3OLE:%.*]] "test_v3_ole"26; CHECK-DAG: OpName [[v3UGT:%.*]] "test_v3_ugt"27; CHECK-DAG: OpName [[v3OGT:%.*]] "test_v3_ogt"28; CHECK-DAG: OpName [[v3UGE:%.*]] "test_v3_uge"29; CHECK-DAG: OpName [[v3OGE:%.*]] "test_v3_oge"30; CHECK-DAG: OpName [[v3UNO:%.*]] "test_v3_uno"31; CHECK-DAG: OpName [[v3ORD:%.*]] "test_v3_ord"32 33; CHECK:      [[UEQ]] = OpFunction34; CHECK-NEXT: [[A:%.*]] = OpFunctionParameter35; CHECK-NEXT: [[B:%.*]] = OpFunctionParameter36; CHECK-NEXT: OpLabel37; CHECK-NEXT: [[R:%.*]] = OpFUnordEqual {{%.+}} [[A]] [[B]]38; CHECK-NEXT: OpReturnValue [[R]]39; CHECK-NEXT: OpFunctionEnd40define i1 @test_ueq(float %a, float %b) {41  %r = fcmp ueq float %a, %b42  ret i1 %r43}44 45; CHECK:      [[OEQ]] = OpFunction46; CHECK-NEXT: [[A:%.*]] = OpFunctionParameter47; CHECK-NEXT: [[B:%.*]] = OpFunctionParameter48; CHECK-NEXT: OpLabel49; CHECK-NEXT: [[R:%.*]] = OpFOrdEqual {{%.+}} [[A]] [[B]]50; CHECK-NEXT: OpReturnValue [[R]]51; CHECK-NEXT: OpFunctionEnd52define i1 @test_oeq(float %a, float %b) {53  %r = fcmp oeq float %a, %b54  ret i1 %r55}56 57; CHECK:      [[UNE]] = OpFunction58; CHECK-NEXT: [[A:%.*]] = OpFunctionParameter59; CHECK-NEXT: [[B:%.*]] = OpFunctionParameter60; CHECK-NEXT: OpLabel61; CHECK-NEXT: [[R:%.*]] = OpFUnordNotEqual {{%.+}} [[A]] [[B]]62; CHECK-NEXT: OpReturnValue [[R]]63; CHECK-NEXT: OpFunctionEnd64define i1 @test_une(float %a, float %b) {65  %r = fcmp une float %a, %b66  ret i1 %r67}68 69; CHECK:      [[ONE]] = OpFunction70; CHECK-NEXT: [[A:%.*]] = OpFunctionParameter71; CHECK-NEXT: [[B:%.*]] = OpFunctionParameter72; CHECK-NEXT: OpLabel73; CHECK-NEXT: [[R:%.*]] = OpFOrdNotEqual {{%.+}} [[A]] [[B]]74; CHECK-NEXT: OpReturnValue [[R]]75; CHECK-NEXT: OpFunctionEnd76define i1 @test_one(float %a, float %b) {77  %r = fcmp one float %a, %b78  ret i1 %r79}80 81; CHECK:      [[ULT]] = OpFunction82; CHECK-NEXT: [[A:%.*]] = OpFunctionParameter83; CHECK-NEXT: [[B:%.*]] = OpFunctionParameter84; CHECK-NEXT: OpLabel85; CHECK-NEXT: [[R:%.*]] = OpFUnordLessThan {{%.+}} [[A]] [[B]]86; CHECK-NEXT: OpReturnValue [[R]]87; CHECK-NEXT: OpFunctionEnd88define i1 @test_ult(float %a, float %b) {89  %r = fcmp ult float %a, %b90  ret i1 %r91}92 93; CHECK:      [[OLT]] = OpFunction94; CHECK-NEXT: [[A:%.*]] = OpFunctionParameter95; CHECK-NEXT: [[B:%.*]] = OpFunctionParameter96; CHECK-NEXT: OpLabel97; CHECK-NEXT: [[R:%.*]] = OpFOrdLessThan {{%.+}} [[A]] [[B]]98; CHECK-NEXT: OpReturnValue [[R]]99; CHECK-NEXT: OpFunctionEnd100define i1 @test_olt(float %a, float %b) {101  %r = fcmp olt float %a, %b102  ret i1 %r103}104 105; CHECK:      [[ULE]] = OpFunction106; CHECK-NEXT: [[A:%.*]] = OpFunctionParameter107; CHECK-NEXT: [[B:%.*]] = OpFunctionParameter108; CHECK-NEXT: OpLabel109; CHECK-NEXT: [[R:%.*]] = OpFUnordLessThanEqual {{%.+}} [[A]] [[B]]110; CHECK-NEXT: OpReturnValue [[R]]111; CHECK-NEXT: OpFunctionEnd112define i1 @test_ule(float %a, float %b) {113  %r = fcmp ule float %a, %b114  ret i1 %r115}116 117; CHECK:      [[OLE]] = OpFunction118; CHECK-NEXT: [[A:%.*]] = OpFunctionParameter119; CHECK-NEXT: [[B:%.*]] = OpFunctionParameter120; CHECK-NEXT: OpLabel121; CHECK-NEXT: [[R:%.*]] = OpFOrdLessThanEqual {{%.+}} [[A]] [[B]]122; CHECK-NEXT: OpReturnValue [[R]]123; CHECK-NEXT: OpFunctionEnd124define i1 @test_ole(float %a, float %b) {125  %r = fcmp ole float %a, %b126  ret i1 %r127}128 129; CHECK:      [[UGT]] = OpFunction130; CHECK-NEXT: [[A:%.*]] = OpFunctionParameter131; CHECK-NEXT: [[B:%.*]] = OpFunctionParameter132; CHECK-NEXT: OpLabel133; CHECK-NEXT: [[R:%.*]] = OpFUnordGreaterThan {{%.+}} [[A]] [[B]]134; CHECK-NEXT: OpReturnValue [[R]]135; CHECK-NEXT: OpFunctionEnd136define i1 @test_ugt(float %a, float %b) {137  %r = fcmp ugt float %a, %b138  ret i1 %r139}140 141; CHECK:      [[OGT]] = OpFunction142; CHECK-NEXT: [[A:%.*]] = OpFunctionParameter143; CHECK-NEXT: [[B:%.*]] = OpFunctionParameter144; CHECK-NEXT: OpLabel145; CHECK-NEXT: [[R:%.*]] = OpFOrdGreaterThan {{%.+}} [[A]] [[B]]146; CHECK-NEXT: OpReturnValue [[R]]147; CHECK-NEXT: OpFunctionEnd148define i1 @test_ogt(float %a, float %b) {149  %r = fcmp ogt float %a, %b150  ret i1 %r151}152 153; CHECK:      [[UGE]] = OpFunction154; CHECK-NEXT: [[A:%.*]] = OpFunctionParameter155; CHECK-NEXT: [[B:%.*]] = OpFunctionParameter156; CHECK-NEXT: OpLabel157; CHECK-NEXT: [[R:%.*]] = OpFUnordGreaterThanEqual {{%.+}} [[A]] [[B]]158; CHECK-NEXT: OpReturnValue [[R]]159; CHECK-NEXT: OpFunctionEnd160define i1 @test_uge(float %a, float %b) {161  %r = fcmp uge float %a, %b162  ret i1 %r163}164 165; CHECK:      [[OGE]] = OpFunction166; CHECK-NEXT: [[A:%.*]] = OpFunctionParameter167; CHECK-NEXT: [[B:%.*]] = OpFunctionParameter168; CHECK-NEXT: OpLabel169; CHECK-NEXT: [[R:%.*]] = OpFOrdGreaterThanEqual {{%.+}} [[A]] [[B]]170; CHECK-NEXT: OpReturnValue [[R]]171; CHECK-NEXT: OpFunctionEnd172define i1 @test_oge(float %a, float %b) {173  %r = fcmp oge float %a, %b174  ret i1 %r175}176 177; CHECK:      [[ORD]] = OpFunction178; CHECK-NEXT: [[A:%.*]] = OpFunctionParameter179; CHECK-NEXT: [[B:%.*]] = OpFunctionParameter180; CHECK-NEXT: OpLabel181; CHECK-NEXT: [[R:%.*]] = OpOrdered {{%.+}} [[A]] [[B]]182; CHECK-NEXT: OpReturnValue [[R]]183; CHECK-NEXT: OpFunctionEnd184define i1 @test_ord(float %a, float %b) {185  %r = fcmp ord float %a, %b186  ret i1 %r187}188 189; CHECK:      [[UNO]] = OpFunction190; CHECK-NEXT: [[A:%.*]] = OpFunctionParameter191; CHECK-NEXT: [[B:%.*]] = OpFunctionParameter192; CHECK-NEXT: OpLabel193; CHECK-NEXT: [[R:%.*]] = OpUnordered {{%.+}} [[A]] [[B]]194; CHECK-NEXT: OpReturnValue [[R]]195; CHECK-NEXT: OpFunctionEnd196define i1 @test_uno(float %a, float %b) {197  %r = fcmp uno float %a, %b198  ret i1 %r199}200 201; CHECK:      [[v3UEQ]] = OpFunction202; CHECK-NEXT: [[A:%.*]] = OpFunctionParameter203; CHECK-NEXT: [[B:%.*]] = OpFunctionParameter204; CHECK-NEXT: OpLabel205; CHECK-NEXT: [[R:%.*]] = OpFUnordEqual {{%.+}} [[A]] [[B]]206; CHECK-NEXT: OpReturnValue [[R]]207; CHECK-NEXT: OpFunctionEnd208define <3 x i1> @test_v3_ueq(<3 x float> %a, <3 x float> %b) {209  %r = fcmp ueq <3 x float> %a, %b210  ret <3 x i1> %r211}212 213; CHECK:      [[v3OEQ]] = OpFunction214; CHECK-NEXT: [[A:%.*]] = OpFunctionParameter215; CHECK-NEXT: [[B:%.*]] = OpFunctionParameter216; CHECK-NEXT: OpLabel217; CHECK-NEXT: [[R:%.*]] = OpFOrdEqual {{%.+}} [[A]] [[B]]218; CHECK-NEXT: OpReturnValue [[R]]219; CHECK-NEXT: OpFunctionEnd220define <3 x i1> @test_v3_oeq(<3 x float> %a, <3 x float> %b) {221  %r = fcmp oeq <3 x float> %a, %b222  ret <3 x i1> %r223}224 225; CHECK:      [[v3UNE]] = OpFunction226; CHECK-NEXT: [[A:%.*]] = OpFunctionParameter227; CHECK-NEXT: [[B:%.*]] = OpFunctionParameter228; CHECK-NEXT: OpLabel229; CHECK-NEXT: [[R:%.*]] = OpFUnordNotEqual {{%.+}} [[A]] [[B]]230; CHECK-NEXT: OpReturnValue [[R]]231; CHECK-NEXT: OpFunctionEnd232define <3 x i1> @test_v3_une(<3 x float> %a, <3 x float> %b) {233  %r = fcmp une <3 x float> %a, %b234  ret <3 x i1> %r235}236 237; CHECK:      [[v3ONE]] = OpFunction238; CHECK-NEXT: [[A:%.*]] = OpFunctionParameter239; CHECK-NEXT: [[B:%.*]] = OpFunctionParameter240; CHECK-NEXT: OpLabel241; CHECK-NEXT: [[R:%.*]] = OpFOrdNotEqual {{%.+}} [[A]] [[B]]242; CHECK-NEXT: OpReturnValue [[R]]243; CHECK-NEXT: OpFunctionEnd244define <3 x i1> @test_v3_one(<3 x float> %a, <3 x float> %b) {245  %r = fcmp one <3 x float> %a, %b246  ret <3 x i1> %r247}248 249; CHECK:      [[v3ULT]] = OpFunction250; CHECK-NEXT: [[A:%.*]] = OpFunctionParameter251; CHECK-NEXT: [[B:%.*]] = OpFunctionParameter252; CHECK-NEXT: OpLabel253; CHECK-NEXT: [[R:%.*]] = OpFUnordLessThan {{%.+}} [[A]] [[B]]254; CHECK-NEXT: OpReturnValue [[R]]255; CHECK-NEXT: OpFunctionEnd256define <3 x i1> @test_v3_ult(<3 x float> %a, <3 x float> %b) {257  %r = fcmp ult <3 x float> %a, %b258  ret <3 x i1> %r259}260 261; CHECK:      [[v3OLT]] = OpFunction262; CHECK-NEXT: [[A:%.*]] = OpFunctionParameter263; CHECK-NEXT: [[B:%.*]] = OpFunctionParameter264; CHECK-NEXT: OpLabel265; CHECK-NEXT: [[R:%.*]] = OpFOrdLessThan {{%.+}} [[A]] [[B]]266; CHECK-NEXT: OpReturnValue [[R]]267; CHECK-NEXT: OpFunctionEnd268define <3 x i1> @test_v3_olt(<3 x float> %a, <3 x float> %b) {269  %r = fcmp olt <3 x float> %a, %b270  ret <3 x i1> %r271}272 273; CHECK:      [[v3ULE]] = OpFunction274; CHECK-NEXT: [[A:%.*]] = OpFunctionParameter275; CHECK-NEXT: [[B:%.*]] = OpFunctionParameter276; CHECK-NEXT: OpLabel277; CHECK-NEXT: [[R:%.*]] = OpFUnordLessThanEqual {{%.+}} [[A]] [[B]]278; CHECK-NEXT: OpReturnValue [[R]]279; CHECK-NEXT: OpFunctionEnd280define <3 x i1> @test_v3_ule(<3 x float> %a, <3 x float> %b) {281  %r = fcmp ule <3 x float> %a, %b282  ret <3 x i1> %r283}284 285; CHECK:      [[v3OLE]] = OpFunction286; CHECK-NEXT: [[A:%.*]] = OpFunctionParameter287; CHECK-NEXT: [[B:%.*]] = OpFunctionParameter288; CHECK-NEXT: OpLabel289; CHECK-NEXT: [[R:%.*]] = OpFOrdLessThanEqual {{%.+}} [[A]] [[B]]290; CHECK-NEXT: OpReturnValue [[R]]291; CHECK-NEXT: OpFunctionEnd292define <3 x i1> @test_v3_ole(<3 x float> %a, <3 x float> %b) {293  %r = fcmp ole <3 x float> %a, %b294  ret <3 x i1> %r295}296 297; CHECK:      [[v3UGT]] = OpFunction298; CHECK-NEXT: [[A:%.*]] = OpFunctionParameter299; CHECK-NEXT: [[B:%.*]] = OpFunctionParameter300; CHECK-NEXT: OpLabel301; CHECK-NEXT: [[R:%.*]] = OpFUnordGreaterThan {{%.+}} [[A]] [[B]]302; CHECK-NEXT: OpReturnValue [[R]]303; CHECK-NEXT: OpFunctionEnd304define <3 x i1> @test_v3_ugt(<3 x float> %a, <3 x float> %b) {305  %r = fcmp ugt <3 x float> %a, %b306  ret <3 x i1> %r307}308 309; CHECK:      [[v3OGT]] = OpFunction310; CHECK-NEXT: [[A:%.*]] = OpFunctionParameter311; CHECK-NEXT: [[B:%.*]] = OpFunctionParameter312; CHECK-NEXT: OpLabel313; CHECK-NEXT: [[R:%.*]] = OpFOrdGreaterThan {{%.+}} [[A]] [[B]]314; CHECK-NEXT: OpReturnValue [[R]]315; CHECK-NEXT: OpFunctionEnd316define <3 x i1> @test_v3_ogt(<3 x float> %a, <3 x float> %b) {317  %r = fcmp ogt <3 x float> %a, %b318  ret <3 x i1> %r319}320 321; CHECK:      [[v3UGE]] = OpFunction322; CHECK-NEXT: [[A:%.*]] = OpFunctionParameter323; CHECK-NEXT: [[B:%.*]] = OpFunctionParameter324; CHECK-NEXT: OpLabel325; CHECK-NEXT: [[R:%.*]] = OpFUnordGreaterThanEqual {{%.+}} [[A]] [[B]]326; CHECK-NEXT: OpReturnValue [[R]]327; CHECK-NEXT: OpFunctionEnd328define <3 x i1> @test_v3_uge(<3 x float> %a, <3 x float> %b) {329  %r = fcmp uge <3 x float> %a, %b330  ret <3 x i1> %r331}332 333; CHECK:      [[v3OGE]] = OpFunction334; CHECK-NEXT: [[A:%.*]] = OpFunctionParameter335; CHECK-NEXT: [[B:%.*]] = OpFunctionParameter336; CHECK-NEXT: OpLabel337; CHECK-NEXT: [[R:%.*]] = OpFOrdGreaterThanEqual {{%.+}} [[A]] [[B]]338; CHECK-NEXT: OpReturnValue [[R]]339; CHECK-NEXT: OpFunctionEnd340define <3 x i1> @test_v3_oge(<3 x float> %a, <3 x float> %b) {341  %r = fcmp oge <3 x float> %a, %b342  ret <3 x i1> %r343}344 345; CHECK:      [[v3ORD]] = OpFunction346; CHECK-NEXT: [[A:%.*]] = OpFunctionParameter347; CHECK-NEXT: [[B:%.*]] = OpFunctionParameter348; CHECK-NEXT: OpLabel349; CHECK-NEXT: [[R:%.*]] = OpOrdered {{%.+}} [[A]] [[B]]350; CHECK-NEXT: OpReturnValue [[R]]351; CHECK-NEXT: OpFunctionEnd352define <3 x i1> @test_v3_ord(<3 x float> %a, <3 x float> %b) {353  %r = fcmp ord <3 x float> %a, %b354  ret <3 x i1> %r355}356 357; CHECK:      [[v3UNO]] = OpFunction358; CHECK-NEXT: [[A:%.*]] = OpFunctionParameter359; CHECK-NEXT: [[B:%.*]] = OpFunctionParameter360; CHECK-NEXT: OpLabel361; CHECK-NEXT: [[R:%.*]] = OpUnordered {{%.+}} [[A]] [[B]]362; CHECK-NEXT: OpReturnValue [[R]]363; CHECK-NEXT: OpFunctionEnd364define <3 x i1> @test_v3_uno(<3 x float> %a, <3 x float> %b) {365  %r = fcmp uno <3 x float> %a, %b366  ret <3 x i1> %r367}368