brintos

brintos / llvm-project-archived public Read only

0
0
Text · 12.4 KiB · 4f360ef Raw
230 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2; RUN: llc -global-isel -mtriple=amdgcn -stop-after=irtranslator %s -o - | FileCheck %s3 4define float @v_constained_fadd_f32_fpexcept_strict(float %x, float %y) #0 {5  ; CHECK-LABEL: name: v_constained_fadd_f32_fpexcept_strict6  ; CHECK: bb.1 (%ir-block.0):7  ; CHECK-NEXT:   liveins: $vgpr0, $vgpr18  ; CHECK-NEXT: {{  $}}9  ; CHECK-NEXT:   [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr010  ; CHECK-NEXT:   [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr111  ; CHECK-NEXT:   [[STRICT_FADD:%[0-9]+]]:_(s32) = G_STRICT_FADD [[COPY]], [[COPY1]]12  ; CHECK-NEXT:   $vgpr0 = COPY [[STRICT_FADD]](s32)13  ; CHECK-NEXT:   SI_RETURN implicit $vgpr014  %val = call float @llvm.experimental.constrained.fadd.f32(float %x, float %y, metadata !"round.tonearest", metadata !"fpexcept.strict")15  ret float %val16}17 18define float @v_constained_fadd_f32_fpexcept_strict_flags(float %x, float %y) #0 {19  ; CHECK-LABEL: name: v_constained_fadd_f32_fpexcept_strict_flags20  ; CHECK: bb.1 (%ir-block.0):21  ; CHECK-NEXT:   liveins: $vgpr0, $vgpr122  ; CHECK-NEXT: {{  $}}23  ; CHECK-NEXT:   [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr024  ; CHECK-NEXT:   [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr125  ; CHECK-NEXT:   [[STRICT_FADD:%[0-9]+]]:_(s32) = nsz G_STRICT_FADD [[COPY]], [[COPY1]]26  ; CHECK-NEXT:   $vgpr0 = COPY [[STRICT_FADD]](s32)27  ; CHECK-NEXT:   SI_RETURN implicit $vgpr028  %val = call nsz float @llvm.experimental.constrained.fadd.f32(float %x, float %y, metadata !"round.tonearest", metadata !"fpexcept.strict")29  ret float %val30}31 32define float @v_constained_fadd_f32_fpexcept_ignore(float %x, float %y) #0 {33  ; CHECK-LABEL: name: v_constained_fadd_f32_fpexcept_ignore34  ; CHECK: bb.1 (%ir-block.0):35  ; CHECK-NEXT:   liveins: $vgpr0, $vgpr136  ; CHECK-NEXT: {{  $}}37  ; CHECK-NEXT:   [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr038  ; CHECK-NEXT:   [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr139  ; CHECK-NEXT:   [[STRICT_FADD:%[0-9]+]]:_(s32) = nofpexcept G_STRICT_FADD [[COPY]], [[COPY1]]40  ; CHECK-NEXT:   $vgpr0 = COPY [[STRICT_FADD]](s32)41  ; CHECK-NEXT:   SI_RETURN implicit $vgpr042  %val = call float @llvm.experimental.constrained.fadd.f32(float %x, float %y, metadata !"round.tonearest", metadata !"fpexcept.ignore")43  ret float %val44}45 46define float @v_constained_fadd_f32_fpexcept_ignore_flags(float %x, float %y) #0 {47  ; CHECK-LABEL: name: v_constained_fadd_f32_fpexcept_ignore_flags48  ; CHECK: bb.1 (%ir-block.0):49  ; CHECK-NEXT:   liveins: $vgpr0, $vgpr150  ; CHECK-NEXT: {{  $}}51  ; CHECK-NEXT:   [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr052  ; CHECK-NEXT:   [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr153  ; CHECK-NEXT:   [[STRICT_FADD:%[0-9]+]]:_(s32) = nsz nofpexcept G_STRICT_FADD [[COPY]], [[COPY1]]54  ; CHECK-NEXT:   $vgpr0 = COPY [[STRICT_FADD]](s32)55  ; CHECK-NEXT:   SI_RETURN implicit $vgpr056  %val = call nsz float @llvm.experimental.constrained.fadd.f32(float %x, float %y, metadata !"round.tonearest", metadata !"fpexcept.ignore")57  ret float %val58}59 60define float @v_constained_fadd_f32_fpexcept_maytrap(float %x, float %y) #0 {61  ; CHECK-LABEL: name: v_constained_fadd_f32_fpexcept_maytrap62  ; CHECK: bb.1 (%ir-block.0):63  ; CHECK-NEXT:   liveins: $vgpr0, $vgpr164  ; CHECK-NEXT: {{  $}}65  ; CHECK-NEXT:   [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr066  ; CHECK-NEXT:   [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr167  ; CHECK-NEXT:   [[STRICT_FADD:%[0-9]+]]:_(s32) = G_STRICT_FADD [[COPY]], [[COPY1]]68  ; CHECK-NEXT:   $vgpr0 = COPY [[STRICT_FADD]](s32)69  ; CHECK-NEXT:   SI_RETURN implicit $vgpr070  %val = call float @llvm.experimental.constrained.fadd.f32(float %x, float %y, metadata !"round.tonearest", metadata !"fpexcept.maytrap")71  ret float %val72}73 74define <2 x float> @v_constained_fadd_v2f32_fpexcept_strict(<2 x float> %x, <2 x float> %y) #0 {75  ; CHECK-LABEL: name: v_constained_fadd_v2f32_fpexcept_strict76  ; CHECK: bb.1 (%ir-block.0):77  ; CHECK-NEXT:   liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr378  ; CHECK-NEXT: {{  $}}79  ; CHECK-NEXT:   [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr080  ; CHECK-NEXT:   [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr181  ; CHECK-NEXT:   [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32)82  ; CHECK-NEXT:   [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr283  ; CHECK-NEXT:   [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr384  ; CHECK-NEXT:   [[BUILD_VECTOR1:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[COPY2]](s32), [[COPY3]](s32)85  ; CHECK-NEXT:   [[STRICT_FADD:%[0-9]+]]:_(<2 x s32>) = G_STRICT_FADD [[BUILD_VECTOR]], [[BUILD_VECTOR1]]86  ; CHECK-NEXT:   [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[STRICT_FADD]](<2 x s32>)87  ; CHECK-NEXT:   $vgpr0 = COPY [[UV]](s32)88  ; CHECK-NEXT:   $vgpr1 = COPY [[UV1]](s32)89  ; CHECK-NEXT:   SI_RETURN implicit $vgpr0, implicit $vgpr190  %val = call <2 x float> @llvm.experimental.constrained.fadd.v2f32(<2 x float> %x, <2 x float> %y, metadata !"round.tonearest", metadata !"fpexcept.strict")91  ret <2 x float> %val92}93 94define <2 x float> @v_constained_fadd_v2f32_fpexcept_ignore(<2 x float> %x, <2 x float> %y) #0 {95  ; CHECK-LABEL: name: v_constained_fadd_v2f32_fpexcept_ignore96  ; CHECK: bb.1 (%ir-block.0):97  ; CHECK-NEXT:   liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr398  ; CHECK-NEXT: {{  $}}99  ; CHECK-NEXT:   [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0100  ; CHECK-NEXT:   [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1101  ; CHECK-NEXT:   [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32)102  ; CHECK-NEXT:   [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2103  ; CHECK-NEXT:   [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3104  ; CHECK-NEXT:   [[BUILD_VECTOR1:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[COPY2]](s32), [[COPY3]](s32)105  ; CHECK-NEXT:   [[STRICT_FADD:%[0-9]+]]:_(<2 x s32>) = nofpexcept G_STRICT_FADD [[BUILD_VECTOR]], [[BUILD_VECTOR1]]106  ; CHECK-NEXT:   [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[STRICT_FADD]](<2 x s32>)107  ; CHECK-NEXT:   $vgpr0 = COPY [[UV]](s32)108  ; CHECK-NEXT:   $vgpr1 = COPY [[UV1]](s32)109  ; CHECK-NEXT:   SI_RETURN implicit $vgpr0, implicit $vgpr1110  %val = call <2 x float> @llvm.experimental.constrained.fadd.v2f32(<2 x float> %x, <2 x float> %y, metadata !"round.tonearest", metadata !"fpexcept.ignore")111  ret <2 x float> %val112}113 114define <2 x float> @v_constained_fadd_v2f32_fpexcept_maytrap(<2 x float> %x, <2 x float> %y) #0 {115  ; CHECK-LABEL: name: v_constained_fadd_v2f32_fpexcept_maytrap116  ; CHECK: bb.1 (%ir-block.0):117  ; CHECK-NEXT:   liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3118  ; CHECK-NEXT: {{  $}}119  ; CHECK-NEXT:   [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0120  ; CHECK-NEXT:   [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1121  ; CHECK-NEXT:   [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32)122  ; CHECK-NEXT:   [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2123  ; CHECK-NEXT:   [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3124  ; CHECK-NEXT:   [[BUILD_VECTOR1:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[COPY2]](s32), [[COPY3]](s32)125  ; CHECK-NEXT:   [[STRICT_FADD:%[0-9]+]]:_(<2 x s32>) = G_STRICT_FADD [[BUILD_VECTOR]], [[BUILD_VECTOR1]]126  ; CHECK-NEXT:   [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[STRICT_FADD]](<2 x s32>)127  ; CHECK-NEXT:   $vgpr0 = COPY [[UV]](s32)128  ; CHECK-NEXT:   $vgpr1 = COPY [[UV1]](s32)129  ; CHECK-NEXT:   SI_RETURN implicit $vgpr0, implicit $vgpr1130  %val = call <2 x float> @llvm.experimental.constrained.fadd.v2f32(<2 x float> %x, <2 x float> %y, metadata !"round.tonearest", metadata !"fpexcept.maytrap")131  ret <2 x float> %val132}133 134define float @v_constained_fsub_f32_fpexcept_ignore_flags(float %x, float %y) #0 {135  ; CHECK-LABEL: name: v_constained_fsub_f32_fpexcept_ignore_flags136  ; CHECK: bb.1 (%ir-block.0):137  ; CHECK-NEXT:   liveins: $vgpr0, $vgpr1138  ; CHECK-NEXT: {{  $}}139  ; CHECK-NEXT:   [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0140  ; CHECK-NEXT:   [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1141  ; CHECK-NEXT:   [[STRICT_FSUB:%[0-9]+]]:_(s32) = nsz nofpexcept G_STRICT_FSUB [[COPY]], [[COPY1]]142  ; CHECK-NEXT:   $vgpr0 = COPY [[STRICT_FSUB]](s32)143  ; CHECK-NEXT:   SI_RETURN implicit $vgpr0144  %val = call nsz float @llvm.experimental.constrained.fsub.f32(float %x, float %y, metadata !"round.tonearest", metadata !"fpexcept.ignore")145  ret float %val146}147 148define float @v_constained_fmul_f32_fpexcept_ignore_flags(float %x, float %y) #0 {149  ; CHECK-LABEL: name: v_constained_fmul_f32_fpexcept_ignore_flags150  ; CHECK: bb.1 (%ir-block.0):151  ; CHECK-NEXT:   liveins: $vgpr0, $vgpr1152  ; CHECK-NEXT: {{  $}}153  ; CHECK-NEXT:   [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0154  ; CHECK-NEXT:   [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1155  ; CHECK-NEXT:   [[STRICT_FMUL:%[0-9]+]]:_(s32) = nsz nofpexcept G_STRICT_FMUL [[COPY]], [[COPY1]]156  ; CHECK-NEXT:   $vgpr0 = COPY [[STRICT_FMUL]](s32)157  ; CHECK-NEXT:   SI_RETURN implicit $vgpr0158  %val = call nsz float @llvm.experimental.constrained.fmul.f32(float %x, float %y, metadata !"round.tonearest", metadata !"fpexcept.ignore")159  ret float %val160}161 162define float @v_constained_fdiv_f32_fpexcept_ignore_flags(float %x, float %y) #0 {163  ; CHECK-LABEL: name: v_constained_fdiv_f32_fpexcept_ignore_flags164  ; CHECK: bb.1 (%ir-block.0):165  ; CHECK-NEXT:   liveins: $vgpr0, $vgpr1166  ; CHECK-NEXT: {{  $}}167  ; CHECK-NEXT:   [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0168  ; CHECK-NEXT:   [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1169  ; CHECK-NEXT:   [[STRICT_FDIV:%[0-9]+]]:_(s32) = nsz nofpexcept G_STRICT_FDIV [[COPY]], [[COPY1]]170  ; CHECK-NEXT:   $vgpr0 = COPY [[STRICT_FDIV]](s32)171  ; CHECK-NEXT:   SI_RETURN implicit $vgpr0172  %val = call nsz float @llvm.experimental.constrained.fdiv.f32(float %x, float %y, metadata !"round.tonearest", metadata !"fpexcept.ignore")173  ret float %val174}175 176define float @v_constained_frem_f32_fpexcept_ignore_flags(float %x, float %y) #0 {177  ; CHECK-LABEL: name: v_constained_frem_f32_fpexcept_ignore_flags178  ; CHECK: bb.1 (%ir-block.0):179  ; CHECK-NEXT:   liveins: $vgpr0, $vgpr1180  ; CHECK-NEXT: {{  $}}181  ; CHECK-NEXT:   [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0182  ; CHECK-NEXT:   [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1183  ; CHECK-NEXT:   [[STRICT_FREM:%[0-9]+]]:_(s32) = nsz nofpexcept G_STRICT_FREM [[COPY]], [[COPY1]]184  ; CHECK-NEXT:   $vgpr0 = COPY [[STRICT_FREM]](s32)185  ; CHECK-NEXT:   SI_RETURN implicit $vgpr0186  %val = call nsz float @llvm.experimental.constrained.frem.f32(float %x, float %y, metadata !"round.tonearest", metadata !"fpexcept.ignore")187  ret float %val188}189 190define float @v_constained_fma_f32_fpexcept_ignore_flags(float %x, float %y, float %z) #0 {191  ; CHECK-LABEL: name: v_constained_fma_f32_fpexcept_ignore_flags192  ; CHECK: bb.1 (%ir-block.0):193  ; CHECK-NEXT:   liveins: $vgpr0, $vgpr1, $vgpr2194  ; CHECK-NEXT: {{  $}}195  ; CHECK-NEXT:   [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0196  ; CHECK-NEXT:   [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1197  ; CHECK-NEXT:   [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2198  ; CHECK-NEXT:   [[STRICT_FMA:%[0-9]+]]:_(s32) = nsz nofpexcept G_STRICT_FMA [[COPY]], [[COPY1]], [[COPY2]]199  ; CHECK-NEXT:   $vgpr0 = COPY [[STRICT_FMA]](s32)200  ; CHECK-NEXT:   SI_RETURN implicit $vgpr0201  %val = call nsz float @llvm.experimental.constrained.fma.f32(float %x, float %y, float %z, metadata !"round.tonearest", metadata !"fpexcept.ignore")202  ret float %val203}204 205define float @v_constained_sqrt_f32_fpexcept_strict(float %x) #0 {206  ; CHECK-LABEL: name: v_constained_sqrt_f32_fpexcept_strict207  ; CHECK: bb.1 (%ir-block.0):208  ; CHECK-NEXT:   liveins: $vgpr0209  ; CHECK-NEXT: {{  $}}210  ; CHECK-NEXT:   [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0211  ; CHECK-NEXT:   [[STRICT_FSQRT:%[0-9]+]]:_(s32) = G_STRICT_FSQRT [[COPY]]212  ; CHECK-NEXT:   $vgpr0 = COPY [[STRICT_FSQRT]](s32)213  ; CHECK-NEXT:   SI_RETURN implicit $vgpr0214  %val = call float @llvm.experimental.constrained.sqrt.f32(float %x, metadata !"round.tonearest", metadata !"fpexcept.strict")215  ret float %val216}217 218declare float @llvm.experimental.constrained.fadd.f32(float, float, metadata, metadata) #1219declare <2 x float> @llvm.experimental.constrained.fadd.v2f32(<2 x float>, <2 x float>, metadata, metadata) #1220declare <3 x float> @llvm.experimental.constrained.fadd.v3f32(<3 x float>, <3 x float>, metadata, metadata) #1221declare float @llvm.experimental.constrained.fsub.f32(float, float, metadata, metadata) #1222declare float @llvm.experimental.constrained.fmul.f32(float, float, metadata, metadata) #1223declare float @llvm.experimental.constrained.fdiv.f32(float, float, metadata, metadata) #1224declare float @llvm.experimental.constrained.frem.f32(float, float, metadata, metadata) #1225declare float @llvm.experimental.constrained.fma.f32(float, float, float, metadata, metadata) #1226declare float @llvm.experimental.constrained.sqrt.f32(float, metadata, metadata) #1227 228attributes #0 = { strictfp }229attributes #1 = { inaccessiblememonly nounwind willreturn }230